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
@@ -22,7 +22,7 @@
22
22
 
23
23
  import logging
24
24
  import re
25
- from typing import Optional
25
+ from typing import Optional, Union
26
26
  import warnings
27
27
 
28
28
  from ansys.edb.core.definition.component_model import (
@@ -117,7 +117,7 @@ class Component(GrpcComponentGroup):
117
117
  return self._comp_instance
118
118
 
119
119
  @property
120
- def is_enabled(self):
120
+ def is_enabled(self) -> bool:
121
121
  """Component enable.
122
122
 
123
123
  Returns
@@ -132,7 +132,7 @@ class Component(GrpcComponentGroup):
132
132
  self.enabled = value
133
133
 
134
134
  @property
135
- def ic_die_properties(self):
135
+ def ic_die_properties(self) -> ICDieProperty:
136
136
  """IC Die property.
137
137
 
138
138
  returns
@@ -145,7 +145,7 @@ class Component(GrpcComponentGroup):
145
145
  return None
146
146
 
147
147
  @property
148
- def _active_layout(self): # pragma: no cover
148
+ def _active_layout(self):
149
149
  """Active layout.
150
150
 
151
151
  Returns
@@ -155,7 +155,7 @@ class Component(GrpcComponentGroup):
155
155
  return self._pedb.active_layout
156
156
 
157
157
  @property
158
- def _edb_model(self): # pragma: no cover
158
+ def _edb_model(self):
159
159
  """Component model.
160
160
 
161
161
  Returns
@@ -167,7 +167,7 @@ class Component(GrpcComponentGroup):
167
167
  return comp_prop.model
168
168
 
169
169
  @property # pragma: no cover
170
- def _pin_pairs(self):
170
+ def _pin_pairs(self) -> PinPairModel:
171
171
  """Pins pairs.
172
172
 
173
173
  Returns
@@ -200,7 +200,7 @@ class Component(GrpcComponentGroup):
200
200
  return [self._edb_model.rlc(pin_pair) for pin_pair in self._edb_model.pin_pairs()]
201
201
 
202
202
  @property
203
- def model(self):
203
+ def model(self) -> Union[SparamModel, SpiceModel]:
204
204
  """Component model.
205
205
 
206
206
  Returns
@@ -261,7 +261,7 @@ class Component(GrpcComponentGroup):
261
261
  self.component_property = comp_prop
262
262
 
263
263
  @property
264
- def is_mcad(self):
264
+ def is_mcad(self) -> bool:
265
265
  """MCad component.
266
266
 
267
267
  Returns
@@ -277,7 +277,7 @@ class Component(GrpcComponentGroup):
277
277
  super(Component, self.__class__).is_mcad.__set__(self, GrpcValue(value))
278
278
 
279
279
  @property
280
- def is_mcad_3d_comp(self):
280
+ def is_mcad_3d_comp(self) -> bool:
281
281
  """Mcad 3D component.
282
282
 
283
283
  Returns
@@ -293,7 +293,7 @@ class Component(GrpcComponentGroup):
293
293
  super(Component, self.__class__).is_mcad_3d_comp.__set__(self, GrpcValue(value))
294
294
 
295
295
  @property
296
- def is_mcad_hfss(self):
296
+ def is_mcad_hfss(self) -> bool:
297
297
  """MCad HFSS.
298
298
 
299
299
  Returns
@@ -309,7 +309,7 @@ class Component(GrpcComponentGroup):
309
309
  super(Component, self.__class__).is_mcad_hfss.__set__(self, GrpcValue(value))
310
310
 
311
311
  @property
312
- def is_mcad_stride(self):
312
+ def is_mcad_stride(self) -> bool:
313
313
  """MCar stride.
314
314
 
315
315
  Returns
@@ -324,15 +324,13 @@ class Component(GrpcComponentGroup):
324
324
  if isinstance(value, bool):
325
325
  super(Component, self.__class__).is_mcad_stride.__set__(self, GrpcValue(value))
326
326
 
327
- def create_package_def(self, name="", component_part_name=None):
327
+ def create_package_def(self, name=None) -> bool:
328
328
  """Create a package definition and assign it to the component.
329
329
 
330
330
  Parameters
331
331
  ----------
332
332
  name: str, optional
333
333
  Name of the package definition
334
- component_part_name : str, optional
335
- Part name of the component.
336
334
 
337
335
  Returns
338
336
  -------
@@ -349,7 +347,7 @@ class Component(GrpcComponentGroup):
349
347
  return False
350
348
 
351
349
  @property
352
- def enabled(self):
350
+ def enabled(self) -> bool:
353
351
  """Component active mode.
354
352
 
355
353
  Returns
@@ -369,7 +367,7 @@ class Component(GrpcComponentGroup):
369
367
  self.component_property = cmp_prop
370
368
 
371
369
  @property
372
- def spice_model(self):
370
+ def spice_model(self) -> SpiceModel:
373
371
  """Assigned Spice model.
374
372
 
375
373
  Returns
@@ -379,10 +377,10 @@ class Component(GrpcComponentGroup):
379
377
  if not self.model_type == "SPICEModel":
380
378
  return None
381
379
  else:
382
- return SpiceModel(self._edb_model.msg)
380
+ return SpiceModel(edb_object=self._edb_model)
383
381
 
384
382
  @property
385
- def s_param_model(self):
383
+ def s_param_model(self) -> SparamModel:
386
384
  """Assigned S-parameter model.
387
385
 
388
386
  Returns
@@ -392,10 +390,10 @@ class Component(GrpcComponentGroup):
392
390
  if not self.model_type == "SParameterModel":
393
391
  return None
394
392
  else:
395
- return GrpcSParameterModel(self._edb_model.msg)
393
+ return SparamModel(edb_object=self._edb_model)
396
394
 
397
395
  @property
398
- def netlist_model(self):
396
+ def netlist_model(self) -> GrpcNetlistModel:
399
397
  """Assigned netlist model.
400
398
 
401
399
  Returns
@@ -408,7 +406,7 @@ class Component(GrpcComponentGroup):
408
406
  return GrpcNetlistModel(self._edb_model)
409
407
 
410
408
  @property
411
- def solder_ball_height(self):
409
+ def solder_ball_height(self) -> float:
412
410
  """Solder ball height if available.
413
411
 
414
412
  Returns
@@ -416,9 +414,10 @@ class Component(GrpcComponentGroup):
416
414
  float
417
415
  Balls height value.
418
416
  """
419
- if not self.component_property.solder_ball_property.is_null:
417
+ try:
420
418
  return self.component_property.solder_ball_property.height.value
421
- return None
419
+ except:
420
+ return 0.0
422
421
 
423
422
  @solder_ball_height.setter
424
423
  def solder_ball_height(self, value):
@@ -430,7 +429,7 @@ class Component(GrpcComponentGroup):
430
429
  self.component_property = cmp_property
431
430
 
432
431
  @property
433
- def solder_ball_shape(self):
432
+ def solder_ball_shape(self) -> str:
434
433
  """Solder ball shape.
435
434
 
436
435
  Returns
@@ -466,7 +465,7 @@ class Component(GrpcComponentGroup):
466
465
  self.component_property = cmp_property
467
466
 
468
467
  @property
469
- def solder_ball_diameter(self):
468
+ def solder_ball_diameter(self) -> float:
470
469
  """Solder ball diameter.
471
470
 
472
471
  Returns
@@ -507,7 +506,7 @@ class Component(GrpcComponentGroup):
507
506
  return solder_placement.value
508
507
 
509
508
  @property
510
- def refdes(self):
509
+ def refdes(self) -> str:
511
510
  """Reference Designator Name.
512
511
 
513
512
  Returns
@@ -522,7 +521,7 @@ class Component(GrpcComponentGroup):
522
521
  self.name = name
523
522
 
524
523
  @property
525
- def model_type(self):
524
+ def model_type(self) -> str:
526
525
  """Retrieve assigned model type.
527
526
 
528
527
  Returns
@@ -541,12 +540,12 @@ class Component(GrpcComponentGroup):
541
540
  return _model_type
542
541
 
543
542
  @property
544
- def rlc_values(self):
543
+ def rlc_values(self) -> list[list[float]]:
545
544
  """Get component rlc values.
546
545
 
547
546
  Returns
548
547
  -------
549
- List[Rvalue(float), Lvalue(float), Cvalue(float)].
548
+ list[list[Rvalue(float), Lvalue(float), Cvalue(float)]].
550
549
  """
551
550
  if not len(self._rlc):
552
551
  return [None, None, None]
@@ -588,7 +587,7 @@ class Component(GrpcComponentGroup):
588
587
  self.component_property = comp_property
589
588
 
590
589
  @property
591
- def value(self):
590
+ def value(self) -> float:
592
591
  """Retrieve discrete component value.
593
592
 
594
593
  Returns
@@ -612,7 +611,7 @@ class Component(GrpcComponentGroup):
612
611
  self.cap_value = value
613
612
 
614
613
  @property
615
- def res_value(self):
614
+ def res_value(self) -> float:
616
615
  """Resistance value.
617
616
 
618
617
  Returns
@@ -644,7 +643,7 @@ class Component(GrpcComponentGroup):
644
643
  self.component_property = comp_prop
645
644
 
646
645
  @property
647
- def cap_value(self):
646
+ def cap_value(self) -> float:
648
647
  """Capacitance Value.
649
648
 
650
649
  Returns
@@ -695,7 +694,7 @@ class Component(GrpcComponentGroup):
695
694
  return None
696
695
 
697
696
  @ind_value.setter
698
- def ind_value(self, value): # pragma no cover
697
+ def ind_value(self, value) -> float:
699
698
  if value:
700
699
  _rlc = []
701
700
  model = PinPairModel(self._pedb, GrpcPinPairModel.create())
@@ -710,7 +709,7 @@ class Component(GrpcComponentGroup):
710
709
  self.component_property = comp_prop
711
710
 
712
711
  @property
713
- def is_parallel_rlc(self):
712
+ def is_parallel_rlc(self) -> bool:
714
713
  """Define if model is Parallel or Series.
715
714
 
716
715
  Returns
@@ -738,7 +737,7 @@ class Component(GrpcComponentGroup):
738
737
  self.component_property = comp_property
739
738
 
740
739
  @property
741
- def center(self):
740
+ def center(self) -> list[float, float]:
742
741
  """Compute the component center.
743
742
 
744
743
  Returns
@@ -767,7 +766,7 @@ class Component(GrpcComponentGroup):
767
766
  super(Component, self.__class__).location.__set__(self, _location)
768
767
 
769
768
  @property
770
- def bounding_box(self):
769
+ def bounding_box(self) -> list[float]:
771
770
  """Component's bounding box.
772
771
 
773
772
  Returns
@@ -783,7 +782,7 @@ class Component(GrpcComponentGroup):
783
782
  return [pt1.x.value, pt1.y.value, pt2.x.value, pt2.y.value]
784
783
 
785
784
  @property
786
- def rotation(self):
785
+ def rotation(self) -> float:
787
786
  """Compute the component rotation in radian.
788
787
 
789
788
  Returns
@@ -794,7 +793,7 @@ class Component(GrpcComponentGroup):
794
793
  return self.transform.rotation.value
795
794
 
796
795
  @property
797
- def pinlist(self):
796
+ def pinlist(self) -> list[PadstackInstance]:
798
797
  """Pins of the component.
799
798
 
800
799
  Returns
@@ -820,7 +819,7 @@ class Component(GrpcComponentGroup):
820
819
  return list(set(nets))
821
820
 
822
821
  @property
823
- def pins(self):
822
+ def pins(self) -> dict[str, PadstackInstance]:
824
823
  """Component pins.
825
824
 
826
825
  Returns
@@ -837,7 +836,7 @@ class Component(GrpcComponentGroup):
837
836
  return _pins
838
837
 
839
838
  @property
840
- def type(self):
839
+ def type(self) -> str:
841
840
  """Component type.
842
841
 
843
842
  Returns
@@ -875,7 +874,7 @@ class Component(GrpcComponentGroup):
875
874
  return
876
875
 
877
876
  @property
878
- def numpins(self):
877
+ def numpins(self) -> int:
879
878
  """Number of Pins of Component.
880
879
 
881
880
  Returns
@@ -886,7 +885,7 @@ class Component(GrpcComponentGroup):
886
885
  return self.num_pins
887
886
 
888
887
  @property
889
- def partname(self): # pragma: no cover
888
+ def partname(self) -> str:
890
889
  """Component part name.
891
890
 
892
891
  Returns
@@ -902,7 +901,7 @@ class Component(GrpcComponentGroup):
902
901
  self.part_name = name
903
902
 
904
903
  @property
905
- def part_name(self):
904
+ def part_name(self) -> str:
906
905
  """Component part name.
907
906
 
908
907
  Returns
@@ -918,7 +917,7 @@ class Component(GrpcComponentGroup):
918
917
  self.component_def.name = name
919
918
 
920
919
  @property
921
- def placement_layer(self):
920
+ def placement_layer(self) -> str:
922
921
  """Placement layern name.
923
922
 
924
923
  Returns
@@ -929,7 +928,7 @@ class Component(GrpcComponentGroup):
929
928
  return super().placement_layer.name
930
929
 
931
930
  @property
932
- def layer(self):
931
+ def layer(self) -> StackupLayer:
933
932
  """Placement layern object.
934
933
 
935
934
  Returns
@@ -940,7 +939,7 @@ class Component(GrpcComponentGroup):
940
939
  return StackupLayer(self._pedb, super().placement_layer)
941
940
 
942
941
  @property
943
- def is_top_mounted(self):
942
+ def is_top_mounted(self) -> bool:
944
943
  """Check if a component is mounted on top or bottom of the layout.
945
944
 
946
945
  Returns
@@ -954,7 +953,7 @@ class Component(GrpcComponentGroup):
954
953
  return False
955
954
 
956
955
  @property
957
- def lower_elevation(self):
956
+ def lower_elevation(self) -> float:
958
957
  """Lower elevation of the placement layer.
959
958
 
960
959
  Returns
@@ -965,7 +964,7 @@ class Component(GrpcComponentGroup):
965
964
  return self.layer.lower_elevation
966
965
 
967
966
  @property
968
- def upper_elevation(self):
967
+ def upper_elevation(self) -> float:
969
968
  """Upper elevation of the placement layer.
970
969
 
971
970
  Returns
@@ -977,7 +976,7 @@ class Component(GrpcComponentGroup):
977
976
  return self.layer.upper_elevation
978
977
 
979
978
  @property
980
- def top_bottom_association(self):
979
+ def top_bottom_association(self) -> int:
981
980
  """Top/bottom association of the placement layer.
982
981
 
983
982
  Returns
@@ -1014,7 +1013,7 @@ class Component(GrpcComponentGroup):
1014
1013
  name: Optional[str] = None,
1015
1014
  sub_circuit_name: Optional[str] = None,
1016
1015
  terminal_pairs: Optional[list] = None,
1017
- ):
1016
+ ) -> SpiceModel:
1018
1017
  """Assign Spice model to this component.
1019
1018
 
1020
1019
  Parameters
@@ -1063,7 +1062,7 @@ class Component(GrpcComponentGroup):
1063
1062
  else:
1064
1063
  return False
1065
1064
 
1066
- def assign_s_param_model(self, file_path, name=None, reference_net=None):
1065
+ def assign_s_param_model(self, file_path, name=None, reference_net=None) -> GrpcNPortComponentModel:
1067
1066
  """Assign S-parameter to this component.
