
    Tf'%                        d Z ddlmZ 	 ddlZ[ddlmZ ddlmZm	Z	 ddl
mZmZ ddlmZ ddlmZmZmZmZmZmZmZmZ dd	lmZ d
dlmZ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Z* ed          Z+eede+f         ge+f         Z,	 e- n# e.$ r e/Z-Y nw xY wd Z0da1e d d            Z2e d!d            Z3e d"d            Z4e d#d            Z5d Z6da7e d             Z8e d             Z9e d             Z:dS # e;$ r ddlm<Z< dZ*Y dS w xY w)$z
Hypothesis strategies.
    )absolute_importN)reader)dirnamejoin)ascii_lettersdigits)
maxunicode)CallableIterableListOptionalSequenceTextTypeVarcast)open   )
DecodedURL
EncodedURL)assume)	compositeintegerslistssampled_fromtext)	IDNAErrorcheck_labelencode)decoded_urlsencoded_urlshostname_labels	hostnames	idna_textpathsport_numbersT.c                     t           s;g } t          t          t                    d          }t	          |          5 }t          d |D             d          }t          |           |D ]}|\  }}}|dk    r|d                             dd          }t          |          dk    r|	                    |d                    d	 |D             \  }	}
t          |	|
dz             D ]1}|t          k    r n#| 	                    t          |                     2	 d
d
d
           n# 1 swxY w Y   d                    |           a t           S )z>
        Returns a string containing IDNA characters.
        zidna-tables-properties.csv.gzc              3   @   K   | ]}|                     d           V  dS )utf-8N)decode).0lines     F/var/www/html/env/lib/python3.11/site-packages/hyperlink/hypothesis.py	<genexpr>z"idna_characters.<locals>.<genexpr>Q   s.      ??dT[[))??????    ,)	delimiterPVALIDr   -r   c              3   6   K   | ]}t          |d           V  dS )   N)int)r+   is     r-   r.   z"idna_characters.<locals>.<genexpr>b   s*      !?!?#a**!?!?!?!?!?!?r/   N )_idnaCharactersr   r   __file__	open_gzip
csv_readernextsplitlenappendranger	   unichr)resultdataFileNamedataFiler   rowcodespropdescriptionstartEndstartendr7   s               r-   idna_charactersrM   ?   s     #	/F
  !!#B L <(( 1H#??h???!   V! 1 1C/2,E4x'' !"1v||C33H8}})) 444!?!?h!?!?!?JE3"5#'22 1 1z>>!EfQii0000%11 1 1 1 1 1 1 1 1 1 1 1 1 1 14 "hhv..Os   CD$$D(+D(r8   c           
         t                      }|dk    sJ ||dk    sJ t          t           | t          |||                              }	 t	          |           n# t
          $ r t          d           Y nw xY w|S )a(  
        A strategy which generates IDNA-encodable text.

        @param min_size: The minimum number of characters in the text.
            C{None} is treated as C{0}.

        @param max_size: The maximum number of characters in the text.
            Use C{None} for an unbounded size.
        r   Nmin_sizemax_sizealphabetF)rM   r   r   r   idna_encoder   r   )drawrP   rQ   rR   rC   s        r-   r#   r#   o   s     #$$1}}}}q====Dx(XNNNOO
 
	 	 	 	5MMMMM	 s   A   A<;A<Fc           	      j    |rd}nd}t          t           | t          |d                              S )z
        A strategy which generates port numbers.

        @param allow_zero: Whether to allow port C{0} as a possible value.
        r   r   i  )	min_value	max_value)r   r6   r   )rT   
allow_zerorV   s      r-   r%   r%      s?      	IIICheLLLMMNNNr/   Tc                    |rt          t           | t          dd                              }	 |                    d           n# t          $ ry t          |                    d                    dt          d          z
  k    r@|dd         }t          |                    d                    dt          d          z
  k    @Y nOw xY wt          t           | t          ddt          t          t          z   d	z             
                              }	 t          |           n# t          $ r t          d           Y nw xY w|S )z
        A strategy which generates host name labels.

        @param allow_idn: Whether to allow non-ASCII characters as allowed by
            internationalized domain names (IDNs).
        r   ?   rP   rQ   asciipunycodezxn--Nr3   rO   F)r   r   r#   r   UnicodeEncodeErrorr?   r   r   r   r   UnicodeErrorr   )rT   	allow_idnlabels      r-   r!   r!      sg     	ttIq2$F$F$FGGHHE
