o
    g4                     @  s*   d dl mZ d dlmZ G dd dZdS )    )annotations)Anyc                   @  s`   e Zd ZdZdddd
dZdddZdddZedddZdddZ	dddZ
dddZdS )
LiveServerzThe liveserver fixture

    This is the object that the ``live_server`` fixture returns.
    The ``live_server`` fixture handles creation and stopping.
    T)startaddrstrr   boolreturnNonec                C  s  ddl m} ddlm} ddlm} i }i }| D ]}|jdkr*| r*|||j	< q||d< ddl
m}	 d|	jv rEdd	lm}
 |
|d
< n
ddlm} ||d
< z	|d\}}W n tyc   |}Y nw t||d< ||fi || _|d|id| _d| j_|r|   d S d S )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
ValueErrorintthread_live_server_modified_settingsdaemonr   )selfr   r   r   r   r   liveserver_kwargsr   connr   r   r   hostr    r,   `/var/www/html/bloggers_ems/venv/lib/python3.10/site-packages/pytest_django/live_server_helper.py__init__   s<   


zLiveServer.__init__c                 C  sP   | j j D ]}|  q| j   | j j  | j jr&| j j}|   |dS )zStart the serverN)	r%   r   valuesinc_thread_sharingr   is_readywaiterrorstop)r(   r*   r3   r,   r,   r-   r   :   s   

zLiveServer.startc                 C  s(   | j   | j j D ]}|  qdS )zStop the serverN)r%   	terminater   r/   dec_thread_sharing)r(   r*   r,   r,   r-   r4   H   s   

zLiveServer.stopc                 C  s   d| j j d| j j S )Nzhttp://r   )r%   r+   r   r(   r,   r,   r-   urlP   s   zLiveServer.urlc                 C  s   | j S Nr8   r7   r,   r,   r-   __str__T   s   zLiveServer.__str__c                 C  s   |  | S r9   r,   )r(   otherr,   r,   r-   __add__W   s   zLiveServer.__add__c                 C  s   d| j  dS )Nz<LiveServer listening at >r:   r7   r,   r,   r-   __repr__Z   s   zLiveServer.__repr__N)r   r   r   r   r	   r
   )r	   r
   )r	   r   )__name__
__module____qualname____doc__r.   r   r4   propertyr8   r;   r=   r?   r,   r,   r,   r-   r      s    
-


r   N)
__future__r   typingr   r   r,   r,   r,   r-   <module>   s    