pyedb 0.12.0__py3-none-any.whl → 0.12.1__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 CHANGED
@@ -44,7 +44,7 @@ deprecation_warning()
44
44
  #
45
45
 
46
46
  pyedb_path = os.path.dirname(__file__)
47
- __version__ = "0.12.0"
47
+ __version__ = "0.12.1"
48
48
  version = __version__
49
49
 
50
50
  #
@@ -39,30 +39,42 @@ class CfgData(object):
39
39
  self.pedb = pedb
40
40
  self.edb_comps = self.pedb.components.components
41
41
  self.general = CfgGeneral(self, kwargs.get("general", None))
42
+
42
43
  self.boundaries = {}
43
44
  if kwargs.get("boundaries", None):
44
45
  self.boundaries = CfgBoundaries(self, kwargs.get("boundaries", None))
45
- self.nets = CfgNets(self)
46
+
47
+ self.nets = None
46
48
  if kwargs.get("nets"):
47
49
  self.nets = CfgNets(
48
50
  self, kwargs.get("nets", {}).get("signal_nets", []), kwargs.get("nets", {}).get("power_ground_nets", [])
49
51
  )
52
+
50
53
  self.components = [CfgComponent(self, **component) for component in kwargs.get("components", [])]
54
+
51
55
  self.padstacks = CfgPadstacks(self, kwargs.get("padstacks", None))
56
+
52
57
  self.pin_groups = [CfgPinGroup(self, pin_group) for pin_group in kwargs.get("pin_groups", [])]
58
+
53
59
  self.ports = [CfgPort(self, **port) for port in kwargs.get("ports", [])]
60
+
54
61
  self.sources = [CfgSources(self, **source) for source in kwargs.get("sources", [])]
55
- self.setups = [CfgSetup(self)]
62
+
63
+ self.setups = []
56
64
  if kwargs.get("setups", None):
57
65
  self.setups = [CfgSetup(self, setup) for setup in kwargs.get("setups", [])]
66
+
58
67
  self.stackup = None
68
+
59
69
  self.s_parameters = [
60
70
  CfgSParameterModel(self, self.general.s_parameter_library, sparam_model)
61
71
  for sparam_model in kwargs.get("s_parameters", [])
62
72
  ]
73
+
63
74
  self.spice_models = [
64
75
  CfgSpiceModel(self, self.general.spice_model_library, spice_model)
65
76
  for spice_model in kwargs.get("spice_models", [])
66
77
  ]
78
+
67
79
  self.package_definition = None
68
80
  self.operations = None
@@ -36,7 +36,7 @@ class CfgPinGroup:
36
36
  """Apply pin group on layout."""
37
37
  if self.pins:
38
38
  if not self._pedb.siwave.create_pin_group(self.reference_designator, list(self.pins), self.name):
39
- self._pedb.loogger.error(f"Failed to create pin group on pins {self.pins}")
39
+ self._pedb.logger.error(f"Failed to create pin group on pins {self.pins}")
40
40
  return False
41
41
  self._pedb.logger.info(f"Pin group {self.name} created.")
42
42
  return True
@@ -27,7 +27,6 @@ import toml
27
27
 
28
28
  from pyedb.configuration.cfg_data import CfgData
29
29
  from pyedb.dotnet.edb_core.definition.package_def import PackageDef
30
- from pyedb.dotnet.edb_core.stackup import LayerCollection
31
30
  from pyedb.generic.general_methods import pyedb_function_handler
32
31
 
33
32
 
@@ -182,56 +181,44 @@ class Configuration:
182
181
  layers = data.get("layers")
183
182
 
184
183
  if layers:
185
- lc = self._pedb.stackup
186
184
  input_signal_layers = [i for i in layers if i["type"].lower() == "signal"]
187
- if not len(input_signal_layers) == len(lc.signal_layers):
185
+ if not len(input_signal_layers) == len(self._pedb.stackup.signal_layers):
188
186
  self._pedb.logger.error("Input signal layer count do not match.")
