pyedb 0.49.0__py3-none-any.whl → 0.50.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.

Files changed (79) hide show
  1. pyedb/__init__.py +1 -1
  2. pyedb/configuration/cfg_modeler.py +42 -11
  3. pyedb/configuration/cfg_ports_sources.py +9 -1
  4. pyedb/dotnet/database/cell/hierarchy/component.py +6 -6
  5. pyedb/dotnet/database/components.py +3 -3
  6. pyedb/dotnet/database/edb_data/padstacks_data.py +13 -0
  7. pyedb/dotnet/database/edb_data/primitives_data.py +3 -3
  8. pyedb/dotnet/database/edb_data/variables.py +3 -3
  9. pyedb/dotnet/database/materials.py +16 -16
  10. pyedb/dotnet/database/modeler.py +38 -4
  11. pyedb/dotnet/database/sim_setup_data/data/settings.py +28 -0
  12. pyedb/dotnet/database/stackup.py +1 -0
  13. pyedb/dotnet/database/utilities/hfss_simulation_setup.py +5 -6
  14. pyedb/dotnet/edb.py +22 -20
  15. pyedb/extensions/__init__.py +0 -0
  16. pyedb/extensions/via_design_backend.py +681 -0
  17. pyedb/grpc/database/components.py +537 -686
  18. pyedb/grpc/database/control_file.py +458 -149
  19. pyedb/grpc/database/definition/component_def.py +17 -14
  20. pyedb/grpc/database/definition/materials.py +60 -60
  21. pyedb/grpc/database/definition/package_def.py +8 -8
  22. pyedb/grpc/database/definition/padstack_def.py +31 -33
  23. pyedb/grpc/database/definitions.py +6 -4
  24. pyedb/grpc/database/geometry/arc_data.py +5 -5
  25. pyedb/grpc/database/geometry/point_3d_data.py +3 -3
  26. pyedb/grpc/database/geometry/polygon_data.py +5 -5
  27. pyedb/grpc/database/hfss.py +399 -397
  28. pyedb/grpc/database/hierarchy/component.py +60 -58
  29. pyedb/grpc/database/hierarchy/pin_pair_model.py +6 -6
  30. pyedb/grpc/database/hierarchy/pingroup.py +13 -11
  31. pyedb/grpc/database/hierarchy/s_parameter_model.py +1 -1
  32. pyedb/grpc/database/hierarchy/spice_model.py +1 -1
  33. pyedb/grpc/database/layers/layer.py +2 -2
  34. pyedb/grpc/database/layers/stackup_layer.py +144 -44
  35. pyedb/grpc/database/layout/layout.py +12 -12
  36. pyedb/grpc/database/layout/voltage_regulator.py +8 -8
  37. pyedb/grpc/database/layout_validation.py +5 -5
  38. pyedb/grpc/database/modeler.py +248 -245
  39. pyedb/grpc/database/net/differential_pair.py +4 -4
  40. pyedb/grpc/database/net/extended_net.py +7 -8
  41. pyedb/grpc/database/net/net.py +57 -46
  42. pyedb/grpc/database/nets.py +139 -122
  43. pyedb/grpc/database/padstacks.py +174 -190
  44. pyedb/grpc/database/ports/ports.py +23 -17
  45. pyedb/grpc/database/primitive/padstack_instance.py +45 -30
  46. pyedb/grpc/database/primitive/path.py +7 -7
  47. pyedb/grpc/database/primitive/polygon.py +9 -9
  48. pyedb/grpc/database/primitive/primitive.py +21 -21
  49. pyedb/grpc/database/primitive/rectangle.py +1 -1
  50. pyedb/grpc/database/simulation_setup/hfss_advanced_settings.py +1 -1
  51. pyedb/grpc/database/simulation_setup/hfss_general_settings.py +1 -1
  52. pyedb/grpc/database/simulation_setup/hfss_settings_options.py +1 -1
  53. pyedb/grpc/database/simulation_setup/hfss_simulation_settings.py +6 -6
  54. pyedb/grpc/database/simulation_setup/hfss_simulation_setup.py +2 -2
  55. pyedb/grpc/database/simulation_setup/raptor_x_simulation_settings.py +2 -2
  56. pyedb/grpc/database/simulation_setup/raptor_x_simulation_setup.py +1 -1
  57. pyedb/grpc/database/simulation_setup/siwave_simulation_setup.py +3 -3
  58. pyedb/grpc/database/siwave.py +166 -214
  59. pyedb/grpc/database/source_excitations.py +156 -0
  60. pyedb/grpc/database/stackup.py +415 -316
  61. pyedb/grpc/database/terminal/bundle_terminal.py +12 -12
  62. pyedb/grpc/database/terminal/edge_terminal.py +6 -5
  63. pyedb/grpc/database/terminal/padstack_instance_terminal.py +13 -13
  64. pyedb/grpc/database/terminal/pingroup_terminal.py +12 -12
  65. pyedb/grpc/database/terminal/point_terminal.py +6 -6
  66. pyedb/grpc/database/terminal/terminal.py +26 -26
  67. pyedb/grpc/database/utility/heat_sink.py +5 -5
  68. pyedb/grpc/database/utility/hfss_extent_info.py +21 -21
  69. pyedb/grpc/database/utility/layout_statistics.py +13 -13
  70. pyedb/grpc/database/utility/rlc.py +3 -3
  71. pyedb/grpc/database/utility/sources.py +1 -1
  72. pyedb/grpc/database/utility/sweep_data_distribution.py +1 -1
  73. pyedb/grpc/edb.py +524 -764
  74. {pyedb-0.49.0.dist-info → pyedb-0.50.1.dist-info}/METADATA +1 -1
  75. {pyedb-0.49.0.dist-info → pyedb-0.50.1.dist-info}/RECORD +77 -77
  76. pyedb/extensions/pre_layout_design_toolkit/via_design.py +0 -1151
  77. pyedb/grpc/database/utility/simulation_configuration.py +0 -3305
  78. {pyedb-0.49.0.dist-info → pyedb-0.50.1.dist-info}/LICENSE +0 -0
  79. {pyedb-0.49.0.dist-info → pyedb-0.50.1.dist-info}/WHEEL +0 -0
