
    f j'                        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Zd dl	Z	d dl
Z	d dlmZmZmZ ddlmZ ddlmZmZ dZd	Z e	j                    Z e	j        d
          Ze                    ed            G d d          Z e            Zdej        ddfdZ G d de	j        j                  Zdede	j        dz  fdZde	j        dz  fdZ dej        ddfdZ!dej        dede"ddfdZ#e$                    ed           e	j%        d           e	j        dd           e	j        dd            e	j        d!d"d#e#$          d%de	j        d&e&d'e&d(e&d)e"ddfd*            Z$d d+d+dd,d-ede	j        d.e'd/e&d0e&d1e&dz  de&fd2Z(d3e"d4e&de&fd5Z)e*                                 e	j        d+d6           e	j        dd7dd!8           e	j        dd9          fde	j        d/e&d:edz  d1e&dz  ddf
d;            Z+defd<Z,dS )=    N)Path)Any)CommandGroupOption   )__version__)HAS_RICHMARKUP_MODE_KEY)appclimain)r   r   r   z&Extra utility commands for Typer apps.)helputils)namec                       e Zd ZddZdS )StatereturnNc                 >    d | _         d | _        d | _        d | _        d S N)r   funcfilemodule)selfs    ]C:\Users\Terasoftware\OneDrive\Desktop\faahhh\fyndo\fyndo\venv\Lib\site-packages\typer/cli.py__init__zState.__init__   s"    # $	!%	"&    )r   N)__name__
__module____qualname__r    r   r   r   r      s(        ' ' ' ' ' 'r   r   ctxr   c                    | j                             d          }|rt          |          }|                                r!|                                r|t
          _        nNt          j        d|          s-t          j
        d| d           t          j        d           |t
          _        | j                             d          }|r|t
          _        | j                             d          }|r|t
          _        d S d S )	Npath_or_modulez[a-zA-Z_]\w*(\.[a-zA-Z_]\w*)*z#Not a valid file or Python module: Terrr   r   r   )paramsgetr   existsis_filestater   re	fullmatchtyperechosysexitr   r   r   )r"   r$   	file_pathapp_name	func_names        r   maybe_update_stater5   "   s    Z^^$455N 
*((	 	*)"3"3"5"5 	*"EJJ< @.QQ 
J.JJPT    )ELz~~e$$H 	
v&&I 


 r   c                        e Zd Zdej        dee         f fdZdej        dededz  f fdZ	dej        de
