+
    VBiA                        ^ RI t ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RI	t	]P                  ! ]4      t^RIHt  ! R R]4      t ! R R]4      t ! R	 R
]4      t ! R R]4      t ! R R]4      t ! R R]4      t]R 4       tR tR t^ sR tR$R ltR tRtR t R t!R%R lt"R t# ! R R]4      t$R t%R t&R  R! lt'R" t(R# t)R# )&    N)contextmanager)Path)normalise_versionc                   h   a  ] tR t^t o RtRtRt]! 4       3R lt]	R 4       t
]	R 4       tR tRtV tR# )	ModulezGThis represents the module/package that we are going to distribute
    FNc                H   Wn         VP                  R \        P                  4      pW#,          pW#R,           ,          pVR,          V,          pVR,          VR,           ,          p\	        4       pVP                  4       '       d&   W@n        RV n        RV n        VP                  V4       VP                  4       '       d&   WPn        RV n        RV n        VP                  V4       VP                  4       '       d&   W`n        RV n        RV n        VP                  V4       VP                  4       '       d&   Wpn        RV n        RV n        VP                  V4       \        V4      ^8  dM   \        RP                  TRP                  \        V4       U	u. uF  p	\!        V	4      NK  	  up	4      4      4      hV'       g   \        RP                  V4      4      hW P                  ,          V n        R V9   d'   VP%                  R 4      ^ ,          V n        RV n        R	# R	# u up	i )
.z.pysrcT Fz0Multiple files or folders could be module {}: {}, z"No file/folder found for module {}N)namereplaceossepsetis_dirpath
is_packageprefixaddis_filelen
ValueErrorformatjoinsortedstr
source_dir
rpartitionnamespace_package_namein_namespace_package)
selfr   	directoryname_as_pathpkg_dirpy_filesrc_pkg_dirsrc_py_fileexistingps
   &&&       5/usr/lib/python3.14/site-packages/flit_core/common.py__init__Module.__init__   s   	 ||C0*E12%',6%'<+=>5>>I"DODKLL!??I#DODKLL!#I"DODKLL%  #I#DODKLL%x=1Bdii9I(J9IAQ9I(JKL  AHHNOO#kk1$;*.//#*>q*AD'(,D%  )Ks   Hc                d    V P                   '       d   V P                  R ,          # V P                  # )__init__.py)r   r   r"   s   &r+   fileModule.fileC   s$    ???99},,99    c                   V P                   '       dl   V P                  R,          .pR FO  pV P                  V,          P                  4       '       g   K,  VP                  ^ V P                  V,          4       KQ  	  V# V P                  .# )zqFiles which will be parsed to find a version number

Files later in this list take precedence over earlier ones.
r/   )z
version.pyz_version.pyz__version__.py)r   r   r   insert)r"   pathsfilenames   &  r+   version_filesModule.version_filesJ   sk     ???YY./EKII(1133LLDII$89 L LII;r3   c              #    "   R pV P                   '       d   \        P                  ! \        V P                  4      4       Fx  w  r#p\        V4       F6  p\        P                  P                  W%4      pV! V4      '       g   K2  Vx  K8  	  \        V4       Uu. uF  qq! V4      '       g   K  VNK  	  upVR&   Kz  	  R# \        V P                  4      x  R# u upi 5i)zIterate over the files contained in this module.

