Ë
    ÂH¦jö-  ã                  ój  — U d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	 d dl
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mZ dZd	Zd
Zg d¢Zded<    ej8                  d«      Z ed¬«       G d„ d«      «       Zddd„Z	 d	 	 	 d d„Z d!d„Z!d"d„Z"d#d„Z#d$d„Z$d%d„Z%d&d'd„Z&	 	 	 	 d(d„Z'	 	 	 	 d)d„Z(y)*é    )Úannotations)ÚThreadPoolExecutorÚas_completed)Ú	dataclass)ÚdateÚ	timedeltaN)ÚPathé   )ÚSettingsz4https://datacenter-web.eastmoney.com/api/data/v1/getz7https://np-anotice-stock.eastmoney.com/api/security/ann))ÚAUDIT_ADVERSEÚhardu   æ— æ³•è¡¨ç¤ºæ„�è§�|å�¦å®šæ„�è§�)ÚAUDIT_QUALIFIEDÚwarninguH   ä¿�ç•™æ„�è§�|é�žæ ‡å‡†å®¡è®¡æ„�è§�|é�žæ ‡å®¡è®¡æ„�è§�|é�žæ— ä¿�ç•™æ„�è§�)ÚREGULATORY_MAJORr   uL   ç«‹æ¡ˆå‘ŠçŸ¥ä¹¦|ç«‹æ¡ˆè°ƒæŸ¥|è¡Œæ”¿å¤„ç½šå†³å®šä¹¦|å…¬å¼€è°´è´£|çºªå¾‹å¤„åˆ†)ÚREGULATORY_WARNINGr   u3   è­¦ç¤ºå‡½|é‡‡å�–ç›‘ç®¡æŽªæ–½|è´£ä»¤æ”¹æ­£|ç›‘ç®¡å‡½)ÚFUNDS_OCCUPANCYr   uK   é�žç»�è�¥æ€§èµ„é‡‘å� ç”¨|è¿�è§„èµ„é‡‘å� ç”¨|èµ„é‡‘å� ç”¨äº‹é¡¹|è¿�è§„æ‹…ä¿�)ÚMAJOR_LITIGATION_DEBTr   u@   é‡�å¤§è¯‰è®¼|é‡�å¤§ä»²è£�|å€ºåŠ¡é€¾æœŸ|ç”³è¯·é‡�æ•´|ç ´äº§é‡�æ•´)ÚDELISTING_RISKr   uA   å�¯èƒ½è¢«ç»ˆæ­¢ä¸Šå¸‚|é‡�å¤§è¿�æ³•å¼ºåˆ¶é€€å¸‚|é€€å¸‚é£Žé™©è­¦ç¤ºzlist[tuple[str, str, str]]ÚRISK_PATTERNSuY   å½±å“�æ¶ˆé™¤|äº‹é¡¹æ¶ˆé™¤|æ¸…å�¿å®Œæ¯•|æ•´æ”¹å®Œæˆ�|æ’¤é”€é£Žé™©è­¦ç¤º|è§£é™¤é£Žé™©è­¦ç¤ºT)Úfrozenc                  ó@   — e Zd ZU ded<   ded<   ded<   ded<   ded<   y	)
ÚGovernanceBuildResultÚintÚpledge_rowsÚannouncement_rowsÚ
risk_flagsÚboolÚ	refreshedr	   Úoutput_pathN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    ú9C:\FundamentalWorkbench\src\fundamental_mvp\governance.pyr   r   #   s   … àÓØÓØƒOØƒOØÔr%   r   c                óü  — | dz   t         j                  j                  |«      z   }t         j                  j	                  |dddœ¬«      }d }t        |«      D ]R  }	 t         j                  j                  |d¬«      5 }t        j                  |j                  «       «      cd d d «       c S  t        d
|d d › �«      |‚# 1 sw Y   nxY wŒt# t        $ r'}|}t        j                  d|d	z   z  «       Y d }~ŒŸd }~ww xY w)NÚ?z<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36zhttps://data.eastmoney.com/)z
User-AgentÚReferer)Úheadersé   )Útimeoutg      à?r
   u   æ•°æ�®è¯·æ±‚å¤±è´¥: é´   )ÚurllibÚparseÚ	urlencodeÚrequestÚRequestÚrangeÚurlopenÚjsonÚloadsÚreadÚ	ExceptionÚtimeÚsleepÚRuntimeError)	ÚurlÚparamsÚretriesÚrequest_urlr1   Ú