'W%%%%% ' ' ' %,,z2233b3v;;6FFF "#2#JE	 %,,z2233b3v;;6FFF	' !"!#!%mf&<t&C!D!D   	 	E	 	 	 	5MMMMM	 s$   A B C
	C
D) )EEc                    t          t           | t          |                              fd                              g}|t          t          t                    | t          t          |          dd                              z  }t          d |D                       t          |          z   dz
  dk    r:|dd	         }t          d |D                       t          |          z   dz
  dk    :d
                    |          S )aD  
        A strategy which generates host names.

        @param allow_leading_digit: Whether to allow a leading digit in host
            names; they were not allowed prior to RFC 1123.

        @param allow_idn: Whether to allow non-ASCII characters as allowed by
            internationalized domain names (IDNs).
        )ra   c                 *    rdn| d         t           vS )NTr   )r   )lallow_leading_digits    r-   <lambda>zhostnames.<locals>.<lambda>   s    $7ODDQqT=O r/   r      r[   c              3   4   K   | ]}t          |          V  d S )N)r?   )r+   rb   s     r-   r.   zhostnames.<locals>.<genexpr>   s(      11#e**111111r/      Nr^   .)	r   r   r!   filterr   r   sumr?   r   )rT   rf   ra   labelss    `  r-   r"   r"      s:    #i888??     	 	
 	$JD#i888   	
 	
 		
 11&11111CKK?!CcIICRC[F 11&11111CKK?!CcII yy   r/   c                  ^    t            d } d                     |                       a t           S )zH
        Returns a string containing valid URL path characters.
        Nc               3      K   t          t                    D ]A} t          |           }|dv r	 |                    d           n# t          $ r Y 9w xY w|V  Bd S )Nz#/?r)   )rA   r	   rB   r   r_   )r7   cs     r-   charszpath_characters.<locals>.chars  s      z**  Aq		A Ezz !))))- ! ! ! ! GGGG s   A
AAr8   )_path_charactersr   )rr   s    r-   path_charactersrt      s9     #  "  "wwuuww//r/   c                     t          t          t                    | t          t	          dt                                d                              S )Nr   )rP   rR   
   )rQ   )r   r   r   r   r   rt   rT   s    r-   r$   r$     sO     JDdA0A0ABBBRPPP 
 
 	
r/   c           
         t          t          t                    | t          d                              }t          t           | t                                          }t          t          t                    | t                                          }|dk    rd}t          t          t           | t          d                              |||          S )z
        A strategy which generates L{EncodedURL}s.
        Call the L{EncodedURL.to_uri} method on each URL to get an HTTP
        protocol-friendly URI.
        T)rX   r   N)httphttps)schemehostportpath)
r   r   r6   r%   r   r"   r   r$   r   r   )rT   r}   r|   r~   s       r-   r    r    #  s     HSM44(E(E(E#F#FGGD$$y{{++,,HTNDDMM22199Ddd<0C#D#DEEFF	
 
 
 	
r/   c                 J    t           | t                                          S )z
        A strategy which generates L{DecodedURL}s.
        Call the L{EncodedURL.to_uri} method on each URL to get an HTTP
        protocol-friendly URI.
        )r   r    rw   s    r-   r   r   9  s      $$|~~..///r/   )Tuple )r   N)F)T)TT)=__doc__
__future__r   
hypothesiscsvr   r<   os.pathr   r   stringr   r   sysr	   typingr
   r   r   r   r   r   r   r   gzipr   r;   r8   r   r   r   hypothesis.strategiesr   r   r   r   r   idnar   r   r   rS   __all__r&   DrawCallablerB   	NameErrorchrrM   r9   r#   r%   r!   r"   rt   rs   r$   r    r   ImportErrorr   r   r/   r-   <module>r      s?    ' & & & & &z0 )(((((%%%%%%%%,,,,,,,,	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 '&&&&&((((((((!!!!!!              CBBBBBBBBBG 	AXc1f-.12L   , , ,\ O   Y@ O O O YO + + + Y+Z )! )! )! Y)!V     < 
 
 Y
 
 
 Y
* 0 0 Y0 0 0_	    GGGGs#   C9 B BB9D
	D
