§
    šŠtj #  ã                   ó  — 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m	Z	m
Z
mZmZmZmZmZ d dlZd dlZd dlmZ d dlmZ d dlmZ  ej        e¦  «        Z e¦   «         ddd	d
dd
dœZdededefd„Z G d„ de¦  «        ZdS )é    N)ÚFutureÚThreadPoolExecutor)	ÚAnyÚAsyncIteratorÚDictÚIteratorÚListÚOptionalÚTupleÚUnionÚcast)ÚDocument)Ú
BaseLoader)Úget_user_agentzJtext/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8zen-US,en;q=0.5zhttps://www.google.com/Ú1z
keep-alive)ú
User-AgentÚAcceptzAccept-LanguageÚRefererÚDNTÚ
ConnectionzUpgrade-Insecure-RequestsÚsoupÚurlÚreturnc                 ó2  — d|i}|                       d¦  «        x}r|                     ¦   «         |d<   |                       dddi¬¦  «        x}r|                     dd¦  «        |d<   |                       d	¦  «        x}r|                     d
d¦  «        |d<   |S )z)Build metadata from BeautifulSoup output.ÚsourceÚtitleÚmetaÚnameÚdescription)ÚattrsÚcontentzNo description found.ÚhtmlÚlangzNo language found.Úlanguage)ÚfindÚget_textÚget)r   r   Úmetadatar   r   r"   s         úm/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/document_loaders/async_html.pyÚ_build_metadatar*   &   s¬   € à˜#ˆ€HØ—	’	˜'Ñ"Ô"Ð"€uð -Ø!ŸNšNÑ,Ô,ˆ�ÑØ—i’i ¨v°}Ð.E�iÑFÔFÐF€{ð VØ"-§/¢/°)Ð=TÑ"UÔ"Uˆ�ÑØ�yŠy˜Ñ Ô Ð €tð FØ#Ÿxšx¨Ð0DÑEÔEˆ�ÑØ€Oó    c                   óú  — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 d*dddœdeeee         f         d	ee         d
ee	         dee         de	dee         dede
deeeef                  de	de	de	de	fd„Zdedefd„Zededdfd„¦   «         Z	 d+dede
de
dedef
d „Zded!ej        deeef         fd"„Zd#ee         de	deeeef                  fd$„Zd#ee         dee         fd%„Zded&edefd'„Zdee         fd(„Zdee         fd)„ZdS ),ÚAsyncHtmlLoaderzLoad `HTML` asynchronously.NTúhtml.parseré   F)Úpreserve_orderÚ	trust_envÚweb_pathÚheader_templateÚ
verify_sslÚproxiesÚautoset_encodingÚencodingÚdefault_parserÚrequests_per_secondÚrequests_kwargsÚraise_for_statusÚignore_load_errorsr0   r1   c                ó|  — t          |t          ¦  «        r	|g| _        nt          |t          ¦  «        r|| _        |pt          }|                     d¦  «        sD	 ddlm}  |¦   «         j        |d<   n*# t          $ r t                               d¦  «         Y nw xY wt          j        ¦   «         | _        t          |¦  «        | j        _        || j        _        |r| j        j                             |¦  «         || _        || _        |	pi | _        |
| _        || _        || _        || _        || _        || _        dS )zInitialize with a webpage path.r   r   )Ú	UserAgentzxfake_useragent not found, using default user agent.To get a realistic header for requests, `pip install fake_useragent`.N)Ú
isinstanceÚstrÚ	web_pathsr	   Údefault_header_templater'   Úfake_useragentr>   ÚrandomÚImportErrorÚloggerÚinfoÚrequestsÚSessionÚsessionÚdictÚheadersÚverifyr5   Úupdater9   r8   r:   r;   r6   r7   r<   r0   r1   )Úselfr2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r0   r1   rL   r>   s                   r)   Ú__init__zAsyncHtmlLoader.__init__5   sb  € õ, �h¥Ñ$Ô$ð 	&Ø&˜ZˆDŒNˆNÝ˜¥$Ñ'Ô'ð 	&Ø%ˆDŒNà!Ð<Õ%<ˆØ�{Š{˜<Ñ(Ô(ð 
	ð	Ø4Ð4Ð4Ð4Ð4Ð4à(1¨	©¬Ô(:�˜Ñ%Ð%øÝð ð ð Ý—’ð4ñô ð ð ð ðøøøõ  Ô'Ñ)Ô)ˆŒÝ# G™}œ}ˆŒÔØ(ˆŒÔàð 	1ØŒLÔ ×'Ò'¨Ñ0Ô0Ð0à#6ˆÔ Ø,ˆÔØ.Ð4°"ˆÔØ 0ˆÔØ 0ˆÔØ ˆŒØ"4ˆÔØ,ˆÔà"ˆŒˆˆs   ÁA3 Á3$BÂBr   r   c                 óä   — | j         rR	  | j        j        |fi | j        ¤ŽS # t          $ r,}t          j        t          |¦  «        ¦  «         Y d }~d S d }~ww xY w | j        j        |fi | j        ¤ŽS ©N)r<   rJ   r'   r:   Ú	ExceptionÚwarningsÚwarnr@   )rO   r   Úes      r)   Ú_fetch_valid_connection_docsz,AsyncHtmlLoader._fetch_valid_connection_docso   s–   € ØÔ"ð 	ðØ'�t”|Ô'¨ÐDÐD¨tÔ/CÐDÐDÐDøÝð ð ð Ý”�c !™fœfÑ%Ô%Ð%Ø�t�t�t�t�tøøøøðøøøð  ˆtŒ|Ô Ð<Ð< tÔ';Ð<Ð<Ð<s   ‰! ¡