last_errorÚattemptÚresponseÚexcs	            r&   Ú	_get_jsonrD   ,   sè   € Ø˜‘)œfŸl™l×4Ñ4°VÓ<Ñ<€KÜ�n‰n×$Ñ$ [ØTØ0ñ;Ð$ó €Gð $(€JÜ˜–>ˆð	,Ü—‘×'Ñ'¨¸Ð'Ô<ÀÜ—z‘z (§-¡-£/Ó2÷ =Ó<ð "ô Ð-¨k¸$¸3Ð.?Ð-@ÐAÓ
BÈ
ÐR÷ =Ð<úÐ<øäò 	,ØˆJÜ�J‰J�s˜g¨™kÑ*×+Ñ+ûð	,ús0   Á!CÁ<#B>Â	CÂ>C	ÃCÃ	C;ÃC6Ã6C;c                ó(  ‡ ‡‡— dˆˆˆ fd„}g }t        |¬«      5 }t        d|dz   «      D �ci c]  }|j                  ||«      |“Œ }	}t        |	«      D ]!  }
|j	                  |
j                  «       «       Œ# 	 d d d «       |S c c}w # 1 sw Y   |S xY w)Nc                óX   •— t        ‰«      }| |d|v rdnd<   t        ‰|«      } ‰|«      S )NÚ
pageNumberÚ
page_index)ÚdictrD   )Úpager=   ÚpayloadÚbase_paramsÚdata_getterr<   s      €€€r&   Úfetchz_fetch_pages.<locals>.fetch?   s7   ø€ Ü�kÓ"ˆØKOˆ˜|¨vÑ5‰|¸<ÑHÜ˜C Ó(ˆÙ˜7Ó#Ð#r%   )Úmax_workersr
   )rJ   r   Úreturnúlist[dict[str, object]])r   r3   Úsubmitr   ÚextendÚresult)r<   rL   Útotal_pagesrM   ÚworkersrN   ÚrowsÚexecutorrJ   ÚfuturesÚfutures   `` `       r&   Ú_fetch_pagesr[   =   s‹   ú€ ÷$ð %'€DÜ	¨Õ	0°HÜBGÈÈ;ÐYZÉ?ÔB[Ó\ÑB[¸$�8—?‘? 5¨$Ó/°Ñ5ÐB[ˆÐ\Ü" 7Ö+ˆFØ�K‰K˜Ÿ™›Õ(ñ ,÷ 
1ð €Kùò ]÷ 
1ð €Kús   šB¬BÁ1BÂBÂBc                ó�   — t        | «      j                  d«      } | j                  d«      rd| z   S | j                  d«      rd| z   S y )Né   Ú6Úsh)Ú0Ú3Úsz)ÚstrÚzfillÚ
startswith)Úcodes    r&   Ú_source_coderg   M   sC   € Üˆt‹9�?‰?˜1Ó€DØ‡��sÔØ�d‰{ÐØ‡��zÔ"Ø�d‰{ÐØr%   c                 ó  — dddddddddœ} t        t        | «      }t        |d   d	   d
   d   «      d d }ddddddddd|› d�dœ	}t        t        |«      }t        |d   d   «      }t	        t        ||d„ d¬«      }t        j                  |«      }|d   j                  t        «      |d<   |j                  ddddddddœ¬ «      g d!¢   }t        j                  |d   «      |d<   |j                  dg¬"«      j                  d«      |fS )#NÚ
TRADE_DATEz-1r
   ÚRPT_CSDC_STATISTICSÚALLÚWEB)ÚsortColumnsÚ	sortTypesÚpageSizerG   Ú
reportNameÚcolumnsÚsourceÚclientrT   Údatar   é
   ÚPLEDGE_RATIOiô  ÚRPT_CSDC_LISTz(TRADE_DATE='z'))	rm   rn   ro   rG   rp   rq   rr   rs   ÚfilterÚpagesc                ó   — | d   d   S )NrT   rt   r$   ©Úxs    r&   Ú<lambda>z_fetch_pledge.<locals>.<lambda>d   s   € ÀQÀxÁ[ÐQWÒEXr%   é   ©rV   ÚSECURITY_CODEÚsource_coderf   Úsource_nameÚpledge_dateÚpledge_ratio_pctÚpledged_shares_10kÚpledge_deal_countÚpledge_market_value_10k)r€   ÚSECURITY_NAME_ABBRri   rv   ÚREPURCHASE_BALANCEÚPLEDGE_DEAL_NUMÚPLEDGE_MARKET_CAP©rq   )r�   rf   r‚   rƒ   r„   r…   r†   r‡   )Úsubset)rD   ÚEASTMONEY_DATA_APIrc   r   r[   ÚpdÚ	DataFrameÚmaprg   ÚrenameÚto_datetimeÚdropnaÚdrop_duplicates)	Úprofile_paramsÚprofileÚlatestr=   Úfirstry   rW   ÚframeÚselecteds	            r&   Ú_fetch_pledgerœ   V   sJ  € à#°$ÀAÐUVØ+¸ÈÐZ_ñ€Nô Ô*¨NÓ;€GÜ�˜Ñ" 6Ñ*¨1Ñ-¨lÑ;Ó<¸S¸bÐA€Fà%°DÀcÐYZØ%°%À5ÐTYØ! & ¨Ð,ñ€Fô
 Ô(¨&Ó1€EÜ��h‘ Ñ(Ó)€EÜÔ*¨F°EÑ;XÐbcÔd€DÜ�L‰L˜Ó€EØ  Ñ1×5Ñ5´lÓC€Eˆ-ÑØ�|‰|Ø°}ÐTaØ*ÐBVØ.ÐE^ñ%ˆ|ó òNñ	O€Hô !Ÿn™n¨X°mÑ-DÓE€Hˆ]ÑØ�?‰? = /ˆ?Ó2×BÑBÀ=ÓQÐSYÐYÐYr%   c                óš  — | j                  d«      xs g }t        d„ |D «       d «      }|sy t        t        |j                  dd«      «      «      }|€y ||j                  d«      |j                  d«      | j                  d«      | j                  d«      | j                  d«      d	|j                  d«      › d
| j                  d«      › d�dœS )NÚcodesc              3  óv   K  — | ]1  }t        |j                  d d«      «      j                  d«      sŒ.|–— Œ3 y­w)Úann_typeÚ ÚAN)rc   Úgetre   )Ú.0Úentrys     r&   Ú	<genexpr>z&_extract_notice_row.<locals>.<genexpr>s   s/   è ø€ Ð`©˜u´°U·Y±Y¸zÈ2Ó5NÓ1O×1ZÑ1ZÐ[^Õ1_”U©ùs   ‚/9²9Ú
stock_coder¡   Ú
short_nameÚart_codeÚnotice_dateÚtitlez*https://data.eastmoney.com/notices/detail/Ú/z.html)r�   rf   r‚   Úannouncement_idÚannouncement_dater«   r<   )r£   Únextrg   rc   )Úitemrž   r›   r�   s       r&   Ú_extract_notice_rowr±   q   sÆ   € Ø�H‰H�WÓÒ# €EÜÑ`©Ó`ÐbfÓg€HÙØÜœs 8§<¡<°¸bÓ#AÓBÓC€KØÐØà"Ø—‘˜\Ó*Ø—|‘| LÓ1ØŸ8™8 JÓ/Ø!ŸX™X mÓ4Ø—‘˜'Ó"Ø;¸H¿L¹LÈÓ<VÐ;WÐWXÐY]×YaÑYaÐblÓYmÐXnÐnsÐtñð r%   c           
     ó¾  — ddddddd| j                  «       |j                  «       dœ	}t        t        |«      }t        |d	   d
   «      }|dz   dz  }t	        t        ||d„ d¬«      }|D �cg c]  }t        |«      x}€Œ|‘Œ }	}t        j                  |	«      j                  d«      }
