fL iE UddlZddlZddlZddlmZmZmZmZmZmZm Z m Z m Z m Z m Z mZmZmZmZddlmZmZddlmZmZddlmZddlmZddlmZmZddl m!Z!dd l"m#Z#m$Z$m%Z%m&Z&m'Z'dd l(m)Z)m*Z*ejVd k\rdd lm,Z,ejVd k\rddlmZeddZ-eZ.e eeee edffZ/e e.eefZ0ejVdk\ree/eefZ1eeee0fZ2neZ1eZ2e1Z3e2Z4GddeZ5dede eefdefdZ6dee5de edfddfdZ7ijqjrZ:eee;d<dede e.fdZffdZ?d ee5d!e e=efd"e e=e@fd#e ee@fddf d$ZAy)%N) TYPE_CHECKINGAnyClassVarDict ForwardRefGenericIteratorListMappingOptionalTupleTypeTypeVarUnioncast)WeakKeyDictionaryWeakValueDictionary) AnnotatedLiteral)gather_all_validators) DeferredType) BaseModel create_model) JsonWrapper)display_as_typeget_all_type_hintsget_args get_origin typing_base) all_identicallenient_issubclass )_UnionGenericAliasr#)r GenericModelT GenericModel)bound.)r# ceZdZUdZdZeeed<er ee e dfed<de e de e ee e edffde efd Zede ede e edfdefd Zed edee efd Zy )r)F __concrete__.__parameters__clsparamsreturnc dtdtffd }tj||}||Sjrt j vr tdt|ts|f}turtd|Dr tdtdstd jd t|tt!j"|}t%|j'|j)r|rSj+|}t-}t/j1}|D cic]\}} t3| t4us|| } }} | Dcic]5}|j6vs|t9j6|j:f7} }t=\} } t?t@ttC|f| xs jDftjG|zd|dd | }|tH|<| rKd}|}tJjL|jDjN}||ur|jQ||}|d z }||urjR|_)ttU|j)Dcic]}|dc}}| |_|r||_|t||<tW|d k(r|t||d<tY|| | ||Scc} }wcc}wcc}w)aInstantiates a new class from a generic class `cls` and type variables `params`. :param params: Tuple of types the class . Given a generic class `Model` with 2 type variables and a concrete model `Model[str, int]`, the value `(str, int)` would be passed to `params`. :return: New model class inheriting from `cls` with instantiated types described by `params`. If no parameters are given, `cls` is returned as is. _paramsr2ct|}t|dk(r&t|dtrt |d|df}||fS)Nr)rlen isinstancelisttuple)r4argsr0s Z/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pydantic/v1/generics.py _cache_keyz2GenericModel.__class_getitem__.._cache_keyWsHG$D4yA~*T!Wd";d1gQ0% %Nz?Cannot parameterize a concrete instantiation of a generic modelc3<K|]}t|tywN)r9r).0params r= z1GenericModel.__class_getitem__..es&Vez%'A&VszDType parameters should be placed on typing.Generic, not GenericModelr/zType z< must inherit from typing.Generic before being parameterized) __module____base__ __config____validators____cls_kwargs___r7r)-rCacheKey_generic_types_cachegetr.r __bases__ TypeErrorr9r;r)anyhasattr__name__check_parameters_countdictzipr/r keysvalues__concrete_name__rritemsrr __fields__r field_infoget_caller_frame_inforrrrE__parameterized_bases___assigned_parameterssysmodules__dict__ setdefaultConfigiter_contained_typevarsr8_prepare_model_fields)r0r1r>cached typevars_map model_name validators type_hintskvinstance_type_hintsfields model_modulecalled_globally created_modelobject_by_referencereference_namereference_module_globalsrC new_paramss` r=__class_getitem__zGenericModel.__class_getitem__Ks & & &&))*V*<=  M   s}} <]^ ^&%(YF , 3&Vv&V#Vbc cs,-eCLL>1mno osF+59#c>P>PRX:Y5Z **,l.A.A.C DJ**62 *3/ ',224 0:\1jmS[>[q!t\\M`xdeiliwiwdw!lncnnQ&7&B&BCCxx(=(?% o    '93>>%(C(CL(Q"RR)#     /;]+ "& 'N'*{{=3K3K'L'U'U $%]:&>&I&I.Zg&h##%&]: #zz  &=l>Q>Q>S&T UUUD[ U *4^ " +5M (4AZ/0 v;! :G F1I!6 7 mV5H,Wg]xB Vs K2$K20K8&K8 K=c|Dcgc] }t|}}dj|}|jd|dScc}w)aCompute class name for child classes. :param params: Tuple of types the class . Given a generic class `Model` with 2 type variables and a concrete model `Model[str, int]`, the value `(str, int)` would be passed to `params`. :return: String representing a the new class where `params` are passed to `cls` as type variables. This method can be overridden to achieve a custom naming scheme for GenericModels. z, [])rjoinrR)r0r1rC param_namesparams_components r=rXzGenericModel.__concrete_name__sK.build_base_model..s#_EL$7#_s)r;r/rv)r~rbase_parametersparameterized_baser0s ` r=build_base_modelz>GenericModel.__parameterized_bases__..build_base_modelsI$#_ZE^E^#__O!+!=!=o!N !Z/3E3L$ $s>Ar/N) rr)Parametrizationr rN issubclassgetattrr^rYrM)r0rgrr~keyvaluers` r=r]z$GenericModel.__parameterized_bases__s0 %\* %:I % d<( ) %-- FJj,7Z)94@,,!55  OccfNgNmNmNo5@JU\--eU;;5L5 0 LIII,J EEE9 F*5JFs0BC C'C6C7CC CCN)rRrE __qualname__ __slots__r.rbool__annotations__rr TypeVarTyperr(rrrv classmethodstrrXrr r]r-r?r=r)r)@sI#(L(4.(!{C'7!899]tM2]E$s)USWX[S\^aSaMbBb>> replace_types(Tuple[str, Union[List[str], float]], {str: int}) Tuple[int, Union[List[int], float]] r&c36K|]}t|ywrA replace_types)rBargrs r=rDz replace_types..s"UC=h#?"UN_namer"c36K|]}t|ywrAr)rBtrs r=rDz replace_types..0s"Q!=H#="Qrc36K|]}t|ywrAr)rBelementrs r=rDz replace_types..8sS']7H=Sr)rrrrr; ExtLiteralr_ version_inforrMr r9rrtypingrtypes UnionTyper%r!r)r.r/r r:r inner_typerr) rr type_args origin_typeannotated_type annotationsresolved_type_args resolved_listnew_types ` r=rrs  IU#Ki'0$~x@% BTTUUz!s'7'76'AkU\F\||E5))""U9"UU $6 7L  #5+.{K8w-9 "&%++6K&&&   w &;%//+I%k3EF F-.. -e\B5K]K](( ""Qy"QQ $6 7L'((%$&SUSS  .L -e[A()9)98D ||E5)H(C (##r?r0 parametersc t|}t|j}||k7r*||kDrdnd}td|d|jd|d|y)NmanyfewzToo z parameters for z ; actual z , expected )r8r/rOrR)r0ractualexpected descriptions r=rSrSMsd _F3%%&H  & 1fu ${m+;CLL>SYRZZefneopqqr? DictValuesrlc#fKt|tr|yt|dr0t|s%t |t r|j Ed{yt|ttfr|D]}t|Ed{yt|}|D]}t|Ed{y7\7/7 w)zdRecursively iterate through all subtypes and type args of `v` and yield any typevars that are found.r/N) r9rrQrr!r)r/rr:rdr)rlvarr<rs r=rdrdXs!W $ %jm@RSTVb@c#### A D) * 4C.s3 3 3 4{ 4C.s3 3 3 4 $ 4 4s6A B1B+.B1=B->%B1#B/$B1-B1/B1c tjd}|j }|j d|j|ufS#t$r}td|d}~wt$rYywxYw)z Used inside a function to check whether it was called globally Will only work against non-compiled code, therefore used only in pydantic.generics :returns Tuple[module_name, called_globally] r6z2This function must be used inside another functionN)NFrR)r_ _getframe ValueError RuntimeErrorAttributeError f_globalsrMf_locals)previous_caller_framee frame_globalss r=r\r\gsr # a 0 *33M   Z (*?*H*HM*Y YY XOPVWW sA A& A A&%A&rqrnrmrgcx|jjD]\}}||vr|jjtusJ)|jjtusJ|jj||}t ||}||_||_|j||j|<y)zP Replace DeferredType fields with concrete type hints and prepare them. N) rZrYr __class__rr outer_type_preparer)rqrnrmrgrfieldfield_type_hint concrete_types r=rereys$..446 ; U f ;;(( < << {{$$ 4Kekk6K6KK4-c2%o|D # ) -: %%c* ;r?)Br_rrrrrrrrr r r r r rrrrweakrefrrtyping_extensionsrrrpydantic.v1.class_validatorsrpydantic.v1.fieldsrpydantic.v1.mainrrpydantic.v1.typesrpydantic.v1.typingrrrrrpydantic.v1.utilsr r!rr%r(rrKrGenericTypesCacheAssignedParametersrLr^r)rrSrWrrrrdrrr\typerer-r?r=rs  ";>>+4)ee?w)v~>  cCsCx0 1+tCy01v+Hd9o,EF*4 ?O+KL+*)**+xF9xFvOOS(9OcOdr\ 2rc3hrTXr -- DI- 4s 4x '< 4ZuXc]D%89Z$; %; CH ;!d+;#t)$ ;  ;r?