pyedb 0.23.0__tar.gz → 0.24.0__tar.gz

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 (192) hide show
  1. {pyedb-0.23.0 → pyedb-0.24.0}/PKG-INFO +2 -2
  2. {pyedb-0.23.0 → pyedb-0.24.0}/pyproject.toml +1 -1
  3. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/__init__.py +1 -1
  4. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb.py +35 -33
  5. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/cell/hierarchy/hierarchy_obj.py +11 -0
  6. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/cell/layout.py +30 -23
  7. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/cell/layout_obj.py +0 -9
  8. pyedb-0.23.0/src/pyedb/dotnet/edb_core/cell/primitive.py → pyedb-0.24.0/src/pyedb/dotnet/edb_core/cell/primitive/bondwire.py +1 -146
  9. pyedb-0.24.0/src/pyedb/dotnet/edb_core/cell/primitive/path.py +351 -0
  10. pyedb-0.24.0/src/pyedb/dotnet/edb_core/cell/primitive/primitive.py +895 -0
  11. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/cell/terminal/bundle_terminal.py +0 -4
  12. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/cell/terminal/edge_terminal.py +1 -1
  13. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/components.py +12 -5
  14. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/dotnet/database.py +1 -23
  15. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/dotnet/primitive.py +3 -139
  16. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/edb_data/nets_data.py +1 -11
  17. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/edb_data/padstacks_data.py +10 -24
  18. pyedb-0.24.0/src/pyedb/dotnet/edb_core/edb_data/primitives_data.py +499 -0
  19. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/geometry/polygon_data.py +43 -0
  20. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/hfss.py +26 -22
  21. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/layout_validation.py +3 -3
  22. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/modeler.py +64 -81
  23. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/nets.py +5 -4
  24. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/padstack.py +12 -13
  25. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/siwave.py +1 -1
  26. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/stackup.py +3 -3
  27. pyedb-0.24.0/src/pyedb/dotnet/edb_core/utilities/__init__.py +3 -0
  28. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/cad_data/layer_feature.py +1 -1
  29. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/cad_data/polygon.py +2 -2
  30. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/cad_data/step.py +2 -2
  31. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/siwave.py +99 -0
  32. pyedb-0.23.0/src/pyedb/dotnet/edb_core/edb_data/primitives_data.py +0 -1311
  33. {pyedb-0.23.0 → pyedb-0.24.0}/LICENSE +0 -0
  34. {pyedb-0.23.0 → pyedb-0.24.0}/README.md +0 -0
  35. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/component_libraries/ansys_components.py +0 -0
  36. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/configuration/__init__.py +0 -0
  37. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/configuration/cfg_boundaries.py +0 -0
  38. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/configuration/cfg_common.py +0 -0
  39. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/configuration/cfg_components.py +0 -0
  40. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/configuration/cfg_data.py +0 -0
  41. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/configuration/cfg_general.py +0 -0
  42. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/configuration/cfg_nets.py +0 -0
  43. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/configuration/cfg_operations.py +0 -0
  44. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/configuration/cfg_package_definition.py +0 -0
  45. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/configuration/cfg_padstacks.py +0 -0
  46. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/configuration/cfg_pin_groups.py +0 -0
  47. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/configuration/cfg_ports_sources.py +0 -0
  48. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/configuration/cfg_s_parameter_models.py +0 -0
  49. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/configuration/cfg_setup.py +0 -0
  50. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/configuration/cfg_spice_models.py +0 -0
  51. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/configuration/cfg_stackup.py +0 -0
  52. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/configuration/configuration.py +0 -0
  53. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/__init__.py +0 -0
  54. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/application/Variables.py +0 -0
  55. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/application/__init__.py +0 -0
  56. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/clr_module.py +0 -0
  57. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/__init__.py +0 -0
  58. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/cell/__init__.py +0 -0
  59. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/cell/connectable.py +0 -0
  60. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/cell/hierarchy/__init__.py +0 -0
  61. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/cell/hierarchy/component.py +0 -0
  62. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/cell/hierarchy/model.py +0 -0
  63. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/cell/hierarchy/netlist_model.py +0 -0
  64. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/cell/hierarchy/pin_pair_model.py +0 -0
  65. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/cell/hierarchy/s_parameter_model.py +0 -0
  66. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/cell/hierarchy/spice_model.py +0 -0
  67. {pyedb-0.23.0/src/pyedb/dotnet/edb_core/sim_setup_data → pyedb-0.24.0/src/pyedb/dotnet/edb_core/cell/primitive}/__init__.py +0 -0
  68. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/cell/terminal/__init__.py +0 -0
  69. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/cell/terminal/padstack_instance_terminal.py +0 -0
  70. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/cell/terminal/pingroup_terminal.py +0 -0
  71. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/cell/terminal/point_terminal.py +0 -0
  72. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/cell/terminal/terminal.py +0 -0
  73. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/cell/voltage_regulator.py +0 -0
  74. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/definition/__init__.py +0 -0
  75. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/definition/component_def.py +0 -0
  76. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/definition/component_model.py +0 -0
  77. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/definition/definition_obj.py +0 -0
  78. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/definition/definitions.py +0 -0
  79. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/definition/package_def.py +0 -0
  80. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/dotnet/__init__.py +0 -0
  81. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/edb_data/__init__.py +0 -0
  82. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/edb_data/control_file.py +0 -0
  83. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/edb_data/design_options.py +0 -0
  84. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/edb_data/edbvalue.py +0 -0
  85. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/edb_data/hfss_extent_info.py +0 -0
  86. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/edb_data/layer_data.py +0 -0
  87. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/edb_data/ports.py +0 -0
  88. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/edb_data/raptor_x_simulation_setup_data.py +0 -0
  89. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/edb_data/simulation_configuration.py +0 -0
  90. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/edb_data/sources.py +0 -0
  91. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/edb_data/utilities.py +0 -0
  92. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/edb_data/variables.py +0 -0
  93. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/general.py +0 -0
  94. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/geometry/__init__.py +0 -0
  95. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/geometry/point_data.py +0 -0
  96. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/layout_obj_instance.py +0 -0
  97. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/materials.py +0 -0
  98. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/net_class.py +0 -0
  99. {pyedb-0.23.0/src/pyedb/dotnet/edb_core/sim_setup_data/data → pyedb-0.24.0/src/pyedb/dotnet/edb_core/sim_setup_data}/__init__.py +0 -0
  100. {pyedb-0.23.0/src/pyedb/dotnet/edb_core/utilities → pyedb-0.24.0/src/pyedb/dotnet/edb_core/sim_setup_data/data}/__init__.py +0 -0
  101. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/sim_setup_data/data/adaptive_frequency_data.py +0 -0
  102. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/sim_setup_data/data/mesh_operation.py +0 -0
  103. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/sim_setup_data/data/settings.py +0 -0
  104. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/sim_setup_data/data/sim_setup_info.py +0 -0
  105. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/sim_setup_data/data/simulation_settings.py +0 -0
  106. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/sim_setup_data/data/siw_dc_ir_settings.py +0 -0
  107. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/sim_setup_data/data/sweep_data.py +0 -0
  108. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/sim_setup_data/io/__init__.py +0 -0
  109. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/sim_setup_data/io/siwave.py +0 -0
  110. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/utilities/heatsink.py +0 -0
  111. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/utilities/hfss_simulation_setup.py +0 -0
  112. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/utilities/obj_base.py +0 -0
  113. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/utilities/simulation_setup.py +0 -0
  114. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/dotnet/edb_core/utilities/siwave_simulation_setup.py +0 -0
  115. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/edb_logger.py +0 -0
  116. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/exceptions.py +0 -0
  117. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/generic/__init__.py +0 -0
  118. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/generic/constants.py +0 -0
  119. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/generic/data_handlers.py +0 -0
  120. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/generic/design_types.py +0 -0
  121. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/generic/filesystem.py +0 -0
  122. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/generic/general_methods.py +0 -0
  123. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/generic/plot.py +0 -0
  124. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/generic/process.py +0 -0
  125. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/generic/settings.py +0 -0
  126. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/__init__.py +0 -0
  127. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/bom/__init__.py +0 -0
  128. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/bom/bom.py +0 -0
  129. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/bom/bom_item.py +0 -0
  130. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/bom/characteristics.py +0 -0
  131. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/bom/refdes.py +0 -0
  132. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/content/__init__.py +0 -0
  133. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/content/color.py +0 -0
  134. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/content/content.py +0 -0
  135. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/content/dictionary_color.py +0 -0
  136. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/content/dictionary_fill.py +0 -0
  137. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/content/dictionary_line.py +0 -0
  138. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/content/entry_color.py +0 -0
  139. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/content/entry_line.py +0 -0
  140. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/content/fill.py +0 -0
  141. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/content/layer_ref.py +0 -0
  142. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/content/standard_geometries_dictionary.py +0 -0
  143. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/__init__.py +0 -0
  144. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/cad_data/__init__.py +0 -0
  145. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/cad_data/assembly_drawing.py +0 -0
  146. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/cad_data/cad_data.py +0 -0
  147. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/cad_data/component.py +0 -0
  148. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/cad_data/drill.py +0 -0
  149. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/cad_data/feature.py +0 -0
  150. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/cad_data/layer.py +0 -0
  151. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/cad_data/logical_net.py +0 -0
  152. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/cad_data/outline.py +0 -0
  153. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/cad_data/package.py +0 -0
  154. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_def.py +0 -0
  155. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_hole_def.py +0 -0
  156. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_instance.py +0 -0
  157. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_pad_def.py +0 -0
  158. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/cad_data/path.py +0 -0
  159. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/cad_data/phy_net.py +0 -0
  160. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/cad_data/pin.py +0 -0
  161. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/cad_data/profile.py +0 -0
  162. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/cad_data/stackup.py +0 -0
  163. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_group.py +0 -0
  164. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_layer.py +0 -0
  165. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/cad_header.py +0 -0
  166. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/ecad.py +0 -0
  167. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ecad/spec.py +0 -0
  168. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/history_record.py +0 -0
  169. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/ipc2581.py +0 -0
  170. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/ipc2581/logistic_header.py +0 -0
  171. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/misc/__init__.py +0 -0
  172. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/misc/aedtlib_personalib_install.py +0 -0
  173. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/misc/downloads.py +0 -0
  174. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/misc/misc.py +0 -0
  175. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/misc/pyedb.runtimeconfig.json +0 -0
  176. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/misc/siw_feature_config/__init__.py +0 -0
  177. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/misc/siw_feature_config/emc/__init__.py +0 -0
  178. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/misc/siw_feature_config/emc/component_tags.py +0 -0
  179. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/misc/siw_feature_config/emc/net_tags.py +0 -0
  180. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/misc/siw_feature_config/emc/tag_library.py +0 -0
  181. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/misc/siw_feature_config/emc/xml_generic.py +0 -0
  182. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/misc/siw_feature_config/emc_rule_checker_settings.py +0 -0
  183. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/fd_xtalk_scan_config.py +0 -0
  184. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/impedance_scan_config.py +0 -0
  185. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/net.py +0 -0
  186. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/pins.py +0 -0
  187. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/scan_config.py +0 -0
  188. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/td_xtalk_config.py +0 -0
  189. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/misc/utilities.py +0 -0
  190. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/modeler/geometry_operators.py +0 -0
  191. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/siwave_core/icepak.py +0 -0
  192. {pyedb-0.23.0 → pyedb-0.24.0}/src/pyedb/workflow.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyedb
