
    ,hG                    >   d dl m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 d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZ d dlmZ d dlmZ d dlmZmZ erd dlmZ  n	 d dl!mZ   e"d        ed       d dlm$Z% d Z&dZ'dZ(dZ)ejT                  dk(  rdZ(nejV                  dk7  r	 d dl,Z, e-e,d      xZ(Z'd Z.d Z/ G d de       Ze(sejV                  dk(  r	 	 	 	 	 	 	 	 	 	 d 	 	 	 d!dZ0ydZ)	 	 	 	 	 	 	 	 	 	 d 	 	 	 d!dZ0y# e#$ r	 d dlmZ  Y w xY w# e#$ r Y bw xY w)"    )annotationsN)IteratorEXTENSION_SUFFIXES)cache_from_source)Path)TYPE_CHECKING)Distribution)	BaseError)	ExtensionLibrary)log)new_compiler)customize_compilerget_config_var)	build_extzCython.Compiler.MainLDSHARED)_config_varsc                f   t         j                  dk(  ret        j                         }	 dt        d<   dt        d<   dt        d<   t	        |        t        j
                          t        j                  |       y t	        |        y # t        j
                          t        j                  |       w xY w)Ndarwinz0gcc -Wl,-x -dynamiclib -undefined dynamic_lookupr   z -dynamiclibCCSHAREDz.dylibSO)sysplatform_CONFIG_VARScopyr   clearupdate)compilertmps     ^/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/setuptools/command/build_ext.py_customize_compiler_for_shlibr"   )   s    
||x !
	% C $ (6L$!)Lx( $8$  $s   &B +B0Fsharedr   TntRTLD_NOWc                    t         r| S dS )N )	have_rtld)ss    r!   if_dlr*   M   s    1!r!    c                 <    t         D ]  } d| v r| c S | dk(  s| c S  y)z;Return the file extension for an abi3-compliant Extension()z.abi3z.pydNr   )suffixs    r!   get_abi3_suffixr.   Q   s0    $ fMvM	
 r+   c                      e Zd ZU ded<   dZdZd ZddZddZddZ	ddZ
dd	Zd
 ZddZd Zd ZddZd ZddZd dZddZd!dZd Zd Zd"ddZd"d#dZd$dZy)%r   r
   distributionFc                    | j                   dc}| _         t        j                  |        || _         |r| j                          yy)z;Build extensions in build directory, then copy if --inplaceFN)inplace
