Metadata-Version: 2.1
Name: pydrobert-param
Version: 0.4.0
Summary: Utilities for the python package 'param'
Home-page: https://github.com/sdrobert/pydrobert-param
Author: Sean Robertson
Author-email: sdrobert@cs.toronto.edu
License: Apache-2.0
Project-URL: Documentation, https://pydrobert-param.readthedocs.io
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: param (>=1.9)
Provides-Extra: all
Requires-Dist: ruamel.yaml (>=0.15) ; extra == 'all'
Requires-Dist: optuna ; extra == 'all'
Requires-Dist: numpy ; extra == 'all'
Requires-Dist: pandas ; extra == 'all'
Provides-Extra: optuna
Requires-Dist: optuna ; extra == 'optuna'
Provides-Extra: types
Requires-Dist: numpy ; extra == 'types'
Requires-Dist: pandas ; extra == 'types'
Provides-Extra: yaml
Requires-Dist: ruamel.yaml (>=0.15) ; extra == 'yaml'

# pydrobert-param

[![Documentation Status](https://readthedocs.org/projects/pydrobert-param/badge/?version=latest)](https://pydrobert-param.readthedocs.io/en/latest/?badge=latest)
[![Build status](https://ci.appveyor.com/api/projects/status/67r8qy78u6bkf2qn/branch/master?svg=true)](https://ci.appveyor.com/project/sdrobert/pydrobert-param/branch/master)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)

Utilities for the python package [param](http://param.pyviz.org/).

While _param_ is a great tool for keeping track of parameters, currently
serialization is restricted to pickling and unpickling objects.
_pydrobert-param_ takes the stance that parameter (de)serialization has an
intuitive and obvious representation in most cases. The developer can modify
how _pydrobert-param_ (de)serializes `param.Parameterized` instances according
to her needs.

A teaser:

``` python
import param
import pydrobert.param.serialization as serial

class Foo(param.Parameterized):
    my_int = param.Integer(10)

first, second = Foo(), Foo()
first.my_int = 30
serial.serialize_to_json('foo.json', first)
serial.deserialize_from_json('foo.json', second)
assert first.my_int == second.my_int
```

While the primary purpose of _pydrobert-param_ is for parameter
(de)serialization, there is also code in `pydrobert.param.optuna` for
hyperparameter optimization via [Optuna](https://optuna.org/). Check the
documentation for more complicated examples of serialization, as well as for
hyperparameter optimization.

**This is student-driven code, so don't expect a stable API. I'll try to use
semantic versioning, but the best way to keep functionality stable is by
pinning the version in the requirements or by forking.**

## Documentation

- [Latest](https://pydrobert-param.readthedocs.io/en/latest/)
- [v0.4.0](https://pydrobert-param.readthedocs.io/en/v0.4.0/)
- [v0.3.1](https://pydrobert-param.readthedocs.io/en/v0.3.1/)

## Installation

_pydrobert-param_ is available via both PyPI and Conda.

``` sh
conda install -c sdrobert pydrobert-param
pip install pydrobert-param
pip install git+https://github.com/sdrobert/pydrobert-param # bleeding edge
```

There are also optional dependencies on PyPI:

``` sh
pip install 'pydrobert-param[yaml]'    # installs ruamel.yaml YAML backend
pip install 'pydrobert-param[optuna]'  # installs optuna
pip install 'pydrobert-param[types]'   # installs numpy and pandas
                                       # (to handle all types)
pip install 'pydrobert-param[all]'     # all of the above
```

## Licensing and How to Cite

Please see the [pydrobert page](https://github.com/sdrobert/pydrobert) for more
details.
