Metadata-Version: 2.1
Name: Cyra
Version: 0.2.1
Summary: Cyra is a simple config framework for Python.
Home-page: https://github.com/Theta-Dev/Cyra
Author: ThetaDev
License: MIT License
Platform: UNKNOWN
Classifier: License :: OSI Approved :: MIT License
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Description-Content-Type: text/x-rst
Requires-Dist: tomlkit (<1.0.0,>=0.7.0)

####
Cyra
####

Cyra is a simple config framework for Python.

Cyra's ConfigBuilder makes it easy to specify your configuration.
The config can be read from and written to a toml file.

If the config file does not exist, Cyra will generate a new one populated with initial
values and annotated with helpful comments.

Checklist (development)
#######################
- [X] Config builder
- [X] Value fields (string, int, bool, list, dict)
- [ ] Value verification
- [X] Infinite nesting
- [X] Comments
- [X] Load/generate config from file
- [X] Write config back to file
- [ ] Sphinx Autodoc

How to use
##########

.. code-block:: python

    import cyra

    class MyConfig(cyra.Config):
        builder = cyra.ConfigBuilder()

        builder.comment('Cyra says hello')
        msg = builder.define('msg', 'Hello World')

        builder.comment('SQL Database settings')
        builder.push('DATABASE')
        builder.comment('DB server address')
        server = builder.define('server', '192.168.1.1')
        builder.comment('SQL port (default: 1443)')
        port = builder.define('port', 1443)
        builder.comment('Credentials')
        user = builder.define('username', 'admin')
        pwd = builder.define('password', 'my_secret_password')
        builder.comment('DB connection enabled')
        dben = builder.define('enabled', True)
        builder.pop()

        def __init__(self, cfg_file):
            super().__init__(self.builder, cfg_file)

How to access your config values:

.. code-block:: python

    >>> cfg = MyConfig('config.toml')
    >>> cfg.load_file()

    >>> cfg.msg
    'Hello World'

    >>> cfg.msg = 'Bye bye World'
    >>> cfg.save_file()
    True

Here is the resulting config file:

.. code-block:: toml

    msg = "Hello World" # Cyra says hello

    [DATABASE] # SQL Database settings
    server = "192.168.1.1" # DB server address
    port = 1443 # SQL port (default: 1443)
    username = "admin" # Credentials
    password = "my_secret_password"
    enabled = true # DB connection enabled