_build_extruncopy_extensions_to_source)selfold_inplaces     r!   r4   zbuild_ext.run`   s;    $(LL%!T\t"**, r+   c                   | j                  |j                        }| j                  |      }|j                  d      }dj	                  |d d       }|j                  |      }t        j                  j	                  |t        j                  j                  |            }t        j                  j	                  | j                  |      }	||	fS )N.)
get_ext_fullnamenameget_ext_filenamesplitjoinget_package_dirospathbasename	build_lib)
r6   build_pyextfullnamefilenamemodpathpackagepackage_dirinplace_fileregular_files
             r!   _get_inplace_equivalentz!build_ext._get_inplace_equivalenth   s    ((2((2..%((73B<(..w7ww||K1A1A(1KLww||DNNH=l++r+   c                j   | j                  d      }| j                  D ]  }| j                  ||      \  }}t        j                  j                  |      s|j                  s| j                  ||| j                         |j                  sn| j                  ||      }| j                  ||d        y )NrE   )levelT)compile)get_finalized_command
extensionsrN   rA   rB   existsoptional	copy_fileverbose_needs_stub_get_equivalent_stub_write_stub_file)r6   rE   rF   rL   rM   inplace_stubs         r!   r5   z#build_ext.copy_extensions_to_sourcer   s    --j9?? 	GC)-)E)EhPS)T&L,
 ww~~l+3<<|\N#88lK%%lC%F	Gr+   c                    t         j                  j                  |      }|j                  j	                  d      \  }}}t         j                  j                  ||       dS Nr9   .py)rA   rB   dirnamer<   
rpartitionr?   )r6   rF   output_filedir__r<   s         r!   rY   zbuild_ext._get_equivalent_stub   sK    ww{+XX((-
1d'',,tT*+3//r+   c              #    K   | j                   sy | j                  d      }| j                  d      j                  xs d}| j                  D ]n  }| j	                  ||      \  }}||f |j
                  s+| j                  ||      }| j                  ||      }t        ||      }t        ||      }	|	|f p y w)NrE   install_libr'   )optimization)r2   rR   optimizerS   rN   rX   rY   _compiled_file_name)
r6   rE   optrF   rL   rM   r[   regular_stubinplace_cacheoutput_caches
             r!   _get_output_mappingzbuild_ext._get_output_mapping   s     ||--j9((7@@FB?? 	4C)-)E)EhPS)T&L,..  $88lK#88lK 3Ls S2<cR#]33!	4s   A4B>7AB>c                   t        j                  d      }|r/t        j                  j                  |j	                  d       |z   }n>t        j                  | |      }t        d      }t        |t              st        d      |}|| j                  v r| j                  |   }t               }|j                  r|r|d t        |        |z   }t        |t              rBt         j                  j!                  |      \  }}| j"                  j%                  |t&              S t(        rQ|j*                  rEt         j                  j	                  |      \  }}t         j                  j                  |d|z         S |S )NSETUPTOOLS_EXT_SUFFIXr9   
EXT_SUFFIXzwConfiguration variable EXT_SUFFIX not found for this platform and environment variable SETUPTOOLS_EXT_SUFFIX is missingzdl-)rA   getenvrB   r?   r>   r3   r=   r   
isinstancestrOSErrorext_mapr.   py_limited_apilenr   splitextshlib_compilerlibrary_filenamelibtype	use_stubs_links_to_dynamic)	r6   rG   so_extrH   
ext_suffixrF   abi3_suffixfnds	            r!   r=   zbuild_ext.get_ext_filename   s2   23ww||X^^C%89FBH!224BH'5Jj#.P   Ft||#,,x(C)+K!!k#Ns6{l3kA#w'''**84C**;;BHHs44h/2ww||Aurz22r+   c                f    t        j                  |        d | _        g | _        i | _        d| _        y )NF)r3   initialize_optionsry   shlibsru   editable_moder6   s    r!   r   zbuild_ext.initialize_options   s.    %%d+""r+   c                   t        j                  |        | j                  xs g | _        | j                  | j                         | j                  D cg c]  }t	        |t
              s| c}| _        | j                  r| j                          | j                  D ]"  }| j                  |j                        |_
        $ | j                  D ]j  }|j                  }|| j                  |<   || j                  |j                  d      d   <   | j                  xr | j                  |      xs d}|xr t        xr t	        |t
               }||_        ||_        | j#                  |      x}|_        t&        j(                  j+                  t&        j(                  j-                  | j.                  |            }|r)||j0                  vr|j0                  j3                  |       |st        s$t&        j4                  |j6                  vsB|j6                  j3                  t&        j4                         m | j8                  rd| _        y y c c}w )Nr9   r:   FT)r3   finalize_optionsrS   check_extensions_listrr   r   r   setup_shlib_compilerr;   r<   
_full_nameru   r>   links_to_dynamicr|   r}   rX   r=   
_file_namerA   rB   r_   r?   rD   library_dirsappendcurdirruntime_library_dirsr   r2   )r6   rF   rG   ltdnsrH   libdirs          r!   r   zbuild_ext.finalize_options   s   ##D)///R""4??3&*ooRsC9QsR;;%%'?? 	=C!22388<CN	=?? 	;C~~H%(DLL" 58DLL,R01++<$"7"7"<ECCC:c7+C'CB$'C! CO(,(=(=h(GGHs~WW__RWW\\$..(%KLFvS%5%55  ''/yRYYc6N6N%N((//		:#	;& DL 1 Ss   I*Ic                   t        | j                  | j                  | j                        x}| _        t        |       | j                  |j                  | j                         | j                  &| j                  D ]  \  }}|j                  ||        | j                  "| j                  D ]  }|j                  |        | j                  |j                  | j                         | j                  |j                  | j                         | j                   |j#                  | j                          | j$                  |j'                  | j$                         t(        j+                  |      |_        y )N)r   dry_runforce)r   r   r   r   ry   r"   include_dirsset_include_dirsdefinedefine_macroundefundefine_macro	librariesset_librariesr   set_library_dirsrpathset_runtime_library_dirslink_objectsset_link_objectslink_shared_object__get__)r6   r   r<   valuemacros        r!   r   zbuild_ext.setup_shlib_compiler   s<   )5]]DLL

*
 	
4& 	&h/(%%d&7&78;;"#{{ 3e%%dE23::! /''./>>%""4>>2(%%d&7&78::!--djj9(%%d&7&78 '9&@&@&J#r+   c                f    t        |t              r|j                  S t        j                  | |      S N)rr   r   export_symbolsr3   get_export_symbols)r6   rF   s     r!   r   zbuild_ext.get_export_symbols   s+    c7#%%%,,T377r+   c                D   |j                          | j                  }	 t        |t              r| j                  | _        t        j                  | |       |j                  r-| j                  d      j                  }| j                  ||       || _        y # || _        w xY w)NrE   )_convert_pyx_sources_to_langr   rr   r   ry   r3   build_extensionrX   rR   rD   
write_stub)r6   rF   	_compilerrD   s       r!   r   zbuild_ext.build_extension  s}    ((*MM		&#w' $ 3 3&&tS1 66zBLL		3/%DMIDMs   A0B 	Bc                   t         j                  | j                  D cg c]  }|j                   c}      dj	                  |j                  j                  d      dd dgz         t        fd|j                  D              S c c}w )z?Return true if 'ext' links to a dynamic lib in the same packager9   Nr:   r'   c              3  ,   K   | ]  }|z   v   y wr    ).0libnamelibnamespkgs     r!   	<genexpr>z-build_ext.links_to_dynamic.<locals>.<genexpr>  s     J3=H,Js   )dictfromkeysr   r   r?   r>   anyr   )r6   rF   libr   r   s      @@r!   r   zbuild_ext.links_to_dynamic  sl    
 ==DKK!HS#..!HIhhs~~++C0"5<=JCMMJJJ "Is   B
c                P    g t        j                  |       | j                         S r   )r3   get_source_files_get_internal_dependsr   s    r!   r   zbuild_ext.get_source_files  s&    R,,T2RT5O5O5QRRr+   c              #    K   t        | j                  j                  xs t        j                        j                         }d | j                  D        }dd}|D ]y  }t        |      }|j                         r
 ||d       (d|j                  v r
 ||d       @	 ||z  j                  d      }	 |j                  |       |j                          { y
# t        $ r  ||d       Y w xY w# t        $ r  ||d	       Y w xY ww)zAYield ``ext.depends`` that are contained by the project directoryc              3  B   K   | ]  }|j                   D ]  }|   y wr   )depends)r   rF   deps      r!   r   z2build_ext._get_internal_depends.<locals>.<genexpr>  s      I3S[[Ic3I3Is   c                2    t        j                  d| |       y )NzJdependency %s won't be automatically included in the manifest: the path %s)r   info)	orig_pathreasons     r!   skipz-build_ext._get_internal_depends.<locals>.skip   s    HH8	r+   zmust be relativez..zcan't have `..` segmentsT)strictzdoesn't existzmust be inside the project rootN)r   rs   r   rs   returnNone)r   r0   src_rootrA   r   resolverS   is_absolutepartsrt   relative_to
ValueErroras_posix)r6   project_rootr   r   r   rB   resolveds          r!   r   zbuild_ext._get_internal_depends  s    D--66C"))DLLNI$//I	  	"C9D!S,-tzz!S45(4/888E
$$\2
 --/!/	"  S/*  S;<sH   BDC2C0DC-*D,C--D0DDDDc                    | j                   r't        | j                         j                               S t	        t        j                  |       | j                         z         S r   )r2   listget_output_mappingkeyssortedr3   get_outputs_build_ext__get_stubs_outputsr   s    r!   r   zbuild_ext.get_outputsA  sJ    <<//166899j,,T2T5M5M5OOPPr+   c                P    | j                         }t        t        |d             S )z1See :class:`setuptools.commands.build.SubCommand`c                    | d   S )Nr   r   )xs    r!   <lambda>z.build_ext.get_output_mapping.<locals>.<lambda>I  s
    !A$ r+   )key)rm   r   r   )r6   mappings     r!   r   zbuild_ext.get_output_mappingF  s"    **,F7788r+   c                      fd j                   D        }t        j                  | j                               }t	        d |D              S )Nc              3     K   | ]S  }|j                   rEt        j                  j                  j                  g|j
                  j                  d         U yw)r9   N)rX   rA   rB   r?   rD   r   r>   )r   rF   r6   s     r!   r   z0build_ext.__get_stubs_outputs.<locals>.<genexpr>M  sE      
 GGLLD#..*>*>s*CD
s   AAc              3  ,   K   | ]  \  }}||z     y wr   r   )r   basefnexts      r!   r   z0build_ext.__get_stubs_outputs.<locals>.<genexpr>T  s     :[T5D5L:s   )rS   	itertoolsproduct!_build_ext__get_output_extensionsr   )r6   ns_ext_basespairss   `  r!   __get_stubs_outputszbuild_ext.__get_stubs_outputsK  sD    

 !!,0L0L0NO:E:::r+   c              #  \   K   d d | j                  d      j                  rd y y w)Nr^   z.pycrE   z.pyo)rR   rg   r   s    r!   __get_output_extensionsz!build_ext.__get_output_extensionsV  s.     %%j1::L ;s   *,c                    t        j                  j                  |g|j                  j	                  d       dz   }| j                  |||       y r]   )rA   rB   r?   r   r>   rZ   )r6   
