Skip to main content

ORM-like *.ini config parser.

Project description

ConfigORM

Build Status PyPI - Status PyPI - Python Version PyPI PyPI - License

Heavily inspired by Charles Leifer peewee ORM. This package provides ORM-like interface to interact with *.ini configs. And map their data onto object models.

Examples

Lets say we have config like this:

#config.ini

[Database]
server = 10.10.10.10
password = my_password
user = admin
base = test_base

[General]
debug = True
connection port = 5000

Defining models is similar to ORM's:

#Config.py

import os
from configorm import *

current_dir = os.path.abspath(os.path.dirname(__file__))
connection_string = os.path.join(current_dir, 'config.ini')

connector = IniConnector(connection_string=connection_string)

class BaseSection(Section):
    class Meta:
        connector = connector

class Database(BaseSection):
    server = StringField()
    password = StringField()
    user = StringField()
    base = StringField()

class General(BaseSection):
    debug = BooleanField()
    connection_port = IntegerField()
>>> from Config import Database
>>> Database.server
'10.10.10.10'

Section names must match their counterparts in ini file, but case does not matter at all. All spaces in section or key names of config file will be treated as underlines.

Field Types

Depending on field data will be casted to exact type.

>>> from Config import General
>>> General.debug
True
>>> type(General.debug)
<class 'bool'>

Available Field Types:

  • StringField
  • IntegerField
  • BooleanField
  • FloatField
  • ListField

Most of field types are self-explanatory, ListField is a bit tricky. It allows to store and extract data as list of homogeneous objects, such as strings, integers, floats and booleans. You must provide exec type of stored objects.

from configorm import *

class TestSection(Section):
    list_of_int = ListField(var_type=int)
    list_of_str = ListField(var_type=str)
    list_of_float = ListField(var_type=float)
    list_of_bool = ListField(var_type=bool)

Fallback Values

You may provide default fallback values for your fields. If field may return None Type values, null parameter must be set as True

from configorm import *

class Database(Section):
    server = StringField(default='10.10.10.10')
    password = StringField(default='secret')
    user = StringField(default='admin')
    base = StringField(default='development')

    possible_none_value = StringField(null=True)

Model First Approach

Base Section aside from connection to config file also provides tool to create configuration from models, allowing model-first approach. It crates config file, sections from your models names and option based on provided fields. In case if fields have default values, they will be written in config as well. Otherwise options will be filled with empty values.

>>> from Config import *
>>> BaseSection.check_config_integrity()

Project details


Download files

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

Files for ConfigORM, version 0.1.0
Filename, size File type Python version Upload date Hashes
Filename, size ConfigORM-0.1.0-py3-none-any.whl (6.2 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size ConfigORM-0.1.0.tar.gz (4.8 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page