A«!AÁAÚparserc                 óf   — g d¢}| |vr(t          dd                     |¦  «        z   dz   ¦  «        ‚dS )z#Check that parser is valid for bs4.)r.   ÚlxmlÚxmlzlxml-xmlÚhtml5libz`parser` must be one of z, ú.N)Ú
ValueErrorÚjoin)rX   Úvalid_parserss     r)   Ú_check_parserzAsyncHtmlLoader._check_parsery   sN   € ð OÐNÐNˆØ˜Ð&Ð&ÝØ*¨T¯YªY°}Ñ-EÔ-EÑEÈÑKñô ð ð 'Ð&r+   é   ç      ø?ÚretriesÚcooldownÚbackoffc              ƒ   ó"  K  — t          j        | j        ¬¦  «        4 ƒd {V —†}t          |¦  «        D �]©}	 t	          d| j        j        | j        j                             ¦   «         dœ| j	        ¤Ž}| j        j
        sd|d<    |j        |fi |¤Ž4 ƒd {V —†	 }	 |                     ¦   «         ƒ d {V —†}	n/# t          $ r" t                               d|› �¦  «         d}	Y nw xY w|	cd d d ¦  «        ƒd {V —† c cd d d ¦  «        ƒd {V —† S # 1 ƒd {V —†swxY w Y   Œê# t           j        t"          f$ r¨}
||dz
  k    r@| j        r9t                               d|› d	|› d
