U
    #iR!                     @   s,  d dl Z ddlmZ ddlmZ e d Zedd edd  d	D Z	[e ZG d
d de
e jZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG d d! d!eZG d"d# d#eZdS )$    N   )get_versions)_NameManglerversionc                 c   s   | ]}t |V  qd S N)int).0n r
   4/tmp/pip-unpacked-wheel-fy8tok6n/strenum/__init__.py	<genexpr>   s     r   +.c                       s0   e Zd ZdZ fddZdd Zdd Z  ZS )StrEnuma  
    StrEnum is a Python ``enum.Enum`` that inherits from ``str``. The default
    ``auto()`` behavior uses the member name as its value.

    Example usage::

        class Example(StrEnum):
            UPPER_CASE = auto()
            lower_case = auto()
            MixedCase = auto()

        assert Example.UPPER_CASE == "UPPER_CASE"
        assert Example.lower_case == "lower_case"
        assert Example.MixedCase == "MixedCase"
    c                    s>   t |ttjfs(td|dt| t j| |f||S )Nz$Values of StrEnums must be strings: z is a )
isinstancestrenumauto	TypeErrortypesuper__new__)clsvalueargskwargs	__class__r
   r   r   &   s
    zStrEnum.__new__c                 C   s
   t | jS r   )r   r   )selfr
   r
   r   __str__-   s    zStrEnum.__str__c                 G   s   | S r   r
   name_r
   r
   r   _generate_next_value_0   s    zStrEnum._generate_next_value_)__name__
