pyedb 0.30.0__py3-none-any.whl → 0.34.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pyedb might be problematic. Click here for more details.
- pyedb/__init__.py +1 -27
- pyedb/common/__init__.py +0 -0
- pyedb/common/nets.py +488 -0
- pyedb/configuration/cfg_common.py +20 -0
- pyedb/configuration/cfg_components.py +218 -57
- pyedb/configuration/cfg_data.py +6 -0
- pyedb/configuration/cfg_modeler.py +139 -0
- pyedb/configuration/cfg_operations.py +5 -4
- pyedb/configuration/cfg_padstacks.py +321 -54
- pyedb/configuration/cfg_ports_sources.py +99 -7
- pyedb/configuration/cfg_s_parameter_models.py +6 -6
- pyedb/configuration/configuration.py +31 -9
- pyedb/dotnet/clr_module.py +92 -32
- pyedb/dotnet/edb.py +59 -10
- pyedb/dotnet/edb_core/cell/hierarchy/component.py +0 -202
- pyedb/dotnet/edb_core/cell/layout.py +1 -1
- pyedb/dotnet/edb_core/cell/primitive/primitive.py +5 -27
- pyedb/dotnet/edb_core/edb_data/control_file.py +21 -0
- pyedb/dotnet/edb_core/edb_data/nets_data.py +6 -1
- pyedb/dotnet/edb_core/edb_data/padstacks_data.py +16 -205
- pyedb/dotnet/edb_core/edb_data/primitives_data.py +31 -0
- pyedb/dotnet/edb_core/hfss.py +2 -2
- pyedb/dotnet/edb_core/layout_validation.py +1 -3
- pyedb/dotnet/edb_core/materials.py +38 -38
- pyedb/dotnet/edb_core/modeler.py +4 -1
- pyedb/dotnet/edb_core/nets.py +2 -368
- pyedb/generic/filesystem.py +2 -5
- {pyedb-0.30.0.dist-info → pyedb-0.34.0.dist-info}/METADATA +14 -11
- {pyedb-0.30.0.dist-info → pyedb-0.34.0.dist-info}/RECORD +31 -28
- {pyedb-0.30.0.dist-info → pyedb-0.34.0.dist-info}/WHEEL +1 -1
- {pyedb-0.30.0.dist-info → pyedb-0.34.0.dist-info}/LICENSE +0 -0
pyedb/dotnet/edb_core/nets.py
CHANGED
|
@@ -22,18 +22,15 @@
|
|
|
22
22
|
|
|
23
23
|
from __future__ import absolute_import # noreorder
|
|
24
24
|
|
|
25
|
-
import os
|
|
26
|
-
import time
|
|
27
25
|
import warnings
|
|
28
26
|
|
|
27
|
+
from pyedb.common.nets import CommonNets
|
|
29
28
|
from pyedb.dotnet.edb_core.edb_data.nets_data import EDBNetsData
|
|
30
|
-
from pyedb.generic.constants import CSS4_COLORS
|
|
31
29
|
from pyedb.generic.general_methods import generate_unique_name
|
|
32
30
|
from pyedb.misc.utilities import compute_arc_points
|
|
33
|
-
from pyedb.modeler.geometry_operators import GeometryOperators
|
|
34
31
|
|
|
35
32
|
|
|
36
|
-
class EdbNets(
|
|
33
|
+
class EdbNets(CommonNets):
|
|
37
34
|
"""Manages EDB methods for nets management accessible from `Edb.nets` property.
|
|
38
35
|
|
|
39
36
|
Examples
|
|
@@ -381,295 +378,6 @@ class EdbNets(object):
|
|
|
381
378
|
# fmt: on
|
|
382
379
|
return x, y
|
|
383
380
|
|
|
384
|
-
def get_plot_data(
|
|
385
|
-
self,
|
|
386
|
-
nets=None,
|
|
387
|
-
layers=None,
|
|
388
|
-
color_by_net=False,
|
|
389
|
-
outline=None,
|
|
390
|
-
plot_components_on_top=False,
|
|
391
|
-
plot_components_on_bottom=False,
|
|
392
|
-
):
|
|
393
|
-
"""Return List of points for Matplotlib 2D Chart.
|
|
394
|
-
|
|
395
|
-
Parameters
|
|
396
|
-
----------
|
|
397
|
-
nets : str, list, optional
|
|
398
|
-
Name of the net or list of nets to plot. If `None` (default value) all nets will be plotted.
|
|
399
|
-
layers : str, list, optional
|
|
400
|
-
Name of the layers to include in the plot. If `None` all the signal layers will be considered.
|
|
401
|
-
color_by_net : bool, optional
|
|
402
|
-
If ``True`` the plot will be colored by net.
|
|
403
|
-
If ``False`` the plot will be colored by layer. (default)
|
|
404
|
-
outline : list, optional
|
|
405
|
-
List of points of the outline to plot.
|
|
406
|
-
plot_components_on_top : bool, optional
|
|
407
|
-
If ``True`` the components placed on top layer are plotted.
|
|
408
|
-
If ``False`` the components are not plotted. (default)
|
|
409
|
-
If nets and/or layers is specified, only the components belonging to the specified nets/layers are plotted.
|
|
410
|
-
plot_components_on_bottom : bool, optional
|
|
411
|
-
If ``True`` the components placed on bottom layer are plotted.
|
|
412
|
-
If ``False`` the components are not plotted. (default)
|
|
413
|
-
If nets and/or layers is specified, only the components belonging to the specified nets/layers are plotted.
|
|
414
|
-
|
|
415
|
-
Returns
|
|
416
|
-
-------
|
|
417
|
-
List, str: list of data to be used in plot.
|
|
418
|
-
In case of remote session it will be returned a string that could be converted \
|
|
419
|
-
to list using ast.literal_eval().
|
|
420
|
-
"""
|
|
421
|
-
start_time = time.time()
|
|
422
|
-
if not nets:
|
|
423
|
-
nets = list(self.nets.keys())
|
|
424
|
-
if isinstance(nets, str):
|
|
425
|
-
nets = [nets]
|
|
426
|
-
if not layers:
|
|
427
|
-
layers = list(self._pedb.stackup.signal_layers.keys())
|
|
428
|
-
if isinstance(layers, str):
|
|
429
|
-
layers = [layers]
|
|
430
|
-
color_index = 0
|
|
431
|
-
objects_lists = []
|
|
432
|
-
label_colors = {}
|
|
433
|
-
n_label = 0
|
|
434
|
-
max_labels = 10
|
|
435
|
-
|
|
436
|
-
if outline:
|
|
437
|
-
xt = [i[0] for i in outline]
|
|
438
|
-
yt = [i[1] for i in outline]
|
|
439
|
-
xc, yc = GeometryOperators.orient_polygon(xt, yt, clockwise=True)
|
|
440
|
-
vertices = [(i, j) for i, j in zip(xc, yc)]
|
|
441
|
-
codes = [2 for _ in vertices]
|
|
442
|
-
codes[0] = 1
|
|
443
|
-
vertices.append((0, 0))
|
|
444
|
-
codes.append(79)
|
|
445
|
-
objects_lists.append([vertices, codes, "b", "Outline", 1.0, 1.5, "contour"])
|
|
446
|
-
n_label += 1
|
|
447
|
-
layer_colors = {i: k.color for i, k in self._pedb.stackup.layers.items()}
|
|
448
|
-
top_layer = list(self._pedb.stackup.signal_layers.keys())[0]
|
|
449
|
-
bottom_layer = list(self._pedb.stackup.signal_layers.keys())[-1]
|
|
450
|
-
if plot_components_on_top or plot_components_on_bottom:
|
|
451
|
-
nc = 0
|
|
452
|
-
for comp in self._pedb.components.instances.values():
|
|
453
|
-
if not comp.is_enabled:
|
|
454
|
-
continue
|
|
455
|
-
net_names = comp.nets
|
|
456
|
-
if nets and not any([i in nets for i in net_names]):
|
|
457
|
-
continue
|
|
458
|
-
layer_name = comp.placement_layer
|
|
459
|
-
if layer_name not in layers:
|
|
460
|
-
continue
|
|
461
|
-
if plot_components_on_top and layer_name == top_layer:
|
|
462
|
-
component_color = (184 / 255, 115 / 255, 51 / 255) # this is the color used in AEDT
|
|
463
|
-
label = "Component on top layer"
|
|
464
|
-
elif plot_components_on_bottom and layer_name == bottom_layer:
|
|
465
|
-
component_color = (41 / 255, 171 / 255, 135 / 255) # 41, 171, 135
|
|
466
|
-
label = "Component on bottom layer"
|
|
467
|
-
else:
|
|
468
|
-
continue
|
|
469
|
-
cbb = comp.bounding_box
|
|
470
|
-
x = [cbb[0], cbb[0], cbb[2], cbb[2]]
|
|
471
|
-
y = [cbb[1], cbb[3], cbb[3], cbb[1]]
|
|
472
|
-
vertices = [(i, j) for i, j in zip(x, y)]
|
|
473
|
-
codes = [2 for _ in vertices]
|
|
474
|
-
codes[0] = 1
|
|
475
|
-
vertices.append((0, 0))
|
|
476
|
-
codes.append(79)
|
|
477
|
-
if label not in label_colors:
|
|
478
|
-
label_colors[label] = component_color
|
|
479
|
-
objects_lists.append([vertices, codes, label_colors[label], label, 1.0, 2.0, "contour"])
|
|
480
|
-
n_label += 1
|
|
481
|
-
else:
|
|
482
|
-
objects_lists.append([vertices, codes, label_colors[label], None, 1.0, 2.0, "contour"])
|
|
483
|
-
nc += 1
|
|
484
|
-
self._logger.debug("Plotted {} component(s)".format(nc))
|
|
485
|
-
for prim in self._pedb.modeler.primitives:
|
|
486
|
-
if prim.is_void:
|
|
487
|
-
continue
|
|
488
|
-
net_name = prim.net_name
|
|
489
|
-
layer_name = prim.layer_name
|
|
490
|
-
if nets and (net_name not in nets or layer_name not in layers):
|
|
491
|
-
continue
|
|
492
|
-
prim_type = prim.primitive_type
|
|
493
|
-
if prim_type == "path":
|
|
494
|
-
try:
|
|
495
|
-
x, y = prim.points()
|
|
496
|
-
except ValueError:
|
|
497
|
-
x = None
|
|
498
|
-
if not x:
|
|
499
|
-
continue
|
|
500
|
-
create_label = False
|
|
501
|
-
if not color_by_net:
|
|
502
|
-
label = "Layer " + layer_name
|
|
503
|
-
if label not in label_colors:
|
|
504
|
-
try:
|
|
505
|
-
color = layer_colors[layer_name]
|
|
506
|
-
c = (
|
|
507
|
-
float(color[0] / 255),
|
|
508
|
-
float(color[1] / 255),
|
|
509
|
-
float(color[2] / 255),
|
|
510
|
-
)
|
|
511
|
-
except:
|
|
512
|
-
c = list(CSS4_COLORS.keys())[color_index]
|
|
513
|
-
color_index += 1
|
|
514
|
-
if color_index >= len(CSS4_COLORS):
|
|
515
|
-
color_index = 0
|
|
516
|
-
label_colors[label] = c
|
|
517
|
-
create_label = True
|
|
518
|
-
else:
|
|
519
|
-
label = "Net " + net_name
|
|
520
|
-
if label not in label_colors:
|
|
521
|
-
label_colors[label] = list(CSS4_COLORS.keys())[color_index]
|
|
522
|
-
color_index += 1
|
|
523
|
-
if color_index >= len(CSS4_COLORS):
|
|
524
|
-
color_index = 0
|
|
525
|
-
create_label = True
|
|
526
|
-
|
|
527
|
-
if create_label and n_label <= max_labels:
|
|
528
|
-
objects_lists.append([x, y, label_colors[label], label, 0.4, "fill"])
|
|
529
|
-
n_label += 1
|
|
530
|
-
else:
|
|
531
|
-
objects_lists.append([x, y, label_colors[label], None, 0.4, "fill"])
|
|
532
|
-
elif prim_type == "polygon":
|
|
533
|
-
xt, yt = prim.points()
|
|
534
|
-
if not xt:
|
|
535
|
-
continue
|
|
536
|
-
x, y = GeometryOperators.orient_polygon(xt, yt, clockwise=True)
|
|
537
|
-
vertices = [(i, j) for i, j in zip(x, y)]
|
|
538
|
-
codes = [2 for _ in vertices]
|
|
539
|
-
codes[0] = 1
|
|
540
|
-
vertices.append((0, 0))
|
|
541
|
-
codes.append(79)
|
|
542
|
-
|
|
543
|
-
for void in prim.voids:
|
|
544
|
-
xvt, yvt = void.points()
|
|
545
|
-
if xvt:
|
|
546
|
-
xv, yv = GeometryOperators.orient_polygon(xvt, yvt, clockwise=False)
|
|
547
|
-
tmpV = [(i, j) for i, j in zip(xv, yv)]
|
|
548
|
-
vertices.extend(tmpV)
|
|
549
|
-
tmpC = [2 for _ in tmpV]
|
|
550
|
-
tmpC[0] = 1
|
|
551
|
-
codes.extend(tmpC)
|
|
552
|
-
vertices.append((0, 0))
|
|
553
|
-
codes.append(79)
|
|
554
|
-
|
|
555
|
-
create_label = False
|
|
556
|
-
if not color_by_net:
|
|
557
|
-
label = "Layer " + layer_name
|
|
558
|
-
if label not in label_colors:
|
|
559
|
-
try:
|
|
560
|
-
color = layer_colors[layer_name]
|
|
561
|
-
c = (
|
|
562
|
-
float(color[0] / 255),
|
|
563
|
-
float(color[1] / 255),
|
|
564
|
-
float(color[2] / 255),
|
|
565
|
-
)
|
|
566
|
-
except:
|
|
567
|
-
c = list(CSS4_COLORS.keys())[color_index]
|
|
568
|
-
color_index += 1
|
|
569
|
-
if color_index >= len(CSS4_COLORS):
|
|
570
|
-
color_index = 0
|
|
571
|
-
label_colors[label] = c
|
|
572
|
-
create_label = True
|
|
573
|
-
else:
|
|
574
|
-
label = "Net " + net_name
|
|
575
|
-
if label not in label_colors:
|
|
576
|
-
label_colors[label] = list(CSS4_COLORS.keys())[color_index]
|
|
577
|
-
color_index += 1
|
|
578
|
-
if color_index >= len(CSS4_COLORS):
|
|
579
|
-
color_index = 0
|
|
580
|
-
create_label = True
|
|
581
|
-
|
|
582
|
-
if create_label and n_label <= max_labels:
|
|
583
|
-
if layer_name == "Outline":
|
|
584
|
-
objects_lists.append([vertices, codes, label_colors[label], label, 1.0, 2.0, "contour"])
|
|
585
|
-
else:
|
|
586
|
-
objects_lists.append([vertices, codes, label_colors[label], label, 0.4, "path"])
|
|
587
|
-
n_label += 1
|
|
588
|
-
else:
|
|
589
|
-
if layer_name == "Outline":
|
|
590
|
-
objects_lists.append([vertices, codes, label_colors[label], None, 1.0, 2.0, "contour"])
|
|
591
|
-
else:
|
|
592
|
-
objects_lists.append([vertices, codes, label_colors[label], None, 0.4, "path"])
|
|
593
|
-
elif prim_type == "circle":
|
|
594
|
-
x, y = prim.points()
|
|
595
|
-
if not x:
|
|
596
|
-
continue
|
|
597
|
-
create_label = False
|
|
598
|
-
if not color_by_net:
|
|
599
|
-
label = "Layer " + layer_name
|
|
600
|
-
if label not in label_colors:
|
|
601
|
-
try:
|
|
602
|
-
color = layer_colors[layer_name]
|
|
603
|
-
c = (
|
|
604
|
-
float(color[0] / 255),
|
|
605
|
-
float(color[1] / 255),
|
|
606
|
-
float(color[2] / 255),
|
|
607
|
-
)
|
|
608
|
-
except:
|
|
609
|
-
c = list(CSS4_COLORS.keys())[color_index]
|
|
610
|
-
color_index += 1
|
|
611
|
-
if color_index >= len(CSS4_COLORS):
|
|
612
|
-
color_index = 0
|
|
613
|
-
label_colors[label] = c
|
|
614
|
-
create_label = True
|
|
615
|
-
else:
|
|
616
|
-
label = "Net " + net_name
|
|
617
|
-
if label not in label_colors:
|
|
618
|
-
label_colors[label] = list(CSS4_COLORS.keys())[color_index]
|
|
619
|
-
color_index += 1
|
|
620
|
-
if color_index >= len(CSS4_COLORS):
|
|
621
|
-
color_index = 0
|
|
622
|
-
create_label = True
|
|
623
|
-
|
|
624
|
-
if create_label and n_label <= max_labels:
|
|
625
|
-
objects_lists.append([x, y, label_colors[label], label, 0.4, "fill"])
|
|
626
|
-
n_label += 1
|
|
627
|
-
else:
|
|
628
|
-
objects_lists.append([x, y, label_colors[label], None, 0.4, "fill"])
|
|
629
|
-
elif prim_type == "rectangle":
|
|
630
|
-
x, y = prim.points()
|
|
631
|
-
if not x:
|
|
632
|
-
continue
|
|
633
|
-
create_label = False
|
|
634
|
-
if not color_by_net:
|
|
635
|
-
label = "Layer " + layer_name
|
|
636
|
-
if label not in label_colors:
|
|
637
|
-
try:
|
|
638
|
-
color = layer_colors[layer_name]
|
|
639
|
-
c = (
|
|
640
|
-
float(color[0] / 255),
|
|
641
|
-
float(color[1] / 255),
|
|
642
|
-
float(color[2] / 255),
|
|
643
|
-
)
|
|
644
|
-
except:
|
|
645
|
-
c = list(CSS4_COLORS.keys())[color_index]
|
|
646
|
-
color_index += 1
|
|
647
|
-
if color_index >= len(CSS4_COLORS):
|
|
648
|
-
color_index = 0
|
|
649
|
-
label_colors[label] = c
|
|
650
|
-
create_label = True
|
|
651
|
-
else:
|
|
652
|
-
label = "Net " + net_name
|
|
653
|
-
if label not in label_colors:
|
|
654
|
-
label_colors[label] = list(CSS4_COLORS.keys())[color_index]
|
|
655
|
-
color_index += 1
|
|
656
|
-
if color_index >= len(CSS4_COLORS):
|
|
657
|
-
color_index = 0
|
|
658
|
-
create_label = True
|
|
659
|
-
|
|
660
|
-
if create_label and n_label <= max_labels:
|
|
661
|
-
objects_lists.append([x, y, label_colors[label], label, 0.4, "fill"])
|
|
662
|
-
n_label += 1
|
|
663
|
-
else:
|
|
664
|
-
objects_lists.append([x, y, label_colors[label], None, 0.4, "fill"])
|
|
665
|
-
|
|
666
|
-
end_time = time.time() - start_time
|
|
667
|
-
self._logger.info("Nets Point Generation time %s seconds", round(end_time, 3))
|
|
668
|
-
if os.getenv("PYAEDT_SERVER_AEDT_PATH", None):
|
|
669
|
-
return str(objects_lists)
|
|
670
|
-
else:
|
|
671
|
-
return objects_lists
|
|
672
|
-
|
|
673
381
|
def classify_nets(self, power_nets=None, signal_nets=None):
|
|
674
382
|
"""Reassign power/ground or signal nets based on list of nets.
|
|
675
383
|
|
|
@@ -701,80 +409,6 @@ class EdbNets(object):
|
|
|
701
409
|
self.nets[net].net_object.SetIsPowerGround(False)
|
|
702
410
|
return True
|
|
703
411
|
|
|
704
|
-
def plot(
|
|
705
|
-
self,
|
|
706
|
-
nets=None,
|
|
707
|
-
layers=None,
|
|
708
|
-
color_by_net=False,
|
|
709
|
-
show_legend=True,
|
|
710
|
-
save_plot=None,
|
|
711
|
-
outline=None,
|
|
712
|
-
size=(2000, 1000),
|
|
713
|
-
plot_components_on_top=False,
|
|
714
|
-
plot_components_on_bottom=False,
|
|
715
|
-
show=True,
|
|
716
|
-
):
|
|
717
|
-
"""Plot a Net to Matplotlib 2D Chart.
|
|
718
|
-
|
|
719
|
-
Parameters
|
|
720
|
-
----------
|
|
721
|
-
nets : str, list, optional
|
|
722
|
-
Name of the net or list of nets to plot. If ``None`` all nets will be plotted.
|
|
723
|
-
layers : str, list, optional
|
|
724
|
-
Name of the layers to include in the plot. If ``None`` all the signal layers will be considered.
|
|
725
|
-
color_by_net : bool, optional
|
|
726
|
-
If ``True`` the plot will be colored by net.
|
|
727
|
-
If ``False`` the plot will be colored by layer. (default)
|
|
728
|
-
show_legend : bool, optional
|
|
729
|
-
If ``True`` the legend is shown in the plot. (default)
|
|
730
|
-
If ``False`` the legend is not shown.
|
|
731
|
-
save_plot : str, optional
|
|
732
|
-
If a path is specified the plot will be saved in this location.
|
|
733
|
-
If ``save_plot`` is provided, the ``show`` parameter is ignored.
|
|
734
|
-
outline : list, optional
|
|
735
|
-
List of points of the outline to plot.
|
|
736
|
-
size : tuple, int, optional
|
|
737
|
-
Image size in pixel (width, height). Default value is ``(2000, 1000)``
|
|
738
|
-
plot_components_on_top : bool, optional
|
|
739
|
-
If ``True`` the components placed on top layer are plotted.
|
|
740
|
-
If ``False`` the components are not plotted. (default)
|
|
741
|
-
If nets and/or layers is specified, only the components belonging to the specified nets/layers are plotted.
|
|
742
|
-
plot_components_on_bottom : bool, optional
|
|
743
|
-
If ``True`` the components placed on bottom layer are plotted.
|
|
744
|
-
If ``False`` the components are not plotted. (default)
|
|
745
|
-
If nets and/or layers is specified, only the components belonging to the specified nets/layers are plotted.
|
|
746
|
-
show : bool, optional
|
|
747
|
-
Whether to show the plot or not. Default is `True`.
|
|
748
|
-
"""
|
|
749
|
-
from pyedb.generic.plot import plot_matplotlib
|
|
750
|
-
|
|
751
|
-
object_lists = self.get_plot_data(
|
|
752
|
-
nets,
|
|
753
|
-
layers,
|
|
754
|
-
color_by_net,
|
|
755
|
-
outline,
|
|
756
|
-
plot_components_on_top,
|
|
757
|
-
plot_components_on_bottom,
|
|
758
|
-
)
|
|
759
|
-
|
|
760
|
-
if isinstance(size, int): # pragma: no cover
|
|
761
|
-
board_size_x, board_size_y = self._pedb.get_statistics().layout_size
|
|
762
|
-
fig_size_x = size
|
|
763
|
-
fig_size_y = board_size_y * fig_size_x / board_size_x
|
|
764
|
-
size = (fig_size_x, fig_size_y)
|
|
765
|
-
|
|
766
|
-
return plot_matplotlib(
|
|
767
|
-
plot_data=object_lists,
|
|
768
|
-
size=size,
|
|
769
|
-
show_legend=show_legend,
|
|
770
|
-
xlabel="X (m)",
|
|
771
|
-
ylabel="Y (m)",
|
|
772
|
-
title=self._pedb.active_cell.GetName(),
|
|
773
|
-
save_plot=save_plot,
|
|
774
|
-
axis_equal=True,
|
|
775
|
-
show=show,
|
|
776
|
-
)
|
|
777
|
-
|
|
778
412
|
def is_power_gound_net(self, netname_list):
|
|
779
413
|
"""Determine if one of the nets in a list is power or ground.
|
|
780
414
|
|
pyedb/generic/filesystem.py
CHANGED
|
@@ -116,13 +116,10 @@ class Scratch:
|
|
|
116
116
|
-------
|
|
117
117
|
|
|
118
118
|
"""
|
|
119
|
-
from distutils.dir_util import copy_tree
|
|
120
119
|
|
|
121
|
-
if destfolder:
|
|
122
|
-
copy_tree(src_folder, destfolder)
|
|
123
|
-
else:
|
|
120
|
+
if not destfolder:
|
|
124
121
|
destfolder = os.path.join(self.path, os.path.split(src_folder)[-1])
|
|
125
|
-
|
|
122
|
+
shutil.copytree(src_folder, destfolder, dirs_exist_ok=True)
|
|
126
123
|
return destfolder
|
|
127
124
|
|
|
128
125
|
def __enter__(self):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
2
|
Name: pyedb
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.34.0
|
|
4
4
|
Summary: Higher-Level Pythonic Ansys Electronics Data Base
|
|
5
5
|
Author-email: "ANSYS, Inc." <pyansys.core@ansys.com>
|
|
6
6
|
Maintainer-email: PyEDB developers <simon.vandenbrouck@ansys.com>
|
|
@@ -17,38 +17,41 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.11
|
|
18
18
|
Requires-Dist: cffi>=1.16.0,<1.18; platform_system=='Linux'
|
|
19
19
|
Requires-Dist: pywin32 >= 303;platform_system=='Windows'
|
|
20
|
-
Requires-Dist: ansys-pythonnet >= 3.1.
|
|
20
|
+
Requires-Dist: ansys-pythonnet >= 3.1.0rc4
|
|
21
21
|
Requires-Dist: dotnetcore2 ==3.1.23;platform_system=='Linux'
|
|
22
|
-
Requires-Dist: numpy>=1.20.0,<
|
|
22
|
+
Requires-Dist: numpy>=1.20.0,<3
|
|
23
23
|
Requires-Dist: pandas>=1.1.0,<2.3
|
|
24
24
|
Requires-Dist: pydantic>=2.6.4,<2.10
|
|
25
25
|
Requires-Dist: Rtree >= 1.2.0
|
|
26
26
|
Requires-Dist: toml == 0.10.2
|
|
27
27
|
Requires-Dist: scikit-rf
|
|
28
28
|
Requires-Dist: ansys-sphinx-theme>=0.10.0,<1.1 ; extra == "doc"
|
|
29
|
-
Requires-Dist: imageio>=2.30.0,<2.
|
|
30
|
-
Requires-Dist: ipython>=8.13.0,<8.
|
|
31
|
-
Requires-Dist: jupyterlab>=4.0.0,<4.
|
|
29
|
+
Requires-Dist: imageio>=2.30.0,<2.37 ; extra == "doc"
|
|
30
|
+
Requires-Dist: ipython>=8.13.0,<8.30 ; extra == "doc"
|
|
31
|
+
Requires-Dist: jupyterlab>=4.0.0,<4.4 ; extra == "doc"
|
|
32
32
|
Requires-Dist: jupytext>=1.16.0,<1.17 ; extra == "doc"
|
|
33
33
|
Requires-Dist: matplotlib>=3.5.0,<3.10 ; extra == "doc"
|
|
34
34
|
Requires-Dist: nbsphinx>=0.9.0,<0.10 ; extra == "doc"
|
|
35
35
|
Requires-Dist: nbconvert < 7.17 ; extra == "doc"
|
|
36
36
|
Requires-Dist: numpydoc>=1.5.0,<1.9 ; extra == "doc"
|
|
37
|
-
Requires-Dist: pypandoc>=1.10.0,<1.
|
|
37
|
+
Requires-Dist: pypandoc>=1.10.0,<1.15 ; extra == "doc"
|
|
38
38
|
Requires-Dist: recommonmark ; extra == "doc"
|
|
39
|
-
Requires-Dist: Sphinx>=7.1.0,<8.
|
|
39
|
+
Requires-Dist: Sphinx>=7.1.0,<8.2 ; extra == "doc"
|
|
40
40
|
Requires-Dist: sphinx-autobuild==2021.3.14 ; extra == "doc" and ( python_version == '3.8')
|
|
41
41
|
Requires-Dist: sphinx-autobuild==2024.10.3 ; extra == "doc" and ( python_version > '3.8')
|
|
42
42
|
Requires-Dist: sphinx-copybutton>=0.5.0,<0.6 ; extra == "doc"
|
|
43
|
-
Requires-Dist: sphinx-gallery>=0.14.0,<0.
|
|
43
|
+
Requires-Dist: sphinx-gallery>=0.14.0,<0.19 ; extra == "doc"
|
|
44
44
|
Requires-Dist: sphinx_design>=0.4.0,<0.7 ; extra == "doc"
|
|
45
|
+
Requires-Dist: shapely ; extra == "doc"
|
|
45
46
|
Requires-Dist: matplotlib>=3.5.0,<3.10 ; extra == "full"
|
|
47
|
+
Requires-Dist: shapely ; extra == "full"
|
|
46
48
|
Requires-Dist: matplotlib>=3.5.0,<3.10 ; extra == "tests"
|
|
47
49
|
Requires-Dist: mock>=5.1.0,<5.2 ; extra == "tests"
|
|
48
50
|
Requires-Dist: pytest>=7.4.0,<8.4 ; extra == "tests"
|
|
49
|
-
Requires-Dist: pytest-cov>=4.0.0,<
|
|
51
|
+
Requires-Dist: pytest-cov>=4.0.0,<6.1 ; extra == "tests"
|
|
50
52
|
Requires-Dist: pytest-xdist>=3.5.0,<3.7 ; extra == "tests"
|
|
51
53
|
Requires-Dist: scikit-rf ; extra == "tests"
|
|
54
|
+
Requires-Dist: shapely ; extra == "tests"
|
|
52
55
|
Project-URL: Bugs, https://github.com/ansys/pyedb/issues
|
|
53
56
|
Project-URL: Discussions, https://github.com/ansys/pyedb/discussions
|
|
54
57
|
Project-URL: Documentation, https://edb.docs.pyansys.com
|
|
@@ -1,51 +1,54 @@
|
|
|
1
|
-
pyedb/__init__.py,sha256=
|
|
1
|
+
pyedb/__init__.py,sha256=QDZQJEGmN8ozVPpYOuJ8bPgkeAyMFHii3mheyJ_LaKQ,1525
|
|
2
2
|
pyedb/edb_logger.py,sha256=7KXPvAMCKzlzJ5zioiNO5A3zkqbpCHhWHB4aXKfgu5Y,14959
|
|
3
3
|
pyedb/exceptions.py,sha256=n94xluzUks6BA24vd_L6HkrvoP_H_l6__hQmqzdCyPo,111
|
|
4
4
|
pyedb/siwave.py,sha256=Mgg5ZGzOUOtNdlePHcnrgN3rletQ7jrqRi3WfxF58uU,17727
|
|
5
5
|
pyedb/workflow.py,sha256=Y0ya4FUHwlSmoLP45zjdYLsSpyKduHUSpT9GGK9MGd8,814
|
|
6
|
+
pyedb/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
+
pyedb/common/nets.py,sha256=daGdkzlv6kcyz_EnLLjTnXP3f9jOyK9LKe93NF-K6wo,20230
|
|
6
8
|
pyedb/component_libraries/ansys_components.py,sha256=O3ypt832IHY9zG2AD_yrRrbH2KH9P1yFaoi1EO6Zllw,4830
|
|
7
9
|
pyedb/configuration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
10
|
pyedb/configuration/cfg_boundaries.py,sha256=5_v6HD0VgkFCJHgx5zTIn_nxPv3KpcCuGz9P4Kk4ywM,6246
|
|
9
|
-
pyedb/configuration/cfg_common.py,sha256=
|
|
10
|
-
pyedb/configuration/cfg_components.py,sha256
|
|
11
|
-
pyedb/configuration/cfg_data.py,sha256=
|
|
11
|
+
pyedb/configuration/cfg_common.py,sha256=feXGIBSlTPAewSsmu0m1SgyfF9DuK4C7SNP_RNQGD2A,2549
|
|
12
|
+
pyedb/configuration/cfg_components.py,sha256=33XrTkyMvSgo1dFo15ChRXywwLnzprCxKG7yp9msVUA,12388
|
|
13
|
+
pyedb/configuration/cfg_data.py,sha256=qCCR-Oo5_le61qWWmjrK4gIt_HH9jVqu4K0GbekAJkU,3773
|
|
12
14
|
pyedb/configuration/cfg_general.py,sha256=DJAKTW8Sqojfqzc3jO3MU1-J8MrmVi37jUIkTD_Tw6o,2068
|
|
15
|
+
pyedb/configuration/cfg_modeler.py,sha256=tgeTs-if1d_vQvnGzD6qqMGnJlqqG302APHUu0b5jtE,5889
|
|
13
16
|
pyedb/configuration/cfg_nets.py,sha256=18NezeNh0ZOwk2ehz3zWJF_xYR7IYCqGlpDfDt7Ilho,2349
|
|
14
|
-
pyedb/configuration/cfg_operations.py,sha256=
|
|
17
|
+
pyedb/configuration/cfg_operations.py,sha256=CFLBdM2kQBsW6f7W0NHWbV56RDMHSnaNQl3BmqDWQWo,4707
|
|
15
18
|
pyedb/configuration/cfg_package_definition.py,sha256=f_RRT9R-3H5kHBlc4QSpjq9uQgYbaKQ78XXXrc_r3kg,5296
|
|
16
|
-
pyedb/configuration/cfg_padstacks.py,sha256=
|
|
19
|
+
pyedb/configuration/cfg_padstacks.py,sha256=sjVlUDO-Jyl9VheCx2TM9lNEt971a1G8DUAtb-INUWo,18292
|
|
17
20
|
pyedb/configuration/cfg_pin_groups.py,sha256=b0H6NaPKJ5zlcXL9W2Q8_HbiLB8-OxaqjsM4wlqP2ic,3768
|
|
18
|
-
pyedb/configuration/cfg_ports_sources.py,sha256=
|
|
19
|
-
pyedb/configuration/cfg_s_parameter_models.py,sha256=
|
|
21
|
+
pyedb/configuration/cfg_ports_sources.py,sha256=t2LvKswLF4iohCIjj-tAoveiVQ_8R4G-QIK1XuSt8xs,20791
|
|
22
|
+
pyedb/configuration/cfg_s_parameter_models.py,sha256=DgBprcEYR2r_3BY4f_CuwuhJw_QFEag3xaAlLTRfMuE,5356
|
|
20
23
|
pyedb/configuration/cfg_setup.py,sha256=QGKQHAEeo196TYtKMvIMb2-p8KC4U8fmHx0yn0SpgMo,10351
|
|
21
24
|
pyedb/configuration/cfg_spice_models.py,sha256=Q_5j2-V6cepSFcnijot8iypTqzanLp7HOz-agmnwKns,2570
|
|
22
25
|
pyedb/configuration/cfg_stackup.py,sha256=ZKUcTh4UAFLJgES2W-5J7uXkUdz_q0URg28lUZUyfdo,6433
|
|
23
|
-
pyedb/configuration/configuration.py,sha256=
|
|
26
|
+
pyedb/configuration/configuration.py,sha256=MnoO5H5VZSogQSZ3MUJqWiO3DB-_QUYOfM4qROTHcnY,15470
|
|
24
27
|
pyedb/dotnet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
25
|
-
pyedb/dotnet/clr_module.py,sha256=
|
|
26
|
-
pyedb/dotnet/edb.py,sha256=
|
|
28
|
+
pyedb/dotnet/clr_module.py,sha256=JnQQ1GFQcGVa5Fk7D8sLFOlohIQtETGu51TGL_aT8Tc,5827
|
|
29
|
+
pyedb/dotnet/edb.py,sha256=Ut1lpxs_YwagTRjcmrANr8xyIOVu-BzedW_YtU6kIcU,186395
|
|
27
30
|
pyedb/dotnet/application/Variables.py,sha256=awNhyiLASBYrNjWIyW8IJowgqt7FfFPKF9UElRWyjZg,77750
|
|
28
31
|
pyedb/dotnet/application/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
32
|
pyedb/dotnet/edb_core/__init__.py,sha256=nIRLJ8VZLcMAp12zmGsnZ5x2BEEl7q_Kj_KAOXxVjpQ,52
|
|
30
33
|
pyedb/dotnet/edb_core/components.py,sha256=r8Gr9mV4Cuky7lVKOg-JWhRR2bflGYESsnOGG2g4BwM,111146
|
|
31
34
|
pyedb/dotnet/edb_core/general.py,sha256=k2Bcr5VV-QUzEZlYorqYCX1ZchHBH7WqUvc8maMxId0,4716
|
|
32
|
-
pyedb/dotnet/edb_core/hfss.py,sha256=
|
|
35
|
+
pyedb/dotnet/edb_core/hfss.py,sha256=oQFC6PwRbjAwfR60RoklwpZ_2sDI4OheNNdwaqY23ok,68671
|
|
33
36
|
pyedb/dotnet/edb_core/layout_obj_instance.py,sha256=Pd8rfdO3b6HLFGwXBMw-tfE4LPIcW_9_X5KEdFaiito,1407
|
|
34
|
-
pyedb/dotnet/edb_core/layout_validation.py,sha256=
|
|
35
|
-
pyedb/dotnet/edb_core/materials.py,sha256=
|
|
36
|
-
pyedb/dotnet/edb_core/modeler.py,sha256=
|
|
37
|
+
pyedb/dotnet/edb_core/layout_validation.py,sha256=JBaLnEgDv2GrX8GD0D4_3zT8EWLSMmXu5F2AhW7oGuU,13592
|
|
38
|
+
pyedb/dotnet/edb_core/materials.py,sha256=s105DUTFkQoQRWgtRMp02DKcU2YcSrfLbJoi8hcTQII,42293
|
|
39
|
+
pyedb/dotnet/edb_core/modeler.py,sha256=rVJ-eh3eKOnCHENaBLZ8D7duH7tUtUqZJNLKGLFsZ_M,55519
|
|
37
40
|
pyedb/dotnet/edb_core/net_class.py,sha256=4U6Cc1Gn7ZJ_ub9uKmtrsoz5wD1XS42afci3Y3ewRp0,11354
|
|
38
|
-
pyedb/dotnet/edb_core/nets.py,sha256=
|
|
41
|
+
pyedb/dotnet/edb_core/nets.py,sha256=Wc84urZG6nM3fZYqMj2HzM6CgNz_B4s4O3WmMGr-5H0,25199
|
|
39
42
|
pyedb/dotnet/edb_core/padstack.py,sha256=19cRYqTHVjjvblYVoZgMetRBXDjtP5-URUv6eA0mvfY,63566
|
|
40
43
|
pyedb/dotnet/edb_core/siwave.py,sha256=4duoAsFCuPMNLxtMTEEVJCUaHKNkdbLDmtTXiD93VrM,64311
|
|
41
44
|
pyedb/dotnet/edb_core/stackup.py,sha256=b56leXg7X7dEVPP2DUD9n8LZIakWcjIsjiqqkIWsyZU,120035
|
|
42
45
|
pyedb/dotnet/edb_core/cell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
43
46
|
pyedb/dotnet/edb_core/cell/connectable.py,sha256=gc5jhWx4DX718T7koL6oZZzfS4EdQNTiFX76ZJ2c83E,2864
|
|
44
|
-
pyedb/dotnet/edb_core/cell/layout.py,sha256=
|
|
47
|
+
pyedb/dotnet/edb_core/cell/layout.py,sha256=Bh8WKMwCB0qn9ehP-_rShRTpN7KGgI72K5h_JdkOd6Y,12413
|
|
45
48
|
pyedb/dotnet/edb_core/cell/layout_obj.py,sha256=S42rdiI6gVqO77DV3ikc4YxTNufTuqW_X1G-2zkWArA,2765
|
|
46
49
|
pyedb/dotnet/edb_core/cell/voltage_regulator.py,sha256=-uAzuyERV6ca0bFRzdH4SllcpGY2D9JEdpS7RYaQt6c,5387
|
|
47
50
|
pyedb/dotnet/edb_core/cell/hierarchy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
48
|
-
pyedb/dotnet/edb_core/cell/hierarchy/component.py,sha256=
|
|
51
|
+
pyedb/dotnet/edb_core/cell/hierarchy/component.py,sha256=Iri2YVNntt02ojqtBAg-NosarqN7aHyr37kl5TKQzuM,34847
|
|
49
52
|
pyedb/dotnet/edb_core/cell/hierarchy/hierarchy_obj.py,sha256=OUNK6INKlbJkCbzy6jKZzrQs7fvCR1qiTjt7te0S7nQ,2160
|
|
50
53
|
pyedb/dotnet/edb_core/cell/hierarchy/model.py,sha256=LwXE4VUfptG5rJ9gmAmye0hECBv7bUGtby1ZzNFkeT0,3198
|
|
51
54
|
pyedb/dotnet/edb_core/cell/hierarchy/netlist_model.py,sha256=fF6tY-6s-lW9EuvJ5sw3RlIkjuoSjeZbrNk5wG-_hzM,1356
|
|
@@ -55,7 +58,7 @@ pyedb/dotnet/edb_core/cell/hierarchy/spice_model.py,sha256=SGiUcan2l0n8DGk3GtwCs
|
|
|
55
58
|
pyedb/dotnet/edb_core/cell/primitive/__init__.py,sha256=8jByHkoaowAYQTCww-zRrTQmN061fLz_OHjTLSrzQQY,58
|
|
56
59
|
pyedb/dotnet/edb_core/cell/primitive/bondwire.py,sha256=fqIMdv0bNvk591DG6De5c--w9Rpkl5AOeo_qgzoPE6M,7322
|
|
57
60
|
pyedb/dotnet/edb_core/cell/primitive/path.py,sha256=XVN7dOVpccoBP28M8l5iMzK5QSQdHqpKqC4jK76UTis,12543
|
|
58
|
-
pyedb/dotnet/edb_core/cell/primitive/primitive.py,sha256=
|
|
61
|
+
pyedb/dotnet/edb_core/cell/primitive/primitive.py,sha256=wZcHylKr_OVnXzVfNtce_WuCTreXEDxeLhinp2Xh7ZA,26709
|
|
59
62
|
pyedb/dotnet/edb_core/cell/terminal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
60
63
|
pyedb/dotnet/edb_core/cell/terminal/bundle_terminal.py,sha256=qM0wEXkZ-DpoJ6vlVa560Ce8IgOdp4vyIJPedvoa3O0,1977
|
|
61
64
|
pyedb/dotnet/edb_core/cell/terminal/edge_terminal.py,sha256=lafPRrvsDPYKcysvrkO-5tEZXF3h4IcTXdeJgTjleuI,2158
|
|
@@ -73,15 +76,15 @@ pyedb/dotnet/edb_core/dotnet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
|
|
|
73
76
|
pyedb/dotnet/edb_core/dotnet/database.py,sha256=9mfEg451IX3Y8PKnyhbVPApqtgmB9R4VTeWyfux8Q0A,36691
|
|
74
77
|
pyedb/dotnet/edb_core/dotnet/primitive.py,sha256=2Mhh-pwnLzZUGLVRSCiBMtcxfvmrU40cASbpfXe1Ecs,49944
|
|
75
78
|
pyedb/dotnet/edb_core/edb_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
76
|
-
pyedb/dotnet/edb_core/edb_data/control_file.py,sha256=
|
|
79
|
+
pyedb/dotnet/edb_core/edb_data/control_file.py,sha256=qIXBJG0V_dvpvSqIycQcNOb8UrjJiGmlfOE6rwU0Ifo,49679
|
|
77
80
|
pyedb/dotnet/edb_core/edb_data/design_options.py,sha256=RO9ip-T5Bfxpsl97_QEk0qDZsza3tLzIX2t25XLutys,2057
|
|
78
81
|
pyedb/dotnet/edb_core/edb_data/edbvalue.py,sha256=Vj_11HXsQUNavizKp5FicORm6cjhXRh9uvxhv_D_RJc,1977
|
|
79
82
|
pyedb/dotnet/edb_core/edb_data/hfss_extent_info.py,sha256=wIKH4it1uYkEae4OimS3YE6QoSf8rAAIhxdTwtR9cqU,13040
|
|
80
83
|
pyedb/dotnet/edb_core/edb_data/layer_data.py,sha256=Yg3y80d4dn47vtFaNUr2Mt8LRIKvu9TMGxQiu9CIc_s,29586
|
|
81
|
-
pyedb/dotnet/edb_core/edb_data/nets_data.py,sha256=
|
|
82
|
-
pyedb/dotnet/edb_core/edb_data/padstacks_data.py,sha256=
|
|
84
|
+
pyedb/dotnet/edb_core/edb_data/nets_data.py,sha256=fXJ1U18ZLm9xI7MJD3UcTsI8XNZSq5kf20KF2IMib4o,10137
|
|
85
|
+
pyedb/dotnet/edb_core/edb_data/padstacks_data.py,sha256=1j_GG552iwvzvx6TKI3Yx6C3RXOWiSNehdlbD8AuzaI,78474
|
|
83
86
|
pyedb/dotnet/edb_core/edb_data/ports.py,sha256=wr2RQi8VExuNIVmnp7c4VpTIhODgthmJmHr01zO4ueo,8873
|
|
84
|
-
pyedb/dotnet/edb_core/edb_data/primitives_data.py,sha256=
|
|
87
|
+
pyedb/dotnet/edb_core/edb_data/primitives_data.py,sha256=kIXkd5SXeN881eJqdJ2KxEZebpimB4qFEed1g6w-Raw,16826
|
|
85
88
|
pyedb/dotnet/edb_core/edb_data/raptor_x_simulation_setup_data.py,sha256=P37-OIsc8TuTC_s3CXRmvZcJqxAftHA7SATfEyoAnMM,20953
|
|
86
89
|
pyedb/dotnet/edb_core/edb_data/simulation_configuration.py,sha256=Z_Iuh7qgj9s0PwmlOOdBOC47imBTgWPAWt8KxGNZmZQ,100432
|
|
87
90
|
pyedb/dotnet/edb_core/edb_data/sources.py,sha256=jzC6p-fiuPEvZn3b9z1-X5UexW5jd48jZRamXillnXI,15700
|
|
@@ -111,7 +114,7 @@ pyedb/generic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
111
114
|
pyedb/generic/constants.py,sha256=prWLZH0-SeBIVK6LHZ4SGZFQCofuym2TuQYfdqwhuSQ,28956
|
|
112
115
|
pyedb/generic/data_handlers.py,sha256=rfqNe2tPCJRqhXZBCyWxRFu5SjQ92Cdzq4l0TDC4Pvw,6905
|
|
113
116
|
pyedb/generic/design_types.py,sha256=qHyIaz-Vd3ra4CP9xER76-nGRonYmSAiI3Dr8YPUeH8,4354
|
|
114
|
-
pyedb/generic/filesystem.py,sha256=
|
|
117
|
+
pyedb/generic/filesystem.py,sha256=EqsLGwdhCgY3asomjoWZBBYWQiGhVOBlSzQlM6FCZhw,3674
|
|
115
118
|
pyedb/generic/general_methods.py,sha256=HfDQEiQkNng4apFUbStsEfvKDbPkZ0Oz9Wjlqqz5LSI,42798
|
|
116
119
|
pyedb/generic/plot.py,sha256=0x2-v_xNSoy07rILKGQStQMTUIYrvJEvFO1n9KuSfAc,4717
|
|
117
120
|
pyedb/generic/process.py,sha256=DiOanqNq5APYryBYo3Wt4mQ54cBR9-ULrrIOqGE4S8c,11107
|
|
@@ -185,7 +188,7 @@ pyedb/misc/siw_feature_config/xtalk_scan/scan_config.py,sha256=YmYI6WTQulL5Uf8Wx
|
|
|
185
188
|
pyedb/misc/siw_feature_config/xtalk_scan/td_xtalk_config.py,sha256=KHa-UqcXuabiVfT2CV-UvWl5Q2qGYHF2Ye9azcAlnXc,3966
|
|
186
189
|
pyedb/modeler/geometry_operators.py,sha256=g_Sy7a6R23sP6RtboJn1rl8uTuo8oeLmMF21rNkzwjk,74198
|
|
187
190
|
pyedb/siwave_core/icepak.py,sha256=WnZ-t8mik7LDY06V8hZFV-TxRZJQWK7bu_8Ichx-oBs,5206
|
|
188
|
-
pyedb-0.
|
|
189
|
-
pyedb-0.
|
|
190
|
-
pyedb-0.
|
|
191
|
-
pyedb-0.
|
|
191
|
+
pyedb-0.34.0.dist-info/LICENSE,sha256=qQWivZ12ETN5l3QxvTARY-QI5eoRRlyHdwLlAj0Bg5I,1089
|
|
192
|
+
pyedb-0.34.0.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
|
|
193
|
+
pyedb-0.34.0.dist-info/METADATA,sha256=6eG251kM6ji9x7LJqi29QQC14ROMC5fqebanw9STWcc,8512
|
|
194
|
+
pyedb-0.34.0.dist-info/RECORD,,
|
|
File without changes
|