Ë
    úmxi¸X  ã                  ó–  — 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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 ddlmZ ddlmZmZmZmZmZ dd	l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* erddl+mZ, ddl-Z.ddl/m0Z0  e jb                  e2«      Z3de4d<   dZ5de4d<   dZ6de4d<   dZ7de4d<   dZ8de4d<   e9e:e;e   z  eegef   f   Z<de4d<   dZ=de4d<    G d„ de$«      Z>	 	 d+	 	 	 	 	 	 	 	 	 	 	 d,d„Z? G d „ d!«      Z@ G d"„ d#«      ZA eA«       ZBd-d$„ZCd.d%„ZDd/d&„ZE G d'„ d(«      ZF G d)„ d*«      ZGy)0z0Hashing for st.cache_data and st.cache_resource.é    )ÚannotationsN)ÚCallable)ÚEnum)ÚPattern)ÚMappingProxyType)ÚTYPE_CHECKINGÚAnyÚFinalÚ	TypeAliasÚcast)ÚloggerÚ	type_utilÚutil)ÚStreamlitAPIException)ÚUnhashableTypeError)Ú	CacheType)ÚUploadedFile)ÚImager
   Ú_LOGGERiPÃ  Ú_PANDAS_ROWS_LARGEi'  Ú_PANDAS_SAMPLE_SIZEi ¡ Ú_NP_SIZE_LARGEi † Ú_NP_SAMPLE_SIZEr   ÚHashFuncsDicts<   streamlit-57R34ML17-hesamagicalponyflyingthroughthesky-CYCLEÚ_CYCLE_PLACEHOLDERc                  ó^   ‡ — e Zd Z	 d	 	 	 	 	 	 	 	 	 dˆ fd„Z	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Zˆ xZS )ÚUserHashErrorc                óÎ   •— t        |«      j                  | _        || _        || _        | j                  ||«      }t        ‰| �  |«       | j                  |j                  «       y ©N)
ÚtypeÚ__name__Úalternate_nameÚ	hash_funcÚ
cache_typeÚ_get_message_from_funcÚsuperÚ__init__Úwith_tracebackÚ__traceback__)ÚselfÚorig_excÚobject_to_hashr#   r$   ÚmsgÚ	__class__s         €úX/home/htdocs/ttos/venv/lib/python3.12/site-packages/streamlit/runtime/caching/hashing.pyr'   zUserHashError.__init__G   sX   ø€ ô # 8›n×5Ñ5ˆÔØ"ˆŒØ$ˆŒà×)Ñ)¨(°NÓCˆä‰Ñ˜ÔØ×Ñ˜H×2Ñ2Õ3ó    c                óž   — | j                  ||«      }d|d   › d|d   › d|d   › d|d   › d	|d   › d
|d   › d|d   › d�j                  d«      S )Nú
Úorig_exception_descz'

This error is likely due to a bug in Úhash_func_namezB, which is a
user-defined hash function that was passed into the `Úcache_primitivez` decorator of
Úobject_descz.

z( failed when hashing an object of type
`Úfailed_obj_type_strz®`.  If you don't know where that object is coming from,
try looking at the hash chain below for an object that you do recognize, then
pass that to `hash_funcs` instead:

```
Ú
hash_stackz�
```

If you think this is actually a Streamlit bug, please
[file a bug report here](https://github.com/streamlit/streamlit/issues/new/choose).
)Ú_get_error_message_argsÚstrip)r*   r+   Úcached_funcÚargss       r/   r%   z$UserHashError._get_message_from_funcW   s¨   € ð
 ×+Ñ+¨H°kÓBˆðØÐÑÐ ð &à&*Ð+;Ñ&<Ð%=ð >6Ø6:Ð;LÑ6MÐ5Nð OØ€mÑÐ ð àÐÑÐ ð ØÐÑÐð ð
 €lÑÐ ð ð÷& ‰%�‹+ð)	r0   c                óæ  — t         j                  j                  }t        j                  |«      }|€d}nt        |d«      rd|j                  › d�}nd}d}| j                  t        j                  u rd}n| j                  t        j                  u rd}t        | j                  d«      rd| j                  j                  › d�nd}t        |«      |t         j                  j                  «       |||d	œS )