f fdZdej        ddfdZ xZS )	TyperCLIGroupr"   r   c                 p    |                      |           t                                          |          S r   )maybe_add_runsuperlist_commandsr   r"   	__class__s     r   r;   zTyperCLIGroup.list_commands8   s/    3ww$$S)))r   r   Nc                 r    |                      |           t                                          ||          S r   )r9   r:   get_command)r   r"   r   r=   s      r   r?   zTyperCLIGroup.get_command<   s1    3ww""3---r   c                 p    |                      |           t                                          |          S r   )r9   r:   invoker<   s     r   rA   zTyperCLIGroup.invoke@   s-    3ww~~c"""r   c                 B    t          |           t          |            d S r   )r5   maybe_add_run_to_cli)r   r"   s     r   r9   zTyperCLIGroup.maybe_add_runD   s$    3T"""""r   )r   r   r    clickContextliststrr;   r   r?   r   rA   r9   __classcell__)r=   s   @r   r7   r7   7   s        * *49 * * * * * *.u} .C .GdN . . . . . .#%- #C # # # # # ## #4 # # # # # # # #r   r7   r   c                    t           j        rnt          | t           j        d           }t          |t          j                  s7t	          j        dt           j         d           t          j        d           |S t           j	        rt          | t           j	        d           }t          |          s7t	          j        dt           j	         d           t	          j        d          t	          j                    } |                                |           |S t          |           }t          |          }t          D ]5}||v r/t          | |d           }t          |t          j                  r|c S 6|t          t                    z
  D ]0}t          | |          }t          |t          j                  r|c S 1t           D ]V}t          | |d           }t          |          r4t	          j                    } |                                |           |c S W|t          t                     z
  D ]U}t          | |          }t          |          r4t	          j                    } |                                |           |c S Vd S )NzNot a Typer object: --app Tr%   r   zNot a function: --func )r+   r   getattr
isinstancer.   Typerr/   r0   r1   r   callableExitcommanddirsetdefault_app_namesdefault_func_names)r   objfunc_objsub_applocal_nameslocal_names_setr   r4   s           r   get_typer_from_modulerY   I   sx   y fei..#u{++ 	J?EI??TJJJJHQKKK
z 65:t44!! 	 J===4HHHH*Q--+--(###f++K+&&O!  ?" 	&$--C#u{++ 


#&7"8"88  fd##c5;'' 	JJJ	 (  	69d33H 	kmmGGOOh'''NNN	
 %s+='>'>>  	69--H 	kmmGGOOh'''NNN	 4r   c                     d } t           j        rIt           j        j        }t          j                            |t          t           j                            } n5t           j        r)t          j                            t           j                  } | gt           j        r$t          j
        dt           j         d           n#t          j
        dt           j         d           t          j        d           | J t          j                            |           }| j                            |           t!          |          }|S )Nz!Could not import as Python file: Tr%   z#Could not import as Python module: r   )r+   r   r   	importlibutilspec_from_file_locationrG   r   	find_specr.   r/   r0   r1   module_from_specloaderexec_modulerY   )specmodule_namer   rT   s       r   get_typer_from_staterd   y   s	   Dz 6jo~55k3uz??SS	 6~''55 : 	WJG5:GGTRRRRRJKU\KKQUVVVV^,,T22FKF###

'
'CJr   r   c                    d| j         vrzt          j        st          j        rft	                      }|rTd|_        t          j                            |          }d|_	        |j
        sd|_
        |                     |           d S d S d S d S )NrunFzRun the provided Typer app.)commandsr+   r   r   rd   _add_completionr.   r   r?   r   r   add_command)r   rT   	click_objs      r   rC   rC      s    CL  	+: 	+ 	+&((C +&+#!J22377	!&	 ~ C%BIN	*****	+ 	++ +	+ 	+r   paramvaluec                 v    |r| j         rd S t          j        dt                      t          j                    )NzTyper version: )resilient_parsingr.   r/   r	   rN   )r"   rk   rl   s      r   print_versionro      s>     C) 	J...///
*,,r   T)clsno_args_is_helpz%The typer app object/variable to use.z!The function to convert to Typer.Fz	--versionzPrint version and exit.)r   callback)r$   r   r   versionr$   r   r   rs   c                $    t          |            dS )z
    Run Typer scripts with completion, without having to create a package.

    You probably want to install completion for the typer command:

    $ typer --install-completion

    https://typer.tiangolo.com/
    N)r5   )r"   r$   r   r   rs   s        r   rr   rr      s    . sr    )indentr   call_prefixtitlerT   rv   r   rw   rx   c                    dd|z   z  }|p| j         }|r| d| }|s
|rd| dnd}|d| dz  }d }t          |d          r:t          |j        t                    r |j                            t          d           }t          t          o|dk              }	| j	        r|t          |	| j	                   dz  }|                     |          }
|
r9|d	z  }|d
z  }|dz  }|r|| dz  }|d                    |
           dz  }|dz  }g }g }|                     |          D ]Z}|                    |          }|A|j        dk    r|                    |           :|j        dk    r|                    |           [|r8|dz  }|D ]+\  }}|d| dz  }|r|dt          |	|           z  }|dz  },|dz  }|r8|dz  }|D ]+\  }}|d| dz  }|r|dt          |	|           z  }|dz  },|dz  }| j        r|| j         dz  }t          | t$                    r| }|                    |          }|rh|dz  }|D ][}|                    ||          }|sJ |d|j          dz  }|                                }|r|dt          |	|           z  }|dz  }\|dz  }|D ]?}|                    ||          }|sJ d}|r|| z  }|t-          |||dz   |          z  }@|S )N#r    `CLIz

rT   richz**Usage**:

z```console
z$ 
z```

argumentoptionz**Arguments**:

z* `z: z**Options**:

z**Commands**:

ru   )rT   r"   rv   rw   )r   hasattrrK   rT   dictr(   r   boolr
   r   _parse_htmlcollect_usage_piecesjoin
get_paramsget_help_recordparam_type_nameappendepilogr   r;   r?   get_short_help_strget_docs_for_click)rT   r"   rv   r   rw   rx   docscommand_namerich_markup_modeto_parseusage_piecesargsoptsrk   rvarg_namearg_helpopt_nameopt_helpgrouprg   rO   command_objcommand_help
use_prefixs                            r   r   r      sF    !f*D#38L 7%6666 ?'3>#L####OOOODsE >z#'488 >7;;==(C(8F(BDDH
x 9;x228888++C00L    	'|&&&&D388L))----	DD$$    ""3'' 	 $
2  B&(2  B $$"& 	 	Hh%(%%%%D ?>[8<<>>>DLDD """& 	 	Hh%(%%%%D ?>[8<<>>>DLDD
z $3:#####u &&s++ 
	''D#  #//W==""""1k.1111*==?? GFX|!D!DFFFDDLD 	 	G++C99KJ 0//
&S!   DD Kr   r   
input_textc                 @    | s|S ddl m} |                    |          S )Nr   )
rich_utils)ru   r   rich_to_html)r   r   r   s      r   r   r     s6     "":...r   z+The name of the CLI program to use in docs.z0An output file to write docs to, like README.md.)r   	file_okaydir_okayzWThe title for the documentation page. If not provided, the name of the program is used.outputc                 p   t                      }|s)t          j        dd           t          j                    t	          |d          r_t	          | d          r| j        |                     t                     t          | j        t                    r|j	        | j        t          <   t          j                            |          }t          || ||          }|                                 d}|r.|                    |           t          j        d	|            dS t          j        |           dS )
z1
    Generate Markdown docs for a Typer app.
    zNo Typer app foundTr%   r   rT   N)rT   r"   r   rx   r   zDocs saved to: )rd   r.   r/   Abortr   rT   ensure_objectr   rK   r   r   r   r?   r   strip
