Flask-Config

Flask configuration class


Keywords
flask, settings, configuration
License
MIT
Install
pip install Flask-Config==0.2.1

Documentation

Flask-Config

Flask configuration class.

[Version] (https://github.com/salsita/flask-config/tags) [PyPI package] (https://pypi.python.org/pypi/Flask-Config/) [Downloads] (https://pypi.python.org/pypi/Flask-Config/) [Supported Python versions] (https://pypi.python.org/pypi/Flask-Config/) [License] (https://pypi.python.org/pypi/Flask-Config/)

Supported Platforms

Get Started

Install using pip or easy_install:

pip install Flask-Config
easy_install Flask-Config

Example:

Flask application: app.py

#!/usr/bin/env python

"""Flask-based web application."""

__all__ = 'app'.split()

import flask
from config import Config

app = flask.Flask(__name__)
app.config.from_object(Config)

if __name__ == '__main__':
    app.run()

Flask configuration: config.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""Flask configuration for different environments."""

from __future__ import print_function

__all__ = '''
    Config
    ProductionConfig
    StagingConfig
    ExperimentalConfig
    TestingConfig
    DevelopmentConfig
    '''.split()

import flask.ext.config

Config = flask.ext.config.createConfig(__name__,
    updateEnvDefaults = dict(
        SQLALCHEMY_DATABASE_URI = 'mysql+mysqldb://dev:dev@localhost:3306/my_db'
    ))

# Configuration for different environments
class ProductionConfig(Config):
    """Configuration for production."""
    ENV_ID = 'prod'
    DEBUG = False

class StagingConfig(Config):
    """Configuration for staging
    """
    ENV_ID = 'stage'
    DEVELOPMENT = True
    DEBUG = True

class ExperimentalConfig(Config):
    """Configuration for experimental staging."""
    ENV_ID = 'try'
    DEVELOPMENT = True
    DEBUG = True

class TestingConfig(Config):
    """Configuration for testing."""
    ENV_ID = 'qa'
    TESTING = True

class DevelopmentConfig(Config):
    """Configuration for development."""
    ENV_ID = 'dev'
    DEVELOPMENT = True
    DEBUG = True

# Aliases for different environment configurations
ProdConfig = ProductionConfig
StageConfig = StagingConfig
TryConfig = ExperimentalConfig
QaConfig = TestingConfig
TestConfig = TestingConfig
DevConfig = DevelopmentConfig

# Initialize requested config
Config.select()


# Print current configuration when run from command line
if __name__ == '__main__':
    print(Config)

Changelog

0.2.1

Features

  • Allow updating config class properties.

0.2.0

Features

  • Remove all environment variable mappings except env selector.

Fixes

  • Fix package setup on Python 3.

0.1.1

Fixes

  • Fix package setup to not require dependencies preinstalled.

0.1.0

Features

  • Initial release.