U
    '1eB                     @   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-109iniqw/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                     s   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 ]}|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)|}n0|dkr|fdd}n|dk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   )*r   sysversionr3   r0   Zreportlab.libr'   r   r(   _SAVEDr9   r*   r)   list__all__r   itemsr$   appendtuple	reportlabr   abspathdirname__file__getcwdr!   r#   endswithreplacesepr   r   r   r&   r4   r   filterrB   intfloattype)rD   r'   r(   Akr:   rL   DPpdr%   r   r6   r   _startUpI   sZ    


 



r^   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   r@   r   r   r   r>      s      z"register_reset.<locals>.<listcomp>Nc                    s   g | ]}|  kr|qS r   r   r@   funcr   r   r>      s     
 r   )ref)_registered_resetsweakrefra   rJ   )r`   Lra   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^   rb   remove)r   cr   r   r   r      s    r   )r   )NN)__doc__rH   r   r   rF   r0   r   	functoolsr   dictr"   r&   r^   rb   r   r   r   r   r   r   <module>   s$   )




8