Yields absolute paths - caller may want to make them relative.
Excludes any __pycache__ and *.pyc files.
c                     \         P                  P                  V 4      pVR 8X  g   VP                  R4      '       d   R# R# )__pycache__z.pycFT)r   r   basenameendswith)r   r   s   & r+   _include#Module.iter_files.<locals>._include_   s2    77##D)D%$--*?*?r3   NNNN)r   r   walkr   r   r   r   )r"   r?   dirpathdirsfilesr1   	full_pathds   &       r+   
iter_filesModule.iter_filesY   s     	 ???(*DII(?$u"5MD "W ;I	**' *
 '-TlBlhqk11lBQ )@ dii.  Cs   A=CCC-C3*C)r!   r   r   r    r   r   r   )__name__
__module____qualname____firstlineno____doc__r!   r    r   r,   propertyr1   r8   rH   __static_attributes____classdictcell____classdict__s   @r+   r   r      sS      !'+v ,-\    ! !r3   r   c                       ] tR t^rtRtR# )ProblemInModule NrJ   rK   rL   rM   rP   rV   r3   r+   rU   rU   r   s    4r3   rU   c                       ] tR t^stRtR# )NoDocstringErrorrV   NrW   rV   r3   r+   rY   rY   s   s    r3   rY   c                       ] tR t^ttRtR# )NoVersionErrorrV   NrW   rV   r3   r+   r[   r[   t       tr3   r[   c                       ] tR t^utRtR# )InvalidVersionrV   NrW   rV   r3   r+   r^   r^   u   r\   r3   r^   c                   ,   a  ] tR t^wt o R tR tRtV tR# )VCSErrorc                    Wn         W n        R # )N)msgr#   )r"   rb   r#   s   &&&r+   r,   VCSError.__init__x   s    "r3   c                Z    V P                   R P                  V P                  4      ,           # )z ({}))rb   r   r#   r0   s   &r+   __str__VCSError.__str__|   s    xx'..888r3   )r#   rb   N)rJ   rK   rL   rM   r,   re   rP   rQ   rR   s   @r+   r`   r`   w   s     #9 9r3   r`   c               #     "   \         P                  P                  R,          p  Rx  V \         P                  n        R#   T \         P                  n        i ; i5i)zePreserve some global state that modules might change at import time.

- Handlers on the root logger.
rA   N)loggingroothandlers)logging_handlerss    r+   _module_load_ctxrl      s=      ||,,Q/1 0 0s   "AA  A AAc                   RpV P                    F  pVP                  R4      ;_uu_ 4       p\        P                  ! VP	                  4       4      pRRR4       XP
                   FY  p\        V4      '       g   K  \        P                  R8  d   VP                  P                  pMVP                  P                  p K  	  K  	  \        P                  ! X4      V3#   + '       g   i     L; i)z^
Return a tuple like (docstring, version) for the given module,
extracted by parsing its AST.
Nrb      )r8   openastparsereadbodyis_version_str_assignmentsysversion_infovaluesget_docstring)targetversiontarget_pathfnodechilds   &     r+   !get_docstring_and_version_via_astr      s    
 G++d##q99QVVX&D $YYE(//##v-#kk//G#kkmmG 	 , T"G++ $#s   %CC-c                    \        V \        P                  \        P                  34      '       g   R# \        P
                  R8  d   \        P                  M\        P                  p\        V P                  V4      '       g   R# \        V \        P                  4      '       d   V P                  3MV P                  pV F9  p\        V\        P                  4      '       g   K%  VP                  R8X  g   K8   R# 	  R# )z<Check if *node* is a simple string assignment to __version__F__version__Tro   )
isinstancers   Assign	AnnAssignrx   ry   ConstantStrrz   r}   targetsNameid)r   constant_typer   r}   s   &   r+   rw   rw      s    dSZZ788$'$4$4$>CLLCGGMdjj-00 *4 ? ?t{{nT\\Gfchh''FII,F  r3   c                v   \         ^,          s \        P                  RV P                  4       ^ RIHpHp R\         ,          pV! W0P                  4      p\        4       ;_uu_ 4        V! V4      pV\        P                  V&    VP                  P                  V4       \        P                  P                  VR4        RRR4       XP                  P                  RR4      pVP                  P                  RR4      pWg3#   \        P                  P                  TR4       i ; i  + '       g   i     Lp; i)z
Return a tuple like (docstring, version) for the given module,
extracted by importing the module and pulling __doc__ & __version__
from it.
Loading module %s)spec_from_file_locationmodule_from_speczflit_core.dummy.import%dNrN   r   )	_import_ilogdebugr1   importlib.utilr   r   rl   rx   modulesloaderexec_modulepop__dict__get)r}   r   r   mod_namespecm	docstringr~   s   &       r+   $get_docstring_and_version_via_importr      s     NIII!6;;/H)I5H"8[[9D			T"
 !"H	,KK##A&KKOOHd+ 
 

