
    3 d                     \   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZm	Z	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  G d d	e j                  Zd
 Zd ZddZd Zd Zd Zd Zd Zd Z ddZ!d Z"d Z#e$dk    r&	  e!              e             dS #  e             w xY wdS )    N)BaseRunSpiderCommandScrapyCommandScrapyHelpFormatter)CrawlerProcess)
UsageError)walk_modules)get_project_settingsinside_project)garbage_collectc                        e Zd Z fdZ xZS )ScrapyArgumentParserc                 f    |d d         dk    rd S t                                          |          S )N   z-:)super_parse_optional)self
arg_string	__class__s     .lib/python3.11/site-packages/scrapy/cmdline.pyr   z$ScrapyArgumentParser._parse_optional   s5    bqb>T! 	4ww&&z222    )__name__
__module____qualname__r   __classcell__)r   s   @r   r   r      s8        3 3 3 3 3 3 3 3 3r   r   c              #     K   t          |           D ]s}t          |                                          D ]O}t          j        |          r9t          |t                    r$|j        |j        k    r|t          t          fvr|V  Ptd S N)
r   varsvaluesinspectisclass
issubclassr   r   r   r   )module_namemoduleobjs      r   _iter_command_classesr%      s       {++  <<&&(( 	 	C$$sM22 Nfo5 /CDD	 				 r   c                     i }t          |           D ]8}|s|j        s-|j                            d          d         } |            ||<   9|S )N.)r%   requires_projectr   split)r#   	inprojectdcmdcmdnames        r   _get_commands_from_moduler/   )   s_    
A$V,,   	C0 	n**3//3GAgJHr   scrapy.commandsc                     i }t          j        |          D ]S}|                                }t          j        |          r |            ||j        <   =t          d|j                   |S )NzInvalid entry point )pkg_resourcesiter_entry_pointsloadr   r    name	Exception)r+   groupcmdsentry_pointr$   s        r   _get_commands_from_entry_pointsr:   2   s|    D$6u== G G  ?3 	G%(SUUD!""E;3CEEFFFKr   c                     t          d|          }|                    t          |                     | d         }|r#|                    t          ||                     |S )Nr0   COMMANDS_MODULE)r/   updater:   )settingsr+   r8   cmds_modules       r   _get_commands_dictr@   =   sc    $%6	BBDKK/	::;;;,-K G-k9EEFFFKr   c                 f    d}| dd          D ]#}|                     d          s| |= |c S |dz  }$d S )Nr      -)
startswith)argviargs      r   _pop_command_namerH   F   sW    	AABBx  ~~c"" 	QJJJ	Q	 r   c                     t           j        }|rt          d| d| d          d           d S t          d| d           d S )NzScrapy z - active project: BOT_NAME
z - no active project
)scrapy__version__print)r>   r+   versions      r   _print_headerrP   O   sa     G 9LLLHZ4HLLLMMMMM 	777788888r   c                    t          | |           t          d           t          d           t          d           t          | |          }t          |                                          D ]-\  }}t          d|dd|                                            .|st                       t          d           t                       t          d           d S )	NzUsage:z$  scrapy <command> [options] [args]
zAvailable commands:z  z<13 zG  [ more ]      More commands available when run from project directoryz:Use "scrapy <command> -h" to see more info about a command)rP   rN   r@   sorteditems
short_desc)r>   r+   r8   r.   cmdclasss        r   _print_commandsrW   X   s    (I&&&	(OOO	
1222	
   h	22D#DJJLL11 : :87888!4!4!6!6889999 YWXXX	GGG	
FGGGGGr   c                 j    t          | |           t          d| d           t          d           d S )NzUnknown command: rK   z&Use "scrapy" to see available commands)rP   rN   )r>   r.   r+   s      r   _print_unknown_commandrY   g   sA    (I&&&	
)g
)
)
)***	
233333r   c                    	  ||i | d S # t           $ rk}t          |          r"|                     t          |                     |j        r|                                  t	          j        d           Y d }~d S d }~ww xY w)Nr   )r   strerror
print_helpsysexit)parserfuncakwes        r   _run_print_helpre   m   s    a2   q66 	!LLQ   < 	 s    
BA A<<Bc                    | t           j        } |7t                      }	 t          j        d         }||d<   n# t
          $ r Y nw xY wt                      }t          ||          }t          |           }|s%t          ||           t          j
        d           n)||vr%t          |||           t          j
        d           ||         }t          t          d| d|                                 d|                                          }|                    |j        d	           ||_        |                    |           |                    | d
d                    \  }}	t+          ||j        |	|           t/          |          |_        t+          |t2          ||	|           t          j
        |j                   d S )NEDITORr   r   zscrapy rR   resolve)formatter_classusageconflict_handlerdescriptioncommand)priorityrB   )args)r^   rE   r	   osenvironKeyErrorr
   r@   rH   rW   r_   rY   r   r   syntax	long_descsetdictdefault_settingsr>   add_optionsparse_known_argsre   process_optionsr   crawler_process_run_commandexitcode)
rE   r>   editorr+   r8   r.   r-   r`   optsro   s
             r   executer   x   s    x ('))	(Z)F "(HX  	 	 	D	
   Ih	22D%%G ),,,		 x)<<<
w-C!+000#**,,00"MMOO	  F S)I>>>CLOOF((d122h(77JD$FC/t<<<(22CFL#tT:::HS\s   8 
AAc                 f    |j         rt          | ||           d S |                     ||           d S r   )profile_run_command_profiledrun)r-   ro   r~   s      r   r{   r{      s>    | c4.....dr   c                 2   |j         r(t          j                            d|j         d           t	                      }t          j                    }|                    dt                      |           |j         r|	                    |j                    d S d S )Nz"scrapy: writing cProfile stats to rK   zcmd.run(args, opts))
r   r^   stderrwritelocalscProfileProfilerunctxglobals
dump_stats)r-   ro   r~   locps        r   r   r      s    | R
PdlPPPQQQ
((CAHH"GIIs333| #	T\"""""# #r   __main__)r0   )NN)%argparser   r   rp   r^   r2   rL   scrapy.commandsr   r   r   scrapy.crawlerr   scrapy.exceptionsr   scrapy.utils.miscr   scrapy.utils.projectr	   r
   scrapy.utils.pythonr   ArgumentParserr   r%   r/   r:   r@   rH   rP   rW   rY   re   r   r{   r   r    r   r   <module>r      s      				 



      T T T T T T T T T T ) ) ) ) ) ) ( ( ( ( ( ( * * * * * * E E E E E E E E / / / / / /3 3 3 3 382 3 3 3           9 9 9H H H4 4 4  ' ' ' 'T  # # # z 			
 	 s   
B B)