3
- Version: 0.23.0
3
+ Version: 0.24.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>
@@ -40,7 +40,7 @@ Requires-Dist: Sphinx>=7.1.0,<7.4 ; extra == "doc"
40
40
  Requires-Dist: sphinx-autobuild==2024.2.4 ; extra == "doc" and ( python_version == '3.8')
41
41
  Requires-Dist: sphinx-autobuild==2024.2.4 ; extra == "doc" and ( python_version > '3.8')
42
42
  Requires-Dist: sphinx-copybutton>=0.5.0,<0.6 ; extra == "doc"
43
- Requires-Dist: sphinx-gallery>=0.14.0,<0.17 ; extra == "doc"
43
+ Requires-Dist: sphinx-gallery>=0.14.0,<0.18 ; extra == "doc"
44
44
  Requires-Dist: sphinx_design>=0.4.0,<0.7 ; extra == "doc"
45
45
  Requires-Dist: matplotlib>=3.5.0,<3.10 ; extra == "full"
46
46
  Requires-Dist: matplotlib>=3.5.0,<3.10 ; extra == "tests"
@@ -63,7 +63,7 @@ doc = [
63
63
  "sphinx-autobuild==2024.2.4; python_version == '3.8'",
64
64
  "sphinx-autobuild==2024.2.4; python_version > '3.8'",
65
65
  "sphinx-copybutton>=0.5.0,<0.6",
66
- "sphinx-gallery>=0.14.0,<0.17",
66
+ "sphinx-gallery>=0.14.0,<0.18",
67
67
  "sphinx_design>=0.4.0,<0.7",
68
68
  ]
