Current Path: > > opt > cloudlinux > venv > lib > > python3.11 > site-packages > pydantic > > > v1
Operation : Linux host59.registrar-servers.com 4.18.0-513.18.1.lve.2.el8.x86_64 #1 SMP Sat Mar 30 15:36:11 UTC 2024 x86_64 Software : Apache Server IP : 198.54.126.42 | Your IP: 216.73.216.135 Domains : 1034 Domain(s) Permission : [ 0755 ]
Name | Type | Size | Last Modified | Actions |
---|---|---|---|---|
__pycache__ | Directory | - | - | |
__init__.py | File | 2771 bytes | April 17 2024 13:36:23. | |
_hypothesis_plugin.py | File | 14844 bytes | April 17 2024 13:36:23. | |
annotated_types.py | File | 3124 bytes | April 17 2024 13:36:23. | |
class_validators.py | File | 14595 bytes | April 17 2024 13:36:23. | |
color.py | File | 16811 bytes | April 17 2024 13:36:23. | |
config.py | File | 6477 bytes | April 17 2024 13:36:23. | |
dataclasses.py | File | 17515 bytes | April 17 2024 13:36:23. | |
datetime_parse.py | File | 7714 bytes | April 17 2024 13:36:23. | |
decorator.py | File | 10263 bytes | April 17 2024 13:36:23. | |
env_settings.py | File | 14039 bytes | April 17 2024 13:36:23. | |
error_wrappers.py | File | 5142 bytes | April 17 2024 13:36:23. | |
errors.py | File | 17693 bytes | April 17 2024 13:36:23. | |
fields.py | File | 50488 bytes | April 17 2024 13:36:23. | |
generics.py | File | 17805 bytes | April 17 2024 13:36:23. | |
json.py | File | 3346 bytes | April 17 2024 13:36:23. | |
main.py | File | 44378 bytes | April 17 2024 13:36:23. | |
mypy.py | File | 38745 bytes | April 17 2024 13:36:23. | |
networks.py | File | 22059 bytes | April 17 2024 13:36:23. | |
parse.py | File | 1810 bytes | April 17 2024 13:36:23. | |
py.typed | File | 0 bytes | April 17 2024 13:36:23. | |
schema.py | File | 47615 bytes | April 17 2024 13:36:23. | |
tools.py | File | 2826 bytes | April 17 2024 13:36:23. | |
types.py | File | 35380 bytes | April 17 2024 13:36:23. | |
typing.py | File | 18996 bytes | April 17 2024 13:36:23. | |
utils.py | File | 25809 bytes | April 17 2024 13:36:23. | |
validators.py | File | 21887 bytes | April 17 2024 13:36:23. | |
version.py | File | 1039 bytes | April 17 2024 13:36:23. |
import datetime from collections import deque from decimal import Decimal from enum import Enum from ipaddress import IPv4Address, IPv4Interface, IPv4Network, IPv6Address, IPv6Interface, IPv6Network from pathlib import Path from re import Pattern from types import GeneratorType from typing import Any, Callable, Dict, Type, Union from uuid import UUID from .color import Color from .networks import NameEmail from .types import SecretBytes, SecretStr __all__ = 'pydantic_encoder', 'custom_pydantic_encoder', 'timedelta_isoformat' def isoformat(o: Union[datetime.date, datetime.time]) -> str: return o.isoformat() def decimal_encoder(dec_value: Decimal) -> Union[int, float]: """ Encodes a Decimal as int of there's no exponent, otherwise float This is useful when we use ConstrainedDecimal to represent Numeric(x,0) where a integer (but not int typed) is used. Encoding this as a float results in failed round-tripping between encode and parse. Our Id type is a prime example of this. >>> decimal_encoder(Decimal("1.0")) 1.0 >>> decimal_encoder(Decimal("1")) 1 """ if dec_value.as_tuple().exponent >= 0: return int(dec_value) else: return float(dec_value) ENCODERS_BY_TYPE: Dict[Type[Any], Callable[[Any], Any]] = { bytes: lambda o: o.decode(), Color: str, datetime.date: isoformat, datetime.datetime: isoformat, datetime.time: isoformat, datetime.timedelta: lambda td: td.total_seconds(), Decimal: decimal_encoder, Enum: lambda o: o.value, frozenset: list, deque: list, GeneratorType: list, IPv4Address: str, IPv4Interface: str, IPv4Network: str, IPv6Address: str, IPv6Interface: str, IPv6Network: str, NameEmail: str, Path: str, Pattern: lambda o: o.pattern, SecretBytes: str, SecretStr: str, set: list, UUID: str, } def pydantic_encoder(obj: Any) -> Any: from dataclasses import asdict, is_dataclass from .main import BaseModel if isinstance(obj, BaseModel): return obj.dict() elif is_dataclass(obj): return asdict(obj) # Check the class type and its superclasses for a matching encoder for base in obj.__class__.__mro__[:-1]: try: encoder = ENCODERS_BY_TYPE[base] except KeyError: continue return encoder(obj) else: # We have exited the for loop without finding a suitable encoder raise TypeError(f"Object of type '{obj.__class__.__name__}' is not JSON serializable") def custom_pydantic_encoder(type_encoders: Dict[Any, Callable[[Type[Any]], Any]], obj: Any) -> Any: # Check the class type and its superclasses for a matching encoder for base in obj.__class__.__mro__[:-1]: try: encoder = type_encoders[base] except KeyError: continue return encoder(obj) else: # We have exited the for loop without finding a suitable encoder return pydantic_encoder(obj) def timedelta_isoformat(td: datetime.timedelta) -> str: """ ISO 8601 encoding for Python timedelta object. """ minutes, seconds = divmod(td.seconds, 60) hours, minutes = divmod(minutes, 60) return f'{"-" if td.days < 0 else ""}P{abs(td.days)}DT{hours:d}H{minutes:d}M{seconds:d}.{td.microseconds:06d}S'
SILENT KILLER Tool