o
    ñu]õ
  ã                   @   sf   d Z ddlZddlZddlZddlZddlZdddddddddddœ
Zd	Zg d
¢Z	dd„ Z
dd„ ZdS )z:
Commandline argument parsing for our interpreter prompt.
é    Nz	127.0.0.1ÚdefaultFz/var/run/tor/controlZtor)
Úcontrol_addressÚcontrol_portÚuser_provided_portÚcontrol_socketÚuser_provided_socketÚtor_pathÚrun_cmdÚrun_pathÚdisable_colorÚ
print_helpzi:s:h)z
interface=zsocket=ztor=zrun=zno-colorÚhelpc              
   C   sœ  t tƒ}z#t | tt¡\}}|r&t|ƒdkrdnd}t dd |¡|f ¡‚W n ty9 } zt	d| ƒ‚d}~ww |D ]‚\}}|dv rƒd	|v rQ| 
d	d¡\}}	nd|}}	|durktjj |¡sgt	d
| ƒ‚||d< tjj |	¡sxt	d|	 ƒ‚t|	ƒ|d< d|d< q<|dv r||d< d|d< q<|dv r™||d< q<|dv r­tj |¡r¨||d< q<||d< q<|dkr¶d|d< q<|dv r¾d|d< q<t d| ¡ ¡}
|
di |¤ŽS )zê
  Parses our arguments, providing a named tuple with their values.

  :param list argv: input arguments to be parsed

  :returns: a **named tuple** with our parsed arguments

  :raises: **ValueError** if we got an invalid argument
  é   zaren't recognized argumentszisn't a recognized argumentz'%s' %sz', 'z%s (for usage provide --help)N)z-iz--interfaceú:z'%s' isn't a valid IPv4 addressr   z'%s' isn't a valid port numberr   Tr   )z-sz--socketr   r   z--torr   z--runr
   r	   z
--no-colorr   )z-hz--helpr   ÚArgs© )ÚdictÚDEFAULT_ARGSÚgetoptÚOPTÚOPT_EXPANDEDÚlenZGetoptErrorÚjoinÚ	ExceptionÚ
ValueErrorÚrsplitÚstemÚutilZ
connectionZis_valid_ipv4_addressZis_valid_portÚintÚosÚpathÚexistsÚcollectionsÚ
namedtupleÚkeys)ÚargvÚargsZrecognized_argsZunrecognized_argsZ	error_msgÚexcZoptÚargÚaddressÚportr   r   r   ú</usr/lib/python3/dist-packages/stem/interpreter/arguments.pyÚparse    sP   þ€ÿ






€r,   c                   C   s    t jjdtd td td dS )z\
  Provides our --help usage information.

  :returns: **str** with our usage information
  zmsg.helpr   r   r   )r)   r*   Zsocket)r   ZinterpreterÚmsgr   r   r   r   r+   Úget_help]   s   ür.   )Ú__doc__r"   r   r   Zstem.interpreterr   Zstem.util.connectionr   r   r   r,   r.   r   r   r   r+   Ú<module>   s*   ö=