Metadata-Version: 1.1
Name: biconfigs
Version: 0.1.0
Summary: Two way configurations mapping helper for Python.
Home-page: https://github.com/antfu/biconfigs
Author: Anthony Fu
Author-email: anthonyfu117@hotmail.com
License: MIT
Description: Biconfigs

        =========

        

        |Build Status| |Coverage| |Codacy grade| |Python Version| |PyPI| |PyPI|

        |License|

        

        📄⇄🛠 Two way configurations mapping helper for Python.

        

        Get Started

        -----------

        

        .. code:: python

        

            from biconfigs import Biconfigs

            configs = Biconfigs('configs.json')

        

            # Simply change the dict, and it will automatically save the changes to file.

            configs['options'] = {'debug': True,

                                  'username': 'Anthony',

                                  'list': [] }

        

            # Access with simple 'x.y.z' style

            configs.options.list.append('example')

        

        Content of file ``configs.json`` after execution:

        

        .. code:: json

        

            {

              "options": {

                "debug": true,

                "list": [

                  "example"

                ],

                "username": "Anthony"

              }

            }

        

        Install

        -------

        

        .. code:: sh

        

            pip install biconfigs

        

        Dependencies

        ------------

        

        **No dependencies** required 🎉

        

        Tested on Python ``2.6``, ``2.7``, ``3.3``, ``3.4``, ``3.5``, ``pypy``,

        ``pypy3``

        

        Documentation

        -------------

        

        When to save

        ~~~~~~~~~~~~

        

        -  Saving when: *Item create, item delete, list reorder, value change,

           ``get_set``, etc.*

        

           .. code:: python

        

               # All the following single statement will cause saving

               configs['item'] = 'value'

               configs['options'] = {}

               configs.options['list'] = []

               configs.options.list.append('example')

               configs.options['list'] = []

               configs.options.clear()

               value2 = configs.get_set('item2', 45)

        

        -  Not saving when: *Item access, assignment but not changed, etc.*

        

           .. code:: python

        

               # All the following single statement will NOT cause saving

               value = configs.item

               configs['item'] = 'value' # The value of 'item' is not changed

               value3 = configs.get('item_not_exists', 'default_value')

        

        Non-blocking saving

        ~~~~~~~~~~~~~~~~~~~

        

        By default, Biconfigs use asynchronous saving. You can disable the

        feature by setting ``async_write`` to ``False``

        

        .. code:: python

        

            # set "async_write=False" if your want to use synchronous saving

            # to ensure your data saved to file in time,

            # WARNING: In sync mode, your changes will block the incoming statement

            # until the file correctly saved.

            configs = Biconfigs('configs.json', async_write=False)

        

            configs['item'] = 'value' # Blocking

            # Configure file saved already

        

            # Your code...

        

        High frequency update

        ~~~~~~~~~~~~~~~~~~~~~

        

        Normally, Biconfigs will write the changes to file immediately. But

        sometime you may want to update values frequently, which will result in

        a IO bottleneck. So you can use **``with``** statement to prevent auto

        saving for a while.

        

        .. code:: python

        

            with configs:

              for i in range(1000):

                configs['some_key'] = i

            # This statement will execute saving process only one time when exiting "with" scope

        

        Reload from file

        ~~~~~~~~~~~~~~~~

        

        Simply use ``reload`` function to reload from file. *Note*: ``reload``

        will discard all present data in Biconfigs-object and loads new ones

        from file)

        

        .. code:: python

        

            configs.reload()

        

        Parsers

        ~~~~~~~

        

        Biconfigs use ``Prettified Json`` as default parser. You may want to set

        ``parser='json'`` to save as compacted json file.

        

        .. code:: python

        

            configs = Biconfigs('configs.json', parser='json')

            configs['item'] = 'value'

            configs['debug'] = False

        

        configs.json:

        

        .. code:: json

        

            {"debug": false, "item": "value"}

        

        **Available Parsers**

        

        -  ``json``: Compact JSON format

        -  ``pretty-json``: Prettified JSON

        -  *To be developed...*

        

        License

        -------

        

        MIT

        

        .. |Build Status| image:: https://img.shields.io/travis/antfu/biconfigs.svg?style=flat-square

           :target: https://travis-ci.org/antfu/biconfigs

        .. |Coverage| image:: https://img.shields.io/codecov/c/github/antfu/biconfigs.svg?style=flat-square

           :target: https://codecov.io/gh/antfu/biconfigs

        .. |Codacy grade| image:: https://img.shields.io/codacy/grade/4bf188eecc374c76b5c6ddbe93315078.svg?style=flat-square

           :target: https://www.codacy.com/app/anthonyfu117/biconfigs/dashboard

        .. |Python Version| image:: https://img.shields.io/pypi/pyversions/biconfigs.svg?style=flat-square

           :target: https://pypi.python.org/pypi/biconfigs

        .. |PyPI| image:: https://img.shields.io/pypi/v/biconfigs.svg?style=flat-square

           :target: https://pypi.python.org/pypi/biconfigs

        .. |PyPI| image:: https://img.shields.io/pypi/status/biconfigs.svg?style=flat-square

           :target: https://pypi.python.org/pypi/biconfigs

        .. |License| image:: https://img.shields.io/pypi/l/biconfigs.svg?style=flat-square

           :target: https://github.com/antfu/biconfigs/blob/master/LICENSE

        
Keywords: config,configuration,json
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
