
    Mh                    P   d Z ddlmZ ddlZddlZddlZddlZddlZddlm	Z	 ddl
mZ ddlZddlZej        dk    rddl
mZ nddlmZ d<dZd=dZd>dZd?dZd@dZdAdZdBdZdCdZdDdZdEdZdFd ZdGd"ZdHd$ZdId&ZdJd(ZdKd*Z dLd,Z!dMd.Z"dNd1Z#dOd3Z$dPd5Z%dQd7Z&dRdSd;Z'dS )Tad  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)   
   )	TypeGuardobjr   returnstrc                    	 t          |           S # t          $ r Y nw xY w	 t          |           S # t          $ r Y nw xY wdS )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__)r   	Exceptionreprr	   s    Y/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pythonjsonlogger/defaults.pyunknown_defaultr   %   si    3xx   Cyy   !!s    
1 
>>TypeGuard[type]c                ,    t          | t                    S )z8Default check function for `type` objects (aka classes).)
isinstancetyper   s    r   use_type_defaultr   ;   s    c4       r   c                    | j         S )zRDefault function for `type` objects.

    Args:
        obj: object to handle
    )__name__r   s    r   type_defaultr   @   s     <r   boolc                V    t          j        |           ot          | t                     S )z.Default check function for dataclass instances)dataclassesis_dataclassr   r   r   s    r   use_dataclass_defaultr    K   s%    #C((FC1F1F-FFr   dict[str, Any]c                *    t          j        |           S )zVDefault function for dataclass instances

    Args:
        obj: object to handle
    )r   asdictr   s    r   dataclass_defaultr$   P   s     c"""r   TypeGuard[datetime.time]c                6    t          | t          j                  S )z4Default check function for `datetime.time` instances)r   datetimetimer   s    r   use_time_defaultr)   [       c8=)))r   datetime.timec                *    |                                  S )z\Default function for `datetime.time` instances

    Args:
        obj: object to handle
    	isoformatr   s    r   time_defaultr/   `        ==??r   TypeGuard[datetime.date]c                6    t          | t          j                  S )z4Default check function for `datetime.date` instances)r   r'   dater   s    r   use_date_defaultr4   i   r*   r   datetime.datec                *    |                                  S )z\Default function for `datetime.date` instances

    Args:
        obj: object to handle
    r-   r   s    r   date_defaultr7   n   r0   r   TypeGuard[datetime.datetime]c                6    t          | t          j                  S )z8Default check function for `datetime.datetime` instances)r   r'   r   s    r   use_datetime_defaultr:   w   s    c8,---r   datetime.datetimec                *    |                                  S )z`Default function for `datetime.datetime` instances

    Args:
        obj: object to handle
    r-   r   s    r   datetime_defaultr=   |   r0   r   <TypeGuard[datetime.time | datetime.date | datetime.datetime]c                d    t          | t          j        t          j        t          j        f          S )z7Default check function for `datetime` related instances)r   r'   r(   r3   r   s    r   use_datetime_anyr@      s     cHM8=(:KLMMMr   -datetime.time | datetime.date | datetime.datec                *    |                                  S )z_Default function for `datetime` related instances

    Args:
        obj: object to handle
    r-   r   s    r   datetime_anyrC      r0   r   TypeGuard[BaseException]c                ,    t          | t                    S )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_defaultrG      s     c=)))r   rF   c                $    | j         j         d|  S )zVDefault function for exception instances

    Args:
        obj: object to handle
    z: )	__class__r   r   s    r   exception_defaultrJ      s     m$-----r   TypeGuard[TracebackType]c                ,    t          | t                    S )z%Default check function for tracebacks)r   r   r   s    r   use_traceback_defaultrM      s    c=)))r   r   c                t    d                     t          j        |                                                     S )zMDefault function for tracebacks

    Args:
        obj: object to handle
     )join	traceback	format_tbstripr   s    r   traceback_defaultrT      s-     779&s++,,22444r   $TypeGuard[enum.Enum | enum.EnumMeta]c                N    t          | t          j        t          j        f          S )zWDefault check function for enums.

    Supports both enum classes and enum values.
    )r   enumEnumEnumMetar   s    r   use_enum_defaultrZ      s    
 cDIt}5666r   enum.Enum | enum.EnumMetaAny | list[Any]c                \    t          | t          j                  r| j        S d | D             S )zzDefault function for enums.

    Supports both enum classes and enum values.

    Args:
        obj: object to handle
    c                    g | ]	}|j         
S  )value).0es     r   
<listcomp>z enum_default.<locals>.<listcomp>   s    !!!AG!!!r   )r   rW   rX   r`   r   s    r   enum_defaultrd      s4     #ty!! y!!S!!!!r   TypeGuard[uuid.UUID]c                6    t          | t          j                  S )z0Default check function for `uuid.UUID` instances)r   uuidUUIDr   s    r   use_uuid_defaultri      s    c49%%%r   	uuid.UUIDc                     t          |           S )zDefault function for `uuid.UUID` instances

    Formats the UUID using "hyphen" format.

    Args:
        obj: object to handle
    )r   r   s    r   uuid_defaultrl      s     s88Or   TypeGuard[bytes | bytearray]c                :    t          | t          t          f          S )z Default check function for bytes)r   bytes	bytearrayr   s    r   use_bytes_defaultrq      s    cE9-...r   Tbytes | bytearrayurl_safec                    |r't          j        |                               d          S t          j        |                               d          S )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	   rs   s     r   bytes_defaultrz      sJ      <',,33F;;;C  ''///r   )r	   r   r
   r   )r	   r   r
   r   )r	   r   r
   r   )r	   r   r
   r   )r
   r!   )r	   r   r
   r%   )r	   r+   r
   r   )r	   r   r
   r1   )r	   r5   r
   r   )r	   r   r
   r8   )r	   r;   r
   r   )r	   r   r
   r>   )r	   rA   r
   r   )r	   r   r
   rD   )r	   rF   r
   r   )r	   r   r
   rK   )r	   r   r
   r   )r	   r   r
   rU   )r	   r[   r
   r\   )r	   r   r
   re   )r	   rj   r
   r   )r	   r   r
   rm   )T)r	   rr   rs   r   r
   r   )(__doc__
__future__r   rv   r   r'   rW   systypesr   typingr   rQ   rg   version_infor   typing_extensionsr   r   r   r    r$   r)   r/   r4   r7   r:   r=   r@   rC   rG   rJ   rM   rT   rZ   rd   ri   rl   rq   rz   r_   r   r   <module>r      s    # " " " " "        



                 w       ++++++" " " ",! ! ! !
   G G G G
# # # #* * * *
   * * * *
   . . . .
   N N N N
   * * * *. . . .* * * *
5 5 5 57 7 7 7
" 
" 
" 
"& & & &
   / / / /
0 0 0 0 0 0 0r   