Skip to main content

Easy config files in pure Python

Project description

codecov pypi License PyPI - Downloads GitHub branch checks state

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

pip install lazycon

Features

Basic

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

# 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

from lazycon import load

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

Need to change an existing config? No problem!

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:

# 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:

import numpy as np
from math import sqrt

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

Or even other configs!

# 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!

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lazycon-0.6.2.tar.gz (17.3 kB view details)

Uploaded Source

File details

Details for the file lazycon-0.6.2.tar.gz.

File metadata

  • Download URL: lazycon-0.6.2.tar.gz
  • Upload date:
  • Size: 17.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for lazycon-0.6.2.tar.gz
Algorithm Hash digest
SHA256 4f4995859929b0ffebbec207b3fd3bea018f4d310458309a1eea21bcde207dab
MD5 e1252bfc34058006200e29402a8baaa9
BLAKE2b-256 5c8ab69119db966845a955ce93474d72232221003a9b5ba6016fe0e54dc68ff7

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page