fL ieUddlZddlZddlZddlmZmZmZddlmZddl m Z m Z ddl m Z mZmZmZmZmZddlmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%ddl&m'Z'ddl(m)Z)dd l*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2dd l3m4Z4erLdd l5m6Z6dd l7m8Z8dd l9m:Z:ddl;mZ>ddl?m@Z@ddl*mAZAmBZBmCZCmDZDmEZEee%ee"ee"eFefe"eFeeffZGdZHdZIeJeKeLeFeMeNeOe+ee eejeeeQjeSjhZTe!e#eeUd<eVeWeXeYeZeeehZ[e!e#eeUd<deFdefdZ\ddde%eFdeJdeFfdZ]dedeMfdZ^dee#ed eFddfd!Z_d"ed#e%e#ee"e#ed$fdfdeMfd%Z`d&ed#e%e#ee"e#ed$fdfdeMfd'ZadeMfd(Zbd)eFdeMfd*Zce$d+Zdd,eedefd-eedefdeedeffd.Zed,eeefd/eddfd0Zfd1d2d3eKd4eKd5eKdeMfd6Zgd7ed8d9eeFd:fd;e#d<dd=fd>Zhd?e%e#d@e#dAfde#d@fdBZidCeFdeFfdDZjdCeFdeFfdEZke$dFZleFdGdHe%eele"eld$ffdIeelgeFfdeelfdJZmGdKdLeFZnGdMdNZoGdOdPeoZpGdQdReoZqGdSdTZrdUdVdWdXdYdZd[d\d]Zsd^d_deFfd`Zte$daZud?eudeufdbZvdceFdeMfddZwhdeZxdceFdeMfdfZyezZ{dgeedheedeMfdiZ|d?edjeFdefdkZ}dleeFdmeFdeFfdnZ~doedmeFde"eFe"eFd$fffdpZdqe#edmeFde"eFe"e"eFd$fd$fffdrZy)sN) OrderedDict defaultdictdeque)deepcopy)islice zip_longest)BuiltinFunctionTypeCodeType FunctionType GeneratorType LambdaType ModuleType) TYPE_CHECKING AbstractSetAnyCallable CollectionDict GeneratorIterableIteratorListMappingNoReturnOptionalSetTupleTypeTypeVarUnion) Annotated) ConfigError)NoneType WithArgsTypesall_literal_valuesdisplay_as_typeget_args get_originis_literal_typeis_union) version_info) Signature)Path) BaseConfig) Dataclass) ModelField BaseModel)AbstractSetIntStr DictIntStrAnyIntStrMappingIntStrAnyReprArgs) import_string sequence_likevalidate_field_namelenient_isinstancelenient_issubclass in_ipythonis_valid_identifier deep_updateupdate_not_nonealmost_equal_floats get_modelto_camelto_lower_camelis_valid_fieldsmart_deepcopy PyObjectStrRepresentation GetterDict ValueItemsr+ClassAttribute path_typeROOT_KEYget_unique_discriminator_alias"get_discriminator_alias_and_valuesDUNDER_ATTRIBUTES__root__IMMUTABLE_NON_COLLECTIONS_TYPESBUILTIN_COLLECTIONS dotted_pathreturnc ddlm} |jdjdd\}}||} t ||S#t$r}t d|d|d}~wwxYw#t$r}t d |d |d |d}~wwxYw) z Stolen approximately from django. Import a dotted module path and return the attribute/class designated by the last name in the path. Raise ImportError if the import fails. r) import_module ."z!" doesn't look like a module pathNzModule "z" does not define a "z " attribute) importlibrWstriprsplit ValueError ImportErrorgetattrAttributeError)rTrW module_path class_nameemodules W/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pydantic/v1/utils.pyr8r8zs (V"-"3"3C"8"?"?Q"G Z; 'Fgvz** VAk]*LMNTUUV gH[M1FzlR]^_effgs.$A A" A AA" B+A>>BP)max_lenvricVtjdtt|tr*t ||dz kDr|d|dz dzj S |j }t ||kDr |d|dz dz}|S#t$r|jj |}YAwxYw)z` Truncate a value and add a unicode ellipsis (three dots) to the end if it was too long z:`truncate` is no-longer used by pydantic and is deprecatedNu…rZ) warningswarnDeprecationWarning isinstancestrlen__repr__ TypeError __class__)rjris rgtruncaterws MMNPbc!Sc!f! 4/Wq["U*4466$ JJL 1v m! u $ H $ KK  #$sB$B('B(c Vt|ttttt t fSN)rqlisttupleset frozensetr rrjs rgr9r9s a$sI}eL MMbases field_namecP|D]!}t||dstd|d|dy)zZ Ensure that the field's name does not shadow an existing attribute of the model. Nz Field name "zI" shadows a BaseModel attribute; use a different field name with "alias='z'".)ra NameError)rrbases rgr:r:sE 4T *zl+<r>s&  " " $ JW->->z-J)JJrKeyTypemappingupdating_mappingsc|j}|D]Y}|jD]D\}}||vr6t||tr#t|trt |||||<@|||<F[|Sry)copyitemsrqdictr?)rrupdated_mappingupdating_mappingkrjs rgr?r?sllnO-'$**, 'DAqO# ?13Et(LQ[\]_cQd%01CQ%G"%&"  '' rupdatec ||j|jDcic] \}}| || c}}ycc}}wry)rr)rrrrjs rgr@r@s. NNV\\^ETQq}AqDEFEs 8 8 g:0yE>)deltavalue_1value_2rc$t||z |kS)z4 Return True if two floats are almost equal )abs)rrrs rgrArAs w !U **rinit).Nfieldsr0configr.r,cddlm}m}m}ddlm}||j j}i}d} d} t|ddD],} | j| jur| } | || j<.| r|j} |jD]w\} }|j}| |vs||vrt|s| rt| r| }nd} 9|j sd|j"ini}|||j$fd |j&i|||<y|j(|j*urd} | ry| rwd |j,fd |jfg}|Dcgc]}|j|jfc}|k(rd }n | j}||vr |d z }||vr | j/|||<|t1|jdScc}w)z: Generate signature for model based on its fields r) Parameterr, signature)ExtraNFrZTdefault annotation__pydantic_self__data extra_data_name) parametersreturn_annotation)inspectrr,rpydantic.v1.configrrvaluesrkind VAR_KEYWORDrallow_population_by_field_nameraliasr>requiredr KEYWORD_ONLYrextraallowPOSITIONAL_OR_KEYWORDreplacerz)rrrrr,rrpresent_params merged_paramsvar_kw use_var_kwparam allow_namesrfield param_namekwargsdefault_model_signaturep var_kw_names rggenerate_model_signaturers 87(t_//668N*,M FJ40* ::** *F $) ejj! * ;; !'  JJ]*jM.I(4#6z#B!+J!%J8=~~i/2F(1I22)?D?O?O)SY)M* % "||u{{"  *!)"A"A B Y** +# '5 5QVVQVV  59P P&K!++KV# 3 KV#%+^^^%E k" ]%9%9%; zto_camel..;sC4??$Csr)joinsplit)rs rgrCrC:s 77Cc1BC CCrct|dk\r$t|}|dj|ddzS|jS)NrZr)rsrClower)r pascal_strings rgrDrD>sD 6{a ( Q%%'-*;;; <<>rT) name_factory input_listrcg}g}|D]E}||}||vr#|j||j|2|||j|<G|S)z Make a list unique while maintaining order. We update the list if another one with the same name is set (e.g. root validator overridden in subclass) )appendindex)rrresult result_namesrjv_names rg unique_listrHsdF L 3a  %    ' MM! 12F<%%f- . 3 MrceZdZdZdefdZy)rGz String class where repr doesn't include quotes. Useful with Representation when you want to return a string representation of something that valid (or pseudo-valid) python. rUct|Sry)rrselfs rgrtzPyObjectStr.__repr__es 4yrN)__name__ __module__ __qualname____doc__rrrtrrrgrGrG_s #rrGc eZdZUdZeZeedfed<ddZ defdZ dedefdZ d e e ge fd e dee d d ffd Zdefd ZdefdZddZy )rHz Mixin to provide __str__, __repr__, and __pretty__ methods. See #884 for more details. __pretty__ is used by [devtools](https://python-devtools.helpmanual.io/) to provide human readable representations of objects. . __slots__rUcnfdjD}|Dcgc] \}}| ||fc}}Scc}}w)a6 Returns the attributes to show in __str__, __repr__, and __pretty__ this is generally overridden. Can either return: * name - value pairs, e.g.: `[('foo_name', 'foo'), ('bar_name', ['b', 'a', 'r'])]` * or, just values, e.g.: `[(None, 'foo'), (None, ['b', 'a', 'r'])]` c3:K|]}|t|fywry)ra)rsrs rgrz/Representation.__repr_args__..{s?1!WT1%&?s)r)rattrsarjs` rg __repr_args__zRepresentation.__repr_args__ss4@?#(:41aAMA:::s 11c.|jjS)zA Name of the instance's class, used in __repr__. )rvrrs rg __repr_name__zRepresentation.__repr_name__~s~~&&&rjoin_strcN|jd|jDS)Nc3JK|]\}}| t|n|d|yw)N=)repr)rrrjs rgrz.Representation.__repr_str__..s+e1 T!W!AaU|Ces!#)rr)rrs rg __repr_str__zRepresentation.__repr_str__s!}}ePTPbPbPdeeerfmtrNc+K|jdzd|jD] \}}||dz||dd"ddyw) z Used by devtools (https://python-devtools.helpmanual.io/) to provide a human readable representations of objects (rZNr,r))rr)rrrrvalues rg __pretty__zRepresentation.__pretty__sm  "S((--/ KD%Sj e* IG    sAAc$|jdS)NrX)rrs rg__str__zRepresentation.__str__s  %%rcL|jd|jddS)Nr , r )rrrs rgrtzRepresentation.__repr__s+$$&'q):):4)@(ACCrc#VK|jD]\}}|| ||fyw)zGet fields for Rich libraryN)r)rr field_reprs rg __rich_repr__zRepresentation.__rich_repr__s9 $ 2 2 4 ' D*|  J&&  's')rUr7)rURichReprResult)rrrrr{rrrr__annotations__rrrrrrrrrtrrrrgrHrHis"'IuS#X( ;'s' fSfSf hucz2 c iPSUY[_P_F` &&D#D'rrHceZdZdZdZdefdZdedefdZdded edefd Z de efd Z de efd Z de efd ZdeeeeffdZdeefdZdefdZdedefdZdedefdZddZdefdZy)rIz Hack to make object's smell just enough like dicts for validate_model. We can't inherit from Mapping[str, Any] because it upsets cython so we have to implement all methods ourselves. _objrc||_yryr)rrs rg__init__zGetterDict.__init__s  rkeyrUcj t|j|S#t$r}t||d}~wwxYwry)rarrbKeyError)rrres rg __getitem__zGetterDict.__getitem__s4 '499c* * '3-Q & 's 2 -2Nrc0t|j||Sry)rar)rrrs rggetzGetterDict.getstyy#w//rctS)zn We don't want to get any other attributes of obj if the model didn't explicitly ask for them )r|rs rg extra_keyszGetterDict.extra_keyss u rct|S)z Keys of the pseudo dictionary, uses a list not set so order information can be maintained like python dictionaries. )rzrs rgkeyszGetterDict.keyss Dzrc2|Dcgc]}|| c}Scc}wryrrrs rgrzGetterDict.valuess!%&AQ&&&s c#DK|D]}||j|fywry)r#r)s rgrzGetterDict.itemss' !ATXXa[.  !s c#lKt|jD]}|jdr|yw)Nr)dirr startswith)rrs rg__iter__zGetterDict.__iter__s. N D??3'  s*44c&td|DS)Nc3 K|]}dyw)rZNr)rrs rgrz%GetterDict.__len__..s#1#s )sumrs rg__len__zGetterDict.__len__s#d###ritemc&||jvSry)r'rr3s rg __contains__zGetterDict.__contains__styy{""rothercLt|t|jk(Sry)rr)rr7s rg__eq__zGetterDict.__eq__sDzT%++-000rcdt|fgSry)rrs rgrzGetterDict.__repr_args__stDz"##rc4dt|jdS)Nz GetterDict[])r&rrs rgrzGetterDict.__repr_name__s_TYY78::rryr)rrrrrrrrrr!r#rr%rr'rrrrr.intr2boolr6r9rrrrrgrIrIs IC's's' 0s0S0C0CH d3i'S '!xc3h0!(3- $$###1C1D1$;s;rrIc eZdZdZdZdededddfdZd edefd Z d edefd Z d d de edfdZ ddde ddfdZeddedededefdZededddfdZededefdZededefdZddZy)rJzY Class for more convenient calculation of excluded or included fields on values. )_items_typer r)r3r6rUNc|j|}t|ttfr|j |t |}||_yry) _coerce_itemsrqrzr{_normalize_indexesrsr@)rr rs rgrzValueItems.__init__s=""5) edE] +++E3u:>E*/ rr3cV|j|jj|S)z` Check if item is fully excluded. :param item: key or index of a value )is_truer@r#r5s rg is_excludedzValueItems.is_excludeds ||DKKOOD122rc||jvS)zh Check if value is contained in self._items :param item: key or index of value r@r5s rg is_includedzValueItems.is_includeds t{{""rrer5cb|jj|}|j|s|SdS)z :param e: key or index of element on value :return: raw values for element if self._items is dict and contain needed element N)r@r#rF)rrer3s rg for_elementzValueItems.for_elements, {{q!<<-t747rr6v_lengthr4ci}d}|jD]\}}t|ts>> self._normalize_indexes({0: True, -2: True, -1: True}, 4) {0: True, 2: True, 3: True} >>> self._normalize_indexes({'__all__': True}, 4) {0: True, 1: True, 2: True, 3: True} Nz,Unexpected type of exclude value for index "z" __all__zExcluding fields from a sequence of sub-models or dicts must be performed index-wise: expected integer keys or keyword "__all__"r.) rrqrrrFrurv _coerce_valuer=merger#range setdefault) rrrMnormalized_items all_itemsirj normalized_inormalized_items rgrDzValueItems._normalize_indexes sh-/ KKM _DAqq'*jK.HDLLYZO"NqcQSTUT_T_S` abbI~ ..q1 a%A,-q58a|Scc}wcc}wcc}w)ae Merge a ``base`` item with an ``override`` item. Both ``base`` and ``override`` are converted to dictionaries if possible. Sets are converted to dictionaries with the sets entries as keys and Ellipsis as values. Each key-value pair existing in ``base`` is merged with ``override``, while the rest of the key-value pairs are updated recursively with this function. Merging takes place based on the "union" of keys if ``intersect`` is set to ``False`` (default) and on the intersection of keys if ``intersect`` is set to ``True``. )rZ)rPrFrzrQr#)rrrYrZr merge_keysmerged merged_items rgrQzValueItems.merge2s  $$X.  &  K ;;t  O ;;x $4 2( 2 %);Q(]!;(>`QVW[_V_q>``Jd(&LQatmq&LLJ"$ (A))DHHQKaI)VK&'q  (  <>`&Ls$ C'#C'- C,7C, C1C1ct|tr |St|trtj |d}|St |dd}t |d||S)N.rvz???z!Unexpected type of exclude value )rqrrrfromkeysra assert_never)rrds rgrCzValueItems._coerce_itemsYse eW %  { +MM%-E ! U;J 3J<@  rcN||j|r|S|j|Sry)rFrC)rr s rgrPzValueItems._coerce_valuegs( =CKK.L  ''rrjc|duxs|duS)NT.rr~s rgrFzValueItems.is_truemsDy$AH$rc d|jfgSryrIrs rgrzValueItems.__repr_args__qst{{#$$r)Fr)rrrrrrr rr>rGrJrrLr=rD classmethodrQ staticmethodrCrPrFrrrrgrJrJs2$I0c0%0W*X0]a0333###8X8(59`3a*b8% (:% c% o% N$$$$$$L U#JK Pb  (#(#(( %3%4%%%rrJcBeZdZdZdZdededdfdZded eeddfd Z y) rKz1 Hide class attribute from its instances rr rr rUNc ||_||_yryrh)rrr s rgrzClassAttribute.__init__s  rinstanceownerch| |jSt|jd|jd)Nz attribute of z is class-only)r rbrr)rrjrks rg__get__zClassAttribute.__get__s3  ::  }N5>>:LN[\\r) rrrrrrrrrrrmrrrgrKrKusJI S]]DI]$]rrK directoryfilez mount pointsymlinkz block devicez char deviceFIFOsocket)is_diris_fileis_mount is_symlinkis_block_deviceis_char_deviceis_fifo is_socketrr-c|jsJdtjD]\}}t||s|cSy)z0 Find out what sort of thing a path is. zpath does not existunknown)exists path_typesrra)rmethodrs rgrLrLsM 88:,,,:"((*  71f  K rObjc|j}|tvr|S |s"|tvr|tur|S|j St|S#t t tf$r Yt|SwxYw)z Return type as is for immutable built-in types Use obj.copy() for built-in empty collections Use copy.deepcopy() for non-empty collections and unknown objects ) rvrRrSr{rrur_ RuntimeErrorr)robj_types rgrFrFst}}H22  x#66"e+3 ; ; C= z< 0  C=  sAAA('A(rc8|jdsyt|k(S)NrT)r-rMrs rgrErEs ??3  t r> rrr __classcell____orig_bases____orig_class__r__firstlineno____static_attributes__c.t| xr|tvSry)rErPrs rgis_valid_private_namersd# # E4E(EErleftrightcDt||tD] \}}||us yy)a Check that the items of `left` are the same objects as those in `right`. >>> a, b = object(), object() >>> all_identical([a, b, a], [a, b, a]) True >>> all_identical([a, b, [a]], [a, b, [a]]) # new list object, while "equal" is not "identical" False ) fillvalueFT)r_EMPTY)rr left_item right_items rg all_identicalrs1"-T5F!K : J & rmsgct|)z Helper to make sure that we have covered all possible types. This is mostly useful for ``mypy``, docs: https://mypy.readthedocs.io/en/latest/literal_types.html#exhaustive-checks )ru)rrs rgraras C.r all_aliasesdiscriminator_keyc t|}t|dkDr*td|ddjt |d|j S)zNValidate that all aliases are the same and if that's the case return the aliasrZzAliases for discriminator z must be the same (got rr )r|rsr"rsortedpop)rrunique_aliasess rgrNrNsa%N >Q():(==TUYU^U^_efq_rUsTttu v      rtpc4t|dd}t|turt|d}t |dr |j }t t|r#t||\}}|td|DfS|rd|jtj}t||\}}tt|dkDrtd|dt|||dfS |j|j}t)|std|d|j$d|j|j*t-|fS#t $r}t#d |j$d |d }~wt&$r!}td |j$d ||d }~wwxYw)z Get alias and all valid values in the `Literal` type of the discriminator field `tp` can be a `BaseModel` class or directly an `Annotated` `Union` of many. __custom_root_type__Frrc3.K|] }|D]}|ywryr)rrrjs rgrz5get_discriminator_alias_and_values..sG&G1AGAGsrZzField z& is not the same for all submodels of zType z* is not a valid `BaseModel` or `dataclass`NzModel z% needs a discriminator field for key z of model z needs to be a `Literal`)rar(r!r'hasattrrr*_get_union_alias_and_all_valuesr{ __fields__rMtype_rsr|r"r&rbrurr r)rr%)rr is_root_modelr all_values union_typet_discriminator_typeres rgrOrOs B 6>M"~" b\!_r'(  " " 2;B@QRzeGJGGGG ]]8,22 ;JHYZz s: ! #*--STcdfTgSjk jm## y#%==1B#C#I#I 34'8&;:bkk_Tlmn n}}./557IJ^7___ feBKK?2\]^de e yr{{o5Z[lZopqwx x ys$#E FE** F6FFrct|Dcgc]}t||}}t|\}}t|||fScc}wry)r'rOziprN)rrtzipped_aliases_valuesrrs rgrr sS`hhr_stZ[?CTUtt!#89K )+7H I: UUus<)rrnweakref collectionsrrrrr itertoolsrrtypesr r r r r rtypingrrrrrrrrrrrrrrrrrr typing_extensionsr!pydantic.v1.errorsr"pydantic.v1.typingr#r$r%r&r'r(r)r*pydantic.v1.versionr+rr,pathlibr-rr.pydantic.v1.dataclassesr/pydantic.v1.fieldsr0rr2r3r4r5r6r7rrrrOrMr=floatcomplexr>bytesrrefNotImplementedrvEllipsisrRrrzr|r{r}rrSr8rwr9r:r;r<r=r>rr?r@rArrBrCrDrrrGrHrIrJrKr~rLrrFrErProbjectrrrarNrOrrrrgrs`77)dd*(*   -!-1-*ggeCsU38_eCQTVYMFZ$Z[\N :      KK  '3T#Y0     'Sc^ gsgsg&/1 c   S "NSNTN xS 2   #uT#Yd3iQTn@UW[5[/\aeCtCy%S SVBWY]7]1^cg D KCKDK ) gsl+gslASX\]dfi]iXjGT#s(^GsGtGKO+++%+SW+>V 9 >V'+C,='>>VHL\HZ>V>VB 5k*D,==> 4 CT DSDSD33 CL (+d1guQV},-A38$ !W .#9'9'x;;;;|O%O%d]]*%#    C en* FFF   hsm   hSX 3 TW \_ &`3&`3&`5QTV[\_ad\dVeQeKf&`RVS V.1V 3eCHos*+ +,Vr