Metadata-Version: 2.1
Name: AnyStrEnum
Version: 0.2.0
Summary: Elegant implementation of Enum which inherits from str or bytes
Home-page: UNKNOWN
Author: MrMrRobat
Author-email: appkiller16@gmail.com
License: MIT
Description: 
        AnyStrEnum
        ==========
        
        
        .. image:: https://img.shields.io/badge/Python%203.7-blue.svg
           :target: https://python.org
           :alt: Python 3.7
         
        
        .. image:: https://img.shields.io/pypi/v/AnyStrEnum.svg
           :target: https://pypi.python.org/pypi/AnyStrEnum
           :alt: PyPi Package Version
        
        
        Elegant implementation of Enum which inherits from str or bytes
        
        As simple as this
        -----------------
        
        .. code-block:: python
        
           from anystrenum import StrEnum
        
           class Season(StrEnum):
               spring: str
               summer: str
               autumn: str
               winter: str
        
           print(Season.summer)
           print(isinstance(Season.summer, str))
           # summer
           # True
        
        Features
        ========
        
        
        * Easy members assignment with type hinting (No need to use ``auto()`` or other stubs)
        * Automatic value generation with support of custom converters or separators
        * Method to filter members (\ ``contains``\ , ``contained_in``\ , ``startswith``\ , ``endswith``\ , etc.)
        * Custom ``str`` and ``bytes`` types support
        
        Installation
        ============
        
        .. code-block:: bash
        
           $ pip install AnyStrEnum
        
        Examples
        ========
        
        Using custom words separator
        ----------------------------
        
        To automatically replace all underscores (\ ``_``\ ) in names to something more suitable, use ``sep`` parameter:
        
        .. code-block:: python
        
           from anystrenum import StrEnum
        
           class Region(StrEnum, sep='-'):
               us_east_1: str
               us_west_1: str
               ca_central_1: str
               cn_northwest_1: str
               eu_central_1: str
               eu_west_1: str
               eu_north_2: str
               sa_east_1: str
        
           print(Region.us_east_1)
           # us-east-1
        
        Using str converter and custom words separator
        ----------------------------------------------
        
        If you need to apply to your names more changes, you can use ``converter`` parameter. Pass a function in here which will be called on every member
        
        .. code-block:: python
        
           from anystrenum import StrEnum
        
           class ContentType(StrEnum, converter=lambda s: s.replace('_', '/', 1), sep='-'):
               application_json: str
               application_octet_stream: str
               application_x_json_stream: str
               audio_mpeg: str
               audio_pcm: str
               audio_ogg: str
        
           print(ContentType.application_octet_stream)
           # application/octet-stream
        
        As you can see from an example, firstly, names will be converted with our lambda function and then, 
        remaining underscores will be replaced with given separator
        
        Filtering enum members
        ----------------------
        
        Using enums from previous examples
        ##################################
        
        .. code-block:: python
        
           print(ContentType.filter(contains='-', startswith='a', endswith='m'))
           # {<ContentType.application_octet_stream: 'application/octet-stream'>, 
           # <ContentType.application_x_json_stream: 'application/x-json-stream'>}
        
           print(ContentType.filter(contained_in='Usually content type for MP3 is audio/mpeg'))
           # {<ContentType.audio_mpeg: 'audio/mpeg'>}
        
           print(Region.filter(startswith='eu', endswith='1'))
           # {<Region.eu_west_1: 'eu-west-1'>, <Region.eu_central_1: 'eu-central-1'>}
        
Keywords: enum str strenum bytesenum bytestrenum typing auto autoenum
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.6
Provides-Extra: dev
Provides-Extra: inflection
Provides-Extra: tests
