Metadata-Version: 1.1
Name: tri.struct
Version: 3.1.0
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
        
            >>> from tri_struct import Struct
            >>> 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
        ---------
        
        3.1.0 (2019-08-14)
        ~~~~~~~~~~~~~~~~~~
        
        * Override __copy__ for Frozen. This is an optimization that was found in big uses of tri.token.
        
        3.0.1 (2019-06-12)
        ~~~~~~~~~~~~~~~~~~
        
        * Problems with pypi, this is the same as 3.0.1
        
        
        3.0.0 (2019-06-04)
        ~~~~~~~~~~~~~~~~~~
        
        * Renamed module from `tri.struct` to `tri_struct`. This is a breaking change.
        
        * Dropped python2 support
        
        
        2.5.7 (2018-11-16)
        ~~~~~~~~~~~~~~~~~~
        
        * Fixed performance issue with `Frozen`/`FrozenStruct`: the hash was recalculated on each use instead of cached.
        
        
        2.5.6 (2018-06-26)
        ~~~~~~~~~~~~~~~~~~
        
        * Fixed release functionality
        
        2.5.5 (2018-02-20)
        ~~~~~~~~~~~~~~~~~~
        
        * Fixed segfault in repr when running under Python 3
        
        
        2.5.4 (2017-06-13)
        ~~~~~~~~~~~~~~~~~~
        
        * Added `DefaultStruct` in the spirit of the standard library `defaultdict`.
          Also added a `to_default_struct` for recursively converting dicts recursively.
        
        
        2.5.3 (2017-02-10)
        ~~~~~~~~~~~~~~~~~~
        
        * Fix use-after-free when repring a `Struct` that contains
          itself more than once.
        
        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 (unreleased)
        ~~~~~~~~~~~~~~~~~~
        
        * 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 (unreleased)
        ~~~~~~~~~~~~~~~~
        
        * 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.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
