
    gbF                    p   U d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	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mZmZ ddlmZ ddlZddlmZ dd	lm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) ddl*m+Z+ ddl,m-Z- ddl.m/Z/ ddl0m1Z1 dZ2dZ3e3 dZ4 e#jj                  d       e#dz  Z6 ejn                  e6      Z8e8js                  ejt                          ejv                  e8gejt                          ejx                  e=      Z>dRdZ?dSdZ@dSdZAddhZBh eBd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?ZCd@eDdA<   dBdCdDdEZEdSdFZFdSdGZGdSdHZHdTdIZIdSdJZJdSdKZKdUdLZLdVdMZM G dN dOej                        ZOdWdXdPZPdWdXdQZQy)YThe CLI for Pydantic Logfire.    )annotationsN)
itemgetter)Path)AnySequencecast)urlparse)trace)LogfireConfigError)ContextCarrierget_context   )VERSION   )DEFAULT_FILEHOME_LOGFIREDefaultFileis_logged_inpoll_for_tokenrequest_device_code)LogfireCredentials)ParamManager)LOGFIRE_BASE_URL)SDKTracerProvider)read_toml_filezNhttps://opentelemetry-python-contrib.readthedocs.io/en/latest/instrumentation/z!https://logfire.pydantic.dev/docsz/integrations/T)exist_okzlog.txt)handlerslevelc                     t        j                         } t        j                         }t        j                         }t	        dt
         d|  d| d| d	       y)zShow the version and exit.zRunning Logfire z with  z on .N)platformpython_implementationpython_versionsystemprintr   )py_impl
py_versionr&   s      J/var/www/openai/venv/lib/python3.12/site-packages/logfire/_internal/cli.pyversion_callbackr+   0   sN    ,,.G((*J__F	WIVG9Aj\fXQ
OP    c                2   t        | j                        }t        j                  |      }|j	                  d| j
                        }|j	                  d      }|r4t        j                  || j                  |      }|r|j                          yt        j                  | j                  |      }| t        j                  j                  d       n(|d   }t        j                  j                  d| d       t        j                  |      }|Gt        j                  j                  d	|j                          d       t        j                   d
       yt        j                  j                  d|j                          d       |j                          y)zEShow user authenticated username and the URL to your Logfire project.base_urltokenNsessionlogfire_api_urlz-Not logged in. Run `logfire auth` to log in.
namezLogged in as: 
z No Logfire credentials found in r   z"Credentials loaded from data dir: z

)r   data_dirr   create
load_paramlogfire_urlr   
from_token_sessionprint_token_summaryget_current_usersysstderrwriteload_creds_fileresolveexit)argsr5   param_managerr.   r/   credentialscurrent_userusernames           r*   parse_whoamirH   8   sD   DMM"H ''1M''
D4D4DEH$$W-E(33E4==(S++-%66t}}^fgL

IJ'

>(267$44X>K

;H<L<L<N;OrRS

=h>N>N>P=QQUVW'')r,   c                &   g }| j                   r)t        j                         r|j                  t               t	        | j
                        }|j                         r|j                         sFt        j                  j                  d|j                          d       t        j                  d       |j                  |dz         |j                  |dz         dj                  |D cg c]  }|j                         st        |        c}      }t        d| d      }|j                         dv r9|D ]  }|j!                  d	
        t        j                  j                  d       yt        j                  j                  d       yc c}w )z2Remove the contents of the Logfire data directory.zNo Logfire data found in r4   r   z
