+
    h/                      a  0 t $ ^ RIHt ^ RIHtHtHtHtHt ]! R4      t	]! R4      t
]'       du   ^ RIHt ^ RIHtHt ^ RIHtHt ]R]	3,          tR	]R
&   ]]. ]	3,          tR	]R&   ]]],          ]	.R3,          tR	]R&   ]]]	.R3,          tR	]R&    ! R R]]	,          4      t ! R R]]	]
3,          4      t ! R R]]	,          4      tR# )    )annotations)TYPE_CHECKINGGenericTypeVarcastoverload_T_U)Callable)AnyProtocol)Self	TypeAlias.r   _GetterCallable_GetterClassMethodN_SetterCallable_SetterClassMethodc                  2    ] tR t^tRR R lltR R ltRtR# )_ClassPropertyAttributeNc               $    V ^8  d   QhRRRRRR/# )   objobjectobjtypeztype[Any] | Nonereturnr	    )formats   "9lib/python3.14/site-packages/jaraco/classes/properties.py__annotate__$_ClassPropertyAttribute.__annotate__   s    SSvS0@SBS    c                	    R # Nr   selfr   r   s   &&&r   __get___ClassPropertyAttribute.__get__   s    PSr!   c               $    V ^8  d   QhRRRRRR/# )r   r   r   valuer	   r   Noner   )r   s   "r   r   r       s    >>v>b>T>r!   c                	    R # r#   r   )r%   r   r)   s   &&&r   __set___ClassPropertyAttribute.__set__   s    3r!   r   r#   )__name__
__module____qualname____firstlineno__r&   r,   __static_attributes__r   r!   r   r   r      s    S>>r!   r   c                  f    ] tR t^tRtR R lt]R R l4       t]RR R ll4       tRR	 R
 lltRtR# )NonDataPropertya  Much like the property builtin, but only implements __get__,
making it a non-data property, and can be subsequently reset.

See http://users.rcn.com/python/download/Descriptor.htm for more
information.

>>> class X(object):
...   @NonDataProperty
...   def foo(self):
...     return 3
>>> x = X()
>>> x.foo
3
>>> x.foo = 4
>>> x.foo
4

'...' below should be 'jaraco.classes' but for pytest-dev/pytest#3396
>>> X.foo
<....properties.NonDataProperty object at ...>
c                    V ^8  d   QhRRRR/# )r   fgetzCallable[[_T], _U]r   r*   r   )r   s   "r   r   NonDataProperty.__annotate__2   s      / D r!   c                	X    Vf   Q R4       h\        V4      '       g   Q R4       hWn        R # )Nzfget cannot be nonezfget must be callable)callabler6   )r%   r6   s   &&r   __init__NonDataProperty.__init__2   s-    6!66~~666~	r!   c               $    V ^8  d   QhRRRRRR/# )r   r   r*   r   r   r   r   )r   s   "r   r   r7   8   s(        
	r!   c                	    R # r#   r   r$   s   &&&r   r&   NonDataProperty.__get__7   s    
 r!   Nc               $    V ^8  d   QhRRRRRR/# )r   r   r	   r   type[_T] | Noner   r
   r   )r   s   "r   r   r7   ?   s(       ! 
	r!   c                	    R # r#   r   r$   s   &&&r   r&   r>   >   s    
 r!   c               $    V ^8  d   QhRRRRRR/# )r   r   z	_T | Noner   r@   r   z	Self | _Ur   )r   s   "r   r   r7   E   s(       ! 
	r!   c                	0    Vf   V # V P                  V4      # r#   r6   r$   s   &&&r   r&   r>   E   s    
 ;Kyy~r!   rD   r#   )	r.   r/   r0   r1   __doc__r:   r   r&   r2   r   r!   r   r4   r4      s>    ,
     r!   r4   c                      ] tR t^Ot$ RtR]R&   R]R&    ! R R]4      tRR	 R
 lltRR R llt	R R lt
R R lt]]R R l4       4       t]]R R l4       4       t]R R l4       tRtR# )classpropertya~  
Like @property but applies at the class level.


>>> class X(metaclass=classproperty.Meta):
...   val = None
...   @classproperty
...   def foo(cls):
...     return cls.val
...   @foo.setter
...   def foo(cls, val):
...     cls.val = val
>>> X.foo
>>> X.foo = 3
>>> X.foo
3
>>> x = X()
>>> x.foo
3
>>> X.foo = 4
>>> x.foo
4

Setting the property on an instance affects the class.

>>> x.foo = 5
>>> x.foo
5
>>> X.foo
5
>>> vars(x)
{}
>>> X().foo
5

Attempting to set an attribute where no setter was defined
results in an AttributeError:

>>> class GetOnly(metaclass=classproperty.Meta):
...   @classproperty
...   def foo(cls):
...     return 'bar'
>>> GetOnly.foo = 3
Traceback (most recent call last):
...
AttributeError: can't set attribute

It is also possible to wrap a classmethod or staticmethod in
a classproperty.

>>> class Static(metaclass=classproperty.Meta):
...   @classproperty
...   @classmethod
...   def foo(cls):
...     return 'foo'
...   @classproperty
...   @staticmethod
...   def bar():
...     return 'bar'
>>> Static.foo
'foo'
>>> Static.bar
'bar'

*Legacy*

