Ë
    éÿæi®+  ã                   ó2  — d dl Z d dlZd dlZd dlZd dlZddlmZ ddlmZ ddlm	Z	 e j                  dk\  rd dlZd„ Znd dlZd„ Ze j                  d	k\  rej                  Zn G d
„ dej"                  «      Z G d„ de«      ZdZd„ Zdad„ Zd„ Zdd„Zd„ Zd„ Zy)é    Né   )Ú__version_verifier_modules__)Úffiplatform)ÚVerificationError)é   r   c                  ó<   — t         j                  j                  d d  S ©N)Ú	importlibÚ	machineryÚEXTENSION_SUFFIXES© ó    úb/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/cffi/verifier.pyÚ_extension_suffixesr      s   € Ü×"Ñ"×5Ñ5±aÐ8Ð8r   c                  óŠ   — t        j                  «       D � ��cg c]  \  } }}|t         j                  k(  r| ‘Œ c}}} S c c}}} w r	   )ÚimpÚget_suffixesÚC_EXTENSION)ÚsuffixÚ_Útypes      r   r   r      sB   € Ü.1×.>Ñ.>Ô.@õ ,Ñ.@™?˜6 1 dØœ3Ÿ?™?Ò*ò Ð.@ó ,ð 	,ùô ,s   ™ >©r   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚNativeIOc                 ón   •— t        |t        «      r|j                  d«      }t        t        | �  |«       y )NÚascii)Ú
isinstanceÚunicodeÚencodeÚsuperr   Úwrite)ÚselfÚsÚ	__class__s     €r   r!   zNativeIO.write   s*   ø€ Ü˜!œWÔ%Ø—H‘H˜WÓ%�Ü”(˜DÑ'¨Õ*r   )Ú__name__Ú
__module__Ú__qualname__r!   Ú__classcell__)r$   s   @r   r   r      s   ø„ ÷	+ð 	+r   r   c                   óf   — e Zd Z	 	 	 dd„Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zdd„Zd„ Zd„ Zy)ÚVerifierNc                 óÌ  — |j                   j                  r"t        d|j                   j                  ›�«      ‚|| _        || _        |st        j                  |«      }t        ||«      } || «      | _        | j                  j                  |«       |	| _
        | j                  ||
«      | _        |r|�rt        d«      ‚dj                  dt        j                   d d z  t"        |g|j$                  z   «      }t        j                   dk\  r|j'                  d«      }t)        t+        j,                  |dd d…   «      d	z  «      }|j/                  d
«      j1                  d«      }t)        t+        j,                  |dd d…   «      d	z  «      }|j/                  d«      j1                  d«      }d|›d| j                  j2                  ›|›|›�}t5        «       d   }|xs
 t7        «       | _        t:        j<                  j                  | j8                  ||z   «      | _        t:        j<                  j                  | j8                  ||z   «      | _         || _!        d| _"        d| _#        y )NzIfeature not supported with ffi.verify(), but only with ffi.set_source(): z)can't specify both 'modulename' and 'tag'Ú z%d.%dé   r   zutf-8r   l   ÿÿ Ú0xÚLr   Ú0Ú_cffi_r   F)$Ú_parserÚ_uses_new_featurer   ÚffiÚpreambler   ÚflattenÚ_locate_engine_classÚ_vengineÚpatch_extension_kwdsÚflagsÚmake_relative_toÚkwdsÚ	TypeErrorÚjoinÚsysÚversion_infor   Ú_cdefsourcesr   ÚhexÚbinasciiÚcrc32ÚlstripÚrstripÚ
