
    _j)                        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j        dg                    Z eeee ej        g d                    dedee         dedee         ddf
d            Z e e            ee ej        g d                    dedee         dedee         ddf
d            ZdS )    )Optional)urlparseN)given
strategies)FastAPIreturnc                      t          j        t          j        dd          dd          } t          j        | dd                              d	j                  S )
Na   z   min_codepointmax_codepoint   ?   alphabetmin_sizemax_size   r   r   -)sttext
characterslistsmapjoin)labels    c/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/chromadb/test/property/test_client_url.pyhostname_strategyr    
   sY    GRsCCC  E
 8EA22266sx@@@    )comorgneteduc                      t          j        t          j        dd          dd          } t          j        t                    }t          j        | |                              dj                  S )Nr
   r   r   r   r   r   .)r   r   r   sampled_fromtld_listtuplesr   r   )r   tlds     r   domain_strategyr,      sc    GRsCCC  E
 /(
#
#C9UC  $$SX...r!   r   i  )	min_value	max_valuec                      t          j        t          j        d          dd          } t          j        | dd                              dj                                      d           S )	Nzabcdefghijklmnopqrstuvwxyz/-_r   
   r      r   /c                     d| z   S )Nr2    )xs    r   <lambda>z#url_path_strategy.<locals>.<lambda>.   s
    sQw r!   )r   r   r(   r   r   r   )path_segments    r   url_path_strategyr8   %   se    7!@AA  L 	A666	SX			r!   urlc                 z    	 t          |           }t          |j        |j        g          S # t          $ r Y dS w xY w)NF)r   allschemenetloc	Exception)r9   parseds     r   is_valid_urlr@   2   sK    #FM6=1222   uu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><       */Rh/R/R/R r!   zhttp://zhttps://rD   )r   buildsr(   r,   r8   r4   r!   r   generate_valid_domain_urlrJ   :   sE    9R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    f#6f#6#6 r!   r0   )r   )z://z:///z://// rN   rD   )r   rI   r   r(   r,   r8   r4   r!   r   generate_invalid_domain_urlrQ   C   ss    9RR9667B'''?#?#?#?@@
 
 

 !"""$$	 	 	 	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|                    d          s&n|                    d          sJ d| d|             |                     d          r"dt	          |          z   |vsJ d|             n!dt	          |          z   |v sJ d|             |r"|                    |          sJ d|             d S d S )	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   sc    # $"-)	  D 555t55555$/;  ; ;59__V5L5L; ;:t::[::; ; ; 6"" HSYYd***,O,O,O****SYY$&&&(G(G(G&&& G}}-..FF0F0F0FFFFG GFFr!   c                     t          j        t                    5 }t          j        | |||           d d d            n# 1 swxY w Y   dt          |j                  v sJ d S )NrW   zInvalid URL)pytestraises
ValueErrorr   r^   r`   value)rF   rS   rT   rU   es        r   test_resolve_invalidrj   s   s     
z	"	" 
a'$(&1-		
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 CLL((((((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 A A A (''/*3/ / / / / 	+"+UCCCWRWYYOO"r{}} 
2,S1 
 
 
 
c d    2#4S#9    
R%6s%; 
 
 
 
 $")!2!2OBO[M4R4R  
 $	$$R_%A%A%ABB	  GG
3-G G sm	G
 
G G G G0 ((**	$$R_%A%A%ABB	  ))
3-) ) sm	)
 
) ) ) ) ) )r!   