Ë
    Eêñiée  ã                  óô  — U 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	m
Z
m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mZm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$  ee%«      Z&de'd<   dZ(de'd<   dZ)de'd<   ddddddddddddddœZ*de'd<   g d¢Z+de'd<   d Z,d!Z-d"Z.de'd#<   d$Z/de'd%<   d&Z0de'd'<   d(Z1de'd)<   dDd*„Z2dEd+„Z3 ed,¬-«      dFd.„«       Z4dGd/„Z5 ed,¬-«      dHd0„«       Z6dId1„Z7dId2„Z8 G d3„ d4«      Z9dJd5„Z:dKd6„Z;dLd7„Z< ed8¬-«      dMd9„«       Z=dNd:„Z>	 	 	 	 	 	 	 	 	 	 dOd;„Z?dPd<„Z@ ed=e
d>ef   ¬?«      ZAe	 	 	 	 	 	 dQd@„«       ZBe	 dR	 	 	 	 	 dSdA„«       ZBdRdTdB„ZB	 dR	 	 	 	 	 	 	 	 	 dUdC„ZCy)Vé    )ÚannotationsN)ÚCallableÚSized)Ú	lru_cacheÚwraps)ÚAnyÚFinalÚTypeVarÚcastÚoverload)ÚconfigÚ	file_utilÚ	type_utilÚutil)Ú
get_logger)Ú
ForwardMsg)ÚArgumentÚCommand)ÚRerunException)Úget_script_run_ctxr	   Ú_LOGGERéÈ   Ú_MAX_TRACKED_COMMANDSé   Ú_MAX_TRACKED_PER_COMMANDÚDGÚ	DataFrameÚPandasIndexÚPandasSeriesÚPlotlyFigureÚBokehFigureÚMatplotlibFigureÚPandasStylerÚSnowparkConnectionÚSQLConnection)z(streamlit.delta_generator.DeltaGeneratorzpandas.core.frame.DataFramezpandas.core.indexes.base.Indexzpandas.core.series.Serieszpandas.DataFramezpandas.Indexzpandas.Seriesz plotly.graph_objs._figure.Figurezbokeh.plotting.figure.Figurezmatplotlib.figure.Figurezpandas.io.formats.style.Stylerz<streamlit.connections.snowpark_connection.SnowparkConnectionz2streamlit.connections.sql_connection.SQLConnectionÚ_OBJECT_NAME_MAPPING)¨ÚpymysqlÚMySQLdbÚmysqlÚpymongoÚibisÚboto3Úpsycopg2Úpsycopg3Ú
sqlalchemyÚelasticsearchÚpyodbcÚpymssqlÚ	cassandraÚazureÚredisÚsqlite3Úneo4jÚduckdbÚopensearchpyÚsupabaseÚ
databricksÚpolarsÚdaskÚvaexÚmodinÚpysparkÚcudfÚxarrayÚ	geopandasÚmarsÚtablesÚzarrÚdatasetsÚdaftÚ	mistralaiÚopenaiÚ	langchainÚllama_indexÚ	llama_cppÚ	anthropicÚ
pyllamacppÚcohereÚtransformersÚnomicÚ	diffusersÚsemantic_kernelÚ	replicateÚhuggingface_hubÚwandbÚtorchÚ
tensorflowÚtrubricsÚcomet_mlÚclarifaiÚrekaÚhegelÚfastchatÚ
assemblyaiÚopenllmÚ
embedchainÚhaystackÚvllmÚalpaÚjinaaiÚguidanceÚlitellmÚ	comet_llmÚ
instructorÚxgboostÚlightgbmÚcatboostÚsklearnÚpydantic_aiÚ	datachainÚdoclingÚlitserveÚcrawl4aiÚbaml_clientÚbrowser_useÚcrewaiÚunslothÚ	langgraphÚdspyÚultralyticsrj   ÚragasÚswarmÚfaster_whisperÚmemoriÚautogen_agentchatÚxai_sdkÚagnoÚlangfuseÚ
smolagentsÚollamaÚgroqÚtogetherÚai21ÚmarvinÚoutlinesÚ
guardrailsÚ
promptflowÚsemantic_routerÚmem0ÚaisuiteÚmlflowÚoptunaÚkerasÚjaxÚshapÚ	evidentlyÚgreat_expectationsÚbentomlÚmodalÚ	sagemakerÚvertexaiÚtiktokenÚsentence_transformersÚspacyÚnltkÚonnxruntimeÚllama_api_clientÚprefectÚluigiÚairflowÚdagsterÚceleryÚpgvectorÚfaissÚannoyÚpineconeÚchromadbÚweaviateÚqdrant_clientÚpymilvusÚlancedbÚ	snowflakeÚpydanticÚfastapiÚ	starletteÚ
playwrightÚfoliumrC   ÚhttpxÚ	pyechartsÚfastplotlibÚpygfxÚhighcharts_coreÚseabornÚgraphvizÚ
matplotlibÚuvloopÚorjsonÚrichÚstreamlit_extrasÚstreamlit_pydanticÚ	pygwalkerÚplotlyÚbokehÚplostÚauthlibÚpypdfÚ
pdfplumberÚdocxÚopenpyxlÚ
xlsxwriterÚcv2Ú	mediapipeÚ_ATTRIBUTIONS_TO_CHECKz/etc/machine-idz/var/lib/dbus/machine-id)zdeveloping-with-streamlitzfinding-streamlit-skillsÚ_STREAMLIT_SKILL_NAMESzSKILL.mdÚ_SKILL_MARKER_FILENAME))Úagentsú.agents/skillsrÑ   z.agents)Úclaudeú.claude/skillsrÓ   z.claude)Úcodexú.codex/skillsrÕ   z.codex)Úcortexz.cortex/skillsz.snowflake/cortex/skillsz.snowflake/cortex)Úcursorú.cursor/skillsrØ   z.cursor)Úgeminiú.gemini/skillsrÚ   z.gemini)Úopencodez.opencode/skillsz.config/opencode/skillsz.config/opencodeÚ
_HARNESSESé   Ú_MAX_REPO_ROOT_WALK_DEPTHc                ó<  — t         j                  j                  | «      }t        t        «      D ]k  }t         j                  j                  t         j                  j                  |d«      «      r|c S t         j                  j                  |«      }||k(  r y|}Œm y)uâ  Return the nearest ancestor of ``start`` containing a ``.git`` entry, or ``None``.

    Uses a bounded stdlib ancestor walk rather than ``git.Repo(...)`` from
    GitPython. GitPython's cold import adds ~170ms on first call, which shows
    up on every hosted-app startup via the ``create_page_profile_message``
    code path â€” for a signal that almost always resolves to ``None`` in those
    environments. The stdlib walk is ~1ms cold and returns the same path we
    need.
    z.gitN)ÚosÚpathÚabspathÚrangerÞ   ÚexistsÚjoinÚdirname)ÚstartÚcurrentÚ_Úparents       ú`/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/streamlit/runtime/metrics_util.pyÚ_find_git_rootrì     sv   € ô �g‰g�o‰o˜eÓ$€GÜÔ,Ó-ò ˆÜ�7‰7�>‰>œ"Ÿ'™'Ÿ,™, w°Ó7Ô8ØŠNÜ—‘—‘ Ó)ˆØ�WÒÙØ‰ðð ó    c                ó*   — t        t        | «      «      S )a  Detect Streamlit-shipped agent skills in well-known locations.

    Returns a sorted, deduplicated list of ``"<location>:<harness>:<skill>"``
    tokens. ``location`` is ``home``, ``app``, or ``repo``; ``harness`` is one
    of ``agents``, ``claude``, ``codex``, ``cortex``, ``cursor``, ``gemini``,
    or ``opencode``; ``skill`` is one of ``_STREAMLIT_SKILL_NAMES``.
    Never raises: filesystem errors are swallowed and produce an empty list.

    The result is cached per ``app_dir`` for the lifetime of the process.
    )ÚlistÚ_detect_installed_skills_cached)Úapp_dirs    rë   Ú_detect_installed_skillsrò   "  s   € ô Ô/°Ó8Ó9Ð9rí   é   )Úmaxsizec           
     óª  — 	 t         j                  j                  d«      }| rt         j                  j                  | «      nt        j                  «       }t        |«      }||dœ}|�Dt         j                  j                  |«      t         j                  j                  |«      k7  r||d<   t        «       }|j                  «       D ]Ë  \  }}t        D ]½  \  }}	}
}|dk(  r>t         j                  j                  t         j                  j                  ||«      «      sŒK|dk(  r|
n|	}t        D ]a  }t         j                  j                  |||t        «      }t         j                  j                  |«      sŒI|j                  |› d|› d|› �«       Œc Œ¿ ŒÍ t!        t#        |«      «      S # t$        $ r!}t&        j)                  d|¬«       Y d }~yd }~ww xY w)	Nú~)ÚhomeÚappÚrepor÷   ú:z+Failed to detect installed Streamlit skills©Úexc_info© )rà   rá   Ú
expanduserrâ   Úgetcwdrì   ÚnormcaseÚsetÚitemsrÜ   Úisdirrå   rÎ   rÏ   ÚisfileÚaddÚtupleÚsortedÚ	Exceptionr   Údebug)rñ   r÷   rø   rù   ÚrootsÚtokensÚlocationÚrootÚharnessÚproject_dirÚhome_skills_dirÚagent_home_dirÚharness_dirÚskillÚmarkerÚexs                   rë   rð   rð   0  sŒ  € ð Ü�w‰w×!Ñ! #Ó&ˆÙ*1Œb�g‰g�o‰o˜gÔ&´r·y±y³{ˆÜ˜cÓ"ˆà)-°cÑ :ˆð Ð¤§¡× 0Ñ 0°Ó 6¼"¿'¹'×:JÑ:JÈ3Ó:OÒ OØ ˆE�&‰Mä›5ˆØ#Ÿk™k›mò 	D‰NˆH�dÜISò DÑE�˜ o°~ð ˜vÒ%¬b¯g©g¯m©mÜ—G‘G—L‘L  ~Ó6ô/ð Ø19¸VÒ1C™oÈ�Ü3ò D�EÜŸW™WŸ\™\Ø˜k¨5Ô2Hó�Fô —w‘w—~‘~ fÕ-ØŸ
™
 h Z¨q°°	¸¸5¸'Ð#BÕCñDñDð	Dô  ”V˜F“^Ó$Ð$øÜò Ü�‰ÐCÈbˆÔQÜûðús   ‚E2F( Å52F( Æ(	GÆ1GÇGc                 ó(   — t        t        «       «      S )aü  Detect agent harnesses installed under the user's home directory.

    Returns a sorted, deduplicated list of harness name tokens (``agents``,
    ``claude``, ``codex``, ``cortex``, ``cursor``, ``gemini``, ``opencode``)
    for each harness whose home-level config directory exists. Independent
    of whether Streamlit-specific skills are installed for that harness.

    The result is cached for the lifetime of the process. Never raises:
    filesystem errors are swallowed and produce an empty list.
    )rï   Ú_detect_installed_agents_cachedrý   rí   rë   Ú_detect_installed_agentsr  U  s   € ô Ô/Ó1Ó2Ð2rí   c                 ó–  — 	 t         j                  j                  d«      } t        «       }t        D ]V  \  }}}}t         j                  j                  t         j                  j                  | |«      «      sŒF|j                  |«       ŒX t        t        |«      «      S # t        $ r!}t        j                  d|¬«       Y d }~yd }~ww xY w)Nrö   z!Failed to detect installed agentsrû   rý   )rà   rá   rþ   r  rÜ   r  rå   r  r  r  r  r   r	  )r÷   r  r  Ú_project_dirÚ_home_skills_dirr  r  s          rë   r  r  c  s›   € ð	Ü�w‰w×!Ñ! #Ó&ˆÜ›5ˆÜGQò 	$ÑCˆG�\Ð#3°^Ü�w‰w�}‰}œRŸW™WŸ\™\¨$°Ó?Õ@Ø—
‘
˜7Õ#ð	$ô ”V˜F“^Ó$Ð$øÜò Ü�‰Ð9ÀBˆÔGÜûðús   ‚A4B Á7&B Â	CÂ'CÃCc                 ó°  — t         j                  j                  t        «      r,t	        t        d¬«      5 } | j                  «       }ddd«       |S t         j                  j                  t        «      r,t	        t        d¬«      5 } | j                  «       }ddd«       |S t        t        j                  «       «      }|S # 1 sw Y   S xY w# 1 sw Y   S xY w)aD  Get the machine ID.

    This is a unique identifier for a user for tracking metrics,
    that is broken in different ways in some Linux distros and Docker images.
    - at times just a hash of '', which means many machines map to the same ID
    - at times a hash of the same string, when running in a Docker container
    zutf-8)ÚencodingN)
rà   rá   r  Ú_ETC_MACHINE_ID_PATHÚopenÚreadÚ_DBUS_MACHINE_ID_PATHÚstrÚuuidÚgetnode)ÚfÚ
machine_ids     rë   Ú_get_machine_id_v3r'  q  s°   € ô 
‡w�w‡~�~Ô*Ô+ÜÔ&°Ô9ð 	"¸QØŸ™›ˆJ÷	"ð Ðô 
�‰�‰Ô-Ô	.ÜÔ'°'Ô:ð 	"¸aØŸ™›ˆJ÷	"ð Ðô œŸ™›Ó(ˆ
àÐ÷	"ð Ðú÷	"ð Ðús   µB>ÂCÂ>CÃCc                 óÌ  — t        j                  d«      syt        j                  d«      } d}t        j
                  j                  | «      r.t        j                  | «      5 }|j                  «       }ddd«       |sNt        t        j                  «       «      }t        j                  | «      5 }|j                  |«       ddd«       |S |S # 1 sw Y   Œ[xY w# 1 sw Y   |S xY w)a  Get a random ID that is stable for each machine, generating if needed.

    This is a unique identifier for a user for tracking metrics.
    Instead of relying on a hardware address in the container or host we'll
    generate a UUID and store it in the ~/.streamlit hidden folder.
    zbrowser.gatherUsageStatszno-machine-id-v4Úmachine_id_v4N)r   Ú
get_optionr   Úget_streamlit_file_pathrà   rá   rä   Ústreamlit_readr   r"  r#  Úuuid4Ústreamlit_writeÚwrite)ÚfilepathÚ	stable_idÚfileÚoutputs       rë   Ú_get_machine_id_v4r4  ˆ  sÃ   € ô ×ÑÐ7Ô8ð "ä×0Ñ0°ÓA€HØ€Iä	‡w�w‡~�~�hÔÜ×%Ñ% hÓ/ð 	$°4ØŸ	™	›ˆI÷	$ñ ÜœŸ
™
›Ó%ˆ	Ü×&Ñ& xÓ0ð 	$°FØ�L‰L˜Ô#÷	$ð Ðˆ9Ð÷	$ð 	$ú÷
	$ð Ðús   Á"CÂ/CÃCÃC#c                  ór   — e Zd ZU  ej                  «       ZdZded<   edd„«       Z	d	d„Z
d
d„Zed
d„«       Zy)ÚInstallationNzInstallation | NoneÚ	_instancec                óØ   — | j                   €<| j                  5  | j                   €t        «       | _         ddd«       | j                   S | j                   S # 1 sw Y   | j                   S xY w)z#Returns the singleton Installation.N)r7  Ú_instance_lockr6  )Úclss    rë   ÚinstancezInstallation.instanceª  s[   € ð �=‰=Ð Ø×#Ñ#ñ 3Ø—=‘=Ð(Ü$0£N�C”M÷3ð �}‰}Ðˆs�}‰}Ð÷	3ð �}‰}Ðús   ™AÁA)c                ó–   — t        t        j                  t        j                  t	        «       «      «      | _        t        «       | _        y ©N)r"  r#  Úuuid5ÚNAMESPACE_DNSr'  Úinstallation_id_v3r4  Úinstallation_id_v4©Úselfs    rë   Ú__init__zInstallation.__init__·  s4   € Ü"%Ü�J‰J”t×)Ñ)Ô+=Ó+?Ó@ó#
ˆÔô #5Ó"6ˆÕrí   c                ó,   — t        j                  | «      S r=  )r   Úrepr_rB  s    rë   Ú__repr__zInstallation.__repr__¾  s   € Ü�z‰z˜$ÓÐrí   c                ó   — | j                   S r=  )r@  rB  s    rë   Úinstallation_idzInstallation.installation_idÁ  s   € à×&Ñ&Ð&rí   )Úreturnr6  )rJ  ÚNone©rJ  r"  )Ú__name__Ú
__module__Ú__qualname__Ú	threadingÚLockr9  r7  Ú__annotations__Úclassmethodr;  rD  rG  ÚpropertyrI  rý   rí   rë   r6  r6  ¦  sK   … Ø#�Y—^‘^Ó%€NØ%)€IÐ"Ó)àò
ó ð
ó7ó ð ò'ó ñ'rí   r6  c                óp  — t        j                  t        «      5  t        j                  | «      r| n
t        | «      }d}t        |d«      r|j                  }nt        |d«      r|j                  }|j                  dk7  r|j                  › d|› �}|t        v r	t        |   }|cddd«       S # 1 sw Y   yxY w)z7Get a simplified name for the type of the given object.ÚunknownrO  rM  Úbuiltinsú.NÚfailed)Ú
contextlibÚsuppressr  ÚinspectÚisclassÚtypeÚhasattrrO  rM  rN  r&   )ÚobjÚobj_typeÚ	type_names      rë   Ú_get_type_namerc  Æ  sª   € ä	×	Ñ	œYÓ	'ñ Ü!Ÿ/™/¨#Ô.‘3´D¸³IˆØˆ	Ü�8˜^Ô,Ø ×-Ñ-‰IÜ�X˜zÔ*Ø ×)Ñ)ˆIà×Ñ *Ò,à#×.Ñ.Ð/¨q°°Ð<ˆIàÔ,Ñ,Ü,¨YÑ7ˆIØ÷÷ ñ ð ús   šBB,Â,B5c                ó†   — t        j                  | «      }|�|j                  sy|j                  j                  d«      d   S )z0Get the top level module for the given function.rV  rX  r   )r\  Ú	getmodulerM  Úsplit)ÚfuncÚmodules     rë   Ú_get_top_level_moduleri  Ú  s:   € ä×Ñ˜tÓ$€FØ€~˜VŸ_š_ØØ�?‰?× Ñ  Ó% aÑ(Ð(rí   c                óì   — t        j                  t        «      5  t        | t        «      rd| › �cddd«       S t        | t
        «      rdt        | «      › �cddd«       S 	 ddd«       y# 1 sw Y   yxY w)zBGet metadata information related to the value of the given object.zval:Nzlen:)rZ  r[  r  Ú
isinstanceÚboolr   Úlen)Úargs    rë   Ú_get_arg_metadataro  â  sp   € ä	×	Ñ	œYÓ	'ñ %Ü�cœDÔ"Ø˜#˜�<÷%ñ %ô �cœ5Ô!Øœ#˜c›(˜Ð$÷%ñ %ð "÷	%ð ÷%ð ús   šA*¹A*Á*A3é   c                óP   — t        j                  | «      }t        d„ |D «       «      S )up  Return POSITIONAL_ONLY and POSITIONAL_OR_KEYWORD parameter names as an immutable tuple.

    Results are cached by function identity. Callers must pass ``func.__func__``
    for bound methods â€” this function operates on unbound callables only.

    On Python 3.14+, PEP 649 causes annotation evaluation to be deferred until
    accessed. This can fail with NameError when annotations reference types
    imported under TYPE_CHECKING. Since we only need parameter names (not
    annotations), we use ``annotation_format=Format.STRING`` to avoid evaluation.

    See: https://github.com/streamlit/streamlit/issues/14324
    c              3  ó´   K  — | ]P  }|j                   t        j                  j                  t        j                  j                  hv r|j
                  –— ŒR y ­wr=  )Úkindr\  Ú	ParameterÚPOSITIONAL_ONLYÚPOSITIONAL_OR_KEYWORDÚname)Ú.0Úps     rë   ú	<genexpr>z+_get_arg_keywords_cached.<locals>.<genexpr>ý  sI   è ø€ ò àØ�6‰6Ü×Ñ×-Ñ-¬w×/@Ñ/@×/VÑ/VÐWñXð 	
��ñùs   ‚AA)r   Úget_func_parametersr  )rg  Úparamss     rë   Ú_get_arg_keywords_cachedr}  î  s.   € ô ×*Ñ*¨4Ó0€FÜñ àôó ð rí   c                ó�   — t        j                  | «      rt        t        | j                  «      «      S t        t        | «      «      S )aZ  Return argument names from a function's signature.

    This returns argument names matching the behavior of getfullargspec().args:
    - Both POSITIONAL_ONLY and POSITIONAL_OR_KEYWORD parameters (not keyword-only)
    - Includes 'self' for bound methods

    Uses caching to avoid repeated expensive inspect.signature() calls.

    Note: The underlying LRU cache holds strong references to function objects.
    This is fine for typical Streamlit usage with module-level functions, but
    dynamically created callables (e.g., closures, partials) may be retained
    until evicted from the cache.
    )r\  Úismethodrï   r}  Ú__func__)rg  s    rë   Ú_get_arg_keywordsr�    s8   € ô" ×Ñ˜ÔÜÔ,¨T¯]©]Ó;Ó<Ð<ÜÔ(¨Ó.Ó/Ð/rí   c                óæ  — t        | «      }d}g }t        j                  | «      }|}t        |«      D ]h  \  }	}
|	}|r|	dz  }	t	        |«      |	kD  r||	   n|	› }|dk(  r|
}Œ-t        |t        |
«      |¬«      }t        |
«      }|r||_        |j                  |«       Œj |j                  «       D ]@  \  }}t        |t        |«      ¬«      }t        |«      }|r||_        |j                  |«       ŒB t        | «      }|dk7  rd|› d|› �}|d	k(  r)|r't        |d
«      r|j                  rd|j                  › �}|dk(  r+t	        |«      dkD  rt        |d   t        «      r
|d   }d|› �}t!        ||¬«      S )zCGet telemetry information for the given callable and its arguments.Nró   rC  )ÚkÚtry  )rƒ  r„  Ú	streamlitz	external:rú   Úcreate_instancerw  z
component:Ú_bidi_componentzcomponent_v2:)rw  Úargs)r�  r\  r  Ú	enumeraterm  r   rc  ro  ÚmÚappendr  ri  r_  rw  rk  r"  r   )Ú_command_funcÚ_command_namerˆ  ÚkwargsÚarg_keywordsÚself_argÚ	argumentsÚ	is_methodrw  Úirn  ÚposÚkeywordÚargumentÚarg_metadataÚkwargÚkwarg_valueÚtop_level_moduleÚcomponent_names                      rë   Ú_get_command_telemetryrœ    s¡  € ô % ]Ó3€LØ€HØ "€IÜ× Ñ  Ó/€IØ€Dä˜D“/ò #‰ˆˆ3ØˆÙà�‰FˆAä%(¨Ó%6¸Ò%:�,˜q’/À1À#ˆØ�fÒØˆHØÜ˜g¬¸Ó)<ÀÔDˆä(¨Ó-ˆÙØ%ˆHŒJØ×Ñ˜Õ"ð#ð  %Ÿl™l›nò #Ñˆˆ{Ü˜e¤~°kÓ'BÔCˆä(¨Ó5ˆÙØ%ˆHŒJØ×Ñ˜Õ"ð#ô -¨]Ó;ÐØ˜;Ò&ð Ð+Ð,¨A¨d¨VÐ4ˆð 	Ð!Ò!ÙÜ�H˜fÔ%Ø�MŠMà˜HŸM™M˜?Ð+ˆàÐ Ò ¤S¨£Y°¢]´zÀ$ÀqÁ'Ì3Ô7Oð ˜a™ˆØ˜~Ð.Ð/ˆä˜ 9Ô-Ð-rí   c                ó   — t        | dz  «      S )z"Convert seconds into microseconds.i@B )Úint)Úsecondss    rë   Úto_microsecondsr   T  s   € äˆw˜Ñ"Ó#Ð#rí   ÚF.)Úboundc                 ó   — y r=  rý   ©rw  rg  s     rë   Úgather_metricsr¥  \  s   € ð 	rí   c                 ó   — y r=  rý   r¤  s     rë   r¥  r¥  c  s   € ð rí   c                óv  ‡ ‡— ‰ st         j                  d«       dŠ |€dˆ fd„}|S |Št        ‰«      dˆ ˆfd„«       }t        j                  t
        t        «      5  |j                  j                  ‰j                  «       t        j                  ‰«      |_        ddd«       t        d|«      S # 1 sw Y   ŒxY w)	a³  Function decorator to add telemetry tracking to commands.

    Parameters
    ----------
    name : str
        The name to use for telemetry tracking.
    func : callable or None
        The function to track for telemetry. If ``None`` (default), returns a
        decorator that can be applied to a function.

    Examples
    --------
    >>> @st.gather_metrics("my_command")
    ... def my_command(url):
    ...     return url
    zgather_metrics: name is emptyÚ	undefinedNr¡  c                ó   •— t        ‰| ¬«      S )Nr¤  )r¥  )r%  rw  s    €rë   Úwrapperzgather_metrics.<locals>.wrapper‚  s   ø€ Ü!ØØôð rí   c                 ó$  •— ddl m}  |«       }t        d¬«      }|d uxr9 |j                  xr+ |j                   xr t        |j                  «      t        k  }d }d}|r•|r“	 t        ‰‰
g| ¢­i |¤Ž}|j                  |j                  vs |j                  |j                     t        k  r|j                  j                  |«       |j                  j                  |j                  g«       d|_        d}	  ‰| i |¤Ž}		 |r
|rd|_        	 |r|rt%         |«       |z
  «      |_        |	S # t        $ r!}t        j!                  d|¬«       Y d }~ŒYd }~ww xY w# t"        $ r |r|rt%         |«       |z
  «      |_        ‚ w xY w# |r|rd|_        w w w xY w)Nr   )Údefault_timerT)Úsuppress_warningFz#Failed to collect command telemetryrû   )Útimeitr¬  r   Úgather_usage_statsÚcommand_tracking_deactivatedrm  Útracked_commandsr   rœ  rw  Útracked_commands_counterr   r‹  Úupdater  r   r	  r   r   Útime)rˆ  rŽ  ÚtimerÚ
exec_startÚctxÚtracking_activatedÚcommand_telemetryÚ$has_set_command_tracking_deactivatedr  Úresultrw  Únon_optional_funcs             €€rë   Úwrapped_funcz$gather_metrics.<locals>.wrapped_funcŒ  sË  ø€ å1á“Wˆ
Ü °$Ô7ˆð �tˆOò $Ø×&Ñ&ò$à×4Ñ4Ð4ò$ô �C×(Ñ(Ó)Ü#ñ$ð	 	ð -1Ðð
 05Ð,áÑ%ðRÜ$:Ø% tð%Ø.2ò%Ø6<ñ%Ð!ð
 &×*Ñ*°#×2NÑ2NÑNØ×3Ñ3Ð4E×4JÑ4JÑKÜ.ò/ð ×(Ñ(×/Ñ/Ð0AÔBØ×,Ñ,×3Ñ3Ð5F×5KÑ5KÐ4LÔMà37�Ô0ð 8<Ð4ð
	9Ù&¨Ð7°Ñ7‰Fñ Ñ;Ø38�Õ0áÑ"3ä%4±U³W¸zÑ5IÓ%JÐÔ"àˆøô/ ò Rô —‘ÐCÈb�×QÑQûðRûô ò 	ñ "Ñ&7Ü)8¹»À:Ñ9MÓ)NÐ!Ô&Øð	ûñ Ñ;Ø38�Õ0ð <ˆsús1   Á#BD) Ã6E Ä)	EÄ2EÅEÅ'E=Å=F  Æ F)r%  r¡  rJ  r¡  )rˆ  r   rŽ  r   rJ  r   )r   Úwarningr   rZ  r[  ÚAttributeErrorÚ	NameErrorÚ__dict__r³  r\  Ú	signatureÚ__signature__r   )rw  rg  rª  r½  r¼  s   `   @rë   r¥  r¥  j  sµ   ù€ ñ$ Ü�‰Ð7Ô8Øˆà€|õ	ð ˆàÐä
