o
    .d                     @   s^   d Z ddlZddlZddlmZ ddlmZ dZdZde	fdd	Z
e
 Zd
ede	fddZdS )a(  System wide limits.

Ideally these limits would be configurable from a liquid.Environment, but our
template parser functions, filter decorators and expression objects don't have
access to an Environment. Changing that would require significant refactoring
resulting in too many breaking changes.
    N)Any)LiquidValueErrori  i  returnc                  C   s   d} t j| }|d u rttdrt S d} t j| }|d u r#tS | s1t|  dt	 dt
|}|dks=|t	kr?|S t|  dt	 d)NLIQUIDINTMAXSTRDIGITSget_int_max_str_digitsPYTHONINTMAXSTRDIGITSz: invalid limit; must be >= z or 0 for unlimitedr   )osenvirongethasattrsysr   _DEFAULT_MAX_STR_INTisdigit	TypeError_MIN_STR_INTint
ValueError)varenv
max_digits r   E/var/www/Matress/matenv/lib/python3.10/site-packages/liquid/limits.py_init_int_max_str_digits   s&   
r   valc                 C   sF   t | tttfrtdkrt| tkrtdt dt|  dt| S )zmPrevent DoS by very large str to int conversion.

    See https://github.com/python/cpython/issues/95778
    r   z!integer string conversion limit (z) reached: value has z digits)
isinstancestrbytes	bytearrayMAX_STR_INTlenr   r   )r   r   r   r   to_int3   s   r    )__doc__r   r   typingr   liquid.exceptionsr   r   r   r   r   r   r    r   r   r   r   <module>   s    