@@ -44,7 +44,7 @@ class ComponentDef(GrpcComponentDef):
44
44
  self._pedb = pedb
45
45
 
46
46
  @property
47
- def part_name(self):
47
+ def part_name(self) -> str:
48
48
  """Component definition name.
49
49
 
50
50
  Returns
@@ -60,7 +60,7 @@ class ComponentDef(GrpcComponentDef):
60
60
  self.name = name
61
61
 
62
62
  @property
63
- def type(self):
63
+ def type(self) -> str:
64
64
  """Component definition type.
65
65
 
66
66
  Returns
@@ -97,28 +97,28 @@ class ComponentDef(GrpcComponentDef):
97
97
  return
98
98
 
99
99
  @property
100
- def components(self):
100
+ def components(self) -> dict[str, Component]:
101
101
  """Component instances belonging to the definition.
102
102
 
103
103
  Returns
104
104
  -------
105
- Dict : [str, :class:`Component <pyedb.grpc.database.hierarchy.component.Component>`]
105
+ dict[str, :class:`Component <pyedb.grpc.database.hierarchy.component.Component>`]
106
106
  """
107
107
  comp_list = [Component(self._pedb, l) for l in Component.find_by_def(self._pedb.active_layout, self.part_name)]
108
108
  return {comp.refdes: comp for comp in comp_list}
109
109
 
110
110
  @property
111
- def component_pins(self):
111
+ def component_pins(self) -> list[ComponentPin]:
112
112
  """Component pins.
113
113
 
114
114
  Returns
115
115
  -------
116
- List[:class:`ComponentPin <pyedb.grpc.database.definition.component_pin.ComponentPin>`]
116
+ list[:class:`ComponentPin <pyedb.grpc.database.definition.component_pin.ComponentPin>`]
117
117
 
118
118
  """
