o
    i!:                     @   s  d dl Z d dlZd dlmZmZ d dlmZ d dlmZm	Z	m
Z
mZmZmZ d dlmZm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 erhd dlmZ d dlm Z m!Z! d dl"m#Z# g dZ$dd Z%G dd de&Z'G dd de&Z(eG dd de&Z)eddG dd de)Z*eddG dd de)Z+eddG dd de)Z,eddG dd  d e)Z-G d!d" d"e)Z.eddG d#d$ d$e)Z/eddG d%d& d&e)Z0eddG d'd( d(e)Z1eddG d)d* d*e)Z2eddG d+d, d,e)Z3dS )-    N)CallableSequence)chain)TYPE_CHECKINGAnyLiteralOptionalget_args
get_origin)definefield)get_hint_name)CommandSpec)Group)Token)is_option_likejson_decode_error_verbosifier)Console)ArgumentArgumentCollection)App)CoercionErrorCommandCollisionErrorCycloptsErrorDocstringErrorUnknownCommandErrorMissingArgumentErrorMixedArgumentErrorRepeatArgumentErrorUnknownOptionErrorUnusedCliTokensErrorValidationErrorCombinedShortOptionErrorc                 C   s   t | t | d fS )N   )inspectgetsourcefilegetsourcelines)func r(   Y/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/cyclopts/exceptions.py_get_function_info'   s   r*   c                   @      e Zd ZdZdS )r   zDA command with the same name has already been registered to the app.N__name__
__module____qualname____doc__r(   r(   r(   r)   r   +       r   c                   @   r+   )r   zVThe docstring either has a syntax error, or inconsistency with the function signature.Nr,   r(   r(   r(   r)   r   2   r1   r   c                   @   s   e Zd ZU dZdZedB ed< 	 dZeed< 	 dZ	e
e dB ed< 	 dZe
e dB ed< 	 dZedB ed< 	 dZed	 ed
< 	 dZee dB ed< 	 dZed ed< 	 edddZed ed< 	 dd ZdS )r   zRoot exception for runtime errors.

    As CycloptsErrors bubble up the Cyclopts call-stack, more information is added to it.
    NmsgTverboseroot_input_tokensunused_tokenstargetr   argumentcommand_chainr   app)defaultkw_onlyr   consolec                 C   s   | j d ur| j S g }| jrJ|t| j | jr;t| j\}}|d| d| d |d| jj t| j  | j	d urI|d| j	  n	 |rTd
|d S dS )NzFunction defined in file "z", line :z    zRoot Input Tokens: 
 )r2   r3   appendtyper-   r6   r*   r$   	signaturer4   join)selfstringsfilelinenor(   r(   r)   __str__i   s    
 
zCycloptsError.__str__)r-   r.   r/   r0   r2   str__annotations__r3   boolr4   listr5   r6   r   r7   r   r8   r   r9   r   r<   rH   r(   r(   r(   r)   r   6   s*   
 r   T)r;   c                   @   r+   )r"   z?Cannot combine short, token-consuming options with short flags.Nr,   r(   r(   r(   r)   r"      s    r"   c                       sT   e Zd ZU dZdZeed< 	 dZedB ed< 	 e	j
jZeed< 	  fddZ  ZS )	r!   z'Validator function raised an exception.r?   exception_messageNgroupvaluec                    s  d}| j rR| jtjju r| j jn| j}z| j jd }W n	 ty$   Y nMw |jr-|jdkr/dnd|j d}|jr<|jn| j j	
d }d| d| d| d	}n| jrb| jj	rad
| jj	 d}n| jrod| jd d	}ntt   | }| jr|r| d| j S | jS |S )Nr?   r   cliz provided by ""-zInvalid value "z" for ".zInvalid values for group "".zInvalid values for command  )r7   rO   cycloptsutilsUNSETtokens
IndexErrorsourcekeywordnamelstripupperrN   r8   NotImplementedErrorsuperrH   rM   )rD   messagerO   tokenprovided_byr^   cyclopts_message	__class__r(   r)   rH      s0   "zValidationError.__str__)r-   r.   r/   r0   rM   rI   rJ   rN   r   rW   rX   rY   rO   r   rH   __classcell__r(   r(   rg   r)   r!      s   
 r!   c                       s6   e Zd ZU dZeed< 	 ded< 	  fddZ  ZS )r   zrUnknown/unregistered option provided by the cli.

    A nearest-neighbor parameter suggestion may be printed.
    rd   r   argument_collectionc                    s   | j jp| j j}| j jdkrd| d}nd| d| j j d}| j jp'| j j }rPdd l}ttdd | jD }|j	||dd	d
}|rP|d|d  d7 }t
  | S )NrP   zUnknown option: "rT   z" from "r   c                 s   s    | ]}|j V  qd S N)names.0xr(   r(   r)   	<genexpr>   s    z-UnknownOptionError.__str__.<locals>.<genexpr>r#   333333?ncutoff Did you mean ""?)rd   r]   rO   r\   difflibrL   r   from_iterablerj   get_close_matchesrb   rH   )rD   rO   responser]   rw   
