a
    ¥Q•hE,  ã                   @   sò  d Z dZddlZddlZddlmZmZmZ ddlm	Z	 z
ej
ZW n eyZ   ejZY n0 G dd„ deƒZG dd	„ d	ƒZG d
d„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG d d!„ d!eƒZG d"d#„ d#eƒZG d$d%„ d%eƒZG d&d'„ d'eƒZdd(l m!Z! G d)d*„ d*eƒZ"G d+d,„ d,eƒZ#G d-d.„ d.e#ƒZ$G d/d0„ d0eƒZ%G d1d2„ d2eƒZ&G d3d4„ d4eƒZ'G d5d6„ d6eƒZ(G d7d8„ d8e(ƒZ)G d9d:„ d:e(ƒZ*G d;d<„ d<eƒZ+G d=d>„ d>eƒZ,G d?d@„ d@e(ƒZ-G dAdB„ dBeƒZ.G dCdD„ dDeƒZ/G dEdF„ dFeƒZ0G dGdH„ dHƒZ1G dIdJ„ dJe1ƒZ2e2ƒ Z3G dKdL„ dLe4ƒZ5e,ƒ Z6eƒ Z7eƒ Z8eƒ Z9eƒ Z:eƒ Z;e)e;dMƒZ<eƒ Z=e&dNdOdPdQƒZ>e'e:dRƒZ?e'e=dSƒZ@e'e@dTƒZAeƒ ZBeƒ ZCe'e8dUƒZDeƒ ZEeƒ ZFeƒ ZGe'eGdVƒZHeƒ ZIe#ƒ  ZJZKe$ƒ  ZLZMeƒ ZNeƒ ZOe'e:dWdWddX�ZPe&dYdZd[d\d]d^d_d`dadbdcƒZQe)e8ddƒZRe'eRdedfdg�ZSe'eRdhddg�ZTe'e=didfdg�ZUe%ƒ ZVe)eVƒZWe(e8eVfdjƒZXe)eXdkƒZYe)e8dlƒZZe"ƒ Z[e+ƒ Z\dS )mz3.5.33z-Standard verifying functions used by attrmap.é    N)ÚisSeqÚisBytesÚisStr)Úcolorsc                   @   s   e Zd ZdS )Ú
PercentageN)Ú__name__Ú
__module__Ú__qualname__© r
   r
   úQ/var/www/sistema_ama/venv/lib/python3.9/site-packages/reportlab/lib/validators.pyr      s   r   c                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )Ú	Validatorzbase validator classc                 C   s
   |   |¡S ©N)Útest©ÚselfÚxr
   r
   r   Ú__call__   s    zValidator.__call__c                 C   s   t | d| jjƒS )NÚ_str)ÚgetattrÚ	__class__r   ©r   r
   r
   r   Ú__str__   s    zValidator.__str__c                 C   s   |S r   r
   r   r
   r
   r   Ú	normalize   s    zValidator.normalizec                 C   s$   z|   |¡ W dS    Y dS 0 d S ©NTF)r   r   r
   r
   r   ÚnormalizeTest   s
    
zValidator.normalizeTestN)r   r   r	   Ú__doc__r   r   r   r   r
   r
   r
   r   r      s
   r   c                   @   s   e Zd Zdd„ ZdS )Ú_isAnythingc                 C   s   dS ©NTr
   r   r
   r
   r   r   %   s    z_isAnything.testN©r   r   r	   r   r
   r
   r
   r   r   $   s   r   c                   @   s   e Zd Zdd„ ZdS )Ú
_isNothingc                 C   s   dS ©NFr
   r   r
   r
   r   r   )   s    z_isNothing.testNr   r
   r
   r
   r   r   (   s   r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú
_isBooleanc                 C   s   t ttƒr|dv S |  |¡S )N©r   é   )Ú
isinstanceÚintÚboolr   r   r
   r
   r   r   -   s    z_isBoolean.testc                 C   sb   |dv r|S z|  ¡ }W n   tdttƒ ƒ‚Y n0 |dv rBdS |dv rNdS tdttƒ ƒ‚d S )Nr"   zMust be boolean not %s)ZYESÚTRUET)ÚNOÚFALSENF)ÚupperÚ