y$/Ijjnn]D1G	 KKOOHd+ 
	s$   'D(D D("D%%D((D8	c                   V'       g   / # RV9   pRV9   p\         P                  RV P                  4       \        V 4      w  rEV'       d	   V'       d   V'       d   V'       g   \	        V 4      w  rE/ pV'       dk   V'       d   VP                  4       '       g%   \        RP                  V P                  4      4      hVP                  4       P                  4       ^ ,          VR&   V'       d   \        V4      VR&   V# )z?Load the module/package, get its docstring and __version__
    descriptionr~   r   zmFlit cannot package module without docstring, or empty docstring. Please add a docstring to your module ({}).summary)r   r   r1   r   r   striprY   r   lstrip
splitlinescheck_version)r}   
for_fieldswant_summarywant_versionr   r~   ress   &&     r+   get_info_from_moduler      s     	 !J.L
*LII!6;;/ ;6BIYLA&I	
C)//"3"3">>DfV[[>Q  #))+668;I&w/IJr3   c                    V '       g   \        R4      h\        V \        4      '       g$   \        RP	                  \        V 4      4      4      h\        V 4      p V # )a  
Check whether a given version string match PEP 440, and do normalisation.

Raise InvalidVersion/NoVersionError with relevant information if
version is invalid.

Log a warning if the version is not canonical with respect to PEP 440.

Returns the version in canonical PEP 440 format.
zgCannot package module without a version string. Please define a `__version__ = "x.y.z"` in your module.z%__version__ must be a string, not {}.)r[   r   r   r^   r   typer   )r~   s   &r+   r   r      sX      W X 	Xgs##D!'W!68 	8  (GNr3   z#!{interpreter}
# -*- coding: utf-8 -*-
import re
import sys
from {module} import {import_name}
if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit({func}())
c                `   RV 9  d   \        RV ,          4      hV P                  R4      w  rVP                  R4       F+  pVP                  4       '       d   K  \        RV,          4      h	  VP                  R4       F+  pVP                  4       '       d   K  \        RV,          4      h	  W3# )ziCheck and parse a 'package.module:func' style entry point specification.

Returns (modulename, funcname)
:z Invalid entry point (no ':'): %rr	   z,Invalid entry point: %r is not an identifierz,Invalid entry point: %r is not a module path)r   splitisidentifier)epmodfuncpieces   &   r+   parse_entry_pointr     s    
 "};b@AAICC!!##KeSTT ! 3!!##KeSTT   9r3   c                   \        V 4       Fv  pVP                  RP                  V4      4       W,          p\        V4       F+  pW4,          pVP                  RP                  WE4      4       K-  	  VP                  R4       Kx  	  R# )z`Write entry_points.txt from a two-level dict

Sorts on keys to ensure results are reproducible.
z[{}]
z{}={}

N)r   writer   )rG   fp
group_namegroupr   vals   &&    r+   write_entry_pointsr   *  si    
 Qi

!!*-.5MD+CHHZ&&t12 " 	  r3   c                     \        V R 4      ;_uu_ 4       p\        P                  ! WP                  4       4      pRRR4       VP	                  4       #   + '       g   i     XP	                  4       # ; i)rn   N)rr   hashlibnewru   	hexdigest)r   	algorithmr   hs   &&  r+   	hash_filer   7  sK    	dD		QKK	668, 
;;= 
	;;=s   %AA1	c                V    V R,          R,          pV ^@,          '       d
   V^I,          pV# )a  Normalize the permission bits in the st_mode field from stat to 644/755

