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 01/21] 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 02/21] 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 zcmV*aKvlnqP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00006VoOIv0RI600RN!9r;`8x z00(qQO+^Ri0u~N5AVU2li~s;$3rR#lRCwC$op-z@MV0rz)%Q+dfO&=>NrE7XisYQ5 z0TmULoMDCm1McqYCfB&@u6d0sIY&_t1Bd}d$$0=HW-%h^8N!5npZ>jnREO&Bs_MQI z?}Rg-JJ0iUS2&^S)TvWdrwl702(y29VE(lSyc;+Z_%p!NeZIG}(OU@~aAa1%N?C;= zS=tDUYeI0dm5$x2y;V5I`^!0elg#xfN<>aPM=(^8zwh+c*dt#3>A9Fve9DD`6=?F&!I94AOL9%gkb% z0L%cb!xmF>-@r<6V5I`6!R(t4gdqdc8o;T*WUCBB@rjPcume&)>a2vN2`N?%qv;O7 z306kr^4bYF6o9|M>>sRD*ei$6r(s8!m8RuVgxNP8 zkURb+0q;a?P%3PJ7y_mP>$6_=d?ggHQUN$H`=$e6Vgj%hFawwfl%`{~?Hmg11+4Tk zFHOjo{ZbA@nb*G#VmriP2r$OVc_jcV6+i*Azjpx4&whwEA$HA1`_j7%t}<8y@ixR1 z5>_^MTN_KTIvVZgqXj$Ky*ur+WbLx8kWVP~*X0g#RU6DL?lQmR9N zohqF^^araV-i~1!W&*RnyZ_QAWyOIZav5w4yd7l+v_C`9SGEGe7HL(&FFQix*Ois21ofP%#SC(%9>39a( zyjv0qsF;1@eoLFGAiqT+w$1uCNMV_6_@Cz5M3Ih!ctz-nHbq6EOQy zIU@jwjj`tkhA=Dk$g-$m_P6$fp%hYWK*~EwHL1Ey8%G|lgHIlXu1r?uBu140%)Wlb zl+_BW01&Y15J<-&ZBew6$`Vr6YKn8_o;iW2rWJ=Hc4--XR>FdSZLKE&J7kW)3@ZG0 z6m)$BAb(yYJe(o34F(cWG0-Y=hk|HmrJzp|J{384XM=4SuI!RblLgbQlImRw{up zK`I-XE!Db6XCT!=vq5!qRc#}reNy|8Ksu`ny1d)#uwF9Y>PgC9u*8XopgX zz7!jlJ?SKa`f^}w{*U+F>oAQd(91Qf5DEau*O7NbyruHY_nCi>IgUbg_`jdTsI~xB z$fc&SKr!+f5^UhrmlQ93{0+_hyR76i|9Ysr2cm!7K1-V&iyc-N1&|KXVQiq!b%Gva z2#@yl-(A+2%kP^5)0N6#R*Z(VprAovvhM~Q)3SzNeHK#+>X_Gtc-tSqB+LJyuH{|< z%>L@WU?547UCE=ywsqbv%S?ek)u#;Q_oI!m8%|b)hP5EjziuDvYfZHZDepuzW$nUP zmi>t2&A}AURuh_uSQRb*zJTRk0bsyjCSniitYv*frDI6>Kb3zjNY48fFJ9w)t`O{Z zdzV0BW7qYsU1xvE%#Hl z?E_3zgyoLh_@rA0Q9d}p&ZWbV9oy{fj!IBx>6Z?<&eKi zYrnI9m6bo_S0H%G5&Mwx+U0%ecDYpmj_I~9@VZXk;Q{0`VypUm6Rq1zrt6 zGHGdZX+$wyPY8z!1MhT!_2lI;5OK3ZR}QmN%3p ztPB#w$%u^_`$3jrSnd@7PzC}OH<9vfZ-)(y-o9sPBuy8y)%|Ygrbnb}{rJo0#h3E$p2d4ub=aRSc*PTeN zQ?TYBEb^H0E`b#gdWZig=f@v`^MSPKjIBH7+MbQYaY$1pUWFkWOxD<7vi&bD`_|eD zp#T6FCKu$7kiH2tJ7?-h-WMBCwfDYsMZC;^HJ%$z`-!MA)^e_y`49ykhk28HQZUZH>GUipwT1Nb5^Jm!8@<>%PncPsl5;Pt?- z0D4C*yK-7yEP!EP6Uvjje#ixH%pHiY2A74}mW*PiBpu2M&sz_`Hmv19H7@{^K{>uk z%AE_mY!~r7qV*pJ8wco*8Y~JJ>z^xTN)xqU!eVMhZ%tGM4GqvaTZ!^RRr0Fs}h%U1V z0LTQNZfiR}04E}C3MSZbdPn>ycMzqB^AV2*8$zhDL``~m8m#;szw*AwH;j!&vk?QU zsg_mfUy=D|Y=qx;B6dfjfB9a)JcY$0o<^L7G`G33Lb!w1*joASb@~PVh&(UhC`|H7 zOY5?!sFz6vPWtlV9mMH~LXjj7|U?wSR20Gm)z{w1mxH!s4vcCZ?DoSZ{ zD#aQVo-~R)k2|0?K%B-v_AY^o_gJd@?*jdc_sA_YfWv@&YV@y)IGur}LI*3rO7Mq> z8=@mVgpUH_JR6Hlh}1>p`MSUi66<|hmaKqfN&zsM+EF8AACzsF$)V!70mKoEYFknT zJ5KMoTV0dx3dBP}Grdv=?aE**(};MZI}~H~w4GrY8D6aOZ)3#Uz+Qw>qkUftuftF} z3O&#}=9b)#Fc)+-=qbNng?NWAekM4@fRll33L2}7n+%+WSd*m1vMCkBZNS&6#W)?>Wn5H2)MTlc ztlY0P8Y<-hur_ciXd-5O%gKdhMgcfNI{ z1aS`V_bQ)N zUKzbA5FTLbbF(31=Vrl1b}JmVA*B3`lyiWQR-`(aoStX2XW!_&IFt{1(7uXp@ydH%Z**K~5;dChe-pAkscC`avbgf)OuF-$_D zfBx=ES`1@`WkLavB$oO1s;2#b_BmSVtv!TM?b;f|;p#{8Z`T2Lbe_jA$oz4^{`SVb z-FVzV5%6?B#9KT1Ms_6Sa64LdAj&YnPSgIfK>n2_Bd6DqvJbFKSOMc+0rW4}gG@rx z5Ho>Q#wfV8vV0REVg;OVTVCE1h_ey%ydwmGy4&&S-a!4&%ew>;#+4P&zi5wqgq(_a z7h+mN8T)BU5YriGBaDgC)H|_|&jW}rwaOsHe^XHCZ!Bqj7DQS1RK!eDR)O&)Cm)P^ z1;G4)bp)jx4D99YK<)4bfNFf;`AUcVhm+-q{F(^mDQZ-F?0ou&XLsGtk^*!nI; z`n7inwGneMAU{_YesiA2>P^V(Yvw-yjJ*YV5EtmugmJ3?`seKqQw*f6hnPWrQrtTV zi%LT%U$~#y3W8QG%J)F;q+;3Wx$H8LXUZ}{6G7kR@;WN@#^Xy`E5E+florpA=i1?| zFlx7E7N?BP-QAKiI=Us&jG6{)(&9d=&@Mp7arbjug5oOzC*N*2L_IfR&v3X!pmKL- zCB`E(mk2%3xWL8ztzfpQf-h*D0-A}Kis@k4EF~D13ZQ?^?vTe>FuWDm(KDh`2*o`% zUw`M04&p$>tAPA6iZ~ea1Ela4)XHe*HiB?Ji0)(yK5vXPn^>i2x=^urWOQ!Upyz2A zaXMntI1M?Ug704hoQy~?x$`#yQ-&esQpC?~Ie`uulS3*GZmRO!YZ-*{sV?VzfP*US zbDY7rQ~(SCiNLTS_DUu{o}ob*{HOBlDYTiuR1|Jxy_0TpwxDu0@KmGTIu7ph?&iE7 zV#Z7fhXXqxV-@C-h6Kx_31&~kkx{;cXlVXE60)PUu`R+UWh(+h#-8EO7`g17lC-4j zN<$SUV=sM~hQe0o(u8rR0Q%?cUXJSGD3om{%^@VbSek0OeMvcp6zI<<2m|FyNw*@t z7F9MeJVGOoFMW*0=KFO?HG_eMG0up*1fZzPuquW#fVIMNXwUC3k2U~iAiB|HJ?vKi z4>$M|`m3i2;Ry<<7cRbBo zFznKXLT~!*`KgUZNx1+ymxQ*Fm>7IT3LxVl5_28h2K}xKaRxQ)xm1 za4g~#tsN|`eVYzj`?&|w!5CofXc(cg9J>V-!t4H_Q6!W`EoH2Ph;8aq3qtKF= z3iQw0J-^0l9pIf{H@q}x2z_t2)?NV2MA^oz7)?o$|7zg=)_U^xU|Q02m0g!Vn|Bw) zn@NG;@#PE{R|){I8hT#(Qc{j@yz4UZ$Fy|0BW)s>QxR*k%7pNWz>M4TuXYQn;m@sF zziXpvGe0Z&U7v!gzu{nvY^?Le+_w5>?N&OvY|O%4!;M}69(kTOX+D^I<5q;G-t^lu zC7{0`&O?m0T0&k~GB&=~^3%8wJomD>KE{p9<&%(B_TC z4}fTTT!}ZrTJ{Wf0S-Y#_iUF+z&wDsDwwdL7;2r?P1ET74o%2kPNgB5vRtVL<}{44 zTTcU1nneP|sYzanF*A`8ulL>OB`=;EyelD9mUBu9~d$8l(eB1@prj1A5bMho?pW^LGsAfSI2u zgevcS8?x}!>&mj=v1z8ql?7CljZ;r~-{cT>7v~0~qJQ>cRMcaDaiIXLX$hc&R3{;A zQfcV*eqM(1vQRW2H=W0v8HKwz{BhGV@f^_tBsd}>$;4o%`T#Oe&0xMkBD&iV9p&}{|J zf^+@a!^S%oms&dauh3^TrJpBm%5Gc4;p6Fg@o}L53P{-ovNdJ!n}}ToQulZ4l$WLd z6vT!k9n9ws?+)k^#3RKspYn*|V>l?t=L~u?@5rsfr?4kE=eGK1LdIiTx)9!N>Fu)wdyl|In8m56yTejf z00k2UlqOQdvX9RB+rXc8YowzX#JSO%e!GoHIAQ3Qz{N#*aRt+kU+jITV}Ng?(<<4B z*{kq%Q9#L;gMfphjoe39*Ur;SI~nT>Sc9~MrqU|>7I5_v>nzA;@O*dM{ZHg z#_ryHzEMXA57#we=q{TOeepJIFq{b5l*Cy6E=5?X3ZQ@1ZWe=76G)i>tOHc%SE2c& z@3&8IF^ycpD-g$44v+Z26np%C51fx`T`{I;>c3+R#>L(DJVdKKihC-s7Bcj|xNufL z|IFQ7E9VGcPcPn~aNOOMa9BAiy8y~hn>idXsEdQ;$S$ho^WMneNvh4X|C%2dnP346x? zn6Q=BJN5QVVd*)*p5#{(pp#O!8=v0%i z2PW36Fer!MCJi;y73m{ogp`Ez62u8y`Iji(z0>Z1QGwwv7|zA+i*w2njisVg1ec^5 zczSqHZ;{@x*5vgKBQpcBE*iwAG%@*nF*E%W8PIf6ZCTbKf5-4avHTa2l{|D&;nNUe zI?{%f{2?#~q?@t+fN*>82KESS^^C13dF3g8zOwDU1aUl@^cF}yiwc&W1(4Tl%-+~b zBk}&3(B4~`oyoU^Q&|#nRJ5x^O6712N3Q=0Qb$4gVA$lH`dXyBf}Pr}!+4xNjkRz5 zJa83OUC~r%EehTNIIJ>_7%M2lIW;?AgMHNN2;fciv;NMd-7T}BKpTA825}T4_C;va z?45o`&hP3;&Y0pQ#`BPDYV!5HuasY}Qh<)(w@<$up#OhM#|l^~3ZVamU2_Ib!LDET zaz0f)p^T}PGrI_ifrqKiU(D>Qq^~sU7a^U*+|g*a>79ND3=aYP9eYq{eqc`S{Em#8 zF*CYt>fnE8M@++pq>3vu5A;8ur5|V_(mN0@^y2C31Vv-7SzN`tuBJnSP6M3G1hZLi zO68^;2nMZ zao7Bu{c6~7-K%*M#zw!`=-5_Ps3DhWZ4eSM6f3`X`W<8uu%1Sog_z^5D@Mau@FtSS zU!FmnM9QWBU3Z`Lzp$&l7R4|P!@Gc~oq1TX+=zFU7|k&n#gR(gx@(sAJmSZl2eU;COH={$KfgQD6KeM05F-Kdp(Ng9Y zq-=r>@jYQoR#sP9$3jCDo(0YXp6TM;?7clx0*3prF#{~r+fyCt`vJzXcfZbuwD!B1 z_9n!QD}(}IzR5yusd`aI7mZmNvDHjBmXX9)E|quRMcmR|CM~F|NP^+)J|r z!8862=iNr+CaTBdce9nr`@k20XXEyug<_OJb3kW-`c;~0cvb51Xb11Rz_8lba}elZ zsg7aZ=vJia7NcI=jr4GJ|APBo&EFwhThG5cdA-N0UAgFNQs!Ww_s(verT6wbGaS-~ z5Lf#77~prPExP#Cmk52NrEXf|4rVtZegG!7jF&hpISb&7f=Pz}yA|v5^^Vfeu&Tau z84GyVWxZ$2oxH*P!Y&)>hn4!;AWvt^kHCDR5Om)78@SZ#ti6XYA3~dj3i_OeR`8XL zfs;GSJJlbtS8#S-6GVPFJYg!J1W9`#Wk z=hGcP8r#cV1@0-kBA?>#Y3#idR-rA0(I1wO0_cBs7x)|i>mp{5YPg%J6cKdV^1cf+ z*RTJM-9kDKpm)Yyor>w5aVKCP)qJG0fyb+(3)Q9G5bc!_Bk<1DANYTI_8lAnY=_CL zu~y!24c3DmuERGKEBG3dP0iv_pqv8C6WC2X^DV!-$t8#0JMID*7#jQx%%x+>4Am)2 zEU0KmDby2L{(K!{ZtXtGEFM@g7C`9;ISkk_=R-X}Omt)mr3uZ!LVxvg-Did`Gcb3O zLhqepYh-x=7;`7^)n+}4<6gz1NmKsmb6&;mFiQr%VcJuDqqtO}t2>0K;+HhlAukX`cOGOaGty5_AvkIsJsh`829 zxba@b)QJy*fuRL#X!+bU;XcIGQ7fd&DCs^A9S!cHD9SW1z{aSzA-6y4R{}+6v74OE zM9$gzw$9)6cU^WNoDE+_+y^ZDRoey|C&6$9CX43~vmAZ=j^Q0rc-3XczX0cwm{F1i zwKNwUEdD8g0S3GXaT0R6bZkU+pLZEaeC2gDk1hNXaUoC57j*Y9*P-_hcjfe^!1=(V z-h>M_YJ@wH%WEI+s`~7WfV~qf)}e})p>I>%k{rRUPERPXMvR^&I)6l*Pj&@J?_K`R z(*MjZmA?@5&M4&bdz4)!5|cxl(&}RUGze+I4YNXsL8~% z_O5MukUIHXXcLw{-GvOBN8%NBgWef;*&^nq4+EDs@Th-xafyvWZ7Tq=k-56DWeud6 zh{<5AmFA=4U3Y;}z?5g}>-=;PXet4MjUbt%yv{ILpcPD=lOcMhk` zEmHUrFl$T}OsIXv(p2G5-~tj-Og3P6p#SMz=zo4^``Mz@78Vw-0ub>1$Jav~R&b-S zL{jIJXXx-TxOm}|RlHMEh?TOO!lVa*%X0HQ$BvaW5O;~Q0+Hk_XVw0yaO(ZR#5@e~Hi zuRYs{?5s@xQ!VXn0bwyu0R&PX^wUbm^@jELG_FvLfINMp5w*=B>LZmIAkIa4loWdZ zcz2W(WWX?y1b8f*wD*s9*?NqA0lK7FuZxRMdASx+?ODBylF#-tk2_G|P5xOl%+-OJ zBxY4>1?(KA1HnLZvo-4{gR;S?r$I|iZq#V5D{cGyGUh+|QxqO4i?(E|KNR>FFqKs8 zPEK3LHHdo}?I#qgz*kO%|J3s3?cIR*HE$kv#MXj-pA5vDKG%={p0BGc!0-T0nDkkepAv&PE zCD|^^g_TklJnFPG70|^b=2wWgT*|Tz1$M#)5S@uwgG-;F|GyC{AStFMUjuHB^4Hgn zVlr#C?VlqqWumF_vc+tPCXQ#-@X!vJfN-&A9x?X1U$f*q#-JGxzoc(AqM)L|^|V-`>T zy*c&Thm_aZMjE4~h=zO*a!%FNWk3f!e4o{PKSo^6Kyj<=6B({)w!ujZXXWjIcq1aZ zoZI`SyW!;!H1LYT@_Nq z1sHyh!XqW%wu{3N+c`8(#0Hst0i$VLLI1p{^@eOf=swE(Xsgq2aeNqYW!?{hbN^hS z8G1C2%I^lesYdrAfyJ%>djFgWF=Z4u7n~h(b!anx>uI`(3 zVis8lhw8Igz?bZezhN{Ses4^Dcd0FN7i>V2DD?j6Zb$@1eSDXRw8`Xj)1cL zAPJ9RvH`(I&&PMN1C4E))uZyZtO_zUQj`t_PiH zoes%;KLI;pu2Wpy?V}@ayi+B_g}|@r0&TdIFaXXY;m?ew!Ol`E_bA|%9@_IT;_IW9 zY1*K;nBY5zn<_ZB(bJHR>S^yI)zz)17jp#yYh@PMBo7WdVSOEo6qbkrD1U57Gy(B`<2(dGvX~61F_Yn@+j^vkS=a0?bxwv zJnyP|2JS(+hJm8%`2COVl=EdX(22OVf-4`i9dHCKCp!uY6`sX#7Sc1NjMc=m%G{cq zj6+*y@f!12=1+<%v_}dm4gu{}si@@DFz6Igt=Fp5#sEvq0_eT_?wpYig0Aw9O76tp z)2LjP>)UWbts~V{w0I2ZEE48pWO0hZ5J<;^UQrcFfy2v?j*CqrAX9)N2BarJXCuw4 zoY`;Sn|*iBFQjfGbQD~*(bH^{IQ+`WNgZA*CzR==Y{00Y|M7q|^X|JHtB6ZMKP~Za zaH}Y;I^H#WY~B&jIba?`(EFEr;$oSUfH)p_S)^koz{w1ojZtQ1hoEdTKLEa6;^^R9 z;d^AhRnmSZ(pO0Z6Xyr3?tg42*c=$ux=1r9RB)Y-fb~5c)}|!K0!w%bkda|c$lpgz z+_w2+4oI- ziENo{PWm$7xTYo1;OADPIwo)BAtliJ=X>&?Ci$L~r~SO9I^D|S{Wsg)eBc}mkCPbJ z%4k9vBL6VNj?p%pE49RI$Y>f=)MJ5#Rsj8v?bP@SLGNGgv4q_5*iW!G?D`ve2nNGtGaD` z84JH+*FUo40z;%Z_~u;+tMN>h*-~G=y6a-)KzJYS91qPC1?%0@LZ%AGZOHAk`vS5m*Ek zKtbSU!1@UKA8A>u+-)6zOK=@YVXarIruM!q)O7iGDZS+3Mp<>p&Er(tBaUjt!NO6H zY=v5^fZ4@{qVHk@k5+LEZH8*&QR}GNpmJ4xdHj1)-N6gUarcpkRkwgiqIs|oCbg|h&1lv8%b9>zG9 z0WZOHXgszrUWWL2u(Q|asxDKyYh(czFyL3MCX-P<4-Z)7kTI2{wXuAD$UVtu3;3=xmH_pkTl5t8ifwfPCV+{{ZA z5V+jB!t{2Vvb5zrmPa3d1rQG!GSTEp%Z3h%mYYqjO1y1M{8Z0DW*zzDk~eNKoO#LD zkJA+R4o5Mnt%DsZ2a{zqx)1oWmtVeU#}>YWbW>~m0+Zz#)fS{2A41s6%ktS4h+~=H zjv8Z!1-AeOxj@Zsz#AQ=9K+f}uV_80ZvO^I=aA};44XK$ zrHA|gjCoySsV5fdxd3x01MPwo*UIJG@;2;Y6eq0wdjqB)(_u;EGB+?8v(R4;?Tz45Z@jVU+D7O z(UvNKh!v1eQN;l1e8is`yv=1%X&>}~voPj)FyVpbzjK9_g5dk zan>A)JD8p;oY=32+J&Wx)P=X+gE8z`nDkK|3dB8_Oi2-_&pV=drUW5=H9EbApB04x zh!+CWK||1K#C#U%O!ClSE^(=6|;7}Gjp7MX15up6QS zF+7glBr_j{cl{OZEM+oeXZ*YHC)RQ7vqLcK*2a^f6F)KGr-;kEyeBA%5;p=H$1f0nH)KvJ^5fFUY?-b19}$h5TPTJ@5xduLY6=0*v*zDH81_TNJ5HW{lv$))6&%sJSVQh-C>?>k zAuCF(OUkLFOu#_@zx+3*_ug}F&M&*EM?4wn4A(N?t}#T!-3RfyC{1d4R(-w}hEst_ z0R8`Lxdnc$5fGOkei^9aZ`f0=Bgh%lYS901q0ojA(-9kZ@oZDzez_mX#Kbx{$9Qep zm=r*vT?~^j%)nmrU4;^<^%18ahA?49_ug}Fz8+d(WP>>&ruZA$jkp_aLQv-4fRvfQ zu(wWM9v{smtd2O1RI6ef;n!);6;pyh7a)G;;Ui;u7MgnauEg#_8@#C)F^40~r8o|& z+koo=W&Ra$E{WYZ6jaRrohjyoDHu)zrUq%R;~ToVt18ojfxQ5%7u^qqFCgKUz{P=N zUtx%QN$A>}b^_kgDP@S>=CchECo`%f*4}(DHVdGj-q+o*N+39@Achc_VYlDc{OdTH2Id! zIs6p3w1Wv7#;wid?`jED|LhS}m_(|uBL9zjZ3bhSp~K4ZuO{XG3eS9CR~8`UK*Xye zxWyH`k53u8i1q_>eao5moU5^6iV{C0f#r$78WP^oS9otD)ZN;u_Ao8Zw zYY+z@tT!tF)Im~XOS|3$rMWr<^j?P zNG~t(tqV?gX$?UYpM8;DZ!fHfI0FnYNMShn6>yQmJ1XCOou0rm8yJ3OdL~fy`=% z(}2|&n0SXVCRe6cA7 z+#Rn`>!bh*6DcvPV57%O^)lIjr(>>#RIH7Mz>Wwhh^MjPndZiZ`Ajl(A%BU4dm*lo zZ38wiQCkAXHx-!zoeY|t5gHw+{5}boiD6A9B`r=g1EVRx<;Xl-!NoO|jV`_L1 zXjHzkspdghBP#N~2I+v-;3p&5`?-UMkgmv{+8v*BMxw2<|KS~AqClFKb(YCqI*Vs@ zOR1*Jd>yHpVgF(<`}1r<(0lK_`3}K90q28K#O3_*@t;E2ngMc|f?;2*Qlpr&7RQM_ zZM=2B@ha6Lx@HErzDT`gjFl!XzG9T$H8eK`;RfOI~& zVIG_t%2TI&^*3eZ`(EL-N_xxkSItJu)k#d)7x4c3Y`)1u!k7!OHzQrnGb29-6CeFo zAs=bqh}g4%gG)>3zJb^jtx5MP*d^O(thYM-4{lEfxE8n+bQznk9ZgtHXENR?A2=QU z*72<48*f|HeD;gAxPi84NYFt6^gpyiUhx!Q2G+yf9*3^_Y#L%_wx%0&y7b)<|oLo|dH#9HJx zKzCRXXtx0J6o&l@B0`Axh$x>Ql$k+s7%7d_Lt#P9i+gyZ3ZVai?Mw5|?r~qOm4Gnvt7qoc6oCHw z{pMEhgSjcpbBMFSxs}%cC*T4MziG#}M;h0t@?fZ9qB4i1AIc?J)ZF!=+_sb#ty#3uotQD{} zgCsni``~?LhspkeU<%XdaA1cZEo~O(f=`)-fm1PNJ?5qKKhW+xi-8?DCt*GQ%mmN& z@;2+sg*1@IowhaQcMxQXXEaD(2a9-XwurcaN{OZ9ki|3R9MZ6<=4N2cf845GHeiPdN>8m(8o~ zw(Ofzv3+d{Lnb&~3tIr?ip_yY`!|=qY6w)qOq*)DYG>OIc#UOrgo)*blUu=DUn$4N z>;rT==o*|VebE2F4!Jox6?hw%)hY-EJ4f3P;;A$^3Jatyfnyj>;wu6lx*sObwdd^N zEYO^)(se?h7e{^R*7z&=^50H6S7wbRs)Dd#U7+E+cl z%1+ye4^SJd8uSz|6T~T`Y#8e>ZP0)J_Ap@rh!=oP#a_Hp#nl`0qK0GYrgM*S*XVHj zTb-%WtBSsx`n|SZ1z?FVV9e@ZW{^8DDizlnOe5H%YQiW4xeC&$7<#dhurTFQ%|ki| z^h9kJ+FZn$q&&f+bAqNn03UpN&fqst*<3Hd^;DRh3VcM<*~p zeF?Pq0_IH4*Pd@ge7^{&QOLl#(p(DvxwN^TMZQ{N^6r7CDF*v#??+56F8%j*T0*Np zDSK^(vP(XEjl4mFJP)1kK5M~1we8mAZQpGTI%=U5T5f4dZ$a$rwZ2@LRe0=?nO8AW zlUu+d6suwPp{zzSB-{xDaC!=ib zeega=62RCSYtXa7dV^L+0Oxw1w!HOpX+C1=6cV!$w8$}5?oa~aSnOTB;dB-22T#YS z(GgM}!E(t9KMAxc(wKb#{SR!P#eCETh#BNusdr3Y{ayv#g1?WxX1e_muSUS1ni~Te z3ZVb~?d|?GJBOHoSS36Mjt~?2vuW*>$6`$e5i8(B_vc?nurd7~%YHute35~kftISYo!rezlVOqANYkOCPW0}9^maRe^WQSq~+=RHXQC6tqxADK8*3Huvl(hPL zD^eYmcebcsqXzx=ZEsuOAl-t>B_C}#YixXPYr9Q)Uk)6{ybil)TzWpRz1y3P0Jin= zIrcj=kaX#1`8(6dHwC)~XDaJAt$?Nl@S!*48D9hJ8*HS$jV5Cwc6Z>77~m=Y)$BHH z(E;xPuF1-}0l2AR*7=0;zU}ieUI?D!zA+knf{6*mCm=kZ_InR|A}tEN58a=K5uXFu zjWu=tcfr+1Qx|$e>D>`ioJ7iI!DF}{=>NxdHu1c9AWpzuj@6D|F0(ee+AJGa?*2<^ zk7wf07D#0qY6Fq)yxW947*432v>jPihv#i+tKav=WHA+1t%hK#D1iR^w}G9o~jmUVn}Ox$1eB~FoI#VM326e$H}@ZwV3rMUYP zcXudIw8dS&P~6>%>tMw@Skb|ugU{^zvdJd9$tIuV^Vi8sZr;7`y?f3*4f=fB-SF&M z#ig~=KA$e{Y(hrN!4%W1@iO{bl!_$1F7Do#a~Cx?oK;}U=cR$62&gI{t#dpj20Y0K z&4Fr=&(@AA!~DLs&6X9PIYU)h4mM4dgXKGtj+~}E0Sr_wcBxKdvE&<%kjHCf&NrXB zF^>{Q0xOBYm-m)qiH{=}H=y=um8$D^wlt~9b?5R^4AF4nO_!S7p()6f7{i`lPPoym zs9VPyNOxG?p!#9)Z$bqbYPEsH%Aj&4^%JW3q6)1cW52qiP!=x4u539wL ziz!>t0gQ+=;Lg)I8of`UFnc^-X9yO-4Iqo7(V%;_68WNQ=XHUX#XYK}!x(0a{A4I|L;6NAQ*o^y`u&U6V2y=gv)x?PA%{I)evU_vd2 z!W?Esu@N($@7`rNnHGp%L#n-@YRDS?kz&v=egaNvY*K&u#cyXBJ-{E5(RGl?0ZV4E zy<2qJ{f_1>`5Nb&so%!q1*Snip4IedCd;(QR6yG%zMC=jCJAOwPN?*tTuRqvzE;0k zn1|vN+erID4vGr7Mm&)$u+4X@G-3E=#Q)qqyLw*^Nh`{UzIx%BY|x@^wB!*};02Ym zs`4egk?d0Z970cPlWS+%D&RM5 zz&e>SdmOiic+>3uTB@Q#HJpzgoboH&jV{<#FE43ExC9f7c{(>9z>i0H*>EN>+2+Br zA6!~RM`w5p8%+4Fsk#vlsjkW>TDvv8Pw&`d+3w2Yr0uf0^aIYk%dRZeY~VRQot3Ez z2$M6_uo_IbhAz8hyBoiOl{ad7BT9z*zE3<<%oe6hrre(QRs^q)wKfZM|`48VW#SH0tIlk!Tp`4 zxt(lPD>2YC#1{ky_3uG~#qn=fjZ-PU)a@G%Y0>t|Vh~HuyNQePp8O}%e(Mjk8-MlO z3S`b!UMuH(+iqoy_$;(Zpg~#CAGvN@G%L@%C0+gNJW*MJ!DP*uDmb+-x?b(_A5AH9 z_3ES1Z9`^#7J7%q*yflT6dj&mLz82M?Jm=8An!d*Vfv`R=z|TFuXP-Q? z#p9;FkcjpeKmd!t-)_eUXo!UQ^k7G5`-@8s=DUe>Ty>s8$w|f5_iWS$pclJ+ie=N%cnJ>x zT3A8wX#jg{aIZ#5h^DFSJkjL~_^)rkB$=y=Ia|@AHO_vRMl_w9sD=vIaW=&R;Nch^ zLcziujSbFN?2X<_moUN%fDBrb6$ihM4+~3WKitHD9lfn1Q3XA$*|&w@?O2;PJss}R zg_+RC(-4rSd5)cklv)lr6XYd(a*RgZgYyqQ|Fx*<+}hBcUYU}8^YpqsGEA&no9_ub z^4DT>bQc$Pu(0h@P&9ai>$=Zk`j%8*vh!-ryYO**Forvn$H1C|w{2L8*|yJK-}5Sn zu0OJ<09}t9yJf$3Gf$&u!24?9Zdqu znkZ(Gx2KIp4l2aHbiMjl0FEJoFJ)d7##9}vo)}zjL4APFe854Bup5yrjK2e8FHcs{ zmYL{<=1+GzUE+)Z5Nr*zCz zcXsTnU_F5|Ct3V4)>3AtUI`1K0swD6HEsbm z7G6GGL-#}p=CE)*_k|)UCC4O;K=Yg~vsgavv$_xCd=;G{>}tHGs3Sr?nakmImp~d% zPDTx1I$Pd@ai_6pcu+mN=%+Vs0$=T3%?8D+JLc2ssrIM;WICky5~ZbnP`JkK7FAl3 z#kbNqc{q=3JFRX_GnK4dAW6w~DE*RuT!l6F(+A^r46LfpW>oHVcy$#+9^k#L*^H*0 zEl@9b5qiTq>sKg+eJdTT=2F4-KAQNS++Lbj6ts#O$dPGBsKJ)R{wfkgh294r5w?Gg z>5W^?@;I1Yp3<&Wn=%(@yG~Lch2QiRm%}E5^xZ} zb^TD*^UbRecD>$27Vk$kNF_Nv%Z1PQI}`V}NJB(g-Qe~USEebuW0Y+vyzE8Jb?hy00h~i(7;sRTO`SSN-crdy=NVl-m%_J{I6s%L{|dr}RPt zDsMFBwPwFG!YUjBT?OC$$5mrGe23avUr%zN@>BqmCR_>m&c!+%%Wq}1*wUcaL}d^f->4r^`2756tnZ}t&u$C1t+ z_lIN7?k%a=?Uz(xjG~|`5U1m7>*I#0r=ZK*!u2(|3`C!!gGiW#j3fDC5#viQsWKv> zvw+S0_GE3@7M{r~InWAcmwcVfc?kjd?daA}ijO@1r>JyFkiX|`e|f0oNy z4Vs9MNo-@BY>+3#CX8M;pN}ZvpJ&36P$Ig1DU#L|7Y&b@=KFOh67xWAS;Oi!dkS4n zAQ_&z7tN7r&G3!=8PVqiBMTz*7PJ_OucX-0wyxExsVm=40C-(JhJ)ACyIP$>s}M6g z;ZS*o&}-xwJ{*qor|A6Uy&RU-ag-TG#>#h>Z51RACo&}=6a1x)^c8+<&Qm}fU~TN6 z$v)_w?mqX4(wnvKFYm8t=&0@La_l|5yZteSIE={_(RKRq<-Q+bz`b*Wd&-Tt@T6^K zT^C@zdrR0rnkleaTaeG4ksf*#{L*-8BQduT(5lAbLKJovgI)UF2QbN-=<=NR=MM{m z9n^fA-kNjv@vb_zjMeE7NXJ@)xtYxug;AOc;gWlD*GxoEun`5gVQ+0DDd-FMLVvG2 zi>VsfecNjYfw!{i?vP^rPg>{DC=9%g-CtD$={tO*jUguyQqWUk2U>*z+~KU z{S%<0I~0ocRIklM)S-9G8`fA|knC;{T{T2S?f)i-(d9e*y&Fv7v@BBw^Rrk|9ifbI zE20tAN0(OOW3WWko<^ZCQG8=G8dY)Oos3C7w`;E(K7D9G*fp?>4E6#2FvwEZHaM%m zM&V()Zsk@WBoD8&YU$d8FazWxIfcFwax1W8@bA{sA@K5V%;I-~u4jgBUzsbx1qrwDdcm8gviA^aa9sm^w@hbxj4s7W+7Kh}FW^I?4@ zK7;>FnT7Y9j@P3z6(b?*k=Gf%fiy38xmil~`I;1s5J$=cdLTzzbc*|rai`cmTt)hN zwM=B&rt8i11iQm13D$CqITNfeAZO!RA`-+)LdQ?TWVXs6x>&O-=nFuKTw_fMRMAfF~o)LZ(ARtsr=IDa%xPP;cs zOV=2A8p^~mnJ%6!E+XFe#@vTZ)Cywdc8+Jv@V1Z+vmY5l(ZKrV?2t|X4u zGwG4atb#!0;*_`M<%n)3$NR+e5kJSz*qZMUqbsjGJ^@?~@kE%2xR0xO>wj$sGw8gB zyO30X8t3|t_by($Qa1X~z{M{amC5|y!_19u#$&%h`mF<1 zWkxC+QytiLq?T}hs7Q({%lp379N&cISoY-dvmjRN(sbL_vx@5-`kl$ylzc=&T_QBB z2*CeW`oi!Pz0MeA6 zGX@biAGSStN0lPM`TClRuac( zo0s>}Gc-+=t~s*nh!%5n`Ut@nyP&SchNT)Zs&-X`Wje57q_a zp|baGWYKM3n5M1tkKyrUXpEq4)Pem)_J(qpuvZrt<}sWstKr_RBx2j@^b>} z<9mj%le7v|)t_fGGa6#x1idpxraZ}C%91xoFbrt%AJ6^!owF}*@bqWy2aAz@j?dq; zzUZ@OnBT;hSb&QcH(VtE(-~IISiKavB6uP;$!+u5l7GjQp_e!cOGA8FWjB(@g4PB< zGG6S#^-!>s2YvTfxe}Sj*Vg!dC&3j269|)}yY1o?+OAm*r5o=dFR9LB7ONm7^Lr1v zLk9{1S3Ie6ZQ}haKVfZKk6+gT2R>E=pzm;kX*F5x-rj@H!QH5d9GF_d!p%6Y)2z;s z+m>;>Nz!e2)sSWTa$fLf5Q1>ZCKKzgS*H_QD3tY0^DTxFgeeH!_pORn>28};>|xJe zs^FnOl~-f@cMclf9rjpx_53@-fbNROr2_*E!s&M)<-jwu|0(2qWoIwEC4Oy&$6E0+ zcNO#-k}587rSs`W5yy6r4ibmn4Kp?zIQ?rc5NCp9lvle?M)y#!|&}NIci&VHsHQX+L%_nmUdy1C_lAIts86s=)LnM7fKp>N(c*Q zu|*=CQXa$0Es`G9@Pw5D>H7%sdtXX72u~dB5q1B^e_JOLT>f^vhq{+c)yOP>3;YDw z!I{i?C;DVJ`)F;8UFwhHMtNZj)PLa#V{>e&1$>HImTC7PlWhh+3z=E@4mSG9L9Y1 zals79&B?fy8-hy7H9P6zXQ3M9T?sfzMUD>t0ZzK~f6YEFMr4sG)Zo5BP?xGh`wmdL zhbh}iJhjR67pX+sIV79#vdcNNOCpB%m^(_vh#4p3S0);Pb?G>Yizoa11OF}E^UHne zUMI}-paAp|e{!qhC8N99Ak*;_(HF+ARrKUVgI^^R_(_hjW>PaelhzL~E3^;^%-Yd3 zH^;3q@NP=`1x^f|+qHk)$ZCqrcs8<--rp+_x?yzvjP0}e(=6)T@{S85-?URVp#>xU zvyuS9yia>XU|}^w9O<~OrUpDE0I9J4CYgBB70-6Z&N~L50BSqt`~!W51o{8q8c%C< z?NREWMJ?%L)^}lske%=$^5iWrP9BXky_f$yjU7r9`T9`TH)YTi2^+tp=e-ZyYsra2 zX|kg&fcbLB*C+mU=4X*I&TTRqoCXtd=67g(?25lN_MmE zC7MPZ9XQ7m95m)bFn4fE!|$!S-Uhfyoxf_jvT65InBG&}>^7K*NQPAYnDH~MEfT!` zTwR{Mb=u|iKlTi0R=5o$s%Sh-yit#Vc6&MnSCkO!G}tcXFN}Hx@l5PwlG4s^IzIea zw3mf^)cWQjyce9xlIAzaXh*T%*-N7sMta8=!V2yie?!h-V=uohPr?->AH?RdOG|g% zZXiXs6^>^8UtURdVoh;ZHvU`~(=Ke1g75DkgY3a68qy8A5c(L{gc`mD_Q@ww_vK4E zQCB_%Qne2OreKLw`kDrEHoc-=ng+VJXVhGi4_x!NbV2e7IHn23pNmWw_t)8@80=>3 z%Y*1@!fyQw0!eUiss~|65)Td)*YE%EhfExO_T4M;0kNJ87OJIq`~OjUXvvzUd8(B| z=br%gVnt<;+mISCZMrPAcv{w^MVDfc_GhB$V~Zb-wTucu#)y7Z$Vrp(;J` zKtd@xinP=NC~E8GBcddy!WO9;wbc2}fbR9g(5la_3wJ`YO{o5>%ve6WlvDGBF&tk? zs~IU#z1h_B#Si^L&6yvAV7y6(9oHr&p}(=~95FaAQ%vMnp>$h(pG_yfY&ibPna>g@LNeeILYBNiv#&k;d_Wi zP&3Y8B6NzF77hOR04_KI9La5(iAu`#)+WS*DnsP<2Bh@{H8$~LD!OhTmfQv&Pi#@| zdn=&QC`mw0pxzQO$+90kDFt9LxjC`Lg(;XsrXE@Ac=P5r$x>FMh25wXA+BHzn4R@z z>Oy;~(bLhGPQu(L(nQsbwk8xc4D&WX(nd59@$p9dIr+0jY?f?q_iD@BC{F0zgo3uz zkf*f)!~yu)d@_kK^Y4)t@6Jel2tG24?pqKY#C*gy&D(iGwuIVVd?zlZPmTu0Gx?=4 zc>gpPb9+uZ%VU@@$0T$xJdZkC+JoPg9(S|J^@h&O6u`y&`&?m)$Lir=_Hjz)V$@GV z!p;SZAj`x}hl9R?!kAC+<~R8_xAiW>{kjVNJ(xuy-W4q|xgPT2zH+H?zAlMZ)zK6iK5gmVS`p?YbVs%Cru za76UGffZ9fg-7t?$)MbbFn$K=aWJBWX^Y%#L+6qbok!^w%6@*z?>bj4744%Cr2)Ol zOjlvpKk{+fE3Y_tb#3i~D^4@q5=loQ$bG1`2vY98U5#c$SM2LQ1R8m&Bz#cPLx%F@^5*42h4w84Smq@!>Js-A@;hUeerpXy2bG_Y$l~hIP)a7 zCp4poD9rNZ2A9pGU(xZ&rgqlbwnqWVLKCjc35ZB5f8SZ#LPLD)^xlur)Z^DL`N(A5 z4dGc=hE`Km(*F!`42~vVYH3-hAvQF&(zo}ViK?-{85&*j#rLR3}=fq%OJTwVJi zI6V+?YoS2=9&fb#hw4OHU7)l{mp;BT4tMqe&5eu7gICOml|a zz*}`(l~uSH=C{(=811w#rvn@4>IJ0r7~+o_`N3F1dh@&3`D4r8eNt{Uo8bc(?5ONz zkY#@}*_20eE(nvZuQ$*K5$!s8rfJWE|~v z38#YTr0XU*w4G&z-O54x!hnbKUYjiXXO0bps1x?Ca*(&+ZZkxzyMCCRrRb>S2D4Z^1k7g!j|M}VJg=G0wZ@6h&his!QW?E_d{D7GX@ii*=+g< ziiEDcHD47TmjtX<&|xIvq3@3$I!5^YVzv#-5`~(t9c1*(FhnfMnfKxg;jA$H^h2n& z$aF146o*t$AE^c%A2qi+2-)-XW!$JEWGqPwp^>T(p&Ep4DF03AIL|ReQ zTZ|V#H=BjSIuHVtf%PmPyZ~G4v%>QAtWsYFGaLrNiwHry{bw6b%Gku0Ht{`tvIIvd zhHTgxLY#8^xLvY$Zn$$C{Fdj^1X(lceWz |D^2fO&`Sl$-IJ-geJEKHOe36puLdq`xfLAk}>INgf5>|I_)h;ZKd!v z1viviWDh~=)|;op{p9IfL={Z`(o2{4i2gKs2`#U6> zulq%`a^=->-S+80(~5>YgqCmtaXv~gS(a9xX#r%NHo9KEz+SJGS=X}o$<(zelOB5R z4W0J~#=PR6jT<<^<hi%_-8F_r$( znv!pbi{z_{x0%9SgLKf=Mb9-dn8wwZN5UEVuW~E+m(0pmcOUECFHdF@>uLAzj?dYs zG`g0tmcT&?h(xKgR`Nl=NqBfkxSg|g#m_6V>jKw=L~%W6KdlIjx9ZLS32bZpE>Hlr|FeQ8*vZDj i)56L1|H1I{2=ns%??tdf(dJMXG(}mpPqotK;r|Q2D^gDY 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 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≫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 03/21] 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 04/21] 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 05/21] 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 06/21] 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 07/21] 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 08/21] 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 zcmc(Ehc{eZ)b|<87!1)OTJ$7D$q<4eF{$a_|~_qyY4t=?|shMXP4jJ_mP3V79%}3Jph35`ZWzh z0ASEh7(gPRm!(&MBlMziQq@xhpe%ubYzv3}7qGu(s0TpMSpdSL0N96y!WRMXMFa55 z1^`S70H-|DKHXG?CJ=TyS{mS(@|Rhk{~Q{j^SpN38vq72$^!$bX`BFX{k^WCY8>!= zWil|4ci0xOzE;1gxbsyq5k#<5^$JEh+#f^OowwAqYtQR0)0=J63}#kphPTl+%&NoG z6x-sZZRQmGnwWXe2yc7rOXg?TXSYQJ>0JEJ6n!*bk^aZquQ6FAD5%o^_G!G&jsC5j zLRN9ntd*6eo%$S-U|;pR6r<2%k=x4*0@>ef0kbA2b+~8?C(vN&00NKE2yin>8axz= zg<;ukQ6L*>|NoF=j}Mq{Zf%H8FIc|ORXO%5l8a&NnO@L~YPUQHI=) zq9RgUnq=BfYE32pd@*!|eN)U=ns)0}vL;|FKEKg#FP&bzB%$z$ zv1xEv<@M?FGez;CA3dgG{^}i+7Kfa`)FPx4#nfj!7vL(J4_ThFF4{pTQetUm%Y%*Ol z%USRhnk9ippVQbJ;d)ZH9!nk09aAL`ZzbyclQH6e!&!mz#aCulwBDn+g!FjIlVIt4 z9@5kue8`DA=Hrik7GlbZa`*`k2*%wSLXK2PXwM_Q=w@RZka(ek9+^LYfs+{F^2~49 zon7MR9<*ywo*c7}rH&!;8KE zRz=?s(M`km-Bj2~%R#4z%@R(Y4%m7pX;$NSZXZE^E#K~8XPmZaq$>I*3cTm?i14jN zMoSYho~@Y`XClO<6k(>8UR0Odm)ctsJUZt3T~!x~Romvy8eV^{idIDddO{g}kvz&Z zSCG*3nZarH$MVbRH5I?Jd?A1Il-Ij>#;S8q<%vDjZ;$Te z-*PxR+p{EQ>Ak%au%3}?_ILP+=bx5WoIUI}Ma}y(gqyeNVj^MKtV#Modd;1J%yd!rAHQc$#7L8_2_C-mq3c*Wdcu$(y2!Bp!GEMf+XZ8UGB}CoWOXegPzL2bp0Ef(@gP% zRA>3?3oReG#I{aw2*NF>r4T?4wHB)`mhRA5S(I7P@%2l3M9T@QP}cGq*6yT{aQ{>< zc4<(M6?-RanhBV{Y)QMVSN#)rYL3*n;goVk@==5?OP(O9GE+>O6MRdY8j(b&yGIyu zQ!XXccQnRx1Kyb(Rtmt=6;?DPCvKGkIr9+_pEePzkj^YLE8t>?*-QgQYMV0N2aHj z^84B^S6Rm^{_{E!*TifCm;+<^ct1)Io^$lIQ6_}vW#uiAXz=jrMm$5cVCi}_*Y1W} zvTa|Fk9r&(G~R(WL8k4-bM2N`NNM75RPA>5l;bXf4*G~8{nR+6h7dZ|`)ohUt#+Oh zI6;iduCsWr^_9avQwyb>;xv7VIKG#Y!7RVK>tMG#hoZTFM$GhN*Z`VF!eS_bNcMR!?>osQ-97A#2S7M&Z(`e*YHg0@6Gd3s}elBAo z+Qp5|>?OV1!#DyAtsnVHD1+Q;F-%**WD$}zld)yb$@=E#wPr;_T5Fx-&GbvI;!b4) zI}Kifm`{jO2RuKda@X2WwQz{nQ2V27XW$W${r;)hsEQGlMPD5!WlB_VkhhLX2>Z)o z_VR)4!%u-%I04&qF?V5Pzx-C(S>F)3oU1(?veDKjj=n7Pw$HF&ps5p7Jm1ma@*fQJ~Aol`|TB-a{x zcZuivJGkl^K+f(YwJLwef}9@*o7%bzp1_&4RUq8{g;>jzc zKH~z1%r$tvXr-iP-$#~EaIy(n`>B6)rXlwl#(_zyVcP7j`d4~L7`#b|V|_3;U+^hf zZICjs*Q3M%1tCSJzE(WxGJlO_&3qAnpiKA+FZzR+5@k3uxL0QYg+_Kzm00_Qa6vf? zrhi9)Z7&-xc+X#m6@oxEFN+c%zOE)mGTf9H_KSlKC@SEtnw-=Uy42ojKN2e|p)>qD z6~aj{uS!+_4yyQ9q-gK{j0DRDzsLwktst<9jW*3B++r6u$Ovs|I9!Rd`bS!hXAjxr zMfat9()7@A-m^@YIJ@ajliRg~-&Ec6Qs$CJtS z`TjyZc}gTu*LH!7q-^&?;IKP3(SsV=h1|3sHPP{ya@ssG>M)*vh5NrkgS3$Orzz5s zkGz_mKcLY4F!`(1=hgwGuq@+pL2AqYD68IijO!OQF2)L{MPRvz-zmysq!WBEe4PIV zL;KDcRoSbG&Av8Zu5NsXwqf(_c*;oXhqN=yD2Psvu?jf$>du{J$jdS|LH^PVzrD<_ zf?O>;StNHBQ~f(|bVV#( zSQ`+w!4?lBUku*Sn`{Sq!(1LTeFp{xl6cN{Op^H} z3u26EcI#UNv{ja!wH57Qkl1&1u=Qj7RsSCZQH{E0c@KAQ2ZzjKQZi)qRIBdIz_TsQ zQH0fTn_W-^LilPeZt$LrS67AHX=IitXrD^$;V++r+ZTr(c8XX4jhnOaRM0gg>bGZZ z-JLQz%?I6lS4v)l%g{3em@eE2FcWlpUO2mHm%_2^a;r_&Mn*kc)a!vV6wlEhMjZQ` z?+Ap%B1-Na;)Powc5Selt|>8FCP^;E5hpxoZfXIRCw7FaMTL`OY$uv!VL~Ut%iPjN6&2-{ zU#*u%2L1)nv2-VqFekQ@JYy6{y!NeAtF1*P)cu%Lv@u#tT2YqQru9=|_evZM^OT}0T_ChkYn1aYST%k z{y8O$;qyKpFk+&}r$|uc_|@E0-*O|ykh?4;;+ew@=NtZ2rMRM}x~bQ0eS+DFfUzWi zv}ZW;n>gS2A$VSV^!JAkfPFx_3_g9znt!A_=IpfVPuW*%Z++2hs%KldejCGhZO5zM zvUlBmVz&KD>aAgO{jtBM5FqmWT8JAqzcGH@-PZl@&^P9m+j~x&RE49yIXHjBySH3p z2VticV9f9yu4OK%rTz<~2*c0CezXrDzj@Enng~@68xX?2mTT7#f8#WgI=lcuY-u1T zN%^dD`{W&uOk@5{Os|ht75br4rih6=Y&Sr0d;$L*YcaT=52MXbXglJ)$L6Rb$k?c6 znT~3fmHF^N41ZVpTV-*kD9DRo7a1R^4Yt_d@X!>pty?L=CQ_t&GE^(=?hth*%3O3V z7(Oy{p!ao~4~0@S)sH@nkm;v!ea3^~l}DKA?Qi?h%yJli$;V0qRrgk;>gxQQ^k|PQ zDakP)S^Ic)G)%4RuBqv}5y*GDw5GmWYe#Ia;Ma*dN&`gplE9S{l>EO?bhuU@M(wrd zC3-ImN`60H4^|u(@_gF(wmG3@bU=*)Le_z}vJJ!+R~`8=Yc{JD0!350|W5HNr3{H60!?(L#WR zKJfKXo>-Yj7?b~zt0XJkMPs=}3LMj{(+k_#@h8@Er`IB$#`0wSI;e#-W7Ji2$f$1D z{!2=EeL{ZVYg+i}mKMqx@-!-zthsi@IV2@&?FpM4nH>zFOwo{_>r*W&8C&?y%Y|hP zAs12&%LYb{C`d{hDQGiJA1zqs)vHh53LDL;I0G$t3YuZP8oSTK`pT7sRJWojdU`eQ z-wmlw-3%LToNC~GUAZN6`pO^d8WpmtW9ocy?rL_e5+RPN+;!fFp7gT%ZlvNGE{F^^k*BCLX_I0TK`^1N4wIZ z)3y9v;#Sc@smpTc+ac*Ozv}sYetM{gK-UmR6LrUZJIQmO7piQ{aa1pFSraJQKh5DW zQzecghaEK`$Ul;o(M57Mt@cbkpv}Zg7j3vr1d@*1ye&4;*Dh!oVGy}mt7M}a&?K$2 zT^q^kD%rGn{1H#%Hm|O_N!8B#&VTjFz$eJ7p_ESOz|4N+sBWFp-~`Km#lP*mozDwBp9DJv6=`O3pqkosZXVcxfXd$tlv2O{{Ev4YbCTY z;)na<-fTA$d8qe>aPkG=B-c8M?%op<=G}K2Jfy zV%SGiU;Cz{^0o=KjzHoXq(!OE&UDJpiIebr=G31x=C<~<>_Keyi=ir$Bx|;lZLN0K zZXR++$6Q2>qWOfAw=lJPpeZ4=lB0@LL;t86HpI?ou?rO^n%~SKLn@0rH_K0XlGInA zW{*1Z+adl)9V*)2#;&eSBpn^CUcMc?vD|M1d6F(p$HXE$&hlT@E;GH*A?ARMpZdW+ zYy0g@{W*s66>Imt%>{I5Ks|w(xZ>@}vnqhRo)2Bjn-2)^@lt1@PEd{kg>Re4s(Z>Ug)j>WbWICfw#=k_klxWCrIRu>Laa)k41z^4di-u*@h@(HVpXDUO5b0r(Ee{9 zgelz^+Vi`4f&)XZTdh>WPVT4><1MGua5~xhPT8{EVWJR)QjWaa1_#-)A@(42C?3CN zolra(>Fn}2Cs%Rxcs~{co#zue$nypc>tZFj3xVU9utu((sYX6Zj7W;TrM2revQOIv zG7WgFCX`-hDn#O0_2Z5w&XL+K@R8ZR%de>`J7yNieV#wEwF3r=vBfK}{AnITV-qYU zgshb@7E2pe%i`fak&q%*co;mg8*=dHK9|7Qw zA67;y{6>g6Vgk7Z9Q(mpvBS%sHn#YuTAqk24b*ruGgB?SP_)~ZVmSJN23@CUF*w!b znWdUO6T7~bb^x6yHapBX8L;$IU&4Bru#!$K${`7L5I=qt0jRaHA9l@eco9IaD~ri! zFlqBo8aMZ_Sj`lbwbVpFVGciT#NU4V)1+B#1J5MBT=b=@$n&$$?o%(l-K+ebk*A*t z%RHI+b1bCM+0pisMA|c^1qqrZm&Z!hSML~~wP+hz32`P7 zpZwLkOu;Hp3k0ecUF<(x1s@`R|pwiX8sKNci0t?cqtk-V_asWzWq! zxF#lB_+UXWBVf$OZf`FPmU)AkIzs8o3q=uTJy2tBQTC?#KI$HdpXtwj9^c#ZdUsVk z3Y83;#_8Li#n}yBm9oAH#RJ{ShYb-_`}+)wOTAf6)=c=I=)~S6N{4*m%K-Po&NFs- zuvTVgoSqsOHqYoi_|D>F8IW9(@M)w~xXxD6_|A5zVNZQSrn$Jg5h*=%S-+&hEv`H_ zlXx8yT~PN=a%;}MA+W3V<3GG;;I=nGRS?{zy+oH$&ZaCFOJm8^PUy=h19HgjWd+4=tP?X*m(KkZ})cZ3h$_oE*Vl zhw+}clfWN3R-))Sda80ctM$~pZJ^K}E(q8EfBMWp`JVFo7&a9b5nKy?jzgb?&iH7W z`P{YjalqJnIY2KUgO-tzltxQROB>5bW2Dg-8F_Iu8iPi&Kb1TDUkq*@cU>F<{}%%q zbMX>JM(#g`psH9L#31^ASMYIhbMW@Db@TjRJkTQ281(<)L1qnZK|J8ProKk8n$3g% 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 09/21] 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 Date: Mon, 30 Oct 2023 09:47:14 -0400 Subject: [PATCH 10/21] feat: add azure private endpoint node (#873) Co-authored-by: pisethdanh --- diagrams/azure/network.py | 4 ++++ docs/nodes/azure.md | 3 +++ resources/azure/network/private-endpoint.png | Bin 0 -> 14806 bytes .../azure/network/private-endpoint.png | Bin 0 -> 14806 bytes 4 files changed, 7 insertions(+) create mode 100644 resources/azure/network/private-endpoint.png create mode 100644 website/static/img/resources/azure/network/private-endpoint.png diff --git a/diagrams/azure/network.py b/diagrams/azure/network.py index 23dd69c0..d55ad3cc 100644 --- a/diagrams/azure/network.py +++ b/diagrams/azure/network.py @@ -72,6 +72,10 @@ class OnPremisesDataGateways(_Network): _icon = "on-premises-data-gateways.png" +class PrivateEndpoint(_Network): + _icon = "private-endpoint.png" + + class PublicIpAddresses(_Network): _icon = "public-ip-addresses.png" diff --git a/docs/nodes/azure.md b/docs/nodes/azure.md index 88fba3a0..10667e45 100644 --- a/docs/nodes/azure.md +++ b/docs/nodes/azure.md @@ -572,6 +572,9 @@ Node classes list of azure provider. OnPremisesDataGateways **diagrams.azure.network.OnPremisesDataGateways** +PrivateEndpoint +**diagrams.azure.network.PrivateEndpoint** + PublicIpAddresses **diagrams.azure.network.PublicIpAddresses** diff --git a/resources/azure/network/private-endpoint.png b/resources/azure/network/private-endpoint.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a69915497090089a02b6cb7d3bfce477a4d7e0 GIT binary patch literal 14806 zcmdtJFzpv?+RB|lEy&&hzbAzFl1#UQ~>}O=qU^U84-H;=2UF{-<7kf z^cO(o1nCj<0^UMQQ49d6iA8%gLV#YQILPQY0|1zP|NUSF?TbwT0Dc=;2{Cnd{j)3- zFZKDm!OhPv*$SM?579KIF!1nwF%g|piJtXpZ<=*I$`K$a{Sgp*{ z(R{K!@fCs0zQEAG4)=X3(KT~!6m$I{QM)f{7UQF)6@9f7MGRzV2jK3A!i1SDEb3M* zEm*$jWQ3C1V@cIM#gbU?DfRH)y*M8j3>gA@FE^)1LnX{V&~)%_fc3PpyUAE&6wmPV z5yMrWHW1HimMxs`IBg27y=0IZm^!7JsaYn^UK<#0VG%W;A0P=^j7~ARDa!HMbvipu z=;or}2119WURb=}B|W*1DRT?i7l4bCUpEp+dpK~+)lqkGYF{r;CgZT#J4xBq5n1|X zj9D(KqG=h@kE{&%7nCG;obbxbSu{`9**r|#P9wn~kZU#dd&iP}GhZaxcILIRn^`b> z-|~Jul>=@7$rxGT5f67~2>-gQthK$Xs`0s!IHCtDj6Jh;fjo6?_p(buy169TaR>bi z9*vYAxhQFM=Y+?byr(V&hO)wkcfMWlgd5f8)nb8Uu%^)6+Fx169v%_>S4u@83i6a3$5sR&7RHv``7$22rHdf9j4AOP~wv^z&Pqy%2UP9*r|`3~A1Es%X?Ua@`IJ`ZQXsiefCA>dMJ=Mw8vTK)GJxZwf?c^YlN|#81G&59E32N)$Tz z@puJC)bxe_*$0C_Ik2>Gnn@VJj?!y#8~6#Y>&GD+jJym!)bfGL;1c+d9b*gMEOAp{ zOi$D-5CPg-w(YP=vrS4G)Fg_5#0UH7Sh7%IZ!`T~{ zTeE{;2s}~SQdf2lk|6$X&X_xDWn=O_ZF3yQZ7Zx6t0S_){O>L)$wDI}|6FotgOy`V zv{iBE_y2oKjcmj?^C*AtV6nMZDfBVwrI zBPQ1T3lS#Bw5eb;e3M%AQr)CXzGC^=zY6VNBL4e}&oBLRPe%03)JioTl)_?I@s^=e z;~P)JU~m(xWS&|+CA~i^cHS7Pl8}04{svG;3WE{$VgKV?sIB)z6JZK%A5$-w6goL_ z>5@Mc!tp4gzRvnaQ6W>Oh7u5m#J#q@5A~y;)iv7M1h796zClM+G1q4HAqeHc*Q>Xu zD>fw~ia_`LnIo%6Ix4H|>tj@D_7Fk9q}_uaZVYvj{V0jQvy7?svtIr6`s?Wl+_YP+ z)sPByG4=PVC4OqQtFi#~?{nwMqL7r-QkKw6V!}b!>ws+pZ`sJ?hubgRyIQWuPONK?x|{}n1+dAt#Sor{4(fnPWm zb2i#7aa{~rT%m?q^hm~hB&-E9&*I+-!V#k>ib@Y z8oyaKHr1Y|NzG%Ts%8}bl@x$LIib^;**7wR?c#j0>GWGBA7*TCe889nIEz~KXcUn( zh)s+q7JqwePe*88UZOhkek)@}3%CCE2!rY;q22i77v>lCaUdH2pH7_bwu_=e-U_kR z;o6gZt0B(*#LbjBIEOTpCN(NlDk-HR8{`Y&YA42o@WI-_$sywQXz%CiRT;`i$c930 zl8BDQaRV0;45VhRCjtrw{`NA0b`K|)pD``~Y04Ze zzr!WRc4E7;dxl-HsE!nDs;xBe-u<3-h>T9F5`<=YsDUJ<>+)yaK&M*OGM;7%jxYN8 z{5-!2OVGU2ap}JJ4_Lkz-NukF=tA^e(30pw+%z-zK{~aaY&@nc>ZtTY|FQ5dkXt;& zpEX8p^FgCeWAGFr7>KVyWW)zI?i4YL1oCTQVE7<=dKEmmy13VQKb)o5^(?88q+pp$ zstkZ%S+koR4gJRT@wDeJYkc~|Bq{2~YhE2KsBdVUChJYH>B4$Ie6O*-9vDnFgk5*$ zVE@a{xbUfO%#v~{;0fsy@xmdhYQbPdr_D@9NSd#}S{_b14FWzO``B6uVwP9b-Y2hb zizdYy%U&*Lc}$2gv2}_an*3197-$%P&Y{S9LHfZcvb&ru)dx3Xk2^YM3*R8<`IlB~ z*`wQ^2h04%Q8)xY>EzvyHI)mHF9wuOMyclW0Z-+~vt#wtKYa@?k%^5z&#zXwz!$4- zUzIPd@9WQMpG)Qe4a^CMw>Ht{y}aM zO+yg^-|IY1%naN-E9n`2GWUIg`}hhdh`O}qao2Va>Zhdi!46~B5f*WRoCvnr*PU8% zI+KQ?jXQ?#!f(AD-v?Qj71a(>bT%&%iWsnC5mjVX(^}$-ZR2nTO|Fipgxs2#*>BM`ng`(&fY6@@Y+Mw}bRB^X|@W9;#z;%bO z1MZS&3?idHnZ6FyYxcks8}Ad)SE!BF;PvJK>syC$6ulu96sy|aO<87l0sNJ}g8=1a zP5Tdz!#0}dR==W*`F_{Xk6c7k0rU13A!@Y>OsI3(;+O&5MBVKE!GReO@%1*>xayt= zvwkqyq6X~oi|2Iq&F_8bARfnWYZ`$A9e^LjM+~bAhF!+a;+wWKC*_?6BhreYE79y zkHopeoC-qUbfyd!N}KR$tU)r$!(R=7Ur-d`VCS&h`&^{{{AoQF&9mPJVYw76*8S+> z!puu+Ch(h|&s-aKxGDAYZn}LQIttK%=Tnk3oN%dl?Hjb%717Exh9~&xupf&{-bz_S zi$ts6nNRa%ix9)_o&f9}b3&dbK|auV%iUWLHPrOBwU-lehjnBC7+&JJU%1*+9DB?_ z6CD~O%SWE~C!GN^H$@p=29WF~5L!j_k8?Qlh0hSkvXcvZH`edfQ;qQAE)uV^nO?hk18fUhf>D~1%#TE@ zMmXV`C?;N2M$&2JQ`rM6GYl+$QGvu7RM;Z{5g|lUoBNoX?wbb~Y@hi^&1z0j`jY@c zEgg>gj-dxBdLPetuL3v6e6_)^K3f3n2K0-Mw$nm<0vc_?Ehj-XDBo_Rg?Xc7G4jiH z^_&%td8Kvh?V*8&&)C6cR;UZNi_dO8ty?H+YFLRBl`NSeRqKxi2z9>o_tRM%T6`zJ zrh)_xA1H#yUg?oQ{(oeqM;105^^ZeZo*3@6`H`>#D7B(w&qxx?SG3ae4YCTg>~@6t zRbT^2d$;jNKW5SJ>}1({RBqz@2p_(o{PzWrz2qe{O<`Vjd>4oI467b)NY37UriJTn zU#r=;hn2vk&!C`iy0z{zOhH3z^Gzjvjq6L^lE>L${bCZ|0(CmF*9l6o-g<7^%J*%w z`xYE*BATH6R7w#cK$_QIh|)!L3^uKG2nFcoMT*`gTStWJ!IH7NjxVArt3eJPyeKrou=zy zh9z}l+~RHGb95E^@+D;o5bl^LF;e<>uLR5DkU$SU0SM2aYjA)Jx%X$w$S!a4lsBO@ zVK+zE8a|^h6r>)r@3Q{+O_HO0KfjL^mU38{h5CnDU6h-J9{1`lnXA&_{U8=0fzdW| z669vuYCua`$Hg9H9|jIHhL(Y@M@cnF9%SPV(QfK!W<g9;dP3lsb#Tm5&Dj?@d`-O9Nq8Im2OP(mVCa<(@G>Gi=p_6 zlP>QP7dJe4dh~pULc;-CfeYlI2Xvn`A*9M@iCNnjP^vPgBB29MRkqwM0^~Yx{Eu4f zV@5e2x+^*#5#SLc8y+{9qzXI6BYnzJ+u(3QW?f&X7Relc6aF~Lxodq_1TIskqo2IMQMZbtHc zkehw;!FglESEc!z$uXX_H2W#r5@z|vo-_lGF;NxWVP%T1<4W$iG&*f^P}2?-uJwK0 zk4InhD0H=E>xkw`kZo1O)X@N=wWahTl{#L%HK0O4BAy-1~%O$leoSVnbB9uDGy`bs6|^6cGi-DtDmXWupT@< zG$6KI&nr$8WBV85`^}Sv+FLtlKMU=8-;0`tu=S<})8Y8ty+VunIZVsFO2sC1(+c&i z;v`;wTf^z+!EN#j7H=^R*&#CKiqd}}!e1$m;Q?c>D~Qs^>C{;^>Fc>xpVD#e*rl{5 zv7Q)`6H}yPVq|;{rk7Eg@=weJ@!>z(OQg=t`gJcua>wl_%^Nx`(3qF zZ*g}G9g9EK1-uX>RHy-zEAJ;?W7w>mLwwe^F}}hRa$lOO!1`2YQ#i4X4UN-U#EuH+ zTdG$u$|-~T*vQ`6brNL*jc{Bk$M8ELu7fj}YKy^JOCGsaGU2E&03>FS7ss=95rao3 zHz22mLKDTpjX2^Lfe1u45-TAQj`ivuutsIvPBE5y!j~IALq4TFs*-5~9>FSmX9OmQ zcfDeNKqG|X6c!MpwxT+pWr8MY=NxzI!U5;A6&L`WXMa_@nn(M}p>oe39{bJ$!R46J z)7XbC(7yPMZrBMFg+ z!v{xzlT1)!2>YK?p~jIV`^h!Q@A9)u8#uh|VL7h%-Isw-f}jj`F3Fe=8z&x7lZX3jPK_dv(&Qb1h(UFCr^{GI@n_KFh2chSG*cMo?LR)8uT5>OPrf%AJLj>|O5uViMbEv&5mE?OM9RW4(h-6kiF_5raSB z0URV$Jq62jJ&PaO?I>FM35~i%x-1u&dORQ$=1hY)vPZIViD8t*g;-(@n(#a>RK+EG zQ3k0ccdLuY24SsOMP@&V-!IU^^**Bcb#JxbTpwR#WZ%1WMDa!BSz;3~un)acyQi=T zt%#{={pwv?qIbjGIQIkEx%n3F^R=w)v%ZWM4!DYLYsY>4ilE`0Q;oEHA9$|2B)dL7)KUq=8jloHyH;CnIkv9DscFxzzLPMNtF;j-SM2*@}!wj)~$ourC~Gt$s1^M#rX4Xxkx zWxtL3=sx5UkPb#%caE|rrHDIJX~sGAmNS6(darK>$J=60b!tt+^HcQh?#hkpD$M3` zJG%>5DyQCqfl~C`7(}F!z1I92dTAM#n%a3j9+HwC%9bD50~rCfjiM{mf+Y6mcOh(7 zYV?b*;Jy1mKML)eK$G@vS&?2N^7yl$P=SwVWvxCOyx4YWy;zSklxA%C#H!IbfzCn= z=vtm;%@ZMx>4nUFL0GeRlbh^3CzT=)uHQeV8dj|5ebjfD?Cuevh%n^^=4}0k%n!`m zSjZ0ZEjldr-UKU3V4hy~67!usXCnXbl7k0+Ikixdbum+n{t&eAd5 zv=8Lgt?M^^G&^kEbR-4Yc=HUM3T-PIQ%{Q2EUb|vq@cq# z=t9-r+Vc0GL$qk2nS&R&u6;tD6)Xsn_T>B7OS{LNwU@~v+Z^|CXW{70w0Eb>>|8GS zs~`DhZppdftaqjIi&@s0!Ct_3q+D4iz|{>w{+uuu(~DSElx06h;_f*3Zc;!mXNEA> z4(n5#Ro9Ys0pgper2xIe10X$936AKM?fgW42TM)Xxbg{xvJZ>q$=4_J(%Edj_jgB+0s2hW|gUW5PKU0H=KA+H=!K?}$eM~&7GA{Pw$FCUz zFk=r{z?a$X?e{DE3h<}Z{FUb+$$|$G?0)aci-uy@OC!a}e7JQ88rILY%By&n?9@OC z8eP9NpWhp3oUfwsvFZ;`I?40xu9oLK5Sa(pO2b+A5RAwVuH?wTfSPtSVmgNcTe*AT z$x()J&;&(|!kEi)DmY@tG^44Zkhj?j&6~#CvnZAsHysfjL~cpo-%@vXT&h>Jzp<1A zcFi1h$F@bO?pzSq3)DTSKoZDWe4%!Uf!eTe^Ug-0x#`jJ=d^td&zg*cC6J=~6Z62; zTf8yskw#Y4#`az_XEoi2bXsYI2-O3PeU}e(#3BmQOypnZ8Pgw$wGw?s9g%Us+G=II zd{5CG3Z`xo&}9G%i$Bx&f?7Q8rq2iaxS5V^ zg#pkUHn{)k0z~1~{+0hyu^D7#-)b0R{iU9oV~j6_XL(^Am`a0|+Kj6_cXL@jCg_Ad zGKqoO%gP=8r3sX|x%0`_H-EHYE}HVKl1j(|=CQia{)eK$;r+qS1|g&oB7{1bZV$*T zjCA3hNA}qAGWUaIj7iAeX|wZR@y3G?s!9Ys67o0xci?lST6vrqd-DN75%c(586-Vd ziyPTor5b@cZM%#c0NQ2evN;Jeq& zqPDX%A^h-fxH%qm{1Tao8@aIglt>KHvaT1Uqi5yck&-#TB+$UDx<-!1+qTGFyQ$Sj z5D*JU25J}dlY+dyaA!>Y`&1;1+&5Q`r;vWz+gfb&^^|574){k%Ell1KFNtt z2ZTCx(dX-T{d4gCpZ;dR)n8|pZ;x~FLFtN$x5Re5$7H=Dh(m_E^UU~xQoZ;#Hhzp&rfgqW&MN0G`65bcWWS ztG-?5hZ%M;T;7W>&(MO5*e4^M%&olYsDp6LVI)JsdGo(+l>+B=v5khykxwXY`#y!D z+UFN_e{CoUl19clyqQ&XjWLdVGKH#uvqMx}9Omz9Vm9{kqz_3Qz|6pn- zvj7yC8LAe+nGNAE2vVv?7?SMhnHn2(t2YC@5F;3_Hrl$!QmeLhjXKLyemOujkAtoz z-wM|2Z0P>NOH5Xi+Rbt9>>4&Vh`I-5A{LW1=W8Fh@7G@M5qs>3(E7JM@ibZfV)qtf zT*Zr6GrxN-)X>lvo&W-De#nmS(4S&m_ssxPCEzwDH+^Ao%F?!bIa(gD_}#jLEWfBc z2-it%B)|1OSqMNws#xUYv9#z0fgf_9h(E#C`GX%2muo*YVI4zUCh%PNMjW#ci#l#{gFr zLMGp{0XcDDuolCn>3fM=!2!Rzv57tsrIfx<{>@p!xHx!sjQ>DwNx55{1N!S z!h^Wc7I(@I^A`Mva=BN9xWhy>JWEn`>Ei~?N)T~Gb+V>~`|g8)c1NVTV4uu~_ln|W zU7`r7fubXJ_KvW|>ycegm5NjUZ7hV{yM~elEszz<# zMC4-?M9T8Px#;$Pij{Br087k#yF7eU7m;)jev~lkkU2MmJo$iVB8mEMWGVsaX+ETw zi|4PyO0;WZhFbm5QlGG}igOGZJnmV$cP2yCv1t_^7oCMVZbvZ6G4&=MK!|>D`<|+e z^S0EZCLSBmo^H6oo^?Cz_|ieK_!!Br)UFpm`P+RjcJ(7+tIT}}UQ9Q94-Kj{@dh8G zM$^*^IUquHopnavbm502&h2Ss+?%8F@A#!7jISkb2$k>ag?M;6nyC4+&$7- z?UbM_hp<2wqfvR5GVGB7^a}KzGS<0F5)+>0Zb(D2A=6tI)kHdD=GxaQ{4wF9>$pj4 zrizINzk;QQ+_a(e8~N(S?;~{8$O_1i%Z9T^S|bx8CpsMSWh!+wHjzTW`mW1?0{(dA#cfCeO4r7sHXk?`+$HJPo; z1Rr0j0>`UF+Uj875sktRt!S)K(>W3^(PAC_BV=5b0;NwXWS2kpz~i_ZYuyx_RStCs z>V1n0N@$e4isIp1OEOYEr-%c0@C*|DU=fFqti7wi0A7FosMIS{KA#z`=_)uO7<~F8 zQ{Ro>{5j2-->is@yJF>ItIhI(E1sd@WfyR7d6gjEh(DjKz6I0N^4Jpe%7PFaLhly=6C zc!wBG+7#)k+{5tbsuaM5-;%#b*m>B)_EAdw>y}=j`MS?HCChZPR60AVeTMY#Hm-P9 zoV(LDZKUQmTg-PVX&~pk{0#W}Gnk6~j~K(M$@B=Xh?~k0p(N3VeX@)9;ftdb03f^F zJ^#QTO+I^ghM~-q@8gytm=1MWTs?$IVtr``>+N;NL;CuW=lra8B|Dx#oFR+2BBaVE~H6H8vN?EP+(tjlpMrJM7srq`)ppvG2kngD#_! zH&?bqA#Yon5FM;)9FLBZV;lyo!lT_Xb$HgFeyA8KQMtopnU8aX((i9grT1&jE!TY6 z%6w^g)@eU7Bn4aL*#82Xi-x>5o%xeNnT~YvA1Q|i3G$PDHSN2S_xjruNt)kUr0#k+ zbP8?c6}AVy_>8l0XT{Zh0BoT|jm9rV$t-lH6{Ngtuty@w5El|@&Yxo_uFM{LIIJJs zne?o?f2rFAva!W#yAYD`meTubzDh+Ncr|o6bXgwl)u75;RGi#w zdX+D_;S|ShD}p6n#JVTTRlJfawS?OJC|(JD=(pVHCWimAHfg^uMsrZGHXMp5%`-G! z(Z#80s%+pHV#FAl>W6~bFB``12wt5;Ya8I`#@ktWvfISjCVzn9+@K`k9))@W@~* zmCBE*##x84>mF+>?09LY-vYFK(2{y<*bjhj__MT`c8DoycYGOQ5t+7u7Vj0$eSM7H z@vj5K2Gn~uv4LDrMV!=BHXbB*omzQD z`rHo;$$)Guu|(2Qg=Po=LUyY(yEGZJ$fR=>6OJ(Ql|bITjK3zZSm)RYwukfS6vT4* z#YSN6qtb4tJd;tVc0R#dc9AafsRIH2^%2u)A-l%X=J=&>ugM}K@lW9i{)H)tM$U}P zoGasd#x?}mq@?lrgO05EcAmk)2QEy(!@G{+yx@~n~-&i(I79ykWiXkunu}h`ku@|h-el;`(t{Qzxd;ga57mPT6 zo|)=q?9}*N$B(f80OkDxDH^~?h@P+8PFn0wH$! z{v}X~u4l5kkAiR;$yZtFaP_wIwt@>ytJC>pZarS%kvPHwqMr3HkC2sdc?jz@LBsnX z0(d^;rt^J#*evxfgz%wWh|H*2tYuMTw7B$RLg~vP{1pvcrj@o5EM zHg1ZOj-4J7Y* zJC=*CWteW8J5)z;0Xp1|6qy>MVV!9RC^mg4PY>ll&I)mT68X zI)A;->1aPJU$QEFZrQ%^*(=np%3ZN`Smgf#eV_WiCUPJ)K07Iv>OxT-8=tLvG(|Y$ zDR@9NB;$ig;Gecz<=BIf&sv96JF5LZ-bit7i8u;yP`0|7e3Xb{3DlN^rH7zl=y~PD%#B_h@VP-UMD9`1SeM#46 zSiN*G6ALs}|st`=Iiv}pMkk!lX9mZ}rAS;!5P zX#|%9D|M<3d`kvvXOWI6eI=SkQOBVO&t<~PJtNC5N@Gq1Haz3`A*XB#kVc0bvhj=W$G4WFm zpWmxkGoE506l~RCLRE}#06$6G4&zCGm79MX}l2ht@3fgAsFubW|U1HK>= zWQD!ip|PyI8GGF<^XBt1_KK1~+Kx@BmmZkxEp(7WRLT-Qp{IM~$qwyelWfIk|Mj*Ft%M_179YTf84Ze-BYA)nk$5|-jTT2sq2INkoY zj-$gqpr+3L4XPU~fi==o{oPm;M7;PQz!LJ$rSvBiA78xMwi%M6P?NdZXl;x%Ba;sN zuOK{|H{uh&3K0hnHok5(zP_*c-CIa^uQ~aI>UaLVEQ5&&=No7Mr!rU z8^&5C%v@rfZd;JPqFZJ1w71{4nD}4#=EP7ip)#@`S)d|Dtfg5qs%ywc2Lhb_wfwiJ z7Rr)V9eTkmsbrG0%ocd~EE=}LBDi?3ZV?b)s~%s6R$>kO|A`FT+)X6$r68U-E5OgX zOrx!FfU9$zEOYfA>U#(w%=CsR%tA4xz+fSXzQ!;?Sw1PAUl^9m1p=`Tlnot=-$;M~ z75u>B8$kOX!c6qT-bNc9FtzLQQKZzB;OyjfZTSp?tx!jEoJ~>k?N=@ONFam9Uy=_M z*P|eXNy4`Pys%q9urOs4ln9MT+eT`9?mp_+0(^A{*)*(p>Kd&^0pt_}tIfz+K-M!d zHn%s&jME9KwEy7;o8L`vS2!g>)8qnTwanUs?w?6O=~M97ItpL++VVy@jFh>G z6?2YQ^l)7V`AwEVXU)>R9G?*x{~s;$b&{z$&CT~1868hJqpF8IQ`6$%Jz}T0;FZc< z8vzTq&94XR_{puIwTb`=p^Ju4$Xvs`yo&Qb!l-aiHrlPrJ&ye~*(^QRIYw3{3?bI6 zXNm*7vJC^xQk{SL{A=S>ed)e9=wV@&d55tB@eL!P`{ZUDBs#*OdUk*J-fCraFu`iB z7aybf1HtCuGS<*a@o>)T0{4+++uW&XxxV!MYS*d%gB1p7o--Ru1XdwGq;rX&6Zf~~;%z{HB$6Fg@b^kJ< z$mtLg)kERK?ak$c0~D|Ivz8TdWP|E^_dmr=m0$kFY8M|+0HIW!9~IaB+jwH83D->m z#CCebjR|Fpx)2%A+P)nwtbg2#80v-&)WjXb9`X$<@PPQ^YQO@vHnBY%b!zXPg7bXR zOq6}ctJWn!D*MIrZYHj=7e6IRvT0K(f4_6WKiqV=Um-hqTvQK&!E}h1-}z$1A8wx$ zHkMXji^nN+0F@Yc>HYqK#CVn+&Z-M|g)@o1J*(EA{KU!+=%ot|?_(x7H#p2(Jj%51 zUg2nuh5Xd~cvQ3^7F6PYye3Fezssj9baz=LEE#LUI)s0_d<=S(!%}DAh1XH%lvF` znh%;-7ciNy>a{IT54Rf)(wkOSK@-$g3&@T4LFOtz*@epVyK`fjH*5nYEi#x&~^VVx_>ef<0? zzo6*`iZYSa@?W!usw>nGPkemX9}n>BOMS}`_-)2B*zqm(9^F`)5Y$X}!uHSYytv-J8Uj?yBz9SI5##xob5WM!& za!b-e#R*03UN2YbUsFj=Fl*fwwY|9{^)cC@+8eH}scVT=xz4)?j*@sGTRwf_a*zK= z7#j$4$2C-j2r(Kt7bG!W827#mn8}7u`f0BZK30T8SM9H}a>Oe3e*fe#x0p3ygSpzF zX0+n)%C7xz6IdaFeKsklUIl8|kM)P{Q_#WMa>-tszC2toKfv%uPN1W)4;zq)yg!?v zc{|4W_;=x#13z{hy18%{y7U{~O!Nh9>28&@P5palSfuD8l-x_!+NWzb(;Uq}NU$WW zd#+ktK5wU|lx8DP_)TQWe)43oM_)P5cqMIOdkOci7Y@K&b*x%<-i?v9F_q-nC|UrO zJm5B!seVi;Sp|np8qVK9A1+s)m?J!ef@hGaQ=#AroR0;SU1O`J zdOp$}X?PL#9Ubo=WPT_-fUD=jLghg z3z)k_nq3@>T|KY0c+f=*|Ju)dgb)bQVcPs{lIVLaYIdd6Lz>Y4y>|4BfcD-hVy)^! zbbWhX99}eEM1)7HbrG*nTOUDt{_r+anT5`l(id=4Px%3ooo}*ii!eDNh?2E#osm)b zxb|P-otwg#hi(<61PGHflm61R=!J7(dk8v{md4m8Pd(`%**tgF|J{PHg+HJ_dR!(| zBm$MXf2U5BfbNj6({3#}yPz+hn5Gm|VHXb}R$hX0dg*cf{w3rO(66HNNpinQv^#eB zxv{z6s843?FQ5~xIkA46pu8GN*`L|DLPB`MuLbjfz1O3Wl$Y%1S&1Gt0_mE1@NP&U zNj&O=( z$^7weC|51U4Si6riJTf_$e@w1C z>_8ZHj5dCN$tYiTB$D+kr^BbJtz3?kObs;)^_7spahK zJe)DG>$1)_Q#%b-@uD1bB#Fp@YYh$)$I8M$WKcy2;g2(vaSJT@JN%4k%xx4-2~*-kMZTZsgtmS(6xEYhjnDu1 zp_l*-3!n)2`NZZ=nt_*Ft!9m^EcQXWHe;{~o+>-5^ zBMO5Jl$)D3;H7)2nK8XH`S>*4y`{q;qWFFlq_8t>Dv?PFC-a_`3Vup7!l}AkvKKX) zJPqh~(+<8S|GiD0N(a}PFAY;lP`#h-S3e^`qG|238T>&BbT1}AR#Hi#@{3`>{{zbMQKkR@ literal 0 HcmV?d00001 diff --git a/website/static/img/resources/azure/network/private-endpoint.png b/website/static/img/resources/azure/network/private-endpoint.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a69915497090089a02b6cb7d3bfce477a4d7e0 GIT binary patch literal 14806 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 literal 0 HcmV?d00001 From 0b09d1b4d789f9bcea2e49a2b94f79bce08163b9 Mon Sep 17 00:00:00 2001 From: JeongSeung Mun Date: Mon, 30 Oct 2023 22:51:15 +0900 Subject: [PATCH 11/21] feat(node): Add Trino (#923) --- diagrams/onprem/analytics.py | 4 ++++ docs/nodes/onprem.md | 3 +++ resources/onprem/analytics/trino.png | Bin 0 -> 44239 bytes .../img/resources/onprem/analytics/trino.png | Bin 0 -> 44239 bytes 4 files changed, 7 insertions(+) create mode 100644 resources/onprem/analytics/trino.png create mode 100644 website/static/img/resources/onprem/analytics/trino.png diff --git a/diagrams/onprem/analytics.py b/diagrams/onprem/analytics.py index 23a55948..7e3ee9a3 100644 --- a/diagrams/onprem/analytics.py +++ b/diagrams/onprem/analytics.py @@ -72,6 +72,10 @@ class Tableau(_Analytics): _icon = "tableau.png" +class Trino(_Analytics): + _icon = "trino.png" + + # Aliases PowerBI = Powerbi diff --git a/docs/nodes/onprem.md b/docs/nodes/onprem.md index 4a237372..c7a7f01e 100644 --- a/docs/nodes/onprem.md +++ b/docs/nodes/onprem.md @@ -65,6 +65,9 @@ Node classes list of onprem provider. Tableau **diagrams.onprem.analytics.Tableau** +Trino +**diagrams.onprem.analytics.Trino** + ## onprem.auth diff --git a/resources/onprem/analytics/trino.png b/resources/onprem/analytics/trino.png new file mode 100644 index 0000000000000000000000000000000000000000..57de0e6c6dcaf44dc3d3d1192777a1dea8b48ddf GIT binary patch literal 44239 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⁡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 literal 0 HcmV?d00001 diff --git a/website/static/img/resources/onprem/analytics/trino.png b/website/static/img/resources/onprem/analytics/trino.png new file mode 100644 index 0000000000000000000000000000000000000000..57de0e6c6dcaf44dc3d3d1192777a1dea8b48ddf GIT binary patch literal 44239 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⁡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 literal 0 HcmV?d00001 From 26affccdf27c06979374fd0d965ff7ae8a1b6348 Mon Sep 17 00:00:00 2001 From: Fabrizio Fortino Date: Mon, 30 Oct 2023 14:53:41 +0100 Subject: [PATCH 12/21] feat(node): add quarkus framework (#934) * add quarkus framework * add img to website folder --- diagrams/programming/framework.py | 4 ++++ docs/nodes/programming.md | 3 +++ resources/programming/framework/quarkus.png | Bin 0 -> 5735 bytes .../resources/programming/framework/quarkus.png | Bin 0 -> 5735 bytes 4 files changed, 7 insertions(+) create mode 100644 resources/programming/framework/quarkus.png create mode 100644 website/static/img/resources/programming/framework/quarkus.png diff --git a/diagrams/programming/framework.py b/diagrams/programming/framework.py index 46f67750..aa28e451 100644 --- a/diagrams/programming/framework.py +++ b/diagrams/programming/framework.py @@ -48,6 +48,10 @@ class Micronaut(_Framework): _icon = "micronaut.png" +class Quarkus(_Framework): + _icon = "quarkus.png" + + class Rails(_Framework): _icon = "rails.png" diff --git a/docs/nodes/programming.md b/docs/nodes/programming.md index c6af42f7..08c83942 100644 --- a/docs/nodes/programming.md +++ b/docs/nodes/programming.md @@ -113,6 +113,9 @@ Node classes list of programming provider. Micronaut **diagrams.programming.framework.Micronaut** +Quarkus +**diagrams.programming.framework.Quarkus** + Rails **diagrams.programming.framework.Rails** diff --git a/resources/programming/framework/quarkus.png b/resources/programming/framework/quarkus.png new file mode 100644 index 0000000000000000000000000000000000000000..4a90d92212bcf436af6151d4b55376d9c3c1cc6f GIT binary patch literal 5735 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 TNqwRIO9Mu@b9$vZ&SC!pKb%Im literal 0 HcmV?d00001 diff --git a/website/static/img/resources/programming/framework/quarkus.png b/website/static/img/resources/programming/framework/quarkus.png new file mode 100644 index 0000000000000000000000000000000000000000..4a90d92212bcf436af6151d4b55376d9c3c1cc6f GIT binary patch literal 5735 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 TNqwRIO9Mu@b9$vZ&SC!pKb%Im literal 0 HcmV?d00001 From 45e187466af9ae6665ea190d49a0c2035438b415 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Aillet Date: Mon, 30 Oct 2023 14:54:21 +0100 Subject: [PATCH 13/21] feat(node): Google Cloud Logging (#929) --- diagrams/gcp/operations.py | 4 ++++ docs/nodes/gcp.md | 3 +++ resources/gcp/operations/logging.png | Bin 0 -> 1047 bytes .../img/resources/gcp/operations/logging.png | Bin 0 -> 1047 bytes 4 files changed, 7 insertions(+) create mode 100644 resources/gcp/operations/logging.png create mode 100644 website/static/img/resources/gcp/operations/logging.png diff --git a/diagrams/gcp/operations.py b/diagrams/gcp/operations.py index 53ece13f..8e7a2b4a 100644 --- a/diagrams/gcp/operations.py +++ b/diagrams/gcp/operations.py @@ -8,6 +8,10 @@ class _Operations(_GCP): _icon_dir = "resources/gcp/operations" +class Logging(_Operations): + _icon = "logging.png" + + class Monitoring(_Operations): _icon = "monitoring.png" diff --git a/docs/nodes/gcp.md b/docs/nodes/gcp.md index acec27bd..3199de9c 100644 --- a/docs/nodes/gcp.md +++ b/docs/nodes/gcp.md @@ -278,6 +278,9 @@ Node classes list of gcp provider. ## gcp.operations +Logging +**diagrams.gcp.operations.Logging** + Monitoring **diagrams.gcp.operations.Monitoring** diff --git a/resources/gcp/operations/logging.png b/resources/gcp/operations/logging.png new file mode 100644 index 0000000000000000000000000000000000000000..71a7ceeafb32d78a702bd06f7adf708c80099763 GIT binary patch literal 1047 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&w@L)Zt|+CxDbkfKP}kkY07{|N7Iv*PQ*i z=Irlvr+=+G{WERux72xGGG>2Ip7U`%NaWYdy+0@K{IT}*Psf%oPOV>3=Y7kV^UbmK zi&M)NXCT@7x%nFF9-vtgB|(0{3_=ci?*F&{cXtpn+yC}|=l1{m&D;xiw0H{_HZU+S zr+KAr|GCQ=4CErR4t_3U1e$^YW-YzEHf(*s%6|)@4mU9f zFfchVa4;|`Ft9XW;cPK!5S)IDsY4N2`U#4rA{5=0$i_6tFd-T4z{d!)#Y34K^CpNf zz|5P(G@~F>N`zs(5L}1_oBPi^^N-ejDyRMGCVC&d4Etg2=E{Fk=9^IwOdooxit0 ztQQ_x$g$xN1vlA)E1|kG)`7tvDF#4JLUA#Xob$qjbvB$-UFOKxqi5*H#lQ%QX9X<= z7FdWjY=JvDppxPE+50_+AX&tOa99T}{VU-56&R2;tgvag{4w9{4yQuH*7I*J8G=&% zp#}fe<~}q&(ZIj~LyAla3?L-H0}}yCfpRiF@L_9jjsX`#`k{F3>;K|)KuSGb{an^L HB{Ts5ZAI7L literal 0 HcmV?d00001 diff --git a/website/static/img/resources/gcp/operations/logging.png b/website/static/img/resources/gcp/operations/logging.png new file mode 100644 index 0000000000000000000000000000000000000000..71a7ceeafb32d78a702bd06f7adf708c80099763 GIT binary patch literal 1047 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&w@L)Zt|+CxDbkfKP}kkY07{|N7Iv*PQ*i z=Irlvr+=+G{WERux72xGGG>2Ip7U`%NaWYdy+0@K{IT}*Psf%oPOV>3=Y7kV^UbmK zi&M)NXCT@7x%nFF9-vtgB|(0{3_=ci?*F&{cXtpn+yC}|=l1{m&D;xiw0H{_HZU+S zr+KAr|GCQ=4CErR4t_3U1e$^YW-YzEHf(*s%6|)@4mU9f zFfchVa4;|`Ft9XW;cPK!5S)IDsY4N2`U#4rA{5=0$i_6tFd-T4z{d!)#Y34K^CpNf zz|5P(G@~F>N`zs(5L}1_oBPi^^N-ejDyRMGCVC&d4Etg2=E{Fk=9^IwOdooxit0 ztQQ_x$g$xN1vlA)E1|kG)`7tvDF#4JLUA#Xob$qjbvB$-UFOKxqi5*H#lQ%QX9X<= z7FdWjY=JvDppxPE+50_+AX&tOa99T}{VU-56&R2;tgvag{4w9{4yQuH*7I*J8G=&% zp#}fe<~}q&(ZIj~LyAla3?L-H0}}yCfpRiF@L_9jjsX`#`k{F3>;K|)KuSGb{an^L HB{Ts5ZAI7L literal 0 HcmV?d00001 From 054c3b50867a4dcddab5ca848172799d3fff2a89 Mon Sep 17 00:00:00 2001 From: Ermias Date: Mon, 30 Oct 2023 15:04:07 +0100 Subject: [PATCH 14/21] feat: Add Azure Container Apps node (#889) --- diagrams/azure/compute.py | 4 ++++ docs/nodes/azure.md | 3 +++ resources/azure/compute/container-apps.png | Bin 0 -> 38538 bytes .../resources/azure/compute/container-apps.png | Bin 0 -> 38538 bytes 4 files changed, 7 insertions(+) create mode 100755 resources/azure/compute/container-apps.png create mode 100755 website/static/img/resources/azure/compute/container-apps.png diff --git a/diagrams/azure/compute.py b/diagrams/azure/compute.py index e2e23ba6..810f9237 100644 --- a/diagrams/azure/compute.py +++ b/diagrams/azure/compute.py @@ -40,6 +40,10 @@ class CloudsimpleVirtualMachines(_Compute): _icon = "cloudsimple-virtual-machines.png" +class ContainerApps(_Compute): + _icon = "container-apps.png" + + class ContainerInstances(_Compute): _icon = "container-instances.png" diff --git a/docs/nodes/azure.md b/docs/nodes/azure.md index 10667e45..6a0926cd 100644 --- a/docs/nodes/azure.md +++ b/docs/nodes/azure.md @@ -71,6 +71,9 @@ Node classes list of azure provider. CloudsimpleVirtualMachines **diagrams.azure.compute.CloudsimpleVirtualMachines** +ContainerApps +**diagrams.azure.compute.ContainerApps** + ContainerInstances **diagrams.azure.compute.ContainerInstances** diff --git a/resources/azure/compute/container-apps.png b/resources/azure/compute/container-apps.png new file mode 100755 index 0000000000000000000000000000000000000000..b36d9165514739437d27e99baf170b48fea692ce GIT binary patch literal 38538 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 YA3J8NdnV>IKmY&$07*qoM6N<$f~^w{4gdfE literal 0 HcmV?d00001 diff --git a/website/static/img/resources/azure/compute/container-apps.png b/website/static/img/resources/azure/compute/container-apps.png new file mode 100755 index 0000000000000000000000000000000000000000..b36d9165514739437d27e99baf170b48fea692ce GIT binary patch literal 38538 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 YA3J8NdnV>IKmY&$07*qoM6N<$f~^w{4gdfE literal 0 HcmV?d00001 From e66a5db5ad8220a1c41038376f329edc6ac98717 Mon Sep 17 00:00:00 2001 From: Matthias Gatto Date: Mon, 30 Oct 2023 15:04:57 +0100 Subject: [PATCH 15/21] add generic/virtualization/qemu (#868) Signed-off-by: Matthias Gatto --- diagrams/generic/virtualization.py | 4 ++++ docs/nodes/generic.md | 3 +++ resources/generic/virtualization/qemu.png | Bin 0 -> 20030 bytes 3 files changed, 7 insertions(+) create mode 100644 resources/generic/virtualization/qemu.png diff --git a/diagrams/generic/virtualization.py b/diagrams/generic/virtualization.py index 0695fd01..f7f9006a 100644 --- a/diagrams/generic/virtualization.py +++ b/diagrams/generic/virtualization.py @@ -8,6 +8,10 @@ class _Virtualization(_Generic): _icon_dir = "resources/generic/virtualization" +class Qemu(_Virtualization): + _icon = "qemu.png" + + class Virtualbox(_Virtualization): _icon = "virtualbox.png" diff --git a/docs/nodes/generic.md b/docs/nodes/generic.md index 508ab0a8..5bab8cf1 100644 --- a/docs/nodes/generic.md +++ b/docs/nodes/generic.md @@ -98,6 +98,9 @@ Node classes list of generic provider. ## generic.virtualization +Qemu +**diagrams.generic.virtualization.Qemu** + Virtualbox **diagrams.generic.virtualization.Virtualbox** diff --git a/resources/generic/virtualization/qemu.png b/resources/generic/virtualization/qemu.png new file mode 100644 index 0000000000000000000000000000000000000000..39cf1f24e122b08beb368cef5ded3fa073306a9f GIT binary patch literal 20030 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 L2PxGKw2S`(w8Qm_ literal 0 HcmV?d00001 From 0475227a12488459d3b5704895297588f5e8ea27 Mon Sep 17 00:00:00 2001 From: Viicos <65306057+Viicos@users.noreply.github.com> Date: Mon, 30 Oct 2023 15:05:48 +0100 Subject: [PATCH 16/21] feat(node): add GCP apigee (#905) --- diagrams/gcp/api.py | 4 ++++ diagrams/saas/alerting.py | 7 ++++--- docs/nodes/gcp.md | 3 +++ docs/nodes/saas.md | 7 ++++--- resources/gcp/api/apigee.png | Bin 0 -> 15239 bytes website/static/img/resources/gcp/api/apigee.png | Bin 0 -> 15239 bytes 6 files changed, 15 insertions(+), 6 deletions(-) create mode 100644 resources/gcp/api/apigee.png create mode 100644 website/static/img/resources/gcp/api/apigee.png diff --git a/diagrams/gcp/api.py b/diagrams/gcp/api.py index f556ff03..45ec2e09 100644 --- a/diagrams/gcp/api.py +++ b/diagrams/gcp/api.py @@ -12,6 +12,10 @@ class APIGateway(_API): _icon = "api-gateway.png" +class Apigee(_API): + _icon = "apigee.png" + + class Endpoints(_API): _icon = "endpoints.png" diff --git a/diagrams/saas/alerting.py b/diagrams/saas/alerting.py index 76e17ff2..0df15d83 100644 --- a/diagrams/saas/alerting.py +++ b/diagrams/saas/alerting.py @@ -16,6 +16,10 @@ class Opsgenie(_Alerting): _icon = "opsgenie.png" +class Pagerduty(_Alerting): + _icon = "pagerduty.png" + + class Pushover(_Alerting): _icon = "pushover.png" @@ -24,7 +28,4 @@ class Xmatters(_Alerting): _icon = "xmatters.png" -class Pagerduty(_Alerting): - _icon = "pagerduty.png" - # Aliases diff --git a/docs/nodes/gcp.md b/docs/nodes/gcp.md index 3199de9c..a47f8020 100644 --- a/docs/nodes/gcp.md +++ b/docs/nodes/gcp.md @@ -44,6 +44,9 @@ Node classes list of gcp provider. APIGateway **diagrams.gcp.api.APIGateway** +Apigee +**diagrams.gcp.api.Apigee** + Endpoints **diagrams.gcp.api.Endpoints** diff --git a/docs/nodes/saas.md b/docs/nodes/saas.md index 2056e921..3bed3f32 100644 --- a/docs/nodes/saas.md +++ b/docs/nodes/saas.md @@ -14,17 +14,18 @@ Node classes list of saas provider. Opsgenie **diagrams.saas.alerting.Opsgenie** +Pagerduty +**diagrams.saas.alerting.Pagerduty** + Pushover **diagrams.saas.alerting.Pushover** Xmatters **diagrams.saas.alerting.Xmatters** -Pagerduty -**diagrams.saas.alerting.Pagerduty** - ## saas.analytics + Dataform **diagrams.saas.analytics.Dataform** diff --git a/resources/gcp/api/apigee.png b/resources/gcp/api/apigee.png new file mode 100644 index 0000000000000000000000000000000000000000..961c4a720453764e3201ca98683e24d7ea6d1f81 GIT binary patch literal 15239 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 literal 0 HcmV?d00001 diff --git a/website/static/img/resources/gcp/api/apigee.png b/website/static/img/resources/gcp/api/apigee.png new file mode 100644 index 0000000000000000000000000000000000000000..961c4a720453764e3201ca98683e24d7ea6d1f81 GIT binary patch literal 15239 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 literal 0 HcmV?d00001 From 44b3b73e28a9036589cd183308f2b89e87d50817 Mon Sep 17 00:00:00 2001 From: Dov Benyomin Sohacheski Date: Mon, 30 Oct 2023 16:07:32 +0200 Subject: [PATCH 17/21] Removed support for Python 3.6 (#856) --- .github/workflows/test.yml | 4 ++-- README.md | 2 +- pyproject.toml | 1 - 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 88c791d5..dd94314b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,8 +21,8 @@ jobs: python: ["3.7", "3.8", "3.9", "3.10", "3.11"] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v3 + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 with: python-version: ${{ matrix.python }} - name: Setup Graphviz diff --git a/README.md b/README.md index 0b15594d..73511f7a 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ Diagrams lets you draw the cloud system architecture **in Python code**. It was ## Getting Started -It requires **Python 3.6** or higher, check your Python version first. +It requires **Python 3.7** or higher, check your Python version first. It uses [Graphviz](https://www.graphviz.org/) to render the diagram, so you need to [install Graphviz](https://graphviz.gitlab.io/download/) to use **diagrams**. After installing graphviz (or already have it), install the **diagrams**. diff --git a/pyproject.toml b/pyproject.toml index 05eb3008..93705dcd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,6 @@ include = ["resources/**/*"] python = "^3.7" graphviz = ">=0.13.2,<0.21.0" jinja2 = ">=2.10,<4.0" -contextvars = { version = "^2.4", python = "~3.6" } typed-ast = "^1.5.4" [tool.poetry.dev-dependencies] From 1814e95f180c793b0e1f89a80c69f3c8a2d09d59 Mon Sep 17 00:00:00 2001 From: Shiplu Mokaddim Date: Mon, 30 Oct 2023 15:08:33 +0100 Subject: [PATCH 18/21] ci: install poetry the right way (#917) Install poetry with pip causes many issues. The recommended way is to use this curl script or pipx. --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index dd94314b..b7337ea0 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -28,7 +28,7 @@ jobs: - name: Setup Graphviz uses: ts-graphviz/setup-graphviz@v1 - name: Install poetry - run: pip install poetry + run: curl -sSL https://install.python-poetry.org | python3 - - name: Run all tests run: | poetry install From 8c9a285208571acce4282e5cb9600046b15bbbc7 Mon Sep 17 00:00:00 2001 From: MinJae Kwon Date: Mon, 30 Oct 2023 23:09:41 +0900 Subject: [PATCH 19/21] bump: up to version 0.23.4 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 93705dcd..7b638a8f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "diagrams" -version = "0.23.3" +version = "0.23.4" description = "Diagram as Code" license = "MIT" authors = ["mingrammer "] From f54c7aadb539e6a83b68a15f9ced0bd58c798bfd Mon Sep 17 00:00:00 2001 From: MinJae Kwon Date: Mon, 30 Oct 2023 23:13:02 +0900 Subject: [PATCH 20/21] ci(test): remove support < Python3.9 --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b7337ea0..2fd60696 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,7 +18,7 @@ jobs: test: strategy: matrix: - python: ["3.7", "3.8", "3.9", "3.10", "3.11"] + python: ["3.9", "3.10", "3.11"] runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 From 3dddbc67e28f7f260db0ed03052167d3dbe7c7f4 Mon Sep 17 00:00:00 2001 From: MinJae Kwon Date: Mon, 30 Oct 2023 23:18:42 +0900 Subject: [PATCH 21/21] docs: update readme --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 73511f7a..e4fc9508 100644 --- a/README.md +++ b/README.md @@ -76,8 +76,6 @@ To contribute to diagram, check out [contribution guidelines](CONTRIBUTING.md). ## Who uses it? -[GitPitch](https://gitpitch.github.io/gitpitch) is the perfect slide deck solution for Tech Conferences, Training, Developer Advocates, and Educators. Diagrams is now available as a dedicated [Cloud Diagram Markdown Widget](https://gitpitch.github.io/gitpitch/#/diagrams/cloud-architecture) so you can use Diagrams directly on any slide for conferences, meetups, and training. - [Cloudiscovery](https://github.com/Cloud-Architects/cloudiscovery) helps you to analyze resources in your cloud (AWS/GCP/Azure/Alibaba/IBM) account. It allows you to create a diagram of analyzed cloud resource map based on this Diagrams library, so you can draw your existing cloud infrastructure with Cloudiscovery. [Airflow Diagrams](https://github.com/feluelle/airflow-diagrams) is an Airflow plugin that aims to easily visualise your Airflow DAGs on service level from providers like AWS, GCP, Azure, etc. via diagrams.