
    1yi                        d 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mZ dd	lmZ d
ZefdededefdZ ed      efdededeeef   fd       Zdededeeef   dz  fdZdededeeef   dz  fdZdededeeef   dz  fdZ	 	 d!dededee   dz  deedf   deeef   dz  f
dZdedefdZdedefdZdedee   defdZdededefd Zy)"zIContains all logic related to placing an import within a certain section.    N)Iterable)fnmatch)	lru_cache)Path)sections)DEFAULT_CONFIGConfig)exists_case_sensitiveLOCALFOLDERnameconfigreturnc                      t        | |      d   S )z8Returns the section placement for the given module name.r   )module_with_reasonr   r   s     M/var/www/html/content_weaver/venv/lib/python3.12/site-packages/isort/place.pymoduler      s    dF+A..    i  )maxsizec                     t        | |      xs8 t        | |      xs* t        | |      xs t        | |      xs |j                  dfS )zPReturns the section placement for the given module name alongside the reasoning.z.Default option in Config or universal default.)_forced_separate_local_known_pattern	_src_pathdefault_sectionr   s     r   r   r      s\     	v& 	V$	V$'	V T6"	V ""$TUr   c                     |j                   D ]?  }|}|j                  d      s| d}t        | |      st        | d|z         s7|d| dfc S  y )N*.zMatched forced_separate (z) config value.)forced_separateendswithr   )r   r   r   	path_globs       r   r   r   !   sl    !11 c#	'',*+1-I4#wtS9_'E#'@@QQ`%abbc r   c                 6    | j                  d      rt        dfS y )Nr   zModule name started with a dot.)
startswithLOCALr   s     r   r   r   .   s    s899r   c                     | j                  d      fdt        t              dd      D        }|D ]A  }|j                  D ]0  \  }}||j                  v s|j                  |      s'|d| fc c S  C y )Nr   c              3   F   K   | ]  }d j                  d|         yw)r   N)join).0first_kpartss     r   	<genexpr>z!_known_pattern.<locals>.<genexpr>7   s      _7SXXeHWo6_s   !r   z!Matched configured known pattern )splitrangelenknown_patternsr   match)r   r   module_names_to_checkmodule_name_to_checkpattern	placementr*   s         @r   r   r   5   s    JJsOE_eCPUJXY[]F^_ 5 R"("7"7 	RGYFOO+>R0S!%Fwi#PQQ	RR
 r   	src_pathsprefix.c                    ||j                   }| j                  dd      ^}}g ||}dj                  |      }|D ]  }||z  j                         }	|s/|	j	                         s|j
                  |k(  r|j                         }	|rD||j                  v s"|j                  r*t        |	|j                        rt        |d   ||	f|      c S t        |	      st        |	      st        ||      st        j                  d| dfc S  y )Nr      r   z*Found in one of the configured src_paths: )r6   r-   r'   resolveis_dirr   namespace_packages auto_identify_namespace_packages_is_namespace_packagesupported_extensionsr   
_is_module_is_package_src_path_is_moduler   
FIRSTPARTY)
r   r   r6   r7   root_module_namenested_module
new_prefix	namespacesrc_pathmodule_paths
             r   r   r   @   s    $$	'+zz#q'9$},6,+,J$I c"22;;=k002x}}HX7X"**,K22277)+v7R7RS ]1-v~zRR{#;'"8-=>''+UV^U__`)abb#c& r   pathc                      t        t         j                  d                  xsE t         fdt        j
                  j                  D              xs t        t         dz              S )Nz.pyc              3   d   K   | ]'  }t        t        j                  |                   ) y wN)r
   strwith_suffix)r(   
ext_suffixrJ   s     r   r+   z_is_module.<locals>.<genexpr>f   s.      
 "#d&6&6z&B"CD
s   -0__init__.py)r
   rN   rO   any	importlib	machineryEXTENSION_SUFFIXESrJ   s   `r   r@   r@   c   s_    c$"2"25"9:; 	< 
'11DD
 
	<
 !TM%9!:;r   c                 N    t        t        |             xr | j                         S rM   )r
   rN   r;   rV   s    r   rA   rA   n   s     T+==r   src_extensionsc                    t        |       sy| dz  }|j                         sZ| j                         D cg c]=  }|j                  j	                  d      |v s|j
                  j                         dv r|? }}|ryy|j                  d      5 }|j                  d      }d|vrd|vrd	|vrd
|vr
	 d d d        yd d d        yc c}w # 1 sw Y   yxY w)NFrQ   r   )z	setup.cfgzpyproject.tomlrbi   s7   __import__('pkg_resources').declare_namespace(__name__)s7   __import__("pkg_resources").declare_namespace(__name__)s@   __path__ = __import__('pkgutil').extend_path(__path__, __name__)s@   __path__ = __import__("pkgutil").extend_path(__path__, __name__)T)	rA   existsiterdirsuffixlstripr   loweropenread)rJ   rX   	init_filefilepath	filenamesopen_init_file
file_starts          r   r>   r>   r   s    t}$I !LLN
%%c*n<}}""$(GG 
	 
   ^^D! 
	^',,T2JJR\\NV``W!"W!" 
	 
	 
	 )

	 s   AC#CCrH   module_namec                 p    || j                   k(  xr& | j                         xr t        t        |             S rM   )r   r;   r
   rN   )rH   rg   s     r   rB   rB      s1    x}}$c):c?TUXYaUb?cr   )N )__doc__rS   collections.abcr   r   	functoolsr   pathlibr   isortr   isort.settingsr   r	   isort.utilsr
   r$   rN   r   tupler   r   r   r   r   boolr@   rA   	frozensetr>   rB   ri   r   r   <module>rt      s   O  $     1 - (6 / /f /# /
 43A S & eCQTHo  
3 
 
5c?T3I 
 f sCx4)?  f sCx41G  (, 	 
   ~$  #s(O	 
 38_t FT d >d >t > in  :$ S T r   