HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/env/lib64/python3.10/site-packages/honcho/__pycache__/environ.cpython-310.pyc
o

we2�@s�ddlmZddlmZddlmZddlZddlZddlZddlZddlZddl	Z	ddl
mZejr7ddl
Z
e�d�ZGdd	�d	e�ZGd
d�de�Zdd
�Zdd�Zedd�Zddd�ZdS)�)�OrderedDict)�defaultdict)�
namedtupleN�)�compatz^([A-Za-z0-9_-]+):\s*(.+)$c@sFeZdZdd�Zejrdd�Zndd�Zejrdd�Zd	Sdd�Zd	S)
�EnvcCs
tj��S�N)�datetime�now��self�r
�G/home/arjun/projects/env/lib/python3.10/site-packages/honcho/environ.pyr
s
zEnv.nowcCs4tjj�dd|�}tjj�|d�tjj�|�dS)NrF���)�ctypes�windll�kernel32�OpenProcess�TerminateProcess�CloseHandle)r�pid�handler
r
r�	terminatesz
Env.terminatec
C�Pz
t�|tj�WdSty'}z|jtjtjfvr�WYd}~dSd}~wwr)�os�killpg�signal�SIGTERM�OSError�errno�EPERM�ESRCH�rr�er
r
rr!����cCs|�|�dSr)r)rrr
r
r�kill)szEnv.killc
Crr)rrr�SIGKILLrrr r!r"r
r
rr%-r$N)�__name__�
__module__�__qualname__r
r�
ON_WINDOWSrr%r
r
r
rrs
rc@s eZdZdZdd�Zdd�ZdS)�Procfilez(A data structure representing a ProcfilecCst�|_dSr)r�	processesrr
r
r�__init__8szProcfile.__init__cCs ||jvs	Jd��||j|<dS)Nz.process names must be unique within a Procfile)r,)r�name�commandr
r
r�add_process;s�zProcfile.add_processN)r'r(r)�__doc__r-r0r
r
r
rr+5sr+cCs>t�}|��D]}t�|�}|r|�|�d�|�d��q|S)Nr�)r+�
splitlines�
PROCFILE_LINE�matchr0�group)�contents�p�line�mr
r
r�parse_procfileAs
�r;cCs�i}|��D]A}tj|dd�}t|�}t|�dkrq|dd�\}}d�|dd��}|dkr0qt�d|�s7q|�d	d
�}|�dd�}|||<q|S)
z|
    Parse the content of a .env file (a line-delimited KEY=value format) into a
    dictionary mapping keys to values.
    T)�posix�Nr2��=z[A-Za-z_][A-Za-z_0-9]*z\n�
z\t�	)r3�shlex�list�len�join�rer5�replace)�content�valuesr9�lexer�tokensr.�op�valuer
r
r�parseJs 
rN�
ProcessParamszname cmd quiet envcCs�|dur|�d�durt|�d��}|durg}tdd��}|dur'|�|�g}|��D]H\}}t||�D]5}	d�||	d�}
|}||v}d|
i}
|durT|
�|�|dur`t||	�|
d<t|
|||
�}|�	|�q7|duru|d7}q-|S)	aj
    Get a list of the processes that need to be started given the specified
    list of process types, concurrency, environment, quietness, and base port
    number.

    Returns a list of ProcessParams objects, which have `name`, `cmd`, `env`,
    and `quiet` attributes, corresponding to the parameters to the constructor
    of `honcho.process.Process`.
    N�PORTcSsdS)Nrr
r
r
r
r�<lambda>zsz"expand_processes.<locals>.<lambda>z{0}.{1}r�HONCHO_PROCESS_NAME�d)
�get�intr�update�items�range�format�strrO�append)r,�concurrency�env�quiet�port�con�outr.�cmd�i�n�c�qr#�paramsr
r
r�expand_processesjs0


�rh)NNNN)�collectionsrrrr	rrBrrFrr>rr*r�compiler4�objectrr+r;rNrOrhr
r
r
r�<module>s&
!