119
119
  return [ComponentPin(self._pedb, pin) for pin in super().component_pins]
120
120
 
121
- def assign_rlc_model(self, res=None, ind=None, cap=None, is_parallel=False):
121
+ def assign_rlc_model(self, res=None, ind=None, cap=None, is_parallel=False) -> bool:
122
122
  """Assign RLC to all components under this part name.
123
123
 
124
124
  Parameters
@@ -142,16 +142,19 @@ class ComponentDef(GrpcComponentDef):
142
142
  comp.assign_rlc_model(res, ind, cap, is_parallel)
143
143
  return True
144
144
 
145
- def assign_s_param_model(self, file_path, model_name=None, reference_net=None):
145
+ def assign_s_param_model(self, file_path, model_name=None, reference_net=None) -> bool:
146
146
  """Assign S-parameter to all components under this part name.
147
147
 
148
148
  Parameters
149
149
  ----------
150
150
  file_path : str
151
151
  File path of the S-parameter model.
152
- name : str, optional
152
+ model_name : str, optional
153
153
  Name of the S-parameter model.
154
154
 
155
+ reference_net : str, optional
156
+ Name of the reference net.
157
+
155
158
  Returns
156
159
  -------
157
160
  bool
@@ -161,31 +164,31 @@ class ComponentDef(GrpcComponentDef):
161
164
  comp.assign_s_param_model(file_path, model_name, reference_net)
162
165
  return True
163
166
 
164
- def assign_spice_model(self, file_path, model_name=None):
167
+ def assign_spice_model(self, file_path, model_name=None) -> bool:
165
168
  """Assign Spice model to all components under this part name.
166
169
 
167
170
  Parameters
168
171
  ----------
169
172
  file_path : str
170
173
  File path of the Spice model.
171
- name : str, optional
174
+ model_name : str, optional
172
175
  Name of the Spice model.
173
176
 
174
177
  Returns
175
178
  -------
176
-
179
+ bool
177
180
  """
178
181
  for comp in list(self.components.values()):
179
182
  comp.assign_spice_model(file_path, model_name)
180
183
  return True
181
184
 
182
185
  @property
183
- def reference_file(self):
186
+ def reference_file(self) -> list[str]:
184
187
  """Model reference file.
185
188
 
186
189
  Returns
187
190
  -------
188
- List[str]
191
+ list[str]
189
192
  List of reference files.
190
193
 
191
194
  """
@@ -99,22 +99,22 @@ def get_line_float_value(line):
99
99
  class MaterialProperties(BaseModel):
100
100
  """Store material properties."""
101
101
 
102
- conductivity: Optional[PositiveFloat] = None
103
- dielectric_loss_tangent: Optional[PositiveFloat] = None
104
- magnetic_loss_tangent: Optional[PositiveFloat] = None
105
- mass_density: Optional[PositiveFloat] = None
106
- permittivity: Optional[PositiveFloat] = None
107
- permeability: Optional[PositiveFloat] = None
108
- poisson_ratio: Optional[PositiveFloat] = None
109
- specific_heat: Optional[PositiveFloat] = None
110
- thermal_conductivity: Optional[PositiveFloat] = None
111
- youngs_modulus: Optional[PositiveFloat] = None
112
- thermal_expansion_coefficient: Optional[PositiveFloat] = None
113
- dc_conductivity: Optional[PositiveFloat] = None
114
- dc_permittivity: Optional[PositiveFloat] = None
115
- dielectric_model_frequency: Optional[PositiveFloat] = None
116
- loss_tangent_at_frequency: Optional[PositiveFloat] = None
117
- permittivity_at_frequency: Optional[PositiveFloat] = None
102
+ conductivity: Optional[PositiveFloat] = 0.0
103
+ dielectric_loss_tangent: Optional[PositiveFloat] = 0.0
104
+ magnetic_loss_tangent: Optional[PositiveFloat] = 0.0
105
+ mass_density: Optional[PositiveFloat] = 0.0
106
+ permittivity: Optional[PositiveFloat] = 0.0
107
+ permeability: Optional[PositiveFloat] = 0.0
108
+ poisson_ratio: Optional[PositiveFloat] = 0.0
109
+ specific_heat: Optional[PositiveFloat] = 0.0
110
+ thermal_conductivity: Optional[PositiveFloat] = 0.0
111
+ youngs_modulus: Optional[PositiveFloat] = 0.0
112
+ thermal_expansion_coefficient: Optional[PositiveFloat] = 0.0
113
+ dc_conductivity: Optional[PositiveFloat] = 0.0
114
+ dc_permittivity: Optional[PositiveFloat] = 0.0
115
+ dielectric_model_frequency: Optional[PositiveFloat] = 0.0
116
+ loss_tangent_at_frequency: Optional[PositiveFloat] = 0.0
117
+ permittivity_at_frequency: Optional[PositiveFloat] = 0.0
118
118
 