_class_keyÚ_get_so_suffixesÚ_caller_dir_pycacheÚtmpdirÚosÚpathÚsourcefilenameÚmodulefilenameÚext_packageÚ_has_sourceÚ_has_module)r"   r4   r5   rJ   Ú
modulenamerO   ÚtagÚforce_generic_engineÚsource_extensionr:   Úrelative_tor<   Úflattened_kwdsÚvengine_classÚkeyÚk1Úk2r   s                     r   Ú__init__zVerifier.__init__    s  € ð �;‰;×(Ò(Ý#à/2¯{©{×/LÒ/LðOóPð Pð ˆŒØ ˆŒÙÜ(×0Ñ0°Ó6ˆNÜ,¨SÐ2FÓGˆÙ% dÓ+ˆŒØ�‰×*Ñ*¨4Ô0ØˆŒ
Ø×)Ñ)¨$°Ó<ˆŒ	áÚÜÐ KÓLÐLà—+‘+˜w¬×)9Ñ)9¸"¸1Ð)=Ñ=Ü;Ø'¨ð9ð "×.Ñ.ñ/ó 0ˆCô ×Ñ 4Ò'Ø—j‘j Ó)�Ü”X—^‘^ C¨¨¨1¨¡IÓ.°Ñ;Ó<ˆBØ—‘˜4“×'Ñ'¨Ó,ˆBÜ”X—^‘^ C¨¨¨1¨¡IÓ.°Ñ;Ó<ˆBØ—‘˜3“×&Ñ& sÓ+‰BÚ.1°4·=±=×3KÒ3KÙ.0±"ð6ˆJä!Ó# AÑ&ˆØÒ5Ô 3Ó 5ˆŒÜ Ÿg™gŸl™l¨4¯;©;¸
ÐEUÑ8UÓVˆÔÜ Ÿg™gŸl™l¨4¯;©;¸
ÀVÑ8KÓLˆÔØ&ˆÔØ ˆÔØ ˆÕr   c                 ó®   — | j                   j                  5  | j                  r|€t        d«      ‚| j	                  |«       ddd«       y# 1 sw Y   yxY w)zkWrite the C source code.  It is produced in 'self.sourcefilename',
        which can be tweaked beforehand.Nzsource code already written)r4   Ú_lockrP   r   Ú_write_source©r"   Úfiles     r   Úwrite_sourcezVerifier.write_sourceI   sD   € ð �X‰X�^‹^Ø×Ò D LÜ'Ø1ó3ð 3à×Ñ˜tÔ$÷	 �^‰^ús   —+AÁAc                 óà   — | j                   j                  5  | j                  rt        d«      ‚| j                  s| j                  «        | j                  «        ddd«       y# 1 sw Y   yxY w)z„Write the C source code (if not done already) and compile it.
        This produces a dynamic link library in 'self.modulefilename'.zmodule already compiledN)r4   r^   rQ   r   rP   r_   Ú_compile_module©r"   s    r   Úcompile_modulezVerifier.compile_moduleR   sO   € ð �X‰X�^‹^Ø×ÒÜ'Ð(AÓBÐBØ×#Ò#Ø×"Ñ"Ô$Ø× Ñ Ô"÷ �^‰^ús   —AA$Á$A-c                 ó"  — | j                   j                  5  | j                  sH| j                  «        | j                  s,| j                  s| j                  «        | j                  «        | j                  «       cddd«       S # 1 sw Y   yxY w)a"  Get a C module from this Verifier instance.
        Returns an instance of a FFILibrary class that behaves like the
        objects returned by ffi.dlopen(), but that delegates all
        operations to the C module.  If necessary, the C code is written
        and compiled first.
        N)r4   r^   rQ   Ú_locate_modulerP   r_   rd   Ú_load_libraryre   s    r   Úload_libraryzVerifier.load_library\   sd   € ð �X‰X�^‹^Ø×#Ò#Ø×#Ñ#Ô%Ø×'Ò'Ø×+Ò+Ø×*Ñ*Ô,Ø×(Ñ(Ô*Ø×%Ñ%Ó'÷ �^Š^ús   —A$BÂBc                 óÎ   — t         j                  j                  | j                  «      }|j	                  dd«      d   }|j                  d«      rt        t        d«      r|d d }|S )NÚ.r   r   Ú_dÚgettotalrefcountéþÿÿÿ)rK   rL   ÚbasenamerN   ÚsplitÚendswithÚhasattrr?   )r"   rp   s     r   Úget_module_namezVerifier.get_module_namel   s]   € Ü—7‘7×#Ñ# D×$7Ñ$7Ó8ˆð —>‘> # qÓ)¨!Ñ,ˆð ×Ñ˜TÔ"¤w¬sÐ4FÔ'GØ  �}ˆHØˆr   c                 óH  — | j                   s;| j                  j                  5  | j                   s| j                  «        d d d «       t	        j
                  | j                  «      }| j                  «       }t	        j                  ||fi | j                  ¤ŽS # 1 sw Y   ŒYxY wr	   )
