
    ,hux                     6   d dl mZmZmZmZ d dlZd dlZd dlZd dlZddl	m
Z
mZ ddlmZmZmZmZmZ ddl
mZmZ ddlmZmZmZmZ ddlmZ d	ej8                  v Zej<                  ad
 Z dZ!dZ"ejF                  ejH                  ejJ                  ejL                  ejN                  ejP                  ejR                  fZ*ejV                  d        Z,ejV                  d        Z- G d de.      Z/ddZ0d Z1 G d de2      Z3 G d de3      Z4 e3       Z5de5_6        d Z7y)    )absolute_importdivisionprint_functionunicode_literalsN   )
completersmy_shlex)USING_PYTHON2strsys_encoding
ensure_strensure_bytes)FilesCompleterSuppressCompleter)IntrospectiveArgumentParseraction_is_satisfiedaction_is_openaction_is_greedy)	shellcode
_ARC_DEBUGc                      t         r@t        r*| D cg c]  }t        |t              rt	        |      n|! } }t        | dt        i y y c c}w )Nfile)_DEBUGr
   
isinstancer   r   printdebug_stream)argsxs     V/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/argcomplete/__init__.pydebugr       sI     KOOQz!S'9LOq@ODO$'<' 
 Ps   $AO   P   c               #      K   t         j                  } t        t        j                  d      t         _        	 d  | t         _        y # | t         _        w xY wwNw)sysstdoutopenosdevnull)r'   s    r   mute_stdoutr+   %   s7     ZZFbjj#&CJ
V
s   4AA AAAc               #   *  K   t         j                  } t        t        j                  d      t         _        	 d  t         j                  j                          | t         _        y # t         j                  j                          | t         _        w xY wwr$   )r&   stderrr(   r)   r*   close)r-   s    r   mute_stderrr/   .   sZ     ZZFbjj#&CJ


 	


s   4BA% *B%+BBc                       e Zd Zy)ArgcompleteExceptionN)__name__
__module____qualname__     r   r1   r1   8   s    r6   r1   c                    t        |       t        j                  | d      d_        t        j                  j                  dd      _        g fd}	 	 j                         }|j                  k(  rdddd fS j                  j                         k\  r/t        d|dj                  j                                ||      S j                  |       # t        $ rp t        dj                   d	j                  j                               j                  j                         k\  r |j                         cY S d
}t#        |      w xY w)NT)posix_ARGCOMPLETE_COMP_WORDBREAKS c                    t        |       z   j                  j                         z
  }t        j                  t
        t        f      rj                  j                  v r|dz  }|t        |       kD  rt        d       j                  |        d} | d | | |d  }}d}j                  $j                  j                  v rj                  }|||j                  fS )Nr   zIn trailing whitespacer:   )leninstreamtellr   stater   bytes
whitespacer    appendquoteslast_wordbreak_pos)wordpoint_in_wordprefixsuffixprequotelexerpointwordss        r   
split_wordzsplit_line.<locals>.split_wordC   s    D	E)ENN,?,?,AAekkC<0U[[EDTDT5TQM3t9$*+LLDn}-tMN/C;;"u{{ell'B{{H
 0H0HHHr6   rE   zsplit, lexer state: '{s}')sz#split (lexer stopped, state: '{s}')zcUnexpected internal state. Please report this bug at https://github.com/kislyuk/argcomplete/issues.)r<   shlexwhitespace_splitr)   environget