1068
1067
 
1069
1068
  Parameters
@@ -1073,6 +1072,9 @@ class Component(GrpcComponentGroup):
1073
1072
  name : str, optional
1074
1073
  Name of the S-parameter model.
1075
1074
 
1075
+ reference_net : str, optional
1076
+ Reference net.
1077
+
1076
1078
  Returns
1077
1079
  -------
1078
1080
  :class:`NPortComponentModel <ansys.edb.core.definition.component_model.ComponentModel>`
@@ -1099,7 +1101,7 @@ class Component(GrpcComponentGroup):
1099
1101
  model = GrpcSParameterModel.create(name=name, ref_net=reference_net)
1100
1102
  return self._set_model(model)
1101
1103
 
1102
- def use_s_parameter_model(self, name, reference_net=None):
1104
+ def use_s_parameter_model(self, name, reference_net=None) -> bool:
1103
1105
  """Use S-parameter model on the component.
1104
1106
 
1105
1107
  Parameters
@@ -1133,7 +1135,7 @@ class Component(GrpcComponentGroup):
1133
1135
  return self._set_model(s_param_model)
1134
1136
  return False
1135
1137
 
1136
- def assign_rlc_model(self, res=None, ind=None, cap=None, is_parallel=False):
1138
+ def assign_rlc_model(self, res=None, ind=None, cap=None, is_parallel=False) -> PinPairModel:
1137
1139
  """Assign RLC to this component.
