U
    9g                     @   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k
rV   Y nX | }z| d| || W n tk
r   | }znz|j|jdd}W n t	tfk
r   d}Y nX |rt
|d	}| | | W 5 Q R X || W n   Y nX Y nX |S )
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   7/tmp/pip-unpacked-wheel-w2r18j3o/reportlab/rl_config.py_defaults_init   s8    	



r   Nr   c                 C   s&   ||k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   )lxmlZpyrxp)Zfreetyper   backend)ZrenderPMBackendZ	xmlParserZ	textPathsc                 C   sX   ddl m} d|  }||kr$|| }|r0||}t| d}|rJ|| | |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                     s6  ddl  ddl} | j d addlm} ddlm} t	i krt
| ddatdkrlG dd dat  | _att}t D ],\}}| t	|< t |< |tkr||| q|t|addl} j j|j    dd t jd	d
d}t	D ]2}|drg }t	| D ]h}	|	| d j}
d|
krlz j|
}
W n  t t!fk
rj   Y qY nX ||
r||
 qt"| j#$| fdd tt%|t | t |< qt	| }t&|t't(frt)|}nF|dkr|fdd}n.|dkr
dd }n|dr dd }nd}t"||| qd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   s    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       z_startUp.<locals>.<lambda>ZdefaultPageSizec                 S   s
   t || S r2   )getattr)vMr   r   r   r7   {   r8   )ZtrustedHostsZtrustedSchemesc                 S   s8   | d krd S t | tr4dd dd | dD D S | S )Nc                 S   s   g | ]}|r|qS r   r   ).0yr   r   r   
<listcomp>}   s      z._startUp.<locals>.<lambda>.<locals>.<listcomp>c                 S   s   g | ]}|  qS r   stripr<   r5   r   r   r   r>   }   s     ,)
isinstancestrr3   r:   r   r   r   r7   }   r8   ZGlobc                 S   s$   | r t td dd |  D S g S )Nc                 s   s   | ]}|  V  qd S r2   r?   )r<   _r   r   r   	<genexpr>   s     z-_startUp.<locals>.<lambda>.<locals>.<genexpr>)listfilterr3   rE   r   r   r   r7      r8   )*r   sysversionr3   r0   Zreportlab.libr'   r   r(   _SAVEDr9   r*   r)   rH   __all__r   itemsr$   appendtuple	reportlabr   abspathdirname__file__getcwdr!   r#   endswithreplacesepr   r   r   r&   r4   r   rI   rC   intfloattype)rJ   r'   r(   Akr:   rQ   DPpdr%   r   r6   r   _startUpI   s^    


 




rb   c                    sN   dd t D t dd<  fddt D }|r0d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   rA   r   r   r   r>      s      z"register_reset.<locals>.<listcomp>Nc                    s   g | ]}|  kr|qS r   r   rA   funcr   r   r>      s     
 r   )ref)_registered_resetsweakrefre   rO   )rd   Lre   r   rc   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)rb   rf   remove)r   cr   r   r   r      s    r   )r   )NN)__doc__rM   r   r   rL   r0   r   	functoolsr   dictr"   r&   rb   rf   r   r   r   r   r   r   <module>   s$   )




:
