ó
    Ð]jÉE  ã                  ó(  • S SK Jr  S SKrS SKJr  S SKJrJrJr  S SK	J
r
  S SKJrJrJr  S SKJr  \(       a  S SKJr  S S	KJrJrJrJrJrJrJr  \" S
5      rSS jr " S S5      r " S S5      r " S S5      r " S S5      r  " S S\\\\ 5      r!g)é    )ÚannotationsN)Úsuppress)ÚTYPE_CHECKINGÚAnyÚTypeVar)ÚKind)ÚAliasResolutionErrorÚBuiltinModuleErrorÚCyclicAliasError)Úmerge_stubs)ÚSequence)ÚAliasÚ	AttributeÚClassÚFunctionÚModuleÚObjectÚ	TypeAliasÚ_ObjTypec                ó²   • [        U [        5      (       a$  U (       d  [        S5      eU R                  S5      nO[	        U 5      nU(       d  [        S5      eU$ )NzEmpty strings are not supportedÚ.zEmpty tuples are not supported)Ú
isinstanceÚstrÚ
ValueErrorÚsplitÚlist)ÚkeyÚpartss     ÚT/home/mande/repo/quber/.venv/lib/python3.13/site-packages/griffe/_internal/mixins.pyÚ
_get_partsr       sH   € Ü�#”s×ÑÞÜÐ>Ó?Ð?Ø—	‘	˜#“‰ä�S“	ˆÞÜÐ9Ó:Ð:Ø€Ló    c                  ó,   • \ rS rSrSrSS jrSS jrSrg)ÚGetMembersMixiné"   z3Mixin class to share methods for accessing members.c                óŠ   • [        U5      n[        U5      S:X  a  U R                  US      $ U R                  US      USS    $ )a¦  Get a member with its name or path.

This method is part of the consumer API:
do not use when producing Griffe trees!

Members will be looked up in both declared members and inherited ones,
triggering computation of the latter.

Parameters:
    key: The name or path of the member.

Examples:
    >>> foo = griffe_object["foo"]
    >>> bar = griffe_object["path.to.bar"]
    >>> qux = griffe_object[("path", "to", "qux")]
é   r   N)r    ÚlenÚall_members©Úselfr   r   s      r   Ú__getitem__ÚGetMembersMixin.__getitem__%   sM   € ô" ˜3“ˆÜˆu‹:˜‹?Ø×#Ñ# E¨!¡HÑ-Ð-Ø×Ñ  a¡Ñ)¨%°°¨)Ñ4Ð4r!   c                ó¢   • [        U5      n[        U5      S:X  a  U R                  US      $ U R                  US      R                  USS 5      $ )a¯  Get a member with its name or path.

This method is part of the producer API:
you can use it safely while building Griffe trees
(for example in Griffe extensions).

Members will be looked up in declared members only, not inherited ones.

Parameters:
    key: The name or path of the member.

Examples:
    >>> foo = griffe_object["foo"]
    >>> bar = griffe_object["path.to.bar"]
    >>> bar = griffe_object[("path", "to", "bar")]
r&   r   N)r    r'   ÚmembersÚ
get_memberr)   s      r   r/   ÚGetMembersMixin.get_member;   sO   € ô" ˜3“ˆÜˆu‹:˜‹?Ø—<‘<  a¡Ñ)Ð)Ø�|‰|˜E !™HÑ%×0Ñ0°°q°r°Ó;Ð;r!   © N)r   ústr | Sequence[str]Úreturnr   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r+   r/   Ú__static_attributes__r1   r!   r   r#   r#   "   s   † Ù=ô5÷,<r!   r#   c                  ó,   • \ rS rSrSrSS jrSS jrSrg)ÚDelMembersMixinéT   z2Mixin class to share methods for deleting members.c                óÆ   • [        U5      n[        U5      S:X  a  US   n U R                  U	 gU R
                  US      USS 	 g! [         a    U R                  U	  gf = f)a£  Delete a member with its name or path.

This method is part of the consumer API:
do not use when producing Griffe trees!

Members will be looked up in both declared members and inherited ones,
triggering computation of the latter.

Parameters:
    key: The name or path of the member.

Examples:
    >>> del griffe_object["foo"]
    >>> del griffe_object["path.to.bar"]
    >>> del griffe_object[("path", "to", "qux")]
