Ë
    iKêjÃ  ã            	       óÒ  — d 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 ddlmZ dd	lmZ dd
lmZ  eej*                  ej,                  z   dz   «      Zeddhz  Z ed¬«      deedf   fd„«       Zej8                  dededefd„«       Z G d„ dej<                  e   «      Z ed¬«      dddœde de dej<                  e   fd„«       Z! ejD                   ejF                  d „  ejH                  dd¬!«       ejJ                  «       «      d¬"«      jM                  d#jN                  «      jM                  d$jP                  «      Z) ed¬«      dej<                  e   fd%„«       Z*y)&a<  This module contains various provisional APIs and strategies.

It is intended for internal use, to ease code reuse, and is not stable.
Point releases may move or break the contents at any time!

Internet strategies should conform to :rfc:`3986` or the authoritative
definitions it links to.  If not, report the bug!
é    N)Ú	lru_cache)Ú	resources)Ú
strategies)ÚInvalidArgument)Úutils)ÚConjectureData)ÚDrawFn)Údefines_strategyz$-_.+!*'(),~ú?ú/é   )ÚmaxsizeÚreturn.c                  óÔ   — t        j                  d«      dz  } | j                  d¬«      j                  «       ^}}|j	                  d«      sJ ‚dgt        d„ |D «       t        ¬«      ¢­S )	Nzhypothesis.vendorztlds-alpha-by-domain.txtzutf-8)Úencodingú#ÚCOMc              3   ó,   K  — | ]  }|d k7  sŒ	|–— Œ y­w)ÚARPAN© )Ú.0Úds     ú[/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/hypothesis/provisional.pyú	<genexpr>z(get_top_level_domains.<locals>.<genexpr>/   s   è ø€ Ò< !°°V³œAÑ<ùs   ‚
�)Úkey)r   ÚfilesÚ	read_textÚ
splitlinesÚ
startswithÚsortedÚlen)ÚtraversableÚ_commentÚ_tldss      r   Úget_top_level_domainsr%   %   sk   € ô —/‘/Ð"5Ó6Ð9SÑS€KØ"×,Ñ,°gÐ,Ó>×IÑIÓKÐ€HˆuØ×Ñ˜sÔ#Ð#Ð#ð ÐG”FÑ< uÔ<Ä#ÔFÑGÐGó    ÚdrawÚtldc           
      ó@  — t        |«      } | t        j                  d„ t        t	        |«      «      D «       Ž «      }t        |«      D ]D  \  }}|sŒ	||   j                  «       r||   j                  «       n||   j                  «       ||<   ŒF dj                  |«      S )Nc              3   óD   K  — | ]  }t        j                  «       –— Œ y ­w)N)ÚstÚbooleans)r   Ú_s     r   r   z#_recase_randomly.<locals>.<genexpr>5   s   è ø€ ÒH°œrŸ{™{Ÿ}ÑHùs   ‚ Ú )
Úlistr+   ÚtuplesÚranger!   Ú	enumerateÚisupperÚlowerÚupperÚjoin)r'   r(   ÚcharsÚchangesÚiÚchange_cases         r   Ú_recase_randomlyr;   2   sŠ   € ä�‹I€EÙ”2—9‘9ÑH´e¼CÀ»JÓ6GÔHÐIÓJ€GÜ# GÓ,ò T‰ˆˆ;ÚØ+0°©8×+;Ñ+;Ô+=�u˜Q‘x—~‘~Ô'À5ÈÁ8Ç>Á>ÓCSˆE�!ŠHðTð �7‰7�5‹>Ðr&   c                   óx   ‡ — e Zd Zededededz  dedef
d„«       Z	 ddedz  d	edz  ddfˆ fd
„Zdedefd„Z	ˆ xZ
S )ÚDomainNameStrategyÚminimumÚmaximumÚvalueNÚvariable_namer   c           
      óÂ   — |€|}|S t        |t        «      s$t        d|› dt        |«      j                  › �«      ‚| |cxk  r|k  sn t        d| ›d|› d|›d|›�«      ‚|S )NzExpected integer but z is a zInvalid value z < ú=)Ú