119
119
 
120
120
  class Material(GrpcMaterialDef):
@@ -128,7 +128,7 @@ class Material(GrpcMaterialDef):
128
128
  self.__dielectric_model = None
129
129
 
130
130
  @property
131
- def name(self):
131
+ def name(self) -> str:
132
132
  """Material name.
133
133
 
134
134
  Returns
@@ -169,10 +169,10 @@ class Material(GrpcMaterialDef):
169
169
  self.__dielectric_model = GrpcDjordjecvicSarkarModel(super().dielectric_material_model.msg)
170
170
  return self.__dielectric_model
171
171
  except:
172
- return None
172
+ return 0.0
173
173
 
174
174
  @property
175
- def conductivity(self):
175
+ def conductivity(self) -> float:
176
176
  """Get material conductivity.
177
177
 
178
178
  Returns
@@ -184,7 +184,7 @@ class Material(GrpcMaterialDef):
184
184
  value = self.get_property(GrpcMaterialProperty.CONDUCTIVITY).value
185
185
  return value
186
186
  except:
187
- return None
187
+ return 0.0
188
188
 
189
189
  @conductivity.setter
190
190
  def conductivity(self, value):
@@ -210,7 +210,7 @@ class Material(GrpcMaterialDef):
210
210
  try:
211
211
  return self.dielectric_material_model.dc_conductivity
212
212
  except:
213
- return
213
+ return None
214
214
 
215
215
  @dc_conductivity.setter
216
216
  def dc_conductivity(self, value):
@@ -230,7 +230,7 @@ class Material(GrpcMaterialDef):
230
230
  try:
231
231
  return self.dielectric_material_model.dc_relative_permitivity
232
232
  except:
233
- return
233
+ return None
234
234
 
235
235
  @dc_permittivity.setter
236
236
  def dc_permittivity(self, value):
@@ -238,7 +238,7 @@ class Material(GrpcMaterialDef):
238
238
  self.dielectric_material_model.dc_relative_permitivity = float(value)
239
239
 
240
240
  @property
241
- def loss_tangent_at_frequency(self):
241
+ def loss_tangent_at_frequency(self) -> float:
242
242
  """Material loss tangent at frequency if dielectric model is defined.
243
243
 
244
244
  Returns
@@ -250,7 +250,7 @@ class Material(GrpcMaterialDef):
250
250
  try:
251
251
  return self.dielectric_material_model.loss_tangent_at_frequency
252
252
  except:
253
- return
253
+ return None
254
254
 
255
255
  @loss_tangent_at_frequency.setter
256
256
  def loss_tangent_at_frequency(self, value):
@@ -258,7 +258,7 @@ class Material(GrpcMaterialDef):
258
258
  self.dielectric_material_model.loss_tangent_at_frequency = float(value)
259
259
 
260
260
  @property
261
- def dielectric_model_frequency(self):
261
+ def dielectric_model_frequency(self) -> float:
262
262
  """Dielectric model frequency if model is defined.
