
    ^h                        S r SSKrSSKrSSKrSSKJr  SSKJr  SSKJ	r	J
r
  SSKrS\S\4S jrS\R                  4S	 jrS
\R"                  SS4S jrS
\R"                  SS4S jrS\4S jr\S:X  a  \R.                  " \" 5       5        gg)zJ
Allows running scripts and modules with Pyccolo instrumentation enabled.
    N)Path)
run_module)ListTypescriptreturnc                     [        U 5      nUR                  R                  5       n[        R                  R                  UR                  5      S   n[        R                  R                  SU5        U$ Nr   )	r   parentas_posixospathsplitextnamesysinsert)r   script_path
script_dirmodule_names       J/home/james-whalen/.local/lib/python3.13/site-packages/pyccolo/__main__.pyget_script_as_moduler      sV    v,K##,,.J''"";#3#34Q7KHHOOAz"    c                      [         R                  " SS9n U R                  SSSS9  U R                  SSS	S
9  U R                  SSSSSS9  U $ )NzPyccolo command line tool.)descriptionr   ?z#Script to run with instrumentation.)nargshelpz-mz--modulez-The module to run, if `script` not specified.)r   z-tz--tracer+z#Tracers to use for instrumentation.T)r   r   required)argparseArgumentParseradd_argument)parsers    r   make_parserr$      so    $$1MNF
2WX
jN   2   Mr   argsc                     U R                   c  U R                  c  [        S5      eU R                   b  U R                  b  [        S5      eg g )Nz-must specify script, either as file or modulez1only one of `script` or `module` may be specified)r   module
ValueError)r%   s    r   validate_argsr)   (   sH    {{t{{2HII{{4;;#:LMM $;r   c                    [        U 5        / nU R                   H(  nUR                  [        R                  " U5      5        M*     U R
                  b  U R
                  nO[        U R                  5      n[        R                  " U Vs/ s H  oDR                  5       PM     sn5         [        U5        S S S 5        g s  snf ! , (       d  f       g = f)N)r)   tracerappendpycresolve_tracerr'   r   r   multi_contextinstancer   )r%   tracers
tracer_refmodule_to_runr+   s        r   runr4   /   s    $*,Gkk
s))*56 "{{,T[[9			GDG&OO-GD	E=! 
F	ED	E	Es   	B>)C
Cc                  F    [        [        5       R                  5       5        gr
   )r4   r$   
parse_args r   r   mainr8   <   s      "#r   __main__)__doc__r    r   r   pathlibr   runpyr   typingr   r   pyccolor-   strr   r!   r$   	Namespacer)   r4   intr8   __name__exitr7   r   r   <module>rD      s     	 
      X,,  N** Nt N
"h   
"T 
"c 
 zHHTV r   