
    vKgc	                        S r SSKrSSKrSSKrSSKrSSKrSSKr " S S\R                  R                  5      r " S S\R                  R                  5      r " S S\R                  R                  \R                  5      rS
S	 jrg)z>Basic http server for tests to simulate PyPI or custom indexes    Nc                   `    \ rS rSrSrS\R                  R                  4S jrS r	S r
S rSrg	)
IndexServer   a9  Basic single-threaded http server simulating a package index

You can use this server in unittest like this::
    s = IndexServer()
    s.start()
    index_url = s.base_url() + 'mytestindex'
    # do some test requests to the index
    # The index files should be located in setuptools/tests/indexes
    s.stop()
 r   c                 f    [         R                  R                  R                  XU5        SU l        g NT)httpserver
HTTPServer__init___runselfserver_addressRequestHandlerClasss      W/var/www/highfloat_scraper/venv/lib/python3.13/site-packages/setuptools/tests/server.pyr   IndexServer.__init__   s&    
 	''>QR	    c                 ~    [         R                  " U R                  S9U l        U R                  R	                  5         g )N)target)	threadingThreadserve_foreverthreadstartr   s    r   r   IndexServer.start   s*    &&d.@.@Ar   c                     [         R                  " S5        U R                  5         U R                  R	                  5         U R
                  R                  5         g)zStop the serverg?N)timesleepshutdownr   joinsocketcloser   s    r   stopIndexServer.stop#   s8     	

3r   c                 $    U R                   nSU-  $ )Nz-http://127.0.0.1:%s/setuptools/tests/indexes/server_port)r   ports     r   base_urlIndexServer.base_url-   s    >EEr   )r   r   N)__name__
__module____qualname____firstlineno____doc__r
   r   SimpleHTTPRequestHandlerr   r   r&   r,   __static_attributes__ r   r   r   r      s.    	  KK@@Fr   r   c                       \ rS rSrS rSrg)RequestRecorder2   c                     [        U R                  5      R                  S/ 5      nUR                  U 5        U R	                  SS5        g )Nrequests   OK)varsr   
setdefaultappendsend_response)r   r:   s     r   do_GETRequestRecorder.do_GET3   s9    $//
B?3%r   r5   N)r.   r/   r0   r1   rA   r4   r5   r   r   r7   r7   2   s    &r   r7   c                   L    \ rS rSrSrS\4S jrS r\S 5       r	\S 5       r
Srg	)

MockServer9   z<
A simple HTTP Server that records the requests made to it.
r   c                     [         R                  R                  R                  XU5        [        R
                  R                  U 5        SU l        / U l        g r	   )r
   r   r   r   r   r   daemonr:   r   s      r   r   MockServer.__init__>   s?    ''>QR!!$'r   c                 $    U R                  5         g N)r   r   s    r   runMockServer.runD   s    r   c                      SU R                   -  $ )Nzlocalhost:%sr)   r   s    r   netlocMockServer.netlocG   s     0 000r   c                      SU R                   -  $ )Nz
http://%s/)rN   r   s    r   urlMockServer.urlK   s    dkk))r   )rG   r:   N)r.   r/   r0   r1   r2   r7   r   rK   propertyrN   rQ   r4   r5   r   r   rD   rD   9   s@     '.?  1 1 * *r   rD   c                    [         R                  R                  [         R                  R                  U 5      5      n SnUb  USU-   -  n[        R
                  R                  U[        R                  R                  U 5      5      $ )zConvert a path to a file: URL.zfile:z//)	ospathnormpathabspathurllibparseurljoinrequestpathname2url)rV   	authoritybases      r   path_to_urlr`   P   sc    77BGGOOD12DDy  <<fnn&A&A$&GHHr   rJ   )r2   http.serverr
   rU   r   r    urllib.parserY   urllib.requestr   r   r   BaseHTTPRequestHandlerr7   r   rD   r`   r5   r   r   <module>re      sm    D  	    $F$++(( $FN&dkk88 &*'')9)9 *.Ir   