r&   r   N)r    r'   r.   ÚKeyErrorÚinherited_membersr(   ©r*   r   r   Únames       r   Ú__delitem__ÚDelMembersMixin.__delitem__W   sp   € ô" ˜3“ˆÜˆu‹:˜‹?Ø˜‘8ˆDð1Ø—L‘L Ñ&ð × Ñ   q¡Ñ*¨5°°¨9Ñ5øô ó 1Ø×*Ñ*¨4Ò0ð1ús   ¡A ÁA ÁA c                ó¦   • [        U5      n[        U5      S:X  a  US   nU R                  U	 gU R                  US      R                  USS 5        g)aÁ  Delete a member with its name or path.

This method is part of the producer API:
you can use it safely while building Griffe trees
(for example in Griffe extensions).

Members will be looked up in declared members only, not inherited ones.

Parameters:
    key: The name or path of the member.

Examples:
    >>> griffe_object.del_member("foo")
    >>> griffe_object.del_member("path.to.bar")
    >>> griffe_object.del_member(("path", "to", "qux"))
r&   r   N)r    r'   r.   Ú
del_memberr@   s       r   rE   ÚDelMembersMixin.del_memberr   sN   € ô" ˜3“ˆÜˆu‹:˜‹?Ø˜‘8ˆDØ—‘˜TÑ"à�L‰L˜˜q™Ñ"×-Ñ-¨e°A°B¨iÕ8r!   r1   N)r   r2   r3   ÚNone)r4   r5   r6   r7   r8   rB   rE   r9   r1   r!   r   r;   r;   T   s   † Ù<ô6÷69r!   r;   c                  ó,   • \ rS rSrSrSS jrSS jrSrg)ÚSetMembersMixiné‹   z1Mixin class to share methods for setting members.c                óÊ   • [        U5      n[        U5      S:X  a2  US   nX R                  U'   U R                  (       a  Xl        gXl        gX R                  US      USS '   g)aO  Set a member with its name or path.

This method is part of the consumer API:
do not use when producing Griffe trees!

Parameters:
    key: The name or path of the member.
    value: The member.

Examples:
    >>> griffe_object["foo"] = foo
    >>> griffe_object["path.to.bar"] = bar
    >>> griffe_object[("path", "to", "qux")] = qux
