From 4bb914f8796fc854c1db29c25f657ec98387da33 Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Thu, 30 May 2024 18:11:02 +0200 Subject: [PATCH 01/17] DOCS: Rework example documentation --- .github/workflows/ci_cd.yml | 16 +- .pre-commit-config.yaml | 4 +- doc/source/_static/custom.css | 44 + .../thumbnails/101_getting_started.png | Bin 0 -> 31477 bytes doc/source/conf.py | 115 +- doc/source/getting_started.rst | 2 +- doc/source/index.rst | 10 +- examples/README.md | 1 - examples/index.rst | 16 + examples/simple_workflow.py | 54 +- poetry.lock | 2021 ++++++++++++++++- pyproject.toml | 13 +- 12 files changed, 2164 insertions(+), 132 deletions(-) create mode 100644 doc/source/_static/custom.css create mode 100644 doc/source/_static/thumbnails/101_getting_started.png delete mode 100644 examples/README.md create mode 100644 examples/index.rst diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index ec31535f..14fc2b5e 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -14,8 +14,9 @@ env: MEILISEARCH_API_KEY: ${{ secrets.MEILISEARCH_API_KEY }} MEILISEARCH_HOST_URL: ${{ vars.MEILISEARCH_HOST_URL }} MEILISEARCH_PUBLIC_API_KEY: ${{ secrets.MEILISEARCH_PUBLIC_API_KEY }} - # LIBRARY_NAME: 'ansys-conceptev-core' - # LIBRARY_NAMESPACE: 'ansys.conceptev.core' + ON_CI: True + CONCEPTEV_USERNAME: ${{ secrets.CONCEPTEV_USERNAME }} + CONCEPTEV_PASSWORD: ${{ secrets.CONCEPTEV_PASSWORD }} concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -132,7 +133,16 @@ jobs: runs-on: ubuntu-latest needs: [doc-style] steps: - - uses: ansys/actions/doc-build@v6 + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y pandoc + + - name: Verify Pandoc installation + run: pandoc --version + + - name: Build documentation + uses: ansys/actions/doc-build@v6 with: python-version: ${{ env.MAIN_PYTHON_VERSION }} check-links: false diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 82757bdb..4945f3fe 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -25,14 +25,14 @@ repos: rev: v2.2.6 hooks: - id: codespell - args: ["--ignore-words", "doc/styles/config/vocabularies/ANSYS/accept.txt", "-w"] + args: ["--ignore-words", "doc/styles/config/vocabularies/ANSYS/accept.txt", "-w", "--skip=poetry.lock"] - repo: https://github.com/pycqa/pydocstyle rev: 6.3.0 hooks: - id: pydocstyle additional_dependencies: [tomli] - exclude: "tests/" + exclude: "^(tests|examples)" - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.4.0 diff --git a/doc/source/_static/custom.css b/doc/source/_static/custom.css new file mode 100644 index 00000000..7df5978a --- /dev/null +++ b/doc/source/_static/custom.css @@ -0,0 +1,44 @@ +@import "../ansys-sphinx-theme.css"; + +/* Do not show number cells in notebooks */ +.nbinput .prompt, +.nboutput .prompt { + display: none !important; +} + +/* Ensure proper font size for notebook cells */ +.nboutput { + font-size: 1.1em; +} + +.nbinput { + font-size: 1em; +} + +/* Expand cell content output to the width of the notebook */ +div.nbinput.container div.input_area, div.nboutput.container div.output_area { + display: block; +} + +/* Center images in notebook output cells */ +.nboutput img { + display: block !important; + margin: 0 auto !important; +} + +.sd-card .sd-card-img-top { + height: 100px; + width: 100px; + margin-left: auto; + margin-right: auto; +} + +.sd-card .sd-card-header { + font-size: var(--pst-font-size-h5); + font-weight: bold; + padding: 1rem 0rem 1rem 0rem; +} + +.sd-card .sd-card-footer .sd-card-text { + max-width: 220px; +} \ No newline at end of file diff --git a/doc/source/_static/thumbnails/101_getting_started.png b/doc/source/_static/thumbnails/101_getting_started.png new file mode 100644 index 0000000000000000000000000000000000000000..5c81f7f63bcc93f4937776eeaa7601ecd1dc6591 GIT binary patch literal 31477 zcmeEt^;29=^d+vr-Q6t#f_rc$xVyVM1b4UKE(s372Djkufx%&L_W@@4?02j7f7sfY zdR4D`y50}d_w~8=oO5GTm1WRSh*6-RpwQ%GCBH*KLEn8`2}lSZGaztS*vBBm_S-jA zxo_VnUEG|lY#l72pcrQ|QdAh>)JR7}5mK~bg=Nv*`^GXc6ZNR2Y`rsv`zLD*?W`TR zSO{beev`g-JbAmg9-eIfPQR(#KiZcxD7*G=w&QIXuU-M)1zv*ByDwqSDec#cGznIf zHxm-1?~nK6jc((mVLiF$opp?ys6|qX&Ys%KC2D!GGKL}2fp-1PMG^$$f83mme2m(i zzZR-@(U7*{C!}Bfa;an?!0pin=x!4XXaD$`LF9$gNVU_@P{3r`99}E6f`5VMq_CE_ zZ@&Pq%w(kQV69zK=>MA_5e>{h{4h4li^xp-Y!GccmF^OQNAR`F{ z`R`lQU77YVgXkfrB!zeggMmUtuIboi31fkXxUBUBlQDjW_9Mc`u=8;bGhW0fpa(f|MP|M5SeY`UzQj;gFc zbrzY*lfFE$L|L}`zmPbQ|Bn4o_%RCnpOJuhvHC3XF9uu>3E6zpG(oC_|03oW7nWS* zw@m@6GNb=_K+S`%tP~I|kMs-mzmS zOD`SMETm)Zf2`cxDns91glRxj;it>UOav%?m{qN>*;SOF#0-B1b3bmDsbtaSTY0B~ zkRXZRuO-DE^+Crge5cZ+)-QUAeY-k&s2JxKZDS)|G~%z4F@Eg3fsfM+WiX6KIArw( zvUKWA{*O+_$7}ZZVi%55X-2oWxa>~RCB|CP)L1dnrH29n0%hH`z*eg9ozEx&bb>GM z2MHPe-RiP9vuB}BeP+tPmwTvFSLrzk+Z?g4G1&Lo%#)66HihIf# zIxqQs%L>=Gs;=-pcKu@EC77NpUsR;x(KX=qSO>hRg@D;Qo)2?@52SfTyvW3Oq9V(S zRl({N9`e>8-0Uxbk(0)sjSnZYX%;G!(tfE|j)gwo9u$S4r*_;P%KOW7=37&O4kx;= zi0f3Rz53InXB|Qd2=J~JMdTcVRbSdfXs-+Mu~9JOgowQ>vs=(mtVwYzsSIj#j~W1P zlhNBt40w0RTBP&E4WGs|24s z5FB)FbuX`TV)rK1kuo#MsM_G6PTXsr6j}-E^WL%IJDqkF?aIClfu_Gl8wtE_IZ(Q-WRy>RRT7D9UeY1ykh&QPo58lOe_}=zD&AisZFQ5w4LL= zvh0zn+Ua1PDH3-0fLQWb@A4e2zi&Y6Z(+SSL{24Gk&9oy#@y7EKW`4Jq z=0DA%Zs z_}RXkXRh(eTAwglr6ZG~8#_@r zv$&cWenElKrU2U5TVfPdr8&^wvKhb1A4TJRm3==SXQ3mWTBui+B~QMURh{J=YO~4R zOi%46JtT?0=%6#F^c$=>% zlDuc~lcv|CEXuK=-$jtN`*a4IB0#P7$Ot)ts>+KS{j*D#`ygJ}4HCPnq47&ID&7*FScB@|hU=C}om-oqZ_%IysCMV=BtG6S z4oH^Y_V{0BR2KNj8~N<`K3^yB9(A$scx5F`Jmvog^I0op@C}H8>jV3 zd6Sbg@bX3Nv21O}I(=X|+~DnV<>|vB5$m0YqC{f{wR#qxIEMI8ASB^=5q0tF+iL=q#094ilT8m?o<)tmh|9oqa{$jj0 z_p46In~Iw>ZT>YcS%%zK1HkLlVnx|<9yAwYhC5q*FU93{A7zcNM z`h@ofxvg_H zQss$j^w16C!u~RZWuaJmC&@`Qmx*tEZ=-`D^z`HPq&N7WB3cvklU1gDf0010+H@Qy zGGz|a=Oz2!D)ZoitPn$vZ7NPSI2-_?ujbnoL+orVb= z4zG?K>tp*L`Lp~09`>LVJRCvhkPf<1MD};7rLW#3te}*LvSta&zsj@sVn8xS@qS)} z9s>U9ddxly4b0tZs+E9Wu6?6Vr*)mmJPxarzu;J@QZjWE=neR=#aK^Ix`#P?jIo7t zX@%O=OOC_G*}@6TE|~M`uzzoLm5a&?_maSJkd$+W(Oqrc;^W=^in6s*KP7c_hqAgOLmDAOM z#*JAuH*2sfwOcxL_X$_Tcu?V-AmC~(ZVzpc*q+0^K;?ZHl<)%Cn(k-mPs}>Vqr| zCGhFrF);#M;@@~m>>6asgH2R>nqTbXY%IC!V3N#*>u*BO4+J<}Kgt5^5LvS;9SODw zD$wGMXHsy2myg3I5MP`&YDEpS^(q3iw^rjs=n+A9;T!DRa+V`}Ho0~EH?r#VYlR}L z>4<|QOrGuRUSkNA{9}FZmR0(#_!GXUU?ex*dw2Etu_(#TCd=D8uL9&ko0fQBLRUyZ z=dtszBdGyDds3;4h=o}}{E&sJRKULybEy&^Ddw9NvMTg2;Cz!K7`@{*vD0E}(`c%> z;qP3|!4PQ=l~$b!nbPIA8^}8tGKP~Rdcj;44S1H1wnCixF^PeLc7%%p&zEE<=)DG> z4ZeD#@X@!6!{=bsvY0E8YVx@@J3c#EtkuOLgvHGi7WTJT|G=@c#>dQW4OCBrYpB<4 zsS4uanQXg9T#`SL{An4(yT1n0A@-Ieqv~NmO@l{eM5wjj*E5zmO)m46VYvJ^AF&!v z^uH|Oe)jV2_S5yOVju)=_NsX~KXrr~ck5UDxtF7zucrnWH=Aq>bKx!pL<^Phl9HIT zn7a{zQ#q)kcU;K->}uTNAI7TK7{x|`WSx&pblYE>soCPBsMYT%73p!7%m-6t>GpZs zAbKL#*D9m#Gs4d5-7i6U0l25Xzi;zy#w9`*P&{8n9k>^Q{j&uxf7Hy{f2)0?NeKIZ zLLvt7D9mqgy{`ux6M6hTcYoJ)sT=aHNza>SL|8a_yQD4vr)@ke%hk*eGs2L(Zfrbw zVmSOvq$VrYWxJWw6}YKm9?hDdD^fpy{mvTwHswrKLo=AmjA5@0M#dvNbtPzX-5LY& znW?O3G1*$($xn~t=kvFV!3q{zg=O6|#V^9N#qB8FdY8-4I9?L^zlvb@*FE@3-lZ(7 z?p==co~&ZX{Tj)6^vU2zrk{K5ADy1ZA)AJ5ydt1F5bkYr#V7f*yzipZ@b{suz2I;JSQdZ+O)Sv064hzBs_u$X@$h8>D zQMEQdP^j`Ia@o101P>KF{@Q!sEuar_YM+X7Wz>u+aP-h(K;BJbr1iV_aTbl^W*fqc zGsCD3iJ>w(Td1!V3O6kbrCz?ed$14o#Cy^De4H~eIw`xgSuuE#jAygKWZ$a=t(@dR zxVr5w#WCQl_h*HhrTPHPX;H}eavlaMpwv7Txt`_g(n-ic+UfWcp^?z69uz8>7CO1@ zx40j|Tc>2wIe7-2H)L0tOwCoU-&~CmJsVYa!A4rTKo&OUBU^DU|M|{?oX*Bn&^x%~ zBHokrE0p1iLpuMamS>n13p`e|EcY@M*#ZXsai9J7^?NA1Ta8unv?1g$SUKM(jNo(` z@*v4u${H8$duzyeL*%8NqCXy7HR};#lHvPB&(_$4k2c`tYryp9=hhUHZ{iH*rF5aq zi87r{SLic&QSh%?3or+`Ijh%`Pb6D+($8(q@3~#4hL@cEA3)vUp67GQ-+{irE|PgW z=NT|u)WcBVBf%rux%P5i3lReI&3F0u+N8sJ1>fVy|4y$?j(YJJteywI3dB5iGagGO zIfYp!!gfy8A{q*)8D6GKzKF#rs-Fr8DYW?q z?)ep*G7uaC+fa&)<;yKS4;1jjf%9*3`x`G3-PS)-DRL(Gu2;${te8?e-riv<((WOc`ysCX0RLB+ z3VUyrk}Oi-xPibfKIpyF@pP;nKN$G@9?nwkPgf=`fO_KM=8__y2;T7&F$r;o1R8ZS z-~FIRzMb&BgXY4wniziiP;pU#oI%HI*UeJlP5ulRwXHw4Y0n@P>2LJJgYpqpUau=8 z)w-ym`M7d_=^8;&$Y?#3Yz@nrlj@<3M1F}tcg8K*yhtk$JZ^@|Aki{&u}+af-*T58!48KU`*k3jH?+ z?%tMEH&C*Zx8KV(Yvypt{&t;*)sJppBw&*V=$3F6mBfJs^@e0p^AT?>|E0f_zRTS4 z3C+}<`V1P&n&rr>)Ba2BcZrIVtUL))ncb<>hF<++Tl)GK3~6hT(3Qf5-4h>&o^+}w*VYUvP258~yU*5|N0bKkk^j)BY;tV` zo!#edUX!f$1{Vf^1*^+@gZo@Jxq3n! zFBDZraaz4%$yaV4^Jkl_YMw{E_EsvVqr(3EOf^co9DsFZGBLq1@gG5O>#{NJ8F-J* zONrs@zuMsoY5=0m4*Fp1>+=$QA42fj^n5gI#W0k$xcLapsi#TW6AE zJ$-#TeEUWTw5Z+ZomesGDpVnu#gE!^K$CMBy9bQk&e>uSHQ*@;eOhnjXonD4`>lMj zeWyKu9b;`wr>+`zVYuwKeL(%Ei+`-g?}n-I7{^}GWf%3_GZrBhsHObEwJ_Bb9xEd_ zSaL1wn8!joNqr{mKLv1`2X}x$Bj-H+CEcBrzrl+%)r70-n*q=iUO~GOi;g^lNUR>f z(u_161;w_g{ZnIbjz4ML;>69RcCBIa+@xzYEUw4=pUE8l2^6E?AfK&bU(%VxTuemI;b-!=)NzG=H=*%x?#We08jdk{gCKNjtM~?#TgICFj-}K zMa^QmdNu>P1YHSrr=!6m>CEp~1zYZN>70;e&MYazxBJxG*jn5rwVE@WY8m+ncgdf; zDdn8386)HBE{yxkD*@@^)&(o>F7T=!@!-F*)5tCS(2E2U6yqKQGDEe_VDQ9u+~xcgH%z|e~l6~|6!tNypw6XHRzn5QjP~<4Ai~Y-~cm|KPxlgn9 z6i3lOyg4#coR4pJK)%pZX$8a_J1S-y80oSrGU_kCEoo!uO_k6!G~5itp>6M4N(zO_ z2U;Og$3S51?q=yDTrIWFt*?%T|MjXjp4zkS9674?m<(r12w)oKM3;uwlV?dC z$_dqL)!U$Ya^r@7PXV8WA$iOp`kM9Nmbun^U4rZ^Q#(2yGn(l$e4K5aZyBL8HQGVn zb$>qKZNLb5zl5;6gQhZEBv0Fk4V;||&(^xvH=iQgSNVxj*zvS=`}7YglydD#qPYzM zM$McdPoc-s6oGeGxiVcXU#;*h6l#VGXk}?l#RbNo+k-r$O!}zj8MpM0KjWLqTURP( z&r>Z_D60$K&R3IrHevOH_A%luR2;GjDuYXh0e~Y5%Yd~BEALcK%PI(h&1c6 zgL5<79u2*Zv!Sd(LxH&L>^!y!f%oS(rVg7v3AcC0T>Iw1VBQ-Q)MKDp20^oWRw;|`ehBoLbEmWFR7dT6)jdal z8{x@zd{!JYU|VMI{bAhy$OzIk9R;N$83CI&^Z5(wUapYUZWz&3hd4!_lcqS!&`*~dgM_j|;@mzb z*-+4T5`Mq&Z`lqH9|^A@aD-$>S@aFfDq**gQV|2Z8hNuZ!O`siZwC?UJ=<#AG9rt6 z9M}q+0kXS5=7|lD`~twDy^dT-J4A=w!u~*7hNr40O14zJM)3psJ&)e6BMiHoeB69z z2#Ax8i{lvc*Lm*KDZaN|C<@)9@?32vF{Cfk-vXPQLG&ph`PjpKe8SXaFyw00LT4Ca zTwgq`(IFI@JgFOdxWW_^O3ZRm=Gd`HDXVv|QhFGwSl2SG7-8H!*MBJ{`nHqH*`}w4 zI;6MXUw1GtCIo6fqoaTF(;u@4{XlLQ|9u2L^Firzk=scwfZnly5rwAxP$sSFg}|bt(ZR1wcKQV zlCfmu)cme)Tq^xcjrZtv&tP{Pa*Z5W@B$Kr=sNYjdF9sOK@WI?Ud8>UJFLPSq6Qmh zMv|tk7;=IB53BmCUgw+UJE>#v@cG>E^nQ9!;;dd58%)MeBf)==jj!-q{X&l|O%wLk zjG|bC=Cr#c*ruLQ534_SK5CS1t>%;{yz*`31!D?B9G$9a`ozT?D=9o+uZEwpdSA*N zfUQeI8#&9afj$NtgM=xZA!DvD7$BM{WszqK{+$*E6Z5yx@Hh|8=@5C-LKCa@%#Z}; zBY%xjM9IqnmZRB?0-6m>H_%;f$4+3+kv@)4V!zg#^+QXWFqWN~cp=r!@ks0+j#(5^ zIAFQCm!A=&l*D4|-Kd%`k?!!2l~tH(?}`JJ!)^^d&UD^wgv|S+UhB@wV7F*WenX`% z`>eIRkNdfNmq2XoX?@WYDr2GZPrzm8R$5dLBpEOIXr-2Ww97_^XhP@s9h|bL>OHDjV@rDg$(>t2RYrqe})2M^1CB`kN8(YDX6l}Xpx3BNks_QwlBjJOK!*DjZl`1DT zm=n5z6*bMD$#(ydxpX2LdKH8fjiZMsa`lcOtDmc980()mh4)S$>GHyah{X6($}0pA zF9>?ET_}zWxm)&#gn!&s;K&(WvnuN~wjBdd8=N<|51fmpMy>CVhK~umi#l%x@PqR3 zvj2?vXmGH;rTnn@mv}mSAAKjv5y*V>3vTmw#rhq9^%6He?ht<8UKAr8s>W96cV?_| zR;z7PvyB+>59jM#Foz?+`QhdK_N3=V^F>kG zv^q+|&jT;>3Zj(i0s=L7eUg7JXuq=J-C@E7iuGP(?iVo7_CTZ(ejbucHrBa@xL>nj zGLV`e;`JrY(cL5(xijOY`B=1iO!_6rk`xGE&Yqi2t!%o=>+4sO2ESf6x$M9w;rQ%$ zt$tr1T4b&5dW!glwN}zwTwUKI9UM$}TXd{`_D`1bL(C{C>U$8qZYQ}uBhVQRfwKr{ zQkZCb1N$GSwS2GdybyQ>_d@)ib0^;a=KT9YOd5fKVmhc?*Ymk))xQ529H(Pyr^}5s z=;j7rbMA6rrUmVDjL4p`)@w9eqBM z_nCbEAFod%qL~L1ncz+SSbsHv_j>&|#lLB8Q!Oi_qLACHvzFX;{8Pb5%K}fs3v3jb zfqK#%MvW_x4}6?BSz>1^of{oJc6{S|ny?cuDlk5FkwDn<*VOZlxqB6V5OS@RL}-;; zL>Q!_MG;@IA5_p)$HN&gY}H zkvp*eQto@WW?h&O{8Aa5y0zhzdw2g}HM9X|$U*4ZMyJe(-Gj!tut!DylhaH6kzTjm zrnqHWY<9|TW;jWmt&wQ!D)AO%0V#A&DYg!#a!e743BN0dSmSY+Y0OH#t7eodE6~T zM1+0y!k6>}tbU%2V4Vf@;FwBbA<-r=qsgZPOX*eNMNv5O>g>JQ@{II_tt*7u=(>#M zL@x`0HX6{K>CKZNJMNvUCAIrt8iAA47!0&(K^Bx8Sxy@iizuY?_D{DF=U236EmY&o1~b6 z*p4=;XxWL*3%~?@-mhm#%4jpKZq#e()6qyYlEql^KiuL1gFBSGC>#2AdM3J~&`%-1 z%w_~Hg>o%1;+YOxXxIHEMKe^DwwPi43)&)G0=)6ty&um7TpJ3I`kSWSze8R~y-wm^Fvb@`F!xvV=sxA~>38|Kwr zt&b+)5B7%NY3;H`ez8_o0esE1@rS+V=FEL&JegNNn}VRzD4LI%*vN9QyuV=~IQmt# z65{eYeA%NTAh1zt_dF!z&R^=Si6|7wSAk&Za=P$AdTEvutVEEtszbo^#4sbCwkg(H zRp5)4o%@_d6&3NERm6e1trTx+9|iq+K@sdss<~J@hsZzEBJ#96>TUi&)XX`TRPf1O z&f)?O*{K{uepQA%$CmH$PUc|a^zeiKh`=k2a8$>!d)p4+9_ByM^l>9F>+WK`I=8W# z(C?E};J^o;qZGy>?>=6~{3FB6l4M!!=dTgW`NytDVYjo!k$*hv=x#7AKP?;wkIolV zM1eU+?n$*s_pnqni9XW&oP(lBXLivtkW&xB4z!F{<6Aq?WfbxUMXUYD`a0^ z#T5p}7z#_MJyZWuG?(*25nzF43ktp$p9IT2blot-jFETOQ2{f^3&@l)#x~5i>#ZFJ zTH4KBB2&9(R4BT&x*XXT=PQDP*zU^Js;e4qJbZ@@ph`}DDDpC2)af+1x327eLWSyz0#@Y;}gD)=TdGvHZsiy5tIr1IF(TS za6+uni~&iO1cHa9JE9tu;PE&_zob0Cea(Gs2YdcTUczi8Ool^ zLqI_hUj4W%3B>WrOUnEd&0;mL-(V8bi2)#c{F`*>GE5`L-c$W)zxhH5xQwllG)`^% zkt15{mPFv7NbyCdP2FW^0stkmconNbN5xU&c-jV3G8BP-)-kZg{f0(ojl(Y)^3K&c z)UMcdT#8UuiFk1IT2`yv>Y-$M--BOA+6;dB=F}*_7@-*h;&}6nFc3Tg52}q@rjQme z+Wvh(i6fw({&3CwzAv>NsOHUPG>6{>(ty2%ia9%tX}=VO)=AjfRw-i;c}5&rHI@gm zK<|^{S^Yt<5h0dumA40B+vb+z`;{qp%V>TLoau5|;%AeQeF5HJG23DBUk|OUyC1i& zI69K0Mt^%cXLRSIDwQ_O-(Nak2mWP#rI|weFbk0Oc2z~(LX!G8 z-f-9BZm=m>u&zNO?_U}e^~`H;-XD9n3Nl*HH+#DF*S0n{seU3^e{jH@!S4au(x+a* zKXmxpCH}>g3JhI_Ad;su6#BV6MUa>8cDY!LtgR=m6mR;DW9Np(HK%iTL?%G!xW*8SSz>*LoM z9~542IkF=ZEGV6GU+mQ&zQx_{iY^;eFE9V#W|w_W$Tqo(LNBZlV5c6P_`6(v*1nXh zZ@w(Mp8*g2A1_wa4Jmp^;z4bM2?yhd_yY9GFTj_ru|w;Exz_{zV`8~D24rkpkMHU= z@h-8NG}fDkh~PUy7P#&k^pc1mH$km6STKL>KBMZh|3D(8zeZ70V>$mag zB6&M&o>?}WzG(y1x+k)PBX{68^&}6-|K++C_J0_i;@vXnDe`~P^5(f}>+LlTx=Ab4 zVS(B`J!FwN(gEzD(7EztZWNSwc`9Xa%?PPm&15@qjRh`9R1pXoxRg0d$xi$Y+{kI zbC^?(9M6w~S*0Dn>oes{HCbj;E3x|dC3Hsc@q8Iz>ijf_gU@GN`|x@;rUwJi(&hc4QR%DFT3<7OMEED^GTG2R`()UnK6Ul>+ai{0YmdDeNvp3i%NyQ&8D`qW(yl`z6g9nl60twj37z%B;WB9|I}qt)C`59hPY5sKiF zSH9oDn0h~A(f6U>OCWaz{uhmO4}*H%wFEZQ-fYkZLuBtIy`(|;!Trx46%F-$QPUkO zf#}V#$@}uVIlS9YjsGM78Y3_)=ou z?2$MR8Li8NB7Qgw84X-PC^Y{2G78GL1(?5=m$i=1&bS)~`dZ>RdRDDW1^1JOy;v*G zYJ6si#>E0WV&=ww?o1Jw8w<$~6A#j>j5lEz<(`#2S2Qmd0woxcO<|t>1{Hn6M$CXp!S1fT) zB8U;2HP`Zsba{J;3b09#)HPc56Y&7Q!r!t6mr!SsOz4?pNO-abmkbbQyoZQCPkU=k z@N|j(fWv+jLdyPWlO190do9F0?$qVhQs1Ux_3PkvOeN_1f0o97f&l2D=FH~Ce3yZ1 zw;QI)pBYXt=Z+lk)lhxMh!UuxFE3yRw`}mGF~^K3q)QW@8QLsSEB496;QcCUOTpW_ zEfOpBr)R^Zs@+<96eBq1Hu4tGq|Qf-^I%;} zI9GM^91JN^qj>+ZQ_HuaKW1jbSof&CU*g@(a;pd!9InKtRCxhXwS%gz{yCetj2;R% zAX!|oZ&VqQ%I^JV%@4`sY7kHo^F-$56Mh#8Yf&_Mud_w$FX3_o)5Lr5wVM_I_huuw_jMkhuPL=Ex+lH z7%iF&sXTfO3)xKrFaLEb)V^(ve(=Z+tRcD%0319d+>2~Jf;e9E1^d5x)k2Yl2IR$aUSm|z`MhQ3swd=o><2ARV_-$#$L?E_cF0}t?^>K#w2-}e^yl{-L zTNn0VuRRWlG2~Rf&9KfoZ6q!NSbR^4@sL|7F~9#iGkdEi1o@mua~#t_APlTCvgqU4 zdN!GaLtr&i4(FN?Sa4iyFx(7v&;30NbZ1qIabe?%9^(l1Z9ZFV9E^zQb3lIega~Ha zd{|E5`dKV$CS3;-)j*gxtq(l>XAOgs%#eR8JyvgrHbIDtgC@mAFqrnk=F)h(S?)&M zR|TgFGko6?g?5qHs15sL4lm63IycCiQ`8|>Kooa)_%}3BK!44>nwCJ%p~E=BCV#J_ zk?#SX?{)}y%9tC}Dd%8dIr=y-_6NK##hd%nA3dm^4@9c#_w-#~1|F_G>)vNSu8`u= zK^sMPj+1SG<$Jk|^AT4QIHI$R4xpW+W)EzxI=^nh)I&@4W47QI6x-_858$4Dk9K?G zIde&0Nhkq-$4-$Pfr%k?$=kf+_d~kDOdJe~FZ}V-oXq-!d`QZBk9_sZm6G@FsG{fm zL+3RTsQXPQTOjavMe*NdL4q$T$L|hNj&<$Rd)x&`qJ?2mJ>?g-C)Mi*iGmk|b=$jq zI%gMfabf(NJ7S5HWxm%a__zg(KOBbY@P!yLsTdm^{?js^`!Rw{oSOyS+xMa<=$b>v zy9o!Gp$eduV#Cn&Xh#ZNx-?laDUhtySe2tQS%j1EkiZ~{%eX%-{!%|MybQ_`x;dhGP`*`H;a_UC ztdYtC>9#XYcDXfrRT(#1O{Ma7A1iS>3Tze~#M)_760qaFoz4$6TxwDMhEXo6;|*7z%gbR zAq&n!+b71t*dAf?_Qw-TdJVE&RFL4LOkgT$BVnTfvGIRI5>+(XAlmWcP^5;t2C4`hf8 zPsh621@`2+gW8C%OxNL8o^|p9F-B0E8YeO14dxA85bsk0wejnRMR$MfBT!NXM9~D& z7z`xG;Aov&8E8o!!OM^bkR3P(`sXQUi6i?Z)yW-2Cb=?9cM?8x9r6M{Y2@Lp@9p7) znhZJJrO$}qezoyiY`4p9=hj;tsoN-(o@z&h#nwMf=g47Fm_j@)HgO%s_-j4QGQ>^L z1#WSGOQvDx-%d^V+uZu?>0aMUQE717|7HR0+7n{!CITBY}nqjGLf;f*&3z zOZ3mZgb zxzbx0j$+N+TS5s~$aYTceTq{!XzG0?c^+aAp)!8I=^gi6F=pTedZY!4UiC!~6RarO zgqG_-|2E+kq!0WO;+}gF_R{^~kj&lcHkXewX4i`LCOg4=6oow7KEFTqIA>e|yekEx4VzU6^>lg9ROj_|(6B;Qm28ZvmBIzTxKd%PuM<9Ld`} zlMZMMINy8AgpAR}obn`s{O#yIhe{*5G8m#DJ@}zcN%7~QC@3&f6S7CkY<~yvB*)8f z@@Pvepf3?mIV2=I7wZqS^O)H1cs=2I~RpV<1ljZr1Gu`Ob;x3b+;rI@< z?9v`+_r7MFZL}<0)YCUl-~@Fw?aI)jQ%xCkdE%hy;4o4(q5S6#9TR;W6dlFrfxtQ| zps7Og-@bGO{cBp-f4hYIP%MmmADYw2R;5+whaomqWBCxOn?0k6Bw^qFxF1e7f<|y+ z!gcYgKK+!fek2r%6fsXPYv6P2tUyI!eKK86B)A8ZxcWK_nm;Ihk*-=_pJy$<3Hvjq zOk>a^DxT;#cwkyQQLccIRrq#heUr07>I6;}$uwFk5On^;U0!kkb2~-jSer5Mx={Y! zpZdsxKzX~G3aC)2Ik{`^ zNcqthA5hM~Ns^dkGjFz?BOj>M02p~+2YMMhgqY-8){9Wh_`QCZ@MS(chY;3}0?_kX z)rEccP1F{__O=6;`0VbgyW+_XKSsI$Zft)$v?MM zW+@pl=w`1__Cs!-N(Y5q)ii~f3(Mnq2)#dkG|p@ykY#=)oUSAlkJ>7Iy<9O zmc8T>&2rhAn8!cKV$@K>>C4$qf#X}8_B`gt1~uY%7;=d}*6U?GISFdaY91kAlg$$t zvZ`YUYL~=qQNO4>+S1JlEu%JpD>L92J1S@pCc!U4q^+GR7dmY~0*`B<@xG+N*(luYa}=cEFGj@mzDt-x*c}wwGq(5uqY=ilGX$ zOJ>w%qHZJ}<-1{X9hlxVNiM4h1WXrqS96w;L2d6>8`?Q9PwT4NeLJ1Thdb$w)73O% zlH-6+?+?xpEkDgwmSMb2##Z3)PV-0erSDNOVr_EURD0{j>B42h9p$oqn^VR|^{Ddj zc)@$RaY2$v{}e>%hcYc*KIUC2L^c*r#C7m`JJSZn&?dl)2=EnbVPn`WEBq%H;r|jqPJtWQ-g6C1*lP5vT&f)xxtZvQ>J`%hX-MM-Rp}qpy(x| zgTzGI+choaenP(yo$v= zVlmni6cZhRBXB)_Z-e(9tR&Be&iG+lGG+NO0)WSK7ivqij%#yVw_4wzk#Dv8RG;Ze z(akM#tK{4Sdi}yP;K{W36YG(Srjh)J;Sz7HS#G{tpEie7Lrue8GXnAW0<}Vc|1kuy zm2@XyyOV62?W+)9z@mzfH@V7)g&4r%-z$xzz@e>K$)&;Il`>f!BVU89B&Jkfal^E0 zFq)zCebCNQkI#2l99rFgJE-dTCFrMw5kc$8pH$j)dUS7ZuzHO}q>3Ish;ni|JEe6d z*WU}9D)}sNE56Fq6U~f#)8Obl<0K&1(uDp*$JZ5j{?SL4783IQ}s#Nh+&dFDJE|1ZDU3#$des! z(c*&^XEh*Fw?fuZd98{!PoF)D9UzFfmSZTeP`aWop}{Q*Q2a@w)^Yx@e(((X8&t~- zxAXYXr6crmR7#IYh#3tI=i8jm@UialCRw50&* zF@BUG;h;pSOoDe{6N@;!yS~qktiQTiRxiOLZ+wn2C@@Eky*_v zK~4|I*-Lw9qJ?DY#U|XZG;W*mGhy%cojEMNO2;eA&WJ+o3#l_fKS*#q4{0d7!E0To zRcY6$MmZ_<3xAe3&0FGoGBx=UNjo+Ojp3UY#SMz&emr;-fIgsry+%M<9C88#1EtrN zZonOMSHVT_)Exe1BQfAW9s5yzy2%?l6eadtSXg;k$3 z)8kssh$-x6gceIE2=$7)?z#nW3^+MC4fiK$9aGCU>$3A_N18604)=~Jb88|OpzF(Yh5@ZF$>)a4| zjH|;~NwL*n`wu4O;RUZOL2+{r7yY%#eRke>ww*yv5w0stP0;HSwtqt?j=XHfSCJ9w z0>2>}Uit>EZ7eWA7OIl=GrcAT{G&tQU^1dXIlCl<#e5GtN`^=ECFBRyW7<$91%t&TAM}bzk+6h8C>xBEH=v^Za3Et3f68XfxNBX)1d0ki`a`9M9028I(`Yxjum1s1~`3yLg{L^*5htZ0ute2eICJUu&UvQ7l>w!V%}gL(IB zWhgh8XlVM0oI6cCr|n9BY5+S@*O^yp_Fv9RG+jd0_Zoybi#D4rT#~ed{1^;2hRHRk z@*OuvVi>a(irl+xuvl0wW8XSMU}(>VImf4dXN}JN0sH;7C1d7e2Hjr&FP~uK)T1cQ z%TI1sOE%yNcO4RVNB^xLv_LlAZ!>qbq|O5LTldxt6WRg&6i??z7k~oWNvieAHb$;t zqCjb83p38nUz3ArT;wUuks)rD#AAQo8>*OsT-5bB~pQx!yjvM zSp(YqC8)q3(;$p6K-7?~@Q%RYnCWtWqjQ?Ajs`_F&1jqp``&Vq7OAv=%i zIYoAIXuN6F(k8y`^$}uZN@@KhukZ`2P2s$cp_7VSoD*lCWZhK9CZu7AX%LUb!FZBs zv|{M6p$CB^LgDd%=f`o}T;@J0?|G~!%U%NIBBmbz5Bixvj>fefN{>;!86);X8_%6nUU>8?4x0 z4et5UDNr#E&YR`rF}bM ztDeoK)`hAW`GCXcJ_>o1qw@kWt#Vep4#NIMkh1VNIWgHA@-p<}BOm6*)YmT02WGC@ z#h==E5JbOoZBDuvOl`O_G5%&LcaJQk9Q;^EbvmWbfwPd`^~O9}q>nQ-r;oE4qd`_T za({TnE|46hwrlD!mw2YAmG%iL8)~py>r|rVLz4*he~htw_Po%tel$FxK8jxa*!Yfr8aek{g-{fULuR`Euw6?3ohb04hq z-(RjtChO9YA?SGegC%;-PEI4bFY~%7uBq8389HA#1^()9nI==O$DStmcHojFtkRd* z3d5|hu@&{9Se&UlEe7)GAphom*>8!-jkM??qG!`fNfV1&$UH&?yVYL_nx(afqPdh3 z{8|WVHFm~hdJG`bc;#WBCUHQ1#&EjzBCT>8x7e|=@hGcrFc%}4d=+-Bp~dHeDhXvG zn6&g3w{Cl3??Bdp{2~j)7fVf+t|KAJM^WW3+MVfYR^FRTD>8`W*HbfHp)pV~x=e@) z7#Z*BA@X=eH2G^p>lzZ|7UH83uXLKKegy0F5{9f}IUCv7)aI+<1dGX%8+rfpn{Mug zPF$pl&18+yQpSJ@d#=!vOPOVz@i0hJ%Lm7{H(sxbiz|xDz1tI>9SMQQ7{qQz zSA7G8tW7CIz&J|LqTL=FhU9UE0qA0t+u$d%{F(iO7x3@3Q2X|4nEjq*V^=dUGkuVnyT>u8egj>4HI>1^V>~t0YhtW>_5h1n;i~{dsa={Z&oPayl0LG&o?RL zKgkXGp2Fsl7*Z3`iWzNPX~)xQ_)Yv^q2CP47s*F{NbS*F=`&b_^xLuNG9N&|#4KXY zQ{hvs2?neHV!W!XqZ{YsLP&2*D#B}^bPDneuC*$@aLP(c(PGY@xsT^0^Ob^`Z&2W5 z)e!iYWzZT_TpoxkWgNp6-PyLH#4eNrleY9&69K=EvRQ(rH7;%1*_SO|T{I!XZ3s)9sK36{;e z&f->v*E`9Xu^T2!8d`0EUG(+i5XO|NfLno4ZAf$G=TSUDn>@|LceI`HsABkLvWe|CztC6?Mdo3&=|ez=qIQUbb46Zw#80k$6MZ|5w78|kC|Yy^?59`@Hv zgG1OR?bD}fyk92y>dEij;2+*q@PC5j1QEm{;u6%cVha_n{9;7|7SGXVTAg;w_rE8! z9G>nm{8bI}x>dtQQ;${Zr`&D-#7MMi3?E^$-Df}q!mkc~<->Bwtx6l|5XVW-wMe+%%iUeS@n12q@=j6)PzEUn0360QWDc?BZw9flu9&|jh^zrzM_U_ zP{P=dwf_>KN;~naqWjxQv|ZbWH+-GKvU9)CDYrMqB^Y(Zp7@I}AXo0?4{Ga)0C5qV z@oe|H{pfhD2_VnQhF$8g#UOM*zbS-X3PVwZeI~b~jpBLb^zc}k+RVmC-VRkO`Bm)V zs1q}{z$yTt= zD=wUlh{*bkUd^(GBX~f*lqcnujS4=};h171F}}9}?RK`@z@N)i!PqDxya2XRwV_Ea zW^Aw+=v}=bjL|qQ8%{~QFV{-3y*%%a{c7JY{4}fJK>QbFe})6fcT8DNZu^-ORwq{M z&1S2DL>0zZ1Q~rSCqV?x#p#X5_2td%@8Vwy5n54Ig$P&4F8C&8C_8l#NQ1e`MKRPH z)S1fC@JlOM?W3+I!6Ux#&fMs6qV+N}N)6B~FM=__p>22H-PfbXLMN8k2}~6`j1LvL zUJ#4YvcFnl7k~NmUaiw%P_AY7D~IOS2&ISBYg0i(Nh!b&&Fo#Z`?}*^n&HLYer8tI zNRq&g+65bHfy4Yb!{Jymux@IZ(G85bFO}+@6i~vBuMx<6mi$hlUu79!eW1`#Vp6PJ zCXpkr{4o|}6g-}os4)njtW#bJ7}Ot7rz!O}lfLSapx0T>Tvobh?+kFW`q!&GMiVb+ z`($_^q)B)VMRZe)0|JF;cm2>E%xccI*4CXo!k1!<*lqX`eJ6Z;eEZjj{S`_Vv}tj@ z5Z?mvZ+ykz3j!&iVC(hLBum7JE~etV-D;q6rCwbc@6Og?p5M=5QS&L5gkO zl(LmO8zqmJRRSwYhN?n?@3lzcDNf9Wj5QSe2_|f|G+1t=mS{asGAP(SvvpH5^ z>be-f?WiE8V`|52&LoNhOvum_ZO&<~yv>qy+)ME455C=z!AeT<8U6X_zcgqElz1Z= zCKw2BpDISE`8GkRy=K#VN(^mf04?UzZ;KJ6yZ&T& z++drwYiCROd5%Y*0*MD#2B02st8+LVdRJ%#fL7J3$UnZvo*pE$uuAyh`8Uowt@ROS zIMw*bXVoKb<7mFjNOw|4iee4x^Vjzg9dZoXPvYSZ5WgI z0G3)qJj~7BEJbN09_cp?uJX6@hfP=k)A6Rp3aIAhZ(rJX zKO0yN=fW-t()dW?wtjMqJ8?MN(_BA&lHB*15;$!S8ItEEo-UCY+o~{6#+I{^{hDQ| z_G>jdG!~-!8!a98IQM$(Fo6 zp7ygV4yqbh2tK;t3-KI>%NQqX3yZY+A1TCH_d66ud*vyrL?SMcXm=w_Rugvom6QC2 zXX|f=KfH-~bk{1M>X3$HX_&45ZL)7DNWAWjx0(};3VoG&jsbZ~Uvp8 zs&4K}R+HYSA6Xv9qF$hj^VBIq2igfsEe$Nl^3{a}z4J69XUQe-#}khgGP{Dpk% zl;(QfN0)5uSO#~;`gA4@z9eb^R(g2$2Sk8pLnj$aYWwSficnB_y>Bvd3HNb4-6Vhh zD8U-ffi!Vgm|70@7Y5I})YTi@L=w6``rmGoso4wY^9QpxxI%htx9CHh@$*9jbomaZ zNTyv*J&Grg36ZuQ?pG|I?okPG(C@gFVz60^M*tL>B3T+ML6mh+&7$Bdw09nx2?T6q z|F7}0p2?R8&TpyC!XnDI>mK30$VW3;s@?qwuf*3qSM>hQAFG?5|LV~`kREqJnF=ll9+Sw z8CW0wpnZoM%1_*nlM2sn{3+RAFExZ#Yqj6^gu5M7*6i7IM9rE^!~*09nZ1b&3j+%} z9;Y#xbKI(T1bCsNCrukffGDuB662F1_P@|ZB(`1ck0&X~@h`3OWv=;XCJ`(0iTQ>@ zyPiTh>{i&gl{Fx-B8C0p#&G)ViMvYC!N5-x(_=M*BWFsKzhYs(b&8{%R2A9^syhI8 zvsP_UIgqknG4`~dRKBg!Jhq>{OV>pC!?5C;`lsasD_&i9pMr(XAX|=Nuv)3XvW~9$ zn(%CQClwo->ncx$qges*m#EP~*){vO_jfA?ci)NSSJR+@B70lVLbHrkv-3Nh(Rb@y zQ#aFI>sr^a{%C*=47} zf6+NHwZ~8#c~1lRbw8KMG}WhO%PbJD9kMl0BeJFC2i@~5#mDEBQT7T)FZlAa;C9BR&cOqaW5;$wW zI<_kc&*u1`L`)eyv?(Wbyh0iChrnasZBeJ&4+7{R-o$E}ahre978xKRu%-NB{K=@L zu1JTEsxsPcwA=$)mYqK_wPqkgC%o5w=c*FvlCZhJVxQ}GS3u}Cr|^%VeZ-eRrtk4V zfg}%!0jl=Pg-)w7@*k~^UR>*Vp_{ijI%11V7)SQx%ftOu|Gy}fmLl5F?H*>`~E zScfu*flmuGA6rSLdT%ZiDJE|!{<`@OK@%8Qnu!7MG{l)G(N0YuKrgG7TiRb^! z)DvO_8$^A}#cpq^(miun6z}Yd4ZMGZ)+r(TQ1Bl9F zMats%gZ9~s#U-QHqa)f)GUgaoK;#dr*oB7xXs_(94RTW8sd5&hP9yH(!FtSo#8#l( z4)o}AGEIOLA(nfnGw*_tT?`u2=M`2>^MsL-Dk44tk)o#&9WFwlrnxt}BSP@>7rz{l zQ+i+5#UAa%{iuPmuQ=F{BQv7RtoC+JO1kdG*`*LzYfm?#d$*wD5J9?~OgeO8!A-6~ z_S=u(!!>N$_XA`%(;;JmvIdcNm1jsYyu`n)^3CO^N&&ES-NY}AigA?ow{0^``Q5W|Mp-tyD=jN8P#Klvr=uuyXf#8ypm{-kzO`;%D`r zesTS{A&xfpfnljOZmM$?=%-&^XJs}19J)u7Zc`vP%=K$4>RRS&yB%uky0U7y0c)<^ zg7UTmS2vud+YEP&XbLQ-3EqerzLn(OHW5B0Yx%r5u}=*rBo_Rnp&1&>oG@dK1X9xxDhgijWJ6Bxu`lLA)wvojjBmi!8MD2_ieggRr zEU(HK_@zb1CkK+Lt?MpT>bO=yIx(asK3pwDNl?BGBdu44jL~h(ei+`buTx`l_*f`G z4)YpHU6ZChp>c7pebeQUp5$Ql8xxlr9Ba_+*&2;W){C**{gwcz;Nv!vR{si;e36Co zMh9S8qoUogPuCjydV0p6_W;RCe~TIWGA`u2yeqTvOGqf|VDt3QhBD#15r(6aV4vh4 zG}Iq|3OXvh6rVY90@wQ_fDNV-hP}W_-z4eicdB6sDmH*dL38{Zs1!4}EsM+Xx zr6Lo#m67^tJ(uh&!gUy~E!_$C+-ZT*Wi_jW=J+IJH%rYy?YP%U+A>K$h>Syw2#c9-Dncpu_+_ zvU&d`rr?}7TT+zfhfV?93LV42Ocf7?eImPRjQzek_n`~cm$fwZ;f$`Aib4U9>X2)1 zu3PSQlEAhWQp`xtJuG@Ny9M5el#R#mV#gixFO1H|A{g#J&zrxI5&=a~hH=JwfwW|! zJ$#GG%KV*xq$cSscv~OGz|Zyc(XWl~3m85YK`LNJ^ah2FFoy-7gt0AW$+X&Y-2Tpk&CMxeq1Au!Z+xoudvJ4Qr< zRX#ul)l075HZ}oRjpKzgYs17%DwBL=myaMQS0ODan+;4|lZfd7$#hUBTxrlN8QflS z-kFZ1Qp(TE>%(&e{5~JnyzYi4GI&lrX17cprQW5j!eN`}DeztVL9+*Im<(s~wRIFu z&&Uux!9ljF6B)S><4Y@UbJBW%1y=$Z~u%@iQtk#97igbaOem|EF8 za?vvSlOAJnW30>bcq}6wmi`+B>I^ghBa6mbx8d{l0tg14|CH~l(;BUQIa zbRvN37mGmO+#P9QA>w-q&xQV%GMVl(!WdEsnum($(~Yppp?mKKG7%}^)9tJvvUIeo zt&{bDKl8*<-@k^8gSD9unXKw|jbdj7#wnhbDN3_F1lymUo@nV$!ON!apZ->E^yBvP z`!8NbSW*4TD3iNVyXC}J#+3K<*G>;XqL91^_+yJ=RHoi< zd16RFC>B`ReWS7k)=ws)pS;?KI~n2x|2aya&KT~Xzb@!_Q~=FB8n9vLqf<$u+sCrF zHi>z8Y%F;M{PB`x8UopzcX`Vv0koXx>n3gPapFo%p=AKnSs!JKg`(Ej_m1O6#}6l6VPE@Yuo4RKyFtfzs&EAlpQ zU#jM~%4S=jh~1l0Uic|}Q|`;EAAj@@SG9ZB8zwOXn5dF*Y~GU16Oqnjwcg1V=Hcw%5SwF3MHK3)JCcOq{VC*y^$FD8gP!yG8p(}r zff;GtHx{UV)0sLdVVu>aIL0P05sFkcdrv%)`s=nhb&t4}ZI?lgyh&AvGXmMf>8{A56CH^#q(fj#p?tB7Vag$QA$&Zv^t%pzLq^go~1oQJ)a|#K>m!h zNJ{K;qvk^gxVf_kSPIUm!*COk$^+#zHY}hM;cB^>;3;UTTF4X`d@A=vyPg>*e^aNu z`25)JcJ;4^WRW(B|8fpC(P?$@kA?$`VWY+0(Ja-)>&FN*ZZQFTs-RVu>x{k`_7kTp zdqD@jKX~mYR{KLxuw(OVceRPk9mM|M^?(@@tjV37{0}!a-gHlQXOq`yCS8wn8>;Zd zpR$F2g&1}hBl(U)-EUpX%2v&V~nDi!R;C=IhXG&cz zQ{YLkJ7eN#e=zUoqA{F+ayULwU$@>T=Y0(@0ZvFv z&hNL{e~xs!uiS`^%{3SfqjH_zZ?EDu=9)JY&9E;z=8sR#>?%| z9Mekcc`uwg_9_qE00;g{a8tVqH+P}B58LC^OQi~fpZsZ%(&*eCQr;ryXy=yD;+f?+ zsB%jEk>htXIgkn^-(%rn#cSGhs5qZ3(^W7n_#g>2eK}f}(U8W3#VhMZ{XvSxJ`V9k zz#N)0(>6{?(+!kXiTi}4!*Xg)Y}9N%w6EKNMnQcdw{5k*1K3W_Un4J9dPNnW3_y2DB z?*>CmX{kHBylS0KKyF5(G$|a}P@1aWx?dkmt^aL*OaFFV-*5ikt^d6@X06R-w92Og z?2q++GaSDEYh8Cv3PIL(lz@Qqk-e^5n!Q{7qYO*?bZ|`p+ewR9Pnhfk&vdIpa@j z@>*n-sPh0P#dfEkp?0dlhVB?sd+t4>oR z5B0`<#B3a)Nu5MtXS0FWiVOLv!GGxiEkNrclTw))kn0Kw5vq{`4_{Oi@?2ms;e4b6 zW|@dk7G&3OBOn=;h?*k;F973mzJCA${ePa5GnwNuq=p(s-Qwb0;>BKK^P#ljwWng=jyoW2M%K7w)*U zMw|{EO}mXhD;v(SM~oKAy1HnpDHYVCC?+qxZF4o`>i{7AjIQ)V@Mi_u|%MeEHm z_tX@mD*TkKY=$OjH%#|S(^vs6HY~V&%;!h#>InIerawC1K`e9t7A{I|rq@&<5t833 zmyEAnt4%lrCHf+EyoMgo%P&#(&2z3v+O?`-blGgDHGQH&yv^a@Ndu3ljEdA=ua-Ha zwnF|CmKi?GIP4yozt{9>NXKpc4tCe2DV$!=g*)&;q)VVFm1BiDbk>+J5&x9pFF%!* zENj8QV%L$YFJ0JMe;tYgUlclfS(ZP;Bo@*2DlM3bapY6+Ymh@V-8i2g&w&$`D|#=; zZ#_IbOr=$-ue^rQ_eO0fsFGSKliW|`wC1+fJ%1@~=AFlGDwWy6lSdl;S(Qr$vf_u@1dIH(m4PxtEkKi4uF)`) ziSliGEOyjL`;J&SQ$E;6CEFpXq&_yZLFVLtYOTve(4H_+~T7ik2|0IG`Kc(Fs0 zt*}8W-l{HUAi9K6`c1Ujit+ZaMD&^kB|@Kwc7+f+q=1_U8knS}>)}?biFYb<$V$>7 zrlHrh0?RUqIK0RGsA4m=Vlo1?h=VZ{3(1m3k>}g#haS^*z|f)mnG3pK z(%46~*Uh~XhspL6C`M&ewXAzH!J%kG{_zMvcr+UA6Uq;DD9RXgiGn;<%w_Ck9E{*d z{6djwK@1!iiq}lVZ#Qa^cX47LkMT*i*%@(u!!uzLO)3}WL|f0EBxyS(l&>kjzF?)v z;vB2kFBzQ+aC~YB?upHK!K0OY?-|=5)IfyQ-RQaTBBAv;~?Lk{~UVODq`hE zO?ujqrsl0ZFrN8g!c=YdvlEQT8O`S9>W1GO7oJR;=R;E{_H%1la<&vr?cwF`6R>5A zr6YkL&d#HX-0JmnXq{x6cdle4nva^Ito5s|gBf$v3@KGG@J zHuW@Je#^zrLV-Ei9EhMcojBbg&m$sJwwt=*Aq;A)!F}Mef?Hh2IP%{T(4!Q!4|`Qo zD8rrmkHRA0iUR#2M^tnKN^MUc%I zr0!~{=Eh=3$5$#T@VH%TH}+a{(fmrSZr_ZzT@g9%-ePcQ5BXYwz%F~nId)vMTi@ci8sZ+Fg5Vm07eTPPz;KHk%$_KmL-#M8DsoDw$EBql#F( z#1Vx63kCw}qkZ~>T{e8Z5A4G#grx<^9`THI8_QJ-M60~OMVIA^QZT)g=gOw9Z`5cj z6vy}~Uz2j2T)objxH7q53tns;q+RqnODcu*?@sIa3%jXgrMD#RHT`q|+pN_`JF7!Gf!C zGk-m9TG(8d6z0+0Kt_IRP2D*mQskf5&P3>!-$2%cwimB`=8u0;OOe-#4V>Fb#V-ky4=U|M<}MKoZ;teu`S*_ zocjfoUco@qNT|@TTg_CSYk@NDKxgK_I!7!5(10oV*uE%YfrC-^dc^#+$T3{OfnmM^ zbn0l$I+rjmmxSw{E+TBm6py`&Ju4qALl|6uToATfPcS;?`HMG=)owar`p%z~_$|8|$`vnMrkwB2q1Sr@kD@K%60uNGZX{F**QTxg-I z+(wy`tol%us(imdwVGE|tJnlRH};7+9L?cuR2@A+q=0qW3xN_iewlZpV%#{bS>#7g zYo_1W-?ZfP=62p<(qRr7Yj8!8p?i(lvIfvV!4uSgyfx;dj@YQvOQ}?;be!Yk@3JK? ziYN%G=6H2l3Y(L0X?A-3Liuku!Eg>6(D45bwKawTTA454dia*d)!m=`IQ1n%f1r%U zapnEndlf=&_MAxcA}>c7IhvYUXmK#)642WSN9nn$##%5Ehuo6TCwL)g4+=4G_8Wfi z|6(vN%4kUY+*GJSe+=0TMc&QYEI8LZl*b;r`WsfGB^Eb>e&|8iU+ z*IN>4aQ8E}w!U5p^OBM2R8#&xCtT*<^$ziXjxlKa7mUlB3!ei{1{wM{{ReG?P8C)0 zp0#3I>Y@P_I(KxdMsLrbN}3JhJ{x`rfbnAVFxS;;EE$dR;)2w&|JsT=w3-^rV@V}# z%;M_&oRs7ySlhM_+sL632d3RK4EGBx1IVI zMv*IO2%RpNJltp+OBLOFk%K{ohQMp}(;RV|XG6J2LAGI;Wrvo+?Ln7#01H1lE|)G? z>%FX4^_eD%pitHhI!17;#9SgH4EaVs$b~x7F&})dnu571HhN+%ZpA^J&O~|pMD><( z@fe-F63V?s4g^Nw+mrac|* z8JNrK3+;0T>-XXTaUvHf(W1dJFZeK}I)JE-t{B+NJYpu!)D^=PCktWU6>E=C z;bJqZIzGqMDYML~Twq4D|3nI1t13Kppk+@mtuR&Q)IiTjFKKUC;LyHdfGN5~Ts|9O zLb{^^rjAhX^}`P6zwY*4h3S&-W6}o5BPH;_7_)41ggvroC(smwRt=$>iBG86nJIJ5*Y5CAF)Nk5deYNOOY73;GQ?7)zPhj~0Bcez4z4fN zy#v{Ee5Cy~!f|v4c=AiRn84=fg3D=d=}nuL+hJR*7j)Twb~U+UuiIE3vU1ZeHUekD z*bNQ7z1?`*uEdHtPS>C$ap%>6PF<2yp^`IuhTF_jUWQ>H6GXaqA!}<-KPjwv3`K-i z`LOm^n$cF_cx(W@hU>x{^&G_l&BjteU&W1T8MNh#_E-B72dyo5OoIaSS6go~+Q|e+ z<0+d({bdd@|43C04cY^Z%1?hK0~m7MS0HMUM;|(No;TrEgVp1)T$*#c@{G~0!^;-_ zlTgzFV#{~TwV=X~=jfhME3Pg&Uu%n-vXi2Xon))*VLEV<-axn*k$E5?wWAClnUZMs zifpxQX1BXo0vMEsMw!_@froc}X#*06b_KLl z3>_WF1jl54)M1p(VoWAzQ?X?%8t>w0a18YS=TNipV_eKDCDbh>;jghC@p_Zsmd24` zyICsv{^@mT?8jCNdkj{aAI0P@QKxKX^RvAA31^8FebO8`;_;0VFwAb^uuSy(ney{qhiAXkMYt_YL-)Xz8})rc3a^w8#kSm<)T`wKa@dC zmApTid82>KB^^4IQUuF1JVYj;O&OHcq^wF?!blEaFUy)X37XceQrDpp0lSw$feu?H zWo_#~rh#Rz=%9|H7`_ provides the verb functions for interacting programmatically with PyConcept EV. + .. grid-item-card:: Examples :fa:`scroll` + :padding: 2 2 2 2 + :link: examples/index + :link-type: doc + + Explore examples that show how to use PyConcept EV. + .. grid-item-card:: Contributing :material-regular:`group` :padding: 2 2 2 2 :link: contributing @@ -46,5 +53,6 @@ of EV powertrains. getting_started user_guide api_ref - changelog + examples/index contributing + changelog diff --git a/examples/README.md b/examples/README.md deleted file mode 100644 index df635b4e..00000000 --- a/examples/README.md +++ /dev/null @@ -1 +0,0 @@ -# Examples diff --git a/examples/index.rst b/examples/index.rst new file mode 100644 index 00000000..0b7bfa94 --- /dev/null +++ b/examples/index.rst @@ -0,0 +1,16 @@ +Examples +######## + +These examples demonstrate usage of PyConcept EV. + +PyConcept EV examples +--------------------- +These examples demonstrate basic operations you can perform +with PyConcept EV. + +.. nbgallery:: + + simple_workflow.py + +.. note:: + Examples require having access to https://prod.portal.onscale.com/api \ No newline at end of file diff --git a/examples/simple_workflow.py b/examples/simple_workflow.py index fc7c65ec..97e64659 100644 --- a/examples/simple_workflow.py +++ b/examples/simple_workflow.py @@ -20,8 +20,15 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -"""This example shows basic usage of PyConceptEV Core.""" +# # Simple workflow +# +# This example shows basic usage of PyConceptEV Core. + +# ## Perform required imports +# +# Perform required imports. +# + import datetime import os from pathlib import Path @@ -30,21 +37,37 @@ from ansys.conceptev.core import app -# Setup required environment variables +# - + +# ## Setup + +# Setup required environment variables. + +# + os.environ["CONCEPTEV_URL"] = "https://conceptev.ansys.com/api/" os.environ["OCM_URL"] = "https://prod.portal.onscale.com/api" -os.environ["CONCEPTEV_USERNAME"] = "joe.blogs@my_work.com" -os.environ["CONCEPTEV_PASSWORD"] = "sup3r_s3cr3t_passw0rd" +# Set environment variables for ConceptEV username and password if they don't exist! +if os.environ.get("CONCEPTEV_USERNAME") is None: + os.environ["CONCEPTEV_USERNAME"] = "joe.blogs@my_work.com" +if os.environ.get("CONCEPTEV_PASSWORD") is None: + os.environ["CONCEPTEV_PASSWORD"] = "sup3r_s3cr3t_passw0rd" +# - + +# + # Uncomment the following lines of code if you prefer to use local .env file +# # import dotenv # dotenv.load_dotenv() +# - -# Various constant data -DATADIR = Path(__file__).parents[0] / "resources" -MOTOR_FILE_NAME = str(DATADIR.joinpath("e9.lab")) - +# ## Define example data +# +# ### Various constant data +# # Example data can be obtained from the schema sections of the API documentation. + +MOTOR_FILE_NAME = Path("resources") / "e9.lab" AERO_1 = { "name": "New Aero Config", "drag_coefficient": 0.3, @@ -88,14 +111,18 @@ "voltage_min": 300, } +# ### Changing data + # Motor data motor_data = {"name": "e9", "component_type": "MotorLabID", "inverter_losses_included": False} -# Get a token from OCM +# ## Use API client for the Ansys ConceptEV service + +# ### Get a token from OCM + token = app.get_token() -print(token) -# Create a new project +# ### Create a new project with app.get_http_client(token) as client: health = app.get(client, "/health") @@ -116,9 +143,13 @@ ) print(f"ID of the created project: {project['id']}") +# ### Perform basic operations +# # Perform basic operations on the design instance associated to the new project +# + design_instance_id = project["design_instance_id"] + with app.get_http_client(token, design_instance_id) as client: # Create configurations @@ -202,3 +233,4 @@ fig = go.Figure(data=go.Scatter(x=x, y=y)) fig.show() +# - diff --git a/poetry.lock b/poetry.lock index cf527cd3..560b2f94 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,19 +1,23 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. [[package]] name = "accessible-pygments" -version = "0.0.4" +version = "0.0.5" description = "A collection of accessible pygments styles" optional = false -python-versions = "*" +python-versions = ">=3.9" files = [ - {file = "accessible-pygments-0.0.4.tar.gz", hash = "sha256:e7b57a9b15958e9601c7e9eb07a440c813283545a20973f2574a5f453d0e953e"}, - {file = "accessible_pygments-0.0.4-py2.py3-none-any.whl", hash = "sha256:416c6d8c1ea1c5ad8701903a20fcedf953c6e720d64f33dc47bfb2d3f2fa4e8d"}, + {file = "accessible_pygments-0.0.5-py3-none-any.whl", hash = "sha256:88ae3211e68a1d0b011504b2ffc1691feafce124b845bd072ab6f9f66f34d4b7"}, + {file = "accessible_pygments-0.0.5.tar.gz", hash = "sha256:40918d3e6a2b619ad424cb91e556bd3bd8865443d9f22f1dcdf79e33c8046872"}, ] [package.dependencies] pygments = ">=1.5" +[package.extras] +dev = ["pillow", "pkginfo (>=1.10)", "playwright", "pre-commit", "setuptools", "twine (>=5.0)"] +tests = ["hypothesis", "pytest"] + [[package]] name = "alabaster" version = "0.7.16" @@ -47,13 +51,13 @@ doc = ["Sphinx (==7.2.6)", "numpydoc (==1.6.0)", "requests (==2.31.0)", "sphinx- [[package]] name = "anyio" -version = "4.3.0" +version = "4.4.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.8" files = [ - {file = "anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8"}, - {file = "anyio-4.3.0.tar.gz", hash = "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6"}, + {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"}, + {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"}, ] [package.dependencies] @@ -67,6 +71,144 @@ doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphin test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] trio = ["trio (>=0.23)"] +[[package]] +name = "appnope" +version = "0.1.4" +description = "Disable App Nap on macOS >= 10.9" +optional = false +python-versions = ">=3.6" +files = [ + {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, + {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, +] + +[[package]] +name = "argon2-cffi" +version = "23.1.0" +description = "Argon2 for Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea"}, + {file = "argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08"}, +] + +[package.dependencies] +argon2-cffi-bindings = "*" + +[package.extras] +dev = ["argon2-cffi[tests,typing]", "tox (>4)"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-copybutton", "sphinx-notfound-page"] +tests = ["hypothesis", "pytest"] +typing = ["mypy"] + +[[package]] +name = "argon2-cffi-bindings" +version = "21.2.0" +description = "Low-level CFFI bindings for Argon2" +optional = false +python-versions = ">=3.6" +files = [ + {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"}, + {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"}, +] + +[package.dependencies] +cffi = ">=1.0.1" + +[package.extras] +dev = ["cogapp", "pre-commit", "pytest", "wheel"] +tests = ["pytest"] + +[[package]] +name = "arrow" +version = "1.3.0" +description = "Better dates & times for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, + {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, +] + +[package.dependencies] +python-dateutil = ">=2.7.0" +types-python-dateutil = ">=2.8.10" + +[package.extras] +doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"] +test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"] + +[[package]] +name = "asttokens" +version = "2.4.1" +description = "Annotate AST trees with source code positions" +optional = false +python-versions = "*" +files = [ + {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"}, + {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"}, +] + +[package.dependencies] +six = ">=1.12.0" + +[package.extras] +astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"] +test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] + +[[package]] +name = "async-lru" +version = "2.0.4" +description = "Simple LRU cache for asyncio" +optional = false +python-versions = ">=3.8" +files = [ + {file = "async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627"}, + {file = "async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224"}, +] + +[package.dependencies] +typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} + +[[package]] +name = "attrs" +version = "23.2.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.7" +files = [ + {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, + {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, +] + +[package.extras] +cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] +dev = ["attrs[tests]", "pre-commit"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] +tests = ["attrs[tests-no-zope]", "zope-interface"] +tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] +tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] + [[package]] name = "babel" version = "2.15.0" @@ -117,6 +259,24 @@ charset-normalizer = ["charset-normalizer"] html5lib = ["html5lib"] lxml = ["lxml"] +[[package]] +name = "bleach" +version = "6.1.0" +description = "An easy safelist-based HTML-sanitizing tool." +optional = false +python-versions = ">=3.8" +files = [ + {file = "bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6"}, + {file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"}, +] + +[package.dependencies] +six = ">=1.9.0" +webencodings = "*" + +[package.extras] +css = ["tinycss2 (>=1.1.0,<1.3)"] + [[package]] name = "build" version = "1.2.1" @@ -349,6 +509,20 @@ files = [ {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + [[package]] name = "colorama" version = "0.4.6" @@ -360,65 +534,82 @@ files = [ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] +[[package]] +name = "comm" +version = "0.2.2" +description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." +optional = false +python-versions = ">=3.8" +files = [ + {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, + {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, +] + +[package.dependencies] +traitlets = ">=4" + +[package.extras] +test = ["pytest"] + [[package]] name = "coverage" -version = "7.5.1" +version = "7.5.3" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0884920835a033b78d1c73b6d3bbcda8161a900f38a488829a83982925f6c2e"}, - {file = "coverage-7.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:39afcd3d4339329c5f58de48a52f6e4e50f6578dd6099961cf22228feb25f38f"}, - {file = "coverage-7.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a7b0ceee8147444347da6a66be737c9d78f3353b0681715b668b72e79203e4a"}, - {file = "coverage-7.5.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a9ca3f2fae0088c3c71d743d85404cec8df9be818a005ea065495bedc33da35"}, - {file = "coverage-7.5.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fd215c0c7d7aab005221608a3c2b46f58c0285a819565887ee0b718c052aa4e"}, - {file = "coverage-7.5.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4bf0655ab60d754491004a5efd7f9cccefcc1081a74c9ef2da4735d6ee4a6223"}, - {file = "coverage-7.5.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:61c4bf1ba021817de12b813338c9be9f0ad5b1e781b9b340a6d29fc13e7c1b5e"}, - {file = "coverage-7.5.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:db66fc317a046556a96b453a58eced5024af4582a8dbdc0c23ca4dbc0d5b3146"}, - {file = "coverage-7.5.1-cp310-cp310-win32.whl", hash = "sha256:b016ea6b959d3b9556cb401c55a37547135a587db0115635a443b2ce8f1c7228"}, - {file = "coverage-7.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:df4e745a81c110e7446b1cc8131bf986157770fa405fe90e15e850aaf7619bc8"}, - {file = "coverage-7.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:796a79f63eca8814ca3317a1ea443645c9ff0d18b188de470ed7ccd45ae79428"}, - {file = "coverage-7.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4fc84a37bfd98db31beae3c2748811a3fa72bf2007ff7902f68746d9757f3746"}, - {file = "coverage-7.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6175d1a0559986c6ee3f7fccfc4a90ecd12ba0a383dcc2da30c2b9918d67d8a3"}, - {file = "coverage-7.5.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fc81d5878cd6274ce971e0a3a18a8803c3fe25457165314271cf78e3aae3aa2"}, - {file = "coverage-7.5.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:556cf1a7cbc8028cb60e1ff0be806be2eded2daf8129b8811c63e2b9a6c43bca"}, - {file = "coverage-7.5.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9981706d300c18d8b220995ad22627647be11a4276721c10911e0e9fa44c83e8"}, - {file = "coverage-7.5.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d7fed867ee50edf1a0b4a11e8e5d0895150e572af1cd6d315d557758bfa9c057"}, - {file = "coverage-7.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ef48e2707fb320c8f139424a596f5b69955a85b178f15af261bab871873bb987"}, - {file = "coverage-7.5.1-cp311-cp311-win32.whl", hash = "sha256:9314d5678dcc665330df5b69c1e726a0e49b27df0461c08ca12674bcc19ef136"}, - {file = "coverage-7.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:5fa567e99765fe98f4e7d7394ce623e794d7cabb170f2ca2ac5a4174437e90dd"}, - {file = "coverage-7.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b6cf3764c030e5338e7f61f95bd21147963cf6aa16e09d2f74f1fa52013c1206"}, - {file = "coverage-7.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2ec92012fefebee89a6b9c79bc39051a6cb3891d562b9270ab10ecfdadbc0c34"}, - {file = "coverage-7.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16db7f26000a07efcf6aea00316f6ac57e7d9a96501e990a36f40c965ec7a95d"}, - {file = "coverage-7.5.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:beccf7b8a10b09c4ae543582c1319c6df47d78fd732f854ac68d518ee1fb97fa"}, - {file = "coverage-7.5.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8748731ad392d736cc9ccac03c9845b13bb07d020a33423fa5b3a36521ac6e4e"}, - {file = "coverage-7.5.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7352b9161b33fd0b643ccd1f21f3a3908daaddf414f1c6cb9d3a2fd618bf2572"}, - {file = "coverage-7.5.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7a588d39e0925f6a2bff87154752481273cdb1736270642aeb3635cb9b4cad07"}, - {file = "coverage-7.5.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:68f962d9b72ce69ea8621f57551b2fa9c70509af757ee3b8105d4f51b92b41a7"}, - {file = "coverage-7.5.1-cp312-cp312-win32.whl", hash = "sha256:f152cbf5b88aaeb836127d920dd0f5e7edff5a66f10c079157306c4343d86c19"}, - {file = "coverage-7.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:5a5740d1fb60ddf268a3811bcd353de34eb56dc24e8f52a7f05ee513b2d4f596"}, - {file = "coverage-7.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e2213def81a50519d7cc56ed643c9e93e0247f5bbe0d1247d15fa520814a7cd7"}, - {file = "coverage-7.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5037f8fcc2a95b1f0e80585bd9d1ec31068a9bcb157d9750a172836e98bc7a90"}, - {file = "coverage-7.5.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3721c2c9e4c4953a41a26c14f4cef64330392a6d2d675c8b1db3b645e31f0e"}, - {file = "coverage-7.5.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca498687ca46a62ae590253fba634a1fe9836bc56f626852fb2720f334c9e4e5"}, - {file = "coverage-7.5.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0cdcbc320b14c3e5877ee79e649677cb7d89ef588852e9583e6b24c2e5072661"}, - {file = "coverage-7.5.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:57e0204b5b745594e5bc14b9b50006da722827f0b8c776949f1135677e88d0b8"}, - {file = "coverage-7.5.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8fe7502616b67b234482c3ce276ff26f39ffe88adca2acf0261df4b8454668b4"}, - {file = "coverage-7.5.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9e78295f4144f9dacfed4f92935fbe1780021247c2fabf73a819b17f0ccfff8d"}, - {file = "coverage-7.5.1-cp38-cp38-win32.whl", hash = "sha256:1434e088b41594baa71188a17533083eabf5609e8e72f16ce8c186001e6b8c41"}, - {file = "coverage-7.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:0646599e9b139988b63704d704af8e8df7fa4cbc4a1f33df69d97f36cb0a38de"}, - {file = "coverage-7.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4cc37def103a2725bc672f84bd939a6fe4522310503207aae4d56351644682f1"}, - {file = "coverage-7.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fc0b4d8bfeabd25ea75e94632f5b6e047eef8adaed0c2161ada1e922e7f7cece"}, - {file = "coverage-7.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d0a0f5e06881ecedfe6f3dd2f56dcb057b6dbeb3327fd32d4b12854df36bf26"}, - {file = "coverage-7.5.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9735317685ba6ec7e3754798c8871c2f49aa5e687cc794a0b1d284b2389d1bd5"}, - {file = "coverage-7.5.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d21918e9ef11edf36764b93101e2ae8cc82aa5efdc7c5a4e9c6c35a48496d601"}, - {file = "coverage-7.5.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c3e757949f268364b96ca894b4c342b41dc6f8f8b66c37878aacef5930db61be"}, - {file = "coverage-7.5.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:79afb6197e2f7f60c4824dd4b2d4c2ec5801ceb6ba9ce5d2c3080e5660d51a4f"}, - {file = "coverage-7.5.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d1d0d98d95dd18fe29dc66808e1accf59f037d5716f86a501fc0256455219668"}, - {file = "coverage-7.5.1-cp39-cp39-win32.whl", hash = "sha256:1cc0fe9b0b3a8364093c53b0b4c0c2dd4bb23acbec4c9240b5f284095ccf7981"}, - {file = "coverage-7.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:dde0070c40ea8bb3641e811c1cfbf18e265d024deff6de52c5950677a8fb1e0f"}, - {file = "coverage-7.5.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:6537e7c10cc47c595828b8a8be04c72144725c383c4702703ff4e42e44577312"}, - {file = "coverage-7.5.1.tar.gz", hash = "sha256:54de9ef3a9da981f7af93eafde4ede199e0846cd819eb27c88e2b712aae9708c"}, + {file = "coverage-7.5.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a6519d917abb15e12380406d721e37613e2a67d166f9fb7e5a8ce0375744cd45"}, + {file = "coverage-7.5.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aea7da970f1feccf48be7335f8b2ca64baf9b589d79e05b9397a06696ce1a1ec"}, + {file = "coverage-7.5.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:923b7b1c717bd0f0f92d862d1ff51d9b2b55dbbd133e05680204465f454bb286"}, + {file = "coverage-7.5.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62bda40da1e68898186f274f832ef3e759ce929da9a9fd9fcf265956de269dbc"}, + {file = "coverage-7.5.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8b7339180d00de83e930358223c617cc343dd08e1aa5ec7b06c3a121aec4e1d"}, + {file = "coverage-7.5.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:25a5caf742c6195e08002d3b6c2dd6947e50efc5fc2c2205f61ecb47592d2d83"}, + {file = "coverage-7.5.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:05ac5f60faa0c704c0f7e6a5cbfd6f02101ed05e0aee4d2822637a9e672c998d"}, + {file = "coverage-7.5.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:239a4e75e09c2b12ea478d28815acf83334d32e722e7433471fbf641c606344c"}, + {file = "coverage-7.5.3-cp310-cp310-win32.whl", hash = "sha256:a5812840d1d00eafae6585aba38021f90a705a25b8216ec7f66aebe5b619fb84"}, + {file = "coverage-7.5.3-cp310-cp310-win_amd64.whl", hash = "sha256:33ca90a0eb29225f195e30684ba4a6db05dbef03c2ccd50b9077714c48153cac"}, + {file = "coverage-7.5.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f81bc26d609bf0fbc622c7122ba6307993c83c795d2d6f6f6fd8c000a770d974"}, + {file = "coverage-7.5.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7cec2af81f9e7569280822be68bd57e51b86d42e59ea30d10ebdbb22d2cb7232"}, + {file = "coverage-7.5.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55f689f846661e3f26efa535071775d0483388a1ccfab899df72924805e9e7cd"}, + {file = "coverage-7.5.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50084d3516aa263791198913a17354bd1dc627d3c1639209640b9cac3fef5807"}, + {file = "coverage-7.5.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:341dd8f61c26337c37988345ca5c8ccabeff33093a26953a1ac72e7d0103c4fb"}, + {file = "coverage-7.5.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ab0b028165eea880af12f66086694768f2c3139b2c31ad5e032c8edbafca6ffc"}, + {file = "coverage-7.5.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5bc5a8c87714b0c67cfeb4c7caa82b2d71e8864d1a46aa990b5588fa953673b8"}, + {file = "coverage-7.5.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:38a3b98dae8a7c9057bd91fbf3415c05e700a5114c5f1b5b0ea5f8f429ba6614"}, + {file = "coverage-7.5.3-cp311-cp311-win32.whl", hash = "sha256:fcf7d1d6f5da887ca04302db8e0e0cf56ce9a5e05f202720e49b3e8157ddb9a9"}, + {file = "coverage-7.5.3-cp311-cp311-win_amd64.whl", hash = "sha256:8c836309931839cca658a78a888dab9676b5c988d0dd34ca247f5f3e679f4e7a"}, + {file = "coverage-7.5.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:296a7d9bbc598e8744c00f7a6cecf1da9b30ae9ad51c566291ff1314e6cbbed8"}, + {file = "coverage-7.5.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:34d6d21d8795a97b14d503dcaf74226ae51eb1f2bd41015d3ef332a24d0a17b3"}, + {file = "coverage-7.5.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e317953bb4c074c06c798a11dbdd2cf9979dbcaa8ccc0fa4701d80042d4ebf1"}, + {file = "coverage-7.5.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:705f3d7c2b098c40f5b81790a5fedb274113373d4d1a69e65f8b68b0cc26f6db"}, + {file = "coverage-7.5.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1196e13c45e327d6cd0b6e471530a1882f1017eb83c6229fc613cd1a11b53cd"}, + {file = "coverage-7.5.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:015eddc5ccd5364dcb902eaecf9515636806fa1e0d5bef5769d06d0f31b54523"}, + {file = "coverage-7.5.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:fd27d8b49e574e50caa65196d908f80e4dff64d7e592d0c59788b45aad7e8b35"}, + {file = "coverage-7.5.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:33fc65740267222fc02975c061eb7167185fef4cc8f2770267ee8bf7d6a42f84"}, + {file = "coverage-7.5.3-cp312-cp312-win32.whl", hash = "sha256:7b2a19e13dfb5c8e145c7a6ea959485ee8e2204699903c88c7d25283584bfc08"}, + {file = "coverage-7.5.3-cp312-cp312-win_amd64.whl", hash = "sha256:0bbddc54bbacfc09b3edaec644d4ac90c08ee8ed4844b0f86227dcda2d428fcb"}, + {file = "coverage-7.5.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f78300789a708ac1f17e134593f577407d52d0417305435b134805c4fb135adb"}, + {file = "coverage-7.5.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b368e1aee1b9b75757942d44d7598dcd22a9dbb126affcbba82d15917f0cc155"}, + {file = "coverage-7.5.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f836c174c3a7f639bded48ec913f348c4761cbf49de4a20a956d3431a7c9cb24"}, + {file = "coverage-7.5.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:244f509f126dc71369393ce5fea17c0592c40ee44e607b6d855e9c4ac57aac98"}, + {file = "coverage-7.5.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4c2872b3c91f9baa836147ca33650dc5c172e9273c808c3c3199c75490e709d"}, + {file = "coverage-7.5.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dd4b3355b01273a56b20c219e74e7549e14370b31a4ffe42706a8cda91f19f6d"}, + {file = "coverage-7.5.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:f542287b1489c7a860d43a7d8883e27ca62ab84ca53c965d11dac1d3a1fab7ce"}, + {file = "coverage-7.5.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:75e3f4e86804023e991096b29e147e635f5e2568f77883a1e6eed74512659ab0"}, + {file = "coverage-7.5.3-cp38-cp38-win32.whl", hash = "sha256:c59d2ad092dc0551d9f79d9d44d005c945ba95832a6798f98f9216ede3d5f485"}, + {file = "coverage-7.5.3-cp38-cp38-win_amd64.whl", hash = "sha256:fa21a04112c59ad54f69d80e376f7f9d0f5f9123ab87ecd18fbb9ec3a2beed56"}, + {file = "coverage-7.5.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f5102a92855d518b0996eb197772f5ac2a527c0ec617124ad5242a3af5e25f85"}, + {file = "coverage-7.5.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d1da0a2e3b37b745a2b2a678a4c796462cf753aebf94edcc87dcc6b8641eae31"}, + {file = "coverage-7.5.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8383a6c8cefba1b7cecc0149415046b6fc38836295bc4c84e820872eb5478b3d"}, + {file = "coverage-7.5.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9aad68c3f2566dfae84bf46295a79e79d904e1c21ccfc66de88cd446f8686341"}, + {file = "coverage-7.5.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e079c9ec772fedbade9d7ebc36202a1d9ef7291bc9b3a024ca395c4d52853d7"}, + {file = "coverage-7.5.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bde997cac85fcac227b27d4fb2c7608a2c5f6558469b0eb704c5726ae49e1c52"}, + {file = "coverage-7.5.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:990fb20b32990b2ce2c5f974c3e738c9358b2735bc05075d50a6f36721b8f303"}, + {file = "coverage-7.5.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3d5a67f0da401e105753d474369ab034c7bae51a4c31c77d94030d59e41df5bd"}, + {file = "coverage-7.5.3-cp39-cp39-win32.whl", hash = "sha256:e08c470c2eb01977d221fd87495b44867a56d4d594f43739a8028f8646a51e0d"}, + {file = "coverage-7.5.3-cp39-cp39-win_amd64.whl", hash = "sha256:1d2a830ade66d3563bb61d1e3c77c8def97b30ed91e166c67d0632c018f380f0"}, + {file = "coverage-7.5.3-pp38.pp39.pp310-none-any.whl", hash = "sha256:3538d8fb1ee9bdd2e2692b3b18c22bb1c19ffbefd06880f5ac496e42d7bb3884"}, + {file = "coverage-7.5.3.tar.gz", hash = "sha256:04aefca5190d1dc7a53a4c1a5a7f8568811306d7a8ee231c42fb69215571944f"}, ] [package.dependencies] @@ -481,6 +672,59 @@ ssh = ["bcrypt (>=3.1.5)"] test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] test-randomorder = ["pytest-randomly"] +[[package]] +name = "debugpy" +version = "1.8.1" +description = "An implementation of the Debug Adapter Protocol for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "debugpy-1.8.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:3bda0f1e943d386cc7a0e71bfa59f4137909e2ed947fb3946c506e113000f741"}, + {file = "debugpy-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dda73bf69ea479c8577a0448f8c707691152e6c4de7f0c4dec5a4bc11dee516e"}, + {file = "debugpy-1.8.1-cp310-cp310-win32.whl", hash = "sha256:3a79c6f62adef994b2dbe9fc2cc9cc3864a23575b6e387339ab739873bea53d0"}, + {file = "debugpy-1.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:7eb7bd2b56ea3bedb009616d9e2f64aab8fc7000d481faec3cd26c98a964bcdd"}, + {file = "debugpy-1.8.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:016a9fcfc2c6b57f939673c874310d8581d51a0fe0858e7fac4e240c5eb743cb"}, + {file = "debugpy-1.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd97ed11a4c7f6d042d320ce03d83b20c3fb40da892f994bc041bbc415d7a099"}, + {file = "debugpy-1.8.1-cp311-cp311-win32.whl", hash = "sha256:0de56aba8249c28a300bdb0672a9b94785074eb82eb672db66c8144fff673146"}, + {file = "debugpy-1.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:1a9fe0829c2b854757b4fd0a338d93bc17249a3bf69ecf765c61d4c522bb92a8"}, + {file = "debugpy-1.8.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3ebb70ba1a6524d19fa7bb122f44b74170c447d5746a503e36adc244a20ac539"}, + {file = "debugpy-1.8.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2e658a9630f27534e63922ebf655a6ab60c370f4d2fc5c02a5b19baf4410ace"}, + {file = "debugpy-1.8.1-cp312-cp312-win32.whl", hash = "sha256:caad2846e21188797a1f17fc09c31b84c7c3c23baf2516fed5b40b378515bbf0"}, + {file = "debugpy-1.8.1-cp312-cp312-win_amd64.whl", hash = "sha256:edcc9f58ec0fd121a25bc950d4578df47428d72e1a0d66c07403b04eb93bcf98"}, + {file = "debugpy-1.8.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:7a3afa222f6fd3d9dfecd52729bc2e12c93e22a7491405a0ecbf9e1d32d45b39"}, + {file = "debugpy-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d915a18f0597ef685e88bb35e5d7ab968964b7befefe1aaea1eb5b2640b586c7"}, + {file = "debugpy-1.8.1-cp38-cp38-win32.whl", hash = "sha256:92116039b5500633cc8d44ecc187abe2dfa9b90f7a82bbf81d079fcdd506bae9"}, + {file = "debugpy-1.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:e38beb7992b5afd9d5244e96ad5fa9135e94993b0c551ceebf3fe1a5d9beb234"}, + {file = "debugpy-1.8.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:bfb20cb57486c8e4793d41996652e5a6a885b4d9175dd369045dad59eaacea42"}, + {file = "debugpy-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efd3fdd3f67a7e576dd869c184c5dd71d9aaa36ded271939da352880c012e703"}, + {file = "debugpy-1.8.1-cp39-cp39-win32.whl", hash = "sha256:58911e8521ca0c785ac7a0539f1e77e0ce2df753f786188f382229278b4cdf23"}, + {file = "debugpy-1.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:6df9aa9599eb05ca179fb0b810282255202a66835c6efb1d112d21ecb830ddd3"}, + {file = "debugpy-1.8.1-py2.py3-none-any.whl", hash = "sha256:28acbe2241222b87e255260c76741e1fbf04fdc3b6d094fcf57b6c6f75ce1242"}, + {file = "debugpy-1.8.1.zip", hash = "sha256:f696d6be15be87aef621917585f9bb94b1dc9e8aced570db1b8a6fc14e8f9b42"}, +] + +[[package]] +name = "decorator" +version = "5.1.1" +description = "Decorators for Humans" +optional = false +python-versions = ">=3.5" +files = [ + {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, + {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, +] + +[[package]] +name = "defusedxml" +version = "0.7.1" +description = "XML bomb protection for Python stdlib modules" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, + {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, +] + [[package]] name = "distlib" version = "0.3.8" @@ -517,6 +761,34 @@ files = [ [package.extras] test = ["pytest (>=6)"] +[[package]] +name = "executing" +version = "2.0.1" +description = "Get the currently executing AST node of a frame, and other information" +optional = false +python-versions = ">=3.5" +files = [ + {file = "executing-2.0.1-py2.py3-none-any.whl", hash = "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc"}, + {file = "executing-2.0.1.tar.gz", hash = "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147"}, +] + +[package.extras] +tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] + +[[package]] +name = "fastjsonschema" +version = "2.19.1" +description = "Fastest Python implementation of JSON schema" +optional = false +python-versions = "*" +files = [ + {file = "fastjsonschema-2.19.1-py3-none-any.whl", hash = "sha256:3672b47bc94178c9f23dbb654bf47440155d4db9df5f7bc47643315f9c405cd0"}, + {file = "fastjsonschema-2.19.1.tar.gz", hash = "sha256:e3126a94bdc4623d3de4485f8d468a12f02a67921315ddc87836d6e456dc789d"}, +] + +[package.extras] +devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"] + [[package]] name = "filelock" version = "3.14.0" @@ -533,6 +805,17 @@ docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1 testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] typing = ["typing-extensions (>=4.8)"] +[[package]] +name = "fqdn" +version = "1.5.1" +description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers" +optional = false +python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4" +files = [ + {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"}, + {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"}, +] + [[package]] name = "h11" version = "0.14.0" @@ -655,6 +938,111 @@ files = [ {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, ] +[[package]] +name = "ipykernel" +version = "6.29.4" +description = "IPython Kernel for Jupyter" +optional = false +python-versions = ">=3.8" +files = [ + {file = "ipykernel-6.29.4-py3-none-any.whl", hash = "sha256:1181e653d95c6808039c509ef8e67c4126b3b3af7781496c7cbfb5ed938a27da"}, + {file = "ipykernel-6.29.4.tar.gz", hash = "sha256:3d44070060f9475ac2092b760123fadf105d2e2493c24848b6691a7c4f42af5c"}, +] + +[package.dependencies] +appnope = {version = "*", markers = "platform_system == \"Darwin\""} +comm = ">=0.1.1" +debugpy = ">=1.6.5" +ipython = ">=7.23.1" +jupyter-client = ">=6.1.12" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +matplotlib-inline = ">=0.1" +nest-asyncio = "*" +packaging = "*" +psutil = "*" +pyzmq = ">=24" +tornado = ">=6.1" +traitlets = ">=5.4.0" + +[package.extras] +cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"] +pyqt5 = ["pyqt5"] +pyside6 = ["pyside6"] +test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.23.5)", "pytest-cov", "pytest-timeout"] + +[[package]] +name = "ipython" +version = "8.18.1" +description = "IPython: Productive Interactive Computing" +optional = false +python-versions = ">=3.9" +files = [ + {file = "ipython-8.18.1-py3-none-any.whl", hash = "sha256:e8267419d72d81955ec1177f8a29aaa90ac80ad647499201119e2f05e99aa397"}, + {file = "ipython-8.18.1.tar.gz", hash = "sha256:ca6f079bb33457c66e233e4580ebfc4128855b4cf6370dddd73842a9563e8a27"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +decorator = "*" +exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} +jedi = ">=0.16" +matplotlib-inline = "*" +pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""} +prompt-toolkit = ">=3.0.41,<3.1.0" +pygments = ">=2.4.0" +stack-data = "*" +traitlets = ">=5" +typing-extensions = {version = "*", markers = "python_version < \"3.10\""} + +[package.extras] +all = ["black", "curio", "docrepr", "exceptiongroup", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.22)", "pandas", "pickleshare", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio (<0.22)", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"] +black = ["black"] +doc = ["docrepr", "exceptiongroup", "ipykernel", "matplotlib", "pickleshare", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio (<0.22)", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"] +kernel = ["ipykernel"] +nbconvert = ["nbconvert"] +nbformat = ["nbformat"] +notebook = ["ipywidgets", "notebook"] +parallel = ["ipyparallel"] +qtconsole = ["qtconsole"] +test = ["pickleshare", "pytest (<7.1)", "pytest-asyncio (<0.22)", "testpath"] +test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.22)", "pandas", "pickleshare", "pytest (<7.1)", "pytest-asyncio (<0.22)", "testpath", "trio"] + +[[package]] +name = "ipywidgets" +version = "8.1.3" +description = "Jupyter interactive widgets" +optional = false +python-versions = ">=3.7" +files = [ + {file = "ipywidgets-8.1.3-py3-none-any.whl", hash = "sha256:efafd18f7a142248f7cb0ba890a68b96abd4d6e88ddbda483c9130d12667eaf2"}, + {file = "ipywidgets-8.1.3.tar.gz", hash = "sha256:f5f9eeaae082b1823ce9eac2575272952f40d748893972956dc09700a6392d9c"}, +] + +[package.dependencies] +comm = ">=0.1.3" +ipython = ">=6.1.0" +jupyterlab-widgets = ">=3.0.11,<3.1.0" +traitlets = ">=4.3.1" +widgetsnbextension = ">=4.0.11,<4.1.0" + +[package.extras] +test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] + +[[package]] +name = "isoduration" +version = "20.11.0" +description = "Operations with ISO 8601 durations" +optional = false +python-versions = ">=3.7" +files = [ + {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, + {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, +] + +[package.dependencies] +arrow = ">=0.15.0" + [[package]] name = "jaraco-classes" version = "3.4.0" @@ -709,6 +1097,25 @@ more-itertools = "*" docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] testing = ["jaraco.classes", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-ruff (>=0.2.1)"] +[[package]] +name = "jedi" +version = "0.19.1" +description = "An autocompletion tool for Python that can be used for text editors." +optional = false +python-versions = ">=3.6" +files = [ + {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"}, + {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"}, +] + +[package.dependencies] +parso = ">=0.8.3,<0.9.0" + +[package.extras] +docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] +qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] +testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] + [[package]] name = "jeepney" version = "0.8.0" @@ -741,15 +1148,329 @@ MarkupSafe = ">=2.0" [package.extras] i18n = ["Babel (>=2.7)"] +[[package]] +name = "json5" +version = "0.9.25" +description = "A Python implementation of the JSON5 data format." +optional = false +python-versions = ">=3.8" +files = [ + {file = "json5-0.9.25-py3-none-any.whl", hash = "sha256:34ed7d834b1341a86987ed52f3f76cd8ee184394906b6e22a1e0deb9ab294e8f"}, + {file = "json5-0.9.25.tar.gz", hash = "sha256:548e41b9be043f9426776f05df8635a00fe06104ea51ed24b67f908856e151ae"}, +] + +[[package]] +name = "jsonpointer" +version = "2.4" +description = "Identify specific nodes in a JSON document (RFC 6901)" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" +files = [ + {file = "jsonpointer-2.4-py2.py3-none-any.whl", hash = "sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a"}, + {file = "jsonpointer-2.4.tar.gz", hash = "sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88"}, +] + +[[package]] +name = "jsonschema" +version = "4.22.0" +description = "An implementation of JSON Schema validation for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jsonschema-4.22.0-py3-none-any.whl", hash = "sha256:ff4cfd6b1367a40e7bc6411caec72effadd3db0bbe5017de188f2d6108335802"}, + {file = "jsonschema-4.22.0.tar.gz", hash = "sha256:5b22d434a45935119af990552c862e5d6d564e8f6601206b305a61fdf661a2b7"}, +] + +[package.dependencies] +attrs = ">=22.2.0" +fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""} +jsonschema-specifications = ">=2023.03.6" +referencing = ">=0.28.4" +rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""} +rpds-py = ">=0.7.1" +uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +webcolors = {version = ">=1.11", optional = true, markers = "extra == \"format-nongpl\""} + +[package.extras] +format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] + +[[package]] +name = "jsonschema-specifications" +version = "2023.12.1" +description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"}, + {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"}, +] + +[package.dependencies] +referencing = ">=0.31.0" + +[[package]] +name = "jupyter-client" +version = "8.6.2" +description = "Jupyter protocol implementation and client libraries" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter_client-8.6.2-py3-none-any.whl", hash = "sha256:50cbc5c66fd1b8f65ecb66bc490ab73217993632809b6e505687de18e9dea39f"}, + {file = "jupyter_client-8.6.2.tar.gz", hash = "sha256:2bda14d55ee5ba58552a8c53ae43d215ad9868853489213f37da060ced54d8df"}, +] + +[package.dependencies] +importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +python-dateutil = ">=2.8.2" +pyzmq = ">=23.0" +tornado = ">=6.2" +traitlets = ">=5.3" + +[package.extras] +docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] + +[[package]] +name = "jupyter-core" +version = "5.7.2" +description = "Jupyter core package. A base package on which Jupyter projects rely." +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"}, + {file = "jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9"}, +] + +[package.dependencies] +platformdirs = ">=2.5" +pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} +traitlets = ">=5.3" + +[package.extras] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] +test = ["ipykernel", "pre-commit", "pytest (<8)", "pytest-cov", "pytest-timeout"] + +[[package]] +name = "jupyter-events" +version = "0.10.0" +description = "Jupyter Event System library" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter_events-0.10.0-py3-none-any.whl", hash = "sha256:4b72130875e59d57716d327ea70d3ebc3af1944d3717e5a498b8a06c6c159960"}, + {file = "jupyter_events-0.10.0.tar.gz", hash = "sha256:670b8229d3cc882ec782144ed22e0d29e1c2d639263f92ca8383e66682845e22"}, +] + +[package.dependencies] +jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]} +python-json-logger = ">=2.0.4" +pyyaml = ">=5.3" +referencing = "*" +rfc3339-validator = "*" +rfc3986-validator = ">=0.1.1" +traitlets = ">=5.3" + +[package.extras] +cli = ["click", "rich"] +docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme", "sphinxcontrib-spelling"] +test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"] + +[[package]] +name = "jupyter-lsp" +version = "2.2.5" +description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001"}, + {file = "jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da"}, +] + +[package.dependencies] +importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} +jupyter-server = ">=1.1.2" + +[[package]] +name = "jupyter-server" +version = "2.14.0" +description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter_server-2.14.0-py3-none-any.whl", hash = "sha256:fb6be52c713e80e004fac34b35a0990d6d36ba06fd0a2b2ed82b899143a64210"}, + {file = "jupyter_server-2.14.0.tar.gz", hash = "sha256:659154cea512083434fd7c93b7fe0897af7a2fd0b9dd4749282b42eaac4ae677"}, +] + +[package.dependencies] +anyio = ">=3.1.0" +argon2-cffi = ">=21.1" +jinja2 = ">=3.0.3" +jupyter-client = ">=7.4.4" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +jupyter-events = ">=0.9.0" +jupyter-server-terminals = ">=0.4.4" +nbconvert = ">=6.4.4" +nbformat = ">=5.3.0" +overrides = ">=5.0" +packaging = ">=22.0" +prometheus-client = ">=0.9" +pywinpty = {version = ">=2.0.1", markers = "os_name == \"nt\""} +pyzmq = ">=24" +send2trash = ">=1.8.2" +terminado = ">=0.8.3" +tornado = ">=6.2.0" +traitlets = ">=5.6.0" +websocket-client = ">=1.7" + +[package.extras] +docs = ["ipykernel", "jinja2", "jupyter-client", "jupyter-server", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"] +test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0,<9)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.7)", "pytest-timeout", "requests"] + +[[package]] +name = "jupyter-server-terminals" +version = "0.5.3" +description = "A Jupyter Server Extension Providing Terminals." +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa"}, + {file = "jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269"}, +] + +[package.dependencies] +pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""} +terminado = ">=0.8.3" + +[package.extras] +docs = ["jinja2", "jupyter-server", "mistune (<4.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"] +test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"] + +[[package]] +name = "jupyterlab" +version = "4.2.1" +description = "JupyterLab computational environment" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyterlab-4.2.1-py3-none-any.whl", hash = "sha256:6ac6e3827b3c890e6e549800e8a4f4aaea6a69321e2240007902aa7a0c56a8e4"}, + {file = "jupyterlab-4.2.1.tar.gz", hash = "sha256:a10fb71085a6900820c62d43324005046402ffc8f0fde696103e37238a839507"}, +] + +[package.dependencies] +async-lru = ">=1.0.0" +httpx = ">=0.25.0" +importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} +ipykernel = ">=6.5.0" +jinja2 = ">=3.0.3" +jupyter-core = "*" +jupyter-lsp = ">=2.0.0" +jupyter-server = ">=2.4.0,<3" +jupyterlab-server = ">=2.27.1,<3" +notebook-shim = ">=0.2" +packaging = "*" +tomli = {version = ">=1.2.2", markers = "python_version < \"3.11\""} +tornado = ">=6.2.0" +traitlets = "*" + +[package.extras] +dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.3.5)"] +docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<7.3.0)", "sphinx-copybutton"] +docs-screenshots = ["altair (==5.3.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.2)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.1.post2)", "matplotlib (==3.8.3)", "nbconvert (>=7.0.0)", "pandas (==2.2.1)", "scipy (==1.12.0)", "vega-datasets (==0.9.0)"] +test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"] +upgrade-extension = ["copier (>=8,<10)", "jinja2-time (<0.3)", "pydantic (<2.0)", "pyyaml-include (<2.0)", "tomli-w (<2.0)"] + +[[package]] +name = "jupyterlab-pygments" +version = "0.3.0" +description = "Pygments theme using JupyterLab CSS variables" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, + {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, +] + +[[package]] +name = "jupyterlab-server" +version = "2.27.2" +description = "A set of server components for JupyterLab and JupyterLab like applications." +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyterlab_server-2.27.2-py3-none-any.whl", hash = "sha256:54aa2d64fd86383b5438d9f0c032f043c4d8c0264b8af9f60bd061157466ea43"}, + {file = "jupyterlab_server-2.27.2.tar.gz", hash = "sha256:15cbb349dc45e954e09bacf81b9f9bcb10815ff660fb2034ecd7417db3a7ea27"}, +] + +[package.dependencies] +babel = ">=2.10" +importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} +jinja2 = ">=3.0.3" +json5 = ">=0.9.0" +jsonschema = ">=4.18.0" +jupyter-server = ">=1.21,<3" +packaging = ">=21.3" +requests = ">=2.31" + +[package.extras] +docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi (>0.8)"] +openapi = ["openapi-core (>=0.18.0,<0.19.0)", "ruamel-yaml"] +test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0,<8)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"] + +[[package]] +name = "jupyterlab-widgets" +version = "3.0.11" +description = "Jupyter interactive widgets for JupyterLab" +optional = false +python-versions = ">=3.7" +files = [ + {file = "jupyterlab_widgets-3.0.11-py3-none-any.whl", hash = "sha256:78287fd86d20744ace330a61625024cf5521e1c012a352ddc0a3cdc2348becd0"}, + {file = "jupyterlab_widgets-3.0.11.tar.gz", hash = "sha256:dd5ac679593c969af29c9bed054c24f26842baa51352114736756bc035deee27"}, +] + +[[package]] +name = "jupytext" +version = "1.16.2" +description = "Jupyter notebooks as Markdown documents, Julia, Python or R scripts" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupytext-1.16.2-py3-none-any.whl", hash = "sha256:197a43fef31dca612b68b311e01b8abd54441c7e637810b16b6cb8f2ab66065e"}, + {file = "jupytext-1.16.2.tar.gz", hash = "sha256:8627dd9becbbebd79cc4a4ed4727d89d78e606b4b464eab72357b3b029023a14"}, +] + +[package.dependencies] +markdown-it-py = ">=1.0" +mdit-py-plugins = "*" +nbformat = "*" +packaging = "*" +pyyaml = "*" +tomli = {version = "*", markers = "python_version < \"3.11\""} + +[package.extras] +dev = ["autopep8", "black", "flake8", "gitpython", "ipykernel", "isort", "jupyter-fs (<0.4.0)", "jupyter-server (!=2.11)", "nbconvert", "pre-commit", "pytest", "pytest-cov (>=2.6.1)", "pytest-randomly", "pytest-xdist", "sphinx-gallery (<0.8)"] +docs = ["myst-parser", "sphinx", "sphinx-copybutton", "sphinx-rtd-theme"] +test = ["pytest", "pytest-randomly", "pytest-xdist"] +test-cov = ["ipykernel", "jupyter-server (!=2.11)", "nbconvert", "pytest", "pytest-cov (>=2.6.1)", "pytest-randomly", "pytest-xdist"] +test-external = ["autopep8", "black", "flake8", "gitpython", "ipykernel", "isort", "jupyter-fs (<0.4.0)", "jupyter-server (!=2.11)", "nbconvert", "pre-commit", "pytest", "pytest-randomly", "pytest-xdist", "sphinx-gallery (<0.8)"] +test-functional = ["pytest", "pytest-randomly", "pytest-xdist"] +test-integration = ["ipykernel", "jupyter-server (!=2.11)", "nbconvert", "pytest", "pytest-randomly", "pytest-xdist"] +test-ui = ["calysto-bash"] + [[package]] name = "keyring" -version = "25.2.0" +version = "25.2.1" description = "Store and access your passwords safely." optional = false python-versions = ">=3.8" files = [ - {file = "keyring-25.2.0-py3-none-any.whl", hash = "sha256:19f17d40335444aab84b19a0d16a77ec0758a9c384e3446ae2ed8bd6d53b67a5"}, - {file = "keyring-25.2.0.tar.gz", hash = "sha256:7045f367268ce42dba44745050164b431e46f6e92f99ef2937dfadaef368d8cf"}, + {file = "keyring-25.2.1-py3-none-any.whl", hash = "sha256:2458681cdefc0dbc0b7eb6cf75d0b98e59f9ad9b2d4edd319d18f68bdca95e50"}, + {file = "keyring-25.2.1.tar.gz", hash = "sha256:daaffd42dbda25ddafb1ad5fec4024e5bbcfe424597ca1ca452b299861e49f1b"}, ] [package.dependencies] @@ -859,6 +1580,39 @@ files = [ {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, ] +[[package]] +name = "matplotlib-inline" +version = "0.1.7" +description = "Inline Matplotlib backend for Jupyter" +optional = false +python-versions = ">=3.8" +files = [ + {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, + {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, +] + +[package.dependencies] +traitlets = "*" + +[[package]] +name = "mdit-py-plugins" +version = "0.4.1" +description = "Collection of plugins for markdown-it-py" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mdit_py_plugins-0.4.1-py3-none-any.whl", hash = "sha256:1020dfe4e6bfc2c79fb49ae4e3f5b297f5ccd20f010187acc52af2921e27dc6a"}, + {file = "mdit_py_plugins-0.4.1.tar.gz", hash = "sha256:834b8ac23d1cd60cec703646ffd22ae97b7955a6d596eb1d304be1e251ae499c"}, +] + +[package.dependencies] +markdown-it-py = ">=1.0.0,<4.0.0" + +[package.extras] +code-style = ["pre-commit"] +rtd = ["myst-parser", "sphinx-book-theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + [[package]] name = "mdurl" version = "0.1.2" @@ -870,6 +1624,17 @@ files = [ {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, ] +[[package]] +name = "mistune" +version = "3.0.2" +description = "A sane and fast Markdown parser with useful plugins and renderers" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"}, + {file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"}, +] + [[package]] name = "more-itertools" version = "10.2.0" @@ -881,6 +1646,117 @@ files = [ {file = "more_itertools-10.2.0-py3-none-any.whl", hash = "sha256:686b06abe565edfab151cb8fd385a05651e1fdf8f0a14191e4439283421f8684"}, ] +[[package]] +name = "nbclient" +version = "0.10.0" +description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "nbclient-0.10.0-py3-none-any.whl", hash = "sha256:f13e3529332a1f1f81d82a53210322476a168bb7090a0289c795fe9cc11c9d3f"}, + {file = "nbclient-0.10.0.tar.gz", hash = "sha256:4b3f1b7dba531e498449c4db4f53da339c91d449dc11e9af3a43b4eb5c5abb09"}, +] + +[package.dependencies] +jupyter-client = ">=6.1.12" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +nbformat = ">=5.1" +traitlets = ">=5.4" + +[package.extras] +dev = ["pre-commit"] +docs = ["autodoc-traits", "mock", "moto", "myst-parser", "nbclient[test]", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling"] +test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.0.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"] + +[[package]] +name = "nbconvert" +version = "7.16.4" +description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Output formats include asciidoc, html, latex, markdown, pdf, py, rst, script. nbconvert can be used both as a Python library (`import nbconvert`) or as a command line tool (invoked as `jupyter nbconvert ...`)." +optional = false +python-versions = ">=3.8" +files = [ + {file = "nbconvert-7.16.4-py3-none-any.whl", hash = "sha256:05873c620fe520b6322bf8a5ad562692343fe3452abda5765c7a34b7d1aa3eb3"}, + {file = "nbconvert-7.16.4.tar.gz", hash = "sha256:86ca91ba266b0a448dc96fa6c5b9d98affabde2867b363258703536807f9f7f4"}, +] + +[package.dependencies] +beautifulsoup4 = "*" +bleach = "!=5.0.0" +defusedxml = "*" +importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""} +jinja2 = ">=3.0" +jupyter-core = ">=4.7" +jupyterlab-pygments = "*" +markupsafe = ">=2.0" +mistune = ">=2.0.3,<4" +nbclient = ">=0.5.0" +nbformat = ">=5.7" +packaging = "*" +pandocfilters = ">=1.4.1" +pygments = ">=2.4.1" +tinycss2 = "*" +traitlets = ">=5.1" + +[package.extras] +all = ["flaky", "ipykernel", "ipython", "ipywidgets (>=7.5)", "myst-parser", "nbsphinx (>=0.2.12)", "playwright", "pydata-sphinx-theme", "pyqtwebengine (>=5.15)", "pytest (>=7)", "sphinx (==5.0.2)", "sphinxcontrib-spelling", "tornado (>=6.1)"] +docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sphinx-theme", "sphinx (==5.0.2)", "sphinxcontrib-spelling"] +qtpdf = ["pyqtwebengine (>=5.15)"] +qtpng = ["pyqtwebengine (>=5.15)"] +serve = ["tornado (>=6.1)"] +test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest (>=7)"] +webpdf = ["playwright"] + +[[package]] +name = "nbformat" +version = "5.10.4" +description = "The Jupyter Notebook format" +optional = false +python-versions = ">=3.8" +files = [ + {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, + {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"}, +] + +[package.dependencies] +fastjsonschema = ">=2.15" +jsonschema = ">=2.6" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +traitlets = ">=5.1" + +[package.extras] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["pep440", "pre-commit", "pytest", "testpath"] + +[[package]] +name = "nbsphinx" +version = "0.9.4" +description = "Jupyter Notebook Tools for Sphinx" +optional = false +python-versions = ">=3.6" +files = [ + {file = "nbsphinx-0.9.4-py3-none-any.whl", hash = "sha256:22cb1d974a8300e8118ca71aea1f649553743c0c5830a54129dcd446e6a8ba17"}, + {file = "nbsphinx-0.9.4.tar.gz", hash = "sha256:042a60806fc23d519bc5bef59d95570713913fe442fda759d53e3aaf62104794"}, +] + +[package.dependencies] +docutils = ">=0.18.1" +jinja2 = "*" +nbconvert = ">=5.3,<5.4 || >5.4" +nbformat = "*" +sphinx = ">=1.8" +traitlets = ">=5" + +[[package]] +name = "nest-asyncio" +version = "1.6.0" +description = "Patch asyncio to allow nested event loops" +optional = false +python-versions = ">=3.5" +files = [ + {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, + {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, +] + [[package]] name = "nh3" version = "0.2.17" @@ -920,6 +1796,23 @@ files = [ [package.dependencies] setuptools = "*" +[[package]] +name = "notebook-shim" +version = "0.2.4" +description = "A shim layer for notebook traits and config" +optional = false +python-versions = ">=3.7" +files = [ + {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, + {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"}, +] + +[package.dependencies] +jupyter-server = ">=1.8,<3" + +[package.extras] +test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"] + [[package]] name = "numpydoc" version = "1.7.0" @@ -941,6 +1834,17 @@ developer = ["pre-commit (>=3.3)", "tomli"] doc = ["matplotlib (>=3.5)", "numpy (>=1.22)", "pydata-sphinx-theme (>=0.13.3)", "sphinx (>=7)"] test = ["matplotlib", "pytest", "pytest-cov"] +[[package]] +name = "overrides" +version = "7.7.0" +description = "A decorator to automatically detect mismatch when overriding a method." +optional = false +python-versions = ">=3.6" +files = [ + {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, + {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, +] + [[package]] name = "packaging" version = "24.0" @@ -952,6 +1856,46 @@ files = [ {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, ] +[[package]] +name = "pandocfilters" +version = "1.5.1" +description = "Utilities for writing pandoc filters in python" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, + {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, +] + +[[package]] +name = "parso" +version = "0.8.4" +description = "A Python Parser" +optional = false +python-versions = ">=3.6" +files = [ + {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, + {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, +] + +[package.extras] +qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] +testing = ["docopt", "pytest"] + +[[package]] +name = "pexpect" +version = "4.9.0" +description = "Pexpect allows easy control of interactive console applications." +optional = false +python-versions = "*" +files = [ + {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, + {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, +] + +[package.dependencies] +ptyprocess = ">=0.5" + [[package]] name = "pkginfo" version = "1.10.0" @@ -968,13 +1912,13 @@ testing = ["pytest", "pytest-cov", "wheel"] [[package]] name = "platformdirs" -version = "4.2.1" +version = "4.2.2" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.1-py3-none-any.whl", hash = "sha256:17d5a1161b3fd67b390023cb2d3b026bbd40abde6fdb052dfbd3a29c3ba22ee1"}, - {file = "platformdirs-4.2.1.tar.gz", hash = "sha256:031cd18d4ec63ec53e82dceaac0417d218a6863f7745dfcc9efe7793b7039bdf"}, + {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, + {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, ] [package.extras] @@ -994,41 +1938,122 @@ files = [ ] [package.dependencies] -packaging = "*" -tenacity = ">=6.2.0" +packaging = "*" +tenacity = ">=6.2.0" + +[[package]] +name = "pluggy" +version = "1.5.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "pre-commit" +version = "3.7.1" +description = "A framework for managing and maintaining multi-language pre-commit hooks." +optional = false +python-versions = ">=3.9" +files = [ + {file = "pre_commit-3.7.1-py2.py3-none-any.whl", hash = "sha256:fae36fd1d7ad7d6a5a1c0b0d5adb2ed1a3bda5a21bf6c3e5372073d7a11cd4c5"}, + {file = "pre_commit-3.7.1.tar.gz", hash = "sha256:8ca3ad567bc78a4972a3f1a477e94a79d4597e8140a6e0b651c5e33899c3654a"}, +] + +[package.dependencies] +cfgv = ">=2.0.0" +identify = ">=1.0.0" +nodeenv = ">=0.11.1" +pyyaml = ">=5.1" +virtualenv = ">=20.10.0" + +[[package]] +name = "prometheus-client" +version = "0.20.0" +description = "Python client for the Prometheus monitoring system." +optional = false +python-versions = ">=3.8" +files = [ + {file = "prometheus_client-0.20.0-py3-none-any.whl", hash = "sha256:cde524a85bce83ca359cc837f28b8c0db5cac7aa653a588fd7e84ba061c329e7"}, + {file = "prometheus_client-0.20.0.tar.gz", hash = "sha256:287629d00b147a32dcb2be0b9df905da599b2d82f80377083ec8463309a4bb89"}, +] + +[package.extras] +twisted = ["twisted"] + +[[package]] +name = "prompt-toolkit" +version = "3.0.45" +description = "Library for building powerful interactive command lines in Python" +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "prompt_toolkit-3.0.45-py3-none-any.whl", hash = "sha256:a29b89160e494e3ea8622b09fa5897610b437884dcdcd054fdc1308883326c2a"}, + {file = "prompt_toolkit-3.0.45.tar.gz", hash = "sha256:07c60ee4ab7b7e90824b61afa840c8f5aad2d46b3e2e10acc33d8ecc94a49089"}, +] + +[package.dependencies] +wcwidth = "*" [[package]] -name = "pluggy" -version = "1.5.0" -description = "plugin and hook calling mechanisms for python" +name = "psutil" +version = "5.9.8" +description = "Cross-platform lib for process and system monitoring in Python." optional = false -python-versions = ">=3.8" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, + {file = "psutil-5.9.8-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8"}, + {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73"}, + {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:611052c4bc70432ec770d5d54f64206aa7203a101ec273a0cd82418c86503bb7"}, + {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:50187900d73c1381ba1454cf40308c2bf6f34268518b3f36a9b663ca87e65e36"}, + {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d"}, + {file = "psutil-5.9.8-cp27-none-win32.whl", hash = "sha256:36f435891adb138ed3c9e58c6af3e2e6ca9ac2f365efe1f9cfef2794e6c93b4e"}, + {file = "psutil-5.9.8-cp27-none-win_amd64.whl", hash = "sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631"}, + {file = "psutil-5.9.8-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81"}, + {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421"}, + {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4"}, + {file = "psutil-5.9.8-cp36-cp36m-win32.whl", hash = "sha256:7d79560ad97af658a0f6adfef8b834b53f64746d45b403f225b85c5c2c140eee"}, + {file = "psutil-5.9.8-cp36-cp36m-win_amd64.whl", hash = "sha256:27cc40c3493bb10de1be4b3f07cae4c010ce715290a5be22b98493509c6299e2"}, + {file = "psutil-5.9.8-cp37-abi3-win32.whl", hash = "sha256:bc56c2a1b0d15aa3eaa5a60c9f3f8e3e565303b465dbf57a1b730e7a2b9844e0"}, + {file = "psutil-5.9.8-cp37-abi3-win_amd64.whl", hash = "sha256:8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf"}, + {file = "psutil-5.9.8-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8"}, + {file = "psutil-5.9.8.tar.gz", hash = "sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c"}, ] [package.extras] -dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] +test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] [[package]] -name = "pre-commit" -version = "3.7.1" -description = "A framework for managing and maintaining multi-language pre-commit hooks." +name = "ptyprocess" +version = "0.7.0" +description = "Run a subprocess in a pseudo terminal" optional = false -python-versions = ">=3.9" +python-versions = "*" files = [ - {file = "pre_commit-3.7.1-py2.py3-none-any.whl", hash = "sha256:fae36fd1d7ad7d6a5a1c0b0d5adb2ed1a3bda5a21bf6c3e5372073d7a11cd4c5"}, - {file = "pre_commit-3.7.1.tar.gz", hash = "sha256:8ca3ad567bc78a4972a3f1a477e94a79d4597e8140a6e0b651c5e33899c3654a"}, + {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, + {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, ] -[package.dependencies] -cfgv = ">=2.0.0" -identify = ">=1.0.0" -nodeenv = ">=0.11.1" -pyyaml = ">=5.1" -virtualenv = ">=20.10.0" +[[package]] +name = "pure-eval" +version = "0.2.2" +description = "Safely evaluate AST nodes without side effects" +optional = false +python-versions = "*" +files = [ + {file = "pure_eval-0.2.2-py3-none-any.whl", hash = "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350"}, + {file = "pure_eval-0.2.2.tar.gz", hash = "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"}, +] + +[package.extras] +tests = ["pytest"] [[package]] name = "pycparser" @@ -1082,6 +2107,22 @@ files = [ [package.extras] windows-terminal = ["colorama (>=0.4.6)"] +[[package]] +name = "pypandoc-binary" +version = "1.13" +description = "Thin wrapper for pandoc." +optional = false +python-versions = ">=3.6" +files = [ + {file = "pypandoc_binary-1.13-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:946666388eb79b307d7f497b3b33045ef807750f8e5ef3440e0ba3bbab698044"}, + {file = "pypandoc_binary-1.13-py3-none-macosx_11_0_arm64.whl", hash = "sha256:21ef0345726d36fc45a50211320614daf2caede684b0d0963ce8738292809746"}, + {file = "pypandoc_binary-1.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67c0c7af811bcf3cd4f3221be756a4975ec35b2d7df89d8de4313a8caa2cd54f"}, + {file = "pypandoc_binary-1.13-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9455fdd9521cbf4b56d79a56b806afa94c8c22f3c8ef878536e58d941a70f6d6"}, + {file = "pypandoc_binary-1.13-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:2915f52e4632bd2d0a8fcd2f7e7dfc2ea19b4e1a280fcbc2ddcd142713c4ff12"}, + {file = "pypandoc_binary-1.13-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:11a2497320eb3dccb74de3c67b6df3e5d3f66cdc2a36a67e9a871708f7e48412"}, + {file = "pypandoc_binary-1.13-py3-none-win_amd64.whl", hash = "sha256:3881aa7c84faec2007c0ae4466d3a1cfc93171206b8540f2defa8ea971bf6fd6"}, +] + [[package]] name = "pyproject-api" version = "1.6.1" @@ -1187,6 +2228,20 @@ pytest = ">=6.2.5" [package.extras] dev = ["pre-commit", "pytest-asyncio", "tox"] +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +description = "Extensions to the standard Python datetime module" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, +] + +[package.dependencies] +six = ">=1.5" + [[package]] name = "python-dotenv" version = "1.0.1" @@ -1201,6 +2256,40 @@ files = [ [package.extras] cli = ["click (>=5.0)"] +[[package]] +name = "python-json-logger" +version = "2.0.7" +description = "A python library adding a json log formatter" +optional = false +python-versions = ">=3.6" +files = [ + {file = "python-json-logger-2.0.7.tar.gz", hash = "sha256:23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c"}, + {file = "python_json_logger-2.0.7-py3-none-any.whl", hash = "sha256:f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd"}, +] + +[[package]] +name = "pywin32" +version = "306" +description = "Python for Window Extensions" +optional = false +python-versions = "*" +files = [ + {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"}, + {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"}, + {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"}, + {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"}, + {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"}, + {file = "pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b"}, + {file = "pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e"}, + {file = "pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040"}, + {file = "pywin32-306-cp37-cp37m-win32.whl", hash = "sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65"}, + {file = "pywin32-306-cp37-cp37m-win_amd64.whl", hash = "sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36"}, + {file = "pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a"}, + {file = "pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"}, + {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"}, + {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"}, +] + [[package]] name = "pywin32-ctypes" version = "0.2.2" @@ -1212,6 +2301,21 @@ files = [ {file = "pywin32_ctypes-0.2.2-py3-none-any.whl", hash = "sha256:bf490a1a709baf35d688fe0ecf980ed4de11d2b3e37b51e5442587a75d9957e7"}, ] +[[package]] +name = "pywinpty" +version = "2.0.13" +description = "Pseudo terminal support for Windows from Python." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pywinpty-2.0.13-cp310-none-win_amd64.whl", hash = "sha256:697bff211fb5a6508fee2dc6ff174ce03f34a9a233df9d8b5fe9c8ce4d5eaf56"}, + {file = "pywinpty-2.0.13-cp311-none-win_amd64.whl", hash = "sha256:b96fb14698db1284db84ca38c79f15b4cfdc3172065b5137383910567591fa99"}, + {file = "pywinpty-2.0.13-cp312-none-win_amd64.whl", hash = "sha256:2fd876b82ca750bb1333236ce98488c1be96b08f4f7647cfdf4129dfad83c2d4"}, + {file = "pywinpty-2.0.13-cp38-none-win_amd64.whl", hash = "sha256:61d420c2116c0212808d31625611b51caf621fe67f8a6377e2e8b617ea1c1f7d"}, + {file = "pywinpty-2.0.13-cp39-none-win_amd64.whl", hash = "sha256:71cb613a9ee24174730ac7ae439fd179ca34ccb8c5349e8d7b72ab5dea2c6f4b"}, + {file = "pywinpty-2.0.13.tar.gz", hash = "sha256:c34e32351a3313ddd0d7da23d27f835c860d32fe4ac814d372a3ea9594f41dde"}, +] + [[package]] name = "pyyaml" version = "6.0.1" @@ -1272,6 +2376,106 @@ files = [ {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, ] +[[package]] +name = "pyzmq" +version = "26.0.3" +description = "Python bindings for 0MQ" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pyzmq-26.0.3-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:44dd6fc3034f1eaa72ece33588867df9e006a7303725a12d64c3dff92330f625"}, + {file = "pyzmq-26.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:acb704195a71ac5ea5ecf2811c9ee19ecdc62b91878528302dd0be1b9451cc90"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dbb9c997932473a27afa93954bb77a9f9b786b4ccf718d903f35da3232317de"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6bcb34f869d431799c3ee7d516554797f7760cb2198ecaa89c3f176f72d062be"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ece17ec5f20d7d9b442e5174ae9f020365d01ba7c112205a4d59cf19dc38ee"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:ba6e5e6588e49139a0979d03a7deb9c734bde647b9a8808f26acf9c547cab1bf"}, + {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3bf8b000a4e2967e6dfdd8656cd0757d18c7e5ce3d16339e550bd462f4857e59"}, + {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2136f64fbb86451dbbf70223635a468272dd20075f988a102bf8a3f194a411dc"}, + {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e8918973fbd34e7814f59143c5f600ecd38b8038161239fd1a3d33d5817a38b8"}, + {file = "pyzmq-26.0.3-cp310-cp310-win32.whl", hash = "sha256:0aaf982e68a7ac284377d051c742610220fd06d330dcd4c4dbb4cdd77c22a537"}, + {file = "pyzmq-26.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:f1a9b7d00fdf60b4039f4455afd031fe85ee8305b019334b72dcf73c567edc47"}, + {file = "pyzmq-26.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:80b12f25d805a919d53efc0a5ad7c0c0326f13b4eae981a5d7b7cc343318ebb7"}, + {file = "pyzmq-26.0.3-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:a72a84570f84c374b4c287183debc776dc319d3e8ce6b6a0041ce2e400de3f32"}, + {file = "pyzmq-26.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7ca684ee649b55fd8f378127ac8462fb6c85f251c2fb027eb3c887e8ee347bcd"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e222562dc0f38571c8b1ffdae9d7adb866363134299264a1958d077800b193b7"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f17cde1db0754c35a91ac00b22b25c11da6eec5746431d6e5092f0cd31a3fea9"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b7c0c0b3244bb2275abe255d4a30c050d541c6cb18b870975553f1fb6f37527"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ac97a21de3712afe6a6c071abfad40a6224fd14fa6ff0ff8d0c6e6cd4e2f807a"}, + {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:88b88282e55fa39dd556d7fc04160bcf39dea015f78e0cecec8ff4f06c1fc2b5"}, + {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:72b67f966b57dbd18dcc7efbc1c7fc9f5f983e572db1877081f075004614fcdd"}, + {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f4b6cecbbf3b7380f3b61de3a7b93cb721125dc125c854c14ddc91225ba52f83"}, + {file = "pyzmq-26.0.3-cp311-cp311-win32.whl", hash = "sha256:eed56b6a39216d31ff8cd2f1d048b5bf1700e4b32a01b14379c3b6dde9ce3aa3"}, + {file = "pyzmq-26.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:3191d312c73e3cfd0f0afdf51df8405aafeb0bad71e7ed8f68b24b63c4f36500"}, + {file = "pyzmq-26.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:b6907da3017ef55139cf0e417c5123a84c7332520e73a6902ff1f79046cd3b94"}, + {file = "pyzmq-26.0.3-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:068ca17214038ae986d68f4a7021f97e187ed278ab6dccb79f837d765a54d753"}, + {file = "pyzmq-26.0.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7821d44fe07335bea256b9f1f41474a642ca55fa671dfd9f00af8d68a920c2d4"}, + {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eeb438a26d87c123bb318e5f2b3d86a36060b01f22fbdffd8cf247d52f7c9a2b"}, + {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:69ea9d6d9baa25a4dc9cef5e2b77b8537827b122214f210dd925132e34ae9b12"}, + {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7daa3e1369355766dea11f1d8ef829905c3b9da886ea3152788dc25ee6079e02"}, + {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:6ca7a9a06b52d0e38ccf6bca1aeff7be178917893f3883f37b75589d42c4ac20"}, + {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1b7d0e124948daa4d9686d421ef5087c0516bc6179fdcf8828b8444f8e461a77"}, + {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e746524418b70f38550f2190eeee834db8850088c834d4c8406fbb9bc1ae10b2"}, + {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:6b3146f9ae6af82c47a5282ac8803523d381b3b21caeae0327ed2f7ecb718798"}, + {file = "pyzmq-26.0.3-cp312-cp312-win32.whl", hash = "sha256:2b291d1230845871c00c8462c50565a9cd6026fe1228e77ca934470bb7d70ea0"}, + {file = "pyzmq-26.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:926838a535c2c1ea21c903f909a9a54e675c2126728c21381a94ddf37c3cbddf"}, + {file = "pyzmq-26.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:5bf6c237f8c681dfb91b17f8435b2735951f0d1fad10cc5dfd96db110243370b"}, + {file = "pyzmq-26.0.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c0991f5a96a8e620f7691e61178cd8f457b49e17b7d9cfa2067e2a0a89fc1d5"}, + {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:dbf012d8fcb9f2cf0643b65df3b355fdd74fc0035d70bb5c845e9e30a3a4654b"}, + {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:01fbfbeb8249a68d257f601deb50c70c929dc2dfe683b754659569e502fbd3aa"}, + {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c8eb19abe87029c18f226d42b8a2c9efdd139d08f8bf6e085dd9075446db450"}, + {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5344b896e79800af86ad643408ca9aa303a017f6ebff8cee5a3163c1e9aec987"}, + {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:204e0f176fd1d067671157d049466869b3ae1fc51e354708b0dc41cf94e23a3a"}, + {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a42db008d58530efa3b881eeee4991146de0b790e095f7ae43ba5cc612decbc5"}, + {file = "pyzmq-26.0.3-cp37-cp37m-win32.whl", hash = "sha256:8d7a498671ca87e32b54cb47c82a92b40130a26c5197d392720a1bce1b3c77cf"}, + {file = "pyzmq-26.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:3b4032a96410bdc760061b14ed6a33613ffb7f702181ba999df5d16fb96ba16a"}, + {file = "pyzmq-26.0.3-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:2cc4e280098c1b192c42a849de8de2c8e0f3a84086a76ec5b07bfee29bda7d18"}, + {file = "pyzmq-26.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5bde86a2ed3ce587fa2b207424ce15b9a83a9fa14422dcc1c5356a13aed3df9d"}, + {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:34106f68e20e6ff253c9f596ea50397dbd8699828d55e8fa18bd4323d8d966e6"}, + {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ebbbd0e728af5db9b04e56389e2299a57ea8b9dd15c9759153ee2455b32be6ad"}, + {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6b1d1c631e5940cac5a0b22c5379c86e8df6a4ec277c7a856b714021ab6cfad"}, + {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e891ce81edd463b3b4c3b885c5603c00141151dd9c6936d98a680c8c72fe5c67"}, + {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9b273ecfbc590a1b98f014ae41e5cf723932f3b53ba9367cfb676f838038b32c"}, + {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b32bff85fb02a75ea0b68f21e2412255b5731f3f389ed9aecc13a6752f58ac97"}, + {file = "pyzmq-26.0.3-cp38-cp38-win32.whl", hash = "sha256:f6c21c00478a7bea93caaaef9e7629145d4153b15a8653e8bb4609d4bc70dbfc"}, + {file = "pyzmq-26.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:3401613148d93ef0fd9aabdbddb212de3db7a4475367f49f590c837355343972"}, + {file = "pyzmq-26.0.3-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:2ed8357f4c6e0daa4f3baf31832df8a33334e0fe5b020a61bc8b345a3db7a606"}, + {file = "pyzmq-26.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c1c8f2a2ca45292084c75bb6d3a25545cff0ed931ed228d3a1810ae3758f975f"}, + {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:b63731993cdddcc8e087c64e9cf003f909262b359110070183d7f3025d1c56b5"}, + {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b3cd31f859b662ac5d7f4226ec7d8bd60384fa037fc02aee6ff0b53ba29a3ba8"}, + {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:115f8359402fa527cf47708d6f8a0f8234f0e9ca0cab7c18c9c189c194dbf620"}, + {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:715bdf952b9533ba13dfcf1f431a8f49e63cecc31d91d007bc1deb914f47d0e4"}, + {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e1258c639e00bf5e8a522fec6c3eaa3e30cf1c23a2f21a586be7e04d50c9acab"}, + {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:15c59e780be8f30a60816a9adab900c12a58d79c1ac742b4a8df044ab2a6d920"}, + {file = "pyzmq-26.0.3-cp39-cp39-win32.whl", hash = "sha256:d0cdde3c78d8ab5b46595054e5def32a755fc028685add5ddc7403e9f6de9879"}, + {file = "pyzmq-26.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:ce828058d482ef860746bf532822842e0ff484e27f540ef5c813d516dd8896d2"}, + {file = "pyzmq-26.0.3-cp39-cp39-win_arm64.whl", hash = "sha256:788f15721c64109cf720791714dc14afd0f449d63f3a5487724f024345067381"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2c18645ef6294d99b256806e34653e86236eb266278c8ec8112622b61db255de"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e6bc96ebe49604df3ec2c6389cc3876cabe475e6bfc84ced1bf4e630662cb35"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:971e8990c5cc4ddcff26e149398fc7b0f6a042306e82500f5e8db3b10ce69f84"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8416c23161abd94cc7da80c734ad7c9f5dbebdadfdaa77dad78244457448223"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:082a2988364b60bb5de809373098361cf1dbb239623e39e46cb18bc035ed9c0c"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d57dfbf9737763b3a60d26e6800e02e04284926329aee8fb01049635e957fe81"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:77a85dca4c2430ac04dc2a2185c2deb3858a34fe7f403d0a946fa56970cf60a1"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4c82a6d952a1d555bf4be42b6532927d2a5686dd3c3e280e5f63225ab47ac1f5"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4496b1282c70c442809fc1b151977c3d967bfb33e4e17cedbf226d97de18f709"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:e4946d6bdb7ba972dfda282f9127e5756d4f299028b1566d1245fa0d438847e6"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:03c0ae165e700364b266876d712acb1ac02693acd920afa67da2ebb91a0b3c09"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:3e3070e680f79887d60feeda051a58d0ac36622e1759f305a41059eff62c6da7"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6ca08b840fe95d1c2bd9ab92dac5685f949fc6f9ae820ec16193e5ddf603c3b2"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e76654e9dbfb835b3518f9938e565c7806976c07b37c33526b574cc1a1050480"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:871587bdadd1075b112e697173e946a07d722459d20716ceb3d1bd6c64bd08ce"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d0a2d1bd63a4ad79483049b26514e70fa618ce6115220da9efdff63688808b17"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0270b49b6847f0d106d64b5086e9ad5dc8a902413b5dbbb15d12b60f9c1747a4"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:703c60b9910488d3d0954ca585c34f541e506a091a41930e663a098d3b794c67"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74423631b6be371edfbf7eabb02ab995c2563fee60a80a30829176842e71722a"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4adfbb5451196842a88fda3612e2c0414134874bffb1c2ce83ab4242ec9e027d"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3516119f4f9b8671083a70b6afaa0a070f5683e431ab3dc26e9215620d7ca1ad"}, + {file = "pyzmq-26.0.3.tar.gz", hash = "sha256:dba7d9f2e047dfa2bca3b01f4f84aa5246725203d6284e3790f2ca15fba6b40a"}, +] + +[package.dependencies] +cffi = {version = "*", markers = "implementation_name == \"pypy\""} + [[package]] name = "readme-renderer" version = "43.0" @@ -1291,15 +2495,30 @@ Pygments = ">=2.5.1" [package.extras] md = ["cmarkgfm (>=0.8.0)"] +[[package]] +name = "referencing" +version = "0.35.1" +description = "JSON Referencing + Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"}, + {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"}, +] + +[package.dependencies] +attrs = ">=22.2.0" +rpds-py = ">=0.7.0" + [[package]] name = "requests" -version = "2.31.0" +version = "2.32.2" description = "Python HTTP for Humans." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, + {file = "requests-2.32.2-py3-none-any.whl", hash = "sha256:fc06670dd0ed212426dfeb94fc1b983d917c4f9847c863f313c9dfaaffb7c23c"}, + {file = "requests-2.32.2.tar.gz", hash = "sha256:dd951ff5ecf3e3b3aa26b40703ba77495dab41da839ae72ef3c8e5d8e2433289"}, ] [package.dependencies] @@ -1326,6 +2545,20 @@ files = [ [package.dependencies] requests = ">=2.0.1,<3.0.0" +[[package]] +name = "rfc3339-validator" +version = "0.1.4" +description = "A pure python RFC3339 validator" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, + {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"}, +] + +[package.dependencies] +six = "*" + [[package]] name = "rfc3986" version = "2.0.0" @@ -1340,6 +2573,17 @@ files = [ [package.extras] idna2008 = ["idna"] +[[package]] +name = "rfc3986-validator" +version = "0.1.1" +description = "Pure python rfc3986 validator" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"}, + {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"}, +] + [[package]] name = "rich" version = "13.7.1" @@ -1358,6 +2602,114 @@ pygments = ">=2.13.0,<3.0.0" [package.extras] jupyter = ["ipywidgets (>=7.5.1,<9)"] +[[package]] +name = "rpds-py" +version = "0.18.1" +description = "Python bindings to Rust's persistent data structures (rpds)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "rpds_py-0.18.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:d31dea506d718693b6b2cffc0648a8929bdc51c70a311b2770f09611caa10d53"}, + {file = "rpds_py-0.18.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:732672fbc449bab754e0b15356c077cc31566df874964d4801ab14f71951ea80"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a98a1f0552b5f227a3d6422dbd61bc6f30db170939bd87ed14f3c339aa6c7c9"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f1944ce16401aad1e3f7d312247b3d5de7981f634dc9dfe90da72b87d37887d"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:38e14fb4e370885c4ecd734f093a2225ee52dc384b86fa55fe3f74638b2cfb09"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08d74b184f9ab6289b87b19fe6a6d1a97fbfea84b8a3e745e87a5de3029bf944"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d70129cef4a8d979caa37e7fe957202e7eee8ea02c5e16455bc9808a59c6b2f0"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ce0bb20e3a11bd04461324a6a798af34d503f8d6f1aa3d2aa8901ceaf039176d"}, + {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:81c5196a790032e0fc2464c0b4ab95f8610f96f1f2fa3d4deacce6a79852da60"}, + {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:f3027be483868c99b4985fda802a57a67fdf30c5d9a50338d9db646d590198da"}, + {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d44607f98caa2961bab4fa3c4309724b185b464cdc3ba6f3d7340bac3ec97cc1"}, + {file = "rpds_py-0.18.1-cp310-none-win32.whl", hash = "sha256:c273e795e7a0f1fddd46e1e3cb8be15634c29ae8ff31c196debb620e1edb9333"}, + {file = "rpds_py-0.18.1-cp310-none-win_amd64.whl", hash = "sha256:8352f48d511de5f973e4f2f9412736d7dea76c69faa6d36bcf885b50c758ab9a"}, + {file = "rpds_py-0.18.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6b5ff7e1d63a8281654b5e2896d7f08799378e594f09cf3674e832ecaf396ce8"}, + {file = "rpds_py-0.18.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8927638a4d4137a289e41d0fd631551e89fa346d6dbcfc31ad627557d03ceb6d"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:154bf5c93d79558b44e5b50cc354aa0459e518e83677791e6adb0b039b7aa6a7"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07f2139741e5deb2c5154a7b9629bc5aa48c766b643c1a6750d16f865a82c5fc"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c7672e9fba7425f79019db9945b16e308ed8bc89348c23d955c8c0540da0a07"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:489bdfe1abd0406eba6b3bb4fdc87c7fa40f1031de073d0cfb744634cc8fa261"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c20f05e8e3d4fc76875fc9cb8cf24b90a63f5a1b4c5b9273f0e8225e169b100"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:967342e045564cef76dfcf1edb700b1e20838d83b1aa02ab313e6a497cf923b8"}, + {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2cc7c1a47f3a63282ab0f422d90ddac4aa3034e39fc66a559ab93041e6505da7"}, + {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f7afbfee1157e0f9376c00bb232e80a60e59ed716e3211a80cb8506550671e6e"}, + {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9e6934d70dc50f9f8ea47081ceafdec09245fd9f6032669c3b45705dea096b88"}, + {file = "rpds_py-0.18.1-cp311-none-win32.whl", hash = "sha256:c69882964516dc143083d3795cb508e806b09fc3800fd0d4cddc1df6c36e76bb"}, + {file = "rpds_py-0.18.1-cp311-none-win_amd64.whl", hash = "sha256:70a838f7754483bcdc830444952fd89645569e7452e3226de4a613a4c1793fb2"}, + {file = "rpds_py-0.18.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3dd3cd86e1db5aadd334e011eba4e29d37a104b403e8ca24dcd6703c68ca55b3"}, + {file = "rpds_py-0.18.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:05f3d615099bd9b13ecf2fc9cf2d839ad3f20239c678f461c753e93755d629ee"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35b2b771b13eee8729a5049c976197ff58a27a3829c018a04341bcf1ae409b2b"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ee17cd26b97d537af8f33635ef38be873073d516fd425e80559f4585a7b90c43"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b646bf655b135ccf4522ed43d6902af37d3f5dbcf0da66c769a2b3938b9d8184"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19ba472b9606c36716062c023afa2484d1e4220548751bda14f725a7de17b4f6"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e30ac5e329098903262dc5bdd7e2086e0256aa762cc8b744f9e7bf2a427d3f8"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d58ad6317d188c43750cb76e9deacf6051d0f884d87dc6518e0280438648a9ac"}, + {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e1735502458621921cee039c47318cb90b51d532c2766593be6207eec53e5c4c"}, + {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f5bab211605d91db0e2995a17b5c6ee5edec1270e46223e513eaa20da20076ac"}, + {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2fc24a329a717f9e2448f8cd1f960f9dac4e45b6224d60734edeb67499bab03a"}, + {file = "rpds_py-0.18.1-cp312-none-win32.whl", hash = "sha256:1805d5901779662d599d0e2e4159d8a82c0b05faa86ef9222bf974572286b2b6"}, + {file = "rpds_py-0.18.1-cp312-none-win_amd64.whl", hash = "sha256:720edcb916df872d80f80a1cc5ea9058300b97721efda8651efcd938a9c70a72"}, + {file = "rpds_py-0.18.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:c827576e2fa017a081346dce87d532a5310241648eb3700af9a571a6e9fc7e74"}, + {file = "rpds_py-0.18.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:aa3679e751408d75a0b4d8d26d6647b6d9326f5e35c00a7ccd82b78ef64f65f8"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0abeee75434e2ee2d142d650d1e54ac1f8b01e6e6abdde8ffd6eeac6e9c38e20"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed402d6153c5d519a0faf1bb69898e97fb31613b49da27a84a13935ea9164dfc"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:338dee44b0cef8b70fd2ef54b4e09bb1b97fc6c3a58fea5db6cc083fd9fc2724"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7750569d9526199c5b97e5a9f8d96a13300950d910cf04a861d96f4273d5b104"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:607345bd5912aacc0c5a63d45a1f73fef29e697884f7e861094e443187c02be5"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:207c82978115baa1fd8d706d720b4a4d2b0913df1c78c85ba73fe6c5804505f0"}, + {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6d1e42d2735d437e7e80bab4d78eb2e459af48c0a46e686ea35f690b93db792d"}, + {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:5463c47c08630007dc0fe99fb480ea4f34a89712410592380425a9b4e1611d8e"}, + {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:06d218939e1bf2ca50e6b0ec700ffe755e5216a8230ab3e87c059ebb4ea06afc"}, + {file = "rpds_py-0.18.1-cp38-none-win32.whl", hash = "sha256:312fe69b4fe1ffbe76520a7676b1e5ac06ddf7826d764cc10265c3b53f96dbe9"}, + {file = "rpds_py-0.18.1-cp38-none-win_amd64.whl", hash = "sha256:9437ca26784120a279f3137ee080b0e717012c42921eb07861b412340f85bae2"}, + {file = "rpds_py-0.18.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:19e515b78c3fc1039dd7da0a33c28c3154458f947f4dc198d3c72db2b6b5dc93"}, + {file = "rpds_py-0.18.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a7b28c5b066bca9a4eb4e2f2663012debe680f097979d880657f00e1c30875a0"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:673fdbbf668dd958eff750e500495ef3f611e2ecc209464f661bc82e9838991e"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d960de62227635d2e61068f42a6cb6aae91a7fe00fca0e3aeed17667c8a34611"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:352a88dc7892f1da66b6027af06a2e7e5d53fe05924cc2cfc56495b586a10b72"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4e0ee01ad8260184db21468a6e1c37afa0529acc12c3a697ee498d3c2c4dcaf3"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4c39ad2f512b4041343ea3c7894339e4ca7839ac38ca83d68a832fc8b3748ab"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aaa71ee43a703c321906813bb252f69524f02aa05bf4eec85f0c41d5d62d0f4c"}, + {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:6cd8098517c64a85e790657e7b1e509b9fe07487fd358e19431cb120f7d96338"}, + {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:4adec039b8e2928983f885c53b7cc4cda8965b62b6596501a0308d2703f8af1b"}, + {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:32b7daaa3e9389db3695964ce8e566e3413b0c43e3394c05e4b243a4cd7bef26"}, + {file = "rpds_py-0.18.1-cp39-none-win32.whl", hash = "sha256:2625f03b105328729f9450c8badda34d5243231eef6535f80064d57035738360"}, + {file = "rpds_py-0.18.1-cp39-none-win_amd64.whl", hash = "sha256:bf18932d0003c8c4d51a39f244231986ab23ee057d235a12b2684ea26a353590"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cbfbea39ba64f5e53ae2915de36f130588bba71245b418060ec3330ebf85678e"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a3d456ff2a6a4d2adcdf3c1c960a36f4fd2fec6e3b4902a42a384d17cf4e7a65"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7700936ef9d006b7ef605dc53aa364da2de5a3aa65516a1f3ce73bf82ecfc7ae"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:51584acc5916212e1bf45edd17f3a6b05fe0cbb40482d25e619f824dccb679de"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:942695a206a58d2575033ff1e42b12b2aece98d6003c6bc739fbf33d1773b12f"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b906b5f58892813e5ba5c6056d6a5ad08f358ba49f046d910ad992196ea61397"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6f8e3fecca256fefc91bb6765a693d96692459d7d4c644660a9fff32e517843"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7732770412bab81c5a9f6d20aeb60ae943a9b36dcd990d876a773526468e7163"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:bd1105b50ede37461c1d51b9698c4f4be6e13e69a908ab7751e3807985fc0346"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:618916f5535784960f3ecf8111581f4ad31d347c3de66d02e728de460a46303c"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:17c6d2155e2423f7e79e3bb18151c686d40db42d8645e7977442170c360194d4"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c4c4c3f878df21faf5fac86eda32671c27889e13570645a9eea0a1abdd50922"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:fab6ce90574645a0d6c58890e9bcaac8d94dff54fb51c69e5522a7358b80ab64"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:531796fb842b53f2695e94dc338929e9f9dbf473b64710c28af5a160b2a8927d"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:740884bc62a5e2bbb31e584f5d23b32320fd75d79f916f15a788d527a5e83644"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:998125738de0158f088aef3cb264a34251908dd2e5d9966774fdab7402edfab7"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e2be6e9dd4111d5b31ba3b74d17da54a8319d8168890fbaea4b9e5c3de630ae5"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0cee71bc618cd93716f3c1bf56653740d2d13ddbd47673efa8bf41435a60daa"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2c3caec4ec5cd1d18e5dd6ae5194d24ed12785212a90b37f5f7f06b8bedd7139"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:27bba383e8c5231cd559affe169ca0b96ec78d39909ffd817f28b166d7ddd4d8"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:a888e8bdb45916234b99da2d859566f1e8a1d2275a801bb8e4a9644e3c7e7909"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6031b25fb1b06327b43d841f33842b383beba399884f8228a6bb3df3088485ff"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:48c2faaa8adfacefcbfdb5f2e2e7bdad081e5ace8d182e5f4ade971f128e6bb3"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:d85164315bd68c0806768dc6bb0429c6f95c354f87485ee3593c4f6b14def2bd"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6afd80f6c79893cfc0574956f78a0add8c76e3696f2d6a15bca2c66c415cf2d4"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa242ac1ff583e4ec7771141606aafc92b361cd90a05c30d93e343a0c2d82a89"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21be4770ff4e08698e1e8e0bce06edb6ea0626e7c8f560bc08222880aca6a6f"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c45a639e93a0c5d4b788b2613bd637468edd62f8f95ebc6fcc303d58ab3f0a8"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910e71711d1055b2768181efa0a17537b2622afeb0424116619817007f8a2b10"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b9bb1f182a97880f6078283b3505a707057c42bf55d8fca604f70dedfdc0772a"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d54f74f40b1f7aaa595a02ff42ef38ca654b1469bef7d52867da474243cc633"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:8d2e182c9ee01135e11e9676e9a62dfad791a7a467738f06726872374a83db49"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:636a15acc588f70fda1661234761f9ed9ad79ebed3f2125d44be0862708b666e"}, + {file = "rpds_py-0.18.1.tar.gz", hash = "sha256:dc48b479d540770c811fbd1eb9ba2bb66951863e448efec2e2c102625328e92f"}, +] + [[package]] name = "secretstorage" version = "3.3.3" @@ -1373,6 +2725,22 @@ files = [ cryptography = ">=2.0" jeepney = ">=0.6" +[[package]] +name = "send2trash" +version = "1.8.3" +description = "Send file to trash natively under Mac OS X, Windows and Linux" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +files = [ + {file = "Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9"}, + {file = "Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf"}, +] + +[package.extras] +nativelib = ["pyobjc-framework-Cocoa", "pywin32"] +objc = ["pyobjc-framework-Cocoa"] +win32 = ["pywin32"] + [[package]] name = "setuptools" version = "70.0.0" @@ -1388,6 +2756,17 @@ files = [ docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] testing = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] + [[package]] name = "sniffio" version = "1.3.1" @@ -1457,6 +2836,47 @@ docs = ["sphinxcontrib-websupport"] lint = ["flake8 (>=3.5.0)", "importlib_metadata", "mypy (==1.9.0)", "pytest (>=6.0)", "ruff (==0.3.7)", "sphinx-lint", "tomli", "types-docutils", "types-requests"] test = ["cython (>=3.0)", "defusedxml (>=0.7.1)", "pytest (>=6.0)", "setuptools (>=67.0)"] +[[package]] +name = "sphinx-autobuild" +version = "2024.4.16" +description = "Rebuild Sphinx documentation on changes, with hot reloading in the browser." +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinx_autobuild-2024.4.16-py3-none-any.whl", hash = "sha256:f2522779d30fcbf0253e09714f274ce8c608cb6ebcd67922b1c54de59faba702"}, + {file = "sphinx_autobuild-2024.4.16.tar.gz", hash = "sha256:1c0ed37a1970eed197f9c5a66d65759e7c4e4cba7b5a5d77940752bf1a59f2c7"}, +] + +[package.dependencies] +colorama = "*" +sphinx = "*" +starlette = ">=0.35" +uvicorn = ">=0.25" +watchfiles = ">=0.20" +websockets = ">=11" + +[package.extras] +test = ["pytest (>=6)"] + +[[package]] +name = "sphinx-autodoc-typehints" +version = "2.1.0" +description = "Type hints (PEP 484) support for the Sphinx autodoc extension" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinx_autodoc_typehints-2.1.0-py3-none-any.whl", hash = "sha256:46f1a710b3ed35904f63a77c5e68334c5ee1c2e22828b75fdcd147f1c52c199b"}, + {file = "sphinx_autodoc_typehints-2.1.0.tar.gz", hash = "sha256:51bf8dc77c4fba747e32f0735002a91500747d0553cae616863848e8f5e49fe8"}, +] + +[package.dependencies] +sphinx = ">=7.3.5" + +[package.extras] +docs = ["furo (>=2024.1.29)"] +numpy = ["nptyping (>=2.5)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.4.4)", "defusedxml (>=0.7.1)", "diff-cover (>=9)", "pytest (>=8.1.1)", "pytest-cov (>=5)", "sphobjinv (>=2.3.1)", "typing-extensions (>=4.11)"] + [[package]] name = "sphinx-copybutton" version = "0.5.2" @@ -1593,6 +3013,43 @@ lint = ["docutils-stubs", "flake8", "mypy"] standalone = ["Sphinx (>=5)"] test = ["pytest"] +[[package]] +name = "stack-data" +version = "0.6.3" +description = "Extract data from python stack frames and tracebacks for informative displays" +optional = false +python-versions = "*" +files = [ + {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, + {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, +] + +[package.dependencies] +asttokens = ">=2.1.0" +executing = ">=1.2.0" +pure-eval = "*" + +[package.extras] +tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] + +[[package]] +name = "starlette" +version = "0.37.2" +description = "The little ASGI library that shines." +optional = false +python-versions = ">=3.8" +files = [ + {file = "starlette-0.37.2-py3-none-any.whl", hash = "sha256:6fe59f29268538e5d0d182f2791a479a0c64638e6935d1c6989e63fb2699c6ee"}, + {file = "starlette-0.37.2.tar.gz", hash = "sha256:9af890290133b79fc3db55474ade20f6220a364a0402e0b556e7cd5e1e093823"}, +] + +[package.dependencies] +anyio = ">=3.4.0,<5" +typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} + +[package.extras] +full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] + [[package]] name = "tabulate" version = "0.9.0" @@ -1622,6 +3079,45 @@ files = [ doc = ["reno", "sphinx"] test = ["pytest", "tornado (>=4.5)", "typeguard"] +[[package]] +name = "terminado" +version = "0.18.1" +description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." +optional = false +python-versions = ">=3.8" +files = [ + {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"}, + {file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e"}, +] + +[package.dependencies] +ptyprocess = {version = "*", markers = "os_name != \"nt\""} +pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""} +tornado = ">=6.1.0" + +[package.extras] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] +test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"] +typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"] + +[[package]] +name = "tinycss2" +version = "1.3.0" +description = "A tiny CSS parser" +optional = false +python-versions = ">=3.8" +files = [ + {file = "tinycss2-1.3.0-py3-none-any.whl", hash = "sha256:54a8dbdffb334d536851be0226030e9505965bb2f30f21a4a82c55fb2a80fae7"}, + {file = "tinycss2-1.3.0.tar.gz", hash = "sha256:152f9acabd296a8375fbca5b84c961ff95971fcfc32e79550c8df8e29118c54d"}, +] + +[package.dependencies] +webencodings = ">=0.4" + +[package.extras] +doc = ["sphinx", "sphinx_rtd_theme"] +test = ["pytest", "ruff"] + [[package]] name = "tomli" version = "2.0.1" @@ -1633,6 +3129,26 @@ files = [ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] +[[package]] +name = "tornado" +version = "6.4" +description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." +optional = false +python-versions = ">= 3.8" +files = [ + {file = "tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0"}, + {file = "tornado-6.4-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7894c581ecdcf91666a0912f18ce5e757213999e183ebfc2c3fdbf4d5bd764e"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e43bc2e5370a6a8e413e1e1cd0c91bedc5bd62a74a532371042a18ef19e10579"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0251554cdd50b4b44362f73ad5ba7126fc5b2c2895cc62b14a1c2d7ea32f212"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fd03192e287fbd0899dd8f81c6fb9cbbc69194d2074b38f384cb6fa72b80e9c2"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:88b84956273fbd73420e6d4b8d5ccbe913c65d31351b4c004ae362eba06e1f78"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:71ddfc23a0e03ef2df1c1397d859868d158c8276a0603b96cf86892bff58149f"}, + {file = "tornado-6.4-cp38-abi3-win32.whl", hash = "sha256:6f8a6c77900f5ae93d8b4ae1196472d0ccc2775cc1dfdc9e7727889145c45052"}, + {file = "tornado-6.4-cp38-abi3-win_amd64.whl", hash = "sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63"}, + {file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"}, +] + [[package]] name = "tox" version = "4.15.0" @@ -1660,15 +3176,30 @@ virtualenv = ">=20.25" docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-argparse-cli (>=1.11.1)", "sphinx-autodoc-typehints (>=1.25.2)", "sphinx-copybutton (>=0.5.2)", "sphinx-inline-tabs (>=2023.4.21)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.11)"] testing = ["build[virtualenv] (>=1.0.3)", "covdefaults (>=2.3)", "detect-test-pollution (>=1.2)", "devpi-process (>=1)", "diff-cover (>=8.0.2)", "distlib (>=0.3.8)", "flaky (>=3.7)", "hatch-vcs (>=0.4)", "hatchling (>=1.21)", "psutil (>=5.9.7)", "pytest (>=7.4.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-xdist (>=3.5)", "re-assert (>=1.1)", "time-machine (>=2.13)", "wheel (>=0.42)"] +[[package]] +name = "traitlets" +version = "5.14.3" +description = "Traitlets Python configuration system" +optional = false +python-versions = ">=3.8" +files = [ + {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, + {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, +] + +[package.extras] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] +test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"] + [[package]] name = "twine" -version = "5.0.0" +version = "5.1.0" description = "Collection of utilities for publishing packages on PyPI" optional = false python-versions = ">=3.8" files = [ - {file = "twine-5.0.0-py3-none-any.whl", hash = "sha256:a262933de0b484c53408f9edae2e7821c1c45a3314ff2df9bdd343aa7ab8edc0"}, - {file = "twine-5.0.0.tar.gz", hash = "sha256:89b0cc7d370a4b66421cc6102f269aa910fe0f1861c124f573cf2ddedbc10cf4"}, + {file = "twine-5.1.0-py3-none-any.whl", hash = "sha256:fe1d814395bfe50cfbe27783cb74efe93abeac3f66deaeb6c8390e4e92bacb43"}, + {file = "twine-5.1.0.tar.gz", hash = "sha256:4d74770c88c4fcaf8134d2a6a9d863e40f08255ff7d8e2acb3cbbd57d25f6e9d"}, ] [package.dependencies] @@ -1682,17 +3213,42 @@ rfc3986 = ">=1.4.0" rich = ">=12.0.0" urllib3 = ">=1.26.0" +[[package]] +name = "types-python-dateutil" +version = "2.9.0.20240316" +description = "Typing stubs for python-dateutil" +optional = false +python-versions = ">=3.8" +files = [ + {file = "types-python-dateutil-2.9.0.20240316.tar.gz", hash = "sha256:5d2f2e240b86905e40944dd787db6da9263f0deabef1076ddaed797351ec0202"}, + {file = "types_python_dateutil-2.9.0.20240316-py3-none-any.whl", hash = "sha256:6b8cb66d960771ce5ff974e9dd45e38facb81718cc1e208b10b1baccbfdbee3b"}, +] + [[package]] name = "typing-extensions" -version = "4.11.0" +version = "4.12.0" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"}, - {file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"}, + {file = "typing_extensions-4.12.0-py3-none-any.whl", hash = "sha256:b349c66bea9016ac22978d800cfff206d5f9816951f12a7d0ec5578b0a819594"}, + {file = "typing_extensions-4.12.0.tar.gz", hash = "sha256:8cbcdc8606ebcb0d95453ad7dc5065e6237b6aa230a31e81d0f440c30fed5fd8"}, ] +[[package]] +name = "uri-template" +version = "1.3.0" +description = "RFC 6570 URI Template Processor" +optional = false +python-versions = ">=3.7" +files = [ + {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, + {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, +] + +[package.extras] +dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"] + [[package]] name = "urllib3" version = "2.2.1" @@ -1710,15 +3266,34 @@ h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] +[[package]] +name = "uvicorn" +version = "0.30.0" +description = "The lightning-fast ASGI server." +optional = false +python-versions = ">=3.8" +files = [ + {file = "uvicorn-0.30.0-py3-none-any.whl", hash = "sha256:78fa0b5f56abb8562024a59041caeb555c86e48d0efdd23c3fe7de7a4075bdab"}, + {file = "uvicorn-0.30.0.tar.gz", hash = "sha256:f678dec4fa3a39706bbf49b9ec5fc40049d42418716cea52b53f07828a60aa37"}, +] + +[package.dependencies] +click = ">=7.0" +h11 = ">=0.8" +typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""} + +[package.extras] +standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] + [[package]] name = "virtualenv" -version = "20.26.1" +version = "20.26.2" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.7" files = [ - {file = "virtualenv-20.26.1-py3-none-any.whl", hash = "sha256:7aa9982a728ae5892558bff6a2839c00b9ed145523ece2274fad6f414690ae75"}, - {file = "virtualenv-20.26.1.tar.gz", hash = "sha256:604bfdceaeece392802e6ae48e69cec49168b9c5f4a44e483963f9242eb0e78b"}, + {file = "virtualenv-20.26.2-py3-none-any.whl", hash = "sha256:a624db5e94f01ad993d476b9ee5346fdf7b9de43ccaee0e0197012dc838a0e9b"}, + {file = "virtualenv-20.26.2.tar.gz", hash = "sha256:82bf0f4eebbb78d36ddaee0283d43fe5736b53880b8a8cdcd37390a07ac3741c"}, ] [package.dependencies] @@ -1730,22 +3305,254 @@ platformdirs = ">=3.9.1,<5" docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] +[[package]] +name = "watchfiles" +version = "0.22.0" +description = "Simple, modern and high performance file watching and code reload in python." +optional = false +python-versions = ">=3.8" +files = [ + {file = "watchfiles-0.22.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:da1e0a8caebf17976e2ffd00fa15f258e14749db5e014660f53114b676e68538"}, + {file = "watchfiles-0.22.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:61af9efa0733dc4ca462347becb82e8ef4945aba5135b1638bfc20fad64d4f0e"}, + {file = "watchfiles-0.22.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d9188979a58a096b6f8090e816ccc3f255f137a009dd4bbec628e27696d67c1"}, + {file = "watchfiles-0.22.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2bdadf6b90c099ca079d468f976fd50062905d61fae183f769637cb0f68ba59a"}, + {file = "watchfiles-0.22.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:067dea90c43bf837d41e72e546196e674f68c23702d3ef80e4e816937b0a3ffd"}, + {file = "watchfiles-0.22.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bbf8a20266136507abf88b0df2328e6a9a7c7309e8daff124dda3803306a9fdb"}, + {file = "watchfiles-0.22.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1235c11510ea557fe21be5d0e354bae2c655a8ee6519c94617fe63e05bca4171"}, + {file = "watchfiles-0.22.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2444dc7cb9d8cc5ab88ebe792a8d75709d96eeef47f4c8fccb6df7c7bc5be71"}, + {file = "watchfiles-0.22.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c5af2347d17ab0bd59366db8752d9e037982e259cacb2ba06f2c41c08af02c39"}, + {file = "watchfiles-0.22.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9624a68b96c878c10437199d9a8b7d7e542feddda8d5ecff58fdc8e67b460848"}, + {file = "watchfiles-0.22.0-cp310-none-win32.whl", hash = "sha256:4b9f2a128a32a2c273d63eb1fdbf49ad64852fc38d15b34eaa3f7ca2f0d2b797"}, + {file = "watchfiles-0.22.0-cp310-none-win_amd64.whl", hash = "sha256:2627a91e8110b8de2406d8b2474427c86f5a62bf7d9ab3654f541f319ef22bcb"}, + {file = "watchfiles-0.22.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8c39987a1397a877217be1ac0fb1d8b9f662c6077b90ff3de2c05f235e6a8f96"}, + {file = "watchfiles-0.22.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a927b3034d0672f62fb2ef7ea3c9fc76d063c4b15ea852d1db2dc75fe2c09696"}, + {file = "watchfiles-0.22.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:052d668a167e9fc345c24203b104c313c86654dd6c0feb4b8a6dfc2462239249"}, + {file = "watchfiles-0.22.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e45fb0d70dda1623a7045bd00c9e036e6f1f6a85e4ef2c8ae602b1dfadf7550"}, + {file = "watchfiles-0.22.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c49b76a78c156979759d759339fb62eb0549515acfe4fd18bb151cc07366629c"}, + {file = "watchfiles-0.22.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4a65474fd2b4c63e2c18ac67a0c6c66b82f4e73e2e4d940f837ed3d2fd9d4da"}, + {file = "watchfiles-0.22.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1cc0cba54f47c660d9fa3218158b8963c517ed23bd9f45fe463f08262a4adae1"}, + {file = "watchfiles-0.22.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94ebe84a035993bb7668f58a0ebf998174fb723a39e4ef9fce95baabb42b787f"}, + {file = "watchfiles-0.22.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e0f0a874231e2839abbf473256efffe577d6ee2e3bfa5b540479e892e47c172d"}, + {file = "watchfiles-0.22.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:213792c2cd3150b903e6e7884d40660e0bcec4465e00563a5fc03f30ea9c166c"}, + {file = "watchfiles-0.22.0-cp311-none-win32.whl", hash = "sha256:b44b70850f0073b5fcc0b31ede8b4e736860d70e2dbf55701e05d3227a154a67"}, + {file = "watchfiles-0.22.0-cp311-none-win_amd64.whl", hash = "sha256:00f39592cdd124b4ec5ed0b1edfae091567c72c7da1487ae645426d1b0ffcad1"}, + {file = "watchfiles-0.22.0-cp311-none-win_arm64.whl", hash = "sha256:3218a6f908f6a276941422b035b511b6d0d8328edd89a53ae8c65be139073f84"}, + {file = "watchfiles-0.22.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:c7b978c384e29d6c7372209cbf421d82286a807bbcdeb315427687f8371c340a"}, + {file = "watchfiles-0.22.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bd4c06100bce70a20c4b81e599e5886cf504c9532951df65ad1133e508bf20be"}, + {file = "watchfiles-0.22.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:425440e55cd735386ec7925f64d5dde392e69979d4c8459f6bb4e920210407f2"}, + {file = "watchfiles-0.22.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:68fe0c4d22332d7ce53ad094622b27e67440dacefbaedd29e0794d26e247280c"}, + {file = "watchfiles-0.22.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a8a31bfd98f846c3c284ba694c6365620b637debdd36e46e1859c897123aa232"}, + {file = "watchfiles-0.22.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc2e8fe41f3cac0660197d95216c42910c2b7e9c70d48e6d84e22f577d106fc1"}, + {file = "watchfiles-0.22.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b7cc10261c2786c41d9207193a85c1db1b725cf87936df40972aab466179b6"}, + {file = "watchfiles-0.22.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28585744c931576e535860eaf3f2c0ec7deb68e3b9c5a85ca566d69d36d8dd27"}, + {file = "watchfiles-0.22.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:00095dd368f73f8f1c3a7982a9801190cc88a2f3582dd395b289294f8975172b"}, + {file = "watchfiles-0.22.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:52fc9b0dbf54d43301a19b236b4a4614e610605f95e8c3f0f65c3a456ffd7d35"}, + {file = "watchfiles-0.22.0-cp312-none-win32.whl", hash = "sha256:581f0a051ba7bafd03e17127735d92f4d286af941dacf94bcf823b101366249e"}, + {file = "watchfiles-0.22.0-cp312-none-win_amd64.whl", hash = "sha256:aec83c3ba24c723eac14225194b862af176d52292d271c98820199110e31141e"}, + {file = "watchfiles-0.22.0-cp312-none-win_arm64.whl", hash = "sha256:c668228833c5619f6618699a2c12be057711b0ea6396aeaece4ded94184304ea"}, + {file = "watchfiles-0.22.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d47e9ef1a94cc7a536039e46738e17cce058ac1593b2eccdede8bf72e45f372a"}, + {file = "watchfiles-0.22.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:28f393c1194b6eaadcdd8f941307fc9bbd7eb567995232c830f6aef38e8a6e88"}, + {file = "watchfiles-0.22.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd64f3a4db121bc161644c9e10a9acdb836853155a108c2446db2f5ae1778c3d"}, + {file = "watchfiles-0.22.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2abeb79209630da981f8ebca30a2c84b4c3516a214451bfc5f106723c5f45843"}, + {file = "watchfiles-0.22.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4cc382083afba7918e32d5ef12321421ef43d685b9a67cc452a6e6e18920890e"}, + {file = "watchfiles-0.22.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d048ad5d25b363ba1d19f92dcf29023988524bee6f9d952130b316c5802069cb"}, + {file = "watchfiles-0.22.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:103622865599f8082f03af4214eaff90e2426edff5e8522c8f9e93dc17caee13"}, + {file = "watchfiles-0.22.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3e1f3cf81f1f823e7874ae563457828e940d75573c8fbf0ee66818c8b6a9099"}, + {file = "watchfiles-0.22.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8597b6f9dc410bdafc8bb362dac1cbc9b4684a8310e16b1ff5eee8725d13dcd6"}, + {file = "watchfiles-0.22.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0b04a2cbc30e110303baa6d3ddce8ca3664bc3403be0f0ad513d1843a41c97d1"}, + {file = "watchfiles-0.22.0-cp38-none-win32.whl", hash = "sha256:b610fb5e27825b570554d01cec427b6620ce9bd21ff8ab775fc3a32f28bba63e"}, + {file = "watchfiles-0.22.0-cp38-none-win_amd64.whl", hash = "sha256:fe82d13461418ca5e5a808a9e40f79c1879351fcaeddbede094028e74d836e86"}, + {file = "watchfiles-0.22.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3973145235a38f73c61474d56ad6199124e7488822f3a4fc97c72009751ae3b0"}, + {file = "watchfiles-0.22.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:280a4afbc607cdfc9571b9904b03a478fc9f08bbeec382d648181c695648202f"}, + {file = "watchfiles-0.22.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a0d883351a34c01bd53cfa75cd0292e3f7e268bacf2f9e33af4ecede7e21d1d"}, + {file = "watchfiles-0.22.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9165bcab15f2b6d90eedc5c20a7f8a03156b3773e5fb06a790b54ccecdb73385"}, + {file = "watchfiles-0.22.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc1b9b56f051209be458b87edb6856a449ad3f803315d87b2da4c93b43a6fe72"}, + {file = "watchfiles-0.22.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8dc1fc25a1dedf2dd952909c8e5cb210791e5f2d9bc5e0e8ebc28dd42fed7562"}, + {file = "watchfiles-0.22.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dc92d2d2706d2b862ce0568b24987eba51e17e14b79a1abcd2edc39e48e743c8"}, + {file = "watchfiles-0.22.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97b94e14b88409c58cdf4a8eaf0e67dfd3ece7e9ce7140ea6ff48b0407a593ec"}, + {file = "watchfiles-0.22.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:96eec15e5ea7c0b6eb5bfffe990fc7c6bd833acf7e26704eb18387fb2f5fd087"}, + {file = "watchfiles-0.22.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:28324d6b28bcb8d7c1041648d7b63be07a16db5510bea923fc80b91a2a6cbed6"}, + {file = "watchfiles-0.22.0-cp39-none-win32.whl", hash = "sha256:8c3e3675e6e39dc59b8fe5c914a19d30029e36e9f99468dddffd432d8a7b1c93"}, + {file = "watchfiles-0.22.0-cp39-none-win_amd64.whl", hash = "sha256:25c817ff2a86bc3de3ed2df1703e3d24ce03479b27bb4527c57e722f8554d971"}, + {file = "watchfiles-0.22.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b810a2c7878cbdecca12feae2c2ae8af59bea016a78bc353c184fa1e09f76b68"}, + {file = "watchfiles-0.22.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:f7e1f9c5d1160d03b93fc4b68a0aeb82fe25563e12fbcdc8507f8434ab6f823c"}, + {file = "watchfiles-0.22.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:030bc4e68d14bcad2294ff68c1ed87215fbd9a10d9dea74e7cfe8a17869785ab"}, + {file = "watchfiles-0.22.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ace7d060432acde5532e26863e897ee684780337afb775107c0a90ae8dbccfd2"}, + {file = "watchfiles-0.22.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5834e1f8b71476a26df97d121c0c0ed3549d869124ed2433e02491553cb468c2"}, + {file = "watchfiles-0.22.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:0bc3b2f93a140df6806c8467c7f51ed5e55a931b031b5c2d7ff6132292e803d6"}, + {file = "watchfiles-0.22.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8fdebb655bb1ba0122402352b0a4254812717a017d2dc49372a1d47e24073795"}, + {file = "watchfiles-0.22.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c8e0aa0e8cc2a43561e0184c0513e291ca891db13a269d8d47cb9841ced7c71"}, + {file = "watchfiles-0.22.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2f350cbaa4bb812314af5dab0eb8d538481e2e2279472890864547f3fe2281ed"}, + {file = "watchfiles-0.22.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7a74436c415843af2a769b36bf043b6ccbc0f8d784814ba3d42fc961cdb0a9dc"}, + {file = "watchfiles-0.22.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00ad0bcd399503a84cc688590cdffbe7a991691314dde5b57b3ed50a41319a31"}, + {file = "watchfiles-0.22.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72a44e9481afc7a5ee3291b09c419abab93b7e9c306c9ef9108cb76728ca58d2"}, + {file = "watchfiles-0.22.0.tar.gz", hash = "sha256:988e981aaab4f3955209e7e28c7794acdb690be1efa7f16f8ea5aba7ffdadacb"}, +] + +[package.dependencies] +anyio = ">=3.0.0" + +[[package]] +name = "wcwidth" +version = "0.2.13" +description = "Measures the displayed width of unicode strings in a terminal" +optional = false +python-versions = "*" +files = [ + {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, + {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, +] + +[[package]] +name = "webcolors" +version = "1.13" +description = "A library for working with the color formats defined by HTML and CSS." +optional = false +python-versions = ">=3.7" +files = [ + {file = "webcolors-1.13-py3-none-any.whl", hash = "sha256:29bc7e8752c0a1bd4a1f03c14d6e6a72e93d82193738fa860cbff59d0fcc11bf"}, + {file = "webcolors-1.13.tar.gz", hash = "sha256:c225b674c83fa923be93d235330ce0300373d02885cef23238813b0d5668304a"}, +] + +[package.extras] +docs = ["furo", "sphinx", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-notfound-page", "sphinxext-opengraph"] +tests = ["pytest", "pytest-cov"] + +[[package]] +name = "webencodings" +version = "0.5.1" +description = "Character encoding aliases for legacy web content" +optional = false +python-versions = "*" +files = [ + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, +] + +[[package]] +name = "websocket-client" +version = "1.8.0" +description = "WebSocket client for Python with low level API options" +optional = false +python-versions = ">=3.8" +files = [ + {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, + {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"}, +] + +[package.extras] +docs = ["Sphinx (>=6.0)", "myst-parser (>=2.0.0)", "sphinx-rtd-theme (>=1.1.0)"] +optional = ["python-socks", "wsaccel"] +test = ["websockets"] + +[[package]] +name = "websockets" +version = "12.0" +description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "websockets-12.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d554236b2a2006e0ce16315c16eaa0d628dab009c33b63ea03f41c6107958374"}, + {file = "websockets-12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2d225bb6886591b1746b17c0573e29804619c8f755b5598d875bb4235ea639be"}, + {file = "websockets-12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:eb809e816916a3b210bed3c82fb88eaf16e8afcf9c115ebb2bacede1797d2547"}, + {file = "websockets-12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c588f6abc13f78a67044c6b1273a99e1cf31038ad51815b3b016ce699f0d75c2"}, + {file = "websockets-12.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5aa9348186d79a5f232115ed3fa9020eab66d6c3437d72f9d2c8ac0c6858c558"}, + {file = "websockets-12.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6350b14a40c95ddd53e775dbdbbbc59b124a5c8ecd6fbb09c2e52029f7a9f480"}, + {file = "websockets-12.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:70ec754cc2a769bcd218ed8d7209055667b30860ffecb8633a834dde27d6307c"}, + {file = "websockets-12.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6e96f5ed1b83a8ddb07909b45bd94833b0710f738115751cdaa9da1fb0cb66e8"}, + {file = "websockets-12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4d87be612cbef86f994178d5186add3d94e9f31cc3cb499a0482b866ec477603"}, + {file = "websockets-12.0-cp310-cp310-win32.whl", hash = "sha256:befe90632d66caaf72e8b2ed4d7f02b348913813c8b0a32fae1cc5fe3730902f"}, + {file = "websockets-12.0-cp310-cp310-win_amd64.whl", hash = "sha256:363f57ca8bc8576195d0540c648aa58ac18cf85b76ad5202b9f976918f4219cf"}, + {file = "websockets-12.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5d873c7de42dea355d73f170be0f23788cf3fa9f7bed718fd2830eefedce01b4"}, + {file = "websockets-12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3f61726cae9f65b872502ff3c1496abc93ffbe31b278455c418492016e2afc8f"}, + {file = "websockets-12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ed2fcf7a07334c77fc8a230755c2209223a7cc44fc27597729b8ef5425aa61a3"}, + {file = "websockets-12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e332c210b14b57904869ca9f9bf4ca32f5427a03eeb625da9b616c85a3a506c"}, + {file = "websockets-12.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5693ef74233122f8ebab026817b1b37fe25c411ecfca084b29bc7d6efc548f45"}, + {file = "websockets-12.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e9e7db18b4539a29cc5ad8c8b252738a30e2b13f033c2d6e9d0549b45841c04"}, + {file = "websockets-12.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6e2df67b8014767d0f785baa98393725739287684b9f8d8a1001eb2839031447"}, + {file = "websockets-12.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:bea88d71630c5900690fcb03161ab18f8f244805c59e2e0dc4ffadae0a7ee0ca"}, + {file = "websockets-12.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dff6cdf35e31d1315790149fee351f9e52978130cef6c87c4b6c9b3baf78bc53"}, + {file = "websockets-12.0-cp311-cp311-win32.whl", hash = "sha256:3e3aa8c468af01d70332a382350ee95f6986db479ce7af14d5e81ec52aa2b402"}, + {file = "websockets-12.0-cp311-cp311-win_amd64.whl", hash = "sha256:25eb766c8ad27da0f79420b2af4b85d29914ba0edf69f547cc4f06ca6f1d403b"}, + {file = "websockets-12.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0e6e2711d5a8e6e482cacb927a49a3d432345dfe7dea8ace7b5790df5932e4df"}, + {file = "websockets-12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:dbcf72a37f0b3316e993e13ecf32f10c0e1259c28ffd0a85cee26e8549595fbc"}, + {file = "websockets-12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12743ab88ab2af1d17dd4acb4645677cb7063ef4db93abffbf164218a5d54c6b"}, + {file = "websockets-12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b645f491f3c48d3f8a00d1fce07445fab7347fec54a3e65f0725d730d5b99cb"}, + {file = "websockets-12.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9893d1aa45a7f8b3bc4510f6ccf8db8c3b62120917af15e3de247f0780294b92"}, + {file = "websockets-12.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f38a7b376117ef7aff996e737583172bdf535932c9ca021746573bce40165ed"}, + {file = "websockets-12.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f764ba54e33daf20e167915edc443b6f88956f37fb606449b4a5b10ba42235a5"}, + {file = "websockets-12.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:1e4b3f8ea6a9cfa8be8484c9221ec0257508e3a1ec43c36acdefb2a9c3b00aa2"}, + {file = "websockets-12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9fdf06fd06c32205a07e47328ab49c40fc1407cdec801d698a7c41167ea45113"}, + {file = "websockets-12.0-cp312-cp312-win32.whl", hash = "sha256:baa386875b70cbd81798fa9f71be689c1bf484f65fd6fb08d051a0ee4e79924d"}, + {file = "websockets-12.0-cp312-cp312-win_amd64.whl", hash = "sha256:ae0a5da8f35a5be197f328d4727dbcfafa53d1824fac3d96cdd3a642fe09394f"}, + {file = "websockets-12.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5f6ffe2c6598f7f7207eef9a1228b6f5c818f9f4d53ee920aacd35cec8110438"}, + {file = "websockets-12.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9edf3fc590cc2ec20dc9d7a45108b5bbaf21c0d89f9fd3fd1685e223771dc0b2"}, + {file = "websockets-12.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8572132c7be52632201a35f5e08348137f658e5ffd21f51f94572ca6c05ea81d"}, + {file = "websockets-12.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:604428d1b87edbf02b233e2c207d7d528460fa978f9e391bd8aaf9c8311de137"}, + {file = "websockets-12.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1a9d160fd080c6285e202327aba140fc9a0d910b09e423afff4ae5cbbf1c7205"}, + {file = "websockets-12.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87b4aafed34653e465eb77b7c93ef058516cb5acf3eb21e42f33928616172def"}, + {file = "websockets-12.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b2ee7288b85959797970114deae81ab41b731f19ebcd3bd499ae9ca0e3f1d2c8"}, + {file = "websockets-12.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:7fa3d25e81bfe6a89718e9791128398a50dec6d57faf23770787ff441d851967"}, + {file = "websockets-12.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a571f035a47212288e3b3519944f6bf4ac7bc7553243e41eac50dd48552b6df7"}, + {file = "websockets-12.0-cp38-cp38-win32.whl", hash = "sha256:3c6cc1360c10c17463aadd29dd3af332d4a1adaa8796f6b0e9f9df1fdb0bad62"}, + {file = "websockets-12.0-cp38-cp38-win_amd64.whl", hash = "sha256:1bf386089178ea69d720f8db6199a0504a406209a0fc23e603b27b300fdd6892"}, + {file = "websockets-12.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ab3d732ad50a4fbd04a4490ef08acd0517b6ae6b77eb967251f4c263011a990d"}, + {file = "websockets-12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a1d9697f3337a89691e3bd8dc56dea45a6f6d975f92e7d5f773bc715c15dde28"}, + {file = "websockets-12.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1df2fbd2c8a98d38a66f5238484405b8d1d16f929bb7a33ed73e4801222a6f53"}, + {file = "websockets-12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23509452b3bc38e3a057382c2e941d5ac2e01e251acce7adc74011d7d8de434c"}, + {file = "websockets-12.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e5fc14ec6ea568200ea4ef46545073da81900a2b67b3e666f04adf53ad452ec"}, + {file = "websockets-12.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46e71dbbd12850224243f5d2aeec90f0aaa0f2dde5aeeb8fc8df21e04d99eff9"}, + {file = "websockets-12.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b81f90dcc6c85a9b7f29873beb56c94c85d6f0dac2ea8b60d995bd18bf3e2aae"}, + {file = "websockets-12.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:a02413bc474feda2849c59ed2dfb2cddb4cd3d2f03a2fedec51d6e959d9b608b"}, + {file = "websockets-12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bbe6013f9f791944ed31ca08b077e26249309639313fff132bfbf3ba105673b9"}, + {file = "websockets-12.0-cp39-cp39-win32.whl", hash = "sha256:cbe83a6bbdf207ff0541de01e11904827540aa069293696dd528a6640bd6a5f6"}, + {file = "websockets-12.0-cp39-cp39-win_amd64.whl", hash = "sha256:fc4e7fa5414512b481a2483775a8e8be7803a35b30ca805afa4998a84f9fd9e8"}, + {file = "websockets-12.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:248d8e2446e13c1d4326e0a6a4e9629cb13a11195051a73acf414812700badbd"}, + {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f44069528d45a933997a6fef143030d8ca8042f0dfaad753e2906398290e2870"}, + {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c4e37d36f0d19f0a4413d3e18c0d03d0c268ada2061868c1e6f5ab1a6d575077"}, + {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d829f975fc2e527a3ef2f9c8f25e553eb7bc779c6665e8e1d52aa22800bb38b"}, + {file = "websockets-12.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:2c71bd45a777433dd9113847af751aae36e448bc6b8c361a566cb043eda6ec30"}, + {file = "websockets-12.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0bee75f400895aef54157b36ed6d3b308fcab62e5260703add87f44cee9c82a6"}, + {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:423fc1ed29f7512fceb727e2d2aecb952c46aa34895e9ed96071821309951123"}, + {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27a5e9964ef509016759f2ef3f2c1e13f403725a5e6a1775555994966a66e931"}, + {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3181df4583c4d3994d31fb235dc681d2aaad744fbdbf94c4802485ececdecf2"}, + {file = "websockets-12.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:b067cb952ce8bf40115f6c19f478dc71c5e719b7fbaa511359795dfd9d1a6468"}, + {file = "websockets-12.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:00700340c6c7ab788f176d118775202aadea7602c5cc6be6ae127761c16d6b0b"}, + {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e469d01137942849cff40517c97a30a93ae79917752b34029f0ec72df6b46399"}, + {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffefa1374cd508d633646d51a8e9277763a9b78ae71324183693959cf94635a7"}, + {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba0cab91b3956dfa9f512147860783a1829a8d905ee218a9837c18f683239611"}, + {file = "websockets-12.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2cb388a5bfb56df4d9a406783b7f9dbefb888c09b71629351cc6b036e9259370"}, + {file = "websockets-12.0-py3-none-any.whl", hash = "sha256:dc284bbc8d7c78a6c69e0c7325ab46ee5e40bb4d50e494d8131a07ef47500e9e"}, + {file = "websockets-12.0.tar.gz", hash = "sha256:81df9cbcbb6c260de1e007e58c011bfebe2dafc8435107b0537f393dd38c8b1b"}, +] + +[[package]] +name = "widgetsnbextension" +version = "4.0.11" +description = "Jupyter interactive widgets for Jupyter Notebook" +optional = false +python-versions = ">=3.7" +files = [ + {file = "widgetsnbextension-4.0.11-py3-none-any.whl", hash = "sha256:55d4d6949d100e0d08b94948a42efc3ed6dfdc0e9468b2c4b128c9a2ce3a7a36"}, + {file = "widgetsnbextension-4.0.11.tar.gz", hash = "sha256:8b22a8f1910bfd188e596fe7fc05dcbd87e810c8a4ba010bdb3da86637398474"}, +] + [[package]] name = "zipp" -version = "3.18.1" +version = "3.19.0" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.18.1-py3-none-any.whl", hash = "sha256:206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b"}, - {file = "zipp-3.18.1.tar.gz", hash = "sha256:2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715"}, + {file = "zipp-3.19.0-py3-none-any.whl", hash = "sha256:96dc6ad62f1441bcaccef23b274ec471518daf4fbbc580341204936a5a3dddec"}, + {file = "zipp-3.19.0.tar.gz", hash = "sha256:952df858fb3164426c976d9338d3961e8e8b3758e2e059e0f754b8c4262625ee"}, ] [package.extras] docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] [metadata] lock-version = "2.0" python-versions = ">=3.9,<4.0" -content-hash = "0aec7a7bb272071116b995c44172b2bee814278d746b9f2d591471775a4032e4" +content-hash = "e150d1aa551b23e336338fb64dc065344a91a6ac063ddcbeaa04eca44931f595" diff --git a/pyproject.toml b/pyproject.toml index a0fe0bc4..6afc56e2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -50,9 +50,18 @@ pre-commit = "^3.7.1" optional = true [tool.poetry.group.doc.dependencies] -Sphinx = "^7.2.6" -numpydoc = "^1.5.0" ansys-sphinx-theme = "^0.14.0" +ipython = "^8.1" +ipywidgets = "^8.1.3" +jupyterlab = "^4.2.1" +jupytext = "^1.15" +nbconvert = "^7.16.4" +nbsphinx = "^0.9.3" +numpydoc = "^1.5.0" +pypandoc = "^1.13" +Sphinx = "^7.2.6" +sphinx-autobuild = "^2024.4.16" +sphinx-autodoc-typehints = "^2.1.0" sphinx-copybutton = "^0.5.1" sphinx-design = "^0.6.0" From b57fba8773c936921ee6eb24f7dd5d9956430930 Mon Sep 17 00:00:00 2001 From: pyansys-ci-bot Date: Thu, 30 May 2024 16:14:54 +0000 Subject: [PATCH 02/17] Adding changelog entry: 43.changed.md --- doc/changelog.d/43.changed.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/changelog.d/43.changed.md diff --git a/doc/changelog.d/43.changed.md b/doc/changelog.d/43.changed.md new file mode 100644 index 00000000..1863aed5 --- /dev/null +++ b/doc/changelog.d/43.changed.md @@ -0,0 +1 @@ +DOCS: Rework example documentation \ No newline at end of file From 7b3cf8a76cca4c2ff6dd0d2d94aa7bd115314b1c Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Thu, 30 May 2024 18:21:38 +0200 Subject: [PATCH 03/17] CHORE: Update poetry lock file --- poetry.lock | 53 +++++++++++++++-------------------------------------- 1 file changed, 15 insertions(+), 38 deletions(-) diff --git a/poetry.lock b/poetry.lock index 560b2f94..67854468 100644 --- a/poetry.lock +++ b/poetry.lock @@ -225,18 +225,18 @@ dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] [[package]] name = "backports-tarfile" -version = "1.1.1" +version = "1.2.0" description = "Backport of CPython tarfile module" optional = false python-versions = ">=3.8" files = [ - {file = "backports.tarfile-1.1.1-py3-none-any.whl", hash = "sha256:73e0179647803d3726d82e76089d01d8549ceca9bace469953fcb4d97cf2d417"}, - {file = "backports_tarfile-1.1.1.tar.gz", hash = "sha256:9c2ef9696cb73374f7164e17fc761389393ca76777036f5aad42e8b93fcd8009"}, + {file = "backports.tarfile-1.2.0-py3-none-any.whl", hash = "sha256:77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34"}, + {file = "backports_tarfile-1.2.0.tar.gz", hash = "sha256:d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991"}, ] [package.extras] docs = ["furo", "jaraco.packaging (>=9.3)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["jaraco.test", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)"] +testing = ["jaraco.test", "pytest (!=8.0.*)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)"] [[package]] name = "beautifulsoup4" @@ -1784,18 +1784,15 @@ files = [ [[package]] name = "nodeenv" -version = "1.8.0" +version = "1.9.0" description = "Node.js virtual environment builder" optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "nodeenv-1.8.0-py2.py3-none-any.whl", hash = "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec"}, - {file = "nodeenv-1.8.0.tar.gz", hash = "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2"}, + {file = "nodeenv-1.9.0-py2.py3-none-any.whl", hash = "sha256:508ecec98f9f3330b636d4448c0f1a56fc68017c68f1e7857ebc52acf0eb879a"}, + {file = "nodeenv-1.9.0.tar.gz", hash = "sha256:07f144e90dae547bf0d4ee8da0ee42664a42a04e02ed68e06324348dafe4bdb1"}, ] -[package.dependencies] -setuptools = "*" - [[package]] name = "notebook-shim" version = "0.2.4" @@ -2108,19 +2105,14 @@ files = [ windows-terminal = ["colorama (>=0.4.6)"] [[package]] -name = "pypandoc-binary" +name = "pypandoc" version = "1.13" description = "Thin wrapper for pandoc." optional = false python-versions = ">=3.6" files = [ - {file = "pypandoc_binary-1.13-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:946666388eb79b307d7f497b3b33045ef807750f8e5ef3440e0ba3bbab698044"}, - {file = "pypandoc_binary-1.13-py3-none-macosx_11_0_arm64.whl", hash = "sha256:21ef0345726d36fc45a50211320614daf2caede684b0d0963ce8738292809746"}, - {file = "pypandoc_binary-1.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67c0c7af811bcf3cd4f3221be756a4975ec35b2d7df89d8de4313a8caa2cd54f"}, - {file = "pypandoc_binary-1.13-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9455fdd9521cbf4b56d79a56b806afa94c8c22f3c8ef878536e58d941a70f6d6"}, - {file = "pypandoc_binary-1.13-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:2915f52e4632bd2d0a8fcd2f7e7dfc2ea19b4e1a280fcbc2ddcd142713c4ff12"}, - {file = "pypandoc_binary-1.13-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:11a2497320eb3dccb74de3c67b6df3e5d3f66cdc2a36a67e9a871708f7e48412"}, - {file = "pypandoc_binary-1.13-py3-none-win_amd64.whl", hash = "sha256:3881aa7c84faec2007c0ae4466d3a1cfc93171206b8540f2defa8ea971bf6fd6"}, + {file = "pypandoc-1.13-py3-none-any.whl", hash = "sha256:4c7d71bf2f1ed122aac287113b5c4d537a33bbc3c1df5aed11a7d4a7ac074681"}, + {file = "pypandoc-1.13.tar.gz", hash = "sha256:31652073c7960c2b03570bd1e94f602ca9bc3e70099df5ead4cea98ff5151c1e"}, ] [[package]] @@ -2512,13 +2504,13 @@ rpds-py = ">=0.7.0" [[package]] name = "requests" -version = "2.32.2" +version = "2.32.3" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" files = [ - {file = "requests-2.32.2-py3-none-any.whl", hash = "sha256:fc06670dd0ed212426dfeb94fc1b983d917c4f9847c863f313c9dfaaffb7c23c"}, - {file = "requests-2.32.2.tar.gz", hash = "sha256:dd951ff5ecf3e3b3aa26b40703ba77495dab41da839ae72ef3c8e5d8e2433289"}, + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, ] [package.dependencies] @@ -2741,21 +2733,6 @@ nativelib = ["pyobjc-framework-Cocoa", "pywin32"] objc = ["pyobjc-framework-Cocoa"] win32 = ["pywin32"] -[[package]] -name = "setuptools" -version = "70.0.0" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "setuptools-70.0.0-py3-none-any.whl", hash = "sha256:54faa7f2e8d2d11bcd2c07bed282eef1046b5c080d1c32add737d7b5817b1ad4"}, - {file = "setuptools-70.0.0.tar.gz", hash = "sha256:f211a66637b8fa059bb28183da127d4e86396c991a942b028c6650d4319c3fd0"}, -] - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] - [[package]] name = "six" version = "1.16.0" @@ -3555,4 +3532,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more [metadata] lock-version = "2.0" python-versions = ">=3.9,<4.0" -content-hash = "e150d1aa551b23e336338fb64dc065344a91a6ac063ddcbeaa04eca44931f595" +content-hash = "fd86a9ae9044defcbde1f80b53590a82a8627a27f2c36c85ea405f8892644773" From fd46588b04af3df59307ca88aa9c8200f36d01dc Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Thu, 30 May 2024 18:21:48 +0200 Subject: [PATCH 04/17] CI: Remove unused env var --- .github/workflows/ci_cd.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index 14fc2b5e..556077e5 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -14,7 +14,6 @@ env: MEILISEARCH_API_KEY: ${{ secrets.MEILISEARCH_API_KEY }} MEILISEARCH_HOST_URL: ${{ vars.MEILISEARCH_HOST_URL }} MEILISEARCH_PUBLIC_API_KEY: ${{ secrets.MEILISEARCH_PUBLIC_API_KEY }} - ON_CI: True CONCEPTEV_USERNAME: ${{ secrets.CONCEPTEV_USERNAME }} CONCEPTEV_PASSWORD: ${{ secrets.CONCEPTEV_PASSWORD }} From cf46be976df82fd23d56efc7de7ed2e3d1552beb Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Thu, 30 May 2024 18:30:50 +0200 Subject: [PATCH 05/17] CI: Use env var in build doc job --- .github/workflows/ci_cd.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index 556077e5..15e7a52e 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -14,8 +14,6 @@ env: MEILISEARCH_API_KEY: ${{ secrets.MEILISEARCH_API_KEY }} MEILISEARCH_HOST_URL: ${{ vars.MEILISEARCH_HOST_URL }} MEILISEARCH_PUBLIC_API_KEY: ${{ secrets.MEILISEARCH_PUBLIC_API_KEY }} - CONCEPTEV_USERNAME: ${{ secrets.CONCEPTEV_USERNAME }} - CONCEPTEV_PASSWORD: ${{ secrets.CONCEPTEV_PASSWORD }} concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -141,6 +139,9 @@ jobs: run: pandoc --version - name: Build documentation + env: + CONCEPTEV_USERNAME: ${{ secrets.CONCEPTEV_USERNAME }} + CONCEPTEV_PASSWORD: ${{ secrets.CONCEPTEV_PASSWORD }} uses: ansys/actions/doc-build@v6 with: python-version: ${{ env.MAIN_PYTHON_VERSION }} From d0dfb45b76d41b8a345485f6656d57c9be925a80 Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Fri, 31 May 2024 09:11:49 +0200 Subject: [PATCH 06/17] DOCS: Use recommonmark for parsing --- doc/source/conf.py | 1 + poetry.lock | 32 +++++++++++++++++++++++++++++++- pyproject.toml | 1 + 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/doc/source/conf.py b/doc/source/conf.py index 5dff058c..1f55deee 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -55,6 +55,7 @@ extensions = [ "nbsphinx", "numpydoc", + "recommonmark", "sphinx.ext.autodoc", "sphinx.ext.autosummary", "sphinx.ext.imgconverter", diff --git a/poetry.lock b/poetry.lock index 67854468..e02ee739 100644 --- a/poetry.lock +++ b/poetry.lock @@ -551,6 +551,20 @@ traitlets = ">=4" [package.extras] test = ["pytest"] +[[package]] +name = "commonmark" +version = "0.9.1" +description = "Python parser for the CommonMark Markdown spec" +optional = false +python-versions = "*" +files = [ + {file = "commonmark-0.9.1-py2.py3-none-any.whl", hash = "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9"}, + {file = "commonmark-0.9.1.tar.gz", hash = "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60"}, +] + +[package.extras] +test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"] + [[package]] name = "coverage" version = "7.5.3" @@ -2487,6 +2501,22 @@ Pygments = ">=2.5.1" [package.extras] md = ["cmarkgfm (>=0.8.0)"] +[[package]] +name = "recommonmark" +version = "0.7.1" +description = "A docutils-compatibility bridge to CommonMark, enabling you to write CommonMark inside of Docutils & Sphinx projects." +optional = false +python-versions = "*" +files = [ + {file = "recommonmark-0.7.1-py2.py3-none-any.whl", hash = "sha256:1b1db69af0231efce3fa21b94ff627ea33dee7079a01dd0a7f8482c3da148b3f"}, + {file = "recommonmark-0.7.1.tar.gz", hash = "sha256:bdb4db649f2222dcd8d2d844f0006b958d627f732415d399791ee436a3686d67"}, +] + +[package.dependencies] +commonmark = ">=0.8.1" +docutils = ">=0.11" +sphinx = ">=1.3.1" + [[package]] name = "referencing" version = "0.35.1" @@ -3532,4 +3562,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more [metadata] lock-version = "2.0" python-versions = ">=3.9,<4.0" -content-hash = "fd86a9ae9044defcbde1f80b53590a82a8627a27f2c36c85ea405f8892644773" +content-hash = "02ecf581529401eb7e701ab592495d17d7979368080db55b4b23a2fda3826bb8" diff --git a/pyproject.toml b/pyproject.toml index 6afc56e2..3d50e73f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,6 +39,7 @@ python-dotenv = "^1.0.0" httpx = "^0.26.0" # Common packages for test and examples +recommonmark = "^0.7.1" [tool.poetry.group.dev.dependencies] plotly = "^5.18.0" tox = "^4.12.1" From abcf9af0c3274052353feba502a1d9272cfed54b Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Fri, 31 May 2024 09:25:17 +0200 Subject: [PATCH 07/17] DOCS: Fix warnings --- doc/source/_static/README.md | 1 - doc/source/conf.py | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) delete mode 100644 doc/source/_static/README.md diff --git a/doc/source/_static/README.md b/doc/source/_static/README.md deleted file mode 100644 index 946a6908..00000000 --- a/doc/source/_static/README.md +++ /dev/null @@ -1 +0,0 @@ -Static files, such as images and other assets, are found here. diff --git a/doc/source/conf.py b/doc/source/conf.py index 1f55deee..95a0b58f 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -128,6 +128,9 @@ ".py": ["jupytext.reads", {"fmt": ""}], } +# Activate fontawesome icons in LaTeX +sd_fontawesome_latex = True + linkcheck_exclude_documents = ["index"] linkcheck_ignore = [ r"https://download.ansys.com/", From fa290ea15e62b7f431c3c141900ad585d3a236a3 Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Fri, 31 May 2024 09:25:36 +0200 Subject: [PATCH 08/17] CHORE: Move dependency to doc group --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 3d50e73f..299a5025 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,7 +39,6 @@ python-dotenv = "^1.0.0" httpx = "^0.26.0" # Common packages for test and examples -recommonmark = "^0.7.1" [tool.poetry.group.dev.dependencies] plotly = "^5.18.0" tox = "^4.12.1" @@ -60,6 +59,7 @@ nbconvert = "^7.16.4" nbsphinx = "^0.9.3" numpydoc = "^1.5.0" pypandoc = "^1.13" +recommonmark = "^0.7.1" Sphinx = "^7.2.6" sphinx-autobuild = "^2024.4.16" sphinx-autodoc-typehints = "^2.1.0" From 8b41bfb28b3a0b2f724ce7dbc6805648fb328f80 Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Fri, 31 May 2024 09:30:11 +0200 Subject: [PATCH 09/17] CHORE: Update poetry lock file --- poetry.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index e02ee739..1a7ebbe9 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1312,13 +1312,13 @@ jupyter-server = ">=1.1.2" [[package]] name = "jupyter-server" -version = "2.14.0" +version = "2.14.1" description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_server-2.14.0-py3-none-any.whl", hash = "sha256:fb6be52c713e80e004fac34b35a0990d6d36ba06fd0a2b2ed82b899143a64210"}, - {file = "jupyter_server-2.14.0.tar.gz", hash = "sha256:659154cea512083434fd7c93b7fe0897af7a2fd0b9dd4749282b42eaac4ae677"}, + {file = "jupyter_server-2.14.1-py3-none-any.whl", hash = "sha256:16f7177c3a4ea8fe37784e2d31271981a812f0b2874af17339031dc3510cc2a5"}, + {file = "jupyter_server-2.14.1.tar.gz", hash = "sha256:12558d158ec7a0653bf96cc272bc7ad79e0127d503b982ed144399346694f726"}, ] [package.dependencies] @@ -1343,7 +1343,7 @@ traitlets = ">=5.6.0" websocket-client = ">=1.7" [package.extras] -docs = ["ipykernel", "jinja2", "jupyter-client", "jupyter-server", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"] +docs = ["ipykernel", "jinja2", "jupyter-client", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"] test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0,<9)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.7)", "pytest-timeout", "requests"] [[package]] @@ -3562,4 +3562,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more [metadata] lock-version = "2.0" python-versions = ">=3.9,<4.0" -content-hash = "02ecf581529401eb7e701ab592495d17d7979368080db55b4b23a2fda3826bb8" +content-hash = "e9065e32a626bdda84825f29c573b1dfd8c1af1a793aa33e94d8e75fcd63bbf9" From ad4abdcd982d3a114aeb8e9e72c717556af02bd5 Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Fri, 31 May 2024 09:39:06 +0200 Subject: [PATCH 10/17] WIP: Fix PDF documentation build --- .github/workflows/ci_cd.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index 15e7a52e..cd8d896b 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -134,6 +134,8 @@ jobs: run: | sudo apt-get update sudo apt-get install -y pandoc + sudo apt-get install texlive-latex-extra texlive-xetex texlive-fonts-extra + # sudo apt-get install libgl1-mesa-glx xvfb texlive-latex-extra latexmk graphviz texlive-xetex texlive-fonts-extra qpdf texlive-xetex xindy - name: Verify Pandoc installation run: pandoc --version From d6b3593a050f58b86c7d39dfef4f02a6e85bd582 Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Fri, 31 May 2024 09:49:02 +0200 Subject: [PATCH 11/17] DOCS: Use xelatex to avoid tex capacity --- doc/Makefile | 2 +- doc/make.bat | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/Makefile b/doc/Makefile index 7dc17b5d..3ffd186e 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -28,5 +28,5 @@ clean: # Customized pdf for svg format images pdf: @$(SPHINXBUILD) -M latex "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - cd $(BUILDDIR)/latex && latexmk -r latexmkrc -pdf *.tex -interaction=nonstopmode || true + cd $(BUILDDIR)/latex && latexmk -r latexmkrc -pdf -xelatex *.tex -interaction=nonstopmode || true (test -f $(BUILDDIR)/latex/*.pdf && echo pdf exists) || exit 1 diff --git a/doc/make.bat b/doc/make.bat index f95be6f1..576df91c 100644 --- a/doc/make.bat +++ b/doc/make.bat @@ -42,7 +42,7 @@ goto end %SPHINXBUILD% -M latex %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% cd "%BUILDDIR%\latex" for %%f in (*.tex) do ( -pdflatex "%%f" --interaction=nonstopmode) +xelatex "%%f" --interaction=nonstopmode) if NOT EXIST ansys-conceptev-core.pdf ( Echo "no pdf generated!" exit /b 1) From a7a830347f00be13e18b57d8e0ac76e7f2613740 Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Fri, 31 May 2024 10:10:35 +0200 Subject: [PATCH 12/17] CI: Fix coverage artifact name --- .github/workflows/ci_cd.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index cd8d896b..b7412983 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -113,7 +113,7 @@ jobs: uses: actions/upload-artifact@v4 if: env.MAIN_PYTHON_VERSION == matrix.python-version with: - name: coverage-tests-{{ '${{ matrix.os }}' }} + name: coverage-tests-${{ matrix.os }} path: .cov retention-days: 7 @@ -121,7 +121,7 @@ jobs: uses: actions/upload-artifact@v4 if: env.MAIN_PYTHON_VERSION == matrix.python-version with: - name: coverage-file-tests-{{ '${{ matrix.os }}' }} + name: coverage-file-tests-${{ matrix.os }} path: .coverage retention-days: 7 From 3ac4c40ab96301e1f12b1f37191b4cb2451012c4 Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Fri, 31 May 2024 10:15:49 +0200 Subject: [PATCH 13/17] DOCS: Rework example --- .../_static/thumbnails/simple_workflow.png | Bin 0 -> 37154 bytes doc/source/conf.py | 2 +- examples/simple_workflow.py | 23 +++++++++++------- 3 files changed, 15 insertions(+), 10 deletions(-) create mode 100644 doc/source/_static/thumbnails/simple_workflow.png diff --git a/doc/source/_static/thumbnails/simple_workflow.png b/doc/source/_static/thumbnails/simple_workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..21809b6892e91b99ec7b7dc91fc142e782f73ad3 GIT binary patch literal 37154 zcmZ^~bySpJ)HV##J*0rtARW>n=?oza0|smNK$@$m4dw6)ZY@$d+s zczF0Tq{QHVEVtJwz+d#8>POf%!9NIHVfrvUyv9_DGkYTNZ!#aPyASd3==^bi z@E2S-gYodvUTdqvOoMHH&Xa}a2Zixpj7n8%O0~+g?tEz3KGtIMNf+&!6ink~%X|Oe z3Qx9IQ*<+1xo=ZBnMj>BS!9dvC6#s)A$@LaMD>Z-jXJ^PAT>Ao$GX&Pp*mS2caM_3 zcciYLsE%&Ax4Y)AzbM_KFIV(`PbI)e|2@RWfP~lT)QA%P@0qG%=4i-&FOv9w zzsTb*Oe=Il;LlPZO^IxeQNXWFBs~FfXd~` z)#bB8IiLL)WblcYDxT77&Z5g|-LNO0A}DF*gP4zxKLr1-I?ML9Nj*pnB_lE5og(=+ zkEb@@*rM|OuQBwSUjh-enwK=vU zLOo9et&hi9 zOzW8+HT?AA0|#MI2y0y5WO9%E#oqg)JvGzrO(WTKEs^wxjJh?d|E=W)S-Rf&P0!NX zMehj=+oC>O-}*USaJ;=9Xt(>i==NtCj-LAlSE-d7Xpo$$sIYremlWim5uvBo#a6R8 zRZvHF2)?zvsP5$AZr4q`I+mT=MICx;zQo}vobtT8=~%2h=sh3$`8#xtZTST|l??t_ z#lxo7Qroz;+q*@tWiX{)2AVON<-D{soqL^o=A1teLCxzO5y4c3VQ-oEN{fFnRIaLC z=zrZE?w@3=n|wLmX!+-BqHDx1gF(kGL-?O(M=P?46#dsi8opGYO{b8Ph|5b<@_I{O zxjKs#A>mS2eCO|E?2P*r#Bg82kN zZyjsKrhL`cl^P<#q;HMsUR+Ml_AEw-o=W~O-hR_U(mzURC85YO6G2{ibcneJ_C#=e zMckvD99^mbR!k?E-$zWZ+HM<4 z-Asb2vV(nD&G#6bdcUsl42rtQC!OlREK#Y z*e?reVaY!bA?=CT`>3|4MV}edjNf-v9^mb0whbz1JRI|`emn1VjYv?)X)C_I54pee<#6=5Gb;`ntlaw3^seJI@7ObViy&+=YVUX1NX=801fb zzSwy#*XMyf|@r!nUan^j%(N%5ele0X1m;b z=kr01rmE&lJHB6X@kjDUAM5XrUxE0KiIU*Gq?#-DG(vIg)ubQUpVavC^!?JyuC zo5lv4Y@2gQ+c|OaARz8Sb*FPl)%p(dSHeoWwsneyLX4{F0XN6HcHMbwMUKyv)b?=J z)bI|?c|nyJa`;I2UwXGU2kToN=h1>eBp2b%dvIWL^_o3zrS|N6@VB z)MgWFL}Sj=5&MkzO0JsTOpe=4b>w_qRlm~Y7}eXYD`BYgl=6&>v{^dguU-?nLLgV7 z%`wshc?_{8OZr|CI?&iBKCEHD{XCSqnL~zVa*zBvOmDr0p|Wq1VdGe9sBUmhG`cYX z*BcZz34zRyPi-Y6BunNu^nXpH>#F!Q_U}mAuc8l!PIy)G6-0E*KT!)$YAa-Yxbiuv zs$Odc=X(pNbQ&`(l6YAN?4|xKd1Os6`AZMDF&>#39#xh{Kpew`o~uY0ajVV?0i?}% z<2KWqc1rkvpS|W70x1}$4$$cBL*h>|4TF*7Hgpp&pEpE>3~`m! z+*9sDZ}nyw4mCW2YQrpgw57@BfVax3WpnR2GU0SqOuZ1Wb6;FYFe{Nb63Uq+34OCqv)a@E3?R8lJpgP-{1lSKAA zttyngb2^Zac7_UJ53lJ@YyRB-4fKWFpP{BdeC&w$L`Qm^htiIoV%&VHSvrz~ISt^O+j2NE9q|J>7wSAV|8IVCcV5J%zhS5^8JiACW5W46YM(l8* z>yEL``(%mchbja2j>p60br16}vUw@xH~fpAN8b-|$N7S#hC8}UthnG6mxd?txesfN zk^2%`;#67l_xrD>;A6vH+uLPj(il{UWj_oxj`>_%=`R9~3?*Ev54f(GzK&9ANHsfe zm2ptj3}JNBjK{LzfJa^zbI9PA+@Kp^x)T*Uvl57EGOUS07G3l)@S%TSZ8;>Jy-Q)- zEP4M?45{TzR?yTVs;k&u)7sa&gD|aj>qVHBrR$~zFWxbFf-zP8V8?xv zk#}?XlMh_TKwBLG8L=;ohYff<1VN#>NoFVX%w2U$=eM$)1~@EWrkK{AE8b6Fs0Cbv zXVgtBtxD5Dq%Z-WA5JPGt+oQZ1H*+43KO2INB!6XjH*h$qgiGL6rnp86p#4S4_27ojMRXuwFWYge z6z0}3X-IT8E!72kx!Ma6qLMYeW-;0{tAwGDZNhiv3tMy>ITSY{6tfm{Xa9qsPrZ6$LN`*{%1!RibH(P|wphfWyakOUXSuRBazxQl5FNj% zS=u^A#!I?)!W*Cwf{S5U!|0AD)b4Su7>Bj4n_kl1rsmDL?#*VIkOu(uf9Ji-yd24CoSiY^3b5>xDySbcH3Z2BI1PfUHoYs;dOz(>BN{|YM zZ~C?!_goLYB>9$ot7El+Ikzj5skIGOzC0B7)N}^Hy zO}?_Fwxk*x_e+s7^vu334#c;jEM=)IL|kv03vIi zMNhZ=lnv~)M2)l5ER10MV+0}uW#~doTwEZ=XX)}6=C*z2r8_;Z!@2qi{j7GyBAQuV zMC{Qj$yKO0(Y_^ta$L1p3{ZaX#X{m;i@fjZyLyeYxJsXpK$221w!QO8$oQg-VCyQCp6vD*5tWimEIRI}+7pQ8RZQ$tGBco`}}yGZyzN%FdK zqxGdEh=z{NhqC@$$TuFI;u}?3C*lfOJ^FIiaZE$o24DJq_)N6;wgq>~ylX^#MW%W1 z2j*||R}YQ9(2R?-Z-0ArKIaaht3i_E=L!z13zpk=cU%tJCsPl$a#0Bx8f-9r`TU0L zVXgBG$$)O5T|RMJ^a)o%dH$`=v@atT0B3uUDCAwFlzOBq4B z;bCg1bE7e{n}xkE`?fVb0!v%2jgHqeeG)*}E8?)^l@>~_3*(`LP2LrnV$U5CJDp+C z-x(NgcT@F=nKizC{$BiQy& zQ_h#9u=HwG*U^Vp3{}nuFQ#2JL-B%-2yEYX1ida5F|m+IS^xEyTT?X*^7n>!{;EQP zVZ@sA*Fz+UZyp<4=3Ga`MHDI_2KtCiu}rjz$lEUQ4uqbR<&ui?Wthc$$y6Y8K2`mT zVCb98pIg+!zYB6YKM;JrKRQXYF`s&)5Wd*Q{9wD@Ea>wV~W#|>*7&zzQd8+=lxAul<7P-7|Hz^NVLom>4 z4!P<|Tz?#)^skV$60+gPIB;uAWcS!hJ0t?&I&ht;xPOu;@%^>;p?kVE%t>UXIXBf@ zp&h1pzqgZqSD<;eUW!{ITqK|ndkDzf>{+5Y25+9#R8;!yjoLl}D7RVL{A~Rhvyj|4l?k&Fv`x zgg$uH=o5zcCaJxUna$gYjEx2?Yjovypv0MySrH(n|r-f7;~L10pB=F zJfyt1w;pjTC%))VZ0+**1!+-RD@Ag--d&TkfJ=$c?LI&M&s#gn2irA{8($c^f3XJ! zxP}Rv2G!bzpM+bz`dc(Lb-Gt`bpiR)_9V8|@@81!B`spQc144!?CMQgK|(2_O}*Yh z{vvsT8iWJhOG0l2QvQj?1@xr5eJi}0j4bvM9mX8gLT)gObh0r5&KpP1^ooVDcxonr zE>bT1WQ~p=`!OU<a=~e=RHX>T1a?>KPhPK2N<{fRHk z#x>Kw)~7i;3Q{;*%eP<+!77#M!9wW4qTADaIIQ`Y%GT$S4cSuJJ>QtH!xL>rj~kpw=Sx}lMhDb@#s)Ci-0Xxqq$&WhRhyVg z7x^dX6_d8e=8 zm9d10N8Oz3)ytvcCdZd%y*I@^$nUJ8CHw=HwWj+R(T_P427^QD$q)hoP$e=fKbYyASrO=#Jf=+1`Lm%tuUTf2|GVt80sAtER4>kL>=&`Kf@KS zu>$(VRzfiZ`NvkJJ6!qj&!^ z%VxfSK1NR{hTQ-l(L2m)Gj?0X=4fwF=e7=7(469;gpo((JUt8;W6CLBz5ZNbK2a@lngueZSS9_Fva*S4={XQjzVU# z=n;$L6uJP7XNeUiIq}OO6=#A<$lcoSg(i(3Dmj* zkRT^nS)FG_u?#N-l&=*w7yW#6)d3Q)$gZ1X$h*H_gY(%zL|D&zFJ@c?8 zF*Ig{(YmT}_U2b93U_UFF7_4e0VPZ|!!{EEWmL!FZH3Frj(Tt`$Ds)7TZ82~=wdi1 zA;0x&OtN~;FxEU#!d$x_7}z@)3xItG8h;=Z{*jQ4_tc=5I}8*+WopE}S48OyVa;3_ z3C>>T=BA|h_T=}=x05od%B9Sd6&;6#^K}Mcq~0IUevrc04f@4%_126iZMHa*jXR%B zKXG@HTIx~4$pziA;fa|Vn_ui6FT@D)Lm6ckV&nZ7Fh^+V_LX-m8I5@0P!b>uLdT{B#Xy;(1S!mt8lDu&>K`wr_;e(@SG)NM z{rD>`u4K%I$%^_aNZSgfr589@S#m$s*pX?EG{$|=ckj}t>wtLmlph*`bGh5V<Y*xilWBP_EEN4@3GOKv$Kay2`SrU#krB?-$rJq`#tz2jrOUw(-rR zi8(v8$}0t=PgAmc1*L)67(4Mav0h#Xb5nuvk1-*_$TY8>UY=YwC8E1p0_?Ym4B=_& ztV|#s-~wdXHEq%rp6BmN0xcn3^0RuwTM6V)9-_58-uL!vdRblqQt%lTPx}%lwr`a1 zG{{7Q<^RNj0)DgdPjj#CSn)T0rT*O;Rj(m^_Cj0QUb_$St(x~+uoQ<*PincPD5i zD~_YTk#qPY{CnV6x4GCFv4Dg_&JSuw?8GV;;x@`55V44Zko<@>U3nj&YLzD_a@{CI zK3vA6Q5q_cT-rNRR$pZl73)5E_YqyXsJ9Lo+=5=R=oWXRjv}C5Fb=G|X2gym=!YBb z0ccF^%HR(6Dz)Qo3e6JVZvt-T^RwX~`$Z}P0nvuK|4Wt|QHe&8YccR6;)%20pLvO* zNa@`qWPo>|@vN$v#7RHKsxoTkOo=QK>}oz%iBxBsqE?Yhun?lk%LKmFyl<|&M^3G5 z9^d{rWHOm_B%iszUSIi*5`A-RkkqNoR{x^_ef5~@I`mbyD*-ujwU;oT7#w4Ur*QFW zyddU$%%Ci;M~_ay0d9a-Kl& zQ%I6XZRG>Rdg6o+#@ZSoL19lP)2CxW$aKb(Zg^NcG8mHPC0NkN3Oob`li((S0y0;f zPH^Tv$f2c~?OU7pXFp8{-mGT*KvX;synl;6am}iCe2Yfi6arWv>z5^jde^a0Y0~k0 z*9~Fh!~Da=@fw?V4|tGnLXO34X?8**TI@<)xh!cJE5_W`(1&me;C-dZ^8+ux>HbA{yDCh> zujus;lJ-ydpqVBFQDqlm&TV_`ul)zZ4*o`#`qa?e8z8rNq*{2nC(*Xrat#}xVP}6k zCbWPfKYJowjy00vr(3<*XE1#iY)nYJbz?JkiuNSy7Eu3mjC{I2Vh(E`N&S5Eg~bzk zp-y?HoC%!J5_MMRKMv&Z4e~ti2+#hnoXWA@VPy=~bF+vV6))&e#J5q7uE^ET%cVQn zkCm(w*gyYSI?lmA;T*E1_*2xqsocH+zKD*XqZ3aEMG2|Am+y7Paj4m#GEakEH z+sOtG`yom=;8;d)M=Cz(u77mpWOiO|b^7|~(t9x%L$#HR{@t0NxW*$jMX?%oC?=G? zSJ1TN4#15R+9p+U`wV4cXBZL#3W7ARlXUyQK1+3_f>@OFHq-Y?VVKq<79>QJC2X1h z_@qv*{bq}!#1IAiOl;LVVxz5Abcd~_VCLwU1QKz2p=UGmyXYq6*K@}0xxuQUsx%&V z*57ZWHP8tKl7j6|VOm`$ykc9ml<=3|^obF!uCBE)$14)1iWW2&Qa(BXSB0#=GLqfY z(UaZkqwO{ay?!{McEyF25l%B!rA2fwr>pjQYjMKKo=>t1xvcLVy(#yXdrqnAJUi|Y zqI@DLE6dYZ^W1#Cr1$L8UtRxZ;=R24dISZdcZ*0m(FRLRaxcwxcE3o>yd!w??Q~@z zUS=@&@`1G zIz^eaeh@K#l~&|hSAV^8+Mjm08+HeCE62%oz1W^&BiKOa*=yC_KYuPu>!(v~sXHk; ze}9gss{hW~|L`b`WnFcTnd57w^*s0Jdz7>e+REo8hq@HEPiZVamnXMKum!r1pmQT` zqAxcs=GcUGa^?$*?y?~d!rk@$Co5h)DV^cIfTOyzAkmHOMEQ*`$hrFA4qqH5N|r=P zRXIX1EVLh!6_7woD&Z;1KI=z=I+Fe4OXx@2!6cv^sn`M+ybjc_{a(5%5l2AhogMeD zheypSK2W!%7UTc-B3%x2WX7vkaQD%B-p~KbR&kcXe-&JGbI|qqQOtyaN|q=wmT%gq z!E4&Zt@$u5?6t=%5r5&FDy{Fd=Le|4Td2}`RCRc-i7Z9C)@hMHFeL}DK$I(Fxp{v_ z;9gTfBT$W)y_NV#0IHAYnSfBz>D09`iUwAua`bJA%0DWRfM-&X@z?b`^Dfe|r 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