t        j                  |
d   «      |
d<   |
j                  ddgddg¬«      S c c}w )Néÿÿÿÿéd   r
   r¢   Úwebé   r   )	ÚsrÚ	page_sizerH   r    Úclient_sourceÚf_nodeÚs_nodeÚ
begin_timeÚend_timert   Ú
total_hitséc   c                ó   — | d   d   S )Nrt   Úlistr$   r{   s    r&   r}   z%_fetch_risk_notices.<locals>.<lambda>Œ   s   € ÈaÐPVÉiÐX^ÒN_r%   é   r   r­   r®   F)Ú	ascending)Ú	isoformatrD   ÚEASTMONEY_NOTICE_APIr   r[   r±   r�   r�   r•   r“   Úsort_values)ÚstartÚendr=   r™   r¾   rU   Úitemsr°   ÚrowrW   rš   s              r&   Ú_fetch_risk_noticesrË   „   sò   € à˜s°!ÀÐW\Ø˜q°·±Ó0AÈsÏ}É}Ëñ€Fô Ô*¨FÓ3€EÜ�U˜6‘] <Ñ0Ó1€JØ ‘? sÑ*€KÜÔ-¨v°{ÑD_ÐijÔk€EÙ!ÓT™E�DÔ-@ÀÓ-FÐ&F cÑ%SŠC˜E€DÐTÜ�L‰L˜Ó×.Ñ.Ð/@ÓA€EÜ!#§¡°Ð6IÑ0JÓ!K€EÐ
ÑØ×ÑÐ1Ð3DÐEÐRWÐY^ÐQ_ÐÓ`Ð`ùò Us   Á+CÁ>Cc                ó  — g }| j                  d¬«      D ]Â  }t        |j                  «      }t        j	                  |«      rŒ.t
        D ]Œ  \  }}}t        j                  ||«      sŒ|j                  |j                  j                  d«      rdnd|j                  dd  z   |j                  ||||j                  |j                  |j                  dœ«       ŒŽ ŒÄ t        j                  |g d¢¬«      j                  g d	¢«      S )