r&   r   N)r    r'   r.   Úis_collectionÚ_modules_collectionÚparent)r*   r   Úvaluer   rA   s        r   Ú__setitem__ÚSetMembersMixin.__setitem__Ž   s\   € ô ˜3“ˆÜˆu‹:˜‹?Ø˜‘8ˆDØ!&�L‰L˜ÑØ×!×!Ø,0Õ)à#•à05�L‰L˜˜q™Ñ" 5¨¨ 9Ò-r!   c                ót  • [        U5      n[        U5      S:X  GaD  US   nX@R                  ;   Ga  U R                  U   nUR                  (       dâ  UR                  (       a’  UR
                  (       d�  UR                  (       dp  [        [        [        [        5         UR                  (       a=  UR                  UR                  :w  a#  [        [        5         [        XR5      nSSS5        SSS5        UR                  R                  5        H!  n[        [        5         X&l        SSS5        M#     X R                  U'   U R"                  (       a  Xl        gXl        gU R                  US      R)                  USS U5        g! , (       d  f       N¨= f! , (       d  f       N±= f! , (       d  f       M©  = f)a›  Set a member with its name or path.

This method is part of the producer API:
you can use it safely while building Griffe trees
(for example in Griffe extensions).

Parameters:
    key: The name or path of the member.
    value: The member.

Examples:
    >>> griffe_object.set_member("foo", foo)
    >>> griffe_object.set_member("path.to.bar", bar)
    >>> griffe_object.set_member(("path", "to", "qux"), qux)
r&   r   N)r    r'   r.   Úis_aliasÚ	is_moduleÚis_namespace_packageÚis_namespace_subpackager   r	   r   r
   Úfilepathr   r   ÚaliasesÚvaluesÚtargetrL   rM   rN   Ú
set_member)r*   r   rO   r   rA   ÚmemberÚaliass          r   r[   ÚSetMembersMixin.set_member¨   s0  € ô  ˜3“ˆÜˆu‹:˜Œ?Ø˜‘8ˆDØ—|‘|Ô#ØŸ™ dÑ+�Ø——ð ×'×'°×1L×1LÐPV×Pn×Pnô &Ô&:Ô<LÔN`ÕaØ$ŸŸ°5·>±>ÀVÇ_Á_Ó3TÜ%-¬jÕ%9Ü,7¸Ó,F E÷ &:÷ bð "(§¡×!6Ñ!6Ö!8˜Ü%Ô&6Õ7Ø+0œL÷ 8Ñ7ñ "9ð "'�L‰L˜ÑØ×!×!Ø,0Õ)à#•à�L‰L˜˜q™Ñ"×-Ñ-¨e°A°B¨i¸Õ?÷ &:Õ%9ú÷ bÕaú÷
 8Ö7ús0   Â;FÃFÃ$FÄ F(Æ
F	ÆFÆ
F%Æ(
F7	r1   N)r   r2   rO   zObject | Aliasr3   rG   )r4   r5   r6   r7   r8   rP   r[   r9   r1   r!   r   rI   rI   ‹   s   † Ù;ô6÷4)@r!   rI   c                  ó>   • \ rS rSrSrSS.S	S jjr\S
S j5       rSrg)ÚSerializationMixinéÔ   z8Mixin class to share methods for de/serializing objects.F)Úfullc               ó@   • SSK Jn  [        R                  " U 4X1S.UD6$ )zÒReturn this object's data as a JSON string.

Parameters:
    full: Whether to return full info, or just base info.
    **kwargs: Additional serialization options passed to encoder.

Returns:
    A JSON string.
r   )ÚJSONEncoder)Úclsrb   )Úgriffe._internal.encodersrd   ÚjsonÚdumps)r*   rb   Úkwargsrd   s       r   Úas_jsonÚSerializationMixin.as_json×   s    € õ 	:ä�zŠz˜$ÐE KÑE¸fÑEÐEr!   c                ó    • SSK Jn  UR                  SU5        [        R                  " U40 UD6n[        X@5      (       d  [        SU  35      eU$ )aR  Create an instance of this class from a JSON string.

Parameters:
    json_string: JSON to decode into Object.
    **kwargs: Additional options passed to decoder.

Returns:
    An Object instance.

Raises:
    TypeError: When the json_string does not represent and object
        of the class from which this classmethod has been called.
r   )Újson_decoderÚobject_hookz$provided JSON object is not of type )rf   rm   Ú
setdefaultrg   Úloadsr   Ú	TypeError)re   Újson_stringri   rm   Úobjs        r   Ú	from_jsonÚSerializationMixin.from_jsonå   sM   € õ 	;à×Ñ˜-¨Ô6Ü�jŠj˜Ñ/¨Ñ/ˆÜ˜#×#Ñ#ÜÐBÀ3À%ÐHÓIÐIØˆ
r!   r1   N)rb   Úboolri   r   r3   r   )re   ztype[_ObjType]rr   r   ri   r   r3   r   )	r4   r5   r6   r7   r8   rj   Úclassmethodrt   r9   r1   r!   r   r`   r`   Ô   s"   † ÙBà&+÷ Fð óó ór!   r`   c                  óD  • \ rS rSrSr\SS j5       r\SS j5       r\SS j5       r\SS j5       r	\SS j5       r
\SS j5       r\SS	 j5       r\SS
 j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       rSrg)ÚObjectAliasMixinéý   zPMixin class to share methods that appear both in objects and aliases, unchanged.c                óp   • U R                   (       a  0 U R                  EU R                  E$ U R                  $ )zxAll members (declared and inherited).