isinstanceÚintr   ÚtypeÚ__name__)r>   r?   r@   rA   s       r   Úclean_inputszDomainNameStrategy.clean_inputs=   sˆ   € ð ˆ=ØˆEð ˆô ˜E¤3Ô'Ü!Ø'¨ °f¼TÀ%»[×=QÑ=QÐ<RÐSóð ð ˜EÔ, WÔ,Ü!Ø   ¨3¨}¨o¸Q¸u¸iÀsÈ7È+ÐVóð ð ˆr&   Ú
max_lengthÚmax_element_lengthc                 óè  •‡ — ‰ j                  dd|d«      }‰ j                  dd|d«      }t        ‰‰ �	  «        |‰ _        |‰ _        ‰ j                  dk(  rd}n'‰ j                  dk(  rd	}n‰ j                  dz
  }d
|› d�}t        j                  t        «       «      j                  ˆ fd„«      j                  t        «      ‰ _        t        j                  |d¬«      j                  d„ «      ‰ _        y)aã  
        A strategy for :rfc:`1035` fully qualified domain names.

        The upper limit for max_length is 255 in accordance with :rfc:`1035#section-2.3.4`
        The lower limit for max_length is 4, corresponding to a two letter domain
        with a single letter subdomain.
        The upper limit for max_element_length is 63 in accordance with :rfc:`1035#section-2.3.4`
        The lower limit for max_element_length is 1 in accordance with :rfc:`1035#section-2.3.4`
        é   éÿ   rI   r   é?   rJ   z[a-zA-Z]é   z[a-zA-Z][a-zA-Z0-9]?z[a-zA-Z]([a-zA-Z0-9\-]{0,z}[a-zA-Z0-9])?c                 ó:   •— t        | «      dz   ‰j                  k  S )NrO   )r!   rI   )r(   Úselfs    €r   ú<lambda>z-DomainNameStrategy.__init__.<locals>.<lambda>}   s   ø€ ¤ C£¨1¡°·±Ñ ?€ r&   T)Ú	fullmatchc                 ó2   — t        | «      dk  xs | dd dk7  S )NrL   rO   z--)r!   )Úlabels    r   rR   z-DomainNameStrategy.__init__.<locals>.<lambda>„   s   € œ#˜e›* q™.Ò>¨E°!°A¨J¸$Ñ,>€ r&   N)rH   ÚsuperÚ__init__rI   rJ   r+   Úsampled_fromr%   ÚfilterÚflatmapr;   Údomain_strategyÚ
from_regexÚelem_strategy)rQ   rI   rJ   Úlabel_regexÚ,maximum_center_character_pattern_repetitionsÚ	__class__s   `    €r   rW   zDomainNameStrategy.__init__M   sö   ù€ ð ×&Ñ& q¨#¨z¸<ÓHˆ
Ø!×.Ñ.ØˆrÐ%Ð';ó
Ðô 	‰ÑÔØ$ˆŒØ"4ˆÔð
 ×"Ñ" aÒ'Ø%‰KØ×$Ñ$¨Ò)Ø1‰Kà;?×;RÑ;RÐUVÑ;VÐ8à,Ø?Ð@Ø!ð"ð ô �O‰OÔ1Ó3Ó4ß‰VÓ?Ó@ß‰WÔ%Ó&ð 	Ôô  Ÿ]™]¨;À$ÔG×NÑNÙ>ó
ˆÕr&   Údatac                 ó\  — |j                  | j                  «      }t        j                  |ddd¬«      5 }|D ][  }|j                  | j                  «      }t        |«      t        |«      z   | j                  k\  r|j                  d«       ŒT|dz   |z   }Œ] 	 d d d «       |S # 1 sw Y   |S xY w)Nr   é   é~   )Úmin_sizeÚaverage_sizeÚmax_sizez(subdomain would make the domain too longú.)r'   r[   ÚcuÚmanyr]   r!   rI   Úreject)rQ   ra   ÚdomainÚelementsr-   Ú
sub_domains         r   Údo_drawzDomainNameStrategy.do_draw‡   s¥   € Ø—‘˜4×/Ñ/Ó0ˆô �W‰W�T A°AÀÔDð 	3ÈØò 3�à!ŸY™Y t×'9Ñ'9Ó:�
Ü�v“;¤ Z£Ñ0°D·O±OÒCØ—O‘OÐ$NÔOØØ# cÑ)¨FÑ2‘ñ3÷	3ð ˆ÷	3ð ˆús   µA!B!Â!B+)NN)rG   Ú
__module__Ú__qualname__ÚstaticmethodrE   ÚstrrH   rW   r   ro   Ú__classcell__)r`   s   @r   r=   r=   <   s�   ø„ ØðØðØ"ðØ+.°©:ðØFIðà	òó ðð  OSñ8
Ø ™*ð8
ØADÀtÁð8
à	õ8
ðt˜Nð ¨s÷ r&   r=   T)Úforce_reusable_valuesrM   rN   ©rI   rJ   rI   rJ   c                 ó   — t        | |¬«      S )z<Generate :rfc:`1035` compliant fully qualified domain names.rv   )r=   rv   s     r   Údomainsrx   ™   s   € ô
 ØÐ2Dôð r&   c                 ó8   — |s| t         vrdt        | «      d›�S | S )Nú%Ú02X)ÚFRAGMENT_SAFE_CHARACTERSÚord)ÚcharÚencodes     r   rR   rR   ©   s.   € á˜dÔ*BÑBð ”C˜“I˜c�?Ð#ð ð ð r&   )Úmin_codepointÚmax_codepoint)re   r.   z#{}c            
      ó$  — dt         dt         fd„} t        j                  ddg«      }t        j                  dd¬«      j	                  d	j
                  «      }t        j                  t        j                  t        j                  «      j	                  | «      «      j	                  d