189
187
  return False
190
188
 
191
- layer_clones = []
192
- doc_layer_clones = []
193
- for name, obj in lc.layers.items():
194
- if obj.is_stackup_layer:
195
- if obj.type == "signal": # keep signal layers
196
- layer_clones.append(obj)
197
- else:
198
- doc_layer_clones.append(obj)
199
-
200
- lc_new = LayerCollection(self._pedb)
201
- lc_new.auto_refresh = False
202
- signal_layer_ids = {}
203
- top_layer_clone = None
204
-
205
- # add all signal layers
189
+ removal_list = []
190
+ lc_signal_layers = []
191
+ for name, obj in self._pedb.stackup.all_layers.items():
192
+ if obj.type == "dielectric":
193
+ removal_list.append(name)
194
+ elif obj.type == "signal":
195
+ lc_signal_layers.append(obj.id)
196
+ for l in removal_list:
197
+ self._pedb.stackup.remove_layer(l)
198
+
199
+ # update all signal layers
200
+ id_name = {i[0]: i[1] for i in self._pedb.stackup.layers_by_id}
201
+ signal_idx = 0
206
202
  for l in layers:
207
203
  if l["type"] == "signal":
208
- clone = layer_clones.pop(0)
209
- clone.update(**l)
210
- lc_new.add_layer_bottom(name=clone.name, layer_clone=clone)
211
- signal_layer_ids[clone.name] = clone.id
212
-
213
- # add all document layers at bottom
214
- for l in doc_layer_clones:
215
- doc_layer = lc_new.add_document_layer(name=l.name, layer_clone=l)
216
- first_doc_layer_name = doc_layer.name
204
+ layer_id = lc_signal_layers[signal_idx]
205
+ layer_name = id_name[layer_id]
206
+ self._pedb.stackup.layers[layer_name].update(**l)
207
+ signal_idx = signal_idx + 1
217
208
 
218
209
  # add all dielectric layers. Dielectric layers must be added last. Otherwise,
219
210
  # dielectric layer will occupy signal and document layer id.
220
211
  prev_layer_clone = None
221
212
  l = layers.pop(0)
222
213
  if l["type"] == "signal":
223
- prev_layer_clone = lc_new.layers[l["name"]]
214
+ prev_layer_clone = self._pedb.stackup.layers[l["name"]]
224
215
  else:
225
- prev_layer_clone = lc_new.add_layer_top(**l)
216
+ prev_layer_clone = self._pedb.stackup.add_layer_top(**l)
226
217
  for idx, l in enumerate(layers):
227
218
  if l["type"] == "dielectric":
228
- prev_layer_clone = lc_new.add_layer_below(base_layer_name=prev_layer_clone.name, **l)
229
- else:
230
- prev_layer_clone = lc_new.layers[l["name"]]
231
-
232
- lc._edb_object = lc_new._edb_object
233
- lc_new.auto_refresh = True
234
- lc.update_layout()
219
+ prev_layer_clone = self._pedb.stackup.add_layer_below(base_layer_name=prev_layer_clone.name, **l)
220
+ elif l["type"] == "signal":
221
+ prev_layer_clone = self._pedb.stackup.layers[l["name"]]
235
222
 
236
223
  @pyedb_function_handler
237
224
  def _load_operations(self):
pyedb/dotnet/edb.py CHANGED
@@ -846,9 +846,7 @@ class Edb(Database):
846
846
  >>> edbapp.stackup.layers["TOP"].thickness == 4e-05
847
847
  >>> edbapp.stackup.add_layer("Diel", "GND", layer_type="dielectric", thickness="0.1mm", material="FR4_epoxy")