rP   r4   r^   r_   r   Úmaybe_relative_pathrM   rt   Úget_extensionr<   )r"   Ú
sourcenameÚmodnames      r   rw   zVerifier.get_extensionw   sz   € Ø×ÒØ—‘—“Ø×'Ò'Ø×&Ñ&Ô(÷  ô !×4Ñ4°T×5HÑ5HÓIˆ
Ø×&Ñ&Ó(ˆÜ×(Ñ(¨°WÑJÀÇ	Á	ÑJÐJ÷  �ús   £BÂB!c                 ó.   — | j                   j                  S r	   )r8   Ú_gen_python_modulere   s    r   Úgenerates_python_modulez Verifier.generates_python_module€   s   € Ø�}‰}×/Ñ/Ð/r   c                 óœ  — |rÄt         j                  j                  |«      r¥t         j                  j                  |«      }|j                  «       }t        j
                  D ]c  }||v sŒ||   }t        |t        t        f«      st        d|›d�«      ‚|D �cg c]"  }t         j                  j                  ||«      ‘Œ$ }}|||<   Œe |S c c}w )Nz	keyword 'z' should be a list or tuple)rK   rL   ÚdirnameÚcopyr   ÚLIST_OF_FILE_NAMESr   ÚlistÚtupler=   r>   )r"   r<   rV   r~   rY   ÚlstÚfns          r   r;   zVerifier.make_relative_toƒ   s­   € Ùœ2Ÿ7™7Ÿ?™?¨;Ô7Ü—g‘g—o‘o kÓ2ˆGØ—9‘9“;ˆDÜ"×5Ô5�Ø˜$’;Ø˜s™)�CÜ% c¬D´%¨=Ô9Ý'Ú+.ð)1ó 2ð 2á?BÓC¹s¸œ2Ÿ7™7Ÿ<™<¨°Õ4¸s�CÐCØ #�D˜’Ið 6ð ˆùò Ds   Â'C	c                 óš  — t         j                  j                  | j                  «      sr| j                  r'	 t        | j                  d d dg«      }|j                  }nd }| j                  j                  | j                  «       |t        «       «      }|€y || _        | j                  j                  «        d| _        y # t        $ r Y y w xY w)NÚ__doc__T)rK   rL   ÚisfilerN   rO   Ú
