From 4ebb292b7a3a3898d92523e3d994cc884484ad58 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Wed, 5 Mar 2025 18:41:28 +0100 Subject: [PATCH] Updating doc, py includes --- src/doc/doc/images/drc_textpoly1.png | Bin 3343 -> 5631 bytes src/doc/doc/images/drc_textpoly2.png | Bin 3343 -> 5600 bytes src/pymod/distutils_src/klayout/dbcore.pyi | 591 +++++++++++++++++++-- 3 files changed, 550 insertions(+), 41 deletions(-) diff --git a/src/doc/doc/images/drc_textpoly1.png b/src/doc/doc/images/drc_textpoly1.png index 3e6df4d40ec153b40f5c9a2bc5553d0fb2c6f43a..487cfcc9ca818fc3947998e6294cada21108eca8 100644 GIT binary patch literal 5631 zcmd5=X;f2Z8V)i_>#5M86|}MqN?q6#lr4~mAiJoDMT!y>G}Tc+5($t^hdK;JjaUHz zA$3$z8Cw*rOxVIyL1g<$K=e zdA~1vM|j|p#h)xjp-@YLgZv{>ra!@n@g)+Vm{S5N#jaNV~ ziCgy&{SF>Ix&alreMjKY=U(7T8|Y=k!FVESjiZaxru7~U;A8!I7qo}dMo$+94<}Dg zkF{yOK7lCI(&S)&-^jGfBmFxs@B;ETKZ*==zL_t)ei&b5vd#6kRrU)*90s;{tQOwO zxc0a2Lz-Pb4X%0sxJGNjrkt~{c5q8|8)! zKb31Ky%Xl1p$TA40?jf>!3HV+sjZGcZ2T+-{jlQip8d*AN$wr=%8gicY!X1-M$$Io zhJCnHW)%>HTSgJ9u$`OlV(Im3RyzNg??Tg+8S{sKux@#3YnOW_cWrjUnTS^PF>HRH z3oz767e5+Psal=u6^b8*_B8MOVDH1j=MGA>Qz|9X`>89Agx2IA3fz#qjm^~^-@i?^ zXgPr1!qzr*lk&oFFUE3iT4#v+Hz|B7bPX7?f}1bs9jOMQd!DHmXg(LEt%(>HEl=_c z&DLxTC|h-5gUf6L?=@fI_mU`7TGm_rz0-Koka#Z3 z*3RYATz!mCRv~t9FpX$phi>KEMvHF<-XE{c-H;9CrLV-!bq4T z1ZAHIzV@%xgTLGRgm{z=aGU&iOt#3cJn}|F-t;d1sf^EDh1U_g%sNJtdLiB_})%l5rv2z<6 z4ZI%s&4&eIT}y`fK+4#|DZEs5e%% zC2LGI|LMiVf2sRt<5~O<6~3@pkNaLvpF^(Xc@7Iyj0gXdpy(B2-=!f!QeoEG^j0|zATaM}}f$LL_kVhYlHFaGM2H6r&t9@j_lPk9eJr@x! zcGz{VJ(YLX=%%osBrqR6TI49pS3i2{?lJ+tV4<6K}Z)@j-8zJlDDi* zJ%I^!tmLB$!dSoi>~5X&kD8z4Eh$E^gj!;8ag%10J!H(f(|~q$hYDhrRW20fu#VrF zA>K+~TV|6-NJT<`Fn8z)T!Qh5u92f=@_VA(A>+D3>XIV1XYwa2O!l-pqpSH>XP5v? z?eTuygi%V+_U9kfdNHq=MN3OU%XTfWuMVxg^{6cq4x#Ebw+4rEmmDZ9d6|57C<$0% zs&Z(~O}DF(zfAuqXP2wHQF#2I!QWH|MfvE)L$*8jcj!Mw1cWF1xq)Z}1)vgqnW0&|YFzFa zBDx^H*!WYk;b(Gg$4ahcTKini@2&k#*3s7Ps8AH28^JH>%6)YU<_CznGrxw!ciKY1M+>K|dqtDQw0T2z1j-pAoTas3+^m_}1{K zh2%B-6-5OiaM-vw*WQ1#8YJmTkGOgv#fyb0$7`n_l!C>U?R6sTVRjZpQbrEPo|dluzI#m=S8|Ckx;S{4=RLYanSum1o5oq>b&kB*E5$D%>M^@LVp zNZe4W*vzdcJsAe@FC@HB2nF$MM-QJew$aA1(zmS&ZYNl7(=)_U4h%z=iiFhI{pTDM zNGFYujtGT~hmU&4ZQ{VK_$!i~qvBg+rg)wzwyO2DqT94@tLD|ogOBJTTnXWh;XoSL zl;gLXAaCkEd8cL3hRzO0lE-ycK_Y&J5@w13`oVcIC}x8#Ab#kl)A0z95y-=<#5^(I zPa9$nbrfop>3-ufptv+StWQddt-+S6R9`-5)e4k-=H6av(99mP>Vd}Ju;q+U zjre=u#TmnGBz*TGV7MSjVAE~#yz#6X@X`3-X=djN^2^@&@h5z!CW0hYM9H*wGwRBn zQz|lK4;VdkqfsK8H4RX}a*lq&rPdI86++22MO25mLKyXUI0wI_Xh=t7^MdiV^^74k)xmY!k>VkV zu-m>+vV?Xz>e9?U?l~^P)H^>D*ZO)DlK|DkV);Tk24sbb=(?pTS?>O3e5ZaE>qBOJ zFWI90cxo~BNims;PF^6XbtMqEmf?qwe|sdcA?*_*$;`a6V%2!`nX3~ahZ4Y4kSgn2 z5{AlM!HvRVLs4>{qLJdp(QdZ&In5r@(YjkZW~K5(c^Sz)p#0qQFWo6PW+s-F%M$%; z4d?`sHS{mWCYg({G(m-Ky4xh-xDG=V2qZv#1wf`dakP_Ib!{n45@nsiHTT@Nl)?_J z$C0_3F(B`7s??JtGGBx6aM*R zgfynmn;<=Mv$|D;ONH3#SUT=YXhm`)!rCddL`J_21AAUr#yf`57Wf-Y&3+7Zsdpv+ zRIh{a?)G-`?S@^pEAD%PtotexFkT?V1ZzbVYX$|($+Wob&-2=J_HAehLIP=xM`(TN z32eiP89sn;&%4g!I|#EnXS*kXO1jIVjB%FVk$aD4?!#JtMFnXSTJ!FGj)uGmXVty~f^1&X9fxQ^juXuzG@Uppp(HLadEYZ;oG& zk4S+%A5XSrKJHPi`aw@(*^uh@HmU;>q`j%xp{cKzI$I`e^C1O zUoA93R1EQaZ>=Lz*ul7&aXulFPqWEV5HYvyT^Rc8^$Y>GKAh~S?#FOVVJRJ={$3bW z`Z9o#E}zs)e@xD8S6SVU7J6JmJ%DK7J0=RPwk%$)#yMI2s%!JHj>!A2hC`%dh{c-m zLa>!90A+~ynS`!US1n^z027MJd%g7Oc#5V0P1g$4gmiVUbtg?(ftkp6PN`Y<_#UEI z{jZ=7WZhXA01=32M+2I7tieOnpRSu=90E$klbMEO+ZpCQIMcG{&H8MFeNes=`f&iF za2VcOW_T0aiQdA%*w*1!(ngpP#vXgFnFl^aAv4djukWUoVs(!!x?HKIeW!f%} zd+cP7rV{2fuG+S(!W)`|kN|ks$-|4XDQ5BbC$FFn7Cm@?daa;{GPGO*p{)?uVCgoe z&zh<3f8VkC#@2t!A+PNwd|U&ij(6+{IKZ^n7naO2cig-7QBOsc+VGK3k+rpTE*yex z^^K96uzVjx#x6K~eY&sC(oZiUny%(i)k>vOr&W*izPuV(7cbpmxC)NXooWhedN zQq`$f?l5NVlcKd#oDVQM(NwRDVW`{(_;?N6r&)<96iOJ~Ao=frg=O+8$ueb3J)TW6 zwsXtZcn7I!+O6hVs<3WiSIlKLeaak_Rm;EK#^m3M5i~~c9b4FQI1otb6_f&6HA!tb zkQ7&Jh$lWWkK`1+em~NR<1&_kyT3+qd7uC57Z!C_pEEGy)$+{WM$;E<{s(Rxqi6}4 zOhVf{O94)=Yh1cVilSfP9AgI>2fTIg4p`!HOfd-R1|LtA{0)r!Dsa)+wP#SK~Ut|2mg{qd>EZqFpolYh`XgX&jLV5~5 zE_3?a>(l0a_v)Xg%dHGr>J|FxqWEe^Y)(4Yg*{KuH3c(JJx}PpIOB{X1wS}$o%Z|s z^n97U|IeMb0S3p^RaX}4hk;Vuht|@zdDs&-1D*_s$1h^&6HOVT{>r{F=pZXaPPj+Eguw?Ti?3E++ z-GRG#N7tN0USq80#Qr??m=9HFetms?eJfwXj&tAsFIS!aS$>z2ya%Kmh-jnLgx3F@ zeem@EKOet-E@Y^`TA#;Wlepj4N?%|9xH!Z0zrV{4_{JSSQ2zDI>Al8Ydp1AWuK09* z^=5aw35b>+q?Ps4%kIm{y&HG_->=WG?swtlGxvWs-hD0oL#ytQen@}$m-+i%|KIWd z`ug~L?-}klZnyj(`u9Toihq~UTWdeJ)c{-n3=Wa$yF1VtWp6qs?ff+7?VG*(f>A}B#Zm;%)&^#KA3 zM1>Gt3Mg8mV95#y!KX|m5KB~y2?QAuBa#pTgpldofrz!}57t}#k(ImdS@-OH_WsWI z?Y&QJ^}!m>`(_>h0EU}AJ^TP*)(G_b=mYSL#~sg3@bBXzo+bKItc3UD zuLK2J_I`cVx}p&@0d(JSb8|cGGfv7`@by{G&CBp=Hn=P=z& z7L6XF%>I+xbk0M+;rTP34J-2CO#$gclqzf5#Xz~-+=Qwwrs-m_NxM?WN%gXaR2#*h zC9Wzo%h@hrqH~-m$}Y=6ZOjPG*fQzxW&h!196_YD(>0Vg3LdRft|oQVUDlZ`9{NR9 zKQhRpm(K5G8?#BHqk^8m96@bTLgGPJs&-7(LDlBd#xnsmW7I}8Nalp!*Cfj5Q6vpL zLH!-`rS7<(BdVg4aetFq^djZAMTCpEqxdS3p_EqpglAGxo!o6VR@7h1=IX9TeOf!B zW;BPoWHEkT)CqoI8-b@@#te#NUsi|5~f01NV=2+bPFnGFfk97LPV{sRAlrsua}O`L!h7n9?{* zSL*8bVM1Jpgt=286xM}rAx9oQe$L#D&VQaOvFq$UuojaT$+*9=)3#HHJY$nWle^qN zn3mU~d57JS+>KrlC$JSHc38u6l5M)^)eU@ejMtw1N3R}=td097dl7eukjv;dDjgYV zAB)3egIRcggk-R-4S<(Q1dzvLn9G*lt5E;q99z)0`-TkqvNFn%48hW}N&C2QTVuU(d z-dX^eCx$X+(}?lnSV#S*D#`^0YAHeu%?-1k46rPyPai9n|K1cW4Y8*z*ufpfe=ZCx z!sergF7S$Zd~0DE+lJs&Jlc7l0iEWKlmGe+IG4=hlh$(#7bvY8w#8dH*k@TQ+AKLM zQ}as6kzo~JFyS-sq>oswshp>Ab%&C{c$hs##5+RC_;s<+m$@`;#KZ0Ob@}E)de5V) zV?Hryb#a2f9;kM}!)Jagtl&1V%)8XYC}>u zI!Cix7jUsqCJ!qaAIVq4XL)@t#Z`ppLz4)Vyu0$CjGVu2(zEq3KT)=BiB0*ptO_^{ z;$j{b4hi@vEFhsO$}@7C1-0JEURSU+OLxMf7K0Tdp@feN=U_6b!IC3hbZnXiD~}rbsUDw0)lLiqojlN;;@r&-wCEDG8S~fARQ) zg4vo$vL&e}nDNgzf|l#^Yx+0&1b^TwxERujwF4|p1Y2BMV&W}#p{w%rlK%|eS z=%N(_Vy8Vd!bIm%x3Vyewy{V)^Yq(m$ZiH>F-5)wI;rJX80>)p{%9pv!9r@rr|=9u(e#gBK*AoG*aFmF^yZm)CPr?ljF^ z%WkvLXRl9OT&E-DUa3VFp65(o6g~g z(A`0tpnEHx8V-*ehDTO)3MsyR>3Rr5a7T=rmR%^YE1G*{ljE;M7)Y))G3bJN^$?6@ z7=#hb?W%TSU&U8gA%&$yv(N+Y%zt4sJFLXY^l@bc+gl-0NCixtT1ljiv2~qAYkrXE z8gMn;ToH%fBUj0lC&a;zUXgnF(OEAc*)7RvwA99Qkd8H^mQ+`a&SeV5(*sqpqTD(+Sq>(8(H!-*51HznsBid~~ zu4)4=s_J?x?H1RVePUgUMjTD&M#*u9htea)>d!81jV6Uie0}%bWN;hrFI8#ecB4iP zD5!#HjuLF$#b&PP-N2Yn_f^4Ln*Slg4C_txVm@>v5&%Pn-Z>a#461Gf9FcqGNgh#7dc)a9x)4&)crgS9FhLhv1!mGI?h+LuzJ~R0@bT65Mjqt|Dj}ej~KoeC1Sz!Wopm}^tdg0A^W492J zB!KDC`}k(n0s0HKAs`nII^qiD5*HF&{ETStrMl{syBw(v3_a5$K9hq{1~0`lwFlgJ zOx7OK(Ach@PU}h624nnFaz9MFU|d@D!nG6O|80|1OV8G0Y-P{c%Ge@|_D|DxholAE zDHq;X_DtQZ%afA_(BSR+F2g|?7IL2hqQyeJ3WC=Eoq52l5Uzs$UinORfQHeklcrr9 z5P$EZBLkm(y|b<>_lqDx%crKVVGd8>FOn>|ZL%D6fI@u3JS=#y?fOe)3}sLF#+@*# zUl)+WBki4}lEm}QQMWY+5Wd1(N571@?Ks!`F|OeYm)Fb8gefs1_>a`Wx)=saiKT+X!F zo9RSi#zTjWEmmj+GsNYN=6r(N6)$i=aLq1h&zDfI2W)Le!P+v-G;HWh6xP7BTf1fe z40GBs-~m{(lY-0Hq=#QBPrfmRKt==2K^htJQ#b8V)qtXLmiihvMb87ba!6AKsqD^wIi*KLrn%d#ug&ZxffU zZNoITVY)o?#Sn4s#(TJ7yd)>@r66|WgMRHN0V%6*@n>njBk`iMOf%jZ6b_wy`Gbh% z>i0niA2)pRkO=1h0G~Z!96del&=9mg(<#zB8g%Xa0p0EDGd8=+q3mtmg4p`!HOfd-R1|LtA{0)r!Dsa)+wP#SK~Ut|2mg{qd>EZqFpolYh`XgX&jLV5~5 zE_3?a>(l0a_v)Xg%dHGr>J|FxqWEe^Y)(4Yg*{KuH3c(JJx}PpIOB{X1wS}$o%Z|s z^n97U|IeMb0S3p^RaX}4hk;Vuht|@zdDs&-1D*_s$1h^&6HOVT{>r{F=pZXaPPj+Eguw?Ti?3E++ z-GRG#N7tN0USq80#Qr??m=9HFetms?eJfwXj&tAsFIS!aS$>z2ya%Kmh-jnLgx3F@ zeem@EKOet-E@Y^`TA#;Wlepj4N?%|9xH!Z0zrV{4_{JSSQ2zDI>Al8Ydp1AWuK09* z^=5aw35b>+q?Ps4%kIm{y&HG_->=WG?swtlGxvWs-hD0oL#ytQen@}$m-+i%|KIWd z`ug~L?-}klZnyj(`u9Toihq~UTWdeJ)c{-n3=Wa$yF1VtWp6qs?f EdgePairs: + def filtered(self, filter: EdgePairFilter) -> EdgePairs: r""" @brief Applies a generic filter and returns a filtered copy See \EdgePairFilter for a description of this feature. @@ -22596,6 +22597,14 @@ class EdgePairs(ShapeCollection): Starting with version 0.27, the method is called 'count' for consistency with \Region. 'size' is still provided as an alias. """ ... + def split_filter(self, filter: EdgePairFilter) -> List[EdgePairs]: + r""" + @brief Applies a generic filter and returns a copy with all matching shapes and one with the non-matching ones + See \EdgePairFilter for a description of this feature. + + This method has been introduced in version 0.29.12. + """ + ... def split_inside(self, other: Region) -> List[EdgePairs]: r""" @brief Selects the edge pairs from this edge pair collection which are and are not inside (completely covered by) polygons from the other region @@ -22635,6 +22644,200 @@ class EdgePairs(ShapeCollection): This method has been introduced in version 0.29.6 """ ... + @overload + def split_with_abs_angle(self, angle: float, inverse: bool) -> List[EdgePairs]: + r""" + @brief Like \with_abs_angle, but returning two edge pair collections + The first edge pair collection will contain all matching shapes, the other the non-matching ones. + Note that 'inverse' controls the way each edge is checked, not overall. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_abs_angle(self, min_angle: float, max_angle: float, inverse: bool, include_min_angle: Optional[bool] = ..., include_max_angle: Optional[bool] = ...) -> List[EdgePairs]: + r""" + @brief Like \with_abs_angle, but returning two edge pair collections + The first edge pair collection will contain all matching shapes, the other the non-matching ones. + Note that 'inverse' controls the way each edge is checked, not overall. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_abs_angle_both(self, angle: float, inverse: bool) -> List[EdgePairs]: + r""" + @brief Like \with_abs_angle_both, but returning two edge pair collections + The first edge pair collection will contain all matching shapes, the other the non-matching ones. + Note that 'inverse' controls the way each edge is checked, not overall. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_abs_angle_both(self, min_angle: float, max_angle: float, inverse: bool, include_min_angle: Optional[bool] = ..., include_max_angle: Optional[bool] = ...) -> List[EdgePairs]: + r""" + @brief Like \with_abs_angle_both, but returning two edge pair collections + The first edge pair collection will contain all matching shapes, the other the non-matching ones. + Note that 'inverse' controls the way each edge is checked, not overall. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_angle(self, angle: float, inverse: bool) -> List[EdgePairs]: + r""" + @brief Like \with_angle, but returning two edge pair collections + The first edge pair collection will contain all matching shapes, the other the non-matching ones. + Note that 'inverse' controls the way each edge is checked, not overall. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_angle(self, min_angle: float, max_angle: float, inverse: bool, include_min_angle: Optional[bool] = ..., include_max_angle: Optional[bool] = ...) -> List[EdgePairs]: + r""" + @brief Like \with_angle, but returning two edge pair collections + The first edge pair collection will contain all matching shapes, the other the non-matching ones. + Note that 'inverse' controls the way each edge is checked, not overall. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_angle(self, type: Edges.EdgeType, inverse: bool) -> List[EdgePairs]: + r""" + @brief Like \with_angle, but returning two edge pair collections + The first edge pair collection will contain all matching shapes, the other the non-matching ones. + Note that 'inverse' controls the way each edge is checked, not overall. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_angle_both(self, angle: float, inverse: bool) -> List[EdgePairs]: + r""" + @brief Like \with_angle_both, but returning two edge pair collections + The first edge pair collection will contain all matching shapes, the other the non-matching ones. + Note that 'inverse' controls the way each edge is checked, not overall. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_angle_both(self, min_angle: float, max_angle: float, inverse: bool, include_min_angle: Optional[bool] = ..., include_max_angle: Optional[bool] = ...) -> List[EdgePairs]: + r""" + @brief Like \with_angle_both, but returning two edge pair collections + The first edge pair collection will contain all matching shapes, the other the non-matching ones. + Note that 'inverse' controls the way each edge is checked, not overall. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_angle_both(self, type: Edges.EdgeType, inverse: bool) -> List[EdgePairs]: + r""" + @brief Like \with_angle_both, but returning two edge pair collections + The first edge pair collection will contain all matching shapes, the other the non-matching ones. + Note that 'inverse' controls the way each edge is checked, not overall. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_area(self, area: int) -> List[EdgePairs]: + r""" + @brief Like \with_area, but returning two edge pair collections + The first edge pair collection will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_area(self, min_area: int, max_area: int) -> List[EdgePairs]: + r""" + @brief Like \with_area, but returning two edge pair collections + The first edge pair collection will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_distance(self, distance: int) -> List[EdgePairs]: + r""" + @brief Like \with_distance, but returning two edge pair collections + The first edge pair collection will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_distance(self, min_distance: Any, max_distance: Any) -> List[EdgePairs]: + r""" + @brief Like \with_distance, but returning two edge pair collections + The first edge pair collection will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_internal_angle(self, angle: float) -> List[EdgePairs]: + r""" + @brief Like \with_internal_angle, but returning two edge pair collections + The first edge pair collection will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_internal_angle(self, min_angle: float, max_angle: float, include_min_angle: Optional[bool] = ..., include_max_angle: Optional[bool] = ...) -> List[EdgePairs]: + r""" + @brief Like \with_internal_angle, but returning two edge pair collections + The first edge pair collection will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_length(self, length: int, inverse: bool) -> List[EdgePairs]: + r""" + @brief Like \with_length, but returning two edge pair collections + The first edge pair collection will contain all matching shapes, the other the non-matching ones. + Note that 'inverse' controls the way each edge is checked, not overall. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_length(self, min_length: Any, max_length: Any, inverse: bool) -> List[EdgePairs]: + r""" + @brief Like \with_length, but returning two edge pair collections + The first edge pair collection will contain all matching shapes, the other the non-matching ones. + Note that 'inverse' controls the way each edge is checked, not overall. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_length_both(self, length: int, inverse: bool) -> List[EdgePairs]: + r""" + @brief Like \with_length_both, but returning two edge pair collections + The first edge pair collection will contain all matching shapes, the other the non-matching ones. + Note that 'inverse' controls the way each edge is checked, not overall. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_length_both(self, min_length: Any, max_length: Any, inverse: bool) -> List[EdgePairs]: + r""" + @brief Like \with_length_both, but returning two edge pair collections + The first edge pair collection will contain all matching shapes, the other the non-matching ones. + Note that 'inverse' controls the way each edge is checked, not overall. + + This method has been introduced in version 0.29.12. + """ + ... def swap(self, other: EdgePairs) -> None: r""" @brief Swap the contents of this collection with the contents of another collection @@ -25741,7 +25944,7 @@ class Edges(ShapeCollection): This method has been introduced in version 0.28.4. """ ... - def filtered(self, filtered: EdgeFilter) -> Edges: + def filtered(self, filter: EdgeFilter) -> Edges: r""" @brief Applies a generic filter and returns a filtered copy See \EdgeFilter for a description of this feature. @@ -26678,6 +26881,14 @@ class Edges(ShapeCollection): 'zero_distance_mode' has been added in version 0.29. """ ... + def split_filter(self, filter: EdgeFilter) -> List[Edges]: + r""" + @brief Applies a generic filter and returns a copy with all matching shapes and one with the non-matching ones + See \EdgeFilter for a description of this feature. + + This method has been introduced in version 0.29.12. + """ + ... @overload def split_inside(self, other: Edges) -> List[Edges]: r""" @@ -26740,6 +26951,69 @@ class Edges(ShapeCollection): This method provides a faster way to compute both outside and non-outside edges compared to using separate methods. It has been introduced in version 0.28. """ ... + @overload + def split_with_abs_angle(self, angle: float) -> List[Edges]: + r""" + @brief Like \with_abs_angle, but returning two edge collections + The first edge collection will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_abs_angle(self, min_angle: float, max_angle: float, include_min_angle: Optional[bool] = ..., include_max_angle: Optional[bool] = ...) -> List[Edges]: + r""" + @brief Like \with_abs_angle, but returning two edge collections + The first edge collection will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_angle(self, angle: float) -> List[Edges]: + r""" + @brief Like \with_angle, but returning two edge collections + The first edge collection will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_angle(self, min_angle: float, max_angle: float, include_min_angle: Optional[bool] = ..., include_max_angle: Optional[bool] = ...) -> List[Edges]: + r""" + @brief Like \with_angle, but returning two edge collections + The first edge collection will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_angle(self, type: Edges.EdgeType) -> List[Edges]: + r""" + @brief Like \with_angle, but returning two edge collections + The first edge collection will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_length(self, length: int) -> List[Edges]: + r""" + @brief Like \with_length, but returning two edge collections + The first edge collection will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_length(self, min_length: Any, max_length: Any) -> List[Edges]: + r""" + @brief Like \with_length, but returning two edge collections + The first edge collection will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... def start_segments(self, length: int, fraction: float) -> Edges: r""" @brief Returns edges representing a part of the edge after the start point @@ -30301,10 +30575,10 @@ class Instance: Getter: @brief Gets the basic \CellInstArray object associated with this instance reference. Setter: - @brief Changes the \CellInstArray object to the given one. - This method replaces the instance by the given CellInstArray object. + @brief Returns the basic cell instance array object by giving a micrometer unit object. + This method replaces the instance by the given CellInstArray object and it internally transformed into database units. - This method has been introduced in version 0.22 + This method has been introduced in version 0.25 """ cplx_trans: ICplxTrans r""" @@ -30312,9 +30586,10 @@ class Instance: @brief Gets the complex transformation of the instance or the first instance in the array This method is always valid compared to \trans, since simple transformations can be expressed as complex transformations as well. Setter: - @brief Sets the complex transformation of the instance or the first instance in the array + @brief Sets the complex transformation of the instance or the first instance in the array (in micrometer units) + This method sets the transformation the same way as \cplx_trans=, but the displacement of this transformation is given in micrometer units. It is internally translated into database units. - This method has been introduced in version 0.23. + This method has been introduced in version 0.25. """ da: DVector r""" @@ -30443,10 +30718,9 @@ class Instance: @brief Gets the transformation of the instance or the first instance in the array The transformation returned is only valid if the array does not represent a complex transformation array Setter: - @brief Sets the transformation of the instance or the first instance in the array (in micrometer units) - This method sets the transformation the same way as \cplx_trans=, but the displacement of this transformation is given in micrometer units. It is internally translated into database units. + @brief Sets the transformation of the instance or the first instance in the array - This method has been introduced in version 0.25. + This method has been introduced in version 0.23. """ @classmethod def new(cls) -> Instance: @@ -41403,15 +41677,15 @@ class NetPinRef: @overload def net(self) -> Net: r""" - @brief Gets the net this pin reference is attached to (non-const version). - - This constness variant has been introduced in version 0.26.8 + @brief Gets the net this pin reference is attached to. """ ... @overload def net(self) -> Net: r""" - @brief Gets the net this pin reference is attached to. + @brief Gets the net this pin reference is attached to (non-const version). + + This constness variant has been introduced in version 0.26.8 """ ... def pin(self) -> Pin: @@ -41701,17 +41975,17 @@ class NetTerminalRef: @overload def device(self) -> Device: r""" - @brief Gets the device reference. + @brief Gets the device reference (non-const version). Gets the device object that this connection is made to. + + This constness variant has been introduced in version 0.26.8 """ ... @overload def device(self) -> Device: r""" - @brief Gets the device reference (non-const version). + @brief Gets the device reference. Gets the device object that this connection is made to. - - This constness variant has been introduced in version 0.26.8 """ ... def device_class(self) -> DeviceClass: @@ -53329,7 +53603,7 @@ class Region(ShapeCollection): This method has been introduced in version 0.28.4. """ ... - def filtered(self, filtered: PolygonFilter) -> Region: + def filtered(self, filter: PolygonFilter) -> Region: r""" @brief Applies a generic filter and returns a filtered copy See \PolygonFilter for a description of this feature. @@ -55005,6 +55279,14 @@ class Region(ShapeCollection): This method has been introduced in version 0.27. """ ... + def split_filter(self, filter: PolygonFilter) -> List[Region]: + r""" + @brief Applies a generic filter and returns a copy with all matching shapes and one with the non-matching ones + See \PolygonFilter for a description of this feature. + + This method has been introduced in version 0.29.12. + """ + ... def split_inside(self, other: Region) -> List[Region]: r""" @brief Returns the polygons of this region which are completely inside polygons from the other region and the ones which are not at the same time @@ -55080,6 +55362,210 @@ class Region(ShapeCollection): This method has been introduced in version 0.27. """ ... + def split_rectangles(self) -> List[Region]: + r""" + @brief Combined results of \rectangles and \non_rectangles + This method returns a list with two Regions, the first is the result of \rectangles, the second the result of \non_rectangles. Using this method is faster when you need both. + + This method has been introduced in version 0.29.12. + """ + ... + def split_rectilinear(self) -> List[Region]: + r""" + @brief Combined results of \rectilinear and \non_rectilinear + This method returns a list with two Regions, the first is the result of \rectilinear, the second the result of \non_rectilinear. Using this method is faster when you need both. + + This method has been introduced in version 0.29.12. + """ + ... + def split_squares(self) -> List[Region]: + r""" + @brief Combined results of \squares and \non_squares + This method returns a list with two Regions, the first is the result of \squares, the second the result of \non_squares. Using this method is faster when you need both. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_area(self, area: int) -> List[Region]: + r""" + @brief Like \with_area, but returning two regions + The first region will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_area(self, min_area: Any, max_area: Any) -> List[Region]: + r""" + @brief Like \with_area, but returning two regions + The first region will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_area_ratio(self, min_ratio: Any, max_ratio: Any, min_included: Optional[bool] = ..., max_included: Optional[bool] = ...) -> List[Region]: + r""" + @brief Like \with_area_ratio, but returning two regions + The first region will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_area_ratio(self, ratio: float) -> List[Region]: + r""" + @brief Like \with_area_ratio, but returning two regions + The first region will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_bbox_aspect_ratio(self, min_ratio: Any, max_ratio: Any, min_included: Optional[bool] = ..., max_included: Optional[bool] = ...) -> List[Region]: + r""" + @brief Like \with_bbox_aspect_ratio, but returning two regions + The first region will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_bbox_aspect_ratio(self, ratio: float) -> List[Region]: + r""" + @brief Like \with_bbox_aspect_ratio, but returning two regions + The first region will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_bbox_height(self, height: int) -> List[Region]: + r""" + @brief Like \with_bbox_height, but returning two regions + The first region will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_bbox_height(self, min_height: Any, max_height: Any) -> List[Region]: + r""" + @brief Like \with_bbox_height, but returning two regions + The first region will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_bbox_max(self, dim: int) -> List[Region]: + r""" + @brief Like \with_bbox_max, but returning two regions + The first region will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_bbox_max(self, min_dim: Any, max_dim: Any) -> List[Region]: + r""" + @brief Like \with_bbox_max, but returning two regions + The first region will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_bbox_min(self, dim: int) -> List[Region]: + r""" + @brief Like \with_bbox_min, but returning two regions + The first region will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_bbox_min(self, min_dim: Any, max_dim: Any) -> List[Region]: + r""" + @brief Like \with_bbox_min, but returning two regions + The first region will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_bbox_width(self, min_width: Any, max_width: Any) -> List[Region]: + r""" + @brief Like \with_bbox_width, but returning two regions + The first region will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_bbox_width(self, width: int) -> List[Region]: + r""" + @brief Like \with_bbox_width, but returning two regions + The first region will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_holes(self, min_nholes: Any, max_nholes: Any) -> List[Region]: + r""" + @brief Like \with_holes, but returning two regions + The first region will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_holes(self, nholes: int) -> List[Region]: + r""" + @brief Like \with_holes, but returning two regions + The first region will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_perimeter(self, min_perimeter: Any, max_perimeter: Any) -> List[Region]: + r""" + @brief Like \with_perimeter, but returning two regions + The first region will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_perimeter(self, perimeter: int) -> List[Region]: + r""" + @brief Like \with_perimeter, but returning two regions + The first region will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_relative_height(self, min_ratio: Any, max_ratio: Any, min_included: Optional[bool] = ..., max_included: Optional[bool] = ...) -> List[Region]: + r""" + @brief Like \with_relative_height, but returning two regions + The first region will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + @overload + def split_with_relative_height(self, ratio: float) -> List[Region]: + r""" + @brief Like \with_relative_height, but returning two regions + The first region will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... def squares(self) -> Region: r""" @brief Returns all polygons which are squares @@ -55487,7 +55973,7 @@ class Region(ShapeCollection): """ ... @overload - def with_holes(self, min_bholes: Any, max_nholes: Any, inverse: bool) -> Region: + def with_holes(self, min_nholes: Any, max_nholes: Any, inverse: bool) -> Region: r""" @brief Filter the polygons by their number of holes Filters the polygons of the region by number of holes. If "inverse" is false, only polygons which have a hole count larger or equal to "min_nholes" and less than "max_nholes" are returned. If "inverse" is true, polygons having a hole count less than "min_nholes" or larger or equal than "max_nholes" are returned. @@ -56911,11 +57397,10 @@ class Shape: Starting with version 0.23, this method returns nil, if the shape does not represent an edge. Setter: - @brief Replaces the shape by the given edge - This method replaces the shape by the given edge. This method can only be called for editable layouts. It does not change the user properties of the shape. - Calling this method will invalidate any iterators. It should not be called inside a loop iterating over shapes. + @brief Replaces the shape by the given edge (in micrometer units) + This method replaces the shape by the given edge, like \edge= with a \Edge argument does. This version translates the edge from micrometer units to database units internally. - This method has been introduced in version 0.22. + This method has been introduced in version 0.25. """ edge_pair: Any r""" @@ -56964,11 +57449,10 @@ class Shape: Starting with version 0.23, this method returns nil, if the shape does not represent a path. Setter: - @brief Replaces the shape by the given path object - This method replaces the shape by the given path object. This method can only be called for editable layouts. It does not change the user properties of the shape. - Calling this method will invalidate any iterators. It should not be called inside a loop iterating over shapes. + @brief Replaces the shape by the given path (in micrometer units) + This method replaces the shape by the given path, like \path= with a \Path argument does. This version translates the path from micrometer units to database units internally. - This method has been introduced in version 0.22. + This method has been introduced in version 0.25. """ path_bgnext: int r""" @@ -60872,15 +61356,6 @@ class SubCircuit(NetlistObject): """ ... @overload - def circuit(self) -> Circuit: - r""" - @brief Gets the circuit the subcircuit lives in (non-const version). - This is NOT the circuit which is referenced. For getting the circuit that the subcircuit references, use \circuit_ref. - - This constness variant has been introduced in version 0.26.8 - """ - ... - @overload def circuit(self) -> Circuit: r""" @brief Gets the circuit the subcircuit lives in. @@ -60888,9 +61363,12 @@ class SubCircuit(NetlistObject): """ ... @overload - def circuit_ref(self) -> Circuit: + def circuit(self) -> Circuit: r""" - @brief Gets the circuit referenced by the subcircuit. + @brief Gets the circuit the subcircuit lives in (non-const version). + This is NOT the circuit which is referenced. For getting the circuit that the subcircuit references, use \circuit_ref. + + This constness variant has been introduced in version 0.26.8 """ ... @overload @@ -60903,6 +61381,12 @@ class SubCircuit(NetlistObject): """ ... @overload + def circuit_ref(self) -> Circuit: + r""" + @brief Gets the circuit referenced by the subcircuit. + """ + ... + @overload def connect_pin(self, pin: Pin, net: Net) -> None: r""" @brief Connects the given pin to the specified net. @@ -61569,7 +62053,8 @@ class Text: Setter: @brief Sets the horizontal alignment - This is the version accepting integer values. It's provided for backward compatibility. + This property specifies how the text is aligned relative to the anchor point. + This property has been introduced in version 0.22 and extended to enums in 0.28. """ size: int r""" @@ -63548,6 +64033,30 @@ class Texts(ShapeCollection): Starting with version 0.27, the method is called 'count' for consistency with \Region. 'size' is still provided as an alias. """ ... + def split_filter(self, filter: TextFilter) -> List[Texts]: + r""" + @brief Applies a generic filter and returns a copy with all matching shapes and one with the non-matching ones + See \TextFilter for a description of this feature. + + This method has been introduced in version 0.29.12. + """ + ... + def split_with_match(self, pattern: str) -> List[Texts]: + r""" + @brief Like \with_match, but returning two text collections + The first text collection will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... + def split_with_text(self, text: str) -> List[Texts]: + r""" + @brief Like \with_text, but returning two text collections + The first text collection will contain all matching shapes, the other the non-matching ones. + + This method has been introduced in version 0.29.12. + """ + ... def swap(self, other: Texts) -> None: r""" @brief Swap the contents of this collection with the contents of another collection