
    3i)                        S SK Jr  S SKJr  S SKrS SKJrJr  S SK	J
r
  S\R                  \   4S jr/ SQrS\R                  \   4S	 jr\R                   " \R"                  " S
SS9\R$                  " 5       5      r\R(                  " 5       rS\R                  \   4S jrS\S\4S jrS\R                  \   4S jrS\R                  \   4S jr\R                   " \" 5       \" 5       \R6                  " S/5      5      r\" \\\\R6                  " / SQ5      S9S\S\\   S\S\\   SS4
S j5       r\" \" 5       \\\R6                  " / SQ5      S9S\S\\   S\S\\   SS4
S j5       rg)    )Optional)urlparseN)given
strategies)FastAPIreturnc                      [         R                  " [         R                  " SSS9SSS9n [         R                  " U SSS9R	                  S	R
                  5      $ )
Na   z   min_codepointmax_codepoint   ?   alphabetmin_sizemax_size   r   r   -)sttext
characterslistsmapjoin)labels    `/home/james-whalen/.local/lib/python3.13/site-packages/chromadb/test/property/test_client_url.pyhostname_strategyr    
   sH    GGRsCE
 88EA266sxx@@    )comorgneteduc                      [         R                  " [         R                  " SSS9SSS9n [         R                  " [        5      n[         R
                  " X5      R                  SR                  5      $ )Nr
   r   r   r   r   r   .)r   r   r   sampled_fromtld_listtuplesr   r   )r   tlds     r   domain_strategyr,      sR    GGRsCE
 //(
#C99U $$SXX..r!   r   i  )	min_value	max_valuec                      [         R                  " [         R                  " S5      SSS9n [         R                  " U SSS9R	                  SR
                  5      R	                  S 5      $ )	Nzabcdefghijklmnopqrstuvwxyz/-_r   
   r      r   /c                     SU -   $ )Nr2    )xs    r   <lambda>#url_path_strategy.<locals>.<lambda>.   s    sQwr!   )r   r   r(   r   r   r   )path_segments    r   url_path_strategyr9   %   sR    77!@AL 	A6	SXX		r!   urlc                 |     [        U 5      n[        UR                  UR                  /5      $ ! [         a     gf = f)NF)r   allschemenetloc	Exception)r:   parseds     r   is_valid_urlrA   2   s:    #FMM6==122 s   +. 
;;c                  ~    [         R                  " S [         R                  " SS/5      [        5       [	        5       S9$ )Nc                     U  U U 3$ Nr4   
url_schemehostnameurl_paths      r   r6   +generate_valid_domain_url.<locals>.<lambda><       *hZz/Rr!   zhttp://zhttps://rE   )r   buildsr(   r,   r9   r4   r!   r   generate_valid_domain_urlrL   :   s3    99R??Iz#:; ""$	 r!   c                      [         R                  " S [         R                  " S [         R                  " SS9[         R                  " / SQ5      S9[	        5       [        5       S9$ )Nc                     U  U U 3$ rD   r4   rE   s      r   r6   -generate_invalid_domain_url.<locals>.<lambda>E   rJ   r!   c                     U  U 3$ rD   r4   r=   suffixs     r   r6   rO   G   s    fXfX#6r!   r0   )r   )z://z:///z://// rQ   rE   )r   rK   r   r(   r,   r9   r4   r!   r   generate_invalid_domain_urlrT   C   sL    99R99677B'??#?@

 !""$	 	r!   	localhost)z/api/v1z/api/v2N)rG   portssl_enableddefault_api_pathrG   rV   rW   rX   c                    [         R                  " U UUUS9n[        U5      (       d
   SU 35       eU(       a  UR                  S5      (       d$  OUR                  S5      (       d   SU SU 35       eU R                  S5      (       a  S[	        U5      -   U;  d
   SU 35       eOS[	        U5      -   U;   d
   SU 35       eU(       a!  UR                  U5      (       d
   SU 35       eg g )	Nchroma_server_hostchroma_server_http_portchroma_server_ssl_enabledrX   zInvalid URL: httpshttpz - SSL Enabled: :zPort in URL not expected: zPort in URL expected: )r   resolve_urlrA   
startswithstrendswith)rG   rV   rW   rX   _urls        r   test_url_resolverf   U   s     # $"-)	D 5tf55$/  T__V5L5L;	tf,[M:;L6""SYd*O.H,OO*SY$&G*@(GG&}}-..F-v0FF. r!   c                     [         R                  " [        5       n[        R                  " U UUUS9  S S S 5        S[        WR                  5      ;   d   eg ! , (       d  f       N*= f)NrZ   zInvalid URL)pytestraises
ValueErrorr   ra   rc   value)rG   rV   rW   rX   es        r   test_resolve_invalidrm   s   sR     
z	"a'$(&1-		
 
# CL((( 
#	"s   A
A%) typingr   urllib.parser   rh   
hypothesisr   r   r   chromadb.api.fastapir   SearchStrategyrc   r    r)   r,   one_ofintegersnoneport_strategybooleansssl_enabled_strategyr9   boolrA   rL   rT   r(   host_or_domain_strategyintrf   rm   r4   r!   r   <module>r|      s    !  . (A2,,S1 A (/**3/ / 		"++UCRWWYO{{} 
2,,S1 
c d 2#4#4S#9 
R%6%6s%; 
 ))!2BOO[M4R 
 $	$__%AB	GG
3-G G sm	G
 
GG0 (*	$__%AB	))
3-) ) sm	)
 
))r!   