Skip to main content
|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:

Release files for lazyconf 0.5.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lazyconf 0.5.5
File Size Uploaded
lazyconf-0.5.5.tar.gz 14.3 kB Details

Release files / lazyconf-0.5.5.tar.gz

Download URL lazyconf-0.5.5.tar.gz
Size 14.3 kB
Tags Source
SHA-256 checksum
How to use checksums
89e9f9d350c644f6944d9bd64a15aa14aad89c86ccac44c7345925e34b323fbc
BLAKE2b-256 checksum
How to use checksums
bf1784cff42ab8ca34824c5633d77757178f3107f58b2061fee4fdfbc7b286d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.5.5 This release

1 release file

0.5.4

1 release file

0.5.3

1 release file

0.5.2

1 release file

0.5.1

1 release file

0.5.0

1 release file

0.4.6

1 release file

0.4.5

1 release file

0.4.4

1 release file

0.4.3

1 release file

0.4.2

1 release file

0.4.0

1 release file

0.3.9

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page