o
    %eB                     @   s   d Z dadd Ze Zi ZdadddZdd	lmZ e	eed
deeddeedddZ
dddZdd Zg Zdd Zdd Ze  dS )z)module that aggregates config information)_resetregister_resetc                  C   s,  ddl m}  ddl}i }| d| | }z| d| || W n	 ty*   Y nw | }z| d| || W |S  ty   | }zFz|j|jdd}W n t	tfyb   d}Y nw |rt
|d	}| | | W d   n1 s|w   Y  || W Y |S W Y |S    Y Y |S w )
z
    create & return defaults for all reportlab settings from
    reportlab.rl_settings.py
    reportlab.local_rl_settings.py
    reportlab_settings.py or ~/.reportlab_settings

    latter values override earlier
        )rl_execNz#from reportlab.rl_settings import *z)from reportlab.local_rl_settings import *z from reportlab_settings import *~z.reportlab_settingsrb)reportlab.lib.utilsr   oscopyupdateImportErrorpath
expanduserjoinKeyErroropenread)r   r   	_DEFAULTSZ
_overridesfnf r   3lib/python3.10/site-packages/reportlab/rl_config.py_defaults_init   sH   	


r   Nr   c                 C   s&   ||vrt d|d|  d| d S )Nzinvalid value z for rl_config.z
need one of )
ValueError)namevalueallowedr   r   r   _enumChk2   s   r   r   )partial)Z	rlPyCairo	_renderPM)r   )ZlxmlZpyrxp)Zfreetyper   Zbackend)ZrenderPMBackendZ	xmlParserZ	textPathsc                 C   sX   ddl m} d|  }||v r|| }|r||}t| d}|r%|| | |t | < dS )z-set a module level value from environ/defaultr   )environZRL_N)r   r   	_rlChecksgetglobals)r   r   convZchkr   Zenamer   r   r   _setOpt>   s   r$   c                     s  ddl  ddl} | j d addlm} ddlm} t	i krYt
| ddatdu r6G dd dat  | _att}t D ]\}}| t	|< t |< |tvrT|| q>t|addl} j j|j    dd t jd	d
d}t	D ]}|drg }t	| D ],}	|	| d j}
d|
v rz j|
}
W n t t!fy   Y qw ||
r||
 qt"| j#$| fdd tt%|t | t |< q~t	| }t&|t't(frt)|}n|dkr|fdd}n|dv rdd }nd}t"||| q~dS )zThis function allows easy resetting to the global defaults
    If the environment contains 'RL_xxx' then we use the value
    else we use the given defaultr   N)	pagesizes)rl_isdir_rl_config__unset_c                   @   s   e Zd ZdS )_unset_N)__name__
__module____qualname__r   r   r   r   r(   V       r(   :XDG_DATA_HOMEz~/.local/share)ZREPORTLAB_DIRZCWDZdisksys_versionr.   Z
SearchPath/r   c                    s   |   jS N)splitpathsep)xr   r   r   <lambda>t   r,   z_startUp.<locals>.<lambda>ZdefaultPageSizec                 S   s
   t || S r1   )getattr)vMr   r   r   r6   {   s   
 )ZtrustedHostsZtrustedSchemesc                 S   s8   | d u rd S t | trdd dd | dD D S | S )Nc                 S   s   g | ]}|r|qS r   r   ).0yr   r   r   
<listcomp>}       z._startUp.<locals>.<lambda>.<locals>.<listcomp>c                 S   s   g | ]}|  qS r   )stripr:   r4   r   r   r   r<   }   r=   ,)
isinstancestrr2   )r8   r   r   r   r6   }   s   8 )*r   sysversionr2   r/   Zreportlab.libr%   r   r&   _SAVEDr7   r(   r'   list__all__r   itemsr"   appendtuple	reportlabr   abspathdirname__file__getcwdr   r!   endswithreplacesepr   r   r   r$   r3   r   filterrA   intfloattype)rC   r%   r&   Akr8   rK   DPpdr#   r   r5   r   _startUpI   s`   



r]   c                    sN   dd t D t dd<  fddt D }|rdS ddlm} t |  dS )z4register a function to be called by rl_config._resetc                 S   s   g | ]}| r|qS r   r   r?   r   r   r   r<      s    z"register_reset.<locals>.<listcomp>Nc                    s   g | ]	}|  u r|qS r   r   r?   funcr   r   r<      s    r   )ref)_registered_resetsweakrefr`   rI   )r_   Lr`   r   r^   r   r      s
   r   c                  C   s8   t   tdd D ]} |  }|r|  q	t|  q	dS )z&attempt to reset reportlab and friendsN)r]   ra   remove)r   cr   r   r   r      s   r   )r   )NN)__doc__rG   r   r   rE   r/   r   	functoolsr   dictr    r$   r]   ra   r   r   r   r   r   r   <module>   s&    )




8