1138
1140
 
1139
1141
  Parameters
@@ -1179,7 +1181,7 @@ class Component(GrpcComponentGroup):
1179
1181
  model.set_rlc(("1", "2"), rlc)
1180
1182
  return self._set_model(model)
1181
1183
 
1182
- def create_clearance_on_component(self, extra_soldermask_clearance=1e-4):
1184
+ def create_clearance_on_component(self, extra_soldermask_clearance=1e-4) -> bool:
1183
1185
  """Create a Clearance on Soldermask layer by drawing a rectangle.
1184
1186
 
1185
1187
  Parameters
@@ -1228,7 +1230,7 @@ class ICDieProperty:
1228
1230
  self._die_property = self._component.component_property.die_property
1229
1231
 
1230
1232
  @property
1231
- def die_orientation(self):
1233
+ def die_orientation(self) -> str:
1232
1234
  """Die orientation.
1233
1235
 
1234
1236
  Returns
@@ -1253,7 +1255,7 @@ class ICDieProperty:
1253
1255
  self._component.component_property = component_property
1254
1256
 
1255
1257
  @property
1256
- def die_type(self):
1258
+ def die_type(self) -> str:
1257
1259
  """Die type.
1258
1260
 
1259
1261
  Returns
@@ -1280,7 +1282,7 @@ class ICDieProperty:
1280
1282
  self._component.component_property = component_property
1281
1283
 
1282
1284
  @property
1283
- def height(self):
1285
+ def height(self) -> float:
1284
1286
  """Die height.
1285
1287
 
1286
1288
  Returns
@@ -1300,7 +1302,7 @@ class ICDieProperty:
1300
1302
  self._component.component_property = component_property
1301
1303
 
1302
1304
  @property
1303
- def is_null(self):
1305
+ def is_null(self) -> bool:
1304
1306
  """Test is die is null.
1305
1307
 
1306
1308
  Returns
@@ -34,7 +34,7 @@ class PinPairModel(GrpcPinPairModel):
34
34
  super().__init__(edb_object.msg)
35
35
 
36
36
  @property
37
- def rlc(self):
37
+ def rlc(self) -> tuple[str, str]:
38
38
  """Rlc mdodel.
39
39
 
40
40
  Returns
@@ -45,7 +45,7 @@ class PinPairModel(GrpcPinPairModel):
45
45
  return super().rlc(self.pin_pairs()[0])
46
46
 
47
47
  @property
48
- def rlc_enable(self):
48
+ def rlc_enable(self) -> list[bool]:
49
49
  """Enable model.
50
50
 
51
51
  Returns
@@ -62,7 +62,7 @@ class PinPairModel(GrpcPinPairModel):
62
62
  self.rlc.c_enabled = GrpcValue(value[2])
63
63
 
64
64
  @property
65
- def resistance(self):
65
+ def resistance(self) -> float:
66
66
  """Resistance.
