From 40ee32e0659714a7711b65c168c75a82c00bef8b Mon Sep 17 00:00:00 2001 From: Viicos <65306057+Viicos@users.noreply.github.com> Date: Tue, 23 May 2023 01:30:46 +0200 Subject: [PATCH 1/9] refactor: use `None` for `dict` default values (#831) --- diagrams/__init__.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/diagrams/__init__.py b/diagrams/__init__.py index 6e282d99..6fe2a802 100644 --- a/diagrams/__init__.py +++ b/diagrams/__init__.py @@ -2,7 +2,7 @@ import contextvars import os import uuid from pathlib import Path -from typing import List, Union, Dict +from typing import Dict, List, Optional, Union from graphviz import Digraph @@ -86,9 +86,9 @@ class Diagram: autolabel: bool = False, show: bool = True, strict: bool = False, - graph_attr: dict = {}, - node_attr: dict = {}, - edge_attr: dict = {}, + graph_attr: Optional[dict] = None, + node_attr: Optional[dict] = None, + edge_attr: Optional[dict] = None, ): """Diagram represents a global diagrams context. @@ -105,6 +105,12 @@ class Diagram: :param edge_attr: Provide edge_attr dot config attributes. :param strict: Rendering should merge multi-edges. """ + if graph_attr is None: + graph_attr = {} + if node_attr is None: + node_attr = {} + if edge_attr is None: + edge_attr = {} self.name = name if not name and not filename: filename = "diagrams_image" @@ -215,7 +221,7 @@ class Cluster: self, label: str = "cluster", direction: str = "LR", - graph_attr: dict = {}, + graph_attr: Optional[dict] = None, ): """Cluster represents a cluster context. @@ -223,6 +229,8 @@ class Cluster: :param direction: Data flow direction. Default is 'left to right'. :param graph_attr: Provide graph_attr dot config attributes. """ + if graph_attr is None: + graph_attr = {} self.label = label self.name = "cluster_" + self.label From 5d7c0e07ab73ccd00052594da16a3e866bd71048 Mon Sep 17 00:00:00 2001 From: Matthew Fine <17680862+chewrocca@users.noreply.github.com> Date: Mon, 22 May 2023 19:32:15 -0400 Subject: [PATCH 2/9] feat: add Grafana Mimir and Tempo (#857) * Add resourse onprem monitoring Grafana Mimir. * Add resourse onprem tracing Grafana Tempo. --- diagrams/onprem/monitoring.py | 4 ++++ diagrams/onprem/tracing.py | 4 ++++ docs/nodes/onprem.md | 6 ++++++ resources/onprem/monitoring/mimir.png | Bin 0 -> 24363 bytes resources/onprem/tracing/tempo.png | Bin 0 -> 15492 bytes .../img/resources/onprem/monitoring/mimir.png | Bin 0 -> 24363 bytes .../img/resources/onprem/tracing/tempo.png | Bin 0 -> 15492 bytes 7 files changed, 14 insertions(+) create mode 100644 resources/onprem/monitoring/mimir.png create mode 100644 resources/onprem/tracing/tempo.png create mode 100644 website/static/img/resources/onprem/monitoring/mimir.png create mode 100644 website/static/img/resources/onprem/tracing/tempo.png diff --git a/diagrams/onprem/monitoring.py b/diagrams/onprem/monitoring.py index 96bf9566..2423a2db 100644 --- a/diagrams/onprem/monitoring.py +++ b/diagrams/onprem/monitoring.py @@ -28,6 +28,10 @@ class Humio(_Monitoring): _icon = "humio.png" +class Mimir(_Monitoring): + _icon = "mimir.png" + + class Nagios(_Monitoring): _icon = "nagios.png" diff --git a/diagrams/onprem/tracing.py b/diagrams/onprem/tracing.py index e4353538..f42fef25 100644 --- a/diagrams/onprem/tracing.py +++ b/diagrams/onprem/tracing.py @@ -12,4 +12,8 @@ class Jaeger(_Tracing): _icon = "jaeger.png" +class Tempo(_Tracing): + _icon = "tempo.png" + + # Aliases diff --git a/docs/nodes/onprem.md b/docs/nodes/onprem.md index b256bc2f..0fd3b0e2 100644 --- a/docs/nodes/onprem.md +++ b/docs/nodes/onprem.md @@ -350,6 +350,9 @@ Node classes list of onprem provider. Humio **diagrams.onprem.monitoring.Humio** +Mimir +**diagrams.onprem.monitoring.Mimir** + Nagios **diagrams.onprem.monitoring.Nagios** @@ -545,6 +548,9 @@ Node classes list of onprem provider. Jaeger **diagrams.onprem.tracing.Jaeger** +Tempo +**diagrams.onprem.tracing.Tempo** + ## onprem.vcs diff --git a/resources/onprem/monitoring/mimir.png b/resources/onprem/monitoring/mimir.png new file mode 100644 index 0000000000000000000000000000000000000000..fd1661d1ec799b4bdc96d368fc523da689228ff5 GIT binary patch literal 24363 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 literal 0 HcmV?d00001 diff --git a/resources/onprem/tracing/tempo.png b/resources/onprem/tracing/tempo.png new file mode 100644 index 0000000000000000000000000000000000000000..d0f519d0db428db0916aaf3d720eea6fc22f039f GIT binary patch literal 15492 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≫VToK3m1qI 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 literal 0 HcmV?d00001 diff --git a/website/static/img/resources/onprem/monitoring/mimir.png b/website/static/img/resources/onprem/monitoring/mimir.png new file mode 100644 index 0000000000000000000000000000000000000000..fd1661d1ec799b4bdc96d368fc523da689228ff5 GIT binary patch literal 24363 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 literal 0 HcmV?d00001 diff --git a/website/static/img/resources/onprem/tracing/tempo.png b/website/static/img/resources/onprem/tracing/tempo.png new file mode 100644 index 0000000000000000000000000000000000000000..d0f519d0db428db0916aaf3d720eea6fc22f039f GIT binary patch literal 15492 zcmZ|01yEei6F<0uOIY09U4pwyfZ*;H+=BZq9y|nh3l=m91ZQy#7Bmpt0t9!x{r>Li zUv+hLwLAN!-cHZFneLwcboaauns1e`F~~3g006d%vb;6`07O&)Q)noN-+i&}C&Y!u zMp;`O00?9P0HBcoz&+v?bRPil;Q;^+ECB$~EC7JmBd<+M9PtN=wW^Xl;N`zhQD?;` z#2s`GWg{;D;8ov$1vunhX^Xgt>aC)#fVu}Fdc{sGM3zhm0En@v$jj*Z|Nhq*aLTyg zvvwo$W9@wT#t7QO7oh+^LF!d6Q`SOZC16jbANtB^5=W{381v>sy7Ih}LACZP!)o2p z^kIU3!|B?rZy2kzU4GRqzMs}MYF3!RQ@}uCgdjCSz~g`j((&;Vq3)0X)wNGjZrwLQ zCiV4e?*C3^b3?lqerT)(wVkx?6?h%D%1#(QoGAfV$m7{on($q;Ha2euUH;_Ud>M|B z-*${V!4<|4#Sw*Rq9FaHWg(+L7x693oH%48Pn^2Qzx*~s;?ZTcGsP!&N<&YLlZI-> zf3YDWWD!$u!AC2mjWF=j3X-(JPrb82HWZC&j2rfIm9!Iu z78VbpIipCGG&W7e(<#f#6PrLkRGdA%G>Eb+{RaIAer*!j^`=kf3X(*7#m5g((r?9u z`Mm`@3X?yI$KvC?L9!6RqMbT;)bmT@wZt$4afOEhE|X?v&~EXk446i94;5?Fy-FXE zq^pjcxwjvQlUO|K8Q$cVnM#Osy6~;Q?PiT8}L+H&dHsr=4GH4tNEW*sDf%&K)BSpW@EOVlh z{^5z(x4(9p+E=l=X@Cu6xRtK(ug37Dv?vVUA7xr3uX-(Hfs1|$f|8R#HtqE`btaZ? zilJ_=;fgvO758d#JR+9wLxA-7oz{6#{BBCHn%?B)i6ci?>74^EK@0k05bo0tcsyL7 zbjOul-PLGbVluJ&{KJmm$VxfDI;20GL=3eK7Rij$-Gdt|p($M0$ZwaPMcZX^~P_>BlHc zQdb3&GjAX+gpRv?a+olWuHC*N3S?z03vEo8?uqk(y%8{gz#C-|IYZBZZa3PUJgCc+ z$8GnXi)LjvhLqj zv0FWG5f8uY#a18fgw*V+e*);Emn6pY0V$C}0cX4k$ER4BqEHTKheedem(%Z-gXBkz zzg?i&-i5EQYJs!%e>zG8S%VMa{Zz^K-h6{U!9(D;9@;6F+Pr5DA;Zc}AxT>@1o?~8 zqR3u~J^kZEx4_b1l0xH(Z-FLsw}CBGk(yNg@IGOoO;>q~>>3VN^^BaZrb8lWi&re- z*%2rWua6sFAM^T9y1Q11f963Q-wY=%SxU_$P#^eCJE5wST~qodXPS|n4jUd|*s65e zoSa(NcWz13ndhH^ntkjW2qzfrgxkc0%=~D-dH7w)f}N&luu+T*71)%tNvmc4#m1*z z-|n84sF8?8S#*Lttb%467=V+F`oWQ*U-MUQij8gO>r?5kGs;uP9R*%eo#>`hQ!#p1 zxC%qF7*6en;@<&02a;6&ilq2<2~$-Aw5(gG=dz5hHVLQ0;8bv<)ox!SFFq~33zZAW zXTVSEFK8hX8?u5;Kdn8M+2JA8kIWc2^rG($8C`0(nf7j4OZqUO^GdkiUhMg}uElRx z3XPbj#g#I}Bc+EgCZkYCtfld$KCH`_W`CEp1dOPW?2vqFvqlf#S^qQ2fYi3k#bWO< zcpD%4R#1OvDah|t=Wg+WI1MU&QI3A%napAAyp2(MzeDOQgv91?1i6&|+O~vPm&pL^ zjF!kh*f<+Zxob4g@{l^~N+P%3@Tg+D_!iFuPh_ZSlg?wZKT=8sbGN zbMUD|{E5*)`nzA;OPqww#X~cYK`2a#wrN|9x6QU!S?REW{FO+0EQwh(iQf4RtiN+b zj)Wr}X~BM7Wl~Fp$GD;BG|pO2dDF%q3Puzky5K!#!vbaI!sHTYj6Iy0Sk_*Ki2to zA*{Reoxz9*#Ux*fxmQ$WxFDs`x)k(JEPIV@u|JIf!Mhe+1NP55CWajNQcwIXJpI@y zoJAtHY=1>5$fD0s`lk~H(3CR!HV>^d=IBo5yvD=FuXDgoI{qfix+0i-INApU&vN9z zun&8tuR~6oL*&a|)d0U7BtUSvdY&tIF~m$*lkl{ddbFVE@SISh3hK;n;;*LyS`T~|(ooMSg(=c0?LB;QV*pmAF{L508RGXo2I9=MTP^AD*zWtkqX5DGg zeKIRDc%{wJsbtE$Acm#s_pBr** zI-EKm;NS>o>d$;7`p(s@AE!!r?@pUydq33}O`aAt`6tlHX5%IS7xa-sxCF#UX~FFI z1&MjEz$_!NJ_PGUUqFc*>U5}MFsB#gPha#-G##t2tHIIC=;K}~l8V1-@&pZk86`*s zUePl&%+fA{MMnB7I%$~Plu4z*TJky7H6c?Wg1gYJmm&jtde}jguKzh{lsl zI>A=`k^|?x_Xr0PT{e$6jv{RKk)oIWqaIpWrK03;4@vf!g!({4&kdd>mK{~Pk?yGB zh$lu7Ms?-Yq0>LJw04FZP``pPqw++GUgCtOE@@rquFKBbHVD(f;!SSZNu|mm4+d2N zD55$=(S~-{^eF8$El%&9RCzCGGXWO6%K`|d4lW!B3;bN%)QJuAv2?fe=_R9zLz1Pr zrb16fccbj=;H{e`vryb}pkTmDU^^36=?>=;z)=(-9*KGa?=Bj3 z0Iggp=LlZ=btyW{+Mr>QWDh8lj(B0vfan~)so1z8%U?s)EhA*cB7X6RBtlY2MU#t%s_u|ir#0wSu_!;n{dx0pG8AqF7p@AAj9UtYw9?MWV z8?ys+hY8JKD(7PGSC49sM2FU3YiJAKXenqXbIGAcSo!l{c&iJQq5mO?oEpTfdWEOP#DS-TPVKj?# zNll6}c-V7#h{Y_bbB*4O+9(WNtZ-|ekArWCG+fS@Hl;c-^=U@@_G7a@nV1}xEX}1U zp{=>4{))aeeHQ4b6o!fBqz;^ETKVefdEvDzI?!RE_{K6v$w@o{^R@S{{C?4~S zh7-8{94(B<>GCcGjRRhnB>ZW!M*>M-OR2*IKJbACd94j;A;#^`CjI7uY_=h%DoTrz zq1Q1xiWo4h<`CQOTNO^(QPLSVm(t5re&BpSJ}AHAB#v@&4U^`dh8$xtE)Q_)m7?^h zW(9r|YhphRd96)7xlDMXF1JgPyWcxGOOPvzQ(<3d0xE7Dr3s$L{!c$hG)Gn(nUGCR5{J|?9z%Shk6Qn&gM@erTj zTF}M(mfEu*fc{uV5Sw$PO%*4j2gL(IGDx068j!%{`9l~@-yTid4=BLUC_+k;aVg4=D|v@ zh66lUW~{wI(xF?(+d}61!IGTVGy&ppO~PT=APYkK7m}>KNe9HzJ+gglLy}TEnXoNv zzGRmguuKX@_o)L(qR1Ocjbwi1z}tj@DJ~e0o~-_hQ7c&&v2J_GWA1pYib7X!(x;U` z<+87@ZH4P`#f9G|d}w@))=z$ca=|jw1qrEH*GJ+?2e`e=F}EKwtOtb0TGnnp95ja= zR_-lvcZfGk_=RpZu3q1@B(41x6d#~Zz1{q+8R>EfsUBk25yO zzwr5w6c2{dY!KOKrf;rnffor5-kCr`VHz$I>|odx5MD_WN`n?1_Q{LVEHKIQhN7gc zRAzWTwO{{ZOg=3wwUU_eUP~PRNG;#_yY>0))+NtC{~{~9-=`k!$m$vMVVitxM991E zZdyE@#()(f^&XI~T+Z)m*5Nk4ej5H2^V|DW4)0 zasfyZx?I>Hx_)LWTNBOibj8>BI}`5zX>d3_617y1I;L9?9S4tUdGPPs9E7pBG1?vJ zX3%NM3cMoQNB97zEivy=t-h6&WD-z;B(a0J8zNsryv=vFtnb`GVJyl^u>p*??VNyS zg7PSZ^(XiZa-kB`G4F)epmYnqCq5%W@G!|dx5B-H=cc2lt7TuC_ht&$j zA8Eq|euH|s``*TQ_D-wqeNbk}Q??b9RnmT%g^y#hP+@TsP}l1dKms+B$WX zw?GN3bl4x9_=^Dl!V~X74(>m52EQ6_MqDE%wsy! z1qHGS7jA6)Acc@L@+EN5GBt6Mkr3sFR}6E8 zDC!o`2n%^Ca|~FM@vn*`|I98-yFS2Qm5@tkxK2?*cqL)LYV!q7w;!<1F|jBlKI1#C zM)@Px@u}3OStO9owm7pQm(?~@EN}2VQc9T{Z$A6({jp*MBM$FPrUmbct5`GZNQ( z092HY3_H#wIL4#8<99v$cq=#SMpbZZ*q*{|G+e;B#m0j)sCl1fcL2V5{kRNlr299> z4-$2B*qNyY%jG*gcIy8E`>H0V$<44h9ur zWZz-uY^Of!?1(tT*9Bb@*=;@3_fWhur*`BF9pz@fcP0<$=59C{&bphRL`IWJQg(f%g zV{3o>ja=cN9=eGyns3JjFFA3tE0}qOqZV=R_n># z;M0GPe!o0$yQzn)VtpiGD<24!<&Jatq|k__u5b{3y#D=63_ixP2Ixwh)Qgfp?w1}R zyQo+A*IBYcbosSetTqe!D||}c$7DUDH@>=~XxIdvgv348TW@}85O#Nvgys&gkl%KV zVun2^G%+GYuV?j3!5fmu>|2lTJ5BhU?U&3iB_n0Jm1b=k)|02~@JS!6Bc%y8XM?ey z4_(|za8S;Qx7r7N$FneE`Wcl;aDL13ysLu@Rh0E|16}oeV7@BYzyCRng_;oP{SY5g zs*G?cZHqgl@=%vw1J!*Qy!dY%qDy)vMtf`|1 z34eXC|5WqRt8E#iuutbjnZ6EBbPlLjDR1wy{UK<8Q`{!AT=akb?+ zWbwaql?2hX>9O63osXrt<&+-xhnKUf`<-7<2a0O0Da{m*IYf0vffDWl_We{e>`UVFH%n)Ywn5>BA=!t0?7E?4<9?X^5RNL-0t7? zEFPn+R84m89KU!G15e50SkXVnwLGeWW<+i%yVdl9fge;T_<72%3!_H>Yuv=1{9^V z)Eao!k3Oa!xy_TKGlu1=aHgOoGfNzg;qthtK$gfvlcpMd{}!JYEl!4&)?Z|{xI#4M z)xTRqIPt(&``X9kN$rQVt^}kCq369D-lqmt74EQq4PQbYwa}oDSkd&^Z-iu@?^`Oz zK{_p(j>#?(N)bY>bsh%6`a>^fpS#Y9eOVUNJ$|#=*|8-g2dJ47gdTM-&#v7Md{BV} zdBBWoMU@8wDG0wGtRWrHv=`+TIq&4}9*lv$5z%F+Tr`(A}emQVBT zwT1Gt_|7?>6n8>l51y@%awr~|uxGIthv2TDOviOIyuEo`%tT7pqK?0__V1tWRnz>( zu-`akgReeOKeLcq+$rw-2=xp$#=4<59b|ON?%nYq(FS~{_#@(5x8328{+`q+ol<@Q zMkwz#TRwI&;d19Z|0ySM2ELAJchmR15HnUh)8a~l90NE7=0(v%o{Nj?B;Ll=Dj>>4 zcQiL?#U}iR!Gazi5wrSS5J#4?r~qr{_w=SO-WBG zd|wCN2RDl1CBXUHqU!Dvd}95nB|QP0=*=nn=W|nh27{qxX~YW_8%xW+K$@9MGqhd5 zr8L?P(u!gFy7#Jf(rg94@l@UaWW!!~GE?dNRUQ)os0j7o#|-5tN!_n7?RA?LA8dSR zqS@-QdgF~BI*}Vc%n#-nX~J0F!AvI>d#f1PW+7J?WZ@X(_aGDbLU1eGn_cv3#xGgM z72Skt`9qnOy(fPk(bveQKhNr#np&;{$`8``R;n9ua3Rg-{`=eXrS!v{rCO#!rM=Ld zblgs01!fe$q3>sBZje~4L5V3Txz3!Dv=m4j){s^|sVm)-aM}`UDp;_Dyy}LI@H{@B zUz@v{=a0UixmEeT6(I^bm}Zs6s};8O*wYBaDqToKwltmQwM4ONZWX&r?SB3IXRv;} zKBrS+z95*5fVWbcuk{>kszoUrrB#z7*M0Hj6fPeM!c#}?(0A4fd#J<*1F3S&y= zU-o+U8j15VsgRvS)51YVd0N2lMF0Yi#rhXHNi#{?J95TNq^Z%(yj}QR=9zPCj&=M_ zpFjrtO}2h{c@4b_v$h3!-uU}^Tk+VoN`m0yAx`Fc`g1qezvI{aziV#n@s#7AaCY`UgU#xB@P((CB z@oc)W?bfLjB#VY)2t>Mt%sJB!)E~dbSR{=(SXe^-(*&D?SjQ5!c9wd8#lVhCjgt9d zHh}iI5>7Shnzqn*UUIwZTH|PmJgfPKO+e4vEagkdIp~zrlF>CNN#Ry42q+a1m4ULS zR}N*?lC1RTalW_t9M&GbaCw%4nh|?1Uz`QHlujUz)T#m+Xb$3Xco5sCoil`j(|Nx4 z_fx(7;*aSMbgs+3DHnSD?0WM%D9*ysx`toV4Kx}5#!SH-nCU@YKfVD9uMRo50x(-W z-cnYSR6rQBu_I`&qeIfdeb=~8ixwPKzg-osdG&n}@|)3XkVZ)HzQW;v&H>zKFFC^x zDn&H?x`p4KklknId6Qw3vGkr~pUQ10R~BF^Z6))! z=UzjCEEr$cvZJ|YesMFar%-Tn64Uo>(To6V(wm*x=RX*g$qtlOWBzU8o`b7TTWh2@ zC!I7aH<}TF>ZiFf-Yfn;-k20#lbE>bKl0sFozkvv(TPXIYoT3x?Q49T%baIpOHY^o zwU14j(Qx6pfD^#;fs5B)RD4~iUgl<8@L)I19%|L8_72uN6j zQ%FNdAT-%1P;#?BXwF!=gGJvXb0ObRhW6@wKQ7+y!~=9ky$nt47r09KtI~G4tL_Vd z&!Ap8I7Q{(HoqZWeXw#3?PaD)1-b*>Z(cGumxoTI6!4k*?B9v=$i>j}{7=dE$R%11 zfFYz%FH}A1N!>gpH6PV=>?rqAHSjkr_mFau@{g9vCQ+(|x{8+xY&QU%@@a?(S8LH< zqPVOgd10~>d6?n%40iX0y5`WF|Gc*1Q+l`(OnU{5+eiRfH!WIdA+WFW~=KhQ7(ani&^-gThY-`(F)DZ>PD-kN=7JxFyr=w zeiATUGUfdEFyCeJ`~#u#e8xsTGGiKP4ae{DY)$qOeNB^bmro@Sz!26>rXNdpM?|Ne z;=cifcspKr%9%lqK?%FXY9{<}^JR{SaXwO5-O&-Lbbp>$AZ)w)(mm(o70b^A*y3|24N>(_g>?j7bkwx5yNK zh=^s7H=ph_qclS0cwkI~oO+x=;!C1XQjntn!tY3?Y99ok9I=g;%&m&Q$OvOJ47GdF zp^TYLBYJK6^<7+~Xt>5)l{MWqP!IiJNq$|#?av#HtOq!^qbBM&RNOflV%7l$J zC7xKiLWbC386fKC!U~Cz1yJY=KTEL>N7Ib(Lu>x_@|k505iopB=wVdIMr8_FW6ykp zT|*e`eCm1@I8?ko#j6n0GbZFDC~rsV8UTzvZYUilB{Ba+JE@ex+u{iSPNx$`%D(n3 z+`h(taFa9_di_@s7u7?}3N&W|C${Y)Hk*FSEnQvHjn1Q8E84qP$e|>om&U4bG`^dQ z;=g+fo{%#0j`;-RMXH6yi2H@C~etj_(zfmt44eHO7Zta@B z71WWpO_ytd2@{(}1Otd5t6N}QI1Ij;DOqjRY^-$KK$3QrQS;B3(p6r^-d7k+4-5JJ zOG6!t2i#U^&8(+utT+RjWs z>sZH<2SaGRQK|jccO*E5!zL^AT3e)gsz}3m$a*LwvnXcxdoLar&#*KvvU0dAAdlkG z84w^#7ks6{>tZT<>%)m{iJs-6f@#9m{=FDk76ApelAZ*fi53aaT>v4S0xF_zcxfNr zEU5Ugsc zV++$TWCe%6k0t_94qLEuZ}3B-+V(W6W4|NW!g~H=vyx76l|$d}0UWMlYafYN)Jkv_ z|MLb077+c3zRtt%i6DY6@t{Oc?6Xs1b%}zwGz)^s<62!`y%ED8g-$#9oH%0J|@lCnf3wXzD&7OG06A z!dA^TFnT5LHD)Twm3AQVy)X9f`p55ds>7k;(l8GKEYaPTmQy<}u3%F4(hs+B8S=Qz zkPOdOkX#2)i^L<;Fgs;%HDyY%_=(>%n#KzEhm!1B=una6l!}Z*EE0rc0&Vde<@Q6} zv6vT`cps<&AVA_N_M4GC7u|0#!jiW))%~g ztk5Df=a*aH{PP(&Ko^0QAOL3MKV#v3TJx~{F1w!mwO<&pkGi5**%=U2GAIX34Mu{e zDe{x01Aqz$IsSA!7NK$8H2ET`@v{ElAm~)|`vipZ-T%fu3^n`iF*j*xR@NU=jcwB-(kyA0Ap|}%aqQLOl zg>GzUz@Z-1(|V`cqrKGdVE6qWl{A&8YU%9b)pszI2Gk>KpUhN40>RK{TFu2Tm>?HD ztmjJx`+rGCiw9YR#|r*P{z$~AJS(p!N+cMr{@lz^__m%(vcc1ezUAVG^GL4N%pt4q zVvE=zq!GBj_H@k$pnkz6Da^09eh4#E6hSpjdtxABydG+v4-NYPBPR(UcC~*%hLgkt z*x!XKA`@L7*szJCiDL&#o#N^qD|z2Wc@#UfwA7FnkA+6a7gO3(u3P3`8{5&fMNPA;<6QPWr^~K%I4AN55YXcXt#H&DNsVupra|vGog@8Af zNmhGy?wtWgwG-=W*&Dt13(U3)1+^anG}DJ51+sU5-p^1szR1LR+C6-9*kaJNX)ZdL zo*0>gI7`Xrjip3)Mc`M2oPnXuy9I8ThZVSzT>B5mREk+BSNr>*o|eC0F`D{_0+|5d zhMp-Dr~Eg>%k3vip4PU}`Xn$@bAm2UhE$cp7;~EKL76vIo)MH#thOavjA>$khEPVp zX@ZPiqZ6}qf%Kgh+6j1~*okhhhigOuyr|F$69pFOT;Yv=j}?#IzX273Ccry2OTKix z7&23==U>aHlH7FA?UDX9)f4PX(~{x<4A$EFW;Z!leubM8Tzalk9Dww!YgR5;l5Os& z(y|4$Y=%ycBG^n(TKD-jwU4`l@Kj%T_o@GOf>CB^oWjj?<2j1Kh`HjHG{J5*w-X*a zEdr=aQS-qWrhCjPx2~l2ET*zmz7TF&4j{3|vW-EB6Q3IU`@V+hNZbW%W$2=OB|QOo zlwwg9C;_r#DcyB8&3^BNNt_~a7U9<@cghqf#3}K`c=qQ+Vo^ccPS-o{Eq_xgI7H4e zvzW)h`S)LyIL9|iTHqtLuO(bsP8&cpnPOl91iz=d)nH;>2p)U1k>G!VO#ey!)b|8% z0{r3O3FN$mXV5vfEWRk#rE7>8-*7yCXzNOz|8csT&+jIqgncV`au$rFUTH_31;t3RXQz=*xqLTm3{49WkBQ_uqdS>-=nC z;@RH_o17XqZrLqR&56eH58S?41%KA!9Bh;MPrKkqaTx>iNUOj`j6)DN?fBM;9u=AV zH+CW`;vaK2xoF(9fnck8yC!b40C>{Nvqin@^S{Ziic>q7UfKgLQ3MHqnD~V2G(5TZ z2Wpep>H5T+eoYq7?DDRm(lp@)MYxmW)u4{mYg!xhkbrS}B zPu0fQjDK$srA}DK`iT1$oTbRx8U>A$)`{fAH6rXQub$0OmeX==eKp9f3w=o~f4P~j zJqi1BvE7u)e1nmv^AUaJn?N|p)K@w?BzzI$A3<%tkDY5bWlx{?a=5~tX>uO&(0(E> zs?g8AUaDT`;?xDJtE^|lt`b-&q+|045H^+6r3DVb=K|1JTHXT;U;f4{uMzTK%rQM~ zukk$o?w<0rAywiv9H^|0X=0rF-5ucKw1>ao%S!s0;u4dbq0RlszcOm+HRGF4r=P>F zDDS42sj>tLvSlhOW0_$UfK%OB%#PHjlq8L@jj3Pg%VEtd*ZHv}OZS}p#D!Vq*E5g&dZ!OUdNzcERBk>q{)?57JT2x)*;-a~%bKK2CKUcj+N{=GLuN*z+ z3;*!u>qKA;5&#C!#BCa^B-A<#5c}=&wwSVN3E`m2a?t754SgJX{jQt-CcJBlvs2F1$ zFPCVE7j?>6VXMHwP+*Ogq0;|}ykZat>#?{1n30^Nx(m;L8^`Yjkl->HPOYud{s@^Z z=$4zfk>#5r*%m$OR2q9AHb{o*i+MT`WAELt1WA7WAW^AzEfMqbFFzufVhH8`iKo&* z_9Lam_*Mm7`$*{R`g2i3RNMDwt#2WAs^QKLCS~1(q);5wS@<5lBN_bE0Hk5}UF&3B1OF≫VToK3m1qI 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 literal 0 HcmV?d00001 From 569f00f75bd5120ed58183dba25c7e7b90a05e49 Mon Sep 17 00:00:00 2001 From: Stedders <3862686+Stedders@users.noreply.github.com> Date: Tue, 23 May 2023 00:34:51 +0100 Subject: [PATCH 3/9] ci: removed 3.6 from python versions (fails to build), added 3.10 and 3.11. Updated python setup action and added poetry caching to make workflow more efficient. Run on ubuntu-latest. Small OCD corrections in codeql. (#843) --- .github/workflows/codeql-analysis.yml | 4 ++-- .github/workflows/test.yml | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index ff398348..97c08e80 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -2,7 +2,7 @@ name: "CodeQL" on: push: - branches: [master, ] + branches: [master] pull_request: # The branches below must be a subset of the branches above branches: [master] @@ -19,7 +19,7 @@ jobs: uses: actions/checkout@v2 with: # We must fetch at least the immediate parents so that if this is - # a pull request then we can checkout the head. + # a pull request then we can check out the head. fetch-depth: 2 # If this run was triggered by a pull request event, then checkout diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ed784b99..3219a77d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,13 +18,14 @@ jobs: test: strategy: matrix: - python: ["3.6", "3.7", "3.8", "3.9"] - runs-on: ubuntu-20.04 + python: [3.7, 3.8, 3.9, 3.10, 3.11] + runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 + - uses: actions/setup-python@v3 with: python-version: ${{ matrix.python }} + cache: poetry - name: Setup Graphviz uses: ts-graphviz/setup-graphviz@v1 - name: Install poetry From ee962226e010c92696c3532841c9cddadfb396ee Mon Sep 17 00:00:00 2001 From: davidferdinand Date: Tue, 23 May 2023 00:36:19 +0100 Subject: [PATCH 4/9] feat: adding Pagerduty to SaaS.Alerting (#846) * add Pagerduty to saas alerting * add pagerduty to saas alerting --- diagrams/saas/alerting.py | 3 +++ docs/nodes/saas.md | 3 +++ resources/saas/alerting/pagerduty.png | Bin 0 -> 2192 bytes 3 files changed, 6 insertions(+) create mode 100644 resources/saas/alerting/pagerduty.png diff --git a/diagrams/saas/alerting.py b/diagrams/saas/alerting.py index b2c2ff61..76e17ff2 100644 --- a/diagrams/saas/alerting.py +++ b/diagrams/saas/alerting.py @@ -24,4 +24,7 @@ class Xmatters(_Alerting): _icon = "xmatters.png" +class Pagerduty(_Alerting): + _icon = "pagerduty.png" + # Aliases diff --git a/docs/nodes/saas.md b/docs/nodes/saas.md index 4119e01c..67ecf66c 100644 --- a/docs/nodes/saas.md +++ b/docs/nodes/saas.md @@ -20,6 +20,9 @@ Node classes list of saas provider. Xmatters **diagrams.saas.alerting.Xmatters** +Pagerduty +**diagrams.saas.alerting.Pagerduty** + ## saas.analytics diff --git a/resources/saas/alerting/pagerduty.png b/resources/saas/alerting/pagerduty.png new file mode 100644 index 0000000000000000000000000000000000000000..4e369e308a399f35e400d23678e0862e8ea96036 GIT binary patch literal 2192 zcmcgujXTrp8<$h386rvtAuk8Th$!P|%6rRp>NuG+JL?R^;vj8kb56)>8`28J@lqo4 zQeHbIQzWtS+Kgdi3*&3TFzmPfg5UMKu5waE7_jNzlb3M=JzMs#N@-xC+8LS1C zlao{S^l&*Z8{d6vAbDADU=Qt*lLPs9x}5SRJ`|3T@B@S$ouWB(Ea^$&`Ho*4z=<`= zAQiCfk;n@q4YU<=RaKu+TWs{|%3P;j6M+kjhzzQXo|v^{ z>l&Ow(MaOlSHoVuS7Q^Upl-TyKY%`0|9KT$uy^Rs#es*Cupce~(@7uQ?cHA?TG>(W zn}}_v`@+$JcvvGKZS!oV%#r`lcYYl{n&xA($;$+!wgCyX@sn8JU51Qyx9RjB3LJuQ zH)^Qt2xnHF;G~_T&hoe`Q?m9_L%FazANF;&qj`L71>bJ{wMzGb)eGYLfA;pvs5sK2 zOU^-})GT7~{1J9A-oI+HSbra_)n45()?l~TWzTle_S+BXA2<70gltRylc8AuK*W1y z)AiA)f+LT<4iAy&7IpDr)Jc!VE*(hNSRKK6x`5{B-B4!o>Hg9$mH#ZcVM=|SQRLt` zU~PL6gBT}E%mmxCkz*C681EbmUu>ZW>W%|e>d2wuW=V)1L7p=FB1f}u@NU?!P{x!u zIbxYL7zTUDXmfZE^UKIFL*e#e6}D!lhJv*GMKR?^%>bH6(KhXazIkQUJiAe{>EMqX zi=OVuh4NKtH1$7x0BLw1FR!x6u=Eb-K$lyN6Dp$aQ76V;(p+j-=(O0}=UeM)tV&Zr z4z^CLcnl`b-Z%H|wA}sC%c$#KIMFe}85O*bEnW_K>-Au)%Ie zN4iZA5gV9~|CT8cjW0NJnJ>4ERb=xDN&2v1apV~rzi+VyTRQ&K#b>HgOzT|_I|ZbB zZ9JBB5X!Lb3`ZlWgzq@Iu)kGl`fW~bc2n~-Wh)blJVSTX?R`P}V;m!(K1CO0AiW2& z5>wJ6k!<}HU#(PTzId}O9Bxy@x-5^?JpU_q-g&y0h>ZNe?o9g*jMe0>r1b(fY)eE^ z6C?9u#?w@B419wyLha%|a6%d1yvp$MrM~?x|Qv>{w^Z2o_G*u5`6fTxlIXY+!9(;Mj0C}-$`&?7YqxX4=vxeyPOhu$ z%FmEZ1(TZN4=$k=RwfE58@V2pf!WZ}4v)(>7oI}&BrHng2QKy5o3ppqzoZ-qg;t%JN;@M@PjV}6WeK^m>Ni{JL>xA^TwLkiQ)N5P8d%JtBCiaqfwPinQ`PPT@&{qxXlRQ*uI=e@xoQ)1rX>1-|<($5`V*QE1Q5im0 zI{xiFu`Y)U)zDW(I2@yp{8%;Q`%=ZmK6-6$r|NQo4+>dqUX zP55slYM=6P7(!8%BWLh_`V4vbP)0`;N_Lj-MX;k!98Q`g{5Spa;Heb)cr~sIUeKdv zsM6jxleil~=(NEmTq|k+2Th(C z!}{zh_^1-7Moo*n9tD&5Z*KQLt8tu)oSalTYv_=WNO?Cd`)SB|x*}YjpZ@LEe*o6| BASnO< literal 0 HcmV?d00001 From 9669e7df31ef0066a7860cf3220ff9cc2c63de12 Mon Sep 17 00:00:00 2001 From: mingrammer Date: Tue, 23 May 2023 08:41:22 +0900 Subject: [PATCH 5/9] ci(test): install poetry before caching --- .github/workflows/test.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3219a77d..e91f73a3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,18 +18,22 @@ jobs: test: strategy: matrix: - python: [3.7, 3.8, 3.9, 3.10, 3.11] + python: ["3.7", "3.8", "3.9", "3.10", "3.11"] runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 + - name: Install poetry + run: | + curl -O -sSL https://install.python-poetry.org/install-poetry.py + python install-poetry.py -y --version 1.1.12 + echo "PATH=${HOME}/.poetry/bin:${PATH}" >> $GITHUB_ENV + rm install-poetry.py - uses: actions/setup-python@v3 with: python-version: ${{ matrix.python }} cache: poetry - name: Setup Graphviz uses: ts-graphviz/setup-graphviz@v1 - - name: Install poetry - run: pip install poetry - name: Run all tests run: | poetry install From c2b746757e068f6312c20410277f2d16709393da Mon Sep 17 00:00:00 2001 From: mingrammer Date: Tue, 23 May 2023 08:45:27 +0900 Subject: [PATCH 6/9] ci(test): rollback poetry installation --- .github/workflows/test.yml | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e91f73a3..88c791d5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,18 +22,13 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - name: Install poetry - run: | - curl -O -sSL https://install.python-poetry.org/install-poetry.py - python install-poetry.py -y --version 1.1.12 - echo "PATH=${HOME}/.poetry/bin:${PATH}" >> $GITHUB_ENV - rm install-poetry.py - uses: actions/setup-python@v3 with: python-version: ${{ matrix.python }} - cache: poetry - name: Setup Graphviz uses: ts-graphviz/setup-graphviz@v1 + - name: Install poetry + run: pip install poetry - name: Run all tests run: | poetry install From d49e354bcb15b3e9cec41b1cde90f59bd91015f7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 May 2023 08:48:27 +0900 Subject: [PATCH 7/9] chore(deps-dev): bump pytest from 7.2.0 to 7.3.0 (#875) Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.2.0 to 7.3.0. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/7.2.0...7.3.0) --- updated-dependencies: - dependency-name: pytest dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 495 ++++++++++++++++++++++++------------------------- pyproject.toml | 2 +- 2 files changed, 239 insertions(+), 258 deletions(-) diff --git a/poetry.lock b/poetry.lock index 93ed5601..3c271de3 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,3 +1,5 @@ +# This file is automatically @generated by Poetry and should not be changed by hand. + [[package]] name = "astroid" version = "2.9.0" @@ -5,6 +7,10 @@ description = "An abstract syntax tree for Python with inference support." category = "dev" optional = false python-versions = "~=3.6" +files = [ + {file = "astroid-2.9.0-py3-none-any.whl", hash = "sha256:776ca0b748b4ad69c00bfe0fff38fa2d21c338e12c84aa9715ee0d473c422778"}, + {file = "astroid-2.9.0.tar.gz", hash = "sha256:5939cf55de24b92bda00345d4d0659d01b3c7dafb5055165c330bc7c568ba273"}, +] [package.dependencies] lazy-object-proxy = ">=1.4.0" @@ -13,20 +19,6 @@ typed-ast = {version = ">=1.4.0,<2.0", markers = "implementation_name == \"cpyth typing-extensions = {version = ">=3.10", markers = "python_version < \"3.10\""} wrapt = ">=1.11,<1.14" -[[package]] -name = "attrs" -version = "19.3.0" -description = "Classes Without Boilerplate" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[package.extras] -azure-pipelines = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-azurepipelines", "six", "zope.interface"] -dev = ["coverage", "hypothesis", "pre-commit", "pympler", "pytest (>=4.3.0)", "six", "sphinx", "zope.interface"] -docs = ["sphinx", "zope.interface"] -tests = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] - [[package]] name = "black" version = "22.12.0" @@ -34,6 +26,20 @@ description = "The uncompromising code formatter." category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "black-22.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eedd20838bd5d75b80c9f5487dbcb06836a43833a37846cf1d8c1cc01cef59d"}, + {file = "black-22.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:159a46a4947f73387b4d83e87ea006dbb2337eab6c879620a3ba52699b1f4351"}, + {file = "black-22.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f"}, + {file = "black-22.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:7412e75863aa5c5411886804678b7d083c7c28421210180d67dfd8cf1221e1f4"}, + {file = "black-22.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c116eed0efb9ff870ded8b62fe9f28dd61ef6e9ddd28d83d7d264a38417dcee2"}, + {file = "black-22.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1f58cbe16dfe8c12b7434e50ff889fa479072096d79f0a7f25e4ab8e94cd8350"}, + {file = "black-22.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d86c9f3db9b1bf6761244bc0b3572a546f5fe37917a044e02f3166d5aafa7d"}, + {file = "black-22.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:82d9fe8fee3401e02e79767016b4907820a7dc28d70d137eb397b92ef3cc5bfc"}, + {file = "black-22.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101c69b23df9b44247bd88e1d7e90154336ac4992502d4197bdac35dd7ee3320"}, + {file = "black-22.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:559c7a1ba9a006226f09e4916060982fd27334ae1998e7a38b3f33a37f7a2148"}, + {file = "black-22.12.0-py3-none-any.whl", hash = "sha256:436cc9167dd28040ad90d3b404aec22cedf24a6e4d7de221bec2730ec0c97bcf"}, + {file = "black-22.12.0.tar.gz", hash = "sha256:229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f"}, +] [package.dependencies] click = ">=8.0.0" @@ -57,6 +63,10 @@ description = "Composable command line interface toolkit" category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, + {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, +] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} @@ -69,6 +79,10 @@ description = "Cross-platform colored terminal text." category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "colorama-0.4.3-py2.py3-none-any.whl", hash = "sha256:7d73d2a99753107a36ac6b455ee49046802e59d9d076ef8e47b61499fa29afff"}, + {file = "colorama-0.4.3.tar.gz", hash = "sha256:e96da0d330793e2cb9485e9ddfd918d456036c7149416295932478192f4436a1"}, +] [[package]] name = "exceptiongroup" @@ -77,6 +91,10 @@ description = "Backport of PEP 654 (exception groups)" category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.1.0-py3-none-any.whl", hash = "sha256:327cbda3da756e2de031a3107b81ab7b3770a602c4d16ca618298c526f4bec1e"}, + {file = "exceptiongroup-1.1.0.tar.gz", hash = "sha256:bcb67d800a4497e1b404c2dd44fca47d3b7a5e5433dbab67f96c1a685cdfdf23"}, +] [package.extras] test = ["pytest (>=6)"] @@ -88,6 +106,10 @@ description = "Simple Python interface for Graphviz" category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "graphviz-0.20.1-py3-none-any.whl", hash = "sha256:587c58a223b51611c0cf461132da386edd896a029524ca61a1462b880bf97977"}, + {file = "graphviz-0.20.1.zip", hash = "sha256:8c58f14adaa3b947daf26c19bc1e98c4e0702cdc31cf99153e6f06904d492bf8"}, +] [package.extras] dev = ["flake8", "pep8-naming", "tox (>=3)", "twine", "wheel"] @@ -101,6 +123,10 @@ description = "Read metadata from Python packages" category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +files = [ + {file = "importlib_metadata-1.5.0-py2.py3-none-any.whl", hash = "sha256:b97607a1a18a5100839aec1dc26a1ea17ee0d93b20b0f008d80a5a050afb200b"}, + {file = "importlib_metadata-1.5.0.tar.gz", hash = "sha256:06f5b3a99029c7134207dd882428a66992a9de2bef7c2b699b5641f9886c3302"}, +] [package.dependencies] zipp = ">=0.5" @@ -116,6 +142,10 @@ description = "iniconfig: brain-dead simple config-ini parsing" category = "dev" optional = false python-versions = "*" +files = [ + {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, + {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, +] [[package]] name = "isort" @@ -124,6 +154,10 @@ description = "A Python utility / library to sort Python imports." category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "isort-4.3.21-py2.py3-none-any.whl", hash = "sha256:6e811fcb295968434526407adb8796944f1988c5b65e8139058f2014cbe100fd"}, + {file = "isort-4.3.21.tar.gz", hash = "sha256:54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1"}, +] [package.extras] pipfile = ["pipreqs", "requirementslib"] @@ -138,6 +172,10 @@ description = "A very fast and expressive template engine." category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, + {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, +] [package.dependencies] MarkupSafe = ">=2.0" @@ -152,6 +190,29 @@ description = "A fast and thorough lazy object proxy." category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "lazy-object-proxy-1.4.3.tar.gz", hash = "sha256:f3900e8a5de27447acbf900b4750b0ddfd7ec1ea7fbaf11dfa911141bc522af0"}, + {file = "lazy_object_proxy-1.4.3-cp27-cp27m-macosx_10_13_x86_64.whl", hash = "sha256:a2238e9d1bb71a56cd710611a1614d1194dc10a175c1e08d75e1a7bcc250d442"}, + {file = "lazy_object_proxy-1.4.3-cp27-cp27m-win32.whl", hash = "sha256:efa1909120ce98bbb3777e8b6f92237f5d5c8ea6758efea36a473e1d38f7d3e4"}, + {file = "lazy_object_proxy-1.4.3-cp27-cp27m-win_amd64.whl", hash = "sha256:4677f594e474c91da97f489fea5b7daa17b5517190899cf213697e48d3902f5a"}, + {file = "lazy_object_proxy-1.4.3-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:0c4b206227a8097f05c4dbdd323c50edf81f15db3b8dc064d08c62d37e1a504d"}, + {file = "lazy_object_proxy-1.4.3-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:d945239a5639b3ff35b70a88c5f2f491913eb94871780ebfabb2568bd58afc5a"}, + {file = "lazy_object_proxy-1.4.3-cp34-cp34m-win32.whl", hash = "sha256:9651375199045a358eb6741df3e02a651e0330be090b3bc79f6d0de31a80ec3e"}, + {file = "lazy_object_proxy-1.4.3-cp34-cp34m-win_amd64.whl", hash = "sha256:eba7011090323c1dadf18b3b689845fd96a61ba0a1dfbd7f24b921398affc357"}, + {file = "lazy_object_proxy-1.4.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:48dab84ebd4831077b150572aec802f303117c8cc5c871e182447281ebf3ac50"}, + {file = "lazy_object_proxy-1.4.3-cp35-cp35m-win32.whl", hash = "sha256:ca0a928a3ddbc5725be2dd1cf895ec0a254798915fb3a36af0964a0a4149e3db"}, + {file = "lazy_object_proxy-1.4.3-cp35-cp35m-win_amd64.whl", hash = "sha256:194d092e6f246b906e8f70884e620e459fc54db3259e60cf69a4d66c3fda3449"}, + {file = "lazy_object_proxy-1.4.3-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:97bb5884f6f1cdce0099f86b907aa41c970c3c672ac8b9c8352789e103cf3156"}, + {file = "lazy_object_proxy-1.4.3-cp36-cp36m-win32.whl", hash = "sha256:cb2c7c57005a6804ab66f106ceb8482da55f5314b7fcb06551db1edae4ad1531"}, + {file = "lazy_object_proxy-1.4.3-cp36-cp36m-win_amd64.whl", hash = "sha256:8d859b89baf8ef7f8bc6b00aa20316483d67f0b1cbf422f5b4dc56701c8f2ffb"}, + {file = "lazy_object_proxy-1.4.3-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:1be7e4c9f96948003609aa6c974ae59830a6baecc5376c25c92d7d697e684c08"}, + {file = "lazy_object_proxy-1.4.3-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:d74bb8693bf9cf75ac3b47a54d716bbb1a92648d5f781fc799347cfc95952383"}, + {file = "lazy_object_proxy-1.4.3-cp37-cp37m-win32.whl", hash = "sha256:9b15f3f4c0f35727d3a0fba4b770b3c4ebbb1fa907dbcc046a1d2799f3edd142"}, + {file = "lazy_object_proxy-1.4.3-cp37-cp37m-win_amd64.whl", hash = "sha256:9254f4358b9b541e3441b007a0ea0764b9d056afdeafc1a5569eee1cc6c1b9ea"}, + {file = "lazy_object_proxy-1.4.3-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:a6ae12d08c0bf9909ce12385803a543bfe99b95fe01e752536a60af2b7797c62"}, + {file = "lazy_object_proxy-1.4.3-cp38-cp38-win32.whl", hash = "sha256:5541cada25cd173702dbd99f8e22434105456314462326f06dba3e180f203dfd"}, + {file = "lazy_object_proxy-1.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:59f79fef100b09564bc2df42ea2d8d21a64fdcda64979c0fa3db7bdaabaf6239"}, +] [[package]] name = "markupsafe" @@ -160,6 +221,77 @@ description = "Safely add untrusted strings to HTML/XML markup." category = "main" optional = false python-versions = ">=3.6" +files = [ + {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4dc8f9fb58f7364b63fd9f85013b780ef83c11857ae79f2feda41e270468dd9b"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:20dca64a3ef2d6e4d5d615a3fd418ad3bde77a47ec8a23d984a12b5b4c74491a"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cdfba22ea2f0029c9261a4bd07e830a8da012291fbe44dc794e488b6c9bb353a"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-win32.whl", hash = "sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28"}, + {file = "MarkupSafe-2.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:deb993cacb280823246a026e3b2d81c493c53de6acfd5e6bfe31ab3402bb37dd"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:63f3268ba69ace99cab4e3e3b5840b03340efed0948ab8f78d2fd87ee5442a4f"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8d206346619592c6200148b01a2142798c989edcb9c896f9ac9722a99d4e77e6"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-win32.whl", hash = "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d"}, + {file = "MarkupSafe-2.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d6c7ebd4e944c85e2c3421e612a7057a2f48d478d79e61800d81468a8d842207"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f0567c4dc99f264f49fe27da5f735f414c4e7e7dd850cfd8e69f0862d7c74ea9"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:89c687013cb1cd489a0f0ac24febe8c7a666e6e221b783e53ac50ebf68e45d86"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-win32.whl", hash = "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415"}, + {file = "MarkupSafe-2.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:aca6377c0cb8a8253e493c6b451565ac77e98c2951c45f913e0b52facdcff83f"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:04635854b943835a6ea959e948d19dcd311762c5c0c6e1f0e16ee57022669194"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6300b8454aa6930a24b9618fbb54b5a68135092bc666f7b06901f897fa5c2fee"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-win32.whl", hash = "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64"}, + {file = "MarkupSafe-2.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4296f2b1ce8c86a6aea78613c34bb1a672ea0e3de9c6ba08a960efe0b0a09047"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f02365d4e99430a12647f09b6cc8bab61a6564363f313126f775eb4f6ef798e"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5b6d930f030f8ed98e3e6c98ffa0652bdb82601e7a016ec2ab5d7ff23baa78d1"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-win32.whl", hash = "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74"}, + {file = "MarkupSafe-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"}, + {file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"}, +] [[package]] name = "mccabe" @@ -168,6 +300,10 @@ description = "McCabe checker, plugin for flake8" category = "dev" optional = false python-versions = "*" +files = [ + {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, + {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, +] [[package]] name = "mypy-extensions" @@ -176,6 +312,10 @@ description = "Experimental type system extensions for programs checked with the category = "dev" optional = false python-versions = "*" +files = [ + {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"}, +] [[package]] name = "packaging" @@ -184,6 +324,10 @@ description = "Core utilities for Python packages" category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "packaging-20.8-py2.py3-none-any.whl", hash = "sha256:24e0da08660a87484d1602c30bb4902d74816b6985b93de36926f5bc95741858"}, + {file = "packaging-20.8.tar.gz", hash = "sha256:78598185a7008a470d64526a8059de9aaa449238f280fc9eb6b13ba6c4109093"}, +] [package.dependencies] pyparsing = ">=2.0.2" @@ -195,6 +339,10 @@ description = "Utility library for gitignore style pattern matching of file path category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "pathspec-0.10.1-py3-none-any.whl", hash = "sha256:46846318467efc4556ccfd27816e004270a9eeeeb4d062ce5e6fc7a87c573f93"}, + {file = "pathspec-0.10.1.tar.gz", hash = "sha256:7ace6161b621d31e7902eb6b5ae148d12cfd23f4a249b9ffb6b9fee12084323d"}, +] [[package]] name = "platformdirs" @@ -203,6 +351,10 @@ description = "A small Python module for determining appropriate platform-specif category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "platformdirs-2.4.0-py3-none-any.whl", hash = "sha256:8868bbe3c3c80d42f20156f22e7131d2fb321f5bc86a2a345375c6481a67021d"}, + {file = "platformdirs-2.4.0.tar.gz", hash = "sha256:367a5e80b3d04d2428ffa76d33f124cf11e8fff2acdaa9b43d545f5c7d661ef2"}, +] [package.extras] docs = ["Sphinx (>=4)", "furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)"] @@ -215,6 +367,10 @@ description = "plugin and hook calling mechanisms for python" category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, + {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, +] [package.dependencies] importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} @@ -229,6 +385,10 @@ description = "python code static checker" category = "dev" optional = false python-versions = "~=3.6" +files = [ + {file = "pylint-2.12.0-py3-none-any.whl", hash = "sha256:ba00afcb1550bc217bbcb0eb76c10cb8335f7417a3323bdd980c29fb5b59f8d2"}, + {file = "pylint-2.12.0.tar.gz", hash = "sha256:245c87e5da54c35b623c21b35debf87d93b18bf9e0229515cc172d0b83d627cd"}, +] [package.dependencies] astroid = ">=2.9.0,<2.10" @@ -246,17 +406,24 @@ description = "Python parsing module" category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"}, + {file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"}, +] [[package]] name = "pytest" -version = "7.2.0" +version = "7.3.0" description = "pytest: simple powerful testing with Python" category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "pytest-7.3.0-py3-none-any.whl", hash = "sha256:933051fa1bfbd38a21e73c3960cebdad4cf59483ddba7696c48509727e17f201"}, + {file = "pytest-7.3.0.tar.gz", hash = "sha256:58ecc27ebf0ea643ebfdf7fb1249335da761a00c9f955bcd922349bcb68ee57d"}, +] [package.dependencies] -attrs = ">=19.2.0" colorama = {version = "*", markers = "sys_platform == \"win32\""} exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} @@ -266,7 +433,7 @@ pluggy = ">=0.12,<2.0" tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} [package.extras] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] +testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] [[package]] name = "rope" @@ -275,6 +442,11 @@ description = "a python refactoring library..." category = "dev" optional = false python-versions = "*" +files = [ + {file = "rope-0.14.0-py2-none-any.whl", hash = "sha256:6b728fdc3e98a83446c27a91fc5d56808a004f8beab7a31ab1d7224cecc7d969"}, + {file = "rope-0.14.0-py3-none-any.whl", hash = "sha256:f0dcf719b63200d492b85535ebe5ea9b29e0d0b8aebeb87fe03fc1a65924fdaf"}, + {file = "rope-0.14.0.tar.gz", hash = "sha256:c5c5a6a87f7b1a2095fb311135e2a3d1f194f5ecb96900fdd0a9100881f48aaf"}, +] [[package]] name = "setuptools" @@ -283,6 +455,10 @@ description = "Easily download, build, install, upgrade, and uninstall Python pa category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "setuptools-59.6.0-py3-none-any.whl", hash = "sha256:4ce92f1e1f8f01233ee9952c04f6b81d1e02939d6e1b488428154974a4d0783e"}, + {file = "setuptools-59.6.0.tar.gz", hash = "sha256:22c7348c6d2976a52632c67f7ab0cdf40147db7789f9aed18734643fe9cf3373"}, +] [package.extras] docs = ["furo", "jaraco.packaging (>=8.2)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx", "sphinx-inline-tabs", "sphinxcontrib-towncrier"] @@ -295,6 +471,10 @@ description = "Python Library for Tom's Obvious, Minimal Language" category = "dev" optional = false python-versions = "*" +files = [ + {file = "toml-0.10.0-py2.py3-none-any.whl", hash = "sha256:235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e"}, + {file = "toml-0.10.0.tar.gz", hash = "sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c"}, +] [[package]] name = "tomli" @@ -303,6 +483,10 @@ description = "A lil' TOML parser" category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "tomli-1.2.3-py3-none-any.whl", hash = "sha256:e3069e4be3ead9668e21cb9b074cd948f7b3113fd9c8bba083f48247aab8b11c"}, + {file = "tomli-1.2.3.tar.gz", hash = "sha256:05b6166bff487dc068d322585c7ea4ef78deed501cc124060e0f238e89a9231f"}, +] [[package]] name = "typed-ast" @@ -311,243 +495,7 @@ description = "a fork of Python 2 and 3 ast modules with type comment support" category = "main" optional = false python-versions = ">=3.6" - -[[package]] -name = "typing-extensions" -version = "4.1.1" -description = "Backported and Experimental Type Hints for Python 3.6+" -category = "dev" -optional = false -python-versions = ">=3.6" - -[[package]] -name = "wrapt" -version = "1.11.2" -description = "Module for decorators, wrappers and monkey patching." -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "zipp" -version = "3.1.0" -description = "Backport of pathlib-compatible object wrapper for zip files" -category = "dev" -optional = false -python-versions = ">=3.6" - -[package.extras] -docs = ["jaraco.packaging (>=3.2)", "rst.linker (>=1.9)", "sphinx"] -testing = ["func-timeout", "jaraco.itertools"] - -[metadata] -lock-version = "1.1" -python-versions = "^3.7" -content-hash = "bd314565d6ceadde7dfc215293ff1365ad294a2219d822620beeadac0d1f3736" - -[metadata.files] -astroid = [ - {file = "astroid-2.9.0-py3-none-any.whl", hash = "sha256:776ca0b748b4ad69c00bfe0fff38fa2d21c338e12c84aa9715ee0d473c422778"}, - {file = "astroid-2.9.0.tar.gz", hash = "sha256:5939cf55de24b92bda00345d4d0659d01b3c7dafb5055165c330bc7c568ba273"}, -] -attrs = [ - {file = "attrs-19.3.0-py2.py3-none-any.whl", hash = "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c"}, - {file = "attrs-19.3.0.tar.gz", hash = "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72"}, -] -black = [ - {file = "black-22.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eedd20838bd5d75b80c9f5487dbcb06836a43833a37846cf1d8c1cc01cef59d"}, - {file = "black-22.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:159a46a4947f73387b4d83e87ea006dbb2337eab6c879620a3ba52699b1f4351"}, - {file = "black-22.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f"}, - {file = "black-22.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:7412e75863aa5c5411886804678b7d083c7c28421210180d67dfd8cf1221e1f4"}, - {file = "black-22.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c116eed0efb9ff870ded8b62fe9f28dd61ef6e9ddd28d83d7d264a38417dcee2"}, - {file = "black-22.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1f58cbe16dfe8c12b7434e50ff889fa479072096d79f0a7f25e4ab8e94cd8350"}, - {file = "black-22.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d86c9f3db9b1bf6761244bc0b3572a546f5fe37917a044e02f3166d5aafa7d"}, - {file = "black-22.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:82d9fe8fee3401e02e79767016b4907820a7dc28d70d137eb397b92ef3cc5bfc"}, - {file = "black-22.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101c69b23df9b44247bd88e1d7e90154336ac4992502d4197bdac35dd7ee3320"}, - {file = "black-22.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:559c7a1ba9a006226f09e4916060982fd27334ae1998e7a38b3f33a37f7a2148"}, - {file = "black-22.12.0-py3-none-any.whl", hash = "sha256:436cc9167dd28040ad90d3b404aec22cedf24a6e4d7de221bec2730ec0c97bcf"}, - {file = "black-22.12.0.tar.gz", hash = "sha256:229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f"}, -] -click = [ - {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, - {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, -] -colorama = [ - {file = "colorama-0.4.3-py2.py3-none-any.whl", hash = "sha256:7d73d2a99753107a36ac6b455ee49046802e59d9d076ef8e47b61499fa29afff"}, - {file = "colorama-0.4.3.tar.gz", hash = "sha256:e96da0d330793e2cb9485e9ddfd918d456036c7149416295932478192f4436a1"}, -] -exceptiongroup = [ - {file = "exceptiongroup-1.1.0-py3-none-any.whl", hash = "sha256:327cbda3da756e2de031a3107b81ab7b3770a602c4d16ca618298c526f4bec1e"}, - {file = "exceptiongroup-1.1.0.tar.gz", hash = "sha256:bcb67d800a4497e1b404c2dd44fca47d3b7a5e5433dbab67f96c1a685cdfdf23"}, -] -graphviz = [ - {file = "graphviz-0.20.1-py3-none-any.whl", hash = "sha256:587c58a223b51611c0cf461132da386edd896a029524ca61a1462b880bf97977"}, - {file = "graphviz-0.20.1.zip", hash = "sha256:8c58f14adaa3b947daf26c19bc1e98c4e0702cdc31cf99153e6f06904d492bf8"}, -] -importlib-metadata = [ - {file = "importlib_metadata-1.5.0-py2.py3-none-any.whl", hash = "sha256:b97607a1a18a5100839aec1dc26a1ea17ee0d93b20b0f008d80a5a050afb200b"}, - {file = "importlib_metadata-1.5.0.tar.gz", hash = "sha256:06f5b3a99029c7134207dd882428a66992a9de2bef7c2b699b5641f9886c3302"}, -] -iniconfig = [ - {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, - {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, -] -isort = [ - {file = "isort-4.3.21-py2.py3-none-any.whl", hash = "sha256:6e811fcb295968434526407adb8796944f1988c5b65e8139058f2014cbe100fd"}, - {file = "isort-4.3.21.tar.gz", hash = "sha256:54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1"}, -] -jinja2 = [ - {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, - {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, -] -lazy-object-proxy = [ - {file = "lazy-object-proxy-1.4.3.tar.gz", hash = "sha256:f3900e8a5de27447acbf900b4750b0ddfd7ec1ea7fbaf11dfa911141bc522af0"}, - {file = "lazy_object_proxy-1.4.3-cp27-cp27m-macosx_10_13_x86_64.whl", hash = "sha256:a2238e9d1bb71a56cd710611a1614d1194dc10a175c1e08d75e1a7bcc250d442"}, - {file = "lazy_object_proxy-1.4.3-cp27-cp27m-win32.whl", hash = "sha256:efa1909120ce98bbb3777e8b6f92237f5d5c8ea6758efea36a473e1d38f7d3e4"}, - {file = "lazy_object_proxy-1.4.3-cp27-cp27m-win_amd64.whl", hash = "sha256:4677f594e474c91da97f489fea5b7daa17b5517190899cf213697e48d3902f5a"}, - {file = "lazy_object_proxy-1.4.3-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:0c4b206227a8097f05c4dbdd323c50edf81f15db3b8dc064d08c62d37e1a504d"}, - {file = "lazy_object_proxy-1.4.3-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:d945239a5639b3ff35b70a88c5f2f491913eb94871780ebfabb2568bd58afc5a"}, - {file = "lazy_object_proxy-1.4.3-cp34-cp34m-win32.whl", hash = "sha256:9651375199045a358eb6741df3e02a651e0330be090b3bc79f6d0de31a80ec3e"}, - {file = "lazy_object_proxy-1.4.3-cp34-cp34m-win_amd64.whl", hash = "sha256:eba7011090323c1dadf18b3b689845fd96a61ba0a1dfbd7f24b921398affc357"}, - {file = "lazy_object_proxy-1.4.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:48dab84ebd4831077b150572aec802f303117c8cc5c871e182447281ebf3ac50"}, - {file = "lazy_object_proxy-1.4.3-cp35-cp35m-win32.whl", hash = "sha256:ca0a928a3ddbc5725be2dd1cf895ec0a254798915fb3a36af0964a0a4149e3db"}, - {file = "lazy_object_proxy-1.4.3-cp35-cp35m-win_amd64.whl", hash = "sha256:194d092e6f246b906e8f70884e620e459fc54db3259e60cf69a4d66c3fda3449"}, - {file = "lazy_object_proxy-1.4.3-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:97bb5884f6f1cdce0099f86b907aa41c970c3c672ac8b9c8352789e103cf3156"}, - {file = "lazy_object_proxy-1.4.3-cp36-cp36m-win32.whl", hash = "sha256:cb2c7c57005a6804ab66f106ceb8482da55f5314b7fcb06551db1edae4ad1531"}, - {file = "lazy_object_proxy-1.4.3-cp36-cp36m-win_amd64.whl", hash = "sha256:8d859b89baf8ef7f8bc6b00aa20316483d67f0b1cbf422f5b4dc56701c8f2ffb"}, - {file = "lazy_object_proxy-1.4.3-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:1be7e4c9f96948003609aa6c974ae59830a6baecc5376c25c92d7d697e684c08"}, - {file = "lazy_object_proxy-1.4.3-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:d74bb8693bf9cf75ac3b47a54d716bbb1a92648d5f781fc799347cfc95952383"}, - {file = "lazy_object_proxy-1.4.3-cp37-cp37m-win32.whl", hash = "sha256:9b15f3f4c0f35727d3a0fba4b770b3c4ebbb1fa907dbcc046a1d2799f3edd142"}, - {file = "lazy_object_proxy-1.4.3-cp37-cp37m-win_amd64.whl", hash = "sha256:9254f4358b9b541e3441b007a0ea0764b9d056afdeafc1a5569eee1cc6c1b9ea"}, - {file = "lazy_object_proxy-1.4.3-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:a6ae12d08c0bf9909ce12385803a543bfe99b95fe01e752536a60af2b7797c62"}, - {file = "lazy_object_proxy-1.4.3-cp38-cp38-win32.whl", hash = "sha256:5541cada25cd173702dbd99f8e22434105456314462326f06dba3e180f203dfd"}, - {file = "lazy_object_proxy-1.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:59f79fef100b09564bc2df42ea2d8d21a64fdcda64979c0fa3db7bdaabaf6239"}, -] -markupsafe = [ - {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4dc8f9fb58f7364b63fd9f85013b780ef83c11857ae79f2feda41e270468dd9b"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:20dca64a3ef2d6e4d5d615a3fd418ad3bde77a47ec8a23d984a12b5b4c74491a"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cdfba22ea2f0029c9261a4bd07e830a8da012291fbe44dc794e488b6c9bb353a"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-win32.whl", hash = "sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:deb993cacb280823246a026e3b2d81c493c53de6acfd5e6bfe31ab3402bb37dd"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:63f3268ba69ace99cab4e3e3b5840b03340efed0948ab8f78d2fd87ee5442a4f"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8d206346619592c6200148b01a2142798c989edcb9c896f9ac9722a99d4e77e6"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-win32.whl", hash = "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d6c7ebd4e944c85e2c3421e612a7057a2f48d478d79e61800d81468a8d842207"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f0567c4dc99f264f49fe27da5f735f414c4e7e7dd850cfd8e69f0862d7c74ea9"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:89c687013cb1cd489a0f0ac24febe8c7a666e6e221b783e53ac50ebf68e45d86"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-win32.whl", hash = "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:aca6377c0cb8a8253e493c6b451565ac77e98c2951c45f913e0b52facdcff83f"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:04635854b943835a6ea959e948d19dcd311762c5c0c6e1f0e16ee57022669194"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6300b8454aa6930a24b9618fbb54b5a68135092bc666f7b06901f897fa5c2fee"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-win32.whl", hash = "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4296f2b1ce8c86a6aea78613c34bb1a672ea0e3de9c6ba08a960efe0b0a09047"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f02365d4e99430a12647f09b6cc8bab61a6564363f313126f775eb4f6ef798e"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5b6d930f030f8ed98e3e6c98ffa0652bdb82601e7a016ec2ab5d7ff23baa78d1"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-win32.whl", hash = "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"}, - {file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"}, -] -mccabe = [ - {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, - {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, -] -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"}, -] -packaging = [ - {file = "packaging-20.8-py2.py3-none-any.whl", hash = "sha256:24e0da08660a87484d1602c30bb4902d74816b6985b93de36926f5bc95741858"}, - {file = "packaging-20.8.tar.gz", hash = "sha256:78598185a7008a470d64526a8059de9aaa449238f280fc9eb6b13ba6c4109093"}, -] -pathspec = [ - {file = "pathspec-0.10.1-py3-none-any.whl", hash = "sha256:46846318467efc4556ccfd27816e004270a9eeeeb4d062ce5e6fc7a87c573f93"}, - {file = "pathspec-0.10.1.tar.gz", hash = "sha256:7ace6161b621d31e7902eb6b5ae148d12cfd23f4a249b9ffb6b9fee12084323d"}, -] -platformdirs = [ - {file = "platformdirs-2.4.0-py3-none-any.whl", hash = "sha256:8868bbe3c3c80d42f20156f22e7131d2fb321f5bc86a2a345375c6481a67021d"}, - {file = "platformdirs-2.4.0.tar.gz", hash = "sha256:367a5e80b3d04d2428ffa76d33f124cf11e8fff2acdaa9b43d545f5c7d661ef2"}, -] -pluggy = [ - {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, - {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, -] -pylint = [ - {file = "pylint-2.12.0-py3-none-any.whl", hash = "sha256:ba00afcb1550bc217bbcb0eb76c10cb8335f7417a3323bdd980c29fb5b59f8d2"}, - {file = "pylint-2.12.0.tar.gz", hash = "sha256:245c87e5da54c35b623c21b35debf87d93b18bf9e0229515cc172d0b83d627cd"}, -] -pyparsing = [ - {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"}, - {file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"}, -] -pytest = [ - {file = "pytest-7.2.0-py3-none-any.whl", hash = "sha256:892f933d339f068883b6fd5a459f03d85bfcb355e4981e146d2c7616c21fef71"}, - {file = "pytest-7.2.0.tar.gz", hash = "sha256:c4014eb40e10f11f355ad4e3c2fb2c6c6d1919c73f3b5a433de4708202cade59"}, -] -rope = [ - {file = "rope-0.14.0-py2-none-any.whl", hash = "sha256:6b728fdc3e98a83446c27a91fc5d56808a004f8beab7a31ab1d7224cecc7d969"}, - {file = "rope-0.14.0-py3-none-any.whl", hash = "sha256:f0dcf719b63200d492b85535ebe5ea9b29e0d0b8aebeb87fe03fc1a65924fdaf"}, - {file = "rope-0.14.0.tar.gz", hash = "sha256:c5c5a6a87f7b1a2095fb311135e2a3d1f194f5ecb96900fdd0a9100881f48aaf"}, -] -setuptools = [ - {file = "setuptools-59.6.0-py3-none-any.whl", hash = "sha256:4ce92f1e1f8f01233ee9952c04f6b81d1e02939d6e1b488428154974a4d0783e"}, - {file = "setuptools-59.6.0.tar.gz", hash = "sha256:22c7348c6d2976a52632c67f7ab0cdf40147db7789f9aed18734643fe9cf3373"}, -] -toml = [ - {file = "toml-0.10.0-py2.py3-none-any.whl", hash = "sha256:235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e"}, - {file = "toml-0.10.0.tar.gz", hash = "sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c"}, -] -tomli = [ - {file = "tomli-1.2.3-py3-none-any.whl", hash = "sha256:e3069e4be3ead9668e21cb9b074cd948f7b3113fd9c8bba083f48247aab8b11c"}, - {file = "tomli-1.2.3.tar.gz", hash = "sha256:05b6166bff487dc068d322585c7ea4ef78deed501cc124060e0f238e89a9231f"}, -] -typed-ast = [ +files = [ {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"}, @@ -573,14 +521,47 @@ typed-ast = [ {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 = [ + +[[package]] +name = "typing-extensions" +version = "4.1.1" +description = "Backported and Experimental Type Hints for Python 3.6+" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ {file = "typing_extensions-4.1.1-py3-none-any.whl", hash = "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2"}, {file = "typing_extensions-4.1.1.tar.gz", hash = "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42"}, ] -wrapt = [ + +[[package]] +name = "wrapt" +version = "1.11.2" +description = "Module for decorators, wrappers and monkey patching." +category = "dev" +optional = false +python-versions = "*" +files = [ {file = "wrapt-1.11.2.tar.gz", hash = "sha256:565a021fd19419476b9362b05eeaa094178de64f8361e44468f9e9d7843901e1"}, ] -zipp = [ + +[[package]] +name = "zipp" +version = "3.1.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ {file = "zipp-3.1.0-py3-none-any.whl", hash = "sha256:aa36550ff0c0b7ef7fa639055d797116ee891440eac1a56f378e2d3179e0320b"}, {file = "zipp-3.1.0.tar.gz", hash = "sha256:c599e4d75c98f6798c509911d08a22e6c021d074469042177c8c86fb92eefd96"}, ] + +[package.extras] +docs = ["jaraco.packaging (>=3.2)", "rst.linker (>=1.9)", "sphinx"] +testing = ["func-timeout", "jaraco.itertools"] + +[metadata] +lock-version = "2.0" +python-versions = "^3.7" +content-hash = "5c2b82d1c8a6a283f63558fc693271f42fdcaeab73616713eb9b38b0b59787fc" diff --git a/pyproject.toml b/pyproject.toml index 3bac35b1..05eb3008 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,7 +17,7 @@ contextvars = { version = "^2.4", python = "~3.6" } typed-ast = "^1.5.4" [tool.poetry.dev-dependencies] -pytest = "^7.2" +pytest = "^7.3" pylint = "^2.7" rope = "^0.14.0" isort = "^4.3" From acd587a6bda92c741779449e9728d16db9086b6a Mon Sep 17 00:00:00 2001 From: Alex Hofmann Date: Mon, 22 May 2023 18:49:09 -0500 Subject: [PATCH 8/9] feat(node): add dataform (#763) --- diagrams/saas/analytics.py | 4 ++++ docs/nodes/saas.md | 2 ++ resources/saas/analytics/dataform.png | Bin 0 -> 6952 bytes 3 files changed, 6 insertions(+) create mode 100644 resources/saas/analytics/dataform.png diff --git a/diagrams/saas/analytics.py b/diagrams/saas/analytics.py index 20659b3e..6d4f62c8 100644 --- a/diagrams/saas/analytics.py +++ b/diagrams/saas/analytics.py @@ -8,6 +8,10 @@ class _Analytics(_Saas): _icon_dir = "resources/saas/analytics" +class Dataform(_Analytics): + _icon = "dataform.png" + + class Snowflake(_Analytics): _icon = "snowflake.png" diff --git a/docs/nodes/saas.md b/docs/nodes/saas.md index 67ecf66c..2056e921 100644 --- a/docs/nodes/saas.md +++ b/docs/nodes/saas.md @@ -25,6 +25,8 @@ Node classes list of saas provider. ## saas.analytics +Dataform +**diagrams.saas.analytics.Dataform** Snowflake **diagrams.saas.analytics.Snowflake** diff --git a/resources/saas/analytics/dataform.png b/resources/saas/analytics/dataform.png new file mode 100644 index 0000000000000000000000000000000000000000..c41f16fafbc87a3dc3a9797d4c08ca3863f8fd10 GIT binary patch literal 6952 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 E0p{~#Bme*a literal 0 HcmV?d00001 From b19b09761db6f0037fd76e527b9ce6918fbdfcfc Mon Sep 17 00:00:00 2001 From: Ruslan Samoylov Date: Tue, 23 May 2023 02:51:10 +0300 Subject: [PATCH 9/9] feat(node): add centrifugo messaging (#854) --- diagrams/onprem/messaging.py | 15 +++++++++++++++ docs/nodes/onprem.md | 6 ++++++ resources/onprem/messaging/centrifugo.png | Bin 0 -> 15364 bytes 3 files changed, 21 insertions(+) create mode 100644 diagrams/onprem/messaging.py create mode 100644 resources/onprem/messaging/centrifugo.png diff --git a/diagrams/onprem/messaging.py b/diagrams/onprem/messaging.py new file mode 100644 index 00000000..65f33c30 --- /dev/null +++ b/diagrams/onprem/messaging.py @@ -0,0 +1,15 @@ +# This module is automatically generated by autogen.sh. DO NOT EDIT. + +from . import _OnPrem + + +class _Messaging(_OnPrem): + _type = "messaging" + _icon_dir = "resources/onprem/messaging" + + +class Centrifugo(_Messaging): + _icon = "centrifugo.png" + + +# Aliases diff --git a/docs/nodes/onprem.md b/docs/nodes/onprem.md index 0fd3b0e2..4a237372 100644 --- a/docs/nodes/onprem.md +++ b/docs/nodes/onprem.md @@ -323,6 +323,12 @@ Node classes list of onprem provider. SyslogNg **diagrams.onprem.logging.SyslogNg** +## onprem.messaging + + +Centrifugo +**diagrams.onprem.messaging.Centrifugo** + ## onprem.mlops diff --git a/resources/onprem/messaging/centrifugo.png b/resources/onprem/messaging/centrifugo.png new file mode 100644 index 0000000000000000000000000000000000000000..0821cba976db77a02f9ceb1971543fa57a250ffb GIT binary patch literal 15364 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 iDFH#wO-l)q!2bjA8m(t7i=0#d0000