.gitignorezlogfire_credentials.jsonz%The following files will be deleted:
z
Are you sure? [N/y])yesyT)
missing_okzCleaned Logfire data.
zClean aborted.
N)logsLOGFIRE_LOG_FILEexistsappendr   r5   is_dirr=   r>   r?   rA   rB   joinstrinputlowerunlink)rC   files_to_deleter5   filefiles_to_displayconfirms         r*   parse_cleanr[   T   s5   "$Oyy%,,./0DMM"H??HOO$5

4X5E5E5G4HKL8l238&@@Ayy!Y4;;=#d)!YZ<=M<NNcdeG}},&#DKK4K( $

23

+, "Zs   *F Furllibsqlite3aio_pikaaiohttpaiopgasyncpgbotoceleryconfluent_kafkadjangoelasticsearchfalconfastapiflaskgrpchttpxjinja2kafka_pythonmysqlmysqlclientpikapsycopgpsycopg2
pymemcachepymongopymysqlpyramid	remouladerequests
sqlalchemy	starlettetornadotortoise_ormurllib3zset[str]OTEL_PACKAGESzaiohttp-clienttortoiseormsklearn)r_   r|   zscikit-learnc                ,   | j                   rt        | j                         n	t               }t        |z
  }t        j                  dt
               i }|D ]b  }t        j                  j                  |      #t        j                  ||      }d| }t        j                  j                  |      ^|||<   d |j                  d      r|j                  d      r|d= |j                  d      r|j                  d      r|d= t        j                  j                  d	       t        j                  j                  d
       g }t        |j                               D ]/  \  }}|j!                  dd      }d| }	|j#                  ||	g       1 t        j                  j                  t%        ddg|             |rZdj'                  d |j)                         D              }
d|
 }t        j                  j+                  dd| d
dt,         d
f       yy)zGInspect installed packages and recommend packages that might be useful.ignore)categoryNzopentelemetry.instrumentation.rz   rh   r}   rx   zjThe following packages from your environment have an OpenTelemetry instrumentation that is not installed:
r4   r"   -opentelemetry-instrumentation-Packagez%OpenTelemetry instrumentation packager!   c              3  F   K   | ]  }d |j                  dd         yw)r   r"   r   N)replace).0pkgs     r*   	<genexpr>z parse_inspect.<locals>.<genexpr>   s)      ,
Pa,S[[c-B,CDPas   !zpip install z!
To install these packages, run:
z
$ z 
For further information, visit )r   setr~   warningssimplefilterUserWarning	importlibutil	find_specOTEL_PACKAGE_LINKgetr=   r>   r?   sorteditemsr   rP   _pretty_tablerR   values
writelinesINTEGRATIONS_DOCS_URL)rC   packages_to_ignorepackages_to_inspectpackagesr3   otel_packageotel_package_importrowspackage_nameotel_package_nameotel_packages_to_installinstall_commands               r*   parse_inspectr      s   7;{{3t{{#3'*<< ([9!H#>>##D)1(,,T48 >|nM>>##$78@)HTN $ ||K X\\)%<[!||I8<<
#;Y JJ  C  DJJT D$X^^%56l#++C5<\NKT,-. 7 JJ]I/V#WY]^_#&88 ,
PXP_P_Pa,
 $
  ))A(BC

5'r*34I3J"M	
 r,   c                L   t        t        | j                        }t        j                         rQt        t
        t        t                    }t        ||      r,t        j                  j                  dt         d       ydi i}t        j                  j                  d       t        | j                  |      \  }}t        |      j                  }t!        d| d       	 t#        j$                  |d	       t        j                  j                  d
| ddf       t)        | j                  ||      |d   |<   t        j                  j                  d       t        j$                  d      5 }|d   j+                         D ]J  \  }}|j                  d| d       |j                  d|d    d       |j                  d|d    d       L 	 ddd       t        j                  j                  dt         d       y# t"        j&                  $ r Y w xY w# 1 sw Y   KxY w)zpAuthenticate with Logfire.

    This will authenticate your machine with Logfire and store the credentials.
    z;You are already logged in. (Your credentials are stored in z)
Ntokens)r4   u   Welcome to Logfire! 🔥
zBBefore you can send data to Logfire, we need to authenticate you.
r4   zPress Enter to open z in your browser...r   )newzPlease open z7 in your browser to authenticate if it hasn't already.
z0Waiting for you to authenticate with Logfire...
zSuccessfully authenticated!
wz	[tokens."z"]
z	token = "r/   z"
zexpiration = "
expirationz(
Your Logfire credentials are stored in r4   )r	   rS   r8   r   is_filer   r   r   r=   r>   r?   r   r   r:   r
   netlocrT   
