
    !hE
                        S SK Jr  S SKrS SKrS SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJrJrJr  SrS	rSS
 jrSSS jjrSSS jjrSS jrg)    )annotationsN)import_module)Path)NotConfigured)Settings)closest_scrapy_cfg
get_configinit_envSCRAPY_SETTINGS_MODULEdatadirc                     [         R                  R                  [        5      n U (       a   [	        U 5        g[        [        5       5      $ ! [
         a&  n[        R                  " SU  SU 35         S nAN>S nAff = f)NTz%Cannot import scrapy settings module z: )
osenvirongetENVVARr   ImportErrorwarningswarnboolr   )scrapy_moduleexcs     [/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/scrapy/utils/project.pyinside_projectr      sk    JJNN6*M	-( "$%%  	MM7bN 	s   A 
A;A66A;c                   [        5       (       d  [        S5      e[        5       nUR                  [        U 5      (       a   [        UR                  [        U 5      5      nOB[        5       nU(       d  [        S5      e[        U5      R                  S-  R                  5       nUR                  5       (       d  UR                  SS9  [        U5      $ )zDReturn the current project data dir, creating it if it doesn't existzNot inside a projectz8Unable to find scrapy.cfg file to infer project data dir.scrapyTparents)r   r   r	   
has_optionDATADIR_CFG_SECTIONr   r   r   parentresolveexistsmkdirstr)projectcfgd
scrapy_cfgs       r   project_data_dirr)      s    233
,C
~~)733,g67')
J  *$$y099;88::	q6M    c                   [        U 5      nUR                  5       (       d0  [        5       (       a  [        [        5       U 5      nO[        SU 5      nU(       a$  UR	                  5       (       d  UR                  SS9  [        U5      $ )zp
Return the given path joined with the .scrapy data directory.
If given an absolute path, return it unmodified.
r   Tr   )r   is_absoluter   r)   r"   r#   r$   )path	createdirpath_objs      r   	data_pathr0   1   sh    
 DzH!!,.5HIt,H**t$x=r*   c                    [         [        R                  ;  a+  [        R                  R                  SS5      n [	        U 5        [        5       n[        R                  R                  [         5      nU(       a  UR                  USS9  1 Skn[        R                  R                  5        VVs0 s H;  u  pEUR                  S5      (       d  M  UR                  SS5      U;   d  M5  USS  U_M=     nnnUR                  USS9  U$ s  snnf )	NSCRAPY_PROJECTdefaultr%   )priority>   CHECKPROJECTPYTHON_SHELLSETTINGS_MODULESCRAPY_    )r   r   r   r   r
   r   	setmoduleitems
startswithreplacesetdict)r%   settingssettings_module_pathvalid_envvarskvscrapy_envvarss          r   get_project_settingsrG   A   s    RZZ**..!19=zH::>>&1/)DM JJ$$&&DA<<	" 	'(yyB'?='P 	!"q&   ^i8Os   -DD%
D)returnr   )r3   )r%   r$   rH   r$   )F)r-   zstr | os.PathLike[str]r.   r   rH   r$   )rH   r   )
__future__r   r   r   	importlibr   pathlibr   scrapy.exceptionsr   scrapy.settingsr   scrapy.utils.confr   r	   r
   r   r   r   r)   r0   rG    r*   r   <module>rP      s?    " 	  #  + $ F F	! && r*   