XjE UddlZddlZddlZddlZddlZddlmZmZmZmZm Z m Z m Z m Z m Z mZmZmZmZmZmZddlmZmZddlmZmZddlmZddlmZddlm Z m!Z!ddl"m#Z#dd l$m%Z%m&Z&m'Z'm(Z(m)Z)dd l*m+Z+m,Z,ejZd k\rdd lmZed dZ.eZ/eeeeeedffZ0e e/eefZ1ejZdk\ree0ee fZ2eee e1fZ3neZ2eZ3e2Z4e3Z5Gdde Z6dede eefdefdZ7dee6deedfddfdZ8ijsjtZ;eeee?ffdZ@dee6de e>efd e e>eAfd!e eeAfddf d"ZBy)#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)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. _paramsr/ct|}t|dk(r&t|dtrt |d|df}||fS)Nr)rlen isinstancelisttuple)r1argsr-s h/mnt/ssd/data/Dropbox/adrian/vault-secondbrain/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)r6r).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___r4r)-rCacheKey_generic_types_cachegetr+r __bases__ TypeErrorr6r8r&anyhasattr__name__check_parameters_countdictzipr,r keysvalues__concrete_name__rritemsrr __fields__r field_infoget_caller_frame_inforrrrB__parameterized_bases___assigned_parameterssysmodules__dict__ setdefaultConfigiter_contained_typevarsr5_prepare_model_fields)r-r.r;cached typevars_map model_name validators type_hintskvinstance_type_hintsfields model_modulecalled_globally created_modelobject_by_referencereference_namereference_module_globalsr@ 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, [])rjoinrO)r-r.r@ param_namesparams_components r:rUzGenericModel.__concrete_name__sKr*)r?r@r|s r:rAzQGenericModel.__parameterized_bases__..build_base_model..s#_EL$7#_s)r8r,rs)r{r|base_parametersparameterized_baser-s ` r:build_base_modelz>GenericModel.__parameterized_bases__..build_base_modelsI$#_ZE^E^#__O!+!=!=o!N !Z/3E3L$ $s>Ar,N) rr&Parametrizationr rK issubclassgetattrr[rVrJ)r-rdrr{keyvaluer|s` r:rZz$GenericModel.__parameterized_bases__s0 %\* %:I % d<( ) %-- FJj,7Z)94@,,!55  OccfNgNmNmNo5@JU\--eU;;5L5 0 LIII,J EEE9 F*5JFs0BC C'C6C7CC CCN)rOrB __qualname__ __slots__r+rbool__annotations__rr TypeVarTyperr%rrrs classmethodstrrUrr rZr*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|ywr> replace_types)r?argrs r:rAz replace_types..s"UC=h#?"UN_name)r# c36K|]}t|ywr>r)r?trs r:rAz replace_types..0s"Q!=H#="Qrc36K|]}t|ywr>r)r?elementrs r:rAz replace_types..8sS']7H=Sr) rrrrr8 ExtLiteralr\ version_inforrJr r6rrtypingrtypes UnionType functoolsreduceoperatoror_r!r&r+r,r r7r 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##HLL2DE E-.. -e\B5K]K](( ""Qy"QQ $6 7L'((%$&SUSS  .L -e[A()9)98D ||E5)H(C (##r<r- parametersc t|}t|j}||k7r*||kDrdnd}td|d|jd|d|y)NmanyfewzToo z parameters for z ; actual z , expected )r5r,rLrO)r-ractualexpected descriptions r:rPrPMsd _F3%%&H  & 1fu ${m+;CLL>SYRZZefneopqqr< DictValuesric#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) r6rrNrr!r&r,rr7rar)rivarr9rs r:raraXs!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] r3z2This function must be used inside another functionN)NFrO)r\ _getframe ValueError RuntimeErrorAttributeError f_globalsrJf_locals)previous_caller_framee frame_globalss r:rYrYgsr # a 0 *33M   Z (*?*H*HM*Y YY XOPVWW sA A& A A&%A&rnrkrjrdcx|jjD]\}}||vr|jjtusJ)|jjtusJ|jj||}t ||}||_||_|j||j|<y)zP Replace DeferredType fields with concrete type hints and prepare them. N) rWrVr __class__rr outer_type_preparer)rnrkrjrdrfieldfield_type_hint concrete_types r:rbrbys$..446 ; U f ;;(( < << {{$$ 4Kekk6K6KK4-c2%o|D # ) -: %%c* ;r<)Crrr\rrrrrrrrr r r r r rrrrweakrefrrtyping_extensionsrrrpydantic.v1.class_validatorsrpydantic.v1.fieldsrpydantic.v1.mainrrpydantic.v1.typesrpydantic.v1.typingrrrrrpydantic.v1.utilsr r!rr%rrHrGenericTypesCacheAssignedParametersrIr[r&rrPrTrrrrarrrYtyperbr*r<r:rs ";>>+4)ee?v~>  cCsCx0 1+tCy01v+Hd9o,EF*4 ?O+KL+*)**+xF9xFvOOS(9OcOdr\ 2rc3hrTXr -- DI- 4s 4x '< 4ZuXc]D%89Z$; %; CH ;!d+;#t)$ ;  ;r<