ó
    ­[jã  ã                  ój  • S SK Jr  S SKrS SKrS SKrS SKJrJrJr  S SK	J
r
Jr  S SKrSSKJrJrJrJrJrJrJr  SSKJrJrJrJrJr  \
" S5      rSS	 jrSS
 jrSS.SS jjr\SS j5       r\SS j5       rSS jrSS jr S S jr!\SS j5       r"\SS j5       r"SS jr"SS jr#S S jr$S!S jr%S"S jr&g)#é    )ÚannotationsN)ÚSequenceÚcastÚoverload)ÚTypeVarÚ	TypeGuardé   )Ú	FileTypesÚFileContentÚRequestFilesÚHttpxFileTypesÚBase64FileInputÚHttpxFileContentÚHttpxRequestFiles)Úis_listÚ
is_mappingÚ
is_tuple_tÚis_mapping_tÚis_sequence_tÚ_Tc                óx   • [        U [        R                  5      =(       d    [        U [        R                  5      $ ©N)Ú
isinstanceÚioÚIOBaseÚosÚPathLike©Úobjs    ÚQ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/landingai_ade/_files.pyÚis_base64_file_inputr!      s#   € Ü�cœ2Ÿ9™9Ó%×E¬°C¼¿¹Ó)EÐEó    c                ó  • [        U [        5      =(       di    [        U [        5      =(       dR    [        U [        5      =(       d;    [        U [        R
                  5      =(       d    [        U [        R                  5      $ r   )r   ÚbytesÚstrÚtupler   r   r   r   r   s    r    Úis_file_contentr'      sY   € ä�3œÓ÷ 	(Ü�cœ3Ó÷	(ä�cœ5Ó!÷	(ô �cœ2Ÿ9™9Ó%÷	(ô �cœ2Ÿ;™;Ó'ðr"   )Úkeyc               óz   • [        U 5      (       d+  Ub  SU S3OSU < S3n[        U S[        U 5       S35      S eg )NzExpected entry at `Ú`zExpected file input `zF to be bytes, an io.IOBase instance, PathLike or a tuple but received zM instead. See https://github.com/landing-ai/ade-python/tree/main#file-uploads)r'   ÚRuntimeErrorÚtype)r   r(   Úprefixs      r    Úassert_is_file_contentr.   '   se   € Ü˜3×ÑØ14±Ð& s e¨1Ñ-ÐH]Ð^aÑ]dÐdeÐFfˆÜØˆhÐ\Ô]aÐbeÓ]fÐ\gð  huð  vó
àð	ð  r"   c                ó   • g r   © ©Úfiless    r    Úto_httpx_filesr3   /   s   € Ø),r"   c                ó   • g r   r0   r1   s    r    r3   r3   3   s   € Ø>Ar"   c                ó8  • U c  g [        U 5      (       a0  U R                  5        VVs0 s H  u  pU[        U5      _M     n nnU $ [        U 5      (       a#  U  VVs/ s H  u  pU[        U5      4PM     n nnU $ [	        S[        U 5       S35      es  snnf s  snnf )NzUnexpected file type input z, expected mapping or sequence)r   ÚitemsÚ_transform_filer   Ú	TypeErrorr,   ©r2   r(   Úfiles      r    r3   r3   7   s›   € Ø�}Øä�E×ÑØ=B¿[¹[¼]ÔKº]±	°�”o dÓ+Ò+¹]ˆÑKð €Lô 
�u×	Ñ	Ù?DÔEºu±)°#�#” tÓ,Ó-¹uˆÑEð €Lô Ð5´d¸5³k°]ÐB`ÐaÓbÐbùó	 LùãEs   ¨BÁBc                ó|  • [        U 5      (       ay  [        U [        R                  5      (       a2  [        R
                  " U 5      nUR                  UR                  5       4$ [        U [        5      (       a  U R                  S5      $ U $ [        U 5      (       a  U S   [        U S   5      /U SS  Q7$ [        S5      e©Núutf-8r   r	   é   zCExpected file types input to be a FileContent type or to be a tuple)r'   r   r   r   ÚpathlibÚPathÚnameÚ
read_bytesr%   Úencoder   Úread_file_contentr8   ©r:   Úpaths     r    r7   r7   E   sž   € Ü�t×ÑÜ�dœBŸK™K×(Ñ(Ü—<’< Ó%ˆDØ—I‘I˜tŸ™Ó0Ð1Ð1ä�dœC× Ñ Ø—;‘;˜wÓ'Ð'àˆä�$×ÑØ�Q‘Ô*¨4°©7Ó3Ð?°d¸1¸2°hÑ?Ð?ä
ÐYÓ
[Ð[r"   c                óØ   • [        U [        R                  5      (       a$  [        R                  " U 5      R                  5       $ [        U [        5      (       a  U R                  S5      $ U $ ©Nr=   )r   r   r   r?   r@   rB   r%   rC   ©r:   s    r    rD   rD   V   sL   € Ü�$œŸ™×$Ñ$Ü�|Š|˜DÓ!×,Ñ,Ó.Ð.Ü�$œ×ÑØ�{‰{˜7Ó#Ð#Ø€Kr"   c              ƒ  ó   #   • g 7fr   r0   r1   s    r    Úasync_to_httpx_filesrK   ^   s   é € Ø58ùó   ‚c              ƒ  ó   #   • g 7fr   r0   r1   s    r    rK   rK   b   s   é € ØJMùrL   c              ƒ  óN  #   • U c  g [        U 5      (       a8  U R                  5        VVs0 s H  u  pU[        U5      I S h  v•N _M     n nnU $ [        U 5      (       a+  U  VVs/ s H  u  pU[        U5      I S h  v•N 4PM     n nnU $ [	        S5      e NSs  snnf  N!s  snnf 7f)NzFUnexpected file type input {type(files)}, expected mapping or sequence)r   r6   Ú_async_transform_filer   r8   r9   s      r    rK   rK   f   s�   é € Ø�}Øä�E×ÑØINÏÉÌÔWÊ¹I¸C�Ô1°$Ó7×7Ò7ÉˆÑWð €Lô 
�u×	Ñ	ÙKPÔQÊ5¹i¸c�#Ô2°4Ó8×8Ó9É5ˆÑQð €Lô Ð`ÓaÐañ	 8ùÓWá8ùÓQùsL   ‚(B%ªBÁBÁBÁ
B%Á$BÁ;BÁ<	BÂB%ÂBÂB%ÂBÂB%c              ƒ  ó¬  #   • [        U 5      (       a�  [        U [        R                  5      (       a:  [        R
                  " U 5      nUR                  UR                  5       I S h  v•N 4$ [        U [        5      (       a  U R                  S5      $ U $ [        U 5      (       a!  U S   [        U S   5      I S h  v•N /U SS  Q7$ [        S5      e Ni N7fr<   )r'   r   r   r   Úanyior@   rA   rB   r%   rC   r   Úasync_read_file_contentr8   rE   s     r    rO   rO   t   s²   é € Ü�t×ÑÜ�dœBŸK™K×(Ñ(Ü—:’:˜dÓ#ˆDØ—I‘I T§_¡_Ó%6×6Ð7Ð7ä�dœC× Ñ Ø—;‘;˜wÓ'Ð'àˆä�$×ÑØ�Q‘Ô6°t¸A±wÓ?×?ÐKÀ$ÀqÀrÀ(ÑKÐKä
ÐYÓ
[Ð[ñ  7ñ @ùs%   ‚A$CÁ&CÁ'ACÂ9CÂ:CÃCc              ƒ  óô   #   • [        U [        R                  5      (       a,  [        R                  " U 5      R                  5       I S h  v•N $ [        U [        5      (       a  U R                  S5      $ U $  N,7frH   )r   r   r   rQ   r@   rB   r%   rC   rI   s    r    rR   rR   …   sW   é € Ü�$œŸ™×$Ñ$Ü—Z’Z Ó%×0Ñ0Ó2×2Ð2ä�$œ×ÑØ�{‰{˜7Ó#Ð#à€Kñ 3ùs   ‚AA8Á	A6Á
-A8c                ó   • [        XS5      $ )a  Copy only the containers along the given paths.

Used to guard against mutation by extract_files without copying the entire structure.
Only dicts and lists that lie on a path are copied; everything else
is returned by reference.

For example, given paths=[["foo", "files", "file"]] and the structure:
    {
        "foo": {
            "bar": {"baz": {}},
            "files": {"file": <content>}
        }
    }
The root dict, "foo", and "files" are copied (they lie on the path).
"bar" and "baz" are returned by reference (off the path).
r   )Ú_deepcopy_with_paths)ÚitemÚpathss     r    Údeepcopy_with_pathsrX   �   s   € ô"   ¨QÓ/Ð/r"   c                óz  • U(       d  U $ [        U 5      (       a–  0 nU H7  nU[        U5      :  d  M  UR                  XB   / 5      R                  U5        M9     U(       d  U $ [	        U 5      nUR                  5        H  u  pgXe;   d  M  [        XV   XrS-   5      XV'   M!     [        [        U5      $ [        U 5      (       aq  U Vs/ s H  oB[        U5      :  d  M  XB   S:X  d  M  UPM!     nnU(       d  [        [        U 5      $ [        [        U  V	s/ s H  n	[        X˜US-   5      PM     sn	5      $ U $ s  snf s  sn	f )Nr	   z<array>)
r   ÚlenÚ
setdefaultÚappendÚdictr6   rU   r   r   r   )
rV   rW   ÚindexÚkey_to_pathsrF   Úresultr(   ÚsubpathsÚarray_pathsÚentrys
             r    rU   rU   £   s  € ÞØˆÜ�$×ÑØ79ˆÛˆDØ”s˜4“yÕ Ø×'Ñ'¨©°RÓ8×?Ñ?ÀÖEñ ö
 ØˆKä�d“ˆØ)×/Ñ/Ö1‰MˆCØ�}Ü2°6±;ÀÐRSÉ)ÓT�“ñ 2ô ”B˜ÓÐÜˆt‡}�}Ù(-Ó`ª ¼¸T»Ñ1B“tÀtÁ{ÐV_ÑG_—t©ˆÐ`ö Üœ˜D“>Ð!Ü”BÑZ^Ó_ÒZ^ÐQVÔ-¨eÀ%È!Á)ÖLÑZ^Ñ_Ó`Ð`Ø€Kùò aùò
 `s   ÃD3ÃD3Ã$D3ÄD8
)r   ÚobjectÚreturnzTypeGuard[Base64FileInput])r   rd   re   zTypeGuard[FileContent])r   rd   r(   z
str | Nonere   ÚNone)r2   rf   re   rf   )r2   r   re   r   )r2   zRequestFiles | Nonere   zHttpxRequestFiles | None)r:   r
   re   r   )r:   r   re   r   )rV   r   rW   úSequence[Sequence[str]]re   r   )rV   r   rW   rg   r^   Úintre   r   )'Ú
__future__r   r   r   r?   Útypingr   r   r   Útyping_extensionsr   r   rQ   Ú_typesr
   r   r   r   r   r   r   Ú_utilsr   r   r   r   r   r   r!   r'   r.   r3   r7   rD   rK   rO   rR   rX   rU   r0   r"   r    Ú<module>rn      s¾   ðÝ "ã 	Û 	Û ß +Ñ +ß 0ã ÷÷ ñ ÷ QÕ PáˆTƒ]€ôFôð >B÷ ð 
Û ,ó 
Ø ,ð 
Û Aó 
Ø Aôô\ô"ð 
Û 8ó 
Ø 8ð 
Û Mó 
Ø Môô\ô"ô0õ(r"   