Metadata-Version: 2.1
Name: py-params
Version: 0.1.5
Summary: A type safe dictionary in python
Home-page: https://github.com/kpe/params/
Author: kpe
Author-email: kpe.git@gmailbox.org
License: MIT
Keywords: dictionary utility parameters flags
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*


Params
======

|Build Status| |Coverage Status| |Version Status|

A type safe dictionary class in python.


LICENSE
-------

MIT. See `License File <https://github.com/kpe/params/blob/master/LICENSE.txt>`__.

Install
-------

``params`` is on the Python Package Index (PyPI):

::

    pip install py-params


Usage
-----

``Param`` instances are ``dict``s for which default values could be
provided as class level fields when subclassing `Params`.
Those default values could than be overridden in instances of the class,
by specifying the values in the constructor.

Accessing parameters not defined as class level variable
would raise an ``AttributeError``.

.. code:: python

    >>> from params import Params

    >>> class TestParams(Params):
    ...     param_a = 'a'
    ...     param_b = True

    >>> params=TestParams()                      # using defaults
    >>> params
    {'param_a': 1, 'param_b': True}

    >>> TestParams(param_a='c')                  # override param_a
    {'param_a': 'c', 'param_b': True}

    >>> params.param_c
    AttributeError: 'TestParams' object has no attribute 'test_b'

    >>> params.param_c = 3
    AttributeError: Setting unexpected parameter 'param_c' in Params instance 'TestParams'

    >>> assert
    {'param_a': 3, 'param_b': True}


.. |Build Status| image:: https://travis-ci.org/kpe/params.svg?branch=master
   :target: https://travis-ci.org/kpe/params
.. |Coverage Status| image:: https://coveralls.io/repos/kpe/params/badge.svg?branch=master
   :target: https://coveralls.io/r/kpe/params
.. |Version Status| image:: https://badge.fury.io/py/params.svg
   :target: https://badge.fury.io/py/params


