
    ug)                        d dl mZ d dlmZ d dlZd dlmZmZ d dl	m
Z
 dej                  e   fdZg dZdej                  e   fd	Z ej                    ej"                  d
d       ej$                               Z ej(                         Zdej                  e   fdZdedefdZdej                  e   fdZdej                  e   fdZ ej                    e        e        ej6                  dg            Z eeee ej6                  g d            dedee   dedee   ddf
d       Z e e       ee ej6                  g d            dedee   dedee   ddf
d       Zy)    )Optional)urlparseN)given
strategies)FastAPIreturnc                      t        j                  t        j                  dd      dd      } t        j                  | dd      j	                  d	j
                        S )
Na   z   min_codepointmax_codepoint   ?   alphabetmin_sizemax_size   r   r   -)sttext
characterslistsmapjoin)labels    [/var/www/openai/venv/lib/python3.12/site-packages/chromadb/test/property/test_client_url.pyhostname_strategyr    
   sH    GGRsCE
 88EA266sxx@@    )comorgneteduc                      t        j                  t        j                  dd      dd      } t        j                  t              }t        j
                  | |      j                  dj                        S )Nr
   r   r   r   r   r   .)r   r   r   sampled_fromtld_listtuplesr   r   )r   tlds     r   domain_strategyr,      sT    GGRsCE
 //(
#C99UC $$SXX..r!   r   i  )	min_value	max_valuec                      t        j                  t        j                  d      dd      } t        j                  | dd      j	                  dj
                        j	                  d       S )	Nzabcdefghijklmnopqrstuvwxyz/-_r   
   r      r   /c                     d| z   S )Nr2    )xs    r   <lambda>z#url_path_strategy.<locals>.<lambda>.   s    sQwr!   )r   r   r(   r   r   r   )path_segments    r   url_path_strategyr8   %   sR    77!@AL 	A6	SXX		r!   urlc                 z    	 t        |       }t        |j                  |j                  g      S # t        $ r Y yw xY w)NF)r   allschemenetloc	Exception)r9   parseds     r   is_valid_urlr@   2   s:    #FMM6==122 s   +. 	::c                      t        j                  d t        j                  ddg      t               t	                     S )Nc                     |  | | S Nr4   
url_schemehostnameurl_paths      r   r6   z+generate_valid_domain_url.<locals>.<lambda><       *hZz/Rr!   zhttp://zhttps://rD   )r   buildsr(   r,   r8   r4   r!   r   generate_valid_domain_urlrJ   :   s3    99R??Iz#:; ""$	 r!   c                      t        j                  d t        j                  d t        j                  d      t        j                  g d            t	               t                     S )Nc                     |  | | S rC   r4   rD   s      r   r6   z-generate_invalid_domain_url.<locals>.<lambda>E   rH   r!   c                     |  | S rC   r4   r<   suffixs     r   r6   z-generate_invalid_domain_url.<locals>.<lambda>G   s    fXfX#6r!   r0   )r   )z://z:///z://// rN   rD   )r   rI   r   r(   r,   r8   r4   r!   r   generate_invalid_domain_urlrQ   C   sL    99R99677B'??#?@

 !""$	 	r!   	localhost)z/api/v1z/api/v2N)rF   portssl_enableddefault_api_pathrF   rS   rT   rU   c                    t        j                  | |||      }t        |      s
J d|        |r|j                  d      sn|j                  d      sJ d| d|        | j                  d      rdt	        |      z   |vs$J d|        dt	        |      z   |v s
J d|        |r|j                  |      s
J d|        y y )	Nchroma_server_hostchroma_server_http_portchroma_server_ssl_enabledrU   zInvalid URL: httpshttpz - SSL Enabled: :zPort in URL not expected: zPort in URL expected: )r   resolve_urlr@   
startswithstrendswith)rF   rS   rT   rU   _urls        r   test_url_resolverc   U   s     # $"-)	D 5tf55$/ T__V5L;	tf,[M:;L6"SYd*O.H,OO*SY$&G*@(GG&}}-.F-v0FF. r!   c                     t        j                  t              5 }t        j                  | |||       d d d        dt        j                        v sJ y # 1 sw Y   #xY w)NrW   zInvalid URL)pytestraises
ValueErrorr   r^   r`   value)rF   rS   rT   rU   es        r   test_resolve_invalidrj   s   sR     
z	"a'$(&1-		
 
# CL((( 
#	"s   AA) typingr   urllib.parser   re   
hypothesisr   r   r   chromadb.api.fastapir   SearchStrategyr`   r    r)   r,   one_ofintegersnoneport_strategybooleansssl_enabled_strategyr8   boolr@   rJ   rQ   r(   host_or_domain_strategyintrc   rj   r4   r!   r   <module>ry      s    !  . (A2,,S1 A (/**3/ / 		+"++UCWRWWYO"r{{} 
2,,S1 
c d 2#4#4S#9 
R%6%6s%; 
 $"))!2OBOO[M4R 
 $	$$R__%AB	GG
3-G G sm	G
 
GG0 (*	$$R__%AB	))
3-) ) sm	)
 
))r!   