Popular VCSs only track whether a file is executable or not. The exact
permissions can vary on systems with different umasks. Normalising
to 644 (non executable) or 755 (executable) makes builds more reproducible.
i  irV   )st_modenew_modes   & r+   normalize_file_permissionsr   <  s*     %6)HEOr3   c                      a  ] tR tRt o RtRtRtRtRtRt	Rt
RtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtRtR t R t!R t"R t#R t$]%R	 4       t&R
t'V t(R# )MetadataiI  Nz2.4c                   VP                  4       pVP                  R 4      V n        VP                  R4      V n        VP	                  4        F8  w  r#\        W4      '       g   Q RP                  V4      4       h\        WV4       K:  	  R# )r   r~   z!data does not have attribute '{}'N)copyr   r   r~   itemshasattrr   setattr)r"   datakvs   &&  r+   r,   Metadata.__init__j  sl    yy{HHV$	xx	*JJLDA4##R%H%O%OPQ%RR#DQ !r3   c                B    VP                  4       P                  R R4      # )-_)lowerr   )r"   ns   &&r+   _normalise_field_nameMetadata._normalise_field_names  s    wwy  c**r3   c                    \         P                  ! R V4      pV'       d@   VP                  ^4      pVP                  R4       Uu. uF  qDP	                  4       NK  	  up# R# u upi )\[([^]]*)\],N)researchr   r   r   )r"   reqmatchlist_stritems   &&   r+   _extract_extrasMetadata._extract_extrasv  sO    		.#.{{1~H-5^^C-@A-@TJJL-@AA Bs   A!c                    V P                  V4      pV'       dJ   V Uu. uF  p\        V4      NK  	  ppR P                  V4      p\        P                  ! RRV R2V4      pV# V# u upi )r   r   [])r   normalise_core_metadata_namer   r   sub)r"   r   extrasextranormalised_extrasnormalised_extras_strnormalised_reqs   &&     r+   _normalise_requires_dist!Metadata._normalise_requires_dist~  sq    %%c*RX YRX!=e!DRX Y$(II.?$@!VVNa8M7Na4PRUVN!!J !Zs   A%c                   . ROp. ROpV F=  p\        W P                  V4      4      pVP                  RP                  WE4      4       K?  	  V Fb  p\        W P                  V4      4      pVf   K#  RP	                  VP                  4       4      pVP                  RP                  WE4      4       Kd  	  \        W P                  R4      4      p\        W P                  R4      4      pV'       d"   VP                  RP                  V4      4       M(V'       d!   VP                  RP                  V4      4       V P                   F#  pVP                  RP                  V4      4       K%  	  V P                   F#  p	VP                  R	P                  V	4      4       K%  	  V P                   F4  p
V P                  V
4      pVP                  R
P                  V4      4       K6  	  V P                   F#  pVP                  RP                  V4      4       K%  	  V P                   F.  p\        V4      pVP                  RP                  V4      4       K0  	  V P                  e,   VP                  RV P                  ,           R,           4       R# R# )z.Write out metadata in the email headers formatz{}: {}
Nz	
        zLicense-ExpressionLicensezLicense-Expression: {}