67
67
 
68
68
  Returns
@@ -78,7 +78,7 @@ class PinPairModel(GrpcPinPairModel):
78
78
  self.rlc.r = GrpcValue(value)
79
79
 
80
80
  @property
81
- def inductance(self):
81
+ def inductance(self) -> float:
82
82
  """Inductance.
83
83
 
84
84
  Returns
@@ -94,7 +94,7 @@ class PinPairModel(GrpcPinPairModel):
94
94
  self.rlc.l = GrpcValue(value)
95
95
 
96
96
  @property
97
- def capacitance(self):
97
+ def capacitance(self) -> float:
98
98
  """Capacitance.
99
99
 
100
100
  Returns
@@ -110,7 +110,7 @@ class PinPairModel(GrpcPinPairModel):
110
110
  self.rlc.c = GrpcValue(value)
111
111
 
112
112
  @property
113
- def rlc_values(self): # pragma: no cover
113
+ def rlc_values(self) -> list[float]:
114
114
  """Rlc value.
115
115
 
116
116
  Returns
@@ -21,6 +21,8 @@
21
21
  # SOFTWARE.
22
22
 
23
23
 
24
+ from typing import Union
25
+
24
26
  from ansys.edb.core.hierarchy.pin_group import PinGroup as GrpcPinGroup
25
27
  from ansys.edb.core.terminal.terminal import BoundaryType as GrpcBoundaryType
26
28
  from ansys.edb.core.utility.value import Value as GrpcValue
@@ -53,7 +55,7 @@ class PinGroup(GrpcPinGroup):
53
55
  return self._pedb.active_layout
54
56
 
55
57
  @property
56
- def component(self):
58
+ def component(self) -> Component:
57
59
  """Component.
