
    h                       S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKJ	r	  SSK
Jr  SSKrSSKr\R                  S:  a  SSK
Jr  OSSKJr  SS jrS S	 jrS!S
 jrS"S jrS#S jrS$S jrS%S jrS&S jrS'S jrS(S jrS)S jrS*S jrS+S jrS,S jrS-S jrS.S jr S/S jr!S0S jr"S1S jr#S2S jr$S3S jr%S4S jr&S5S6S jjr'g)7ad  Collection of functions for building custom `json_default` functions.

In general functions come in pairs of `use_x_default` and `x_default`, where the former is used
to determine if you should call the latter.

Most `use_x_default` functions also act as a [`TypeGuard`](https://mypy.readthedocs.io/en/stable/type_narrowing.html#user-defined-type-guards).
    )annotationsN)TracebackType)Any)   
   )	TypeGuardc                r     [        U 5      $ ! [         a     Of = f [        U 5      $ ! [         a     gf = f)zBackup default function for any object type.

Will attempt to use `str` or `repr`. If both functions error will return
the string `"__could_not_encode__"`.

Args:
    obj: object to handle
__could_not_encode__)str	Exceptionreprobjs    lC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\pythonjsonlogger/defaults.pyunknown_defaultr   %   sF    3x Cy !s   
 

) 
66c                "    [        U [        5      $ )z8Default check function for `type` objects (aka classes).)
isinstancetyper   s    r   use_type_defaultr   ;   s    c4      c                    U R                   $ )zFDefault function for `type` objects.

Args:
    obj: object to handle
)__name__r   s    r   type_defaultr   @   s     <<r   c                f    [         R                  " U 5      =(       a    [        U [        5      (       + $ )z.Default check function for dataclass instances)dataclassesis_dataclassr   r   r   s    r   use_dataclass_defaultr   K   s"    ##C(FC1F-FFr   c                .    [         R                  " U 5      $ )zJDefault function for dataclass instances

Args:
    obj: object to handle
)r   asdictr   s    r   dataclass_defaultr    P   s     c""r   c                6    [        U [        R                  5      $ )z4Default check function for `datetime.time` instances)r   datetimetimer   s    r   use_time_defaultr$   [       c8==))r   c                "    U R                  5       $ )zPDefault function for `datetime.time` instances

Args:
    obj: object to handle
	isoformatr   s    r   time_defaultr)   `        ==?r   c                6    [        U [        R                  5      $ )z4Default check function for `datetime.date` instances)r   r"   dater   s    r   use_date_defaultr-   i   r%   r   c                "    U R                  5       $ )zPDefault function for `datetime.date` instances

Args:
    obj: object to handle
r'   r   s    r   date_defaultr/   n   r*   r   c                6    [        U [        R                  5      $ )z8Default check function for `datetime.datetime` instances)r   r"   r   s    r   use_datetime_defaultr1   w   s    c8,,--r   c                "    U R                  5       $ )zTDefault function for `datetime.datetime` instances

Args:
    obj: object to handle
r'   r   s    r   datetime_defaultr3   |   r*   r   c                t    [        U [        R                  [        R                  [        R                  45      $ )z7Default check function for `datetime` related instances)r   r"   r#   r,   r   s    r   use_datetime_anyr5      s$    cHMM8==(:K:KLMMr   c                "    U R                  5       $ )zSDefault function for `datetime` related instances

Args:
    obj: object to handle
r'   r   s    r   datetime_anyr7      r*   r   c                "    [        U [        5      $ )zDefault check function for exception instances.

Exception classes are not treated specially and should be handled by the
`[use_]type_default` functions.
)r   BaseExceptionr   s    r   use_exception_defaultr:      s     c=))r   c                8    U R                   R                   SU  3$ )zJDefault function for exception instances

Args:
    obj: object to handle
z: )	__class__r   r   s    r   exception_defaultr=      s      mm$$%Ru--r   c                "    [        U [        5      $ )z%Default check function for tracebacks)r   r   r   s    r   use_traceback_defaultr?      s    c=))r   c                h    SR                  [        R                  " U 5      5      R                  5       $ )zADefault function for tracebacks

Args:
    obj: object to handle
 )join	traceback	format_tbstripr   s    r   traceback_defaultrF      s'     779&&s+,2244r   c                V    [        U [        R                  [        R                  45      $ )zODefault check function for enums.

Supports both enum classes and enum values.
)r   enumEnumEnumMetar   s    r   use_enum_defaultrK      s    
 cDIIt}}566r   c                    [        U [        R                  5      (       a  U R                  $ U  Vs/ s H  oR                  PM     sn$ s  snf )zjDefault function for enums.

Supports both enum classes and enum values.

Args:
    obj: object to handle
)r   rH   rI   value)r   es     r   enum_defaultrO      s9     #tyy!!yy !SGGS!!!s   Ac                6    [        U [        R                  5      $ )z0Default check function for `uuid.UUID` instances)r   uuidUUIDr   s    r   use_uuid_defaultrS      s    c499%%r   c                    [        U 5      $ )zuDefault function for `uuid.UUID` instances

Formats the UUID using "hyphen" format.

Args:
    obj: object to handle
)r   r   s    r   uuid_defaultrU      s     s8Or   c                .    [        U [        [        45      $ )z Default check function for bytes)r   bytes	bytearrayr   s    r   use_bytes_defaultrY      s    cE9-..r   c                    U(       a%  [         R                  " U 5      R                  S5      $ [         R                  " U 5      R                  S5      $ )zDefault function for bytes

Args:
    obj: object to handle
    url_safe: use URL safe base 64 character set.

Returns:
    The byte data as a base 64 string.
utf8)base64urlsafe_b64encodedecode	b64encode)r   url_safes     r   bytes_defaultra      s?     '',33F;;C ''//r   )r   r   returnr   )r   r   rb   zTypeGuard[type])r   r   rb   r   )r   r   rb   bool)rb   zdict[str, Any])r   r   rb   zTypeGuard[datetime.time])r   zdatetime.timerb   r   )r   r   rb   zTypeGuard[datetime.date])r   zdatetime.daterb   r   )r   r   rb   zTypeGuard[datetime.datetime])r   zdatetime.datetimerb   r   )r   r   rb   z<TypeGuard[datetime.time | datetime.date | datetime.datetime])r   z-datetime.time | datetime.date | datetime.daterb   r   )r   r   rb   zTypeGuard[BaseException])r   r9   rb   r   )r   r   rb   zTypeGuard[TracebackType])r   r   rb   r   )r   r   rb   z$TypeGuard[enum.Enum | enum.EnumMeta])r   zenum.Enum | enum.EnumMetarb   zAny | list[Any])r   r   rb   zTypeGuard[uuid.UUID])r   z	uuid.UUIDrb   r   )r   r   rb   zTypeGuard[bytes | bytearray])T)r   zbytes | bytearrayr`   rc   rb   r   )(__doc__
__future__r   r\   r   r"   rH   systypesr   typingr   rC   rQ   version_infor   typing_extensionsr   r   r   r   r    r$   r)   r-   r/   r1   r3   r5   r7   r:   r=   r?   rF   rK   rO   rS   rU   rY   ra    r   r   <module>rl      s    #     
    w +",!
G
#*
*
.
N
*.*
57
"&
/
0r   