wordbreaks	get_tokeneofr=   r>   r    formatr?   rB   
ValueErrortokenr1   )linerK   rM   rE   msgrJ   rL   s    `   @@r   
split_liner[   ;   s?   }D	KKD)E!Ezz~~&DbIEEI( 	0??$Duyy  2r5$..~~""$-fd$?$F$F$F$UV!$''LL   	0&%++'L'S'SV[VaVa'S'bc~~""$-!%++..b*3//	0s    %C# AC# C# #A)EEc                 $    | j                  |      S N
startswith)
completionrG   s     r   default_validatorra   k   s      ((r6   c            	           e Zd ZdZddddd e       dfdZdej                  ddddd e       fdZd Z	d Z
d	 Zd
 Zd Zed        Zd Zd Zd Zd Zd Zd Zd Zy)CompletionFindera   
    Inherit from this class if you wish to override any of the stages below. Otherwise, use
    ``argcomplete.autocomplete()`` directly (it's a convenience instance of this class). It has the same signature as
    :meth:`CompletionFinder.__call__()`.
    NTFc                     || _         || _        || _        |t        }|| _        || _        d| _        i | _        || _        |"t        j                  j                  d      dk7  }|| _        y )NF_ARGCOMPLETE_SUPPRESS_SPACE1)_parseralways_complete_optionsexcludera   	validatorprint_suppressed
completing_display_completionsdefault_completerr)   rQ   rR   append_space)selfargument_parserrh   ri   rj   rk   rn   ro   s           r   __init__zCompletionFinder.__init__t   so    &'>$)I" 0$&!!2::>>*GHCOL(r6   c
           	         | j                  |||||||	       dt        j                  vry	 t        j                  dd      a|	 t        j                  dd      }t        j                  j                  d
d      }
t        |
      d	k7  r#t        dj                  |
              |d	       t        j                  d   }t        t        j                  d         }t        |      }t        ||      \  }}}}}t        t        j                  d         d	z
  }||d }|rC|d   | j                  j                  v r(d|v r$|j!                  |j#                  dd	      d          t        dj                  |      dj                  |      dj                  |      dj                  |      dj                  |      d|       | j%                  ||||      }t        d|       |j'                  |
j)                  |      j+                  t,                     |j/                          t        j/                           |d       y#  t
        j                  aY xY w#  t        d        |d	       Y xY w)a  
        :param argument_parser: The argument parser to autocomplete on
        :type argument_parser: :class:`argparse.ArgumentParser`
        :param always_complete_options:
            Controls the autocompletion of option strings if an option string opening character (normally ``-``) has not
            been entered. If ``True`` (default), both short (``-x``) and long (``--x``) option strings will be
            suggested. If ``False``, no option strings will be suggested. If ``long``, long options and short options
            with no long variant will be suggested. If ``short``, short options and long options with no short variant
            will be suggested.
        :type always_complete_options: boolean or string
        :param exit_method:
            Method used to stop the program after printing completions. Defaults to :meth:`os._exit`. If you want to
            perform a normal exit that calls exit handlers, use :meth:`sys.exit`.
        :type exit_method: callable
        :param exclude: List of strings representing options to be omitted from autocompletion
        :type exclude: iterable
        :param validator:
            Function to filter all completions through before returning (called with two string arguments, completion
            and prefix; return value is evaluated as a boolean)
        :type validator: callable
        :param print_suppressed:
            Whether or not to autocomplete options that have the ``help=argparse.SUPPRESS`` keyword argument set.
        :type print_suppressed: boolean
        :param append_space:
            Whether to append a space to unique matches. The default is ``True``.
        :type append_space: boolean

        .. note::
            If you are not subclassing CompletionFinder to override its behaviors,
            use ``argcomplete.autocomplete()`` directly. It has the same signature as this method.

        Produces tab completions for ``argument_parser``. See module docs for more info.

        Argcomplete only executes actions if their class is known not to have side effects. Custom action classes can be
        added to argcomplete.safe_actions, if their values are wanted in the ``parsed_args`` completer argument, or
        their execution is otherwise desirable.
        )rh   ri   rj   rk   ro   rn   _ARGCOMPLETEN	   r%      wbz)Unable to open fd 8 for writing, quittingr   _ARGCOMPLETE_IFSz%Invalid value for IFS, quitting [{v}])v	COMP_LINE
COMP_POINTr   =z
LINE: {!r}z
POINT: {!r}z
PREQUOTE: {!r}z
PREFIX: {!r}z
SUFFIX: {!r}z
WORDS:z
Returning completions:)rr   r)   rQ   fdopenr   r&   r-   r    rR   r<   rV   intr   r[   rg   prefix_charsrB   split_get_completionswritejoinencoder   flush)rp   rq   rh   exit_methodoutput_streamri   rj   rk   ro   rn   ifs	comp_line
comp_pointcword_prequotecword_prefixcword_suffix
comp_wordsrD   startcompletionss                       r   __call__zCompletionFinder.__call__   s6   P 	o?V`g )<L[g(9 	 	; +	&99Q,L   "		!T 2 jjnn/8s8q=9@@3@GHNJJ{+	L12
y)	U_`ikuUvRlJ@R BJJ~./!3'
LOt||/H/HHST`M`l00a8;<n##I.$$Z0 ''7%%l3%%l3*	& ++JnVhi(+6CHH[188FGAe	&::L
ABAs   H> I >II.c                 `   | j                         }t        j                         }d| _        t        r|D cg c]  }t        |       }}	 t        d|dd         t               5  | j                  j                  |dd  |      }d d d        t        d       d| _        d	|v rd| _        | j                  |||t              }
| j                  |
      }