__module____qualname____doc__r   r   r#   __classcell__r
   r
   r   r   r      s   r   c                   @   s   e Zd ZdZdd ZdS )LowercaseStrEnuma  
    A ``StrEnum`` where ``auto()`` will convert the name to `lowercase` to
    produce each member's value.

    Example usage::

        class Example(LowercaseStrEnum):
            UPPER_CASE = auto()
            lower_case = auto()
            MixedCase = auto()

        assert Example.UPPER_CASE == "upper_case"
        assert Example.lower_case == "lower_case"
        assert Example.MixedCase == "mixedcase"

    .. versionadded:: 0.4.3
    c                 G   s   |   S r   )lowerr    r
   r
   r   r#   G   s    z&LowercaseStrEnum._generate_next_value_Nr$   r%   r&   r'   r#   r
   r
   r
   r   r)   4   s   r)   c                   @   s   e Zd ZdZdd ZdS )UppercaseStrEnuma  
    A ``StrEnum`` where ``auto()`` will convert the name to `UPPERCASE` to
    produce each member's value.

    Example usage::

        class Example(UppercaseStrEnum):
            UPPER_CASE = auto()
            lower_case = auto()
            MixedCase = auto()

        assert Example.UPPER_CASE == "UPPER_CASE"
        assert Example.lower_case == "LOWER_CASE"
        assert Example.MixedCase == "MIXEDCASE"

    .. versionadded:: 0.4.3
    c                 G   s   |   S r   )upperr    r
   r
   r   r#   ^   s    z&UppercaseStrEnum._generate_next_value_Nr+   r
   r
   r
   r   r,   K   s   r,   c                   @   s   e Zd ZdZdd ZdS )CamelCaseStrEnuma  
    A ``StrEnum`` where ``auto()`` will convert the name to `camelCase` to
    produce each member's value.

    Example usage::

        class Example(CamelCaseStrEnum):
            UPPER_CASE = auto()
            lower_case = auto()
            MixedCase = auto()

        assert Example.UPPER_CASE == "upperCase"
        assert Example.lower_case == "lowerCase"
        assert Example.MixedCase == "mixedCase"

    .. versionadded:: 0.4.5
    c                 G   s
   t | S r   )_name_manglerZcamelr    r
   r
   r   r#   u   s    z&CamelCaseStrEnum._generate_next_value_Nr+   r
   r
   r
   r   r.   b   s   r.   c                   @   s   e Zd ZdZdd ZdS )PascalCaseStrEnuma  
    A ``StrEnum`` where ``auto()`` will convert the name to `PascalCase` to
    produce each member's value.

    Example usage::

        class Example(PascalCaseStrEnum):
            UPPER_CASE = auto()
            lower_case = auto()
            MixedCase = auto()

        assert Example.UPPER_CASE == "UpperCase"
        assert Example.lower_case == "LowerCase"
        assert Example.MixedCase == "MixedCase"

    .. versionadded:: 0.4.5
    c                 G   s
   t | S r   )r/   Zpascalr    r
   r
   r   r#      s    z'PascalCaseStrEnum._generate_next_value_Nr+   r
   r
   r
   r   r0   y   s   r0   c                   @   s   e Zd ZdZdd ZdS )KebabCaseStrEnuma  
    A ``StrEnum`` where ``auto()`` will convert the name to `kebab-case` to
    produce each member's value.

    Example usage::

        class Example(KebabCaseStrEnum):
            UPPER_CASE = auto()
            lower_case = auto()
            MixedCase = auto()

        assert Example.UPPER_CASE == "upper-case"
        assert Example.lower_case == "lower-case"
        assert Example.MixedCase == "mixed-case"

    .. versionadded:: 0.4.5
    c                 G   s
   t | S r   )r/   Zkebabr    r
   r
   r   r#      s    z&KebabCaseStrEnum._generate_next_value_Nr+   r
   r
   r
   r   r1      s   r1   c                   @   s   e Zd ZdZdd ZdS )SnakeCaseStrEnuma  
    A ``StrEnum`` where ``auto()`` will convert the name to `snake_case` to
    produce each member's value.

    Example usage::

        class Example(SnakeCaseStrEnum):
            UPPER_CASE = auto()
            lower_case = auto()
            MixedCase = auto()

        assert Example.UPPER_CASE == "upper_case"
        assert Example.lower_case == "lower_case"
        assert Example.MixedCase == "mixed_case"

    .. versionadded:: 0.4.5
    c                 G   s
   t | S r   )r/   Zsnaker    r
   r
   r   r#      s    z&SnakeCaseStrEnum._generate_next_value_Nr+   r
   r
   r
   r   r2      s   r2   c                   @   s   e Zd ZdZdd ZdS )MacroCaseStrEnuma  
    A ``StrEnum`` where ``auto()`` will convert the name to `MACRO_CASE` to
    produce each member's value.

    Example usage::

        class Example(MacroCaseStrEnum):
            UPPER_CASE = auto()
            lower_case = auto()
            MixedCase = auto()

        assert Example.UPPER_CASE == "UPPER_CASE"
        assert Example.lower_case == "LOWER_CASE"
        assert Example.MixedCase == "MIXED_CASE"

    .. versionadded:: 0.4.6
    c                 G   s
   t | S r   )r/   macror    r
   r
   r   r#      s    z&MacroCaseStrEnum._generate_next_value_Nr+   r
   r
   r
   r   r3      s   r3   c                   @   s   e Zd ZdZdd ZdS )CamelSnakeCaseStrEnuma  
    A ``StrEnum`` where ``auto()`` will convert the name to `camel_Snake_Case` to
    produce each member's value.

    Example usage::

        class Example(CamelSnakeCaseStrEnum):
            UPPER_CASE = auto()
            lower_case = auto()
            MixedCase = auto()

        assert Example.UPPER_CASE == "upper_Case"
        assert Example.lower_case == "lower_Case"
        assert Example.MixedCase == "mixed_Case"

    .. versionadded:: 0.4.8
    c                 G   s
   t | S r   )r/   Zcamel_snaker    r
   r
   r   r#      s    z+CamelSnakeCaseStrEnum._generate_next_value_Nr+   r
   r
   r
   r   r5      s   r5   c                   @   s   e Zd ZdZdd ZdS )PascalSnakeCaseStrEnuma  
    A ``StrEnum`` where ``auto()`` will convert the name to `Pascal_Snake_Case` to
    produce each member's value.

    Example usage::

        class Example(PascalSnakeCaseStrEnum):
            UPPER_CASE = auto()
            lower_case = auto()
            MixedCase = auto()

        assert Example.UPPER_CASE == "Upper_Case"
        assert Example.lower_case == "Lower_Case"
        assert Example.MixedCase == "Mixed_Case"

    .. versionadded:: 0.4.8
    c                 G   s
   t | S r   )r/   Zpascal_snaker    r
   r
   r   r#      s    z,PascalSnakeCaseStrEnum._generate_next_value_Nr+   r
   r
   r
   r   r6      s   r6   c                   @   s   e Zd ZdZdd ZdS )SpongebobCaseStrEnuma  
    A ``StrEnum`` where ``auto()`` will convert the name to `SpONGEBob_CAse` to
    produce each member's value.

    Example usage::

        class Example(SpongebobCaseStrEnum):
            UPPER_CASE = auto()
            lower_case = auto()
            MixedCase = auto()

        assert Example.UPPER_CASE == "uPpER_cAsE"
        assert Example.lower_case == "lowER_CASe"
        assert Example.MixedCase == "MixeD_CAse"

    .. versionadded:: 0.4.8
    c                 G   s
   t | S r   )r/   Z	spongebobr    r
   r
   r   r#     s    z*SpongebobCaseStrEnum._generate_next_value_Nr+   r
   r
   r
   r   r7     s   r7   c                   @   s   e Zd ZdZdd ZdS )CobolCaseStrEnuma  
    A ``StrEnum`` where ``auto()`` will convert the name to `COBOL-CASE` to
    produce each member's value.

    Example usage::

        class Example(CobolCaseStrEnum):
            UPPER_CASE = auto()
            lower_case = auto()
            MixedCase = auto()

        assert Example.UPPER_CASE == "UPPER-CASE"
        assert Example.lower_case == "LOWER-CASE"
        assert Example.MixedCase == "MIXED-CASE"

    .. versionadded:: 0.4.8
    c                 G   s
   t | S r   )r/   Zcobolr    r
   r
   r   r#   -  s    z&CobolCaseStrEnum._generate_next_value_Nr+   r
   r
   r
   r   r8     s   r8   c                   @   s   e Zd ZdZdd ZdS )HttpHeaderCaseStrEnuma  
    A ``StrEnum`` where ``auto()`` will convert the name to `Http-Header-Case` to
    produce each member's value.

    Example usage::

        class Example(HttpHeaderCaseStrEnum):
            UPPER_CASE = auto()
            lower_case = auto()
            MixedCase = auto()

        assert Example.UPPER_CASE == "Upper-Case"
        assert Example.lower_case == "Lower-Case"
        assert Example.MixedCase == "Mixed-Case"

    .. versionadded:: 0.4.8
    c                 G   s
   t | S r   )r/   Zhttp_headerr    r
   r
   r   r#   D  s    z+HttpHeaderCaseStrEnum._generate_next_value_Nr+   r
   r
   r
   r   r9   1  s   r9   )r   _versionr   r/   r   __version__tuple	partitionsplit__version_info__r   Enumr   r)   r,   r.   r0   r1   r2   r3   r5   r6   r7   r8   r9   r
   r
   r
   r   <module>   s&   
"