848
848
  """
849
- if not self._stackup2 and self.active_db:
850
- self._stackup2 = Stackup(self, self.layout.layer_collection)
851
- return self._stackup2
849
+ return Stackup(self, self.layout.layer_collection)
852
850
 
853
851
  @property
854
852
  def materials(self):
@@ -257,8 +257,8 @@ class StackupLayerEdbClass(LayerEdbClass):
257
257
  self._lower_elevation = 0.0
258
258
 
259
259
  def _create(self, layer_type):
260
- layer_type = self._layer_name_mapping[layer_type]
261
- layer_type = self._layer_type_mapping[layer_type]
260
+ layer_type_edb_name = self._layer_name_mapping[layer_type]
261
+ layer_type = self._layer_type_mapping[layer_type_edb_name]
262
262
  self._edb_object = self._pedb.edb_api.cell._cell.StackupLayer(
263
263
  self._name,
264
264
  layer_type,
@@ -69,8 +69,6 @@ logger = logging.getLogger(__name__)
69
69
 
70
70
 
71
71
  class LayerCollection(object):
72
- auto_refresh = True
73
-
74
72
  def __init__(self, pedb, edb_object=None):
75
73
  self._pedb = pedb
76
74
 
@@ -91,17 +89,21 @@ class LayerCollection(object):
91
89
  "multizone": self._pedb.edb_api.cell._cell.LayerCollectionMode.MultiZone,
92
90
  }
93
91
 
94
- def update_layout(self, stackup=None):
92
+ def update_layout(self):
95
93
  """Set layer collection into edb.
96
94
 
97
95
  Parameters
98
96
  ----------
99
97
  stackup
100
98
  """
101
- if stackup:
102
- self._edb_object = stackup._edb_object
103
99
  self._pedb.layout.layer_collection = self._edb_object
104
100
 
101
+ @pyedb_function_handler()
102
+ def refresh_layer_collection(self):
103
+ """Refresh layer collection from Edb. This method is run on demand after all edit operations on stackup."""
104
+ self._edb_object = self._pedb.edb_api.cell._cell.LayerCollection(self._pedb.layout.layer_collection)
105
+ self._lc = self._edb_object
106
+
105
107
  @pyedb_function_handler
106
108
  def _add_layer(self, add_method, base_layer_name="", **kwargs):
107
109
  """Add a layer to edb.
@@ -115,7 +117,13 @@ class LayerCollection(object):
115
117
  if layer_clone:
116
118
  obj = layer_clone
117
119
  else:
118
- obj = StackupLayerEdbClass(self._pedb, edb_object=None, **kwargs)
120
+ layer_type = kwargs.get("layer_type", None)
121
+ if not layer_type:
122
+ layer_type = kwargs["type"]
123
+ if layer_type in ["signal", "dielectric"]:
124
+ obj = StackupLayerEdbClass(self._pedb, edb_object=None, **kwargs)
125
+ else:
126
+ obj = LayerEdbClass(self._pedb, edb_object=None, **kwargs)
119
127
  method_top_bottom = None
120
128
  method_above_below = None
121
129
  if add_method == "add_layer_top":
@@ -134,8 +142,7 @@ class LayerCollection(object):
134
142
  obj = obj if method_top_bottom(obj._edb_object) else False
135
143
  elif method_above_below:
136
144
  obj = obj if method_above_below(obj._edb_object, base_layer_name) else False
137
- if self.auto_refresh:
138
- self.update_layout()
145
+ self.update_layout()
139
146
  return obj
140
147
 
141
148
  @pyedb_function_handler
@@ -268,8 +275,7 @@ class LayerCollection(object):
268
275
  lc.AddLayerBottom(i._edb_object)
269
276
 
270
277
  self._edb_object = lc
271
- if self.auto_refresh:
272
- self.update_layout()
278
+ self.update_layout()
273
279
 
274
280
  if not obj:
275
281
  logger.info("Layer clone was not found in stackup or non stackup layers.")
@@ -278,33 +284,32 @@ class LayerCollection(object):
278
284
  @property
279
285
  def stackup_layers(self):
280
286
  """Retrieve the dictionary of signal and dielectric layers."""
