From d87b4479581d682052889dab5511d11f44f6eec1 Mon Sep 17 00:00:00 2001 From: Andrew Jones Date: Sun, 6 Jul 2025 16:32:37 +1000 Subject: [PATCH] 0.3.0 development --- .coverage | Bin 53248 -> 53248 bytes .github/workflows/main.yml | 30 +- .gitignore | 3 +- Dockerfile | 27 +- dist/jsnac-0.1.0-py3-none-any.whl | Bin 9301 -> 0 bytes dist/jsnac-0.1.0.tar.gz | Bin 10244 -> 0 bytes dist/jsnac-0.2.0-py3-none-any.whl | Bin 10695 -> 0 bytes dist/jsnac-0.2.0.tar.gz | Bin 12128 -> 0 bytes dist/jsnac-0.2.1-py3-none-any.whl | Bin 11583 -> 0 bytes dist/jsnac-0.2.1.tar.gz | Bin 13371 -> 0 bytes docs/source/conf.py | 2 +- docs/source/requirements.txt | 4 +- jsnac/__init__.py | 2 +- poetry-backup/Dockerfile | 27 + poetry-backup/README.md | 3 + poetry.lock => poetry-backup/poetry.lock | 0 poetry-backup/pyproject.toml | 99 +++ pyproject.toml | 64 +- tox.ini | 2 +- uv.lock | 898 +++++++++++++++++++++++ 20 files changed, 1089 insertions(+), 72 deletions(-) delete mode 100644 dist/jsnac-0.1.0-py3-none-any.whl delete mode 100644 dist/jsnac-0.1.0.tar.gz delete mode 100644 dist/jsnac-0.2.0-py3-none-any.whl delete mode 100644 dist/jsnac-0.2.0.tar.gz delete mode 100644 dist/jsnac-0.2.1-py3-none-any.whl delete mode 100644 dist/jsnac-0.2.1.tar.gz create mode 100644 poetry-backup/Dockerfile create mode 100644 poetry-backup/README.md rename poetry.lock => poetry-backup/poetry.lock (100%) create mode 100644 poetry-backup/pyproject.toml create mode 100644 uv.lock diff --git a/.coverage b/.coverage index d5eedc9c365cb254bf33ca7ea87ca5baaca834cb..46302e58a0f6d6e24ffd9bdd2f9d2095dbfa64c4 100644 GIT binary patch delta 47 zcmZozz}&Eac|sCXUF61;nflC@dPbWJw#73tPTt;c#>4*qe;XSU3nM2V6XWKe{p=0^ Dk%$k| delta 47 zcmZozz}&Eac|sCXxYx#%nflCTdM29;w#73tP2S#b#^e6~e;XSU3nM2V6Vv9O{p=0^ Djm;0< diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7f3504a..3f7ccfa 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -6,35 +6,19 @@ jobs: tox: strategy: matrix: - python-version: [ '3.10', '3.11', '3.12', '3.13' ] + python-version: [ '3.11', '3.12', '3.13' ] platform: [ubuntu-latest] runs-on: ${{ matrix.platform }} steps: - uses: actions/checkout@v4 - - name: Setup python - uses: actions/setup-python@v5 + - name: Install uv and set the python version + uses: astral-sh/setup-uv@v5 with: python-version: ${{ matrix.python-version }} - architecture: x64 - - - name: Install Poetry - uses: snok/install-poetry@v1 - with: - version: 1.8.3 - virtualenvs-create: true - virtualenvs-in-project: true - - - name: Cache Poetry virtualenv - uses: actions/cache@v4 - id: cached-poetry-dependencies - with: - path: .venv - key: venv-${{ runner.os }}-${{ hashFiles('**/poetry.lock') }} - - - name: Install Dependencies - run: poetry install - if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' + - name: Install the project + run: uv sync --locked --all-extras --dev + - name: Run tox - run: poetry run tox \ No newline at end of file + run: uv run tox \ No newline at end of file diff --git a/.gitignore b/.gitignore index 25f022b..4b89563 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -# Poetry and Python stuff +# UV and Python stuff **/*.egg-info/ **/*.pyc **/*.pyo @@ -6,6 +6,7 @@ **/__pycache__ .venv/ .*_cache/ +dist/ # Tox .tox/ diff --git a/Dockerfile b/Dockerfile index 67fb71d..29c95a6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,27 +1,26 @@ # Will use this argument eventually to specify the python version so we can test against multiple versions -ARG PYTHON=3.13 -FROM python:${PYTHON}-slim-bookworm +ARG PYTHON_VERSION=3.13 +FROM python:${PYTHON_VERSION}-slim-bookworm ENV PATH="/root/.local/bin:$PATH" \ PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 -RUN apt-get update \ - && apt-get install -yq curl \ - && curl -sSL https://install.python-poetry.org | python3 - --version 1.8.3 \ - && poetry config virtualenvs.create false +# Install curl +RUN apt-get update -y && apt-get install -y \ + curl \ + && apt-get autoremove -y \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* -COPY pyproject.toml . -COPY poetry.lock . +# Install UV +ARG UV_VERSION=0.7.19 +RUN curl -LsSf https://astral.sh/uv/${UV_VERSION}/install.sh | sh -# Dependencies change more often, so we break this out so the prevous apt-get is cached -RUN poetry install --no-interaction - -ARG NAME=jsnac -WORKDIR /${NAME} +WORKDIR /jsnac # Copy relevant files only (using .dockerignore) then install our project as a package COPY . . -RUN poetry install --no-interaction +RUN uv sync --locked CMD ["/bin/bash"] \ No newline at end of file diff --git a/dist/jsnac-0.1.0-py3-none-any.whl b/dist/jsnac-0.1.0-py3-none-any.whl deleted file mode 100644 index c2cb155a494490160f5ca519fba0824075d6d544..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9301 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 diff --git a/dist/jsnac-0.1.0.tar.gz b/dist/jsnac-0.1.0.tar.gz deleted file mode 100644 index 46c955a7f41b97e4d4bbdbdb78e64e7e36b3220c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10244 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 U|KAnVHUowtaBPhSi~#`u3l1;*)c^nh diff --git a/dist/jsnac-0.2.0-py3-none-any.whl b/dist/jsnac-0.2.0-py3-none-any.whl deleted file mode 100644 index 98123724343e3f6e0876b9ed8ae5867f5cd1731f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10695 zcmaKy1#n!;lBQeC%*;}YS+ba!nb8(AgT>4Y7BgFDF*7qWTWB#`w7PHh&dl@MyLBS# zbVqc4mC;?1r}FPqlmP=r2LJ%jA4URzwM2kc_;_XbVJIJF>11p4nbE+&!q&psz<|Nt zLxy&AN^M$Zl2LkLY+Oc$UU_(&ewdL)30i(qazgGF9Ht1`0RWF8007#*ds*0;nmB$$J%Rshw>J3X_Kv~HB}OibB#^(T!Z- z?t~5O%ObFAfi2MVQa6h8x$hg3VQgO465UbmKgICE{JmhcrF6ncHF{r}Rn+z42kX$` zZr_VEL)M%j2^o%@E4Y^nH^FZ$cM4t#{GPA7v{aac{2IF@NL|@5VzkM`zbb(3_qxZ| z6-=n_{7*m4cDQR<*GZZmlYuyLdM%fr$MRk7{uQE2cLxr3r1ESjR#exSX^c2o5q*+0 ztDMu%;AeA!zVXEP8geY~b7ffWSI(gI%2voae>J}3^p8T1?@V<-g@~#d4fsZ-L>{`0fUUUVCZouDm~U@j@Yd9 z$v@*{E>cBbg)hlIzt;6?t-#*2cnRxaYPgHIV`Qf?_1nX9kedF0-Rp;_3~T@gcV2~hy+Wl5mz_C1`kp7t!)FzCfYAp`yV6)UKXCkgtWH)obl@O=a88FV^EO#_hR!dQ+-_HgT6G z3C>_34N*8+{I+YaIdU$21xgp1*reylfMZ!F2+x_>tv_+xno`dW`A`>vEh5lHYsgxJ zsC>sd;b)bTs5^;%cpH>H{OL7xbzxTxcraV+jz&ePUD(bZ#(vxQgCE8))Tk_E8nZ+H z_%;RX56Di<5Zm3cLz+OGPcmHSCAIcm7{=g&d%QAU??lMHUVySbe{n!pC8-C32Z(d? zB#RfUoVXJ7(~?dYF*?bw$bO7IkQx+-m|(XwK@R3+?(n_g42oJ+u`>|+nFZ_+0W_cC z{uh$N%I-Rl1$4F(_j67)<|!x)tP2MAt7kwAQmpV@Am5o+p=^M$IHdbX) zq;4SQNu+e^Q0+c!^DG!)z;AqMQQjbp;8#5A9o3NFgVU4~b&xr~Z*pqcUG)vq+#2>c zs#675-7ZQuFPlc;DG{<|;!Z*fo}EPB^Ltqjeiefyn~%(c(e82STBlwn#jv%G#2agp zYkcfC(Or;dh0XYtRBEWJ8SPy#V9Lw4XzY}3fbuHxlWrf~;OCv=j|Eg1lM4FY^JIir zrk%kQ%GBDY!*9B+VFVCf^ezT{7c8dmU9>jeufF;jNvUOcZ8lDIcfVymN#~Ue)1(O- z7_IiA-C_-ph9>IjpC%a{LLh()CiKIhL3GgUHQ!%v-%`s7=hR%hCx!Sc;D+a)NKnw? ziyX~>AmIezaYee z%*cRukJB6FYc1oB+f;CbUb)A9yuuw*e>2N@8vOaOb*T+cEM}xT;f)wZJPz ziXY|3ugoqIx=1-`;qr34lcZ+{nwgc;LJV;3JPoyp`PjeHiaq=p0!dWSPm5PAEwGyV zUbWUGyY0LkDr<02r`Floa5rE0`ZWk_&3&Y1PxJ?_q~*j5WEeZ8P5V5W@q1Q*syn2F z%t7%bs-z3%?~jj{12Sl5I@I2mxYSA!$ShuFF=*0$K49D6y^zzx0j{A&*m^Nx<1;;* zJ)4H_hDkIL3sWE|R|n!%OM*i>ih>f)o@Tu#ft%$St+qt1dxQcrk=^O((4Z|A+O9ku zJ}5}R2?(0*2*gjveJdkY%&~=m{6i!ipeXsXknS}AKW}w^Rw7I7_;XltvU(do^Q!q? zpatO@eTSx-#w-EKJN4Ei=HPgPngvv`b^sIXY!shU#$EnpbdEQe%LHI7@$**jIN zw%6x0pws>IQ98xHQWlvKugFM$#3#ahBuQ;FGN@Lcu~YGgPW^LWRSq zxiJfn#~IQX3DWc|Dv;kG`^d{91SxK4=@xRnR-6_bdjIAM$zjPxlJSUpWMGX`gK7B& z%$g-0gFEn1rfH!YKyme&AS;k|1YR}jg)niZ793S=hb2pgW0NXjWI+x3D8|^q5(ysT(5fF_t{#G(g;b99bly7pxhgTCp>xlkLK#8e(Cl zN4`y&@VzdG4B>M6da5gEiADQy2Vvl;I&N|VTYM-~g3%y~)FbUto-M9P^N!Y?wcBYB z#2(UL76JMc@cJd!#E?1WY7Tp-g;g^XeluVA;{I6z>7hdkiND>wv@G(fQLe$or=tBBY1-= z?}U@I+?!%CEN56YnZF~rc8=h#X<_cwNkeOfwo-QXh&#vfzFy`=yYOWJ2P?&{u*b?H zKGUh6^*gu=USks(jRt^HC&-j4pkr1_h%jV``?&?yuiL|@Z6@~f+BXTvL%xHcVdr*5 zBM~vRzN!gyHuH2#OuXHNl%kkTDmTWZ=tm!Vt6PldK+W+S9C%Xizlw9KX>myxL97Ls z;SMOPX*_FE(a{gMLLzhSA@aBE!7xqB5CDieQ^lDY)K2gtaDcHWQAa){o*rqVm(j-T zB5Gejzr=aQRNSSx?Ik!>lIdm`0bP$GCkZ+|j;y;~^%V;s3~TfBo%LC7-hyprNRAKUK2fR$Dc|0#lyXhw1gxLMm$+$ z<^(Clz2dF#i^Z<3c6adk@5otvvIAx|Qj^H;!Fb-Hjgg3z)`In$*qwqA<$z7Ax*R_E z%?Gk2tbsI=bya10aV8|iP@l=kP_=~oUT+@*8v`w`9gFkM0{R^*uEb>P)@DEMRa+ygX{psQygz73)cI?_e}g zKV=bes0|JHqy#VQsgpJ(h;Mn=9grS zUQVvw>LfUdi;6f}QCZ5lYaQSOL`-vr&bx`%)Phs9%FaWnicqp&Iad}OW2Q=S4ye1D z6JSO(Fgz9ah(%OTuUD1uu1%6vd9anMcytV4&vuU*IJ~m+KHx>X}UL3xbXmPf{ z?^*4zx7RE>Xm0xkJbZEM&6y5{ru?M9jRJ(aZjagtDSPQutx(JrFZ(>-KAe?!X zoGfMBPQGPTdeLnj|eM@dnDur+iLx);^!D}OL7jt;s z<4}tnEAywTgfoGq=-8Rz;F>?qlAjckcN1y&!~FCewBH`3-&4<~E8B^liz+|lQ8S3S zXTm&g_NF3Banmu8pI-2$?#WHGBzM)7>PiToECgeXqW_5K#d%=~)BUf3+fiaI)Q(J= z*~*10;a9IV{4#?>I-I=L{zMA1eNnZLp))}aL2KN=J#SnZefozK%~j8Sosydg2|UlN z74@a>Wi@X-pb2H56BA!Lpwj8)dK4!KvZH zx%8{o5O45WUf&o=w zk?`(n7#+rGm2pEtA^@X1jfJuSyLwF?2XQ!R2?DL-gt*z^w<(Cf0xWJDN5g3TH(6i% z^hBM!Ou}`f3Rz}k&_5hbsfp&s%m6;=kc2sZwL^jSJ1S|72ARuZn&G7FvrYy)D{gJvKT#()o0?FqAX?RZ&?9BDgoO z)xk>X@tB3i!3tq8=BF78MQZ$0RaXEMxn5u50;Jd%KP{Rb^E=icK^R4OzzRI9=N*_% z`k}2tBlDOr9@3UJ)$5Na=a4xRXIo|cf@~7@?Qqe+MQj4-SZq+aogSfL^EyRxIC`#` zqYlAX_x+pUv4ro~O1E%<{ezkzvQmZ@_hqGyQi<>qR7>m@>PU1dnhO}{aOC0S^Me~XF;NQHP0fZrQWOb@2}QTbjp8*(kfv7%1|W;}E3 zJ!JQVh}d*oq4VYjK$WF=?^LcuNzCW+L$h(-#DN9NCi5Vb2xS(lXzszQg|V(CTiVW2 z*QP6}H4kmtio6k$N{H%F^gtl*s#S!vhOfbsf}qW&JF`1G>DymIU3bp%Hi+@lTLLTM z0_7t0pMI4s%SV~1M}rG6p1`9bPKE{deDD2Uqrp}`#k?}~lPzE|3uZI_`M`+inWJ)o za(sLqLT3I4^z$}!$6`EAVIQZfiM}R1L)6=)^p!#OOGxq=ub0sL3Lm4ft~;zSTJC1V zYJ+tQ^K^A{P1aUq%$d_OmcJL`VJNd1L0BkcYB>s>n&8cJh}q!~*KIm8Um_Y+v?png zeA@CD2dY*S4p(>B6v@=kzDrED+4?(6Uycc(eA7-pCE)=-FMfe}89_DNPHBTS{a0`H z#UN&otrKP({7{Y)pbbh5|!%QH9srVm_rK zPIN0P!*FIkBe1sRLO0t865P-4E7{xoM0e-<&co|-aJBREhby+vq^0#{5KgA!TZam8 zaDS4(pb+c2zX5H&BZgI+l+AdatMwUx3ruKM-$!bpDp649r|oEN^ALa!-43LL-O)Fa zUiK+yCFVSGzl^F_RYE3b{v9p;yi~cw*NpbZUY%2>3@72sYqBl$g#WDo;3l@}Rm63NR+-6sR!Vrq^u zHUzUqWV&(ht!{sIBOYh-S5}bXlA}xhw3)i~yQ4=$O+hknifIG13azHDPmg&2{x}LY zT8wx7P^sy`0RV!(pDXlC3@i*x3|}mqoasMAXFEn&DG@Pw6)`>K3EMR$_|8-6ux#z_ zqY&eg4Rjrg`jr$C+6hNzYl_8fP5&agqqSJ)Syuw&Zsd`RSXmN;{i=q~HBm)xx7;lv zL_3|{ekIikTYj+{Ul=d@VmX-9SB{T_?R~(pa+?x2I(m&P2hH2S?-LugAExgooNHi2 zktQBtsdym3AN8!)j|Rcmrt^{eMwZFsE}z{kC?op_*hn51*@vOB?4~4m1}PIZHxW3x zy?@cKFL3s6^wG_(m>SxGpL8^A?;2lBp-|%O?rZN#c1NGtpAYxxe6^QwQz3rL=m*GaU4M}iKLX3|O)ID{o2RMXcT*OPa_bsE~{5%N99 zJnyP8UoctbA~q+nx%>XmLR5<9Gj}X)28Qn%hjQ@XgAevgaDIc&FMJBvEgaTmOV_v9 ztRK3uJio)#t1*uNC9xHo+Ie;%Ag=d~O!EVG9Pj;UlKi5)?N*SVo-7uh1rEqgs=?BF#ja~S+j!Uwa~XpKq5#jUH2qQc+KQ-?I4fLhLe{=s~jp>IRQc+b{H} z+uDouaYgE4z2;eAimWiZ(heqhYJDY%zXX-DE7>)$u5H_<20 zO&9>+7ajmW_>UV_PE1uuR7h3mOw-0`tr_KQ(x6spRXcm8BGExdF0*3q3+3b|c}mx+ z4o_tWQj%~Eu}i>oglEV5rWuGL`D?Ly{oiwEg zZ{;Dm3NA-d*+SCZ@+KB2J||EiS;v) zK&I?bAYGDFnkJT}*Bd#IL+z&lM3A})(aIZOtGn}+^1x46 z@PM*o`1jNUm8Mo{nfT=*SygLDX~vM?)QQK)5Y~9Q{mW3R*u6kmO^aW)-s?&T>9We~ zNl(*gh`#oR6`#@hS}$ulsRx?S2_3D+SsOU|IL%5zCAzlovbvt}-uP%$XgiX?oH~}H z^N03<`F0`L{`brsftE{Ux)L)_%CpkCG+C<%Wgc?bRL+@G4NU5(we$_-O4<$A_p%5S z(1g-XSZQFM{&tbgEXQ<-x7s)|0h6P<&f+k{a@pB4oMAzZV64|F#ym7SbU~fkDBV}na410G^!<_I;OXX3d7^yTw>WFHm8i?h*&M6 zqz;)1e3XQ{)F!ctq^(JpT2^l*!N<)0KkDr&pzFW6 zPFetA-|TW`xv;Z=YU83_>?fb{!55G#h;BqJ-NVamx-u}A6sYd#3$89lHeJn#c)k|Q zxYu!_?2UZk#lLthQ!%)W*h4z9GPqUWFMY?i0KyBkXShXcMb6k?ScJ+EhzUSEwh&)& zVd_gP(}Qs=Wp3&E*gvrcvE*|HHCvnTT<8+9XaKmRBNedt8CtZiU`jem32f9p5z8Qy zhV-E(<0Bv?)s{^xd&udc>_rfqxihJO@!!Rhbsfo}3g(+;(!QXA(-k(B!5`vI!*z{N zv*#HA1))KZ)Oc>Kh%dvufG%j&4_V=!Bt!1b6n<~oD# zSbh;O{aNscre4K~c5KNgi_%3H5fz>xdX&ci$-}aoInS4?Z6n_)MAN3+bK(H{l|W5_ zjH(i?dUo|W*Ptljatuo8QK^q5A`?XCXL<5h{m=z&BfH?ub2agsx`tU*lIh(v%5 zaRxPyv2Zi*heq!g1#daeIX*ZK_c<@W+b+ffY)+N@Hh9cHY)R=*0U5OTy9^Q*@BM;v z)aj;H{Tc%$ED(CC-A`;Q3>>Vck=>y)XXq=W*DGheb>}pe7rCRUV(azNI;jm)DI_JUFO8KqoLne`dG>`-+Ky@U_~|S6O~%7^ zxfALaQ)Q>bTLFe0&h;(DID)OX4W2jk0lT50#;y+5SO|ZbVBT_EI;dOe?eGRY``DIh zBa$p%dJ%`44ejf*`^MI#if3DwF8x+9{#MEK&jV0M;IBOQ1wGHN%g{?Sj+aLUnycA z^w*hr?DxVC+RHPBTY#*mzInNxEw~6%wgdCA(;;dK`!Jm5>4cuCcnS^*-&(mca+}#O z+1j5fWlF23nb?2sTE#kLGh-hQDJf663%8f8VxmK22e@o}wj*&W+jtQP%G0b#+u=H_ z%@8i?6mel~g8)3pEtL75f%Fh^OPOgOAuyubt`mGTR|tTVr%#JkDWX)S1`^dXiQx1< zXqaS6SuH-XXSBkoeXDwoVh!tE57g`)tz>8NP~^xn!$4d*z1z-E`KeWGDl!?{*LHTf zUUm|6W5v9B2~wUhALPc{^ybs+H7)}@M=_KbuW36aLj^p{kL1+okY~LGi91LQ!*0}T9j@A;>sa##>>j&Hvo;BGbgkSUEk|< zC5(;Y4lRBD{g^s*>?_Fl5d_?+)1x0s#E}DChA1 zaYr)~6Kq_*VrBj~vx%$c~5dIok&tB%w)EM^29 zC$?;NT33jI8%yAR1MUUIp9f)fkrIwwxnxGaEiKMx{EFVaHpSDTxOzpS#vy=Jjy-8O_0*o4za;o&ID_p9nI}u54u_ z@d@}<%qRwRJsD`d{!(U1|se|rH03K=!Y1+04Om?vW`tQ80i?hPn_Rt~Ti5?jQ zhPn+c!gI0^(r{+3s_Iln9l%2z!(K-Qyj*7&nh}b!60O!6$5fqu8}c*8akvxSz^=`w zt-UsMXeYwC^Q&8K&`6dmlJyWBp0`hSf= z|G#ek(ew7F`(GdW-)(Atz5i-?KN){Et^Et|F`fC>|2yOF7PdbDe>wae z#9ylT-=ok!3Hk3J{zD`G6Y{4<{x{^zf9wy)|5nWZr2MIf{7otJC;N!(U!MPwRQ|6% z@+a!gTJ?WW^Em&6`nz)dll5nI`ybXh**~%VmFxZl{h68m2lSQvpFn@+sXv(ik$V1{ g33C3A%>PP6iZT!%|7rjLupigN#}3&4D_H{m504f;_y7O^ diff --git a/dist/jsnac-0.2.0.tar.gz b/dist/jsnac-0.2.0.tar.gz deleted file mode 100644 index 8475346b7327e03d20c5aaabf2e36021bbe12b1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12128 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 diff --git a/dist/jsnac-0.2.1-py3-none-any.whl b/dist/jsnac-0.2.1-py3-none-any.whl deleted file mode 100644 index 335a3561b667a268e1e6b4a7e14f04dd75fc4ca4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11583 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 diff --git a/dist/jsnac-0.2.1.tar.gz b/dist/jsnac-0.2.1.tar.gz deleted file mode 100644 index 2435dbb5dcf419fa97322e4c7aa8ce8c3a2d14eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13371 zcmZA7V~{R9)F$e-ZQHhO+s1D1wr$(CwcECB+qT`$dFMNI>dZ_km8v9_Kl!z4-4|gr z6co^Z0|a30Y-emr&&0sOz|7!c>;!b<>+65in&<#HEf+dD){r5;9BJ%XWwg6o-~Fdk zcawi3pEdSiWd)s-Q7V;Ma=mhM>-(CG830CoIa1lwb7s==AVbE41!oSy+HYjEcJpb- zkb_uP%9?OM=$EV*EI9RR%htMe;qJ5hw>hg;Fapv49VA~HjhC1W5WaU-{-Pph;!c8? z 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 diff --git a/docs/source/conf.py b/docs/source/conf.py index 1bb3af4..0e5a1ac 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -9,7 +9,7 @@ project = "JSNAC" copyright = "2024, Andrew Jones" author = "Andrew Jones" -release = "0.2.1" +release = "0.3.0" # -- General configuration --------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration diff --git a/docs/source/requirements.txt b/docs/source/requirements.txt index 859df57..bbbe5ac 100644 --- a/docs/source/requirements.txt +++ b/docs/source/requirements.txt @@ -1,2 +1,2 @@ -sphinx==8.1.3 -sphinx-rtd-theme==3.0.1 \ No newline at end of file +sphinx==8.2.3 +sphinx-rtd-theme==3.0.2 \ No newline at end of file diff --git a/jsnac/__init__.py b/jsnac/__init__.py index d4a03ac..3770df4 100644 --- a/jsnac/__init__.py +++ b/jsnac/__init__.py @@ -1,6 +1,6 @@ from .core.build import SchemaBuilder -__version__ = "0.2.1" +__version__ = "0.3.0" __all__ = [ "SchemaBuilder", ] diff --git a/poetry-backup/Dockerfile b/poetry-backup/Dockerfile new file mode 100644 index 0000000..67fb71d --- /dev/null +++ b/poetry-backup/Dockerfile @@ -0,0 +1,27 @@ +# Will use this argument eventually to specify the python version so we can test against multiple versions +ARG PYTHON=3.13 +FROM python:${PYTHON}-slim-bookworm + +ENV PATH="/root/.local/bin:$PATH" \ + PYTHONDONTWRITEBYTECODE=1 \ + PYTHONUNBUFFERED=1 + +RUN apt-get update \ + && apt-get install -yq curl \ + && curl -sSL https://install.python-poetry.org | python3 - --version 1.8.3 \ + && poetry config virtualenvs.create false + +COPY pyproject.toml . +COPY poetry.lock . + +# Dependencies change more often, so we break this out so the prevous apt-get is cached +RUN poetry install --no-interaction + +ARG NAME=jsnac +WORKDIR /${NAME} + +# Copy relevant files only (using .dockerignore) then install our project as a package +COPY . . +RUN poetry install --no-interaction + +CMD ["/bin/bash"] \ No newline at end of file diff --git a/poetry-backup/README.md b/poetry-backup/README.md new file mode 100644 index 0000000..e758fe0 --- /dev/null +++ b/poetry-backup/README.md @@ -0,0 +1,3 @@ +# poetry-backup + +Just a backup location for my old poetry files while I figure out how to migrate to UV. Will delete eventually. \ No newline at end of file diff --git a/poetry.lock b/poetry-backup/poetry.lock similarity index 100% rename from poetry.lock rename to poetry-backup/poetry.lock diff --git a/poetry-backup/pyproject.toml b/poetry-backup/pyproject.toml new file mode 100644 index 0000000..5294420 --- /dev/null +++ b/poetry-backup/pyproject.toml @@ -0,0 +1,99 @@ +[build-system] +requires = ["poetry-core==1.9.0"] +build-backend = "poetry.core.masonry.api" + +[tool.poetry] +name = "jsnac" +version = "0.2.1" +description = "JSON Schema (for) Network as Code: Build JSON schemas from YAML" +authors = ["Andrew Jones "] +license = "MIT" +readme = "README.md" +repository = "https://github.com/commitconfirmed/jsnac" +classifiers = [ + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", +] + +[tool.poetry.dependencies] +python = ">=3.10,<4.0" +pyyaml = ">=6.0.2,<7.0.0" + +[tool.poetry.scripts] +jsnac = "jsnac.utils.jsnac_cli:main" + +[tool.poetry.group.dev.dependencies] +pytest = ">=8.3.0,<9.0.0" +pytest-cov = ">=5.0.0,<6.0.0" +jsonschema = ">=4.23.0,<5.0.0" +tox = ">=4.21.0,<5.0.0" +mypy = ">=1.12.1,<2.0.0" +types-PyYAML = ">=6.0.12,<7.0.0" +ruff = ">=0.7.0,<1.0.0" + +[tool.poetry.group.docs.dependencies] +sphinx = ">=8.1.3,<9.0.0" +sphinx-rtd-theme = ">=3.0.1,<4.0.0" + +# Basic mypy configuration until I learn more about it +[tool.mypy] +python_version = "3.10" +warn_return_any = true +warn_unused_configs = true +disallow_untyped_defs = true +exclude = [ + "venv.*/", + "data/", + "tests/", +] + +# Basic ruff configuration until I learn more about it +[tool.ruff] +line-length = 120 +target-version = "py310" + +[tool.ruff.lint] +preview = true +select = ["ALL"] +ignore = [ + "COM812", # Recommended to be disabled + "CPY001", # Missing copyright notice at top of file + "D100", # Missing docstring in public module + "D205", # One blank line required between summary line and description + "D203", # One blank line before class + "D212", # Multi-line docstring summary should start at the first line + "D401", # First line of docstring should be in imperative mood + "D400", # First line should end with a period + "D415", # First line should end with a period, question mark, or exclamation point + "ISC001", # Recommended to be disabled +] + +[tool.ruff.lint.per-file-ignores] +"tests/**" = [ + "ANN001", # Type annotations + "CPY001", # Copyright + "S101", # Use of `assert` detected + "S104", # Valid tests against 0.0.0.0 + "D100", # Missing docstring in public module + "D103", # Missing docstring in public function + "D104", # Missing docstring in public package +] +"**/__init__.py" = [ + "D104", # Missing docstring in public package + "F401", # Imported but unused + "F403", # Wildcard imports +] +"docs/**" = [ + "A001", # Variable `copyright` is shadowing a Python builtin + "D100", # Missing docstring in public module + "E402", # Module level import not at top of file + "INP001", # Requires __init__.py but docs folder is not a package. +] + +[tool.ruff.format] +quote-style = "double" +indent-style = "space" +skip-magic-trailing-comma = false +line-ending = "auto" \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 5294420..b29498f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,43 +1,50 @@ [build-system] -requires = ["poetry-core==1.9.0"] -build-backend = "poetry.core.masonry.api" +requires = ["hatchling"] +build-backend = "hatchling.build" -[tool.poetry] +[project] name = "jsnac" -version = "0.2.1" +version = "0.3.0" description = "JSON Schema (for) Network as Code: Build JSON schemas from YAML" -authors = ["Andrew Jones "] -license = "MIT" +authors = [{ name = "Andrew Jones", email = "jsnac@commitconfirmed.com" }] +requires-python = ">=3.11,<4.0" readme = "README.md" -repository = "https://github.com/commitconfirmed/jsnac" +license = "MIT" classifiers = [ - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", - "Programming Language :: Python :: 3.12", - "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", ] +dependencies = ["pyyaml>=6.0.2,<7.0.0"] -[tool.poetry.dependencies] -python = ">=3.10,<4.0" -pyyaml = ">=6.0.2,<7.0.0" +[project.urls] +Repository = "https://github.com/commitconfirmed/jsnac" -[tool.poetry.scripts] +[project.scripts] jsnac = "jsnac.utils.jsnac_cli:main" -[tool.poetry.group.dev.dependencies] -pytest = ">=8.3.0,<9.0.0" -pytest-cov = ">=5.0.0,<6.0.0" -jsonschema = ">=4.23.0,<5.0.0" -tox = ">=4.21.0,<5.0.0" -mypy = ">=1.12.1,<2.0.0" -types-PyYAML = ">=6.0.12,<7.0.0" -ruff = ">=0.7.0,<1.0.0" +[dependency-groups] +dev = [ + "pytest>=8.4.1,<9.0.0", + "pytest-cov>=5.0.0,<6.0.0", + "jsonschema>=4.24.0,<5.0.0", + "tox>=4.27.0,<5.0.0", + "mypy>=1.16.1,<2.0.0", + "types-PyYAML>=6.0.12,<7.0.0", + "ruff>=0.12.0,<1.0.0", +] +docs = [ + "sphinx>=8.2.3,<9.0.0", + "sphinx-rtd-theme>=3.0.2,<4.0.0", +] -[tool.poetry.group.docs.dependencies] -sphinx = ">=8.1.3,<9.0.0" -sphinx-rtd-theme = ">=3.0.1,<4.0.0" +[tool.uv] +default-groups = [ + "dev", + "docs", +] -# Basic mypy configuration until I learn more about it [tool.mypy] python_version = "3.10" warn_return_any = true @@ -49,7 +56,6 @@ exclude = [ "tests/", ] -# Basic ruff configuration until I learn more about it [tool.ruff] line-length = 120 target-version = "py310" @@ -96,4 +102,4 @@ ignore = [ quote-style = "double" indent-style = "space" skip-magic-trailing-comma = false -line-ending = "auto" \ No newline at end of file +line-ending = "auto" diff --git a/tox.ini b/tox.ini index dcbdeb5..a611a49 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py3{10,11,12,13} +envlist = py3{11,12,13} isolated_build = True skip_missing_interpreters = True diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..60c9837 --- /dev/null +++ b/uv.lock @@ -0,0 +1,898 @@ +version = 1 +revision = 2 +requires-python = ">=3.11, <4.0" + +[[package]] +name = "alabaster" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a6/f8/d9c74d0daf3f742840fd818d69cfae176fa332022fd44e3469487d5a9420/alabaster-1.0.0.tar.gz", hash = "sha256:c00dca57bca26fa62a6d7d0a9fcce65f3e026e9bfe33e9c538fd3fbb2144fd9e", size = 24210, upload-time = "2024-07-26T18:15:03.762Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl", hash = "sha256:fc6786402dc3fcb2de3cabd5fe455a2db534b371124f1f21de8731783dec828b", size = 13929, upload-time = "2024-07-26T18:15:02.05Z" }, +] + +[[package]] +name = "attrs" +version = "25.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload-time = "2025-03-13T11:10:22.779Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload-time = "2025-03-13T11:10:21.14Z" }, +] + +[[package]] +name = "babel" +version = "2.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852, upload-time = "2025-02-01T15:17:41.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload-time = "2025-02-01T15:17:37.39Z" }, +] + +[[package]] +name = "cachetools" +version = "6.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/89/817ad5d0411f136c484d535952aef74af9b25e0d99e90cdffbe121e6d628/cachetools-6.1.0.tar.gz", hash = "sha256:b4c4f404392848db3ce7aac34950d17be4d864da4b8b66911008e430bc544587", size = 30714, upload-time = "2025-06-16T18:51:03.07Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/f0/2ef431fe4141f5e334759d73e81120492b23b2824336883a91ac04ba710b/cachetools-6.1.0-py3-none-any.whl", hash = "sha256:1c7bb3cf9193deaf3508b7c5f2a79986c13ea38965c5adcff1f84519cf39163e", size = 11189, upload-time = "2025-06-16T18:51:01.514Z" }, +] + +[[package]] +name = "certifi" +version = "2025.6.15" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/73/f7/f14b46d4bcd21092d7d3ccef689615220d8a08fb25e564b65d20738e672e/certifi-2025.6.15.tar.gz", hash = "sha256:d747aa5a8b9bbbb1bb8c22bb13e22bd1f18e9796defa16bab421f7f7a317323b", size = 158753, upload-time = "2025-06-15T02:45:51.329Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/ae/320161bd181fc06471eed047ecce67b693fd7515b16d495d8932db763426/certifi-2025.6.15-py3-none-any.whl", hash = "sha256:2e0c7ce7cb5d8f8634ca55d2ba7e6ec2689a2fd6537d8dec1296a477a4910057", size = 157650, upload-time = "2025-06-15T02:45:49.977Z" }, +] + +[[package]] +name = "chardet" +version = "5.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/f7b6ab21ec75897ed80c17d79b15951a719226b9fababf1e40ea74d69079/chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7", size = 2069618, upload-time = "2023-08-01T19:23:02.662Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/6f/f5fbc992a329ee4e0f288c1fe0e2ad9485ed064cac731ed2fe47dcc38cbf/chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970", size = 199385, upload-time = "2023-08-01T19:23:00.661Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367, upload-time = "2025-05-02T08:34:42.01Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/85/4c40d00dcc6284a1c1ad5de5e0996b06f39d8232f1031cd23c2f5c07ee86/charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2", size = 198794, upload-time = "2025-05-02T08:32:11.945Z" }, + { url = "https://files.pythonhosted.org/packages/41/d9/7a6c0b9db952598e97e93cbdfcb91bacd89b9b88c7c983250a77c008703c/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645", size = 142846, upload-time = "2025-05-02T08:32:13.946Z" }, + { url = "https://files.pythonhosted.org/packages/66/82/a37989cda2ace7e37f36c1a8ed16c58cf48965a79c2142713244bf945c89/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd", size = 153350, upload-time = "2025-05-02T08:32:15.873Z" }, + { url = "https://files.pythonhosted.org/packages/df/68/a576b31b694d07b53807269d05ec3f6f1093e9545e8607121995ba7a8313/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8", size = 145657, upload-time = "2025-05-02T08:32:17.283Z" }, + { url = "https://files.pythonhosted.org/packages/92/9b/ad67f03d74554bed3aefd56fe836e1623a50780f7c998d00ca128924a499/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f", size = 147260, upload-time = "2025-05-02T08:32:18.807Z" }, + { url = "https://files.pythonhosted.org/packages/a6/e6/8aebae25e328160b20e31a7e9929b1578bbdc7f42e66f46595a432f8539e/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7", size = 149164, upload-time = "2025-05-02T08:32:20.333Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f2/b3c2f07dbcc248805f10e67a0262c93308cfa149a4cd3d1fe01f593e5fd2/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9", size = 144571, upload-time = "2025-05-02T08:32:21.86Z" }, + { url = "https://files.pythonhosted.org/packages/60/5b/c3f3a94bc345bc211622ea59b4bed9ae63c00920e2e8f11824aa5708e8b7/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544", size = 151952, upload-time = "2025-05-02T08:32:23.434Z" }, + { url = "https://files.pythonhosted.org/packages/e2/4d/ff460c8b474122334c2fa394a3f99a04cf11c646da895f81402ae54f5c42/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82", size = 155959, upload-time = "2025-05-02T08:32:24.993Z" }, + { url = "https://files.pythonhosted.org/packages/a2/2b/b964c6a2fda88611a1fe3d4c400d39c66a42d6c169c924818c848f922415/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0", size = 153030, upload-time = "2025-05-02T08:32:26.435Z" }, + { url = "https://files.pythonhosted.org/packages/59/2e/d3b9811db26a5ebf444bc0fa4f4be5aa6d76fc6e1c0fd537b16c14e849b6/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5", size = 148015, upload-time = "2025-05-02T08:32:28.376Z" }, + { url = "https://files.pythonhosted.org/packages/90/07/c5fd7c11eafd561bb51220d600a788f1c8d77c5eef37ee49454cc5c35575/charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a", size = 98106, upload-time = "2025-05-02T08:32:30.281Z" }, + { url = "https://files.pythonhosted.org/packages/a8/05/5e33dbef7e2f773d672b6d79f10ec633d4a71cd96db6673625838a4fd532/charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28", size = 105402, upload-time = "2025-05-02T08:32:32.191Z" }, + { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936, upload-time = "2025-05-02T08:32:33.712Z" }, + { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790, upload-time = "2025-05-02T08:32:35.768Z" }, + { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924, upload-time = "2025-05-02T08:32:37.284Z" }, + { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626, upload-time = "2025-05-02T08:32:38.803Z" }, + { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567, upload-time = "2025-05-02T08:32:40.251Z" }, + { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957, upload-time = "2025-05-02T08:32:41.705Z" }, + { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408, upload-time = "2025-05-02T08:32:43.709Z" }, + { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399, upload-time = "2025-05-02T08:32:46.197Z" }, + { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815, upload-time = "2025-05-02T08:32:48.105Z" }, + { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537, upload-time = "2025-05-02T08:32:49.719Z" }, + { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565, upload-time = "2025-05-02T08:32:51.404Z" }, + { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357, upload-time = "2025-05-02T08:32:53.079Z" }, + { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776, upload-time = "2025-05-02T08:32:54.573Z" }, + { url = "https://files.pythonhosted.org/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0", size = 199622, upload-time = "2025-05-02T08:32:56.363Z" }, + { url = "https://files.pythonhosted.org/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf", size = 143435, upload-time = "2025-05-02T08:32:58.551Z" }, + { url = "https://files.pythonhosted.org/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e", size = 153653, upload-time = "2025-05-02T08:33:00.342Z" }, + { url = "https://files.pythonhosted.org/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1", size = 146231, upload-time = "2025-05-02T08:33:02.081Z" }, + { url = "https://files.pythonhosted.org/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c", size = 148243, upload-time = "2025-05-02T08:33:04.063Z" }, + { url = "https://files.pythonhosted.org/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691", size = 150442, upload-time = "2025-05-02T08:33:06.418Z" }, + { url = "https://files.pythonhosted.org/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0", size = 145147, upload-time = "2025-05-02T08:33:08.183Z" }, + { url = "https://files.pythonhosted.org/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b", size = 153057, upload-time = "2025-05-02T08:33:09.986Z" }, + { url = "https://files.pythonhosted.org/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff", size = 156454, upload-time = "2025-05-02T08:33:11.814Z" }, + { url = "https://files.pythonhosted.org/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b", size = 154174, upload-time = "2025-05-02T08:33:13.707Z" }, + { url = "https://files.pythonhosted.org/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148", size = 149166, upload-time = "2025-05-02T08:33:15.458Z" }, + { url = "https://files.pythonhosted.org/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7", size = 98064, upload-time = "2025-05-02T08:33:17.06Z" }, + { url = "https://files.pythonhosted.org/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980", size = 105641, upload-time = "2025-05-02T08:33:18.753Z" }, + { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload-time = "2025-05-02T08:34:40.053Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "coverage" +version = "7.9.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/04/b7/c0465ca253df10a9e8dae0692a4ae6e9726d245390aaef92360e1d6d3832/coverage-7.9.2.tar.gz", hash = "sha256:997024fa51e3290264ffd7492ec97d0690293ccd2b45a6cd7d82d945a4a80c8b", size = 813556, upload-time = "2025-07-03T10:54:15.101Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/40/916786453bcfafa4c788abee4ccd6f592b5b5eca0cd61a32a4e5a7ef6e02/coverage-7.9.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a7a56a2964a9687b6aba5b5ced6971af308ef6f79a91043c05dd4ee3ebc3e9ba", size = 212152, upload-time = "2025-07-03T10:52:53.562Z" }, + { url = "https://files.pythonhosted.org/packages/9f/66/cc13bae303284b546a030762957322bbbff1ee6b6cb8dc70a40f8a78512f/coverage-7.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:123d589f32c11d9be7fe2e66d823a236fe759b0096f5db3fb1b75b2fa414a4fa", size = 212540, upload-time = "2025-07-03T10:52:55.196Z" }, + { url = "https://files.pythonhosted.org/packages/0f/3c/d56a764b2e5a3d43257c36af4a62c379df44636817bb5f89265de4bf8bd7/coverage-7.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:333b2e0ca576a7dbd66e85ab402e35c03b0b22f525eed82681c4b866e2e2653a", size = 245097, upload-time = "2025-07-03T10:52:56.509Z" }, + { url = "https://files.pythonhosted.org/packages/b1/46/bd064ea8b3c94eb4ca5d90e34d15b806cba091ffb2b8e89a0d7066c45791/coverage-7.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:326802760da234baf9f2f85a39e4a4b5861b94f6c8d95251f699e4f73b1835dc", size = 242812, upload-time = "2025-07-03T10:52:57.842Z" }, + { url = "https://files.pythonhosted.org/packages/43/02/d91992c2b29bc7afb729463bc918ebe5f361be7f1daae93375a5759d1e28/coverage-7.9.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19e7be4cfec248df38ce40968c95d3952fbffd57b400d4b9bb580f28179556d2", size = 244617, upload-time = "2025-07-03T10:52:59.239Z" }, + { url = "https://files.pythonhosted.org/packages/b7/4f/8fadff6bf56595a16d2d6e33415841b0163ac660873ed9a4e9046194f779/coverage-7.9.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0b4a4cb73b9f2b891c1788711408ef9707666501ba23684387277ededab1097c", size = 244263, upload-time = "2025-07-03T10:53:00.601Z" }, + { url = "https://files.pythonhosted.org/packages/9b/d2/e0be7446a2bba11739edb9f9ba4eff30b30d8257370e237418eb44a14d11/coverage-7.9.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:2c8937fa16c8c9fbbd9f118588756e7bcdc7e16a470766a9aef912dd3f117dbd", size = 242314, upload-time = "2025-07-03T10:53:01.932Z" }, + { url = "https://files.pythonhosted.org/packages/9d/7d/dcbac9345000121b8b57a3094c2dfcf1ccc52d8a14a40c1d4bc89f936f80/coverage-7.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:42da2280c4d30c57a9b578bafd1d4494fa6c056d4c419d9689e66d775539be74", size = 242904, upload-time = "2025-07-03T10:53:03.478Z" }, + { url = "https://files.pythonhosted.org/packages/41/58/11e8db0a0c0510cf31bbbdc8caf5d74a358b696302a45948d7c768dfd1cf/coverage-7.9.2-cp311-cp311-win32.whl", hash = "sha256:14fa8d3da147f5fdf9d298cacc18791818f3f1a9f542c8958b80c228320e90c6", size = 214553, upload-time = "2025-07-03T10:53:05.174Z" }, + { url = "https://files.pythonhosted.org/packages/3a/7d/751794ec8907a15e257136e48dc1021b1f671220ecccfd6c4eaf30802714/coverage-7.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:549cab4892fc82004f9739963163fd3aac7a7b0df430669b75b86d293d2df2a7", size = 215441, upload-time = "2025-07-03T10:53:06.472Z" }, + { url = "https://files.pythonhosted.org/packages/62/5b/34abcedf7b946c1c9e15b44f326cb5b0da852885312b30e916f674913428/coverage-7.9.2-cp311-cp311-win_arm64.whl", hash = "sha256:c2667a2b913e307f06aa4e5677f01a9746cd08e4b35e14ebcde6420a9ebb4c62", size = 213873, upload-time = "2025-07-03T10:53:07.699Z" }, + { url = "https://files.pythonhosted.org/packages/53/d7/7deefc6fd4f0f1d4c58051f4004e366afc9e7ab60217ac393f247a1de70a/coverage-7.9.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ae9eb07f1cfacd9cfe8eaee6f4ff4b8a289a668c39c165cd0c8548484920ffc0", size = 212344, upload-time = "2025-07-03T10:53:09.3Z" }, + { url = "https://files.pythonhosted.org/packages/95/0c/ee03c95d32be4d519e6a02e601267769ce2e9a91fc8faa1b540e3626c680/coverage-7.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9ce85551f9a1119f02adc46d3014b5ee3f765deac166acf20dbb851ceb79b6f3", size = 212580, upload-time = "2025-07-03T10:53:11.52Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9f/826fa4b544b27620086211b87a52ca67592622e1f3af9e0a62c87aea153a/coverage-7.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8f6389ac977c5fb322e0e38885fbbf901743f79d47f50db706e7644dcdcb6e1", size = 246383, upload-time = "2025-07-03T10:53:13.134Z" }, + { url = "https://files.pythonhosted.org/packages/7f/b3/4477aafe2a546427b58b9c540665feff874f4db651f4d3cb21b308b3a6d2/coverage-7.9.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff0d9eae8cdfcd58fe7893b88993723583a6ce4dfbfd9f29e001922544f95615", size = 243400, upload-time = "2025-07-03T10:53:14.614Z" }, + { url = "https://files.pythonhosted.org/packages/f8/c2/efffa43778490c226d9d434827702f2dfbc8041d79101a795f11cbb2cf1e/coverage-7.9.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fae939811e14e53ed8a9818dad51d434a41ee09df9305663735f2e2d2d7d959b", size = 245591, upload-time = "2025-07-03T10:53:15.872Z" }, + { url = "https://files.pythonhosted.org/packages/c6/e7/a59888e882c9a5f0192d8627a30ae57910d5d449c80229b55e7643c078c4/coverage-7.9.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:31991156251ec202c798501e0a42bbdf2169dcb0f137b1f5c0f4267f3fc68ef9", size = 245402, upload-time = "2025-07-03T10:53:17.124Z" }, + { url = "https://files.pythonhosted.org/packages/92/a5/72fcd653ae3d214927edc100ce67440ed8a0a1e3576b8d5e6d066ed239db/coverage-7.9.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d0d67963f9cbfc7c7f96d4ac74ed60ecbebd2ea6eeb51887af0f8dce205e545f", size = 243583, upload-time = "2025-07-03T10:53:18.781Z" }, + { url = "https://files.pythonhosted.org/packages/5c/f5/84e70e4df28f4a131d580d7d510aa1ffd95037293da66fd20d446090a13b/coverage-7.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:49b752a2858b10580969ec6af6f090a9a440a64a301ac1528d7ca5f7ed497f4d", size = 244815, upload-time = "2025-07-03T10:53:20.168Z" }, + { url = "https://files.pythonhosted.org/packages/39/e7/d73d7cbdbd09fdcf4642655ae843ad403d9cbda55d725721965f3580a314/coverage-7.9.2-cp312-cp312-win32.whl", hash = "sha256:88d7598b8ee130f32f8a43198ee02edd16d7f77692fa056cb779616bbea1b355", size = 214719, upload-time = "2025-07-03T10:53:21.521Z" }, + { url = "https://files.pythonhosted.org/packages/9f/d6/7486dcc3474e2e6ad26a2af2db7e7c162ccd889c4c68fa14ea8ec189c9e9/coverage-7.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:9dfb070f830739ee49d7c83e4941cc767e503e4394fdecb3b54bfdac1d7662c0", size = 215509, upload-time = "2025-07-03T10:53:22.853Z" }, + { url = "https://files.pythonhosted.org/packages/b7/34/0439f1ae2593b0346164d907cdf96a529b40b7721a45fdcf8b03c95fcd90/coverage-7.9.2-cp312-cp312-win_arm64.whl", hash = "sha256:4e2c058aef613e79df00e86b6d42a641c877211384ce5bd07585ed7ba71ab31b", size = 213910, upload-time = "2025-07-03T10:53:24.472Z" }, + { url = "https://files.pythonhosted.org/packages/94/9d/7a8edf7acbcaa5e5c489a646226bed9591ee1c5e6a84733c0140e9ce1ae1/coverage-7.9.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:985abe7f242e0d7bba228ab01070fde1d6c8fa12f142e43debe9ed1dde686038", size = 212367, upload-time = "2025-07-03T10:53:25.811Z" }, + { url = "https://files.pythonhosted.org/packages/e8/9e/5cd6f130150712301f7e40fb5865c1bc27b97689ec57297e568d972eec3c/coverage-7.9.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82c3939264a76d44fde7f213924021ed31f55ef28111a19649fec90c0f109e6d", size = 212632, upload-time = "2025-07-03T10:53:27.075Z" }, + { url = "https://files.pythonhosted.org/packages/a8/de/6287a2c2036f9fd991c61cefa8c64e57390e30c894ad3aa52fac4c1e14a8/coverage-7.9.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae5d563e970dbe04382f736ec214ef48103d1b875967c89d83c6e3f21706d5b3", size = 245793, upload-time = "2025-07-03T10:53:28.408Z" }, + { url = "https://files.pythonhosted.org/packages/06/cc/9b5a9961d8160e3cb0b558c71f8051fe08aa2dd4b502ee937225da564ed1/coverage-7.9.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bdd612e59baed2a93c8843c9a7cb902260f181370f1d772f4842987535071d14", size = 243006, upload-time = "2025-07-03T10:53:29.754Z" }, + { url = "https://files.pythonhosted.org/packages/49/d9/4616b787d9f597d6443f5588619c1c9f659e1f5fc9eebf63699eb6d34b78/coverage-7.9.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:256ea87cb2a1ed992bcdfc349d8042dcea1b80436f4ddf6e246d6bee4b5d73b6", size = 244990, upload-time = "2025-07-03T10:53:31.098Z" }, + { url = "https://files.pythonhosted.org/packages/48/83/801cdc10f137b2d02b005a761661649ffa60eb173dcdaeb77f571e4dc192/coverage-7.9.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f44ae036b63c8ea432f610534a2668b0c3aee810e7037ab9d8ff6883de480f5b", size = 245157, upload-time = "2025-07-03T10:53:32.717Z" }, + { url = "https://files.pythonhosted.org/packages/c8/a4/41911ed7e9d3ceb0ffb019e7635468df7499f5cc3edca5f7dfc078e9c5ec/coverage-7.9.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:82d76ad87c932935417a19b10cfe7abb15fd3f923cfe47dbdaa74ef4e503752d", size = 243128, upload-time = "2025-07-03T10:53:34.009Z" }, + { url = "https://files.pythonhosted.org/packages/10/41/344543b71d31ac9cb00a664d5d0c9ef134a0fe87cb7d8430003b20fa0b7d/coverage-7.9.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:619317bb86de4193debc712b9e59d5cffd91dc1d178627ab2a77b9870deb2868", size = 244511, upload-time = "2025-07-03T10:53:35.434Z" }, + { url = "https://files.pythonhosted.org/packages/d5/81/3b68c77e4812105e2a060f6946ba9e6f898ddcdc0d2bfc8b4b152a9ae522/coverage-7.9.2-cp313-cp313-win32.whl", hash = "sha256:0a07757de9feb1dfafd16ab651e0f628fd7ce551604d1bf23e47e1ddca93f08a", size = 214765, upload-time = "2025-07-03T10:53:36.787Z" }, + { url = "https://files.pythonhosted.org/packages/06/a2/7fac400f6a346bb1a4004eb2a76fbff0e242cd48926a2ce37a22a6a1d917/coverage-7.9.2-cp313-cp313-win_amd64.whl", hash = "sha256:115db3d1f4d3f35f5bb021e270edd85011934ff97c8797216b62f461dd69374b", size = 215536, upload-time = "2025-07-03T10:53:38.188Z" }, + { url = "https://files.pythonhosted.org/packages/08/47/2c6c215452b4f90d87017e61ea0fd9e0486bb734cb515e3de56e2c32075f/coverage-7.9.2-cp313-cp313-win_arm64.whl", hash = "sha256:48f82f889c80af8b2a7bb6e158d95a3fbec6a3453a1004d04e4f3b5945a02694", size = 213943, upload-time = "2025-07-03T10:53:39.492Z" }, + { url = "https://files.pythonhosted.org/packages/a3/46/e211e942b22d6af5e0f323faa8a9bc7c447a1cf1923b64c47523f36ed488/coverage-7.9.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:55a28954545f9d2f96870b40f6c3386a59ba8ed50caf2d949676dac3ecab99f5", size = 213088, upload-time = "2025-07-03T10:53:40.874Z" }, + { url = "https://files.pythonhosted.org/packages/d2/2f/762551f97e124442eccd907bf8b0de54348635b8866a73567eb4e6417acf/coverage-7.9.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cdef6504637731a63c133bb2e6f0f0214e2748495ec15fe42d1e219d1b133f0b", size = 213298, upload-time = "2025-07-03T10:53:42.218Z" }, + { url = "https://files.pythonhosted.org/packages/7a/b7/76d2d132b7baf7360ed69be0bcab968f151fa31abe6d067f0384439d9edb/coverage-7.9.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bcd5ebe66c7a97273d5d2ddd4ad0ed2e706b39630ed4b53e713d360626c3dbb3", size = 256541, upload-time = "2025-07-03T10:53:43.823Z" }, + { url = "https://files.pythonhosted.org/packages/a0/17/392b219837d7ad47d8e5974ce5f8dc3deb9f99a53b3bd4d123602f960c81/coverage-7.9.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9303aed20872d7a3c9cb39c5d2b9bdbe44e3a9a1aecb52920f7e7495410dfab8", size = 252761, upload-time = "2025-07-03T10:53:45.19Z" }, + { url = "https://files.pythonhosted.org/packages/d5/77/4256d3577fe1b0daa8d3836a1ebe68eaa07dd2cbaf20cf5ab1115d6949d4/coverage-7.9.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc18ea9e417a04d1920a9a76fe9ebd2f43ca505b81994598482f938d5c315f46", size = 254917, upload-time = "2025-07-03T10:53:46.931Z" }, + { url = "https://files.pythonhosted.org/packages/53/99/fc1a008eef1805e1ddb123cf17af864743354479ea5129a8f838c433cc2c/coverage-7.9.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6406cff19880aaaadc932152242523e892faff224da29e241ce2fca329866584", size = 256147, upload-time = "2025-07-03T10:53:48.289Z" }, + { url = "https://files.pythonhosted.org/packages/92/c0/f63bf667e18b7f88c2bdb3160870e277c4874ced87e21426128d70aa741f/coverage-7.9.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2d0d4f6ecdf37fcc19c88fec3e2277d5dee740fb51ffdd69b9579b8c31e4232e", size = 254261, upload-time = "2025-07-03T10:53:49.99Z" }, + { url = "https://files.pythonhosted.org/packages/8c/32/37dd1c42ce3016ff8ec9e4b607650d2e34845c0585d3518b2a93b4830c1a/coverage-7.9.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c33624f50cf8de418ab2b4d6ca9eda96dc45b2c4231336bac91454520e8d1fac", size = 255099, upload-time = "2025-07-03T10:53:51.354Z" }, + { url = "https://files.pythonhosted.org/packages/da/2e/af6b86f7c95441ce82f035b3affe1cd147f727bbd92f563be35e2d585683/coverage-7.9.2-cp313-cp313t-win32.whl", hash = "sha256:1df6b76e737c6a92210eebcb2390af59a141f9e9430210595251fbaf02d46926", size = 215440, upload-time = "2025-07-03T10:53:52.808Z" }, + { url = "https://files.pythonhosted.org/packages/4d/bb/8a785d91b308867f6b2e36e41c569b367c00b70c17f54b13ac29bcd2d8c8/coverage-7.9.2-cp313-cp313t-win_amd64.whl", hash = "sha256:f5fd54310b92741ebe00d9c0d1d7b2b27463952c022da6d47c175d246a98d1bd", size = 216537, upload-time = "2025-07-03T10:53:54.273Z" }, + { url = "https://files.pythonhosted.org/packages/1d/a0/a6bffb5e0f41a47279fd45a8f3155bf193f77990ae1c30f9c224b61cacb0/coverage-7.9.2-cp313-cp313t-win_arm64.whl", hash = "sha256:c48c2375287108c887ee87d13b4070a381c6537d30e8487b24ec721bf2a781cb", size = 214398, upload-time = "2025-07-03T10:53:56.715Z" }, + { url = "https://files.pythonhosted.org/packages/d7/85/f8bbefac27d286386961c25515431482a425967e23d3698b75a250872924/coverage-7.9.2-pp39.pp310.pp311-none-any.whl", hash = "sha256:8a1166db2fb62473285bcb092f586e081e92656c7dfa8e9f62b4d39d7e6b5050", size = 204013, upload-time = "2025-07-03T10:54:12.084Z" }, + { url = "https://files.pythonhosted.org/packages/3c/38/bbe2e63902847cf79036ecc75550d0698af31c91c7575352eb25190d0fb3/coverage-7.9.2-py3-none-any.whl", hash = "sha256:e425cd5b00f6fc0ed7cdbd766c70be8baab4b7839e4d4fe5fac48581dd968ea4", size = 204005, upload-time = "2025-07-03T10:54:13.491Z" }, +] + +[package.optional-dependencies] +toml = [ + { name = "tomli", marker = "python_full_version <= '3.11'" }, +] + +[[package]] +name = "distlib" +version = "0.3.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0d/dd/1bec4c5ddb504ca60fc29472f3d27e8d4da1257a854e1d96742f15c1d02d/distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403", size = 613923, upload-time = "2024-10-09T18:35:47.551Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973, upload-time = "2024-10-09T18:35:44.272Z" }, +] + +[[package]] +name = "docutils" +version = "0.21.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ae/ed/aefcc8cd0ba62a0560c3c18c33925362d46c6075480bfa4df87b28e169a9/docutils-0.21.2.tar.gz", hash = "sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f", size = 2204444, upload-time = "2024-04-23T18:57:18.24Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", size = 587408, upload-time = "2024-04-23T18:57:14.835Z" }, +] + +[[package]] +name = "filelock" +version = "3.18.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075, upload-time = "2025-03-14T07:11:40.47Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215, upload-time = "2025-03-14T07:11:39.145Z" }, +] + +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload-time = "2024-09-15T18:07:39.745Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload-time = "2024-09-15T18:07:37.964Z" }, +] + +[[package]] +name = "imagesize" +version = "1.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/84/62473fb57d61e31fef6e36d64a179c8781605429fd927b5dd608c997be31/imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a", size = 1280026, upload-time = "2022-07-01T12:21:05.687Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/62/85c4c919272577931d407be5ba5d71c20f0b616d31a0befe0ae45bb79abd/imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b", size = 8769, upload-time = "2022-07-01T12:21:02.467Z" }, +] + +[[package]] +name = "iniconfig" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "jsnac" +version = "0.3.0" +source = { editable = "." } +dependencies = [ + { name = "pyyaml" }, +] + +[package.dev-dependencies] +dev = [ + { name = "jsonschema" }, + { name = "mypy" }, + { name = "pytest" }, + { name = "pytest-cov" }, + { name = "ruff" }, + { name = "tox" }, + { name = "types-pyyaml" }, +] +docs = [ + { name = "sphinx" }, + { name = "sphinx-rtd-theme" }, +] + +[package.metadata] +requires-dist = [{ name = "pyyaml", specifier = ">=6.0.2,<7.0.0" }] + +[package.metadata.requires-dev] +dev = [ + { name = "jsonschema", specifier = ">=4.24.0,<5.0.0" }, + { name = "mypy", specifier = ">=1.16.1,<2.0.0" }, + { name = "pytest", specifier = ">=8.4.1,<9.0.0" }, + { name = "pytest-cov", specifier = ">=5.0.0,<6.0.0" }, + { name = "ruff", specifier = ">=0.12.0,<1.0.0" }, + { name = "tox", specifier = ">=4.27.0,<5.0.0" }, + { name = "types-pyyaml", specifier = ">=6.0.12,<7.0.0" }, +] +docs = [ + { name = "sphinx", specifier = ">=8.2.3,<9.0.0" }, + { name = "sphinx-rtd-theme", specifier = ">=3.0.2,<4.0.0" }, +] + +[[package]] +name = "jsonschema" +version = "4.24.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/d3/1cf5326b923a53515d8f3a2cd442e6d7e94fcc444716e879ea70a0ce3177/jsonschema-4.24.0.tar.gz", hash = "sha256:0b4e8069eb12aedfa881333004bccaec24ecef5a8a6a4b6df142b2cc9599d196", size = 353480, upload-time = "2025-05-26T18:48:10.459Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/3d/023389198f69c722d039351050738d6755376c8fd343e91dc493ea485905/jsonschema-4.24.0-py3-none-any.whl", hash = "sha256:a462455f19f5faf404a7902952b6f0e3ce868f3ee09a359b05eca6673bd8412d", size = 88709, upload-time = "2025-05-26T18:48:08.417Z" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513, upload-time = "2025-04-23T12:34:07.418Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437, upload-time = "2025-04-23T12:34:05.422Z" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload-time = "2024-10-18T15:21:54.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/28/bbf83e3f76936960b850435576dd5e67034e200469571be53f69174a2dfd/MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d", size = 14353, upload-time = "2024-10-18T15:21:02.187Z" }, + { url = "https://files.pythonhosted.org/packages/6c/30/316d194b093cde57d448a4c3209f22e3046c5bb2fb0820b118292b334be7/MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93", size = 12392, upload-time = "2024-10-18T15:21:02.941Z" }, + { url = "https://files.pythonhosted.org/packages/f2/96/9cdafba8445d3a53cae530aaf83c38ec64c4d5427d975c974084af5bc5d2/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832", size = 23984, upload-time = "2024-10-18T15:21:03.953Z" }, + { url = "https://files.pythonhosted.org/packages/f1/a4/aefb044a2cd8d7334c8a47d3fb2c9f328ac48cb349468cc31c20b539305f/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84", size = 23120, upload-time = "2024-10-18T15:21:06.495Z" }, + { url = "https://files.pythonhosted.org/packages/8d/21/5e4851379f88f3fad1de30361db501300d4f07bcad047d3cb0449fc51f8c/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca", size = 23032, upload-time = "2024-10-18T15:21:07.295Z" }, + { url = "https://files.pythonhosted.org/packages/00/7b/e92c64e079b2d0d7ddf69899c98842f3f9a60a1ae72657c89ce2655c999d/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798", size = 24057, upload-time = "2024-10-18T15:21:08.073Z" }, + { url = "https://files.pythonhosted.org/packages/f9/ac/46f960ca323037caa0a10662ef97d0a4728e890334fc156b9f9e52bcc4ca/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e", size = 23359, upload-time = "2024-10-18T15:21:09.318Z" }, + { url = "https://files.pythonhosted.org/packages/69/84/83439e16197337b8b14b6a5b9c2105fff81d42c2a7c5b58ac7b62ee2c3b1/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4", size = 23306, upload-time = "2024-10-18T15:21:10.185Z" }, + { url = "https://files.pythonhosted.org/packages/9a/34/a15aa69f01e2181ed8d2b685c0d2f6655d5cca2c4db0ddea775e631918cd/MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", size = 15094, upload-time = "2024-10-18T15:21:11.005Z" }, + { url = "https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", size = 15521, upload-time = "2024-10-18T15:21:12.911Z" }, + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274, upload-time = "2024-10-18T15:21:13.777Z" }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348, upload-time = "2024-10-18T15:21:14.822Z" }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149, upload-time = "2024-10-18T15:21:15.642Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118, upload-time = "2024-10-18T15:21:17.133Z" }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993, upload-time = "2024-10-18T15:21:18.064Z" }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178, upload-time = "2024-10-18T15:21:18.859Z" }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319, upload-time = "2024-10-18T15:21:19.671Z" }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352, upload-time = "2024-10-18T15:21:20.971Z" }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload-time = "2024-10-18T15:21:22.646Z" }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload-time = "2024-10-18T15:21:23.499Z" }, + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274, upload-time = "2024-10-18T15:21:24.577Z" }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352, upload-time = "2024-10-18T15:21:25.382Z" }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122, upload-time = "2024-10-18T15:21:26.199Z" }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085, upload-time = "2024-10-18T15:21:27.029Z" }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978, upload-time = "2024-10-18T15:21:27.846Z" }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208, upload-time = "2024-10-18T15:21:28.744Z" }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357, upload-time = "2024-10-18T15:21:29.545Z" }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344, upload-time = "2024-10-18T15:21:30.366Z" }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101, upload-time = "2024-10-18T15:21:31.207Z" }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603, upload-time = "2024-10-18T15:21:32.032Z" }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510, upload-time = "2024-10-18T15:21:33.625Z" }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486, upload-time = "2024-10-18T15:21:34.611Z" }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480, upload-time = "2024-10-18T15:21:35.398Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914, upload-time = "2024-10-18T15:21:36.231Z" }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796, upload-time = "2024-10-18T15:21:37.073Z" }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473, upload-time = "2024-10-18T15:21:37.932Z" }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114, upload-time = "2024-10-18T15:21:39.799Z" }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098, upload-time = "2024-10-18T15:21:40.813Z" }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208, upload-time = "2024-10-18T15:21:41.814Z" }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739, upload-time = "2024-10-18T15:21:42.784Z" }, +] + +[[package]] +name = "mypy" +version = "1.16.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mypy-extensions" }, + { name = "pathspec" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/81/69/92c7fa98112e4d9eb075a239caa4ef4649ad7d441545ccffbd5e34607cbb/mypy-1.16.1.tar.gz", hash = "sha256:6bd00a0a2094841c5e47e7374bb42b83d64c527a502e3334e1173a0c24437bab", size = 3324747, upload-time = "2025-06-16T16:51:35.145Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/61/ec1245aa1c325cb7a6c0f8570a2eee3bfc40fa90d19b1267f8e50b5c8645/mypy-1.16.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:472e4e4c100062488ec643f6162dd0d5208e33e2f34544e1fc931372e806c0cc", size = 10890557, upload-time = "2025-06-16T16:37:21.421Z" }, + { url = "https://files.pythonhosted.org/packages/6b/bb/6eccc0ba0aa0c7a87df24e73f0ad34170514abd8162eb0c75fd7128171fb/mypy-1.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ea16e2a7d2714277e349e24d19a782a663a34ed60864006e8585db08f8ad1782", size = 10012921, upload-time = "2025-06-16T16:51:28.659Z" }, + { url = "https://files.pythonhosted.org/packages/5f/80/b337a12e2006715f99f529e732c5f6a8c143bb58c92bb142d5ab380963a5/mypy-1.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:08e850ea22adc4d8a4014651575567b0318ede51e8e9fe7a68f25391af699507", size = 11802887, upload-time = "2025-06-16T16:50:53.627Z" }, + { url = "https://files.pythonhosted.org/packages/d9/59/f7af072d09793d581a745a25737c7c0a945760036b16aeb620f658a017af/mypy-1.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22d76a63a42619bfb90122889b903519149879ddbf2ba4251834727944c8baca", size = 12531658, upload-time = "2025-06-16T16:33:55.002Z" }, + { url = "https://files.pythonhosted.org/packages/82/c4/607672f2d6c0254b94a646cfc45ad589dd71b04aa1f3d642b840f7cce06c/mypy-1.16.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2c7ce0662b6b9dc8f4ed86eb7a5d505ee3298c04b40ec13b30e572c0e5ae17c4", size = 12732486, upload-time = "2025-06-16T16:37:03.301Z" }, + { url = "https://files.pythonhosted.org/packages/b6/5e/136555ec1d80df877a707cebf9081bd3a9f397dedc1ab9750518d87489ec/mypy-1.16.1-cp311-cp311-win_amd64.whl", hash = "sha256:211287e98e05352a2e1d4e8759c5490925a7c784ddc84207f4714822f8cf99b6", size = 9479482, upload-time = "2025-06-16T16:47:37.48Z" }, + { url = "https://files.pythonhosted.org/packages/b4/d6/39482e5fcc724c15bf6280ff5806548c7185e0c090712a3736ed4d07e8b7/mypy-1.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:af4792433f09575d9eeca5c63d7d90ca4aeceda9d8355e136f80f8967639183d", size = 11066493, upload-time = "2025-06-16T16:47:01.683Z" }, + { url = "https://files.pythonhosted.org/packages/e6/e5/26c347890efc6b757f4d5bb83f4a0cf5958b8cf49c938ac99b8b72b420a6/mypy-1.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:66df38405fd8466ce3517eda1f6640611a0b8e70895e2a9462d1d4323c5eb4b9", size = 10081687, upload-time = "2025-06-16T16:48:19.367Z" }, + { url = "https://files.pythonhosted.org/packages/44/c7/b5cb264c97b86914487d6a24bd8688c0172e37ec0f43e93b9691cae9468b/mypy-1.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:44e7acddb3c48bd2713994d098729494117803616e116032af192871aed80b79", size = 11839723, upload-time = "2025-06-16T16:49:20.912Z" }, + { url = "https://files.pythonhosted.org/packages/15/f8/491997a9b8a554204f834ed4816bda813aefda31cf873bb099deee3c9a99/mypy-1.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0ab5eca37b50188163fa7c1b73c685ac66c4e9bdee4a85c9adac0e91d8895e15", size = 12722980, upload-time = "2025-06-16T16:37:40.929Z" }, + { url = "https://files.pythonhosted.org/packages/df/f0/2bd41e174b5fd93bc9de9a28e4fb673113633b8a7f3a607fa4a73595e468/mypy-1.16.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb6229b2c9086247e21a83c309754b9058b438704ad2f6807f0d8227f6ebdd", size = 12903328, upload-time = "2025-06-16T16:34:35.099Z" }, + { url = "https://files.pythonhosted.org/packages/61/81/5572108a7bec2c46b8aff7e9b524f371fe6ab5efb534d38d6b37b5490da8/mypy-1.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:1f0435cf920e287ff68af3d10a118a73f212deb2ce087619eb4e648116d1fe9b", size = 9562321, upload-time = "2025-06-16T16:48:58.823Z" }, + { url = "https://files.pythonhosted.org/packages/28/e3/96964af4a75a949e67df4b95318fe2b7427ac8189bbc3ef28f92a1c5bc56/mypy-1.16.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ddc91eb318c8751c69ddb200a5937f1232ee8efb4e64e9f4bc475a33719de438", size = 11063480, upload-time = "2025-06-16T16:47:56.205Z" }, + { url = "https://files.pythonhosted.org/packages/f5/4d/cd1a42b8e5be278fab7010fb289d9307a63e07153f0ae1510a3d7b703193/mypy-1.16.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:87ff2c13d58bdc4bbe7dc0dedfe622c0f04e2cb2a492269f3b418df2de05c536", size = 10090538, upload-time = "2025-06-16T16:46:43.92Z" }, + { url = "https://files.pythonhosted.org/packages/c9/4f/c3c6b4b66374b5f68bab07c8cabd63a049ff69796b844bc759a0ca99bb2a/mypy-1.16.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a7cfb0fe29fe5a9841b7c8ee6dffb52382c45acdf68f032145b75620acfbd6f", size = 11836839, upload-time = "2025-06-16T16:36:28.039Z" }, + { url = "https://files.pythonhosted.org/packages/b4/7e/81ca3b074021ad9775e5cb97ebe0089c0f13684b066a750b7dc208438403/mypy-1.16.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:051e1677689c9d9578b9c7f4d206d763f9bbd95723cd1416fad50db49d52f359", size = 12715634, upload-time = "2025-06-16T16:50:34.441Z" }, + { url = "https://files.pythonhosted.org/packages/e9/95/bdd40c8be346fa4c70edb4081d727a54d0a05382d84966869738cfa8a497/mypy-1.16.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d5d2309511cc56c021b4b4e462907c2b12f669b2dbeb68300110ec27723971be", size = 12895584, upload-time = "2025-06-16T16:34:54.857Z" }, + { url = "https://files.pythonhosted.org/packages/5a/fd/d486a0827a1c597b3b48b1bdef47228a6e9ee8102ab8c28f944cb83b65dc/mypy-1.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:4f58ac32771341e38a853c5d0ec0dfe27e18e27da9cdb8bbc882d2249c71a3ee", size = 9573886, upload-time = "2025-06-16T16:36:43.589Z" }, + { url = "https://files.pythonhosted.org/packages/cf/d3/53e684e78e07c1a2bf7105715e5edd09ce951fc3f47cf9ed095ec1b7a037/mypy-1.16.1-py3-none-any.whl", hash = "sha256:5fc2ac4027d0ef28d6ba69a0343737a23c4d1b83672bf38d1fe237bdc0643b37", size = 2265923, upload-time = "2025-06-16T16:48:02.366Z" }, +] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, +] + +[[package]] +name = "packaging" +version = "25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, +] + +[[package]] +name = "platformdirs" +version = "4.3.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362, upload-time = "2025-05-07T22:47:42.121Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload-time = "2025-05-07T22:47:40.376Z" }, +] + +[[package]] +name = "pluggy" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, +] + +[[package]] +name = "pygments" +version = "2.19.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, +] + +[[package]] +name = "pyproject-api" +version = "1.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/fd/437901c891f58a7b9096511750247535e891d2d5a5a6eefbc9386a2b41d5/pyproject_api-1.9.1.tar.gz", hash = "sha256:43c9918f49daab37e302038fc1aed54a8c7a91a9fa935d00b9a485f37e0f5335", size = 22710, upload-time = "2025-05-12T14:41:58.025Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/e6/c293c06695d4a3ab0260ef124a74ebadba5f4c511ce3a4259e976902c00b/pyproject_api-1.9.1-py3-none-any.whl", hash = "sha256:7d6238d92f8962773dd75b5f0c4a6a27cce092a14b623b811dba656f3b628948", size = 13158, upload-time = "2025-05-12T14:41:56.217Z" }, +] + +[[package]] +name = "pytest" +version = "8.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/08/ba/45911d754e8eba3d5a841a5ce61a65a685ff1798421ac054f85aa8747dfb/pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c", size = 1517714, upload-time = "2025-06-18T05:48:06.109Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/29/16/c8a903f4c4dffe7a12843191437d7cd8e32751d5de349d45d3fe69544e87/pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", size = 365474, upload-time = "2025-06-18T05:48:03.955Z" }, +] + +[[package]] +name = "pytest-cov" +version = "5.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "coverage", extra = ["toml"] }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/74/67/00efc8d11b630c56f15f4ad9c7f9223f1e5ec275aaae3fa9118c6a223ad2/pytest-cov-5.0.0.tar.gz", hash = "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857", size = 63042, upload-time = "2024-03-24T20:16:34.856Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/3a/af5b4fa5961d9a1e6237b530eb87dd04aea6eb83da09d2a4073d81b54ccf/pytest_cov-5.0.0-py3-none-any.whl", hash = "sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652", size = 21990, upload-time = "2024-03-24T20:16:32.444Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612, upload-time = "2024-08-06T20:32:03.408Z" }, + { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040, upload-time = "2024-08-06T20:32:04.926Z" }, + { url = "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", size = 736829, upload-time = "2024-08-06T20:32:06.459Z" }, + { url = "https://files.pythonhosted.org/packages/51/16/6af8d6a6b210c8e54f1406a6b9481febf9c64a3109c541567e35a49aa2e7/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", size = 764167, upload-time = "2024-08-06T20:32:08.338Z" }, + { url = "https://files.pythonhosted.org/packages/75/e4/2c27590dfc9992f73aabbeb9241ae20220bd9452df27483b6e56d3975cc5/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", size = 762952, upload-time = "2024-08-06T20:32:14.124Z" }, + { url = "https://files.pythonhosted.org/packages/9b/97/ecc1abf4a823f5ac61941a9c00fe501b02ac3ab0e373c3857f7d4b83e2b6/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4", size = 735301, upload-time = "2024-08-06T20:32:16.17Z" }, + { url = "https://files.pythonhosted.org/packages/45/73/0f49dacd6e82c9430e46f4a027baa4ca205e8b0a9dce1397f44edc23559d/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", size = 756638, upload-time = "2024-08-06T20:32:18.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850, upload-time = "2024-08-06T20:32:19.889Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980, upload-time = "2024-08-06T20:32:21.273Z" }, + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873, upload-time = "2024-08-06T20:32:25.131Z" }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302, upload-time = "2024-08-06T20:32:26.511Z" }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154, upload-time = "2024-08-06T20:32:28.363Z" }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223, upload-time = "2024-08-06T20:32:30.058Z" }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542, upload-time = "2024-08-06T20:32:31.881Z" }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164, upload-time = "2024-08-06T20:32:37.083Z" }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611, upload-time = "2024-08-06T20:32:38.898Z" }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload-time = "2024-08-06T20:32:40.241Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload-time = "2024-08-06T20:32:41.93Z" }, + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309, upload-time = "2024-08-06T20:32:43.4Z" }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679, upload-time = "2024-08-06T20:32:44.801Z" }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428, upload-time = "2024-08-06T20:32:46.432Z" }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361, upload-time = "2024-08-06T20:32:51.188Z" }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload-time = "2024-08-06T20:32:53.019Z" }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload-time = "2024-08-06T20:32:54.708Z" }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload-time = "2024-08-06T20:32:56.985Z" }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload-time = "2024-08-06T20:33:03.001Z" }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload-time = "2024-08-06T20:33:04.33Z" }, +] + +[[package]] +name = "referencing" +version = "0.36.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload-time = "2025-01-25T08:48:16.138Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload-time = "2025-01-25T08:48:14.241Z" }, +] + +[[package]] +name = "requests" +version = "2.32.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258, upload-time = "2025-06-09T16:43:07.34Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847, upload-time = "2025-06-09T16:43:05.728Z" }, +] + +[[package]] +name = "roman-numerals-py" +version = "3.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/30/76/48fd56d17c5bdbdf65609abbc67288728a98ed4c02919428d4f52d23b24b/roman_numerals_py-3.1.0.tar.gz", hash = "sha256:be4bf804f083a4ce001b5eb7e3c0862479d10f94c936f6c4e5f250aa5ff5bd2d", size = 9017, upload-time = "2025-02-22T07:34:54.333Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/53/97/d2cbbaa10c9b826af0e10fdf836e1bf344d9f0abb873ebc34d1f49642d3f/roman_numerals_py-3.1.0-py3-none-any.whl", hash = "sha256:9da2ad2fb670bcf24e81070ceb3be72f6c11c440d73bd579fbeca1e9f330954c", size = 7742, upload-time = "2025-02-22T07:34:52.422Z" }, +] + +[[package]] +name = "rpds-py" +version = "0.26.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a5/aa/4456d84bbb54adc6a916fb10c9b374f78ac840337644e4a5eda229c81275/rpds_py-0.26.0.tar.gz", hash = "sha256:20dae58a859b0906f0685642e591056f1e787f3a8b39c8e8749a45dc7d26bdb0", size = 27385, upload-time = "2025-07-01T15:57:13.958Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/09/4c/4ee8f7e512030ff79fda1df3243c88d70fc874634e2dbe5df13ba4210078/rpds_py-0.26.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:9e8cb77286025bdb21be2941d64ac6ca016130bfdcd228739e8ab137eb4406ed", size = 372610, upload-time = "2025-07-01T15:53:58.844Z" }, + { url = "https://files.pythonhosted.org/packages/fa/9d/3dc16be00f14fc1f03c71b1d67c8df98263ab2710a2fbd65a6193214a527/rpds_py-0.26.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5e09330b21d98adc8ccb2dbb9fc6cb434e8908d4c119aeaa772cb1caab5440a0", size = 358032, upload-time = "2025-07-01T15:53:59.985Z" }, + { url = "https://files.pythonhosted.org/packages/e7/5a/7f1bf8f045da2866324a08ae80af63e64e7bfaf83bd31f865a7b91a58601/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9c1b92b774b2e68d11193dc39620d62fd8ab33f0a3c77ecdabe19c179cdbc1", size = 381525, upload-time = "2025-07-01T15:54:01.162Z" }, + { url = "https://files.pythonhosted.org/packages/45/8a/04479398c755a066ace10e3d158866beb600867cacae194c50ffa783abd0/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:824e6d3503ab990d7090768e4dfd9e840837bae057f212ff9f4f05ec6d1975e7", size = 397089, upload-time = "2025-07-01T15:54:02.319Z" }, + { url = "https://files.pythonhosted.org/packages/72/88/9203f47268db488a1b6d469d69c12201ede776bb728b9d9f29dbfd7df406/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ad7fd2258228bf288f2331f0a6148ad0186b2e3643055ed0db30990e59817a6", size = 514255, upload-time = "2025-07-01T15:54:03.38Z" }, + { url = "https://files.pythonhosted.org/packages/f5/b4/01ce5d1e853ddf81fbbd4311ab1eff0b3cf162d559288d10fd127e2588b5/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dc23bbb3e06ec1ea72d515fb572c1fea59695aefbffb106501138762e1e915e", size = 402283, upload-time = "2025-07-01T15:54:04.923Z" }, + { url = "https://files.pythonhosted.org/packages/34/a2/004c99936997bfc644d590a9defd9e9c93f8286568f9c16cdaf3e14429a7/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d80bf832ac7b1920ee29a426cdca335f96a2b5caa839811803e999b41ba9030d", size = 383881, upload-time = "2025-07-01T15:54:06.482Z" }, + { url = "https://files.pythonhosted.org/packages/05/1b/ef5fba4a8f81ce04c427bfd96223f92f05e6cd72291ce9d7523db3b03a6c/rpds_py-0.26.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0919f38f5542c0a87e7b4afcafab6fd2c15386632d249e9a087498571250abe3", size = 415822, upload-time = "2025-07-01T15:54:07.605Z" }, + { url = "https://files.pythonhosted.org/packages/16/80/5c54195aec456b292f7bd8aa61741c8232964063fd8a75fdde9c1e982328/rpds_py-0.26.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d422b945683e409000c888e384546dbab9009bb92f7c0b456e217988cf316107", size = 558347, upload-time = "2025-07-01T15:54:08.591Z" }, + { url = "https://files.pythonhosted.org/packages/f2/1c/1845c1b1fd6d827187c43afe1841d91678d7241cbdb5420a4c6de180a538/rpds_py-0.26.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:77a7711fa562ba2da1aa757e11024ad6d93bad6ad7ede5afb9af144623e5f76a", size = 587956, upload-time = "2025-07-01T15:54:09.963Z" }, + { url = "https://files.pythonhosted.org/packages/2e/ff/9e979329dd131aa73a438c077252ddabd7df6d1a7ad7b9aacf6261f10faa/rpds_py-0.26.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:238e8c8610cb7c29460e37184f6799547f7e09e6a9bdbdab4e8edb90986a2318", size = 554363, upload-time = "2025-07-01T15:54:11.073Z" }, + { url = "https://files.pythonhosted.org/packages/00/8b/d78cfe034b71ffbe72873a136e71acc7a831a03e37771cfe59f33f6de8a2/rpds_py-0.26.0-cp311-cp311-win32.whl", hash = "sha256:893b022bfbdf26d7bedb083efeea624e8550ca6eb98bf7fea30211ce95b9201a", size = 220123, upload-time = "2025-07-01T15:54:12.382Z" }, + { url = "https://files.pythonhosted.org/packages/94/c1/3c8c94c7dd3905dbfde768381ce98778500a80db9924731d87ddcdb117e9/rpds_py-0.26.0-cp311-cp311-win_amd64.whl", hash = "sha256:87a5531de9f71aceb8af041d72fc4cab4943648d91875ed56d2e629bef6d4c03", size = 231732, upload-time = "2025-07-01T15:54:13.434Z" }, + { url = "https://files.pythonhosted.org/packages/67/93/e936fbed1b734eabf36ccb5d93c6a2e9246fbb13c1da011624b7286fae3e/rpds_py-0.26.0-cp311-cp311-win_arm64.whl", hash = "sha256:de2713f48c1ad57f89ac25b3cb7daed2156d8e822cf0eca9b96a6f990718cc41", size = 221917, upload-time = "2025-07-01T15:54:14.559Z" }, + { url = "https://files.pythonhosted.org/packages/ea/86/90eb87c6f87085868bd077c7a9938006eb1ce19ed4d06944a90d3560fce2/rpds_py-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:894514d47e012e794f1350f076c427d2347ebf82f9b958d554d12819849a369d", size = 363933, upload-time = "2025-07-01T15:54:15.734Z" }, + { url = "https://files.pythonhosted.org/packages/63/78/4469f24d34636242c924626082b9586f064ada0b5dbb1e9d096ee7a8e0c6/rpds_py-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc921b96fa95a097add244da36a1d9e4f3039160d1d30f1b35837bf108c21136", size = 350447, upload-time = "2025-07-01T15:54:16.922Z" }, + { url = "https://files.pythonhosted.org/packages/ad/91/c448ed45efdfdade82348d5e7995e15612754826ea640afc20915119734f/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1157659470aa42a75448b6e943c895be8c70531c43cb78b9ba990778955582", size = 384711, upload-time = "2025-07-01T15:54:18.101Z" }, + { url = "https://files.pythonhosted.org/packages/ec/43/e5c86fef4be7f49828bdd4ecc8931f0287b1152c0bb0163049b3218740e7/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:521ccf56f45bb3a791182dc6b88ae5f8fa079dd705ee42138c76deb1238e554e", size = 400865, upload-time = "2025-07-01T15:54:19.295Z" }, + { url = "https://files.pythonhosted.org/packages/55/34/e00f726a4d44f22d5c5fe2e5ddd3ac3d7fd3f74a175607781fbdd06fe375/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9def736773fd56b305c0eef698be5192c77bfa30d55a0e5885f80126c4831a15", size = 517763, upload-time = "2025-07-01T15:54:20.858Z" }, + { url = "https://files.pythonhosted.org/packages/52/1c/52dc20c31b147af724b16104500fba13e60123ea0334beba7b40e33354b4/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdad4ea3b4513b475e027be79e5a0ceac8ee1c113a1a11e5edc3c30c29f964d8", size = 406651, upload-time = "2025-07-01T15:54:22.508Z" }, + { url = "https://files.pythonhosted.org/packages/2e/77/87d7bfabfc4e821caa35481a2ff6ae0b73e6a391bb6b343db2c91c2b9844/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82b165b07f416bdccf5c84546a484cc8f15137ca38325403864bfdf2b5b72f6a", size = 386079, upload-time = "2025-07-01T15:54:23.987Z" }, + { url = "https://files.pythonhosted.org/packages/e3/d4/7f2200c2d3ee145b65b3cddc4310d51f7da6a26634f3ac87125fd789152a/rpds_py-0.26.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d04cab0a54b9dba4d278fe955a1390da3cf71f57feb78ddc7cb67cbe0bd30323", size = 421379, upload-time = "2025-07-01T15:54:25.073Z" }, + { url = "https://files.pythonhosted.org/packages/ae/13/9fdd428b9c820869924ab62236b8688b122baa22d23efdd1c566938a39ba/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:79061ba1a11b6a12743a2b0f72a46aa2758613d454aa6ba4f5a265cc48850158", size = 562033, upload-time = "2025-07-01T15:54:26.225Z" }, + { url = "https://files.pythonhosted.org/packages/f3/e1/b69686c3bcbe775abac3a4c1c30a164a2076d28df7926041f6c0eb5e8d28/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f405c93675d8d4c5ac87364bb38d06c988e11028a64b52a47158a355079661f3", size = 591639, upload-time = "2025-07-01T15:54:27.424Z" }, + { url = "https://files.pythonhosted.org/packages/5c/c9/1e3d8c8863c84a90197ac577bbc3d796a92502124c27092413426f670990/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dafd4c44b74aa4bed4b250f1aed165b8ef5de743bcca3b88fc9619b6087093d2", size = 557105, upload-time = "2025-07-01T15:54:29.93Z" }, + { url = "https://files.pythonhosted.org/packages/9f/c5/90c569649057622959f6dcc40f7b516539608a414dfd54b8d77e3b201ac0/rpds_py-0.26.0-cp312-cp312-win32.whl", hash = "sha256:3da5852aad63fa0c6f836f3359647870e21ea96cf433eb393ffa45263a170d44", size = 223272, upload-time = "2025-07-01T15:54:31.128Z" }, + { url = "https://files.pythonhosted.org/packages/7d/16/19f5d9f2a556cfed454eebe4d354c38d51c20f3db69e7b4ce6cff904905d/rpds_py-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf47cfdabc2194a669dcf7a8dbba62e37a04c5041d2125fae0233b720da6f05c", size = 234995, upload-time = "2025-07-01T15:54:32.195Z" }, + { url = "https://files.pythonhosted.org/packages/83/f0/7935e40b529c0e752dfaa7880224771b51175fce08b41ab4a92eb2fbdc7f/rpds_py-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:20ab1ae4fa534f73647aad289003f1104092890849e0266271351922ed5574f8", size = 223198, upload-time = "2025-07-01T15:54:33.271Z" }, + { url = "https://files.pythonhosted.org/packages/6a/67/bb62d0109493b12b1c6ab00de7a5566aa84c0e44217c2d94bee1bd370da9/rpds_py-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:696764a5be111b036256c0b18cd29783fab22154690fc698062fc1b0084b511d", size = 363917, upload-time = "2025-07-01T15:54:34.755Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f3/34e6ae1925a5706c0f002a8d2d7f172373b855768149796af87bd65dcdb9/rpds_py-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e6c15d2080a63aaed876e228efe4f814bc7889c63b1e112ad46fdc8b368b9e1", size = 350073, upload-time = "2025-07-01T15:54:36.292Z" }, + { url = "https://files.pythonhosted.org/packages/75/83/1953a9d4f4e4de7fd0533733e041c28135f3c21485faaef56a8aadbd96b5/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390e3170babf42462739a93321e657444f0862c6d722a291accc46f9d21ed04e", size = 384214, upload-time = "2025-07-01T15:54:37.469Z" }, + { url = "https://files.pythonhosted.org/packages/48/0e/983ed1b792b3322ea1d065e67f4b230f3b96025f5ce3878cc40af09b7533/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7da84c2c74c0f5bc97d853d9e17bb83e2dcafcff0dc48286916001cc114379a1", size = 400113, upload-time = "2025-07-01T15:54:38.954Z" }, + { url = "https://files.pythonhosted.org/packages/69/7f/36c0925fff6f660a80be259c5b4f5e53a16851f946eb080351d057698528/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c5fe114a6dd480a510b6d3661d09d67d1622c4bf20660a474507aaee7eeeee9", size = 515189, upload-time = "2025-07-01T15:54:40.57Z" }, + { url = "https://files.pythonhosted.org/packages/13/45/cbf07fc03ba7a9b54662c9badb58294ecfb24f828b9732970bd1a431ed5c/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3100b3090269f3a7ea727b06a6080d4eb7439dca4c0e91a07c5d133bb1727ea7", size = 406998, upload-time = "2025-07-01T15:54:43.025Z" }, + { url = "https://files.pythonhosted.org/packages/6c/b0/8fa5e36e58657997873fd6a1cf621285ca822ca75b4b3434ead047daa307/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c03c9b0c64afd0320ae57de4c982801271c0c211aa2d37f3003ff5feb75bb04", size = 385903, upload-time = "2025-07-01T15:54:44.752Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f7/b25437772f9f57d7a9fbd73ed86d0dcd76b4c7c6998348c070d90f23e315/rpds_py-0.26.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5963b72ccd199ade6ee493723d18a3f21ba7d5b957017607f815788cef50eaf1", size = 419785, upload-time = "2025-07-01T15:54:46.043Z" }, + { url = "https://files.pythonhosted.org/packages/a7/6b/63ffa55743dfcb4baf2e9e77a0b11f7f97ed96a54558fcb5717a4b2cd732/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da4e873860ad5bab3291438525cae80169daecbfafe5657f7f5fb4d6b3f96b9", size = 561329, upload-time = "2025-07-01T15:54:47.64Z" }, + { url = "https://files.pythonhosted.org/packages/2f/07/1f4f5e2886c480a2346b1e6759c00278b8a69e697ae952d82ae2e6ee5db0/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5afaddaa8e8c7f1f7b4c5c725c0070b6eed0228f705b90a1732a48e84350f4e9", size = 590875, upload-time = "2025-07-01T15:54:48.9Z" }, + { url = "https://files.pythonhosted.org/packages/cc/bc/e6639f1b91c3a55f8c41b47d73e6307051b6e246254a827ede730624c0f8/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4916dc96489616a6f9667e7526af8fa693c0fdb4f3acb0e5d9f4400eb06a47ba", size = 556636, upload-time = "2025-07-01T15:54:50.619Z" }, + { url = "https://files.pythonhosted.org/packages/05/4c/b3917c45566f9f9a209d38d9b54a1833f2bb1032a3e04c66f75726f28876/rpds_py-0.26.0-cp313-cp313-win32.whl", hash = "sha256:2a343f91b17097c546b93f7999976fd6c9d5900617aa848c81d794e062ab302b", size = 222663, upload-time = "2025-07-01T15:54:52.023Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0b/0851bdd6025775aaa2365bb8de0697ee2558184c800bfef8d7aef5ccde58/rpds_py-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:0a0b60701f2300c81b2ac88a5fb893ccfa408e1c4a555a77f908a2596eb875a5", size = 234428, upload-time = "2025-07-01T15:54:53.692Z" }, + { url = "https://files.pythonhosted.org/packages/ed/e8/a47c64ed53149c75fb581e14a237b7b7cd18217e969c30d474d335105622/rpds_py-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:257d011919f133a4746958257f2c75238e3ff54255acd5e3e11f3ff41fd14256", size = 222571, upload-time = "2025-07-01T15:54:54.822Z" }, + { url = "https://files.pythonhosted.org/packages/89/bf/3d970ba2e2bcd17d2912cb42874107390f72873e38e79267224110de5e61/rpds_py-0.26.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:529c8156d7506fba5740e05da8795688f87119cce330c244519cf706a4a3d618", size = 360475, upload-time = "2025-07-01T15:54:56.228Z" }, + { url = "https://files.pythonhosted.org/packages/82/9f/283e7e2979fc4ec2d8ecee506d5a3675fce5ed9b4b7cb387ea5d37c2f18d/rpds_py-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f53ec51f9d24e9638a40cabb95078ade8c99251945dad8d57bf4aabe86ecee35", size = 346692, upload-time = "2025-07-01T15:54:58.561Z" }, + { url = "https://files.pythonhosted.org/packages/e3/03/7e50423c04d78daf391da3cc4330bdb97042fc192a58b186f2d5deb7befd/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab504c4d654e4a29558eaa5bb8cea5fdc1703ea60a8099ffd9c758472cf913f", size = 379415, upload-time = "2025-07-01T15:54:59.751Z" }, + { url = "https://files.pythonhosted.org/packages/57/00/d11ee60d4d3b16808432417951c63df803afb0e0fc672b5e8d07e9edaaae/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd0641abca296bc1a00183fe44f7fced8807ed49d501f188faa642d0e4975b83", size = 391783, upload-time = "2025-07-01T15:55:00.898Z" }, + { url = "https://files.pythonhosted.org/packages/08/b3/1069c394d9c0d6d23c5b522e1f6546b65793a22950f6e0210adcc6f97c3e/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b312fecc1d017b5327afa81d4da1480f51c68810963a7336d92203dbb3d4f1", size = 512844, upload-time = "2025-07-01T15:55:02.201Z" }, + { url = "https://files.pythonhosted.org/packages/08/3b/c4fbf0926800ed70b2c245ceca99c49f066456755f5d6eb8863c2c51e6d0/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c741107203954f6fc34d3066d213d0a0c40f7bb5aafd698fb39888af277c70d8", size = 402105, upload-time = "2025-07-01T15:55:03.698Z" }, + { url = "https://files.pythonhosted.org/packages/1c/b0/db69b52ca07413e568dae9dc674627a22297abb144c4d6022c6d78f1e5cc/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3e55a7db08dc9a6ed5fb7103019d2c1a38a349ac41901f9f66d7f95750942f", size = 383440, upload-time = "2025-07-01T15:55:05.398Z" }, + { url = "https://files.pythonhosted.org/packages/4c/e1/c65255ad5b63903e56b3bb3ff9dcc3f4f5c3badde5d08c741ee03903e951/rpds_py-0.26.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e851920caab2dbcae311fd28f4313c6953993893eb5c1bb367ec69d9a39e7ed", size = 412759, upload-time = "2025-07-01T15:55:08.316Z" }, + { url = "https://files.pythonhosted.org/packages/e4/22/bb731077872377a93c6e93b8a9487d0406c70208985831034ccdeed39c8e/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dfbf280da5f876d0b00c81f26bedce274e72a678c28845453885a9b3c22ae632", size = 556032, upload-time = "2025-07-01T15:55:09.52Z" }, + { url = "https://files.pythonhosted.org/packages/e0/8b/393322ce7bac5c4530fb96fc79cc9ea2f83e968ff5f6e873f905c493e1c4/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1cc81d14ddfa53d7f3906694d35d54d9d3f850ef8e4e99ee68bc0d1e5fed9a9c", size = 585416, upload-time = "2025-07-01T15:55:11.216Z" }, + { url = "https://files.pythonhosted.org/packages/49/ae/769dc372211835bf759319a7aae70525c6eb523e3371842c65b7ef41c9c6/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dca83c498b4650a91efcf7b88d669b170256bf8017a5db6f3e06c2bf031f57e0", size = 554049, upload-time = "2025-07-01T15:55:13.004Z" }, + { url = "https://files.pythonhosted.org/packages/6b/f9/4c43f9cc203d6ba44ce3146246cdc38619d92c7bd7bad4946a3491bd5b70/rpds_py-0.26.0-cp313-cp313t-win32.whl", hash = "sha256:4d11382bcaf12f80b51d790dee295c56a159633a8e81e6323b16e55d81ae37e9", size = 218428, upload-time = "2025-07-01T15:55:14.486Z" }, + { url = "https://files.pythonhosted.org/packages/7e/8b/9286b7e822036a4a977f2f1e851c7345c20528dbd56b687bb67ed68a8ede/rpds_py-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff110acded3c22c033e637dd8896e411c7d3a11289b2edf041f86663dbc791e9", size = 231524, upload-time = "2025-07-01T15:55:15.745Z" }, + { url = "https://files.pythonhosted.org/packages/55/07/029b7c45db910c74e182de626dfdae0ad489a949d84a468465cd0ca36355/rpds_py-0.26.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:da619979df60a940cd434084355c514c25cf8eb4cf9a508510682f6c851a4f7a", size = 364292, upload-time = "2025-07-01T15:55:17.001Z" }, + { url = "https://files.pythonhosted.org/packages/13/d1/9b3d3f986216b4d1f584878dca15ce4797aaf5d372d738974ba737bf68d6/rpds_py-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ea89a2458a1a75f87caabefe789c87539ea4e43b40f18cff526052e35bbb4fdf", size = 350334, upload-time = "2025-07-01T15:55:18.922Z" }, + { url = "https://files.pythonhosted.org/packages/18/98/16d5e7bc9ec715fa9668731d0cf97f6b032724e61696e2db3d47aeb89214/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feac1045b3327a45944e7dcbeb57530339f6b17baff154df51ef8b0da34c8c12", size = 384875, upload-time = "2025-07-01T15:55:20.399Z" }, + { url = "https://files.pythonhosted.org/packages/f9/13/aa5e2b1ec5ab0e86a5c464d53514c0467bec6ba2507027d35fc81818358e/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b818a592bd69bfe437ee8368603d4a2d928c34cffcdf77c2e761a759ffd17d20", size = 399993, upload-time = "2025-07-01T15:55:21.729Z" }, + { url = "https://files.pythonhosted.org/packages/17/03/8021810b0e97923abdbab6474c8b77c69bcb4b2c58330777df9ff69dc559/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a8b0dd8648709b62d9372fc00a57466f5fdeefed666afe3fea5a6c9539a0331", size = 516683, upload-time = "2025-07-01T15:55:22.918Z" }, + { url = "https://files.pythonhosted.org/packages/dc/b1/da8e61c87c2f3d836954239fdbbfb477bb7b54d74974d8f6fcb34342d166/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d3498ad0df07d81112aa6ec6c95a7e7b1ae00929fb73e7ebee0f3faaeabad2f", size = 408825, upload-time = "2025-07-01T15:55:24.207Z" }, + { url = "https://files.pythonhosted.org/packages/38/bc/1fc173edaaa0e52c94b02a655db20697cb5fa954ad5a8e15a2c784c5cbdd/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a4146ccb15be237fdef10f331c568e1b0e505f8c8c9ed5d67759dac58ac246", size = 387292, upload-time = "2025-07-01T15:55:25.554Z" }, + { url = "https://files.pythonhosted.org/packages/7c/eb/3a9bb4bd90867d21916f253caf4f0d0be7098671b6715ad1cead9fe7bab9/rpds_py-0.26.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9a63785467b2d73635957d32a4f6e73d5e4df497a16a6392fa066b753e87387", size = 420435, upload-time = "2025-07-01T15:55:27.798Z" }, + { url = "https://files.pythonhosted.org/packages/cd/16/e066dcdb56f5632713445271a3f8d3d0b426d51ae9c0cca387799df58b02/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:de4ed93a8c91debfd5a047be327b7cc8b0cc6afe32a716bbbc4aedca9e2a83af", size = 562410, upload-time = "2025-07-01T15:55:29.057Z" }, + { url = "https://files.pythonhosted.org/packages/60/22/ddbdec7eb82a0dc2e455be44c97c71c232983e21349836ce9f272e8a3c29/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:caf51943715b12af827696ec395bfa68f090a4c1a1d2509eb4e2cb69abbbdb33", size = 590724, upload-time = "2025-07-01T15:55:30.719Z" }, + { url = "https://files.pythonhosted.org/packages/2c/b4/95744085e65b7187d83f2fcb0bef70716a1ea0a9e5d8f7f39a86e5d83424/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4a59e5bc386de021f56337f757301b337d7ab58baa40174fb150accd480bc953", size = 558285, upload-time = "2025-07-01T15:55:31.981Z" }, + { url = "https://files.pythonhosted.org/packages/37/37/6309a75e464d1da2559446f9c811aa4d16343cebe3dbb73701e63f760caa/rpds_py-0.26.0-cp314-cp314-win32.whl", hash = "sha256:92c8db839367ef16a662478f0a2fe13e15f2227da3c1430a782ad0f6ee009ec9", size = 223459, upload-time = "2025-07-01T15:55:33.312Z" }, + { url = "https://files.pythonhosted.org/packages/d9/6f/8e9c11214c46098b1d1391b7e02b70bb689ab963db3b19540cba17315291/rpds_py-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:b0afb8cdd034150d4d9f53926226ed27ad15b7f465e93d7468caaf5eafae0d37", size = 236083, upload-time = "2025-07-01T15:55:34.933Z" }, + { url = "https://files.pythonhosted.org/packages/47/af/9c4638994dd623d51c39892edd9d08e8be8220a4b7e874fa02c2d6e91955/rpds_py-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:ca3f059f4ba485d90c8dc75cb5ca897e15325e4e609812ce57f896607c1c0867", size = 223291, upload-time = "2025-07-01T15:55:36.202Z" }, + { url = "https://files.pythonhosted.org/packages/4d/db/669a241144460474aab03e254326b32c42def83eb23458a10d163cb9b5ce/rpds_py-0.26.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:5afea17ab3a126006dc2f293b14ffc7ef3c85336cf451564a0515ed7648033da", size = 361445, upload-time = "2025-07-01T15:55:37.483Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2d/133f61cc5807c6c2fd086a46df0eb8f63a23f5df8306ff9f6d0fd168fecc/rpds_py-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:69f0c0a3df7fd3a7eec50a00396104bb9a843ea6d45fcc31c2d5243446ffd7a7", size = 347206, upload-time = "2025-07-01T15:55:38.828Z" }, + { url = "https://files.pythonhosted.org/packages/05/bf/0e8fb4c05f70273469eecf82f6ccf37248558526a45321644826555db31b/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:801a71f70f9813e82d2513c9a96532551fce1e278ec0c64610992c49c04c2dad", size = 380330, upload-time = "2025-07-01T15:55:40.175Z" }, + { url = "https://files.pythonhosted.org/packages/d4/a8/060d24185d8b24d3923322f8d0ede16df4ade226a74e747b8c7c978e3dd3/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df52098cde6d5e02fa75c1f6244f07971773adb4a26625edd5c18fee906fa84d", size = 392254, upload-time = "2025-07-01T15:55:42.015Z" }, + { url = "https://files.pythonhosted.org/packages/b9/7b/7c2e8a9ee3e6bc0bae26bf29f5219955ca2fbb761dca996a83f5d2f773fe/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bc596b30f86dc6f0929499c9e574601679d0341a0108c25b9b358a042f51bca", size = 516094, upload-time = "2025-07-01T15:55:43.603Z" }, + { url = "https://files.pythonhosted.org/packages/75/d6/f61cafbed8ba1499b9af9f1777a2a199cd888f74a96133d8833ce5eaa9c5/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dfbe56b299cf5875b68eb6f0ebaadc9cac520a1989cac0db0765abfb3709c19", size = 402889, upload-time = "2025-07-01T15:55:45.275Z" }, + { url = "https://files.pythonhosted.org/packages/92/19/c8ac0a8a8df2dd30cdec27f69298a5c13e9029500d6d76718130f5e5be10/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac64f4b2bdb4ea622175c9ab7cf09444e412e22c0e02e906978b3b488af5fde8", size = 384301, upload-time = "2025-07-01T15:55:47.098Z" }, + { url = "https://files.pythonhosted.org/packages/41/e1/6b1859898bc292a9ce5776016c7312b672da00e25cec74d7beced1027286/rpds_py-0.26.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:181ef9b6bbf9845a264f9aa45c31836e9f3c1f13be565d0d010e964c661d1e2b", size = 412891, upload-time = "2025-07-01T15:55:48.412Z" }, + { url = "https://files.pythonhosted.org/packages/ef/b9/ceb39af29913c07966a61367b3c08b4f71fad841e32c6b59a129d5974698/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:49028aa684c144ea502a8e847d23aed5e4c2ef7cadfa7d5eaafcb40864844b7a", size = 557044, upload-time = "2025-07-01T15:55:49.816Z" }, + { url = "https://files.pythonhosted.org/packages/2f/27/35637b98380731a521f8ec4f3fd94e477964f04f6b2f8f7af8a2d889a4af/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e5d524d68a474a9688336045bbf76cb0def88549c1b2ad9dbfec1fb7cfbe9170", size = 585774, upload-time = "2025-07-01T15:55:51.192Z" }, + { url = "https://files.pythonhosted.org/packages/52/d9/3f0f105420fecd18551b678c9a6ce60bd23986098b252a56d35781b3e7e9/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1851f429b822831bd2edcbe0cfd12ee9ea77868f8d3daf267b189371671c80e", size = 554886, upload-time = "2025-07-01T15:55:52.541Z" }, + { url = "https://files.pythonhosted.org/packages/6b/c5/347c056a90dc8dd9bc240a08c527315008e1b5042e7a4cf4ac027be9d38a/rpds_py-0.26.0-cp314-cp314t-win32.whl", hash = "sha256:7bdb17009696214c3b66bb3590c6d62e14ac5935e53e929bcdbc5a495987a84f", size = 219027, upload-time = "2025-07-01T15:55:53.874Z" }, + { url = "https://files.pythonhosted.org/packages/75/04/5302cea1aa26d886d34cadbf2dc77d90d7737e576c0065f357b96dc7a1a6/rpds_py-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f14440b9573a6f76b4ee4770c13f0b5921f71dde3b6fcb8dabbefd13b7fe05d7", size = 232821, upload-time = "2025-07-01T15:55:55.167Z" }, + { url = "https://files.pythonhosted.org/packages/51/f2/b5c85b758a00c513bb0389f8fc8e61eb5423050c91c958cdd21843faa3e6/rpds_py-0.26.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f61a9326f80ca59214d1cceb0a09bb2ece5b2563d4e0cd37bfd5515c28510674", size = 373505, upload-time = "2025-07-01T15:56:34.716Z" }, + { url = "https://files.pythonhosted.org/packages/23/e0/25db45e391251118e915e541995bb5f5ac5691a3b98fb233020ba53afc9b/rpds_py-0.26.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:183f857a53bcf4b1b42ef0f57ca553ab56bdd170e49d8091e96c51c3d69ca696", size = 359468, upload-time = "2025-07-01T15:56:36.219Z" }, + { url = "https://files.pythonhosted.org/packages/0b/73/dd5ee6075bb6491be3a646b301dfd814f9486d924137a5098e61f0487e16/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:941c1cfdf4799d623cf3aa1d326a6b4fdb7a5799ee2687f3516738216d2262fb", size = 382680, upload-time = "2025-07-01T15:56:37.644Z" }, + { url = "https://files.pythonhosted.org/packages/2f/10/84b522ff58763a5c443f5bcedc1820240e454ce4e620e88520f04589e2ea/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72a8d9564a717ee291f554eeb4bfeafe2309d5ec0aa6c475170bdab0f9ee8e88", size = 397035, upload-time = "2025-07-01T15:56:39.241Z" }, + { url = "https://files.pythonhosted.org/packages/06/ea/8667604229a10a520fcbf78b30ccc278977dcc0627beb7ea2c96b3becef0/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:511d15193cbe013619dd05414c35a7dedf2088fcee93c6bbb7c77859765bd4e8", size = 514922, upload-time = "2025-07-01T15:56:40.645Z" }, + { url = "https://files.pythonhosted.org/packages/24/e6/9ed5b625c0661c4882fc8cdf302bf8e96c73c40de99c31e0b95ed37d508c/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aea1f9741b603a8d8fedb0ed5502c2bc0accbc51f43e2ad1337fe7259c2b77a5", size = 402822, upload-time = "2025-07-01T15:56:42.137Z" }, + { url = "https://files.pythonhosted.org/packages/8a/58/212c7b6fd51946047fb45d3733da27e2fa8f7384a13457c874186af691b1/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4019a9d473c708cf2f16415688ef0b4639e07abaa569d72f74745bbeffafa2c7", size = 384336, upload-time = "2025-07-01T15:56:44.239Z" }, + { url = "https://files.pythonhosted.org/packages/aa/f5/a40ba78748ae8ebf4934d4b88e77b98497378bc2c24ba55ebe87a4e87057/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:093d63b4b0f52d98ebae33b8c50900d3d67e0666094b1be7a12fffd7f65de74b", size = 416871, upload-time = "2025-07-01T15:56:46.284Z" }, + { url = "https://files.pythonhosted.org/packages/d5/a6/33b1fc0c9f7dcfcfc4a4353daa6308b3ece22496ceece348b3e7a7559a09/rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2abe21d8ba64cded53a2a677e149ceb76dcf44284202d737178afe7ba540c1eb", size = 559439, upload-time = "2025-07-01T15:56:48.549Z" }, + { url = "https://files.pythonhosted.org/packages/71/2d/ceb3f9c12f8cfa56d34995097f6cd99da1325642c60d1b6680dd9df03ed8/rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:4feb7511c29f8442cbbc28149a92093d32e815a28aa2c50d333826ad2a20fdf0", size = 588380, upload-time = "2025-07-01T15:56:50.086Z" }, + { url = "https://files.pythonhosted.org/packages/c8/ed/9de62c2150ca8e2e5858acf3f4f4d0d180a38feef9fdab4078bea63d8dba/rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e99685fc95d386da368013e7fb4269dd39c30d99f812a8372d62f244f662709c", size = 555334, upload-time = "2025-07-01T15:56:51.703Z" }, +] + +[[package]] +name = "ruff" +version = "0.12.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/3d/d9a195676f25d00dbfcf3cf95fdd4c685c497fcfa7e862a44ac5e4e96480/ruff-0.12.2.tar.gz", hash = "sha256:d7b4f55cd6f325cb7621244f19c873c565a08aff5a4ba9c69aa7355f3f7afd3e", size = 4432239, upload-time = "2025-07-03T16:40:19.566Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/74/b6/2098d0126d2d3318fd5bec3ad40d06c25d377d95749f7a0c5af17129b3b1/ruff-0.12.2-py3-none-linux_armv6l.whl", hash = "sha256:093ea2b221df1d2b8e7ad92fc6ffdca40a2cb10d8564477a987b44fd4008a7be", size = 10369761, upload-time = "2025-07-03T16:39:38.847Z" }, + { url = "https://files.pythonhosted.org/packages/b1/4b/5da0142033dbe155dc598cfb99262d8ee2449d76920ea92c4eeb9547c208/ruff-0.12.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:09e4cf27cc10f96b1708100fa851e0daf21767e9709e1649175355280e0d950e", size = 11155659, upload-time = "2025-07-03T16:39:42.294Z" }, + { url = "https://files.pythonhosted.org/packages/3e/21/967b82550a503d7c5c5c127d11c935344b35e8c521f52915fc858fb3e473/ruff-0.12.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:8ae64755b22f4ff85e9c52d1f82644abd0b6b6b6deedceb74bd71f35c24044cc", size = 10537769, upload-time = "2025-07-03T16:39:44.75Z" }, + { url = "https://files.pythonhosted.org/packages/33/91/00cff7102e2ec71a4890fb7ba1803f2cdb122d82787c7d7cf8041fe8cbc1/ruff-0.12.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eb3a6b2db4d6e2c77e682f0b988d4d61aff06860158fdb413118ca133d57922", size = 10717602, upload-time = "2025-07-03T16:39:47.652Z" }, + { url = "https://files.pythonhosted.org/packages/9b/eb/928814daec4e1ba9115858adcda44a637fb9010618721937491e4e2283b8/ruff-0.12.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:73448de992d05517170fc37169cbca857dfeaeaa8c2b9be494d7bcb0d36c8f4b", size = 10198772, upload-time = "2025-07-03T16:39:49.641Z" }, + { url = "https://files.pythonhosted.org/packages/50/fa/f15089bc20c40f4f72334f9145dde55ab2b680e51afb3b55422effbf2fb6/ruff-0.12.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3b8b94317cbc2ae4a2771af641739f933934b03555e51515e6e021c64441532d", size = 11845173, upload-time = "2025-07-03T16:39:52.069Z" }, + { url = "https://files.pythonhosted.org/packages/43/9f/1f6f98f39f2b9302acc161a4a2187b1e3a97634fe918a8e731e591841cf4/ruff-0.12.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:45fc42c3bf1d30d2008023a0a9a0cfb06bf9835b147f11fe0679f21ae86d34b1", size = 12553002, upload-time = "2025-07-03T16:39:54.551Z" }, + { url = "https://files.pythonhosted.org/packages/d8/70/08991ac46e38ddd231c8f4fd05ef189b1b94be8883e8c0c146a025c20a19/ruff-0.12.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce48f675c394c37e958bf229fb5c1e843e20945a6d962cf3ea20b7a107dcd9f4", size = 12171330, upload-time = "2025-07-03T16:39:57.55Z" }, + { url = "https://files.pythonhosted.org/packages/88/a9/5a55266fec474acfd0a1c73285f19dd22461d95a538f29bba02edd07a5d9/ruff-0.12.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:793d8859445ea47591272021a81391350205a4af65a9392401f418a95dfb75c9", size = 11774717, upload-time = "2025-07-03T16:39:59.78Z" }, + { url = "https://files.pythonhosted.org/packages/87/e5/0c270e458fc73c46c0d0f7cf970bb14786e5fdb88c87b5e423a4bd65232b/ruff-0.12.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6932323db80484dda89153da3d8e58164d01d6da86857c79f1961934354992da", size = 11646659, upload-time = "2025-07-03T16:40:01.934Z" }, + { url = "https://files.pythonhosted.org/packages/b7/b6/45ab96070c9752af37f0be364d849ed70e9ccede07675b0ec4e3ef76b63b/ruff-0.12.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:6aa7e623a3a11538108f61e859ebf016c4f14a7e6e4eba1980190cacb57714ce", size = 10604012, upload-time = "2025-07-03T16:40:04.363Z" }, + { url = "https://files.pythonhosted.org/packages/86/91/26a6e6a424eb147cc7627eebae095cfa0b4b337a7c1c413c447c9ebb72fd/ruff-0.12.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:2a4a20aeed74671b2def096bdf2eac610c7d8ffcbf4fb0e627c06947a1d7078d", size = 10176799, upload-time = "2025-07-03T16:40:06.514Z" }, + { url = "https://files.pythonhosted.org/packages/f5/0c/9f344583465a61c8918a7cda604226e77b2c548daf8ef7c2bfccf2b37200/ruff-0.12.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:71a4c550195612f486c9d1f2b045a600aeba851b298c667807ae933478fcef04", size = 11241507, upload-time = "2025-07-03T16:40:08.708Z" }, + { url = "https://files.pythonhosted.org/packages/1c/b7/99c34ded8fb5f86c0280278fa89a0066c3760edc326e935ce0b1550d315d/ruff-0.12.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:4987b8f4ceadf597c927beee65a5eaf994c6e2b631df963f86d8ad1bdea99342", size = 11717609, upload-time = "2025-07-03T16:40:10.836Z" }, + { url = "https://files.pythonhosted.org/packages/51/de/8589fa724590faa057e5a6d171e7f2f6cffe3287406ef40e49c682c07d89/ruff-0.12.2-py3-none-win32.whl", hash = "sha256:369ffb69b70cd55b6c3fc453b9492d98aed98062db9fec828cdfd069555f5f1a", size = 10523823, upload-time = "2025-07-03T16:40:13.203Z" }, + { url = "https://files.pythonhosted.org/packages/94/47/8abf129102ae4c90cba0c2199a1a9b0fa896f6f806238d6f8c14448cc748/ruff-0.12.2-py3-none-win_amd64.whl", hash = "sha256:dca8a3b6d6dc9810ed8f328d406516bf4d660c00caeaef36eb831cf4871b0639", size = 11629831, upload-time = "2025-07-03T16:40:15.478Z" }, + { url = "https://files.pythonhosted.org/packages/e2/1f/72d2946e3cc7456bb837e88000eb3437e55f80db339c840c04015a11115d/ruff-0.12.2-py3-none-win_arm64.whl", hash = "sha256:48d6c6bfb4761df68bc05ae630e24f506755e702d4fb08f08460be778c7ccb12", size = 10735334, upload-time = "2025-07-03T16:40:17.677Z" }, +] + +[[package]] +name = "snowballstemmer" +version = "3.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/75/a7/9810d872919697c9d01295633f5d574fb416d47e535f258272ca1f01f447/snowballstemmer-3.0.1.tar.gz", hash = "sha256:6d5eeeec8e9f84d4d56b847692bacf79bc2c8e90c7f80ca4444ff8b6f2e52895", size = 105575, upload-time = "2025-05-09T16:34:51.843Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/78/3565d011c61f5a43488987ee32b6f3f656e7f107ac2782dd57bdd7d91d9a/snowballstemmer-3.0.1-py3-none-any.whl", hash = "sha256:6cd7b3897da8d6c9ffb968a6781fa6532dce9c3618a4b127d920dab764a19064", size = 103274, upload-time = "2025-05-09T16:34:50.371Z" }, +] + +[[package]] +name = "sphinx" +version = "8.2.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "alabaster" }, + { name = "babel" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "docutils" }, + { name = "imagesize" }, + { name = "jinja2" }, + { name = "packaging" }, + { name = "pygments" }, + { name = "requests" }, + { name = "roman-numerals-py" }, + { name = "snowballstemmer" }, + { name = "sphinxcontrib-applehelp" }, + { name = "sphinxcontrib-devhelp" }, + { name = "sphinxcontrib-htmlhelp" }, + { name = "sphinxcontrib-jsmath" }, + { name = "sphinxcontrib-qthelp" }, + { name = "sphinxcontrib-serializinghtml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/ad/4360e50ed56cb483667b8e6dadf2d3fda62359593faabbe749a27c4eaca6/sphinx-8.2.3.tar.gz", hash = "sha256:398ad29dee7f63a75888314e9424d40f52ce5a6a87ae88e7071e80af296ec348", size = 8321876, upload-time = "2025-03-02T22:31:59.658Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/53/136e9eca6e0b9dc0e1962e2c908fbea2e5ac000c2a2fbd9a35797958c48b/sphinx-8.2.3-py3-none-any.whl", hash = "sha256:4405915165f13521d875a8c29c8970800a0141c14cc5416a38feca4ea5d9b9c3", size = 3589741, upload-time = "2025-03-02T22:31:56.836Z" }, +] + +[[package]] +name = "sphinx-rtd-theme" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "docutils" }, + { name = "sphinx" }, + { name = "sphinxcontrib-jquery" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/91/44/c97faec644d29a5ceddd3020ae2edffa69e7d00054a8c7a6021e82f20335/sphinx_rtd_theme-3.0.2.tar.gz", hash = "sha256:b7457bc25dda723b20b086a670b9953c859eab60a2a03ee8eb2bb23e176e5f85", size = 7620463, upload-time = "2024-11-13T11:06:04.545Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/77/46e3bac77b82b4df5bb5b61f2de98637724f246b4966cfc34bc5895d852a/sphinx_rtd_theme-3.0.2-py2.py3-none-any.whl", hash = "sha256:422ccc750c3a3a311de4ae327e82affdaf59eb695ba4936538552f3b00f4ee13", size = 7655561, upload-time = "2024-11-13T11:06:02.094Z" }, +] + +[[package]] +name = "sphinxcontrib-applehelp" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/6e/b837e84a1a704953c62ef8776d45c3e8d759876b4a84fe14eba2859106fe/sphinxcontrib_applehelp-2.0.0.tar.gz", hash = "sha256:2f29ef331735ce958efa4734873f084941970894c6090408b079c61b2e1c06d1", size = 20053, upload-time = "2024-07-29T01:09:00.465Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl", hash = "sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5", size = 119300, upload-time = "2024-07-29T01:08:58.99Z" }, +] + +[[package]] +name = "sphinxcontrib-devhelp" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/d2/5beee64d3e4e747f316bae86b55943f51e82bb86ecd325883ef65741e7da/sphinxcontrib_devhelp-2.0.0.tar.gz", hash = "sha256:411f5d96d445d1d73bb5d52133377b4248ec79db5c793ce7dbe59e074b4dd1ad", size = 12967, upload-time = "2024-07-29T01:09:23.417Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl", hash = "sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2", size = 82530, upload-time = "2024-07-29T01:09:21.945Z" }, +] + +[[package]] +name = "sphinxcontrib-htmlhelp" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/93/983afd9aa001e5201eab16b5a444ed5b9b0a7a010541e0ddfbbfd0b2470c/sphinxcontrib_htmlhelp-2.1.0.tar.gz", hash = "sha256:c9e2916ace8aad64cc13a0d233ee22317f2b9025b9cf3295249fa985cc7082e9", size = 22617, upload-time = "2024-07-29T01:09:37.889Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl", hash = "sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8", size = 98705, upload-time = "2024-07-29T01:09:36.407Z" }, +] + +[[package]] +name = "sphinxcontrib-jquery" +version = "4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sphinx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/de/f3/aa67467e051df70a6330fe7770894b3e4f09436dea6881ae0b4f3d87cad8/sphinxcontrib-jquery-4.1.tar.gz", hash = "sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a", size = 122331, upload-time = "2023-03-14T15:01:01.944Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/85/749bd22d1a68db7291c89e2ebca53f4306c3f205853cf31e9de279034c3c/sphinxcontrib_jquery-4.1-py2.py3-none-any.whl", hash = "sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae", size = 121104, upload-time = "2023-03-14T15:01:00.356Z" }, +] + +[[package]] +name = "sphinxcontrib-jsmath" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/e8/9ed3830aeed71f17c026a07a5097edcf44b692850ef215b161b8ad875729/sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8", size = 5787, upload-time = "2019-01-21T16:10:16.347Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178", size = 5071, upload-time = "2019-01-21T16:10:14.333Z" }, +] + +[[package]] +name = "sphinxcontrib-qthelp" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/68/bc/9104308fc285eb3e0b31b67688235db556cd5b0ef31d96f30e45f2e51cae/sphinxcontrib_qthelp-2.0.0.tar.gz", hash = "sha256:4fe7d0ac8fc171045be623aba3e2a8f613f8682731f9153bb2e40ece16b9bbab", size = 17165, upload-time = "2024-07-29T01:09:56.435Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl", hash = "sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb", size = 88743, upload-time = "2024-07-29T01:09:54.885Z" }, +] + +[[package]] +name = "sphinxcontrib-serializinghtml" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3b/44/6716b257b0aa6bfd51a1b31665d1c205fb12cb5ad56de752dfa15657de2f/sphinxcontrib_serializinghtml-2.0.0.tar.gz", hash = "sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d", size = 16080, upload-time = "2024-07-29T01:10:09.332Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl", hash = "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331", size = 92072, upload-time = "2024-07-29T01:10:08.203Z" }, +] + +[[package]] +name = "tomli" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175, upload-time = "2024-11-27T22:38:36.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077, upload-time = "2024-11-27T22:37:54.956Z" }, + { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429, upload-time = "2024-11-27T22:37:56.698Z" }, + { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067, upload-time = "2024-11-27T22:37:57.63Z" }, + { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030, upload-time = "2024-11-27T22:37:59.344Z" }, + { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898, upload-time = "2024-11-27T22:38:00.429Z" }, + { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894, upload-time = "2024-11-27T22:38:02.094Z" }, + { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319, upload-time = "2024-11-27T22:38:03.206Z" }, + { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273, upload-time = "2024-11-27T22:38:04.217Z" }, + { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310, upload-time = "2024-11-27T22:38:05.908Z" }, + { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309, upload-time = "2024-11-27T22:38:06.812Z" }, + { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762, upload-time = "2024-11-27T22:38:07.731Z" }, + { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453, upload-time = "2024-11-27T22:38:09.384Z" }, + { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486, upload-time = "2024-11-27T22:38:10.329Z" }, + { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349, upload-time = "2024-11-27T22:38:11.443Z" }, + { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159, upload-time = "2024-11-27T22:38:13.099Z" }, + { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243, upload-time = "2024-11-27T22:38:14.766Z" }, + { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645, upload-time = "2024-11-27T22:38:15.843Z" }, + { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584, upload-time = "2024-11-27T22:38:17.645Z" }, + { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875, upload-time = "2024-11-27T22:38:19.159Z" }, + { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418, upload-time = "2024-11-27T22:38:20.064Z" }, + { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708, upload-time = "2024-11-27T22:38:21.659Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582, upload-time = "2024-11-27T22:38:22.693Z" }, + { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543, upload-time = "2024-11-27T22:38:24.367Z" }, + { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691, upload-time = "2024-11-27T22:38:26.081Z" }, + { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170, upload-time = "2024-11-27T22:38:27.921Z" }, + { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530, upload-time = "2024-11-27T22:38:29.591Z" }, + { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666, upload-time = "2024-11-27T22:38:30.639Z" }, + { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954, upload-time = "2024-11-27T22:38:31.702Z" }, + { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724, upload-time = "2024-11-27T22:38:32.837Z" }, + { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383, upload-time = "2024-11-27T22:38:34.455Z" }, + { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257, upload-time = "2024-11-27T22:38:35.385Z" }, +] + +[[package]] +name = "tox" +version = "4.27.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cachetools" }, + { name = "chardet" }, + { name = "colorama" }, + { name = "filelock" }, + { name = "packaging" }, + { name = "platformdirs" }, + { name = "pluggy" }, + { name = "pyproject-api" }, + { name = "virtualenv" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a5/b7/19c01717747076f63c54d871ada081cd711a7c9a7572f2225675c3858b94/tox-4.27.0.tar.gz", hash = "sha256:b97d5ecc0c0d5755bcc5348387fef793e1bfa68eb33746412f4c60881d7f5f57", size = 198351, upload-time = "2025-06-17T15:17:50.585Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/3a/30889167f41ecaffb957ec4409e1cbc1d5d558a5bbbdfb734a5b9911930f/tox-4.27.0-py3-none-any.whl", hash = "sha256:2b8a7fb986b82aa2c830c0615082a490d134e0626dbc9189986da46a313c4f20", size = 173441, upload-time = "2025-06-17T15:17:48.689Z" }, +] + +[[package]] +name = "types-pyyaml" +version = "6.0.12.20250516" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4e/22/59e2aeb48ceeee1f7cd4537db9568df80d62bdb44a7f9e743502ea8aab9c/types_pyyaml-6.0.12.20250516.tar.gz", hash = "sha256:9f21a70216fc0fa1b216a8176db5f9e0af6eb35d2f2932acb87689d03a5bf6ba", size = 17378, upload-time = "2025-05-16T03:08:04.897Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/99/5f/e0af6f7f6a260d9af67e1db4f54d732abad514252a7a378a6c4d17dd1036/types_pyyaml-6.0.12.20250516-py3-none-any.whl", hash = "sha256:8478208feaeb53a34cb5d970c56a7cd76b72659442e733e268a94dc72b2d0530", size = 20312, upload-time = "2025-05-16T03:08:04.019Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.14.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/5a/da40306b885cc8c09109dc2e1abd358d5684b1425678151cdaed4731c822/typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36", size = 107673, upload-time = "2025-07-04T13:28:34.16Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76", size = 43906, upload-time = "2025-07-04T13:28:32.743Z" }, +] + +[[package]] +name = "urllib3" +version = "2.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload-time = "2025-06-18T14:07:41.644Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" }, +] + +[[package]] +name = "virtualenv" +version = "20.31.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "distlib" }, + { name = "filelock" }, + { name = "platformdirs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/56/2c/444f465fb2c65f40c3a104fd0c495184c4f2336d65baf398e3c75d72ea94/virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af", size = 6076316, upload-time = "2025-05-08T17:58:23.811Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/40/b1c265d4b2b62b58576588510fc4d1fe60a86319c8de99fd8e9fec617d2c/virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11", size = 6057982, upload-time = "2025-05-08T17:58:21.15Z" }, +]