
    3 d	
                         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mZmZ dZdZd	 ZddefdZddedefdZd ZdS )    N)import_module)Path)NotConfigured)Settings)closest_scrapy_cfg
get_configinit_envSCRAPY_SETTINGS_MODULEdatadirc                      t           j                            d          } | C	 t          |            dS # t          $ r$}t          j        d|  d|            Y d }~nd }~ww xY wt          t                                S )Nr
   Tz%Cannot import scrapy settings module z: )	osenvirongetr   ImportErrorwarningswarnboolr   )scrapy_moduleexcs     4lib/python3.11/site-packages/scrapy/utils/project.pyinside_projectr      s    JNN#;<<M 	-((( 4  	 	 	MNNNNN       	 "$$%%%s   4 
A"AA"defaultreturnc                    t                      st          d          t                      }|                    t          |           r)t          |                    t          |                     }nHt                      }|st          d          t          |          j        dz  	                                }|
                                s|                    d           t          |          S )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     42333
,,C
~~)733 <,g6677'))
 	J   *$y099;;88:: 	q66M    Fpathc                 4   t          |           }|                                s;t                      rt          t                      |           }nt          d|           }|r*|                                s|                    d           t          |          S )z|
    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$   )r+   	createdirpath_objs      r   	data_pathr0   /   s    
 DzzH!! - 	-,..55HHIt,,H %** %t$$$x==r*   c                     t           t          j        vr/t          j                            dd          } t	          |            t                      }t          j                            t                     }|r|                    |d           h dfdt          j                                        D             }|                    |d           |S )NSCRAPY_PROJECTr   r%   )priority>   CHECKPROJECTPYTHON_SHELLSETTINGS_MODULEc                     i | ]=\  }}|                     d           |                    d d          v 2|dd         |>S )SCRAPY_    N)
startswithreplace).0kvvalid_envvarss      r   
<dictcomp>z(get_project_settings.<locals>.<dictcomp>P   sf       Aq<<	"" ()yyB'?'?='P	!""q  r*   )	ENVVARr   r   r   r	   r   	setmoduleitemssetdict)r%   settingssettings_module_pathscrapy_envvarsrA   s       @r   get_project_settingsrJ   ?   s    RZ *..!19==zzH:>>&11 E/)DDD  M   J$$&&  N ^i888Or*   )r   )F)r   r   	importlibr   pathlibr   scrapy.exceptionsr   scrapy.settingsr   scrapy.utils.confr   r   r	   rC   r   r   r$   r)   r0   rJ    r*   r   <module>rQ      s    				  # # # # # #       + + + + + + $ $ $ $ $ $ F F F F F F F F F F	! & & & 3    & C S         r*   