j                  «      }t        j                  dj
                  |t        «       t        j                  d«      |z  |t        j                  d«      t        z  «      S )z�A strategy for :rfc:`3986`, generating http/https URLs.

    The generated URLs could, at least in theory, be passed to an HTTP client
    and fetched.

    Úsr   c                 ó2   — dj                  d„ | D «       «      S )Nr.   c              3   óN   K  — | ]  }|t         v r|nd t        |«      d›�–— Œ y­w)rz   r{   N)ÚURL_SAFE_CHARACTERSr}   )r   Úcs     r   r   z+urls.<locals>.url_encode.<locals>.<genexpr>Â   s*   è ø€ ÒVÈq˜AÔ!4Ñ4‘q¸A¼cÀ!»fÀS¸\Ð:JÓJÑVùs   ‚#%)r6   )rƒ   s    r   Ú
url_encodezurls.<locals>.url_encodeÁ   s   € Ø�w‰wÑVÐTUÔVÓVÐVr&   ÚhttpÚhttpsr   iÿÿ  )Ú	min_valueÚ	max_valuez:{}r   z{}://{}{}/{}{}r.   )rs   r+   rX   ÚintegersÚmapÚformatÚlistsÚtextÚstringÚ	printabler6   Úbuildsrx   ÚjustÚ_url_fragments_strategy)rˆ   ÚschemesÚportsÚpathss       r   Úurlsrš   ¸   sÉ   € ðW”cð Wœcó Wô �o‰o˜v wÐ/Ó0€GÜ�K‰K !¨yÔ9×=Ñ=¸e¿l¹lÓK€EÜ�H‰H”R—W‘WœV×-Ñ-Ó.×2Ñ2°:Ó>Ó?×CÑCÀCÇHÁHÓM€Eä�9‰9Ø×ÑØÜ‹	Ü
�‰�‹�eÑØÜ
�‰�‹Ô-Ñ-óð r&   )+Ú__doc__r’   Ú	functoolsr   Ú	importlibr   Ú
hypothesisr   r+   Úhypothesis.errorsr   Úhypothesis.internal.conjecturer   ri   Ú#hypothesis.internal.conjecture.datar   Úhypothesis.strategiesr	   Ú%hypothesis.strategies._internal.utilsr
   Ú	frozensetÚascii_lettersÚdigitsr†   r|   Útuplers   r%   Ú	compositer;   ÚSearchStrategyr=   rE   rx   r�   r”   Ú
charactersr,   rŽ   r6   r�   r–   rš   r   r&   r   ú<module>r«      sš  ðñó Ý Ý å 'Ý -Ý 6Ý >Ý (Ý Bá × 4Ñ 4°v·}±}Ñ DÀ~Ñ UÓVÐ Ø.°#°s°Ñ;Ð ñ �1Ôð	H˜u S¨# X™ò 	Hó ð	Hð ‡�ð˜6ð ¨ð °ò ó ðôZ˜×*Ñ*¨3Ñ/ô Zñz ¨Ô-à¸òØðØ25ðà×Ñ�sÑòó .ðð €B‡H�HØˆ�	‰	ñð
 ˆB�M‰M¨¸Ô=ØˆB�K‰K‹Mó	
ð ô÷ 	�Sˆ�‰ƒ\ß�Sˆ�‰Óð ñ$ ¨Ô-ðˆb×Ñ Ñ$ò ó .ñr&   