OwlCyberSecurity - MANAGER
Edit File: dataclasses.cpython-312.pyc
� ԓ�g�F � � � d Z ddlZddlZddlZddlmZ ddlmZ ddlmZ ddl mZmZm Z mZmZmZmZmZmZmZmZ ddlmZ ddlmZ dd lmZmZmZmZ dd lm Z ddl!m"Z" ddl#m$Z$m%Z%m&Z&m'Z' dd l(m)Z)m*Z* ddl+m,Z, er,ddl(m-Z- ddl.m/Z/m0Z0 edd�� Z1eed df Z2 G d� d� Z3g d�Z4 ed� Z5ejl dk\ r� eejn e$f�� eddddddddddd� de8de8d e8d!e8d"e8d#e8d$eeee9 df d%ee8 d&ee8 d'e8d(e ee5 gd)f fd*�� � Z: eejn e$f�� eddddddddddd� d+ee5 de8de8d e8d!e8d"e8d#e8d$eeee9 df d%ee8 d&ee8 d'e8d(d)fd,�� � Z:n� eejn e$f�� edddddddddd-� de8de8d e8d!e8d"e8d#e8d$eeee9 df d%ee8 d&ee8 d(e ee5 gd)f fd.�� � Z: eejn e$f�� edddddddddd-� d+ee5 de8de8d e8d!e8d"e8d#e8d$eeee9 df d%ee8 d&ee8 d(d)fd/�� � Z: eejn e$f�� dIddddddddddd� d+eee5 de8de8d e8d!e8d"e8d#e8d$eeee9 df d%ee8 d&ee8 d'e8d(ee ee5 gd)f d)f fd0�� Z:ed1ed d2e8d(eed ddf fd3�� Z; G d4� d� Z<d5ed d$ee d%e8d6e=d(df d7�Z>dJd9�Z?d1ed d:ed(dfd;�Z@edfd5ed d$ee d6ee= d(ed< fd=�ZAejl d>k\ rd?dd@e=d(e8fdA�ZBn d?dd@e=d(e8fdB�ZBdKdD�ZCdCddEe=d2ed(dfdF�ZDd+ee d(e8fdG�ZEd5ed d$ee d(d8fdH�ZFy# e $ r Y ��"w xY w)LaX The main purpose is to enhance stdlib dataclasses by adding validation A pydantic dataclass can be generated from scratch or from a stdlib one. Behind the scene, a pydantic dataclass is just like a regular one on which we attach a `BaseModel` and magic methods to trigger the validation of the data. `__init__` and `__post_init__` are hence overridden and have extra logic to be able to validate input data. When a pydantic dataclass is generated from scratch, it's just a plain dataclass with validation triggered at initialization The tricky part if for stdlib dataclasses that are converted after into pydantic ones e.g. ```py @dataclasses.dataclass class M: x: int ValidatedM = pydantic.dataclasses.dataclass(M) ``` We indeed still want to support equality, hashing, repr, ... as if it was the stdlib one! ```py assert isinstance(ValidatedM(x=1), M) assert ValidatedM(x=1) == M(x=1) ``` This means we **don't want to create a new dataclass that inherits from it** The trick is to create a wrapper around `M` that will act as a proxy to trigger validation without altering default `M` behaviour. � N)�contextmanager)�wraps)�cached_property)� TYPE_CHECKING�Any�Callable�ClassVar�Dict� Generator�Optional�Type�TypeVar�Union�overload)�dataclass_transform)�gather_all_validators)� BaseConfig� ConfigDict�Extra� get_config)�ValidationError)�DataclassTypeError)�Field� FieldInfo�Required� Undefined)�create_model�validate_model)�ClassAttribute)� BaseModel)�CallableGenerator�NoArgAnyCallable� DataclassT� Dataclass)�bound�DataclassProxyc � � e Zd ZU eeeef ed<