�¦  «         Y d }
~
 d d d ¦  «        ƒd {V —† dS ||dz
  k    r‚ t                               d|› d|dz   › d|› d|
› d�	¦  «         t)          j        |||z  z  ¦  «        ƒ d {V —† Y d }
~
�Œ£d }
~
ww xY w	 d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   t-          d¦  «        ‚)N)r1   )rL   ÚcookiesFÚsslzFailed to decode content from Ú é   zError fetching z after z	 retries.z with attempt ú/z: z. Retrying...zretry count exceeded© )ÚaiohttpÚClientSessionr1   ÚrangerK   rJ   rL   rh   Úget_dictr:   rM   r'   ÚtextÚUnicodeDecodeErrorrF   ÚerrorÚClientConnectionErrorÚTimeoutErrorr<   ÚwarningÚasyncioÚsleepr^   )rO   r   rd   re   rf   rJ   ÚiÚkwargsÚresponserr   rV   s              r)   Ú_fetchzAsyncHtmlLoader._fetch‚   sš  è è € õ Ô(°4´>ÐBÑBÔBð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	CÀgÝ˜7‘^”^ð Cñ C�ðCÝ#'ð $Ø $¤Ô 4Ø $¤Ô 4× =Ò =Ñ ?Ô ?ð$ð $ð Ô.ð$ð $�Fð
  œ<Ô.ð .Ø(-˜˜u™Ø*˜wœ{Øð ð  à ð ð  ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð "ð&Ø)1¯ª©¬Ð#8Ð#8Ð#8Ð#8Ð#8Ð#8˜D˜DøÝ1ð &ð &ð &Ý"ŸLšLÐ)OÈ#Ð)OÐ)OÑPÔPÐPØ#%˜D˜D˜Dð&øøøð  $ð	$ð 	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð	Cð 	Cð 	Cð 	Cñ 	Cô 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð 	$øõ  Ô5µ|ÐDð Cð Cð CØ˜G a™KÒ'Ð'¨DÔ,CÐ'ÝŸšÐ'W¸Ð'WÐ'WÀWÐ'WÐ'WÐ'WÑXÔXÐXØ!˜r˜r˜r˜rð/	Cð 	Cð 	Cñ 	Cô 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð0 ˜g¨™kÒ)Ð)ØåŸšðC¨cð Cð CØ  1™uðCð CØ'.ðCð CØ23ðCð Cð Cñô ð õ &œm¨H°wÀ±zÑ,AÑBÔBÐBÐBÐBÐBÐBÐBÐBÐBÐBÐBÐBÑBøøøøðCøøøð'Cð	Cð 	Cð 	Cñ 	Cô 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cøøøð 	Cð 	Cð 	Cð 	Cõ@ Ð/Ñ0Ô0Ð0s–   £G1·ADÂDÂB4Â3DÂ4)C 	ÃDÃC 	Ã DÃ$DÃ6G1Ä
DÄDÄDÄDÄG1ÄGÄ31GÅ$G1Å<AGÇG1ÇGÇG1Ç1
G;Ç>G;Ú	semaphorec              ƒ   óœ   K  — |4 ƒd {V —† ||                       |¦  «        ƒ d {V —†fcd d d ¦  «        ƒd {V —† S # 1 ƒd {V —†swxY w Y   d S rR   )r}   )rO   r   r~   s      r)   Ú_fetch_with_rate_limitz&AsyncHtmlLoader._fetch_with_rate_limit§   sò   è è € ð ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/Ø˜dŸkšk¨#Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ð	/ð 	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/ð 	/ð 	/s   ‹;»
AÁAÚurlsc                óÌ  ‡ ‡K  — t          j        ‰ j        ¦  «        Šˆ ˆfd„|D ¦   «         }	 ddlm} |r ||ddd¬¦  «        D ]}|ƒ d {V —†W V — Œd S |                     |ddd¬¦  «        D ]}|ƒ d {V —†W V — Œd S # t          $ r[ t          j        d¦  «         |rt          j	        |Ž ƒ d {V —†D ]}|W V — ŒY d S t          j        |¦  «        D ]}|ƒ d {V —†W V — ŒY d S w xY w)	Nc                 ó`   •— g | ]*}t          j        ‰                     |‰¦  «        ¦  «        ‘Œ+S rm   )rx   Úcreate_taskr€   )Ú.0r   rO   r~   s     €€r)   ú
<listcomp>z3AsyncHtmlLoader._lazy_fetch_all.<locals>.<listcomp>±   sD   ø€ ð 
ð 
ð 
àõ Ô × ;Ò ;¸CÀÑ KÔ KÑLÔLð
ð 
ð 
r+   r   )Útqdm_asynciozFetching pagesTrk   )ÚdescÚasciiÚminintervalz2For better logging of progress, `pip install tqdm`)
rx   Ú	Semaphorer9   Útqdm.asyncior‡   Úas_completedrE   rT   rU   Úgather)rO   r�   r0   Útasksr‡   ÚtaskÚresultr~   s   `      @r)   Ú_lazy_fetch_allzAsyncHtmlLoader._lazy_fetch_all­   sÚ  øøè è € õ Ô% dÔ&>Ñ?Ô?ˆ	ð
ð 
ð 
ð 
ð 
àð
ñ 
ô 
ˆð	%Ø1Ð1Ð1Ð1Ð1Ð1àð 	%Ø(˜LØÐ 0¸È!ðñ ô ð %ð %�Dð !%˜*˜*˜*˜*˜*˜*Ð$Ð$Ð$Ð$Ð$ð%ð %ð
 )×5Ò5ØÐ 0¸È!ð 6ñ ô ð %ð %�Dð !%˜*˜*˜*˜*˜*˜*Ð$Ð$Ð$Ð$Ð$ð%ð %øõ ð 	%ð 	%ð 	%ÝŒMÐNÑOÔOÐOØð %Ý$+¤N°EÐ$:Ð:Ð:Ð:Ð:Ð:Ð:ð !ð !�FØ �L�L�L�L�Lð!ð !ð !õ $Ô0°Ñ7Ô7ð %ð %�DØ $˜*˜*˜*˜*˜*˜*Ð$Ð$Ð$Ð$Ð$ð%ð %ð %ð	%øøøs   ®%A> Á'A> Á><C#Â="C#Ã"C#c              ƒ   óR   K  — d„ |                       |d¦  «        2 ¦   «         ƒ d{V —†S )z/Fetch all urls concurrently with rate limiting.c              “   ó(   K  — g | 3 d {V —†\  }}|‘Œ6 S rR   rm   )r…   Ú_Údocs      r)   r†   z-AsyncHtmlLoader.fetch_all.<locals>.<listcomp>Í   s2   è è € ÐIÐIÐIÐIÐIÐIÐIÐI™f˜a �ÐIÐIÐIÐIs   …TN)r’   )rO   r�   s     r)   Ú	fetch_allzAsyncHtmlLoader.fetch_allË   s<   è è € àIÐI¨×(<Ò(<¸TÀ4Ñ(HÔ(HÐIÑIÔIÐIÐIÐIÐIÐIÐIÐIr+   rr   c                 óÐ   — ddl m} |                     d¦  «        rd}n| j        }|                      |¦  «          |||¦  «        }t          ||¦  «        }t          ||¬¦  «        S )Nr   )ÚBeautifulSoupz.xmlr[   )Úpage_contentr(   )Úbs4r™   Úendswithr8   ra   r*   r   )rO   r   rr   r™   rX   r   r(   s          r)   Ú_to_documentzAsyncHtmlLoader._to_documentÏ   s~   € Ø%Ð%Ð%Ð%Ð%Ð%à�<Š<˜ÑÔð 	)ØˆFˆFàÔ(ˆFØ×Ò˜6Ñ"Ô"Ð"Øˆ}˜T 6Ñ*Ô*ˆÝ" 4¨Ñ-Ô-ˆÝ T°HÐ=Ñ=Ô=Ð=r+   c              #   ó@  K  — 	 t          j        ¦   «          t          d¬¦  «        5 }|                     t           j        |                      | j        ¦  «        ¦  «        }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   n<# t          $ r/ t          j        |                      | j        ¦  «        ¦  «        }Y nw xY wt          t          t          t                   |¦  «        ¦  «        D ](\  }}|                      | j        |         |¦  «        V — Œ)dS )ú+Lazy load text from the url(s) in web_path.rk   )Úmax_workersN)rx   Úget_running_loopr   ÚsubmitÚrunr—   rA   r‘   ÚRuntimeErrorÚ	enumerater   r	   r@   r�   )rO   ÚexecutorÚfutureÚresultsrz   rr   s         r)   Ú	lazy_loadzAsyncHtmlLoader.lazy_loadÛ   sV  è è € ð	BåÔ$Ñ&Ô&Ð&õ $°Ð2Ñ2Ô2ð *°hØ,4¯OªOÝ”KØ—N’N 4¤>Ñ2Ô2ñ-ô -�ð !Ÿ-š-™/œ/�ð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *øøõ ð 	Bð 	Bð 	BÝ”k $§.¢.°´Ñ"@Ô"@ÑAÔAˆGˆGˆGð	Bøøøõ !¥¥d­3¤i°Ñ!9Ô!9Ñ:Ô:ð 	=ð 	=‰GˆAˆtØ×#Ò# D¤N°1Ô$5°tÑ<Ô<Ð<Ð<Ð<Ð<ð	=ð 	=s5   „#B §AB Á4B Â BÂB ÂBÂB Â6CÃCc                ó”   K  — |                       | j        | j        ¦  «        2 3 d{V —†\  }}|                      ||¦  «        W V — Œ$6 dS )rŸ   N)r’   rA   r0   r�   )rO   r   rr   s      r)   Ú
alazy_loadzAsyncHtmlLoader.alazy_loadï   s   è è € à#×3Ò3ØŒN˜DÔ/ñ 
ô  
ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/‘)�#�tð ×#Ò# C¨Ñ.Ô.Ð.Ð.Ð.Ð.Ð.ð 
ð  
ð  
s   £A)
NTNTNr.   r/   NFF)rb   r/   rc   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r@   r	   r
   rK   ÚboolÚintr   r   rP   rW   Ústaticmethodra   Úfloatr}   rx   r‹   r   r€   r   r’   r—   r   r�   r   r©   r«   rm   r+   r)   r-   r-   2   s¶  € € € € € Ø%Ð%ð
 +/Ø%)Ø"&Ø!%Ø"&Ø+Ø#$Ø48Ø!&Ø#(ð8#ð  $Øð8#ð 8#ð 8#à˜˜T #œY˜Ô'ð8#ð " $œð8#ð ˜T”Nð	8#ð
 ˜$”ð8#ð ð8#ð ˜3”-ð8#ð ð8#ð !ð8#ð " $ s¨C x¤.Ô1ð8#ð ð8#ð !ð8#ð ð8#ð ð8#ð 8#ð 8#ð 8#ðt=°ð =¸ð =ð =ð =ð =ð ð˜cð  dð ð ð ñ „\ðð ORð#1ð #1Øð#1Ø!$ð#1Ø47ð#1ØFKð#1à	ð#1ð #1ð #1ð #1ðJ/Øð/Ø#*Ô#4ð/à	ˆs�CˆxŒð/ð /ð /ð /ð%Ø˜”Ið%Ø/3ð%à	�u˜S #˜X”Ô	'ð%ð %ð %ð %ð<J D¨¤Ið J°$°s´)ð Jð Jð Jð Jð
> ð 
>¨3ð 
>°8ð 
>ð 
>ð 
>ð 
>ð=˜8 HÔ-ð =ð =ð =ð =ð(/ -°Ô"9ð /ð /ð /ð /ð /ð /r+   r-   ) rx   ÚloggingrT   Úconcurrent.futuresr   r   Útypingr   r   r   r   r	   r
   r   r   r   rn   rH   Úlangchain_core.documentsr   Ú)langchain_community.document_loaders.baser   Ú$langchain_community.utils.user_agentr   Ú	getLoggerr¬   rF   rB   r@   rK   r*   r-   rm   r+   r)   ú<module>r»      s—  ðØ €€€Ø €€€Ø €€€Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð €€€Ø €€€Ø -Ð -Ð -Ð -Ð -Ð -à @Ð @Ð @Ð @Ð @Ð @Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?à	ˆÔ	˜8Ñ	$Ô	$€ð !�.Ñ"Ô"ðà'Ø(ØØØ!$ð	ð 	Ð ð	˜#ð 	 Cð 	¨Dð 	ð 	ð 	ð 	ðB/ð B/ð B/ð B/ð B/�jñ B/ô B/ð B/ð B/ð B/r+   