This method is part of the consumer API:
do not use when producing Griffe trees!
)Úis_classr?   r.   ©r*   s    r   r(   ÚObjectAliasMixin.all_members   s/   € ð �=�=Ø=�d×,Ñ,Ð=°·±Ð=Ð=Ø�|‰|Ðr!   c                óª   • U R                   R                  5        VVs0 s H&  u  pUR                  [        R                  L d  M$  X_M(     snn$ s  snnf )zfThe module members.

This method is part of the consumer API:
do not use when producing Griffe trees!
)r(   ÚitemsÚkindr   ÚMODULE©r*   rA   r\   s      r   ÚmodulesÚObjectAliasMixin.modules  sE   € ð 26×1AÑ1A×1GÑ1GÔ1IÔhÒ1I¡ ÈVÏ[É[Ô\`×\gÑ\gÐMg“�’Ñ1IÒhÐhùÓhó   ž#AÁAc                óª   • U R                   R                  5        VVs0 s H&  u  pUR                  [        R                  L d  M$  X_M(     snn$ s  snnf )zeThe class members.

This method is part of the consumer API:
do not use when producing Griffe trees!
)r(   r€   r�   r   ÚCLASSrƒ   s      r   ÚclassesÚObjectAliasMixin.classes  sE   € ð 26×1AÑ1A×1GÑ1GÔ1IÔgÒ1I¡ ÈVÏ[É[Ô\`×\fÑ\fÐMf“�’Ñ1IÒgÐgùÓgr†   c                óª   • U R                   R                  5        VVs0 s H&  u  pUR                  [        R                  L d  M$  X_M(     snn$ s  snnf )zhThe function members.

This method is part of the consumer API:
do not use when producing Griffe trees!
)r(   r€   r�   r   ÚFUNCTIONrƒ   s      r   Ú	functionsÚObjectAliasMixin.functions  sE   € ð 26×1AÑ1A×1GÑ1GÔ1IÔjÒ1I¡ ÈVÏ[É[Ô\`×\iÑ\iÐMi“�’Ñ1IÒjÐjùÓjr†   c                óª   • U R                   R                  5        VVs0 s H&  u  pUR                  [        R                  L d  M$  X_M(     snn$ s  snnf )ziThe attribute members.

This method is part of the consumer API:
do not use when producing Griffe trees!
)r(   r€   r�   r   Ú	ATTRIBUTErƒ   s      r   Ú
attributesÚObjectAliasMixin.attributes&  sE   € ð 26×1AÑ1A×1GÑ1GÔ1IÔkÒ1I¡ ÈVÏ[É[Ô\`×\jÑ\jÐMj“�’Ñ1IÒkÐkùÓkr†   c                óª   • U R                   R                  5        VVs0 s H&  u  pUR                  [        R                  L d  M$  X_M(     snn$ s  snnf )zjThe type alias members.

This method is part of the consumer API:
do not use when producing Griffe trees!
)r(   r€   r�   r   Ú
TYPE_ALIASrƒ   s      r   Útype_aliasesÚObjectAliasMixin.type_aliases/  sE   € ð 26×1AÑ1A×1GÑ1GÔ1IÔlÒ1I¡ ÈVÏ[É[Ô\`×\kÑ\kÐMk“�’Ñ1IÒlÐlùÓlr†   c                óh   • U R                   R                  S5      =(       a    U R                  (       + $ )zGWhether this object/alias is private (starts with `_`) but not special.Ú_)rA   Ú
startswithÚ
is_specialr}   s    r   Ú
is_privateÚObjectAliasMixin.is_private8  s%   € ð �y‰y×#Ñ# CÓ(×@°·±Ô-@Ð@r!   c                ó|   • U R                   R                  S5      =(       a    U R                   R                  S5      $ )z[Whether this object/alias is special ("dunder" attribute/method, starts and end with `__`).Ú__)rA   r™   Úendswithr}   s    r   rš   ÚObjectAliasMixin.is_special=  s-   € ð �y‰y×#Ñ# DÓ)×F¨d¯i©i×.@Ñ.@ÀÓ.FÐFr!   c                óø   • [        U R                  5      =(       a_    U R                  R                  =(       aB    U R                  R	                  S5      =(       a     U R                  R                  S5      (       + $ )zTWhether this object/alias is class-private (starts with `__` and is a class member).rž   )rv   rN   r|   rA   r™   rŸ   r}   s    r   Úis_class_privateÚ!ObjectAliasMixin.is_class_privateB  sT   € ô �—‘Ó×v $§+¡+×"6Ñ"6×v¸4¿9¹9×;OÑ;OÐPTÓ;U×vÐ^b×^gÑ^g×^pÑ^pÐquÓ^vÔZvð	
r!   c                ó€   • [        U R                  5      =(       a#    U R                  U R                  R                  ;   $ )z;Whether this object/alias was imported from another module.)rv   rN   rA   Úimportsr}   s    r   Úis_importedÚObjectAliasMixin.is_importedI  s+   € ô �D—K‘KÓ ×E T§Y¡Y°$·+±+×2EÑ2EÑ%EÐEr!   c                ó  • [        U R                  5      =(       af    U R                  R                  =(       aI    [        U R                  R                  =(       a#    U R                  U R                  R                  ;   5      $ )z<Whether this object/alias is exported (listed in `__all__`).)rv   rN   rT   ÚexportsrA   r}   s    r   Úis_exportedÚObjectAliasMixin.is_exportedN  sX   € ô �—‘Ó÷ OØ—‘×%Ñ%÷Oä�T—[‘[×(Ñ(×M¨T¯Y©Y¸$¿+¹+×:MÑ:MÑ-MÓNð	
r!   c                ó´  • U R                   (       a5  [        U R                  5      (       a  U R                  R                  (       d  gU R                  R                  b#  U R
                  U R                  R                  ;   $ U R
                  R                  S5      (       a  gU R                  =(       d$    U R                  (       + =(       d    U R                  $ )a�  Whether this object/alias is exposed to wildcard imports.

To be exposed to wildcard imports, an object/alias must:

- be available at runtime
- have a module as parent
- be listed in `__all__` if `__all__` is defined
- or not be private (having a name starting with an underscore)

Special case for Griffe trees: a submodule is only exposed if its parent imports it.

Returns:
    True or False.
Fr˜   )	Úruntimerv   rN   rT   r©   rA   r™   rS   r¦   r}   s    r   Úis_wildcard_exposedÚ$ObjectAliasMixin.is_wildcard_exposedW  s�   € ð" �|�|¤D¨¯©×$5Ñ$5¸$¿+¹+×:O×:OØð �;‰;×ÑÑ*Ø—9‘9 §¡× 3Ñ 3Ñ3Ð3ð �9‰9×Ñ ×$Ñ$Øð �}‰}×F D§N¡NÔ 2×F°d×6FÑ6FÐFr!   c                óê  • U R                   b  U R                   $ U R                  (       d2  U R                  (       a!  U R                  R	                  S5      (       d  gU R
                  (       ab  U R
                  R                  (       aG  [        U R
                  R                  5      (       a#  U R                  U R
                  R                  ;   $ U R                  (       a  gU R                  (       a  gg)a¡  Whether this object is considered public.

In modules, developers can mark objects as public thanks to the `__all__` variable.
In classes however, there is no convention or standard to do so.

Therefore, to decide whether an object is public, we follow this algorithm:

- If the object's `public` attribute is set (boolean), return its value.
- If the object is listed in its parent's (a module) `__all__` attribute, it is public.
- If the parent (module) defines `__all__` and the object is not listed in, it is private.
- If the object has a private name, it is private.
- If the object was imported from another module, it is private.
- Otherwise, the object is public.
r˜   TF)
ÚpublicrS   rT   rA   r™   rN   rv   r©   r›   r¦   r}   s    r   Ú	is_publicÚObjectAliasMixin.is_publicw  sŸ   € ð" �;‰;Ñ"Ø—;‘;Ðð �}�} §§¸¿	¹	×8LÑ8LÈS×8QÑ8QØð �;�;˜4Ÿ;™;×0×0´T¸$¿+¹+×:MÑ:M×5NÑ5NØ—9‘9 §¡× 3Ñ 3Ñ3Ð3ð
 �?�?Øð
 ××Øð r!   c                ó,   • [        U R                  5      $ )z"Whether this object is deprecated.)rv   Ú
deprecatedr}   s    r   Úis_deprecatedÚObjectAliasMixin.is_deprecated¤  s   € ô �D—O‘OÓ$Ð$r!   c                ó,   • [        U R                  5      $ )zWhether this object is generic.)rv   Útype_parametersr}   s    r   Ú
is_genericÚObjectAliasMixin.is_genericª  s   € ô �D×(Ñ(Ó)Ð)r!   r1   N)r3   zdict[str, Object | Alias])r3   zdict[str, Module])r3   zdict[str, Class])r3   zdict[str, Function])r3   zdict[str, Attribute])r3   zdict[str, TypeAlias])r3   rv   )r4   r5   r6   r7   r8   Úpropertyr(   r„   r‰   r�   r‘   r•   r›   rš   r¢   r¦   rª   r®   r²   r¶   rº   r9   r1   r!   r   ry   ry   ý   sB  † ÙZàóó ðð óió ðið óhó ðhð ókó ðkð óló ðlð ómó ðmð óAó ðAð óGó ðGð ó
ó ð
ð óFó ðFð ó
ó ð
ð óGó ðGð> ó*ó ð*ðX ó%ó ð%ð
 ó*ó ó*r!   ry   )r   r2   r3   zSequence[str])"Ú
__future__r   rg   Ú
contextlibr   Útypingr   r   r   Úgriffe._internal.enumerationsr   Úgriffe._internal.exceptionsr	   r
   r   Úgriffe._internal.mergerr   Úcollections.abcr   Úgriffe._internal.modelsr   r   r   r   r   r   r   r   r    r#   r;   rI   r`   ry   r1   r!   r   Ú<module>rÅ      s…   ðõ #ã Ý ß .Ñ .å .ß bÑ bÝ /æÝ(çd×dÑdá�:Ó€ô	÷-<ñ -<÷d49ñ 49÷nF@ñ F@÷R&ñ &ôRp*�¨¸ÐJ\õ p*r!   