ó
    ­[ju.  ã                  óÊ  • S SK Jr  S SKrS SKrS SKrS SKrS SKJrJrJ	r	J
r
JrJrJrJrJr  S SKJr  S SKJrJr  S SKJr  S SKrSSKJrJrJrJr  \
" S	5      r\
" S
\\S4   S9r\
" S\	\\4   S9r \
" S\\   S9r!\
" S\S\4   S9r"S8S jr#      S9S jr$          S:S jr%S;S jr&S<S jr'S=S jr(S>S jr)S?S jr*S@S jr+SAS jr,SBS jr-SCS jr.SDS jr/SSS.SES  jjr0SFS! jr1SGS" jr2\
" S#5      r3\
" S$5      r4\SHS% j5       r5\SIS& j5       r5\SJS' j5       r5SKS( jr5SLS) jr6SMS* jr7SNS+ jr8SOS, jr9SPS- jr:SQS. jr;SRS/ jr<SSS0 jr=STS1 jr>SUS2 jr?SVS3 jr@S4S5.SWS6 jjrASXS7 jrBg)Yé    )ÚannotationsN)	ÚAnyÚTupleÚMappingÚTypeVarÚCallableÚIterableÚSequenceÚcastÚoverload)ÚPath)ÚdateÚdatetime)Ú	TypeGuardé   )ÚOmitÚNotGivenÚ	FileTypesÚHeadersLikeÚ_TÚ_TupleT.)ÚboundÚ	_MappingTÚ
_SequenceTÚ	CallableTc                óH   • U  VVs/ s H  o  H  o"PM     M     snn$ s  snnf ©N© )ÚtÚsublistÚitems      ÚX/home/mande/repo/quber/.venv/lib/python3.13/site-packages/landingai_ade/_utils/_utils.pyÚflattenr#   !   s"   € Ù !Ô6¢�W«g dŠD©g‰D¡Ò6Ð6ùÓ6s   †c          
     óP   • / nU H  nUR                  [        XSSS95        M     U$ )z¸Recursively extract files from the given dictionary based on specified paths.

A path may look like this ['foo', 'files', '<array>', 'data'].

Note: this mutates the given dictionary.
r   N©ÚindexÚflattened_key)ÚextendÚ_extract_items)ÚqueryÚpathsÚfilesÚpaths       r"   Úextract_filesr.   %   s-   € ð *,€EÛˆØ�‰”^ E°qÈÑMÖNñ à€Ló    c               óÆ  •  X   nUS-  n[        U 5      (       aL   [        S XS   5       5      (       a  U R                  U5      nOX   n Uc  UnO	USU S	3-  n[        UUUUS
9$ [	        U 5      (       a6  US:w  a  / $ [        U  Vs/ s H  n[        UUUUb  US-   OSS
9PM     sn5      $ / $ ! [          a�    [        U 5      (       d  / s $ SSKJn  Uc   e[	        U 5      (       aE  / nU  H9  nU" Xs(       a  US-   OSS9  UR                  US-   [        [        U5      45        M;     Us $ U" XS9  U[        [        U 5      4/s $ f = f! [         a    / s $ f = fs  snf )Nr   )Úassert_is_file_contentz[]Ú )Úkeyé   c              3  ó*   #   • U  H	  oS :H  v •  M     g7f)ú<array>Nr   )Ú.0Úps     r"   Ú	<genexpr>Ú!_extract_items.<locals>.<genexpr>[   s   é € Ð8ª< a˜	–>ª<ùs   ‚Ú[Ú]r%   r6   )Ú
IndexErrorÚis_givenÚ_filesr1   Úis_listÚappendr   r   Úis_dictÚallÚpopÚKeyErrorr)   r#   )	Úobjr-   r&   r'   r3   r1   r,   Úentryr!   s	            r"   r)   r)   8   s°  € ð7Ø‰kˆð, 
ˆQ�J€EÜˆs‡|�|ð	ô Ñ8¨4°©<Ó8×8Ñ8Ø—w‘w˜s“|‘à‘x‘ð Ñ Ø‰Mà˜q   Q˜ZÑ'ˆMÜØØØØ'ñ	
ð 	
ô 
��‰Ø�)ÓØˆIäñ  óò  �Dô ØØØØ:GÑ:S -°$Ò"6ÐY]ô	ñ  ñó

ð 
	
ð €Iøô} ó 7Ü˜�}‰}àŠIõ 	4ð Ñ(Ð(Ð(ä�3�<‰<Ø13ˆEÛ�Ù& uÍ-°-À$Ò2FÐ]_Ò`Ø—‘˜m¨dÑ2´D¼ÀEÓ4JÐKÖLñ ð ŠLá˜sÒ6Ø¤¤Y°Ó 4Ð5Ð6Ò6ð'7ûô< ó 	ð ŠIð		üò(s;   ‚B/ œ*E ÁE ÂEÂ/E	ÃAE	Ä-E	ÅE	ÅEÅEc                ód   • [        U [        5      (       + =(       a    [        U [        5      (       + $ r   )Ú
isinstancer   r   ©rF   s    r"   r>   r>   ‚   s!   € Ü˜#œxÓ(Ô(×F´¸CÄÓ1FÔ-FÐFr/   c                ó"   • [        U [        5      $ r   ©rI   ÚtuplerJ   s    r"   Úis_tuplerN   �   ó   € Ü�cœ5Ó!Ð!r/   c                ó"   • [        U [        5      $ r   rL   rJ   s    r"   Ú
is_tuple_trQ   ”   rO   r/   c                ó"   • [        U [        5      $ r   ©rI   r
   rJ   s    r"   Úis_sequencerT   ˜   ó   € Ü�cœ8Ó$Ð$r/   c                ó"   • [        U [        5      $ r   rS   rJ   s    r"   Úis_sequence_trW   œ   rU   r/   c                ó"   • [        U [        5      $ r   ©rI   r   rJ   s    r"   Ú
is_mappingrZ       ó   € Ü�cœ7Ó#Ð#r/   c                ó"   • [        U [        5      $ r   rY   rJ   s    r"   Úis_mapping_tr]   ¤   r[   r/   c                ó"   • [        U [        5      $ r   )rI   ÚdictrJ   s    r"   rB   rB   ¨   ó   € Ü�cœ4Ó Ð r/   c                ó"   • [        U [        5      $ r   )rI   ÚlistrJ   s    r"   r@   r@   ¬   r`   r/   c                ó"   • [        U [        5      $ r   )rI   r	   rJ   s    r"   Úis_iterablerd   °   rU   r/   z, Úor)ÚdelimÚfinalc               ó¨   • [        U 5      nUS:X  a  gUS:X  a  U S   $ US:X  a  U S    SU SU S    3$ UR                  U S S 5      SU SU S    3-   $ )Nr   r2   r4   r   Ú éÿÿÿÿ)ÚlenÚjoin)Úseqrf   rg   Úsizes       r"   Ú
human_joinro   µ   sv   € Üˆs‹8€DØˆqƒyØàˆqƒyØ�1‰vˆàˆqƒyØ�a‘&�˜˜5˜'  3 q¡6 (Ð+Ð+à�:‰:�c˜#˜2�hÓ A e W¨A¨c°"©g¨YÐ"7Ñ7Ð7r/   c                ó   • SU  S3$ )zOAdd single quotation marks around the given string. Does *not* do any escaping.Ú'r   )Ústrings    r"   Úquoters   Ã   s   € àˆvˆh�aˆ=Ðr/   c                 ó   ^ • SU 4S jjnU$ )a   Decorator to enforce a given set of arguments or variants of arguments are passed to the decorated function.

Useful for enforcing runtime validation of overloaded functions.

Example usage:
```py
@overload
def foo(*, a: str) -> str: ...


@overload
def foo(*, b: bool) -> str: ...


# This enforces the same constraints that a static type checker would
# i.e. that either a or b must be passed to the function
@required_args(["a"], ["b"])
def foo(*, a: str | None = None, b: bool | None = None) -> str: ...
```
c                ó8  >^ ^• [         R                  " T 5      R                  nUR                  5        VVs/ s H/  u  p#UR                  UR
                  UR                  1;   d  M-  UPM1     snnm[        R                  " T 5      SU UU4S jj5       nU$ s  snnf )Nc                 ón  >^• [        5       m[        U 5       H  u  p# TR                  TU   5        M     UR                  5        H  nTR                  U5        M     T H!  n[        U4S jU 5       5      nU(       d  M!    OÝ   [        T5      S:”  aM  [        T VVs/ s H-  nS[        U Vs/ s H  n[        U5      PM     snSS9-   S	-   PM/     snn5      nS
U S3n	Ot[        T5      S:”  d   e[        [        TS   5      T-
  5      n
[        U
5      S:”  a)  S[        U
 Vs/ s H  n[        U5      PM     sn5       3n	OS[        U
S   5       3n	[	        U	5      eT" U 0 UD6$ ! [         a2    [	        TR
                   S[        T5       S[        U 5       S35      S ef = fs  snf s  snnf s  snf )Nz	() takes z argument(s) but z were givenc              3  ó,   >#   • U  H	  oT;   v •  M     g 7fr   r   )r7   ÚparamÚgiven_paramss     €r"   r9   Ú@required_args.<locals>.inner.<locals>.wrapper.<locals>.<genexpr>ù   s   øé € ÐJÂ'¸¨Ö4Â'ùs   ƒr4   Ú(Úand)rg   Ú)z,Missing required arguments; Expected either z arguments to be givenr   zMissing required arguments: zMissing required argument: )ÚsetÚ	enumerateÚaddr=   Ú	TypeErrorÚ__name__rk   ÚkeysrC   ro   rs   rb   )ÚargsÚkwargsÚiÚ_r3   ÚvariantÚmatchesÚargÚ
variationsÚmsgÚmissingry   ÚfuncÚ
positionalÚvariantss              @€€€r"   ÚwrapperÚ-required_args.<locals>.inner.<locals>.wrapperê   sÄ  ù€ ä%(£UˆLÜ! $ž‘�ð Ø ×$Ñ$ Z°¡]Ö3ñ (ð —{‘{–}�Ø× Ñ  Ö%ñ %ó $�ÜÔJÁ'ÓJÓK�ß�7Ùñ $ô
 �x“= 1Ó$Ü!+ÙmuÔvÒmuÐbi˜œzÁÓ*IÂ¸#¬5°®:ÁÑ*IÐQVÑWÑWÐZ]Ô]ÑmuÒvó"�Jð IÈÈÐTjÐk‘Cä˜x›=¨1Ó,Ð,Ð,ô #¤3 x°¡{Ó#3°lÑ#BÓC�GÜ˜7“| aÓ'Ø <¼ZÑ_fÓHgÒ_fÐX[ÌÈsÎÑ_fÑHgÓ=hÐ<iÐj™à ;¼EÀ'È!Á*Ó<MÐ;NÐO˜Ü “nÐ$Ù˜Ð( Ñ(Ð(øô9 "ó  Ü#ØŸ=™=˜/¨´3°z³?Ð2CÐCTÔUXÐY]ÓU^ÐT_Ð_jÐkóàð ð üò +JùÓvùò Ihs)   žE(ÂF,
Â.F'ÃF,
Ä%F2
Å(<F$Æ'F,
)r„   Úobjectr…   r“   Úreturnr“   )	ÚinspectÚ	signatureÚ
parametersÚitemsÚkindÚPOSITIONAL_ONLYÚPOSITIONAL_OR_KEYWORDÚ	functoolsÚwraps)rŽ   ÚparamsÚnamerx   r‘   r�   r�   s   `    @€r"   ÚinnerÚrequired_args.<locals>.innerÞ   s“   ú€ Ü×"Ò" 4Ó(×3Ñ3ˆð  &Ÿ|™|œ~ô
â-‘�Ø�z‰zà×%Ñ%Ø×+Ñ+ðñ÷ Ù-ò
ˆ
ô 
�Š˜Ó	÷!	)ð !	)ó 
ð!	)ðF ˆùó]
s   ·,BÁ'B)rŽ   r   r”   r   r   )r�   r    s   ` r"   Úrequired_argsr¢   È   s   ø€ ÷,0ðd €Lr/   Ú_KÚ_Vc                ó   • g r   r   rJ   s    r"   Ústrip_not_givenr¦     s   € Ø(+r/   c                ó   • g r   r   rJ   s    r"   r¦   r¦     s   € ØFIr/   c                ó   • g r   r   rJ   s    r"   r¦   r¦     s   € Ø,/r/   c                ó²   • U c  g[        U 5      (       d  U $ U R                  5        VVs0 s H  u  p[        U[        5      (       a  M  X_M      snn$ s  snnf )zHRemove all top-level keys where their values are instances of `NotGiven`N)rZ   r˜   rI   r   )rF   r3   Úvalues      r"   r¦   r¦   #  sE   € à
�{Øä�c�?‰?Øˆ
à),¯©¬ÔXª™:˜3¼JÀuÌh×<W‹JˆCŠJ©ÒXÐXùÓXs   ªAÁ	Ac                ó   • [        U SS9$ )Né
   )Úbase)Úint©Úvals    r"   Úcoerce_integerr±   .  s   € Üˆs˜ÑÐr/   c                ó   • [        U 5      $ r   )Úfloatr¯   s    r"   Úcoerce_floatr´   2  s   € Ü�‹:Ðr/   c                ó<   • U S:H  =(       d    U S:H  =(       d    U S:H  $ )NÚtrueÚ1Úonr   r¯   s    r"   Úcoerce_booleanr¹   6  s   € Ø�&‰=×5˜C 3™J×5¨#°©+Ð5r/   c                ó    • U c  g [        U 5      $ r   )r±   r¯   s    r"   Úmaybe_coerce_integerr»   :  ó   € Ø
�{ØÜ˜#ÓÐr/   c                ó    • U c  g [        U 5      $ r   )r´   r¯   s    r"   Úmaybe_coerce_floatr¾   @  s   € Ø
�{ØÜ˜ÓÐr/   c                ó    • U c  g [        U 5      $ r   )r¹   r¯   s    r"   Úmaybe_coerce_booleanrÀ   F  r¼   r/   c                óN   • U R                  U5      (       a  U [        U5      S $ U $ )zPRemove a prefix from a string.

Backport of `str.removeprefix` for Python < 3.9
N)Ú
startswithrk   )rr   Úprefixs     r"   ÚremoveprefixrÄ   L  s+   € ð
 ×Ñ˜× Ñ Ø”c˜&“k�mÐ$Ð$Ø€Mr/   c                óP   • U R                  U5      (       a  U S[        U5      *  $ U $ )zPRemove a suffix from a string.

Backport of `str.removesuffix` for Python < 3.9
N)Úendswithrk   )rr   Úsuffixs     r"   ÚremovesuffixrÈ   V  s+   € ð
 ‡��v×ÑØ�nœ˜V›˜Ð%Ð%Ø€Mr/   c                óx   • [        U 5      R                  5       n[        R                  R	                  U 5      nX!4$ r   )r   Ú
read_bytesÚosr-   Úbasename)r-   ÚcontentsÚ	file_names      r"   Úfile_from_pathrÏ   `  s1   € Ü�D‹z×$Ñ$Ó&€HÜ—‘× Ñ  Ó&€IØÐ Ð r/   c                óª  • UR                  5       n[        U 5      (       aH  U R                  5        H4  u  p4UR                  5       U:X  d  M  [        U[        5      (       d  M2  Us  $    [
        R                  " SS UR                  5       5      nXUR                  5       U4 H  nU R                  U5      nU(       d  M  Us  $    [        SU S35      e)Nz([^\w])(\w)c                ód   • U R                  S5      U R                  S5      R                  5       -   $ )Nr4   r   )ÚgroupÚupper)Úpats    r"   Ú<lambda>Ú%get_required_header.<locals>.<lambda>o  s#   € ¸#¿)¹)ÀA»,ÈÏÉÐSTË×I[ÑI[ÓI]Ò:]r/   zCould not find z header)Úlowerr]   r˜   rI   ÚstrÚreÚsubÚ
capitalizerÓ   ÚgetÚ
ValueError)ÚheadersÚheaderÚlower_headerÚkÚvÚintercaps_headerÚnormalized_headerrª   s           r"   Úget_required_headerrå   f  s²   € Ø—<‘<“>€LÜ�G×Ñà—M‘M–O‰DˆAØ�w‰w‹y˜LÕ(¬Z¸¼3×-?Ó-?Ø’ñ $ô
 —v’v˜nÑ.]Ð_e×_pÑ_pÓ_rÓsÐà$°F·L±L³NÐDTÓUÐØ—‘Ð-Ó.ˆßˆ5ØŠLñ Vô
 � v h¨gÐ6Ó
7Ð7r/   c                 óN   •  [         R                  " 5       $ ! [         a     gf = f)NÚfalse)ÚsniffioÚcurrent_async_libraryÚ	Exceptionr   r/   r"   Úget_async_libraryrë   y  s(   € ðÜ×,Ò,Ó.Ð.øÜó Ùðús   ‚ —
$£$é€   ©Úmaxsizec                óJ   • [         R                  " U S9n[        [        U5      $ )zeA version of functools.lru_cache that retains the type signature
for the wrapped function arguments.
rí   )rœ   Ú	lru_cacher   r   )rî   r‘   s     r"   rð   rð   €  s&   € ô ×!Ò!Øñ€Gô ”�WÓÐr/   c                óš  • [        U 5      (       a8  U R                  5        VVs0 s H  u  p[        U5      [        U5      _M     snn$ [        U 5      (       a<  [	        U [
        [        [        45      (       d  U  Vs/ s H  n[        U5      PM     sn$ [	        U [        [        45      (       a  U R                  5       $ U $ s  snnf s  snf )znTranslates a mapping / sequence recursively in the same fashion
as `pydantic` v2's `model_dump(mode="json")`.
)rZ   r˜   Ú	json_saferd   rI   rØ   ÚbytesÚ	bytearrayr   r   Ú	isoformat)Údatar3   rª   r!   s       r"   rò   rò   Š  s    € ô �$×ÑØCGÇ:Á:Ä<ÔPÂ<±Z°S”	˜#“¤	¨%Ó 0Ò0Á<ÒPÐPä�4×Ñ¤¨D´3¼¼yÐ2I×!JÑ!JÙ,0Ó1ªD D”	˜$–©DÑ1Ð1ä�$œ¤4Ð(×)Ñ)Ø�~‰~ÓÐà€Kùó Qùò 2s   ¤!CÁ=C)r   zIterable[Iterable[_T]]r”   zlist[_T])r*   zMapping[str, object]r+   zSequence[Sequence[str]]r”   úlist[tuple[str, FileTypes]])
rF   r“   r-   úSequence[str]r&   r®   r'   ú
str | Noner”   r÷   )rF   z_T | NotGiven | Omitr”   zTypeGuard[_T])rF   r“   r”   zTypeGuard[tuple[object, ...]])rF   z_TupleT | objectr”   zTypeGuard[_TupleT])rF   r“   r”   zTypeGuard[Sequence[object]])rF   z_SequenceT | objectr”   zTypeGuard[_SequenceT])rF   r“   r”   zTypeGuard[Mapping[str, object]])rF   z_MappingT | objectr”   zTypeGuard[_MappingT])rF   r“   r”   zTypeGuard[dict[object, object]])rF   r“   r”   zTypeGuard[list[object]])rF   r“   r”   zTypeGuard[Iterable[object]])rm   rø   rf   rØ   rg   rØ   r”   rØ   )rr   rØ   r”   rØ   )r�   rø   r”   ú Callable[[CallableT], CallableT])rF   ÚNoner”   rû   )rF   zMapping[_K, _V | NotGiven]r”   zdict[_K, _V])rF   r“   r”   r“   )rF   zobject | Noner”   r“   )r°   rØ   r”   r®   )r°   rØ   r”   r³   )r°   rØ   r”   Úbool)r°   rù   r”   ú
int | None)r°   rù   r”   zfloat | None)r°   rù   r”   zbool | None)rr   rØ   rÃ   rØ   r”   rØ   )rr   rØ   rÇ   rØ   r”   rØ   )r-   rØ   r”   r   )rÞ   r   rß   rØ   r”   rØ   )r”   rØ   )rî   rý   r”   rú   )rö   r“   r”   r“   )CÚ
__future__r   rË   rÙ   r•   rœ   Útypingr   r   r   r   r   r	   r
   r   r   Úpathlibr   r   r   Útyping_extensionsr   rè   Ú_typesr   r   r   r   r   r“   r   rØ   r   r   r   r#   r.   r)   r>   rN   rQ   rT   rW   rZ   r]   rB   r@   rd   ro   rs   r¢   r£   r¤   r¦   r±   r´   r¹   r»   r¾   rÀ   rÄ   rÈ   rÏ   rå   rë   rð   rò   r   r/   r"   Ú<module>r     sÍ  ðÝ "ã 	Û 	Û Û ÷
÷ 
õ 
õ ß #Ý 'ã ç ;Ó ;áˆTƒ]€Ù
�) 5¨°¨Ñ#5Ñ
6€Ù�K w¨s°F¨{Ñ';Ñ<€	Ù�\¨°&Ñ)9Ñ:€
Ù�K x°°S°Ñ'9Ñ:€	ô7ðð  ðð
 #ðð !ôð&GØ	ðGà
ðGð ð	Gð
 ðGð !ôGôTGô"ô"ô%ô%ô$ô$ô!ô!ô%ð
 48Àd÷ 8ôô
HñV ˆTƒ]€ÙˆTƒ]€ð 
Û +ó 
Ø +ð 
Û Ió 
Ø Ið 
Û /ó 
Ø /ôYôôô6ôôôôôô!ô8ô&ð (+÷ õr/   