semvec/pypi-packages huggingface dataset:
decorated_options 0.1.0
Function decorator to make argument passing saner.
License: BSD
Keywords: decorators,data-science,configuration,arguments

========
Overview
========



Function decorator to make argument passing saner.

I often have to write a function which runs a simulation/learning task which I
need to run for several different parameters. This initially is manageable, but
then slowly configuration creep starts to happen: I keep adding more and more
parameters to the functions which run the simulations and keep making my old
code more and more fragile.

I wrote ``decorated_options`` to decouple the arguments for different set of experiments.

In brief,  ``decorated_options`` converts this:

::

    def run(max_num_followers, num_segments, is_hawkes):
        # ...
        # ...

    # tmp = run_multiple_followers(max_num_followers=10, num_segments=10, is_hawkes=True)
    # tmp = run_multiple_followers(max_num_followers=100, num_segments=10, is_hawkes=False)
    # tmp = run_multiple_followers(max_num_followers=10, num_segments=50, is_hawkes=True)
    tmp = run_multiple_followers(max_num_followers=1000, num_segments=100, is_hawkes=False)


to:

::

    from decorated_options import Options, optioned

    @optioned('opts')
    def run(max_num_followers, num_segments, is_hawkes):
        # ...
        # ...


    opts = Options(max_num_followers=10, num_segments=10, is_hawkes=True)
    # tmp = run_multiple_followers(opts=opts)
    # tmp = run_multiple_followers(max_num_followers=100, is_hawkes=False, opts=opts)
    # tmp = run_multiple_followers(num_segments=50, is_hawkes=False, opts=opts)
    tmp = run_multiple_followers(max_num_followers=1000, num_segments=100, is_hawkes=False)



* Benefits over ``**kwargs`` in receiving function:

  1. Early reporting of errors at call-time.
  2. No need to unpack the values.
  3. Default values do not have to be hard-coded.
  4. Allows progressive improvement, no need to change old code which uses positional arguments.

* Benefits over ``**dict`` while calling:

  1. Easier updating/overriding of values
  2. Positional arguments also work
  3. Guaranteed immutability (throws Exceptions on attempted violations.)

* Benefits over default values in receiving function:

  1. ``Options`` objects can save defaults for multiple settings.
  2. De-couples default values from the functions themselves.



Installation
============

::

    pip install git+https://github.com/musically-ut/decorated_options.git@master#egg=decorated_options

Development
===========

To run the all tests run::

    tox

Note, to combine the coverage data from all the tox environments run:

.. list-table::
    :widths: 10 90
    :stub-columns: 1

    - - Windows
      - ::

            set PYTEST_ADDOPTS=--cov-append
            tox

    - - Other
      - ::

            PYTEST_ADDOPTS=--cov-append tox


Changelog
=========

0.1.0 (2016-07-24)
-----------------------------------------

* First release on PyPI.