+
    ÃHàjä  ã                   óš   € R t ^ RIt^ RIt]! ]R4      '       d   ]P                  tR# ]P
                  t]P                  t ! R R]4      tR# )zšBackport of @functools.singledispatchmethod to Python <3.7.

Adapted from https://github.com/ikalnytskyi/singledispatchmethod
removing 2.7 specific code.
NÚsingledispatchmethodc                   óz   a € ] tR t^t o RtV 3R lR ltRV 3R lR lltV 3R lR lt]V 3R	 lR
 l4       t	Rt
V tR# )r   a”  Single-dispatch generic method descriptor.

TODO: Figure out how to type this:

`mypy --strict` returns errors like the following for all decorated methods:
"Untyped decorator makes function "send" untyped."

But this is not a normal function-base decorator, it's a class and it
doesn't have a __call__ method. When decorating the "base" method
__init__ is called, but of course its return type is None.
c                ó`   <€ V ^8„  d   QhRS[ P                  RS[ P                  3,          RR/# )é   Úfunc.ÚreturnN)ÚtypingÚCallableÚAny)ÚformatÚ__classdict__s   "€Ú�/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/50f6b671e3f94b538e344231dfcb664f/venv/lib/python3.14/site-packages/socksio/compat.pyÚ__annotate__Ú!singledispatchmethod.__annotate__!   s,   ø€ ÷ 	ñ 	¡§¡°±f·j±j°Õ!Að 	Àdñ 	ó    c                ó¬   € \        V4      '       g-   \        VR 4      '       g   \        RP                  V4      4      h\	        V4      V n        Wn        R# )Ú__get__z${!r} is not callable or a descriptorN)ÚcallableÚhasattrÚ	TypeErrorr   ÚsingledispatchÚ
dispatcherr   )Úselfr   s   &&r   Ú__init__Úsingledispatchmethod.__init__!   s?   € Ü˜D—>’>¬'°$¸	×*BÒ*BÜÐ F× MÑ MÈdÓ SÓTÐTä,¨TÓ2ˆDŒOØŽIr   Nc                ó  <€ V ^8„  d   QhRS[ P                  RS[ P                  3,          RS[ P                  S[ P                  RS[ P                  3,          ,          RS[ P                  RS[ P                  3,          /# )r   Úcls.Úmethodr   )r   r	   r
   ÚOptional)r   r   s   "€r   r   r   (   se   ø€ ÷ 	>ñ 	>á—‘ ¡f§j¡j Õ1ð	>ñ —O‘O¡F§O¡O°C¹¿¹°OÕ$DÕEð	>ñ �_‰_˜S¡&§*¡*˜_Õ-ñ		>r   c                ó:   € V P                   P                  WR7      # )a~  Register a method on a class for a particular type.

Note in Python <= 3.6 this methods cannot infer the type from the
argument's type annotation, users *must* supply it manually on
decoration, i.e.

@my_method.register(TypeToDispatch)
def _(self, arg: TypeToDispatch) -> None:
    ...

Versus in Python 3.7+:

@my_method.register
def _(self, arg: TypeToDispatch) -> None:
    ...

)r   )r   Úregister)r   r   r   s   &&&r   r    Úsingledispatchmethod.register(   s   € ð4 —?‘?×+Ñ+¨CÐ+Ó=Ð=r   c                óÐ   <€ V ^8„  d   QhRS[ P                  RS[ P                  S[ P                  .S[ P                  3,          RS[ P                  RS[ P                  3,          /# )r   Úobjr   r   .)r   r
   r	   )r   r   s   "€r   r   r   D   sR   ø€ ÷ 	ñ 	Ù—z‘zð	Ù(.¯©¹¿¹¸ÁfÇjÁjÐ8PÕ(Qð	á�_‰_˜S¡&§*¡*˜_Õ-ñ	r   c                ó’   a aa€ R  VVV 3R llpS P                   Vn         S P                  Vn        \        VS P                  4       V# )c                óx   € V ^8„  d   QhR\         P                  R\         P                  R\         P                  /# )r   ÚargsÚkwargsr   ©r   r
   )r   s   "r   r   Ú2singledispatchmethod.__get__.<locals>.__annotate__G   s2   € ÷ Añ AœvŸz™zð A´V·Z±Zð AÄFÇJÁJñ Ar   c                  óŒ   <€ SP                   P                  V ^ ,          P                  4      pVP                  SS4      ! V / VB # )é    )r   ÚdispatchÚ	__class__r   )r&   r'   r   r   r#   r   s   *, €€€r   Ú_methodÚ-singledispatchmethod.__get__.<locals>._methodG   s<   ø€ ØŸ™×1Ñ1°$°qµ'×2CÑ2CÓD�Ø—~‘~ c¨3Ô/°Ð@¸Ñ@Ð@r   )Ú__isabstractmethod__r    Úupdate_wrapperr   )r   r#   r   r.   s   fff r   r   Úsingledispatchmethod.__get__D   s>   ú€ ÷Aò Að ,0×+DÑ+DˆGÔ(Ø#Ÿ}™}ˆGÔÜ˜7 D§I¡IÔ.ØˆNr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r   r   r(   )r   r   s   "€r   r   r   U   s   ø€ ÷ 	Eñ 	E©&¯*©*ñ 	Er   c                ó0   € \        V P                  R R4      # )r0   F)Úgetattrr   )r   s   &r   r0   Ú)singledispatchmethod.__isabstractmethod__T   s   € ä˜4Ÿ9™9Ð&<¸eÓDÐDr   )r   r   )N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r    r   Úpropertyr0   Ú__static_attributes__Ú__classdictcell__)r   s   @r   r   r      s>   ø‡ € ñ
	÷	ð 	÷	>ò 	>÷8	ð 	ð  
÷	Eó 
ö	Er   )r;   Ú	functoolsr   r   r   r1   r   Úobject© r   r   Ú<module>rB      sR   ðñó Û á
ˆ9Ð,×-Ò-Ø$×9Ñ9Òà×-Ñ-€NØ×-Ñ-€NôBE˜vö BEr   