jAk0BgbXPomiyML;yl@^X@6Y~f& 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 A*8l(j literal 0 HcmV?d00001 diff --git a/doc/source/conf.py b/doc/source/conf.py index 95a0b58f..f9eb0c6b 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -122,7 +122,7 @@ nbsphinx_execute = "always" nbsphinx_allow_errors = False nbsphinx_thumbnails = { - "examples/simple_workflow": "_static/thumbnails/101_getting_started.png", + "examples/simple_workflow": "_static/thumbnails/simple_workflow.png", } nbsphinx_custom_formats = { ".py": ["jupytext.reads", {"fmt": ""}], diff --git a/examples/simple_workflow.py b/examples/simple_workflow.py index 97e64659..c661bc6c 100644 --- a/examples/simple_workflow.py +++ b/examples/simple_workflow.py @@ -126,17 +126,19 @@ with app.get_http_client(token) as client: health = app.get(client, "/health") - print(f"API is healthy: {health}") + print(f"API is healthy: {health}\n") concepts = app.get(client, "/concepts") - print(f"List of concepts: {concepts}") + print(f"List of concepts: {concepts}\n") accounts = app.get_account_ids(token) - print(f"Account IDs: {accounts}") + # Uncomment to print accounts IDs + # print(f"Account IDs: {accounts}\n") account_id = accounts[os.environ["CONCEPTEV_USERNAME"]] hpc_id = app.get_default_hpc(token, account_id) - print(f"HPC ID: {hpc_id}") + # Uncomment to print HPC ID + # print(f"HPC ID: {hpc_id}\n") project = app.create_new_project( client, account_id, hpc_id, f"New Project +{datetime.datetime.now()}" @@ -160,11 +162,11 @@ # Read all aero configurations configurations = app.get(client, "/configurations", params={"config_type": "aero"}) - print(f"List of configurations: {configurations}") + print(f"List of configurations: {configurations}\n") # Get a specific aero configuration aero = app.get(client, "/configurations", id=created_aero["id"]) - print(f"First created areo configuration: {aero}") + print(f"First created areo configuration: {aero}\n") # Create component created_transmission = app.post(client, "/components", data=TRANSMISSION) @@ -175,7 +177,7 @@ motor_data["max_speed"] = motor_loss_map[1] created_motor = app.post(client, "/components", data=motor_data) - print(f"Created motor: {created_motor}") + print(f"Created motor: {created_motor}\n") # Extend client timeout to get loss map from the motor client.timeout = 2000 @@ -206,7 +208,7 @@ "battery_id": created_battery["id"], } created_arch = app.post(client, "/architectures", data=architecture) - print(f"Created architecture: {created_arch}") + print(f"Created architecture: {created_arch}\n") # Create a requirement requirement = { @@ -222,6 +224,10 @@ created_requirement = app.post(client, "requirements", data=requirement) print(f"Created requirement: {created_requirement}") +# Submit a job and show the result + +with app.get_http_client(token, design_instance_id) as client: + # Create and submit a job concept = app.get(client, "/concepts", id=design_instance_id, params={"populated": True}) job_info = app.create_submit_job(client, concept, account_id, hpc_id) @@ -233,4 +239,3 @@ fig = go.Figure(data=go.Scatter(x=x, y=y)) fig.show() -# - From 779abcaadabc0130c0cc874349dc7fae807ce17c Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Fri, 31 May 2024 10:39:12 +0200 Subject: [PATCH 14/17] DOCS: Rework example --- examples/simple_workflow.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/examples/simple_workflow.py b/examples/simple_workflow.py index c661bc6c..93e49183 100644 --- a/examples/simple_workflow.py +++ b/examples/simple_workflow.py @@ -63,33 +63,37 @@ # ## Define example data # -# ### Various constant data -# # Example data can be obtained from the schema sections of the API documentation. +# + MOTOR_FILE_NAME = Path("resources") / "e9.lab" + AERO_1 = { "name": "New Aero Config", "drag_coefficient": 0.3, "cross_sectional_area": 2, "config_type": "aero", } + AERO_2 = { "name": "Second Aero Configuration", "drag_coefficient": 0.6, "cross_sectional_area": 3, "config_type": "aero", } + MASS = { "name": "New Mass Config", "mass": 3000, "config_type": "mass", } + WHEEL = { "name": "New Wheel Config", "rolling_radius": 0.3, "config_type": "wheel", } + TRANSMISSION = { "gear_ratios": [5], "headline_efficiencies": [0.95], @@ -100,6 +104,7 @@ "windage_ratios": [40], "component_type": "TransmissionLossCoefficients", } + BATTERY = { "capacity": 86400000, "charge_acceptance_limit": 0, @@ -111,10 +116,8 @@ "voltage_min": 300, } -# ### Changing data - -# Motor data motor_data = {"name": "e9", "component_type": "MotorLabID", "inverter_losses_included": False} +# - # ## Use API client for the Ansys ConceptEV service @@ -223,6 +226,7 @@ } created_requirement = app.post(client, "requirements", data=requirement) print(f"Created requirement: {created_requirement}") +# - # Submit a job and show the result From b6b295447ddf5525268636899361c217a3c0387b Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Fri, 31 May 2024 10:46:23 +0200 Subject: [PATCH 15/17] DOCS: Rework example --- examples/simple_workflow.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/simple_workflow.py b/examples/simple_workflow.py index 93e49183..ae083d52 100644 --- a/examples/simple_workflow.py +++ b/examples/simple_workflow.py @@ -165,7 +165,8 @@ # Read all aero configurations configurations = app.get(client, "/configurations", params={"config_type": "aero"}) - print(f"List of configurations: {configurations}\n") + # Uncomment to print configurations + # print(f"List of configurations: {configurations}\n") # Get a specific aero configuration aero = app.get(client, "/configurations", id=created_aero["id"]) From c14381f46e4d9ffae1f54dc9954c862ec472aa9b Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Fri, 31 May 2024 14:16:33 +0200 Subject: [PATCH 16/17] CHORE: Fix documentation link --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 299a5025..7f344efa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -107,7 +107,7 @@ directory = "doc/changelog.d" filename = "doc/source/changelog.rst" start_string = ".. towncrier release notes start\n" template = "doc/changelog.d/changelog_template.jinja" -title_format = "`{version} `_ - {project_date}" +title_format = "`{version} `_ - {project_date}" issue_format = "`#{issue} `_" [[tool.towncrier.type]] From dca54af110aff951f0668bd95837c35a9bdc288e Mon Sep 17 00:00:00 2001 From: Sebastien Morais Date: Fri, 31 May 2024 14:16:56 +0200 Subject: [PATCH 17/17] CHORE: Fix documentation link --- doc/source/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/source/conf.py b/doc/source/conf.py index f9eb0c6b..4719c318 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -37,7 +37,7 @@ # specify the location of your github repo html_theme_options = { - "github_url": "https://github.com/pyconceptev-core", + "github_url": "https://github.com/ansys/pyconceptev-core", "use_edit_page_button": True, "show_prev_next": False, "show_breadcrumbs": True,