| j!                  |
||      }
|
S c c}w # 1 sw Y   jxY w# t        $ r*}	t        dt        |	      t        |	      d       Y d }	~	d }	~	ww xY w)
NTzinvoking parser withr   )	namespacezparsed args:z

exceptionzwhile parsing argsFz--)_patch_argument_parserargparse	Namespacerl   r
   r   r    r/   rg   parse_known_argsBaseExceptiontyper   rh   collect_completionsfilter_completionsquote_completions)rp   r   r   r   rD   active_parsersparsed_argsrE   aer   s              r   r   z!CompletionFinder._get_completions   s,   446((*9CD,t,DJD	H(*QR.9 YLL11*QR.K1XY.!$  :+0D(..~{LZ_`--k:,,[.J\]% EY Y  	H-a#a&2FGG	Hs5   C)C: $!C.C: .C73C: :	D- D((D-c                     g | _         g | _        | fd | j                         t        d| j                          t        d| j                         | j                   S )a  
        Since argparse doesn't support much introspection, we monkey-patch it to replace the parse_known_args method and
        all actions with hooks that tell us which action was last taken or about to be taken, and let us have the parser
        figure out which subparsers need to be activated (then recursively monkey-patch those).
        We save all active ArgumentParsers to extract all their possible option names later.
        c                    j                   j                  |        j                  j                  |        t        | t              ry d}t
        rt        |      }t        |t        | j                  fi       | _        | j                  D ]P  }t        |d      r G fdd|j                        }|j                  |_        |j                  |_        ||_        R y )N(MonkeyPatchedIntrospectiveArgumentParser_orig_classc                       e Zd Zd fd	Zy)PCompletionFinder._patch_argument_parser.<locals>.patch.<locals>.IntrospectActionNc                 0   t        d|        t        d||||       t        d| j                         t        d| j                         j                  s| j                  ||||       y t	        | j                  t
        j                        r9t        d        | j                  |d             | j                  ||||       y | j                  t        v r=| j                  sj                  j                  |        | j                  ||||       y y )NzAction stub called onz	args:z	orig class:z	orig callable:)option_stringz:orig class is a subparsers action: patching and running itr   )r    r   _orig_callablerl   
issubclassr   _SubParsersAction_name_parser_mapsafe_actionsoption_stringsvisited_positionalsrB   )rp   parserr   valuesr   	completerpatchs        r   r   zYCompletionFinder._patch_argument_parser.<locals>.patch.<locals>.IntrospectAction.__call__&  s    5t<iFMRot/?/?@0$2E2EF(33 //	6Yf/g'(8(8(:T:TU!"^_!$"7"7q	"BC //	6Yf/g!--=#'#6#6 ) = = D DT J //	6Yf/g	 >r6   r]   )r2   r3   r4   r   )r   r   s   r   IntrospectActionr   %  s	    hr6   r   )r   rB   r   r   r   r
   r@   r   	__class___actionshasattrr   r   r   )r   	classnameactionr   r   r   s       r   r   z6CompletionFinder._patch_argument_parser.<locals>.patch  s    ))008$$++F3&"=>BI!),	#I0KVM]M]/^`bcF // 46=1hv'7'7 h& &,%5%5"(.%#3 74r6   zActive parsers:zVisited positionals:)r   r   rg   r    )rp   r   r   s    @@r   r   z'CompletionFinder._patch_argument_parser  s\     !#% 	'	4R 	dll!4!45$d&>&>?"""r6   c                 &   d }|j                         D ]<  } ||j                  |j                  |      }|s$|j                  | j                  |<   > |j
                  j                         D cg c]  }|j                  |      s| }}|S c c}w )Nc                     | s|r|j                        r|S dS | j                  dd      j                         }dj                  fd|D              S )Nr:   , c              3   F   K   | ]  }|j                        s|  y wr]   r^   ).0r   rG   s     r   	<genexpr>zVCompletionFinder._get_subparser_completions.<locals>.filter_aliases.<locals>.<genexpr>J  s     A!ALL,@AAs   !!)r_   replacer   r   )metavardestrG   r   s     ` r   filter_aliaseszCCompletionFinder._get_subparser_completions.<locals>.filter_aliasesD  sN    #(?tGRG R(..0A88AqAAAr6   )_get_subactionsr   r   helprm   choiceskeysr_   )rp   r   r   r   r   subcmd_with_aliasessubcmdr   s           r   _get_subparser_completionsz+CompletionFinder._get_subparser_completionsC  s    	B ,,. 	MF"0l"["AG))*=>	M
 -3NN,?,?,Ae&VEVEVWcEdvee fs   /BBc                    t        |      dkD  s| j                  du r>|j                  D cg c](  }t        |      j	                  |      st        |      * c}S |j                  D cg c]  }t        |      dkD  st        |       }}|j                  D cg c]  }t        |      dk  st        |       }}| j                  dk(  r|r|S |S | j                  dk(  r|r|S |S g S c c}w c c}w c c}w )Nr   T   longshort)r<   rh   r   r   r_   )rp   r   r   opt	long_opts
short_optss         r   _include_optionsz!CompletionFinder._include_optionsT  s    |q D$@$@D$H/5/D/Dq
SVHbHbcoHpJsOqq060E0EVSTUZ_V	V171F1FX##c(VW-joX
X''61 )99z9))W4!+:::	 rVXs#   C)C))C.=C.C3.C3c           	      H   | j                   j                  |j                  D cg c]>  }|j                  r0dj	                  fd|j                  D              |j
                  g@ c}       g }|j                  D ]  }| j                  sLt        |dd       }t        |t              r|j                         r=|j
                  t        j                  k(  r[| j                  ||      snt        |t        j                        r|| j                  |      z  } |S c c}w )Nr   c              3   h   K   | ])  }t        |      j                        rt        |       + y wr]   )r   r_   )r   r   r   s     r   r   z;CompletionFinder._get_option_completions.<locals>.<genexpr>a  s0      B$Q-22<@ "!} Bs   /2r   )rm   updater   r   r   r   rk   getattrr   r   suppressr   SUPPRESS_action_allowedr   r   )rp   r   r   r   option_completionsr   s     `   r   _get_option_completionsz(CompletionFinder._get_option_completions_  s   !!(( "??'%% hh Bf.C.C B BCI;;P '	(  oo 
	RF((#FK>	i):;	@R@R@T;;("3"33''7fh&@&@A"d&;&;FL&QQ"
	R "!#'s   ADc                 f    |j                   j                  | g       D ]  }||j                  v s y yNFT)_action_conflictsrR   _seen_non_default_actions)r   r   conflict_actions      r   r   z CompletionFinder._action_allowedt  s<      &77;;FBG 	O&"B"BB	 r6   c                 6   t        dj                  t        |j                        |j                               |xr |d   |j                  v }d}|j                  D cg c]  }t        ||      s| }	}|	r/t        |	      dk(  sJ d       t        d|	d   d       i | _        g }n|rd	|v r|j                  d	      \  }}
}n|S d
}|	xs |j                  D ]$  }|j                  s2t        |      rd}|s#t        |      rt        |      st        d|       Bt        d||j                         t        |dd       }|l|j                  :t        |t        j                         s t#        j$                  |j                        }n&t        |t        j                         s| j&                  }|st)        |      r |||||      D cg c]  }| j+                  ||      r| }}|r||z  }t        |t"        j$                        r6| j                  j-                  |D cg c]  }||j.                  g c}       n| j                  j-                  |D cg c]  }|dg c}       nrt        d       t1        d      D ]Y  }|j3                  ||      }| nC| j+                  ||      s,| j                  j-                  |di       |j5                  |       [ |r|D cg c]
  }|d	z   |z    }}t        d|       ' |S c c}w c c}w c c}w c c}w c c}w )NzActive actions (L={l}): {a})lr   r   r:   r   zexpect at most 1 greedy actionzResetting completions becausezmust consume the next argumentr}   FTSkippingzActivating completion forr   )rG   r   r   r   zICompleter is not callable, trying the readline completer protocol insteadi'  zCompletions:)r    rV   r<   active_actionsr   r   rm   	partitionr   r   r   r   r   r   r   r   r   r   ChoicesCompleterrn   callablerj   r   r   rangecompleterB   )rp   r   next_positionalr   r   r   