NÚ	somethingr!   ú`z()`z
a functionÚ z@st.cache_resourcez@st.cache_data)r3   r7   r8   r6   r5   r4   )Úhash_stacksÚcurrentÚhash_sourcer   Úget_fqn_typeÚhasattrr!   r$   r   ÚRESOURCEÚDATAr#   ÚstrÚpretty_print)r*   r+   Ú
failed_objrC   r7   r6   Údecorator_namer4   s           r/   r9   z%UserHashError._get_error_message_argst   sè   € ô
 "×)Ñ)×5Ñ5ˆä'×4Ñ4°ZÓ@ÐàÐØ%‰KÜ�[ *Ô-Ø˜k×2Ñ2Ð3°3Ð7‰Kà&ˆKàˆØ�?‰?œi×0Ñ0Ñ0Ø1‰NØ�_‰_¤	§¡Ñ.Ø-ˆNô �t—~‘~ zÔ2ð �—‘×'Ñ'Ð(¨Ñ,àð 	ô $' x£=Ø#6Ü%×-Ñ-×:Ñ:Ó<Ø&Ø-Ø,ñ
ð 	
r0   r   )
r+   ÚBaseExceptionr,   r	   r#   zCallable[[Any], Any]r$   zCacheType | NoneÚreturnÚNone)r+   rL   r;   r	   rM   rH   )r+   rL   rJ   r	   rM   zdict[str, Any])r!   Ú
__module__Ú__qualname__r'   r%   r9   Ú__classcell__)r.   s   @r/   r   r   F   s   ø„ ð (,ð4àð4ð ð4ð (ð	4ð
 %ð4ð 
õ4ð àðð ðð 
ó	ð:#
àð#
ð ð#
ð 
÷	#
r0   r   c                ój   — |t         j                  _        t        ||«      }|j	                  || «       y)zcUpdates a hashlib hasher with the hash of val.

    This is the main entrypoint to hashing.py.
    N)rA   rB   rC   Ú_CacheFuncHasherÚupdate)ÚvalÚhasherr$   rC   Ú
hash_funcsÚchs         r/   Úupdate_hashrY   š   s,   € ð '2„K×ÑÔ#ä	˜* jÓ	1€BØ‡I�Iˆf�cÕr0   c                  ó@   — e Zd ZdZd	d„Zd
d„Zdd„Zd	d„Zdd„Zd
d„Z	y)Ú
_HashStackaî  Stack of what has been hashed, for debug and circular reference detection.

    This internally keeps 1 stack per thread.

    Internally, this stores the ID of pushed objects rather than the objects
    themselves because otherwise the "in" operator inside __contains__ would
    fail for objects that don't return a boolean for "==" operator. For
    example, arr == 10 where arr is a NumPy array returns another NumPy array.
    This causes the "in" to crash since it expects a boolean.
    c                óD   — t        j                  «       | _        d | _        y r   )ÚcollectionsÚOrderedDictÚ_stackrC   ©r*   s    r/   r'   z_HashStack.__init__¸   s   € Ü?J×?VÑ?VÓ?XˆŒð 7;ˆÕr0   c                ó,   — t        j                  | «      S r   ©r   Úrepr_r`   s    r/   Ú__repr__z_HashStack.__repr__¾   ó   € Ü�z‰z˜$ÓÐr0   c                ó4   — || j                   t        |«      <   y r   )r_   Úid©r*   rU   s     r/   Úpushz_HashStack.pushÁ   s   € Ø"ˆ�‰”B�s“GÒr0   c                ó8   — | j                   j                  «        y r   )r_   Úpopitemr`   s    r/   Úpopz_HashStack.popÄ   s   € Ø�‰×ÑÕr0   c                ó0   — t        |«      | j                  v S r   )rg   r_   rh   s     r/   Ú__contains__z_HashStack.__contains__Ç   s   € Ü�#‹w˜$Ÿ+™+Ð%Ð%r0   c                ó‚   ‡— dd„Šdj                  ˆfd„t        | j                  j                  «       «      D «       «      S )Nc                óX   — 	 dt        j                  | «      › d| › �S # t        $ r Y yw xY w)NzObject of type z: z"<Unable to convert item to string>)r   rD   Ú	Exception)Úvs    r/   Úto_strz'_HashStack.pretty_print.<locals>.to_strË   s8   € ð<Ø(¬×)?Ñ)?ÀÓ)BÐ(CÀ2ÀaÀSÐIÐIøÜò <Ù;ð<ús   ‚ �	)¨)r2   c              3  ó.   •K  — | ]  } ‰|«      –— Œ y ­wr   © )Ú.0Úxrs   s     €r/   ú	<genexpr>z*_HashStack.pretty_print.<locals>.<genexpr>Ñ   s   øè ø€ ÒK q™ ŸÑKùs   ƒ)rr   r	   rM   rH   )ÚjoinÚreversedr_   Úvalues)r*   rs   s    @r/   rI   z_HashStack.pretty_printÊ   s1   ø€ ó	<ð �y‰yÓK¬H°T·[±[×5GÑ5GÓ5IÓ,JÔKÓKÐKr0   N©rM   rN   ©rM   rH   )rU   r	   rM   rN   )rU   r	   rM   Úbool)