webbrowseropenErrorr   r   )	rC   r8   datadevice_codefrontend_auth_urlfrontend_hostfurlinfos	            r*   
parse_authr      s   
 sD,,-KK!=>k*JJZ[gZhhklm%rNJJ	
 &9%T"K"./66M	 /B
CD)q1 JJ,--ef?	
 #1["YDN;JJ45 
		3	1h--/ICGGiuD)*GGiWc23GGnT,%7$8<= 0 
  JJ@bQR'   
 	s   !H  .A!H HHH#c                X   | j                   }t        j                  | j                  |      }|rWt        j
                  j                  t        ddgt        |t        dd            D cg c]  }|d   |d   g c}             yt        j
                  j                  d       yc c}w )	zList user projects.r0   OrganizationProjectorganization_nameproject_name)keyzaNo projects found for the current user. You can create a new project with `logfire projects new`
N)
r8   r   get_user_projectsr:   r=   r>   r?   r   r   r   )rC   r8   projectsprojects       r*   parse_list_projectsr      s    ""K!33DMM[fgH

+ $*(
CVXf8g#h#h 017>3JK#h	
 	

p	
s   *B'c                    	 t        di | d|i}|j                  |       |S # t        $ r}t        d|       |d }~ww xY w)Nr2   z0Invalid credentials, when initializing project:  )r   write_creds_file	TypeErrorr   )project_infor5   r2   rE   es        r*   _write_credentialsr     sX    `(Y<YY$$X. ` #STUSV!WX^__`s   !$ 	A<Ac                J   t        | j                        }| j                  }| j                  }| j                  }| j
                  }t        j                  | j                  ||||      }t        |||      }t        j                  j                  d|j                   d       y)zCreate a new project.)r1   r2   organizationdefault_organizationr   z>Project created successfully. You will be able to view it at: r4   N)r   r5   r8   r   orgdefault_orgr   create_new_projectr:   r   r=   r>   r?   project_url)rC   r5   r8   r   r   r   r   rE   s           r*   parse_create_new_projectr     s    DMM"H""K$$L88L++%88#!1!L %\8[IKJJUVaVmVmUnnpqrr,   c                z   t        | j                        }| j                  }| j                  }| j                  }t        j                  | j                  |      }t        j                  | j                  ||||      }|r;t        |||      }t        j                  j                  d|j                   d       yy)zUse an existing project.r0   )r1   r2   r   r   r   zAProject configured successfully. You will be able to view it at: r4   N)r   r5   r8   r   r   r   r   r:   use_existing_projectr   r=   r>   r?   r   )rC   r5   r8   r   r   r   r   rE   s           r*   parse_use_projectr   +  s    DMM"H""K$$L88L!33DMM[fgH%::#!!L (xM

OP[PgPgOhhjk	
 r,   c           
        ddl m} ddddddd	d
dd	}t        |j                         d      dz   }g }|j	                         D ]  }|j                  }|j                  dd      }|j                  dd      }|j                  |      }	|	|j                  |	||f       |j                  d      sl|j                  |||f        dt         ddt        j                          ddt        j                   ddgd t        |      D        }
t        j                  j                  dj                  |
      dz          y)z2Show versions of logfire, OS and related packages.r   Nr   r                     	   )	rx   pydanticrh   openaiprotobufrichztyping-extensionstomli	executingdefaultName VersionUNKNOWNopentelemetryz	logfire=""z
platform="zpython="z[related_packages]c              3  4   K   | ]  \  }}}| d | d  yw)z="r   Nr   )r   _r3   versions       r*   r   zparse_info.<locals>.<genexpr>l  s'     	Q8P$4AtWTF"WIQ
8Ps   r4   )importlib.metadatametadatamaxr   distributionsr   rP   
startswithr   r#   r=   r   r   r>   r   rR   )_argsimportlib_metadatapackage_names
otel_indexrelated_packagesdistr   r3   r   index
toml_liness              r*   
parse_infor   A  sI   3
 %M( ]))+Q7!;J35"002==||FB',,y)4!!$'##UD'$:;???+##Zw$?@ 3 G9A
