Ë
    '<çi=  ã                  ó  — 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)zÑBackup 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    ú/home/jay/workspace/.worktrees/task-2057-dev2/scripts/.codegraph-venv/lib/python3.12/site-packages/pythonjsonlogger/defaults.pyÚunknown_defaultr      sF   € ðÜ3‹xˆøÜò ÙðúðÜC‹yÐøÜò ØØ!ðús   ‚
 	˜
( ¨	4³4c                ó"   — t        | t        «      S )z8Default check function for `type` objects (aka classes).)Ú
isinstanceÚtyper   s    r   Úuse_type_defaultr   5   s   € äcœ4Ó Ð ó    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   ó   € äcœ8Ÿ=™=Ó)Ð)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   € äcœ8×,Ñ,Ó-Ð-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$   € äcœHŸM™M¬8¯=©=¼(×: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 )z¦Default 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    € ð m‰m×$Ñ$Ð% 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'   € ð 7‰7”9×&Ñ& 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   € ô
 cœDŸI™I¤t§}¡}Ð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   € ô #”t—y‘yÔ!Øy‰yÐØ Ö!˜ˆAG‹GÒ!Ð!ùÒ!s   «Ac                ó6   — t        | t        j                  «      S )z0Default check function for `uuid.UUID` instances)r   ÚuuidÚUUIDr   s    r   Úuse_uuid_defaultrQ   È   s   € äcœ4Ÿ9™9Ó%Ð%r   c                ó   — t        | «      S )z…Default function for `uuid.UUID` instances

    Formats the UUID using "hyphen" format.

    Args:
        obj: object to handle
    )r	   r   s    r   Úuuid_defaultrS   Í   s   € ô ˆs‹8€Or   c                ó.   — t        | t        t        f«      S )z Default check function for bytes)r   ÚbytesÚ	bytearrayr   s    r   Úuse_bytes_defaultrW   Ú   s   € äcœE¤9Ð-Ó.Ð.r   c                ó–   — |r$t        j                  | «      j                  d«      S t        j                  | «      j                  d«      S )z·Default 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Ñ3°FÓ;Ð;Ü×Ñ˜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   