r!   rO   rP   Ú__doc__r'   rd   ri   rl   rn   rI   ru   r0   r/   r[   r[   ¬   s&   „ ñ	ó;ó ó#óó&ôLr0   r[   c                  ó2   — e Zd ZdZdd„Zdd„Zedd„«       Zy)	Ú_HashStacksz@Stacks of what has been hashed, with at most 1 stack per thread.c                ó6   — t        j                  «       | _        y r   )ÚweakrefÚWeakKeyDictionaryÚ_stacksr`   s    r/   r'   z_HashStacks.__init__×   s   € ä×%Ñ%Ó'ð 	�r0   c                ó,   — t        j                  | «      S r   rb   r`   s    r/   rd   z_HashStacks.__repr__Ü   re   r0   c                óœ   — t        j                  «       }| j                  j                  |d «      }|€t	        «       }|| j                  |<   |S r   )Ú	threadingÚcurrent_threadr…   Úgetr[   )r*   r‰   Ústacks      r/   rB   z_HashStacks.currentß   sE   € ä"×1Ñ1Ó3ˆà—‘× Ñ  °Ó6ˆàˆ=Ü“LˆEØ+0ˆD�L‰L˜Ñ(àˆr0   Nr|   r}   )rM   r[   )r!   rO   rP   r   r'   rd   ÚpropertyrB   ru   r0   r/   r�   r�   Ô   s#   „ ÙJó
ó
 ð ò	ó ñ	r0   r�   c                óV   — | j                  «       dz   dz  }| j                  |dd¬«      S )Né   ÚlittleT)Úsigned)Ú
bit_lengthÚto_bytes)ÚiÚ	num_bytess     r/   Ú_int_to_bytesr•   ï   s,   € Ø—‘“ !Ñ#¨Ñ)€IØ�:‰:�i °$ˆ:Ó7Ð7r0   c                ó.   — dd l }|j                  d| «      S )Nr   z<d)ÚstructÚpack)Úfr—   s     r/   Ú_float_to_bytesrš   ô   s   € ãð �;‰;�t˜QÓÐr0   c                óv  — | €ydd„} || «      r| S t        | t        «      rt        t        || «      «      r| S t        | t        «      r"t        t        || «      «      rdt        | «      fS t        j                  | «      s*t        j                  | «      st        j                  | «      rt        | «      S t        S )zReturn key for memoization.Nc           
     ó€   — t        | t        t        t        t        t
        t        t        j                  f«      xs | d u S r   )	Ú