69
69
  full = [
@@ -44,7 +44,7 @@ deprecation_warning()
44
44
  #
45
45
 
46
46
  pyedb_path = os.path.dirname(__file__)
47
- __version__ = "0.23.0"
47
+ __version__ = "0.24.0"
48
48
  version = __version__
49
49
 
50
50
  #
@@ -454,13 +454,13 @@ class Edb(Database):
454
454
  @property
455
455
  def excitations(self):
456
456
  """Get all layout excitations."""
457
- terms = [term for term in self.layout.terminals if int(term.GetBoundaryType()) == 0]
457
+ terms = [term for term in self.layout.terminals if int(term._edb_object.GetBoundaryType()) == 0]
458
458
  temp = {}
459
459
  for ter in terms:
460
- if "BundleTerminal" in ter.GetType().ToString():
461
- temp[ter.GetName()] = BundleWavePort(self, ter)
460
+ if "BundleTerminal" in ter._edb_object.GetType().ToString():
461
+ temp[ter.name] = BundleWavePort(self, ter._edb_object)
462
462
  else:
463
- temp[ter.GetName()] = GapPort(self, ter)
463
+ temp[ter.name] = GapPort(self, ter._edb_object)
464
464
  return temp
465
465
 
466
466
  @property
@@ -473,41 +473,41 @@ class Edb(Database):
473
473
  :class:`pyedb.dotnet.edb_core.edb_data.ports.WavePort`,]]