isoptionaloptional_prefixr   greedy_actions_complete_remaining_positionalsactive_actionr   ccompletions_from_callableinext_completionr`   s                      r   _complete_active_optionz(CompletionFinder._complete_active_option}  s&   +22S9N9N5OSYShSh2ij!Ll1o9L9L&L
%+%:%:^>NqR\>]!^^~&!+M-MM 1>!3DFfg(*D%Kl" 4@3I3I#3N0L #").&+Dv/D/D 1	3M //!-0 6:25*=9.Q^B_j-8 -}m>W>WX{DAI  ((4ZW_WqWq=r * ; ;M<Q<Q RI#M83M3MN $ 6 6II&<E+M&^i=k 1<q>>!\: 23 1<- 1< 1#'@@%i1L1LM 55<<B[ \Q!]%7%7!8 \^ !55<<2K LQ!R LN ef"4[ @*3*<*<\1*M*2!>>/<H 55<<or=RS'..?@ #Xc"d*?S#8:#E"dK"dnk2c1	3d M _\1< !] !M #es$   L1LLL
L
 Lc                    g } |d|       |d   } |d|       | j                   st        |      dkD  r&|d   |j                  v r|| j                  ||      z  } |d|       | j	                         } |d|       t        |t        j                        r|| j                  ||      z  }| j                  |||||      } |d|        |d| j                         |S )	a0  
        Visits the active parsers and their actions, executes their completers or introspects them to collect their
        option strings. Returns the resulting completions as a list of strings.

        This method is exposed for overriding in subclasses; there is no need to use it directly.
        zall active parsers:zactive_parser:r   zoptional options:znext_positional:zactive options:zdisplay completions:)rh   r<   r   r   _get_next_positionalr   r   r   r   r   rm   )rp   r   r   r   r    r   active_parserr   s           r   r   z$CompletionFinder.collect_completions  s     #^4&r*.''C,=,AlSToYfYsYsFs477|TTK!;/335 /2ox'A'AB4::?LYYK22=/S_al3>@-$d&?&?@r6   c                     | j                   d   }| j                  d   }|j                         }|sy||k(  r|d   S d}t        t	        |            D ]  }||   |k(  s n |dz   t	        |      k  r||dz      S y)z>
        Get the next positional action if it exists.
        r   Nr   r   )r   r   _get_positional_actionsr   r<   )rp   r   last_positionalall_positionalsr   s        r   r   z%CompletionFinder._get_next_positional  s     ++B/2226'??AO+"1%%s?+, 	Aq!_4	 q53''"1q5))r6   c                     |D cg c]  }t        |       }}| j                  t               | _        t        | j                        }|D cg c]  }||vs|j                  |      r| c}S c c}w c c}w )a  
        Ensures collected completions are Unicode text, de-duplicates them, and excludes those specified by ``exclude``.
        Returns the filtered completions as an iterable.

        This method is exposed for overriding in subclasses; there is no need to use it directly.
        )r   ri   setadd)rp   r   r   seens       r   r   z#CompletionFinder.filter_completions  sj     /::z!}:: <<5DL4<< &La!4-LL ; Ms   A0	A5A5)A5c           	         d}|dk(  r|r|D cg c]
  }||dz   d  }}|dz  }n
|dk(  r|dz  }t         j                  j                  d      d	v rd}n&|d
k(  r!d}|D cg c]  }|j                  d
d       }}|D ]$  }|D cg c]  }|j                  |d|z          }}& | j                  r,d}t        |      dk(  r|d   d   |vr|dk(  r|dxx   dz  cc<   |S c c}w c c}w c c}w )a  
        If the word under the cursor started with a quote (as indicated by a nonempty ``cword_prequote``), escapes
        occurrences of that quote character in the completions, and adds the quote to the beginning of each completion.
        Otherwise, escapes all characters that bash splits words on (``COMP_WORDBREAKS``), and removes portions of
        completions before the first colon if (``COMP_WORDBREAKS``) contains a colon.

        If there is only one completion, and it doesn't end with a **continuation character** (``/``, ``:``, or ``=``),
        adds a space after the completion.

        This method is exposed for overriding in subclasses; there is no need to use it directly.
        \r:   r   Nz();<>|&!`$* 	