isinstanceÚbytesÚ	bytearrayrH   ÚfloatÚintr~   ÚuuidÚUUID)Úobjs    r/   Ú	is_simplez_key.<locals>.is_simple  s0   € ä�sœU¤I¬s´E¼3ÄÄdÇiÁiÐPÓQò Ø�dˆ{ð	
r0   Ú__l)r¤   r	   rM   r~   )r�   ÚtupleÚallÚmapÚlistÚinspectÚ	isbuiltinÚ	isroutineÚiscoderg   ÚNoResult)r¤   r¥   s     r/   Ú_keyr°   ü   s—   € ð €{Øó
ñ �„~Øˆ
ä�#”uÔ¤#¤c¨)°SÓ&9Ô":Øˆ
ä�#”tÔ¤¤S¨°CÓ%8Ô!9Ø”u˜S“zÐ"Ð"ä×Ñ˜Ô¤×!2Ñ!2°3Ô!7¼7¿>¹>È#Ô;NÜ�#‹wˆä€Or0   c                  óF   — e Zd ZdZ	 d	 	 	 	 	 d	d„Zd
d„Zdd„Zdd„Zdd„Zy)rS   z+A hasher that can hash objects with cycles.Nc                óî   — |  |rO|j                  «       D ��ci c]-  \  }}t        |t        «      r|nt        j                  |«      |“Œ/ c}}| _        ni | _        i | _        d| _        || _        y c c}}w )Nr   )	Úitemsr�   rH   r   Úget_fqnÚ_hash_funcsÚ_hashesÚsizer$   )r*   r$   rW   Úkrr   s        r/   r'   z_CacheFuncHasher.__init__  su   € ñ 	Ùð '×,Ñ,Ó.÷ á�A�qô   ¤3Ô'‘¬Y×->Ñ->¸qÓ-AÀ1ÑDó ˆDÕð
  "ˆDÔØ)+ˆŒð ˆŒ	à$ˆ�ùó s   ˜2A1c                ó,   — t        j                  | «      S r   rb   r`   s    r/   rd   z_CacheFuncHasher.__repr__3  re   r0   c                óX  — t        |«      j                  j                  «       }|t        |«      f}|d   t        ur|| j
                  v r| j
                  |   S |t        j                  v rt        S t        j                  j                  |«       	 d|| j                  |«      fz  }| xj                  t        j                  |«      z  c_        |d   t        ur|| j
                  |<   t        j                  j                  «        |S # t        j                  j                  «        w xY w)zKAdd memoization to _to_bytes and protect against cycles in data structures.é   s   %s:%s)r    rP   Úencoder°   r¯   r¶   rA   rB   r   ri   Ú	_to_bytesr·   ÚsysÚ	getsizeofrl   )r*   r¤   ÚtnameÚkeyÚbs        r/   r’   z_CacheFuncHasher.to_bytes6  sù   € ä�S“	×&Ñ&×-Ñ-Ó/ˆØ”d˜3“iÐ ˆð ˆq‰6œÑ! c¨T¯\©\Ñ&9Ø—<‘< Ñ$Ð$ð ”+×%Ñ%Ñ%Ü%Ð%ä×Ñ× Ñ  Ô%ð	&à˜E 4§>¡>°#Ó#6Ð7Ñ7ˆAð �IŠIœŸ™ qÓ)Ñ)�Ià�1‰vœXÑ%Ø$%�—‘˜SÑ!ô
 ×Ñ×#Ñ#Ô%àˆøô ×Ñ×#Ñ#Õ%ús   ÂAD	 Ä	 D)c                óH   — | j                  |«      }|j                  |«       y)z6Update the provided hasher with the hash of an object.N)r’   rT   )r*   rV   r¤   rÂ   s       r/   rT   z_CacheFuncHasher.updateW  s   € à�M‰M˜#ÓˆØ�‰�aÕr0   c                óZ  — t        j                  dd¬«      }t        j                  |d«      st        j                  |d«      r| j	                  t        |«      «      S t        |t        t        f«      r|S t        j                  |«      | j                  v r<| j                  t        j                  |«         }	  ||«      }| j	                  |«      S t        |t        «      r|j                  «       S t        |t         «      rt#        |«      S t        |t$        «      rt'        |«      S t        |t(        j*                  «      r|j                  S t        |t,        j,                  «      r|j/                  «       j                  «       S t        |t0        t2        f«      r)|D ]  }| j5                  ||«       Œ |j7                  «       S t        |t8        «      r7|j;                  «       D ]  }| j5                  ||«       Œ |j7                  «       S |€y|d	u ry
