L ihddlmZddlmZddlmZmZeeddddGdd Zy ) )total_ordering)astuple)attribattrsFT)eqorderslotsfrozenceZdZdZeeZeeZeeZee Z e dZ dZ dZdZdZy) VersionInfoa A version object that can be compared to tuple of length 1--4: >>> attr.VersionInfo(19, 1, 0, "final") <= (19, 2) True >>> attr.VersionInfo(19, 1, 0, "final") < (19, 1, 1) True >>> vi = attr.VersionInfo(19, 2, 0, "final") >>> vi < (19, 1, 1) False >>> vi < (19,) False >>> vi == (19, 2,) True >>> vi == (19, 2, 1) False .. versionadded:: 19.2 )typec|jd}t|dk(r|jd|t|dt|dt|d|dS)z6 Parse *s* and return a _VersionInfo. .finalrr)yearminormicro releaselevel)splitlenappendint)clssvs X/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/attr/_version_info.py_from_version_stringz VersionInfo._from_version_string&sZ GGCL q6Q; HHW QqT#ad)3qt91Q4  c|j|jur t|}t|tstdt |cxkr dks ttt|dt ||fS)z Ensure *other* is a tuple of a valid length. Returns a possibly transformed *other* and ourselves as a tuple of the same length as *other*. rN) __class__r isinstancetupleNotImplementedErrorr)selfothers r _ensure_tuplezVersionInfo._ensure_tuple3si >>U__ ,ENE%'% %SZ$1$% %%% %t}\s5z*E11r!c` |j|\}}||k(S#t$r tcYSwxYwNr*r'NotImplementedr(r)usthems r__eq__zVersionInfo.__eq__Fs> "))%0HBTz# "! ! " --c` |j|\}}||kS#t$r tcYSwxYwr,r-r/s r__lt__zVersionInfo.__lt__Ns> "))%0HB Dy # "! ! "r3cpt|j|j|j|jfSr,)hashrrrr)r(s r__hash__zVersionInfo.__hash__Xs(TYY DJJ8I8IJKKr!N)__name__ __module__ __qualname____doc__rrrrrstrr classmethodr r*r2r5r8r!rr r sX( s D  E  Es#L    2&Lr!r N) functoolsr_funcsr_makerrr r?r!rrCsB% %uD6MLML7MLr!