NF©Úindexr_   zSH.zSZ.é   )Úsecurity_idr�   Ú	rule_codeÚseverityÚdescriptionÚ
event_dater­   Ú
source_urlrŒ   )r�   rÑ   r­   )Ú
itertuplesrc   r«   ÚRESOLUTION_PATTERNÚsearchr   ÚreÚappendr�   re   r®   r­   r<   r�   r�   r•   )ÚnoticesrW   rÊ   r«   Ú	risk_typerÒ   Úpatterns          r&   Ú_classify_noticesrÞ   “   sç   € Ø$&€DØ×!Ñ!¨Ð!Ö.ˆÜ�C—I‘I“ˆÜ×$Ñ$ UÔ+Øß,9Ñ(ˆI�x Ü�y‰y˜ %Õ(Ø—‘Ø-0¯_©_×-GÑ-GÈÔ-M¡EÐSXÐ\_×\kÑ\kÐlmÐlnÐ\oÑ#oØ#&§?¡?ÀÐX`Ø#(¸×8MÑ8MØ'*×':Ñ':È#Ï'É'ñ	õ ñ -:ð	 /ô �<‰<˜ò 'ô ÷ �ÒFÓGðHr%   c                ó:  — | j                   j                  dd¬«       | j                  j                  dd¬«       | j                   dz  }| j                   dz  }| j                   dz  }| j                  dz  }|j                  «       xr5 t	        j                  «       |j                  «       j                  z
  |dz  k  }|r›|s™|j                  «       r‰|j                  «       ry|j                  «       rit        j                  |«      }t        j                  |«      }	t        j                  |«      }