|du ryt        |t<        «      s9t?        j@                  |«      r$| j	                  t?        jB                  |«      «      S t        |tD        «      rt        |«      j                  «       S t        j                  |d«      rÂddl#m$} tK        d|«      }| j5                  ||jL                  «       | j5                  ||jN                  jP                  «       tS        |«      tT        k\  r|jW                  tX        d¬«      }	 | j5                  | ||«      j[                  «       j]                  «       «       |j7                  «       S t        j                  |d«      rÄddl#m$} tK        d|«      }	| j5                  ||	jj                  «       tS        |	«      tT        k\  r|	jW                  tX        d¬«      }		 | j	                   ||	jl                  «      «      }
| j5                  ||
«       | j	                   ||	«      «      }| j5                  ||«       |j7                  «       S t        j                  |d«      råddl7}tK        d|«      }| j5                  |t        |jN                  «      j                  «       «       | j5                  ||jj                  «       tS        |«      tT        k\  r|jW                  tX        d¬«      }	 | j5                  ||jq                  d¬«      js                  «       ju                  «       j                  «       «       |j7                  «       S t        j                  |d«      �r/ddl7}tK        d|«      }| j5                  ||jj                  «       tS        |«      tT        k\  r|jW                  tX        d¬«      }	 |jv                  j;                  «       D ]N  \  }}| j5                  ||j                  «       «       | j5                  |t        |«      j                  «       «       ŒP |jy                  d¬«      jq                  d¬«      js                  «       ju                  «       j                  «       }| j5                  ||«       |j7                  «       S t        j                  |d«      rÐtK        d|«      }| j5                  ||jj                  «       | j5                  |t        |jN                  «      «       |jL                  tz        k\  r@ddl>}|j~                  j�                  d«      }|jƒ                  |j„                  t†        ¬ «      }| j5                  ||j]                  «       «       |j7                  «       S t        j                  |d!«      rBddl>}tK        d"|«      }|j‰                  |j]                  «       d#¬$«      }| j	                  |«      S t‹        jŒ                  |«      r#t        |jŽ                  j                  «       «      S t        |t�        t’        j”                  j–                  f«      r| j	                  t9        |«      «      S t        j                  |d%«      r#t        |j˜                  j                  «       «      S t        |tš        «      rl| j5                  ||jP                  «       | j5                  ||j�                  «       «       | j5                  ||jŸ                  «       «       |j7                  «       S t¡        |d&«      r¨t        |t¢        j¤                  t¦        j¨                  f«      r~t«        |d&d'«      }| j5                  ||«       | j5                  |t¬        j®                  j±                  |«      «       | j5                  ||j�                  «       «       |j7                  «       S t        |t²        «      r'| j	                  |j´                  |j¶                  g«      S t        |t¢        j¸                  t¢        jº                  f«      rP| j5                  ||j�                  «       «       | j5                  ||jŸ                  «       «       |j7                  «       S t        j                  |d(«      r#t        |jŽ                  j                  «       «      S t‹        j¼                  |«      r| j	                  |jŽ                  «      S t‹        j¾                  |«      r| j	                  |jŽ                  «      S t        |tÀ        jÂ                  «      rd| j5                  ||jÄ                  «       | j5                  ||jÆ                  «       | j5                  ||jÈ                  «       |j7                  «       S t        jÊ                  |«      r\	 tK        d)|«      }t¡        |d*«      r|jÍ                  «       }n|jÏ                  «       }| j5                  ||«       |j7                  «       S 	 |jÓ                  «       }|D ]  }| j5                  ||«       Œ |j7                  «       S # t        $ r}t        |||| j                  ¬«      |‚d}~ww xY w# t^        $ rA t`        jc                  dd	¬«       dte        jf                  |td        jh                  «      z  cY S w xY w# t^        $ rA t`        jc                  dd	¬«       dte        jf                  |	td        jh                  «      z  cY S w xY w# t^        $ rA t`        jc                  dd	¬«       dte        jf                  |td        jh                  «      z  cY S w xY w# t^        $ rA t`        jc                  dd	¬«       dte        jf                  |td        jh                  «      z  cY S w xY w# t        $ r}tÑ        d+«      |‚d}~ww xY w# t        $ r}tÑ        «       |‚d}~ww xY w),zœHash objects to bytes, including code with dependencies.

        Python's built in `hash` does not produce consistent results across
        runs.
        Úmd5F)Úusedforsecurityzunittest.mock.Mockzunittest.mock.MagicMock)r#   r$   Nó   0Tó   1zpandas.core.series.Seriesr   )Úhash_pandas_objectzpd.Series[Any])ÚnÚrandom_statez?Pandas Series hash failed. Falling back to pickling the object.)Úexc_infos   %szpandas.core.frame.DataFramezpd.DataFramezBPandas DataFrame hash failed. Falling back to pickling the object.zpolars.series.series.Seriesz	pl.Series)rÊ   Úseed)rÍ   z?Polars Series hash failed. Falling back to pickling the object.z polars.dataframe.frame.DataFramezpl.DataFramezBPolars DataFrame hash failed. Falling back to pickling the object.znumpy.ndarrayznpt.NDArray[Any])r·   zPIL.Image.Imager   Úuint8)Údtypezbuiltins.getset_descriptorÚnameÚ
