simpleparam

SimpleParam: simplified parameters with optional type and range checking


License
Apache-2.0
Install
pip install simpleparam==0.0.4

Documentation

SimpleParam

Build Status CircleCI Build status codecov Codacy Badge CodeFactor

About

SimpleParam was inspired by the param library which offers lots of neat features in a small package, however param has a tricky codebase. In SimpleParam you can either create Parameter or ParameterStore using simple synthax.

SimpleParam is certainly not complete and is missing a lot of awesome features of param and of course, has not been battle-tested yet. Missing features (such as Array, List, etc) will be added as my other projects that use SimpleParam will require them.

Usage

You can intilize Parameter like this:

import simpleparam as param

number = param.Number(42)
number

>>> Parameter(name=param, value=42, doc=')

However, it is probably better to use parameters inside of a ParameterStore, where you can store multiple parameters together and take advantage of additional functionality (e.g. locking of parameters with constant or exporting parameters as JSON object using export_as_dict):

import simpleparam as param

class Config(param.ParameterStore):
    def __init__(self):
        param.ParameterStore.__init__(self)

        # # you can add parameter docstrings by setting `doc`
        self.integer = param.Integer(42,
                                     doc="A not very important value")
        # `auto_bound` forces hard bounds on values that are outside the specification
        self.number = param.Number(42.,
                                   softbounds=[0, 100],
                                   hardbounds=[1, 100],
                                   auto_bound=True)
        # setting `allow_any` to False, will force values to be of `str` instance
        self.string = param.String("string",
                                   allow_any=False)
        # you can set internal parameter name by setting the value of `name`
        self.choice = param.Choice("foo",
                                   name="foo_bar_choice",
                                   choices=["foo", "bar"],
                                   )
        # parameters can be prevented from being changed by setting value of `constant
        self.color = param.Color("#FFFFFF",
                                 constant=True)
        self.bool = param.Boolean(True)
        self.range = param.Range(value=[0, 100], hardbounds=[0, 100])

config = Config()
config

>>> ParameterStore(count=7)

For complete documentation, please visit the docs website.

Instalation

Install from PyPI

pip install simpleparam

or directly from GitHub

pip install git+https://github.com/lukasz-migas/SimpleParam.git

or in development mode

git clone git+https://github.com/lukasz-migas/SimpleParam.git

cd SimpleParam

python setup.py develop

Requirements

SimpleParam has no external requirements and works in py2 and py3.

Planned features

  • add 'List', 'Dict' classes
  • rename 'Color' to 'ColorHEX' or add 'modes': RGB or HEX
  • add Array class