
    iO              
          S r SSKrSSKJr  SSKJr  SSKJr  SSK	J
r
  SSKJr  SSKJr  SS	KJr  SS
KJr  \" \R*                  \R,                  -   S-   5      r\SS1-  r\" SS9S\\S4   4S j5       r\R8                  S\S\S\4S j5       r " S S\R<                  \   5      r\" SS9SSS.S\ S\ S\R<                  \   4S jj5       r!\RD                  " \RF                  " S  \RH                  " SSS!9\RJ                  " 5       5      SS"9RM                  S#RN                  5      RM                  S$RP                  5      r)\" SS9S\R<                  \   4S% j5       r*g)&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                      [         R                  " S5      S-  n U R                  SS9R                  5       tpUR	                  S5      (       d   eS/[        S U 5       [        S9Q7$ )	Nzhypothesis.vendorztlds-alpha-by-domain.txtzutf-8)encoding#COMc              3   4   #    U  H  oS :w  d  M
  Uv   M     g7f)ARPAN ).0ds     U/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/hypothesis/provisional.py	<genexpr>(get_top_level_domains.<locals>.<genexpr>.   s     <u!VAAus   		)key)r   files	read_text
splitlines
startswithsortedlen)traversable_comment_tldss      r   get_top_level_domainsr&   $   sl     //"569SSK",,g,>IIKHs#### GF<u<#FGG    drawtldc           
      R   [        U5      nU " [        R                  " S [        [	        U5      5       5       6 5      n[        U5       HK  u  p4U(       d  M  X   R                  5       (       a  X   R                  5       OX   R                  5       X'   MM     SR                  U5      $ )Nc              3   L   #    U  H  n[         R                  " 5       v   M     g 7f)N)stbooleans)r   _s     r   r   #_recase_randomly.<locals>.<genexpr>4   s     For{{}}os   "$ )
listr,   tuplesranger"   	enumerateisupperlowerupperjoin)r(   r)   changesichange_cases        r   _recase_randomlyr<   1   sy    
s)C299FeCHoFGHG#G,;'*v~~'7'7SV\\^SV\\^CF - 773<r'   c                      ^  \ rS rSr\S\S\S\S-  S\S\4
S j5       r SS	\S-  S
\S-  SS4U 4S jjjrS\	S\4S jr
SrU =r$ )DomainNameStrategy;   minimummaximumvalueNvariable_namer   c           
          Uc  UnU$ [        U[        5      (       d$  [        SU S[        U5      R                   35      eXs=::  a  U::  d  O  [        SU < SU SU< SU< 35      eU$ )NzExpected integer but z is a zInvalid value z < =)
isinstanceintr   type__name__)r@   rA   rB   rC   s       r   clean_inputsDomainNameStrategy.clean_inputs<   s     =E  E3''!'fT%[=Q=Q<RS  ,W,! 3}oQuis7+V  r'   
max_lengthmax_element_lengthc                   >^  T R                  SSUS5      nT R                  SSUS5      n[        TT ]	  5         UT l        UT l        T R                  S:X  a  SnO(T R                  S:X  a  S	nOT R                  S-
  nS
U4-  n[
        R                  " [        5       5      R                  U 4S j5      R                  [        5      T l        [
        R                  " USS9R                  S 5      T l        g)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`
      rL   r   ?   rM   z[a-zA-Z]   z[a-zA-Z][a-zA-Z0-9]?z)[a-zA-Z]([a-zA-Z0-9\-]{0,%d}[a-zA-Z0-9])?c                 :   > [        U 5      S-   TR                  :*  $ )NrR   )r"   rL   )r)   selfs    r   <lambda>-DomainNameStrategy.__init__.<locals>.<lambda>z   s    C1 ?r'   T)	fullmatchc                 <    [        U 5      S:  =(       d    U SS S:g  $ )NrO   rR   z--)r"   )labels    r   rU   rV      s    #e*q.>E!AJ$,>>r'   N)rJ   super__init__rL   rM   r,   sampled_fromr&   filterflatmapr<   domain_strategy
from_regexelem_strategy)rT   rL   rM   label_regex,maximum_center_character_pattern_repetitions	__class__s   `    r   r[   DomainNameStrategy.__init__L   s     &&q#z<H
!..r%';
 	$"4
 ""a'%K$$)1K;?;R;RUV;V8F<J K OO134V?@W%& 	  ]];$GNN>
r'   datac                 v   UR                  U R                  5      n[        R                  " USSSS9nUR	                  5       (       aq  UR                  U R
                  5      n[        U5      [        U5      -   U R                  :  a  UR                  SS9   U$ US-   U-   nUR	                  5       (       a  Mq  U$ )Nr      ~   )min_sizeaverage_sizemax_sizeT)discard.)	r(   r_   cumanymorera   r"   rL   	stop_span)rT   rf   domainelements
sub_domains        r   do_drawDomainNameStrategy.do_draw   s    4//0 774!!cJmmoo4#5#56J6{S_,?t,  #%.F mmoo r'   )r_   ra   rM   rL   )NN)rI   
__module____qualname____firstlineno__staticmethodrG   strrJ   r[   r   rv   __static_attributes____classcell__)rd   s   @r   r>   r>   ;   s    "+.:FI	   OS6
*6
ADt6
	6
 6
pN s  r'   r>   T)force_reusable_valuesrP   rQ   rL   rM   rL   rM   c                     [        XS9$ )z<Generate :rfc:`1035` compliant fully qualified domain names.r   )r>   r   s     r   domainsr      s    
  r'   c                 F    U(       d
  U [         ;  a  S[        U 5      S 3$ U $ )N%02X)FRAGMENT_SAFE_CHARACTERSord)charencodes     r   rU   rU      s,    d*BB CIc?# r'   )min_codepointmax_codepoint)rj   r0   z#{}c            
      .   S[         S[         4S jn [        R                  " SS/5      n[        R                  " SSS9R	                  S	R
                  5      n[        R                  " [        R                  " [        R                  5      R	                  U 5      5      R	                  S
R                  5      n[        R                  " SR
                  U[        5       [        R                  " S5      U-  U[        R                  " S5      [        -  5      $ )zA 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    SR                  S U  5       5      $ )Nr0   c              3   V   #    U  H  o[         ;   a  UOS [        U5      S 3v   M!     g7f)r   r   N)URL_SAFE_CHARACTERSr   )r   cs     r   r   +urls.<locals>.url_encode.<locals>.<genexpr>   s*     VTUq!44qAc!fS\:JJTUs   '))r8   )r   s    r   
url_encodeurls.<locals>.url_encode   s    wwVTUVVVr'   httphttpsr   i  )	min_value	max_valuez:{}r   z{}://{}{}/{}{}r0   )r|   r,   r\   integersmapformatliststextstring	printabler8   buildsr   just_url_fragments_strategy)r   schemesportspathss       r   urlsr      s    Wc Wc W oovw/0GKK!y9==ellKEHHRWWV--.22:>?CCCHHME99	
e
-- r'   )+__doc__r   	functoolsr   	importlibr   
hypothesisr   r,   hypothesis.errorsr   hypothesis.internal.conjecturer   ro   #hypothesis.internal.conjecture.datar   hypothesis.strategiesr	   %hypothesis.strategies._internal.utilsr
   	frozensetascii_lettersdigitsr   r   tupler|   r&   	compositer<   SearchStrategyr>   rG   r   r   r   
charactersr-   r   r8   r   r   r   r   r'   r   <module>r      s      ' - 6 > ( B 4 4v}} D~ UV .#s;  1	HuS#X 	H 	H 6    X**3/ Xv -25s . HH
		
 MM=KKM	
  	S\S $ -b$  .r'   