zLicense: {}
zClassifier: {}
zLicense-File: {}
zRequires-Dist: {}
zProject-URL: {}
zProvides-Extra: {}
r   )zMetadata-Versionr   Version)	Summaryz	Home-pageKeywordsAuthorzAuthor-email
MaintainerzMaintainer-emailzRequires-PythonzDescription-Content-Type)getattrr   r   r   r   r   classifierslicense_filesrequires_distr   project_urlsprovides_extrar   r   )r"   r   fieldsoptional_fieldsfieldrz   license_exprlicenseclsfrr1   r   r   urlr   normalised_extras   &&             r+   write_metadata_fileMetadata.write_metadata_file  s   



 ED"<"<U"CDEHH[''56  %ED"<"<U"CDE 
 %))%*:*:*<=++E9: % t%?%?@T%UV$ : :9 EFHH077EFHH%,,W56%%EHH(//67 & &&DHH*11$78 ' %%C!::3?NHH+22>BC & $$CHH)0056 % ((E;EBHH,334DEF ) 'HHUT---56 (r3   c                    V P                   ;'       g    RP                  R4       F#  p\        P                  ! RV4      '       g   K"   R# 	  R# )z:Return True if Requires-Python indicates Python 2 support.r   r   z^\s*(>=?|~=|===?)?\s*[3-9]FT)requires_pythonr   r   r   )r"   parts   & r+   supports_py2Metadata.supports_py2  sA     ))//R66s;Dyy6== < r3   )r   r~   rV   ))rJ   rK   rL   rM   r   	home_pageauthorauthor_email
maintainermaintainer_emailr  license_expressionr   keywordsdownload_urlr  description_content_typeplatformsupported_platformr   providesrequires	obsoletesr   provides_distr   obsoletes_distrequires_externalr  r   dynamicmetadata_versionr,   r   r   r   r
  rO   r  rP   rQ   rR   s   @r+   r   r   I  s     GIFLJGKHLO#HKHHILMMNNMG +;7z  r3   r   c                     R V P                   RV P                   ./pVP                  \        WP                  4      4       VP                  VP                  4       \        V4      # )r   r  )r   updater   dynamic_metadatametadatar   )moduleini_infomd_dicts   && r+   make_metadatar+    sO    v{{J>GNN'0I0IJKNN8$$%Gr3   c                N    \         P                  ! RRV 4      P                  4       # )z?Normalise a project or extra name (as in PEP 503, also PEP 685)[-_.]+r   )r   r   r   )r   s   &r+   r   r     s    66)S$'--//r3   c                <    V ^8  d   QhR\         R\         R\         /# )   r   r~   return)r   )r   s   "r+   __annotate__r1    s!     4 4c 4C 4C 4r3   c                    \         P                  ! RRV \         P                  R7      P                  4       p\	        V4      V8X  g   Q hRV9  g   Q R4       hRP                  W!4      # )zNormalizes a name and a PEP 440 version

The resulting string is valid as dist-info folder name
and as first part of a wheel filename

See https://packaging.python.org/specifications/binary-distribution-format/#escaping-and-unicode
r-  r   )flagsr   u'   Normalized versions can’t have dashesz{}-{})r   r   UNICODEr   r   r   )r   r~   normalized_names   && r+   normalize_dist_namer6    s[     ffYTDJJLO!W,,,gHHH>>/33r3   c                &    \        W4      R,           # )z-Get the correct name of the .dist-info folderz
.dist-info)r6  )distributionr~   s   &&r+   dist_info_namer9    s    |5DDr3   c              #    "   V f   R# \         P                  ! V 4       Fa  w  rp\        V4       F&  p\         P                  P	                  W4      pVx  K(  	  \        V4       Uu. uF  qfR8w  g   K  VNK  	  upVR&   Kc  	  R# u upi 5i)zIterate over the files in the given data directory.

Yields paths prefixed with data_directory - caller may want to make them
relative to that. Excludes any __pycache__ subdirectories.
Nr<   rA   )r   rB   r   r   r   )data_directoryrC   rD   rE   r1   rF   rG   s   &      r+   walk_data_dirr<    sx       " 7u5MDW3IO " %TlAl=.@11lAQ !8
 Bs   A%B'B4B:B))r~   r   )sha256)*rs   
contextlibr   r   rh   r   rx   pathlibr   r   	getLoggerrJ   r   	versionnor   objectr   r   rU   rY   r[   r^   	Exceptionr`   rl   r   rw   r   r   r   r   script_templater   r   r   r   r   r+  r   r6  r9  r<  rV   r3   r+   <module>rE     s    
 %   	 
  	! (a!V a!F (j ' - - +_ + +_ +9y 9 	1 	1,(" 	<!F0	$
Bv BJ0
4E
Br3   