write_text)r"   r   r   rx   	typer_objrj   r   
clean_docss           r   r   r     s2   & %&&I 
'T2222kmmy,-- BsE"" 	$cg 	$d###cgt$$ 	B'0'ACGO$
&&y11I)4uMMMDJJLL$$$J *%%%
-V--.....
:r   c                      t                      S r   )r   r!   r   r   r   r   =  s    55Lr   )-importlib.utilr[   r,   r0   pathlibr   typingr   rD   r.   
typer.corer   r   r   ru   r	   corer
   r   rR   rS   rL   r   	utils_app	add_typerr   r+   rE   r5   
TyperGroupr7   rY   rd   rC   r   ro   rr   ArgumentrG   intr   r   rO   r   r   r!   r   r   <module>r      s       				 



                   ( ( ( ( ( ( ( ( ( (       + + + + + + + +* + ekmmEKEFFF	 ig & & &' ' ' ' ' ' ' ' 	EM d    *# # # # #EJ) # # #$-# -%+*< - - - -`ekD0    (
+ek 
+d 
+ 
+ 
+ 
+u} V D T     -66 )%...u|D'NOOOT(KLLL EL&	    	  
	
   
   76: Q Q Q	Q 
Q 	Q
 Q Q :Q 	Q Q Q Qh/$ /C /C / / / /  R&STTT&%,?	   %  " "	"
" 4K" :" 
" " " "Jc      r   