+
    f7ix  c                  sf   R t ^ RIHt ^ RIHtHtHtHtHt ^ RI	H
t
 ^ RIt^ RIt^ RIt]! R]
R]3,          R7      t]! RR	R7      t]]]]]]3,          ]3,          ,          t]]3tRR
 R lltR R lt ! R R	]]]3,          ]P0                  4      t]R8X  d   ^ RIt]P8                  ! 4        R# R# )zThis module contains miscellaneous helpers.

It is not considered part of the public ufoLib API. It does, however,
define the :py:obj:`.deprecated` decorator that is used elsewhere in
the module.
)annotations)OptionalTypeTypeVarUnioncast)CallableNF.)ZboundFormatVersionBaseFormatVersionc                    V ^8  d   QhRRRR/# )   msgstrreturnzCallable[[F], F] Zformat   "=/usr/lib64/python3.14/site-packages/fontTools/ufoLib/utils.py__annotate__r      s        C  !1      c                s   a  R V 3R llpV# )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     V ^8  d   QhRRRR/# )r   funcr   r   r   r   r   r   r   Z deprecated.<locals>.__annotate__$   s     
  
 1 
  
 r   c                sf   <a  \         P                  ! S 4      V V3R  l4       p\        \        V4      # )c                 sl   < \         P                  ! SP                   R S 2\        ^R7       S! V / VB # )z function is a deprecated. )ZcategoryZ
stacklevel)warningsZwarn__name__ZDeprecationWarning)ZargsZkwargsr   r   s   *,r   wrapperZ9deprecated.<locals>.deprecated_decorator.<locals>.wrapper%   s:    MM==/!<SEB+
 (((r   )	functoolsZwrapsr   r   )r   r   r   s   f r   deprecated_decoratorZ(deprecated.<locals>.deprecated_decorator$   s-    			) 
	) Awr   r   )r   r   s   f r   
deprecatedr      s    
  
   r   c               $    V ^8  d   QhRRRRRR/# )r   valueFormatVersionInputclsType[FormatVersion]r   r   r   r   r   r   r   r   3   s$     ? ??$7??r   c                s
   V f   VP                  4       # \        W4      '       d   V # \        V \        4      '       d   V! V ^ 34      # \        V \        4      '       d   \	        V 4      ^8X  d	   V! V 4      # \        RV : 24      h)NzUnsupported format version: )default
isinstanceinttupleZlen
ValueError)r   r      &&r   normalizeFormatVersionr'   3   st     }{{}%%E1:%CJ!O5z
3E9=
>>r   c                  s   a  ] tR t^Ct$ R]R&   R V 3R llt]R R l4       t]R R l4       t]	R	 R
 l4       t
R R lt]	R R l4       t]	R R l4       tRtV ;t# )r	   tuple[int, int]r   c               r   )r   r   r    r   r(   r   r	   r   r   r   r   r   BaseFormatVersion.__annotate__F   s#     + +( + +EV +r   c                	s"   < \         SV `  W4      # N)Zsuper__new__)r   r   	__class__s   &&r   r+   ZBaseFormatVersion.__new__F   s    ws**r   c                   V ^8  d   QhRR/# r   r   r#   r   r   r   r   r   r)   J         s r   c                	s(    V P                   ^ ,          # )    r   Zself   &r   majorZBaseFormatVersion.majorI       zz!}r   c               r-   r.   r   r   r   r   r   r)   N   r/   r   c                	s(    V P                   ^,          # )i   r1   r2   r3   r   minorZBaseFormatVersion.minorM   r5   r   c               r
   )r   r   objectr   r	   r   r   r   r   r   r)   R   s     E Ef E): Er   c                	s    \        V\        4      '       d   V ! V^ 34      # Vf   V P                  4       # \        V: RV P                   24      h)r0   z is not a valid )r"   r#   r!   r%   r   )r   r   r&   r   	_missing_ZBaseFormatVersion._missing_Q   sK     eS!!qz?"=;;= E9$4S\\NCDDr   c               r-   )r   r   r   r   r   r   r   r   r)   [   s     , , ,r   c                	s8    V P                    R V P                   2# )Z.)r4   r6   r2   r3   r   __str__ZBaseFormatVersion.__str__[   s    **Qtzzl++r   c               r
   )r   r   r    r   r   r   r   r   r   r   r)   _   s     - -( -] -r   c                	H    \        V P                  P                  4       4      # r*   )Zmax__members__valuesr   r3   r   r!   ZBaseFormatVersion.default^   s     3??))+,,r   c               r
   )r   r   r    r   zfrozenset[FormatVersion]r   r   r   r   r   r)   d   s     3 3 3 38P 3r   c                	r:   r*   )Z	frozensetr;   r<   r=   r3   r   supported_versionsZ$BaseFormatVersion.supported_versionsc   s    //122r   r   )r   Z
__module__Z__qualname__Z__firstlineno__Z__annotations__r+   Zpropertyr4   r6   Zclassmethodr8   r9   r!   r>   Z__static_attributes__Z__classcell__)r,   s   @r   r	   r	   C   s~    + +     E E, - - 3 3r   Z__main__)Z )Z__doc__Z
__future__r    Ztypingr   r   r   r   r   Zcollections.abcr   Zenumr   r   r7   r   r   r#   r$   r   ZfloatZnumberTypesr   r'   ZEnumr	   r   ZdoctestZtestmodr   r   r   <module>r?      s    # 7 7 $   CxV,-/BCeCsCx-$GHI El 8? "3c3h "3J zOO r   