X&&()+
3;;-q!	#
 
R?O8P	Q#J JJ$))J/$67r,   c           
        | g|z   D cg c]  ^}}d|z   g| }}}t        t        |d               D cg c]  t        fd|D               }}|D cg c]$  }dj                  d t	        ||      D              & }}dj                  d |D              }|j                  d|       d	j                  |      d	z   S c c}}w c c}w c c}w )
Nr!   r   c              3  :   K   | ]  }t        |           y wN)len)r   rowis     r*   r   z _pretty_table.<locals>.<genexpr>s  s     .##c!f+s   z   | c              3  D   K   | ]  \  }}|j                  |        y wr   )ljust)r   cellwidths      r*   r   z _pretty_table.<locals>.<genexpr>t  s      P?Oe$**U+?Os    z---|-c              3  &   K   | ]	  }d |z    yw)r   Nr   )r   r  s     r*   r   z _pretty_table.<locals>.<genexpr>u  s     ?usU{s   r   r4   )ranger   r   rR   zipinsert)	headerr   firstrestr   widthsr   linesheader_lines	       `    r*   r   r   q  s    6<X_E_\UTS5[ 4 _DE8=c$q'l8KL8K1c...8KFL\`a\`UXW\\Ps3?OPP\`Ea,,???K	LLK 99Ud"" FLas   CC	)Cc                  &    e Zd Z	 d	 	 	 	 	 	 	 ddZy)	SplitArgsNc           	         t        |t              r|j                  d      }t        || j                        xs g }t        || j                  |t        |xs g       z          y )N,)
isinstancerS   splitgetattrdestsetattrlist)selfparser	namespacer   option_stringnamespace_values         r*   __call__zSplitArgs.__call__{  sO     fc"\\#&F%,Y		%B%Hb	499oV\r8J&JKr,   r   )r  zargparse.ArgumentParserr  argparse.Namespacer   zstr | Sequence[Any] | Noner  z
str | None)__name__
__module____qualname__r  r   r,   r*   r  r  z  s7     %)
L'
L &
L +	
L
 "
Lr,   r  c                
	   t        j                  ddd      j                  ddd       j                  d	
      }|j                  dt        t         j
                         j                  fd       j                  dd      }|j                  dt        j                  j                  dd      d   t        j                        }|j                  t               |j                  dt        j                        }|j                  t               |j                  dd       |j                  dddd       |j                  d t        j                        }|j                  t               |j                  d!t        d"       |j                  d#t        j                        }|j                  t               |j                  dd       |j                  d$d%      j                  fd&       j                         }|j                  d'd(      }|j                  t                |j                  d)d*      }	|	j                  d+d,d-.       |	j                  dd       |	j                  d/d0       |	j                  d1dd2       |	j                  t"               |j                  d3d4      }
