
    Ki=                       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mZ ddl	m
Z
mZ ddlZddlZddZddZddZd d	Zd!d
Zd"dZd#dZd$dZd%dZd&dZd'dZd(dZd)dZd*dZd+dZd,dZd-dZd.dZd/dZ d0dZ!d1dZ"d2dZ#d3d4dZ$y)5ad  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                n    	 t        |       S # t        $ r Y nw xY w	 t        |       S # t        $ r Y yw xY w)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    e/home/jay/workspace/scripts/.codegraph-venv/lib/python3.12/site-packages/pythonjsonlogger/defaults.pyunknown_defaultr      sF    3x Cy !s   
 	
( 	44c                "    t        | t              S )z8Default check function for `type` objects (aka classes).)
isinstancetyper   s    r   use_type_defaultr   5   s    c4      c                    | j                   S )zRDefault function for `type` objects.

    Args:
        obj: object to handle
    )__name__r   s    r   type_defaultr   :   s     <<r   c                R    t        j                  |       xr t        | t               S )z.Default check function for dataclass instances)dataclassesis_dataclassr   r   r   s    r   use_dataclass_defaultr   E   s"    ##C(FC1F-FFr   c                ,    t        j                  |       S )zVDefault function for dataclass instances

    Args:
        obj: object to handle
    )r   asdictr   s    r   dataclass_defaultr   J   s     c""r   c                6    t        | t        j                        S )z4Default check function for `datetime.time` instances)r   datetimetimer   s    r   use_time_defaultr"   U       c8==))r   c                "    | j                         S )z\Default function for `datetime.time` instances

    Args:
        obj: object to handle
    	isoformatr   s    r   time_defaultr'   Z        ==?r   c                6    t        | t        j                        S )z4Default check function for `datetime.date` instances)r   r    dater   s    r   use_date_defaultr+   c   r#   r   c                "    | j                         S )z\Default function for `datetime.date` instances

    Args:
        obj: object to handle
    r%   r   s    r   date_defaultr-   h   r(   r   c                6    t        | t        j                        S )z8Default check function for `datetime.datetime` instances)r   r    r   s    r   use_datetime_defaultr/   q   s    c8,,--r   c                "    | j                         S )z`Default function for `datetime.datetime` instances

    Args:
        obj: object to handle
    r%   r   s    r   datetime_defaultr1   v   r(   r   c                t    t        | t        j                  t        j                  t        j                  f      S )z7Default check function for `datetime` related instances)r   r    r!   r*   r   s    r   use_datetime_anyr3      s$    cHMM8==(:K:KLMMr   c                "    | j                         S )z_Default function for `datetime` related instances

    Args:
        obj: object to handle
    r%   r   s    r   datetime_anyr5      r(   r   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_defaultr8      s     c=))r   c                8    | j                   j                   d|  S )zVDefault function for exception instances

    Args:
        obj: object to handle
    z: )	__class__r   r   s    r   exception_defaultr;      s      mm$$%Ru--r   c                "    t        | t              S )z%Default check function for tracebacks)r   r   r   s    r   use_traceback_defaultr=      s    c=))r   c                f    dj                  t        j                  |             j                         S )zMDefault function for tracebacks

    Args:
        obj: object to handle
     )join	traceback	format_tbstripr   s    r   traceback_defaultrD      s'     779&&s+,2244r   c                V    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_defaultrI      s    
 cDIIt}}566r   c                    t        | t        j                        r| j                  S | D cg c]  }|j                   c}S c c}w )zzDefault function for enums.

    Supports both enum classes and enum values.

    Args:
        obj: object to handle
    )r   rF   rG   value)r   es     r   enum_defaultrM      s4     #tyy!yy !AGG!!!s   Ac                6    t        | t        j                        S )z0Default check function for `uuid.UUID` instances)r   uuidUUIDr   s    r   use_uuid_defaultrQ      s    c499%%r   c                    t        |       S )zDefault function for `uuid.UUID` instances

    Formats the UUID using "hyphen" format.

    Args:
        obj: object to handle
    )r	   r   s    r   uuid_defaultrS      s     s8Or   c                .    t        | t        t        f      S )z Default check function for bytes)r   bytes	bytearrayr   s    r   use_bytes_defaultrW      s    cE9-..r   c                    |r$t        j                  |       j                  d      S t        j                  |       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   url_safes     r   bytes_defaultr_      s?     '',33F;;C ''//r   )r   r   returnr	   )r   r   r`   zTypeGuard[type])r   r   r`   r	   )r   r   r`   bool)r`   zdict[str, Any])r   r   r`   zTypeGuard[datetime.time])r   zdatetime.timer`   r	   )r   r   r`   zTypeGuard[datetime.date])r   zdatetime.dater`   r	   )r   r   r`   zTypeGuard[datetime.datetime])r   zdatetime.datetimer`   r	   )r   r   r`   z<TypeGuard[datetime.time | datetime.date | datetime.datetime])r   z-datetime.time | datetime.date | datetime.dater`   r	   )r   r   r`   zTypeGuard[BaseException])r   r7   r`   r	   )r   r   r`   zTypeGuard[TracebackType])r   r   r`   r	   )r   r   r`   z$TypeGuard[enum.Enum | enum.EnumMeta])r   zenum.Enum | enum.EnumMetar`   zAny | list[Any])r   r   r`   zTypeGuard[uuid.UUID])r   z	uuid.UUIDr`   r	   )r   r   r`   zTypeGuard[bytes | bytearray])T)r   zbytes | bytearrayr^   ra   r`   r	   )%__doc__
__future__r   rZ   r   r    rF   typesr   typingr   r   rA   rO   r   r   r   r   r   r"   r'   r+   r-   r/   r1   r3   r5   r8   r;   r=   rD   rI   rM   rQ   rS   rW   r_    r   r   <module>rg      s    #      !  ",!
G
#*
*
.
N
*.*
57
"&
/
0r   