wonthappenznumpy.ufuncr	   Úmodel_dump_jsonze
                    Pydantic object contains unhashable members, such as functions.
                )jÚhashlibÚnewr   Úis_typer’   rg   r�   rž   rŸ   rD   rµ   rq   r   r$   rH   r¼   r    rš   r¡   r•   r¢   r£   ÚdatetimeÚ	isoformatrª   r§   rT   ÚdigestÚdictr³   r    ÚdataclassesÚis_dataclassÚasdictr   Úpandas.utilrÉ   r   r·   rÏ   rÐ   Úlenr   Úsampler   Úto_numpyÚtobytesÚ	TypeErrorr   ÚwarningÚpickleÚdumpsÚHIGHEST_PROTOCOLÚshapeÚdtypesÚpolarsÚhashÚto_arrowÚ	to_stringÚschemaÚ	hash_rowsr   ÚnumpyÚrandomÚRandomStateÚchoiceÚflatr   Ú
frombufferr«   r¬   r!   r   r]   ÚabcÚ	ItemsViewrP   r   ÚtellÚgetvaluerE   ÚioÚIOBaseÚtempfileÚ_TemporaryFileWrapperÚgetattrÚosÚpathÚgetmtimer   ÚpatternÚflagsÚStringIOÚBytesIOÚismoduleÚisclassÚ	functoolsÚpartialr<   ÚfuncÚkeywordsÚis_pydantic_modelrÒ   Újsonr   Ú
__reduce__)r*   r¤   Úhr#   ÚoutputÚexÚitemrÉ   Ú
series_objÚdf_objÚcolumn_hash_bytesÚvalues_hash_bytesÚplÚcÚtÚnp_objÚnpÚstateÚpil_objÚnp_arrayÚobj_nameÚany_objÚ	json_dataÚreduce_datas                           r/   r½   z_CacheFuncHasher._to_bytes\  s¸
  € ô �K‰K˜¨uÔ5ˆä×Ñ˜SÐ"6Ô7¼9×;LÑ;LØÐ*ô<
