+
     h/  c                  s  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# )i    )annotations)TYPE_CHECKINGGenericTypeVarcastoverload_T_U)Callable)AnyProtocol)Self	TypeAlias.r   _GetterCallable_GetterClassMethodN_SetterCallable_SetterClassMethodc                  s2    ] 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    Zformat   ">/usr/lib/python3.14/site-packages/jaraco/classes/properties.py__annotate__$_ClassPropertyAttribute.__annotate__   s    SSvS0@SBS    c                	    R # Nr   selfr   r      &&&r   __get__Z_ClassPropertyAttribute.__get__   s    PSr   c               r   )r   r   r   valuer   r   Noner   r   r   r   r   r      s    >>v>b>T>r   c                	r   r    r   )r"   r   r%   r#   r   __set__Z_ClassPropertyAttribute.__set__   s    3r   r   r    )__name__
__module____qualname____firstlineno__r$   r'   __static_attributes__r   r   r   r   r      s    S>>r   r   c                  sf    ] 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   r   r   r   NonDataProperty.__annotate__2   s      / D r   c                	s    Wn         R # r    r/   )r"   r/      &&r   __init__ZNonDataProperty.__init__2   s	     	r   c               s$    V ^8  d   QhRRRRRR/# )r   r   r&   r   r   r   r   r   r   r   r   r0   8   s(        
	r   c                	r   r    r   r!   r#   r   r$   NonDataProperty.__get__7   s    
 r   Nc               r   )r   r   r   r   type[_T] | Noner   r   r   r   r   r   r   r0   ?   s(       ! 
	r   c                	r   r    r   r!   r#   r   r$   r4   >   s    
 r   c               r   )r   r   z	_T | Noner   r5   r   z	Self | _Ur   r   r   r   r   r0   E   s(       ! 
	r   c                	s0    Vf   V # V P                  V4      # r    r1   r!   r#   r   r$   r4   E   s    
 ;Kyy~r   r1   r    )	r(   r)   r*   r+   __doc__r3   r   r$   r,   r   r   r   r-   r-      s>    ,
     r   r-   c                  s    ] 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]]r/   z6_ClassPropertyAttribute[_SetterClassMethod[_T] | None]fsetc                  s.   a  ] tR t^tR V 3R lltRtV ;t# )classproperty.Metac               r   )r   keyZstrr%   r   r   r&   r   r   r   r   r   Zclassproperty.Meta.__annotate__   s!     	3 	33 	3v 	3$ 	3r   c                	s   < V P                   P                  VR 4      p\        V4      \        J d   VP	                  W4      # \
        SV `  W4      # r    )Z__dict__Zgettyper7   r'   Zsuper__setattr__)r"   r:   r%   r   	__class__s   &&& r   r<   Zclassproperty.Meta.__setattr__   sD    --##C.CCyM){{4//7&s22r   r   )r(   r)   r*   r+   r<   r,   Z__classcell__)r=      @r   Metar9      s    	3 	3r   r?   Nc               r   )r   r/   ,_GetterCallable[_T] | _GetterClassMethod[_T]r8   z3_SetterCallable[_T] | _SetterClassMethod[_T] | Noner   r&   r   r   r   r   r   classproperty.__annotate__   s)     # #:# B# 
	#r   c                	sz    V P                  V4      V n        W n        T;'       d    V P                  V4       R #  R # r    )_ensure_methodr/   r8   setter)r"   r/   r8   r#   r   r3   Zclassproperty.__init__   s2    
 ''-		""T""r   c               r   )r   instancer   ownerztype[object] | Noner   r   r   r   r   r   r   rA      s"     0 0 0/B 0b 0r   c                	sD    V P                   P                  R V4      ! 4       # r    )r/   r$   )r"   rD   rE   r#   r   r$   Zclassproperty.__get__   s    yy  u-//r   c               r   )r   rE   r   r%   r   r   r&   r   r   r   r   r   rA      s&     K KV KB K4 Kr   c                	s    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])r8   ZAttributeErrorr;   r7   r?   r$   r   )r"   rE   r%   r#   r   r'   Zclassproperty.__set__   sU    yyy !677;m000KEyy  tNE'BCEJJr   c               r.   )r   r8   ,_SetterCallable[_T] | _SetterClassMethod[_T]r   r   r   r   r   r   r   rA      s      G D r   c                	s2    V P                  V4      V n        V # r    )rB   r8   )r"   r8   r2   r   rC   Zclassproperty.setter   s    ''-	r   c               r.   )r   fnr@   r   z_GetterClassMethod[_T]r   r   r   r   r   rA           % %8% 
 %r   c                	r   r    r   clsrG   r2   r   rB   classproperty._ensure_method       
 "%r   c               r.   )r   rG   rF   r   z_SetterClassMethod[_T]r   r   r   r   r   rA      rH   r   c                	r   r    r   rI   r2   r   rB   rK      rL   r   c               r.   )r   rG   z[_GetterCallable[_T] | _GetterClassMethod[_T] | _SetterCallable[_T] | _SetterClassMethod[_T]r   z/_GetterClassMethod[_T] | _SetterClassMethod[_T]r   r   r   r   r   rA      s      7 7!7 
97r   c                sb    \        V\        \        34      '       * pV'       d   \        V4      # T# )z-
Ensure fn is a classmethod or staticmethod.
)Z
isinstanceclassmethodZstaticmethod)rJ   rG   Zneeds_methods   && r   rB   rK      s)     &b;*EFF".{26B6r   )r/   r8   r    )r(   r)   r*   r+   r6   __annotations__r;   r?   r3   r$   r'   rC   r   rM   rB   r,   r   r   r   r7   r7   O   s    dL :9
@@3t 3#0K %  %
 %  %
 7 7r   r7   )__conditional_annotations__Z
__future__r    Ztypingr   r   r   r   r   r   r   Zcollections.abcr   r	   r
   Ztyping_extensionsr   r   r   rN   rM   r   r;   r   r   r   r-   r7   )rO   r>   r   <module>rP      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   