candidatesclose_matchesrg   r(   r)   rH      s   zUnknownOptionError.__str__)r-   r.   r/   r0   r   rJ   rH   ri   r(   r(   rg   r)   r      s   
 r   c                       sF   e Zd ZU dZdZed ed< 	 dZedB ed< 	  fddZ	  Z
S )r   z6There was an error performing automatic type coercion.Nr   rd   target_typec              
      s  | j d ur| jr| jjd u r| j S d| jj d| j  S t| jtjr=t| j}| jr1| jjd u r3|S d| jj d| S | jd usDJ | j	d usKJ t
  }t| j	tu rndddd t| j	D  d }d| }nt| j	}| js|d	| jj d
| d7 }|S | jjd u r| jjd }| jjdks| jjdkr|d	| d| jj d| d7 }|S |d	| d| jj d| jj d| d	7 }|S | jjdks| jjdkr|d	| jj d| jj d| d7 }|S |d	| jj d| jj d| jj d| d	7 }|S )NzInvalid value for z: {, c                 s   s    | ]}t |V  qd S rk   )reprrm   r(   r(   r)   rp      s    z(CoercionError.__str__.<locals>.<genexpr>}zone of zInvalid value for "z": unable to convert value to rS   rR   r?   rP   z": unable to convert "z" into z" from z: unable to convert ")r2   rd   r]   
isinstance	__cause__jsonJSONDecodeErrorr   r7   r}   rb   rH   r
   r   rC   r	   r   r^   r_   r`   r\   rO   )rD   r2   choicestarget_type_namepositional_namerg   r(   r)   rH      s>   


"
 	*$.zCoercionError.__str__)r-   r.   r/   r0   rd   r   rJ   r}   rA   rH   ri   r(   r(   rg   r)   r      s   
 r   c                           e Zd ZdZ fddZ  ZS )r   z4CLI token combination did not yield a valid command.c                    s6  | j sJ | j d }d| d}| jr| jjrdd l}g }| jj D ]/\}}|| jjv s3|| jjv r4q#t|tr?|	| jn|}t|t
| jsJq#|jrR|| q#|j||ddd}|rh|d|d  d7 }d	}	d
d |D }
|
rt|
|	kr|dd|
d |	  d7 }n|dd|
 d7 }t  | S )Nr   zUnknown command "rT   r#   rq   rr   ru   rv      c                 S   s   g | ]	}| d s|qS )rR   )
startswith)rn   r^   r(   r(   r)   
<listcomp>.  s    z/UnknownCommandError.__str__.<locals>.<listcomp>z Available commands: r   z, ...rS   )r5   r9   	_commandsrw   items_help_flags_version_flagsr   r   resolverA   showr@   ry   lenrC   rb   rH   )rD   rd   rz   rw   visible_commandsr^   app_or_specsubappr|   max_commandsavailable_commandsrg   r(   r)   rH     s<   


 zUnknownCommandError.__str__r-   r.   r/   r0   rH   ri   r(   r(   rg   r)   r     s    r   c                       r   )r    z)Not all CLI tokens were used as expected.c                    s&   | j d usJ t  d| j  d S )NzUnused Tokens: rS   )r5   rb   rH   rD   rg   r(   r)   rH   <  s   zUnusedCliTokensError.__str__r   r(   r(   rg   r)   r    8      r    c                       sL   e Zd ZU dZeedZee ed< 	 dZ	edB ed< 	  fddZ
  ZS )r   z%A required argument was not provided.)factorytokens_so_farNr]   c              
      s  | j d usJ g }| j  \}}|dkrd}d}n |dkr"d}d}nd| d}t| j| }|r7d| d	nd}d}| jrq| j jjrqdd l}d
d | jD }	|j| j j	|	ddd}
|
rq|
d | j j
vrqd| j j	 d|
d  d}| j j	}| jd ur~| j}n| j jrt| j jD ]}|jd ur|j} nq| jr|dd| j d| d| d	|  n|d| d| d	|  |r|| | jr|d| j d	 t  d| S )Nr   zflag requiredr?   r#   zrequires an argumentz	requires z positional argumentsz
 Only got rS   c                 S   s   g | ]}t |r|qS r(   )r   rm   r(   r(   r)   r   ^  s    z0MissingArgumentError.__str__.<locals>.<listcomp>rq   rr   zDid you mean "z" instead of "rv   z	Command "rV   z" parameter "z" zParameter "z	 Parsed: )r7   token_countr   r   r5   
field_info
is_keywordrw   ry   r^   rl   r]   rZ   reversedr8   r@   rC   r3   rb   rH   )rD   rE   count_required_stringonly_got_stringreceived_countclose_match_stringrw   r{   r|   
param_namerd   rg   r(   r)   rH   K  sL   

"
zMissingArgumentError.__str__)r-   r.   r/   r0   r   rL   r   rI   rJ   r]   rH   ri   r(   r(   rg   r)   r   A  s   
 r   c                       s,   e Zd ZU dZded< 	  fddZ  ZS )r   zAThe same parameter has erroneously been specified multiple times.r   rd   c                    s   t   d| jj d S )Nz
Parameter z specified multiple times.)rb   rH   rd   r]   r   rg   r(   r)   rH     s   zRepeatArgumentError.__str__)r-   r.   r/   r0   rJ   rH   ri   r(   r(   rg   r)   r   }  s
   
 r   c                       s6   e Zd ZU dZeed< ed ed<  fddZ  ZS )ArgumentOrderErrorz|Cannot supply a POSITIONAL_OR_KEYWORD argument with a keyword, and then a later POSITIONAL_OR_KEYWORD argument positionally.rd   r   9prior_positional_or_keyword_supplied_as_keyword_argumentsc                    s   | j d usJ t| jdk}tdd | j jD | j jd}dd | jD }t|dkr1|d }t  d| j	d	|d
|rAdnd d|d|d| j	d| j jd S )Nr#   c                 s       | ]	}|j r|j V  qd S rk   r]   rm   r(   r(   r)   rp         z-ArgumentOrderError.__str__.<locals>.<genexpr>rR   c                 S   s   g | ]}|j d  jqS )r   )rZ   r]   rm   r(   r(   r)   r     s    z.ArgumentOrderError.__str__.<locals>.<listcomp>r   zCannot specify token z positionally for parameter z$ due to previously specified keywordsr?   rV   z. z( must either be passed positionally, or z  must be passed as a keyword to rS   )
r7   r   r   nextrZ   r^   r_   rb   rH   rd   )rD   pluraldisplay_nameprior_display_namesrg   r(   r)   rH     s   ">zArgumentOrderError.__str__)	r-   r.   r/   r0   rI   rJ   rL   rH   ri   r(   r(   rg   r)   r     s
   
 r   c                       r   )r   z=Cannot supply keywords and non-keywords to the same argument.c                    s@   | j d usJ tdd | j jD | j j}t  d| d S )Nc                 s   r   rk   r   rm   r(   r(   r)   rp     r   z-MixedArgumentError.__str__.<locals>.<genexpr>z2Cannot supply keyword & non-keyword arguments to "rT   )r7   r   rZ   r^   rb   rH   )rD   r   rg   r(   r)   rH     s   zMixedArgumentError.__str__r   r(   r(   rg   r)   r     r   r   )4r$   r   collections.abcr   r   	itertoolsr   typingr   r   r   r   r	   r
   attrsr   r   cyclopts.utilsrW   cyclopts.annotationsr   cyclopts.command_specr   cyclopts.groupr   cyclopts.tokenr   r   r   rich.consoler   cyclopts.argumentr   r   cyclopts.corer   __all__r*   	Exceptionr   r   r   r"   r!   r   r   r   r    r   r   r   r   r(   r(   r(   r)   <module>   sR     H*80;