ð
 —=‘=¤ C£Ó)Ð)ä�cœE¤9Ð-Ô.ØˆJä×!Ñ! #Ó&¨$×*:Ñ*:Ñ:à×(Ñ(¬×)?Ñ)?ÀÓ)DÑEˆIðÙ" 3›�ð
 —=‘= Ó(Ð(ä�cœ3ÔØ—:‘:“<Ðä�cœ5Ô!Ü" 3Ó'Ð'ä�cœ3ÔÜ  Ó%Ð%ä�cœ4Ÿ9™9Ô%Ø—9‘9Ðä�cœ8×,Ñ,Ô-Ø—=‘=“?×)Ñ)Ó+Ð+ä�cœD¤%˜=Ô)Øò %�Ø—‘˜A˜tÕ$ð%à—8‘8“:Ðä�cœ4Ô ØŸ	™	›ò %�Ø—‘˜A˜tÕ$ð%à—8‘8“:Ðàˆ;Øà�$‰;Øà�%‰<Øä˜#œtÔ$¬×)AÑ)AÀ#Ô)FØ—=‘=¤×!3Ñ!3°CÓ!8Ó9Ð9ä�cœ4Ô Ü�s“8—?‘?Ó$Ð$ä×Ñ˜SÐ"=Ô>Ý6äÐ.°Ó4ˆJØ�K‰K˜˜:Ÿ?™?Ô+Ø�K‰K˜˜:×+Ñ+×0Ñ0Ô1ä�:‹Ô"4Ò4Ø'×.Ñ.Ô1DÐSTÐ.ÓU�
ðQØ—‘˜AÑ1°*Ó=×FÑFÓH×PÑPÓRÔSØ—x‘x“zÐ!ô ×Ñ˜sÐ$AÔBÝ6ä#'¨¸Ó#<ˆFØ�K‰K˜˜6Ÿ<™<Ô(ä�6‹{Ô0Ò0ØŸ™Ô)<È1˜ÓM�ðMØ$(§M¡MÑ2DÀVÇ]Á]Ó2SÓ$TÐ!Ø—‘˜AÐ0Ô1Ø$(§M¡MÑ2DÀVÓ2LÓ$MÐ!Ø—‘˜AÐ0Ô1Ø—x‘x“zÐ!ô ×Ñ˜sÐ$AÔBÛä�{ CÓ(ˆCØ�K‰K˜œ3˜sŸy™y›>×0Ñ0Ó2Ô3Ø�K‰K˜˜3Ÿ9™9Ô%ä�3‹xÔ-Ò-Ø—j‘jÔ#6¸Q�jÓ?�ðJØ—‘˜A˜sŸx™x¨Q˜xÓ/×8Ñ8Ó:×DÑDÓF×MÑMÓOÔPØ—x‘x“zÐ!ô ×Ñ˜sÐ$FÕGÛä�~ sÓ+ˆCØ�K‰K˜˜3Ÿ9™9Ô%ä�3‹xÔ-Ò-Ø—j‘jÔ#6¸Q�jÓ?�ðJØŸJ™J×,Ñ,Ó.ò 4‘D�A�qØ—K‘K  1§8¡8£:Ô.Ø—K‘K ¤3 q£6§=¡=£?Õ3ð4ð
 —M‘M q�MÓ)×.Ñ.°AÐ.Ó6×?Ñ?ÓA×KÑKÓM×TÑTÓVð "ð —‘˜AÐ0Ô1Ø—x‘x“zÐ!ô ×Ñ˜s OÔ4Ü'+Ð,>ÀÓ'DˆFØ�K‰K˜˜6Ÿ<™<Ô(Ø�K‰K˜œ3˜vŸ|™|Ó,Ô-à�{‰{œnÒ,Û"àŸ	™	×-Ñ-¨aÓ0�ØŸ™ f§k¡k¼˜ÓH�à�K‰K˜˜6Ÿ>™>Ó+Ô,Ø—8‘8“:Ðä×Ñ˜sÐ$5Ô6Ûä! '¨3Ó/ˆGð —}‘} W§_¡_Ó%6¸g�}ÓFˆHØ—=‘= Ó*Ð*ä×Ñ˜sÔ#Ü˜Ÿ™×,Ñ,Ó.Ó/Ð/ä˜Ô.´·±×0IÑ0IÐJÔKØ—=‘=¤ c£Ó+Ð+ä×Ñ˜sÐ$@ÔAÜ˜×)Ñ)×0Ñ0Ó2Ó3Ð3ä˜œ\Ô*ð �K‰K˜˜3Ÿ8™8Ô$Ø�K‰K˜˜3Ÿ8™8›:Ô&Ø�K‰K˜˜3Ÿ<™<›>Ô*Ø—8‘8“:Ðä�S˜&Ô!ä�sœRŸY™Y¬×(FÑ(FÐGÔHô ˜s F¨LÓ9ˆHØ�K‰K˜˜8Ô$Ø�K‰K˜œ2Ÿ7™7×+Ñ+¨HÓ5Ô6Ø�K‰K˜˜3Ÿ8™8›:Ô&Ø—8‘8“:Ðä˜œWÔ%Ø—=‘= #§+¡+¨s¯y©yÐ!9Ó:Ð:ä˜œbŸk™k¬2¯:©:Ð6Ô7ð �K‰K˜˜3Ÿ8™8›:Ô&Ø�K‰K˜˜3Ÿ<™<›>Ô*Ø—8‘8“:Ðä×Ñ˜s MÔ2ä˜Ÿ™×,Ñ,Ó.Ó/Ð/ä×Ñ˜cÔ"ð —=‘= §¡Ó.Ð.ä�_‰_˜SÔ!ð —=‘= §¡Ó.Ð.ä˜œY×.Ñ.Ô/ð �K‰K˜˜3Ÿ8™8Ô$Ø�K‰K˜˜3Ÿ8™8Ô$Ø�K‰K˜˜3Ÿ<™<Ô(Ø—8‘8“:Ðä×(Ñ(¨Ô-ðô ˜u cÓ*�Ü˜7Ð$5Ô6à '× 7Ñ 7Ó 9‘Ið !(§¡£�IØ—‘˜A˜yÔ)Ø—x‘x“zÐ!ð4Ø!Ÿn™nÓ.�ð $ò %�Ø—‘˜A˜tÕ$ð%à—8‘8“:Ðøôo ò Ü#Ø˜ y¸T¿_¹_ôàðûðûôv ò QÜ—‘ØUØ!ð  ô ð œvŸ|™|¨J¼×8OÑ8OÓPÑPÒPðQûô4 ò MÜ—‘ØXØ!ð  ô ð œvŸ|™|¨F´F×4KÑ4KÓLÑLÒLðMûô0 ò JÜ—‘ØUØ!ð  ô ð œvŸ|™|¨C´×1HÑ1HÓIÑIÒIðJûô< ò JÜ—‘ØXØ!ð  ô ð œvŸ|™|¨C´×1HÑ1HÓIÑIÒIðJûô| ò Ü)ð +ó àðûðûô ò 4Ü)Ó+°Ð3ûð4ús™   Â:p Ì Aq  ÏA+r ÓAs Ö&Ct' î Au4 ïv ð	p=ðp8ð8p=ñ Ar
ò	r
òAsósóAt$ô#t$ô'Au1õ0u1õ4	võ=v	ö	vö	v*öv%ö%v*r   )r$   r   rW   úHashFuncsDict | NonerM   rN   r}   )r¤   r	   rM   rž   )rV   r	   r¤   r	   rM   rN   )	r!   rO   rP   r   r'   rd   r’   rT   r½   ru   r0   r/   rS   rS     s?   „ Ù5ð IMð%Ø#ð%Ø1Eð%à	ó%ó2 óóBô
or0   rS   c                  ó   — e Zd ZdZy)r¯   z<Placeholder class for return values when None is meaningful.N)r!   rO   rP   r   ru   r0   r/   r¯   r¯   Ž  s   „ ÙFàr0   r¯   )NN)rU   r	   rV   r	   r$   r   rC   zCallable[..., Any] | NonerW   r"  rM   rN   )r“   r¡   rM   rž   )r™   r    rM   rž   )r¤   z
Any | NonerM   r	   )Hr   Ú
__future__r   r]   Úcollections.abcrÚ   rÖ   r  rÓ   r«   rù   rþ   rä   r¾   rû   rˆ   r¢   rƒ   r   Úenumr   Úrer   Útypesr   Útypingr   r	   r
   r   r   Ú	streamlitr   r   r   Ústreamlit.errorsr   Ú&streamlit.runtime.caching.cache_errorsr   Ú$streamlit.runtime.caching.cache_typer   Ú'streamlit.runtime.uploaded_file_managerr   Únumpy.typingÚnptÚpandasÚpdÚ	PIL.Imager   Ú
get_loggerr!   r   Ú__annotations__r   r   r   r   rÙ   rH   r    r   r   r   rY   r[   r�   rA   r•   rš   r°   rS   r¯   ru   r0   r/   ú<module>r6     sƒ  ðò 7å "ã Û Û Û Û Û Û Û 	Û 	Û Û 
Û Û Û Û Ý $Ý Ý Ý "ß =Õ =ç -Ñ -Ý 2Ý FÝ :Ý @áÝÛÝà"�×"Ñ" 8Ó,€ˆÓ ,ð #Ð �EÓ "Ø#Ð �UÓ #ð  €�Ó Ø €�Ó  à  d¨3¡i¡°¸3¸%À¸*Ñ1EÐ EÑF€ˆyÓ Fð
 Dð �Eó ô
Q
Ð)ô Q
ðp .2Ø'+ðØ	ðàðð ðð +ð	ð
 %ðð 
ó÷$%Lñ %L÷Pñ ñ0 ‹m€ó8ó
 ó÷6tñ t÷n	ò 	r0   