
    5>qj                        d Z ddlmZ ddlZ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 dd	Z	 	 	 	 	 	 	 	 dd
ZddZy)zALogic that powers autocompletion installed by ``pip completion``.    )annotationsN)Iterable)chain)Any)create_main_parser)commands_dictcreate_commandc            
     	   dt         j                  vryt         j                  j                  d      rt         j                  j                  d      syt         j                  d   j                         dd t	        t         j                  d         } 	 | dz
     }t               }t        t              }g }d}D ]
  }||v s|} n ||dk(  rt        j                  d       |j                  d       xr |d	v }|rd
dlm}  |       }	|j                         }
|	j                  d      D cg c]:  }|j                   j                  |
      r|j                   dd vr|j                   < }}|r'|D ]  }t#        |        t        j                  d       |j                  d       xr |dk(  }|r1t%        |d      D ]  }t#        |        t        j                  d       t'        |      }|j(                  j*                  D ]V  }|j,                  t.        j0                  k7  s!||j2                  |j4                  z   D cg c]  }||j6                  f c}z  }X d| dz
   D cg c]  }|j                  d      d
    }}|D cg c]  \  }}||vs||f }}}|D cg c]  \  }}|j                  |      s||f }}}t9        | |j(                  j*                        }|rt%        ||      }|D cg c]  }|d
f }}|D ]'  }|d
   }|d   r|d
   dd dk(  r|dz  }t#        |       ) t;        fd|j=                         D              s8|j=                         D ]  }|j                  |      st#        |       ! n|j>                  D cg c]  }|j@                   }}|jC                  |j@                         tE        jF                  |      }|j                  d      rB|D ]<  }|j,                  t.        j0                  k7  s!||j2                  |j4                  z   z  }> n$t9        | |      }|rt        t%        ||            }t#        djI                  |D cg c]  }|j                  |      s| c}             t        j                  d       y# t
        $ r d}Y w xY wc c}w c c}w c c}w c c}}w c c}}w c c}w c c}w c c}w )z:Entry Point for completion of main and subcommand options.PIP_AUTO_COMPLETEN
COMP_WORDS
COMP_CWORD    help-)show	uninstallr   )get_default_environmentT)
local_onlyinstallpath=   z--c              3  &   K   | ]  }|v  
 y wN ).0namecwordss     _/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/pip/_internal/cli/autocompletion.py	<genexpr>zautocomplete.<locals>.<genexpr>o   s     Gd46>Gs    )%osenvirongetsplitint
IndexErrorr   listr   sysexit
startswithpip._internal.metadatar   loweriter_installed_distributionscanonical_nameprintauto_complete_pathsr	   parseroption_list_allr   optparseSUPPRESS_HELP
_long_opts_short_optsnargsget_path_completion_typeanyhandler_mapoption_groupsoption_listappendr   from_iterablejoin)cwordcurrentr3   subcommandsoptionssubcommand_namewordshould_list_installedr   envlcdist	installedshould_list_installablesr   
subcommandoptopt_strx	prev_optsvkcompletion_typepathsoption	opt_labelhandler_nameioptsflattened_optsr   s                                 @r    autocompleter]      s    "**, ::>>,'rzz~~l/KZZ%++-ab1F

<()E#  !F}%KG #'O ;"O
 "f$HHQK$+$6$6s$; ; !
 T
 A
 ! G)+CB  <<<M&&11"5''vabz9 ##I  %  D$K  ""3''HOy,H 	! $+GV< dHHQK#O4
$$44 	Cxx81118;8X-4Wcii( 	 /5Q.CDQWWS\!_D	D(/Ffq!1I3EAq6FF&-Gdag1FAq6GG2--
 'AE-23Tay3G3 	Fq	IayVAYr]d2S 	)	 Gj.D.D.FGG * 6 6 8 (**73,'( (.';';<!<<F&&',,T2c"% D88x5553>>COO#CCKD
 7vunUO"#6w#PQchh;Ha!,,w2GHIJHHQKO  <0
 EFG 4  = IsT   R( 1?R:R?+SS	S	(SS>SS,SS(R76R7c                   |dk  s| |dz
     j                  d      sy|D ]  }|j                  t        j                  k(  r!t	        |      j                  d      D ]g  }| |dz
     j                  d      d   |k(  s!|j                  r,t        d |j                  j                  d      D              sY|j                  c c S   y)aL  Get the type of path completion (``file``, ``dir``, ``path`` or None)

    :param cwords: same as the environmental variable ``COMP_WORDS``
    :param cword: same as the environmental variable ``COMP_CWORD``
    :param opts: The available options to check
    :return: path completion type (``file``, ``dir``, ``path`` or None)
    r   r   N/r   r   c              3  $   K   | ]  }|d v  
 yw))r   filedirNr   )r   rQ   s     r    r!   z+get_path_completion_type.<locals>.<genexpr>   s      *56A00*s   )r,   r   r5   r6   strr&   metavarr;   )r   rB   r[   rO   os        r    r:   r:      s     qyuqy)44S9 '88x---S$ 	'Aeai &&s+A.!3{{c *:=++:K:KC:P* ' ;;&	''     c              #    K   t         j                  j                  |       \  }t         j                  j                  |      }t        j                  |t         j
                        syt         j                  j                        fdt        j                  |      D        }|D ]  }t         j                  j                  ||      }t         j                  j                  t         j                  j                  ||            }|dk7  r$t         j                  j                  |      r| t         j                  j                  |      st         j                  j                  |d        yw)at  If ``completion_type`` is ``file`` or ``path``, list all regular files
    and directories starting with ``current``; otherwise only list directories
    starting with ``current``.

    :param current: The word to be completed
    :param completion_type: path completion type(``file``, ``path`` or ``dir``)
    :return: A generator of regular files and/or directories
    Nc              3     K   | ]5  }t         j                  j                  |      j                        s2| 7 y wr   )r#   r   normcaser,   )r   rQ   filenames     r    r!   z&auto_complete_paths.<locals>.<genexpr>   s2      rww/?/?/B/M/Mh/Ws   3>>rb   r   )r#   r   r&   abspathaccessR_OKri   listdirrA   isfileisdir)	rC   rU   	directorycurrent_path	file_listfrO   	comp_filerj   s	           @r    r2   r2      s      ''--0Ix77??9-L99\277+ww)H::l+I  	.ggll<+GG$$RWW\\)Q%?@	 e#s(;OWW]]3'',,y"--	.s   EE7%E7)returnNone)r   z	list[str]rB   r'   r[   zIterable[Any]rv   z
str | None)rC   rc   rU   rc   rv   zIterable[str])__doc__
__future__r   r5   r#   r*   collections.abcr   	itertoolsr   typingr   pip._internal.cli.main_parserr   pip._internal.commandsr   r	   r]   r:   r2   r   rf   r    <module>r      sT    G "  	 
 $   < @tn!)60.rf   