281
- temp = list(self._edb_object.Layers((self._pedb.edb_api.cell.layer_type_set.StackupLayerSet)))
282
- layers = OrderedDict()
283
- for i in temp:
284
- name = i.GetName()
285
- layers[name] = StackupLayerEdbClass(self._pedb, i.Clone(), name=name)
286
- return layers
287
+ warnings.warn("Use new property :func:`layers` instead.", DeprecationWarning)
288
+ return self.layers
287
289
 
288
290
  @property
289
291
  def non_stackup_layers(self):
290
292
  """Retrieve the dictionary of signal layers."""
291
- temp = list(self._edb_object.Layers(self._layer_type_set_mapping["non_stackup_layer_set"]))
292
- layers = OrderedDict()
293
- for i in temp:
294
- name = i.GetName()
295
- layers[name] = LayerEdbClass(self._pedb, i, name=name)
296
- return layers
293
+ return {name: obj for name, obj in self.all_layers.items() if not obj.is_stackup_layer}
297
294
 
298
295
  @property
299
- def layers_by_id(self):
300
- """Retrieve the list of layers with their ids."""
301
- layer_list = list(self._layer_collection.Layers(self._pedb.edb_api.cell.layer_type_set.AllLayerSet))
302
- temp = []
296
+ def all_layers(self):
297
+ self.refresh_layer_collection()
298
+ layer_list = list(self._edb_object.Layers(self._pedb.edb_api.cell.layer_type_set.AllLayerSet))
299
+ temp = dict()
303
300
  for i in layer_list:
304
- obj = StackupLayerEdbClass(self._pedb, i.Clone(), name=i.GetName)
305
- temp.append([obj.id, obj.name])
301
+ if i.IsStackupLayer():
302
+ obj = StackupLayerEdbClass(self._pedb, i.Clone(), name=i.GetName())
303
+ else:
304
+ obj = LayerEdbClass(self._pedb, i.Clone(), name=i.GetName())
305
+ temp[obj.name] = obj
306
306
  return temp
307
307
 
308
+ @property
309
+ def layers_by_id(self):
310
+ """Retrieve the list of layers with their ids."""
311
+ return [[obj.id, name] for name, obj in self.all_layers.items()]
312
+
308
313
  @property
309
314
  def layers(self):
310
315
  """Retrieve the dictionary of layers.
@@ -313,22 +318,14 @@ class LayerCollection(object):
313
318
  -------
314
319
  Dict[str, :class:`pyedb.dotnet.edb_core.edb_data.layer_data.LayerEdbClass`]
315
320
  """
316
- _lays = OrderedDict()
317
- layer_list = list(self._edb_object.Layers(self._pedb.edb_api.cell.layer_type_set.AllLayerSet))
318
- for l in layer_list:
319
- name = l.GetName()
320
- if not l.IsStackupLayer():
321
- _lays[name] = LayerEdbClass(self._pedb, l, name=name)
322
- else:
323
- _lays[name] = StackupLayerEdbClass(self._pedb, l, name=name)
324
- return _lays
321
+ return {name: obj for name, obj in self.all_layers.items() if obj.is_stackup_layer}
325
322
 
326
323
 
327
324
  class Stackup(LayerCollection):
328
325
  """Manages EDB methods for stackup accessible from `Edb.stackup` property."""
329
326
 
330
327
  def __getitem__(self, item):
331
- return self.layers[item]
328
+ return self.all_layers[item]
332
329
 
333
330
  def __init__(self, pedb, edb_object=None):
334
331
  super().__init__(pedb, edb_object)
@@ -576,12 +573,6 @@ class Stackup(LayerCollection):
576
573
  )
577
574
  return True
578
575
 
579
- @pyedb_function_handler()
580
- def refresh_layer_collection(self):
581
- """Refresh layer collection from Edb. This method is run on demand after all edit operations on stackup."""
582
- self._lc = self._pedb.edb_api.cell._cell.LayerCollection(self._pedb.layout.layer_collection)
583
- self._edb_object = self._lc
584
-
585
576
  @property
586
577
  def _layer_collection(self):
