
    Ii	                         S r SSKJr  SSKJrJr  SSKJrJr  SSKJ	r	  \" S\
\\\S5      r\	SSS	.S
\S\\\S4   S\\\S4   4S jj5       rg)zBetween.    )datetime)TypeVarUnion   )AbsMaxAbsMin)	validatorPossibleValueTypesN)min_valmax_valvaluer   r   c                   U c  gUc
  [        5       nUc
  [        5       n X:  a  [        S5      e Xs=:*  =(       a    U:*  $ s  $ ! [         a  n[        S5      UeSnAff = f)a  Validate that a number is between minimum and/or maximum value.

This will work with any comparable type, such as floats, decimals and dates
not just integers. This validator is originally based on [WTForms-NumberRange-Validator][1].

[1]: https://github.com/wtforms/wtforms/blob/master/src/wtforms/validators.py#L166-L220

Examples:
    >>> from datetime import datetime
    >>> between(5, min_val=2)
    # Output: True
    >>> between(13.2, min_val=13, max_val=14)
    # Output: True
    >>> between(500, max_val=400)
    # Output: ValidationError(func=between, args=...)
    >>> between(
    ...     datetime(2000, 11, 11),
    ...     min_val=datetime(1999, 11, 11)
    ... )
    # Output: True

Args:
    value:
        Value which is to be compared.
    min_val:
        The minimum required value of the number.
        If not provided, minimum value will not be checked.
    max_val:
        The maximum value of the number.
        If not provided, maximum value will not be checked.

Returns:
    (Literal[True]): If `value` is in between the given conditions.
    (ValidationError): If `value` is not in between the given conditions.

Raises:
    (ValueError): If `min_val` is greater than `max_val`.
    (TypeError): If there's a type mismatch during comparison.

Note:
    - `PossibleValueTypes` = `TypeVar("PossibleValueTypes", int, float, str, datetime)`
    - If neither `min_val` nor `max_val` is provided, result will always be `True`.
NFz*`min_val` cannot be greater than `max_val`zComparison type mismatch)r   r   
ValueError	TypeError)r   r   r   errs       8/venv/lib/python3.13/site-packages/validators/between.pybetweenr      sz    f }((=IJJ 
 &&w&&&&  =23<=s   A 
A AA )__doc__r   typingr   r   	_extremesr   r   utilsr	   intfloatstrr
   r        r   <module>r      s      ! & 13sHdS  
 8<7;@'@' %vt34	@'
 %vt34@' @'r   