ValueErrorÚasciiÚs)r   r   ÚSr
   r
   r   r   1   s    z_isBoolean.normalizeN©r   r   r	   r   r   r
   r
   r
   r   r!   ,   s   r!   c                   @   s   e Zd Zdd„ ZdS )Ú	_isStringc                 C   s   t |ƒS r   )r   r   r
   r
   r   r   <   s    z_isString.testNr   r
   r
   r
   r   r0   ;   s   r0   c                   @   s   e Zd Zdd„ ZdS )Ú_isCodecc                 C   s>   t |ƒsdS zt |¡\}}}}W dS  ty8   Y dS 0 d S )NFT)r   ÚcodecsÚlookupÚLookupError)r   r   ÚaÚbÚcÚdr
   r
   r   r   @   s    z_isCodec.testNr   r
   r
   r
   r   r1   ?   s   r1   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú	_isNumberc                 C   s   t |ttfƒrdS |  |¡S r   )r$   Úfloatr%   r   r   r
   r
   r   r   J   s    z_isNumber.testc                 C   s$   z
t |ƒW S    t|ƒ Y S 0 d S r   )r:   r%   r   r
   r
   r   r   N   s    
z_isNumber.normalizeNr/   r
   r
   r
   r   r9   I   s   r9   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú_isIntc                 C   s    t |tƒst|ƒsdS |  |¡S r    )r$   r%   r   r   r   r
   r
   r   r   U   s    z_isInt.testc                 C   s   t t|ƒr| d¡n|ƒS )NÚutf8)r%   r   Údecoder   r
   r
   r   r   Y   s    z_isInt.normalizeNr/   r
   r
   r
   r   r;   T   s   r;   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú_isNumberOrNonec                 C   s   |d u pt |ƒS r   )ÚisNumberr   r
   r
   r   r   ]   s    z_isNumberOrNone.testc                 C   s   |d u r|S t  |¡S r   )r9   r   r   r
   r
   r   r   `   s    z_isNumberOrNone.normalizeNr/   r
   r
   r
   r   r>   \   s   r>   c                   @   s   e Zd ZdZdd„ ZdS )Ú_isListOfNumbersOrNonez$ListOfNumbersOrNone validator class.c                 C   s   |d u rdS t |ƒS r   )ÚisListOfNumbersr   r
   r
   r   r   f   s    z_isListOfNumbersOrNone.testN©r   r   r	   r   r   r
   r
   r
   r   r@   d   s   r@   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚisNumberInRangec                 C   s   || _ || _d S r   )ÚminÚmax)r   rD   rE   r
   r
   r   Ú__init__k   s    zisNumberInRange.__init__c                 C   sH   z0|   |¡}| j|  kr$| jkr.n nW dS W n tyB   Y n0 dS r   )r   rD   rE   r+   )r   r   Únr
   r
   r   r   o   s    

zisNumberInRange.testN©r   r   r	   rF   r   r
   r
   r
   r   rC   j   s   rC   c                   @   s   e Zd ZdZdd„ ZdS )Ú_isListOfShapeszListOfShapes validator class.c                 C   s<   ddl m} t|ƒr4d}|D ]}t||ƒsd}q|S dS d S )Nr   )ÚShaper#   F)Úreportlab.graphics.shapesrJ   r   r$   )r   r   rJ   ÚanswerÚer
   r
   r   r   {   s    
z_isListOfShapes.testNrB   r
   r
   r
   r   rI   y   s   rI   c                   @   s   e Zd ZdZdd„ ZdS )Ú_isListOfStringsOrNonez$ListOfStringsOrNone validator class.c                 C   s   |d u rdS t |ƒS r   )ÚisListOfStringsr   r
   r
   r   r   ‰   s    z_isListOfStringsOrNone.testNrB   r
   r
   r
   r   rN   †   s   rN   c                   @   s   e Zd ZdZdd„ ZdS )Ú_isTransformzTransform validator class.c                 C   s>   t |ƒr6t|ƒdkr0|D ]}t|ƒs dS qdS dS ndS d S )Né   FT)r   Úlenr?   )r   r   Úelementr
   r
   r   r   �   s    z_isTransform.testNrB   r
   r
   r
   r   rP   �   s   rP   c                   @   s   e Zd ZdZdd„ ZdS )Ú_isColorzColor validator class.c                 C   s   t |tjƒS r   )r$   r   ÚColorr   r
   r
   r   r   �   s    z_isColor.testNrB   r
   r
   r
   r   rT   ›   s   rT   c                   @   s   e Zd ZdZdd„ ZdS )Ú_isColorOrNonezColorOrNone validator class.c                 C   s   |d u rdS t |ƒS r   )ÚisColorr   r
   r
   r   r   ¢   s    z_isColorOrNone.testNrB   r
   r
   r
   r   rV       s   rV   ©Ú
NormalDatec                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú_isNormalDatec                 C   s    t |tƒrdS |d uo|  |¡S r   )r$   rY   r   r   r
   r
   r   r   ¨   s    
z_isNormalDate.testc                 C   s   t |ƒS r   rX   r   r
   r
   r   r   ­   s    z_isNormalDate.normalizeNr/   r
   r
   r
   r   rZ   §   s   rZ   c                   @   s   e Zd ZdZdd„ ZdS )Ú_isValidChildzValidChild validator class.c                 C   s$   ddl m}m} t||ƒp"t||ƒS )zjIs this child allowed in a drawing or group?
        I.e. does it descend from Shape or UserNode?
        r   )ÚUserNoderJ   )rK   r\   rJ   r$   )r   r   r\   rJ   r
   r
   r   r   ²   s    z_isValidChild.testNrB   r
   r
   r
   r   r[   °   s   r[   c                   @   s   e Zd Zdd„ ZdS )Ú_isValidChildOrNonec                 C   s   t  | |¡p|d u S r   )r[   r   r   r
   r
   r   r   »   s    z_isValidChildOrNone.testNr   r
   r
   r
   r   r]   º   s   r]   c                   @   s   e Zd Zdd„ ZdS )Ú_isCallablec                 C   s
   t |dƒS )Nr   )Úhasattrr   r
   r
   r   r   ¿   s    z_isCallable.testNr   r
   r
   r
   r   r^   ¾   s   r^   c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚOneOfzäMake validator functions for list of choices.

    Usage:
    f = reportlab.lib.validators.OneOf('happy','sad')
    or
    f = reportlab.lib.validators.OneOf(('happy','sad'))
    f('sad'),f('happy'), f('grumpy')
    (1,1,0)
    c                 G   sr   t |ƒr(|dkrtdƒ‚t|ƒ| | _n|f| | _tdd„ | jD ƒƒ| _| jrntdd„ | jD ƒƒ| _| j| _d S )Nr
   z7Either all singleton args or a single sequence argumentc                 s   s   | ]}t |tƒr|V  qd S r   ©r$   Ú_re_Pattern©Ú.0Ú_r
   r
   r   Ú	<genexpr>Ó   ó    z!OneOf.__init__.<locals>.<genexpr>c                 s   s   | ]}t |tƒs|V  qd S r   ra   rc   r
   r
   r   rf   Õ   rg   )r   r+   ÚtupleÚ_enumÚ	_patternsÚ_test_patternsr   )r   ÚenumÚargsr
   r
   r   rF   Ì   s    zOneOf.__init__c                 C   s
   || j v S r   )ri   r   r
   r
   r   r   Ø   s    z
OneOf.testc                 C   s6   || j v }|rdS | jD ]}| |¡}|r dS qdS r   )ri   rj   Úmatch)r   r   ÚvÚpr
   r
   r   rk   Û   s    


zOneOf._test_patternsN)r   r   r	   r   rF   r   rk   r
   r
   r
   r   r`   Â   s   	r`   c                   @   s   e Zd Zd	dd„Zdd„ ZdS )
Ú
SequenceOfNr#   r   éÿÿÿc                 C   s.   || _ || _|| _|| | _| _|r*|| _d S r   )Ú	_elemTestÚ_emptyOKÚ_NoneOKÚ_loÚ_hir   )r   ZelemTestÚnameÚemptyOKÚNoneOKÚloÚhir
   r
   r   rF   å   s
    zSequenceOf.__init__c                 C   sp   t |ƒs|d u r| jS dS |g ks*|dkr0| jS | jt|ƒ  krL| jksRn dS |D ]}|  |¡sV dS qVdS )NFr
   T)r   ru   rt   rv   rR   rw   rs   )r   r   rM   r
   r
   r   r   ì   s    "zSequenceOf.test)Nr#   r   r   rr   rH   r
   r
   r
   r   rq   ä   s   
rq   c                   @   s   e Zd Zddd„Zdd„ ZdS )ÚEitherOrNc                 C   s"   t |ƒs|f}|| _|r|| _d S r   )r   Ú_testsr   )r   Útestsrx   r
   r
   r   rF   ø   s    zEitherOr.__init__c                 C   s   | j D ]}||ƒr dS qdS r   )r~   )r   r   Útr
   r
   r   r   ý   s    
zEitherOr.test)NrH   r
   r
   r
   r   r}   ÷   s   
r}   c                       s   e Zd Z‡ fdd„Z‡  ZS )ÚNoneOrc                    s   |d u pt ƒ  |¡S r   )Úsuperr   r   ©r   r
   r   r     s    zNoneOr.test©r   r   r	   r   Ú__classcell__r
   r
   rƒ   r   r�     s   r�   c                       s.   e Zd Zeƒ Z‡ fdd„Zedd„ ƒZ‡  ZS )ÚNotSetOrc                    s   |t ju ptƒ  |¡S r   )r†   Ú_not_setr‚   r   r   rƒ   r
   r   r     s    zNotSetOr.testc                 C   s   | t ju r|S | S r   ©r†   r‡   )ro   r5   r
   r
   r   ÚconditionalValue  s    zNotSetOr.conditionalValue)	r   r   r	   Úobjectr‡   r   Ústaticmethodr‰   r…   r
   r
   rƒ   r   r†     s   r†   c                   @   s   e Zd Zdd„ ZdS )Ú	_isNotSetc                 C   s
   |t ju S r   rˆ   r   r
   r
   r   r     s    z_isNotSet.testNr   r
   r
   r
   r   rŒ     s   rŒ   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚAutoc                 K   s   | j  |¡ d S r   )Ú__dict__Úupdate)r   Úkwr
   r
   r   rF     s    zAuto.__init__c                 C   s   || j u pt|| j ƒS r   )r   r$   r   r
   r
   r   r     s    z	Auto.testNrH   r
   r
   r
   r   r�     s   r�   c                       s   e Zd Z‡ fdd„Z‡  ZS )ÚAutoOrc                    s   t |ƒptƒ  |¡S r   )ÚisAutor‚   r   r   rƒ   r
   r   r     s    zAutoOr.testr„   r
   r
   rƒ   r   r‘     s   r‘   c                   @   s   e Zd Zddd„Zdd„ ZdS )ÚisInstanceOfNc                 C   s
   || _ d S r   ©Ú_klass©r   Úklassr
   r
   r   rF     s    zisInstanceOf.__init__c                 C   s   t || jƒS r   )r$   r•   r   r
   r
   r   r   !  s    zisInstanceOf.test)NrH   r
   r
   r
   r   r“     s   
r“   c                   @   s   e Zd Zddd„Zdd„ ZdS )ÚisSubclassOfNc                 C   s
   || _ d S r   r”   r–   r
   r
   r   rF   %  s    zisSubclassOf.__init__c                 C   s   t |tƒot|| jƒS r   )r$   ÚtypeÚ
issubclassr•   r   r
   r
   r   r   '  s    zisSubclassOf.test)NrH   r
   r
   r
   r   r˜   $  s   
r˜   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚmatchesPatternz:Matches value, or its string representation, against regexc                 C   s   t  |¡| _d S r   )ÚreÚcompileÚ_pattern)r   Úpatternr
   r
   r   rF   ,  s    zmatchesPattern.__init__c                 C   s*   t |ƒ}td|| jf ƒ | j |¡d kS )Nztesting %s against %s)ÚstrÚprintrž   rn   r   r
   r
   r   r   /  s    zmatchesPattern.testN)r   r   r	   r   rF   r   r
   r
   r
   r   r›   *  s   r›   c                   @   s   e Zd ZdZdd„ ZdS )ÚDerivedValuea°  This is used for magic values which work themselves out.
    An example would be an "inherit" property, so that one can have

      drawing.chart.categoryAxis.labels.fontName = inherit

    and pick up the value from the top of the drawing.
    Validators will permit this provided that a value can be pulled
    in which satisfies it.  And the renderer will have special
    knowledge of these so they can evaluate themselves.
    c                 C   s   dS )zßOverride this.  The renderers will pass the renderer,
        and the attribute name.  Algorithms can then backtrack up
        through all the stuff the renderer provides, including
        a correct stack of parent nodes.Nr
   ©r   ÚrendererÚattrr
   r
   r   ÚgetValue?  s    zDerivedValue.getValueN)r   r   r	   r   r¦   r
   r
   r
   r   r¢   4  s   
r¢   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚInheritc                 C   s   dS )NÚinheritr
   r   r
   r
   r   Ú__repr__G  s    zInherit.__repr__c                 C   s
   |  |¡S r   )ZgetStateValuer£   r
   r
   r   r¦   J  s    zInherit.getValueN)r   r   r	   r©   r¦   r
   r
   r
   r   r§   F  s   r§   c                   @   s   e Zd ZdZddd„ZdS )ÚNumericAlignz¸for creating the numeric string value for anchors etc etc
    dp is the character to align on (the last occurrence will be used)
    dpLen is the length of characters after the dp
    Ú.r   c                 C   s   t  | d¡}||_||_|S )NÚnumeric)r    Ú__new__Z_dpZ_dpLen)ÚclsZdpZdpLenr   r
   r
   r   r­   S  s    zNumericAlign.__new__N)r«   r   )r   r   r	   r   r­   r
   r
   r
   r   rª   N  s   rª   ÚisNoneOrIntÚstartÚmiddleÚendZboxautorA   ÚisListOfNoneOrNumberÚisListOfListOfNoneOrNumberrO   ÚisListOfColorsé   )r{   r|   ry   ÚnwrG   ÚneÚwr7   rM   Úswr-   ÚseZautoxZautoyZNoneOrStringÚisNoneOrListOfNoneOrStringsr#   )rz   ÚisListOfNoneOrStringÚisNoneOrListOfNoneOrNumbersÚisStringOrCallableZisStringOrCallableNoneÚisStringOrNone)]Ú__version__r   r2   rœ   Úreportlab.lib.utilsr   r   r   Úreportlab.libr   ÚPatternrb   ÚAttributeErrorZ_pattern_typer:   r   r   r   r   r!   r0   r1   r9   r;   r>   r@   rC   rI   rN   rP   rT   rV   Zreportlab.lib.normalDaterY   rZ   r[   r]   r^   r`   rq   r}   r�   r†   rŒ   r�   r‘   r“   r˜   r›   r¢   r§   r¨   r    rª   r’   Z	isBooleanZisStringZisCodecr?   ZisIntr¯   ZisNumberOrNoneZisTextAnchorrA   r³   r´   ÚisListOfNumbersOrNoneZisListOfShapesrO   ZisListOfStringsOrNoneZisTransformrW   rµ   ZisColorOrNoneZisShapeZisValidChildZisNoneOrShapeZisValidChildOrNoneZ
isAnythingZ	isNothingZ	isXYCoordZisBoxAnchorZisNoneOrStringr¼   r½   r¾   Z
isCallableZisNoneOrCallabler¿   ZisStringOrCallableOrNonerÀ   ZisNormalDateZisNotSetr
   r
   r
   r   Ú<module>   s¤   

	
"	