output_dirrF   rQ   	stub_files        r!   r   zbuild_ext.write_stub\  s?    GGLLHcnn.B.B3.GH5P	ig6r+   c                <   t        j                  d|j                  |       |r-t        j                  j                  |      rt        |dz         | j                  st        |dd      5 }dj                  ddd	t        d
      z   dt        j                  j                  |j                        ddddt        d      dddt        d      dddddt        d      dddg      }|j                  |       d d d        |r| j                  |       y y # 1 sw Y   xY w)Nz writing stub loader for %s to %sz already exists! Please delete.wzutf-8)encoding
zdef __bootstrap__():z-   global __bootstrap__, __file__, __loader__z0   import sys, os, pkg_resources, importlib.utilz, dlz7   __file__ = pkg_resources.resource_filename(__name__,)z   del __bootstrap__z    if '__loader__' in globals():z       del __loader__z#   old_flags = sys.getdlopenflags()z   old_dir = os.getcwd()z   try:z(     os.chdir(os.path.dirname(__file__))z$     sys.setdlopenflags(dl.RTLD_NOW)z3     spec = importlib.util.spec_from_file_location(z#                __name__, __file__)z0     mod = importlib.util.module_from_spec(spec)z!     spec.loader.exec_module(mod)z   finally:z"     sys.setdlopenflags(old_flags)z     os.chdir(old_dir)z__bootstrap__()r'   )r   r   r   rA   rB   rT   r   r   openr?   r*   rC   r   write_compile_and_remove_stub)r6   r   rF   rQ   fcontents         r!   rZ   zbuild_ext._write_stub_file`  s   3S^^YOrww~~i0I(IIJJ||iw7 !1))*CFvV!!#!1!1#..!A DAG*6+?@.>@AI9F7!>?,%-% 0  3!4 )))4 5! !s   +B
DDc                0   ddl m}  ||gdd| j                         | j                  d      j                  }|dkD  r ||g|d| j                         t
        j                  j                  |      r#| j                  st        j                  |       y y y )Nr   )byte_compileT)rg   r   r   re   )	distutils.utilr   r   rR   rg   rA   rB   rT   unlink)r6   r   r   rg   s       r!   r   z"build_ext._compile_and_remove_stub  s|    /i[1D$,,O--m<EEa<!	 77>>)$T\\IIi  .:$r+   N)rF   r   r   ztuple[str, str])r   r   )rF   r   ra   rs   r   rs   )r   zIterator[tuple[str, str]])rG   rs   r   rs   )r   z	list[str])r   zIterator[str])r   zdict[str, str])F)r   rs   rF   r   )r   rs   )__name__
