Skip to main content

A flask extension to load ini files via config

Project description

Overview

Flask-INIConfig is a Flask extension that adds two additional methods from_inifile and from_inifile_sections to the Flask.config configuration instance for an application. This allows you to load ini files or sections from an ini file directly into the config object.

Installation

Install the extension using pip:

$ pip install flask-iniconfig

or easy_install:

$ easy_install flask-iniconfig

Usage

Basic Usage

You can initialize the extension by calling it’s constructor:

from flask import Flask
from flask.ext.iniconfig import INIConfig

app = Flask(__name__)
INIConfig(app)
# or use the init_app form
# INIConfig().init_app(app)

app.config.from_inifile('/path/to/file.ini')

property = (app.config.get('section') or {}).get('property')

from_inifile

When you use from_inifile sections in an ini file are individual properties in the config object. For example if you have the following:

[section]
a_property = 1

and you load it using:

app.config.from_inifile('/path/to/file.ini')

you can access it as:

section = current_app.config.get('section')
property = section['a_property']

As of v0.0.8 if you provide a flag called objectify to from_inifile, it will add the section as an instance variable to the config object. You can then load it using:

app.config.from_inifile('/path/to/file.ini', objectify=True)

which will allow you to access it as:

section = current_app.config.section
property = section['a_property']

There is a special section for Flask apps called flask which can be used to specify the application properties. So if you have the following:

[flask]
DEBUG = 1

you can use current_app.config['DEBUG'] instead of having to specify the section. All property names in the flask section are converted to upper case just like in from_inifile_sections but only for the flask section.

from_inifile_sections

When you use from_inifile_sections only the relevant sections and the flask section, if present, are loaded from the ini file. The other major difference is that instead of app.config having a property with the name of the section, all properties are tacked on to the app.config object.

Moreover all property names are converted to upper-case as most extensions and Flask’s internal configuration properties are all in upper case.

The only exception is when you provide the preserve_case flag to this method. When given this will preserve the case for all non-flask options. Flask options will still be converted to upper case. This allows you to use things like sqlalchemy’s engine_from_config directly with the config object.

This is quite useful if you have one ini file with settings for development, staging, production and test settings you can load only the ones you want which can then be used by flask directly.

For e.g. if you have the following:

[flask]
DEBUG = 1

[common]
a = 1
b = 0

[dev]
b = 2

[prod]
b = 3

and you load it using:

app.config.from_inifile_sections('/path/to/file.ini', ['common', 'dev'])

which would add the properties A and B to app.config.

Customizing SafeConfigParser

If you want to customize the way the internal SafeConfigParser works you can use the arguments as specified in the RawConfigParser constructor documentation.

For example:

INIConfig(app, defaults={...}, dict_type=OrderedDict, allow_no_value=True)

Implementation Details

The base class that implements the extension is derived from SafeConfigParser and uses that to load the ini file. Consequently you get the built-in parsing and interpolation capabilities of the parser.

Because SafeConfigParser does not automatically coerce the values to an appropriate type, Flask-INIConfig will try to do it’s best to do some for you. The following cast attempts are made in order of precedence:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Flask-INIConfig-0.1.0.tar.gz (11.6 kB view details)

Uploaded Source

Built Distribution

Flask_INIConfig-0.1.0-py2.py3-none-any.whl (8.4 kB view details)

Uploaded Python 2Python 3

File details

Details for the file Flask-INIConfig-0.1.0.tar.gz.

File metadata

File hashes

Hashes for Flask-INIConfig-0.1.0.tar.gz
Algorithm Hash digest
SHA256 652d76adf6cb1908e6da2091d2e12b54a8c0fdfd71ff20a3a13a919beeb3d909
MD5 d7fe5e792aee2fcf9d80ef84b2339c73
BLAKE2b-256 db4a998f0ad11b6311d375d7f1c7d2a9dfe394ed8cf10b92ca4816bf10838dc9

See more details on using hashes here.

File details

Details for the file Flask_INIConfig-0.1.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for Flask_INIConfig-0.1.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 1fa270b7db8eb8a84449a8556269e78aba35a4b50f96d6ce4ff1a8761c7d944d
MD5 d2ab4b94ed4a9b475ad10dced9427c97
BLAKE2b-256 15a91ce9a49c4befbcfee2748cfac9773fea381bf081d68902c3232574f35e68

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page