"'"z"`$!_ARGCOMPLETE_SHELL)tcshfish'z'\''z=/:r   r   r   )r)   rQ   rR   r   ro   r<   )rp   r   r   rD   special_charsr   charcontinuation_charss           r   r   z"CompletionFinder.quote_completions  s1     R "CNOaq!3a!7!89OO22Ms"V#M::>>./3CCMs" M<GHq199S'2HKH! 	NDALMA199T4$;7MKM	N  "';1$Q);CU)U!R'Nc)N5 P I Ns   CC!C&c                 >   |dk(  rlt        |      \  }}}}}|j                  dt        j                  d          | j	                  ||||      }|D 	cg c]  }	||	t        |      d z    c}	| _        |t        | j                        k  r| j                  |   S yc c}	w )a  
        Alternate entry point for using the argcomplete completer in a readline-based REPL. See also
        `rlcompleter <https://docs.python.org/2/library/rlcompleter.html#completer-objects>`_.
        Usage:

        .. code-block:: python

            import argcomplete, argparse, readline
            parser = argparse.ArgumentParser()
            ...
            completer = argcomplete.CompletionFinder(parser)
            readline.set_completer_delims("")
            readline.set_completer(completer.rl_complete)
            readline.parse_and_bind("tab: complete")
            result = input("prompt> ")

        (Use ``raw_input`` instead of ``input`` on Python 2, or use `eight <https://github.com/kislyuk/eight>`_).
        r   N)r[   insertr&   argvr   r<   _rl_matches)