58
60
 
59
61
  Return
@@ -69,7 +71,7 @@ class PinGroup(GrpcPinGroup):
69
71
  super(PinGroup, self.__class__).component.__set__(self, value)
70
72
 
71
73
  @property
72
- def pins(self):
74
+ def pins(self) -> dict[str, PadstackInstance]:
73
75
  """Pin group pins.
74
76
 
75
77
  Returns
@@ -79,7 +81,7 @@ class PinGroup(GrpcPinGroup):
79
81
  return {i.name: PadstackInstance(self._pedb, i) for i in super().pins}
80
82
 
81
83
  @property
82
- def net(self):
84
+ def net(self) -> Net:
83
85
  """Net.
84
86
 
85
87
  Returns
@@ -94,7 +96,7 @@ class PinGroup(GrpcPinGroup):
94
96
  super(PinGroup, self.__class__).net.__set__(self, value)
95
97
 
96
98
  @property
97
- def net_name(self):
99
+ def net_name(self) -> str:
98
100
  """Net name.
99
101
 
100
102
  Returns
@@ -106,7 +108,7 @@ class PinGroup(GrpcPinGroup):
106
108
  return self.net.name
107
109
 
108
110
  @property
109
- def terminal(self):
111
+ def terminal(self) -> Union[PinGroupTerminal, None]:
110
112
  """Terminal."""
111
113
  term = self.pin_group_terminal
112
114
  if not term.is_null:
@@ -115,7 +117,7 @@ class PinGroup(GrpcPinGroup):
115
117
  else:
116
118
  return None
117
119
 
118
- def create_terminal(self, name=None):
120
+ def create_terminal(self, name=None) -> PinGroupTerminal:
119
121
  """Create a terminal.