263
263
 
264
264
  Returns
@@ -270,7 +270,7 @@ class Material(GrpcMaterialDef):
270
270
  try:
271
271
  return self.dielectric_material_model.frequency
272
272
  except:
273
- return
273
+ return None
274
274
 
275
275
  @dielectric_model_frequency.setter
276
276
  def dielectric_model_frequency(self, value):
@@ -278,7 +278,7 @@ class Material(GrpcMaterialDef):
278
278
  self.dielectric_material_model.frequency = float(value)
279
279
 
280
280
  @property
281
- def permittivity_at_frequency(self):
281
+ def permittivity_at_frequency(self) -> float:
282
282
  """Material permittivity at frequency if model is defined.
283
283
 
284
284
 
@@ -291,7 +291,7 @@ class Material(GrpcMaterialDef):
291
291
  try:
292
292
  return self.dielectric_material_model.relative_permitivity_at_frequency
293
293
  except:
294
- return
294
+ return None
295
295
 
296
296
  @permittivity_at_frequency.setter
297
297
  def permittivity_at_frequency(self, value):
@@ -299,7 +299,7 @@ class Material(GrpcMaterialDef):
299
299
  self.dielectric_material_model.relative_permitivity_at_frequency = float(value)
300
300
 
301
301
  @property
302
- def permittivity(self):
302
+ def permittivity(self) -> float:
303
303
  """Material permittivity.
304
304
 
305
305
 
@@ -313,7 +313,7 @@ class Material(GrpcMaterialDef):
313
313
  value = self.get_property(GrpcMaterialProperty.PERMITTIVITY).value
314
314
  return value
315
315
  except:
316
- return None
316
+ return 0.0
317
317
 
318
318
  @permittivity.setter
319
319
  def permittivity(self, value):
@@ -321,7 +321,7 @@ class Material(GrpcMaterialDef):
321
321
  self.set_property(GrpcMaterialProperty.PERMITTIVITY, GrpcValue(value))
322
322
 
323
323
  @property
324
- def permeability(self):
324
+ def permeability(self) -> float:
325
325
  """Material permeability.
326
326
 
327
327
  Returns
@@ -334,7 +334,7 @@ class Material(GrpcMaterialDef):
334
334
  value = self.get_property(GrpcMaterialProperty.PERMEABILITY).value
335
335
  return value
336
336
  except:
337
- return None
337
+ return 0.0
338
338
 
339
339
  @permeability.setter
340
340
  def permeability(self, value):
@@ -359,7 +359,7 @@ class Material(GrpcMaterialDef):
359
359
  return self.dielectric_loss_tangent
360
360
 
361
361
  @property
362
- def dielectric_loss_tangent(self):
362
+ def dielectric_loss_tangent(self) -> float:
363
363
  """Material loss tangent.
364
364
 
365
365
  Returns
@@ -371,7 +371,7 @@ class Material(GrpcMaterialDef):
371
371
  try:
372
372
  return self.get_property(GrpcMaterialProperty.DIELECTRIC_LOSS_TANGENT).value
373
373
  except:
374
- return None
374
+ return 0.0
375
375
 
376
376
  @loss_tangent.setter
377
377
  def loss_tangent(self, value):
@@ -389,7 +389,7 @@ class Material(GrpcMaterialDef):
389
389
  self.set_property(GrpcMaterialProperty.DIELECTRIC_LOSS_TANGENT, GrpcValue(value))
390
390
 
391
391
  @property
392
- def magnetic_loss_tangent(self):
392
+ def magnetic_loss_tangent(self) -> float:
393
393
  """Material magnetic loss tangent.
394
394
 
395
395
  Returns
@@ -401,7 +401,7 @@ class Material(GrpcMaterialDef):
401
401
  value = self.get_property(GrpcMaterialProperty.MAGNETIC_LOSS_TANGENT).value
402
402
  return value
403
403
  except:
404
- return None
404
+ return 0.0
405
405
 
406
406
  @magnetic_loss_tangent.setter
407
407
  def magnetic_loss_tangent(self, value):
@@ -409,7 +409,7 @@ class Material(GrpcMaterialDef):
409
409
  self.set_property(GrpcMaterialProperty.MAGNETIC_LOSS_TANGENT, GrpcValue(value))
410
410
 
411
411
  @property
412
- def thermal_conductivity(self):
412
+ def thermal_conductivity(self) -> float:
413
413
  """Material thermal conductivity.