rp   textr?   r   r   r   r   first_colon_posmatchesmatchs
             r   rl_completezCompletionFinder.rl_completeA  s    & A:V`aeVfSNL,
Oa!-++JnVefGNUVUuS->-?'@ @VD3t''((##E**  Ws   Bc                     | j                   S )a  
        This function returns a mapping of option names to their help strings for displaying to the user

        Usage:

        .. code-block:: python

            def display_completions(substitution, matches, longest_match_length):
                _display_completions = argcomplete.autocomplete.get_display_completions()
                print("")
                if _display_completions:
                    help_len = [len(x) for x in _display_completions.values() if x]

                    if help_len:
                        maxlen = max([len(x) for x in _display_completions])
                        print("\n".join("{0:{2}} -- {1}".format(k, v, maxlen)
                                        for k, v in sorted(_display_completions.items())))
                    else:
                        print("    ".join(k for k in sorted(_display_completions)))
                else:
                    print(" ".join(x for x in sorted(matches)))

                import readline
                print("cli /> {0}".format(readline.get_line_buffer()), end="")
                readline.redisplay()

            ...
            readline.set_completion_display_matches_hook(display_completions)

        )rm   )rp   s    r   get_display_completionsz(CompletionFinder.get_display_completions_  s    > (((r6   )r2   r3   r4   __doc__r   rr   r)   _exitr   r   r   r   r   r   staticmethodr   r   r   r   r   r   r  r  r5   r6   r   rc   rc   n   s    
 (,TSWcg"'>;KZ^)  AERTRZRZjnTX#1#3eN8:#x"	"*  KZ:0M$.`<)r6   rc   c                       e Zd Zed        Zy)ExclusiveCompletionFinderc                     t         j                  | |      syt        j                  t        j                  f}| j
                  |v ry| |j                  vryyr   )rc   r   r   _AppendAction_AppendConstActionr   r   )r   r   append_classess      r   r   z)ExclusiveCompletionFinder._action_allowed  sP    //?"00(2M2MN/999r6   N)r2   r3   r4   r  r   r5   r6   r   r  r    s     r6   r  zV Use this to access argcomplete. See :meth:`argcomplete.CompletionFinder.__call__()`. c                  *    t        dg| dt        i y)z
    Prints **args** to standard error when running completions. This will interrupt the user's command line interaction;
    use it to indicate an error condition that is preventing your completer from working.
    
r   N)r   r   )r   s    r   warnr$    s    
 
$)D)\)r6   r]   )8
__future__r   r   r   r   r)   r&   r   
contextlibr:   r   r	   rO   compatr
   r   r   r   r   r   r   my_argparser   r   r   r   shellintegrationr   rQ   r   r-   r   r    BASH_FILE_COMPLETION_FALLBACKBASH_DIR_COMPLETION_FALLBACK_StoreAction_StoreConstAction_StoreTrueAction_StoreFalseActionr  r   _CountActionr   contextmanagerr+   r/   	Exceptionr1   r[   ra   objectrc   r  autocompleter  r$  r5   r6   r   <module>r5     s   S R $ $ + N N 9 k k '		#zz( !# ! %%**))**&&++%%'    	9 	.0`)P)v P)d 0   !s *r6   