__import__ÚImportErrorÚ__path__r8   Úfind_modulert   rH   Úcollect_typesrQ   )r"   ÚpkgrL   Úfilenames       r   rh   zVerifier._locate_module“   s³   € Ü�w‰w�~‰~˜d×1Ñ1Ô2Ø×ÒðÜ$ T×%5Ñ%5°t¸TÀIÀ;ÓO�Cð —|‘|‘à�Ø—}‘}×0Ñ0°×1EÑ1EÓ1GÈÜ1AÓ1CóEˆHàÐØØ"*ˆDÔØ�‰×#Ñ#Ô%ØˆÕøô #ò Ùðús   ·B> Â>	C
Ã	C
c                 ó–   — || j                   _        	 | j                   j                  «        | j                   `y # | j                   `w xY wr	   )r8   Ú_fÚwrite_source_to_fr`   s     r   Ú_write_source_tozVerifier._write_source_to¦   s8   € Øˆ�‰Ôð	!Ø�M‰M×+Ñ+Ô-à—‘Ñ ø�—‘Ñ ús	   “: ºAc                 ó  — |�| j                  |«       y t        «       }| j                  |«       |j                  «       }t        j                  j                  | j                  «      r4t        | j                  d«      5 }|j                  «       |k(   }d d d «       nd}rEt        | j                  «       t        | j                  d«      5 }|j                  |«       d d d «       d| _        y # 1 sw Y   ŒXxY w# 1 sw Y   ŒxY w)NÚrTÚw)r’   r   ÚgetvaluerK   rL   ÚexistsrM   ÚopenÚreadÚ_ensure_dirr!   rP   )r"   ra   ÚfÚsource_dataÚfpÚneeds_writtens         r   r_   zVerifier._write_source­   sÖ   € ØÐØ×!Ñ! $Õ'ô “
ˆAØ×!Ñ! !Ô$ØŸ*™*›,ˆKô �w‰w�~‰~˜d×1Ñ1Ô2Ü˜$×-Ñ-¨sÔ3°rØ)+¯©«°kÑ)AÐ$B�M÷ 4Ð3ð !%�ñ Ü˜D×/Ñ/Ô0Ü˜$×-Ñ-¨sÔ3°rØ—H‘H˜[Ô)÷ 4ð  $ˆDÕ÷ 4Ð3ú÷ 4Ð3ús   Á?C.ÃC:Ã.C7Ã:Dc                 ó~  — t         j                  j                  | j                  «      }t	        j
                  || j                  «       «      }	 t	        j                  || j                  «      }|s5t        | j                  «       t        j                  || j                  «       d| _        y # t        $ r d}Y ŒLw xY w)NFT)rK   rL   r~   rM   r   Úcompilerw   ÚsamefilerN   ÚOSErrorrš   ÚshutilÚmoverQ   )r"   rJ   ÚoutputfilenameÚsames       r   rd   zVerifier._compile_moduleÆ   s—   € ä—‘—‘ ×!4Ñ!4Ó5ˆÜ$×,Ñ,¨V°T×5GÑ5GÓ5IÓJˆð	Ü×'Ñ'¨¸×8KÑ8KÓLˆDñ Ü˜×+Ñ+Ô,Ü�K‰K˜¨×(;Ñ(;Ô<ØˆÕøô ò 	ØŠDð	ús   Á B. Â.B<Â;B<c                 ó´   — | j                   sJ ‚| j                  �%| j                  j                  | j                  «      S | j                  j                  «       S r	   )rQ   r:   r8   rj   re   s    r   ri   zVerifier._load_libraryÓ   sG   € Ø×ÒÐÐØ�:‰:Ð!Ø—=‘=×-Ñ-¨d¯j©jÓ9Ð9à—=‘=×-Ñ-Ó/Ð/r   )NNNÚ Fú.cNNr	   )r%   r&   r'   r\   rb   rf   rj   rt   rw   r|   r;   rh   r’   r_   rd   ri   r   r   r   r*   r*      sN   „ à>BØ@EØ@Dó'!óR%ò#ò(ò 	òKò0òò  ò&!ó$ò2 ó0r   r*   Fc                 óØ   — t         rd}|s*dt        j                  v rd}n	 dd l}| j
                  |urd}|rddlm} |j                  S ddlm	} |j                  S # t        $ r d}Y ŒCw xY w)NTÚ__pypy__r   Ú?r   )Úvengine_gen)Úvengine_cpy)Ú_FORCE_GENERIC_ENGINEr?   Úbuiltin_module_namesÚ_cffi_backendr‰   Ú_backendr¨   r­   ÚVGenericEnginer®   ÚVCPythonEngine)r4   rT   r±   r­   r®   s        r   r7   r7   Þ   su   € ÝØ#ÐÙØœ×1Ñ1Ñ1Ø#'Ñ ð$Û$ð �|‰| =Ñ0Ø'+Ð$ÙÝ!Ø×)Ñ)Ð)å!Ø×)Ñ)Ð)øô ò $Ø #’ð$ús   ¡A ÁA)Á(A)c                  óf  — t         rt         S t        j                  j                  d«      } | r| S t	        j
                  d«      j                  j                  }t        j                  j                  t        j                  j                  t        j                  j                  |«      d«      «      S )NÚCFFI_TMPDIRr-   Ú__pycache__)Ú_TMPDIRrK   ÚenvironÚgetr?   Ú	_getframeÚf_codeÚco_filenamerL   Úabspathr>   r~   )ÚresultrŽ   s     r   rI   rI   ö   st   € ÝÜˆÜ�Z‰Z�^‰^˜MÓ*€FÙØˆÜ�}‰}˜QÓ×&Ñ&×2Ñ2€HÜ�7‰7�?‰?œ2Ÿ7™7Ÿ<™<¬¯©¯©¸Ó(AØ(ó*ó +ð +r   c                 ó   — | a y)z:Set the temporary directory to use instead of __pycache__.N)r¸   )r~   s    r   Ú
set_tmpdirrÁ      s	   € ð �Gr   c                 ón  — | xs
 t        «       } 	 t        j                  | «      }|rd}nt	        «       d   j                  «       }|D ]•  }|j                  «       j                  d«      sŒ#|j                  «       j                  |«      s |j                  «       j                  d«      sŒb	 t        j                  t        j                  j                  | |«      «       Œ— t        j                  j                  | d«      g}|D ]ƒ  }	 t        j                  |«      D ]h  }t        j                  j                  ||«      }t        j                  j                  |«      r|j                  |«       ŒTt        j                  |«       Œj Œ… y# t        $ r Y yw xY w# t        $ r Y �Œ]w xY w# t        $ r Y Œ±w xY w)z}Clean up the temporary directory by removing all files in it
    called `_cffi_*.{c,so}` as well as the `build` subdirectory.Nr©   r   r1   Úbuild)rI   rK   Úlistdirr¢   rH   ÚlowerÚ
startswithrr   ÚunlinkrL   r>   ÚisdirÚappend)rJ   Úkeep_soÚfilelistr   r„   Ú	clean_dirÚdirs          r   Úcleanup_tmpdirrÎ     s[  € ð Ò,Ô*Ó,€FðÜ—:‘:˜fÓ%ˆñ Ø‰ä!Ó# AÑ&×,Ñ,Ó.ˆÛˆØ�8‰8‹:× Ñ  Õ*Ø—‘“
×#Ñ# FÔ+¨r¯x©x«z×/BÑ/BÀ4Õ/HðÜ—	‘	œ"Ÿ'™'Ÿ,™, v¨rÓ2Õ3ð	 ô —‘—‘˜f gÓ.Ð/€IÛˆð	Ü—j‘j –o�Ü—W‘W—\‘\ # rÓ*�Ü—7‘7—=‘= Ô$Ø×$Ñ$ RÕ(ä—I‘I˜b•Mñ &ñ øô ò Ùðûô ò Úðûô ò 	Ùð	ús6   �F	 Â*3FÄB F(Æ		FÆFÆ	F%Æ$F%Æ(	F4Æ3F4c                  óT   — t        «       } | st        j                  dk(  rdg} | S dg} | S )NÚwin32z.pydz.so)r   r?   Úplatform)Úsuffixess    r   rH   rH   $  s5   € Ü"Ó$€HÙä�<‰<˜7Ò"Ø�xˆHð €Oð �wˆHà€Or   c                 ó²   — t         j                  j                  | «      }|r6t         j                  j                  |«      st        j                  |«       y y y r	   )rK   rL   r~   rÈ   Úmakedirs)rŽ   r~   s     r   rš   rš   /  s9   € Ü�g‰g�o‰o˜hÓ'€GÙ”r—w‘w—}‘} WÔ-Ü
�‰�GÕð .€wr   )NF)r?   rK   rC   r£   Úior¨   r   r   Úerrorr   r@   Úimportlib.machineryr
   r   r   ÚStringIOr   ÚBytesIOÚobjectr*   r¯   r7   r¸   rI   rÁ   rÎ   rH   rš   r   r   r   Ú<module>rÛ      sž   ð÷ %× $Ó $Ý *Ý Ý $à×Ñ�vÒÛó9ó ò,ð
 ×Ñ�tÒØ�{‰{�Hô+�2—:‘:ô +ôz0ˆvô z0ð| Ð ò*ð, €ò+òó
ò>	ór   