414
414
 
415
415
  Returns
@@ -422,7 +422,7 @@ class Material(GrpcMaterialDef):
422
422
  value = self.get_property(GrpcMaterialProperty.THERMAL_CONDUCTIVITY).value
423
423
  return value
424
424
  except:
425
- return None
425
+ return 0.0
426
426
 
427
427
  @thermal_conductivity.setter
428
428
  def thermal_conductivity(self, value):
@@ -430,7 +430,7 @@ class Material(GrpcMaterialDef):
430
430
  self.set_property(GrpcMaterialProperty.THERMAL_CONDUCTIVITY, GrpcValue(value))
431
431
 
432
432
  @property
433
- def mass_density(self):
433
+ def mass_density(self) -> float:
434
434
  """Material mass density.
435
435
 
436
436
  Returns
@@ -443,7 +443,7 @@ class Material(GrpcMaterialDef):
443
443
  value = self.get_property(GrpcMaterialProperty.MASS_DENSITY).value
444
444
  return value
445
445
  except:
446
- return None
446
+ return 0.0
447
447
 
448
448
  @mass_density.setter
449
449
  def mass_density(self, value):
@@ -451,7 +451,7 @@ class Material(GrpcMaterialDef):
451
451
  self.set_property(GrpcMaterialProperty.MASS_DENSITY, GrpcValue(value))
452
452
 
453
453
  @property
454
- def youngs_modulus(self):
454
+ def youngs_modulus(self) -> float:
455
455
  """Material young modulus.
456
456
 
457
457
  Returns
@@ -464,7 +464,7 @@ class Material(GrpcMaterialDef):
464
464
  value = self.get_property(GrpcMaterialProperty.YOUNGS_MODULUS).value
465
465
  return value
466
466
  except:
467
- return None
467
+ return 0.0
468
468
 
469
469
  @youngs_modulus.setter
470
470
  def youngs_modulus(self, value):
@@ -472,7 +472,7 @@ class Material(GrpcMaterialDef):
472
472
  self.set_property(GrpcMaterialProperty.YOUNGS_MODULUS, GrpcValue(value))
473
473
 
474
474
  @property
475
- def specific_heat(self):
475
+ def specific_heat(self) -> float:
476
476
  """Material specific heat.
477
477
 
478
478
  Returns
@@ -483,7 +483,7 @@ class Material(GrpcMaterialDef):
483
483
  try:
484
484
  return self.get_property(GrpcMaterialProperty.SPECIFIC_HEAT).value
485
485
  except:
486
- return None
486
+ return 0.0
487
487
 
488
488
  @specific_heat.setter
489
489
  def specific_heat(self, value):
@@ -491,7 +491,7 @@ class Material(GrpcMaterialDef):
491
491
  self.set_property(GrpcMaterialProperty.SPECIFIC_HEAT, GrpcValue(value))
492
492
 
493
493
  @property
494
- def poisson_ratio(self):
494
+ def poisson_ratio(self) -> float:
495
495
  """Material poisson ratio.
496
496
 
497
497
  Returns
@@ -502,7 +502,7 @@ class Material(GrpcMaterialDef):
502
502
  try:
503
503
  return self.get_property(GrpcMaterialProperty.POISSONS_RATIO).value
504
504
  except:
505
- return None
505
+ return 0.0
506
506
 
507
507
  @poisson_ratio.setter
508
508
  def poisson_ratio(self, value):
@@ -510,7 +510,7 @@ class Material(GrpcMaterialDef):
510
510
  self.set_property(GrpcMaterialProperty.POISSONS_RATIO, GrpcValue(value))