474
474
 
475
475
  """
476
- temp = [term for term in self.layout.terminals if not term.IsReferenceTerminal()]
476
+ temp = [term for term in self.layout.terminals if not term.is_reference_terminal]
477
477
 
478
478
  ports = {}
479
479
  for t in temp:
480
- t2 = Terminal(self, t)
480
+ t2 = Terminal(self, t._edb_object)
481
481
  if not t2.boundary_type == "PortBoundary":
482
482
  continue
483
483
 
484
484
  if t2.is_circuit_port:
485
- port = CircuitPort(self, t)
485
+ port = CircuitPort(self, t._edb_object)
486
486
  ports[port.name] = port
487
487
  elif t2.terminal_type == "BundleTerminal":
488
- port = BundleWavePort(self, t)
488
+ port = BundleWavePort(self, t._edb_object)
489
489
  ports[port.name] = port
490
490
  elif t2.hfss_type == "Wave":
491
- ports[t2.name] = WavePort(self, t)
491
+ ports[t2.name] = WavePort(self, t._edb_object)
492
492
  elif t2.terminal_type == "PadstackInstanceTerminal":
493
- ports[t2.name] = CoaxPort(self, t)
493
+ ports[t2.name] = CoaxPort(self, t._edb_object)
494
494
  else:
495
- ports[t2.name] = GapPort(self, t)
495
+ ports[t2.name] = GapPort(self, t._edb_object)
496
496
  return ports
497
497
 
498
498
  @property
499
499
  def excitations_nets(self):
500
500
  """Get all excitations net names."""
501
- names = list(set([i.GetNet().GetName() for i in self.layout.terminals]))
501
+ names = list(set([i.net.name for i in self.layout.terminals]))
502
502
  names = [i for i in names if i]
503
503
  return names
504
504
 
505
505
  @property
506
506
  def sources(self):
507
507
  """Get all layout sources."""
508
- terms = [term for term in self.layout.terminals if int(term.GetBoundaryType()) in [3, 4, 7]]
509
- terms = [term for term in terms if not term.IsReferenceTerminal()]
510
- return {ter.GetName(): ExcitationSources(self, ter) for ter in terms}
508
+ terms = [term for term in self.layout.terminals if int(term._edb_object.GetBoundaryType()) in [3, 4, 7]]
509
+ terms = [term for term in terms if not term._edb_object.IsReferenceTerminal()]
510
+ return {ter.name: ExcitationSources(self, ter._edb_object) for ter in terms}
511
511
 
512
512
  @property
513
513
  def voltage_regulator_modules(self):
@@ -1167,9 +1167,9 @@ class Edb(Database):
1167
1167
  elif obj_type == LayoutObjType.Primitive.name:
1168
1168
  prim_type = i.GetPrimitiveType().ToString()
1169
1169
  if prim_type == Primitives.Path.name:
1170
- from pyedb.dotnet.edb_core.edb_data.primitives_data import EdbPath
1170
+ from pyedb.dotnet.edb_core.cell.primitive.path import Path
1171
1171
 
1172
- temp.append(EdbPath(i, self))
1172
+ temp.append(Path(self, i))
1173
1173
  elif prim_type == Primitives.Rectangle.name:
1174
1174
  from pyedb.dotnet.edb_core.edb_data.primitives_data import (
1175
1175
  EdbRectangle,
@@ -1669,11 +1669,11 @@ class Edb(Database):
1669
1669
  from pyedb.dotnet.clr_module import Tuple
1670
1670
 
1671
1671
  _polys = []
1672
- terms = [term for term in self.layout.terminals if int(term.GetBoundaryType()) in [0, 3, 4, 7, 8]]
1672
+ terms = [term for term in self.layout.terminals if int(term._edb_object.GetBoundaryType()) in [0, 3, 4, 7, 8]]
1673
1673
  locations = []
1674
1674
  for term in terms:
1675
- if term.GetTerminalType().ToString() == "PointTerminal" and term.GetNet().GetName() in reference_list:
1676
- pd = term.GetParameters()[1]
1675
+ if term._edb_object.GetTerminalType().ToString() == "PointTerminal" and term.net.name in reference_list:
1676
+ pd = term._edb_object.GetParameters()[1]
1677
1677
  locations.append([pd.X.ToDouble(), pd.Y.ToDouble()])
1678
1678
  for point in locations:
1679
1679
  pointA = self.edb_api.geometry.point_data(
@@ -2214,11 +2214,13 @@ class Edb(Database):
2214
2214
  if pin.pingroups:
2215
2215
  pins_to_preserve.append(pin.id)
2216
2216
  if check_terminals:
2217
- terms = [term for term in self.layout.terminals if int(term.GetBoundaryType()) in [0, 3, 4, 7, 8]]
2217
+ terms = [
2218
+ term for term in self.layout.terminals if int(term._edb_object.GetBoundaryType()) in [0, 3, 4, 7, 8]
2219
+ ]
2218
2220
  for term in terms:
2219
- if term.GetTerminalType().ToString() == "PadstackInstanceTerminal":
2220
- if term.GetParameters()[1].GetNet().GetName() in reference_list:
2221
- pins_to_preserve.append(term.GetParameters()[1].GetId())
2221
+ if term._edb_object.GetTerminalType().ToString() == "PadstackInstanceTerminal":
2222
+ if term._edb_object.GetParameters()[1].GetNet().GetName() in reference_list:
2223
+ pins_to_preserve.append(term._edb_object.GetParameters()[1].GetId())
2222
2224
 
2223
2225
  for i in self.nets.nets.values():
2224
2226
  name = i.name
@@ -2309,7 +2311,7 @@ class Edb(Database):
2309
2311
  return poly.Subtract(convert_py_list_to_net_list(poly), convert_py_list_to_net_list(voids))
2310
2312
 
2311
2313
  def clip_path(path):
2312
- pdata = path.polygon_data.edb_api
2314
+ pdata = path.polygon_data._edb_object
2313
2315
  int_data = _poly.GetIntersectionType(pdata)
2314
2316
  if int_data == 0:
2315
2317
  prims_to_delete.append(path)
@@ -2320,7 +2322,7 @@ class Edb(Database):
2320
2322
  reference_prims.append(path)
2321
2323
 
2322
2324
  def clean_prim(prim_1): # pragma: no cover
2323
- pdata = prim_1.polygon_data.edb_api
2325
+ pdata = prim_1.polygon_data._edb_object
2324
2326
  int_data = _poly.GetIntersectionType(pdata)
2325
2327
  if int_data == 2:
2326
2328
  if not inlcude_voids_in_extents:
@@ -2347,7 +2349,7 @@ class Edb(Database):
2347
2349
  # points = list(p.Points)
2348
2350
  list_void = []
2349
2351
  if voids:
2350
- voids_data = [void.polygon_data.edb_api for void in voids]
2352
+ voids_data = [void.polygon_data._edb_object for void in voids]
2351
2353
  list_prims = subtract(p, voids_data)
2352
2354
  for prim in list_prims:
2353
2355
  if not prim.IsNull():
@@ -4445,10 +4447,10 @@ class Edb(Database):
4445
4447
  for poly in polys:
4446
4448
  for void in poly.voids:
4447
4449
  void_bbox = (
4448
- void.polygon_data.edb_api.GetBBox().Item1.X.ToDouble(),
4449
- void.polygon_data.edb_api.GetBBox().Item1.Y.ToDouble(),
4450
- void.polygon_data.edb_api.GetBBox().Item2.X.ToDouble(),
4451
- void.polygon_data.edb_api.GetBBox().Item2.Y.ToDouble(),
4450
+ void.polygon_data._edb_object.GetBBox().Item1.X.ToDouble(),
4451
+ void.polygon_data._edb_object.GetBBox().Item1.Y.ToDouble(),
4452
+ void.polygon_data._edb_object.GetBBox().Item2.X.ToDouble(),
4453
+ void.polygon_data._edb_object.GetBBox().Item2.Y.ToDouble(),
4452
4454
  )
4453
4455
  included_instances = list(padstack_instances_index.intersection(void_bbox))
4454
4456
  if included_instances:
@@ -4481,10 +4483,10 @@ class Edb(Database):
4481
4483
 
4482
4484
  for void_info in void_padstacks:
4483
4485
  port_poly = cloned_edb.modeler.create_polygon(
4484
- main_shape=void_info[0].polygon_data.edb_api, layer_name="ref", net_name="GND"
4486
+ main_shape=void_info[0].polygon_data._edb_object, layer_name="ref", net_name="GND"
4485
4487
  )
4486
4488
  pec_poly = cloned_edb.modeler.create_polygon(
4487
- main_shape=port_poly.polygon_data.edb_api, layer_name="port_pec", net_name="GND"
4489
+ main_shape=port_poly.polygon_data._edb_object, layer_name="port_pec", net_name="GND"
4488
4490
  )
4489
4491
  pec_poly.scale(1.5)
4490
4492
 
@@ -48,3 +48,14 @@ class HierarchyObj(Connectable):
48
48
  class Group(HierarchyObj):
49
49
  def __init__(self, pedb, edb_object):
50
50
  super().__init__(pedb, edb_object)
51
+
52
+ def ungroup(self, recursive=False):
53
+ """Dissolve a group.
54
+
55
+ Parameters
56
+ ----------
57
+ recursive : bool, optional
58
+ If True, all subgroups will also be dissolved.
59
+
60
+ """
61
+ return self._edb_object.Ungroup(recursive)
@@ -24,7 +24,8 @@
24
24
  This module contains these classes: `EdbLayout` and `Shape`.
25
25
  """
