B
    Scd                 @   sP   d Z ddlZddlZeefZd	ddZG dd dZedkrLddl	Z	e	
  dS )
z^The module contains miscellaneous helpers.
It's not considered part of the public ufoLib API.
    N c                s    fdd}|S )a@  Decorator factory to mark functions as deprecated with given message.

    >>> @deprecated("Enough!")
    ... def some_function():
    ...    "I just print 'hello world'."
    ...    print("hello world")
    >>> some_function()
    hello world
    >>> some_function.__doc__ == "I just print 'hello world'."
    True
    c                s   t   fdd}|S )Nc                 s&   t j j d tdd  | |S )Nz function is a deprecated.    )category
stacklevel)warningswarn__name__DeprecationWarning)argskwargs)funcmsg 5lib/python3.7/site-packages/fontTools/ufoLib/utils.pywrapper   s
    z9deprecated.<locals>.deprecated_decorator.<locals>.wrapper)	functoolswraps)r   r   )r   )r   r   deprecated_decorator   s    	z(deprecated.<locals>.deprecated_decoratorr   )r   r   r   )r   r   
deprecated   s    r   c                   sX   e Zd Zedd Zedd Ze fddZdd Zed	d
 Z	edd Z
  ZS )_VersionTupleEnumMixinc             C   s
   | j d S )Nr   )value)selfr   r   r   major)   s    z_VersionTupleEnumMixin.majorc             C   s
   | j d S )N   )r   )r   r   r   r   minor-   s    z_VersionTupleEnumMixin.minorc                s2   t |tr| |dfS |d kr&|  S t |S )Nr   )
isinstanceintdefaultsuper	_missing_)clsr   )	__class__r   r   r   1   s
    
z _VersionTupleEnumMixin._missing_c             C   s   | j  d| j S )N.)r   r   )r   r   r   r   __str__;   s    z_VersionTupleEnumMixin.__str__c             C   s   t | j S )N)max__members__values)r    r   r   r   r   >   s    z_VersionTupleEnumMixin.defaultc             C   s   t | j S )N)	frozensetr%   r&   )r    r   r   r   supported_versionsC   s    z)_VersionTupleEnumMixin.supported_versions)r   
__module____qualname__propertyr   r   classmethodr   r#   r   r(   __classcell__r   r   )r!   r   r   (   s   
r   __main__)r   )__doc__r   r   r   floatZnumberTypesr   r   r   ZdoctestZtestmodr   r   r   r   <module>   s   
 