ÐÓõ?ó ð?ôB 
×	Ñ	œ^¬YÓ	7ñ Jð
 	×Ñ×$Ñ$Ð%6×%?Ñ%?Ô@Ü%,×%6Ñ%6Ð7HÓ%IˆÔ"÷Jô ��\Ó"Ð"÷Jð Jús   ÁA B/Â/B8c                óˆ  — t        «       }|j                  }|j                  j                  | «       ||_        ||_        t        j                  d«      |_        t        j                  rt        j                  |_
        t        «       }t        j                  r`t        j                  D ]M  }t        j                  |«      sŒt        j                  |   }|j                  |j                  r|› d�n|«       ŒO |j                  j                  |«       t         D �	ch c]  }	|	t"        j$                  v r|	’Œ }
}	t'        t"        j(                  «      |_        t'        t,        j.                  «      |_        |j2                  j                  |
«       |r||_        d}t7        «       x}rOt9        |j:                  «      |_        |j>                  r)t*        j@                  jC                  |j>                  «      }|jD                  j                  tG        |«      «       |jH                  j                  tK        «       «       |S c c}	w )z2Create and return the full PageProfile ForwardMsg.zserver.headlessz:defaultN)&r   Úpage_profileÚcommandsÚextendÚ	exec_timeÚ	prep_timer   r*  ÚheadlessÚ_server_modeÚserver_moder  Ú_config_optionsÚis_manually_setr  Ú
is_defaultrÍ   ÚsysÚmodulesr"  Úplatformrà   r´  ÚtznameÚtimezoneÚattributionsÚuncaught_exceptionr   rl  Úfragment_ids_this_runÚis_fragment_runÚmain_script_pathrá   ræ   Úinstalled_skillsrò   Úinstalled_agentsr  )rÆ  rÈ  rÉ  rÖ  ÚmsgrÅ  Úconfig_optionsÚoption_nameÚconfig_optionÚattributionrÕ  rñ   r·  s                rë   Úcreate_page_profile_messagerá  Ø  s×  € ô ‹,€CØ×#Ñ#€Là×Ñ× Ñ  Ô*Ø&€LÔØ&€LÔä"×-Ñ-Ð.?Ó@€LÔô ×ÒÜ#)×#6Ñ#6ˆÔ ô  #›u€NÜ×ÒÜ!×1Ñ1ò 	ˆKÜ×)Ñ)¨+Ô6àä"×2Ñ2°;Ñ?ˆMØ×ÑØ,9×,DÒ,D�;�-˜xÑ(È+õð	ð ×Ñ×Ñ˜~Ô.ô
 2öàØœ#Ÿ+™+Ñ%ò 	ð€Lð ô œ#Ÿ,™,Ó'€L„OÜ¤§¡Ó,€LÔØ×Ñ×$Ñ$ \Ô2áØ*<ˆÔ'à€GÜ Ó"Ð"€sÐ"Ü'+¨C×,EÑ,EÓ'FˆÔ$Ø×ÒÜ—g‘g—o‘o c×&:Ñ&:Ó;ˆGà×!Ñ!×(Ñ(Ô)AÀ'Ó)JÔKØ×!Ñ!×(Ñ(Ô)AÓ)CÔDà€Jùò-s   ÄH?)rç   r"  rJ  ú
str | None)rñ   râ  rJ  ú	list[str])rñ   râ  rJ  útuple[str, ...])rJ  rã  )rJ  rä  rL  )r`  ÚobjectrJ  r"  )rg  úCallable[..., Any]rJ  r"  )rn  rå  rJ  râ  )rg  ræ  rJ  rä  )rg  ræ  rJ  rã  )
rŒ  ræ  r�  r"  rˆ  r   rŽ  r   rJ  r   )rŸ  ÚfloatrJ  rž  )rw  r"  rg  r¡  rJ  r¡  r=  )rw  r"  rg  rK  rJ  zCallable[[F], F])rw  r"  rg  zF | NonerJ  zCallable[[F], F] | F)
rÆ  zlist[Command]rÈ  rž  rÉ  rž  rÖ  râ  rJ  r   )DÚ
__future__r   rZ  r\  rà   rÐ  rP  r´  r#  Úcollections.abcr   r   Ú	functoolsr   r   Útypingr   r	   r
   r   r   r…  r   r   r   r   Ústreamlit.loggerr   Ústreamlit.proto.ForwardMsg_pb2r   Ústreamlit.proto.PageProfile_pb2r   r   Ú/streamlit.runtime.scriptrunner_utils.exceptionsr   Ú7streamlit.runtime.scriptrunner_utils.script_run_contextr   rM  r   rR  r   r   r&   rÍ   r  r!  rÎ   rÏ   rÜ   rÞ   rì   rò   rð   r  r  r'  r4  r6  rc  ri  ro  r}  r�  rœ  r   r¡  r¥  rá  rý   rí   rë   ú<module>rñ     sf  ðö #ã Û Û 	Û 
Û Û Û ß +ß &ß 6Õ 6ç 8Ó 8Ý 'Ý 5ß =Ý JÝ Vá˜HÓ%€ˆÓ %ð  #Ð �uÓ "ð #%Ð ˜%Ó $ð 15à#.Ø&3Ø!/à#Ø!Ø#Ø(6Ø$1Ø 2Ø&4ØDXØ:IñÐ �eó ò&r!Ð ˜ó rðh )Ð Ø2Ð ð!Ð ˜ó ð !+Ð ˜Ó *ð€
ˆEó ð $&Ð ˜5Ó %óó*:ñ �1Ôò!ó ð!óH3ñ �1Ôò
ó ð
óó.÷<'ñ 'ó@ó()ó	ñ �3Ôòó ðó,0ð,6.Ø%ð6.Ø69ð6.ØBEð6.ØQTð6.àó6.ór$ñ
 ˆC�x  S Ñ)Ô*€ð 
ðØ
ðà
ðð òó 
ðð 
ð ðØ
ðà
ðð òó 
ðôk#ðd &*ð	:Øð:àð:ð ð:ð #ð	:ð
 ô:rí   