587
578
  """Copy of EDB layer collection.
@@ -591,8 +582,7 @@ class Stackup(LayerCollection):
591
582
  :class:`Ansys.Ansoft.Edb.Cell.LayerCollection`
592
583
  Collection of layers.
593
584
  """
594
- if not self._lc:
595
- self.refresh_layer_collection()
585
+ self.refresh_layer_collection()
596
586
  return self._lc
597
587
 
598
588
  @property
@@ -620,7 +610,7 @@ class Stackup(LayerCollection):
620
610
  self._layer_collection.SetMode(mode.Overlapping)
621
611
  elif value == 2 or value == mode.MultiZone or value == "MultiZone":
622
612
  self._layer_collection.SetMode(mode.MultiZone)
623
- self._pedb.layout.layer_collection = self._layer_collection
613
+ self.update_layout()
624
614
 
625
615
  @property
626
616
  def stackup_mode(self):
@@ -744,9 +734,8 @@ class Stackup(LayerCollection):
744
734
  _lc.AddStackupLayerAtElevation(layer_clone)
745
735
  elif operation == "non_stackup":
746
736
  _lc.AddLayerBottom(layer_clone)
747
- if self.auto_refresh:
748
- self._pedb.layout.layer_collection = _lc
749
- self.refresh_layer_collection()
737
+ self._pedb.layout.layer_collection = _lc
738
+ self.refresh_layer_collection()
750
739
  return True
751
740
 
752
741
  @pyedb_function_handler()
@@ -814,17 +803,7 @@ class Stackup(LayerCollection):
814
803
  bool
815
804
  "True" if successful, ``False`` if failed.