26
26
  from pyedb.dotnet.edb_core.cell.hierarchy.component import EDBComponent
27
- from pyedb.dotnet.edb_core.cell.primitive import Bondwire
27
+ from pyedb.dotnet.edb_core.cell.primitive.bondwire import Bondwire
28
+ from pyedb.dotnet.edb_core.cell.primitive.path import Path
28
29
  from pyedb.dotnet.edb_core.cell.terminal.bundle_terminal import BundleTerminal
29
30
  from pyedb.dotnet.edb_core.cell.terminal.edge_terminal import EdgeTerminal
30
31
  from pyedb.dotnet.edb_core.cell.terminal.padstack_instance_terminal import (
@@ -42,7 +43,6 @@ from pyedb.dotnet.edb_core.edb_data.nets_data import (
42
43
  from pyedb.dotnet.edb_core.edb_data.padstacks_data import EDBPadstackInstance
43
44
  from pyedb.dotnet.edb_core.edb_data.primitives_data import (
44
45
  EdbCircle,
45
- EdbPath,
46
46
  EdbPolygon,
47
47
  EdbRectangle,
48
48
  EdbText,
@@ -206,26 +206,8 @@ class Layout(ObjBase):
206
206
  """
207
207
  prims = []
208
208
  for p in self._edb_object.Primitives:
209
- if p.GetPrimitiveType().ToString() == "Rectangle":
210
- prims.append(EdbRectangle(p, self._pedb))
211
- elif p.GetPrimitiveType().ToString() == "Circle":
212
- prims.append(EdbCircle(p, self._pedb))
213
- elif p.GetPrimitiveType().ToString() == "Polygon":
214
- prims.append(EdbPolygon(p, self._pedb))
215
- elif p.GetPrimitiveType().ToString() == "Path":
216
- prims.append(EdbPath(p, self._pedb))
217
- elif p.GetPrimitiveType().ToString() == "Bondwire":
218
- prims.append(Bondwire(self._pedb, p))
219
- elif p.GetPrimitiveType().ToString() == "Text":
220
- prims.append(EdbText(p, self._pedb))
221
- elif p.GetPrimitiveType().ToString() == "PrimitivePlugin":
222
- pass
223
- elif p.GetPrimitiveType().ToString() == "Path3D":
224
- pass
225
- elif p.GetPrimitiveType().ToString() == "BoardBendDef":
226
- pass
227
- else:
228
- pass
209
+ obj = self.find_object_by_id(p.GetId())
210
+ prims.append(obj)
229
211
  return prims
230
212
 
231
213
  @property
@@ -293,8 +275,33 @@ class Layout(ObjBase):
293
275
  ID of the object.
294
276
  """
295
277
  obj = self._pedb._edb.Cell.Connectable.FindById(self._edb_object, value)
278
+ if obj is None:
279
+ raise RuntimeError(f"Object Id {value} not found")
280
+
296
281
  if obj.GetObjType().ToString() == "PadstackInstance":
297
- return EDBPadstackInstance(obj, self._pedb) if obj is not None else None
282
+ return EDBPadstackInstance(obj, self._pedb)
283
+
284
+ if obj.GetObjType().ToString() == "Primitive":
285
+ if obj.GetPrimitiveType().ToString() == "Rectangle":
286
+ return EdbRectangle(obj, self._pedb)
287
+ elif obj.GetPrimitiveType().ToString() == "Circle":
288
+ return EdbCircle(obj, self._pedb)
289
+ elif obj.GetPrimitiveType().ToString() == "Polygon":
290
+ return EdbPolygon(obj, self._pedb)
291
+ elif obj.GetPrimitiveType().ToString() == "Path":
292
+ return Path(self._pedb, obj)
293
+ elif obj.GetPrimitiveType().ToString() == "Bondwire":
294
+ return Bondwire(self._pedb, obj)
295
+ elif obj.GetPrimitiveType().ToString() == "Text":
296
+ return EdbText(obj, self._pedb)
297
+ elif obj.GetPrimitiveType().ToString() == "PrimitivePlugin":
298
+ pass
299
+ elif obj.GetPrimitiveType().ToString() == "Path3D":
300
+ pass
301
+ elif obj.GetPrimitiveType().ToString() == "BoardBendDef":
302
+ pass
303
+ else:
304
+ pass
298
305
 
299
306
  def find_net_by_name(self, value: str):
300
307
  """Find a net object by name
@@ -27,15 +27,6 @@ from pyedb.dotnet.edb_core.utilities.obj_base import ObjBase
27
27
  class LayoutObj(ObjBase):
28
28
  """Manages EDB functionalities for the layout object."""
29
29
 
30
- def __getattr__(self, key): # pragma: no cover
31
- try:
32
- return super().__getattribute__(key)
33
- except AttributeError:
34
- try:
35
- return getattr(self._edb_object, key)
36
- except AttributeError:
37
- raise AttributeError(f"Attribute '{key}' not present")
38
-
39
30
  def __init__(self, pedb, edb_object):
40
31
  super().__init__(pedb, edb_object)
41
32
 
@@ -20,152 +20,7 @@
20
20
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  # SOFTWARE.
22
22
 
23
- from pyedb.dotnet.edb_core.cell.connectable import Connectable
24
-
25
-
26
- class Primitive(Connectable):
27
- """Manages EDB functionalities for a primitives.
28
- It inherits EDB Object properties.
29
-
30
- Examples
31
- --------
32
- >>> from pyedb import Edb
33
- >>> edb = Edb(myedb, edbversion="2021.2")
34
- >>> edb_prim = edb.modeler.primitives[0]
35
- >>> edb_prim.is_void # Class Property
36
- >>> edb_prim.IsVoid() # EDB Object Property
37
- """
38
-
39
- def __init__(self, pedb, edb_object):
40
- super().__init__(pedb, edb_object)
41
- self._app = self._pedb
42
- self._core_stackup = pedb.stackup
43
- self._core_net = pedb.nets
44
- self.primitive_object = self._edb_object
45
-
46
- bondwire_type = self._pedb._edb.Cell.Primitive.BondwireType
47
- self._bondwire_type = {
48
- "invalid": bondwire_type.Invalid,
49
- "apd": bondwire_type.ApdBondwire,
50
- "jedec_4": bondwire_type.Jedec4Bondwire,
51
- "jedec_5": bondwire_type.Jedec5Bondwire,
52
- "num_of_bondwire_type": bondwire_type.NumOfBondwireType,
53
- }
54
- bondwire_cross_section_type = self._pedb._edb.Cell.Primitive.BondwireCrossSectionType
55
- self._bondwire_cross_section_type = {
56
- "invalid": bondwire_cross_section_type.Invalid,
57
- "round": bondwire_cross_section_type.BondwireRound,
58
- "rectangle": bondwire_cross_section_type.BondwireRectangle,
59
- }
60
-
61
- @property
62
- def type(self):
63
- """Return the type of the primitive.
64
-
65
- Expected output is among ``"Circle"``, ``"Rectangle"``,``"Polygon"``,``"Path"`` or ``"Bondwire"``.
66
-
67
- Returns
68
- -------
69
- str
70
- """
71
- try:
72
- return self._edb_object.GetPrimitiveType().ToString()
73
- except AttributeError: # pragma: no cover
74
- return ""
75
-
76
- @property
77
- def primitive_type(self):
78
- """Return the type of the primitive.
79
-
80
- Expected output is among ``"circle"``, ``"rectangle"``,``"polygon"``,``"path"`` or ``"bondwire"``.
81
-
82
- Returns
83
- -------
84
- str
85
- """
86
- return self._edb_object.GetPrimitiveType().ToString().lower()
87
-
88
- @property
89
- def net_name(self):
90
- """Get the primitive net name.
91
-
92
- Returns
93
- -------
94
- str
95
- """
96
- return self.net.GetName()
97
-
98
- @net_name.setter
99
- def net_name(self, name):
100
- if isinstance(name, str):
101
- net = self._app.nets.nets[name].net_object
102
- self.primitive_object.SetNet(net)
103
- else:
104
- try:
105
- self.net = name.name
106
- except: # pragma: no cover
107
- self._app.logger.error("Failed to set net name.")
108
-
109
- @property
110
- def layer(self):
111
- """Get the primitive edb layer object."""
112
- try:
113
- layer_name = self.primitive_object.GetLayer().GetName()
114
- return self._pedb.stackup.layers[layer_name]
115
- except (KeyError, AttributeError): # pragma: no cover
116
- return None
117
-
118
- @property
119
- def layer_name(self):
120
- """Get the primitive layer name.
121
-
122
- Returns
123
- -------
124
- str
125
- """
126
- try:
127
- return self.layer.name
128
- except (KeyError, AttributeError): # pragma: no cover
129
- return None
130
-
131
- @layer_name.setter
132
- def layer_name(self, val):
133
- layer_list = list(self._core_stackup.layers.keys())
134
- if isinstance(val, str) and val in layer_list:
135
- layer = self._core_stackup.layers[val]._edb_layer
136
- if layer:
137
- self.primitive_object.SetLayer(layer)
138
- else:
139
- raise AttributeError("Layer {} not found.".format(val))
140
- elif isinstance(val, type(self._core_stackup.layers[layer_list[0]])):
141
- try:
142
- self.primitive_object.SetLayer(val._edb_layer)
143
- except:
144
- raise AttributeError("Failed to assign new layer on primitive.")
145
- else:
146
- raise AttributeError("Invalid input value")
147
-
148
- @property
149
- def is_void(self):
150
- """Either if the primitive is a void or not.
151
-
152
- Returns
153
- -------
154
- bool
155
- """
156
- try:
157
- return self._edb_object.IsVoid()
158
- except AttributeError: # pragma: no cover
159
- return None
160
-
161
- def get_connected_objects(self):
162
- """Get connected objects.
163
-
164
- Returns
165
- -------
166
- list
167
- """
168
- return self._pedb.get_connected_objects(self._layout_obj_instance)
23
+ from pyedb.dotnet.edb_core.cell.primitive.primitive import Primitive
169
24
 
170
25
 
171
26
  class Bondwire(Primitive):