pyedb 0.36.0__py3-none-any.whl → 0.37.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 CHANGED
@@ -44,7 +44,7 @@ deprecation_warning()
44
44
  #
45
45
 
46
46
  pyedb_path = os.path.dirname(__file__)
47
- __version__ = "0.36.0"
47
+ __version__ = "0.37.0"
48
48
  version = __version__
49
49
 
50
50
  #
@@ -33,6 +33,9 @@ class CfgTerminalInfo(CfgBase):
33
33
  self._pedb = pedb
34
34
  self.type = list(kwargs.keys())[0]
35
35
  self.value = kwargs[self.type]
36
+ self.contact_radius = kwargs.get("contact_radius", None)
37
+ self.num_of_contact = kwargs.get("num_of_contact", 1)
38
+ self.inline = kwargs.get("inline", False)
36
39
 
37
40
  def export_properties(self):
38
41
  return {self.type: self.value}
@@ -46,7 +49,6 @@ class CfgCoordianteTerminalInfo(CfgTerminalInfo):
46
49
  self.point_x = self.value["point"][0]
47
50
  self.point_y = self.value["point"][1]
48
51
  self.net = self.value["net"]
49
- self.contact_radius = self.value.get("contact_radius", None)
50
52
 
51
53
  def export_properties(self):
52
54
  return {"coordinates": {"layer": self.layer, "point": [self.point_x, self.point_y], "net": self.net}}
@@ -245,8 +247,6 @@ class CfgCircuitElement(CfgBase):
245
247
  point = [self.positive_terminal_info.point_x, self.positive_terminal_info.point_y]
246
248
  net_name = self.positive_terminal_info.net
247
249
  pos_coor_terminal[self.name] = self._pedb.get_point_terminal(self.name, net_name, point, layer)
248
- if self.positive_terminal_info.contact_radius:
249
- pos_coor_terminal[self.name].contact_radius = self.positive_terminal_info.contact_radius
250
250
 
251
251
  elif pos_type == "pin_group":
252
252
  if self.distributed:
@@ -406,20 +406,24 @@ class CfgSource(CfgCircuitElement):
406
406
  if self.equipotential:
407
407
  terms = [terminal, terminal.ref_terminal] if terminal.ref_terminal else [terminal]
408
408
  for t in terms:
409
+ if not t.is_reference_terminal:
410
+ radius = self.positive_terminal_info.contact_radius
411
+ num_of_contact = self.positive_terminal_info.num_of_contact
412
+ inline = self.positive_terminal_info.inline
413
+ else:
414
+ radius = self.negative_terminal_info.contact_radius
415
+ num_of_contact = self.negative_terminal_info.num_of_contact
416
+ inline = self.negative_terminal_info.inline
417
+
409
418
  pads = []
410
419
  if t.terminal_type == "PadstackInstanceTerminal":
411
420
  pads.append(t.reference_object)
412
- t._edb_object.dcir_equipotential_region = True
413
421
  elif t.terminal_type == "PinGroupTerminal":
414
422
  name = t._edb_object.GetPinGroup().GetName()
415
423
  pg = self._pedb.siwave.pin_groups[name]
416
424
  pads.extend([i for _, i in pg.pins.items()])
417
- elif t.terminal_type == "PointTerminal":
425
+ elif t.terminal_type == "PointTerminal" and radius:
418
426
  temp = [i for i in self._pedb.layout.terminals if i.name == t.name][0]
419
- if not temp.is_reference_terminal:
420
- radius = self.positive_terminal_info.contact_radius
421
- else:
422
- radius = self.negative_terminal_info.contact_radius
423
427
  if radius is not None:
424
428
  prim = self._pedb.modeler.create_circle(
425
429
  temp.layer.name, temp.location[0], temp.location[1], radius, temp.net_name
@@ -427,7 +431,7 @@ class CfgSource(CfgCircuitElement):
427
431
  prim.dcir_equipotential_region = True
428
432
 
429
433
  for i in pads:
430
- i._set_equipotential()
434
+ i._set_equipotential(contact_radius=radius, inline=inline, num_of_contact=num_of_contact)
431
435
 
432
436
  return circuit_elements
433
437
 
@@ -220,7 +220,7 @@ class Layout(ObjBase):
220
220
  -------
221
221
  """
222
222
 
223
- return [EDBNetsData(net, self._pedb) for net in self._edb_object.Nets]
223
+ return [EDBNetsData(net, self._pedb) for net in self._edb_object.Nets if net]
224
224
 
225
225
  @property
226
226
  def primitives(self):
@@ -230,7 +230,7 @@ class Layout(ObjBase):
230
230
  -------
231
231
  list of :class:`dotnet.edb_core.dotnet.primitive.PrimitiveDotNet` cast objects.
232
232
  """
233
- return [primitive_cast(self._pedb, p) for p in self._edb_object.Primitives]
233
+ return [primitive_cast(self._pedb, p) for p in self._edb_object.Primitives if p]
234
234
 
235
235
  @property
236
236
  def bondwires(self):
@@ -331,16 +331,32 @@ class Layout(ObjBase):
331
331
  obj = self._pedb._edb.Cell.Hierarchy.Component.FindByName(self._edb_object, value)
332
332
  return EDBComponent(self._pedb, obj) if obj is not None else None
333
333
 
334
- def find_primitive(self, layer_name: Union[str, list]) -> list:
334
+ def find_primitive(
335
+ self, layer_name: Union[str, list] = None, name: Union[str, list] = None, net_name: Union[str, list] = None
336
+ ) -> list:
335
337
  """Find a primitive objects by layer name.
336
338
 
337
339
  Parameters
338
340
  ----------
339
- layer_name : str, list
341
+ layer_name : str, list, optional
340
342
  Name of the layer.
343
+ name : str, list, optional
344
+ Name of the primitive
345
+ net_name : str, list, optional
346
+ Name of the primitive
341
347
  Returns
342
348
  -------
343
349
  list
344
350
  """
345
- layer_name = layer_name if isinstance(layer_name, list) else [layer_name]
346
- return [i for i in self.primitives if i.layer_name in layer_name]
351
+ if layer_name is not None:
352
+ layer_name = layer_name if isinstance(layer_name, list) else [layer_name]
353
+ if name is not None:
354
+ name = name if isinstance(name, list) else [name]
355
+ if net_name is not None:
356
+ net_name = net_name if isinstance(net_name, list) else [net_name]
357
+
358
+ prims = self.primitives
359
+ prims = [i for i in prims if i.aedt_name in name] if name is not None else prims
360
+ prims = [i for i in prims if i.layer_name in layer_name] if layer_name is not None else prims
361
+ prims = [i for i in prims if i.net_name in net_name] if net_name is not None else prims
362
+ return prims
@@ -59,7 +59,7 @@ class EDBNetsData(NetDotNet):
59
59
  """
60
60
  from pyedb.dotnet.edb_core.cell.layout import primitive_cast
61
61
 
62
- return [primitive_cast(self._app, i) for i in self.net_object.Primitives]
62
+ return [primitive_cast(self._app, i) for i in self.net_object.Primitives if i]
63
63
  # return [self._app.layout.find_object_by_id(i.GetId()) for i in self.net_object.Primitives]
64
64
 
65
65
  @property
@@ -24,6 +24,8 @@ from collections import OrderedDict
24
24
  import math
25
25
  import warnings
26
26
 
27
+ import numpy as np
28
+
27
29
  from pyedb.dotnet.clr_module import String
28
30
  from pyedb.dotnet.edb_core.cell.primitive.primitive import Primitive
29
31
  from pyedb.dotnet.edb_core.dotnet.database import PolygonDataDotNet
@@ -1247,10 +1249,50 @@ class EDBPadstackInstance(Primitive):
1247
1249
 
1248
1250
  return self._pedb.create_port(terminal, ref_terminal, is_circuit_port)
1249
1251
 
1250
- def _set_equipotential(self):
1252
+ def _set_equipotential(self, contact_radius=None, inline=False, num_of_contact=1):
1251
1253
  """Workaround solution. Remove when EDBAPI bug is fixed for dcir_equipotential_region."""
1252
1254
  pad = self.definition.pad_by_layer[self.start_layer]
1253
- if pad.shape.lower() == "circle":
1255
+
1256
+ pos_x, pos_y = self.position
1257
+ comp_rotation = self._pedb.edb_value(self.component.rotation).ToDouble() % 3.141592653589793
1258
+
1259
+ if contact_radius is not None:
1260
+ if num_of_contact == 1:
1261
+ prim = self._pedb.modeler.create_circle(pad.layer_name, pos_x, pos_y, contact_radius, self.net_name)
1262
+ prim.dcir_equipotential_region = True
1263
+ else:
1264
+ if pad.shape.lower() in ["rectangle", "oval"]:
1265
+ width, height = pad.parameters_values[0:2]
1266
+ radius = self._pedb.edb_value(contact_radius).ToDouble()
1267
+ else:
1268
+ return
1269
+
1270
+ if inline is False:
1271
+ x_offset = width / 2 - radius if comp_rotation == 0 else height / 2 - radius
1272
+ y_offset = height / 2 - radius if comp_rotation == 0 else width / 2 - radius
1273
+ positions = []
1274
+ for x, y in [[1, 1], [-1, 1], [1, -1], [-1, -1]]:
1275
+ positions.append([x_offset * x, y_offset * y])
1276
+ else:
1277
+ if width > height:
1278
+ offset = (width - radius * 2) / (num_of_contact - 1)
1279
+ else:
1280
+ offset = (height - radius * 2) / (num_of_contact - 1)
1281
+
1282
+ start_pos = (num_of_contact - 1) / 2
1283
+ offset = [offset * i for i in np.arange(start_pos * -1, start_pos + 1)]
1284
+
1285
+ if (width > height and comp_rotation == 0) or (width < height and comp_rotation != 0):
1286
+ positions = list(zip(offset, [0] * num_of_contact))
1287
+ else:
1288
+ positions = list(zip([0] * num_of_contact, offset))
1289
+
1290
+ for x, y in positions:
1291
+ prim = self._pedb.modeler.create_circle(pad.layer_name, pos_x + x, pos_y + y, radius, self.net_name)
1292
+ prim.dcir_equipotential_region = True
1293
+ return
1294
+
1295
+ elif pad.shape.lower() == "circle":
1254
1296
  ra = self._pedb.edb_value(pad.parameters_values[0] / 2)
1255
1297
  pos = self.position
1256
1298
  prim = self._pedb.modeler.create_circle(pad.layer_name, pos[0], pos[1], ra, self.net_name)
@@ -1265,9 +1307,16 @@ class EDBPadstackInstance(Primitive):
1265
1307
  center_point=self.position,
1266
1308
  rotation=self.component.rotation,
1267
1309
  )
1268
-
1310
+ elif pad.shape.lower() == "oval":
1311
+ width, height, _ = pad.parameters_values
1312
+ prim = self._pedb.modeler.create_circle(
1313
+ pad.layer_name, self.position[0], self.position[1], height / 2, self.net_name
1314
+ )
1269
1315
  elif pad.polygon_data:
1270
- prim = self._pedb.modeler.create_polygon(pad.polygon_data, self.start_layer, net_name=self.net_name)
1316
+ prim = self._pedb.modeler.create_polygon(
1317
+ pad.polygon_data._edb_object, self.start_layer, net_name=self.net_name
1318
+ )
1319
+ prim.move(self.position)
1271
1320
  else:
1272
1321
  return
1273
1322
  prim.dcir_equipotential_region = True
@@ -1579,7 +1628,7 @@ class EDBPadstackInstance(Primitive):
1579
1628
  layer_list = []
1580
1629
  start_layer_name = start_layer.GetName()
1581
1630
  stop_layer_name = stop_layer.GetName()
1582
- for layer_name in list(self._pedb.stackup.layers.keys()):
1631
+ for layer_name in list(self._pedb.stackup.signal_layers.keys()):
1583
1632
  if started:
1584
1633
  layer_list.append(layer_name)
1585
1634
  if layer_name == stop_layer_name or layer_name == start_layer_name:
@@ -19,6 +19,7 @@
19
19
  # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  # SOFTWARE.
22
+ from typing import Union
22
23
 
23
24
  from pyedb.dotnet.edb_core.general import convert_py_list_to_net_list
24
25
  from pyedb.dotnet.edb_core.geometry.point_data import PointData
@@ -128,3 +129,7 @@ class PolygonData:
128
129
  arcs = convert_py_list_to_net_list(arcs)
129
130
  poly = self._edb_object.CreateFromArcs(arcs, flag)
130
131
  return PolygonData(self._pedb, poly)
132
+
133
+ def point_in_polygon(self, x: Union[str, float], y: Union[str, float]) -> bool:
134
+ """Determines whether a point is inside the polygon."""
135
+ return self._edb_object.PointInPolygon(self._pedb.point_data(x, y))
@@ -661,8 +661,7 @@ class Modeler(object):
661
661
  else:
662
662
  polygonData = main_shape
663
663
  if not polygonData or polygonData.IsNull():
664
- self._logger.error("Failed to create main shape polygon data")
665
- return False
664
+ raise RuntimeError("Failed to create main shape polygon data")
666
665
  for void in voids:
667
666
  if isinstance(void, list):
668
667
  void = self.Shape("polygon", points=void)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pyedb
3
- Version: 0.36.0
3
+ Version: 0.37.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>
@@ -1,4 +1,4 @@
1
- pyedb/__init__.py,sha256=J-C3OCl0x4XT12T0Mp6A42LQRGmeXr_tPMS11ujG9yA,1525
1
+ pyedb/__init__.py,sha256=bTsJ4CBHXe9DwW7gVeft0iIBTaHaGYTd7KW5dij8NdU,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
@@ -18,7 +18,7 @@ pyedb/configuration/cfg_operations.py,sha256=CFLBdM2kQBsW6f7W0NHWbV56RDMHSnaNQl3
18
18
  pyedb/configuration/cfg_package_definition.py,sha256=f_RRT9R-3H5kHBlc4QSpjq9uQgYbaKQ78XXXrc_r3kg,5296
19
19
  pyedb/configuration/cfg_padstacks.py,sha256=zZSEc92TwSqa7KSZBmDb4Sybm4ivM5lrvb8uMxFho8k,18292
20
20
  pyedb/configuration/cfg_pin_groups.py,sha256=zNKfVP-fd1qUxS2wNb0ZTLGonkUnBmiXb4Rss1Rr7sE,3714
21
- pyedb/configuration/cfg_ports_sources.py,sha256=TixoYVWqWmJxMk6Obyd1cxWmT-a6SBMAkJ4yyENQqFE,22751
21
+ pyedb/configuration/cfg_ports_sources.py,sha256=1ngvubH02qQBHjkRI90BvpdRq4HMHRfbeFRKWEjEtAM,22988
22
22
  pyedb/configuration/cfg_s_parameter_models.py,sha256=DgBprcEYR2r_3BY4f_CuwuhJw_QFEag3xaAlLTRfMuE,5356
23
23
  pyedb/configuration/cfg_setup.py,sha256=QGKQHAEeo196TYtKMvIMb2-p8KC4U8fmHx0yn0SpgMo,10351
24
24
  pyedb/configuration/cfg_spice_models.py,sha256=Q_5j2-V6cepSFcnijot8iypTqzanLp7HOz-agmnwKns,2570
@@ -36,7 +36,7 @@ pyedb/dotnet/edb_core/hfss.py,sha256=oQFC6PwRbjAwfR60RoklwpZ_2sDI4OheNNdwaqY23ok
36
36
  pyedb/dotnet/edb_core/layout_obj_instance.py,sha256=Pd8rfdO3b6HLFGwXBMw-tfE4LPIcW_9_X5KEdFaiito,1407
37
37
  pyedb/dotnet/edb_core/layout_validation.py,sha256=S0IFx9t5toVpuTLTI2Cs9vvgR4BCebJLXnj0ydW2Op8,13597
38
38
  pyedb/dotnet/edb_core/materials.py,sha256=s105DUTFkQoQRWgtRMp02DKcU2YcSrfLbJoi8hcTQII,42293
39
- pyedb/dotnet/edb_core/modeler.py,sha256=rVJ-eh3eKOnCHENaBLZ8D7duH7tUtUqZJNLKGLFsZ_M,55519
39
+ pyedb/dotnet/edb_core/modeler.py,sha256=XKlKzgTRtFll5ZZlhC4JEfKkO5AZvooAtgbV49VYbZc,55494
40
40
  pyedb/dotnet/edb_core/net_class.py,sha256=4U6Cc1Gn7ZJ_ub9uKmtrsoz5wD1XS42afci3Y3ewRp0,11354
41
41
  pyedb/dotnet/edb_core/nets.py,sha256=Wc84urZG6nM3fZYqMj2HzM6CgNz_B4s4O3WmMGr-5H0,25199
42
42
  pyedb/dotnet/edb_core/padstack.py,sha256=eUlIO6pBCfknjvToWWjdvxyz0zpFpyDdwFIMgyLVprk,73173
@@ -44,7 +44,7 @@ pyedb/dotnet/edb_core/siwave.py,sha256=QF4JyVNWoDeNQRRBBExlCxxVUt1-5DpKIlpuYkXd4
44
44
  pyedb/dotnet/edb_core/stackup.py,sha256=b56leXg7X7dEVPP2DUD9n8LZIakWcjIsjiqqkIWsyZU,120035
45
45
  pyedb/dotnet/edb_core/cell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
46
  pyedb/dotnet/edb_core/cell/connectable.py,sha256=gc5jhWx4DX718T7koL6oZZzfS4EdQNTiFX76ZJ2c83E,2864
47
- pyedb/dotnet/edb_core/cell/layout.py,sha256=Bh8WKMwCB0qn9ehP-_rShRTpN7KGgI72K5h_JdkOd6Y,12413
47
+ pyedb/dotnet/edb_core/cell/layout.py,sha256=zMTqjA_8I9vlJGNgZ6fgqmfs6B0krq2v1KlgXw1ZBJs,13172
48
48
  pyedb/dotnet/edb_core/cell/layout_obj.py,sha256=S42rdiI6gVqO77DV3ikc4YxTNufTuqW_X1G-2zkWArA,2765
49
49
  pyedb/dotnet/edb_core/cell/voltage_regulator.py,sha256=-uAzuyERV6ca0bFRzdH4SllcpGY2D9JEdpS7RYaQt6c,5387
50
50
  pyedb/dotnet/edb_core/cell/hierarchy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -81,8 +81,8 @@ pyedb/dotnet/edb_core/edb_data/design_options.py,sha256=RO9ip-T5Bfxpsl97_QEk0qDZ
81
81
  pyedb/dotnet/edb_core/edb_data/edbvalue.py,sha256=Vj_11HXsQUNavizKp5FicORm6cjhXRh9uvxhv_D_RJc,1977
82
82
  pyedb/dotnet/edb_core/edb_data/hfss_extent_info.py,sha256=wIKH4it1uYkEae4OimS3YE6QoSf8rAAIhxdTwtR9cqU,13040
83
83
  pyedb/dotnet/edb_core/edb_data/layer_data.py,sha256=4Z_eaHSfGfwQBKETEmGSwMvwGzvirtwYw4G4TwonNiA,34314
84
- pyedb/dotnet/edb_core/edb_data/nets_data.py,sha256=fXJ1U18ZLm9xI7MJD3UcTsI8XNZSq5kf20KF2IMib4o,10137
85
- pyedb/dotnet/edb_core/edb_data/padstacks_data.py,sha256=bk1AtIJTigpJmzzGyn6uFLRXXw3G56d0lcmCP0beQpw,77161
84
+ pyedb/dotnet/edb_core/edb_data/nets_data.py,sha256=k15gL8A9yACRxw5UaMFZamijMLo19MR8YZbZb06tYMA,10142
85
+ pyedb/dotnet/edb_core/edb_data/padstacks_data.py,sha256=n9dsAcimNQdKpxFqfFB1-96KTGhZ6mz0vilAEHDKd4M,79557
86
86
  pyedb/dotnet/edb_core/edb_data/ports.py,sha256=wr2RQi8VExuNIVmnp7c4VpTIhODgthmJmHr01zO4ueo,8873
87
87
  pyedb/dotnet/edb_core/edb_data/primitives_data.py,sha256=kIXkd5SXeN881eJqdJ2KxEZebpimB4qFEed1g6w-Raw,16826
88
88
  pyedb/dotnet/edb_core/edb_data/raptor_x_simulation_setup_data.py,sha256=P37-OIsc8TuTC_s3CXRmvZcJqxAftHA7SATfEyoAnMM,20953
@@ -92,7 +92,7 @@ pyedb/dotnet/edb_core/edb_data/utilities.py,sha256=3wZqOJ35eisOwOPKOs-bvJ8kmd62e
92
92
  pyedb/dotnet/edb_core/edb_data/variables.py,sha256=LS1jZPOYgRvf4cyKf_x8hI9Brs-qbh4wrHu_QGLElrg,3501
93
93
  pyedb/dotnet/edb_core/geometry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
94
  pyedb/dotnet/edb_core/geometry/point_data.py,sha256=hC9cRuSnX4cwg09Jr0ZK7ZTjFf_4NwXJMGbZ3s-ULpQ,1590
95
- pyedb/dotnet/edb_core/geometry/polygon_data.py,sha256=u4qWf7guWpJFRmHhh_31vmVyaEceHhjuPxIttmX0lZQ,5022
95
+ pyedb/dotnet/edb_core/geometry/polygon_data.py,sha256=qZ1dRQHMo2JNZaWiPkrqrE009YZU3IOCr8UGQ1MXot8,5272
96
96
  pyedb/dotnet/edb_core/sim_setup_data/__init__.py,sha256=8jByHkoaowAYQTCww-zRrTQmN061fLz_OHjTLSrzQQY,58
97
97
  pyedb/dotnet/edb_core/sim_setup_data/data/__init__.py,sha256=8jByHkoaowAYQTCww-zRrTQmN061fLz_OHjTLSrzQQY,58
98
98
  pyedb/dotnet/edb_core/sim_setup_data/data/adaptive_frequency_data.py,sha256=tlHI7PUUoseNnJAtihpjb1PwXYNr-4ztAAnunlLLWVQ,2463
@@ -188,7 +188,7 @@ pyedb/misc/siw_feature_config/xtalk_scan/scan_config.py,sha256=YmYI6WTQulL5Uf8Wx
188
188
  pyedb/misc/siw_feature_config/xtalk_scan/td_xtalk_config.py,sha256=KHa-UqcXuabiVfT2CV-UvWl5Q2qGYHF2Ye9azcAlnXc,3966
189
189
  pyedb/modeler/geometry_operators.py,sha256=g_Sy7a6R23sP6RtboJn1rl8uTuo8oeLmMF21rNkzwjk,74198
190
190
  pyedb/siwave_core/icepak.py,sha256=WnZ-t8mik7LDY06V8hZFV-TxRZJQWK7bu_8Ichx-oBs,5206
191
- pyedb-0.36.0.dist-info/LICENSE,sha256=qQWivZ12ETN5l3QxvTARY-QI5eoRRlyHdwLlAj0Bg5I,1089
192
- pyedb-0.36.0.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
193
- pyedb-0.36.0.dist-info/METADATA,sha256=xiGT2oVypbuQ3PQvhlNflcggqlcdR5VCsddUJNGmpGE,8513
194
- pyedb-0.36.0.dist-info/RECORD,,
191
+ pyedb-0.37.0.dist-info/LICENSE,sha256=qQWivZ12ETN5l3QxvTARY-QI5eoRRlyHdwLlAj0Bg5I,1089
192
+ pyedb-0.37.0.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
193
+ pyedb-0.37.0.dist-info/METADATA,sha256=IwWf3GCdS37oFKRCZh99M_me8qd3vx0-QbUAvNpXME8,8513
194
+ pyedb-0.37.0.dist-info/RECORD,,
File without changes