816
805
  """
817
- outlineLayer = self._pedb.edb_api.cell.layer.FindByName(self._pedb.layout.layer_collection, outline_name)
818
- if outlineLayer.IsNull():
819
- return self.add_layer(
820
- outline_name,
821
- layer_type="outline",
822
- material="",
823
- fillMaterial="",
824
- thickness="",
825
- )
826
- else:
827
- return False
806
+ return self.add_document_layer(name="Outline", layer_type="outline")
828
807
 
829
808
  # TODO: Update optional argument material into material_name and fillMaterial into fill_material_name
830
809
  @pyedb_function_handler()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyedb
3
- Version: 0.12.0
3
+ Version: 0.12.1
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>
@@ -1,23 +1,23 @@
1
- pyedb/__init__.py,sha256=NdSqRuOcb6BkvaUJJ65vhYSlT5l50M9SK2aD7jz-veA,1521
1
+ pyedb/__init__.py,sha256=6XNbzc6ACi5_YyN4AHoYcryfduYa2LhbWMGddPbk0aQ,1521
2
2
  pyedb/edb_logger.py,sha256=yNkXnoL2me7ubLT6O6r6ElVnkZ1g8fmfFYC_2XJZ1Sw,14950
3
3
  pyedb/exceptions.py,sha256=n94xluzUks6BA24vd_L6HkrvoP_H_l6__hQmqzdCyPo,111
4
4
  pyedb/siwave.py,sha256=c2stPkGPdM9c0wJ19SJq_uiYTdW3sp-uO8MVA_iDw30,12548
5
5
  pyedb/configuration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  pyedb/configuration/cfg_boundaries.py,sha256=iThJw52omnGikp20uNVgW4w0VcrzF68dXUaMb2MfOt4,6646
7
7
  pyedb/configuration/cfg_components.py,sha256=cvQfMjh6HBTVzVuDI7A8zkEhtgraG25dJqHRH-FbkTA,8789
8
- pyedb/configuration/cfg_data.py,sha256=ZThr2rpCj4axwrBr-aQWtiTztEhRAZb1pX-S3_92aJQ,3483
8
+ pyedb/configuration/cfg_data.py,sha256=uSgyJaKMzw8f_-uWc5bp0MnXnoWRZHxSipIkA_4pSQY,3472
9
9
  pyedb/configuration/cfg_general.py,sha256=dB5Tpird4uiyrseOe8-QlWKsat15TjMLar5I8VZME3c,1625
10
10
  pyedb/configuration/cfg_nets.py,sha256=mJvN_ON4Qw5psNV3agXCQAhVJbRnBpRZu1Ti3b7QnMw,1879
11
11
  pyedb/configuration/cfg_padstacks.py,sha256=5ta0xkdSaf4qk5lXjM-U4GB2vNS31nhEGsZwwRlhPUI,5568
12
- pyedb/configuration/cfg_pin_groups.py,sha256=BAv-u1e8aPXSTBwUBzDkzRiXB2mfCqb60I5tTrwgI7Y,2877
12
+ pyedb/configuration/cfg_pin_groups.py,sha256=bW_RqTYNFE7i-C74pWY2pUIWoSKMQY-TWW17FIftfQk,2876
13
13
  pyedb/configuration/cfg_ports_sources.py,sha256=kicbrgw1YLB2m7xJhrjo9LcfcbwTncGguuzEjZ2pUcQ,7787
14
14
  pyedb/configuration/cfg_s_parameter_models.py,sha256=HPo4sgF5tVefUwgzlP8pDBVSZ1x_pY2EiOtA0-QXjc8,2854
15
15
  pyedb/configuration/cfg_setup.py,sha256=zhq285s5P4s90Dm5s550ldwyIVO8aXiPjAwy87ipRXU,8791
16
16
  pyedb/configuration/cfg_spice_models.py,sha256=5gr28-4u4uj4qY8vgYFAI_PgzOQp-wPgTMMc_WcAN_w,2434
17
- pyedb/configuration/configuration.py,sha256=ykDlI3v8w8x-qWuV8PrwIAHVe9jmBwCb8OeJLfBF4lk,10965
17
+ pyedb/configuration/configuration.py,sha256=hPyUzdOJlMGPaI-Ie3Q1jJpmzpzrAy6XgWjSv8LQ8Q0,10628
18
18
  pyedb/dotnet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
19
  pyedb/dotnet/clr_module.py,sha256=Mo13Of3DVSA5HR-5xZEXOiHApIKy52CUxtJ2gPkEu1A,3406
20
- pyedb/dotnet/edb.py,sha256=GmGixrH9_i98d_NJEWUMpd5BeGGbjyqTL1zve0Mlqfw,172892
20
+ pyedb/dotnet/edb.py,sha256=jSt794srQBzaxt3-iZqcv4ziOgNThWn46k3-V3svJqc,172798
21
21
  pyedb/dotnet/application/Variables.py,sha256=nov1kIyJO25iz8pvbU3MK1meMpRLwtISmzYqJhc7Ouo,79042
22
22
  pyedb/dotnet/application/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
23
  pyedb/dotnet/edb_core/__init__.py,sha256=nIRLJ8VZLcMAp12zmGsnZ5x2BEEl7q_Kj_KAOXxVjpQ,52
@@ -32,7 +32,7 @@ pyedb/dotnet/edb_core/nets.py,sha256=ZQ5sk7cgTQJTbHd7JQa7MmBBV_crsWGtcLhKpSbfYMw
32
32
  pyedb/dotnet/edb_core/obj_base.py,sha256=lufR0sZj0QfZ2wlNvLL6aM1KVqCNY2A7taPPdWcK20w,3312
33
33
  pyedb/dotnet/edb_core/padstack.py,sha256=PqXkSfyLRtdehm72sYiVMBUkNlDkivJ-eRoQWCzwNgw,57439
34
34
  pyedb/dotnet/edb_core/siwave.py,sha256=4v68zlCO-Czv8A3qtckfQ94jRFbMxM4kuoEDVRo_cmM,62495
35
- pyedb/dotnet/edb_core/stackup.py,sha256=rg2LnxUyfd9Nnrj9uAd-0dkr65TQk7iMe0lS6cglaFc,122900
35
+ pyedb/dotnet/edb_core/stackup.py,sha256=Zko2gaotcJnILv_4SlZYzFc-NGblmTFBmEua7BSLcHU,122186
36
36
  pyedb/dotnet/edb_core/cell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
37
  pyedb/dotnet/edb_core/cell/hierarchy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
38
  pyedb/dotnet/edb_core/cell/hierarchy/model.py,sha256=cJzNJLiuuoesfCL8-jWo8LbgGbfXrTYNQqmeeE38ieM,3309
@@ -55,7 +55,7 @@ pyedb/dotnet/edb_core/edb_data/edbvalue.py,sha256=Vj_11HXsQUNavizKp5FicORm6cjhXR
55
55
  pyedb/dotnet/edb_core/edb_data/hfss_extent_info.py,sha256=5koQSKdYC6Deh4haLUDAxnHlRa-j5S6g4eyAfiGgZP8,13190
56
56
  pyedb/dotnet/edb_core/edb_data/hfss_pi_simulation_setup_data.py,sha256=v3z3h_27v3jRmDXqUjBS8P6UZMi-zuZQrZiYbE-RDw4,15657
57
57
  pyedb/dotnet/edb_core/edb_data/hfss_simulation_setup_data.py,sha256=naka5Bm9Ditb6Cj_F1KMrxwGk8Cn2fPtnXlyGb9IY9E,49039
58
- pyedb/dotnet/edb_core/edb_data/layer_data.py,sha256=HVPmE_Rny29J1c8qlJ3TSNZaMOTSxTgE9_vIiQJG0cE,25900
58
+ pyedb/dotnet/edb_core/edb_data/layer_data.py,sha256=N3OIxdx1oeX3Lg1nmM-UcJ_8NQdaQD-_XgUEVlGLzOI,25918
59
59
  pyedb/dotnet/edb_core/edb_data/nets_data.py,sha256=iBegT3fa5DwvjD0Wfd-wlJztFrb33I5v6nzSUhNS6-I,10099
60
60
  pyedb/dotnet/edb_core/edb_data/padstacks_data.py,sha256=IiF_wS9ZnyW-8W3wbcvinPAaL0LVuPGU74tHFZgZ1ZQ,79729
61
61
  pyedb/dotnet/edb_core/edb_data/ports.py,sha256=FYxB2rDUtN_OsYAbodXbc5mA_d0BUebmin_B5kkUw3U,9223
@@ -148,7 +148,7 @@ pyedb/misc/siw_feature_config/emc/tag_library.py,sha256=yUK4w3hequU017E2DbkA4KE2
148
148
  pyedb/misc/siw_feature_config/emc/xml_generic.py,sha256=55X-V0OxWq-v7FTiDVjaZif8V_2xxsvJlJ8bs9Bf61I,2521
149
149
  pyedb/modeler/geometry_operators.py,sha256=LDqEaeerw9H8Yva-SJhX3Afdni08OciO9t5G0c_tdqs,66820
150
150
  pyedb/siwave_core/icepak.py,sha256=WnZ-t8mik7LDY06V8hZFV-TxRZJQWK7bu_8Ichx-oBs,5206
151
- pyedb-0.12.0.dist-info/LICENSE,sha256=qQWivZ12ETN5l3QxvTARY-QI5eoRRlyHdwLlAj0Bg5I,1089
152
- pyedb-0.12.0.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
153
- pyedb-0.12.0.dist-info/METADATA,sha256=nkaA2TVEuG-IKFuseaCrohmgXT6V21jmp3ZsaCao8RE,8354
154
- pyedb-0.12.0.dist-info/RECORD,,
151
+ pyedb-0.12.1.dist-info/LICENSE,sha256=qQWivZ12ETN5l3QxvTARY-QI5eoRRlyHdwLlAj0Bg5I,1089
152
+ pyedb-0.12.1.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
153
+ pyedb-0.12.1.dist-info/METADATA,sha256=sofDicuqDqxk_dG81zNz64hW00SYd41gY6FRyviOzpY,8354
154
+ pyedb-0.12.1.dist-info/RECORD,,
File without changes