t        t        |«      t        |	«      t        |
«      d|«      S t	        j                  «       }t        t        j                  «       j                  «       d	œ}t!        «       \  }}t        j                  «       t#        d
¬«      z
  }t%        |t        j                  «       «      }	t'        |	«      }
|j)                  |d¬«       |	j)                  |d¬«       |
j+                  |dd¬«       |j-                  |t        |«      |j                  «       t        j                  «       j                  «       t        |	«      t        |
«      dt/        t	        j                  «       |z
  d«      g d¢dœ	«       |j1                  t3        j4                  |dd¬«      d¬«       t7        | ||	|
«       t9        | ||
|«       t        t        |«      t        |	«      t        |
«      d|«      S )NT)ÚparentsÚexist_okzexternal_pledge_latest.parquetzexternal_risk_notices.parquetz"external_governance_risk_flags.csvzgovernance_metadata.jsoni€Q F)Úschema_versionÚ
build_dateiÚ  )ÚdaysrÍ   z	utf-8-sig)rÎ   ÚencodingzEastmoney public data APIsrÏ   )uK   å…¬å‘Šé£Žé™©ä¾�æ�®æ ‡é¢˜åˆ†ç±»ï¼Œéœ€å¯¹é«˜é£Žé™©æ ·æœ¬é˜…è¯»åŽŸæ–‡å¤�æ ¸ã€‚u`   å�ªæ‹‰å�–è¿‘ä¸¤å¹´é£Žé™©æ��ç¤ºç±»å…¬å‘Šï¼Œä¸�èƒ½ä»£æ›¿äº¤æ˜“æ‰€å’Œè¯�ç›‘ä¼šå®Œæ•´ç›‘ç®¡æ¡£æ¡ˆã€‚uE   æœªå‡ºçŽ°é£Žé™©æ ‡é¢˜ä¸�ç­‰äºŽå·²ç¡®è®¤æ ‡å‡†æ— ä¿�ç•™å®¡è®¡æ„�è§�ã€‚)	rƒ   r   Únotice_startÚ
notice_endÚrisk_notice_rowsÚclassified_risk_flagsrr   Úelapsed_secondsÚlimitations)Úensure_asciiÚindentúutf-8©rå   )Úprocessed_dirÚmkdirÚ
report_dirÚexistsr9   ÚstatÚst_mtimer�   Úread_parquetÚread_csvr   ÚlenÚGOVERNANCE_SCHEMA_VERSIONr   ÚtodayrÄ   rœ   r   rË   rÞ   Ú
to_parquetÚto_csvÚupdateÚroundÚ
write_textr5   ÚdumpsÚ_persist_governanceÚ_write_report)ÚsettingsÚforceÚ
cache_daysÚpledge_pathÚnotices_pathÚ
flags_pathÚmetadata_pathÚfreshÚpledgerÛ   ÚflagsÚstartedÚstatusrƒ   rÇ   s                  r&   Úrefresh_governance_datar  §   s}  € Ø×Ñ× Ñ ¨¸Ð Ô=Ø×Ñ×Ñ d°TÐÔ:Ø×(Ñ(Ð+KÑK€KØ×)Ñ)Ð,KÑK€LØ×'Ñ'Ð*NÑN€JØ×'Ñ'Ð*DÑD€MØ× Ñ Ó"Òi¬¯	©	«°m×6HÑ6HÓ6J×6SÑ6SÑ(SÐWaÐdiÑWiÑ'i€EÙ‘U˜{×1Ñ1Ô3¸×8KÑ8KÔ8MÐR\×RcÑRcÔReÜ—‘ Ó-ˆÜ—/‘/ ,Ó/ˆÜ—‘˜JÓ'ˆÜ$¤S¨£[´#°g³,ÄÀEÃ
ÈEÐS]Ó^Ð^ä�i‰i‹k€GÜ3LÔ\`×\fÑ\fÓ\h×\rÑ\rÓ\tÑ u€FÜ'›/Ñ€FˆKÜ�J‰J‹Lœ9¨#Ô.Ñ.€EÜ! %¬¯©«Ó6€GÜ˜gÓ&€EØ
×Ñ�k¨ÐÔ/Ø×Ñ�|¨5ÐÔ1Ø	‡L�L� 5°;€LÔ?à
‡M�MØ"´3°v³;ØŸ™Ó)¼¿¹»×9OÑ9OÓ9QÜ ›LÄ3ÀuÃ:Ø.Ä5ÌÏÉËÐW^ÑI^Ð`aÓCbò
ñ
ô 
ð ×ÑœTŸZ™Z¨¸UÈ1ÔMÐX_ÐÔ`Ü˜ &¨'°5Ô9Ü�(˜F E¨6Ô2Ü ¤ V£¬c°'«l¼CÀ»JÈÈjÓYÐYr%   c                óV  — t        j                  t        | j                  dz  «      «      5 }|j	                  d|«       |j	                  d|«       |j	                  d|«       |j                  d«       |j                  d«       |j                  d«       d d d «       y # 1 sw Y   y xY w)Nzfundamental_mvp.duckdbÚ	pledge_dfÚ
notices_dfÚflags_dfzICREATE OR REPLACE TABLE external_pledge_latest AS SELECT * FROM pledge_dfzICREATE OR REPLACE TABLE external_risk_notices AS SELECT * FROM notices_dfzPCREATE OR REPLACE TABLE external_governance_risk_flags AS SELECT * FROM flags_df)ÚduckdbÚconnectrc   Údatabase_dirÚregisterÚexecute)r  r  rÛ   r  Ú
connections        r&   r  r  Ð   sŒ   € ä	�‰œ˜H×1Ñ1Ð4LÑLÓMÔ	NÐR\Ø×Ñ˜K¨Ô0Ø×Ñ˜L¨'Ô2Ø×Ñ˜J¨Ô.Ø×ÑÐfÔgØ×ÑÐfÔgØ×ÑÐmÔn÷ 
O×	NÑ	Nús   ¬A*BÂB(c                óV  — |j                  ddg«      j                  «       j                  d¬«      }dj                  d„ |j	                  d¬«      D «       «      }d	|d
   › d|d   › dt        |«      › d|d   › dt        |«      › d|› d�}| j                  dz  j                  |d¬«       y )NrÑ   rÒ   Úcount)ÚnameÚ
c              3  óp   K  — | ].  }d |j                   › d|j                  › d|j                  › d�–— Œ0 y­w)z| z | z |N)rÑ   rÒ   r  )r¤   Úrs     r&   r¦   z _write_report.<locals>.<genexpr>Þ   s4   è ø€ ÐnÑOmÈ!˜˜1Ÿ;™;˜- s¨1¯:©:¨,°c¸!¿'¹'¸À"ÔEÑOmùs   ‚46FrÍ   u7   # M1 æ²»ç�†ä¸Žå¤–éƒ¨é£Žé™©æ•°æ�®æŠ¥å‘Š

ç”Ÿæˆ�æ—¥æœŸï¼šrã   u     
è´¨æŠ¼æ•°æ�®æ—¥æœŸï¼šrƒ   u     
æœ‰è´¨æŠ¼è®°å½•å…¬å�¸ï¼šu%    å®¶  
è¿‘ä¸¤å¹´é£Žé™©æ��ç¤ºå…¬å‘Šï¼šrè   u    æ�¡  
åˆ†ç±»é£Žé™©æ ‡è®°ï¼šu;    æ�¡

| é£Žé™©ç±»åž‹ | çº§åˆ« | è®°å½•æ•° |
|---|---|---:|
u*  

## å�£å¾„é™�åˆ¶

- å…¬å‘Šåˆ†ç±»ä¾�æ�®å…¬å‘Šæ ‡é¢˜ï¼Œç¡¬é£Žé™©æ ·æœ¬å¿…é¡»ç‚¹å‡»ä¿�å­˜çš„åŽŸæ–‡é“¾æŽ¥å¤�æ ¸ã€‚
- æ— é£Žé™©æ ‡è®°å�ªè¡¨ç¤ºè¿‘ä¸¤å¹´æœªåŒ¹é…�å·²å»ºè§„åˆ™ï¼Œä¸�è¡¨ç¤ºå…¬å�¸å·²è¢«è¯�æ˜Žæ²¡æœ‰æ²»ç�†é£Žé™©ã€‚
- è´¨æŠ¼æ•°æ�®æ˜¯å½“å‰�å¿«ç…§ï¼Œå�Žç»­å›žæµ‹å¿…é¡»ä¿�å­˜æ¯�æœŸåŽ†å�²å¿«ç…§ã€‚
u!   M1_æ²»ç�†ä¸Žå¤–éƒ¨é£Žé™©æŠ¥å‘Š.mdrî   rï   )ÚgroupbyÚsizeÚreset_indexÚjoinrÖ   rø   rò   rÿ   )r  Úmetadatar  r  ÚcountsÚlinesÚreports          r&   r  r  Û   sÖ   € à�]‰]˜K¨Ð4Ó5×:Ñ:Ó<×HÑHÈgÐHÓV€FØ�I‰IÑnÈv×O`ÑO`ÐglÐO`ÔOmÓnÓn€Eðà˜Ñ&Ð'ð (Ø˜}Ñ-Ð.ð /Ü˜V›˜ð &Ø'Ð(:Ñ;Ð<ð =Ü˜%“j�\ð "ð €ð ð€Fð$ ×ÑÐ>Ñ>×JÑJÈ6Ð\cÐJÕdr%   )r¶   )r<   rc   r=   údict[str, object]r>   r   rP   r(  )rÂ   )
r<   rc   rL   r(  rU   r   rV   r   rP   rQ   )rf   rc   rP   z
str | None)rP   ztuple[pd.DataFrame, str])r°   r(  rP   zdict[str, object] | None)rÇ   r   rÈ   r   rP   úpd.DataFrame)rÛ   r)  rP   r)  )Fr
   )r  r   r  r   r  r   rP   r   )
r  r   r  r)  rÛ   r)  r  r)  rP   ÚNone)
r  r   r$  r(  r  r)  r  r)  rP   r*  ))Ú
__future__r   Úconcurrent.futuresr   r   Údataclassesr   Údatetimer   r   r5   Úpathlibr	   rÙ   r9   Úurllib.parser.   Úurllib.requestr  Úpandasr�   Úconfigr   rù   rŽ   rÅ   r   r#   Úcompiler×   r   rD   r[   rg   rœ   r±   rË   rÞ   r  r  r  r$   r%   r&   Ú<module>r5     sô   ðÞ "ç ?Ý !ß $Û Ý Û 	Û Û Û ã Û å ð Ð ØKÐ ØPÐ ò-€Ð)ó ð  �R—Z‘ZÐ |Ó}Ð ñ �$Ô÷ð ó ðôSð$ ./ðØ'*ðØ3Jóó óZó6ó&aóHô(&ZðRoØ+ðoØ04óoðeØ&ðeØ+/ôer%   