o
    0 i                     @  sp  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 dSddZdTddZdUddZdVddZdWddZdXddZdYddZdZd!d"Zd[d$d%Zd\d'd(Zd]d*d+Zd^d-d.Zd_d0d1Zd`d3d4Zdad6d7Zdbd9d:Z dcd<d=Z!ddd?d@Z"dedCdDZ#dfdFdGZ$dgdIdJZ%dhdLdMZ&didjdQdRZ'dS )kad  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                 C  s>   zt | W S  ty   Y nw zt| W S  ty   Y dS 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
    Z__could_not_encode__)r
   	Exceptionreprr    r   e/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/pythonjsonlogger/defaults.pyunknown_default%   s   	

r   TypeGuard[type]c                 C  
   t | tS )z8Default check function for `type` objects (aka classes).)
isinstancetyper   r   r   r   use_type_default;      
r   r   c                 C  s   | j S )zRDefault function for `type` objects.

    Args:
        obj: object to handle
    )__name__r   r   r   r   type_default@   s   r   boolc                 C  s   t | o
t| t S )z.Default check function for dataclass instances)dataclassesis_dataclassr   r   r   r   r   r   use_dataclass_defaultK      r   dict[str, Any]c                 C  s
   t | S )zVDefault function for dataclass instances

    Args:
        obj: object to handle
    )r   asdictr   r   r   r   dataclass_defaultP      
r    TypeGuard[datetime.time]c                 C     t | tjS )z4Default check function for `datetime.time` instances)r   datetimetimer   r   r   r   use_time_default[      r&   datetime.timec                 C     |   S )z\Default function for `datetime.time` instances

    Args:
        obj: object to handle
    	isoformatr   r   r   r   time_default`      r,   TypeGuard[datetime.date]c                 C  r#   )z4Default check function for `datetime.date` instances)r   r$   dater   r   r   r   use_date_defaulti   r'   r0   datetime.datec                 C  r)   )z\Default function for `datetime.date` instances

    Args:
        obj: object to handle
    r*   r   r   r   r   date_defaultn   r-   r2   TypeGuard[datetime.datetime]c                 C  s   t | tjS )z8Default check function for `datetime.datetime` instances)r   r$   r   r   r   r   use_datetime_defaultw   r'   r4   datetime.datetimec                 C  r)   )z`Default function for `datetime.datetime` instances

    Args:
        obj: object to handle
    r*   r   r   r   r   datetime_default|   r-   r6   <TypeGuard[datetime.time | datetime.date | datetime.datetime]c                 C  s   t | tjtjtjfS )z7Default check function for `datetime` related instances)r   r$   r%   r/   r   r   r   r   use_datetime_any   r   r8   -datetime.time | datetime.date | datetime.datec                 C  r)   )z_Default function for `datetime` related instances

    Args:
        obj: object to handle
    r*   r   r   r   r   datetime_any   r-   r:   TypeGuard[BaseException]c                 C  r   )zDefault check function for exception instances.

    Exception classes are not treated specially and should be handled by the
    `[use_]type_default` functions.
    )r   BaseExceptionr   r   r   r   use_exception_default   r!   r=   r<   c                 C  s   | j j d|  S )zVDefault function for exception instances

    Args:
        obj: object to handle
    z: )	__class__r   r   r   r   r   exception_default   s   r?   TypeGuard[TracebackType]c                 C  r   )z%Default check function for tracebacks)r   r   r   r   r   r   use_traceback_default   r   rA   r   c                 C  s   d t|  S )zMDefault function for tracebacks

    Args:
        obj: object to handle
     )join	traceback	format_tbstripr   r   r   r   traceback_default   s   rG   $TypeGuard[enum.Enum | enum.EnumMeta]c                 C  s   t | tjtjfS )zWDefault check function for enums.

    Supports both enum classes and enum values.
    )r   enumEnumEnumMetar   r   r   r   use_enum_default   s   rL   enum.Enum | enum.EnumMetaAny | list[Any]c                 C  s    t | tjr	| jS dd | D S )zzDefault function for enums.

    Supports both enum classes and enum values.

    Args:
        obj: object to handle
    c                 S  s   g | ]}|j qS r   )value).0er   r   r   
<listcomp>   s    z enum_default.<locals>.<listcomp>)r   rI   rJ   rO   r   r   r   r   enum_default   s   rS   TypeGuard[uuid.UUID]c                 C  r#   )z0Default check function for `uuid.UUID` instances)r   uuidUUIDr   r   r   r   use_uuid_default   r'   rW   	uuid.UUIDc                 C  s   t | S )zDefault function for `uuid.UUID` instances

    Formats the UUID using "hyphen" format.

    Args:
        obj: object to handle
    )r
   r   r   r   r   uuid_default   s   rY   TypeGuard[bytes | bytearray]c                 C  s   t | ttfS )z Default check function for bytes)r   bytes	bytearrayr   r   r   r   use_bytes_default   s   r]   Tbytes | bytearrayurl_safec                 C  s$   |r
t | dS t | 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   r_   r   r   r   bytes_default   s   
re   )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.   )r   r1   r	   r
   )r   r   r	   r3   )r   r5   r	   r
   )r   r   r	   r7   )r   r9   r	   r
   )r   r   r	   r;   )r   r<   r	   r
   )r   r   r	   r@   )r   r   r	   r
   )r   r   r	   rH   )r   rM   r	   rN   )r   r   r	   rT   )r   rX   r	   r
   )r   r   r	   rZ   )T)r   r^   r_   r   r	   r
   )(__doc__
__future__r   ra   r   r$   rI   systypesr   typingr   rD   rU   version_infor   Ztyping_extensionsr   r   r   r   r    r&   r,   r0   r2   r4   r6   r8   r:   r=   r?   rA   rG   rL   rS   rW   rY   r]   re   r   r   r   r   <module>   sJ    

	






	

	

	


	
	