120
122
 
121
123
  Parameters
@@ -136,7 +138,7 @@ class PinGroup(GrpcPinGroup):
136
138
  )
137
139
  return PinGroupTerminal(self._pedb, term)
138
140
 
139
- def _json_format(self):
141
+ def _json_format(self) -> dict[str, any]:
140
142
  """Format json.
141
143
 
142
144
  Returns
@@ -146,7 +148,7 @@ class PinGroup(GrpcPinGroup):
146
148
  dict_out = {"component": self.component, "name": self.name, "net": self.net, "node_type": self.node_type}
147
149
  return dict_out
148
150
 
149
- def create_current_source_terminal(self, magnitude=1.0, phase=0, impedance=1e6):
151
+ def create_current_source_terminal(self, magnitude=1.0, phase=0, impedance=1e6) -> PinGroupTerminal:
150
152
  """Create current source terminal.
151
153
 
152
154
  Parameters
@@ -171,7 +173,7 @@ class PinGroup(GrpcPinGroup):
171
173
  terminal.impedance = GrpcValue(impedance)
172
174
  return terminal
173
175
 
174
- def create_voltage_source_terminal(self, magnitude=1, phase=0, impedance=0.001):
176
+ def create_voltage_source_terminal(self, magnitude=1, phase=0, impedance=0.001) -> PinGroupTerminal:
175
177
  """Create voltage source terminal.
176
178
 
177
179
  Parameters
@@ -196,7 +198,7 @@ class PinGroup(GrpcPinGroup):
196
198
  terminal.impedance = GrpcValue(impedance)
197
199
  return terminal
198
200
 
199
- def create_voltage_probe_terminal(self, impedance=1e6):
201
+ def create_voltage_probe_terminal(self, impedance=1e6) -> PinGroupTerminal:
200
202
  """Create voltage probe terminal.
201
203
 
202
204
  Parameters
@@ -215,7 +217,7 @@ class PinGroup(GrpcPinGroup):
215
217
  terminal.impedance = GrpcValue(impedance)
216
218
  return terminal
217
219
 
218
- def create_port_terminal(self, impedance=50):
220
+ def create_port_terminal(self, impedance=50) -> PinGroupTerminal:
219
221
  """Create port terminal.
220
222
 
221
223
  Parameters
@@ -29,5 +29,5 @@ class SparamModel(GrpcSParameterModel): # pragma: no cover
29
29
  """Manage :class:`SParameterModel <ansys.edb.core.hierarchy.sparameter_model.SParameterModel>`"""
30
30
 
31
31
  def __init__(self, edb_object):
32
- super().__init__(self.msg)
32
+ super().__init__(edb_object.msg)
33
33
  self._edb_model = edb_object
@@ -28,7 +28,7 @@ class SpiceModel(GrpcSpiceModel): # pragma: no cover
28
28
 
29
29
  def __init__(self, edb_object=None, name=None, file_path=None, sub_circuit=None):
30
30
  if edb_object:
31
- super().__init__(edb_object)
31
+ super().__init__(edb_object.msg)
32
32
  elif name and file_path:
33
33
  if not sub_circuit:
34
34
  sub_circuit = name
@@ -53,7 +53,7 @@ class Layer(GrpcLayer):
53
53
  self._pedb.logger.error(f"{k} is not a valid layer attribute")
54
54
 
55
55
  @property
56
- def properties(self):
56
+ def properties(self) -> dict[str, str]:
57
57
  from ansys.edb.core.layer.stackup_layer import StackupLayer as GrpcStackupLayer
58
58
 
59
59
  from pyedb.grpc.database.stackup import StackupLayer
@@ -77,7 +77,7 @@ class Layer(GrpcLayer):
77
77
  self.color = color
78
78
 
79
79
  @property
80
- def type(self):
80
+ def type(self) -> str:
81
81
  return super().type.name.lower().split("_")[0]
82
82
 
83
83
  @property