Metadata-Version: 1.1
Name: shibari
Version: 0.0.1
Summary: Bind functions to run only once inside a desired scope.
Home-page: https://github.com/jsfehler/shibari
Author: Joshua Fehler
Author-email: jsfehler@gmail.com
License: MIT
Description: shibari
        =======
        
        .. image:: https://img.shields.io/github/license/jsfehler/shibari.svg
            :alt: GitHub
            :target: https://github.com/jsfehler/shibari/blob/master/LICENSE
        
        .. image:: https://travis-ci.org/jsfehler/stere.svg?branch=master
            :target: https://travis-ci.org/jsfehler/stere
        
        Bind functions to only run once inside a desired scope.
        
        Documentation
        -------------
        
        The Rig class exposes two methods: `bind` and `free`. Bind takes one argument: A name for a scope to bind the function.
        
        Functions wrapped with `bind` will be called only once until the scope it is inside is freed.
        
        Functions wrapped with `free` will free all the bound functions in a specific scope after the function's execution.
        
        Example:
        
        .. code-block:: python
        
            import shibari
        
        
            rig = shibari.Rig('ebi')
        
        
            @rig.bind('ebi')
            def timestamp():
                return str(time.time())
        
        
            @rig.free('ebi')
            def finish():
                pass
        
        
            >>> t = timestamp()
            >>> t2 = timestamp()
            >>> assert t == t2
        
            >>> finish()
        
            >>> t3 = timestamp()
            >>> t4 == timestamp()
            >>> assert t != t3
            >>> assert t3 == t4
        
        Functions that take arguments can be bound, but will always return the same result until they are freed.
        
        Example:
        
        .. code-block:: python
        
            import shibari
        
        
            rig = shibari.Rig('ebi')
        
        
            @rig.bind('ebi')
            def timestamp(a, b):
                return f'{a}_{str(time.time())}_{b}'
        
        
            >>> t = timestamp('goodbye', 'world')
            >>> t2 = timestamp('hello', 'space')
            >>> assert t == t2
        
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Development Status :: 4 - Beta
