
    Vhs                         d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZmZ d dlmZ d dlmZ d dlmZ d d	lmZ  ed
ej.                        Z G d de	      Zy)    N)datetime)settings)BaseCommandCommandError)
WSGIServerget_internal_wsgi_applicationrun)connections)
autoreload)_lazy_re_compile)get_docs_versionz^(?:
(?P<addr>
    (?P<ipv4>\d{1,3}(?:\.\d{1,3}){3}) |         # IPv4 address
    (?P<ipv6>\[[a-fA-F0-9:]+\]) |               # IPv6 address
    (?P<fqdn>[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*) # FQDN
):)?(?P<port>\d+)$c                   p     e Zd ZdZdZddhZdZdZdZdZ	e
Zd	 Z fd
Zd Zd Zd Zd Z fdZd Z xZS )Commandz0Starts a lightweight web server for development.)shutdown_messagez--verbosityz--tracebackz	127.0.0.1z::18000httpc                     |j                  ddd       |j                  ddddd	
       |j                  dddd
       |j                  dddd
       y )Naddrport?z$Optional port number, or ipaddr:port)nargshelpz--ipv6z-6
store_trueuse_ipv6z$Tells Django to use an IPv6 address.)actiondestr   z--nothreadingstore_falseuse_threadingz"Tells Django to NOT use threading.z
--noreloaduse_reloaderz*Tells Django to NOT use the auto-reloader.)add_argument)selfparsers     Y/home/dcms/DCMS/lib/python3.12/site-packages/django/core/management/commands/runserver.pyadd_argumentszCommand.add_arguments'   s    c(N 	 	
 	7 	 	
 	  5	 	 	
 	 =	 	 	
    c                 T    |d   rdt         j                  d<   t        |   |i | y )Nno_colornocolorDJANGO_COLORS)osenvironsuperexecute)r    argsoptions	__class__s      r"   r,   zCommand.execute?   s,    : +4BJJ'))r$   c                     t               S )z/Return the default WSGI handler for the runner.)r   )r    r-   r.   s      r"   get_handlerzCommand.get_handlerG   s    ,..r$   c                     dt               iS )z=Validation is called explicitly each time the server reloads.tags)set)r    r.   s     r"   get_check_kwargszCommand.get_check_kwargsK   s    r$   c                 h   t         j                  st         j                  st        d      |d   | _        | j                  rt
        j                  st        d      d| _        |d   sd| _        | j                  | _
        nt        j                  t        |d         }|t        d|d   z        |j                         \  | _        }}}| _
        | j                  j                         st        d| j                  z        | j                  rK|r#| j                  d	d
 | _        d| _        d| _        n&| j                  r|st        d| j                  z        | j                  s:| j                  r| j                   n| j"                  | _        | j                  | _         | j$                  di | y )Nz6You must set settings.ALLOWED_HOSTS if DEBUG is False.r   z"Your Python does not support IPv6.Fr    z5"%s" is not a valid port number or address:port pair.z%r is not a valid port number.   Tz!"%s" is not a valid IPv6 address. )r   DEBUGALLOWED_HOSTSr   r   sockethas_ipv6	_raw_ipv6addrdefault_portportrematch
naiveip_regroupsisdigitdefault_addr_ipv6default_addrr	   )r    r-   r.   m_ipv4_ipv6_fqdns          r"   handlezCommand.handleO   se   ~~h&<&<WXX
+==CDDz"DI))DIWZ%89Ay",.5j.AB  9:
5DIueUDI99$$&"#Cdii#OPPyy $		!BDI$(DM%)DN]]5&'JTYY'VWWyy26--..TEVEVDI!]]DN7r$   c                 x    |d   }|r!t        j                  | j                  fi | y | j                  di | y)z1Run the server, using the autoreloader if needed.r   N)N)r   run_with_reloader	inner_run)r    r.   r   s      r"   r	   zCommand.runp   s7    ~.((C7CDNN+7+r$   c           	         t        j                          |d   }|j                  dd      }|d   sA| j                  j	                  d       t
        |   |      }d|d<    | j                  di | | j                          t        j                  d      D ]  }|j                           	  | j                  |i |}t        | j                  t        | j                         || j"                  || j$                  | j&                  	       y # t(        $ r}t*        j,                  d
t*        j.                  dt*        j0                  di}		 |	|j*                     }
n# t2        $ r |}
Y nw xY w| j4                  j	                  d|
z         t7        j8                  d       Y d }~y d }~wt:        $ r5 |r| j                  j	                  |       t=        j>                  d       Y y w xY w)Nr   r   r7   skip_checkszPerforming system checks...

Tdisplay_num_errors)initialized_only)ipv6	threadingon_bind
server_clsz.You don't have permission to access that port.zThat port is already in use.z%That IP address can't be assigned to.z	Error: %sr8   r   r:   ) r   raise_last_exceptiongetstdoutwriter+   r5   checkcheck_migrationsr
   allcloser1   r	   r@   intrB   r   rX   rY   OSErrorerrnoEACCES
EADDRINUSEEADDRNOTAVAILKeyErrorstderrr)   _exitKeyboardInterruptsysexit)r    r-   r.   rW   r   check_kwargsconnhandlereERRORS
error_textr/   s              r"   rQ   zCommand.inner_runy   s    	'')O,	";;'92>}%KK?@ 73G<L15L-.DJJ&& 	OOT: 	DJJL		&d&&88G		DII]]#??  	 N  "@##%LF
#AGG_
 
KKkJ67HHQKK  	!!"23HHQK	sC   /AD 	G%2F$EF$E)&F$(E))6F$$>G%$G%c                 `   t         j                  dk(  rdnd}| j                  rd| j                   d}n| j                  dk(  rd}n| j                  }t	        j
                         j                  d      }| j                         }t        | d	| d
t        j                  d| j                   d| d| d| d| j                         t               }t        j                  j!                  d      dk7  r9| j                  j#                  | j$                  j'                  d| d             y y )Nwin32z
CTRL-BREAKz	CONTROL-C[]0z0.0.0.0z%B %d, %Y - %Xz
Django version z, using settings z 
Starting development server at z://:z/
Quit the server with .)fileDJANGO_RUNSERVER_HIDE_WARNINGtruezWARNING: This is a development server. Do not use it in a production setting. Use a production WSGI or ASGI server instead.
For more information on production servers see: https://docs.djangoproject.com/en/z/howto/deployment/)rl   platformr?   r@   r   nowstrftimeget_versionprintr   SETTINGS_MODULEprotocolr\   r   r)   r*   r[   r]   styleWARNING)r    server_portquit_commandr@   r   versiondocs_versions          r"   rX   zCommand.on_bind   s)   '*||w'>|K>>tyyk#DYY#D99Dlln%%&67""$e %Y&78P8P7S T..2mm_CvQ{m T$$0>4 	
 ()::>>9:fDKK

""9 :F G"" Er$   )__name__
__module____qualname__r   stealth_optionssuppressed_base_argumentsrI   rH   rA   r   r   rY   r#   r,   r1   r5   rN   r	   rQ   rX   __classcell__)r/   s   @r"   r   r      s\    =D+O!. >LLHJ
0*/B,1fr$   r   )rd   r)   rC   r=   rl   r   django.confr   django.core.management.baser   r   django.core.servers.basehttpr   r   r	   	django.dbr
   django.utilsr   django.utils.regex_helperr   django.utils.versionr   XrE   r   r:   r$   r"   <module>r      sU     	 	  
    A W W ! # 6 1 DD
nk nr$   