|
j                  d+d,d-.       |
j                  d/d0       |
j                  dd       |
j                  t$               |j                  d5t&        j                        }|j                  t&               j)                  |       }t+        j,                  t/               6       t+        j0                  t2              }d;d8}|j5                  d9      5  |j6                  rt9                n|j:                  t&        k(  r|j;                  |       nxt=        j>                         5 }tA               }d7tC        jD                  ||:      i|_#        |jH                  jK                  |       ||_&        |j;                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)<Nlogfirer   zUSee https://logfire.pydantic.dev/docs/reference/cli/ for more detailed documentation.)progdescriptionepilogz	--version
store_truezshow the version and exit)actionhelpzglobal options)titlez--logfire-url)r   r*  c                $    j                         S r   
print_help)r   r  s    r*   <lambda>z_main.<locals>.<lambda>  s    v'8'8':r,   )funccommandsr   )r+  metavarauthr4   r   r   )r*  r&  clean)r*  z
--data-dirz.logfirer   z--logsFzremove the Logfire logs)r)  r   r*  inspectz--ignorezignore a packagewhoamir   zProject management for Logfire.c                $    j                         S r   r-  )r   cmd_projectss    r*   r/  z_main.<locals>.<lambda>  s    \-D-D-Fr,   r  zlist projectsr   zcreate a new projectr   ?zproject name)nargsr*  z--orgzproject organizationz--default-orgz9whether to create project under user default organizationusezuse a projectr   )tracer_providerresponsec                F    t         j                  d|| j                         y )Nzcontext=%s url=%s)loggerdebugr   )r=  contextrC   kwargss       r*   log_trace_idz_main.<locals>.log_trace_id  s    ('8<<@r,   zlogfire._internal.cli)rA  )
r=  zrequests.ResponserA  r   rC   r   rB  r   returnNone)'argparseArgumentParseradd_argumentadd_argument_groupr   SUPPRESSset_defaultsadd_subparsers
add_parserr   __doc__r  r[   r   r  rH   r   r   r   r   
parse_argsr   set_tracer_providerr   
get_tracerr   start_as_current_spanr   r+   r0  rx   Sessionr   	functoolspartialhooksheadersupdater:   )rC   global_opts
subparserscmd_auth	cmd_cleancmd_inspect
cmd_whoamiprojects_subparserscmd_projects_listcmd_projects_newcmd_projects_usecmd_infor  tracerrC  r1   rA  r8  r  s                    @@r*   _mainre    s   $$3fF L?Z[++2B+CK_6FXM^M^_
:;&&Z&DJ $$V*2D2D2J2J4QR2STU2Vdndvdv$wHz*%%gK4G4G%HI,<<8L%Ngh''	8M8M'NK-0Z	@RS&&xl6J6J&KJ.L*=((:[(\L#FG&557+66vO6T""(;"<*55eBX5Y!!..!Q!!,
!C!!'0F!G!!3n "  !!'?!@*55e/5R!!..!Q!!'0F!G!!,
!C!!'8!9$$V*2D2D$EHz*!!$'I	.?.ABh'FA 
	%	%&=	>^^z)NN9%!!#w%-!+Y->->|U\-] ^&&w/%,	"y) $ 
?	> $# 
?	>s&   /AQ9 AQ-Q9-Q6	2Q99Rc                    	 t        |        y# t        $ r7 t        j                  j	                  d       t        j
                  d       Y yw xY w)zRun the CLI.zUser cancelled.
r   N)re  KeyboardInterruptr=   r>   r?   rB   )rC   s    r*   mainrh    s;    d 

,-s    =AA)rD  rE  )rC   r  rD  rE  )r   zdict[str, Any]r5   r   r2   rS   rD  r   )r   r  rD  rE  )r	  z	list[str]r   zlist[list[str]]r   )rC   zlist[str] | NonerD  rE  )RrN  
__future__r   rF  rT  r   r   importlib.utilloggingr#   r=   r   r   operatorr   pathlibr   typingr   r   r	   urllib.parser
   rx   r   r   logfire.exceptionsr   logfire.propagater   r   r   r   r3  r   r   r   r   r   r   configr   config_paramsr   	constantsr   rd  r   utilsr   BASE_OTEL_INTEGRATION_URLBASE_DOCS_URLr   mkdirrN   FileHandlerfile_handlersetLevelDEBUGbasicConfig	getLoggerr   r?  r+   rH   r[   STANDARD_LIBRARY_PACKAGESr~   __annotations__r   r   r   r   r   r   r   r   r   Actionr  re  rh  r   r,   r*   <module>r     s   # "        
     & & !   1 9  l l & ' ' % !l 3(/8    D !)+ "w""#34   gmm $   l^7== A			8	$Q*8-4 &y1 """ " 	"
 " " " " " " " " " " "  !"" #"$ %"& '"( )"* +", -". /"0 1"2 3"4 5"6 7"8 9": ;"< ="> ?"@ A"B C"x "F !1-ajk 1
h0Sf
(`s$
,-8`#L LJ*Zr,   