__module____qualname____annotations__r   r2   r4   rN   r5   rY   rm   r=   r   r   r   r   r   r   r   r   r   r   r   r   r   rZ   r   r   r+   r!   r   r   [   s    MG-,G"0
426# >K68
&KS$"LQ
9
	;7 5D!r+   r   c                R    | j                  | j                  |||||||||	|
||       y r   )linkSHARED_LIBRARY)r6   objectsoutput_libnamer   r   r   r   r   debugextra_preargsextra_postargs
build_temptarget_langs                r!   r   r     s=     			 	
r+   staticc                   |J t         j                  j                  |      \  }}t         j                  j                  |      \  }}| j	                  d      j                  d      r|dd  }| j                  |||||       y )Nr   r      )rA   rB   r>   rx   rz   
startswithcreate_static_lib)r6   r	  r
  r   r   r   r   r   r  r  r  r  r  rH   rC   _exts                   r!   r   r     sx    * !!!ww}}^<
H))(3$  %007  |Hw*e[Qr+   )
NNNNNFNNNN)r  boolr   r   )1
__future__r   r   rA   r   collections.abcr   importlib.machineryr   importlib.utilr   rh   pathlibr   typingr	   setuptools.distr
   setuptools.errorsr   setuptools.extensionr   r   	distutilsr   distutils.ccompilerr   distutils.sysconfigr   r   distutils.command.build_extr   r3   Cython.Distutils.build_ext
__import__ImportErrorr   r   r"   r(   r|   r{   r   r<   dlhasattrr*   r.   r   r   r+   r!   <module>r)     sv   "  	 
 $ 2 C    ( ' 3  , BCHF 	)*
 z  =%* 		
<<8IWW_ 'J 77	I
"t!
 t!n	 4 !
 
 

B G !R R 
Rs  HGHT  s$   #D *D DDDD