Metadata-Version: 1.1
Name: tri.struct
Version: 2.5.2
Summary: tri.struct supplies classes that can be used like dictionaries and as objects with attribute access at the same time
Home-page: https://github.com/TriOptima/tri.struct
Author: Johan Lübcke
Author-email: johan.lubcke@trioptima.com
License: BSD
Description: .. image:: https://travis-ci.org/TriOptima/tri.struct.svg?branch=master
            :target: https://travis-ci.org/TriOptima/tri.struct
        .. image:: http://codecov.io/github/TriOptima/tri.struct/coverage.svg?branch=master
            :target: http://codecov.io/github/TriOptima/tri.struct?branch=master
        
        tri.struct
        ==========
        
        tri.struct supplies classes that can be used like dictionaries and as objects with attribute access at the same time. There are two versions:
        
        - Struct: mutable struct
        - FrozenStruct: immutable struct
        
        Some niceties include:
        
        - Predictable repr() so it's easy to write tests
        - `merged` function call to merge different types of dicts into a new: `merged(Struct(a=1), FrozenStruct(b=1), c=1) == Struct(a=1, b=1, c=1)`)
        - Accelerated implementation in c for improved speed. (With python-only fallback reference implementation)
        
        Example
        -------
        
        .. code:: python
        
            >>> foo = Struct()
            >>> foo.a = 1
            >>> foo['a']
            1
            >>> foo['a'] = 2
            >>> foo.a
            2
        
        
        Running tests
        -------------
        
        You need tox installed then just `make test`.
        
        
        License
        -------
        
        BSD
        
        
        Documentation
        -------------
        
        http://tristruct.readthedocs.org.
        
        
        Changelog
        =========
        
        2.5.2 - 2016-04-07
        ~~~~~~~~~~~~~~~~~~
        
        * Fix make and tox targets for build and release.
        * Fix lint issues.
        
        2.5.1 - 2015-12-15
        ~~~~~~~~~~~~~~~~~~
        
        * Bugfix: Fix compilation of the _cstruct module.
        
        2.5.0 - (never released)
        ~~~~~~~~~~~~~~~~~~~~~~~~
        
        * Build changes.
        
        2.4.0 - 2015-12-08
        ~~~~~~~~~~~~~~~~~~
        
        * Improvement: If a Struct subclass implements the `__missing__` method,
          it will not be called before GetAttr on attribute access, but will be
          called before GetAttr on dict access.
        
        2.3.1 - 2015-12-07
        ~~~~~~~~~~~~~~~~~~
        
        * Bugfix: Clear KeyError in CStruct getattr before trying GetAttr,
          otherwise the KeyError may "leak out". Also, only clear the error
          and attempt GetAttr if the original error was a KeyError.
        
        2.3.0 - 2015-12-02
        ~~~~~~~~~~~~~~~~~~
        
        * Add mixin class `Frozen`to make read-only versions of a dict-derived
          class (typically a Struct or a subclass there of.)
        
        * Use the `Frozen` mixin to implement `FrozenStruct`
        
        2.2.0 - 2015-11-12
        ~~~~~~~~~~~~~~~~~~
        
        * Add keyword arguments to `merged` function.
        
        2.1.2 - 2015-11-11
        ~~~~~~~~~~~~~~~~~~
        
        * Redo the C implementation to be a "heaptype", and remove the hack of
          setting `__dict__` = `self`. Instead, `object` will control the type
          storage, letting us "insert" attributes into the object without
          polluting the `dict`.
        
        2.0 - (never released)
        ~~~~~~~~~~~~~~~~~~~~~~
        
        * slim down interface to again match dict
        * add tri.struct.merged function to join structs
        * add optional C implementation to speed up instantiation
        
        1.0 - 2015-09-29
        ~~~~~~~~~~~~~~~~
        
        * Struct with attribute & dict interface
        * __add__ and __or__ to combine structs
        
Keywords: tri.struct
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
