lazycon


Namelazycon JSON
Version 0.6.3 PyPI version JSON
download
home_pagehttps://github.com/maxme1/lazycon
SummaryEasy config files in pure Python
upload_time2023-06-15 17:44:45
maintainer
docs_urlNone
authorMax
requires_python>=3.6
licenseMIT
keywords config lazy interpreter
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![codecov](https://codecov.io/gh/maxme1/lazycon/branch/master/graph/badge.svg)](https://codecov.io/gh/maxme1/lazycon)
[![pypi](https://img.shields.io/pypi/v/lazycon?logo=pypi&label=PyPi)](https://pypi.org/project/lazycon/)
![License](https://img.shields.io/github/license/maxme1/lazycon)
[![PyPI - Downloads](https://img.shields.io/pypi/dm/lazycon)](https://pypi.org/project/lazycon/)
![GitHub branch checks state](https://img.shields.io/github/checks-status/maxme1/lazycon/master)

Easy config files in pure Python!

What you can do directly in your configs:

- define constants
- define functions
- use import statements
- call functions and apply arithmetic operations
- a static read-only scope
- static checking: cycles detection, undefined variables detection

# Install

```shell
pip install lazycon
```

# Features

## Basic

Let's define a config file `example.config` and see what it can do

```python
# define constants
num_steps = 100
database_table = 'user_data'

# or more complex structures
parameters = {
    'C': 10,
    'metric': 'roc_auc',
}
values_to_try = [0, 1, 2, 3, 4]

# you can use and call builtins
some_range = list(range(100))
# or even comprehensions!
squares = [i ** 2 for i in range(20)]
```

Now let's load our config from python

```python
from lazycon import load

config = load('example.config')
print(config.database_table)
# 'user_data'
```

Need to change an existing config? No problem!

```python
from lazycon import load

config = load('example.config')
config.update(
    database_table='customer_data',
    some_range=[1, 3, 5],
)
config.dump('updated.config')
```

## Advanced

Python-based configs can do so much more! Let's create another `advanced.config`:

```python
# combine config entries
x = 1
y = 2
z = x + y

# define lambdas
callback = lambda value: 1 if value == 0 else (1 / value)


# or more complex functions
def strange_normalize(a, b):
    temp = a ** 2 + b ** 2
    return a / temp, b / temp
```

You can import from other python libraries:

```python
import numpy as np
from math import sqrt

const = np.pi / np.e
proportions = sqrt(2)
```

Or even other configs!

```python
# import from `example.config` defined above
from .example import *

extended_values_to_try = values_to_try + [101, 102]
```

# Contribute

Just get the project from GitHub and modify it how you please!

```shell
git clone https://github.com/maxme1/lazycon.git
cd lazycon
pip install -e .
```



            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/maxme1/lazycon",
    "name": "lazycon",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": "",
    "keywords": "config,lazy,interpreter",
    "author": "Max",
    "author_email": "max@ira-labs.com",
    "download_url": "https://files.pythonhosted.org/packages/7d/da/b88ddfaa356cfec61f88496d1451d4740fc5e50911d24950af9fc3ad16c5/lazycon-0.6.3.tar.gz",
    "platform": null,
    "description": "[![codecov](https://codecov.io/gh/maxme1/lazycon/branch/master/graph/badge.svg)](https://codecov.io/gh/maxme1/lazycon)\n[![pypi](https://img.shields.io/pypi/v/lazycon?logo=pypi&label=PyPi)](https://pypi.org/project/lazycon/)\n![License](https://img.shields.io/github/license/maxme1/lazycon)\n[![PyPI - Downloads](https://img.shields.io/pypi/dm/lazycon)](https://pypi.org/project/lazycon/)\n![GitHub branch checks state](https://img.shields.io/github/checks-status/maxme1/lazycon/master)\n\nEasy config files in pure Python!\n\nWhat you can do directly in your configs:\n\n- define constants\n- define functions\n- use import statements\n- call functions and apply arithmetic operations\n- a static read-only scope\n- static checking: cycles detection, undefined variables detection\n\n# Install\n\n```shell\npip install lazycon\n```\n\n# Features\n\n## Basic\n\nLet's define a config file `example.config` and see what it can do\n\n```python\n# define constants\nnum_steps = 100\ndatabase_table = 'user_data'\n\n# or more complex structures\nparameters = {\n    'C': 10,\n    'metric': 'roc_auc',\n}\nvalues_to_try = [0, 1, 2, 3, 4]\n\n# you can use and call builtins\nsome_range = list(range(100))\n# or even comprehensions!\nsquares = [i ** 2 for i in range(20)]\n```\n\nNow let's load our config from python\n\n```python\nfrom lazycon import load\n\nconfig = load('example.config')\nprint(config.database_table)\n# 'user_data'\n```\n\nNeed to change an existing config? No problem!\n\n```python\nfrom lazycon import load\n\nconfig = load('example.config')\nconfig.update(\n    database_table='customer_data',\n    some_range=[1, 3, 5],\n)\nconfig.dump('updated.config')\n```\n\n## Advanced\n\nPython-based configs can do so much more! Let's create another `advanced.config`:\n\n```python\n# combine config entries\nx = 1\ny = 2\nz = x + y\n\n# define lambdas\ncallback = lambda value: 1 if value == 0 else (1 / value)\n\n\n# or more complex functions\ndef strange_normalize(a, b):\n    temp = a ** 2 + b ** 2\n    return a / temp, b / temp\n```\n\nYou can import from other python libraries:\n\n```python\nimport numpy as np\nfrom math import sqrt\n\nconst = np.pi / np.e\nproportions = sqrt(2)\n```\n\nOr even other configs!\n\n```python\n# import from `example.config` defined above\nfrom .example import *\n\nextended_values_to_try = values_to_try + [101, 102]\n```\n\n# Contribute\n\nJust get the project from GitHub and modify it how you please!\n\n```shell\ngit clone https://github.com/maxme1/lazycon.git\ncd lazycon\npip install -e .\n```\n\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Easy config files in pure Python",
    "version": "0.6.3",
    "project_urls": {
        "Download": "https://github.com/maxme1/lazycon/archive/v0.6.3.tar.gz",
        "Homepage": "https://github.com/maxme1/lazycon"
    },
    "split_keywords": [
        "config",
        "lazy",
        "interpreter"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7ddab88ddfaa356cfec61f88496d1451d4740fc5e50911d24950af9fc3ad16c5",
                "md5": "cd2041e69cdefea03df83caf005832c8",
                "sha256": "112eb2c323e46487c374fd8cc89ebc6cddf4d0172677919fc0eb0e6f928b27de"
            },
            "downloads": -1,
            "filename": "lazycon-0.6.3.tar.gz",
            "has_sig": false,
            "md5_digest": "cd2041e69cdefea03df83caf005832c8",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 17276,
            "upload_time": "2023-06-15T17:44:45",
            "upload_time_iso_8601": "2023-06-15T17:44:45.447737Z",
            "url": "https://files.pythonhosted.org/packages/7d/da/b88ddfaa356cfec61f88496d1451d4740fc5e50911d24950af9fc3ad16c5/lazycon-0.6.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-06-15 17:44:45",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "maxme1",
    "github_project": "lazycon",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "lazycon"
}
        
Max
Elapsed time: 0.07659s