
    1~h4                    0    d dl mZ d dlmZ  G d d      Zy)    )annotations)Anyc                  X    e Zd ZdZddddZddZddZedd       ZddZ	dd	Z
dd
Zy)
LiveServerzThe liveserver fixture

    This is the object that the ``live_server`` fixture returns.
    The ``live_server`` fixture handles creation and stopping.
    T)startc                  ddl m} ddlm} ddlm} i }i }|j                         D ]2  }|j                  dk(  s|j                         s$|||j                  <   4 ||d<   ddl
m}	 d|	j                  v rdd	lm}
 |
|d
<   nddlm} ||d
<   	 |j!                  d      \  }}t#        |      |d<    ||fi || _         |d|i      | _        d| j&                  _        |r| j-                          y y # t$        $ r |}Y Pw xY w)Nr   )connections)LiveServerThread)modify_settingssqliteconnections_override)settingszdjango.contrib.staticfiles)StaticFilesHandlerstatic_handler)_StaticFilesHandler:portappend)ALLOWED_HOSTST)	django.dbr	   django.test.testcasesr
   django.test.utilsr   allvendoris_in_memory_dbaliasdjango.confr   INSTALLED_APPS#django.contrib.staticfiles.handlersr   r   splitint
ValueErrorthread_live_server_modified_settingsdaemonr   )selfaddrr   r	   r
   r   liveserver_kwargsr   connr   r   r   hostr   s                 i/var/www/peopleoo.sandbox-dev.co.uk/venv/lib/python3.12/site-packages/pytest_django/live_server_helper.py__init__zLiveServer.__init__   s   ):5,.!OO% 	8D {{h&4+?+?+A37$TZZ0		8 5I01('8+B+BBN2D./A2E./	2CJD$ ),D	f%&tA/@A.=#T*/
+ "JJL   	D	s   C2 2D ?D c                n   | j                   j                  j                         D ]  }|j                           | j                   j	                          | j                   j
                  j                          | j                   j                  r(| j                   j                  }| j                          |y)zStart the serverN)	r#   r   valuesinc_thread_sharingr   is_readywaiterrorstop)r&   r)   r2   s      r+   r   zLiveServer.start:   s    KK44;;= 	&D##%	& 	!!#;;KK%%EIIKK     c                    | j                   j                          | j                   j                  j                         D ]  }|j	                           y)zStop the serverN)r#   	terminater   r.   dec_thread_sharing)r&   r)   s     r+   r3   zLiveServer.stopH   sB     	KK44;;= 	&D##%	&r4   c                b    d| j                   j                   d| j                   j                   S )Nzhttp://r   )r#   r*   r   r&   s    r+   urlzLiveServer.urlP   s+    ))*!DKK,<,<+=>>r4   c                    | j                   S Nr:   r9   s    r+   __str__zLiveServer.__str__T   s    xxr4   c                    |  | S r<    )r&   others     r+   __add__zLiveServer.__add__W   s    wr4   c                "    d| j                    dS )Nz<LiveServer listening at >r=   r9   s    r+   __repr__zLiveServer.__repr__Z   s    *488*A66r4   N)r'   strr   boolreturnNone)rH   rI   )rH   rF   )__name__
__module____qualname____doc__r,   r   r3   propertyr:   r>   rB   rE   r@   r4   r+   r   r      s?     48 +Z& ? ? 7r4   r   N)
__future__r   typingr   r   r@   r4   r+   <module>rQ      s    " U7 U7r4   