For compatibility, if the metaclass isn't specified, the
legacy behavior will be invoked.

>>> class X:
...   val = None
...   @classproperty
...   def foo(cls):
...     return cls.val
...   @foo.setter
...   def foo(cls, val):
...     cls.val = val
>>> X.foo
>>> X.foo = 3
>>> X.foo
3
>>> x = X()
>>> x.foo
3
>>> X.foo = 4
>>> x.foo
4

Note, because the metaclass was not specified, setting
a value on an instance does not have the intended effect.

>>> x.foo = 5
>>> x.foo
5
>>> X.foo  # should be 5
4
>>> vars(x)  # should be empty
{'foo': 5}
>>> X().foo  # should be 5
4
z/_ClassPropertyAttribute[_GetterClassMethod[_T]]r6   z6_ClassPropertyAttribute[_SetterClassMethod[_T] | None]fsetc                  .   a  ] tR t^tR V 3R lltRtV ;t# )classproperty.Metac               $    V ^8  d   QhRRRRRR/# )r   keystrr)   r   r   r*   r   )r   s   "r   r   classproperty.Meta.__annotate__   s!     	3 	33 	3v 	3$ 	3r!   c                	   < V P                   P                  VR 4      p\        V4      \        J d   VP	                  W4      # \
        SV `  W4      # r#   )__dict__gettyperG   r,   super__setattr__)r%   rL   r)   r   	__class__s   &&& r   rT   classproperty.Meta.__setattr__   sD    --##C.CCyM){{4//7&s22r!   r   )r.   r/   r0   r1   rT   r2   __classcell__)rU   s   @r   MetarJ      s    	3 	3r!   rX   Nc               $    V ^8  d   QhRRRRRR/# )r   r6   ,_GetterCallable[_T] | _GetterClassMethod[_T]rH   z3_SetterCallable[_T] | _SetterClassMethod[_T] | Noner   r*   r   )r   s   "r   r   classproperty.__annotate__   s)     # #:# B# 
	#r!   c                	z    V P                  V4      V n        W n        T;'       d    V P                  V4       R #  R # r#   )_ensure_methodr6   rH   setter)r%   r6   rH   s   &&&r   r:   classproperty.__init__   s2    
 ''-		""T""r!   c               $    V ^8  d   QhRRRRRR/# )r   instancer   ownerztype[object] | Noner   r	   r   )r   s   "r   r   r[      s"     0 0 0/B 0b 0r!   c                	D    V P                   P                  R V4      ! 4       # r#   )r6   r&   )r%   ra   rb   s   &&&r   r&   classproperty.__get__   s    yy  u-//r!   c               $    V ^8  d   QhRRRRRR/# )r   rb   r   r)   r	   r   r*   r   )r   s   "r   r   r[      s&     K KV KB K4 Kr!   c                	    V P                   '       g   \        R 4      h\        V4      \        P                  Jd   \        V4      pV P                   P                  R\        RV4      4      ! V4      # )zcan't set attributeNztype[object])rH   AttributeErrorrR   rG   rX   r&   r   )r%   rb   r)   s   &&&r   r,   classproperty.__set__   sU    yyy !677;m000KEyy  tNE'BCEJJr!   c                    V ^8  d   QhRRRR/# )r   rH   ,_SetterCallable[_T] | _SetterClassMethod[_T]r   r   r   )r   s   "r   r   r[      s      G D r!   c                	2    V P                  V4      V n        V # r#   )r]   rH   )r%   rH   s   &&r   r^   classproperty.setter   s    ''-	r!   c                    V ^8  d   QhRRRR/# )r   fnrZ   r   z_GetterClassMethod[_T]r   )r   s   "r   r   r[           % %8% 
 %r!   c                	    R # r#   r   clsrn   s   &&r   r]   classproperty._ensure_method       
 "%r!   c                    V ^8  d   QhRRRR/# )r   rn   rj   r   z_SetterClassMethod[_T]r   )r   s   "r   r   r[      ro   r!   c                	    R # r#   r   rq   s   &&r   r]   rs      rt   r!   c                    V ^8  d   QhRRRR/# )r   rn   z[_GetterCallable[_T] | _GetterClassMethod[_T] | _SetterCallable[_T] | _SetterClassMethod[_T]r   z/_GetterClassMethod[_T] | _SetterClassMethod[_T]r   )r   s   "r   r   r[      s      7 7!7 
97r!   c                b    \        V\        \        34      '       * pV'       d   \        V4      # T# )z-
Ensure fn is a classmethod or staticmethod.
)
isinstanceclassmethodstaticmethod)rr   rn   needs_methods   && r   r]   rs      s)     &b;*EFF".{26B6r!   )r6   rH   r#   )r.   r/   r0   r1   rE   __annotations__rR   rX   r:   r&   r,   r^   r   rz   r]   r2   r   r!   r   rG   rG   O   s    dL :9
@@3t 3#0K %  %
 %  %
 7 7r!   rG   )__conditional_annotations__
__future__r   typingr   r   r   r   r   r	   r
   collections.abcr   r   r   typing_extensionsr   r   r   r}   rz   r   rR   r   r   r   r4   rG   )r~   s   @r   <module>r      s    " " B BT]T]($1 "*#r'!2OY2$/R$<	<!)49b/4*?!@OY@$/bT4$@	@?(2, ?1gb"fo 1hb7GBK b7r!   