511
511
 
512
512
  @property
513
- def thermal_expansion_coefficient(self):
513
+ def thermal_expansion_coefficient(self) -> float:
514
514
  """Material thermal coefficient.
515
515
 
516
516
  Returns
@@ -522,7 +522,7 @@ class Material(GrpcMaterialDef):
522
522
  try:
523
523
  return self.get_property(GrpcMaterialProperty.THERMAL_EXPANSION_COEFFICIENT).value
524
524
  except:
525
- return None
525
+ return 0.0
526
526
 
527
527
  @thermal_expansion_coefficient.setter
528
528
  def thermal_expansion_coefficient(self, value):
@@ -639,7 +639,7 @@ class Materials(object):
639
639
  return self.__syslib
640
640
 
641
641
  @property
642
- def materials(self):
642
+ def materials(self) -> dict[str, Material]:
643
643
  """Get materials.
644
644
 
645
645
  Returns
@@ -652,7 +652,7 @@ class Materials(object):
652
652
  }
653
653
  return materials
654
654
 
655
- def add_material(self, name: str, **kwargs):
655
+ def add_material(self, name: str, **kwargs) -> Material:
656
656
  """Add a new material.
657
657
 
658
658
  Parameters
@@ -690,7 +690,7 @@ class Materials(object):
690
690
 
691
691
  return material
692
692
 
693
- def add_conductor_material(self, name, conductivity, **kwargs):
693
+ def add_conductor_material(self, name, conductivity, **kwargs) -> Material:
694
694
  """Add a new conductor material.
695
695
 
696
696
  Parameters
@@ -712,7 +712,7 @@ class Materials(object):
712
712
 
713
713
  return material
714
714
 
715
- def add_dielectric_material(self, name, permittivity, dielectric_loss_tangent, **kwargs):
715
+ def add_dielectric_material(self, name, permittivity, dielectric_loss_tangent, **kwargs) -> Material:
716
716
  """Add a new dielectric material in library.
717
717
 
718
718
  Parameters
@@ -745,7 +745,7 @@ class Materials(object):
745
745
  dc_conductivity=None,
746
746
  dc_permittivity=None,
747
747
  **kwargs,
748
- ):
748
+ ) -> Material:
749
749
  """Add a dielectric using the Djordjevic-Sarkar model.
750
750
 
751
751
  Parameters
@@ -804,7 +804,7 @@ class Materials(object):
804
804
  lower_freqency,
805
805
  higher_frequency,
806
806
  **kwargs,
807
- ):
807
+ ) -> Material:
808
808
  """Add a dielectric with the Debye model.
809
809
 
810
810
  Parameters
@@ -864,7 +864,7 @@ class Materials(object):
864
864
  permittivities,
865
865
  loss_tangents,
866
866
  **kwargs,
867
- ):
867
+ ) -> Material:
868
868
  """Add a dielectric with the Multipole Debye model.
869
869
 
870
870
  Parameters
@@ -938,7 +938,7 @@ class Materials(object):
938
938
  material = Material(self.__edb, material_def)
939
939
  return material
940
940
 
941
- def duplicate(self, material_name, new_material_name):
941
+ def duplicate(self, material_name, new_material_name) -> Material:
942
942
  """Duplicate a material from the database.
943
943
 
944
944
  Parameters
@@ -983,7 +983,7 @@ class Materials(object):
983
983
  )
984
984
  self.delete(material_name)
985
985
 
986
- def delete(self, material_name):
986
+ def delete(self, material_name) -> bool:
987
987
  """Remove a material from the database.
988
988
 
989
989
  Returns
@@ -1077,7 +1077,7 @@ class Materials(object):
1077
1077
  else:
1078
1078
  return property_name_to_id["InvalidProperty"]
1079
1079
 
