From 67d4f35f8af7fc14d2745cda5858ae509846ba96 Mon Sep 17 00:00:00 2001 From: Stephen Kiely Date: Fri, 2 Sep 2022 12:34:38 -0500 Subject: [PATCH 01/14] Initial change to new theme. --- .readthedocs.yaml | 23 +++ docs/assets/extra.css | 63 +++++++++ docs/assets/favicon.ico | Bin 0 -> 15086 bytes docs/assets/nautobot_logo.png | Bin 0 -> 9204 bytes docs/assets/nautobot_logo.svg | 131 ++++++++++++++++++ docs/assets/networktocode_bw.png | Bin 0 -> 7562 bytes docs/assets/overrides/partials/copyright.html | 20 +++ mkdocs.yml | 96 +++++++++++++ 8 files changed, 333 insertions(+) create mode 100644 .readthedocs.yaml create mode 100644 docs/assets/extra.css create mode 100644 docs/assets/favicon.ico create mode 100644 docs/assets/nautobot_logo.png create mode 100644 docs/assets/nautobot_logo.svg create mode 100644 docs/assets/networktocode_bw.png create mode 100644 docs/assets/overrides/partials/copyright.html create mode 100644 mkdocs.yml diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 00000000..782c8bc4 --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,23 @@ +--- +# .readthedocs.yaml +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details + +# Required +version: 2 + +# Set the version of Python in the build environment. +build: + os: "ubuntu-20.04" + tools: + python: "3.9" + +# MKDocs configuration file +mkdocs: + configuration: "mkdocs.yml" + # fail_on_warning: true + +# Use our docs/requirements.txt during installation. +python: + install: + - requirements: "docs/requirements.txt" \ No newline at end of file diff --git a/docs/assets/extra.css b/docs/assets/extra.css new file mode 100644 index 00000000..e0ee81f6 --- /dev/null +++ b/docs/assets/extra.css @@ -0,0 +1,63 @@ +:root>* { + --md-accent-fg-color: #ff8504; + --md-primary-fg-color: #ff8504; + --md-typeset-a-color: #0097ff; +} + +[data-md-color-scheme="slate"] { + --md-default-bg-color: hsla(var(--md-hue), 0%, 15%, 1); + --md-typeset-a-color: #0097ff; +} + +/* Accessibility: Increase fonts for dark theme */ +[data-md-color-scheme="slate"] .md-typeset { + font-size: 0.9rem; +} + +[data-md-color-scheme="slate"] .md-typeset table:not([class]) { + font-size: 0.7rem; +} + +.md-tabs__link { + font-size: 0.8rem; +} + +.md-tabs__link--active { + color: var(--md-primary-fg-color); +} + +.md-header__button.md-logo :is(img, svg) { + height: 2rem; +} + +.md-header__button.md-logo :-webkit-any(img, svg) { + height: 2rem; +} + +.md-header__title { + font-size: 1.2rem; +} + +/* Keep images in tables at 50px */ +.md-typeset table:not([class]) :is(img) { + height: 50px; +} + +img.logo { + height: 100px; +} + +img.copyright-logo { + height: 24px; + vertical-align: middle; +} + +[data-md-color-primary=black] .md-header { + background-color: #212121; +} + +@media screen and (min-width: 76.25em) { + [data-md-color-primary=black] .md-tabs { + background-color: #212121; + } +} \ No newline at end of file diff --git a/docs/assets/favicon.ico b/docs/assets/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..fcaa3d653334894025d867436969693afa2d7c51 GIT binary patch literal 15086 zcmeHOdyExV9iD|?VxVuWj_aHW=It z8@PC@0m|i=<`3r2%J&c)$H3aAsjA&Os1A5N7}a$NpW8ulC1=gOe{Iuj;k_Tc#{*CY zIqSZcpZ2;c`#e>CxUN5P#PPL;j_Iyb_6N`?=;)BkOd)v?o`azvMUScg1kY!no)S*FmmDG=}`m zm@Z#i#@?kNyLFOs^`A28()?X|`X%+ho|q$#O;l+R{u|@{ABK#&H2*|B*3`a!bWaj} zEWYeP8W?M6ePitUA%E)9{9Stbk!y^9oiTY`*Mh-^qx`eaEs>gP@lCQ}{WgF0Daqa? zXAjaa^hmQBc&Jh3fBr4~^`pq2HBp!5@6ywcT!**a9Qpj#9TPoZAF3gVKWh^HDgLh5 z^dncBf4wo;gH#|_{{!*jMQfqs4W$N96SG~a4^7yo)=;vQ1f z0vCVE$gdWEmkqhv{jWPF){uRu3e?!UswwjM9p1B4)OjwI_dkNUuphHdUEZ3bZ&S}=6?5*^eM^SDQEsP zpuUTD8U5$IFAjcRkVDUkW~o8Ov{+gn#2kEfQ^=p!C-VqTZI?1KXDzsJr*Zx3dv|1J z&zMu!5so#)<@LvP)JI?I52z|e3*ya&(872KEHV0LC*4gh0i{4}3)kmz*4Jh#m5<@65wKaU@55@N>tUav0B>XeaB%x*h0QJxyhg{lNDN){k@A zGOx`gZO(qgfH;g7<_UT%&zORo^J$=d$2#}7iHY}lX%r2XUua8P}kCTh1ZYnqaJx3hz;V& zh+4Q7;pZZu7_Jq0)0XR}`Rmcy%PO4dmjv=+4i~7i{j?qHCO`ezVa+_Jj5=*+`(MeN zJQA_+26fH><`KE&tMi|oms~e>VNA<3im>`YNco?q`6nyZ*6^wIw0^`m*Jr0qHCbHppQPfzsI z@kXC$ROP=PO1MMu#gz+x@#Bz#1?rNH(#d^zpN#z)=uwMxW3F9?Z`<<+iOk7hd3yLl1c{zvgS& zMb25P3s(I@8v>3lTSG>kX8kfZ^mZ=lZ45s;3Gbh<2gK+<=ak#F=A8PWucAjr|2d~T z$(MQ?v>jLzU4PDXeA_-UXP?acm`C(>KI(12#>}7lS)0ryj%{nr*{7kc?+e#o=9Z0_ zk9r#e>zh^IYFvZQ-Xn3CpL5D>TXRl5d7Jq;H*M_m{)h0M$i})%EPwAxPxV6{v$cF( z`K$T#J&1Qz7HH3WX8n>Ma@#gGXP-8;g#BmVVm4+z>TP@>qb}Wz>+%`@^UwZs-UoTi z*7Sv*Jk9)^SM%XJ3>SKq{J(?iwO^o*8;5Be-?MDb7p2< z$E-}YV-}tfT~lPT%*}gX;c&~8(`WFU>RJHLYEJ9i$MMvl^=)`E!<@{`=M;P_(E^0e zDe%8$_JL;u>nr=coH{T;)dTv_7ypOT&;P|KecOxTDg1v_@IN{woJaIyy8c2N?)QMw zp<7kyC(Bgn@O)Kz<@2hz@7*G&j_08cHd@D+`EU9to%oKbbib}DBbRW0azYh;xBz>s zCyJium2-bpD%c5t}vy_blf2-!6JN59HL1Y{I?Q_V-JS>=xVy0NPK_=`-3s zU;M>Bu%lk)JEx2P@Rl3=d7#&OB?s5SZZGb$-~7EAT!(uCV~-{0%wOvKo1%Y22fu-b z@%P*P4WU2xKQW$$%pad7{Ys>wRn?-Zvi;o7^dX?Avyi>fJm?4SoM{S$o<@T>1n!{~7$=L44{) zjviEfJ66e@KFnA6=c|hGE`8+=k<;G9*?E)kE^e}VYxV@y^>I%|&hvL^uj`)7= vmv=F@-H6{60r+kv>D+v817AE7{&L66DY=eM;Cr?n& zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3&uawIv9g#X7W_6U4|Adf?kpxNGFj=vv5S*oh; zo|zuoQI@2v$asK&!`(qW{*V8?&;Rh%N=Z)>9ewtm_-eDwvUoGn*VlZ1=G5Mw@7MnE zS^oX_Q|$9W;ZWsw{ra!2&-shv^7Df4``GWtpYi#mjL(ho_l@7L8c&Y*=hq-PUcQd! z_PNpYuQz=T{WVnk+-QGJd_(zsx1Y;6tB6a_hUw(V=cSPm)51OR=r{#RU?>*yQ|61K@os9MmqTXcZAGhH|P}S;tS?8sE3-9%P zOb4((;x3Tx-#S&cUJ_c9q@pBB%4(z;*gP^(Acd>en~ z+<$rM^UJxgw6(c>b;_K^bbzs06WA&opZ(UhZL??&i3^2AtpQcp!yYcpQa7dArl;w4 zKU%B3&;OAJkuCowy5}!eVpXM{(yPrOB;0|J*GU6i+Ylkp`MQ6v;)4KhI|uC_%jeXz z+>`s5C`tfEmbht(N{()b+a6s`eAcyuzU+~$DS*&xXVynt@1iZPa_RAH(H3ZzRKkRD zH@CQ8IOq)olPjURYO5Y^s1(0*r~K%NriI7K(zk-e7QPBoz&ScuJ;Aw%7h z7GW*>o&%vb2*PHS=aPciF@UnRU7hW^Y~JmCO(gH?<(yUBTP!Q-_13#j5ZZ4#cg)-9 z$h;obUFo-#^P*g|^T@r|xzT4k?IuMv#s!}|A}8_%>bZmL2Ks%KU;x#vPuV0doWFaRL81Sx5FIVBF!n5bG>*yNE;9n+mNd3}-lYsPqA%2mU zM6{dEfB6tBSw$6C&)xOVL4aT3c|P;A$BS`UF*I=VfTdm)|q~s zOjHBB7^wyy4m|3E$r+ja)BLoylueZ|g(!y|GI}x)qMwGWIr@U>X-2De&cn@ZHTsj* zEB&FzSZ*y8lCt}u#HW+Ii~R&6^VS5J&?W$xM!lNoAxJL8;|V8u%A%lpeBgy75M5J*@IYdLAKjLEi_z-P>u=_6{5$f(a5#EjA?6zb4%ce zTVatfTF_db%)Ps+0q1jO7)-3z@}Uqhok!#B)1sR?I#Xoj;XT89NH%N%ZpY1-J{@>O zI#wo3$`QDl&}Wl^2CSfYI6rMpz@y$-YtSh&bdNklj?A-x{z`#_+ZJ6)E9Yeoe?Jp4ug2p>Ja^p?K;AkZas)|}AZ767Ltz}T2-sjfX@ zhOokhsM`o!(ZSHusgr$0MbX{276FZUKk6vQ2d zp!{gdhWTibj zweKDF>v$RLzhBa|!WJ2Vi<~glWd;)3s14>+n475tSs5^6*ucn|Jak1gEl^EZqFvM3 z;nXW`Ar15a7H(r?R28GXRsw5y!krvP>G?7j!)^E4&JeP4QF6Q!BszF>`k#x+=)GyqUYW@Bw%$1(^6 zppNI_eQ)61={eMx1i<}Fm-td9H53{jzao-LbL71-Q&1Iz8%>(fgm*k>4_c|=9>W=S z=#>m2fKK%Ls2`@$MwSNpe`o*=pN8mNhm~+fI3Eyc218;2vDqQ8EF4}zN}cyikni3^ z8NDDgmSVFgj6Y);(#aqyv^9NO!Ea5JA8W*f3(>sc*Kmnp%@&n`EWn|I18VLlIn*OD zfFYA8-Xai4gv2^Z^0X7`WgrAZsd?ZLD@EmameLFqkIs(~xZ)?S&`}gMZDz+aI+lxs zT?#Zx2A2qBv=)Mh~jS~=VZA`rQJB>XI>dY`s z%SGK803D0P6otKt=~W_Jo&upQ?(I0u!;SJ`IjG$*N(N|=&g;HFpP^j?13z{w=wjF! zD&3_q_D^sdo#BN5POH0vBP196O$Gy$Y{ckE#DfU|YD3xqkFY8{%{>LGlAw=!m{;*W zXmgH6toqR332mTh>0wL|+(vx@-0&O>{!(HM>7qeV42C&u?Sv(YzMFdLxay=&>`9&* zn&KdbX-FaQ!2w`>bPswC51WvC_zsGqq@=c%Sd*2D2gcbe{%9+>WAdYOwVEYxhO5Uz z)e#+I7+}x{dBx04=QTx#Cn;za{Y)JDK){*dcv*}hbZDR9M>3gkG=;XEr;-^;dP1F8 zY{iD!eR}|tC9kiCpCXLMDEgfpDMtV^peCPrW6}kr#3qT?*Qe33_Z^MNH957|UcqeQ zo|x~j?cgXoBk01U-4er<4=*uKVhJFa9hBHHtI!<@X0$wrF2;gxfGB8M6pOIRgKjf$ zA*ivi~?5L8cM$47lSN8 zWY7a7b>6Kl1Z88?(19G&1D+1J*a-_OZ|PW6BS(-_w?xCt*vxS5pE0wY1e?MI2T;FR zT9+Ae<1`M;`Pz4co^?~ooAc8efyM|=H^Oe9kZY-W%r4w2JO@EgwAl2(ahUJefKV*1 zBK#~Fw+VC~Fm_`gJH|v<@P=kLl+N+C;;#{D~y&0Qguj3g#f|@(2%#87em7Do-C1pY1#0%y2QxMBm{6 z^w@i>v&9tUcZIU%*puWHn{|MLhGT|dQibkb#63jD95HbDqcj8BcKyb&Dl_T;99YmkT zZU!?{^GbZQH}lh&Ka2JnH5xkj)+Wlihhku(eJ5H;Z5V2J9CFqX7;L;kad>C|*J7^- z8wuxbWH!fNMO*sXqrsVFsvg5T7p)c>nze-Tw#aRQDFG%IELxe;y5Je zI5S<~H(3wPbA>Qtwcz8LV|z9;@l}F2&?Jwk_+uEVJ^*K6KY~$D;NfSb!XZ|S@!Afj z)8Gp}t5l7oE{qeVbCd2#t1=QlIfjJ=zT;0_|Kq96g%il}Ihcb+S z0Umul6$ElTG#xDriG&%Y#lh}8`7+D!o=G@;{|1e#5ZPgLK}4zY!Oo>(g^`h_?Q&bt zM*RK3g50F?ysa94l7T!|lMP}3DkpAqv?A5mJ=-HhkOI(ds0dy(7W#$~rV#~>uw%T$ zW!H;wla}f03ngpE5vR{aIxC<7GO@?L`!nCjck%t%e_yc$FJV|?6Fn9NE!xkki~qRx zw@aV@$F*n_vILy5F8UM&3DLEeWXJm_puTbBD>wX*GjfDX;};mc zhcJaOuWcV+erI9~XG+ii0s5WSk-WLReEpL$3%RjBfN{ zOlFobD@jTC*4I6CQ{BaQmVe)$)urYv1_VUn8D^L^@jCI;rfqQECyub9tP-CSkC=2p z;zzD49=~xexGeC@h?!2!5l4u{LJKP`%!;N)JV_i?HJ$Q>jK?bHEzVl0!W#GFFAV4O z!esn(Rtj*Kj8W$aw+8603*jd%FrOYe(*o|JzFb3 zG43UW<3Rh1<9rMOp!4M8>qM0Q0M zQ3M@9T+ta2e3e&_ARr@(Bn**6&_RWu?;xW%vN*%QD5wbI0t&v!?!zL82{;-81PB8J z(w$ECy)_?_u=N@O1Ht}3PkrdVr>ah!s{gHXPF1(yDnpIVIWfgv%ODi}5VS&38?X>T z1m{EXZv=S)R+`dW=-S+PW+ z&K5!pjZAU`mBfCju3#_`}x`rB>EZxDg^SqoYRuO_+QP4_5sR;i2xVNjF_r}Ih#t(YFaEx_7 zc&@r}R&5_eN|54LTRxr?N2eCn%hLCvwQdpy7EpI^!Rd_2m1dviljG>n%u=Z~q&VO2f00LVtlX`-677?ula#1cstuhYcB@Qs5j-tY*&5a& zf0dQ-R=C#zK^v+y!Wq;tG7{4jO+wP&%E5GZ*WZBX9z<<{d8 z*+(K73S5I?v&v+annKNxHW|+e;D1qc!C;rlZ7|dWoSby%KKT zuiVADVqBZ@-TX?kkEpy}0zl2i!eK@rm<$*wUc})4L^|G}?3_k4#f(ER9w2J1*+=?knT|P2T^t93V8twGwzpiz&GtXDA$8WW9ZS7LI;dj{hdY6aY`%S<7 zZrtnTqs=8D$5y|lB&D~VJ6c<)6E87LMNYoS(oH4IS>?uA5_md=fa3Wz=sCHNZ?nBL zt}PjHhn?G7SxAhN6uA`}_IP=FrJJvJg%`xvuPGVX+fJ`CeZ0mQect^lxIRN~vyq%o zYM&8(Y^>bj;l~61?Xxb&%d+oE!rCB97j8O<=)4FF1+r0$78ChA)chn@#A!whhF}S;p zkG6PteD*27BpKPq&fPa!s8wB3CtgxN<(QAm%puVh!C4mR!e^1;Ru_8(K!swVhNTMPHJv+|eKZbr>5!V~0u z^jLQrSwkG`%rjWLp;RBc1==L(47$aN$AE{jPO|kE|Bbx)Kha!!%^5ppA2c{z=-)o8 zc6yk$tT=pvoL;z-X^&(k&;?kA#?#@%87h;0z;qxPcpoogMLGpR>!c&GFbKsoAR5K1 z#4=Tk!X1(zkNtb9g7E=Uk?k$aA6^a9RLolCCUvn3<1AZg66Oz!rg*Vhn0>6>&X=h>9W6{(b6+HCHoe|6E1um9^c>Dh{J(lMd zx`Or@43BrWG4oLe&%E#Coz-ri@jI-78H1vDpre&rr<`QRKEp3T-0#LSXSJJwU93F$ zu9Jo9ef8>C!fDRb!R2ihJbnHRdmc}O}a2<-Vz`f}Fs4^I> z7NG^Kla47;nTJLTU=D&*3i)1T(6`bth!EIxcxO!s;};iWaPD&h!MH`mv~Hl$CP@$2 z&hcW%Icx@ezU!dLitQfy++Yc*PpRJF#1>)7U7&B>I8kHfqYhH$J9&Fe3Cd3_r9#8bJG3-4T3paZF%B;yTxNl|=58q^^Uwhxw^tFi^GX^?%YOa$x z-vriY=wFvWknds1e}>-<4PZWBSl21M0CR+sofJ25)Qq zzYONCEn!S=o6oan?zFRRub27jL+dkUp^HYfBzL#9h7qJ!F3=Bok}k$k1f;7B-be5{ zin%J2AqYl`RK5?gGaLX0t4!W3i!;7anJhymMT{pmV7&?K2JS3#*Rl|7D@zMc6zLTD z+yhX-_eZY@Dny>lYl0|0QwenCKtiwUb#A^^r$M|R$|5-FRva!=WFInVP(zgZ)>;_* zwH8L|RE8l(1?0{{@0L2Re(nydZh=ej#V#+sTj?y_=JD&KFW%w_tF3>0=V95XXlyoc zpB2{hX{9rDMR@ugaVl2+P^!} zBckciOvhsi_8nJvO=y}Z8P~@~-!>MMAhbRrTzy1HIVHsD^M{I-`tg#SBPwk9?8Bvr zjX?VDEeNlzJp~F~LPD%|roJYq7ca>TM8)gDr{B>ni-}(_}Aw`?HI^&2#Xj~X@bFYpfB(hf&szYtFy9U9g)0= zq7#I6ug=MaImrU*1GDgyxmT%vg7jcM*4aLP$Sq6wm3#SK8_Rcj8M2@(s}iU!ahA^; ztdC0S6EF^|Aa>`QbZn&Y*={2&`Ho2%YxWwxeU*J|m!z?5SLn9dCutl$sW|F7SMMM4 z6&;f`zQ_(=pOrrvp~oJs9WR6+Djf$J&tdR9f&yTONM&Bg1^yCsP`pxh5V#FVcQJu) z!nlgk43inaUBH(}`icqc3hJwiFp}8eIFi!8T<1m_kGxl0dZQ&sU(vSEeVL*(wH!>w zVFjBWSf7CLN(HfatCvwdti1MB39b-se20dTo02s~edzY>tIQ@tI$QYT$`Xpb!P^?v z)xy#pULSid-sUBxn}z9Lht{W4l19fQji(m7gO6QQz>XD-K~yIF(AkCHITTrVxGoeq z)NCv&gV88<1AS3ELo+&rB8Qqrw8|hIlkGq=V1P*Dj-ccyr?(~om$O}(U`3p@6`xm5 z6e|*90@oF~Ani^oLpoW`xN`wYevzVvLy!K^l-ERxnhBzzEh{qru7y0KL@y7k|fI?x08QTv1y+{e3YPL1Bq3G*T3=d z%GVx#dOnK8>H@C`^{2QfDDod?*>spYz{dTpG&ba#>^W*;(*=!d2wEjd++M|^?FJbu zJsb#-Txb+8c>4h>JsN9l&NIm=FtKWaw)G@Qae_Z@^z!_2U)Sk(H|orL_>7Iazg0~B zNyXd&Hrm&hto_*_?}Q>DTF@<7%I)LwDi&@v$Xw+i|D=EWhzq^y zaXLN`JP#a0Fg~n{is{rqXA+PCjAH#AYXo;i&Um)$BUd zjX5K9(hWxfEXJ;lB)ytw)UF1nN?_L^lh1O@(+jVbLl9GT&!Dgv3Y>w>kQ67lzokZU z4M9-}Y&~f5&uo(uWyDO16KFEHK4;^mhLSD~B}wrDQ^CPP#kyRRO?hTm3kjfIJxT8- zl6tYF=Q%kAicfzu$UUwC#=Z?>OZ5aeP^eD#b#p^WuO^bj>Vgx+urAl+vuuMBBmB8- zUr*Azsibbq8GV-RHrRKf;y>%Xxy(Kd;{}EZ2TzvTXLA_#5h{~^0=c((Tf=qPzB}fDjTrB7)K0uHz(pVpM zts>l5cpH-s#YBFrKySw}_#=`zVgg4htGpTN93+AWDv2t+x@5X*DndkdkO(f}4pNn2 zk;fzd`xC(>#L=q#*Q2oSO8gyk1Xm66sx(0itSg1|npE|_FN)yGd;tr-tn#m4@v3JP zik^|_jNl?eDWN*+Rels2slpU%iKMe4xVZlN62@9KT@{N;W*JkI;)TepMsSgEK$)@= zW5s^`Y8Z`qOr}xOtcem&M&>qx$_D0`;%>%@{akf!$(w2@LQMe@BJ&(UMZI-k35XO@ zME)61>uSRsRUHolQS<{^1GNEbWd0-YgQGwm@FjwU3>TZv7x)je9<6ZyPmm@60000< KMNUMnLSTZbe~(ZA literal 0 HcmV?d00001 diff --git a/docs/assets/nautobot_logo.svg b/docs/assets/nautobot_logo.svg new file mode 100644 index 00000000..c9bba8e9 --- /dev/null +++ b/docs/assets/nautobot_logo.svg @@ -0,0 +1,131 @@ + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/networktocode_bw.png b/docs/assets/networktocode_bw.png new file mode 100644 index 0000000000000000000000000000000000000000..075c4926d570b9db02c8808f34f40c8eb5f18a90 GIT binary patch literal 7562 zcmeHsMNk|L^W{K-LvV)xKip-IAFdNz1}C@-P9V7Z0E5fm3^KSo1Sb$6xFonHKyW8G zVe@^pmp$#?_uq%^cX(aZ^{ToLuVGpmig?&m*Z=?kPgzMp8vsCs|HU?#ul{Cy8Z9XR z;1xhiO&9d?Kk+{b{C})KACHpd-<5dr)Yi}eprF2bjfReaiG_`Wi}wbffRKoogp`b& zf|81whW0HTJ;OhYOw25-Z0sDIT--doeEb4HK_Ow0e?`T_B_yS!Wn|^#6+rJ4m6TOf z)zmdKwZPgsx_bHshDPs=O-#+qEiA39Z6LOG_709t&MqHZ-9EZ|czSvJ`1<(=1O^3% zgocGjL_(vYV_>my@d=4Z$tkI6@brw#tn8fJJVbs$VG**pq_nKOqOz*GrnauWp|PpC zrM0d7Q%7f4cTaC$|L1|hFGIs4Uq{ErCnl$+XJ+TVeV<=gTv}dPU0dJS-1_lzduR98 z-u}Vi(ecUY+4;rg)%EY2+q?UR$EW8%N0`e(005j@qJP$F(_FzKVacVI##9L{u4z-e^XnDb_!^C=7FtXvePL}*N> z?qf|8dFoMRYjG7bJ$ip87LQlUoM#lriH4-?>|b&a2zq$(@A1AB@9f5Y?JC}xbwv*Q z4?m0ml1PA@z=>q@h$MiR(JN##MzUR@GK|qMC}fjkf`4H$jCISz2q^xAXmW5-xflW7 zzkEVDxL+6nb4Q>CwYRq2Wa@ugDSu!Y+%@po$B0*9f_ni_Ty%NDJ!hsTgP2Rv=Uc%{ zzvic+8Ez>zk$!u@Rsu-f0Y&i5_evcRTRX;sJ{dTxn6Seva_ETIBUAh}y%zP#>n(h) z|L~Sw0>dAhQob`F)ndEdp6gj}#BxWeyZ!0}Ui45^SnVSQQF5$CuZr0a0lf$N#ukEx zeL;^m7&ZaIskY{D^4qZjvon(rGhy6nL zB)NW)hej#61(WQur5cUT-dg->2m(=JHHe7})v;7y%FMpe5k6Vza97arzwa!M;pFna zxJo_kAl|hDM4V?m0Hp2Z|IQtq+LDvlivjc|+vR@c{8hcNngUbHv9tUB^99N^didBt zEV-2H2aw+;@fOir(%3pFjYwOa=im8|boQQWRsBc7sZ?#L7}p09t{ zgrqCB*YjVbK;Ln#+T)LgOVG5cJLeb_!0m}7Qhi0U7$wKT;4%JlI@P-qzdKA3k7?%+ zql0IRTs~%wN*C4iQ(>g-^;;U2u?a_gVNA+bGpfW{n9dKZoxBfRMj|^0Yea^+)ES~R zQ#d4cr-aCs0U?8moB@pC08uTtIEuvC5$Nq}x1K=^7P$ig+bZcl6$@Q<-nJBiGVa|o$berV3g0TE@(lZ+>B=J(% z%4N!yj5~WYf(~yfgsU`<1Rk(d1P??#ueW&qK+pF-Ot@RIaXs0{Bt}y?{j(cZz3m!FkoX}04Y0Eu{v4JJ09llL;lSnR;0j-Ty!Mq`o3UZR2qWz z{Psy0#*(IWP;W>b{7IB0)v{)??~#yf{*okN?EOA;sFKaPJ4fXEQ^K>lvh9l&suH&X|L*Tm+_fMEMlV{0X-9{_;s`iVLpnD*I8Fi^EiHwKPtJ<;!|u6beayG z+CJDc1(E(0fy&nGllpXu_mTHn6tX`B56pspUaR-0C(T-+RoC!)noewC<89$aZS(-YbdOXXK2`LRXSH4G%?F$qKA8@2sod+e?q*!lRXF6TuJ3b!$&a%r2eTR{okAZ19{;2QzWCRfD|B0LuMC8P#!&6FnW7FY!D3qx$3e@#8S!$JH zylB}IfCYg@^Ne=|8BR!GBtc`b(U=``{gbAQqs}+%-wJGO%tZQECUCP^4@`3U>@`cF zAa8Opz?}m7&xk^}?S6tR^`sn-E;}i|26-}z$ulbU{&70BKIDnJ41toz_M+-k19iCk zA?5G$CvO`>L@Tb=;LX`m)J41a` zDTB*sR^C2iNQ_3sf2OK1j)N&#Sh@R0rL=NwO$cQHYso9J-tauFw>%}FDu3pu;?n2| z{=7Ae1=;|CuOwS-r>k?ZzHw|vCJZ|m3d!-#_?|y;&ui27ul)gzdyNDS0&MT^P?kNm zmu0(@?cgYl*Pz@Q75C)cQ1Wz?7TWATDevLm4n%ZTJ?xQDjs@c$EpM<}y?I;A4f)k+ zOY&`No?p0}(|9jU;xz3{*Na_J*eJfDn}sYp4ra@nu85B%&qr3UGzRG?IWqDr(r@2t zTdgzc?qlC$mRhUpOzK&9GloSdw7>?KORGfkV(E$ z;~13PbC7rAB!I~?OQ8|cKKJ}%DLPqI8WM@|R?9jnAx4GU^9gMmP-gGsbT4IZPK5dJi_ zg9>0rS}=z=tchJ$^;?uMU{mdC@6F8g4Jh%|#C+7L!O9|WPcr!FWPk(w0mZOda?;wh zRgoabZY!&`3#$|>7>vPSCf9pp_yvEdr2R;@Y>9Kd0b?_T8}}g~6(ueWlj&gXyjTfd z)xDR-y0q0-zJpuUAH|kSY<0*ai1Z=Zc6^e^{bF2q8kn62awmgXPt9;-v9(I7<3x|% zwiGRCeD$kA*=c5a{i#XA!d4~43@d^-dIMo(JwnQ21Zl!Bc+^-ifaDdyOVoS^9 z;fwM^47KhTLio0Zl3(uqk#$bA2Lx#n2s0X36~ps~1)r>=tP$NCssaT?N?Z;VSFadj zCag9ZQ3PwiY<&AD>U<*}I73Z%+`jH&S@{_Jrs|MLKs%Rki!=4INz8_8l)`cMy)Jxp zt8_au^60LGqA`hWFEq2QgK5W4NHrIM$PuXJiXR+s$b9U+_fYh-J#Wy4->UMzipucy z(ej^e{_~9G)IR9{AYC2d`NTdl^z9SoclBb@BS6XIKyYo%FBb2yTCWQaZLoW@-v_V? zxEC&4M(X|TXH!`ACdpFHqtw?x09zC%lSFJyrc{7JigE@?(CF1-Ltd>>z1ol=(VpYU z`{>cC_ZM?+gH$(!5ORd*4*0zD-Wp@y<%+5tFe60X$kQ-!&EJ~y1XlLeh`UXl12>e$bFcE$^v?i+^T(EXA-r%e? zE8(m4haR#hQw3!VGJ8D540*KXj}1W2X1|0ErMRSI&Pn8-0fk8@8d;K$ZJx;+$bkSPQfK zsderJ&CFwUOsWDdQ}jtj?TS^8QuLL2-0b0_ex4m|KHW`HkR>u^m#-CxQ@-z2A>`mP z{m^B51qu?8Oh@xdIu``97OqHx2sBBpK!d^B^&LKxt^F`$-8+`64|Rh$qbOq2ee{q% z2<)$HTOE`IOtPeki*m!<`Nex8 zlh;Z3FvC_Az6%^3(Z^m0=LXO9?$9J>klb3^CPvo~iOU&t<9t)XJ;Z!3iReRHMRrdF zx457%DDtajV?7FP)*t>`QWJUki*nCYctvISof~Xupx}O#8r{TWh+Mi&` zN@jSnC-vJJt?Hd3JYu<;JbG$Y>1t~_(;}#8Z0=`CkbUz9V>r)Z)4h(4Fe0!olPUqq zG=x*g&Cml-DM{8O#d=7ytGA*wZu(e`y^0ja$RJr4gN~z5H4#AyqQqt@!vjupZ=16(wmwYSWu|CT-6j`m9<|(i0CJsY+;k!3 zfyO?fS+QDT$*}K98|ZU1(bx)bQaQsfycMnxdLSw2W)R7=Id)C&x#cq9qzXq_ustMM zB7r#BO1XaRl^ z(f705hw4iVp08yD+qhOd&?plCgz~ecc~NhDU1Gr;;HfrCQjw48Hya{Hib+KXmW_37 zMwN2#MCmGOX~DU8q!@%zsxTIrj|5 zHDP(kPUR(0hF7To5zEvSg^`7N~j)53N_@&^l%zL zExhw`S;!yzJwI9ay&y3BT5PM-Ex!PhCr1dk<_Fjxi+f_jv84kb)mgWfiT8EDwUw<} zDe*wsA_A~Doqal0)OqCK`Msf0Jj?~$g!Kos62Fl9-F^s%_&fQ1<&(3bV8`#ZY#+^EkFM|l>vd-P zrb-`p3J>gTJx9XZ@z;hj6*bR;E8d7oc;=S2Jl%QWdo|BVjpPjT7Rj1tzSj?mS=eX1qM}!ikb|2pwY{d) z;omzj2)1!(w~!Q_<~5oRtf3_;Ex|N?lXALUMuE}c5ARgZ_*7YEkaP34?iReH-#yI7 zd5YRPBJLt6Y+SWFP(RscdHpV>awxE4Atxy-WK(aF!iJUsKWf~-JvU3`doUdj4|>FB z(d4zOltojwq_T$ST;oqFaOQ)P=*}*`^D`davGiYCzcbNsz)urSEXI>M)w1Tu{0g@q1g!s(LmM@}H~wZx087}t zEAj!yyVRdPB}fmdm;{jV7}a#5Na42KAp0#%XAj{7tTdijN$3d|k??jsS7W zF^RyNQ33qxEuxtLjr5+O?2{XuoiZ_{SK(jwDMsJBzw1%Nv?45G3n<&9j(9VQlE!uL zZ@YyVTvP1|2k#zg3D2(4JHPzR?dlmG;so`V+`clZ*)rucxV3Zv6=@RGo6Efo;qfx% zc(_*z!UwH$cqse3c0WBa`3#8gy~KH>>NN!Zt~!oQH?mvUDX%h_1lCL7upb>6%r1HN zTp?~0%1hF9Fhi&cx%vvjvp~yXt!_yy*0ybnC3byps82KUMjUUyxg@jYcY0)?1If7Y z1>3`R?Rbn8-ajNWyB*dad>xhyw+NJJ)eJ7{3#iW7qM-8+^pE(CKq`t*v-g%roY(Z8N%MZ&x`Ph3X zoe%ejJ=Q8IytFX*&cERlH{tu|#uXdOtY=%qIRY2PsexVZjROW1O4xF#L?UImo=gBY zd;$E`{XLou6^qQw(H5$o(Ij5N&7*z!A5hvTkF{*hr<7jXa%)n+xc7xSX}CF)K+2EB zPbFRJRWhJ3^4$mlE%mD_0&?8DBzZ0H+>5>yw}?{Qghr9hR_YJ-Lpq0!mvjDbkrP{sYmMiblYCPAb^*L2yzKA%oAL(iE6qcAG`u3DC@?6ZttE@_#YK z{~!GH!t9f90>l541HgZ2WT zv*-(B+=6|b5=KQ0_|ZHuM&um!CBkTl1s)!fOePyWg>$_O-1Sl + {% if config.copyright %} + + Apache-2.0 LICENSE + {% endif %} + + + + + +
\ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 00000000..f0db4a85 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,96 @@ +--- +dev_addr: "127.0.0.1:8001" +#edit_uri: "edit/main/nautobot/docs" Not sture what this should be. +site_dir: "nautobot_chatops/static/nautobot_chatops/docs" +site_name: "Nautobot Chatops Documentation" +site_url: "https://nautobot-plugin-chatops.readthedocs.io/en/stable/" +# TODO: replace when switching domain +# site_url: "https://docs.nautobot.com/projects/nautobot-plugin-chatops/en/stable/" +repo_url: "https://github.com/nautobot/nautobot-plugin-chatops" +copyright: "Copyright © The Authors" +theme: + name: "material" + navigation_depth: 4 + custom_dir: "docs/assets/overrides" + hljs_languages: + - "django" + - "yaml" + features: + - "navigation.tracking" + - "navigation.tabs" + - "navigation.tabs.sticky" + - "search.suggest" + - "search.highlight" + - "search.share" + favicon: "assets/favicon.ico" + logo: "assets/nautobot_logo.svg" + palette: + # Palette toggle for light mode + - media: "(prefers-color-scheme: light)" + scheme: "default" + primary: "black" + toggle: + icon: "material/weather-sunny" + name: "Switch to dark mode" + + # Palette toggle for dark mode + - media: "(prefers-color-scheme: dark)" + scheme: "slate" + primary: "black" + toggle: + icon: "material/weather-night" + name: "Switch to light mode" +extra_css: + - "assets/extra.css" + +# needed for RTD version flyout menu +# jquery is not (yet) injected by RTD automatically and it might be dropped +# as a dependency in the future +extra_javascript: + - "https://code.jquery.com/jquery-3.6.0.min.js" + +extra: + generator: false + ntc_sponsor: true + social: + - icon: "fontawesome/solid/rss" + link: "https://blog.networktocode.com/blog/tags/nautobot" + name: "NetworkToCode Blog" + - icon: "fontawesome/brands/youtube" + link: "https://www.youtube.com/playlist?list=PLjA0bhxgryJ2Ts4GJMDA-tPzVWEncv4pb" + name: "Nautobot Videos" + - icon: "fontawesome/brands/slack" + link: "https://www.networktocode.com/community/" + name: "NetworkToCode Community" + - icon: "fontawesome/brands/github" + link: "https://github.com/nautobot/nautobot" + name: "GitHub Repo" + - icon: "fontawesome/brands/twitter" + link: "https://twitter.com/networktocode" + name: "NetworkToCode Twitter" +markdown_extensions: + - "admonition" + - "toc": + permalink: true + - "attr_list" + - "md_in_html" + - "pymdownx.highlight": + anchor_linenums: true + - "pymdownx.inlinehilite" + - "pymdownx.snippets" + - "pymdownx.superfences" + +plugins: + - "search" + - "include-markdown" + - mkdocstrings: + default_handler: "python" + handlers: + python: + paths: ["."] + options: + show_root_heading: true + show_category_heading: true + +nav: + - Overview: "index.md" From e80cc98a6c44057118d5b504954531f8a1c53989 Mon Sep 17 00:00:00 2001 From: Stephen Kiely Date: Sat, 3 Sep 2022 10:38:06 -0500 Subject: [PATCH 02/14] Revamp Docs This PR implements the new Doc Standard. --- .github/workflows/ci.yml | 8 + .gitignore | 5 +- CHANGELOG.md | 5 +- README.md | 22 +- docs/FAQ.md | 2 +- .../chat_setup.md => admin/admin_install.md} | 140 ++---- docs/admin/admin_uninstall.md | 18 + docs/admin/admin_upgrade.md | 5 + .../{chat_setup => admin}/mattermost_setup.md | 5 +- .../microsoft_teams_setup.md | 9 +- docs/admin/release_notes/index.md | 3 + docs/admin/release_notes/version_1.1.md | 12 + docs/admin/release_notes/version_1.2.md | 10 + docs/admin/release_notes/version_1.3.md | 16 + docs/admin/release_notes/version_1.4.md | 19 + docs/admin/release_notes/version_1.5.md | 19 + docs/admin/release_notes/version_1.6.md | 8 + docs/admin/release_notes/version_1.7.md | 20 + docs/admin/release_notes/version_1.8.md | 11 + docs/{chat_setup => admin}/slack_setup.md | 16 +- docs/{chat_setup => admin}/webex_setup.md | 4 +- docs/assets/icon-ChatOps.png | Bin 0 -> 4804 bytes docs/dev/code_reference/api.md | 5 + docs/dev/code_reference/base.md | 5 + docs/dev/code_reference/index.md | 3 + docs/dev/code_reference/mattermost.md | 3 + docs/dev/code_reference/models.md | 1 + docs/dev/code_reference/ms_teams.md | 3 + docs/dev/code_reference/slack.md | 3 + docs/dev/code_reference/webex.md | 3 + docs/{ => dev}/design.md | 47 +- .../dev_contributing.md} | 51 +- docs/dev/dev_environment.md | 474 ++++++++++++++++++ docs/dev/dev_extending.md | 3 + docs/extending.md | 33 ++ docs/index.md | 6 + docs/requirements.txt | 6 + docs/user/app_faq.md | 12 + docs/user/app_getting_started.md | 69 +++ docs/user/app_overview.md | 21 + mkdocs.yml | 47 +- nautobot_chatops/api/__init__.py | 0 poetry.lock | 365 ++++++++------ pyproject.toml | 13 + tasks.py | 7 + 45 files changed, 1191 insertions(+), 346 deletions(-) rename docs/{chat_setup/chat_setup.md => admin/admin_install.md} (55%) create mode 100644 docs/admin/admin_uninstall.md create mode 100644 docs/admin/admin_upgrade.md rename docs/{chat_setup => admin}/mattermost_setup.md (95%) rename docs/{chat_setup => admin}/microsoft_teams_setup.md (94%) create mode 100644 docs/admin/release_notes/index.md create mode 100644 docs/admin/release_notes/version_1.1.md create mode 100644 docs/admin/release_notes/version_1.2.md create mode 100644 docs/admin/release_notes/version_1.3.md create mode 100644 docs/admin/release_notes/version_1.4.md create mode 100644 docs/admin/release_notes/version_1.5.md create mode 100644 docs/admin/release_notes/version_1.6.md create mode 100644 docs/admin/release_notes/version_1.7.md create mode 100644 docs/admin/release_notes/version_1.8.md rename docs/{chat_setup => admin}/slack_setup.md (95%) rename docs/{chat_setup => admin}/webex_setup.md (95%) create mode 100644 docs/assets/icon-ChatOps.png create mode 100644 docs/dev/code_reference/api.md create mode 100644 docs/dev/code_reference/base.md create mode 100644 docs/dev/code_reference/index.md create mode 100644 docs/dev/code_reference/mattermost.md create mode 100644 docs/dev/code_reference/models.md create mode 100644 docs/dev/code_reference/ms_teams.md create mode 100644 docs/dev/code_reference/slack.md create mode 100644 docs/dev/code_reference/webex.md rename docs/{ => dev}/design.md (79%) rename docs/{contributing.md => dev/dev_contributing.md} (70%) create mode 100644 docs/dev/dev_environment.md create mode 100644 docs/dev/dev_extending.md create mode 100644 docs/extending.md create mode 100644 docs/index.md create mode 100644 docs/requirements.txt create mode 100644 docs/user/app_faq.md create mode 100644 docs/user/app_getting_started.md create mode 100644 docs/user/app_overview.md create mode 100644 nautobot_chatops/api/__init__.py diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 98eadcb4..3411c719 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -160,6 +160,10 @@ jobs: run: "echo RELEASE_VERSION=${GITHUB_REF:10} >> $GITHUB_ENV" - name: "Run Poetry Version" run: "poetry version $RELEASE_VERSION" + - name: "Install Dependencies (needed for mkdocs)" + run: "poetry install --no-root" + - name: "Build Documentation" + run: "poetry run mkdocs build --no-directory-urls --strict" - name: "Run Poetry Build" run: "poetry build" - name: "Upload binaries to release" @@ -189,6 +193,10 @@ jobs: run: "echo RELEASE_VERSION=${GITHUB_REF:10} >> $GITHUB_ENV" - name: "Run Poetry Version" run: "poetry version $RELEASE_VERSION" + - name: "Install Dependencies (needed for mkdocs)" + run: "poetry install --no-root" + - name: "Build Documentation" + run: "poetry run mkdocs build --no-directory-urls --strict" - name: "Run Poetry Build" run: "poetry build" - name: "Push to PyPI" diff --git a/.gitignore b/.gitignore index 1907b409..0772694b 100644 --- a/.gitignore +++ b/.gitignore @@ -300,4 +300,7 @@ fabric.properties creds.env # Invoke overrides -invoke.yml \ No newline at end of file +invoke.yml + +# Static docs +/nautobot_chatops/static/nautobot_chatops/docs/ \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 7efc7d02..095e242b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,5 @@ -# Changelog - Nautobot Plugin Chatops + +# Changelog - Nautobot Plugin ChatOps ## 1.8.0 @@ -53,7 +54,7 @@ Minor update to better handle the versioning. This fixes an issue where the vers ## v1.4.0 -Updates Nautobot Chatops name for Webex Teams to Webex. As part of Cisco's renaming of Webex Teams to just Webex, the underlying configuration was updated. +Updates Nautobot ChatOps name for Webex Teams to Webex. As part of Cisco's renaming of Webex Teams to just Webex, the underlying configuration was updated. ### Fixes diff --git a/README.md b/README.md index fa926d03..b43131ec 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,10 @@ # nautobot-chatops +![ChatOps Logo](https://raw.githubusercontent.com/nautobot/nautobot-plugin-chatops/develop/docs/assets/icon-ChatOps.png) + A multi-platform ChatOps bot plugin for [Nautobot](https://github.com/nautobot/nautobot). -- Support for multiple chat platforms (currently Slack, Microsoft Teams, and WebEx) +- Support for multiple chat platforms (currently Slack, Microsoft Teams, Mattermost, and WebEx) - Write a command once and run it on every supported platform, including rich content formatting - Extensible - other Nautobot plugins can provide additional commands which will be dynamically discovered. - Automatic generation of basic help menus (accessed via `help`, `/command help`, or `/command sub-command help`) @@ -10,21 +12,18 @@ A multi-platform ChatOps bot plugin for [Nautobot](https://github.com/nautobot/n ## Documentation -- [Installation Guide](docs/chat_setup/chat_setup.md) -- [Design](docs/design.md) -- [Contributing](docs/contributing.md) -- [FAQ](docs/FAQ.md) - -## Contributing +Full web-based HTML documentation for this app can be found over on the [Nautobot Docs](https://docs.nautobot.com/projects/chatops/en/latest/) website: -Thank you for your interest in helping to improve Nautobot! -Refer to the [contributing guidelines](docs/contributing.md) for details. +- [User Guide](https://docs.nautobot.com/projects/chatops/en/latest/user/app_overview/) - Overview, Using the App, Getting Started +- [Administrator Guide](https://docs.nautobot.com/projects/chatops/en/latest/admin/admin_install/) - How to Install, Configure, Upgrade, or Uninstall the App. +- [Developer Guide](https://docs.nautobot.com/projects/chatops/en/latest/dev/dev_contributing/) - Extending the App, Code Reference, Contribution Guide. +- [Release Notes / Changelog](https://docs.nautobot.com/projects/chatops/en/latest/admin/release_notes/) +- [Frequently Asked Questions](https://docs.nautobot.com/projects/chatops/en/latest/user/app_faq/) ## Try it Out Interested to see Nautobot ChatOps in action? It's currently setup on the [Demo Instance](https://demo.nautobot.com/) and integrated into [NTC Slack](slack.networktocode.com). You can sign up for that Slack workspace and join the `#nautobot-chat` channel to understand what this bot can do and try it for yourself. You can try these exact chat commands and many more: - ### Command: `/nautobot` ![image](https://user-images.githubusercontent.com/6332586/118281576-5db4e980-b49b-11eb-8574-1332ed4b9757.png) @@ -33,13 +32,10 @@ Interested to see Nautobot ChatOps in action? It's currently setup on the [Demo ![image](https://user-images.githubusercontent.com/6332586/118281772-95239600-b49b-11eb-9c79-e2040dc4a982.png) - ### Command: `/nautobot get-interface-connections` - ![image](https://user-images.githubusercontent.com/6332586/118281976-ca2fe880-b49b-11eb-87ad-2a41eaa168ed.png) - ## Questions For any questions or comments, please check the [FAQ](docs/FAQ.md) first and feel free to swing by the [Network to Code slack channel](https://networktocode.slack.com/) (channel #nautobot). diff --git a/docs/FAQ.md b/docs/FAQ.md index cc057c5e..7f812c39 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -7,6 +7,6 @@ If a 404 error is being returned while trying to use a slash command that allows for filtering, there is most likely a typo within the Interactivity Request URL for your application. -- Navigate to [https://api.slack.com/apps](https://api.slack.com/apps) and select your Nautobot Chatops application that is currently in development +- Navigate to [https://api.slack.com/apps](https://api.slack.com/apps) and select your Nautobot ChatOps application that is currently in development - Under **Features**, navigate to "Interactivity & Shortcuts" - Under **Interactivity**, confirm that the Request URL is of the format: `https:///api/plugins/chatops/slack/interaction/` (Note the trailing slash) diff --git a/docs/chat_setup/chat_setup.md b/docs/admin/admin_install.md similarity index 55% rename from docs/chat_setup/chat_setup.md rename to docs/admin/admin_install.md index 81ab5957..b65629bc 100644 --- a/docs/chat_setup/chat_setup.md +++ b/docs/admin/admin_install.md @@ -1,131 +1,77 @@ -# Installing Nautobot Chatops +# Installing the App in Nautobot + +There are four main phases to enable Nautobot ChatOps: -There are four main phases to enable Nautobot chatops: 1. Configure the specific chat platform 2. Install the plugin -3. Configure `nautobot_config.py` to support chatops +3. Configure `nautobot_config.py` to support nautobot-chatops 4. Grant access to the chatbot in the Nautobot Web UI -## Requirements - -* Functioning Nautobot installation -* Publicly accessible URL for Nautobot or ability/permission to use ngrok to get a publicly accessible URL for Nautobot -* `sudo` access on the Nautobot server -* Administrative access within the Nautobot Web UI - -> Note: Some chat platforms, such as Slack, require a signed certificate from a trusted provider on the Nautobot server in order -> to allow the application platform to communicate with the Nautobot server - -## Platform-specific setup - -### [Setup for Slack](./slack_setup.md) +## Prerequisites -### [Setup for Microsoft Teams](./microsoft_teams_setup.md) +- The plugin is compatible with Nautobot 1.2.0 and higher. +- Databases supported: PostgreSQL, MySQL +- Publicly accessible URL for Nautobot or ability/permission to use ngrok to get a publicly accessible URL for Nautobot +- `sudo` access on the Nautobot server +- Administrative access within the Nautobot Web UI -### [Setup for WebEx](./webex_setup.md) +!!! note + Some chat platforms, such as Slack, require a signed certificate from a trusted provider on the Nautobot server in order + to allow the application platform to communicate with the Nautobot server -### [Setup for Mattermost](./mattermost_setup.md) +## Access Requirements -## Plug-In Installation +### [Setup for Slack](slack_setup.md) -The plugin is available as a Python package in PyPI and can be installed with `pip3` after logging in with the `nautobot` user account. +### [Setup for Microsoft Teams](microsoft_teams_setup.md) -```shell -sudo -iu nautobot -pip3 install nautobot-chatops -``` - -> The plugin is compatible with Nautobot 1.0.0beta1 and higher +### [Setup for WebEx](webex_setup.md) -Once installed, the plugin needs to be enabled in your `nautobot_config.py` +### [Setup for Mattermost](mattermost_setup.md) -```python -# In your nautobot_config.py -PLUGINS = ["nautobot_chatops"] - -PLUGINS_CONFIG = { - "nautobot_chatops": { - # ADD YOUR SETTINGS HERE - } -} -``` - -Nautobot supports `Slack`, `MS Teams`, `Mattermost`, and `Webex` as backends but by default all of them are disabled. -You need to explicitly enable the chat platform(s) that you want to use in the `PLUGINS_CONFIG` with one or more of `enable_slack`, `enable_ms_teams`, `enable_mattermost`, or `enable_webex`. - -The plugin behavior can be controlled with the following list of general settings: - -| Configuration Setting | Description | Mandatory? | Default | -| ---------------------------- | ----------- | ---------- | ------- | -| `delete_input_on_submission` | After prompting the user for additional inputs, delete the input prompt from the chat history | No | `False` | +## Install Guide -TODO: clarify the above statement, starting from "The plugin behavior can be controlled . . ." +!!! note + Plugins can be installed manually or using Python's `pip`. See the [nautobot documentation](https://nautobot.readthedocs.io/en/latest/plugins/#install-the-package) for more details. The pip package name for this plugin is [`nautobot_chatops`](https://pypi.org/project/nautobot_chatops/). -### Run Migrations +!!! warning + You should follow the [Nautobot Plugin Installation Instructions](https://nautobot.readthedocs.io/en/stable/plugins/#installing-plugins) for the full and up-to-date list of instructions. -Once the setup is done, the Nautobot `post_upgrade` command needs to be run. As the _Nautobot user_ (which following Nautobot install docs is `nautobot`) execute: +The plugin is available as a Python package via PyPI and can be installed with `pip`: -```bash -nautobot-server post_upgrade -``` - -This command runs migrations and clears the cache as necessary. - -### Restart Nautobot - -As a root user, restart the Nautobot services. - -```bash -systemctl restart nautobot nautobot-worker +```shell +pip install nautobot-chatops ``` -If there is an additional service file for a separate RQ/Celery worker setup, also run: +To ensure Nautobot Plugin ChatOps is automatically re-installed during future upgrades, create a file named `local_requirements.txt` (if not already existing) in the Nautobot root directory (alongside `requirements.txt`) and list the `nautobot-chatops` package: -```bash -systemctl restart nautobot-rq-worker +```no-highlight +# echo nautobot-chatops >> local_requirements.txt ``` -## Server Configuration - -As the `nautobot` user, you will now edit the `nautobot_config.py` file. - -There are also some platform-specific requirements to configure. -Some values from your chat platform-specific configuration in the prior section are configured in `nautobot_config.py`. - -Below is a sample configuration snippet in `nautobot_config.py` that enables Slack. This is meant to serve as a general example of -how to configure and enable the chatops plugin. +Once installed, the plugin needs to be enabled in your Nautobot configuration. The following block of code below shows the additional configuration required to be added to your `nautobot_config.py` file: -Note a few details about this example: -* You must add `"nautobot_chatops"` to the list defined by `PLUGINS` -* The `slack_api_token` and `slack_signing_secret` values were taken from the values presented in the Slack platform-specific setup. -* Alternately, the `slack_api_token` and `slack_signing_secret` values could also be stored in an `.env` file, then referred to by those defined environment variables in `PLUGINS_CONFIG`. -* Some commands can use a user's session cache to keep state for some data between commands (e.g. use the same target device between commands). By default, it keeps data for 86400 seconds, but with `session_cache_timeout` this value can be adjusted. +- Append `"nautobot_chatops"` to the `PLUGINS` list. +- Append the `"nautobot_chatops"` dictionary to the `PLUGINS_CONFIG` dictionary and override any defaults. ```python -# Enable installed plugins. Add the name of each plugin to the list. +# In your nautobot_config.py PLUGINS = ["nautobot_chatops"] -PLUGINS_CONFIG = { - 'nautobot_chatops': { - 'enable_slack': True, - 'slack_api_token': 'xoxb-2078939598626-2078997105202-3QupQHVC3lEhyGtKPpK62fGB', - 'slack_signing_secret': '1be5e964569d52a2e74f13fcefb1213f', - 'session_cache_timeout': 3600, - } -} +# PLUGINS_CONFIG = { +# "nautobot_chatops": { +# ADD YOUR SETTINGS HERE +# } +# } ``` -As a sudo-enabled user, restart the `nautobot` and `nautobot-worker` process after updating `nautobot_config.py`. +## App Configuration -``` -sudo systemctl restart nautobot.service nautobot-worker.service -``` +The plugin behavior can be controlled with the following list of settings: -Finally, validate that the `nautobot` and `nautobot-worker` processes have restarted successfully: - -``` -sudo systemctl status nautobot.service nautobot-worker.service -``` +| Configuration Setting | Description | Mandatory? | Default | +| ---------------------------- | ----------- | ---------- | ------- | +| `delete_input_on_submission` | After prompting the user for additional inputs, delete the input prompt from the chat history | No | `False` | ## Grant Access to the Chatbot diff --git a/docs/admin/admin_uninstall.md b/docs/admin/admin_uninstall.md new file mode 100644 index 00000000..d1a18925 --- /dev/null +++ b/docs/admin/admin_uninstall.md @@ -0,0 +1,18 @@ +# Uninstall the App from Nautobot + +## Uninstall Guide + +1. Remove Database migrations for ChatOps: + + ```bash + nautobot-server migrate nautobot-chatops zero + ``` + +2. Remove the configuration you added in `nautobot_config.py` from `PLUGINS` & `PLUGINS_CONFIG`. +3. Run Nautobot-server post_upgrade + + ```bash + nautobot-server post_ugprade + ``` + +4. Restart Nautobot Services diff --git a/docs/admin/admin_upgrade.md b/docs/admin/admin_upgrade.md new file mode 100644 index 00000000..9fc84d8e --- /dev/null +++ b/docs/admin/admin_upgrade.md @@ -0,0 +1,5 @@ +# Upgrading the App + +## Upgrade Guide + +When a new release comes out it may be necessary to run a migration of the database to account for any changes in the data models used by this plugin. Execute the command `nautobot-server post_upgrade` from the Nautobot install nautobot/ directory after updating the package. diff --git a/docs/chat_setup/mattermost_setup.md b/docs/admin/mattermost_setup.md similarity index 95% rename from docs/chat_setup/mattermost_setup.md rename to docs/admin/mattermost_setup.md index a7f1ed32..9affd647 100644 --- a/docs/chat_setup/mattermost_setup.md +++ b/docs/admin/mattermost_setup.md @@ -52,4 +52,7 @@ Here is an example that supports Mattermost. **Note:** The Comment field is optional and used to help the user when there are multiple tokens. -[Chat Setup](./chat_setup.md) +## General Chat Setup Instructions + +See [admin_install](admin_install) instructions here for general plugin setup instructions. + diff --git a/docs/chat_setup/microsoft_teams_setup.md b/docs/admin/microsoft_teams_setup.md similarity index 94% rename from docs/chat_setup/microsoft_teams_setup.md rename to docs/admin/microsoft_teams_setup.md index 9add9cf7..f0d5e6ad 100644 --- a/docs/chat_setup/microsoft_teams_setup.md +++ b/docs/admin/microsoft_teams_setup.md @@ -43,11 +43,14 @@ 3. Select the tile for the new Nautobot app. Click the blue “Add” button. 4. Proceed to the Nautobot Server Preparation and Configuration section in the [Chat Setup](./chat_setup.md) document. -## Handling Chatops Behind a Firewall +## Handling ChatOps Behind a Firewall A common security concern with ChatOps is how to protect your network/application from malicious activity. In order to do so proper firewall policy should be implemented. Through trials, researching, and testing in multiple environments, allowing inbound connections from `52.12.0.0/14` has proven to be successful. Although Microsoft doesn't publish all their ranges this range was found in a [Microsoft Blog Post](https://blog.botframework.com/2020/11/23/bots-secured-behind-a-firewall-teams/) and has yielded success in locked down environments. - ## Additional Resources -Reference the [Setting Up Nautobot Chatops With MSTeams Spring 2022](https://blog.networktocode.com/post/setting-up-nautobot-chatops-with-msteams-spring-2022/) blog post for more details and additional screenshots. \ No newline at end of file +Reference the [Setting Up Nautobot ChatOps With MSTeams Spring 2022](https://blog.networktocode.com/post/setting-up-nautobot-chatops-with-msteams-spring-2022/) blog post for more details and additional screenshots. + +## General Chat Setup Instructions + +See [admin_install](admin_install) instructions here for general plugin setup instructions. diff --git a/docs/admin/release_notes/index.md b/docs/admin/release_notes/index.md new file mode 100644 index 00000000..12cb5169 --- /dev/null +++ b/docs/admin/release_notes/index.md @@ -0,0 +1,3 @@ +# Release Notes + +All the published release notes can be found via the navigation menu. All patch releases are included in the same minor release (e.g. `v1.2`) document. diff --git a/docs/admin/release_notes/version_1.1.md b/docs/admin/release_notes/version_1.1.md new file mode 100644 index 00000000..4965d501 --- /dev/null +++ b/docs/admin/release_notes/version_1.1.md @@ -0,0 +1,12 @@ +# v1.1 Release Notes + +## [v1.1.0](https://github.com/nautobot/nautobot-plugin-chatops/releases/tag/v1.1.0) + +### What's New + +- Slack handling of list items > 100 items, now including a `next` option in the drop down list to get more options [#10](https://github.com/nautobot/nautobot-plugin-chatops/pull/10) + +### Bug Fixes + +- Updated MS Teams Zip File [#29](https://github.com/nautobot/nautobot-plugin-chatops/pull/29) +- Fix connection filter ordering [#23](https://github.com/nautobot/nautobot-plugin-chatops/pull/23) diff --git a/docs/admin/release_notes/version_1.2.md b/docs/admin/release_notes/version_1.2.md new file mode 100644 index 00000000..14344158 --- /dev/null +++ b/docs/admin/release_notes/version_1.2.md @@ -0,0 +1,10 @@ +# v1.2 Release Notes + +## [v1.2.0](https://github.com/nautobot/nautobot-plugin-chatops/releases/tag/v1.2.0) + +- Replaces Slack client (slack_client) with Slack SDK (https://pypi.org/project/slack-sdk/) +- This update does not require any code changes to the bots that leverage Slack. This does require the update of system requirements on installation. + +### Fixes + +[#2](https://github.com/nautobot/nautobot-plugin-chatops/issues/2) - Cisco WebEx error on content too large diff --git a/docs/admin/release_notes/version_1.3.md b/docs/admin/release_notes/version_1.3.md new file mode 100644 index 00000000..3e428eb7 --- /dev/null +++ b/docs/admin/release_notes/version_1.3.md @@ -0,0 +1,16 @@ +# v1.3 Release Notes + +## [v1.3.0](https://github.com/nautobot/nautobot-plugin-chatops/releases/tag/v1.3.0) + +Updates to pyjwt to address concerns with other dependencies in the Nautobot ecosystem. + +### Updates + +Updates pyjwt from 1.7.1 minimum to 2.1 +Adds cryptography as separate requirement + +## [v1.3.1](https://github.com/nautobot/nautobot-plugin-chatops/releases/tag/v1.3.1) + +### Fixes + +- [#54)](https://github.com/nautobot/nautobot-plugin-chatops/pull/54) Reverted pinning of cryptography diff --git a/docs/admin/release_notes/version_1.4.md b/docs/admin/release_notes/version_1.4.md new file mode 100644 index 00000000..cdb23dc0 --- /dev/null +++ b/docs/admin/release_notes/version_1.4.md @@ -0,0 +1,19 @@ +# v1.4 Release Notes + +## [v1.4.0](https://github.com/nautobot/nautobot-plugin-chatops/releases/tag/v1.4.0) + +Updates Nautobot ChatOps name for Webex Teams to Webex. As part of Cisco's renaming of Webex Teams to just Webex, the underlying configuration was updated. + +### Fixes + +[#68)](https://github.com/nautobot/nautobot-plugin-chatops/pull/68) Correct var names for Nautobot +[#61)](https://github.com/nautobot/nautobot-plugin-chatops/pull/61) Mattermost sending interactive Dialog + +### Updates + +[#63)](https://github.com/nautobot/nautobot-plugin-chatops/pull/63) Add additional Breadcrumbs +[#24](https://github.com/nautobot/nautobot-plugin-chatops/issues/24) Rename Webex Teams to Webex + +## [v1.4.1](https://github.com/nautobot/nautobot-plugin-chatops/releases/tag/v1.4.1) + +Minor update to better handle the versioning. This fixes an issue where the version number within Nautobot was not updated alongside the pyproject.toml. diff --git a/docs/admin/release_notes/version_1.5.md b/docs/admin/release_notes/version_1.5.md new file mode 100644 index 00000000..86b23057 --- /dev/null +++ b/docs/admin/release_notes/version_1.5.md @@ -0,0 +1,19 @@ + +# v1.5 Release Notes + +## [v1.5.0](https://github.com/nautobot/nautobot-plugin-chatops/releases/tag/v1.5.0) + +### Updates + +- Introduced support for MySQL database backends +- Introduced support for Nautobot Celery workers + +### Fixes + +[#17](https://github.com/nautobot/nautobot-plugin-chatops/issues/17) - Error with filtering by empty regions, no message back + +## [v1.5.1](https://github.com/nautobot/nautobot-plugin-chatops/releases/tag/v1.5.1) + +### Fixes + +[#97](https://github.com/nautobot/nautobot-plugin-chatops/pull/97) Fixes MS Teams Bold markdown. Moves from `****` to `**` to align with guides from Microsoft diff --git a/docs/admin/release_notes/version_1.6.md b/docs/admin/release_notes/version_1.6.md new file mode 100644 index 00000000..fa355432 --- /dev/null +++ b/docs/admin/release_notes/version_1.6.md @@ -0,0 +1,8 @@ +# v1.6 Release Notes + +## [v1.6.0](https://github.com/nautobot/nautobot-plugin-chatops/releases/tag/v1.6.0) + +### Additions + +[#123](https://github.com/nautobot/nautobot-plugin-chatops/pull/123) Added export button for chat command usage as CSV +[#120](https://github.com/nautobot/nautobot-plugin-chatops/pull/120) Added `send_all_messages_private` setting diff --git a/docs/admin/release_notes/version_1.7.md b/docs/admin/release_notes/version_1.7.md new file mode 100644 index 00000000..1e146645 --- /dev/null +++ b/docs/admin/release_notes/version_1.7.md @@ -0,0 +1,20 @@ +# v1.7 Release Notes + +## [v1.7.0](https://github.com/nautobot/nautobot-plugin-chatops/releases/tag/v1.7.0) + +### Additions + +[#128](https://github.com/nautobot/nautobot-plugin-chatops/pull/128) + +### Fixes + +[#129](https://github.com/nautobot/nautobot-plugin-chatops/pull/129) Fixes errors on private messages +[#128](https://github.com/nautobot/nautobot-plugin-chatops/pull/128) Access grants updates + +## [v1.7.1](https://github.com/nautobot/nautobot-plugin-chatops/releases/tag/v1.7.1) + +### What's Changed + +* Fix slack msg limits by @jvanderaa in [#133](https://github.com/nautobot/nautobot-plugin-chatops/pull/133) + +[**Full Changelog**](https://github.com/nautobot/nautobot-plugin-chatops/compare/v1.7.0...v1.7.1) \ No newline at end of file diff --git a/docs/admin/release_notes/version_1.8.md b/docs/admin/release_notes/version_1.8.md new file mode 100644 index 00000000..7d00bfe0 --- /dev/null +++ b/docs/admin/release_notes/version_1.8.md @@ -0,0 +1,11 @@ +# v1.8 Release Notes + +## [v1.8.0](https://github.com/nautobot/nautobot-plugin-chatops/releases/tag/v1.8.0) + +### What's Changed + +* Add support for Nautobot 1.3.0 +* Drop support for Nautobot <1.1.0 +* Drop support for Python3.6 + +[**Full Changelog**](https://github.com/nautobot/nautobot-plugin-chatops/compare/v1.7.1...v1.8.0) \ No newline at end of file diff --git a/docs/chat_setup/slack_setup.md b/docs/admin/slack_setup.md similarity index 95% rename from docs/chat_setup/slack_setup.md rename to docs/admin/slack_setup.md index 73e8b97b..a98772fe 100644 --- a/docs/chat_setup/slack_setup.md +++ b/docs/admin/slack_setup.md @@ -13,7 +13,7 @@ These values will be used in the `nautobot_config.py` file, once we get to the s For now, take a mental note that in this section where we are configuring the Slack application, we will need to explicitly note the `slack_api_token` and `slack_signing_secret` values when they are presented. -Example config snippet from `nautobot_config.py` for configuring chatops with Slack: +Example config snippet from `nautobot_config.py` for configuring ChatOps with Slack: ```python # Enable installed plugins. Add the name of each plugin to the list. @@ -49,7 +49,7 @@ PLUGINS_CONFIG = { 1. Log in to [https://api.slack.com/apps](https://api.slack.com/apps) and select "Create New App". - Select "From scratch" - - Enter "Nautobot Chatops" as the "App Name" + - Enter "Nautobot ChatOps" as the "App Name" - Select your preferred Slack workspace for your app - Click "Create App" 2. On the "Basic Information" page for your app, under "Add features and functionality", select "Interactive Components" @@ -59,7 +59,7 @@ PLUGINS_CONFIG = { - Select "Save Changes" 3. On the "Basic Information" page for your app, under "Add features and functionality", select "Slash Commands" - Decide now whether your setup requires a slack slash command prefix to disambiguate this bot's commands from those understood - by other bots (such as if you have multiple older Nautobot Chatops versions also enabled), such as `/nautobot-` or `/network2-` + by other bots (such as if you have multiple older Nautobot ChatOps versions also enabled), such as `/nautobot-` or `/network2-` - This part is a bit tedious, but for each supported command (e.g. `/nautobot`, `/grafana`) you will need to: - Select "Create New Command" - Enter the command text, the request URL (`https:///api/plugins/chatops/slack/slash_command/` in all cases), @@ -106,11 +106,11 @@ PLUGINS_CONFIG = { Proceed to the [Nautobot Server Preparation and Configuration](./chat_setup.md#Plug-In-Installation) section. > **Note**: In the Slack app, you will need to invite the chatbot to each channel that it will belong to with `@`. -> For example, when an app named `Nautobot Chatops` is installed to the workspace: +> For example, when an app named `Nautobot ChatOps` is installed to the workspace: > -> 1. A message is displayed in the channel, saying that the integration`Nautobot Chatops` has been added -> 2. You `@Nautobot Chatops` in the channel -> 3. You are prompted to add `@Nautobot Chatops` to the channel +> 1. A message is displayed in the channel, saying that the integration`Nautobot ChatOps` has been added +> 2. You `@Nautobot ChatOps` in the channel +> 3. You are prompted to add `@Nautobot ChatOps` to the channel ![slack integration invite](../images/add_nautobot.png) @@ -160,4 +160,4 @@ PLUGINS_CONFIG = { ## General Chat Setup Instructions -See [Chat Setup](./chat_setup.md) instructions here for general plugin setup instructions. +See [admin_install](admin_install) instructions here for general plugin setup instructions. diff --git a/docs/chat_setup/webex_setup.md b/docs/admin/webex_setup.md similarity index 95% rename from docs/chat_setup/webex_setup.md rename to docs/admin/webex_setup.md index 8af00f3c..1270e0c0 100644 --- a/docs/chat_setup/webex_setup.md +++ b/docs/admin/webex_setup.md @@ -40,4 +40,6 @@ As of Nautobot ChatOps Plugin v1.4.0, the PLUGIN_CONFIG settings for Webex has c Both settings will currently work, however support for `enable_webex_teams`, `webex_teams_token` and `webex_teams_signing_secret` will be removed in v2.0.0. -[Chat Setup](./chat_setup.md) +## General Chat Setup Instructions + +See [admin_install](admin_install) instructions here for general plugin setup instructions. diff --git a/docs/assets/icon-ChatOps.png b/docs/assets/icon-ChatOps.png new file mode 100644 index 0000000000000000000000000000000000000000..4196821e78933d3f751e65f7505f31d80f4c9a28 GIT binary patch literal 4804 zcmb_e2|QHm-yef?m8B>uavGvAW--RhWMs|Olsh4mG-l2)mYHd0>|5wsE270xWGPA3 ziV%`Dq)6Gix``A?vZR#Wqs4pQ|9kKMy`TT*J)d)Cp7VRY&-b@H-{*NwjP)Kf3Gt2M zFc?h2!rX)kg9#--kEVz)WKl|)pMt?wG_h>#1@@HPBs#}Si^kx%fLeZDT&N!g)7$CC zrO`b=0pJ3^1Y8mdi{>fkh^65MlSHR-1fh9(o3&&ePMnI8%Pr-}3 zOv~o~C=*mLlpl?Y!f2tFQu+pD(3f#sZ=UBj=L|Xu^aQ;?wtx>|G0Rw}N)*a6{4Z&} zyq3{?fvFD^(U08z63w^q=Yl9I$me+T=%A?&o zCgAXFI2_NP6J`CA1;App(7-kdjm}~(@or!8^J55TLKA>w1T=3LBpQpvU~DjW5>AH% zwb9To`a6^YDS<%~(Ec}A7s8OVb^ZsK!(cJ}|4%4`PGWL+UNopqEH9cXh~lzczj>oj zNEU3qfX1eS7A9l_6si`B#UN=j7+8jj3mu8o*3m}da4sN{rmL%q#1WV{Jca?%Xaw5N z@g^L)_tG3LjsGrZ28RxDELV=?f~GUH33w2xOQ1861U$|KNn~I^BnV>g7#v;)gCpqt zWZTPQK`V;p`DfOps2C61upkBr($HumP6wllB;s)pEgHkr!D!PlL?#vi{I_3Y zjwgpl;V__@Yya79VQg&8<1ksCPzRrCW&~K68sjlUJRXVF!Ym2@n*d4XEIu^L{y&z| zKJdtomM07Nra2OgzO*dJ2>Oy9KnCK6ne`V1{b!+nr}cFMA<}=NlJ77+hbi!-@jydY zsQCXthp4{`pHK7o_rVhhM3Cvi&_=r8@H9vbAR0+v>d=rF0!Eubr(*~NBJ*eRe-k`* zS+)OJ@IOjRccZagL1>>vA^!7p{+YP{ZZ7_15&nOsgId~Pzv~S3uM+&$_ovMmn#^w| zXop{FE*~w>%ktp_vY|@xprdEUIh-qWZ2iJDci_Wdt7MiQAz12pdB~`4z1zmrjJq3l z?(09fn`=bWp-~b7>YjbD@Low&b>5RZ#}IGaq- zO!~rf!WhX;O$XL|YFEg6OORW4ayl?M?ex_uv#g^fv-{ikwLW-Nn?Hz4Ihve1I`h(; zf;J>(&t@s0(6sHrX3n+mRj0RFrKT3mBinON=iZnZF1HUc>`mc#v|#E!$9XfWeH4;3 z6Kr%2BnfKo!4qfPFO5by9L^gX-stSQmfG1Y{x#X+UZPey#x7BqhI(Chs>PCr9{&X? zORmpp?5b5^T>D?aK9TePHUI2eT$M`W_ESwtqGBMM~< zB+F!7+S5$Ki<^yvKf+t3Z`-H3DMQN}yKPQK5jy&HV^`b11x_I&|V^qY&j}R@2N@LjRGj?uWd3*5I3FMQ-WHqNX#eJ5k8dW;% z#KM(j+)BMrf7?5s)L|c${OA}TN)A3sEUf=oH}7eP<&rtf=jpW+Ss}44Zy9-uLhpU&+rjCNKv2|&h_f5oZAp38|P)TFV`5 zK3#_IbG+uHnF!3jU>3$S9QULge*L0aMa6^TcC6dLP9rt>#iEs{P?z-nVE-3IY-U6F z%Fs<8ypW0&s90cWmqjW92NU5psWGlXre^v^9_O^gnT?bS1L6t0jb zCuluU)ktK?B%CF7Jv?0<`@6%MIpynK@UBm=$LD^P__dOlH%;jVN;^6EwbE^7veBOU ziKE@HtQCnvk6|k#hcfdDC*pRtbt;bVMBRhNop&D(FjWz2TXnnR*Vq8l!h7CFD(ujP z5!QyW`Ua}%=3g-wR-c;dENx5oxV+MYoqptIZtGOMuTVtGy3x1OA=M6pJ0=IpCj*7c zoSiL-c@LvyTYS=5`#hUfQ~S>!6m8rBPtiVhMnpYPx%T>?!^V3X%)21Ph99unmcJiH z6^S@)y8A|mmvz;pYthFr;wE!8r!|X$w-)8N=8_^+Pju)POXp2Y@qhr>GVpjJL%U_X`h z5CPWZrz=Fl(&GXYw@i@XUczCCd( zZ&S1}LkoB7ldi?ud0X*%!|@l19&qPV_777Hg6M`C2`2A+j!-XOqZ&pK?zcxDQa_XY zusNO(zb&rGaB6=<((psTiK;rXcxS*vQew!jw4QiGal!7DDYATh$F%<9*Q!8xn4VRZ z%A#YzXvD>X_-&^fTw|0MGt}yRRXUPXYt*vK7Z;CY%;}mvw}9VQe!7r*Grp%fc-Az@ zap0M8;pcl_4-v5Z;ob*$R8LE2e{*@q`o$rGQSESaW7tf-UDzw!$5fLNQ z^q487!MR-!Jss4PvL?ZH__u}mxcs3aLQSX8!?uiz+IObiC59O-fpNA5V=WqTFHm|T zHy{3*7T5ENB&PQK#HTOt8Pg-wd*_}5=kt!_ueJ=Oih55UclmTngqkFyx=&6YC+-{l zn)vYCoY;zAN~`IJ^q$hU@ai!7``>D=bZ`SL_a4u2eHjM0mzrF9o28Pcry+6je$b)) zdH2=6_EYQB9M`^O6g9q`=}rphoN5fau)|lM^v>JPc5p)R>L2GCyh=aZF#GHmnnWqx zoj;e$+&Qx*<~c8|NgY|U{@UQJUe9Xh{mCD?8w(~p9jYoMN21t`7heKuiwB~VDmJmh zeis{F&*7KZc?6%4S9p@67p~ej>^N848#V4(b$Hw{Ue)5}?7k59(4+_(%)8j+5ye`M zUfKtRfW$L;i*eO+0Z*TGZ$4;cx1Pxjxlzq_2@Q-~=#EMuP{ zrI)A!9#fMsNQl_N13s+RkA`2`8Uo^Mq@UJb6Fbhmu=m}L2^#8?{xfz!A?vEt)!z1(G~f(q|| zm%YM~9oRNsU!_fJ*4D&6JrlQ9to9L~Ck}PJ4-tT8| | @@ -83,7 +82,7 @@ The design goal of this plugin is to be able to write chatbot commands once and ...Time passes... -``` +```no-highlight [ Chat client ] [ Chat server ] [ Nautobot django_rq worker process ----------------------------------- ] | | | nautobot/workers/* | | | Pick up next job from queue diff --git a/docs/contributing.md b/docs/dev/dev_contributing.md similarity index 70% rename from docs/contributing.md rename to docs/dev/dev_contributing.md index d9ea25a8..58f3a667 100644 --- a/docs/contributing.md +++ b/docs/dev/dev_contributing.md @@ -1,56 +1,13 @@ -# Contributing to Nautobot Chatops +# Contributing to Nautobot ChatOps -Pull requests are welcomed and automatically built and tested against multiple version of Python and multiple version of Nautobot through TravisCI. +Pull requests are welcomed and automatically built and tested against multiple version of Python and multiple version of Nautobot through Github Actions. -The project is packaged with a light development environment based on `docker-compose` to help with the local development of the project and to run the tests within TravisCI. +The project is packaged with a light development environment based on `docker-compose` to help with the local development of the project and to run the tests within Github Actions. The project is following Network to Code software development guidelines and is leveraging: - Black, Pylint, Bandit and pydocstyle for Python linting and formatting. - Django unit test to ensure the plugin is working properly. -## Development Environment - -The project comes with a CLI helper based on [invoke](http://www.pyinvoke.org/) to help setup the development environment. The commands are listed below in 3 categories `dev environment`, `utility` and `testing`. - -Each command can be executed with `invoke `. All commands support the arguments `--nautobot-ver` and `--python-ver` if you want to manually define the version of Python and Nautobot to use. Each command also has its own help `invoke --help` - -### Local dev environment - -Note that for a functional development environment (being able to actually use the created Nautobot/Nautobot instance -as a chat bot) you must specify platform-specific configuration parameters as described in -[`chat_setup.md`](chat_setup/chat_setup.md). For the development environment, these parameters are specified by copying the -provided `creds.env.example` file to `creds.env` and customizing the contents of the copied file appropriately. - -``` - build Build all docker images. - debug Start Nautobot and its dependencies in debug mode. - destroy Destroy all containers and volumes. - start Start Nautobot and its dependencies in detached mode. - stop Stop Nautobot and its dependencies. -``` - -### Utility - -``` - cli Launch a bash shell inside the running Nautobot container. - create-user Create a new user in django (default: admin), will prompt for password. - makemigrations Run Make Migration in Django. - nbshell Launch a nbshell session. -``` - -### Testing - -While the plugin itself supports any general release version of Nautobot, the testing requires at minimum 1.0.2. - -``` - tests Run all tests for this plugin. - pylint Run pylint code analysis. - pydocstyle Run pydocstyle to validate docstring formatting adheres to NTC defined standards. - bandit Run bandit to validate basic static code security analysis. - black Run black to check that Python files adhere to its style standards. - unittest Run Django unit tests for the plugin. -``` - ## Adding a new top-level command First, you should be familiar with the design goals and constraints involved in Nautobot (`design.md`). @@ -59,7 +16,7 @@ Be sure that this is really what you want to do, versus adding a subcommand inst We recommend that each command exist as its own submodule under `nautobot_chatops/workers/` (or, as a separate package entirely, such as `nautobot_chatops_mycommand/worker.py`, using the entrypoint/plugin capability described in `design.md`) so as to keep code files to a reasonable size and complexity. This submodule or package should implement a -`django-rq` worker function(s). In general this worker function shouldn't need to do much more than call +`celery` worker function(s). In general this worker function shouldn't need to do much more than call the `handle_subcommands` helper function provided: ```python diff --git a/docs/dev/dev_environment.md b/docs/dev/dev_environment.md new file mode 100644 index 00000000..5fce28d0 --- /dev/null +++ b/docs/dev/dev_environment.md @@ -0,0 +1,474 @@ +# Building Your Development Environment + +## Quickstart + +The development environment can be used in two ways: + +1. `Recommended` All services are spun up using Docker and a local mount so you can develop locally, but Nautobot is spun up within the Docker container. +2. With a local poetry environment if you wish to develop outside of Docker with the caveat of using external services provided by Docker for PostgresQL and Redis. + +This is a quick reference guide if you're already familiar with the development environment provided, which you can read more about later in this document. + +### Invoke + +The [Invoke](http://www.pyinvoke.org/) library is used to provide some helper commands based on the environment. There are a few configuration parameters which can be passed to Invoke to override the default configuration: + +- `nautobot_ver`: the version of Nautobot to use as a base for any built docker containers (default: latest) +- `project_name`: the default docker compose project name (default: `nautobot_chatops`) +- `python_ver`: the version of Python to use as a base for any built docker containers (default: 3.8) +- `local`: a boolean flag indicating if invoke tasks should be run on the host or inside the docker containers (default: False, commands will be run in docker containers) +- `compose_dir`: the full path to a directory containing the project compose files +- `compose_files`: a list of compose files applied in order (see [Multiple Compose files](https://docs.docker.com/compose/extends/#multiple-compose-files) for more information) + +Using **Invoke** these configuration options can be overridden using [several methods](https://docs.pyinvoke.org/en/stable/concepts/configuration.html). Perhaps the simplest is setting an environment variable `INVOKE_NAUTOBOT_CHATOPS_VARIABLE_NAME` where `VARIABLE_NAME` is the variable you are trying to override. The only exception is `compose_files`, because it is a list it must be overridden in a YAML file. There is an example `invoke.yml` (`invoke.example.yml`) in this directory which can be used as a starting point. + +### Docker Development Environment + +!!! tip + This is the recommended option for development. + +This project is managed by [Python Poetry](https://python-poetry.org/) and has a few requirements to setup your development environment: + +1. Install Poetry, see the [Poetry Documentation](https://python-poetry.org/docs/#installation) for your operating system. +2. Install Docker, see the [Docker documentation](https://docs.docker.com/get-docker/) for your operating system. + +Once you have Poetry and Docker installed you can run the following commands (in the root of the repository) to install all other development dependencies in an isolated Python virtual environment: + +```shell +poetry shell +poetry install +cp development/creds.example.env development/creds.env +invoke build +invoke start +``` + +The Nautobot server can now be accessed at [http://localhost:8080](http://localhost:8080) and the live documentation at [http://localhost:8001](http://localhost:8001). + +To either stop or destroy the development environment use the following options. + +- **invoke stop** - Stop the containers, but keep all underlying systems intact +- **invoke destroy** - Stop and remove all containers, volumes, etc. (This results in data loss due to the volume being deleted) + +### Local Poetry Development Environment + +- Create an `invoke.yml` file with the following contents at the root of the repo and edit as necessary + +```yaml +--- +nautobot_chatops: + local: true + compose_files: + - "docker-compose.requirements.yml" +``` + +Run the following commands: + +```shell +poetry shell +poetry install --extras nautobot +export $(cat development/dev.env | xargs) +export $(cat development/creds.env | xargs) +invoke start && sleep 5 +nautobot-server migrate +``` + +!!! note + If you want to develop on the latest develop branch of Nautobot, run the following command: `poetry add --optional git+https://github.com/nautobot/nautobot@develop`. After the `@` symbol must match either a branch or a tag. + +You can now run `nautobot-server` commands as you would from the [Nautobot documentation](https://nautobot.readthedocs.io/en/latest/) for example to start the development server: + +```shell +nautobot-server runserver 0.0.0.0:8080 --insecure +``` + +Nautobot server can now be accessed at [http://localhost:8080](http://localhost:8080). + +It is typically recommended to launch the Nautobot **runserver** command in a separate shell so you can keep developing and manage the webserver separately. + +### Updating the Documentation + +Documentation dependencies are pinned to exact versions to ensure consistent results. For the development environment, they are defined in the `pyproject.toml` file. + +If you need to update any of the documentation dependencies to a newer version, make sure you copy the exact same versions pinned in `pyproject.toml` to the `docs/requirements.txt` file as well. The latter is used in the automated build pipeline on ReadTheDocs to build the live version of the documentation. + +### CLI Helper Commands + +The project features a CLI helper based on [Invoke](https://www.pyinvoke.org/) to help setup the development environment. The commands are listed below in 3 categories: + +- `dev environment` +- `utility` +- `testing` + +Each command can be executed with `invoke `. All commands support the arguments `--nautobot-ver` and `--python-ver` if you want to manually define the version of Python and Nautobot to use. Each command also has its own help `invoke --help` + +!!! note + To run the mysql (mariadb) development environment, set the environment variable as such `export NAUTOBOT_USE_MYSQL=1`. + +#### Local Development Environment + +``` + build Build all docker images. + debug Start Nautobot and its dependencies in debug mode. + destroy Destroy all containers and volumes. + restart Restart Nautobot and its dependencies in detached mode. + start Start Nautobot and its dependencies in detached mode. + stop Stop Nautobot and its dependencies. +``` + +#### Utility + +``` + cli Launch a bash shell inside the running Nautobot container. + create-user Create a new user in django (default: admin), will prompt for password. + makemigrations Run Make Migration in Django. + nbshell Launch a nbshell session. +``` + +#### Testing + +``` + bandit Run bandit to validate basic static code security analysis. + black Run black to check that Python files adhere to its style standards. + flake8 Run flake8 to check that Python files adhere to its style standards. + pydocstyle Run pydocstyle to validate docstring formatting adheres to NTC defined standards. + pylint Run pylint code analysis. + tests Run all tests for this plugin. + unittest Run Django unit tests for the plugin. +``` + + +## Project Overview + +This project provides the ability to develop and manage the Nautobot server locally (with supporting services being *Dockerized*) or by using only Docker containers to manage Nautobot. The main difference between the two environments is the ability to debug and use **pdb** when developing locally. Debugging with **pdb** within the Docker container is more complicated, but can still be accomplished by either entering into the container (via `docker exec`) or attaching your IDE to the container and running the Nautobot service manually within the container. + +The upside to having the Nautobot service handled by Docker rather than locally is that you do not have to manage the Nautobot server. The [Docker logs](#docker-logs) provide the majority of the information you will need to help troubleshoot, while getting started quickly and not requiring you to perform several manual steps and remembering to have the Nautobot server running in a separate terminal while you develop. + +!!! note + The local environment still uses Docker containers for the supporting services (Postgres, Redis, and RQ Worker), but the Nautobot server is handled locally by you, the developer. + +Follow the directions below for the specific development environment that you choose. + +## Poetry + +Poetry is used in lieu of the "virtualenv" commands and is leveraged in both environments. The virtual environment will provide all of the Python packages required to manage the development environment such as **Invoke**. See the [Local Development Environment](#local-poetry-development-environment) section to see how to install Nautobot if you're going to be developing locally (i.e. not using the Docker container). + +The `pyproject.toml` file outlines all of the relevant dependencies for the project: + +- `tool.poetry.dependencies` - the main list of dependencies. +- `tool.poetry.dev-dependencies` - development dependencies, to facilitate linting, testing, and documentation building. + +The `poetry shell` command is used to create and enable a virtual environment managed by Poetry, so all commands ran going forward are executed within the virtual environment. This is similar to running the `source venv/bin/activate` command with virtualenvs. To install project dependencies in the virtual environment, you should run `poetry install` - this will install **both** project and development dependencies. + +For more details about Poetry and its commands please check out its [online documentation](https://python-poetry.org/docs/). + +## Full Docker Development Environment + +This project is set up with a number of **Invoke** tasks consumed as simple CLI commands to get developing fast. You'll use a few `invoke` commands to get your environment up and running. + +### Copy the credentials file for Nautobot + +First, you need to create the `development/creds.env` file - it stores a bunch of private information such as passwords and tokens for your local Nautobot install. You can make a copy of the `development/creds.example.env` and modify it to suit you. + +```shell +cp development/creds.example.env development/creds.env +``` + +### Invoke - Building the Docker Image + +The first thing you need to do is build the necessary Docker image for Nautobot that installs the specific `nautobot_ver`. The image is used for Nautobot and the Celery worker service used by Docker Compose. + +```bash +➜ invoke build +... +#14 exporting to image +#14 sha256:e8c613e07b0b7ff33893b694f7759a10d42e180f2b4dc349fb57dc6b71dcab00 +#14 exporting layers +#14 exporting layers 1.2s done +#14 writing image sha256:2d524bc1665327faa0d34001b0a9d2ccf450612bf8feeb969312e96a2d3e3503 done +#14 naming to docker.io/nautobot-chatops/nautobot:latest-py3.7 done +``` + +### Invoke - Starting the Development Environment + +Next, you need to start up your Docker containers. + +```bash +➜ invoke start +Starting Nautobot in detached mode... +Running docker-compose command "up --detach" +Creating network "nautobot_chatops_default" with the default driver +Creating volume "nautobot_chatops_postgres_data" with default driver +Creating nautobot_chatops_redis_1 ... +Creating nautobot_chatops_docs_1 ... +Creating nautobot_chatops_postgres_1 ... +Creating nautobot_chatops_postgres_1 ... done +Creating nautobot_chatops_redis_1 ... done +Creating nautobot_chatops_nautobot_1 ... +Creating nautobot_chatops_docs_1 ... done +Creating nautobot_chatops_nautobot_1 ... done +Creating nautobot_chatops_worker_1 ... +Creating nautobot_chatops_worker_1 ... done +Docker Compose is now in the Docker CLI, try `docker compose up` +``` + +This will start all of the Docker containers used for hosting Nautobot. You should see the following containers running after `invoke start` is finished. + +```bash +➜ docker ps +****CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +ee90fbfabd77 nautobot-chatops/nautobot:latest-py3.7 "nautobot-server rqw…" 16 seconds ago Up 13 seconds nautobot_chatops_worker_1 +b8adb781d013 nautobot-chatops/nautobot:latest-py3.7 "/docker-entrypoint.…" 20 seconds ago Up 15 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp nautobot_chatops_nautobot_1 +d64ebd60675d nautobot-chatops/nautobot:latest-py3.7 "mkdocs serve -v -a …" 25 seconds ago Up 18 seconds 0.0.0.0:8001->8080/tcp, :::8001->8080/tcp nautobot_chatops_docs_1 +e72d63129b36 postgres:13-alpine "docker-entrypoint.s…" 25 seconds ago Up 19 seconds 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp nautobot_chatops_postgres_1 +96c6ff66997c redis:6-alpine "docker-entrypoint.s…" 25 seconds ago Up 21 seconds 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp nautobot_chatops_redis_1 +``` + +Once the containers are fully up, you should be able to open up a web browser, and view: + +- The Nautobot homepage at [http://localhost:8080](http://localhost:8080) +- A live version of the documentation at [http://localhost:8001](http://localhost:8001) + +!!! note + Sometimes the containers take a minute to fully spin up. If the page doesn't load right away, wait a minute and try again. + +### Invoke - Creating a Superuser + +The Nautobot development image will automatically provision a super user when specifying the following variables within `creds.env` which is the default when copying `creds.example.env` to `creds.env`. + +- `NAUTOBOT_CREATE_SUPERUSER=true` +- `NAUTOBOT_SUPERUSER_API_TOKEN=0123456789abcdef0123456789abcdef01234567` +- `NAUTOBOT_SUPERUSER_PASSWORD=admin` + +!!! note + The default username is **admin**, but can be overridden by specifying **NAUTOBOT_SUPERUSER_USERNAME**. + +If you need to create additional superusers, run the follow commands. + +```bash +➜ invoke createsuperuser +Running docker-compose command "ps --services --filter status=running" +Running docker-compose command "exec nautobot nautobot-server createsuperuser --username admin" +Error: That username is already taken. +Username: ntc +Email address: ntc@networktocode.com +Password: +Password (again): +Superuser created successfully. +``` + +### Invoke - Stopping the Development Environment + +The last command to know for now is `invoke stop`. + +```bash +➜ invoke stop +Stopping Nautobot... +Running docker-compose command "down" +Stopping nautobot_chatops_worker_1 ... +Stopping nautobot_chatops_nautobot_1 ... +Stopping nautobot_chatops_docs_1 ... +Stopping nautobot_chatops_redis_1 ... +Stopping nautobot_chatops_postgres_1 ... +Stopping nautobot_chatops_worker_1 ... done +Stopping nautobot_chatops_nautobot_1 ... done +Stopping nautobot_chatops_postgres_1 ... done +Stopping nautobot_chatops_redis_1 ... done +Stopping nautobot_chatops_docs_1 ... done +Removing nautobot_chatops_worker_1 ... +Removing nautobot_chatops_nautobot_1 ... +Removing nautobot_chatops_docs_1 ... +Removing nautobot_chatops_redis_1 ... +Removing nautobot_chatops_postgres_1 ... +Removing nautobot_chatops_postgres_1 ... done +Removing nautobot_chatops_docs_1 ... done +Removing nautobot_chatops_worker_1 ... done +Removing nautobot_chatops_redis_1 ... done +Removing nautobot_chatops_nautobot_1 ... done +Removing network nautobot_chatops_default +``` + +This will safely shut down all of your running Docker containers for this project. When you are ready to spin containers back up, it is as simple as running `invoke start` again [as seen previously](#invoke-starting-the-development-environment). + +!!! warning + If you're wanting to reset the database and configuration settings, you can use the `invoke destroy` command, but **you will lose any data stored in those containers**, so make sure that is what you want to do. + +### Real-Time Updates? How Cool! + +Your environment should now be fully setup, all necessary Docker containers are created and running, and you're logged into Nautobot in your web browser. Now what? + +Now you can start developing your plugin in the project folder! + +The magic here is the root directory is mounted inside your Docker containers when built and ran, so **any** changes made to the files in here are directly updated to the Nautobot plugin code running in Docker. This means that as you modify the code in your plugin folder, the changes will be instantly updated in Nautobot. + +!!! warning + There are a few exceptions to this, as outlined in the section [To Rebuild or Not To Rebuild](#to-rebuild-or-not-to-rebuild). + +The back-end Django process is setup to automatically reload itself (it only takes a couple of seconds) every time a file is updated (saved). So for example, if you were to update one of the files like `tables.py`, then save it, the changes will be visible right away in the web browser! + +!!! note + You may get connection refused while Django reloads, but it should be refreshed fairly quickly. + +### Docker Logs + +When trying to debug an issue, one helpful thing you can look at are the logs within the Docker containers. + +```bash +➜ docker logs -f +``` + +!!! note + The `-f` tag will keep the logs open, and output them in realtime as they are generated. + +So for example, our plugin is named `nautobot-chatops`, the command would most likely be `docker logs nautobot_chatops_nautobot_1 -f`. You can find the name of all running containers via `docker ps`. + +If you want to view the logs specific to the worker container, simply use the name of that container instead. + +## To Rebuild or Not to Rebuild + +Most of the time, you will not need to rebuild your images. Simply running `invoke start` and `invoke stop` is enough to keep your environment going. + +However there are a couple of instances when you will want to. + +### Updating Environment Variables + +To add environment variables to your containers, thus allowing Nautobot to use them, you will update/add them in the `development/development.env` file. However, doing so is considered updating the underlying container shell, instead of Django (which auto restarts itself on changes). + +To get new environment variables to take effect, you will need stop any running images, rebuild the images, then restart them. This can easily be done with 3 commands: + +```bash +➜ invoke stop +➜ invoke build +➜ invoke start +``` + +Once completed, the new/updated environment variables should now be live. + +### Installing Additional Python Packages + +If you want your plugin to leverage another available Nautobot plugin or another Python package, you can easily add them into your Docker environment. + +```bash +➜ poetry shell +➜ poetry add +``` + +Once the dependencies are resolved, stop the existing containers, rebuild the Docker image, and then start all containers again. + +```bash +➜ invoke stop +➜ invoke build +➜ invoke start +``` + +### Installing Additional Nautobot Plugins + +Let's say for example you want the new plugin you're creating to integrate into Slack. To do this, you will want to integrate into the existing Nautobot ChatOps Plugin. + +```bash +➜ poetry shell +➜ poetry add nautobot-chatops +``` + +Once you activate the virtual environment via Poetry, you then tell Poetry to install the new plugin. + +Before you continue, you'll need to update the file `development/nautobot_config.py` accordingly with the name of the new plugin under `PLUGINS` and any relevant settings as necessary for the plugin under `PLUGINS_CONFIG`. Since you're modifying the underlying OS (not just Django files), you need to rebuild the image. This is a similar process to updating environment variables, which was explained earlier. + +```bash +➜ invoke stop +➜ invoke build +➜ invoke start +``` + +Once the containers are up and running, you should now see the new plugin installed in your Nautobot instance. + +!!! note + You can even launch an `ngrok` service locally on your laptop, pointing to port 8080 (such as for chatops development), and it will point traffic directly to your Docker images. + +### Updating Python Version + +To update the Python version, you can update it within `tasks.py`. + +```python +namespace = Collection("nautobot_chatops") +namespace.configure( + { + "nautobot_chatops": { + ... + "python_ver": "3.7", + ... + } + } +) +``` + +Or set the `INVOKE_NAUTOBOT_GOLDEN_CONFIG_PYTHON_VER` variable. + +### Updating Nautobot Version + +To update the Nautobot version, you can update it within `tasks.py`. + +```python +namespace = Collection("nautobot_chatops") +namespace.configure( + { + "nautobot_chatops": { + ... + "nautobot_ver": "1.0.2", + ... + } + } +) +``` + +Or set the `INVOKE_NAUTOBOT_CHATOPS_NAUTOBOT_VER` variable. + +## Other Miscellaneous Commands To Know + +### Python Shell + +To drop into a Django shell for Nautobot (in the Docker container) run: + +```bash +➜ invoke nbshell +``` + +This is the same as running: + +```bash +➜ invoke cli +➜ nautobot-server nbshell +``` + +### iPython Shell Plus + +Django also has a more advanced shell that uses iPython and that will automatically import all the models: + +```bash +➜ invoke shell-plus +``` + +This is the same as running: + +```bash +➜ invoke cli +➜ nautobot-server shell_plus +``` + +### Tests + +To run tests against your code, you can run all of the tests that TravisCI runs against any new PR with: + +```bash +➜ invoke tests +``` + +To run an individual test, you can run any or all of the following: + +```bash +➜ invoke unittest +➜ invoke bandit +➜ invoke black +➜ invoke flake8 +➜ invoke pydocstyle +➜ invoke pylint +``` diff --git a/docs/dev/dev_extending.md b/docs/dev/dev_extending.md new file mode 100644 index 00000000..daa84f03 --- /dev/null +++ b/docs/dev/dev_extending.md @@ -0,0 +1,3 @@ +# Extending the App + +Nautobot ChatOps includes a plugin system to allow development of new ChatOps commands. The simplest way to get started is to use the [Nautobot ChatOps Cookiecutter](https://github.com/nautobot/nautobot-chatops-cookiecutter). This [blog post on Creating Custom Chat Commands](http://blog.networktocode.com/post/creating-custom-chat-commands-using-nautobot-chatops/) will help. diff --git a/docs/extending.md b/docs/extending.md new file mode 100644 index 00000000..aff7616c --- /dev/null +++ b/docs/extending.md @@ -0,0 +1,33 @@ +# Extending ChatOps + +## How message processing works + +Nautobot Chatops processes messages in a stateless fashion. Chat clients do not maintain a connection with Nautobot. Nautobot Chatops does not wait for the response from the chat client. Each interaction between the chat client and the Nautobot Chatops are treated as new interactions. + +Let's use the `nautobot get-devices` command and subcommand to explore the message processing. In this example, we will be using Slack. + +### SlashCommandView + +The end user will type `/nautobot get-devices` in Slack and hit enter. Slack will reach out to the configured Slash Command endpoint. This will go to SlackSlashCommandView. Here the sender (Slack) will be verified (Authentication). Once the verified, the request data from Slack is stored in the `context` then the command will be parsed separating out the command, subcommand and params. In this example `nautobot` is the command, `get-devices` is the subcommand and no params were given. Next, the commands registry is checked to confirm that `nautobot` is a valid command. If the command is valid, it is sent to the check_and_enqueue_command function. + +### Check_and_enqueue_command + +The check_and_enqueue_command function takes the commands registry, parsed command string, the context and originating dispatcher (Slack in this case). Here we will double-check the registry, then create a `command_log` entry (Accounting). Next we process the `access_grants` to verify that the user is authorized to use this command/subcommand (Authorization). If authorized, the parsed command string, context, dispatcher and function are enqueued with a worker. + +### Worker Processing + +In this example, get_devices gets sent to the Celery or RQ Worker. The get_devices function takes two arguments (params). Since no params were passed in at the first check for `filter_type`, the function calls `prompt_for_device_filter_type` which uses the `prompt_from_menu`**Insert_link to send a dropdown menu to the chat client. Then the function returns `False` since the command is not finished therefore it should not be logged. The worker then exits. + +### InteractionView + +If the user selects an option in the prompt, Slack will send that option along with the `action_id` that `prompt_from_menu` sent. In this example lets pretend that the user selected `site`. The InteractionView will receive a payload and try to process the payload to get the `action_id` which will be `nautobot get-devices` and the params `site`. This will be sent to check_and_enqueue, then to the worker. + +### Worker Processing Continued + +Continuing with the example, the Nautobot subcommand get-devices will now have the filter_type argument set to `site`. The function can now continue to use the dispatcher to prompt for more information, or use the dispatcher to return data to the user. To log completion of the command, the function can return `CommandStatusChoices.STATUS_SUCCEEDED` or `CommandStatusChoices.STATUS_FAILED` to log a successful or failed command. + +## Dispatcher Functions + +This is a list of all the available dispatcher functions that can be used to build out the interactive components of your chat commands. + +### \ No newline at end of file diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 00000000..f8e5c92f --- /dev/null +++ b/docs/index.md @@ -0,0 +1,6 @@ +--- +hide: + - navigation +--- + +--8<-- "README.md" \ No newline at end of file diff --git a/docs/requirements.txt b/docs/requirements.txt new file mode 100644 index 00000000..1b42aa9f --- /dev/null +++ b/docs/requirements.txt @@ -0,0 +1,6 @@ +mkdocs==1.3.1 +mkdocs-material==8.4.2 +mkdocstrings==0.19 +mkdocstrings-python==0.7.1 +Jinja2==3.0.3 +mkdocs-include-markdown-plugin==3.6.1 \ No newline at end of file diff --git a/docs/user/app_faq.md b/docs/user/app_faq.md new file mode 100644 index 00000000..7f812c39 --- /dev/null +++ b/docs/user/app_faq.md @@ -0,0 +1,12 @@ +# Frequently Asked Questions + +- [Frequently Asked Questions](#frequently-asked-questions) + - ["This app responded with Status Code 404" error returned while picking a filter from a slash command](#this-app-responded-with-status-code-404-error-returned-while-picking-a-filter-from-a-slash-command) + +## "This app responded with Status Code 404" error returned while picking a filter from a slash command + +If a 404 error is being returned while trying to use a slash command that allows for filtering, there is most likely a typo within the Interactivity Request URL for your application. + +- Navigate to [https://api.slack.com/apps](https://api.slack.com/apps) and select your Nautobot ChatOps application that is currently in development +- Under **Features**, navigate to "Interactivity & Shortcuts" +- Under **Interactivity**, confirm that the Request URL is of the format: `https:///api/plugins/chatops/slack/interaction/` (Note the trailing slash) diff --git a/docs/user/app_getting_started.md b/docs/user/app_getting_started.md new file mode 100644 index 00000000..324dbbdc --- /dev/null +++ b/docs/user/app_getting_started.md @@ -0,0 +1,69 @@ +# Getting Started with the App + +A step-by-step tutorial on how to get the App going and how to use it. + +## Install the App + +To install the App, please follow the instructions detailed in the [Installation Guide](../admin/admin_install.md). + +## Built-in Commands + +### Nautobot + +Use `nautobot` to interact with Nautobot! + +#### get-vlans + +Return a filtered list of VLANS based on filter type and/or values. + +#### get-interface-connections + +Return a filtered list of interface connections based on filter type and values. + +#### get-device-status + +Get the status of a device in Nautobot. + +#### change-device-status + +Set the status of a device in Nautobot. + +#### get-device-facts + +Get detailed facts about a device from Nautobot in YAML format. + +#### get-devices + +Get a filtered list of devices from Nautobot. + +#### get-rack + +Get information about a specific rack from Nautobot. + +#### get-circuits + +Get a filtered list of circuits from Nautobot. + +#### get-circuit-connections + +For a given circuit, find the objects the circuit connects to. + +#### get-circuit-providers + +Get a list of circuit providers. + +#### about + +Provide link for more information on Nautobot Apps. + +#### get-manufacturer-summary + +Provides summary of each manufacturer and how many devices have that manufacturer. + +### Clear + +Scroll the chat history out of view. + +## Community Commands + +The [nautobot-chatops](https://github.com/topics/nautobot-chatops) topic on GitHub provides a list of Nautobot ChatOps compatible plugins that provide additional commands. \ No newline at end of file diff --git a/docs/user/app_overview.md b/docs/user/app_overview.md new file mode 100644 index 00000000..1b71cc8f --- /dev/null +++ b/docs/user/app_overview.md @@ -0,0 +1,21 @@ +# App Overview + +The ChatOps plugin is a Nautobot Plugin that provides a Chatbot framework for Nautobot. + +## Description/Overview + +The ChatOps framework provides Network Engineers power to query Nautobot or their Network (through ChatOps plugins) while staying within their preferred Chat application. The goal of ChatOps is to bring people, processes and Automation together. + +## Audience (User Personas) - Who should use this App? + +- Network Engineers +- Network Automation Engineers +- Site Reliability Engineers +- Network Operations + +## Authors and Maintainers + +- Glenn Matthews (@glennmatthews) +- Josh VanDeraa (@jvanderaa) +- Jeremy White (@whitej6) +- Stephen Kiely (@smk4664) diff --git a/mkdocs.yml b/mkdocs.yml index f0db4a85..d08ca346 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,13 +1,11 @@ --- dev_addr: "127.0.0.1:8001" -#edit_uri: "edit/main/nautobot/docs" Not sture what this should be. +edit_uri: "edit/develop/docs" site_dir: "nautobot_chatops/static/nautobot_chatops/docs" -site_name: "Nautobot Chatops Documentation" -site_url: "https://nautobot-plugin-chatops.readthedocs.io/en/stable/" -# TODO: replace when switching domain -# site_url: "https://docs.nautobot.com/projects/nautobot-plugin-chatops/en/stable/" +site_name: "Nautobot ChatOps Documentation" +site_url: "https://docs.nautobot.com/projects/chatops/en/stable/" repo_url: "https://github.com/nautobot/nautobot-plugin-chatops" -copyright: "Copyright © The Authors" +copyright: "Copyright © 2020 Network to Code" theme: name: "material" navigation_depth: 4 @@ -92,5 +90,42 @@ plugins: show_root_heading: true show_category_heading: true +watch: + - "README.md" + nav: - Overview: "index.md" + - User Guide: + - App Overview: "user/app_overview.md" + - Getting Started: "user/app_getting_started.md" + - Frequently Asked Questions: "user/app_faq.md" + - Administrator Guide: + - Install and Configure: "admin/admin_install.md" + - Upgrade: "admin/admin_upgrade.md" + - Uninstall: "admin/admin_uninstall.md" + - Release Notes: + - "admin/release_notes/index.md" + - v1.1: "admin/release_notes/version_1.1.md" + - v1.2: "admin/release_notes/version_1.2.md" + - v1.3: "admin/release_notes/version_1.3.md" + - v1.4: "admin/release_notes/version_1.4.md" + - v1.5: "admin/release_notes/version_1.5.md" + - v1.6: "admin/release_notes/version_1.6.md" + - v1.7: "admin/release_notes/version_1.7.md" + - v1.8: "admin/release_notes/version_1.8.md" + - Developer Guide: + - Extending the App: "dev/dev_extending.md" + - Contributing to the App: "dev/dev_contributing.md" + - Design Documentation: "dev/design.md" + - Development Environment: "dev/dev_environment.md" + - Code Reference: + - "dev/code_reference/index.md" + - Models: "dev/code_reference/models.md" + - API: "dev/code_reference/api.md" + - Dispatchers: + - "dev/code_reference/base.md" + - "dev/code_reference/slack.md" + - "dev/code_reference/webex.md" + - "dev/code_reference/ms_teams.md" + - "dev/code_reference/mattermost.md" + - Nautobot Docs Home ↗︎: "https://docs.nautobot.com" \ No newline at end of file diff --git a/nautobot_chatops/api/__init__.py b/nautobot_chatops/api/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/poetry.lock b/poetry.lock index 3b6209b2..300bc5b3 100644 --- a/poetry.lock +++ b/poetry.lock @@ -671,7 +671,7 @@ Django = ">=2.2" [[package]] name = "drf-yasg" -version = "1.20.0" +version = "1.20.3" description = "Automated generation of real Swagger/OpenAPI 2.0 schemas from Django Rest Framework code." category = "main" optional = false @@ -680,11 +680,12 @@ python-versions = ">=3.6" [package.dependencies] coreapi = ">=2.3.3" coreschema = ">=0.0.4" -Django = ">=2.2.16" +django = ">=2.2.16" djangorestframework = ">=3.10.3" inflection = ">=0.3.1" -packaging = "*" -"ruamel.yaml" = ">=0.15.34" +packaging = ">=21.0" +pytz = ">=2021.1" +"ruamel.yaml" = ">=0.16.13" swagger-spec-validator = {version = ">=2.1.0", optional = true, markers = "extra == \"validation\""} uritemplate = ">=3.0.0" @@ -721,6 +722,20 @@ category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +[[package]] +name = "ghp-import" +version = "2.1.0" +description = "Copy your docs directly to the gh-pages branch." +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +python-dateutil = ">=2.8.1" + +[package.extras] +dev = ["twine", "markdown", "flake8", "wheel"] + [[package]] name = "gitdb" version = "4.0.9" @@ -823,6 +838,20 @@ graphql-core = ">=2.2,<3" promise = ">=2.2,<3" six = ">=1.12" +[[package]] +name = "griffe" +version = "0.22.0" +description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +cached-property = {version = "*", markers = "python_version < \"3.8\""} + +[package.extras] +async = ["aiofiles (>=0.7,<1.0)"] + [[package]] name = "idna" version = "3.3" @@ -1001,6 +1030,118 @@ category = "dev" optional = false python-versions = "*" +[[package]] +name = "mergedeep" +version = "1.3.4" +description = "A deep merge function for 🐍." +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "mkdocs" +version = "1.3.1" +description = "Project documentation with Markdown." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +click = ">=3.3" +ghp-import = ">=1.0" +importlib-metadata = ">=4.3" +Jinja2 = ">=2.10.2" +Markdown = ">=3.2.1,<3.4" +mergedeep = ">=1.3.4" +packaging = ">=20.5" +PyYAML = ">=3.10" +pyyaml-env-tag = ">=0.1" +watchdog = ">=2.0" + +[package.extras] +i18n = ["babel (>=2.9.0)"] + +[[package]] +name = "mkdocs-autorefs" +version = "0.4.1" +description = "Automatically link across pages in MkDocs." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +Markdown = ">=3.3" +mkdocs = ">=1.1" + +[[package]] +name = "mkdocs-include-markdown-plugin" +version = "3.6.1" +description = "Mkdocs Markdown includer plugin." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.extras] +dev = ["bump2version (==1.0.1)", "flake8 (==3.9.2)", "flake8-implicit-str-concat (==0.2.0)", "flake8-print (==4.0.0)", "isort (==5.9.1)", "mdpo (==0.3.61)", "mkdocs (==1.2.3)", "pre-commit (==2.13.0)", "pytest (==6.2.5)", "pytest-cov (==3.0.0)", "pyupgrade (==2.19.4)", "yamllint (==1.26.1)"] +test = ["pytest (==6.2.5)", "pytest-cov (==3.0.0)"] + +[[package]] +name = "mkdocs-material" +version = "8.4.2" +description = "Documentation that simply works" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +jinja2 = ">=3.0.2" +markdown = ">=3.2" +mkdocs = ">=1.3.0" +mkdocs-material-extensions = ">=1.0.3" +pygments = ">=2.12" +pymdown-extensions = ">=9.4" + +[[package]] +name = "mkdocs-material-extensions" +version = "1.0.3" +description = "Extension pack for Python Markdown." +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "mkdocstrings" +version = "0.19.0" +description = "Automatic documentation from sources, for MkDocs." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +Jinja2 = ">=2.11.1" +Markdown = ">=3.3" +MarkupSafe = ">=1.1" +mkdocs = ">=1.2" +mkdocs-autorefs = ">=0.3.1" +pymdown-extensions = ">=6.3" + +[package.extras] +crystal = ["mkdocstrings-crystal (>=0.3.4)"] +python = ["mkdocstrings-python (>=0.5.2)"] +python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] + +[[package]] +name = "mkdocstrings-python" +version = "0.7.1" +description = "A Python handler for mkdocstrings." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +griffe = ">=0.11.1" +mkdocstrings = ">=0.19" + [[package]] name = "mypy-extensions" version = "0.4.3" @@ -1258,6 +1399,17 @@ category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +[[package]] +name = "pygments" +version = "2.13.0" +description = "Pygments is a syntax highlighting package written in Python." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.extras] +plugins = ["importlib-metadata"] + [[package]] name = "pyjwt" version = "2.4.0" @@ -1320,6 +1472,17 @@ python-versions = ">=3.6.2" [package.dependencies] pylint = ">=1.7" +[[package]] +name = "pymdown-extensions" +version = "9.5" +description = "Extension pack for Python Markdown." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +markdown = ">=3.2" + [[package]] name = "pyparsing" version = "3.0.8" @@ -1404,6 +1567,17 @@ category = "main" optional = false python-versions = ">=3.6" +[[package]] +name = "pyyaml-env-tag" +version = "0.1" +description = "A custom YAML tag for referencing environment variables in YAML files. " +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pyyaml = "*" + [[package]] name = "redis" version = "4.2.2" @@ -1706,6 +1880,17 @@ category = "main" optional = false python-versions = ">=3.6" +[[package]] +name = "watchdog" +version = "2.1.9" +description = "Filesystem events monitoring" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.extras] +watchmedo = ["PyYAML (>=3.10)"] + [[package]] name = "wcwidth" version = "0.2.5" @@ -1763,7 +1948,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = "^3.7" -content-hash = "444e6b7c158870e8e40f43bd20b6b961e0694e2b9b7a1721c8958bc471ab1190" +content-hash = "72f7352feb239e40cc2df848cc926c13be5955355d0ec35646ec38978e4543bf" [metadata.files] amqp = [ @@ -1919,28 +2104,7 @@ coreschema = [ {file = "coreschema-0.0.4-py2-none-any.whl", hash = "sha256:5e6ef7bf38c1525d5e55a895934ab4273548629f16aed5c0a6caa74ebf45551f"}, {file = "coreschema-0.0.4.tar.gz", hash = "sha256:9503506007d482ab0867ba14724b93c18a33b22b6d19fb419ef2d239dd4a1607"}, ] -cryptography = [ - {file = "cryptography-36.0.2-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:4e2dddd38a5ba733be6a025a1475a9f45e4e41139d1321f412c6b360b19070b6"}, - {file = "cryptography-36.0.2-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:4881d09298cd0b669bb15b9cfe6166f16fc1277b4ed0d04a22f3d6430cb30f1d"}, - {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea634401ca02367c1567f012317502ef3437522e2fc44a3ea1844de028fa4b84"}, - {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:7be666cc4599b415f320839e36367b273db8501127b38316f3b9f22f17a0b815"}, - {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8241cac0aae90b82d6b5c443b853723bcc66963970c67e56e71a2609dc4b5eaf"}, - {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b2d54e787a884ffc6e187262823b6feb06c338084bbe80d45166a1cb1c6c5bf"}, - {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:c2c5250ff0d36fd58550252f54915776940e4e866f38f3a7866d92b32a654b86"}, - {file = "cryptography-36.0.2-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:ec6597aa85ce03f3e507566b8bcdf9da2227ec86c4266bd5e6ab4d9e0cc8dab2"}, - {file = "cryptography-36.0.2-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ca9f686517ec2c4a4ce930207f75c00bf03d94e5063cbc00a1dc42531511b7eb"}, - {file = "cryptography-36.0.2-cp36-abi3-win32.whl", hash = "sha256:f64b232348ee82f13aac22856515ce0195837f6968aeaa94a3d0353ea2ec06a6"}, - {file = "cryptography-36.0.2-cp36-abi3-win_amd64.whl", hash = "sha256:53e0285b49fd0ab6e604f4c5d9c5ddd98de77018542e88366923f152dbeb3c29"}, - {file = "cryptography-36.0.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:32db5cc49c73f39aac27574522cecd0a4bb7384e71198bc65a0d23f901e89bb7"}, - {file = "cryptography-36.0.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b3d199647468d410994dbeb8cec5816fb74feb9368aedf300af709ef507e3e"}, - {file = "cryptography-36.0.2-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:da73d095f8590ad437cd5e9faf6628a218aa7c387e1fdf67b888b47ba56a17f0"}, - {file = "cryptography-36.0.2-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:0a3bf09bb0b7a2c93ce7b98cb107e9170a90c51a0162a20af1c61c765b90e60b"}, - {file = "cryptography-36.0.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8897b7b7ec077c819187a123174b645eb680c13df68354ed99f9b40a50898f77"}, - {file = "cryptography-36.0.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82740818f2f240a5da8dfb8943b360e4f24022b093207160c77cadade47d7c85"}, - {file = "cryptography-36.0.2-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:1f64a62b3b75e4005df19d3b5235abd43fa6358d5516cfc43d87aeba8d08dd51"}, - {file = "cryptography-36.0.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e167b6b710c7f7bc54e67ef593f8731e1f45aa35f8a8a7b72d6e42ec76afd4b3"}, - {file = "cryptography-36.0.2.tar.gz", hash = "sha256:70f8f4f7bb2ac9f340655cbac89d68c527af5bb4387522a8413e841e3e6628c9"}, -] +cryptography = [] defusedxml = [ {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, @@ -1949,10 +2113,7 @@ deprecated = [ {file = "Deprecated-1.2.13-py2.py3-none-any.whl", hash = "sha256:64756e3e14c8c5eea9795d93c524551432a0be75629f8f29e67ab8caf076c76d"}, {file = "Deprecated-1.2.13.tar.gz", hash = "sha256:43ac5335da90c31c24ba028af536a91d41d53f9e6901ddb021bcc572ce44e38d"}, ] -dill = [ - {file = "dill-0.3.4-py2.py3-none-any.whl", hash = "sha256:7e40e4a70304fd9ceab3535d36e58791d9c4a776b38ec7f7ec9afc8d3dca4d4f"}, - {file = "dill-0.3.4.zip", hash = "sha256:9f9734205146b2b353ab3fec9af0070237b6ddae78452af83d2fca84d739e675"}, -] +dill = [] django = [ {file = "Django-3.2.13-py3-none-any.whl", hash = "sha256:b896ca61edc079eb6bbaa15cf6071eb69d6aac08cce5211583cfb41515644fdf"}, {file = "Django-3.2.13.tar.gz", hash = "sha256:6d93497a0a9bf6ba0e0b1a29cccdc40efbfc76297255b1309b3a884a688ec4b6"}, @@ -2000,10 +2161,7 @@ django-health-check = [ {file = "django-health-check-3.16.5.tar.gz", hash = "sha256:1edfd49293ccebbce29f9da609c407f307aee240ab799ab4201031341ae78c0f"}, {file = "django_health_check-3.16.5-py2.py3-none-any.whl", hash = "sha256:8d66781a0ea82b1a8b44878187b38a27370e94f18287312e39be0593e72d8983"}, ] -django-jinja = [ - {file = "django-jinja-2.10.0.tar.gz", hash = "sha256:ae6a3fdf1ffa7a9ef6fd2f0a59c1a68c96b29f7f00f5166375658ef392f1ed32"}, - {file = "django_jinja-2.10.0-py3-none-any.whl", hash = "sha256:cce084eaf0be8a89f0955cde34cf33da7faaf6c68d05c076eda6fcd98481264c"}, -] +django-jinja = [] django-js-asset = [ {file = "django_js_asset-2.0.0-py3-none-any.whl", hash = "sha256:86f9f300d682537ddaf0487dc2ab356581b8f50c069bdba91d334a46e449f923"}, {file = "django_js_asset-2.0.0.tar.gz", hash = "sha256:adc1ee1efa853fad42054b540c02205344bb406c9bddf87c9e5377a41b7db90f"}, @@ -2048,14 +2206,8 @@ djangorestframework = [ {file = "djangorestframework-3.13.1-py3-none-any.whl", hash = "sha256:24c4bf58ed7e85d1fe4ba250ab2da926d263cd57d64b03e8dcef0ac683f8b1aa"}, {file = "djangorestframework-3.13.1.tar.gz", hash = "sha256:0c33407ce23acc68eca2a6e46424b008c9c02eceb8cf18581921d0092bc1f2ee"}, ] -drf-spectacular-sidecar = [ - {file = "drf-spectacular-sidecar-2022.4.1.tar.gz", hash = "sha256:a243f174ac64deb203a1e373a947b90f973a9afdbb5134e45655997a85b549e0"}, - {file = "drf_spectacular_sidecar-2022.4.1-py3-none-any.whl", hash = "sha256:66c4f100acaee3f7ec093d4bf33af241492eae619b27f53f519c66ed7e6d5454"}, -] -drf-yasg = [ - {file = "drf-yasg-1.20.0.tar.gz", hash = "sha256:d50f197c7f02545d0b736df88c6d5cf874f8fea2507ad85ad7de6ae5bf2d9e5a"}, - {file = "drf_yasg-1.20.0-py2.py3-none-any.whl", hash = "sha256:8b72e5b1875931a8d11af407be3a9a5ba8776541492947a0df5bafda6b7f8267"}, -] +drf-spectacular-sidecar = [] +drf-yasg = [] flake8 = [ {file = "flake8-3.9.2-py2.py3-none-any.whl", hash = "sha256:bf8fd333346d844f616e8d47905ef3a3384edae6b4e9beb0c5101e25e3110907"}, {file = "flake8-3.9.2.tar.gz", hash = "sha256:07528381786f2a6237b061f6e96610a4167b226cb926e2aa2b6b1d78057c576b"}, @@ -2067,6 +2219,10 @@ funcy = [ future = [ {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"}, ] +ghp-import = [ + {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, + {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, +] gitdb = [ {file = "gitdb-4.0.9-py3-none-any.whl", hash = "sha256:8033ad4e853066ba6ca92050b9df2f89301b8fc8bf7e9324d412a63f8bf1a8fd"}, {file = "gitdb-4.0.9.tar.gz", hash = "sha256:bac2fd45c0a1c9cf619e63a90d62bdc63892ef92387424b855792a6cabe789aa"}, @@ -2094,6 +2250,7 @@ graphql-relay = [ {file = "graphql-relay-2.0.1.tar.gz", hash = "sha256:870b6b5304123a38a0b215a79eace021acce5a466bf40cd39fa18cb8528afabb"}, {file = "graphql_relay-2.0.1-py3-none-any.whl", hash = "sha256:ac514cb86db9a43014d7e73511d521137ac12cf0101b2eaa5f0a3da2e10d913d"}, ] +griffe = [] idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, @@ -2110,10 +2267,7 @@ inflection = [ {file = "inflection-0.5.1-py2.py3-none-any.whl", hash = "sha256:f38b2b640938a4f35ade69ac3d053042959b62a0f1076a5bbaa1b9526605a8a2"}, {file = "inflection-0.5.1.tar.gz", hash = "sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417"}, ] -invoke = [ - {file = "invoke-1.7.0-py3-none-any.whl", hash = "sha256:a5159fc63dba6ca2a87a1e33d282b99cea69711b03c64a35bb4e1c53c6c4afa0"}, - {file = "invoke-1.7.0.tar.gz", hash = "sha256:e332e49de40463f2016315f51df42313855772be86435686156bc18f45b5cc6c"}, -] +invoke = [] isort = [ {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, @@ -2223,6 +2377,17 @@ mccabe = [ {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, ] +mergedeep = [ + {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, + {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, +] +mkdocs = [] +mkdocs-autorefs = [] +mkdocs-include-markdown-plugin = [] +mkdocs-material = [] +mkdocs-material-extensions = [] +mkdocstrings = [] +mkdocstrings-python = [] mypy-extensions = [ {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, @@ -2231,10 +2396,7 @@ nautobot = [ {file = "nautobot-1.3.1-py3-none-any.whl", hash = "sha256:40f3d7a1eb31221f6d15802d0cb845bc00ea8bb4050a54c54cd17b62ab006b44"}, {file = "nautobot-1.3.1.tar.gz", hash = "sha256:2144b091b124df64fb27b2ba86143aba2123ee6c028df98daf06a3e1bb27f0e4"}, ] -nautobot-capacity-metrics = [ - {file = "nautobot-capacity-metrics-2.0.0.tar.gz", hash = "sha256:02fbf65a335047252fbc25b10d8bb74f764501479a5528b2b02d09f24913cccd"}, - {file = "nautobot_capacity_metrics-2.0.0-py3-none-any.whl", hash = "sha256:f8cb1e70b876cf7c553b58c7336f7e54bfa492ce29f085436919a7d6dd09cddd"}, -] +nautobot-capacity-metrics = [] netaddr = [ {file = "netaddr-0.8.0-py2.py3-none-any.whl", hash = "sha256:9666d0232c32d2656e5e5f8d735f58fd6c7457ce52fc21c98d45f2af78f990ac"}, {file = "netaddr-0.8.0.tar.gz", hash = "sha256:d6cc57c7a07b1d9d2e917aa8b36ae8ce61c35ba3fcd1b83ca31c5a0ee2b5a243"}, @@ -2255,10 +2417,7 @@ pathspec = [ {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, ] -pbr = [ - {file = "pbr-5.8.1-py2.py3-none-any.whl", hash = "sha256:27108648368782d07bbf1cb468ad2e2eeef29086affd14087a6d04b7de8af4ec"}, - {file = "pbr-5.8.1.tar.gz", hash = "sha256:66bc5a34912f408bb3925bf21231cb6f59206267b7f63f3503ef865c1a292e25"}, -] +pbr = [] pillow = [ {file = "Pillow-9.0.1-1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a5d24e1d674dd9d72c66ad3ea9131322819ff86250b30dc5821cbafcfa0b96b4"}, {file = "Pillow-9.0.1-1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2632d0f846b7c7600edf53c48f8f9f1e13e62f66a6dbc15191029d950bfed976"}, @@ -2421,6 +2580,7 @@ pyflakes = [ {file = "pyflakes-2.3.1-py2.py3-none-any.whl", hash = "sha256:7893783d01b8a89811dd72d7dfd4d84ff098e5eed95cfa8905b22bbffe52efc3"}, {file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"}, ] +pygments = [] pyjwt = [ {file = "PyJWT-2.4.0-py3-none-any.whl", hash = "sha256:72d1d253f32dbd4f5c88eaf1fdc62f3a19f676ccbadb9dbc5d07e951b2b26daf"}, {file = "PyJWT-2.4.0.tar.gz", hash = "sha256:d42908208c699b3b973cbeb01a969ba6a96c821eefb1c5bfe4c390c01d67abba"}, @@ -2437,6 +2597,7 @@ pylint-plugin-utils = [ {file = "pylint-plugin-utils-0.7.tar.gz", hash = "sha256:ce48bc0516ae9415dd5c752c940dfe601b18fe0f48aa249f2386adfa95a004dd"}, {file = "pylint_plugin_utils-0.7-py3-none-any.whl", hash = "sha256:b3d43e85ab74c4f48bb46ae4ce771e39c3a20f8b3d56982ab17aa73b4f98d535"}, ] +pymdown-extensions = [] pyparsing = [ {file = "pyparsing-3.0.8-py3-none-any.whl", hash = "sha256:ef7b523f6356f763771559412c0d7134753f037822dad1b16945b7b846f7ad06"}, {file = "pyparsing-3.0.8.tar.gz", hash = "sha256:7bf433498c016c4314268d95df76c81b842a4cb2b276fa3312cfb1e1d85f6954"}, @@ -2483,36 +2644,26 @@ pyuwsgi = [ {file = "pyuwsgi-2.0.20-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bd09a7328558728f6e38f77609f44d16f18d8b4dc5f8b8776f657c8892b70337"}, {file = "pyuwsgi-2.0.20-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:210ad768b8af02bbfd3c0345a51c6d2c56a2333ac268d9a97ecf2d4209f78ef8"}, {file = "pyuwsgi-2.0.20-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e33111308a79dbd202094963fd3a537dab30854e375d9be018f642fcd359e03d"}, - {file = "pyuwsgi-2.0.20-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0306c3ca6f781ed7409774e44a2a90217824d3efb44e075a1f39a78a54ffe7d"}, - {file = "pyuwsgi-2.0.20-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3eeea48fd965b68801618fc20eda2cb65dc2aeb4121955c9c422685f046311da"}, {file = "pyuwsgi-2.0.20-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:dd048b85abb90c79a34afbf787995ab2933cb2a8b210a6e064e5fca0a9bdf2d8"}, {file = "pyuwsgi-2.0.20-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f612a72437c2934e39393fb575fab791e919efc102a0aa1a27b5d9a301d462e9"}, {file = "pyuwsgi-2.0.20-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:78ac2d8b7d307232f8276cb8a45300211b0fae179c0494f2a3e3178c70693f81"}, {file = "pyuwsgi-2.0.20-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f84fc44bba77d05fa9d01189028501ff8e6a2d63db184ceea42085ce28196317"}, {file = "pyuwsgi-2.0.20-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:342c312949c2f494f5d9ac272965715483cb22ed0353c18abb1b4590769ef00f"}, - {file = "pyuwsgi-2.0.20-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5740b84a016a246c69edef0df11912560df9a45c2adf6e47701329a974e37a71"}, - {file = "pyuwsgi-2.0.20-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:82058f6b6656f12dbc66c963be2d7c0b977f481ddca5d4d3918e26def003b60d"}, {file = "pyuwsgi-2.0.20-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:dc99724df6d5613300d3357c4017cde840830ca132fe98f0a4feab9a6af48622"}, {file = "pyuwsgi-2.0.20-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:70096084ccfa18f058dfb3380aa10e80d48958ddfdb888b827f06aacb72f80b8"}, {file = "pyuwsgi-2.0.20-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3e7a8576452635612c82f660e5be99ba42cdcdff142948f5c263b5278f2c17b0"}, {file = "pyuwsgi-2.0.20-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2844205e0095a29d3a6e9e23bd37bcf18d65e4e5ab23a14a45f5159c03a3b890"}, {file = "pyuwsgi-2.0.20-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e2c0d5dafb9faacc8ed5b662f9eacb22e723fbc3cb7152b2ebf09a92b8bd6c0d"}, - {file = "pyuwsgi-2.0.20-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:087397457837c5fd653eda91c5d2c7948e06da589c786d26145bdcc397656bb2"}, - {file = "pyuwsgi-2.0.20-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:da24ddb7e3522d36b4cdc2dbf131141d559084862f515d37f9a4b7b5c8b538b1"}, {file = "pyuwsgi-2.0.20-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:99b0c5a87aa95dcbaca2ccb599d783f37461600e098881d4ec9796ba68e3ff8f"}, {file = "pyuwsgi-2.0.20-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:df08a05dda4a92da46bd56af755dac091b145815c3cf6dda1855e01e40d12a99"}, {file = "pyuwsgi-2.0.20-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7c8ac4b2f411d15222f53a96627b8fa79056b39606925f429f59a51668bd95ab"}, {file = "pyuwsgi-2.0.20-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f1494d00df440865b1ee269a350187766c9c364ba5f124eddb064f366c4b6d8a"}, {file = "pyuwsgi-2.0.20-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c5ee8782932dbacdb4dd98714c3575cbbb88ba87d7bcb3149c828725ba048897"}, - {file = "pyuwsgi-2.0.20-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cdc4b32234b40fa2d515108a2f56a159896134ef16394f26dba764635142976"}, - {file = "pyuwsgi-2.0.20-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:300417d6669171a454da19991fc7f910b3975232dac5b2dbc359e26f1038624b"}, {file = "pyuwsgi-2.0.20-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:015a8d310503eb8c0028ac8f98c7df3b49bc937c7db137aaf149ca7fae64c777"}, {file = "pyuwsgi-2.0.20-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9fc3d256270adf24b87f1dff893f3bc59bd5ee20c4ebb5add25e944c36359e1e"}, {file = "pyuwsgi-2.0.20-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:052fe12d6a9ab9e9fc7814e40d2d28061aaea1a610069008d773e1d8a71feb11"}, {file = "pyuwsgi-2.0.20-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:7d160c7bfa8f2974fc6b807a8fc080be0d130b1a4ad0b463c0320e707e6a6eb6"}, {file = "pyuwsgi-2.0.20-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7691ca470e541133c444b23f83c6f07ecca12f4771a49e0e3a04b05f4c80f2d3"}, - {file = "pyuwsgi-2.0.20-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c87fb1d56dd2c6f18b87b08496be326afb6cf57c6a059261b01ce99046d9147"}, - {file = "pyuwsgi-2.0.20-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8eb97cf51f58df05ec0dd74d83510172a2f5bcd8adc91382e24690a2abddc2f3"}, {file = "pyuwsgi-2.0.20-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:a8fc4d52232f55df16e9cbf6faf4bf16910d15042229d5f8c717278fd4ea37a5"}, {file = "pyuwsgi-2.0.20-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1acedb1841aa0e60e1a7245ae483a5fcb30e39cf0cdfe3987e14de4746daf75b"}, {file = "pyuwsgi-2.0.20.tar.gz", hash = "sha256:8b0936a964511fa0e2ac2847c2435e95130e7c98619f06fe1f67320527576043"}, @@ -2552,10 +2703,11 @@ pyyaml = [ {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, ] -redis = [ - {file = "redis-4.2.2-py3-none-any.whl", hash = "sha256:4e95f4ec5f49e636efcf20061a5a9110c20852f607cfca6865c07aaa8a739ee2"}, - {file = "redis-4.2.2.tar.gz", hash = "sha256:0107dc8e98a4f1d1d4aa00100e044287f77121a1e6d2085545c4b7fa94a7a27f"}, +pyyaml-env-tag = [ + {file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"}, + {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"}, ] +redis = [] requests = [ {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, @@ -2577,10 +2729,6 @@ rq = [ {file = "ruamel.yaml-0.17.21.tar.gz", hash = "sha256:8b7ce697a2f212752a35c1ac414471dc16c424c9573be4926b56ff3f5d23b7af"}, ] "ruamel.yaml.clib" = [ - {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6e7be2c5bcb297f5b82fee9c665eb2eb7001d1050deaba8471842979293a80b0"}, - {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:221eca6f35076c6ae472a531afa1c223b9c29377e62936f61bc8e6e8bdc5f9e7"}, - {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-win32.whl", hash = "sha256:1070ba9dd7f9370d0513d649420c3b362ac2d687fe78c6e888f5b12bf8bc7bee"}, - {file = "ruamel.yaml.clib-0.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:77df077d32921ad46f34816a9a16e6356d8100374579bc35e15bab5d4e9377de"}, {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:cfdb9389d888c5b74af297e51ce357b800dd844898af9d4a547ffc143fa56751"}, {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:7b2927e92feb51d830f531de4ccb11b320255ee95e791022555971c466af4527"}, {file = "ruamel.yaml.clib-0.2.6-cp35-cp35m-win32.whl", hash = "sha256:ada3f400d9923a190ea8b59c8f60680c4ef8a4b0dfae134d2f2ff68429adfab5"}, @@ -2615,10 +2763,7 @@ six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] -slack-sdk = [ - {file = "slack_sdk-3.15.2-py2.py3-none-any.whl", hash = "sha256:e1fa26786169176e707676decc287fd9d3d547bbc43c0a1a4f99eb373b07da94"}, - {file = "slack_sdk-3.15.2.tar.gz", hash = "sha256:128f3bb0b5b91454a3d5f140a61f3db370a0e1b50ffe0a8d9e9ebe0e894faed7"}, -] +slack-sdk = [] smmap = [ {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"}, {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"}, @@ -2705,6 +2850,7 @@ vine = [ {file = "vine-5.0.0-py2.py3-none-any.whl", hash = "sha256:4c9dceab6f76ed92105027c49c823800dd33cacce13bdedc5b914e3514b7fb30"}, {file = "vine-5.0.0.tar.gz", hash = "sha256:7d3b1624a953da82ef63462013bbd271d3eb75751489f9807598e8f340bd637e"}, ] +watchdog = [] wcwidth = [ {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, @@ -2713,72 +2859,7 @@ webexteamssdk = [ {file = "webexteamssdk-1.6-py3-none-any.whl", hash = "sha256:e4958dca3903c659fe1e0f79e38740cb2ec1ae2589599807b179c3efb356c3a2"}, {file = "webexteamssdk-1.6.tar.gz", hash = "sha256:980f268d89187d1a157dfbadcb626fce849080a31550e549cfe838f0203b3a3d"}, ] -wrapt = [ - {file = "wrapt-1.14.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:5a9a1889cc01ed2ed5f34574c90745fab1dd06ec2eee663e8ebeefe363e8efd7"}, - {file = "wrapt-1.14.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:9a3ff5fb015f6feb78340143584d9f8a0b91b6293d6b5cf4295b3e95d179b88c"}, - {file = "wrapt-1.14.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:4b847029e2d5e11fd536c9ac3136ddc3f54bc9488a75ef7d040a3900406a91eb"}, - {file = "wrapt-1.14.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:9a5a544861b21e0e7575b6023adebe7a8c6321127bb1d238eb40d99803a0e8bd"}, - {file = "wrapt-1.14.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:88236b90dda77f0394f878324cfbae05ae6fde8a84d548cfe73a75278d760291"}, - {file = "wrapt-1.14.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f0408e2dbad9e82b4c960274214af533f856a199c9274bd4aff55d4634dedc33"}, - {file = "wrapt-1.14.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:9d8c68c4145041b4eeae96239802cfdfd9ef927754a5be3f50505f09f309d8c6"}, - {file = "wrapt-1.14.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:22626dca56fd7f55a0733e604f1027277eb0f4f3d95ff28f15d27ac25a45f71b"}, - {file = "wrapt-1.14.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:65bf3eb34721bf18b5a021a1ad7aa05947a1767d1aa272b725728014475ea7d5"}, - {file = "wrapt-1.14.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:09d16ae7a13cff43660155383a2372b4aa09109c7127aa3f24c3cf99b891c330"}, - {file = "wrapt-1.14.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:debaf04f813ada978d7d16c7dfa16f3c9c2ec9adf4656efdc4defdf841fc2f0c"}, - {file = "wrapt-1.14.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748df39ed634851350efa87690c2237a678ed794fe9ede3f0d79f071ee042561"}, - {file = "wrapt-1.14.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1807054aa7b61ad8d8103b3b30c9764de2e9d0c0978e9d3fc337e4e74bf25faa"}, - {file = "wrapt-1.14.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:763a73ab377390e2af26042f685a26787c402390f682443727b847e9496e4a2a"}, - {file = "wrapt-1.14.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8529b07b49b2d89d6917cfa157d3ea1dfb4d319d51e23030664a827fe5fd2131"}, - {file = "wrapt-1.14.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:68aeefac31c1f73949662ba8affaf9950b9938b712fb9d428fa2a07e40ee57f8"}, - {file = "wrapt-1.14.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59d7d92cee84a547d91267f0fea381c363121d70fe90b12cd88241bd9b0e1763"}, - {file = "wrapt-1.14.0-cp310-cp310-win32.whl", hash = "sha256:3a88254881e8a8c4784ecc9cb2249ff757fd94b911d5df9a5984961b96113fff"}, - {file = "wrapt-1.14.0-cp310-cp310-win_amd64.whl", hash = "sha256:9a242871b3d8eecc56d350e5e03ea1854de47b17f040446da0e47dc3e0b9ad4d"}, - {file = "wrapt-1.14.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:a65bffd24409454b889af33b6c49d0d9bcd1a219b972fba975ac935f17bdf627"}, - {file = "wrapt-1.14.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9d9fcd06c952efa4b6b95f3d788a819b7f33d11bea377be6b8980c95e7d10775"}, - {file = "wrapt-1.14.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:db6a0ddc1282ceb9032e41853e659c9b638789be38e5b8ad7498caac00231c23"}, - {file = "wrapt-1.14.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:14e7e2c5f5fca67e9a6d5f753d21f138398cad2b1159913ec9e9a67745f09ba3"}, - {file = "wrapt-1.14.0-cp35-cp35m-win32.whl", hash = "sha256:6d9810d4f697d58fd66039ab959e6d37e63ab377008ef1d63904df25956c7db0"}, - {file = "wrapt-1.14.0-cp35-cp35m-win_amd64.whl", hash = "sha256:d808a5a5411982a09fef6b49aac62986274ab050e9d3e9817ad65b2791ed1425"}, - {file = "wrapt-1.14.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b77159d9862374da213f741af0c361720200ab7ad21b9f12556e0eb95912cd48"}, - {file = "wrapt-1.14.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36a76a7527df8583112b24adc01748cd51a2d14e905b337a6fefa8b96fc708fb"}, - {file = "wrapt-1.14.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0057b5435a65b933cbf5d859cd4956624df37b8bf0917c71756e4b3d9958b9e"}, - {file = "wrapt-1.14.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a0a4ca02752ced5f37498827e49c414d694ad7cf451ee850e3ff160f2bee9d3"}, - {file = "wrapt-1.14.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:8c6be72eac3c14baa473620e04f74186c5d8f45d80f8f2b4eda6e1d18af808e8"}, - {file = "wrapt-1.14.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:21b1106bff6ece8cb203ef45b4f5778d7226c941c83aaaa1e1f0f4f32cc148cd"}, - {file = "wrapt-1.14.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:493da1f8b1bb8a623c16552fb4a1e164c0200447eb83d3f68b44315ead3f9036"}, - {file = "wrapt-1.14.0-cp36-cp36m-win32.whl", hash = "sha256:89ba3d548ee1e6291a20f3c7380c92f71e358ce8b9e48161401e087e0bc740f8"}, - {file = "wrapt-1.14.0-cp36-cp36m-win_amd64.whl", hash = "sha256:729d5e96566f44fccac6c4447ec2332636b4fe273f03da128fff8d5559782b06"}, - {file = "wrapt-1.14.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:891c353e95bb11abb548ca95c8b98050f3620a7378332eb90d6acdef35b401d4"}, - {file = "wrapt-1.14.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23f96134a3aa24cc50614920cc087e22f87439053d886e474638c68c8d15dc80"}, - {file = "wrapt-1.14.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6807bcee549a8cb2f38f73f469703a1d8d5d990815c3004f21ddb68a567385ce"}, - {file = "wrapt-1.14.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6915682f9a9bc4cf2908e83caf5895a685da1fbd20b6d485dafb8e218a338279"}, - {file = "wrapt-1.14.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:f2f3bc7cd9c9fcd39143f11342eb5963317bd54ecc98e3650ca22704b69d9653"}, - {file = "wrapt-1.14.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:3a71dbd792cc7a3d772ef8cd08d3048593f13d6f40a11f3427c000cf0a5b36a0"}, - {file = "wrapt-1.14.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5a0898a640559dec00f3614ffb11d97a2666ee9a2a6bad1259c9facd01a1d4d9"}, - {file = "wrapt-1.14.0-cp37-cp37m-win32.whl", hash = "sha256:167e4793dc987f77fd476862d32fa404d42b71f6a85d3b38cbce711dba5e6b68"}, - {file = "wrapt-1.14.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d066ffc5ed0be00cd0352c95800a519cf9e4b5dd34a028d301bdc7177c72daf3"}, - {file = "wrapt-1.14.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d9bdfa74d369256e4218000a629978590fd7cb6cf6893251dad13d051090436d"}, - {file = "wrapt-1.14.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2498762814dd7dd2a1d0248eda2afbc3dd9c11537bc8200a4b21789b6df6cd38"}, - {file = "wrapt-1.14.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f24ca7953f2643d59a9c87d6e272d8adddd4a53bb62b9208f36db408d7aafc7"}, - {file = "wrapt-1.14.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b835b86bd5a1bdbe257d610eecab07bf685b1af2a7563093e0e69180c1d4af1"}, - {file = "wrapt-1.14.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b21650fa6907e523869e0396c5bd591cc326e5c1dd594dcdccac089561cacfb8"}, - {file = "wrapt-1.14.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:354d9fc6b1e44750e2a67b4b108841f5f5ea08853453ecbf44c81fdc2e0d50bd"}, - {file = "wrapt-1.14.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1f83e9c21cd5275991076b2ba1cd35418af3504667affb4745b48937e214bafe"}, - {file = "wrapt-1.14.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:61e1a064906ccba038aa3c4a5a82f6199749efbbb3cef0804ae5c37f550eded0"}, - {file = "wrapt-1.14.0-cp38-cp38-win32.whl", hash = "sha256:28c659878f684365d53cf59dc9a1929ea2eecd7ac65da762be8b1ba193f7e84f"}, - {file = "wrapt-1.14.0-cp38-cp38-win_amd64.whl", hash = "sha256:b0ed6ad6c9640671689c2dbe6244680fe8b897c08fd1fab2228429b66c518e5e"}, - {file = "wrapt-1.14.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b3f7e671fb19734c872566e57ce7fc235fa953d7c181bb4ef138e17d607dc8a1"}, - {file = "wrapt-1.14.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:87fa943e8bbe40c8c1ba4086971a6fefbf75e9991217c55ed1bcb2f1985bd3d4"}, - {file = "wrapt-1.14.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4775a574e9d84e0212f5b18886cace049a42e13e12009bb0491562a48bb2b758"}, - {file = "wrapt-1.14.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9d57677238a0c5411c76097b8b93bdebb02eb845814c90f0b01727527a179e4d"}, - {file = "wrapt-1.14.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00108411e0f34c52ce16f81f1d308a571df7784932cc7491d1e94be2ee93374b"}, - {file = "wrapt-1.14.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d332eecf307fca852d02b63f35a7872de32d5ba8b4ec32da82f45df986b39ff6"}, - {file = "wrapt-1.14.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:01f799def9b96a8ec1ef6b9c1bbaf2bbc859b87545efbecc4a78faea13d0e3a0"}, - {file = "wrapt-1.14.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47045ed35481e857918ae78b54891fac0c1d197f22c95778e66302668309336c"}, - {file = "wrapt-1.14.0-cp39-cp39-win32.whl", hash = "sha256:2eca15d6b947cfff51ed76b2d60fd172c6ecd418ddab1c5126032d27f74bc350"}, - {file = "wrapt-1.14.0-cp39-cp39-win_amd64.whl", hash = "sha256:bb36fbb48b22985d13a6b496ea5fb9bb2a076fea943831643836c9f6febbcfdc"}, - {file = "wrapt-1.14.0.tar.gz", hash = "sha256:8323a43bd9c91f62bb7d4be74cc9ff10090e7ef820e27bfe8815c57e68261311"}, -] +wrapt = [] yamllint = [ {file = "yamllint-1.26.3.tar.gz", hash = "sha256:3934dcde484374596d6b52d8db412929a169f6d9e52e20f9ade5bf3523d9b96e"}, ] diff --git a/pyproject.toml b/pyproject.toml index 73dd77b6..f6a7d3fb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,10 +6,13 @@ authors = ["Network to Code, LLC "] readme = "README.md" homepage = "https://github.com/nautobot/nautobot-plugin-chatops" repository = "https://github.com/nautobot/nautobot-plugin-chatops" +documentation = "https://docs.nautobot.com/projects/chatops/en/stable/" keywords = ["nautobot", "nautobot-plugin"] include = [ "LICENSE", "README.md", + # Poetry by default will exclude files that are in .gitignore + "nautobot_chatops/static/nautobot_chatops/docs/**/*", ] [tool.poetry.plugins."nautobot.workers"] @@ -36,6 +39,16 @@ pydocstyle = "*" prybar = "*" invoke = "*" flake8 = "*" +# Allow Markdown files to include other files +mkdocs-include-markdown-plugin = "~3.6.0" +# Rendering docs to HTML +mkdocs = "~1.3.0" +# Material for mkdocs theme +mkdocs-material = "~8.4.2" +# Automatic documentation from sources, for MkDocs +mkdocstrings = "0.19" +mkdocstrings-python = "0.7.1" + [tool.black] line-length = 120 diff --git a/tasks.py b/tasks.py index 0c7e30e5..c19bb5f8 100644 --- a/tasks.py +++ b/tasks.py @@ -338,6 +338,11 @@ def check_migrations(context): run_command(context, command) +@task() +def build_and_check_docs(context): + """Build docs for use within Nautobot.""" + command = "mkdocs build --no-directory-urls --strict" + run_command(context, command) @task( help={ @@ -392,6 +397,8 @@ def tests(context, failfast=False): pylint(context) print("Running yamllint...") yamllint(context) + print("Building and checking docs...") + build_and_check_docs(context) print("Running unit tests...") unittest(context, failfast=failfast) print("All tests have passed!") From 4aadc2f468485bb0dca97e4e3465e135ad79a818 Mon Sep 17 00:00:00 2001 From: Stephen Kiely Date: Sat, 3 Sep 2022 10:41:12 -0500 Subject: [PATCH 03/14] Remove legacy files --- docs/FAQ.md | 12 ------------ docs/extending.md | 33 --------------------------------- 2 files changed, 45 deletions(-) delete mode 100644 docs/FAQ.md delete mode 100644 docs/extending.md diff --git a/docs/FAQ.md b/docs/FAQ.md deleted file mode 100644 index 7f812c39..00000000 --- a/docs/FAQ.md +++ /dev/null @@ -1,12 +0,0 @@ -# Frequently Asked Questions - -- [Frequently Asked Questions](#frequently-asked-questions) - - ["This app responded with Status Code 404" error returned while picking a filter from a slash command](#this-app-responded-with-status-code-404-error-returned-while-picking-a-filter-from-a-slash-command) - -## "This app responded with Status Code 404" error returned while picking a filter from a slash command - -If a 404 error is being returned while trying to use a slash command that allows for filtering, there is most likely a typo within the Interactivity Request URL for your application. - -- Navigate to [https://api.slack.com/apps](https://api.slack.com/apps) and select your Nautobot ChatOps application that is currently in development -- Under **Features**, navigate to "Interactivity & Shortcuts" -- Under **Interactivity**, confirm that the Request URL is of the format: `https:///api/plugins/chatops/slack/interaction/` (Note the trailing slash) diff --git a/docs/extending.md b/docs/extending.md deleted file mode 100644 index aff7616c..00000000 --- a/docs/extending.md +++ /dev/null @@ -1,33 +0,0 @@ -# Extending ChatOps - -## How message processing works - -Nautobot Chatops processes messages in a stateless fashion. Chat clients do not maintain a connection with Nautobot. Nautobot Chatops does not wait for the response from the chat client. Each interaction between the chat client and the Nautobot Chatops are treated as new interactions. - -Let's use the `nautobot get-devices` command and subcommand to explore the message processing. In this example, we will be using Slack. - -### SlashCommandView - -The end user will type `/nautobot get-devices` in Slack and hit enter. Slack will reach out to the configured Slash Command endpoint. This will go to SlackSlashCommandView. Here the sender (Slack) will be verified (Authentication). Once the verified, the request data from Slack is stored in the `context` then the command will be parsed separating out the command, subcommand and params. In this example `nautobot` is the command, `get-devices` is the subcommand and no params were given. Next, the commands registry is checked to confirm that `nautobot` is a valid command. If the command is valid, it is sent to the check_and_enqueue_command function. - -### Check_and_enqueue_command - -The check_and_enqueue_command function takes the commands registry, parsed command string, the context and originating dispatcher (Slack in this case). Here we will double-check the registry, then create a `command_log` entry (Accounting). Next we process the `access_grants` to verify that the user is authorized to use this command/subcommand (Authorization). If authorized, the parsed command string, context, dispatcher and function are enqueued with a worker. - -### Worker Processing - -In this example, get_devices gets sent to the Celery or RQ Worker. The get_devices function takes two arguments (params). Since no params were passed in at the first check for `filter_type`, the function calls `prompt_for_device_filter_type` which uses the `prompt_from_menu`**Insert_link to send a dropdown menu to the chat client. Then the function returns `False` since the command is not finished therefore it should not be logged. The worker then exits. - -### InteractionView - -If the user selects an option in the prompt, Slack will send that option along with the `action_id` that `prompt_from_menu` sent. In this example lets pretend that the user selected `site`. The InteractionView will receive a payload and try to process the payload to get the `action_id` which will be `nautobot get-devices` and the params `site`. This will be sent to check_and_enqueue, then to the worker. - -### Worker Processing Continued - -Continuing with the example, the Nautobot subcommand get-devices will now have the filter_type argument set to `site`. The function can now continue to use the dispatcher to prompt for more information, or use the dispatcher to return data to the user. To log completion of the command, the function can return `CommandStatusChoices.STATUS_SUCCEEDED` or `CommandStatusChoices.STATUS_FAILED` to log a successful or failed command. - -## Dispatcher Functions - -This is a list of all the available dispatcher functions that can be used to build out the interactive components of your chat commands. - -### \ No newline at end of file From a0070d9c5f75ab8560d9323639f0014a15560f2d Mon Sep 17 00:00:00 2001 From: Stephen Kiely Date: Sat, 3 Sep 2022 16:35:24 -0500 Subject: [PATCH 04/14] Make recommended PR changes and fix errors. --- .readthedocs.yaml | 2 +- README.md | 6 +++--- development/docker-compose.dev.yml | 10 ++++++++++ docs/admin/mattermost_setup.md | 4 ++-- docs/admin/microsoft_teams_setup.md | 4 ++-- docs/admin/release_notes/version_1.7.md | 2 +- docs/admin/slack_setup.md | 4 ++-- docs/admin/webex_setup.md | 4 ++-- mkdocs.yml | 5 ++--- nautobot_chatops/api/views/mattermost.py | 7 ++----- nautobot_chatops/api/views/ms_teams.py | 2 +- nautobot_chatops/api/views/slack.py | 4 ++-- nautobot_chatops/api/views/webex.py | 6 +++--- nautobot_chatops/dispatchers/base.py | 4 ++-- nautobot_chatops/dispatchers/mattermost.py | 16 ++++++++++------ nautobot_chatops/dispatchers/ms_teams.py | 3 ++- nautobot_chatops/dispatchers/slack.py | 3 ++- nautobot_chatops/dispatchers/webex.py | 3 ++- poetry.lock | 15 +-------------- pyproject.toml | 6 ++---- tasks.py | 2 ++ 21 files changed, 56 insertions(+), 56 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 782c8bc4..882d19e9 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -20,4 +20,4 @@ mkdocs: # Use our docs/requirements.txt during installation. python: install: - - requirements: "docs/requirements.txt" \ No newline at end of file + - requirements: "docs/requirements.txt" diff --git a/README.md b/README.md index b43131ec..bd2c5032 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Full web-based HTML documentation for this app can be found over on the [Nautobo ## Try it Out -Interested to see Nautobot ChatOps in action? It's currently setup on the [Demo Instance](https://demo.nautobot.com/) and integrated into [NTC Slack](slack.networktocode.com). You can sign up for that Slack workspace and join the `#nautobot-chat` channel to understand what this bot can do and try it for yourself. You can try these exact chat commands and many more: +Interested to see Nautobot ChatOps in action? It's currently setup on the [Demo Instance](https://demo.nautobot.com/) and integrated into [NTC Slack](https://slack.networktocode.com). You can sign up for that Slack workspace and join the `#nautobot-chat` channel to understand what this bot can do and try it for yourself. You can try these exact chat commands and many more: ### Command: `/nautobot` @@ -38,5 +38,5 @@ Interested to see Nautobot ChatOps in action? It's currently setup on the [Demo ## Questions -For any questions or comments, please check the [FAQ](docs/FAQ.md) first and feel free to swing by the [Network to Code slack channel](https://networktocode.slack.com/) (channel #nautobot). -Sign up [here](http://slack.networktocode.com/) +For any questions or comments, please check the [FAQ](https://docs.nautobot.com/projects/chatops/en/latest/user/app_faq/) first and feel free to swing by the [Network to Code slack channel](https://networktocode.slack.com/) (channel #nautobot). +Sign up [here](https://slack.networktocode.com/) diff --git a/development/docker-compose.dev.yml b/development/docker-compose.dev.yml index 02e81f61..4a1f10ce 100644 --- a/development/docker-compose.dev.yml +++ b/development/docker-compose.dev.yml @@ -10,6 +10,16 @@ services: volumes: - "./nautobot_config.py:/opt/nautobot/nautobot_config.py" - "../:/source" + docs: + entrypoint: "mkdocs serve -v -a 0.0.0.0:8080" + ports: + - "8001:8080" + volumes: + - "../:/source" + image: "nautobot-chatops-plugin/nautobot:${NAUTOBOT_VER}-py${PYTHON_VER}" + healthcheck: + disable: true + tty: true worker: volumes: - "./nautobot_config.py:/opt/nautobot/nautobot_config.py" diff --git a/docs/admin/mattermost_setup.md b/docs/admin/mattermost_setup.md index 9affd647..9321c1c8 100644 --- a/docs/admin/mattermost_setup.md +++ b/docs/admin/mattermost_setup.md @@ -25,7 +25,7 @@ - Copy the displayed url matching the Server you want to add the chatbot to. - Make sure to include the `http://` or `https://`. - If shown, make sure to include the port. Ex. `https://example.com:8065` -6. Proceed to the [Nautobot Server Preparation and Configuration](./chat_setup.md#Plug-In-Installation) section. +6. Proceed to the [Install Guide](admin_install.md#Install-Guide) section. **Note:** For every Slash Command created for Mattermost, a separate token will be generated. @@ -54,5 +54,5 @@ Here is an example that supports Mattermost. ## General Chat Setup Instructions -See [admin_install](admin_install) instructions here for general plugin setup instructions. +See [admin_install](admin_install.md) instructions here for general plugin setup instructions. diff --git a/docs/admin/microsoft_teams_setup.md b/docs/admin/microsoft_teams_setup.md index f0d5e6ad..57403bf8 100644 --- a/docs/admin/microsoft_teams_setup.md +++ b/docs/admin/microsoft_teams_setup.md @@ -41,7 +41,7 @@ 1. In the Microsoft Teams client, select “Apps” from the sidebar to the left. 2. Select “Built for your org.” 3. Select the tile for the new Nautobot app. Click the blue “Add” button. -4. Proceed to the Nautobot Server Preparation and Configuration section in the [Chat Setup](./chat_setup.md) document. +4. Proceed to the [Install Guide](admin_install.md#Install-Guide) section. ## Handling ChatOps Behind a Firewall @@ -53,4 +53,4 @@ Reference the [Setting Up Nautobot ChatOps With MSTeams Spring 2022](https://blo ## General Chat Setup Instructions -See [admin_install](admin_install) instructions here for general plugin setup instructions. +See [admin_install](admin_install.md) instructions here for general plugin setup instructions. diff --git a/docs/admin/release_notes/version_1.7.md b/docs/admin/release_notes/version_1.7.md index 1e146645..46c061b2 100644 --- a/docs/admin/release_notes/version_1.7.md +++ b/docs/admin/release_notes/version_1.7.md @@ -4,7 +4,7 @@ ### Additions -[#128](https://github.com/nautobot/nautobot-plugin-chatops/pull/128) +[#128](https://github.com/nautobot/nautobot-plugin-chatops/pull/128) Adds QOL change for focusing of fields ### Fixes diff --git a/docs/admin/slack_setup.md b/docs/admin/slack_setup.md index a98772fe..76dfb651 100644 --- a/docs/admin/slack_setup.md +++ b/docs/admin/slack_setup.md @@ -103,7 +103,7 @@ PLUGINS_CONFIG = { ## Post App-Creation Steps -Proceed to the [Nautobot Server Preparation and Configuration](./chat_setup.md#Plug-In-Installation) section. +Proceed to the [Install Guide](admin_install.md#Install-Guide) section. > **Note**: In the Slack app, you will need to invite the chatbot to each channel that it will belong to with `@`. > For example, when an app named `Nautobot ChatOps` is installed to the workspace: @@ -160,4 +160,4 @@ PLUGINS_CONFIG = { ## General Chat Setup Instructions -See [admin_install](admin_install) instructions here for general plugin setup instructions. +See [admin_install](admin_install.md) instructions here for general plugin setup instructions. diff --git a/docs/admin/webex_setup.md b/docs/admin/webex_setup.md index 1270e0c0..2bd39c05 100644 --- a/docs/admin/webex_setup.md +++ b/docs/admin/webex_setup.md @@ -28,7 +28,7 @@ - Change the `resource` to "attachmentActions" and run the API call again to create a second webhook. 4. Configure the `webex_signing_secret` in your `.creds.env` to match the secret string that you selected in step 3 above. -5. Proceed to the [Nautobot Server Preparation and Configuration](./chat_setup.md#Plug-In-Installation) section. +5. Proceed to the [Install Guide](admin_install.md#Install-Guide) section. ## Deprecation Warning @@ -42,4 +42,4 @@ Both settings will currently work, however support for `enable_webex_teams`, `we ## General Chat Setup Instructions -See [admin_install](admin_install) instructions here for general plugin setup instructions. +See [admin_install](admin_install.md) instructions here for general plugin setup instructions. diff --git a/mkdocs.yml b/mkdocs.yml index d08ca346..2f489959 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -80,7 +80,6 @@ markdown_extensions: plugins: - "search" - - "include-markdown" - mkdocstrings: default_handler: "python" handlers: @@ -122,10 +121,10 @@ nav: - "dev/code_reference/index.md" - Models: "dev/code_reference/models.md" - API: "dev/code_reference/api.md" - - Dispatchers: + - Dispatchers: - "dev/code_reference/base.md" - "dev/code_reference/slack.md" - "dev/code_reference/webex.md" - "dev/code_reference/ms_teams.md" - "dev/code_reference/mattermost.md" - - Nautobot Docs Home ↗︎: "https://docs.nautobot.com" \ No newline at end of file + - Nautobot Docs Home ↗︎: "https://docs.nautobot.com" diff --git a/nautobot_chatops/api/views/mattermost.py b/nautobot_chatops/api/views/mattermost.py index 7d4a6b9b..a199499a 100644 --- a/nautobot_chatops/api/views/mattermost.py +++ b/nautobot_chatops/api/views/mattermost.py @@ -28,7 +28,7 @@ def verify_signature(request): https://developers.mattermost.com/integrate/slash-commands/ Returns: - tuple: (valid, reason) + valid (tuple): (valid, reason) """ if request.headers.get("Authorization"): expected_signature = request.headers.get("Authorization") @@ -125,10 +125,7 @@ class MattermostInteractionView(View): @staticmethod def get_selected_value(cmd): """Returns formatted selected value if one exists.""" - if cmd: - return f" '{cmd}'" - else: - return " ''" + return f" '{cmd}'" if cmd else " ''" # pylint: disable=too-many-locals,too-many-return-statements,too-many-branches,too-many-statements def post(self, request, *args, **kwargs): diff --git a/nautobot_chatops/api/views/ms_teams.py b/nautobot_chatops/api/views/ms_teams.py index cc397336..8f5f6a95 100644 --- a/nautobot_chatops/api/views/ms_teams.py +++ b/nautobot_chatops/api/views/ms_teams.py @@ -49,7 +49,7 @@ def verify_jwt_token(request_headers, request_json): - https://github.com/microsoft/BotFramework-Emulator/pull/324 Returns: - tuple: (valid, reason) + valid (tuple): (valid, reason) """ # 1. The token was sent in the HTTP Authorization header with Bearer scheme if "authorization" not in request_headers: diff --git a/nautobot_chatops/api/views/slack.py b/nautobot_chatops/api/views/slack.py index c2088205..c61e3465 100644 --- a/nautobot_chatops/api/views/slack.py +++ b/nautobot_chatops/api/views/slack.py @@ -45,7 +45,7 @@ def verify_signature(request): https://api.slack.com/authentication/verifying-requests-from-slack Returns: - tuple: (valid, reason) + valid (tuple): (valid, reason) """ expected_signature = request.headers.get("X-Slack-Signature") if not expected_signature: @@ -174,7 +174,7 @@ def post(self, request, *args, **kwargs): if action_id == "action" and selected_value == "cancel": # Nothing more to do return HttpResponse() - elif "view" in payload and payload["view"]: + elif "view" in payload and payload["view"]: # pylint: disable=too-many-nested-blocks # View submission triggered from a modal dialog logger.info("Submission triggered from a modal dialog") logger.info(json.dumps(payload, indent=2)) diff --git a/nautobot_chatops/api/views/webex.py b/nautobot_chatops/api/views/webex.py index 6c6eddfa..51113c1b 100644 --- a/nautobot_chatops/api/views/webex.py +++ b/nautobot_chatops/api/views/webex.py @@ -63,10 +63,10 @@ def generate_signature(request): else: try: signing_secret = settings.PLUGINS_CONFIG["nautobot_chatops"]["webex_signing_secret"].encode("utf-8") - except KeyError as err: + except KeyError as error: error_msg = "The 'webex_token' setting must be configured" logger.error(error_msg) - raise KeyError(error_msg) from err + raise KeyError(error_msg) from error return hmac.new(signing_secret, request.body, digestmod=hashlib.sha1).hexdigest() @@ -77,7 +77,7 @@ def verify_signature(request): https://developer.webex.com/docs/api/guides/webhooks#handling-requests-from-webex-teams Returns: - tuple: (valid, reason) + valid (tuple): (valid, reason) """ expected_signature = request.headers.get("X-Spark-Signature") if not expected_signature: diff --git a/nautobot_chatops/dispatchers/base.py b/nautobot_chatops/dispatchers/base.py index 001d0b2a..b192eb1e 100644 --- a/nautobot_chatops/dispatchers/base.py +++ b/nautobot_chatops/dispatchers/base.py @@ -1,6 +1,6 @@ """Generic base class modeling the API for sending messages to a generic chat platform.""" import logging -from typing import Dict +from typing import Dict, Optional from django.templatetags.static import static from django.core.cache import cache from django.conf import settings @@ -119,7 +119,7 @@ def subclasses(cls): return subclasses @classmethod - def platform_lookup(cls, item_type, item_name): + def platform_lookup(cls, item_type, item_name) -> Optional[str]: """Call out to the chat platform to look up, e.g., a specific user ID by name. Args: diff --git a/nautobot_chatops/dispatchers/mattermost.py b/nautobot_chatops/dispatchers/mattermost.py index 8c654bcf..d1395f7e 100644 --- a/nautobot_chatops/dispatchers/mattermost.py +++ b/nautobot_chatops/dispatchers/mattermost.py @@ -3,6 +3,7 @@ import json import logging import time +from typing import Dict, Optional import requests from requests.exceptions import HTTPError @@ -121,7 +122,7 @@ def __init__(self, options): self._headers = {"Authorization": "Bearer " + self._token} @error_report - def post(self, endpoint, params=None, data=None, multipart_formdata=None): + def post(self, endpoint, params=None, data=None, multipart_formdata=None) -> Dict: """Post object to endpoint. Args: @@ -144,7 +145,7 @@ def post(self, endpoint, params=None, data=None, multipart_formdata=None): return mm_response.json() @error_report - def get(self, endpoint, params=None, raw=False): + def get(self, endpoint, params=None, raw=False) -> Dict: """Get object from endpoint. Args: @@ -232,7 +233,7 @@ def open_dialog(self, trigger_id, view, dialog_url): data = {"trigger_id": trigger_id, "url": dialog_url, "dialog": view} self.post("/actions/dialogs/open", data=data) - def upload_file(self, channel_id, file): + def upload_file(self, channel_id, file) -> Dict: """Uploads a file that can later be attached to a post. Instead of passing the filepath, we instead expect a @@ -272,7 +273,7 @@ def __init__(self, *args, **kwargs): @classmethod @BACKEND_ACTION_LOOKUP.time() - def platform_lookup(cls, item_type, item_name): + def platform_lookup(cls, item_type, item_name) -> Optional[str]: """Call out to the chat platform to look up, e.g., a specific user ID by name. Args: @@ -610,7 +611,7 @@ def markdown_element(self, text): """Construct a basic Markdown-formatted text element.""" return text - def select_element(self, action_id, choices): + def select_element(self, action_id, choices) -> Dict: """Construct a basic selection menu with the given choices. Args: @@ -644,7 +645,10 @@ def select_element_interactive(self, action_id, choices, default=(None, None), c choices (list): List of (display, value) tuples default (tuple: Default (display, value) to preselect confirm (bool): If true (and the platform supports it), prompt the user to confirm their selection - optional: (optional) If set to True, the field will return NoneType is not specified. + optional (bool): If set to True, the field will return NoneType is not specified. + + Returns: + data (dict): select element """ default_text, default_value = default logger.info("Ignoring: select_element_interactive has no confirm: %s", confirm) diff --git a/nautobot_chatops/dispatchers/ms_teams.py b/nautobot_chatops/dispatchers/ms_teams.py index 59e144e3..ebaef1fd 100644 --- a/nautobot_chatops/dispatchers/ms_teams.py +++ b/nautobot_chatops/dispatchers/ms_teams.py @@ -1,6 +1,7 @@ """Dispatcher implementation for sending content to Microsoft Teams.""" import os import logging +from typing import Optional import requests from django.conf import settings @@ -31,7 +32,7 @@ def __init__(self, *args, **kwargs): @classmethod @BACKEND_ACTION_LOOKUP.time() - def platform_lookup(cls, item_type, item_name): + def platform_lookup(cls, item_type, item_name) -> Optional[str]: """Call out to the chat platform to look up, e.g., a specific user ID by name. Args: diff --git a/nautobot_chatops/dispatchers/slack.py b/nautobot_chatops/dispatchers/slack.py index 77147732..dfc796ab 100644 --- a/nautobot_chatops/dispatchers/slack.py +++ b/nautobot_chatops/dispatchers/slack.py @@ -5,6 +5,7 @@ import os import time +from typing import Optional from django.conf import settings from slack_sdk import WebClient from slack_sdk.webhook.client import WebhookClient @@ -47,7 +48,7 @@ def __init__(self, *args, **kwargs): # pylint: disable=too-many-branches @classmethod @BACKEND_ACTION_LOOKUP.time() - def platform_lookup(cls, item_type, item_name): + def platform_lookup(cls, item_type, item_name) -> Optional[str]: """Call out to the chat platform to look up, e.g., a specific user ID by name. Args: diff --git a/nautobot_chatops/dispatchers/webex.py b/nautobot_chatops/dispatchers/webex.py index d3a6f54f..dd1926f5 100644 --- a/nautobot_chatops/dispatchers/webex.py +++ b/nautobot_chatops/dispatchers/webex.py @@ -2,6 +2,7 @@ import logging import os +from typing import Optional from webexteamssdk import WebexTeamsAPI from webexteamssdk.exceptions import ApiError from django.conf import settings @@ -52,7 +53,7 @@ def __init__(self, *args, **kwargs): @classmethod @BACKEND_ACTION_LOOKUP.time() - def platform_lookup(cls, item_type, item_name): + def platform_lookup(cls, item_type, item_name) -> Optional[str]: """Call out to the chat platform to look up, e.g., a specific user ID by name. Args: diff --git a/poetry.lock b/poetry.lock index 300bc5b3..f5c53f0c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1073,18 +1073,6 @@ python-versions = ">=3.7" Markdown = ">=3.3" mkdocs = ">=1.1" -[[package]] -name = "mkdocs-include-markdown-plugin" -version = "3.6.1" -description = "Mkdocs Markdown includer plugin." -category = "dev" -optional = false -python-versions = ">=3.6" - -[package.extras] -dev = ["bump2version (==1.0.1)", "flake8 (==3.9.2)", "flake8-implicit-str-concat (==0.2.0)", "flake8-print (==4.0.0)", "isort (==5.9.1)", "mdpo (==0.3.61)", "mkdocs (==1.2.3)", "pre-commit (==2.13.0)", "pytest (==6.2.5)", "pytest-cov (==3.0.0)", "pyupgrade (==2.19.4)", "yamllint (==1.26.1)"] -test = ["pytest (==6.2.5)", "pytest-cov (==3.0.0)"] - [[package]] name = "mkdocs-material" version = "8.4.2" @@ -1948,7 +1936,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = "^3.7" -content-hash = "72f7352feb239e40cc2df848cc926c13be5955355d0ec35646ec38978e4543bf" +content-hash = "73ce85c8aac6ead2cb870537c14f2a773258b680e85de68fe47f2b5f593450c8" [metadata.files] amqp = [ @@ -2383,7 +2371,6 @@ mergedeep = [ ] mkdocs = [] mkdocs-autorefs = [] -mkdocs-include-markdown-plugin = [] mkdocs-material = [] mkdocs-material-extensions = [] mkdocstrings = [] diff --git a/pyproject.toml b/pyproject.toml index f6a7d3fb..8ed6eeda 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,12 +39,10 @@ pydocstyle = "*" prybar = "*" invoke = "*" flake8 = "*" -# Allow Markdown files to include other files -mkdocs-include-markdown-plugin = "~3.6.0" # Rendering docs to HTML -mkdocs = "~1.3.0" +mkdocs = "1.3.1" # Material for mkdocs theme -mkdocs-material = "~8.4.2" +mkdocs-material = "8.4.2" # Automatic documentation from sources, for MkDocs mkdocstrings = "0.19" mkdocstrings-python = "0.7.1" diff --git a/tasks.py b/tasks.py index c19bb5f8..dfac99c4 100644 --- a/tasks.py +++ b/tasks.py @@ -338,12 +338,14 @@ def check_migrations(context): run_command(context, command) + @task() def build_and_check_docs(context): """Build docs for use within Nautobot.""" command = "mkdocs build --no-directory-urls --strict" run_command(context, command) + @task( help={ "keepdb": "save and re-use test database between test runs for faster re-testing.", From 013c3d6796aa29f3d36c7432cd86a2d162f627af Mon Sep 17 00:00:00 2001 From: Stephen Kiely Date: Sat, 3 Sep 2022 17:01:49 -0500 Subject: [PATCH 05/14] Update poetry.lock This will hopefully allow the tests to run on GitHub. --- poetry.lock | 701 +++++++++++++++++++++++----------------------------- 1 file changed, 309 insertions(+), 392 deletions(-) diff --git a/poetry.lock b/poetry.lock index f5c53f0c..3db0f821 100644 --- a/poetry.lock +++ b/poetry.lock @@ -19,7 +19,7 @@ python-versions = "*" [[package]] name = "asgiref" -version = "3.5.0" +version = "3.5.2" description = "ASGI specs, helper code, and adapters" category = "main" optional = false @@ -33,7 +33,7 @@ tests = ["pytest", "pytest-asyncio", "mypy (>=0.800)"] [[package]] name = "astroid" -version = "2.11.3" +version = "2.11.7" description = "An abstract syntax tree for Python with inference support." category = "dev" optional = false @@ -58,17 +58,17 @@ typing-extensions = {version = ">=3.6.5", markers = "python_version < \"3.8\""} [[package]] name = "attrs" -version = "21.4.0" +version = "22.1.0" description = "Classes Without Boilerplate" category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.5" [package.extras] -dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] -tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] -tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "cloudpickle"] [[package]] name = "bandit" @@ -99,7 +99,7 @@ python-versions = "*" [[package]] name = "black" -version = "22.3.0" +version = "22.8.0" description = "The uncompromising code formatter." category = "dev" optional = false @@ -110,7 +110,7 @@ click = ">=8.0.0" mypy-extensions = ">=0.4.3" pathspec = ">=0.9.0" platformdirs = ">=2" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} typed-ast = {version = ">=1.4.2", markers = "python_version < \"3.8\" and implementation_name == \"cpython\""} typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} @@ -130,11 +130,11 @@ python-versions = "*" [[package]] name = "celery" -version = "5.2.6" +version = "5.2.7" description = "Distributed Task Queue." category = "main" optional = false -python-versions = ">=3.7," +python-versions = ">=3.7" [package.dependencies] billiard = ">=3.6.4.0,<4.0" @@ -182,15 +182,15 @@ zstd = ["zstandard"] [[package]] name = "certifi" -version = "2021.10.8" +version = "2022.6.15" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false -python-versions = "*" +python-versions = ">=3.6" [[package]] name = "cffi" -version = "1.15.0" +version = "1.15.1" description = "Foreign Function Interface for Python calling C code." category = "main" optional = false @@ -201,18 +201,18 @@ pycparser = "*" [[package]] name = "charset-normalizer" -version = "2.0.12" +version = "2.1.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "main" optional = false -python-versions = ">=3.5.0" +python-versions = ">=3.6.0" [package.extras] unicode_backport = ["unicodedata2"] [[package]] name = "click" -version = "8.1.2" +version = "8.1.3" description = "Composable command line interface toolkit" category = "main" optional = false @@ -262,7 +262,7 @@ six = "*" [[package]] name = "colorama" -version = "0.4.4" +version = "0.4.5" description = "Cross-platform colored terminal text." category = "main" optional = false @@ -295,7 +295,7 @@ jinja2 = "*" [[package]] name = "cryptography" -version = "36.0.2" +version = "37.0.4" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." category = "main" optional = false @@ -310,7 +310,7 @@ docstest = ["pyenchant (>=1.6.11)", "twine (>=1.12.0)", "sphinxcontrib-spelling pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"] sdist = ["setuptools_rust (>=0.11.4)"] ssh = ["bcrypt (>=3.1.5)"] -test = ["pytest (>=6.2.0)", "pytest-cov", "pytest-subtests", "pytest-xdist", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,!=3.79.2)"] +test = ["pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-subtests", "pytest-xdist", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,!=3.79.2)"] [[package]] name = "defusedxml" @@ -336,18 +336,18 @@ dev = ["tox", "bump2version (<1)", "sphinx (<2)", "importlib-metadata (<3)", "im [[package]] name = "dill" -version = "0.3.4" +version = "0.3.5.1" description = "serialize all of python" category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" [package.extras] graph = ["objgraph (>=1.7.2)"] [[package]] name = "django" -version = "3.2.13" +version = "3.2.15" description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design." category = "main" optional = false @@ -426,14 +426,14 @@ redis = ["redis"] [[package]] name = "django-cors-headers" -version = "3.10.1" +version = "3.13.0" description = "django-cors-headers is a Django application for handling the server headers required for Cross-Origin Resource Sharing (CORS)." category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] -Django = ">=2.2" +Django = ">=3.2" [[package]] name = "django-cryptography" @@ -460,14 +460,14 @@ Django = "*" [[package]] name = "django-extensions" -version = "3.1.5" +version = "3.2.0" description = "Extensions for Django" category = "main" optional = false python-versions = ">=3.6" [package.dependencies] -Django = ">=2.2" +Django = ">=3.2" [[package]] name = "django-filter" @@ -493,7 +493,7 @@ django = ">=2.2" [[package]] name = "django-jinja" -version = "2.10.0" +version = "2.10.2" description = "Jinja2 templating language integrated in Django." category = "main" optional = false @@ -533,14 +533,14 @@ tests = ["coverage", "mock-django"] [[package]] name = "django-picklefield" -version = "3.0.1" +version = "3.1" description = "Pickled object field for Django" category = "main" optional = false python-versions = ">=3" [package.dependencies] -Django = ">=2.2" +Django = ">=3.2" [package.extras] tests = ["tox"] @@ -628,6 +628,17 @@ pytz = "*" [package.extras] rest_framework = ["djangorestframework (>=3.0.0)"] +[[package]] +name = "django-tree-queries" +version = "0.11.0" +description = "Tree queries with explicit opt-in, without configurability" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +tests = ["coverage"] + [[package]] name = "django-webserver" version = "1.2.0" @@ -658,9 +669,31 @@ python-versions = ">=3.6" django = ">=2.2" pytz = "*" +[[package]] +name = "drf-spectacular" +version = "0.22.1" +description = "Sane and flexible OpenAPI 3 schema generation for Django REST framework" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +Django = ">=2.2" +djangorestframework = ">=3.10" +drf-spectacular-sidecar = {version = "*", optional = true, markers = "extra == \"sidecar\""} +inflection = ">=0.3.1" +jsonschema = ">=2.6.0" +PyYAML = ">=5.1" +typing-extensions = {version = "*", markers = "python_version < \"3.8\""} +uritemplate = ">=2.0.0" + +[package.extras] +offline = ["drf-spectacular-sidecar"] +sidecar = ["drf-spectacular-sidecar"] + [[package]] name = "drf-spectacular-sidecar" -version = "2022.4.1" +version = "2022.9.1" description = "Serve self-contained distribution builds of Swagger UI and Redoc with Django" category = "main" optional = false @@ -671,7 +704,7 @@ Django = ">=2.2" [[package]] name = "drf-yasg" -version = "1.20.3" +version = "1.21.3" description = "Automated generation of real Swagger/OpenAPI 2.0 schemas from Django Rest Framework code." category = "main" optional = false @@ -694,17 +727,16 @@ validation = ["swagger-spec-validator (>=2.1.0)"] [[package]] name = "flake8" -version = "3.9.2" -description = "the modular source code checker: pep8 pyflakes and co" +version = "2.3.0" +description = "the modular source code checker: pep8, pyflakes and co" category = "dev" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +python-versions = "*" [package.dependencies] -importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} -mccabe = ">=0.6.0,<0.7.0" -pycodestyle = ">=2.7.0,<2.8.0" -pyflakes = ">=2.3.0,<2.4.0" +mccabe = ">=0.2.1" +pep8 = ">=1.5.7" +pyflakes = ">=0.8.1" [[package]] name = "funcy" @@ -862,23 +894,24 @@ python-versions = ">=3.5" [[package]] name = "importlib-metadata" -version = "4.4.0" +version = "4.12.0" description = "Read metadata from Python packages" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} zipp = ">=0.5" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] -testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +perf = ["ipython"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.3)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] [[package]] name = "importlib-resources" -version = "5.7.1" +version = "5.9.0" description = "Read resources from Python packages" category = "main" optional = false @@ -888,8 +921,8 @@ python-versions = ">=3.7" zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] -docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "jaraco.tidelift (>=1.4)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] [[package]] name = "inflection" @@ -901,7 +934,7 @@ python-versions = ">=3.5" [[package]] name = "invoke" -version = "1.7.0" +version = "1.7.1" description = "Pythonic task execution" category = "dev" optional = false @@ -945,7 +978,7 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "jsonschema" -version = "4.4.0" +version = "4.7.2" description = "An implementation of JSON Schema validation for Python" category = "main" optional = false @@ -960,7 +993,7 @@ typing-extensions = {version = "*", markers = "python_version < \"3.8\""} [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)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] [[package]] name = "kombu" @@ -1002,7 +1035,7 @@ python-versions = ">=3.6" [[package]] name = "markdown" -version = "3.3.6" +version = "3.3.7" description = "Python implementation of Markdown." category = "main" optional = false @@ -1024,11 +1057,11 @@ python-versions = ">=3.7" [[package]] name = "mccabe" -version = "0.6.1" +version = "0.7.0" description = "McCabe checker, plugin for flake8" category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.6" [[package]] name = "mergedeep" @@ -1140,26 +1173,26 @@ python-versions = "*" [[package]] name = "nautobot" -version = "1.3.1" +version = "1.4.1" description = "Source of truth and network automation platform." category = "main" optional = false python-versions = ">=3.7,<4.0" [package.dependencies] -celery = ">=5.2.3,<5.3.0" -Django = ">=3.2,<3.3" +celery = ">=5.2.7,<5.3.0" +Django = ">=3.2.15,<3.3.0" django-ajax-tables = ">=1.1.1,<1.2.0" django-cacheops = ">=6.0,<6.1" django-celery-beat = ">=2.2.1,<2.3.0" django-constance = {version = ">=2.8.0,<2.9.0", extras = ["database"]} -django-cors-headers = ">=3.10.1,<3.11.0" +django-cors-headers = ">=3.13.0,<3.14.0" django-cryptography = ">=1.0,<1.1" django-db-file-storage = ">=0.5.5,<0.6.0" -django-extensions = ">=3.1.5,<3.2.0" +django-extensions = ">=3.2.0,<3.3.0" django-filter = ">=21.1,<21.2" django-health-check = ">=3.16.5,<3.17.0" -django-jinja = ">=2.10.0,<2.11.0" +django-jinja = ">=2.10.2,<2.11.0" django-mptt = ">=0.13.4,<0.14.0" django-prometheus = ">=2.2.0,<2.3.0" django-redis = ">=5.2.0,<5.3.0" @@ -1167,35 +1200,36 @@ django-rq = ">=2.5.1,<2.6.0" django-tables2 = ">=2.4.1,<2.5.0" django-taggit = ">=1.5.1,<1.6.0" django-timezone-field = ">=4.1.2,<4.2.0" +django-tree-queries = ">=0.11,<0.12" django-webserver = ">=1.2.0,<1.3.0" djangorestframework = ">=3.13.1,<3.14.0" -drf-spectacular-sidecar = "2022.4.1" -drf-yasg = {version = ">=1.20.0,<1.21.0", extras = ["validation"]} +drf-spectacular = {version = ">=0.22.1,<0.23.0", extras = ["sidecar"]} +drf-yasg = {version = ">=1.20.0,<2.0.0", extras = ["validation"]} GitPython = ">=3.1.27,<3.2.0" graphene-django = ">=2.15.0,<2.16.0" graphene-django-optimizer = ">=0.8.0,<0.9.0" -importlib-metadata = {version = ">=4.4,<4.5", markers = "python_version < \"3.10\""} +importlib-metadata = {version = ">=4.4,<5.0", markers = "python_version < \"3.8\""} Jinja2 = ">=3.0.3,<3.1.0" -jsonschema = ">=4.4.0,<4.5.0" -Markdown = ">=3.3.6,<3.4.0" -MarkupSafe = ">=2.1.0,<2.2.0" +jsonschema = ">=4.7.0,<4.8.0" +Markdown = ">=3.3.7,<3.4.0" +MarkupSafe = ">=2.1.1,<2.2.0" netaddr = ">=0.8.0,<0.9.0" -netutils = ">=1.0.0,<1.1.0" -Pillow = ">=9.0.1,<9.1.0" +netutils = ">=1.1.0,<1.2.0" +Pillow = ">=9.2.0,<9.3.0" psycopg2-binary = ">=2.9.3,<2.10.0" pycryptodome = ">=3.13.0,<3.14.0" pyuwsgi = ">=2.0.20,<2.1.0" PyYAML = ">=6.0,<6.1" social-auth-app-django = ">=5.0.0,<5.1.0" -svgwrite = ">=1.4.1,<1.5.0" +svgwrite = ">=1.4.2,<1.5.0" [package.extras] -all = ["django-auth-ldap (>=4.0.0,<4.1.0)", "django-storages (>=1.12.3,<1.13.0)", "mysqlclient (>=2.1.0,<2.2.0)", "napalm (>=3.3.1,<3.4.0)", "social-auth-core[openidconnect,saml] (>=4.2.0,<4.3.0)"] -ldap = ["django-auth-ldap (>=4.0.0,<4.1.0)"] +all = ["django-auth-ldap (>=4.1.0,<4.2.0)", "django-storages (>=1.12.3,<1.13.0)", "mysqlclient (>=2.1.0,<2.2.0)", "napalm (>=3.4.1,<3.5.0)", "social-auth-core[saml,openidconnect] (>=4.3.0,<4.4.0)"] +ldap = ["django-auth-ldap (>=4.1.0,<4.2.0)"] remote_storage = ["django-storages (>=1.12.3,<1.13.0)"] mysql = ["mysqlclient (>=2.1.0,<2.2.0)"] -napalm = ["napalm (>=3.3.1,<3.4.0)"] -sso = ["social-auth-core[openidconnect,saml] (>=4.2.0,<4.3.0)"] +napalm = ["napalm (>=3.4.1,<3.5.0)"] +sso = ["social-auth-core[saml,openidconnect] (>=4.3.0,<4.4.0)"] [[package]] name = "nautobot-capacity-metrics" @@ -1218,7 +1252,7 @@ python-versions = "*" [[package]] name = "netutils" -version = "1.0.0" +version = "1.1.0" description = "Common helper functions useful in network automation." category = "main" optional = false @@ -1250,28 +1284,40 @@ pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" [[package]] name = "pathspec" -version = "0.9.0" +version = "0.10.1" description = "Utility library for gitignore style pattern matching of file paths." category = "dev" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +python-versions = ">=3.7" [[package]] name = "pbr" -version = "5.8.1" +version = "5.10.0" description = "Python Build Reasonableness" category = "dev" optional = false python-versions = ">=2.6" +[[package]] +name = "pep8" +version = "1.7.1" +description = "Python style guide checker" +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "pillow" -version = "9.0.1" +version = "9.2.0" description = "Python Imaging Library (Fork)" category = "main" optional = false python-versions = ">=3.7" +[package.extras] +docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinxext-opengraph"] +tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] + [[package]] name = "platformdirs" version = "2.5.2" @@ -1311,7 +1357,7 @@ test = ["pytest (>=2.7.3)", "pytest-cov", "coveralls", "futures", "pytest-benchm [[package]] name = "prompt-toolkit" -version = "3.0.29" +version = "3.0.31" description = "Library for building powerful interactive command lines in Python" category = "main" optional = false @@ -1341,14 +1387,6 @@ category = "main" optional = false python-versions = ">=3.6" -[[package]] -name = "pycodestyle" -version = "2.7.0" -description = "Python style guide checker" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - [[package]] name = "pycparser" version = "2.21" @@ -1381,11 +1419,11 @@ toml = ["toml"] [[package]] name = "pyflakes" -version = "2.3.1" +version = "2.5.0" description = "passive checker of Python programs" category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.6" [[package]] name = "pygments" @@ -1414,14 +1452,14 @@ tests = ["pytest (>=6.0.0,<7.0.0)", "coverage[toml] (==5.0.4)"] [[package]] name = "pylint" -version = "2.13.7" +version = "2.13.9" description = "python code static checker" category = "dev" optional = false python-versions = ">=3.6.2" [package.dependencies] -astroid = ">=2.11.3,<=2.12.0-dev0" +astroid = ">=2.11.5,<=2.12.0-dev0" colorama = {version = "*", markers = "sys_platform == \"win32\""} dill = ">=0.2" isort = ">=4.2.5,<6" @@ -1473,7 +1511,7 @@ markdown = ">=3.2" [[package]] name = "pyparsing" -version = "3.0.8" +version = "3.0.9" description = "pyparsing module - Classes and methods to define and execute parsing grammars" category = "main" optional = false @@ -1533,7 +1571,7 @@ postgresql = ["psycopg2"] [[package]] name = "pytz" -version = "2022.1" +version = "2022.2.1" description = "World timezone definitions, modern and historical" category = "main" optional = false @@ -1568,7 +1606,7 @@ pyyaml = "*" [[package]] name = "redis" -version = "4.2.2" +version = "4.3.4" description = "Python client for Redis database and key-value store" category = "main" optional = false @@ -1587,21 +1625,21 @@ ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==20.0.1)", "requests (>=2.26.0)" [[package]] name = "requests" -version = "2.27.1" +version = "2.28.1" description = "Python HTTP for Humans." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = ">=3.7, <4" [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""} -idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""} +charset-normalizer = ">=2,<3" +idna = ">=2.5,<4" urllib3 = ">=1.21.1,<1.27" [package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] -use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "requests-oauthlib" @@ -1631,7 +1669,7 @@ requests = ">=2.0.1,<3.0.0" [[package]] name = "rq" -version = "1.10.1" +version = "1.11.0" description = "RQ is a simple, lightweight, library for creating background jobs, and processing them." category = "main" optional = false @@ -1697,7 +1735,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" [[package]] name = "slack-sdk" -version = "3.15.2" +version = "3.18.2" description = "The Slack API Platform SDK for Python" category = "main" optional = false @@ -1705,7 +1743,7 @@ python-versions = ">=3.6.0" [package.extras] optional = ["aiodns (>1.0)", "aiohttp (>=3.7.3,<4)", "boto3 (<=2)", "SQLAlchemy (>=1,<2)", "websockets (>=10,<11)", "websocket-client (>=1,<2)"] -testing = ["pytest (>=6.2.5,<7)", "pytest-asyncio (<1)", "Flask-Sockets (>=0.2,<1)", "Flask (>=1,<2)", "Werkzeug (<2)", "itsdangerous (==2.0.1)", "pytest-cov (>=2,<3)", "codecov (>=2,<3)", "flake8 (>=4,<5)", "black (==22.1.0)", "psutil (>=5,<6)", "databases (>=0.5)", "boto3 (<=2)", "moto (>=3,<4)"] +testing = ["pytest (>=6.2.5,<7)", "pytest-asyncio (<1)", "Flask-Sockets (>=0.2,<1)", "Flask (>=1,<2)", "Werkzeug (<2)", "itsdangerous (==1.1.0)", "Jinja2 (==3.0.3)", "pytest-cov (>=2,<3)", "codecov (>=2,<3)", "flake8 (>=5,<6)", "black (==22.8.0)", "click (==8.0.4)", "psutil (>=5,<6)", "databases (>=0.5)", "boto3 (<=2)", "moto (>=3,<4)"] [[package]] name = "smmap" @@ -1736,7 +1774,7 @@ social-auth-core = ">=4.1.0" [[package]] name = "social-auth-core" -version = "4.2.0" +version = "4.3.0" description = "Python social authentication made simple." category = "main" optional = false @@ -1780,7 +1818,7 @@ pbr = ">=2.0.0,<2.1.0 || >2.1.0" [[package]] name = "svgwrite" -version = "1.4.2" +version = "1.4.3" description = "A Python library to create SVG drawings." category = "main" optional = false @@ -1788,7 +1826,7 @@ python-versions = ">=3.6" [[package]] name = "swagger-spec-validator" -version = "2.7.4" +version = "2.7.6" description = "Validation of Swagger specifications" category = "main" optional = false @@ -1825,7 +1863,7 @@ python-versions = ">=3.7" [[package]] name = "typed-ast" -version = "1.5.3" +version = "1.5.4" description = "a fork of Python 2 and 3 ast modules with type comment support" category = "dev" optional = false @@ -1833,7 +1871,7 @@ python-versions = ">=3.6" [[package]] name = "typing-extensions" -version = "4.2.0" +version = "4.3.0" description = "Backported and Experimental Type Hints for Python 3.7+" category = "main" optional = false @@ -1849,15 +1887,15 @@ python-versions = ">=3.6" [[package]] name = "urllib3" -version = "1.26.9" +version = "1.26.12" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4" [package.extras] brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] -secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "urllib3-secure-extra", "ipaddress"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] @@ -1889,7 +1927,7 @@ python-versions = "*" [[package]] name = "webexteamssdk" -version = "1.6" +version = "1.6.1" description = "Community-developed Python SDK for the Webex Teams APIs" category = "main" optional = false @@ -1903,7 +1941,7 @@ requests-toolbelt = "*" [[package]] name = "wrapt" -version = "1.14.0" +version = "1.14.1" description = "Module for decorators, wrappers and monkey patching." category = "main" optional = false @@ -1911,11 +1949,11 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" [[package]] name = "yamllint" -version = "1.26.3" +version = "1.27.1" description = "A linter for YAML files." category = "dev" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" [package.dependencies] pathspec = ">=0.5.3" @@ -1923,15 +1961,15 @@ pyyaml = "*" [[package]] name = "zipp" -version = "3.8.0" +version = "3.8.1" description = "Backport of pathlib-compatible object wrapper for zip files" category = "main" optional = false python-versions = ">=3.7" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "jaraco.tidelift (>=1.4)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.3)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] [metadata] lock-version = "1.1" @@ -1948,21 +1986,15 @@ aniso8601 = [ {file = "aniso8601-7.0.0.tar.gz", hash = "sha256:513d2b6637b7853806ae79ffaca6f3e8754bdd547048f5ccc1420aec4b714f1e"}, ] asgiref = [ - {file = "asgiref-3.5.0-py3-none-any.whl", hash = "sha256:88d59c13d634dcffe0510be048210188edd79aeccb6a6c9028cdad6f31d730a9"}, - {file = "asgiref-3.5.0.tar.gz", hash = "sha256:2f8abc20f7248433085eda803936d98992f1343ddb022065779f37c5da0181d0"}, -] -astroid = [ - {file = "astroid-2.11.3-py3-none-any.whl", hash = "sha256:f1af57483cd17e963b2eddce8361e00fc593d1520fe19948488e94ff6476bd71"}, - {file = "astroid-2.11.3.tar.gz", hash = "sha256:4e5ba10571e197785e312966ea5efb2f5783176d4c1a73fa922d474ae2be59f7"}, + {file = "asgiref-3.5.2-py3-none-any.whl", hash = "sha256:1d2880b792ae8757289136f1db2b7b99100ce959b2aa57fd69dab783d05afac4"}, + {file = "asgiref-3.5.2.tar.gz", hash = "sha256:4a29362a6acebe09bf1d6640db38c1dc3d9217c68e6f9f6204d72667fc19a424"}, ] +astroid = [] async-timeout = [ {file = "async-timeout-4.0.2.tar.gz", hash = "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15"}, {file = "async_timeout-4.0.2-py3-none-any.whl", hash = "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c"}, ] -attrs = [ - {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, - {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, -] +attrs = [] bandit = [ {file = "bandit-1.7.4-py3-none-any.whl", hash = "sha256:412d3f259dab4077d0e7f0c11f50f650cc7d10db905d98f6520a95a18049658a"}, {file = "bandit-1.7.4.tar.gz", hash = "sha256:2d63a8c573417bae338962d4b9b06fbc6080f74ecd955a092849e1e65c717bd2"}, @@ -1971,102 +2003,21 @@ billiard = [ {file = "billiard-3.6.4.0-py3-none-any.whl", hash = "sha256:87103ea78fa6ab4d5c751c4909bcff74617d985de7fa8b672cf8618afd5a875b"}, {file = "billiard-3.6.4.0.tar.gz", hash = "sha256:299de5a8da28a783d51b197d496bef4f1595dd023a93a4f59dde1886ae905547"}, ] -black = [ - {file = "black-22.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2497f9c2386572e28921fa8bec7be3e51de6801f7459dffd6e62492531c47e09"}, - {file = "black-22.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5795a0375eb87bfe902e80e0c8cfaedf8af4d49694d69161e5bd3206c18618bb"}, - {file = "black-22.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e3556168e2e5c49629f7b0f377070240bd5511e45e25a4497bb0073d9dda776a"}, - {file = "black-22.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67c8301ec94e3bcc8906740fe071391bce40a862b7be0b86fb5382beefecd968"}, - {file = "black-22.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:fd57160949179ec517d32ac2ac898b5f20d68ed1a9c977346efbac9c2f1e779d"}, - {file = "black-22.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cc1e1de68c8e5444e8f94c3670bb48a2beef0e91dddfd4fcc29595ebd90bb9ce"}, - {file = "black-22.3.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2fc92002d44746d3e7db7cf9313cf4452f43e9ea77a2c939defce3b10b5c82"}, - {file = "black-22.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:a6342964b43a99dbc72f72812bf88cad8f0217ae9acb47c0d4f141a6416d2d7b"}, - {file = "black-22.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:328efc0cc70ccb23429d6be184a15ce613f676bdfc85e5fe8ea2a9354b4e9015"}, - {file = "black-22.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06f9d8846f2340dfac80ceb20200ea5d1b3f181dd0556b47af4e8e0b24fa0a6b"}, - {file = "black-22.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4efa5fad66b903b4a5f96d91461d90b9507a812b3c5de657d544215bb7877a"}, - {file = "black-22.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8477ec6bbfe0312c128e74644ac8a02ca06bcdb8982d4ee06f209be28cdf163"}, - {file = "black-22.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:637a4014c63fbf42a692d22b55d8ad6968a946b4a6ebc385c5505d9625b6a464"}, - {file = "black-22.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:863714200ada56cbc366dc9ae5291ceb936573155f8bf8e9de92aef51f3ad0f0"}, - {file = "black-22.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dbe6e6d2988049b4655b2b739f98785a884d4d6b85bc35133a8fb9a2233176"}, - {file = "black-22.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:cee3e11161dde1b2a33a904b850b0899e0424cc331b7295f2a9698e79f9a69a0"}, - {file = "black-22.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5891ef8abc06576985de8fa88e95ab70641de6c1fca97e2a15820a9b69e51b20"}, - {file = "black-22.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:30d78ba6bf080eeaf0b7b875d924b15cd46fec5fd044ddfbad38c8ea9171043a"}, - {file = "black-22.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ee8f1f7228cce7dffc2b464f07ce769f478968bfb3dd1254a4c2eeed84928aad"}, - {file = "black-22.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ee227b696ca60dd1c507be80a6bc849a5a6ab57ac7352aad1ffec9e8b805f21"}, - {file = "black-22.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:9b542ced1ec0ceeff5b37d69838106a6348e60db7b8fdd245294dc1d26136265"}, - {file = "black-22.3.0-py3-none-any.whl", hash = "sha256:bc58025940a896d7e5356952228b68f793cf5fcb342be703c3a2669a1488cb72"}, - {file = "black-22.3.0.tar.gz", hash = "sha256:35020b8886c022ced9282b51b5a875b6d1ab0c387b31a065b84db7c33085ca79"}, -] +black = [] cached-property = [ {file = "cached-property-1.5.2.tar.gz", hash = "sha256:9fa5755838eecbb2d234c3aa390bd80fbd3ac6b6869109bfc1b499f7bd89a130"}, {file = "cached_property-1.5.2-py2.py3-none-any.whl", hash = "sha256:df4f613cf7ad9a588cc381aaf4a512d26265ecebd5eb9e1ba12f1319eb85a6a0"}, ] celery = [ - {file = "celery-5.2.6-py3-none-any.whl", hash = "sha256:da31f8eae7607b1582e5ee2d3f2d6f58450585afd23379491e3d9229d08102d0"}, - {file = "celery-5.2.6.tar.gz", hash = "sha256:d1398cadf30f576266b34370e28e880306ec55f7a4b6307549b0ae9c15663481"}, -] -certifi = [ - {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, - {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, -] -cffi = [ - {file = "cffi-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c2502a1a03b6312837279c8c1bd3ebedf6c12c4228ddbad40912d671ccc8a962"}, - {file = "cffi-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:23cfe892bd5dd8941608f93348c0737e369e51c100d03718f108bf1add7bd6d0"}, - {file = "cffi-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:41d45de54cd277a7878919867c0f08b0cf817605e4eb94093e7516505d3c8d14"}, - {file = "cffi-1.15.0-cp27-cp27m-win32.whl", hash = "sha256:4a306fa632e8f0928956a41fa8e1d6243c71e7eb59ffbd165fc0b41e316b2474"}, - {file = "cffi-1.15.0-cp27-cp27m-win_amd64.whl", hash = "sha256:e7022a66d9b55e93e1a845d8c9eba2a1bebd4966cd8bfc25d9cd07d515b33fa6"}, - {file = "cffi-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:14cd121ea63ecdae71efa69c15c5543a4b5fbcd0bbe2aad864baca0063cecf27"}, - {file = "cffi-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d4d692a89c5cf08a8557fdeb329b82e7bf609aadfaed6c0d79f5a449a3c7c023"}, - {file = "cffi-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0104fb5ae2391d46a4cb082abdd5c69ea4eab79d8d44eaaf79f1b1fd806ee4c2"}, - {file = "cffi-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:91ec59c33514b7c7559a6acda53bbfe1b283949c34fe7440bcf917f96ac0723e"}, - {file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f5c7150ad32ba43a07c4479f40241756145a1f03b43480e058cfd862bf5041c7"}, - {file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:00c878c90cb53ccfaae6b8bc18ad05d2036553e6d9d1d9dbcf323bbe83854ca3"}, - {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abb9a20a72ac4e0fdb50dae135ba5e77880518e742077ced47eb1499e29a443c"}, - {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a5263e363c27b653a90078143adb3d076c1a748ec9ecc78ea2fb916f9b861962"}, - {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f54a64f8b0c8ff0b64d18aa76675262e1700f3995182267998c31ae974fbc382"}, - {file = "cffi-1.15.0-cp310-cp310-win32.whl", hash = "sha256:c21c9e3896c23007803a875460fb786118f0cdd4434359577ea25eb556e34c55"}, - {file = "cffi-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:5e069f72d497312b24fcc02073d70cb989045d1c91cbd53979366077959933e0"}, - {file = "cffi-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:64d4ec9f448dfe041705426000cc13e34e6e5bb13736e9fd62e34a0b0c41566e"}, - {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2756c88cbb94231c7a147402476be2c4df2f6078099a6f4a480d239a8817ae39"}, - {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b96a311ac60a3f6be21d2572e46ce67f09abcf4d09344c49274eb9e0bf345fc"}, - {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75e4024375654472cc27e91cbe9eaa08567f7fbdf822638be2814ce059f58032"}, - {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:59888172256cac5629e60e72e86598027aca6bf01fa2465bdb676d37636573e8"}, - {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:27c219baf94952ae9d50ec19651a687b826792055353d07648a5695413e0c605"}, - {file = "cffi-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:4958391dbd6249d7ad855b9ca88fae690783a6be9e86df65865058ed81fc860e"}, - {file = "cffi-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:f6f824dc3bce0edab5f427efcfb1d63ee75b6fcb7282900ccaf925be84efb0fc"}, - {file = "cffi-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:06c48159c1abed75c2e721b1715c379fa3200c7784271b3c46df01383b593636"}, - {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c2051981a968d7de9dd2d7b87bcb9c939c74a34626a6e2f8181455dd49ed69e4"}, - {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fd8a250edc26254fe5b33be00402e6d287f562b6a5b2152dec302fa15bb3e997"}, - {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91d77d2a782be4274da750752bb1650a97bfd8f291022b379bb8e01c66b4e96b"}, - {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:45db3a33139e9c8f7c09234b5784a5e33d31fd6907800b316decad50af323ff2"}, - {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:263cc3d821c4ab2213cbe8cd8b355a7f72a8324577dc865ef98487c1aeee2bc7"}, - {file = "cffi-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:17771976e82e9f94976180f76468546834d22a7cc404b17c22df2a2c81db0c66"}, - {file = "cffi-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:3415c89f9204ee60cd09b235810be700e993e343a408693e80ce7f6a40108029"}, - {file = "cffi-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4238e6dab5d6a8ba812de994bbb0a79bddbdf80994e4ce802b6f6f3142fcc880"}, - {file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0808014eb713677ec1292301ea4c81ad277b6cdf2fdd90fd540af98c0b101d20"}, - {file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:57e9ac9ccc3101fac9d6014fba037473e4358ef4e89f8e181f8951a2c0162024"}, - {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b6c2ea03845c9f501ed1313e78de148cd3f6cad741a75d43a29b43da27f2e1e"}, - {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:10dffb601ccfb65262a27233ac273d552ddc4d8ae1bf93b21c94b8511bffe728"}, - {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:786902fb9ba7433aae840e0ed609f45c7bcd4e225ebb9c753aa39725bb3e6ad6"}, - {file = "cffi-1.15.0-cp38-cp38-win32.whl", hash = "sha256:da5db4e883f1ce37f55c667e5c0de439df76ac4cb55964655906306918e7363c"}, - {file = "cffi-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:181dee03b1170ff1969489acf1c26533710231c58f95534e3edac87fff06c443"}, - {file = "cffi-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:45e8636704eacc432a206ac7345a5d3d2c62d95a507ec70d62f23cd91770482a"}, - {file = "cffi-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:31fb708d9d7c3f49a60f04cf5b119aeefe5644daba1cd2a0fe389b674fd1de37"}, - {file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6dc2737a3674b3e344847c8686cf29e500584ccad76204efea14f451d4cc669a"}, - {file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74fdfdbfdc48d3f47148976f49fab3251e550a8720bebc99bf1483f5bfb5db3e"}, - {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffaa5c925128e29efbde7301d8ecaf35c8c60ffbcd6a1ffd3a552177c8e5e796"}, - {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f7d084648d77af029acb79a0ff49a0ad7e9d09057a9bf46596dac9514dc07df"}, - {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef1f279350da2c586a69d32fc8733092fd32cc8ac95139a00377841f59a3f8d8"}, - {file = "cffi-1.15.0-cp39-cp39-win32.whl", hash = "sha256:2a23af14f408d53d5e6cd4e3d9a24ff9e05906ad574822a10563efcef137979a"}, - {file = "cffi-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:3773c4d81e6e818df2efbc7dd77325ca0dcb688116050fb2b3011218eda36139"}, - {file = "cffi-1.15.0.tar.gz", hash = "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954"}, -] -charset-normalizer = [ - {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"}, - {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, + {file = "celery-5.2.7-py3-none-any.whl", hash = "sha256:138420c020cd58d6707e6257b6beda91fd39af7afde5d36c6334d175302c0e14"}, + {file = "celery-5.2.7.tar.gz", hash = "sha256:fafbd82934d30f8a004f81e8f7a062e31413a23d444be8ee3326553915958c6d"}, ] +certifi = [] +cffi = [] +charset-normalizer = [] click = [ - {file = "click-8.1.2-py3-none-any.whl", hash = "sha256:24e1a4a9ec5bf6299411369b208c1df2188d9eb8d916302fe6bf03faed227f1e"}, - {file = "click-8.1.2.tar.gz", hash = "sha256:479707fe14d9ec9a0757618b7a100a0ae4c4e236fac5b7f80ca68028141a1a72"}, + {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, + {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, ] click-didyoumean = [ {file = "click-didyoumean-0.3.0.tar.gz", hash = "sha256:f184f0d851d96b6d29297354ed981b7dd71df7ff500d82fa6d11f0856bee8035"}, @@ -2080,10 +2031,7 @@ click-repl = [ {file = "click-repl-0.2.0.tar.gz", hash = "sha256:cd12f68d745bf6151210790540b4cb064c7b13e571bc64b6957d98d120dacfd8"}, {file = "click_repl-0.2.0-py3-none-any.whl", hash = "sha256:94b3fbbc9406a236f176e0506524b2937e4b23b6f4c0c0b2a0a83f8a64e9194b"}, ] -colorama = [ - {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, - {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, -] +colorama = [] coreapi = [ {file = "coreapi-2.3.3-py2.py3-none-any.whl", hash = "sha256:bf39d118d6d3e171f10df9ede5666f63ad80bba9a29a8ec17726a66cf52ee6f3"}, {file = "coreapi-2.3.3.tar.gz", hash = "sha256:46145fcc1f7017c076a2ef684969b641d18a2991051fddec9458ad3f78ffc1cb"}, @@ -2101,11 +2049,11 @@ deprecated = [ {file = "Deprecated-1.2.13-py2.py3-none-any.whl", hash = "sha256:64756e3e14c8c5eea9795d93c524551432a0be75629f8f29e67ab8caf076c76d"}, {file = "Deprecated-1.2.13.tar.gz", hash = "sha256:43ac5335da90c31c24ba028af536a91d41d53f9e6901ddb021bcc572ce44e38d"}, ] -dill = [] -django = [ - {file = "Django-3.2.13-py3-none-any.whl", hash = "sha256:b896ca61edc079eb6bbaa15cf6071eb69d6aac08cce5211583cfb41515644fdf"}, - {file = "Django-3.2.13.tar.gz", hash = "sha256:6d93497a0a9bf6ba0e0b1a29cccdc40efbfc76297255b1309b3a884a688ec4b6"}, +dill = [ + {file = "dill-0.3.5.1-py2.py3-none-any.whl", hash = "sha256:33501d03270bbe410c72639b350e941882a8b0fd55357580fbc873fba0c59302"}, + {file = "dill-0.3.5.1.tar.gz", hash = "sha256:d75e41f3eff1eee599d738e76ba8f4ad98ea229db8b085318aa2b3333a208c86"}, ] +django = [] django-ajax-tables = [ {file = "django_ajax_tables-1.1.1-py3-none-any.whl", hash = "sha256:62e0138949153c0a994eefbf469f5496b1ad98bc073e170bc021a1aada7a32d0"}, {file = "django_ajax_tables-1.1.1.tar.gz", hash = "sha256:5a7e7bc7940aa6332a564916cde22010a858a3d29fc1090ce8061010ec76337c"}, @@ -2126,10 +2074,7 @@ django-constance = [ {file = "django-constance-2.8.0.tar.gz", hash = "sha256:0a492454acc78799ce7b9f7a28a00c53427d513f34f8bf6fdc90a46d8864b2af"}, {file = "django_constance-2.8.0-py3-none-any.whl", hash = "sha256:60fec73e397d5f4f7440f611b18d3e7ce5342647f316fedc47b62e1411c849e7"}, ] -django-cors-headers = [ - {file = "django-cors-headers-3.10.1.tar.gz", hash = "sha256:b5a874b492bcad99f544bb76ef679472259eb41ee5644ca62d1a94ddb26b7f6e"}, - {file = "django_cors_headers-3.10.1-py3-none-any.whl", hash = "sha256:1390b5846e9835b0911e2574409788af87cd9154246aafbdc8ec546c93698fe6"}, -] +django-cors-headers = [] django-cryptography = [ {file = "django-cryptography-1.0.tar.gz", hash = "sha256:13de5cf8f1250744c104b9e24774d03aa6d8488959dd40cdc016934043652445"}, {file = "django_cryptography-1.0-py3-none-any.whl", hash = "sha256:0a99980b1cee7cc5e52f9b20b322620fea7cc124d770273e7bd285b20fd9d222"}, @@ -2137,10 +2082,7 @@ django-cryptography = [ django-db-file-storage = [ {file = "django-db-file-storage-0.5.5.tar.gz", hash = "sha256:5d5da694b78ab202accab4508b958e0e37b3d146310e76f6f6125e1bdeaaad14"}, ] -django-extensions = [ - {file = "django-extensions-3.1.5.tar.gz", hash = "sha256:28e1e1bf49f0e00307ba574d645b0af3564c981a6dfc87209d48cb98f77d0b1a"}, - {file = "django_extensions-3.1.5-py3-none-any.whl", hash = "sha256:9238b9e016bb0009d621e05cf56ea8ce5cce9b32e91ad2026996a7377ca28069"}, -] +django-extensions = [] django-filter = [ {file = "django-filter-21.1.tar.gz", hash = "sha256:632a251fa8f1aadb4b8cceff932bb52fe2f826dd7dfe7f3eac40e5c463d6836e"}, {file = "django_filter-21.1-py3-none-any.whl", hash = "sha256:f4a6737a30104c98d2e2a5fb93043f36dd7978e0c7ddc92f5998e85433ea5063"}, @@ -2149,7 +2091,10 @@ django-health-check = [ {file = "django-health-check-3.16.5.tar.gz", hash = "sha256:1edfd49293ccebbce29f9da609c407f307aee240ab799ab4201031341ae78c0f"}, {file = "django_health_check-3.16.5-py2.py3-none-any.whl", hash = "sha256:8d66781a0ea82b1a8b44878187b38a27370e94f18287312e39be0593e72d8983"}, ] -django-jinja = [] +django-jinja = [ + {file = "django-jinja-2.10.2.tar.gz", hash = "sha256:bfdfbb55c1f5a679d69ad575d550c4707d386634009152efe014089f3c4d1412"}, + {file = "django_jinja-2.10.2-py3-none-any.whl", hash = "sha256:dd003ec1c95c0989eb28a538831bced62b1b61da551cb44a5dfd708fcf75589f"}, +] django-js-asset = [ {file = "django_js_asset-2.0.0-py3-none-any.whl", hash = "sha256:86f9f300d682537ddaf0487dc2ab356581b8f50c069bdba91d334a46e449f923"}, {file = "django_js_asset-2.0.0.tar.gz", hash = "sha256:adc1ee1efa853fad42054b540c02205344bb406c9bddf87c9e5377a41b7db90f"}, @@ -2158,10 +2103,7 @@ django-mptt = [ {file = "django-mptt-0.13.4.tar.gz", hash = "sha256:80c9fb34df7796a4e5af0cb6b8ade3697555b1aa438bd07a01f32b3ab5202b63"}, {file = "django_mptt-0.13.4-py3-none-any.whl", hash = "sha256:75745b621ae31d97957ed924155a750dfa8cacd9543799ada2d713fd6bc3f5c7"}, ] -django-picklefield = [ - {file = "django-picklefield-3.0.1.tar.gz", hash = "sha256:15ccba592ca953b9edf9532e64640329cd47b136b7f8f10f2939caa5f9ce4287"}, - {file = "django_picklefield-3.0.1-py3-none-any.whl", hash = "sha256:3c702a54fde2d322fe5b2f39b8f78d9f655b8f77944ab26f703be6c0ed335a35"}, -] +django-picklefield = [] django-prometheus = [ {file = "django-prometheus-2.2.0.tar.gz", hash = "sha256:240378a1307c408bd5fc85614a3a57f1ce633d4a222c9e291e2bbf325173b801"}, {file = "django_prometheus-2.2.0-py2.py3-none-any.whl", hash = "sha256:e6616770d8820b8834762764bf1b76ec08e1b98e72a6f359d488a2e15fe3537c"}, @@ -2186,6 +2128,7 @@ django-timezone-field = [ {file = "django-timezone-field-4.1.2.tar.gz", hash = "sha256:cffac62452d060e365938aa9c9f7b72d70d8b26b9c60243bce227b35abd1b9df"}, {file = "django_timezone_field-4.1.2-py3-none-any.whl", hash = "sha256:897c06e40b619cf5731a30d6c156886a7c64cba3a90364832148da7ef32ccf36"}, ] +django-tree-queries = [] django-webserver = [ {file = "django-webserver-1.2.0.tar.gz", hash = "sha256:c976979d15b5ff9a212f7904d3b779e22219aebb4857860fcaf20e4e40f1da40"}, {file = "django_webserver-1.2.0-py2.py3-none-any.whl", hash = "sha256:09200631f266484b9e944e38e92681d6e9aa7d90d089a5c86d5fb08fddad84fe"}, @@ -2194,12 +2137,13 @@ djangorestframework = [ {file = "djangorestframework-3.13.1-py3-none-any.whl", hash = "sha256:24c4bf58ed7e85d1fe4ba250ab2da926d263cd57d64b03e8dcef0ac683f8b1aa"}, {file = "djangorestframework-3.13.1.tar.gz", hash = "sha256:0c33407ce23acc68eca2a6e46424b008c9c02eceb8cf18581921d0092bc1f2ee"}, ] +drf-spectacular = [ + {file = "drf-spectacular-0.22.1.tar.gz", hash = "sha256:866e16ddaae167a1234c76cd8c351161373551db994ce9665b347b32d5daf38b"}, + {file = "drf_spectacular-0.22.1-py3-none-any.whl", hash = "sha256:17ac5e31e5d6150dd5fa10843b429202f4f38069202acc44394cc5a771de63d9"}, +] drf-spectacular-sidecar = [] drf-yasg = [] -flake8 = [ - {file = "flake8-3.9.2-py2.py3-none-any.whl", hash = "sha256:bf8fd333346d844f616e8d47905ef3a3384edae6b4e9beb0c5101e25e3110907"}, - {file = "flake8-3.9.2.tar.gz", hash = "sha256:07528381786f2a6237b061f6e96610a4167b226cb926e2aa2b6b1d78057c576b"}, -] +flake8 = [] funcy = [ {file = "funcy-1.17-py2.py3-none-any.whl", hash = "sha256:ba7af5e58bfc69321aaf860a1547f18d35e145706b95d1b3c966abc4f0b60309"}, {file = "funcy-1.17.tar.gz", hash = "sha256:40b9b9a88141ae6a174df1a95861f2b82f2fdc17669080788b73a3ed9370e968"}, @@ -2243,19 +2187,16 @@ idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, ] -importlib-metadata = [ - {file = "importlib_metadata-4.4.0-py3-none-any.whl", hash = "sha256:960d52ba7c21377c990412aca380bf3642d734c2eaab78a2c39319f67c6a5786"}, - {file = "importlib_metadata-4.4.0.tar.gz", hash = "sha256:e592faad8de1bda9fe920cf41e15261e7131bcf266c30306eec00e8e225c1dd5"}, -] -importlib-resources = [ - {file = "importlib_resources-5.7.1-py3-none-any.whl", hash = "sha256:e447dc01619b1e951286f3929be820029d48c75eb25d265c28b92a16548212b8"}, - {file = "importlib_resources-5.7.1.tar.gz", hash = "sha256:b6062987dfc51f0fcb809187cffbd60f35df7acb4589091f154214af6d0d49d3"}, -] +importlib-metadata = [] +importlib-resources = [] inflection = [ {file = "inflection-0.5.1-py2.py3-none-any.whl", hash = "sha256:f38b2b640938a4f35ade69ac3d053042959b62a0f1076a5bbaa1b9526605a8a2"}, {file = "inflection-0.5.1.tar.gz", hash = "sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417"}, ] -invoke = [] +invoke = [ + {file = "invoke-1.7.1-py3-none-any.whl", hash = "sha256:2dc975b4f92be0c0a174ad2d063010c8a1fdb5e9389d69871001118b4fcac4fb"}, + {file = "invoke-1.7.1.tar.gz", hash = "sha256:7b6deaf585eee0a848205d0b8c0014b9bf6f287a8eb798818a642dff1df14b19"}, +] isort = [ {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, @@ -2268,10 +2209,7 @@ jinja2 = [ {file = "Jinja2-3.0.3-py3-none-any.whl", hash = "sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8"}, {file = "Jinja2-3.0.3.tar.gz", hash = "sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7"}, ] -jsonschema = [ - {file = "jsonschema-4.4.0-py3-none-any.whl", hash = "sha256:77281a1f71684953ee8b3d488371b162419767973789272434bbc3f29d9c8823"}, - {file = "jsonschema-4.4.0.tar.gz", hash = "sha256:636694eb41b3535ed608fe04129f26542b59ed99808b4f688aa32dcf55317a83"}, -] +jsonschema = [] kombu = [ {file = "kombu-5.2.4-py3-none-any.whl", hash = "sha256:8b213b24293d3417bcf0d2f5537b7f756079e3ea232a8386dcc89a59fd2361a4"}, {file = "kombu-5.2.4.tar.gz", hash = "sha256:37cee3ee725f94ea8bb173eaab7c1760203ea53bbebae226328600f9d2799610"}, @@ -2316,8 +2254,8 @@ lazy-object-proxy = [ {file = "lazy_object_proxy-1.7.1-pp37.pp38-none-any.whl", hash = "sha256:d66906d5785da8e0be7360912e99c9188b70f52c422f9fc18223347235691a84"}, ] markdown = [ - {file = "Markdown-3.3.6-py3-none-any.whl", hash = "sha256:9923332318f843411e9932237530df53162e29dc7a4e2b91e35764583c46c9a3"}, - {file = "Markdown-3.3.6.tar.gz", hash = "sha256:76df8ae32294ec39dcf89340382882dfa12975f87f45c3ed1ecdb1e8cefc7006"}, + {file = "Markdown-3.3.7-py3-none-any.whl", hash = "sha256:f5da449a6e1c989a4cea2631aa8ee67caa5a2ef855d551c88f9e309f4634c621"}, + {file = "Markdown-3.3.7.tar.gz", hash = "sha256:cbb516f16218e643d8e0a95b309f77eb118cb138d39a4f27851e6a63581db874"}, ] markupsafe = [ {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, @@ -2361,10 +2299,7 @@ markupsafe = [ {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, ] -mccabe = [ - {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, - {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, -] +mccabe = [] mergedeep = [ {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, @@ -2379,18 +2314,15 @@ mypy-extensions = [ {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, ] -nautobot = [ - {file = "nautobot-1.3.1-py3-none-any.whl", hash = "sha256:40f3d7a1eb31221f6d15802d0cb845bc00ea8bb4050a54c54cd17b62ab006b44"}, - {file = "nautobot-1.3.1.tar.gz", hash = "sha256:2144b091b124df64fb27b2ba86143aba2123ee6c028df98daf06a3e1bb27f0e4"}, -] +nautobot = [] nautobot-capacity-metrics = [] netaddr = [ {file = "netaddr-0.8.0-py2.py3-none-any.whl", hash = "sha256:9666d0232c32d2656e5e5f8d735f58fd6c7457ce52fc21c98d45f2af78f990ac"}, {file = "netaddr-0.8.0.tar.gz", hash = "sha256:d6cc57c7a07b1d9d2e917aa8b36ae8ce61c35ba3fcd1b83ca31c5a0ee2b5a243"}, ] netutils = [ - {file = "netutils-1.0.0-py3-none-any.whl", hash = "sha256:f6e695dc761f41c68d3b2b9763f6ac3bc636d8b3c70c9886dae2655b2eab5c2b"}, - {file = "netutils-1.0.0.tar.gz", hash = "sha256:ead1d927374a76a9ff78867b5f72b66cd26eaa9ec9e8d00e12e8085694a0275a"}, + {file = "netutils-1.1.0-py3-none-any.whl", hash = "sha256:bcb4367689c773cd30bf898b15bed38f22dc8bd69e64f2272bb9dd4726bf41d4"}, + {file = "netutils-1.1.0.tar.gz", hash = "sha256:90ab637c60ae18c515191224c52a7b0a1eb6fdde2f8dd40dfac638f2dd06ef2c"}, ] oauthlib = [ {file = "oauthlib-3.2.0-py3-none-any.whl", hash = "sha256:6db33440354787f9b7f3a6dbd4febf5d0f93758354060e802f6c06cb493022fe"}, @@ -2400,48 +2332,10 @@ packaging = [ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, ] -pathspec = [ - {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, - {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, -] +pathspec = [] pbr = [] -pillow = [ - {file = "Pillow-9.0.1-1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a5d24e1d674dd9d72c66ad3ea9131322819ff86250b30dc5821cbafcfa0b96b4"}, - {file = "Pillow-9.0.1-1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2632d0f846b7c7600edf53c48f8f9f1e13e62f66a6dbc15191029d950bfed976"}, - {file = "Pillow-9.0.1-1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b9618823bd237c0d2575283f2939655f54d51b4527ec3972907a927acbcc5bfc"}, - {file = "Pillow-9.0.1-cp310-cp310-macosx_10_10_universal2.whl", hash = "sha256:9bfdb82cdfeccec50aad441afc332faf8606dfa5e8efd18a6692b5d6e79f00fd"}, - {file = "Pillow-9.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5100b45a4638e3c00e4d2320d3193bdabb2d75e79793af7c3eb139e4f569f16f"}, - {file = "Pillow-9.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:528a2a692c65dd5cafc130de286030af251d2ee0483a5bf50c9348aefe834e8a"}, - {file = "Pillow-9.0.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f29d831e2151e0b7b39981756d201f7108d3d215896212ffe2e992d06bfe049"}, - {file = "Pillow-9.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:855c583f268edde09474b081e3ddcd5cf3b20c12f26e0d434e1386cc5d318e7a"}, - {file = "Pillow-9.0.1-cp310-cp310-win32.whl", hash = "sha256:d9d7942b624b04b895cb95af03a23407f17646815495ce4547f0e60e0b06f58e"}, - {file = "Pillow-9.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:81c4b81611e3a3cb30e59b0cf05b888c675f97e3adb2c8672c3154047980726b"}, - {file = "Pillow-9.0.1-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:413ce0bbf9fc6278b2d63309dfeefe452835e1c78398efb431bab0672fe9274e"}, - {file = "Pillow-9.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80fe64a6deb6fcfdf7b8386f2cf216d329be6f2781f7d90304351811fb591360"}, - {file = "Pillow-9.0.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cef9c85ccbe9bee00909758936ea841ef12035296c748aaceee535969e27d31b"}, - {file = "Pillow-9.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d19397351f73a88904ad1aee421e800fe4bbcd1aeee6435fb62d0a05ccd1030"}, - {file = "Pillow-9.0.1-cp37-cp37m-win32.whl", hash = "sha256:d21237d0cd37acded35154e29aec853e945950321dd2ffd1a7d86fe686814669"}, - {file = "Pillow-9.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:ede5af4a2702444a832a800b8eb7f0a7a1c0eed55b644642e049c98d589e5092"}, - {file = "Pillow-9.0.1-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:b5b3f092fe345c03bca1e0b687dfbb39364b21ebb8ba90e3fa707374b7915204"}, - {file = "Pillow-9.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:335ace1a22325395c4ea88e00ba3dc89ca029bd66bd5a3c382d53e44f0ccd77e"}, - {file = "Pillow-9.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:db6d9fac65bd08cea7f3540b899977c6dee9edad959fa4eaf305940d9cbd861c"}, - {file = "Pillow-9.0.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f154d173286a5d1863637a7dcd8c3437bb557520b01bddb0be0258dcb72696b5"}, - {file = "Pillow-9.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14d4b1341ac07ae07eb2cc682f459bec932a380c3b122f5540432d8977e64eae"}, - {file = "Pillow-9.0.1-cp38-cp38-win32.whl", hash = "sha256:effb7749713d5317478bb3acb3f81d9d7c7f86726d41c1facca068a04cf5bb4c"}, - {file = "Pillow-9.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:7f7609a718b177bf171ac93cea9fd2ddc0e03e84d8fa4e887bdfc39671d46b00"}, - {file = "Pillow-9.0.1-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:80ca33961ced9c63358056bd08403ff866512038883e74f3a4bf88ad3eb66838"}, - {file = "Pillow-9.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1c3c33ac69cf059bbb9d1a71eeaba76781b450bc307e2291f8a4764d779a6b28"}, - {file = "Pillow-9.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12875d118f21cf35604176872447cdb57b07126750a33748bac15e77f90f1f9c"}, - {file = "Pillow-9.0.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:514ceac913076feefbeaf89771fd6febde78b0c4c1b23aaeab082c41c694e81b"}, - {file = "Pillow-9.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3c5c79ab7dfce6d88f1ba639b77e77a17ea33a01b07b99840d6ed08031cb2a7"}, - {file = "Pillow-9.0.1-cp39-cp39-win32.whl", hash = "sha256:718856856ba31f14f13ba885ff13874be7fefc53984d2832458f12c38205f7f7"}, - {file = "Pillow-9.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:f25ed6e28ddf50de7e7ea99d7a976d6a9c415f03adcaac9c41ff6ff41b6d86ac"}, - {file = "Pillow-9.0.1-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:011233e0c42a4a7836498e98c1acf5e744c96a67dd5032a6f666cc1fb97eab97"}, - {file = "Pillow-9.0.1-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253e8a302a96df6927310a9d44e6103055e8fb96a6822f8b7f514bb7ef77de56"}, - {file = "Pillow-9.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6295f6763749b89c994fcb6d8a7f7ce03c3992e695f89f00b741b4580b199b7e"}, - {file = "Pillow-9.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:a9f44cd7e162ac6191491d7249cceb02b8116b0f7e847ee33f739d7cb1ea1f70"}, - {file = "Pillow-9.0.1.tar.gz", hash = "sha256:6c8bc8238a7dfdaf7a75f5ec5a663f4173f8c367e5a39f87e720495e1eed75fa"}, -] +pep8 = [] +pillow = [] platformdirs = [ {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, @@ -2453,10 +2347,7 @@ prometheus-client = [ promise = [ {file = "promise-2.3.tar.gz", hash = "sha256:dfd18337c523ba4b6a58801c164c1904a9d4d1b1747c7d5dbf45b693a49d93d0"}, ] -prompt-toolkit = [ - {file = "prompt_toolkit-3.0.29-py3-none-any.whl", hash = "sha256:62291dad495e665fca0bda814e342c69952086afb0f4094d0893d357e5c78752"}, - {file = "prompt_toolkit-3.0.29.tar.gz", hash = "sha256:bd640f60e8cecd74f0dc249713d433ace2ddc62b65ee07f96d358e0b152b6ea7"}, -] +prompt-toolkit = [] prybar = [ {file = "prybar-1.0.0-py2.py3-none-any.whl", hash = "sha256:07d5b12fb12da703fb266d67d3a117e1c20a30cd9daa274586cc4af8081baea7"}, {file = "prybar-1.0.0.tar.gz", hash = "sha256:9f2af7b4fdce2d0febf6fb73a0854956a384fad65df19c3f57caab7c4726a88a"}, @@ -2519,10 +2410,6 @@ psycopg2-binary = [ {file = "psycopg2_binary-2.9.3-cp39-cp39-win32.whl", hash = "sha256:46f0e0a6b5fa5851bbd9ab1bc805eef362d3a230fbdfbc209f4a236d0a7a990d"}, {file = "psycopg2_binary-2.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:accfe7e982411da3178ec690baaceaad3c278652998b2c45828aaac66cd8285f"}, ] -pycodestyle = [ - {file = "pycodestyle-2.7.0-py2.py3-none-any.whl", hash = "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068"}, - {file = "pycodestyle-2.7.0.tar.gz", hash = "sha256:c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef"}, -] pycparser = [ {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, @@ -2563,18 +2450,15 @@ pydocstyle = [ {file = "pydocstyle-6.1.1-py3-none-any.whl", hash = "sha256:6987826d6775056839940041beef5c08cc7e3d71d63149b48e36727f70144dc4"}, {file = "pydocstyle-6.1.1.tar.gz", hash = "sha256:1d41b7c459ba0ee6c345f2eb9ae827cab14a7533a88c5c6f7e94923f72df92dc"}, ] -pyflakes = [ - {file = "pyflakes-2.3.1-py2.py3-none-any.whl", hash = "sha256:7893783d01b8a89811dd72d7dfd4d84ff098e5eed95cfa8905b22bbffe52efc3"}, - {file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"}, -] +pyflakes = [] pygments = [] pyjwt = [ {file = "PyJWT-2.4.0-py3-none-any.whl", hash = "sha256:72d1d253f32dbd4f5c88eaf1fdc62f3a19f676ccbadb9dbc5d07e951b2b26daf"}, {file = "PyJWT-2.4.0.tar.gz", hash = "sha256:d42908208c699b3b973cbeb01a969ba6a96c821eefb1c5bfe4c390c01d67abba"}, ] pylint = [ - {file = "pylint-2.13.7-py3-none-any.whl", hash = "sha256:13ddbbd8872c804574149e81197c28877eba75224ba6b76cd8652fc31df55c1c"}, - {file = "pylint-2.13.7.tar.gz", hash = "sha256:911d3a97c808f7554643bcc5416028cfdc42eae34ed129b150741888c688d5d5"}, + {file = "pylint-2.13.9-py3-none-any.whl", hash = "sha256:705c620d388035bdd9ff8b44c5bcdd235bfb49d276d488dd2c8ff1736aa42526"}, + {file = "pylint-2.13.9.tar.gz", hash = "sha256:095567c96e19e6f57b5b907e67d265ff535e588fe26b12b5ebe1fc5645b2c731"}, ] pylint-django = [ {file = "pylint-django-2.5.3.tar.gz", hash = "sha256:0ac090d106c62fe33782a1d01bda1610b761bb1c9bf5035ced9d5f23a13d8591"}, @@ -2586,8 +2470,8 @@ pylint-plugin-utils = [ ] pymdown-extensions = [] pyparsing = [ - {file = "pyparsing-3.0.8-py3-none-any.whl", hash = "sha256:ef7b523f6356f763771559412c0d7134753f037822dad1b16945b7b846f7ad06"}, - {file = "pyparsing-3.0.8.tar.gz", hash = "sha256:7bf433498c016c4314268d95df76c81b842a4cb2b276fa3312cfb1e1d85f6954"}, + {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, + {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, ] pyrsistent = [ {file = "pyrsistent-0.18.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:df46c854f490f81210870e509818b729db4488e1f30f2a1ce1698b2295a878d1"}, @@ -2623,10 +2507,7 @@ python3-openid = [ {file = "python3-openid-3.2.0.tar.gz", hash = "sha256:33fbf6928f401e0b790151ed2b5290b02545e8775f982485205a066f874aaeaf"}, {file = "python3_openid-3.2.0-py3-none-any.whl", hash = "sha256:6626f771e0417486701e0b4daff762e7212e820ca5b29fcc0d05f6f8736dfa6b"}, ] -pytz = [ - {file = "pytz-2022.1-py2.py3-none-any.whl", hash = "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"}, - {file = "pytz-2022.1.tar.gz", hash = "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7"}, -] +pytz = [] pyuwsgi = [ {file = "pyuwsgi-2.0.20-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bd09a7328558728f6e38f77609f44d16f18d8b4dc5f8b8776f657c8892b70337"}, {file = "pyuwsgi-2.0.20-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:210ad768b8af02bbfd3c0345a51c6d2c56a2333ac268d9a97ecf2d4209f78ef8"}, @@ -2695,10 +2576,7 @@ pyyaml-env-tag = [ {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"}, ] redis = [] -requests = [ - {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, - {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, -] +requests = [] requests-oauthlib = [ {file = "requests-oauthlib-1.3.1.tar.gz", hash = "sha256:75beac4a47881eeb94d5ea5d6ad31ef88856affe2332b9aafb52c6452ccf0d7a"}, {file = "requests_oauthlib-1.3.1-py2.py3-none-any.whl", hash = "sha256:2577c501a2fb8d05a304c09d090d6e47c306fef15809d102b327cf8364bddab5"}, @@ -2707,10 +2585,7 @@ requests-toolbelt = [ {file = "requests-toolbelt-0.9.1.tar.gz", hash = "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0"}, {file = "requests_toolbelt-0.9.1-py2.py3-none-any.whl", hash = "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f"}, ] -rq = [ - {file = "rq-1.10.1-py2.py3-none-any.whl", hash = "sha256:92f4cf38b2364c1697b541e77c0fe62b7e5242fa864324f262be126ee2a07e3a"}, - {file = "rq-1.10.1.tar.gz", hash = "sha256:62d06b44c3acfa5d1933c5a4ec3fbc2484144a8af60e318d0b8447c5236271e2"}, -] +rq = [] "ruamel.yaml" = [ {file = "ruamel.yaml-0.17.21-py3-none-any.whl", hash = "sha256:742b35d3d665023981bd6d16b3d24248ce5df75fdb4e2924e93a05c1f8b61ca7"}, {file = "ruamel.yaml-0.17.21.tar.gz", hash = "sha256:8b7ce697a2f212752a35c1ac414471dc16c424c9573be4926b56ff3f5d23b7af"}, @@ -2763,10 +2638,7 @@ social-auth-app-django = [ {file = "social-auth-app-django-5.0.0.tar.gz", hash = "sha256:b6e3132ce087cdd6e1707aeb1b588be41d318408fcf6395435da0bc6fe9a9795"}, {file = "social_auth_app_django-5.0.0-py3-none-any.whl", hash = "sha256:52241a25445a010ab1c108bafff21fc5522d5c8cd0d48a92c39c7371824b065d"}, ] -social-auth-core = [ - {file = "social-auth-core-4.2.0.tar.gz", hash = "sha256:af6fc7d9ee39f0aa697cd953121add638fc32a49816341a9838a67904c39e034"}, - {file = "social_auth_core-4.2.0-py3-none-any.whl", hash = "sha256:08fe6645b98950cff9d6970b6704345f821d78729df0164bca0002c624b001e1"}, -] +social-auth-core = [] sqlparse = [ {file = "sqlparse-0.4.2-py3-none-any.whl", hash = "sha256:48719e356bb8b42991bdbb1e8b83223757b93789c00910a616a071910ca4a64d"}, {file = "sqlparse-0.4.2.tar.gz", hash = "sha256:0c00730c74263a94e5a9919ade150dfc3b19c574389985446148402998287dae"}, @@ -2775,14 +2647,8 @@ stevedore = [ {file = "stevedore-3.5.0-py3-none-any.whl", hash = "sha256:a547de73308fd7e90075bb4d301405bebf705292fa90a90fc3bcf9133f58616c"}, {file = "stevedore-3.5.0.tar.gz", hash = "sha256:f40253887d8712eaa2bb0ea3830374416736dc8ec0e22f5a65092c1174c44335"}, ] -svgwrite = [ - {file = "svgwrite-1.4.2-py3-none-any.whl", hash = "sha256:ca63d76396d1f6f099a2b2d8cf1419e1c1de8deece9a2b7f4da0632067d71d43"}, - {file = "svgwrite-1.4.2.zip", hash = "sha256:d304a929f197d31647c287c10eee0f64378058e1c83a9df83433a5980864e59f"}, -] -swagger-spec-validator = [ - {file = "swagger-spec-validator-2.7.4.tar.gz", hash = "sha256:2aee5e1fc0503be9f8299378b10c92169572781573c6de3315e831fd0559ba73"}, - {file = "swagger_spec_validator-2.7.4-py2.py3-none-any.whl", hash = "sha256:4e373a4db5262e7257fde17d84c5c0178327b8057985ab1be63f580bfa009855"}, -] +svgwrite = [] +swagger-spec-validator = [] text-unidecode = [ {file = "text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93"}, {file = "text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8"}, @@ -2796,43 +2662,37 @@ tomli = [ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] typed-ast = [ - {file = "typed_ast-1.5.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ad3b48cf2b487be140072fb86feff36801487d4abb7382bb1929aaac80638ea"}, - {file = "typed_ast-1.5.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:542cd732351ba8235f20faa0fc7398946fe1a57f2cdb289e5497e1e7f48cfedb"}, - {file = "typed_ast-1.5.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc2c11ae59003d4a26dda637222d9ae924387f96acae9492df663843aefad55"}, - {file = "typed_ast-1.5.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fd5df1313915dbd70eaaa88c19030b441742e8b05e6103c631c83b75e0435ccc"}, - {file = "typed_ast-1.5.3-cp310-cp310-win_amd64.whl", hash = "sha256:e34f9b9e61333ecb0f7d79c21c28aa5cd63bec15cb7e1310d7d3da6ce886bc9b"}, - {file = "typed_ast-1.5.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f818c5b81966d4728fec14caa338e30a70dfc3da577984d38f97816c4b3071ec"}, - {file = "typed_ast-1.5.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3042bfc9ca118712c9809201f55355479cfcdc17449f9f8db5e744e9625c6805"}, - {file = "typed_ast-1.5.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4fff9fdcce59dc61ec1b317bdb319f8f4e6b69ebbe61193ae0a60c5f9333dc49"}, - {file = "typed_ast-1.5.3-cp36-cp36m-win_amd64.whl", hash = "sha256:8e0b8528838ffd426fea8d18bde4c73bcb4167218998cc8b9ee0a0f2bfe678a6"}, - {file = "typed_ast-1.5.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8ef1d96ad05a291f5c36895d86d1375c0ee70595b90f6bb5f5fdbee749b146db"}, - {file = "typed_ast-1.5.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed44e81517364cb5ba367e4f68fca01fba42a7a4690d40c07886586ac267d9b9"}, - {file = "typed_ast-1.5.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f60d9de0d087454c91b3999a296d0c4558c1666771e3460621875021bf899af9"}, - {file = "typed_ast-1.5.3-cp37-cp37m-win_amd64.whl", hash = "sha256:9e237e74fd321a55c90eee9bc5d44be976979ad38a29bbd734148295c1ce7617"}, - {file = "typed_ast-1.5.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ee852185964744987609b40aee1d2eb81502ae63ee8eef614558f96a56c1902d"}, - {file = "typed_ast-1.5.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:27e46cdd01d6c3a0dd8f728b6a938a6751f7bd324817501c15fb056307f918c6"}, - {file = "typed_ast-1.5.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d64dabc6336ddc10373922a146fa2256043b3b43e61f28961caec2a5207c56d5"}, - {file = "typed_ast-1.5.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8cdf91b0c466a6c43f36c1964772918a2c04cfa83df8001ff32a89e357f8eb06"}, - {file = "typed_ast-1.5.3-cp38-cp38-win_amd64.whl", hash = "sha256:9cc9e1457e1feb06b075c8ef8aeb046a28ec351b1958b42c7c31c989c841403a"}, - {file = "typed_ast-1.5.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e20d196815eeffb3d76b75223e8ffed124e65ee62097e4e73afb5fec6b993e7a"}, - {file = "typed_ast-1.5.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:37e5349d1d5de2f4763d534ccb26809d1c24b180a477659a12c4bde9dd677d74"}, - {file = "typed_ast-1.5.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9f1a27592fac87daa4e3f16538713d705599b0a27dfe25518b80b6b017f0a6d"}, - {file = "typed_ast-1.5.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8831479695eadc8b5ffed06fdfb3e424adc37962a75925668deeb503f446c0a3"}, - {file = "typed_ast-1.5.3-cp39-cp39-win_amd64.whl", hash = "sha256:20d5118e494478ef2d3a2702d964dae830aedd7b4d3b626d003eea526be18718"}, - {file = "typed_ast-1.5.3.tar.gz", hash = "sha256:27f25232e2dd0edfe1f019d6bfaaf11e86e657d9bdb7b0956db95f560cceb2b3"}, -] -typing-extensions = [ - {file = "typing_extensions-4.2.0-py3-none-any.whl", hash = "sha256:6657594ee297170d19f67d55c05852a874e7eb634f4f753dbd667855e07c1708"}, - {file = "typing_extensions-4.2.0.tar.gz", hash = "sha256:f1c24655a0da0d1b67f07e17a5e6b2a105894e6824b92096378bb3668ef02376"}, -] + {file = "typed_ast-1.5.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:669dd0c4167f6f2cd9f57041e03c3c2ebf9063d0757dc89f79ba1daa2bfca9d4"}, + {file = "typed_ast-1.5.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:211260621ab1cd7324e0798d6be953d00b74e0428382991adfddb352252f1d62"}, + {file = "typed_ast-1.5.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:267e3f78697a6c00c689c03db4876dd1efdfea2f251a5ad6555e82a26847b4ac"}, + {file = "typed_ast-1.5.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c542eeda69212fa10a7ada75e668876fdec5f856cd3d06829e6aa64ad17c8dfe"}, + {file = "typed_ast-1.5.4-cp310-cp310-win_amd64.whl", hash = "sha256:a9916d2bb8865f973824fb47436fa45e1ebf2efd920f2b9f99342cb7fab93f72"}, + {file = "typed_ast-1.5.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:79b1e0869db7c830ba6a981d58711c88b6677506e648496b1f64ac7d15633aec"}, + {file = "typed_ast-1.5.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a94d55d142c9265f4ea46fab70977a1944ecae359ae867397757d836ea5a3f47"}, + {file = "typed_ast-1.5.4-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:183afdf0ec5b1b211724dfef3d2cad2d767cbefac291f24d69b00546c1837fb6"}, + {file = "typed_ast-1.5.4-cp36-cp36m-win_amd64.whl", hash = "sha256:639c5f0b21776605dd6c9dbe592d5228f021404dafd377e2b7ac046b0349b1a1"}, + {file = "typed_ast-1.5.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:cf4afcfac006ece570e32d6fa90ab74a17245b83dfd6655a6f68568098345ff6"}, + {file = "typed_ast-1.5.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed855bbe3eb3715fca349c80174cfcfd699c2f9de574d40527b8429acae23a66"}, + {file = "typed_ast-1.5.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6778e1b2f81dfc7bc58e4b259363b83d2e509a65198e85d5700dfae4c6c8ff1c"}, + {file = "typed_ast-1.5.4-cp37-cp37m-win_amd64.whl", hash = "sha256:0261195c2062caf107831e92a76764c81227dae162c4f75192c0d489faf751a2"}, + {file = "typed_ast-1.5.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2efae9db7a8c05ad5547d522e7dbe62c83d838d3906a3716d1478b6c1d61388d"}, + {file = "typed_ast-1.5.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7d5d014b7daa8b0bf2eaef684295acae12b036d79f54178b92a2b6a56f92278f"}, + {file = "typed_ast-1.5.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:370788a63915e82fd6f212865a596a0fefcbb7d408bbbb13dea723d971ed8bdc"}, + {file = "typed_ast-1.5.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4e964b4ff86550a7a7d56345c7864b18f403f5bd7380edf44a3c1fb4ee7ac6c6"}, + {file = "typed_ast-1.5.4-cp38-cp38-win_amd64.whl", hash = "sha256:683407d92dc953c8a7347119596f0b0e6c55eb98ebebd9b23437501b28dcbb8e"}, + {file = "typed_ast-1.5.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4879da6c9b73443f97e731b617184a596ac1235fe91f98d279a7af36c796da35"}, + {file = "typed_ast-1.5.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3e123d878ba170397916557d31c8f589951e353cc95fb7f24f6bb69adc1a8a97"}, + {file = "typed_ast-1.5.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebd9d7f80ccf7a82ac5f88c521115cc55d84e35bf8b446fcd7836eb6b98929a3"}, + {file = "typed_ast-1.5.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98f80dee3c03455e92796b58b98ff6ca0b2a6f652120c263efdba4d6c5e58f72"}, + {file = "typed_ast-1.5.4-cp39-cp39-win_amd64.whl", hash = "sha256:0fdbcf2fef0ca421a3f5912555804296f0b0960f0418c440f5d6d3abb549f3e1"}, + {file = "typed_ast-1.5.4.tar.gz", hash = "sha256:39e21ceb7388e4bb37f4c679d72707ed46c2fbf2a5609b8b8ebc4b067d977df2"}, +] +typing-extensions = [] uritemplate = [ {file = "uritemplate-4.1.1-py2.py3-none-any.whl", hash = "sha256:830c08b8d99bdd312ea4ead05994a38e8936266f84b9a7878232db50b044e02e"}, {file = "uritemplate-4.1.1.tar.gz", hash = "sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0"}, ] -urllib3 = [ - {file = "urllib3-1.26.9-py2.py3-none-any.whl", hash = "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"}, - {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, -] +urllib3 = [] vine = [ {file = "vine-5.0.0-py2.py3-none-any.whl", hash = "sha256:4c9dceab6f76ed92105027c49c823800dd33cacce13bdedc5b914e3514b7fb30"}, {file = "vine-5.0.0.tar.gz", hash = "sha256:7d3b1624a953da82ef63462013bbd271d3eb75751489f9807598e8f340bd637e"}, @@ -2842,15 +2702,72 @@ wcwidth = [ {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, ] -webexteamssdk = [ - {file = "webexteamssdk-1.6-py3-none-any.whl", hash = "sha256:e4958dca3903c659fe1e0f79e38740cb2ec1ae2589599807b179c3efb356c3a2"}, - {file = "webexteamssdk-1.6.tar.gz", hash = "sha256:980f268d89187d1a157dfbadcb626fce849080a31550e549cfe838f0203b3a3d"}, -] -wrapt = [] -yamllint = [ - {file = "yamllint-1.26.3.tar.gz", hash = "sha256:3934dcde484374596d6b52d8db412929a169f6d9e52e20f9ade5bf3523d9b96e"}, -] -zipp = [ - {file = "zipp-3.8.0-py3-none-any.whl", hash = "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099"}, - {file = "zipp-3.8.0.tar.gz", hash = "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad"}, -] +webexteamssdk = [] +wrapt = [ + {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"}, + {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"}, + {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d"}, + {file = "wrapt-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7"}, + {file = "wrapt-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00"}, + {file = "wrapt-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569"}, + {file = "wrapt-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed"}, + {file = "wrapt-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471"}, + {file = "wrapt-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a"}, + {file = "wrapt-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853"}, + {file = "wrapt-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c"}, + {file = "wrapt-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456"}, + {file = "wrapt-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57"}, + {file = "wrapt-1.14.1-cp38-cp38-win32.whl", hash = "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5"}, + {file = "wrapt-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"}, + {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"}, + {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, + {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, +] +yamllint = [] +zipp = [] From c4987974453e17d45ae5c82e81b956ef86a76844 Mon Sep 17 00:00:00 2001 From: Stephen Kiely Date: Sat, 3 Sep 2022 17:16:59 -0500 Subject: [PATCH 06/14] Revert "Update poetry.lock" This reverts commit 013c3d6796aa29f3d36c7432cd86a2d162f627af. --- poetry.lock | 701 +++++++++++++++++++++++++++++----------------------- 1 file changed, 392 insertions(+), 309 deletions(-) diff --git a/poetry.lock b/poetry.lock index 3db0f821..f5c53f0c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -19,7 +19,7 @@ python-versions = "*" [[package]] name = "asgiref" -version = "3.5.2" +version = "3.5.0" description = "ASGI specs, helper code, and adapters" category = "main" optional = false @@ -33,7 +33,7 @@ tests = ["pytest", "pytest-asyncio", "mypy (>=0.800)"] [[package]] name = "astroid" -version = "2.11.7" +version = "2.11.3" description = "An abstract syntax tree for Python with inference support." category = "dev" optional = false @@ -58,17 +58,17 @@ typing-extensions = {version = ">=3.6.5", markers = "python_version < \"3.8\""} [[package]] name = "attrs" -version = "22.1.0" +version = "21.4.0" description = "Classes Without Boilerplate" category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [package.extras] -dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] -tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] -tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "cloudpickle"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] [[package]] name = "bandit" @@ -99,7 +99,7 @@ python-versions = "*" [[package]] name = "black" -version = "22.8.0" +version = "22.3.0" description = "The uncompromising code formatter." category = "dev" optional = false @@ -110,7 +110,7 @@ click = ">=8.0.0" mypy-extensions = ">=0.4.3" pathspec = ">=0.9.0" platformdirs = ">=2" -tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} typed-ast = {version = ">=1.4.2", markers = "python_version < \"3.8\" and implementation_name == \"cpython\""} typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} @@ -130,11 +130,11 @@ python-versions = "*" [[package]] name = "celery" -version = "5.2.7" +version = "5.2.6" description = "Distributed Task Queue." category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.7," [package.dependencies] billiard = ">=3.6.4.0,<4.0" @@ -182,15 +182,15 @@ zstd = ["zstandard"] [[package]] name = "certifi" -version = "2022.6.15" +version = "2021.10.8" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false -python-versions = ">=3.6" +python-versions = "*" [[package]] name = "cffi" -version = "1.15.1" +version = "1.15.0" description = "Foreign Function Interface for Python calling C code." category = "main" optional = false @@ -201,18 +201,18 @@ pycparser = "*" [[package]] name = "charset-normalizer" -version = "2.1.1" +version = "2.0.12" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "main" optional = false -python-versions = ">=3.6.0" +python-versions = ">=3.5.0" [package.extras] unicode_backport = ["unicodedata2"] [[package]] name = "click" -version = "8.1.3" +version = "8.1.2" description = "Composable command line interface toolkit" category = "main" optional = false @@ -262,7 +262,7 @@ six = "*" [[package]] name = "colorama" -version = "0.4.5" +version = "0.4.4" description = "Cross-platform colored terminal text." category = "main" optional = false @@ -295,7 +295,7 @@ jinja2 = "*" [[package]] name = "cryptography" -version = "37.0.4" +version = "36.0.2" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." category = "main" optional = false @@ -310,7 +310,7 @@ docstest = ["pyenchant (>=1.6.11)", "twine (>=1.12.0)", "sphinxcontrib-spelling pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"] sdist = ["setuptools_rust (>=0.11.4)"] ssh = ["bcrypt (>=3.1.5)"] -test = ["pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-subtests", "pytest-xdist", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,!=3.79.2)"] +test = ["pytest (>=6.2.0)", "pytest-cov", "pytest-subtests", "pytest-xdist", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,!=3.79.2)"] [[package]] name = "defusedxml" @@ -336,18 +336,18 @@ dev = ["tox", "bump2version (<1)", "sphinx (<2)", "importlib-metadata (<3)", "im [[package]] name = "dill" -version = "0.3.5.1" +version = "0.3.4" description = "serialize all of python" category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" +python-versions = ">=2.7, !=3.0.*" [package.extras] graph = ["objgraph (>=1.7.2)"] [[package]] name = "django" -version = "3.2.15" +version = "3.2.13" description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design." category = "main" optional = false @@ -426,14 +426,14 @@ redis = ["redis"] [[package]] name = "django-cors-headers" -version = "3.13.0" +version = "3.10.1" description = "django-cors-headers is a Django application for handling the server headers required for Cross-Origin Resource Sharing (CORS)." category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.6" [package.dependencies] -Django = ">=3.2" +Django = ">=2.2" [[package]] name = "django-cryptography" @@ -460,14 +460,14 @@ Django = "*" [[package]] name = "django-extensions" -version = "3.2.0" +version = "3.1.5" description = "Extensions for Django" category = "main" optional = false python-versions = ">=3.6" [package.dependencies] -Django = ">=3.2" +Django = ">=2.2" [[package]] name = "django-filter" @@ -493,7 +493,7 @@ django = ">=2.2" [[package]] name = "django-jinja" -version = "2.10.2" +version = "2.10.0" description = "Jinja2 templating language integrated in Django." category = "main" optional = false @@ -533,14 +533,14 @@ tests = ["coverage", "mock-django"] [[package]] name = "django-picklefield" -version = "3.1" +version = "3.0.1" description = "Pickled object field for Django" category = "main" optional = false python-versions = ">=3" [package.dependencies] -Django = ">=3.2" +Django = ">=2.2" [package.extras] tests = ["tox"] @@ -628,17 +628,6 @@ pytz = "*" [package.extras] rest_framework = ["djangorestframework (>=3.0.0)"] -[[package]] -name = "django-tree-queries" -version = "0.11.0" -description = "Tree queries with explicit opt-in, without configurability" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.extras] -tests = ["coverage"] - [[package]] name = "django-webserver" version = "1.2.0" @@ -669,31 +658,9 @@ python-versions = ">=3.6" django = ">=2.2" pytz = "*" -[[package]] -name = "drf-spectacular" -version = "0.22.1" -description = "Sane and flexible OpenAPI 3 schema generation for Django REST framework" -category = "main" -optional = false -python-versions = ">=3.6" - -[package.dependencies] -Django = ">=2.2" -djangorestframework = ">=3.10" -drf-spectacular-sidecar = {version = "*", optional = true, markers = "extra == \"sidecar\""} -inflection = ">=0.3.1" -jsonschema = ">=2.6.0" -PyYAML = ">=5.1" -typing-extensions = {version = "*", markers = "python_version < \"3.8\""} -uritemplate = ">=2.0.0" - -[package.extras] -offline = ["drf-spectacular-sidecar"] -sidecar = ["drf-spectacular-sidecar"] - [[package]] name = "drf-spectacular-sidecar" -version = "2022.9.1" +version = "2022.4.1" description = "Serve self-contained distribution builds of Swagger UI and Redoc with Django" category = "main" optional = false @@ -704,7 +671,7 @@ Django = ">=2.2" [[package]] name = "drf-yasg" -version = "1.21.3" +version = "1.20.3" description = "Automated generation of real Swagger/OpenAPI 2.0 schemas from Django Rest Framework code." category = "main" optional = false @@ -727,16 +694,17 @@ validation = ["swagger-spec-validator (>=2.1.0)"] [[package]] name = "flake8" -version = "2.3.0" -description = "the modular source code checker: pep8, pyflakes and co" +version = "3.9.2" +description = "the modular source code checker: pep8 pyflakes and co" category = "dev" optional = false -python-versions = "*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" [package.dependencies] -mccabe = ">=0.2.1" -pep8 = ">=1.5.7" -pyflakes = ">=0.8.1" +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} +mccabe = ">=0.6.0,<0.7.0" +pycodestyle = ">=2.7.0,<2.8.0" +pyflakes = ">=2.3.0,<2.4.0" [[package]] name = "funcy" @@ -894,24 +862,23 @@ python-versions = ">=3.5" [[package]] name = "importlib-metadata" -version = "4.12.0" +version = "4.4.0" description = "Read metadata from Python packages" category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.6" [package.dependencies] typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} zipp = ">=0.5" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] -perf = ["ipython"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.3)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] +docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] +testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] [[package]] name = "importlib-resources" -version = "5.9.0" +version = "5.7.1" description = "Read resources from Python packages" category = "main" optional = false @@ -921,8 +888,8 @@ python-versions = ">=3.7" zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] -docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "jaraco.tidelift (>=1.4)"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] [[package]] name = "inflection" @@ -934,7 +901,7 @@ python-versions = ">=3.5" [[package]] name = "invoke" -version = "1.7.1" +version = "1.7.0" description = "Pythonic task execution" category = "dev" optional = false @@ -978,7 +945,7 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "jsonschema" -version = "4.7.2" +version = "4.4.0" description = "An implementation of JSON Schema validation for Python" category = "main" optional = false @@ -993,7 +960,7 @@ typing-extensions = {version = "*", markers = "python_version < \"3.8\""} [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)"] +format_nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] [[package]] name = "kombu" @@ -1035,7 +1002,7 @@ python-versions = ">=3.6" [[package]] name = "markdown" -version = "3.3.7" +version = "3.3.6" description = "Python implementation of Markdown." category = "main" optional = false @@ -1057,11 +1024,11 @@ python-versions = ">=3.7" [[package]] name = "mccabe" -version = "0.7.0" +version = "0.6.1" description = "McCabe checker, plugin for flake8" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = "*" [[package]] name = "mergedeep" @@ -1173,26 +1140,26 @@ python-versions = "*" [[package]] name = "nautobot" -version = "1.4.1" +version = "1.3.1" description = "Source of truth and network automation platform." category = "main" optional = false python-versions = ">=3.7,<4.0" [package.dependencies] -celery = ">=5.2.7,<5.3.0" -Django = ">=3.2.15,<3.3.0" +celery = ">=5.2.3,<5.3.0" +Django = ">=3.2,<3.3" django-ajax-tables = ">=1.1.1,<1.2.0" django-cacheops = ">=6.0,<6.1" django-celery-beat = ">=2.2.1,<2.3.0" django-constance = {version = ">=2.8.0,<2.9.0", extras = ["database"]} -django-cors-headers = ">=3.13.0,<3.14.0" +django-cors-headers = ">=3.10.1,<3.11.0" django-cryptography = ">=1.0,<1.1" django-db-file-storage = ">=0.5.5,<0.6.0" -django-extensions = ">=3.2.0,<3.3.0" +django-extensions = ">=3.1.5,<3.2.0" django-filter = ">=21.1,<21.2" django-health-check = ">=3.16.5,<3.17.0" -django-jinja = ">=2.10.2,<2.11.0" +django-jinja = ">=2.10.0,<2.11.0" django-mptt = ">=0.13.4,<0.14.0" django-prometheus = ">=2.2.0,<2.3.0" django-redis = ">=5.2.0,<5.3.0" @@ -1200,36 +1167,35 @@ django-rq = ">=2.5.1,<2.6.0" django-tables2 = ">=2.4.1,<2.5.0" django-taggit = ">=1.5.1,<1.6.0" django-timezone-field = ">=4.1.2,<4.2.0" -django-tree-queries = ">=0.11,<0.12" django-webserver = ">=1.2.0,<1.3.0" djangorestframework = ">=3.13.1,<3.14.0" -drf-spectacular = {version = ">=0.22.1,<0.23.0", extras = ["sidecar"]} -drf-yasg = {version = ">=1.20.0,<2.0.0", extras = ["validation"]} +drf-spectacular-sidecar = "2022.4.1" +drf-yasg = {version = ">=1.20.0,<1.21.0", extras = ["validation"]} GitPython = ">=3.1.27,<3.2.0" graphene-django = ">=2.15.0,<2.16.0" graphene-django-optimizer = ">=0.8.0,<0.9.0" -importlib-metadata = {version = ">=4.4,<5.0", markers = "python_version < \"3.8\""} +importlib-metadata = {version = ">=4.4,<4.5", markers = "python_version < \"3.10\""} Jinja2 = ">=3.0.3,<3.1.0" -jsonschema = ">=4.7.0,<4.8.0" -Markdown = ">=3.3.7,<3.4.0" -MarkupSafe = ">=2.1.1,<2.2.0" +jsonschema = ">=4.4.0,<4.5.0" +Markdown = ">=3.3.6,<3.4.0" +MarkupSafe = ">=2.1.0,<2.2.0" netaddr = ">=0.8.0,<0.9.0" -netutils = ">=1.1.0,<1.2.0" -Pillow = ">=9.2.0,<9.3.0" +netutils = ">=1.0.0,<1.1.0" +Pillow = ">=9.0.1,<9.1.0" psycopg2-binary = ">=2.9.3,<2.10.0" pycryptodome = ">=3.13.0,<3.14.0" pyuwsgi = ">=2.0.20,<2.1.0" PyYAML = ">=6.0,<6.1" social-auth-app-django = ">=5.0.0,<5.1.0" -svgwrite = ">=1.4.2,<1.5.0" +svgwrite = ">=1.4.1,<1.5.0" [package.extras] -all = ["django-auth-ldap (>=4.1.0,<4.2.0)", "django-storages (>=1.12.3,<1.13.0)", "mysqlclient (>=2.1.0,<2.2.0)", "napalm (>=3.4.1,<3.5.0)", "social-auth-core[saml,openidconnect] (>=4.3.0,<4.4.0)"] -ldap = ["django-auth-ldap (>=4.1.0,<4.2.0)"] +all = ["django-auth-ldap (>=4.0.0,<4.1.0)", "django-storages (>=1.12.3,<1.13.0)", "mysqlclient (>=2.1.0,<2.2.0)", "napalm (>=3.3.1,<3.4.0)", "social-auth-core[openidconnect,saml] (>=4.2.0,<4.3.0)"] +ldap = ["django-auth-ldap (>=4.0.0,<4.1.0)"] remote_storage = ["django-storages (>=1.12.3,<1.13.0)"] mysql = ["mysqlclient (>=2.1.0,<2.2.0)"] -napalm = ["napalm (>=3.4.1,<3.5.0)"] -sso = ["social-auth-core[saml,openidconnect] (>=4.3.0,<4.4.0)"] +napalm = ["napalm (>=3.3.1,<3.4.0)"] +sso = ["social-auth-core[openidconnect,saml] (>=4.2.0,<4.3.0)"] [[package]] name = "nautobot-capacity-metrics" @@ -1252,7 +1218,7 @@ python-versions = "*" [[package]] name = "netutils" -version = "1.1.0" +version = "1.0.0" description = "Common helper functions useful in network automation." category = "main" optional = false @@ -1284,40 +1250,28 @@ pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" [[package]] name = "pathspec" -version = "0.10.1" +version = "0.9.0" description = "Utility library for gitignore style pattern matching of file paths." category = "dev" optional = false -python-versions = ">=3.7" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" [[package]] name = "pbr" -version = "5.10.0" +version = "5.8.1" description = "Python Build Reasonableness" category = "dev" optional = false python-versions = ">=2.6" -[[package]] -name = "pep8" -version = "1.7.1" -description = "Python style guide checker" -category = "dev" -optional = false -python-versions = "*" - [[package]] name = "pillow" -version = "9.2.0" +version = "9.0.1" description = "Python Imaging Library (Fork)" category = "main" optional = false python-versions = ">=3.7" -[package.extras] -docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinxext-opengraph"] -tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] - [[package]] name = "platformdirs" version = "2.5.2" @@ -1357,7 +1311,7 @@ test = ["pytest (>=2.7.3)", "pytest-cov", "coveralls", "futures", "pytest-benchm [[package]] name = "prompt-toolkit" -version = "3.0.31" +version = "3.0.29" description = "Library for building powerful interactive command lines in Python" category = "main" optional = false @@ -1387,6 +1341,14 @@ category = "main" optional = false python-versions = ">=3.6" +[[package]] +name = "pycodestyle" +version = "2.7.0" +description = "Python style guide checker" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + [[package]] name = "pycparser" version = "2.21" @@ -1419,11 +1381,11 @@ toml = ["toml"] [[package]] name = "pyflakes" -version = "2.5.0" +version = "2.3.1" description = "passive checker of Python programs" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "pygments" @@ -1452,14 +1414,14 @@ tests = ["pytest (>=6.0.0,<7.0.0)", "coverage[toml] (==5.0.4)"] [[package]] name = "pylint" -version = "2.13.9" +version = "2.13.7" description = "python code static checker" category = "dev" optional = false python-versions = ">=3.6.2" [package.dependencies] -astroid = ">=2.11.5,<=2.12.0-dev0" +astroid = ">=2.11.3,<=2.12.0-dev0" colorama = {version = "*", markers = "sys_platform == \"win32\""} dill = ">=0.2" isort = ">=4.2.5,<6" @@ -1511,7 +1473,7 @@ markdown = ">=3.2" [[package]] name = "pyparsing" -version = "3.0.9" +version = "3.0.8" description = "pyparsing module - Classes and methods to define and execute parsing grammars" category = "main" optional = false @@ -1571,7 +1533,7 @@ postgresql = ["psycopg2"] [[package]] name = "pytz" -version = "2022.2.1" +version = "2022.1" description = "World timezone definitions, modern and historical" category = "main" optional = false @@ -1606,7 +1568,7 @@ pyyaml = "*" [[package]] name = "redis" -version = "4.3.4" +version = "4.2.2" description = "Python client for Redis database and key-value store" category = "main" optional = false @@ -1625,21 +1587,21 @@ ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==20.0.1)", "requests (>=2.26.0)" [[package]] name = "requests" -version = "2.28.1" +version = "2.27.1" description = "Python HTTP for Humans." category = "main" optional = false -python-versions = ">=3.7, <4" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = ">=2,<3" -idna = ">=2.5,<4" +charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""} +idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""} urllib3 = ">=1.21.1,<1.27" [package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"] +socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] +use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] [[package]] name = "requests-oauthlib" @@ -1669,7 +1631,7 @@ requests = ">=2.0.1,<3.0.0" [[package]] name = "rq" -version = "1.11.0" +version = "1.10.1" description = "RQ is a simple, lightweight, library for creating background jobs, and processing them." category = "main" optional = false @@ -1735,7 +1697,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" [[package]] name = "slack-sdk" -version = "3.18.2" +version = "3.15.2" description = "The Slack API Platform SDK for Python" category = "main" optional = false @@ -1743,7 +1705,7 @@ python-versions = ">=3.6.0" [package.extras] optional = ["aiodns (>1.0)", "aiohttp (>=3.7.3,<4)", "boto3 (<=2)", "SQLAlchemy (>=1,<2)", "websockets (>=10,<11)", "websocket-client (>=1,<2)"] -testing = ["pytest (>=6.2.5,<7)", "pytest-asyncio (<1)", "Flask-Sockets (>=0.2,<1)", "Flask (>=1,<2)", "Werkzeug (<2)", "itsdangerous (==1.1.0)", "Jinja2 (==3.0.3)", "pytest-cov (>=2,<3)", "codecov (>=2,<3)", "flake8 (>=5,<6)", "black (==22.8.0)", "click (==8.0.4)", "psutil (>=5,<6)", "databases (>=0.5)", "boto3 (<=2)", "moto (>=3,<4)"] +testing = ["pytest (>=6.2.5,<7)", "pytest-asyncio (<1)", "Flask-Sockets (>=0.2,<1)", "Flask (>=1,<2)", "Werkzeug (<2)", "itsdangerous (==2.0.1)", "pytest-cov (>=2,<3)", "codecov (>=2,<3)", "flake8 (>=4,<5)", "black (==22.1.0)", "psutil (>=5,<6)", "databases (>=0.5)", "boto3 (<=2)", "moto (>=3,<4)"] [[package]] name = "smmap" @@ -1774,7 +1736,7 @@ social-auth-core = ">=4.1.0" [[package]] name = "social-auth-core" -version = "4.3.0" +version = "4.2.0" description = "Python social authentication made simple." category = "main" optional = false @@ -1818,7 +1780,7 @@ pbr = ">=2.0.0,<2.1.0 || >2.1.0" [[package]] name = "svgwrite" -version = "1.4.3" +version = "1.4.2" description = "A Python library to create SVG drawings." category = "main" optional = false @@ -1826,7 +1788,7 @@ python-versions = ">=3.6" [[package]] name = "swagger-spec-validator" -version = "2.7.6" +version = "2.7.4" description = "Validation of Swagger specifications" category = "main" optional = false @@ -1863,7 +1825,7 @@ python-versions = ">=3.7" [[package]] name = "typed-ast" -version = "1.5.4" +version = "1.5.3" description = "a fork of Python 2 and 3 ast modules with type comment support" category = "dev" optional = false @@ -1871,7 +1833,7 @@ python-versions = ">=3.6" [[package]] name = "typing-extensions" -version = "4.3.0" +version = "4.2.0" description = "Backported and Experimental Type Hints for Python 3.7+" category = "main" optional = false @@ -1887,15 +1849,15 @@ python-versions = ">=3.6" [[package]] name = "urllib3" -version = "1.26.12" +version = "1.26.9" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" [package.extras] brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] -secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "urllib3-secure-extra", "ipaddress"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] @@ -1927,7 +1889,7 @@ python-versions = "*" [[package]] name = "webexteamssdk" -version = "1.6.1" +version = "1.6" description = "Community-developed Python SDK for the Webex Teams APIs" category = "main" optional = false @@ -1941,7 +1903,7 @@ requests-toolbelt = "*" [[package]] name = "wrapt" -version = "1.14.1" +version = "1.14.0" description = "Module for decorators, wrappers and monkey patching." category = "main" optional = false @@ -1949,11 +1911,11 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" [[package]] name = "yamllint" -version = "1.27.1" +version = "1.26.3" description = "A linter for YAML files." category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.5" [package.dependencies] pathspec = ">=0.5.3" @@ -1961,15 +1923,15 @@ pyyaml = "*" [[package]] name = "zipp" -version = "3.8.1" +version = "3.8.0" description = "Backport of pathlib-compatible object wrapper for zip files" category = "main" optional = false python-versions = ">=3.7" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "jaraco.tidelift (>=1.4)"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.3)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] [metadata] lock-version = "1.1" @@ -1986,15 +1948,21 @@ aniso8601 = [ {file = "aniso8601-7.0.0.tar.gz", hash = "sha256:513d2b6637b7853806ae79ffaca6f3e8754bdd547048f5ccc1420aec4b714f1e"}, ] asgiref = [ - {file = "asgiref-3.5.2-py3-none-any.whl", hash = "sha256:1d2880b792ae8757289136f1db2b7b99100ce959b2aa57fd69dab783d05afac4"}, - {file = "asgiref-3.5.2.tar.gz", hash = "sha256:4a29362a6acebe09bf1d6640db38c1dc3d9217c68e6f9f6204d72667fc19a424"}, + {file = "asgiref-3.5.0-py3-none-any.whl", hash = "sha256:88d59c13d634dcffe0510be048210188edd79aeccb6a6c9028cdad6f31d730a9"}, + {file = "asgiref-3.5.0.tar.gz", hash = "sha256:2f8abc20f7248433085eda803936d98992f1343ddb022065779f37c5da0181d0"}, +] +astroid = [ + {file = "astroid-2.11.3-py3-none-any.whl", hash = "sha256:f1af57483cd17e963b2eddce8361e00fc593d1520fe19948488e94ff6476bd71"}, + {file = "astroid-2.11.3.tar.gz", hash = "sha256:4e5ba10571e197785e312966ea5efb2f5783176d4c1a73fa922d474ae2be59f7"}, ] -astroid = [] async-timeout = [ {file = "async-timeout-4.0.2.tar.gz", hash = "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15"}, {file = "async_timeout-4.0.2-py3-none-any.whl", hash = "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c"}, ] -attrs = [] +attrs = [ + {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, + {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, +] bandit = [ {file = "bandit-1.7.4-py3-none-any.whl", hash = "sha256:412d3f259dab4077d0e7f0c11f50f650cc7d10db905d98f6520a95a18049658a"}, {file = "bandit-1.7.4.tar.gz", hash = "sha256:2d63a8c573417bae338962d4b9b06fbc6080f74ecd955a092849e1e65c717bd2"}, @@ -2003,21 +1971,102 @@ billiard = [ {file = "billiard-3.6.4.0-py3-none-any.whl", hash = "sha256:87103ea78fa6ab4d5c751c4909bcff74617d985de7fa8b672cf8618afd5a875b"}, {file = "billiard-3.6.4.0.tar.gz", hash = "sha256:299de5a8da28a783d51b197d496bef4f1595dd023a93a4f59dde1886ae905547"}, ] -black = [] +black = [ + {file = "black-22.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2497f9c2386572e28921fa8bec7be3e51de6801f7459dffd6e62492531c47e09"}, + {file = "black-22.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5795a0375eb87bfe902e80e0c8cfaedf8af4d49694d69161e5bd3206c18618bb"}, + {file = "black-22.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e3556168e2e5c49629f7b0f377070240bd5511e45e25a4497bb0073d9dda776a"}, + {file = "black-22.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67c8301ec94e3bcc8906740fe071391bce40a862b7be0b86fb5382beefecd968"}, + {file = "black-22.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:fd57160949179ec517d32ac2ac898b5f20d68ed1a9c977346efbac9c2f1e779d"}, + {file = "black-22.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cc1e1de68c8e5444e8f94c3670bb48a2beef0e91dddfd4fcc29595ebd90bb9ce"}, + {file = "black-22.3.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2fc92002d44746d3e7db7cf9313cf4452f43e9ea77a2c939defce3b10b5c82"}, + {file = "black-22.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:a6342964b43a99dbc72f72812bf88cad8f0217ae9acb47c0d4f141a6416d2d7b"}, + {file = "black-22.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:328efc0cc70ccb23429d6be184a15ce613f676bdfc85e5fe8ea2a9354b4e9015"}, + {file = "black-22.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06f9d8846f2340dfac80ceb20200ea5d1b3f181dd0556b47af4e8e0b24fa0a6b"}, + {file = "black-22.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4efa5fad66b903b4a5f96d91461d90b9507a812b3c5de657d544215bb7877a"}, + {file = "black-22.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8477ec6bbfe0312c128e74644ac8a02ca06bcdb8982d4ee06f209be28cdf163"}, + {file = "black-22.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:637a4014c63fbf42a692d22b55d8ad6968a946b4a6ebc385c5505d9625b6a464"}, + {file = "black-22.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:863714200ada56cbc366dc9ae5291ceb936573155f8bf8e9de92aef51f3ad0f0"}, + {file = "black-22.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dbe6e6d2988049b4655b2b739f98785a884d4d6b85bc35133a8fb9a2233176"}, + {file = "black-22.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:cee3e11161dde1b2a33a904b850b0899e0424cc331b7295f2a9698e79f9a69a0"}, + {file = "black-22.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5891ef8abc06576985de8fa88e95ab70641de6c1fca97e2a15820a9b69e51b20"}, + {file = "black-22.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:30d78ba6bf080eeaf0b7b875d924b15cd46fec5fd044ddfbad38c8ea9171043a"}, + {file = "black-22.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ee8f1f7228cce7dffc2b464f07ce769f478968bfb3dd1254a4c2eeed84928aad"}, + {file = "black-22.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ee227b696ca60dd1c507be80a6bc849a5a6ab57ac7352aad1ffec9e8b805f21"}, + {file = "black-22.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:9b542ced1ec0ceeff5b37d69838106a6348e60db7b8fdd245294dc1d26136265"}, + {file = "black-22.3.0-py3-none-any.whl", hash = "sha256:bc58025940a896d7e5356952228b68f793cf5fcb342be703c3a2669a1488cb72"}, + {file = "black-22.3.0.tar.gz", hash = "sha256:35020b8886c022ced9282b51b5a875b6d1ab0c387b31a065b84db7c33085ca79"}, +] cached-property = [ {file = "cached-property-1.5.2.tar.gz", hash = "sha256:9fa5755838eecbb2d234c3aa390bd80fbd3ac6b6869109bfc1b499f7bd89a130"}, {file = "cached_property-1.5.2-py2.py3-none-any.whl", hash = "sha256:df4f613cf7ad9a588cc381aaf4a512d26265ecebd5eb9e1ba12f1319eb85a6a0"}, ] celery = [ - {file = "celery-5.2.7-py3-none-any.whl", hash = "sha256:138420c020cd58d6707e6257b6beda91fd39af7afde5d36c6334d175302c0e14"}, - {file = "celery-5.2.7.tar.gz", hash = "sha256:fafbd82934d30f8a004f81e8f7a062e31413a23d444be8ee3326553915958c6d"}, + {file = "celery-5.2.6-py3-none-any.whl", hash = "sha256:da31f8eae7607b1582e5ee2d3f2d6f58450585afd23379491e3d9229d08102d0"}, + {file = "celery-5.2.6.tar.gz", hash = "sha256:d1398cadf30f576266b34370e28e880306ec55f7a4b6307549b0ae9c15663481"}, +] +certifi = [ + {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, + {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, +] +cffi = [ + {file = "cffi-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c2502a1a03b6312837279c8c1bd3ebedf6c12c4228ddbad40912d671ccc8a962"}, + {file = "cffi-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:23cfe892bd5dd8941608f93348c0737e369e51c100d03718f108bf1add7bd6d0"}, + {file = "cffi-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:41d45de54cd277a7878919867c0f08b0cf817605e4eb94093e7516505d3c8d14"}, + {file = "cffi-1.15.0-cp27-cp27m-win32.whl", hash = "sha256:4a306fa632e8f0928956a41fa8e1d6243c71e7eb59ffbd165fc0b41e316b2474"}, + {file = "cffi-1.15.0-cp27-cp27m-win_amd64.whl", hash = "sha256:e7022a66d9b55e93e1a845d8c9eba2a1bebd4966cd8bfc25d9cd07d515b33fa6"}, + {file = "cffi-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:14cd121ea63ecdae71efa69c15c5543a4b5fbcd0bbe2aad864baca0063cecf27"}, + {file = "cffi-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d4d692a89c5cf08a8557fdeb329b82e7bf609aadfaed6c0d79f5a449a3c7c023"}, + {file = "cffi-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0104fb5ae2391d46a4cb082abdd5c69ea4eab79d8d44eaaf79f1b1fd806ee4c2"}, + {file = "cffi-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:91ec59c33514b7c7559a6acda53bbfe1b283949c34fe7440bcf917f96ac0723e"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f5c7150ad32ba43a07c4479f40241756145a1f03b43480e058cfd862bf5041c7"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:00c878c90cb53ccfaae6b8bc18ad05d2036553e6d9d1d9dbcf323bbe83854ca3"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abb9a20a72ac4e0fdb50dae135ba5e77880518e742077ced47eb1499e29a443c"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a5263e363c27b653a90078143adb3d076c1a748ec9ecc78ea2fb916f9b861962"}, + {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f54a64f8b0c8ff0b64d18aa76675262e1700f3995182267998c31ae974fbc382"}, + {file = "cffi-1.15.0-cp310-cp310-win32.whl", hash = "sha256:c21c9e3896c23007803a875460fb786118f0cdd4434359577ea25eb556e34c55"}, + {file = "cffi-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:5e069f72d497312b24fcc02073d70cb989045d1c91cbd53979366077959933e0"}, + {file = "cffi-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:64d4ec9f448dfe041705426000cc13e34e6e5bb13736e9fd62e34a0b0c41566e"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2756c88cbb94231c7a147402476be2c4df2f6078099a6f4a480d239a8817ae39"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b96a311ac60a3f6be21d2572e46ce67f09abcf4d09344c49274eb9e0bf345fc"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75e4024375654472cc27e91cbe9eaa08567f7fbdf822638be2814ce059f58032"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:59888172256cac5629e60e72e86598027aca6bf01fa2465bdb676d37636573e8"}, + {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:27c219baf94952ae9d50ec19651a687b826792055353d07648a5695413e0c605"}, + {file = "cffi-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:4958391dbd6249d7ad855b9ca88fae690783a6be9e86df65865058ed81fc860e"}, + {file = "cffi-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:f6f824dc3bce0edab5f427efcfb1d63ee75b6fcb7282900ccaf925be84efb0fc"}, + {file = "cffi-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:06c48159c1abed75c2e721b1715c379fa3200c7784271b3c46df01383b593636"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c2051981a968d7de9dd2d7b87bcb9c939c74a34626a6e2f8181455dd49ed69e4"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fd8a250edc26254fe5b33be00402e6d287f562b6a5b2152dec302fa15bb3e997"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91d77d2a782be4274da750752bb1650a97bfd8f291022b379bb8e01c66b4e96b"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:45db3a33139e9c8f7c09234b5784a5e33d31fd6907800b316decad50af323ff2"}, + {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:263cc3d821c4ab2213cbe8cd8b355a7f72a8324577dc865ef98487c1aeee2bc7"}, + {file = "cffi-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:17771976e82e9f94976180f76468546834d22a7cc404b17c22df2a2c81db0c66"}, + {file = "cffi-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:3415c89f9204ee60cd09b235810be700e993e343a408693e80ce7f6a40108029"}, + {file = "cffi-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4238e6dab5d6a8ba812de994bbb0a79bddbdf80994e4ce802b6f6f3142fcc880"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0808014eb713677ec1292301ea4c81ad277b6cdf2fdd90fd540af98c0b101d20"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:57e9ac9ccc3101fac9d6014fba037473e4358ef4e89f8e181f8951a2c0162024"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b6c2ea03845c9f501ed1313e78de148cd3f6cad741a75d43a29b43da27f2e1e"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:10dffb601ccfb65262a27233ac273d552ddc4d8ae1bf93b21c94b8511bffe728"}, + {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:786902fb9ba7433aae840e0ed609f45c7bcd4e225ebb9c753aa39725bb3e6ad6"}, + {file = "cffi-1.15.0-cp38-cp38-win32.whl", hash = "sha256:da5db4e883f1ce37f55c667e5c0de439df76ac4cb55964655906306918e7363c"}, + {file = "cffi-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:181dee03b1170ff1969489acf1c26533710231c58f95534e3edac87fff06c443"}, + {file = "cffi-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:45e8636704eacc432a206ac7345a5d3d2c62d95a507ec70d62f23cd91770482a"}, + {file = "cffi-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:31fb708d9d7c3f49a60f04cf5b119aeefe5644daba1cd2a0fe389b674fd1de37"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6dc2737a3674b3e344847c8686cf29e500584ccad76204efea14f451d4cc669a"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74fdfdbfdc48d3f47148976f49fab3251e550a8720bebc99bf1483f5bfb5db3e"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffaa5c925128e29efbde7301d8ecaf35c8c60ffbcd6a1ffd3a552177c8e5e796"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f7d084648d77af029acb79a0ff49a0ad7e9d09057a9bf46596dac9514dc07df"}, + {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef1f279350da2c586a69d32fc8733092fd32cc8ac95139a00377841f59a3f8d8"}, + {file = "cffi-1.15.0-cp39-cp39-win32.whl", hash = "sha256:2a23af14f408d53d5e6cd4e3d9a24ff9e05906ad574822a10563efcef137979a"}, + {file = "cffi-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:3773c4d81e6e818df2efbc7dd77325ca0dcb688116050fb2b3011218eda36139"}, + {file = "cffi-1.15.0.tar.gz", hash = "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954"}, +] +charset-normalizer = [ + {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"}, + {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, ] -certifi = [] -cffi = [] -charset-normalizer = [] click = [ - {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, - {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, + {file = "click-8.1.2-py3-none-any.whl", hash = "sha256:24e1a4a9ec5bf6299411369b208c1df2188d9eb8d916302fe6bf03faed227f1e"}, + {file = "click-8.1.2.tar.gz", hash = "sha256:479707fe14d9ec9a0757618b7a100a0ae4c4e236fac5b7f80ca68028141a1a72"}, ] click-didyoumean = [ {file = "click-didyoumean-0.3.0.tar.gz", hash = "sha256:f184f0d851d96b6d29297354ed981b7dd71df7ff500d82fa6d11f0856bee8035"}, @@ -2031,7 +2080,10 @@ click-repl = [ {file = "click-repl-0.2.0.tar.gz", hash = "sha256:cd12f68d745bf6151210790540b4cb064c7b13e571bc64b6957d98d120dacfd8"}, {file = "click_repl-0.2.0-py3-none-any.whl", hash = "sha256:94b3fbbc9406a236f176e0506524b2937e4b23b6f4c0c0b2a0a83f8a64e9194b"}, ] -colorama = [] +colorama = [ + {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, + {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, +] coreapi = [ {file = "coreapi-2.3.3-py2.py3-none-any.whl", hash = "sha256:bf39d118d6d3e171f10df9ede5666f63ad80bba9a29a8ec17726a66cf52ee6f3"}, {file = "coreapi-2.3.3.tar.gz", hash = "sha256:46145fcc1f7017c076a2ef684969b641d18a2991051fddec9458ad3f78ffc1cb"}, @@ -2049,11 +2101,11 @@ deprecated = [ {file = "Deprecated-1.2.13-py2.py3-none-any.whl", hash = "sha256:64756e3e14c8c5eea9795d93c524551432a0be75629f8f29e67ab8caf076c76d"}, {file = "Deprecated-1.2.13.tar.gz", hash = "sha256:43ac5335da90c31c24ba028af536a91d41d53f9e6901ddb021bcc572ce44e38d"}, ] -dill = [ - {file = "dill-0.3.5.1-py2.py3-none-any.whl", hash = "sha256:33501d03270bbe410c72639b350e941882a8b0fd55357580fbc873fba0c59302"}, - {file = "dill-0.3.5.1.tar.gz", hash = "sha256:d75e41f3eff1eee599d738e76ba8f4ad98ea229db8b085318aa2b3333a208c86"}, +dill = [] +django = [ + {file = "Django-3.2.13-py3-none-any.whl", hash = "sha256:b896ca61edc079eb6bbaa15cf6071eb69d6aac08cce5211583cfb41515644fdf"}, + {file = "Django-3.2.13.tar.gz", hash = "sha256:6d93497a0a9bf6ba0e0b1a29cccdc40efbfc76297255b1309b3a884a688ec4b6"}, ] -django = [] django-ajax-tables = [ {file = "django_ajax_tables-1.1.1-py3-none-any.whl", hash = "sha256:62e0138949153c0a994eefbf469f5496b1ad98bc073e170bc021a1aada7a32d0"}, {file = "django_ajax_tables-1.1.1.tar.gz", hash = "sha256:5a7e7bc7940aa6332a564916cde22010a858a3d29fc1090ce8061010ec76337c"}, @@ -2074,7 +2126,10 @@ django-constance = [ {file = "django-constance-2.8.0.tar.gz", hash = "sha256:0a492454acc78799ce7b9f7a28a00c53427d513f34f8bf6fdc90a46d8864b2af"}, {file = "django_constance-2.8.0-py3-none-any.whl", hash = "sha256:60fec73e397d5f4f7440f611b18d3e7ce5342647f316fedc47b62e1411c849e7"}, ] -django-cors-headers = [] +django-cors-headers = [ + {file = "django-cors-headers-3.10.1.tar.gz", hash = "sha256:b5a874b492bcad99f544bb76ef679472259eb41ee5644ca62d1a94ddb26b7f6e"}, + {file = "django_cors_headers-3.10.1-py3-none-any.whl", hash = "sha256:1390b5846e9835b0911e2574409788af87cd9154246aafbdc8ec546c93698fe6"}, +] django-cryptography = [ {file = "django-cryptography-1.0.tar.gz", hash = "sha256:13de5cf8f1250744c104b9e24774d03aa6d8488959dd40cdc016934043652445"}, {file = "django_cryptography-1.0-py3-none-any.whl", hash = "sha256:0a99980b1cee7cc5e52f9b20b322620fea7cc124d770273e7bd285b20fd9d222"}, @@ -2082,7 +2137,10 @@ django-cryptography = [ django-db-file-storage = [ {file = "django-db-file-storage-0.5.5.tar.gz", hash = "sha256:5d5da694b78ab202accab4508b958e0e37b3d146310e76f6f6125e1bdeaaad14"}, ] -django-extensions = [] +django-extensions = [ + {file = "django-extensions-3.1.5.tar.gz", hash = "sha256:28e1e1bf49f0e00307ba574d645b0af3564c981a6dfc87209d48cb98f77d0b1a"}, + {file = "django_extensions-3.1.5-py3-none-any.whl", hash = "sha256:9238b9e016bb0009d621e05cf56ea8ce5cce9b32e91ad2026996a7377ca28069"}, +] django-filter = [ {file = "django-filter-21.1.tar.gz", hash = "sha256:632a251fa8f1aadb4b8cceff932bb52fe2f826dd7dfe7f3eac40e5c463d6836e"}, {file = "django_filter-21.1-py3-none-any.whl", hash = "sha256:f4a6737a30104c98d2e2a5fb93043f36dd7978e0c7ddc92f5998e85433ea5063"}, @@ -2091,10 +2149,7 @@ django-health-check = [ {file = "django-health-check-3.16.5.tar.gz", hash = "sha256:1edfd49293ccebbce29f9da609c407f307aee240ab799ab4201031341ae78c0f"}, {file = "django_health_check-3.16.5-py2.py3-none-any.whl", hash = "sha256:8d66781a0ea82b1a8b44878187b38a27370e94f18287312e39be0593e72d8983"}, ] -django-jinja = [ - {file = "django-jinja-2.10.2.tar.gz", hash = "sha256:bfdfbb55c1f5a679d69ad575d550c4707d386634009152efe014089f3c4d1412"}, - {file = "django_jinja-2.10.2-py3-none-any.whl", hash = "sha256:dd003ec1c95c0989eb28a538831bced62b1b61da551cb44a5dfd708fcf75589f"}, -] +django-jinja = [] django-js-asset = [ {file = "django_js_asset-2.0.0-py3-none-any.whl", hash = "sha256:86f9f300d682537ddaf0487dc2ab356581b8f50c069bdba91d334a46e449f923"}, {file = "django_js_asset-2.0.0.tar.gz", hash = "sha256:adc1ee1efa853fad42054b540c02205344bb406c9bddf87c9e5377a41b7db90f"}, @@ -2103,7 +2158,10 @@ django-mptt = [ {file = "django-mptt-0.13.4.tar.gz", hash = "sha256:80c9fb34df7796a4e5af0cb6b8ade3697555b1aa438bd07a01f32b3ab5202b63"}, {file = "django_mptt-0.13.4-py3-none-any.whl", hash = "sha256:75745b621ae31d97957ed924155a750dfa8cacd9543799ada2d713fd6bc3f5c7"}, ] -django-picklefield = [] +django-picklefield = [ + {file = "django-picklefield-3.0.1.tar.gz", hash = "sha256:15ccba592ca953b9edf9532e64640329cd47b136b7f8f10f2939caa5f9ce4287"}, + {file = "django_picklefield-3.0.1-py3-none-any.whl", hash = "sha256:3c702a54fde2d322fe5b2f39b8f78d9f655b8f77944ab26f703be6c0ed335a35"}, +] django-prometheus = [ {file = "django-prometheus-2.2.0.tar.gz", hash = "sha256:240378a1307c408bd5fc85614a3a57f1ce633d4a222c9e291e2bbf325173b801"}, {file = "django_prometheus-2.2.0-py2.py3-none-any.whl", hash = "sha256:e6616770d8820b8834762764bf1b76ec08e1b98e72a6f359d488a2e15fe3537c"}, @@ -2128,7 +2186,6 @@ django-timezone-field = [ {file = "django-timezone-field-4.1.2.tar.gz", hash = "sha256:cffac62452d060e365938aa9c9f7b72d70d8b26b9c60243bce227b35abd1b9df"}, {file = "django_timezone_field-4.1.2-py3-none-any.whl", hash = "sha256:897c06e40b619cf5731a30d6c156886a7c64cba3a90364832148da7ef32ccf36"}, ] -django-tree-queries = [] django-webserver = [ {file = "django-webserver-1.2.0.tar.gz", hash = "sha256:c976979d15b5ff9a212f7904d3b779e22219aebb4857860fcaf20e4e40f1da40"}, {file = "django_webserver-1.2.0-py2.py3-none-any.whl", hash = "sha256:09200631f266484b9e944e38e92681d6e9aa7d90d089a5c86d5fb08fddad84fe"}, @@ -2137,13 +2194,12 @@ djangorestframework = [ {file = "djangorestframework-3.13.1-py3-none-any.whl", hash = "sha256:24c4bf58ed7e85d1fe4ba250ab2da926d263cd57d64b03e8dcef0ac683f8b1aa"}, {file = "djangorestframework-3.13.1.tar.gz", hash = "sha256:0c33407ce23acc68eca2a6e46424b008c9c02eceb8cf18581921d0092bc1f2ee"}, ] -drf-spectacular = [ - {file = "drf-spectacular-0.22.1.tar.gz", hash = "sha256:866e16ddaae167a1234c76cd8c351161373551db994ce9665b347b32d5daf38b"}, - {file = "drf_spectacular-0.22.1-py3-none-any.whl", hash = "sha256:17ac5e31e5d6150dd5fa10843b429202f4f38069202acc44394cc5a771de63d9"}, -] drf-spectacular-sidecar = [] drf-yasg = [] -flake8 = [] +flake8 = [ + {file = "flake8-3.9.2-py2.py3-none-any.whl", hash = "sha256:bf8fd333346d844f616e8d47905ef3a3384edae6b4e9beb0c5101e25e3110907"}, + {file = "flake8-3.9.2.tar.gz", hash = "sha256:07528381786f2a6237b061f6e96610a4167b226cb926e2aa2b6b1d78057c576b"}, +] funcy = [ {file = "funcy-1.17-py2.py3-none-any.whl", hash = "sha256:ba7af5e58bfc69321aaf860a1547f18d35e145706b95d1b3c966abc4f0b60309"}, {file = "funcy-1.17.tar.gz", hash = "sha256:40b9b9a88141ae6a174df1a95861f2b82f2fdc17669080788b73a3ed9370e968"}, @@ -2187,16 +2243,19 @@ idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, ] -importlib-metadata = [] -importlib-resources = [] +importlib-metadata = [ + {file = "importlib_metadata-4.4.0-py3-none-any.whl", hash = "sha256:960d52ba7c21377c990412aca380bf3642d734c2eaab78a2c39319f67c6a5786"}, + {file = "importlib_metadata-4.4.0.tar.gz", hash = "sha256:e592faad8de1bda9fe920cf41e15261e7131bcf266c30306eec00e8e225c1dd5"}, +] +importlib-resources = [ + {file = "importlib_resources-5.7.1-py3-none-any.whl", hash = "sha256:e447dc01619b1e951286f3929be820029d48c75eb25d265c28b92a16548212b8"}, + {file = "importlib_resources-5.7.1.tar.gz", hash = "sha256:b6062987dfc51f0fcb809187cffbd60f35df7acb4589091f154214af6d0d49d3"}, +] inflection = [ {file = "inflection-0.5.1-py2.py3-none-any.whl", hash = "sha256:f38b2b640938a4f35ade69ac3d053042959b62a0f1076a5bbaa1b9526605a8a2"}, {file = "inflection-0.5.1.tar.gz", hash = "sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417"}, ] -invoke = [ - {file = "invoke-1.7.1-py3-none-any.whl", hash = "sha256:2dc975b4f92be0c0a174ad2d063010c8a1fdb5e9389d69871001118b4fcac4fb"}, - {file = "invoke-1.7.1.tar.gz", hash = "sha256:7b6deaf585eee0a848205d0b8c0014b9bf6f287a8eb798818a642dff1df14b19"}, -] +invoke = [] isort = [ {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, @@ -2209,7 +2268,10 @@ jinja2 = [ {file = "Jinja2-3.0.3-py3-none-any.whl", hash = "sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8"}, {file = "Jinja2-3.0.3.tar.gz", hash = "sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7"}, ] -jsonschema = [] +jsonschema = [ + {file = "jsonschema-4.4.0-py3-none-any.whl", hash = "sha256:77281a1f71684953ee8b3d488371b162419767973789272434bbc3f29d9c8823"}, + {file = "jsonschema-4.4.0.tar.gz", hash = "sha256:636694eb41b3535ed608fe04129f26542b59ed99808b4f688aa32dcf55317a83"}, +] kombu = [ {file = "kombu-5.2.4-py3-none-any.whl", hash = "sha256:8b213b24293d3417bcf0d2f5537b7f756079e3ea232a8386dcc89a59fd2361a4"}, {file = "kombu-5.2.4.tar.gz", hash = "sha256:37cee3ee725f94ea8bb173eaab7c1760203ea53bbebae226328600f9d2799610"}, @@ -2254,8 +2316,8 @@ lazy-object-proxy = [ {file = "lazy_object_proxy-1.7.1-pp37.pp38-none-any.whl", hash = "sha256:d66906d5785da8e0be7360912e99c9188b70f52c422f9fc18223347235691a84"}, ] markdown = [ - {file = "Markdown-3.3.7-py3-none-any.whl", hash = "sha256:f5da449a6e1c989a4cea2631aa8ee67caa5a2ef855d551c88f9e309f4634c621"}, - {file = "Markdown-3.3.7.tar.gz", hash = "sha256:cbb516f16218e643d8e0a95b309f77eb118cb138d39a4f27851e6a63581db874"}, + {file = "Markdown-3.3.6-py3-none-any.whl", hash = "sha256:9923332318f843411e9932237530df53162e29dc7a4e2b91e35764583c46c9a3"}, + {file = "Markdown-3.3.6.tar.gz", hash = "sha256:76df8ae32294ec39dcf89340382882dfa12975f87f45c3ed1ecdb1e8cefc7006"}, ] markupsafe = [ {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, @@ -2299,7 +2361,10 @@ markupsafe = [ {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, ] -mccabe = [] +mccabe = [ + {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, + {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, +] mergedeep = [ {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, @@ -2314,15 +2379,18 @@ mypy-extensions = [ {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, ] -nautobot = [] +nautobot = [ + {file = "nautobot-1.3.1-py3-none-any.whl", hash = "sha256:40f3d7a1eb31221f6d15802d0cb845bc00ea8bb4050a54c54cd17b62ab006b44"}, + {file = "nautobot-1.3.1.tar.gz", hash = "sha256:2144b091b124df64fb27b2ba86143aba2123ee6c028df98daf06a3e1bb27f0e4"}, +] nautobot-capacity-metrics = [] netaddr = [ {file = "netaddr-0.8.0-py2.py3-none-any.whl", hash = "sha256:9666d0232c32d2656e5e5f8d735f58fd6c7457ce52fc21c98d45f2af78f990ac"}, {file = "netaddr-0.8.0.tar.gz", hash = "sha256:d6cc57c7a07b1d9d2e917aa8b36ae8ce61c35ba3fcd1b83ca31c5a0ee2b5a243"}, ] netutils = [ - {file = "netutils-1.1.0-py3-none-any.whl", hash = "sha256:bcb4367689c773cd30bf898b15bed38f22dc8bd69e64f2272bb9dd4726bf41d4"}, - {file = "netutils-1.1.0.tar.gz", hash = "sha256:90ab637c60ae18c515191224c52a7b0a1eb6fdde2f8dd40dfac638f2dd06ef2c"}, + {file = "netutils-1.0.0-py3-none-any.whl", hash = "sha256:f6e695dc761f41c68d3b2b9763f6ac3bc636d8b3c70c9886dae2655b2eab5c2b"}, + {file = "netutils-1.0.0.tar.gz", hash = "sha256:ead1d927374a76a9ff78867b5f72b66cd26eaa9ec9e8d00e12e8085694a0275a"}, ] oauthlib = [ {file = "oauthlib-3.2.0-py3-none-any.whl", hash = "sha256:6db33440354787f9b7f3a6dbd4febf5d0f93758354060e802f6c06cb493022fe"}, @@ -2332,10 +2400,48 @@ packaging = [ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, ] -pathspec = [] +pathspec = [ + {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, + {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, +] pbr = [] -pep8 = [] -pillow = [] +pillow = [ + {file = "Pillow-9.0.1-1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a5d24e1d674dd9d72c66ad3ea9131322819ff86250b30dc5821cbafcfa0b96b4"}, + {file = "Pillow-9.0.1-1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2632d0f846b7c7600edf53c48f8f9f1e13e62f66a6dbc15191029d950bfed976"}, + {file = "Pillow-9.0.1-1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b9618823bd237c0d2575283f2939655f54d51b4527ec3972907a927acbcc5bfc"}, + {file = "Pillow-9.0.1-cp310-cp310-macosx_10_10_universal2.whl", hash = "sha256:9bfdb82cdfeccec50aad441afc332faf8606dfa5e8efd18a6692b5d6e79f00fd"}, + {file = "Pillow-9.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5100b45a4638e3c00e4d2320d3193bdabb2d75e79793af7c3eb139e4f569f16f"}, + {file = "Pillow-9.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:528a2a692c65dd5cafc130de286030af251d2ee0483a5bf50c9348aefe834e8a"}, + {file = "Pillow-9.0.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f29d831e2151e0b7b39981756d201f7108d3d215896212ffe2e992d06bfe049"}, + {file = "Pillow-9.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:855c583f268edde09474b081e3ddcd5cf3b20c12f26e0d434e1386cc5d318e7a"}, + {file = "Pillow-9.0.1-cp310-cp310-win32.whl", hash = "sha256:d9d7942b624b04b895cb95af03a23407f17646815495ce4547f0e60e0b06f58e"}, + {file = "Pillow-9.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:81c4b81611e3a3cb30e59b0cf05b888c675f97e3adb2c8672c3154047980726b"}, + {file = "Pillow-9.0.1-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:413ce0bbf9fc6278b2d63309dfeefe452835e1c78398efb431bab0672fe9274e"}, + {file = "Pillow-9.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80fe64a6deb6fcfdf7b8386f2cf216d329be6f2781f7d90304351811fb591360"}, + {file = "Pillow-9.0.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cef9c85ccbe9bee00909758936ea841ef12035296c748aaceee535969e27d31b"}, + {file = "Pillow-9.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d19397351f73a88904ad1aee421e800fe4bbcd1aeee6435fb62d0a05ccd1030"}, + {file = "Pillow-9.0.1-cp37-cp37m-win32.whl", hash = "sha256:d21237d0cd37acded35154e29aec853e945950321dd2ffd1a7d86fe686814669"}, + {file = "Pillow-9.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:ede5af4a2702444a832a800b8eb7f0a7a1c0eed55b644642e049c98d589e5092"}, + {file = "Pillow-9.0.1-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:b5b3f092fe345c03bca1e0b687dfbb39364b21ebb8ba90e3fa707374b7915204"}, + {file = "Pillow-9.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:335ace1a22325395c4ea88e00ba3dc89ca029bd66bd5a3c382d53e44f0ccd77e"}, + {file = "Pillow-9.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:db6d9fac65bd08cea7f3540b899977c6dee9edad959fa4eaf305940d9cbd861c"}, + {file = "Pillow-9.0.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f154d173286a5d1863637a7dcd8c3437bb557520b01bddb0be0258dcb72696b5"}, + {file = "Pillow-9.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14d4b1341ac07ae07eb2cc682f459bec932a380c3b122f5540432d8977e64eae"}, + {file = "Pillow-9.0.1-cp38-cp38-win32.whl", hash = "sha256:effb7749713d5317478bb3acb3f81d9d7c7f86726d41c1facca068a04cf5bb4c"}, + {file = "Pillow-9.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:7f7609a718b177bf171ac93cea9fd2ddc0e03e84d8fa4e887bdfc39671d46b00"}, + {file = "Pillow-9.0.1-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:80ca33961ced9c63358056bd08403ff866512038883e74f3a4bf88ad3eb66838"}, + {file = "Pillow-9.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1c3c33ac69cf059bbb9d1a71eeaba76781b450bc307e2291f8a4764d779a6b28"}, + {file = "Pillow-9.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12875d118f21cf35604176872447cdb57b07126750a33748bac15e77f90f1f9c"}, + {file = "Pillow-9.0.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:514ceac913076feefbeaf89771fd6febde78b0c4c1b23aaeab082c41c694e81b"}, + {file = "Pillow-9.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3c5c79ab7dfce6d88f1ba639b77e77a17ea33a01b07b99840d6ed08031cb2a7"}, + {file = "Pillow-9.0.1-cp39-cp39-win32.whl", hash = "sha256:718856856ba31f14f13ba885ff13874be7fefc53984d2832458f12c38205f7f7"}, + {file = "Pillow-9.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:f25ed6e28ddf50de7e7ea99d7a976d6a9c415f03adcaac9c41ff6ff41b6d86ac"}, + {file = "Pillow-9.0.1-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:011233e0c42a4a7836498e98c1acf5e744c96a67dd5032a6f666cc1fb97eab97"}, + {file = "Pillow-9.0.1-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253e8a302a96df6927310a9d44e6103055e8fb96a6822f8b7f514bb7ef77de56"}, + {file = "Pillow-9.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6295f6763749b89c994fcb6d8a7f7ce03c3992e695f89f00b741b4580b199b7e"}, + {file = "Pillow-9.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:a9f44cd7e162ac6191491d7249cceb02b8116b0f7e847ee33f739d7cb1ea1f70"}, + {file = "Pillow-9.0.1.tar.gz", hash = "sha256:6c8bc8238a7dfdaf7a75f5ec5a663f4173f8c367e5a39f87e720495e1eed75fa"}, +] platformdirs = [ {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, @@ -2347,7 +2453,10 @@ prometheus-client = [ promise = [ {file = "promise-2.3.tar.gz", hash = "sha256:dfd18337c523ba4b6a58801c164c1904a9d4d1b1747c7d5dbf45b693a49d93d0"}, ] -prompt-toolkit = [] +prompt-toolkit = [ + {file = "prompt_toolkit-3.0.29-py3-none-any.whl", hash = "sha256:62291dad495e665fca0bda814e342c69952086afb0f4094d0893d357e5c78752"}, + {file = "prompt_toolkit-3.0.29.tar.gz", hash = "sha256:bd640f60e8cecd74f0dc249713d433ace2ddc62b65ee07f96d358e0b152b6ea7"}, +] prybar = [ {file = "prybar-1.0.0-py2.py3-none-any.whl", hash = "sha256:07d5b12fb12da703fb266d67d3a117e1c20a30cd9daa274586cc4af8081baea7"}, {file = "prybar-1.0.0.tar.gz", hash = "sha256:9f2af7b4fdce2d0febf6fb73a0854956a384fad65df19c3f57caab7c4726a88a"}, @@ -2410,6 +2519,10 @@ psycopg2-binary = [ {file = "psycopg2_binary-2.9.3-cp39-cp39-win32.whl", hash = "sha256:46f0e0a6b5fa5851bbd9ab1bc805eef362d3a230fbdfbc209f4a236d0a7a990d"}, {file = "psycopg2_binary-2.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:accfe7e982411da3178ec690baaceaad3c278652998b2c45828aaac66cd8285f"}, ] +pycodestyle = [ + {file = "pycodestyle-2.7.0-py2.py3-none-any.whl", hash = "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068"}, + {file = "pycodestyle-2.7.0.tar.gz", hash = "sha256:c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef"}, +] pycparser = [ {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, @@ -2450,15 +2563,18 @@ pydocstyle = [ {file = "pydocstyle-6.1.1-py3-none-any.whl", hash = "sha256:6987826d6775056839940041beef5c08cc7e3d71d63149b48e36727f70144dc4"}, {file = "pydocstyle-6.1.1.tar.gz", hash = "sha256:1d41b7c459ba0ee6c345f2eb9ae827cab14a7533a88c5c6f7e94923f72df92dc"}, ] -pyflakes = [] +pyflakes = [ + {file = "pyflakes-2.3.1-py2.py3-none-any.whl", hash = "sha256:7893783d01b8a89811dd72d7dfd4d84ff098e5eed95cfa8905b22bbffe52efc3"}, + {file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"}, +] pygments = [] pyjwt = [ {file = "PyJWT-2.4.0-py3-none-any.whl", hash = "sha256:72d1d253f32dbd4f5c88eaf1fdc62f3a19f676ccbadb9dbc5d07e951b2b26daf"}, {file = "PyJWT-2.4.0.tar.gz", hash = "sha256:d42908208c699b3b973cbeb01a969ba6a96c821eefb1c5bfe4c390c01d67abba"}, ] pylint = [ - {file = "pylint-2.13.9-py3-none-any.whl", hash = "sha256:705c620d388035bdd9ff8b44c5bcdd235bfb49d276d488dd2c8ff1736aa42526"}, - {file = "pylint-2.13.9.tar.gz", hash = "sha256:095567c96e19e6f57b5b907e67d265ff535e588fe26b12b5ebe1fc5645b2c731"}, + {file = "pylint-2.13.7-py3-none-any.whl", hash = "sha256:13ddbbd8872c804574149e81197c28877eba75224ba6b76cd8652fc31df55c1c"}, + {file = "pylint-2.13.7.tar.gz", hash = "sha256:911d3a97c808f7554643bcc5416028cfdc42eae34ed129b150741888c688d5d5"}, ] pylint-django = [ {file = "pylint-django-2.5.3.tar.gz", hash = "sha256:0ac090d106c62fe33782a1d01bda1610b761bb1c9bf5035ced9d5f23a13d8591"}, @@ -2470,8 +2586,8 @@ pylint-plugin-utils = [ ] pymdown-extensions = [] pyparsing = [ - {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, - {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, + {file = "pyparsing-3.0.8-py3-none-any.whl", hash = "sha256:ef7b523f6356f763771559412c0d7134753f037822dad1b16945b7b846f7ad06"}, + {file = "pyparsing-3.0.8.tar.gz", hash = "sha256:7bf433498c016c4314268d95df76c81b842a4cb2b276fa3312cfb1e1d85f6954"}, ] pyrsistent = [ {file = "pyrsistent-0.18.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:df46c854f490f81210870e509818b729db4488e1f30f2a1ce1698b2295a878d1"}, @@ -2507,7 +2623,10 @@ python3-openid = [ {file = "python3-openid-3.2.0.tar.gz", hash = "sha256:33fbf6928f401e0b790151ed2b5290b02545e8775f982485205a066f874aaeaf"}, {file = "python3_openid-3.2.0-py3-none-any.whl", hash = "sha256:6626f771e0417486701e0b4daff762e7212e820ca5b29fcc0d05f6f8736dfa6b"}, ] -pytz = [] +pytz = [ + {file = "pytz-2022.1-py2.py3-none-any.whl", hash = "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"}, + {file = "pytz-2022.1.tar.gz", hash = "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7"}, +] pyuwsgi = [ {file = "pyuwsgi-2.0.20-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bd09a7328558728f6e38f77609f44d16f18d8b4dc5f8b8776f657c8892b70337"}, {file = "pyuwsgi-2.0.20-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:210ad768b8af02bbfd3c0345a51c6d2c56a2333ac268d9a97ecf2d4209f78ef8"}, @@ -2576,7 +2695,10 @@ pyyaml-env-tag = [ {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"}, ] redis = [] -requests = [] +requests = [ + {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, + {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, +] requests-oauthlib = [ {file = "requests-oauthlib-1.3.1.tar.gz", hash = "sha256:75beac4a47881eeb94d5ea5d6ad31ef88856affe2332b9aafb52c6452ccf0d7a"}, {file = "requests_oauthlib-1.3.1-py2.py3-none-any.whl", hash = "sha256:2577c501a2fb8d05a304c09d090d6e47c306fef15809d102b327cf8364bddab5"}, @@ -2585,7 +2707,10 @@ requests-toolbelt = [ {file = "requests-toolbelt-0.9.1.tar.gz", hash = "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0"}, {file = "requests_toolbelt-0.9.1-py2.py3-none-any.whl", hash = "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f"}, ] -rq = [] +rq = [ + {file = "rq-1.10.1-py2.py3-none-any.whl", hash = "sha256:92f4cf38b2364c1697b541e77c0fe62b7e5242fa864324f262be126ee2a07e3a"}, + {file = "rq-1.10.1.tar.gz", hash = "sha256:62d06b44c3acfa5d1933c5a4ec3fbc2484144a8af60e318d0b8447c5236271e2"}, +] "ruamel.yaml" = [ {file = "ruamel.yaml-0.17.21-py3-none-any.whl", hash = "sha256:742b35d3d665023981bd6d16b3d24248ce5df75fdb4e2924e93a05c1f8b61ca7"}, {file = "ruamel.yaml-0.17.21.tar.gz", hash = "sha256:8b7ce697a2f212752a35c1ac414471dc16c424c9573be4926b56ff3f5d23b7af"}, @@ -2638,7 +2763,10 @@ social-auth-app-django = [ {file = "social-auth-app-django-5.0.0.tar.gz", hash = "sha256:b6e3132ce087cdd6e1707aeb1b588be41d318408fcf6395435da0bc6fe9a9795"}, {file = "social_auth_app_django-5.0.0-py3-none-any.whl", hash = "sha256:52241a25445a010ab1c108bafff21fc5522d5c8cd0d48a92c39c7371824b065d"}, ] -social-auth-core = [] +social-auth-core = [ + {file = "social-auth-core-4.2.0.tar.gz", hash = "sha256:af6fc7d9ee39f0aa697cd953121add638fc32a49816341a9838a67904c39e034"}, + {file = "social_auth_core-4.2.0-py3-none-any.whl", hash = "sha256:08fe6645b98950cff9d6970b6704345f821d78729df0164bca0002c624b001e1"}, +] sqlparse = [ {file = "sqlparse-0.4.2-py3-none-any.whl", hash = "sha256:48719e356bb8b42991bdbb1e8b83223757b93789c00910a616a071910ca4a64d"}, {file = "sqlparse-0.4.2.tar.gz", hash = "sha256:0c00730c74263a94e5a9919ade150dfc3b19c574389985446148402998287dae"}, @@ -2647,8 +2775,14 @@ stevedore = [ {file = "stevedore-3.5.0-py3-none-any.whl", hash = "sha256:a547de73308fd7e90075bb4d301405bebf705292fa90a90fc3bcf9133f58616c"}, {file = "stevedore-3.5.0.tar.gz", hash = "sha256:f40253887d8712eaa2bb0ea3830374416736dc8ec0e22f5a65092c1174c44335"}, ] -svgwrite = [] -swagger-spec-validator = [] +svgwrite = [ + {file = "svgwrite-1.4.2-py3-none-any.whl", hash = "sha256:ca63d76396d1f6f099a2b2d8cf1419e1c1de8deece9a2b7f4da0632067d71d43"}, + {file = "svgwrite-1.4.2.zip", hash = "sha256:d304a929f197d31647c287c10eee0f64378058e1c83a9df83433a5980864e59f"}, +] +swagger-spec-validator = [ + {file = "swagger-spec-validator-2.7.4.tar.gz", hash = "sha256:2aee5e1fc0503be9f8299378b10c92169572781573c6de3315e831fd0559ba73"}, + {file = "swagger_spec_validator-2.7.4-py2.py3-none-any.whl", hash = "sha256:4e373a4db5262e7257fde17d84c5c0178327b8057985ab1be63f580bfa009855"}, +] text-unidecode = [ {file = "text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93"}, {file = "text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8"}, @@ -2662,37 +2796,43 @@ tomli = [ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] typed-ast = [ - {file = "typed_ast-1.5.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:669dd0c4167f6f2cd9f57041e03c3c2ebf9063d0757dc89f79ba1daa2bfca9d4"}, - {file = "typed_ast-1.5.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:211260621ab1cd7324e0798d6be953d00b74e0428382991adfddb352252f1d62"}, - {file = "typed_ast-1.5.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:267e3f78697a6c00c689c03db4876dd1efdfea2f251a5ad6555e82a26847b4ac"}, - {file = "typed_ast-1.5.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c542eeda69212fa10a7ada75e668876fdec5f856cd3d06829e6aa64ad17c8dfe"}, - {file = "typed_ast-1.5.4-cp310-cp310-win_amd64.whl", hash = "sha256:a9916d2bb8865f973824fb47436fa45e1ebf2efd920f2b9f99342cb7fab93f72"}, - {file = "typed_ast-1.5.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:79b1e0869db7c830ba6a981d58711c88b6677506e648496b1f64ac7d15633aec"}, - {file = "typed_ast-1.5.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a94d55d142c9265f4ea46fab70977a1944ecae359ae867397757d836ea5a3f47"}, - {file = "typed_ast-1.5.4-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:183afdf0ec5b1b211724dfef3d2cad2d767cbefac291f24d69b00546c1837fb6"}, - {file = "typed_ast-1.5.4-cp36-cp36m-win_amd64.whl", hash = "sha256:639c5f0b21776605dd6c9dbe592d5228f021404dafd377e2b7ac046b0349b1a1"}, - {file = "typed_ast-1.5.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:cf4afcfac006ece570e32d6fa90ab74a17245b83dfd6655a6f68568098345ff6"}, - {file = "typed_ast-1.5.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed855bbe3eb3715fca349c80174cfcfd699c2f9de574d40527b8429acae23a66"}, - {file = "typed_ast-1.5.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6778e1b2f81dfc7bc58e4b259363b83d2e509a65198e85d5700dfae4c6c8ff1c"}, - {file = "typed_ast-1.5.4-cp37-cp37m-win_amd64.whl", hash = "sha256:0261195c2062caf107831e92a76764c81227dae162c4f75192c0d489faf751a2"}, - {file = "typed_ast-1.5.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2efae9db7a8c05ad5547d522e7dbe62c83d838d3906a3716d1478b6c1d61388d"}, - {file = "typed_ast-1.5.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7d5d014b7daa8b0bf2eaef684295acae12b036d79f54178b92a2b6a56f92278f"}, - {file = "typed_ast-1.5.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:370788a63915e82fd6f212865a596a0fefcbb7d408bbbb13dea723d971ed8bdc"}, - {file = "typed_ast-1.5.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4e964b4ff86550a7a7d56345c7864b18f403f5bd7380edf44a3c1fb4ee7ac6c6"}, - {file = "typed_ast-1.5.4-cp38-cp38-win_amd64.whl", hash = "sha256:683407d92dc953c8a7347119596f0b0e6c55eb98ebebd9b23437501b28dcbb8e"}, - {file = "typed_ast-1.5.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4879da6c9b73443f97e731b617184a596ac1235fe91f98d279a7af36c796da35"}, - {file = "typed_ast-1.5.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3e123d878ba170397916557d31c8f589951e353cc95fb7f24f6bb69adc1a8a97"}, - {file = "typed_ast-1.5.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebd9d7f80ccf7a82ac5f88c521115cc55d84e35bf8b446fcd7836eb6b98929a3"}, - {file = "typed_ast-1.5.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98f80dee3c03455e92796b58b98ff6ca0b2a6f652120c263efdba4d6c5e58f72"}, - {file = "typed_ast-1.5.4-cp39-cp39-win_amd64.whl", hash = "sha256:0fdbcf2fef0ca421a3f5912555804296f0b0960f0418c440f5d6d3abb549f3e1"}, - {file = "typed_ast-1.5.4.tar.gz", hash = "sha256:39e21ceb7388e4bb37f4c679d72707ed46c2fbf2a5609b8b8ebc4b067d977df2"}, -] -typing-extensions = [] + {file = "typed_ast-1.5.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ad3b48cf2b487be140072fb86feff36801487d4abb7382bb1929aaac80638ea"}, + {file = "typed_ast-1.5.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:542cd732351ba8235f20faa0fc7398946fe1a57f2cdb289e5497e1e7f48cfedb"}, + {file = "typed_ast-1.5.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc2c11ae59003d4a26dda637222d9ae924387f96acae9492df663843aefad55"}, + {file = "typed_ast-1.5.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fd5df1313915dbd70eaaa88c19030b441742e8b05e6103c631c83b75e0435ccc"}, + {file = "typed_ast-1.5.3-cp310-cp310-win_amd64.whl", hash = "sha256:e34f9b9e61333ecb0f7d79c21c28aa5cd63bec15cb7e1310d7d3da6ce886bc9b"}, + {file = "typed_ast-1.5.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f818c5b81966d4728fec14caa338e30a70dfc3da577984d38f97816c4b3071ec"}, + {file = "typed_ast-1.5.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3042bfc9ca118712c9809201f55355479cfcdc17449f9f8db5e744e9625c6805"}, + {file = "typed_ast-1.5.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4fff9fdcce59dc61ec1b317bdb319f8f4e6b69ebbe61193ae0a60c5f9333dc49"}, + {file = "typed_ast-1.5.3-cp36-cp36m-win_amd64.whl", hash = "sha256:8e0b8528838ffd426fea8d18bde4c73bcb4167218998cc8b9ee0a0f2bfe678a6"}, + {file = "typed_ast-1.5.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8ef1d96ad05a291f5c36895d86d1375c0ee70595b90f6bb5f5fdbee749b146db"}, + {file = "typed_ast-1.5.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed44e81517364cb5ba367e4f68fca01fba42a7a4690d40c07886586ac267d9b9"}, + {file = "typed_ast-1.5.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f60d9de0d087454c91b3999a296d0c4558c1666771e3460621875021bf899af9"}, + {file = "typed_ast-1.5.3-cp37-cp37m-win_amd64.whl", hash = "sha256:9e237e74fd321a55c90eee9bc5d44be976979ad38a29bbd734148295c1ce7617"}, + {file = "typed_ast-1.5.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ee852185964744987609b40aee1d2eb81502ae63ee8eef614558f96a56c1902d"}, + {file = "typed_ast-1.5.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:27e46cdd01d6c3a0dd8f728b6a938a6751f7bd324817501c15fb056307f918c6"}, + {file = "typed_ast-1.5.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d64dabc6336ddc10373922a146fa2256043b3b43e61f28961caec2a5207c56d5"}, + {file = "typed_ast-1.5.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8cdf91b0c466a6c43f36c1964772918a2c04cfa83df8001ff32a89e357f8eb06"}, + {file = "typed_ast-1.5.3-cp38-cp38-win_amd64.whl", hash = "sha256:9cc9e1457e1feb06b075c8ef8aeb046a28ec351b1958b42c7c31c989c841403a"}, + {file = "typed_ast-1.5.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e20d196815eeffb3d76b75223e8ffed124e65ee62097e4e73afb5fec6b993e7a"}, + {file = "typed_ast-1.5.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:37e5349d1d5de2f4763d534ccb26809d1c24b180a477659a12c4bde9dd677d74"}, + {file = "typed_ast-1.5.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9f1a27592fac87daa4e3f16538713d705599b0a27dfe25518b80b6b017f0a6d"}, + {file = "typed_ast-1.5.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8831479695eadc8b5ffed06fdfb3e424adc37962a75925668deeb503f446c0a3"}, + {file = "typed_ast-1.5.3-cp39-cp39-win_amd64.whl", hash = "sha256:20d5118e494478ef2d3a2702d964dae830aedd7b4d3b626d003eea526be18718"}, + {file = "typed_ast-1.5.3.tar.gz", hash = "sha256:27f25232e2dd0edfe1f019d6bfaaf11e86e657d9bdb7b0956db95f560cceb2b3"}, +] +typing-extensions = [ + {file = "typing_extensions-4.2.0-py3-none-any.whl", hash = "sha256:6657594ee297170d19f67d55c05852a874e7eb634f4f753dbd667855e07c1708"}, + {file = "typing_extensions-4.2.0.tar.gz", hash = "sha256:f1c24655a0da0d1b67f07e17a5e6b2a105894e6824b92096378bb3668ef02376"}, +] uritemplate = [ {file = "uritemplate-4.1.1-py2.py3-none-any.whl", hash = "sha256:830c08b8d99bdd312ea4ead05994a38e8936266f84b9a7878232db50b044e02e"}, {file = "uritemplate-4.1.1.tar.gz", hash = "sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0"}, ] -urllib3 = [] +urllib3 = [ + {file = "urllib3-1.26.9-py2.py3-none-any.whl", hash = "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"}, + {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, +] vine = [ {file = "vine-5.0.0-py2.py3-none-any.whl", hash = "sha256:4c9dceab6f76ed92105027c49c823800dd33cacce13bdedc5b914e3514b7fb30"}, {file = "vine-5.0.0.tar.gz", hash = "sha256:7d3b1624a953da82ef63462013bbd271d3eb75751489f9807598e8f340bd637e"}, @@ -2702,72 +2842,15 @@ wcwidth = [ {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, ] -webexteamssdk = [] -wrapt = [ - {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1"}, - {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"}, - {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"}, - {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"}, - {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"}, - {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"}, - {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"}, - {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"}, - {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"}, - {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"}, - {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d"}, - {file = "wrapt-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7"}, - {file = "wrapt-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00"}, - {file = "wrapt-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4"}, - {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1"}, - {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1"}, - {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff"}, - {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d"}, - {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1"}, - {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569"}, - {file = "wrapt-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed"}, - {file = "wrapt-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471"}, - {file = "wrapt-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248"}, - {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68"}, - {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d"}, - {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77"}, - {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7"}, - {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015"}, - {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a"}, - {file = "wrapt-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853"}, - {file = "wrapt-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c"}, - {file = "wrapt-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456"}, - {file = "wrapt-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f"}, - {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc"}, - {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1"}, - {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af"}, - {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b"}, - {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0"}, - {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57"}, - {file = "wrapt-1.14.1-cp38-cp38-win32.whl", hash = "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5"}, - {file = "wrapt-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d"}, - {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"}, - {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"}, - {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"}, - {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"}, - {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"}, - {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"}, - {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"}, - {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"}, - {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"}, - {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, - {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, -] -yamllint = [] -zipp = [] +webexteamssdk = [ + {file = "webexteamssdk-1.6-py3-none-any.whl", hash = "sha256:e4958dca3903c659fe1e0f79e38740cb2ec1ae2589599807b179c3efb356c3a2"}, + {file = "webexteamssdk-1.6.tar.gz", hash = "sha256:980f268d89187d1a157dfbadcb626fce849080a31550e549cfe838f0203b3a3d"}, +] +wrapt = [] +yamllint = [ + {file = "yamllint-1.26.3.tar.gz", hash = "sha256:3934dcde484374596d6b52d8db412929a169f6d9e52e20f9ade5bf3523d9b96e"}, +] +zipp = [ + {file = "zipp-3.8.0-py3-none-any.whl", hash = "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099"}, + {file = "zipp-3.8.0.tar.gz", hash = "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad"}, +] From 922fcfd3a921658bbd62050c5115c729e46a85f8 Mon Sep 17 00:00:00 2001 From: Stephen Kiely Date: Sat, 3 Sep 2022 17:19:20 -0500 Subject: [PATCH 07/14] Update only yamllint Pinning yamllint due to GitHub actions issue. --- poetry.lock | 10 ++++------ pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/poetry.lock b/poetry.lock index f5c53f0c..48b5aca5 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1911,11 +1911,11 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" [[package]] name = "yamllint" -version = "1.26.3" +version = "1.27.1" description = "A linter for YAML files." category = "dev" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" [package.dependencies] pathspec = ">=0.5.3" @@ -1936,7 +1936,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = "^3.7" -content-hash = "73ce85c8aac6ead2cb870537c14f2a773258b680e85de68fe47f2b5f593450c8" +content-hash = "4a7d64cee585efd455f2bbd37e3f7418fdc7db235c63c8ce2170bc6f1d76be3d" [metadata.files] amqp = [ @@ -2847,9 +2847,7 @@ webexteamssdk = [ {file = "webexteamssdk-1.6.tar.gz", hash = "sha256:980f268d89187d1a157dfbadcb626fce849080a31550e549cfe838f0203b3a3d"}, ] wrapt = [] -yamllint = [ - {file = "yamllint-1.26.3.tar.gz", hash = "sha256:3934dcde484374596d6b52d8db412929a169f6d9e52e20f9ade5bf3523d9b96e"}, -] +yamllint = [] zipp = [ {file = "zipp-3.8.0-py3-none-any.whl", hash = "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099"}, {file = "zipp-3.8.0.tar.gz", hash = "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad"}, diff --git a/pyproject.toml b/pyproject.toml index 8ed6eeda..5b2fa667 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,7 +31,7 @@ Markdown = "!=3.3.5" [tool.poetry.dev-dependencies] black = "*" -yamllint = "*" +yamllint = "1.27.1" bandit = "*" pylint = "*" pylint-django = "*" From 65b7c4ddfebc769e6cebff2040f78cca405c8b65 Mon Sep 17 00:00:00 2001 From: Stephen Kiely Date: Sat, 3 Sep 2022 23:04:18 -0500 Subject: [PATCH 08/14] Run tests against last 1.3.x nautobot release --- .github/workflows/ci.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3411c719..03310e6c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -101,11 +101,11 @@ jobs: fail-fast: true matrix: python-version: ["3.7", "3.8", "3.9"] - nautobot-version: ["1.1.6", "1.2.11", "1.3.0"] + nautobot-version: ["1.1.6", "1.2.11", "1.3.10"] # Also test Python 3.10 with Nautobot 1.3.x include: - python-version: "3.10" - nautobot-version: "1.3.0" + nautobot-version: "1.3.10" runs-on: "ubuntu-20.04" env: INVOKE_NAUTOBOT_CHATOPS_PYTHON_VER: "${{ matrix.python-version }}" @@ -121,22 +121,22 @@ jobs: run: "cp development/creds.example.env development/creds.env" - name: "Remove Poetry Lock for Older Nautobot Tests" run: "rm -f poetry.lock" - if: "matrix.nautobot-version != '1.3.0'" + if: "matrix.nautobot-version != '1.3.10'" - name: "Remove Black" # We have dependency issues specifically with Nautobot 1.1 but we really don't care about black # on Anything less than the latest - if: "matrix.nautobot-version != '1.3.0'" + if: "matrix.nautobot-version != '1.3.10'" run: "poetry remove black --dev" - name: "Handle Markupsafe bug" # Markupsafe 2.0.1 conflicts with the new jinja, but 2.1.x conflicts with Nautobot 1.1-2 # Markdown has issues with importlib in newer versions - if: "matrix.nautobot-version != '1.3.0'" + if: "matrix.nautobot-version != '1.3.10'" run: "poetry add markupsafe==2.0.1" - name: "Set Nautobot install to the testing version" run: "poetry add nautobot==${{ matrix.nautobot-version }}" - name: "Regenerate Poetry Lock for Older Nautobot Tests" run: "poetry update --lock" - if: "matrix.nautobot-version != '1.3.0'" + if: "matrix.nautobot-version != '1.3.10'" - name: "Build Container" run: "poetry run invoke build" - name: "Run Tests" From 45cc5659a9516a0f74ae3228c63349f1beec4970 Mon Sep 17 00:00:00 2001 From: Stephen Kiely Date: Mon, 5 Sep 2022 21:46:59 -0500 Subject: [PATCH 09/14] Drop support for 1.1 --- .github/workflows/ci.yml | 12 +- docs/admin/release_notes/version_1.9.md | 12 + nautobot_chatops/__init__.py | 2 +- nautobot_chatops/api/nested_serializers.py | 30 + nautobot_chatops/api/serializers.py | 13 +- nautobot_chatops/api/views/generic.py | 6 +- nautobot_chatops/filters.py | 34 +- nautobot_chatops/tests/test_api.py | 15 +- nautobot_chatops/views.py | 10 +- poetry.lock | 637 +++++++++------------ pyproject.toml | 8 +- 11 files changed, 389 insertions(+), 390 deletions(-) create mode 100644 docs/admin/release_notes/version_1.9.md create mode 100644 nautobot_chatops/api/nested_serializers.py diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 03310e6c..893da76e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -101,11 +101,11 @@ jobs: fail-fast: true matrix: python-version: ["3.7", "3.8", "3.9"] - nautobot-version: ["1.1.6", "1.2.11", "1.3.10"] + nautobot-version: ["1.3.4", "1.4.2"] # Also test Python 3.10 with Nautobot 1.3.x include: - python-version: "3.10" - nautobot-version: "1.3.10" + nautobot-version: "1.4.2" runs-on: "ubuntu-20.04" env: INVOKE_NAUTOBOT_CHATOPS_PYTHON_VER: "${{ matrix.python-version }}" @@ -121,22 +121,22 @@ jobs: run: "cp development/creds.example.env development/creds.env" - name: "Remove Poetry Lock for Older Nautobot Tests" run: "rm -f poetry.lock" - if: "matrix.nautobot-version != '1.3.10'" + if: "matrix.nautobot-version != '1.3.0'" - name: "Remove Black" # We have dependency issues specifically with Nautobot 1.1 but we really don't care about black # on Anything less than the latest - if: "matrix.nautobot-version != '1.3.10'" + if: "matrix.nautobot-version != '1.3.0'" run: "poetry remove black --dev" - name: "Handle Markupsafe bug" # Markupsafe 2.0.1 conflicts with the new jinja, but 2.1.x conflicts with Nautobot 1.1-2 # Markdown has issues with importlib in newer versions - if: "matrix.nautobot-version != '1.3.10'" + if: "matrix.nautobot-version != '1.3.0'" run: "poetry add markupsafe==2.0.1" - name: "Set Nautobot install to the testing version" run: "poetry add nautobot==${{ matrix.nautobot-version }}" - name: "Regenerate Poetry Lock for Older Nautobot Tests" run: "poetry update --lock" - if: "matrix.nautobot-version != '1.3.10'" + if: "matrix.nautobot-version != '1.3.0'" - name: "Build Container" run: "poetry run invoke build" - name: "Run Tests" diff --git a/docs/admin/release_notes/version_1.9.md b/docs/admin/release_notes/version_1.9.md new file mode 100644 index 00000000..6f5d2e43 --- /dev/null +++ b/docs/admin/release_notes/version_1.9.md @@ -0,0 +1,12 @@ +# v1.9 Release Notes + +## [v1.9.0](https://github.com/nautobot/nautobot-plugin-chatops/releases/tag/v1.9.0) + +### What's Changed + +* Add support for Nautobot 1.4.0 +* Drop support for Nautobot <1.2.0 +* Remove missing action banner [#140](https://github.com/nautobot/nautobot-plugin-chatops/pull/140) +* Fix Mattermost API MattermostInteractionView request_schema [#144](https://github.com/nautobot/nautobot-plugin-chatops/pull/144) + +[**Full Changelog**](https://github.com/nautobot/nautobot-plugin-chatops/compare/v1.8.0...v1.9.0) diff --git a/nautobot_chatops/__init__.py b/nautobot_chatops/__init__.py index 97f53d4d..586963b2 100644 --- a/nautobot_chatops/__init__.py +++ b/nautobot_chatops/__init__.py @@ -53,7 +53,7 @@ class NautobotChatOpsConfig(PluginConfig): } max_version = "1.999" - min_version = "1.1.0" + min_version = "1.2.0" caching_config = {} def ready(self): diff --git a/nautobot_chatops/api/nested_serializers.py b/nautobot_chatops/api/nested_serializers.py new file mode 100644 index 00000000..c933d039 --- /dev/null +++ b/nautobot_chatops/api/nested_serializers.py @@ -0,0 +1,30 @@ +"""Nested Serializers for ChatOps Plugin.""" + +from rest_framework import serializers + +from nautobot.core.api import WritableNestedSerializer +from nautobot_chatops.models import AccessGrant, CommandToken + + +class NestedCommandTokenSerializer(WritableNestedSerializer): + """Nested serializer for CommandToken objects.""" + + url = serializers.HyperlinkedIdentityField(view_name="plugins-api:nautobot_chatops-api:commandtoken-detail") + + class Meta: + """Meta for Nested CommandToken Serializer.""" + + model = CommandToken + fields = ("id", "comment", "platform", "token", "url") + + +class NestedAccessGrantSerializer(WritableNestedSerializer): + """Nested serializer for AccessGrant objects.""" + + url = serializers.HyperlinkedIdentityField(view_name="plugins-api:nautobot_chatops-api:accessgrant-detail") + + class Meta: + """Meta for Nested AccessGrant Serializer.""" + + model = AccessGrant + fields = ("id", "command", "subcommand", "grant_type", "name", "value", "url") diff --git a/nautobot_chatops/api/serializers.py b/nautobot_chatops/api/serializers.py index 55a02fc4..5427fdd4 100644 --- a/nautobot_chatops/api/serializers.py +++ b/nautobot_chatops/api/serializers.py @@ -1,4 +1,7 @@ -"""API Serializers for Merlin.""" +"""API Serializers for ChatOps Plugin.""" + +from rest_framework import serializers + from nautobot.core.api import ValidatedModelSerializer from nautobot_chatops.models import AccessGrant, CommandToken @@ -7,18 +10,22 @@ class CommandTokenSerializer(ValidatedModelSerializer): """API serializer for interacting with CommandToken objects.""" + url = serializers.HyperlinkedIdentityField(view_name="plugins-api:nautobot_chatops-api:commandtoken-detail") + class Meta: """Meta for CommandToken Serializer.""" model = CommandToken - fields = ("id", "comment", "platform", "token") + fields = ("id", "comment", "platform", "token", "url") class AccessGrantSerializer(ValidatedModelSerializer): """API serializer for interacting with AccessGrant objects.""" + url = serializers.HyperlinkedIdentityField(view_name="plugins-api:nautobot_chatops-api:accessgrant-detail") + class Meta: """Meta for AccessGrant Serializer.""" model = AccessGrant - fields = ("id", "command", "subcommand", "grant_type", "name", "value") + fields = ("id", "command", "subcommand", "grant_type", "name", "value", "url") diff --git a/nautobot_chatops/api/views/generic.py b/nautobot_chatops/api/views/generic.py index dbdf4930..c8c374ef 100644 --- a/nautobot_chatops/api/views/generic.py +++ b/nautobot_chatops/api/views/generic.py @@ -4,7 +4,7 @@ from nautobot_chatops.api.serializers import AccessGrantSerializer, CommandTokenSerializer from nautobot_chatops.models import AccessGrant, CommandToken -from nautobot_chatops.filters import AccessGrantFilter, CommandTokenFilter +from nautobot_chatops.filters import AccessGrantFilterSet, CommandTokenFilterSet class NautobotChatopsRootView(APIRootView): @@ -20,7 +20,7 @@ class CommandTokenViewSet(ModelViewSet): # pylint: disable=too-many-ancestors queryset = CommandToken.objects.all() serializer_class = CommandTokenSerializer - filterset_class = CommandTokenFilter + filterset_class = CommandTokenFilterSet class AccessGrantViewSet(ModelViewSet): # pylint: disable=too-many-ancestors @@ -28,4 +28,4 @@ class AccessGrantViewSet(ModelViewSet): # pylint: disable=too-many-ancestors queryset = AccessGrant.objects.all() serializer_class = AccessGrantSerializer - filterset_class = AccessGrantFilter + filterset_class = AccessGrantFilterSet diff --git a/nautobot_chatops/filters.py b/nautobot_chatops/filters.py index cbcc7e94..919c050a 100644 --- a/nautobot_chatops/filters.py +++ b/nautobot_chatops/filters.py @@ -1,35 +1,45 @@ """Django FilterSet classes for Nautobot.""" -from django_filters import FilterSet +from nautobot.utilities.filters import BaseFilterSet from nautobot_chatops.models import CommandLog, AccessGrant, CommandToken -class CommandLogFilter(FilterSet): +class CommandLogFilterSet(BaseFilterSet): """FilterSet for filtering a set of CommandLog objects.""" class Meta: - """Metaclass attributes of CommandLogFilter.""" + """Metaclass attributes of CommandLogFilterSet.""" model = CommandLog - exclude = ["id", "platform_color", "params"] - - -class AccessGrantFilter(FilterSet): + fields = [ + "start_time", + "runtime", + "user_name", + "user_id", + "platform", + "command", + "subcommand", + "status", + "details", + ] + + +class AccessGrantFilterSet(BaseFilterSet): """FilterSet for filtering a set of AccessGrant objects.""" class Meta: - """Metaclass attributes of AccessGrantFilter.""" + """Metaclass attributes of AccessGrantFilterSet.""" model = AccessGrant - exclude = ["id", "name"] + fields = ["command", "subcommand", "grant_type", "value"] -class CommandTokenFilter(FilterSet): +class CommandTokenFilterSet(BaseFilterSet): """FilterSet for filtering a set of CommandToken objects.""" class Meta: - """Metaclass attributes of CommandTokenFilter.""" + """Metaclass attributes of CommandTokenFilterSet.""" model = CommandToken - exclude = ["id", "token"] + fields = ["comment", "platform"] diff --git a/nautobot_chatops/tests/test_api.py b/nautobot_chatops/tests/test_api.py index b02166cb..21c4ac58 100644 --- a/nautobot_chatops/tests/test_api.py +++ b/nautobot_chatops/tests/test_api.py @@ -21,7 +21,7 @@ class CommandTokenTest(APIViewTestCases.APIViewTestCase): # pylint: disable=too """Tests for the CommandToken Endpoint.""" model = CommandToken - brief_fields = ["comment", "display", "id", "platform", "token"] + brief_fields = ["comment", "created", "display", "id", "last_updated", "platform", "token", "url"] create_data = [ {"comment": "Test 4", "platform": "mattermost", "token": "token4"}, {"comment": "Test 5", "platform": "mattermost", "token": "token5"}, @@ -42,7 +42,18 @@ class AccessGrantTest(APIViewTestCases.APIViewTestCase): # pylint: disable=too- """Tests for the AccessGrant Endpoint.""" model = AccessGrant - brief_fields = ["command", "display", "grant_type", "id", "name", "subcommand", "value"] + brief_fields = [ + "command", + "created", + "display", + "grant_type", + "id", + "last_updated", + "name", + "subcommand", + "url", + "value", + ] create_data = [ {"command": "*", "subcommand": "*", "grant_type": "organization", "name": "test4", "value": "*"}, {"command": "*", "subcommand": "*", "grant_type": "channel", "name": "test5", "value": "*"}, diff --git a/nautobot_chatops/views.py b/nautobot_chatops/views.py index 5faeb4b0..2b0508ae 100644 --- a/nautobot_chatops/views.py +++ b/nautobot_chatops/views.py @@ -21,7 +21,7 @@ from nautobot_chatops.workers import get_commands_registry from nautobot_chatops.models import CommandLog, AccessGrant, CommandToken -from nautobot_chatops.filters import CommandLogFilter, AccessGrantFilter, CommandTokenFilter +from nautobot_chatops.filters import CommandLogFilterSet, AccessGrantFilterSet, CommandTokenFilterSet from nautobot_chatops.forms import AccessGrantFilterForm, AccessGrantForm, CommandTokenFilterForm, CommandTokenForm from nautobot_chatops.tables import CommandLogTable, AccessGrantTable, CommandTokenTable @@ -79,7 +79,7 @@ def get(self, request, *args, **kwargs): ).count() # Support sorting, filtering, customization, and pagination of the table - queryset = CommandLogFilter(request.GET, logs).qs + queryset = CommandLogFilterSet(request.GET, logs).qs table = self.table(queryset, user=request.user) RequestConfig( request, paginate={"paginator_class": EnhancedPaginator, "per_page": get_paginate_count(request)} @@ -98,7 +98,7 @@ def post(self, request): Copied from Nautobot utilities.views.ObjectListView. """ logs = CommandLog.objects.all().order_by("-start_time") - table = self.table(CommandLogFilter(request.GET, logs).qs) + table = self.table(CommandLogFilterSet(request.GET, logs).qs) form = TableConfigForm(table=table, data=request.POST) preference_name = f"tables.{self.table.__name__}.columns" @@ -119,7 +119,7 @@ class AccessGrantListView(PermissionRequiredMixin, ObjectListView): action_buttons = ("add",) permission_required = "nautobot_chatops.view_accessgrant" queryset = AccessGrant.objects.all().order_by("command") - filterset = AccessGrantFilter + filterset = AccessGrantFilterSet filterset_form = AccessGrantFilterForm table = AccessGrantTable template_name = "nautobot/access_grant_list.html" @@ -159,7 +159,7 @@ class CommandTokenListView(PermissionRequiredMixin, ObjectListView): action_buttons = ("add",) permission_required = "nautobot_chatops.view_commandtoken" queryset = CommandToken.objects.all().order_by("platform") - filterset = CommandTokenFilter + filterset = CommandTokenFilterSet filterset_form = CommandTokenFilterForm table = CommandTokenTable template_name = "nautobot/command_token_list.html" diff --git a/poetry.lock b/poetry.lock index 48b5aca5..2e850940 100644 --- a/poetry.lock +++ b/poetry.lock @@ -19,7 +19,7 @@ python-versions = "*" [[package]] name = "asgiref" -version = "3.5.0" +version = "3.5.2" description = "ASGI specs, helper code, and adapters" category = "main" optional = false @@ -33,7 +33,7 @@ tests = ["pytest", "pytest-asyncio", "mypy (>=0.800)"] [[package]] name = "astroid" -version = "2.11.3" +version = "2.11.7" description = "An abstract syntax tree for Python with inference support." category = "dev" optional = false @@ -58,17 +58,17 @@ typing-extensions = {version = ">=3.6.5", markers = "python_version < \"3.8\""} [[package]] name = "attrs" -version = "21.4.0" +version = "22.1.0" description = "Classes Without Boilerplate" category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.5" [package.extras] -dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] -tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] -tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "cloudpickle"] [[package]] name = "bandit" @@ -99,7 +99,7 @@ python-versions = "*" [[package]] name = "black" -version = "22.3.0" +version = "22.8.0" description = "The uncompromising code formatter." category = "dev" optional = false @@ -110,7 +110,7 @@ click = ">=8.0.0" mypy-extensions = ">=0.4.3" pathspec = ">=0.9.0" platformdirs = ">=2" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} typed-ast = {version = ">=1.4.2", markers = "python_version < \"3.8\" and implementation_name == \"cpython\""} typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} @@ -130,11 +130,11 @@ python-versions = "*" [[package]] name = "celery" -version = "5.2.6" +version = "5.2.7" description = "Distributed Task Queue." category = "main" optional = false -python-versions = ">=3.7," +python-versions = ">=3.7" [package.dependencies] billiard = ">=3.6.4.0,<4.0" @@ -182,15 +182,15 @@ zstd = ["zstandard"] [[package]] name = "certifi" -version = "2021.10.8" +version = "2022.6.15" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false -python-versions = "*" +python-versions = ">=3.6" [[package]] name = "cffi" -version = "1.15.0" +version = "1.15.1" description = "Foreign Function Interface for Python calling C code." category = "main" optional = false @@ -201,18 +201,18 @@ pycparser = "*" [[package]] name = "charset-normalizer" -version = "2.0.12" +version = "2.1.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "main" optional = false -python-versions = ">=3.5.0" +python-versions = ">=3.6.0" [package.extras] unicode_backport = ["unicodedata2"] [[package]] name = "click" -version = "8.1.2" +version = "8.1.3" description = "Composable command line interface toolkit" category = "main" optional = false @@ -262,7 +262,7 @@ six = "*" [[package]] name = "colorama" -version = "0.4.4" +version = "0.4.5" description = "Cross-platform colored terminal text." category = "main" optional = false @@ -295,7 +295,7 @@ jinja2 = "*" [[package]] name = "cryptography" -version = "36.0.2" +version = "37.0.4" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." category = "main" optional = false @@ -310,7 +310,7 @@ docstest = ["pyenchant (>=1.6.11)", "twine (>=1.12.0)", "sphinxcontrib-spelling pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"] sdist = ["setuptools_rust (>=0.11.4)"] ssh = ["bcrypt (>=3.1.5)"] -test = ["pytest (>=6.2.0)", "pytest-cov", "pytest-subtests", "pytest-xdist", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,!=3.79.2)"] +test = ["pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-subtests", "pytest-xdist", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,!=3.79.2)"] [[package]] name = "defusedxml" @@ -336,18 +336,18 @@ dev = ["tox", "bump2version (<1)", "sphinx (<2)", "importlib-metadata (<3)", "im [[package]] name = "dill" -version = "0.3.4" +version = "0.3.5.1" description = "serialize all of python" category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" [package.extras] graph = ["objgraph (>=1.7.2)"] [[package]] name = "django" -version = "3.2.13" +version = "3.2.15" description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design." category = "main" optional = false @@ -426,14 +426,14 @@ redis = ["redis"] [[package]] name = "django-cors-headers" -version = "3.10.1" +version = "3.13.0" description = "django-cors-headers is a Django application for handling the server headers required for Cross-Origin Resource Sharing (CORS)." category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] -Django = ">=2.2" +Django = ">=3.2" [[package]] name = "django-cryptography" @@ -460,14 +460,14 @@ Django = "*" [[package]] name = "django-extensions" -version = "3.1.5" +version = "3.2.0" description = "Extensions for Django" category = "main" optional = false python-versions = ">=3.6" [package.dependencies] -Django = ">=2.2" +Django = ">=3.2" [[package]] name = "django-filter" @@ -493,7 +493,7 @@ django = ">=2.2" [[package]] name = "django-jinja" -version = "2.10.0" +version = "2.10.2" description = "Jinja2 templating language integrated in Django." category = "main" optional = false @@ -533,14 +533,14 @@ tests = ["coverage", "mock-django"] [[package]] name = "django-picklefield" -version = "3.0.1" +version = "3.1" description = "Pickled object field for Django" category = "main" optional = false python-versions = ">=3" [package.dependencies] -Django = ">=2.2" +Django = ">=3.2" [package.extras] tests = ["tox"] @@ -628,6 +628,17 @@ pytz = "*" [package.extras] rest_framework = ["djangorestframework (>=3.0.0)"] +[[package]] +name = "django-tree-queries" +version = "0.11.0" +description = "Tree queries with explicit opt-in, without configurability" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.extras] +tests = ["coverage"] + [[package]] name = "django-webserver" version = "1.2.0" @@ -658,9 +669,31 @@ python-versions = ">=3.6" django = ">=2.2" pytz = "*" +[[package]] +name = "drf-spectacular" +version = "0.22.1" +description = "Sane and flexible OpenAPI 3 schema generation for Django REST framework" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +Django = ">=2.2" +djangorestframework = ">=3.10" +drf-spectacular-sidecar = {version = "*", optional = true, markers = "extra == \"sidecar\""} +inflection = ">=0.3.1" +jsonschema = ">=2.6.0" +PyYAML = ">=5.1" +typing-extensions = {version = "*", markers = "python_version < \"3.8\""} +uritemplate = ">=2.0.0" + +[package.extras] +offline = ["drf-spectacular-sidecar"] +sidecar = ["drf-spectacular-sidecar"] + [[package]] name = "drf-spectacular-sidecar" -version = "2022.4.1" +version = "2022.9.1" description = "Serve self-contained distribution builds of Swagger UI and Redoc with Django" category = "main" optional = false @@ -671,7 +704,7 @@ Django = ">=2.2" [[package]] name = "drf-yasg" -version = "1.20.3" +version = "1.21.3" description = "Automated generation of real Swagger/OpenAPI 2.0 schemas from Django Rest Framework code." category = "main" optional = false @@ -862,23 +895,24 @@ python-versions = ">=3.5" [[package]] name = "importlib-metadata" -version = "4.4.0" +version = "4.12.0" description = "Read metadata from Python packages" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} zipp = ">=0.5" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] -testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +perf = ["ipython"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.3)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] [[package]] name = "importlib-resources" -version = "5.7.1" +version = "5.9.0" description = "Read resources from Python packages" category = "main" optional = false @@ -888,8 +922,8 @@ python-versions = ">=3.7" zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] -docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "jaraco.tidelift (>=1.4)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] [[package]] name = "inflection" @@ -901,7 +935,7 @@ python-versions = ">=3.5" [[package]] name = "invoke" -version = "1.7.0" +version = "1.7.1" description = "Pythonic task execution" category = "dev" optional = false @@ -945,7 +979,7 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "jsonschema" -version = "4.4.0" +version = "4.7.2" description = "An implementation of JSON Schema validation for Python" category = "main" optional = false @@ -960,7 +994,7 @@ typing-extensions = {version = "*", markers = "python_version < \"3.8\""} [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)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] [[package]] name = "kombu" @@ -1002,7 +1036,7 @@ python-versions = ">=3.6" [[package]] name = "markdown" -version = "3.3.6" +version = "3.3.7" description = "Python implementation of Markdown." category = "main" optional = false @@ -1140,26 +1174,26 @@ python-versions = "*" [[package]] name = "nautobot" -version = "1.3.1" +version = "1.4.2" description = "Source of truth and network automation platform." category = "main" optional = false python-versions = ">=3.7,<4.0" [package.dependencies] -celery = ">=5.2.3,<5.3.0" -Django = ">=3.2,<3.3" +celery = ">=5.2.7,<5.3.0" +Django = ">=3.2.15,<3.3.0" django-ajax-tables = ">=1.1.1,<1.2.0" django-cacheops = ">=6.0,<6.1" django-celery-beat = ">=2.2.1,<2.3.0" django-constance = {version = ">=2.8.0,<2.9.0", extras = ["database"]} -django-cors-headers = ">=3.10.1,<3.11.0" +django-cors-headers = ">=3.13.0,<3.14.0" django-cryptography = ">=1.0,<1.1" django-db-file-storage = ">=0.5.5,<0.6.0" -django-extensions = ">=3.1.5,<3.2.0" +django-extensions = ">=3.2.0,<3.3.0" django-filter = ">=21.1,<21.2" django-health-check = ">=3.16.5,<3.17.0" -django-jinja = ">=2.10.0,<2.11.0" +django-jinja = ">=2.10.2,<2.11.0" django-mptt = ">=0.13.4,<0.14.0" django-prometheus = ">=2.2.0,<2.3.0" django-redis = ">=5.2.0,<5.3.0" @@ -1167,35 +1201,36 @@ django-rq = ">=2.5.1,<2.6.0" django-tables2 = ">=2.4.1,<2.5.0" django-taggit = ">=1.5.1,<1.6.0" django-timezone-field = ">=4.1.2,<4.2.0" +django-tree-queries = ">=0.11,<0.12" django-webserver = ">=1.2.0,<1.3.0" djangorestframework = ">=3.13.1,<3.14.0" -drf-spectacular-sidecar = "2022.4.1" -drf-yasg = {version = ">=1.20.0,<1.21.0", extras = ["validation"]} +drf-spectacular = {version = ">=0.22.1,<0.23.0", extras = ["sidecar"]} +drf-yasg = {version = ">=1.20.0,<2.0.0", extras = ["validation"]} GitPython = ">=3.1.27,<3.2.0" graphene-django = ">=2.15.0,<2.16.0" graphene-django-optimizer = ">=0.8.0,<0.9.0" -importlib-metadata = {version = ">=4.4,<4.5", markers = "python_version < \"3.10\""} +importlib-metadata = {version = ">=4.4,<5.0", markers = "python_version < \"3.8\""} Jinja2 = ">=3.0.3,<3.1.0" -jsonschema = ">=4.4.0,<4.5.0" -Markdown = ">=3.3.6,<3.4.0" -MarkupSafe = ">=2.1.0,<2.2.0" +jsonschema = ">=4.7.0,<4.8.0" +Markdown = ">=3.3.7,<3.4.0" +MarkupSafe = ">=2.1.1,<2.2.0" netaddr = ">=0.8.0,<0.9.0" -netutils = ">=1.0.0,<1.1.0" -Pillow = ">=9.0.1,<9.1.0" +netutils = ">=1.2.0,<1.3.0" +Pillow = ">=9.2.0,<9.3.0" psycopg2-binary = ">=2.9.3,<2.10.0" pycryptodome = ">=3.13.0,<3.14.0" pyuwsgi = ">=2.0.20,<2.1.0" PyYAML = ">=6.0,<6.1" social-auth-app-django = ">=5.0.0,<5.1.0" -svgwrite = ">=1.4.1,<1.5.0" +svgwrite = ">=1.4.2,<1.5.0" [package.extras] -all = ["django-auth-ldap (>=4.0.0,<4.1.0)", "django-storages (>=1.12.3,<1.13.0)", "mysqlclient (>=2.1.0,<2.2.0)", "napalm (>=3.3.1,<3.4.0)", "social-auth-core[openidconnect,saml] (>=4.2.0,<4.3.0)"] -ldap = ["django-auth-ldap (>=4.0.0,<4.1.0)"] +all = ["django-auth-ldap (>=4.1.0,<4.2.0)", "django-storages (>=1.12.3,<1.13.0)", "mysqlclient (>=2.1.0,<2.2.0)", "napalm (>=3.4.1,<3.5.0)", "social-auth-core[openidconnect,saml] (>=4.3.0,<4.4.0)"] +ldap = ["django-auth-ldap (>=4.1.0,<4.2.0)"] remote_storage = ["django-storages (>=1.12.3,<1.13.0)"] mysql = ["mysqlclient (>=2.1.0,<2.2.0)"] -napalm = ["napalm (>=3.3.1,<3.4.0)"] -sso = ["social-auth-core[openidconnect,saml] (>=4.2.0,<4.3.0)"] +napalm = ["napalm (>=3.4.1,<3.5.0)"] +sso = ["social-auth-core[openidconnect,saml] (>=4.3.0,<4.4.0)"] [[package]] name = "nautobot-capacity-metrics" @@ -1218,7 +1253,7 @@ python-versions = "*" [[package]] name = "netutils" -version = "1.0.0" +version = "1.2.0" description = "Common helper functions useful in network automation." category = "main" optional = false @@ -1250,15 +1285,15 @@ pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" [[package]] name = "pathspec" -version = "0.9.0" +version = "0.10.1" description = "Utility library for gitignore style pattern matching of file paths." category = "dev" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +python-versions = ">=3.7" [[package]] name = "pbr" -version = "5.8.1" +version = "5.10.0" description = "Python Build Reasonableness" category = "dev" optional = false @@ -1266,12 +1301,16 @@ python-versions = ">=2.6" [[package]] name = "pillow" -version = "9.0.1" +version = "9.2.0" description = "Python Imaging Library (Fork)" category = "main" optional = false python-versions = ">=3.7" +[package.extras] +docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinxext-opengraph"] +tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] + [[package]] name = "platformdirs" version = "2.5.2" @@ -1311,7 +1350,7 @@ test = ["pytest (>=2.7.3)", "pytest-cov", "coveralls", "futures", "pytest-benchm [[package]] name = "prompt-toolkit" -version = "3.0.29" +version = "3.0.31" description = "Library for building powerful interactive command lines in Python" category = "main" optional = false @@ -1414,14 +1453,14 @@ tests = ["pytest (>=6.0.0,<7.0.0)", "coverage[toml] (==5.0.4)"] [[package]] name = "pylint" -version = "2.13.7" +version = "2.13.9" description = "python code static checker" category = "dev" optional = false python-versions = ">=3.6.2" [package.dependencies] -astroid = ">=2.11.3,<=2.12.0-dev0" +astroid = ">=2.11.5,<=2.12.0-dev0" colorama = {version = "*", markers = "sys_platform == \"win32\""} dill = ">=0.2" isort = ">=4.2.5,<6" @@ -1473,7 +1512,7 @@ markdown = ">=3.2" [[package]] name = "pyparsing" -version = "3.0.8" +version = "3.0.9" description = "pyparsing module - Classes and methods to define and execute parsing grammars" category = "main" optional = false @@ -1533,7 +1572,7 @@ postgresql = ["psycopg2"] [[package]] name = "pytz" -version = "2022.1" +version = "2022.2.1" description = "World timezone definitions, modern and historical" category = "main" optional = false @@ -1568,7 +1607,7 @@ pyyaml = "*" [[package]] name = "redis" -version = "4.2.2" +version = "4.3.4" description = "Python client for Redis database and key-value store" category = "main" optional = false @@ -1587,21 +1626,21 @@ ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==20.0.1)", "requests (>=2.26.0)" [[package]] name = "requests" -version = "2.27.1" +version = "2.28.1" description = "Python HTTP for Humans." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = ">=3.7, <4" [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""} -idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""} +charset-normalizer = ">=2,<3" +idna = ">=2.5,<4" urllib3 = ">=1.21.1,<1.27" [package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] -use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "requests-oauthlib" @@ -1631,7 +1670,7 @@ requests = ">=2.0.1,<3.0.0" [[package]] name = "rq" -version = "1.10.1" +version = "1.11.0" description = "RQ is a simple, lightweight, library for creating background jobs, and processing them." category = "main" optional = false @@ -1697,7 +1736,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" [[package]] name = "slack-sdk" -version = "3.15.2" +version = "3.18.2" description = "The Slack API Platform SDK for Python" category = "main" optional = false @@ -1705,7 +1744,7 @@ python-versions = ">=3.6.0" [package.extras] optional = ["aiodns (>1.0)", "aiohttp (>=3.7.3,<4)", "boto3 (<=2)", "SQLAlchemy (>=1,<2)", "websockets (>=10,<11)", "websocket-client (>=1,<2)"] -testing = ["pytest (>=6.2.5,<7)", "pytest-asyncio (<1)", "Flask-Sockets (>=0.2,<1)", "Flask (>=1,<2)", "Werkzeug (<2)", "itsdangerous (==2.0.1)", "pytest-cov (>=2,<3)", "codecov (>=2,<3)", "flake8 (>=4,<5)", "black (==22.1.0)", "psutil (>=5,<6)", "databases (>=0.5)", "boto3 (<=2)", "moto (>=3,<4)"] +testing = ["pytest (>=6.2.5,<7)", "pytest-asyncio (<1)", "Flask-Sockets (>=0.2,<1)", "Flask (>=1,<2)", "Werkzeug (<2)", "itsdangerous (==1.1.0)", "Jinja2 (==3.0.3)", "pytest-cov (>=2,<3)", "codecov (>=2,<3)", "flake8 (>=5,<6)", "black (==22.8.0)", "click (==8.0.4)", "psutil (>=5,<6)", "databases (>=0.5)", "boto3 (<=2)", "moto (>=3,<4)"] [[package]] name = "smmap" @@ -1736,7 +1775,7 @@ social-auth-core = ">=4.1.0" [[package]] name = "social-auth-core" -version = "4.2.0" +version = "4.3.0" description = "Python social authentication made simple." category = "main" optional = false @@ -1780,7 +1819,7 @@ pbr = ">=2.0.0,<2.1.0 || >2.1.0" [[package]] name = "svgwrite" -version = "1.4.2" +version = "1.4.3" description = "A Python library to create SVG drawings." category = "main" optional = false @@ -1788,7 +1827,7 @@ python-versions = ">=3.6" [[package]] name = "swagger-spec-validator" -version = "2.7.4" +version = "2.7.6" description = "Validation of Swagger specifications" category = "main" optional = false @@ -1825,7 +1864,7 @@ python-versions = ">=3.7" [[package]] name = "typed-ast" -version = "1.5.3" +version = "1.5.4" description = "a fork of Python 2 and 3 ast modules with type comment support" category = "dev" optional = false @@ -1833,7 +1872,7 @@ python-versions = ">=3.6" [[package]] name = "typing-extensions" -version = "4.2.0" +version = "4.3.0" description = "Backported and Experimental Type Hints for Python 3.7+" category = "main" optional = false @@ -1849,15 +1888,15 @@ python-versions = ">=3.6" [[package]] name = "urllib3" -version = "1.26.9" +version = "1.26.12" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4" [package.extras] brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] -secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "urllib3-secure-extra", "ipaddress"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] @@ -1889,7 +1928,7 @@ python-versions = "*" [[package]] name = "webexteamssdk" -version = "1.6" +version = "1.6.1" description = "Community-developed Python SDK for the Webex Teams APIs" category = "main" optional = false @@ -1903,7 +1942,7 @@ requests-toolbelt = "*" [[package]] name = "wrapt" -version = "1.14.0" +version = "1.14.1" description = "Module for decorators, wrappers and monkey patching." category = "main" optional = false @@ -1923,20 +1962,20 @@ pyyaml = "*" [[package]] name = "zipp" -version = "3.8.0" +version = "3.8.1" description = "Backport of pathlib-compatible object wrapper for zip files" category = "main" optional = false python-versions = ">=3.7" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "jaraco.tidelift (>=1.4)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.3)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] [metadata] lock-version = "1.1" python-versions = "^3.7" -content-hash = "4a7d64cee585efd455f2bbd37e3f7418fdc7db235c63c8ce2170bc6f1d76be3d" +content-hash = "9534c0c90fa9f5fb6c7daf4281a2f284acbfd7610a6a2b800110efb86e27df0e" [metadata.files] amqp = [ @@ -1948,21 +1987,15 @@ aniso8601 = [ {file = "aniso8601-7.0.0.tar.gz", hash = "sha256:513d2b6637b7853806ae79ffaca6f3e8754bdd547048f5ccc1420aec4b714f1e"}, ] asgiref = [ - {file = "asgiref-3.5.0-py3-none-any.whl", hash = "sha256:88d59c13d634dcffe0510be048210188edd79aeccb6a6c9028cdad6f31d730a9"}, - {file = "asgiref-3.5.0.tar.gz", hash = "sha256:2f8abc20f7248433085eda803936d98992f1343ddb022065779f37c5da0181d0"}, -] -astroid = [ - {file = "astroid-2.11.3-py3-none-any.whl", hash = "sha256:f1af57483cd17e963b2eddce8361e00fc593d1520fe19948488e94ff6476bd71"}, - {file = "astroid-2.11.3.tar.gz", hash = "sha256:4e5ba10571e197785e312966ea5efb2f5783176d4c1a73fa922d474ae2be59f7"}, + {file = "asgiref-3.5.2-py3-none-any.whl", hash = "sha256:1d2880b792ae8757289136f1db2b7b99100ce959b2aa57fd69dab783d05afac4"}, + {file = "asgiref-3.5.2.tar.gz", hash = "sha256:4a29362a6acebe09bf1d6640db38c1dc3d9217c68e6f9f6204d72667fc19a424"}, ] +astroid = [] async-timeout = [ {file = "async-timeout-4.0.2.tar.gz", hash = "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15"}, {file = "async_timeout-4.0.2-py3-none-any.whl", hash = "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c"}, ] -attrs = [ - {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, - {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, -] +attrs = [] bandit = [ {file = "bandit-1.7.4-py3-none-any.whl", hash = "sha256:412d3f259dab4077d0e7f0c11f50f650cc7d10db905d98f6520a95a18049658a"}, {file = "bandit-1.7.4.tar.gz", hash = "sha256:2d63a8c573417bae338962d4b9b06fbc6080f74ecd955a092849e1e65c717bd2"}, @@ -1971,102 +2004,21 @@ billiard = [ {file = "billiard-3.6.4.0-py3-none-any.whl", hash = "sha256:87103ea78fa6ab4d5c751c4909bcff74617d985de7fa8b672cf8618afd5a875b"}, {file = "billiard-3.6.4.0.tar.gz", hash = "sha256:299de5a8da28a783d51b197d496bef4f1595dd023a93a4f59dde1886ae905547"}, ] -black = [ - {file = "black-22.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2497f9c2386572e28921fa8bec7be3e51de6801f7459dffd6e62492531c47e09"}, - {file = "black-22.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5795a0375eb87bfe902e80e0c8cfaedf8af4d49694d69161e5bd3206c18618bb"}, - {file = "black-22.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e3556168e2e5c49629f7b0f377070240bd5511e45e25a4497bb0073d9dda776a"}, - {file = "black-22.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67c8301ec94e3bcc8906740fe071391bce40a862b7be0b86fb5382beefecd968"}, - {file = "black-22.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:fd57160949179ec517d32ac2ac898b5f20d68ed1a9c977346efbac9c2f1e779d"}, - {file = "black-22.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cc1e1de68c8e5444e8f94c3670bb48a2beef0e91dddfd4fcc29595ebd90bb9ce"}, - {file = "black-22.3.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2fc92002d44746d3e7db7cf9313cf4452f43e9ea77a2c939defce3b10b5c82"}, - {file = "black-22.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:a6342964b43a99dbc72f72812bf88cad8f0217ae9acb47c0d4f141a6416d2d7b"}, - {file = "black-22.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:328efc0cc70ccb23429d6be184a15ce613f676bdfc85e5fe8ea2a9354b4e9015"}, - {file = "black-22.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06f9d8846f2340dfac80ceb20200ea5d1b3f181dd0556b47af4e8e0b24fa0a6b"}, - {file = "black-22.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4efa5fad66b903b4a5f96d91461d90b9507a812b3c5de657d544215bb7877a"}, - {file = "black-22.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8477ec6bbfe0312c128e74644ac8a02ca06bcdb8982d4ee06f209be28cdf163"}, - {file = "black-22.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:637a4014c63fbf42a692d22b55d8ad6968a946b4a6ebc385c5505d9625b6a464"}, - {file = "black-22.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:863714200ada56cbc366dc9ae5291ceb936573155f8bf8e9de92aef51f3ad0f0"}, - {file = "black-22.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dbe6e6d2988049b4655b2b739f98785a884d4d6b85bc35133a8fb9a2233176"}, - {file = "black-22.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:cee3e11161dde1b2a33a904b850b0899e0424cc331b7295f2a9698e79f9a69a0"}, - {file = "black-22.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5891ef8abc06576985de8fa88e95ab70641de6c1fca97e2a15820a9b69e51b20"}, - {file = "black-22.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:30d78ba6bf080eeaf0b7b875d924b15cd46fec5fd044ddfbad38c8ea9171043a"}, - {file = "black-22.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ee8f1f7228cce7dffc2b464f07ce769f478968bfb3dd1254a4c2eeed84928aad"}, - {file = "black-22.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ee227b696ca60dd1c507be80a6bc849a5a6ab57ac7352aad1ffec9e8b805f21"}, - {file = "black-22.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:9b542ced1ec0ceeff5b37d69838106a6348e60db7b8fdd245294dc1d26136265"}, - {file = "black-22.3.0-py3-none-any.whl", hash = "sha256:bc58025940a896d7e5356952228b68f793cf5fcb342be703c3a2669a1488cb72"}, - {file = "black-22.3.0.tar.gz", hash = "sha256:35020b8886c022ced9282b51b5a875b6d1ab0c387b31a065b84db7c33085ca79"}, -] +black = [] cached-property = [ {file = "cached-property-1.5.2.tar.gz", hash = "sha256:9fa5755838eecbb2d234c3aa390bd80fbd3ac6b6869109bfc1b499f7bd89a130"}, {file = "cached_property-1.5.2-py2.py3-none-any.whl", hash = "sha256:df4f613cf7ad9a588cc381aaf4a512d26265ecebd5eb9e1ba12f1319eb85a6a0"}, ] celery = [ - {file = "celery-5.2.6-py3-none-any.whl", hash = "sha256:da31f8eae7607b1582e5ee2d3f2d6f58450585afd23379491e3d9229d08102d0"}, - {file = "celery-5.2.6.tar.gz", hash = "sha256:d1398cadf30f576266b34370e28e880306ec55f7a4b6307549b0ae9c15663481"}, -] -certifi = [ - {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, - {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, -] -cffi = [ - {file = "cffi-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c2502a1a03b6312837279c8c1bd3ebedf6c12c4228ddbad40912d671ccc8a962"}, - {file = "cffi-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:23cfe892bd5dd8941608f93348c0737e369e51c100d03718f108bf1add7bd6d0"}, - {file = "cffi-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:41d45de54cd277a7878919867c0f08b0cf817605e4eb94093e7516505d3c8d14"}, - {file = "cffi-1.15.0-cp27-cp27m-win32.whl", hash = "sha256:4a306fa632e8f0928956a41fa8e1d6243c71e7eb59ffbd165fc0b41e316b2474"}, - {file = "cffi-1.15.0-cp27-cp27m-win_amd64.whl", hash = "sha256:e7022a66d9b55e93e1a845d8c9eba2a1bebd4966cd8bfc25d9cd07d515b33fa6"}, - {file = "cffi-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:14cd121ea63ecdae71efa69c15c5543a4b5fbcd0bbe2aad864baca0063cecf27"}, - {file = "cffi-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d4d692a89c5cf08a8557fdeb329b82e7bf609aadfaed6c0d79f5a449a3c7c023"}, - {file = "cffi-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0104fb5ae2391d46a4cb082abdd5c69ea4eab79d8d44eaaf79f1b1fd806ee4c2"}, - {file = "cffi-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:91ec59c33514b7c7559a6acda53bbfe1b283949c34fe7440bcf917f96ac0723e"}, - {file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f5c7150ad32ba43a07c4479f40241756145a1f03b43480e058cfd862bf5041c7"}, - {file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:00c878c90cb53ccfaae6b8bc18ad05d2036553e6d9d1d9dbcf323bbe83854ca3"}, - {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abb9a20a72ac4e0fdb50dae135ba5e77880518e742077ced47eb1499e29a443c"}, - {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a5263e363c27b653a90078143adb3d076c1a748ec9ecc78ea2fb916f9b861962"}, - {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f54a64f8b0c8ff0b64d18aa76675262e1700f3995182267998c31ae974fbc382"}, - {file = "cffi-1.15.0-cp310-cp310-win32.whl", hash = "sha256:c21c9e3896c23007803a875460fb786118f0cdd4434359577ea25eb556e34c55"}, - {file = "cffi-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:5e069f72d497312b24fcc02073d70cb989045d1c91cbd53979366077959933e0"}, - {file = "cffi-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:64d4ec9f448dfe041705426000cc13e34e6e5bb13736e9fd62e34a0b0c41566e"}, - {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2756c88cbb94231c7a147402476be2c4df2f6078099a6f4a480d239a8817ae39"}, - {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b96a311ac60a3f6be21d2572e46ce67f09abcf4d09344c49274eb9e0bf345fc"}, - {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75e4024375654472cc27e91cbe9eaa08567f7fbdf822638be2814ce059f58032"}, - {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:59888172256cac5629e60e72e86598027aca6bf01fa2465bdb676d37636573e8"}, - {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:27c219baf94952ae9d50ec19651a687b826792055353d07648a5695413e0c605"}, - {file = "cffi-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:4958391dbd6249d7ad855b9ca88fae690783a6be9e86df65865058ed81fc860e"}, - {file = "cffi-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:f6f824dc3bce0edab5f427efcfb1d63ee75b6fcb7282900ccaf925be84efb0fc"}, - {file = "cffi-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:06c48159c1abed75c2e721b1715c379fa3200c7784271b3c46df01383b593636"}, - {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c2051981a968d7de9dd2d7b87bcb9c939c74a34626a6e2f8181455dd49ed69e4"}, - {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fd8a250edc26254fe5b33be00402e6d287f562b6a5b2152dec302fa15bb3e997"}, - {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91d77d2a782be4274da750752bb1650a97bfd8f291022b379bb8e01c66b4e96b"}, - {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:45db3a33139e9c8f7c09234b5784a5e33d31fd6907800b316decad50af323ff2"}, - {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:263cc3d821c4ab2213cbe8cd8b355a7f72a8324577dc865ef98487c1aeee2bc7"}, - {file = "cffi-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:17771976e82e9f94976180f76468546834d22a7cc404b17c22df2a2c81db0c66"}, - {file = "cffi-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:3415c89f9204ee60cd09b235810be700e993e343a408693e80ce7f6a40108029"}, - {file = "cffi-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4238e6dab5d6a8ba812de994bbb0a79bddbdf80994e4ce802b6f6f3142fcc880"}, - {file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0808014eb713677ec1292301ea4c81ad277b6cdf2fdd90fd540af98c0b101d20"}, - {file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:57e9ac9ccc3101fac9d6014fba037473e4358ef4e89f8e181f8951a2c0162024"}, - {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b6c2ea03845c9f501ed1313e78de148cd3f6cad741a75d43a29b43da27f2e1e"}, - {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:10dffb601ccfb65262a27233ac273d552ddc4d8ae1bf93b21c94b8511bffe728"}, - {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:786902fb9ba7433aae840e0ed609f45c7bcd4e225ebb9c753aa39725bb3e6ad6"}, - {file = "cffi-1.15.0-cp38-cp38-win32.whl", hash = "sha256:da5db4e883f1ce37f55c667e5c0de439df76ac4cb55964655906306918e7363c"}, - {file = "cffi-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:181dee03b1170ff1969489acf1c26533710231c58f95534e3edac87fff06c443"}, - {file = "cffi-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:45e8636704eacc432a206ac7345a5d3d2c62d95a507ec70d62f23cd91770482a"}, - {file = "cffi-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:31fb708d9d7c3f49a60f04cf5b119aeefe5644daba1cd2a0fe389b674fd1de37"}, - {file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6dc2737a3674b3e344847c8686cf29e500584ccad76204efea14f451d4cc669a"}, - {file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74fdfdbfdc48d3f47148976f49fab3251e550a8720bebc99bf1483f5bfb5db3e"}, - {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffaa5c925128e29efbde7301d8ecaf35c8c60ffbcd6a1ffd3a552177c8e5e796"}, - {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f7d084648d77af029acb79a0ff49a0ad7e9d09057a9bf46596dac9514dc07df"}, - {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef1f279350da2c586a69d32fc8733092fd32cc8ac95139a00377841f59a3f8d8"}, - {file = "cffi-1.15.0-cp39-cp39-win32.whl", hash = "sha256:2a23af14f408d53d5e6cd4e3d9a24ff9e05906ad574822a10563efcef137979a"}, - {file = "cffi-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:3773c4d81e6e818df2efbc7dd77325ca0dcb688116050fb2b3011218eda36139"}, - {file = "cffi-1.15.0.tar.gz", hash = "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954"}, -] -charset-normalizer = [ - {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"}, - {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, + {file = "celery-5.2.7-py3-none-any.whl", hash = "sha256:138420c020cd58d6707e6257b6beda91fd39af7afde5d36c6334d175302c0e14"}, + {file = "celery-5.2.7.tar.gz", hash = "sha256:fafbd82934d30f8a004f81e8f7a062e31413a23d444be8ee3326553915958c6d"}, ] +certifi = [] +cffi = [] +charset-normalizer = [] click = [ - {file = "click-8.1.2-py3-none-any.whl", hash = "sha256:24e1a4a9ec5bf6299411369b208c1df2188d9eb8d916302fe6bf03faed227f1e"}, - {file = "click-8.1.2.tar.gz", hash = "sha256:479707fe14d9ec9a0757618b7a100a0ae4c4e236fac5b7f80ca68028141a1a72"}, + {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, + {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, ] click-didyoumean = [ {file = "click-didyoumean-0.3.0.tar.gz", hash = "sha256:f184f0d851d96b6d29297354ed981b7dd71df7ff500d82fa6d11f0856bee8035"}, @@ -2080,10 +2032,7 @@ click-repl = [ {file = "click-repl-0.2.0.tar.gz", hash = "sha256:cd12f68d745bf6151210790540b4cb064c7b13e571bc64b6957d98d120dacfd8"}, {file = "click_repl-0.2.0-py3-none-any.whl", hash = "sha256:94b3fbbc9406a236f176e0506524b2937e4b23b6f4c0c0b2a0a83f8a64e9194b"}, ] -colorama = [ - {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, - {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, -] +colorama = [] coreapi = [ {file = "coreapi-2.3.3-py2.py3-none-any.whl", hash = "sha256:bf39d118d6d3e171f10df9ede5666f63ad80bba9a29a8ec17726a66cf52ee6f3"}, {file = "coreapi-2.3.3.tar.gz", hash = "sha256:46145fcc1f7017c076a2ef684969b641d18a2991051fddec9458ad3f78ffc1cb"}, @@ -2101,11 +2050,11 @@ deprecated = [ {file = "Deprecated-1.2.13-py2.py3-none-any.whl", hash = "sha256:64756e3e14c8c5eea9795d93c524551432a0be75629f8f29e67ab8caf076c76d"}, {file = "Deprecated-1.2.13.tar.gz", hash = "sha256:43ac5335da90c31c24ba028af536a91d41d53f9e6901ddb021bcc572ce44e38d"}, ] -dill = [] -django = [ - {file = "Django-3.2.13-py3-none-any.whl", hash = "sha256:b896ca61edc079eb6bbaa15cf6071eb69d6aac08cce5211583cfb41515644fdf"}, - {file = "Django-3.2.13.tar.gz", hash = "sha256:6d93497a0a9bf6ba0e0b1a29cccdc40efbfc76297255b1309b3a884a688ec4b6"}, +dill = [ + {file = "dill-0.3.5.1-py2.py3-none-any.whl", hash = "sha256:33501d03270bbe410c72639b350e941882a8b0fd55357580fbc873fba0c59302"}, + {file = "dill-0.3.5.1.tar.gz", hash = "sha256:d75e41f3eff1eee599d738e76ba8f4ad98ea229db8b085318aa2b3333a208c86"}, ] +django = [] django-ajax-tables = [ {file = "django_ajax_tables-1.1.1-py3-none-any.whl", hash = "sha256:62e0138949153c0a994eefbf469f5496b1ad98bc073e170bc021a1aada7a32d0"}, {file = "django_ajax_tables-1.1.1.tar.gz", hash = "sha256:5a7e7bc7940aa6332a564916cde22010a858a3d29fc1090ce8061010ec76337c"}, @@ -2126,10 +2075,7 @@ django-constance = [ {file = "django-constance-2.8.0.tar.gz", hash = "sha256:0a492454acc78799ce7b9f7a28a00c53427d513f34f8bf6fdc90a46d8864b2af"}, {file = "django_constance-2.8.0-py3-none-any.whl", hash = "sha256:60fec73e397d5f4f7440f611b18d3e7ce5342647f316fedc47b62e1411c849e7"}, ] -django-cors-headers = [ - {file = "django-cors-headers-3.10.1.tar.gz", hash = "sha256:b5a874b492bcad99f544bb76ef679472259eb41ee5644ca62d1a94ddb26b7f6e"}, - {file = "django_cors_headers-3.10.1-py3-none-any.whl", hash = "sha256:1390b5846e9835b0911e2574409788af87cd9154246aafbdc8ec546c93698fe6"}, -] +django-cors-headers = [] django-cryptography = [ {file = "django-cryptography-1.0.tar.gz", hash = "sha256:13de5cf8f1250744c104b9e24774d03aa6d8488959dd40cdc016934043652445"}, {file = "django_cryptography-1.0-py3-none-any.whl", hash = "sha256:0a99980b1cee7cc5e52f9b20b322620fea7cc124d770273e7bd285b20fd9d222"}, @@ -2137,10 +2083,7 @@ django-cryptography = [ django-db-file-storage = [ {file = "django-db-file-storage-0.5.5.tar.gz", hash = "sha256:5d5da694b78ab202accab4508b958e0e37b3d146310e76f6f6125e1bdeaaad14"}, ] -django-extensions = [ - {file = "django-extensions-3.1.5.tar.gz", hash = "sha256:28e1e1bf49f0e00307ba574d645b0af3564c981a6dfc87209d48cb98f77d0b1a"}, - {file = "django_extensions-3.1.5-py3-none-any.whl", hash = "sha256:9238b9e016bb0009d621e05cf56ea8ce5cce9b32e91ad2026996a7377ca28069"}, -] +django-extensions = [] django-filter = [ {file = "django-filter-21.1.tar.gz", hash = "sha256:632a251fa8f1aadb4b8cceff932bb52fe2f826dd7dfe7f3eac40e5c463d6836e"}, {file = "django_filter-21.1-py3-none-any.whl", hash = "sha256:f4a6737a30104c98d2e2a5fb93043f36dd7978e0c7ddc92f5998e85433ea5063"}, @@ -2149,7 +2092,10 @@ django-health-check = [ {file = "django-health-check-3.16.5.tar.gz", hash = "sha256:1edfd49293ccebbce29f9da609c407f307aee240ab799ab4201031341ae78c0f"}, {file = "django_health_check-3.16.5-py2.py3-none-any.whl", hash = "sha256:8d66781a0ea82b1a8b44878187b38a27370e94f18287312e39be0593e72d8983"}, ] -django-jinja = [] +django-jinja = [ + {file = "django-jinja-2.10.2.tar.gz", hash = "sha256:bfdfbb55c1f5a679d69ad575d550c4707d386634009152efe014089f3c4d1412"}, + {file = "django_jinja-2.10.2-py3-none-any.whl", hash = "sha256:dd003ec1c95c0989eb28a538831bced62b1b61da551cb44a5dfd708fcf75589f"}, +] django-js-asset = [ {file = "django_js_asset-2.0.0-py3-none-any.whl", hash = "sha256:86f9f300d682537ddaf0487dc2ab356581b8f50c069bdba91d334a46e449f923"}, {file = "django_js_asset-2.0.0.tar.gz", hash = "sha256:adc1ee1efa853fad42054b540c02205344bb406c9bddf87c9e5377a41b7db90f"}, @@ -2158,10 +2104,7 @@ django-mptt = [ {file = "django-mptt-0.13.4.tar.gz", hash = "sha256:80c9fb34df7796a4e5af0cb6b8ade3697555b1aa438bd07a01f32b3ab5202b63"}, {file = "django_mptt-0.13.4-py3-none-any.whl", hash = "sha256:75745b621ae31d97957ed924155a750dfa8cacd9543799ada2d713fd6bc3f5c7"}, ] -django-picklefield = [ - {file = "django-picklefield-3.0.1.tar.gz", hash = "sha256:15ccba592ca953b9edf9532e64640329cd47b136b7f8f10f2939caa5f9ce4287"}, - {file = "django_picklefield-3.0.1-py3-none-any.whl", hash = "sha256:3c702a54fde2d322fe5b2f39b8f78d9f655b8f77944ab26f703be6c0ed335a35"}, -] +django-picklefield = [] django-prometheus = [ {file = "django-prometheus-2.2.0.tar.gz", hash = "sha256:240378a1307c408bd5fc85614a3a57f1ce633d4a222c9e291e2bbf325173b801"}, {file = "django_prometheus-2.2.0-py2.py3-none-any.whl", hash = "sha256:e6616770d8820b8834762764bf1b76ec08e1b98e72a6f359d488a2e15fe3537c"}, @@ -2186,6 +2129,7 @@ django-timezone-field = [ {file = "django-timezone-field-4.1.2.tar.gz", hash = "sha256:cffac62452d060e365938aa9c9f7b72d70d8b26b9c60243bce227b35abd1b9df"}, {file = "django_timezone_field-4.1.2-py3-none-any.whl", hash = "sha256:897c06e40b619cf5731a30d6c156886a7c64cba3a90364832148da7ef32ccf36"}, ] +django-tree-queries = [] django-webserver = [ {file = "django-webserver-1.2.0.tar.gz", hash = "sha256:c976979d15b5ff9a212f7904d3b779e22219aebb4857860fcaf20e4e40f1da40"}, {file = "django_webserver-1.2.0-py2.py3-none-any.whl", hash = "sha256:09200631f266484b9e944e38e92681d6e9aa7d90d089a5c86d5fb08fddad84fe"}, @@ -2194,6 +2138,10 @@ djangorestframework = [ {file = "djangorestframework-3.13.1-py3-none-any.whl", hash = "sha256:24c4bf58ed7e85d1fe4ba250ab2da926d263cd57d64b03e8dcef0ac683f8b1aa"}, {file = "djangorestframework-3.13.1.tar.gz", hash = "sha256:0c33407ce23acc68eca2a6e46424b008c9c02eceb8cf18581921d0092bc1f2ee"}, ] +drf-spectacular = [ + {file = "drf-spectacular-0.22.1.tar.gz", hash = "sha256:866e16ddaae167a1234c76cd8c351161373551db994ce9665b347b32d5daf38b"}, + {file = "drf_spectacular-0.22.1-py3-none-any.whl", hash = "sha256:17ac5e31e5d6150dd5fa10843b429202f4f38069202acc44394cc5a771de63d9"}, +] drf-spectacular-sidecar = [] drf-yasg = [] flake8 = [ @@ -2243,19 +2191,16 @@ idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, ] -importlib-metadata = [ - {file = "importlib_metadata-4.4.0-py3-none-any.whl", hash = "sha256:960d52ba7c21377c990412aca380bf3642d734c2eaab78a2c39319f67c6a5786"}, - {file = "importlib_metadata-4.4.0.tar.gz", hash = "sha256:e592faad8de1bda9fe920cf41e15261e7131bcf266c30306eec00e8e225c1dd5"}, -] -importlib-resources = [ - {file = "importlib_resources-5.7.1-py3-none-any.whl", hash = "sha256:e447dc01619b1e951286f3929be820029d48c75eb25d265c28b92a16548212b8"}, - {file = "importlib_resources-5.7.1.tar.gz", hash = "sha256:b6062987dfc51f0fcb809187cffbd60f35df7acb4589091f154214af6d0d49d3"}, -] +importlib-metadata = [] +importlib-resources = [] inflection = [ {file = "inflection-0.5.1-py2.py3-none-any.whl", hash = "sha256:f38b2b640938a4f35ade69ac3d053042959b62a0f1076a5bbaa1b9526605a8a2"}, {file = "inflection-0.5.1.tar.gz", hash = "sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417"}, ] -invoke = [] +invoke = [ + {file = "invoke-1.7.1-py3-none-any.whl", hash = "sha256:2dc975b4f92be0c0a174ad2d063010c8a1fdb5e9389d69871001118b4fcac4fb"}, + {file = "invoke-1.7.1.tar.gz", hash = "sha256:7b6deaf585eee0a848205d0b8c0014b9bf6f287a8eb798818a642dff1df14b19"}, +] isort = [ {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, @@ -2268,10 +2213,7 @@ jinja2 = [ {file = "Jinja2-3.0.3-py3-none-any.whl", hash = "sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8"}, {file = "Jinja2-3.0.3.tar.gz", hash = "sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7"}, ] -jsonschema = [ - {file = "jsonschema-4.4.0-py3-none-any.whl", hash = "sha256:77281a1f71684953ee8b3d488371b162419767973789272434bbc3f29d9c8823"}, - {file = "jsonschema-4.4.0.tar.gz", hash = "sha256:636694eb41b3535ed608fe04129f26542b59ed99808b4f688aa32dcf55317a83"}, -] +jsonschema = [] kombu = [ {file = "kombu-5.2.4-py3-none-any.whl", hash = "sha256:8b213b24293d3417bcf0d2f5537b7f756079e3ea232a8386dcc89a59fd2361a4"}, {file = "kombu-5.2.4.tar.gz", hash = "sha256:37cee3ee725f94ea8bb173eaab7c1760203ea53bbebae226328600f9d2799610"}, @@ -2316,8 +2258,8 @@ lazy-object-proxy = [ {file = "lazy_object_proxy-1.7.1-pp37.pp38-none-any.whl", hash = "sha256:d66906d5785da8e0be7360912e99c9188b70f52c422f9fc18223347235691a84"}, ] markdown = [ - {file = "Markdown-3.3.6-py3-none-any.whl", hash = "sha256:9923332318f843411e9932237530df53162e29dc7a4e2b91e35764583c46c9a3"}, - {file = "Markdown-3.3.6.tar.gz", hash = "sha256:76df8ae32294ec39dcf89340382882dfa12975f87f45c3ed1ecdb1e8cefc7006"}, + {file = "Markdown-3.3.7-py3-none-any.whl", hash = "sha256:f5da449a6e1c989a4cea2631aa8ee67caa5a2ef855d551c88f9e309f4634c621"}, + {file = "Markdown-3.3.7.tar.gz", hash = "sha256:cbb516f16218e643d8e0a95b309f77eb118cb138d39a4f27851e6a63581db874"}, ] markupsafe = [ {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, @@ -2379,19 +2321,13 @@ mypy-extensions = [ {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, ] -nautobot = [ - {file = "nautobot-1.3.1-py3-none-any.whl", hash = "sha256:40f3d7a1eb31221f6d15802d0cb845bc00ea8bb4050a54c54cd17b62ab006b44"}, - {file = "nautobot-1.3.1.tar.gz", hash = "sha256:2144b091b124df64fb27b2ba86143aba2123ee6c028df98daf06a3e1bb27f0e4"}, -] +nautobot = [] nautobot-capacity-metrics = [] netaddr = [ {file = "netaddr-0.8.0-py2.py3-none-any.whl", hash = "sha256:9666d0232c32d2656e5e5f8d735f58fd6c7457ce52fc21c98d45f2af78f990ac"}, {file = "netaddr-0.8.0.tar.gz", hash = "sha256:d6cc57c7a07b1d9d2e917aa8b36ae8ce61c35ba3fcd1b83ca31c5a0ee2b5a243"}, ] -netutils = [ - {file = "netutils-1.0.0-py3-none-any.whl", hash = "sha256:f6e695dc761f41c68d3b2b9763f6ac3bc636d8b3c70c9886dae2655b2eab5c2b"}, - {file = "netutils-1.0.0.tar.gz", hash = "sha256:ead1d927374a76a9ff78867b5f72b66cd26eaa9ec9e8d00e12e8085694a0275a"}, -] +netutils = [] oauthlib = [ {file = "oauthlib-3.2.0-py3-none-any.whl", hash = "sha256:6db33440354787f9b7f3a6dbd4febf5d0f93758354060e802f6c06cb493022fe"}, {file = "oauthlib-3.2.0.tar.gz", hash = "sha256:23a8208d75b902797ea29fd31fa80a15ed9dc2c6c16fe73f5d346f83f6fa27a2"}, @@ -2400,48 +2336,9 @@ packaging = [ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, ] -pathspec = [ - {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, - {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, -] +pathspec = [] pbr = [] -pillow = [ - {file = "Pillow-9.0.1-1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a5d24e1d674dd9d72c66ad3ea9131322819ff86250b30dc5821cbafcfa0b96b4"}, - {file = "Pillow-9.0.1-1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2632d0f846b7c7600edf53c48f8f9f1e13e62f66a6dbc15191029d950bfed976"}, - {file = "Pillow-9.0.1-1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b9618823bd237c0d2575283f2939655f54d51b4527ec3972907a927acbcc5bfc"}, - {file = "Pillow-9.0.1-cp310-cp310-macosx_10_10_universal2.whl", hash = "sha256:9bfdb82cdfeccec50aad441afc332faf8606dfa5e8efd18a6692b5d6e79f00fd"}, - {file = "Pillow-9.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5100b45a4638e3c00e4d2320d3193bdabb2d75e79793af7c3eb139e4f569f16f"}, - {file = "Pillow-9.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:528a2a692c65dd5cafc130de286030af251d2ee0483a5bf50c9348aefe834e8a"}, - {file = "Pillow-9.0.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f29d831e2151e0b7b39981756d201f7108d3d215896212ffe2e992d06bfe049"}, - {file = "Pillow-9.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:855c583f268edde09474b081e3ddcd5cf3b20c12f26e0d434e1386cc5d318e7a"}, - {file = "Pillow-9.0.1-cp310-cp310-win32.whl", hash = "sha256:d9d7942b624b04b895cb95af03a23407f17646815495ce4547f0e60e0b06f58e"}, - {file = "Pillow-9.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:81c4b81611e3a3cb30e59b0cf05b888c675f97e3adb2c8672c3154047980726b"}, - {file = "Pillow-9.0.1-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:413ce0bbf9fc6278b2d63309dfeefe452835e1c78398efb431bab0672fe9274e"}, - {file = "Pillow-9.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80fe64a6deb6fcfdf7b8386f2cf216d329be6f2781f7d90304351811fb591360"}, - {file = "Pillow-9.0.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cef9c85ccbe9bee00909758936ea841ef12035296c748aaceee535969e27d31b"}, - {file = "Pillow-9.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d19397351f73a88904ad1aee421e800fe4bbcd1aeee6435fb62d0a05ccd1030"}, - {file = "Pillow-9.0.1-cp37-cp37m-win32.whl", hash = "sha256:d21237d0cd37acded35154e29aec853e945950321dd2ffd1a7d86fe686814669"}, - {file = "Pillow-9.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:ede5af4a2702444a832a800b8eb7f0a7a1c0eed55b644642e049c98d589e5092"}, - {file = "Pillow-9.0.1-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:b5b3f092fe345c03bca1e0b687dfbb39364b21ebb8ba90e3fa707374b7915204"}, - {file = "Pillow-9.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:335ace1a22325395c4ea88e00ba3dc89ca029bd66bd5a3c382d53e44f0ccd77e"}, - {file = "Pillow-9.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:db6d9fac65bd08cea7f3540b899977c6dee9edad959fa4eaf305940d9cbd861c"}, - {file = "Pillow-9.0.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f154d173286a5d1863637a7dcd8c3437bb557520b01bddb0be0258dcb72696b5"}, - {file = "Pillow-9.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14d4b1341ac07ae07eb2cc682f459bec932a380c3b122f5540432d8977e64eae"}, - {file = "Pillow-9.0.1-cp38-cp38-win32.whl", hash = "sha256:effb7749713d5317478bb3acb3f81d9d7c7f86726d41c1facca068a04cf5bb4c"}, - {file = "Pillow-9.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:7f7609a718b177bf171ac93cea9fd2ddc0e03e84d8fa4e887bdfc39671d46b00"}, - {file = "Pillow-9.0.1-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:80ca33961ced9c63358056bd08403ff866512038883e74f3a4bf88ad3eb66838"}, - {file = "Pillow-9.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1c3c33ac69cf059bbb9d1a71eeaba76781b450bc307e2291f8a4764d779a6b28"}, - {file = "Pillow-9.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12875d118f21cf35604176872447cdb57b07126750a33748bac15e77f90f1f9c"}, - {file = "Pillow-9.0.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:514ceac913076feefbeaf89771fd6febde78b0c4c1b23aaeab082c41c694e81b"}, - {file = "Pillow-9.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3c5c79ab7dfce6d88f1ba639b77e77a17ea33a01b07b99840d6ed08031cb2a7"}, - {file = "Pillow-9.0.1-cp39-cp39-win32.whl", hash = "sha256:718856856ba31f14f13ba885ff13874be7fefc53984d2832458f12c38205f7f7"}, - {file = "Pillow-9.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:f25ed6e28ddf50de7e7ea99d7a976d6a9c415f03adcaac9c41ff6ff41b6d86ac"}, - {file = "Pillow-9.0.1-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:011233e0c42a4a7836498e98c1acf5e744c96a67dd5032a6f666cc1fb97eab97"}, - {file = "Pillow-9.0.1-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253e8a302a96df6927310a9d44e6103055e8fb96a6822f8b7f514bb7ef77de56"}, - {file = "Pillow-9.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6295f6763749b89c994fcb6d8a7f7ce03c3992e695f89f00b741b4580b199b7e"}, - {file = "Pillow-9.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:a9f44cd7e162ac6191491d7249cceb02b8116b0f7e847ee33f739d7cb1ea1f70"}, - {file = "Pillow-9.0.1.tar.gz", hash = "sha256:6c8bc8238a7dfdaf7a75f5ec5a663f4173f8c367e5a39f87e720495e1eed75fa"}, -] +pillow = [] platformdirs = [ {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, @@ -2453,10 +2350,7 @@ prometheus-client = [ promise = [ {file = "promise-2.3.tar.gz", hash = "sha256:dfd18337c523ba4b6a58801c164c1904a9d4d1b1747c7d5dbf45b693a49d93d0"}, ] -prompt-toolkit = [ - {file = "prompt_toolkit-3.0.29-py3-none-any.whl", hash = "sha256:62291dad495e665fca0bda814e342c69952086afb0f4094d0893d357e5c78752"}, - {file = "prompt_toolkit-3.0.29.tar.gz", hash = "sha256:bd640f60e8cecd74f0dc249713d433ace2ddc62b65ee07f96d358e0b152b6ea7"}, -] +prompt-toolkit = [] prybar = [ {file = "prybar-1.0.0-py2.py3-none-any.whl", hash = "sha256:07d5b12fb12da703fb266d67d3a117e1c20a30cd9daa274586cc4af8081baea7"}, {file = "prybar-1.0.0.tar.gz", hash = "sha256:9f2af7b4fdce2d0febf6fb73a0854956a384fad65df19c3f57caab7c4726a88a"}, @@ -2573,8 +2467,8 @@ pyjwt = [ {file = "PyJWT-2.4.0.tar.gz", hash = "sha256:d42908208c699b3b973cbeb01a969ba6a96c821eefb1c5bfe4c390c01d67abba"}, ] pylint = [ - {file = "pylint-2.13.7-py3-none-any.whl", hash = "sha256:13ddbbd8872c804574149e81197c28877eba75224ba6b76cd8652fc31df55c1c"}, - {file = "pylint-2.13.7.tar.gz", hash = "sha256:911d3a97c808f7554643bcc5416028cfdc42eae34ed129b150741888c688d5d5"}, + {file = "pylint-2.13.9-py3-none-any.whl", hash = "sha256:705c620d388035bdd9ff8b44c5bcdd235bfb49d276d488dd2c8ff1736aa42526"}, + {file = "pylint-2.13.9.tar.gz", hash = "sha256:095567c96e19e6f57b5b907e67d265ff535e588fe26b12b5ebe1fc5645b2c731"}, ] pylint-django = [ {file = "pylint-django-2.5.3.tar.gz", hash = "sha256:0ac090d106c62fe33782a1d01bda1610b761bb1c9bf5035ced9d5f23a13d8591"}, @@ -2586,8 +2480,8 @@ pylint-plugin-utils = [ ] pymdown-extensions = [] pyparsing = [ - {file = "pyparsing-3.0.8-py3-none-any.whl", hash = "sha256:ef7b523f6356f763771559412c0d7134753f037822dad1b16945b7b846f7ad06"}, - {file = "pyparsing-3.0.8.tar.gz", hash = "sha256:7bf433498c016c4314268d95df76c81b842a4cb2b276fa3312cfb1e1d85f6954"}, + {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, + {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, ] pyrsistent = [ {file = "pyrsistent-0.18.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:df46c854f490f81210870e509818b729db4488e1f30f2a1ce1698b2295a878d1"}, @@ -2623,10 +2517,7 @@ python3-openid = [ {file = "python3-openid-3.2.0.tar.gz", hash = "sha256:33fbf6928f401e0b790151ed2b5290b02545e8775f982485205a066f874aaeaf"}, {file = "python3_openid-3.2.0-py3-none-any.whl", hash = "sha256:6626f771e0417486701e0b4daff762e7212e820ca5b29fcc0d05f6f8736dfa6b"}, ] -pytz = [ - {file = "pytz-2022.1-py2.py3-none-any.whl", hash = "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"}, - {file = "pytz-2022.1.tar.gz", hash = "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7"}, -] +pytz = [] pyuwsgi = [ {file = "pyuwsgi-2.0.20-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bd09a7328558728f6e38f77609f44d16f18d8b4dc5f8b8776f657c8892b70337"}, {file = "pyuwsgi-2.0.20-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:210ad768b8af02bbfd3c0345a51c6d2c56a2333ac268d9a97ecf2d4209f78ef8"}, @@ -2695,10 +2586,7 @@ pyyaml-env-tag = [ {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"}, ] redis = [] -requests = [ - {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, - {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, -] +requests = [] requests-oauthlib = [ {file = "requests-oauthlib-1.3.1.tar.gz", hash = "sha256:75beac4a47881eeb94d5ea5d6ad31ef88856affe2332b9aafb52c6452ccf0d7a"}, {file = "requests_oauthlib-1.3.1-py2.py3-none-any.whl", hash = "sha256:2577c501a2fb8d05a304c09d090d6e47c306fef15809d102b327cf8364bddab5"}, @@ -2707,10 +2595,7 @@ requests-toolbelt = [ {file = "requests-toolbelt-0.9.1.tar.gz", hash = "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0"}, {file = "requests_toolbelt-0.9.1-py2.py3-none-any.whl", hash = "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f"}, ] -rq = [ - {file = "rq-1.10.1-py2.py3-none-any.whl", hash = "sha256:92f4cf38b2364c1697b541e77c0fe62b7e5242fa864324f262be126ee2a07e3a"}, - {file = "rq-1.10.1.tar.gz", hash = "sha256:62d06b44c3acfa5d1933c5a4ec3fbc2484144a8af60e318d0b8447c5236271e2"}, -] +rq = [] "ruamel.yaml" = [ {file = "ruamel.yaml-0.17.21-py3-none-any.whl", hash = "sha256:742b35d3d665023981bd6d16b3d24248ce5df75fdb4e2924e93a05c1f8b61ca7"}, {file = "ruamel.yaml-0.17.21.tar.gz", hash = "sha256:8b7ce697a2f212752a35c1ac414471dc16c424c9573be4926b56ff3f5d23b7af"}, @@ -2763,10 +2648,7 @@ social-auth-app-django = [ {file = "social-auth-app-django-5.0.0.tar.gz", hash = "sha256:b6e3132ce087cdd6e1707aeb1b588be41d318408fcf6395435da0bc6fe9a9795"}, {file = "social_auth_app_django-5.0.0-py3-none-any.whl", hash = "sha256:52241a25445a010ab1c108bafff21fc5522d5c8cd0d48a92c39c7371824b065d"}, ] -social-auth-core = [ - {file = "social-auth-core-4.2.0.tar.gz", hash = "sha256:af6fc7d9ee39f0aa697cd953121add638fc32a49816341a9838a67904c39e034"}, - {file = "social_auth_core-4.2.0-py3-none-any.whl", hash = "sha256:08fe6645b98950cff9d6970b6704345f821d78729df0164bca0002c624b001e1"}, -] +social-auth-core = [] sqlparse = [ {file = "sqlparse-0.4.2-py3-none-any.whl", hash = "sha256:48719e356bb8b42991bdbb1e8b83223757b93789c00910a616a071910ca4a64d"}, {file = "sqlparse-0.4.2.tar.gz", hash = "sha256:0c00730c74263a94e5a9919ade150dfc3b19c574389985446148402998287dae"}, @@ -2775,14 +2657,8 @@ stevedore = [ {file = "stevedore-3.5.0-py3-none-any.whl", hash = "sha256:a547de73308fd7e90075bb4d301405bebf705292fa90a90fc3bcf9133f58616c"}, {file = "stevedore-3.5.0.tar.gz", hash = "sha256:f40253887d8712eaa2bb0ea3830374416736dc8ec0e22f5a65092c1174c44335"}, ] -svgwrite = [ - {file = "svgwrite-1.4.2-py3-none-any.whl", hash = "sha256:ca63d76396d1f6f099a2b2d8cf1419e1c1de8deece9a2b7f4da0632067d71d43"}, - {file = "svgwrite-1.4.2.zip", hash = "sha256:d304a929f197d31647c287c10eee0f64378058e1c83a9df83433a5980864e59f"}, -] -swagger-spec-validator = [ - {file = "swagger-spec-validator-2.7.4.tar.gz", hash = "sha256:2aee5e1fc0503be9f8299378b10c92169572781573c6de3315e831fd0559ba73"}, - {file = "swagger_spec_validator-2.7.4-py2.py3-none-any.whl", hash = "sha256:4e373a4db5262e7257fde17d84c5c0178327b8057985ab1be63f580bfa009855"}, -] +svgwrite = [] +swagger-spec-validator = [] text-unidecode = [ {file = "text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93"}, {file = "text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8"}, @@ -2796,43 +2672,37 @@ tomli = [ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] typed-ast = [ - {file = "typed_ast-1.5.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ad3b48cf2b487be140072fb86feff36801487d4abb7382bb1929aaac80638ea"}, - {file = "typed_ast-1.5.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:542cd732351ba8235f20faa0fc7398946fe1a57f2cdb289e5497e1e7f48cfedb"}, - {file = "typed_ast-1.5.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc2c11ae59003d4a26dda637222d9ae924387f96acae9492df663843aefad55"}, - {file = "typed_ast-1.5.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fd5df1313915dbd70eaaa88c19030b441742e8b05e6103c631c83b75e0435ccc"}, - {file = "typed_ast-1.5.3-cp310-cp310-win_amd64.whl", hash = "sha256:e34f9b9e61333ecb0f7d79c21c28aa5cd63bec15cb7e1310d7d3da6ce886bc9b"}, - {file = "typed_ast-1.5.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f818c5b81966d4728fec14caa338e30a70dfc3da577984d38f97816c4b3071ec"}, - {file = "typed_ast-1.5.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3042bfc9ca118712c9809201f55355479cfcdc17449f9f8db5e744e9625c6805"}, - {file = "typed_ast-1.5.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4fff9fdcce59dc61ec1b317bdb319f8f4e6b69ebbe61193ae0a60c5f9333dc49"}, - {file = "typed_ast-1.5.3-cp36-cp36m-win_amd64.whl", hash = "sha256:8e0b8528838ffd426fea8d18bde4c73bcb4167218998cc8b9ee0a0f2bfe678a6"}, - {file = "typed_ast-1.5.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8ef1d96ad05a291f5c36895d86d1375c0ee70595b90f6bb5f5fdbee749b146db"}, - {file = "typed_ast-1.5.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed44e81517364cb5ba367e4f68fca01fba42a7a4690d40c07886586ac267d9b9"}, - {file = "typed_ast-1.5.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f60d9de0d087454c91b3999a296d0c4558c1666771e3460621875021bf899af9"}, - {file = "typed_ast-1.5.3-cp37-cp37m-win_amd64.whl", hash = "sha256:9e237e74fd321a55c90eee9bc5d44be976979ad38a29bbd734148295c1ce7617"}, - {file = "typed_ast-1.5.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ee852185964744987609b40aee1d2eb81502ae63ee8eef614558f96a56c1902d"}, - {file = "typed_ast-1.5.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:27e46cdd01d6c3a0dd8f728b6a938a6751f7bd324817501c15fb056307f918c6"}, - {file = "typed_ast-1.5.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d64dabc6336ddc10373922a146fa2256043b3b43e61f28961caec2a5207c56d5"}, - {file = "typed_ast-1.5.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8cdf91b0c466a6c43f36c1964772918a2c04cfa83df8001ff32a89e357f8eb06"}, - {file = "typed_ast-1.5.3-cp38-cp38-win_amd64.whl", hash = "sha256:9cc9e1457e1feb06b075c8ef8aeb046a28ec351b1958b42c7c31c989c841403a"}, - {file = "typed_ast-1.5.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e20d196815eeffb3d76b75223e8ffed124e65ee62097e4e73afb5fec6b993e7a"}, - {file = "typed_ast-1.5.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:37e5349d1d5de2f4763d534ccb26809d1c24b180a477659a12c4bde9dd677d74"}, - {file = "typed_ast-1.5.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9f1a27592fac87daa4e3f16538713d705599b0a27dfe25518b80b6b017f0a6d"}, - {file = "typed_ast-1.5.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8831479695eadc8b5ffed06fdfb3e424adc37962a75925668deeb503f446c0a3"}, - {file = "typed_ast-1.5.3-cp39-cp39-win_amd64.whl", hash = "sha256:20d5118e494478ef2d3a2702d964dae830aedd7b4d3b626d003eea526be18718"}, - {file = "typed_ast-1.5.3.tar.gz", hash = "sha256:27f25232e2dd0edfe1f019d6bfaaf11e86e657d9bdb7b0956db95f560cceb2b3"}, -] -typing-extensions = [ - {file = "typing_extensions-4.2.0-py3-none-any.whl", hash = "sha256:6657594ee297170d19f67d55c05852a874e7eb634f4f753dbd667855e07c1708"}, - {file = "typing_extensions-4.2.0.tar.gz", hash = "sha256:f1c24655a0da0d1b67f07e17a5e6b2a105894e6824b92096378bb3668ef02376"}, -] + {file = "typed_ast-1.5.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:669dd0c4167f6f2cd9f57041e03c3c2ebf9063d0757dc89f79ba1daa2bfca9d4"}, + {file = "typed_ast-1.5.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:211260621ab1cd7324e0798d6be953d00b74e0428382991adfddb352252f1d62"}, + {file = "typed_ast-1.5.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:267e3f78697a6c00c689c03db4876dd1efdfea2f251a5ad6555e82a26847b4ac"}, + {file = "typed_ast-1.5.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c542eeda69212fa10a7ada75e668876fdec5f856cd3d06829e6aa64ad17c8dfe"}, + {file = "typed_ast-1.5.4-cp310-cp310-win_amd64.whl", hash = "sha256:a9916d2bb8865f973824fb47436fa45e1ebf2efd920f2b9f99342cb7fab93f72"}, + {file = "typed_ast-1.5.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:79b1e0869db7c830ba6a981d58711c88b6677506e648496b1f64ac7d15633aec"}, + {file = "typed_ast-1.5.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a94d55d142c9265f4ea46fab70977a1944ecae359ae867397757d836ea5a3f47"}, + {file = "typed_ast-1.5.4-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:183afdf0ec5b1b211724dfef3d2cad2d767cbefac291f24d69b00546c1837fb6"}, + {file = "typed_ast-1.5.4-cp36-cp36m-win_amd64.whl", hash = "sha256:639c5f0b21776605dd6c9dbe592d5228f021404dafd377e2b7ac046b0349b1a1"}, + {file = "typed_ast-1.5.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:cf4afcfac006ece570e32d6fa90ab74a17245b83dfd6655a6f68568098345ff6"}, + {file = "typed_ast-1.5.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed855bbe3eb3715fca349c80174cfcfd699c2f9de574d40527b8429acae23a66"}, + {file = "typed_ast-1.5.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6778e1b2f81dfc7bc58e4b259363b83d2e509a65198e85d5700dfae4c6c8ff1c"}, + {file = "typed_ast-1.5.4-cp37-cp37m-win_amd64.whl", hash = "sha256:0261195c2062caf107831e92a76764c81227dae162c4f75192c0d489faf751a2"}, + {file = "typed_ast-1.5.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2efae9db7a8c05ad5547d522e7dbe62c83d838d3906a3716d1478b6c1d61388d"}, + {file = "typed_ast-1.5.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7d5d014b7daa8b0bf2eaef684295acae12b036d79f54178b92a2b6a56f92278f"}, + {file = "typed_ast-1.5.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:370788a63915e82fd6f212865a596a0fefcbb7d408bbbb13dea723d971ed8bdc"}, + {file = "typed_ast-1.5.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4e964b4ff86550a7a7d56345c7864b18f403f5bd7380edf44a3c1fb4ee7ac6c6"}, + {file = "typed_ast-1.5.4-cp38-cp38-win_amd64.whl", hash = "sha256:683407d92dc953c8a7347119596f0b0e6c55eb98ebebd9b23437501b28dcbb8e"}, + {file = "typed_ast-1.5.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4879da6c9b73443f97e731b617184a596ac1235fe91f98d279a7af36c796da35"}, + {file = "typed_ast-1.5.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3e123d878ba170397916557d31c8f589951e353cc95fb7f24f6bb69adc1a8a97"}, + {file = "typed_ast-1.5.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebd9d7f80ccf7a82ac5f88c521115cc55d84e35bf8b446fcd7836eb6b98929a3"}, + {file = "typed_ast-1.5.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98f80dee3c03455e92796b58b98ff6ca0b2a6f652120c263efdba4d6c5e58f72"}, + {file = "typed_ast-1.5.4-cp39-cp39-win_amd64.whl", hash = "sha256:0fdbcf2fef0ca421a3f5912555804296f0b0960f0418c440f5d6d3abb549f3e1"}, + {file = "typed_ast-1.5.4.tar.gz", hash = "sha256:39e21ceb7388e4bb37f4c679d72707ed46c2fbf2a5609b8b8ebc4b067d977df2"}, +] +typing-extensions = [] uritemplate = [ {file = "uritemplate-4.1.1-py2.py3-none-any.whl", hash = "sha256:830c08b8d99bdd312ea4ead05994a38e8936266f84b9a7878232db50b044e02e"}, {file = "uritemplate-4.1.1.tar.gz", hash = "sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0"}, ] -urllib3 = [ - {file = "urllib3-1.26.9-py2.py3-none-any.whl", hash = "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"}, - {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, -] +urllib3 = [] vine = [ {file = "vine-5.0.0-py2.py3-none-any.whl", hash = "sha256:4c9dceab6f76ed92105027c49c823800dd33cacce13bdedc5b914e3514b7fb30"}, {file = "vine-5.0.0.tar.gz", hash = "sha256:7d3b1624a953da82ef63462013bbd271d3eb75751489f9807598e8f340bd637e"}, @@ -2842,13 +2712,72 @@ wcwidth = [ {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, ] -webexteamssdk = [ - {file = "webexteamssdk-1.6-py3-none-any.whl", hash = "sha256:e4958dca3903c659fe1e0f79e38740cb2ec1ae2589599807b179c3efb356c3a2"}, - {file = "webexteamssdk-1.6.tar.gz", hash = "sha256:980f268d89187d1a157dfbadcb626fce849080a31550e549cfe838f0203b3a3d"}, +webexteamssdk = [] +wrapt = [ + {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59"}, + {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462"}, + {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"}, + {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"}, + {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"}, + {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"}, + {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"}, + {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3"}, + {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d"}, + {file = "wrapt-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7"}, + {file = "wrapt-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00"}, + {file = "wrapt-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1"}, + {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1"}, + {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569"}, + {file = "wrapt-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed"}, + {file = "wrapt-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471"}, + {file = "wrapt-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d"}, + {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015"}, + {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a"}, + {file = "wrapt-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853"}, + {file = "wrapt-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c"}, + {file = "wrapt-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456"}, + {file = "wrapt-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1"}, + {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0"}, + {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57"}, + {file = "wrapt-1.14.1-cp38-cp38-win32.whl", hash = "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5"}, + {file = "wrapt-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"}, + {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"}, + {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"}, + {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"}, + {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"}, + {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, + {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, ] -wrapt = [] yamllint = [] -zipp = [ - {file = "zipp-3.8.0-py3-none-any.whl", hash = "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099"}, - {file = "zipp-3.8.0.tar.gz", hash = "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad"}, -] +zipp = [] diff --git a/pyproject.toml b/pyproject.toml index 5b2fa667..d92fc9d6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "nautobot-chatops" -version = "1.8.1" +version = "1.9.0" description = "A plugin providing chatbot capabilities for Nautobot" authors = ["Network to Code, LLC "] readme = "README.md" @@ -21,7 +21,7 @@ include = [ [tool.poetry.dependencies] python = "^3.7" -nautobot = "^1.1.0" +nautobot = "^1.2.0" nautobot-capacity-metrics = "*" texttable = "^1.6.2" PyJWT = "^2.1.0" @@ -31,14 +31,14 @@ Markdown = "!=3.3.5" [tool.poetry.dev-dependencies] black = "*" -yamllint = "1.27.1" +yamllint = "*" bandit = "*" pylint = "*" pylint-django = "*" pydocstyle = "*" prybar = "*" invoke = "*" -flake8 = "*" +flake8 = "^3.9.2" # Rendering docs to HTML mkdocs = "1.3.1" # Material for mkdocs theme From 0641555f286696a8046f7182f842275b31b48bd9 Mon Sep 17 00:00:00 2001 From: Stephen Kiely Date: Mon, 5 Sep 2022 22:16:04 -0500 Subject: [PATCH 10/14] Match nautobot-version with poetry.lock --- .github/workflows/ci.yml | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 893da76e..010aecaa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -101,7 +101,7 @@ jobs: fail-fast: true matrix: python-version: ["3.7", "3.8", "3.9"] - nautobot-version: ["1.3.4", "1.4.2"] + nautobot-version: ["1.3.0", "1.4.2"] # Also test Python 3.10 with Nautobot 1.3.x include: - python-version: "3.10" @@ -121,22 +121,12 @@ jobs: run: "cp development/creds.example.env development/creds.env" - name: "Remove Poetry Lock for Older Nautobot Tests" run: "rm -f poetry.lock" - if: "matrix.nautobot-version != '1.3.0'" - - name: "Remove Black" - # We have dependency issues specifically with Nautobot 1.1 but we really don't care about black - # on Anything less than the latest - if: "matrix.nautobot-version != '1.3.0'" - run: "poetry remove black --dev" - - name: "Handle Markupsafe bug" - # Markupsafe 2.0.1 conflicts with the new jinja, but 2.1.x conflicts with Nautobot 1.1-2 - # Markdown has issues with importlib in newer versions - if: "matrix.nautobot-version != '1.3.0'" - run: "poetry add markupsafe==2.0.1" + if: "matrix.nautobot-version != '1.4.2'" - name: "Set Nautobot install to the testing version" run: "poetry add nautobot==${{ matrix.nautobot-version }}" - name: "Regenerate Poetry Lock for Older Nautobot Tests" run: "poetry update --lock" - if: "matrix.nautobot-version != '1.3.0'" + if: "matrix.nautobot-version != '1.4.2'" - name: "Build Container" run: "poetry run invoke build" - name: "Run Tests" From b22b16070a5e8fbcc87069b0a9a9ddc67c99bf7f Mon Sep 17 00:00:00 2001 From: Stephen Kiely Date: Tue, 6 Sep 2022 09:17:50 -0500 Subject: [PATCH 11/14] Install setuptools GitHub tests are failing due to setuptools not being in the image. --- development/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/development/Dockerfile b/development/Dockerfile index 51053b1f..7ee4ca70 100644 --- a/development/Dockerfile +++ b/development/Dockerfile @@ -11,7 +11,7 @@ WORKDIR /source COPY poetry.lock pyproject.toml /source/ # --no-root declares not to install the project package since we're wanting to take advantage of caching dependency installation # and the project is copied in and installed after this step -RUN poetry install --no-interaction --no-ansi --no-root +RUN pip install setuptools && poetry install --no-interaction --no-ansi --no-root # Copy in the rest of the source code and install local Nautobot plugin COPY . /source From 5725b636834810dc771abd9541b741a200ffc316 Mon Sep 17 00:00:00 2001 From: Stephen Kiely Date: Tue, 6 Sep 2022 10:22:30 -0500 Subject: [PATCH 12/14] Pin poetry version in dockerfile. --- development/Dockerfile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/development/Dockerfile b/development/Dockerfile index 7ee4ca70..b6212cf4 100644 --- a/development/Dockerfile +++ b/development/Dockerfile @@ -9,9 +9,13 @@ WORKDIR /source # Copy in only pyproject.toml/poetry.lock to help with caching this layer if no updates to dependencies COPY poetry.lock pyproject.toml /source/ +# Pin poetry version to 1.2.0 in older Nautobot Images. +RUN curl -sSL https://install.python-poetry.org -o /tmp/install-poetry.py && \ + python /tmp/install-poetry.py --version 1.2.0 && \ + rm -f /tmp/install-poetry.py # --no-root declares not to install the project package since we're wanting to take advantage of caching dependency installation # and the project is copied in and installed after this step -RUN pip install setuptools && poetry install --no-interaction --no-ansi --no-root +RUN poetry install --no-interaction --no-ansi --no-root # Copy in the rest of the source code and install local Nautobot plugin COPY . /source From 9e61aa24d1f98269f2378b8eae831a4791cf8d06 Mon Sep 17 00:00:00 2001 From: Stephen Kiely Date: Tue, 6 Sep 2022 10:24:18 -0500 Subject: [PATCH 13/14] Remove redundant poetry lock --- .github/workflows/ci.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 010aecaa..b3442fed 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -124,9 +124,6 @@ jobs: if: "matrix.nautobot-version != '1.4.2'" - name: "Set Nautobot install to the testing version" run: "poetry add nautobot==${{ matrix.nautobot-version }}" - - name: "Regenerate Poetry Lock for Older Nautobot Tests" - run: "poetry update --lock" - if: "matrix.nautobot-version != '1.4.2'" - name: "Build Container" run: "poetry run invoke build" - name: "Run Tests" From e3932c2d0706f619adca330e7d0bb1cdc0a3ba4b Mon Sep 17 00:00:00 2001 From: Stephen Kiely Date: Tue, 6 Sep 2022 11:07:50 -0500 Subject: [PATCH 14/14] Fix brief test based on Nautobot version. --- mkdocs.yml | 6 ++--- nautobot_chatops/tests/test_api.py | 40 ++++++++++++++++++++---------- 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 2f489959..0803afc9 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -53,19 +53,19 @@ extra: social: - icon: "fontawesome/solid/rss" link: "https://blog.networktocode.com/blog/tags/nautobot" - name: "NetworkToCode Blog" + name: "Network to Code Blog" - icon: "fontawesome/brands/youtube" link: "https://www.youtube.com/playlist?list=PLjA0bhxgryJ2Ts4GJMDA-tPzVWEncv4pb" name: "Nautobot Videos" - icon: "fontawesome/brands/slack" link: "https://www.networktocode.com/community/" - name: "NetworkToCode Community" + name: "Network to Code Community" - icon: "fontawesome/brands/github" link: "https://github.com/nautobot/nautobot" name: "GitHub Repo" - icon: "fontawesome/brands/twitter" link: "https://twitter.com/networktocode" - name: "NetworkToCode Twitter" + name: "Network to Code Twitter" markdown_extensions: - "admonition" - "toc": diff --git a/nautobot_chatops/tests/test_api.py b/nautobot_chatops/tests/test_api.py index 21c4ac58..09a7cce5 100644 --- a/nautobot_chatops/tests/test_api.py +++ b/nautobot_chatops/tests/test_api.py @@ -1,4 +1,9 @@ """Test cases for Nautobot Chatops API.""" +try: + from importlib import metadata +except ImportError: + # Python version < 3.8 + import importlib_metadata as metadata from django.urls import reverse @@ -6,6 +11,9 @@ from nautobot_chatops.models import AccessGrant, CommandToken +nautobot_version = metadata.version("nautobot") + + class AppTest(APITestCase): # pylint: disable=too-many-ancestors """Test cases for the Nautobot_chatops App.""" @@ -21,7 +29,10 @@ class CommandTokenTest(APIViewTestCases.APIViewTestCase): # pylint: disable=too """Tests for the CommandToken Endpoint.""" model = CommandToken - brief_fields = ["comment", "created", "display", "id", "last_updated", "platform", "token", "url"] + brief_fields = ["comment", "display", "id", "platform", "token", "url"] + # Nautobot 1.4.0 added created/last_updated to builtin serializers. + if nautobot_version >= "1.4.0": + brief_fields = ["comment", "created", "display", "id", "last_updated", "platform", "token", "url"] create_data = [ {"comment": "Test 4", "platform": "mattermost", "token": "token4"}, {"comment": "Test 5", "platform": "mattermost", "token": "token5"}, @@ -42,18 +53,21 @@ class AccessGrantTest(APIViewTestCases.APIViewTestCase): # pylint: disable=too- """Tests for the AccessGrant Endpoint.""" model = AccessGrant - brief_fields = [ - "command", - "created", - "display", - "grant_type", - "id", - "last_updated", - "name", - "subcommand", - "url", - "value", - ] + brief_fields = ["command", "display", "grant_type", "id", "name", "subcommand", "url", "value"] + # Nautobot 1.4.0 added created/last_updated to builtin serializers. + if nautobot_version >= "1.4.0": + brief_fields = [ + "command", + "created", + "display", + "grant_type", + "id", + "last_updated", + "name", + "subcommand", + "url", + "value", + ] create_data = [ {"command": "*", "subcommand": "*", "grant_type": "organization", "name": "test4", "value": "*"}, {"command": "*", "subcommand": "*", "grant_type": "channel", "name": "test5", "value": "*"},