Metadata-Version: 1.0
Name: lazyconf
Version: 0.4.0
Summary: Insultingly simple configuration for Python 2.7 applications.
Home-page: https://www.github.com/fmd/lazyconf
Author: Fareed Dudhia
Author-email: fareeddudhia@gmail.com
License: LICENSE.rst
Description: |Build Status| |Coverage Status|
        
        lazyconf
        ========
        
        lazyconf is an insultingly simple tool for configuring python
        applications.
        
        Dependencies
        ------------
        
        -  Python 2.7
        
        Usage
        -----
        
        The basic idea is that you run ``lazyconf configure`` in your
        **project** directory:
        
        ::
        
            lazyconf configure
        
        Follow the onscreen instructions to do the initial configuration. This
        does the following:
        
        -  Creates a ``.lazy/`` directory inside the current directory.
        -  Generates a schema file (``.lazy/lazy.schema.json``), and a data file
           (``.lazy/lazy.json``).
        -  Creates a ``.gitignore`` file inside ``.lazy/`` so that your
           configured settings (which may contain sensitive information) are
           never committed to git.
        
        You are then safe to commit the .lazy folder to git, which will not
        contain any sensitive information. The next thing to do is update your
        schema file with all of the settings that you want to include in your
        configuration.
        
        Schema Files
        ------------
        
        The schema file located in ``.lazy/lazy.schema.json`` is the way
        lazyconf knows which questions to ask you, and what kind of answers to
        expect. The schema file follows the following format:
        
        ::
        
            ```
            {
                "example_section" : {
                    "example_option" : "",
                    "string_with_default" : "default",
                    "example_int" : 5,
                    "example_bool" : false,
                    "example_select" : ""
                },
                
                "example_optional_section" : {
                    "_enabled":false,
                    "optional_option" : "foobar"
                },
        
                "_internal": {
                    "labels": {
                        "example_section" : "Example Section Label",
                        "example_section.example_int" : "Example suboption label"
                    }
                    
                    "selects": {
                        "example_section.exmple_select" : {
                            "option1" : "value1",
                            "option2" : "value2",
                            "option3" : "value3"
                        }
                    }   
                }   
            }
            ```
        
        Sections
        ~~~~~~~~
        
        All options to configure are held within sections. A section is a JSON
        object where the key is the name of the section. In the above example,
        there are two sections: ``example_section`` and
        ``example_optional_section``.
        
        Optional Sections
        ^^^^^^^^^^^^^^^^^
        
        To make a section optional, include a key/value pair inside the section
        with the key ``"_enabled"``, and a default boolean value. This will let
        the user skip over that section if it is not necessary to be configured.
        
        ``"_internal"``
        ~~~~~~~~~~~~~~~
        
        ``"_internal"`` is a JSON object that contains the following two JSON
        objects:
        
        -  ``"labels"``: This object consists of key/value pairs which define
           labels to show the user running the configuration. For example, if
           you had a section called ``db``, and a string in that section called
           ``user``, you would use ``"db.user" : "Database User"`` to assign the
           label 'Database User' to that string.
        
        -  ``"selects"``: This object consists of several objects which define
           'selects', i.e. a way for the user to only be able to choose from a
           list of predetermined values. For example, if you had a section
           called ``db``, and a string in that section called ``engine``, you
           could use the following object to allow the user to select from a
           list of values relating to the database engine you might happen to be
           using:
        
           ::
        
               "db.engine": {
                   "postgres": "django.db.backends.postgresql_psycopg2", 
                   "mysql": "django.db.backends.mysql"
               }
        
        Keywords
        ~~~~~~~~
        
        ``"_internal"`` and ``"_enabled"`` are keywords and should not be used
        as option names.
        
        Using the data
        --------------
        
        To use the configuration generated by lazyconf, you can either use the
        command line tool ``lazyconf``, i.e.
        
        ::
        
            lazyconf get -k db.user
            >fareed
        
        Or, you can include it in a Python file, and use the 'load' function to
        load any existing configuration:
        
        ::
        
            >>> import lazyconf
            >>> l = lazyconf.Lazyconf().load()
            >>> l.get('db.engine')
            'django.db.backends.postgresql_psycopg2'
        
        If the python file loading lazyconf is not in the same folder as
        ``.lazy/``, you can point it at ``.lazy/`` manually:
        
        ::
        
            >>> import lazyconf
            >>> l = lazyconf.Lazyconf().load('home/fareed/.lazy/')
            >>> l.get('db.engine')
            'django.db.backends.postgresql_psycopg2'
        
        |Bitdeli badge|
        
        .. |Build Status| image:: https://travis-ci.org/fmd/lazyconf.png?branch=master
           :target: https://travis-ci.org/fmd/lazyconf
        .. |Coverage Status| image:: https://coveralls.io/repos/fmd/lazyconf/badge.png?branch=master
           :target: https://coveralls.io/r/fmd/lazyconf?branch=master
        .. |Bitdeli badge| image:: https://d2weczhvl823v0.cloudfront.net/fmd/lazyconf/trend.png
           :target: 
        
Platform: UNKNOWN