1080
- def load_amat(self, amat_file):
1080
+ def load_amat(self, amat_file) -> bool:
1081
1081
  """Load materials from an AMAT file.
1082
1082
 
1083
1083
  Parameters
@@ -1184,7 +1184,7 @@ class Materials(object):
1184
1184
  material_description["name"] = match.group(1)
1185
1185
  in_material_def = True
1186
1186
 
1187
- def read_materials(self, amat_file):
1187
+ def read_materials(self, amat_file) -> dict[str, Material]:
1188
1188
  """Read materials from an AMAT file.
1189
1189
 
1190
1190
  Parameters
@@ -1207,7 +1207,7 @@ class Materials(object):
1207
1207
 
1208
1208
  return res
1209
1209
 
1210
- def read_syslib_material(self, material_name):
1210
+ def read_syslib_material(self, material_name) -> dict[str, Material]:
1211
1211
  """Read a specific material from syslib AMAT file.
1212
1212
 
1213
1213
  Parameters
@@ -92,7 +92,7 @@ class PackageDef(GrpcPackageDef):
92
92
  return edb_object
93
93
 
94
94
  @property
95
- def exterior_boundary(self):
95
+ def exterior_boundary(self) -> GrpcPolygonData:
96
96
  """Get the exterior boundary of a package definition.
97
97
 
98
98
  Returns
@@ -107,7 +107,7 @@ class PackageDef(GrpcPackageDef):
107
107
  super(PackageDef, self.__class__).exterior_boundary.__set__(self, value)
108
108
 
109
109
  @property
110
- def maximum_power(self):
110
+ def maximum_power(self) -> float:
111
111
  """Maximum power of the package.
112
112
 
113
113
  Returns
@@ -122,7 +122,7 @@ class PackageDef(GrpcPackageDef):
122
122
  super(PackageDef, self.__class__).maximum_power.__set__(self, GrpcValue(value))
123
123
 
124
124
  @property
125
- def therm_cond(self):
125
+ def therm_cond(self) -> float:
126
126
  """Thermal conductivity of the package.
127
127
 
128
128
  Returns
@@ -138,7 +138,7 @@ class PackageDef(GrpcPackageDef):
138
138
  super(PackageDef, self.__class__).thermal_conductivity.__set__(self, GrpcValue(value))
139
139
 
140
140
  @property
141
- def theta_jb(self):
141
+ def theta_jb(self) -> float:
142
142
  """Theta Junction-to-Board of the package.
143
143
 
144
144
  Returns
@@ -153,7 +153,7 @@ class PackageDef(GrpcPackageDef):
153
153
  super(PackageDef, self.__class__).theta_jb.__set__(self, GrpcValue(value))
154
154
 
155
155
  @property
156
- def theta_jc(self):
156
+ def theta_jc(self) -> float:
157
157
  """Theta Junction-to-Case of the package.
158
158
 
159
159
  Returns
@@ -168,7 +168,7 @@ class PackageDef(GrpcPackageDef):
168
168
  super(PackageDef, self.__class__).theta_jc.__set__(self, GrpcValue(value))
169
169
 
170
170
  @property
171
- def height(self):
171
+ def height(self) -> float:
172
172
  """Height of the package.
173
173
 
174
174
  Returns
@@ -183,7 +183,7 @@ class PackageDef(GrpcPackageDef):
183
183
  super(PackageDef, self.__class__).height.__set__(self, GrpcValue(value))
184
184
 
185
185
  @property
186
- def heat_sink(self):
186
+ def heat_sink(self) -> HeatSink:
187
187
  """Package heat sink.
188
188
 
189
189
  Returns
@@ -206,7 +206,7 @@ class PackageDef(GrpcPackageDef):
206
206
  """
207
207
  return self.heat_sink
208
208
 
209
- def set_heatsink(self, fin_base_height, fin_height, fin_orientation, fin_spacing, fin_thickness):
209
+ def set_heatsink(self, fin_base_height, fin_height, fin_orientation, fin_spacing, fin_thickness) -> HeatSink:
210
210
  """Set Heat sink.
211
211
  Parameters
212
212
  ----------