pyedb 0.57.0__tar.gz → 0.59.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 (306) hide show
  1. {pyedb-0.57.0 → pyedb-0.59.0}/PKG-INFO +4 -5
  2. {pyedb-0.57.0 → pyedb-0.59.0}/pyproject.toml +3 -6
  3. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/__init__.py +1 -1
  4. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_pin_groups.py +2 -0
  5. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/hierarchy/component.py +2 -8
  6. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/layout.py +1 -1
  7. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/components.py +38 -42
  8. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/control_file.py +13 -5
  9. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/padstacks_data.py +34 -12
  10. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/sources.py +21 -2
  11. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/general.py +4 -8
  12. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/layout_validation.py +8 -0
  13. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/sim_setup_data/data/settings.py +2 -2
  14. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/sim_setup_data/io/siwave.py +53 -0
  15. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/stackup.py +5 -32
  16. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/utilities/hfss_simulation_setup.py +81 -0
  17. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/utilities/siwave_simulation_setup.py +259 -11
  18. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/edb.py +26 -13
  19. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/extensions/create_cell_array.py +48 -44
  20. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/generic/general_methods.py +24 -36
  21. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/generic/plot.py +8 -23
  22. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/generic/process.py +78 -10
  23. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/components.py +7 -5
  24. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/control_file.py +13 -5
  25. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/definition/padstack_def.py +10 -5
  26. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/hierarchy/component.py +2 -9
  27. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/modeler.py +28 -8
  28. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/padstacks.py +62 -103
  29. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/primitive/padstack_instance.py +41 -12
  30. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/primitive/path.py +13 -13
  31. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/hfss_simulation_setup.py +79 -0
  32. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/source_excitations.py +7 -7
  33. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/stackup.py +5 -33
  34. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/terminal/padstack_instance_terminal.py +9 -11
  35. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/terminal/point_terminal.py +30 -0
  36. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/terminal/terminal.py +16 -2
  37. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/utility/xml_control_file.py +13 -5
  38. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/edb.py +46 -20
  39. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/edb_init.py +7 -19
  40. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/aedtlib_personalib_install.py +2 -2
  41. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/downloads.py +18 -3
  42. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/siw_feature_config/emc_rule_checker_settings.py +2 -1
  43. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/scan_config.py +0 -1
  44. pyedb-0.59.0/src/pyedb/workflows/sipi/hfss_auto_configuration.py +711 -0
  45. {pyedb-0.57.0 → pyedb-0.59.0}/LICENSE +0 -0
  46. {pyedb-0.57.0 → pyedb-0.59.0}/README.md +0 -0
  47. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/common/__init__.py +0 -0
  48. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/common/nets.py +0 -0
  49. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/component_libraries/ansys_components.py +0 -0
  50. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/__init__.py +0 -0
  51. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_boundaries.py +0 -0
  52. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_common.py +0 -0
  53. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_components.py +0 -0
  54. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_data.py +0 -0
  55. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_general.py +0 -0
  56. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_modeler.py +0 -0
  57. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_nets.py +0 -0
  58. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_operations.py +0 -0
  59. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_package_definition.py +0 -0
  60. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_padstacks.py +0 -0
  61. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_ports_sources.py +0 -0
  62. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_s_parameter_models.py +0 -0
  63. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_setup.py +0 -0
  64. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_spice_models.py +0 -0
  65. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_stackup.py +0 -0
  66. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/cfg_terminals.py +0 -0
  67. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/configuration/configuration.py +0 -0
  68. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/__init__.py +0 -0
  69. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/clr_module.py +0 -0
  70. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/Variables.py +0 -0
  71. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/__init__.py +0 -0
  72. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/__init__.py +0 -0
  73. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/connectable.py +0 -0
  74. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/hierarchy/__init__.py +0 -0
  75. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/hierarchy/hierarchy_obj.py +0 -0
  76. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/hierarchy/model.py +0 -0
  77. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/hierarchy/netlist_model.py +0 -0
  78. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/hierarchy/pin_pair_model.py +0 -0
  79. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/hierarchy/s_parameter_model.py +0 -0
  80. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/hierarchy/spice_model.py +0 -0
  81. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/layout_obj.py +0 -0
  82. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/primitive/__init__.py +0 -0
  83. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/primitive/bondwire.py +0 -0
  84. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/primitive/path.py +0 -0
  85. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/primitive/primitive.py +0 -0
  86. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/terminal/__init__.py +0 -0
  87. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/terminal/bundle_terminal.py +0 -0
  88. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/terminal/edge_terminal.py +0 -0
  89. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/terminal/padstack_instance_terminal.py +0 -0
  90. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/terminal/pingroup_terminal.py +0 -0
  91. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/terminal/point_terminal.py +0 -0
  92. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/terminal/terminal.py +0 -0
  93. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/cell/voltage_regulator.py +0 -0
  94. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/definition/__init__.py +0 -0
  95. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/definition/component_def.py +0 -0
  96. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/definition/component_model.py +0 -0
  97. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/definition/definition_obj.py +0 -0
  98. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/definition/definitions.py +0 -0
  99. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/definition/package_def.py +0 -0
  100. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/dotnet/__init__.py +0 -0
  101. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/dotnet/database.py +0 -0
  102. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/dotnet/primitive.py +0 -0
  103. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/__init__.py +0 -0
  104. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/design_options.py +0 -0
  105. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/edbvalue.py +0 -0
  106. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/hfss_extent_info.py +0 -0
  107. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/layer_data.py +0 -0
  108. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/nets_data.py +0 -0
  109. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/ports.py +0 -0
  110. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/primitives_data.py +0 -0
  111. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/raptor_x_simulation_setup_data.py +0 -0
  112. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/simulation_configuration.py +0 -0
  113. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/utilities.py +0 -0
  114. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/edb_data/variables.py +0 -0
  115. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/geometry/__init__.py +0 -0
  116. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/geometry/point_data.py +0 -0
  117. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/geometry/polygon_data.py +0 -0
  118. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/hfss.py +0 -0
  119. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/layout_obj_instance.py +0 -0
  120. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/materials.py +0 -0
  121. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/modeler.py +0 -0
  122. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/net_class.py +0 -0
  123. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/nets.py +0 -0
  124. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/padstack.py +0 -0
  125. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/sim_setup_data/__init__.py +0 -0
  126. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/sim_setup_data/data/__init__.py +0 -0
  127. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/sim_setup_data/data/adaptive_frequency_data.py +0 -0
  128. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/sim_setup_data/data/mesh_operation.py +0 -0
  129. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/sim_setup_data/data/sim_setup_info.py +0 -0
  130. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/sim_setup_data/data/simulation_settings.py +0 -0
  131. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/sim_setup_data/data/siw_dc_ir_settings.py +0 -0
  132. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/sim_setup_data/data/sweep_data.py +0 -0
  133. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/sim_setup_data/io/__init__.py +0 -0
  134. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/siwave.py +0 -0
  135. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/utilities/__init__.py +0 -0
  136. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/utilities/heatsink.py +0 -0
  137. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/utilities/obj_base.py +0 -0
  138. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/utilities/simulation_setup.py +0 -0
  139. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/utilities/siwave_cpa_simulation_setup.py +0 -0
  140. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/dotnet/database/utilities/value.py +0 -0
  141. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/edb_logger.py +0 -0
  142. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/exceptions.py +0 -0
  143. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/extensions/__init__.py +0 -0
  144. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/extensions/via_design_backend.py +0 -0
  145. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/generic/__init__.py +0 -0
  146. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/generic/constants.py +0 -0
  147. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/generic/data_handlers.py +0 -0
  148. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/generic/design_types.py +0 -0
  149. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/generic/filesystem.py +0 -0
  150. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/generic/grpc_warnings.py +0 -0
  151. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/generic/settings.py +0 -0
  152. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/__init__.py +0 -0
  153. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/__init__.py +0 -0
  154. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/_typing.py +0 -0
  155. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/definition/__init__.py +0 -0
  156. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/definition/component_def.py +0 -0
  157. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/definition/component_model.py +0 -0
  158. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/definition/component_pin.py +0 -0
  159. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/definition/materials.py +0 -0
  160. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/definition/n_port_component_model.py +0 -0
  161. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/definition/package_def.py +0 -0
  162. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/definitions.py +0 -0
  163. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/general.py +0 -0
  164. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/geometry/__init__.py +0 -0
  165. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/geometry/arc_data.py +0 -0
  166. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/geometry/point_3d_data.py +0 -0
  167. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/geometry/point_data.py +0 -0
  168. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/geometry/polygon_data.py +0 -0
  169. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/hfss.py +0 -0
  170. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/hierarchy/__init__.py +0 -0
  171. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/hierarchy/model.py +0 -0
  172. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/hierarchy/netlist_model.py +0 -0
  173. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/hierarchy/pin_pair_model.py +0 -0
  174. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/hierarchy/pingroup.py +0 -0
  175. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/hierarchy/s_parameter_model.py +0 -0
  176. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/hierarchy/spice_model.py +0 -0
  177. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/layers/__init__.py +0 -0
  178. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/layers/layer.py +0 -0
  179. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/layers/stackup_layer.py +0 -0
  180. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/layout/__init__.py +0 -0
  181. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/layout/cell.py +0 -0
  182. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/layout/layout.py +0 -0
  183. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/layout/voltage_regulator.py +0 -0
  184. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/layout_validation.py +0 -0
  185. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/net/__init__.py +0 -0
  186. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/net/differential_pair.py +0 -0
  187. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/net/extended_net.py +0 -0
  188. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/net/net.py +0 -0
  189. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/net/net_class.py +0 -0
  190. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/nets.py +0 -0
  191. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/ports/__init__.py +0 -0
  192. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/ports/ports.py +0 -0
  193. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/primitive/__init__.py +0 -0
  194. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/primitive/bondwire.py +0 -0
  195. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/primitive/circle.py +0 -0
  196. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/primitive/polygon.py +0 -0
  197. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/primitive/primitive.py +0 -0
  198. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/primitive/rectangle.py +0 -0
  199. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/__init__.py +0 -0
  200. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/adaptive_frequency.py +0 -0
  201. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/hfss_advanced_meshing_settings.py +0 -0
  202. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/hfss_advanced_settings.py +0 -0
  203. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/hfss_dcr_settings.py +0 -0
  204. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/hfss_general_settings.py +0 -0
  205. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/hfss_settings_options.py +0 -0
  206. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/hfss_simulation_settings.py +0 -0
  207. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/hfss_solver_settings.py +0 -0
  208. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/mesh_operation.py +0 -0
  209. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_advanced_settings.py +0 -0
  210. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_general_settings.py +0 -0
  211. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_simulation_settings.py +0 -0
  212. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/raptor_x_simulation_setup.py +0 -0
  213. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/siwave_cpa_simulation_setup.py +0 -0
  214. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/siwave_dcir_simulation_setup.py +0 -0
  215. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/siwave_simulation_setup.py +0 -0
  216. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/simulation_setup/sweep_data.py +0 -0
  217. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/siwave.py +0 -0
  218. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/terminal/__init__.py +0 -0
  219. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/terminal/bundle_terminal.py +0 -0
  220. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/terminal/edge_terminal.py +0 -0
  221. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/terminal/pingroup_terminal.py +0 -0
  222. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/utility/__init__.py +0 -0
  223. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/utility/constants.py +0 -0
  224. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/utility/heat_sink.py +0 -0
  225. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/utility/hfss_extent_info.py +0 -0
  226. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/utility/layout_statistics.py +0 -0
  227. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/utility/rlc.py +0 -0
  228. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/utility/sources.py +0 -0
  229. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/utility/sweep_data_distribution.py +0 -0
  230. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/database/utility/value.py +0 -0
  231. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/grpc/rpc_session.py +0 -0
  232. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/__init__.py +0 -0
  233. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/bom/__init__.py +0 -0
  234. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/bom/bom.py +0 -0
  235. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/bom/bom_item.py +0 -0
  236. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/bom/characteristics.py +0 -0
  237. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/bom/refdes.py +0 -0
  238. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/content/__init__.py +0 -0
  239. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/content/color.py +0 -0
  240. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/content/content.py +0 -0
  241. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/content/dictionary_color.py +0 -0
  242. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/content/dictionary_fill.py +0 -0
  243. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/content/dictionary_line.py +0 -0
  244. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/content/entry_color.py +0 -0
  245. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/content/entry_line.py +0 -0
  246. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/content/fill.py +0 -0
  247. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/content/layer_ref.py +0 -0
  248. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/content/standard_geometries_dictionary.py +0 -0
  249. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/__init__.py +0 -0
  250. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/__init__.py +0 -0
  251. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/assembly_drawing.py +0 -0
  252. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/cad_data.py +0 -0
  253. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/component.py +0 -0
  254. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/drill.py +0 -0
  255. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/feature.py +0 -0
  256. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/layer.py +0 -0
  257. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/layer_feature.py +0 -0
  258. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/logical_net.py +0 -0
  259. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/outline.py +0 -0
  260. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/package.py +0 -0
  261. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_def.py +0 -0
  262. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_hole_def.py +0 -0
  263. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_instance.py +0 -0
  264. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_pad_def.py +0 -0
  265. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/path.py +0 -0
  266. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/phy_net.py +0 -0
  267. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/pin.py +0 -0
  268. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/polygon.py +0 -0
  269. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/profile.py +0 -0
  270. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/stackup.py +0 -0
  271. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_group.py +0 -0
  272. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_layer.py +0 -0
  273. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_data/step.py +0 -0
  274. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/cad_header.py +0 -0
  275. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/ecad.py +0 -0
  276. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ecad/spec.py +0 -0
  277. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/history_record.py +0 -0
  278. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/ipc2581.py +0 -0
  279. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/ipc2581/logistic_header.py +0 -0
  280. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/libraries/common.py +0 -0
  281. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/libraries/rf_libraries/base_functions.py +0 -0
  282. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/libraries/rf_libraries/planar_antennas.py +0 -0
  283. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/__init__.py +0 -0
  284. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/decorators.py +0 -0
  285. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/misc.py +0 -0
  286. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/pyedb.runtimeconfig.json +0 -0
  287. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/siw_feature_config/__init__.py +0 -0
  288. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/siw_feature_config/emc/__init__.py +0 -0
  289. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/siw_feature_config/emc/component_tags.py +0 -0
  290. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/siw_feature_config/emc/net_tags.py +0 -0
  291. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/siw_feature_config/emc/tag_library.py +0 -0
  292. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/siw_feature_config/emc/xml_generic.py +0 -0
  293. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/fd_xtalk_scan_config.py +0 -0
  294. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/impedance_scan_config.py +0 -0
  295. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/net.py +0 -0
  296. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/pins.py +0 -0
  297. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/siw_feature_config/xtalk_scan/td_xtalk_config.py +0 -0
  298. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/misc/utilities.py +0 -0
  299. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/modeler/geometry_operators.py +0 -0
  300. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/siwave.py +0 -0
  301. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/siwave_core/__init__.py +0 -0
  302. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/siwave_core/cpa/__init__.py +0 -0
  303. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/siwave_core/cpa/simulation_setup_data_model.py +0 -0
  304. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/siwave_core/icepak.py +0 -0
  305. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/siwave_core/product_properties.py +0 -0
  306. {pyedb-0.57.0 → pyedb-0.59.0}/src/pyedb/workflow.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyedb
3
- Version: 0.57.0
3
+ Version: 0.59.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>
@@ -29,6 +29,8 @@ Requires-Dist: shapely
29
29
  Requires-Dist: scikit-rf
30
30
  Requires-Dist: ansys-edb-core>=0.2.0
31
31
  Requires-Dist: psutil
32
+ Requires-Dist: defusedxml>=0.7,<8.0
33
+ Requires-Dist: matplotlib>=3.5.0,<3.11
32
34
  Requires-Dist: ansys-sphinx-theme>=1.0.0,<1.5 ; extra == "doc"
33
35
  Requires-Dist: imageio>=2.30.0,<2.38 ; extra == "doc"
34
36
  Requires-Dist: ipython>=8.13.0,<8.32 ; extra == "doc"
@@ -41,14 +43,12 @@ Requires-Dist: numpydoc>=1.5.0,<1.9 ; extra == "doc"
41
43
  Requires-Dist: pypandoc>=1.10.0,<1.16 ; extra == "doc"
42
44
  Requires-Dist: recommonmark ; extra == "doc"
43
45
  Requires-Dist: Sphinx>=7.1.0,<8.2 ; extra == "doc"
44
- Requires-Dist: sphinx-autobuild==2021.3.14 ; extra == "doc" and ( python_version == '3.8')
46
+ Requires-Dist: sphinx-autobuild==2024.10.3 ; extra == "doc" and ( python_version == '3.8')
45
47
  Requires-Dist: sphinx-autobuild==2024.10.3 ; extra == "doc" and ( python_version > '3.8')
46
48
  Requires-Dist: sphinx-copybutton>=0.5.0,<0.6 ; extra == "doc"
47
49
  Requires-Dist: sphinx-gallery>=0.14.0,<0.20 ; extra == "doc"
48
50
  Requires-Dist: sphinx_design>=0.4.0,<0.7 ; extra == "doc"
49
51
  Requires-Dist: shapely ; extra == "doc"
50
- Requires-Dist: matplotlib>=3.5.0,<3.11 ; extra == "full"
51
- Requires-Dist: shapely ; extra == "full"
52
52
  Requires-Dist: matplotlib>=3.5.0,<3.11 ; extra == "tests"
53
53
  Requires-Dist: mock>=5.1.0,<5.3 ; extra == "tests"
54
54
  Requires-Dist: pytest>=7.4.0,<8.5 ; extra == "tests"
@@ -62,7 +62,6 @@ Project-URL: Documentation, https://edb.docs.pyansys.com
62
62
  Project-URL: Releases, https://github.com/ansys/pyedb/releases
63
63
  Project-URL: Source, https://github.com/ansys/pyedb
64
64
  Provides-Extra: doc
65
- Provides-Extra: full
66
65
  Provides-Extra: tests
67
66
 
68
67
  <!-- -->
@@ -38,6 +38,8 @@ dependencies = [
38
38
  "scikit-rf",
39
39
  "ansys-edb-core>=0.2.0",
40
40
  "psutil",
41
+ "defusedxml>=0.7,<8.0",
42
+ "matplotlib>=3.5.0,<3.11",
41
43
  ]
42
44
 
43
45
  [project.optional-dependencies]
@@ -64,17 +66,12 @@ doc = [
64
66
  # NOTE: Remove recommonmark once examples are reworked.
65
67
  "recommonmark",
66
68
  "Sphinx>=7.1.0,<8.2",
67
- "sphinx-autobuild==2021.3.14; python_version == '3.8'",
69
+ "sphinx-autobuild==2024.10.3; python_version == '3.8'",
68
70
  "sphinx-autobuild==2024.10.3; python_version > '3.8'",
69
71
  "sphinx-copybutton>=0.5.0,<0.6",
70
72
  "sphinx-gallery>=0.14.0,<0.20",
71
73
  "sphinx_design>=0.4.0,<0.7",
72
74
  "shapely",
73
-
74
- ]
75
- full = [
76
- "matplotlib>=3.5.0,<3.11",
77
- "shapely",
78
75
  ]
79
76
 
80
77
 
@@ -37,7 +37,7 @@ deprecation_warning()
37
37
  #
38
38
 
39
39
  pyedb_path = os.path.dirname(__file__)
40
- __version__ = "0.57.0"
40
+ __version__ = "0.59.0"
41
41
  version = __version__
42
42
 
43
43
  #
@@ -35,6 +35,8 @@ class CfgPinGroups:
35
35
  layout_pin_groups = self._pedb.siwave.pin_groups
36
36
  for pg_name, pg_obj in layout_pin_groups.items():
37
37
  pins = list(pg_obj.pins.keys())
38
+ if len(pins) == 0: # pragma: no cover
39
+ continue
38
40
  refdes = list(pg_obj.pins.values())[0].component.name
39
41
  cfg_pg = CfgPinGroup(
40
42
  self._pedb,
@@ -25,6 +25,8 @@ import re
25
25
  from typing import Optional
26
26
  import warnings
27
27
 
28
+ import numpy as np
29
+
28
30
  from pyedb.dotnet.database.cell.hierarchy.hierarchy_obj import Group
29
31
  from pyedb.dotnet.database.cell.hierarchy.model import PinPairModel, SPICEModel
30
32
  from pyedb.dotnet.database.cell.hierarchy.netlist_model import NetlistModel
@@ -33,14 +35,6 @@ from pyedb.dotnet.database.cell.hierarchy.s_parameter_model import SparamModel
33
35
  from pyedb.dotnet.database.cell.hierarchy.spice_model import SpiceModel
34
36
  from pyedb.dotnet.database.definition.package_def import PackageDef
35
37
  from pyedb.dotnet.database.edb_data.padstacks_data import EDBPadstackInstance
36
-
37
- try:
38
- import numpy as np
39
- except ImportError:
40
- warnings.warn(
41
- "The NumPy module is required to run some functionalities of EDB.\n"
42
- "Install with \n\npip install numpy\n\nRequires CPython."
43
- )
44
38
  from pyedb.generic.general_methods import get_filename_without_extension
45
39
 
46
40
 
@@ -409,8 +409,8 @@ class Layout(ObjBase):
409
409
  """
410
410
  candidates = self.padstack_instances
411
411
  if instance_id is not None:
412
- instance_id = int(instance_id)
413
412
  value = instance_id if isinstance(instance_id, list) else [instance_id]
413
+ value = [int(i) for i in value]
414
414
  candidates = [i for i in candidates if i.id in value]
415
415
 
416
416
  if aedt_name is not None:
@@ -961,7 +961,7 @@ class Components(object):
961
961
  if not isinstance(port_type, int):
962
962
  if port_type == "circuit_port":
963
963
  port_type = SourceType.CircPort
964
- elif port_type == "coaxial_port":
964
+ elif port_type in ["coaxial_port", "coax_port"]:
965
965
  port_type = SourceType.CoaxPort
966
966
  elif port_type == "lumped_port":
967
967
  port_type = SourceType.LumpedPort
@@ -1011,49 +1011,47 @@ class Components(object):
1011
1011
  return False
1012
1012
  pad_params = self._padstack.get_pad_parameters(pin=cmp_pins[0], layername=pin_layers[0], pad_type=0)
1013
1013
 
1014
- # If at least one of the solderball arguments is not None, calculate the rest and set solderballs
1015
- if not (not solder_balls_height and not solder_balls_size and not solder_balls_mid_size):
1016
- if not solder_balls_height:
1017
- solder_balls_height = self.instances[component.GetName()].solder_ball_height
1018
- if not solder_balls_size:
1019
- solder_balls_size = self.instances[component.GetName()].solder_ball_diameter[0]
1020
- if not solder_balls_mid_size:
1021
- solder_balls_mid_size = self.instances[component.GetName()].solder_ball_diameter[1]
1022
-
1023
- if not pad_params[0] == 7:
1024
- if not solder_balls_size: # pragma no cover
1025
- sball_diam = min([self._pedb.edb_value(val).ToDouble() for val in pad_params[1]])
1026
- sball_mid_diam = sball_diam
1027
- else: # pragma no cover
1028
- sball_diam = solder_balls_size
1029
- if solder_balls_mid_size:
1030
- sball_mid_diam = solder_balls_mid_size
1031
- else:
1032
- sball_mid_diam = solder_balls_size
1033
- if not solder_balls_height: # pragma no cover
1034
- solder_balls_height = 2 * sball_diam / 3
1014
+ if not solder_balls_height:
1015
+ solder_balls_height = self.instances[component.GetName()].solder_ball_height
1016
+ if not solder_balls_size:
1017
+ solder_balls_size = self.instances[component.GetName()].solder_ball_diameter[0]
1018
+ if not solder_balls_mid_size:
1019
+ solder_balls_mid_size = self.instances[component.GetName()].solder_ball_diameter[1]
1020
+
1021
+ if not pad_params[0] == 7:
1022
+ if not solder_balls_size: # pragma no cover
1023
+ sball_diam = min([self._pedb.edb_value(val).ToDouble() for val in pad_params[1]])
1024
+ sball_mid_diam = sball_diam
1035
1025
  else: # pragma no cover
1036
- if not solder_balls_size:
1037
- bbox = pad_params[1]
1038
- sball_diam = min([abs(bbox[2] - bbox[0]), abs(bbox[3] - bbox[1])]) * 0.8
1039
- else:
1040
- sball_diam = solder_balls_size
1041
- if not solder_balls_height:
1042
- solder_balls_height = 2 * sball_diam / 3
1026
+ sball_diam = solder_balls_size
1043
1027
  if solder_balls_mid_size:
1044
1028
  sball_mid_diam = solder_balls_mid_size
1045
1029
  else:
1046
- sball_mid_diam = sball_diam
1047
- sball_shape = "Cylinder"
1048
- if not sball_diam == sball_mid_diam:
1049
- sball_shape = "Spheroid"
1050
- self.set_solder_ball(
1051
- component=component,
1052
- sball_height=solder_balls_height,
1053
- sball_diam=sball_diam,
1054
- sball_mid_diam=sball_mid_diam,
1055
- shape=sball_shape,
1056
- )
1030
+ sball_mid_diam = solder_balls_size
1031
+ if not solder_balls_height: # pragma no cover
1032
+ solder_balls_height = 2 * sball_diam / 3
1033
+ else: # pragma no cover
1034
+ if not solder_balls_size:
1035
+ bbox = pad_params[1]
1036
+ sball_diam = min([abs(bbox[2] - bbox[0]), abs(bbox[3] - bbox[1])]) * 0.8
1037
+ else:
1038
+ sball_diam = solder_balls_size
1039
+ if not solder_balls_height:
1040
+ solder_balls_height = 2 * sball_diam / 3
1041
+ if solder_balls_mid_size:
1042
+ sball_mid_diam = solder_balls_mid_size
1043
+ else:
1044
+ sball_mid_diam = sball_diam
1045
+ sball_shape = "Cylinder"
1046
+ if not sball_diam == sball_mid_diam:
1047
+ sball_shape = "Spheroid"
1048
+ self.set_solder_ball(
1049
+ component=component,
1050
+ sball_height=solder_balls_height,
1051
+ sball_diam=sball_diam,
1052
+ sball_mid_diam=sball_mid_diam,
1053
+ shape=sball_shape,
1054
+ )
1057
1055
 
1058
1056
  for pin in cmp_pins:
1059
1057
  self._padstack.create_coax_port(padstackinstance=pin, name=port_name)
@@ -1518,8 +1516,6 @@ class Components(object):
1518
1516
  if componentDefinitionPin.IsNull():
1519
1517
  self._logger.error("Failed to create component definition pin {}-{}".format(name, pin.GetName()))
1520
1518
  return None
1521
- else:
1522
- self._logger.warning("Found existing component definition for footprint {}".format(name))
1523
1519
  return componentDefinition
1524
1520
 
1525
1521
  def create_rlc_component(
@@ -23,10 +23,12 @@
23
23
  import copy
24
24
  import os
25
25
  import re
26
- import subprocess
26
+ import subprocess # nosec B404
27
27
  import sys
28
28
  import xml
29
29
 
30
+ from defusedxml.ElementTree import parse as defused_parse
31
+
30
32
  from pyedb.generic.general_methods import ET, env_path, env_value, is_linux
31
33
  from pyedb.generic.settings import settings
32
34
  from pyedb.misc.aedtlib_personalib_install import write_pretty_xml
@@ -36,6 +38,11 @@ from pyedb.misc.misc import list_installed_ansysem
36
38
  def convert_technology_file(tech_file, edbversion=None, control_file=None):
37
39
  """Convert a technology file to edb control file (xml).
38
40
 
41
+ .. warning::
42
+ Do not execute this function with untrusted function argument, environment
43
+ variables or pyedb global settings.
44
+ See the :ref:`security guide<ref_security_consideration>` for details.
45
+
39
46
  Parameters
40
47
  ----------
41
48
  tech_file : str
@@ -99,10 +106,11 @@ def convert_technology_file(tech_file, edbversion=None, control_file=None):
99
106
  ]
100
107
  commands.append(command)
101
108
  commands.append(["rm", "-r", vlc_file_name + ".aedb"])
102
- my_env = os.environ.copy()
103
109
  for command in commands:
104
- p = subprocess.Popen(command, env=my_env)
105
- p.wait()
110
+ try:
111
+ subprocess.run(command, check=True) # nosec
112
+ except subprocess.CalledProcessError as e: # nosec
113
+ raise RuntimeError("An error occurred while converting a technology file to edb control file") from e
106
114
  if os.path.exists(control_file):
107
115
  settings.logger.info("Xml file created.")
108
116
  return control_file
@@ -1213,7 +1221,7 @@ class ControlFile:
1213
1221
  -------
1214
1222
  bool
1215
1223
  """
1216
- tree = ET.parse(xml_input)
1224
+ tree = defused_parse(xml_input)
1217
1225
  root = tree.getroot()
1218
1226
  for el in root:
1219
1227
  if el.tag == "Stackup":
@@ -22,6 +22,7 @@
22
22
 
23
23
  from collections import OrderedDict
24
24
  import math
25
+ import re
25
26
  import warnings
26
27
 
27
28
  from pyedb.dotnet.clr_module import String
@@ -1213,6 +1214,39 @@ class EDBPadstackInstance(Connectable):
1213
1214
  if not term.is_null:
1214
1215
  return term
1215
1216
 
1217
+ @property
1218
+ def side_number(self):
1219
+ """Return the number of sides meshed of the padstack instance.
1220
+ Returns
1221
+ -------
1222
+ int
1223
+ Number of sides meshed of the padstack instance.
1224
+ """
1225
+ side_value = self._edb_object.GetProductProperty(self._pedb._edb.ProductId.Hfss3DLayout, 21)
1226
+ if side_value[0]:
1227
+ return int(re.search(r"(?m)^\s*sid=(\d+)", side_value[1]).group(1))
1228
+ return 0
1229
+
1230
+ @side_number.setter
1231
+ def side_number(self, value):
1232
+ """Set the number of sides meshed of the padstack instance.
1233
+
1234
+ Parameters
1235
+ ----------
1236
+ value : int
1237
+ Number of sides to mesh the padstack instance.
1238
+
1239
+ Returns
1240
+ -------
1241
+ bool
1242
+ True if successful, False otherwise.
1243
+ """
1244
+ if isinstance(value, int) and 3 <= value <= 64:
1245
+ prop_string = f"$begin ''\n\tsid={value}\n\tmat='copper'\n\tvs='Wirebond'\n$end ''\n"
1246
+ self._edb_object.SetProductProperty(self._pedb._edb.ProductId.Hfss3DLayout, 21, prop_string)
1247
+ else:
1248
+ raise ValueError("Number of sides must be an integer between 3 and 64")
1249
+
1216
1250
  @property
1217
1251
  def terminal(self):
1218
1252
  """Terminal."""
@@ -1918,18 +1952,6 @@ class EDBPadstackInstance(Connectable):
1918
1952
  """
1919
1953
  return int(self._edb_padstackinstance.GetGroup().GetPlacementLayer().GetTopBottomAssociation())
1920
1954
 
1921
- @property
1922
- def side_number(self) -> float:
1923
- if not self._side_number:
1924
- prop_string = "$begin ''\n\tsid=3\n\tmat='copper'\n\tvs='Wirebond'\n$end ''\n"
1925
- self._edb_padstackinstance.SetProductProperty(self._pedb._edb.ProductId.Designer, 21, prop_string)
1926
- self._side_number = self._edb_padstackinstance.GetProductProperty(self._pedb._edb.ProductId.Designer, 21)
1927
- return self._side_number
1928
-
1929
- @side_number.setter
1930
- def side_number(self, value):
1931
- self._side_number = self._edb_padstackinstance.GetProductProperty(self._pedb._edb.ProductId.Designer, 21, value)
1932
-
1933
1955
  def create_rectangle_in_pad(self, layer_name, return_points=False, partition_max_order=16):
1934
1956
  """Create a rectangle inscribed inside a padstack instance pad.
1935
1957
 
@@ -20,6 +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 typing import List, Tuple, Union
23
24
  import warnings
24
25
 
25
26
  from pyedb.generic.constants import NodeType, SourceType
@@ -279,9 +280,27 @@ class PinGroup(object):
279
280
  @property
280
281
  def pins(self):
281
282
  """Gets the pins belong to this pin group."""
282
- from pyedb.dotnet.database.edb_data.padstacks_data import EDBPadstackInstance
283
+ edb_pin_ids = [edb_pin.GetId() for edb_pin in list(self._edb_object.GetPins())]
284
+ if len(edb_pin_ids) == 0:
285
+ return {}
286
+ else:
287
+ pins = self._pedb.layout.find_padstack_instances(instance_id=edb_pin_ids)
288
+ return {i.name: i for i in pins}
289
+
290
+ def remove_pins(self, pins: Union[str, List[str]]):
291
+ """Remove pins from the pin group.
292
+
293
+ Parameters
294
+ ----------
295
+ pins : str, list
296
+ List of padstack instance names.
297
+
298
+ """
299
+ _pins = pins if isinstance(pins, Union[list, Tuple]) else [pins]
283
300
 
284
- return {i.GetName(): EDBPadstackInstance(i, self._pedb) for i in list(self._edb_object.GetPins())}
301
+ pin_objs = [j for i, j in self.pins.items() if i in _pins]
302
+ for p in pin_objs:
303
+ self._edb_object.RemovePin(p._edb_object)
285
304
 
286
305
  @property
287
306
  def node_pins(self):
@@ -27,17 +27,12 @@ This module contains EDB general methods and related methods.
27
27
 
28
28
  from __future__ import absolute_import # noreorder
29
29
 
30
+ from enum import Enum
30
31
  import logging
31
32
  import re
32
33
 
33
34
  from pyedb.dotnet.clr_module import Dictionary, List, Tuple
34
35
 
35
- try:
36
- from enum import Enum
37
- except ImportError:
38
- Enum = None
39
-
40
-
41
36
  logger = logging.getLogger(__name__)
42
37
 
43
38
 
@@ -56,8 +51,9 @@ def convert_netdict_to_pydict(dict_in):
56
51
 
57
52
  """
58
53
  pydict = {}
59
- for key in dict_in.Keys:
60
- pydict[key] = dict_in[key]
54
+ if dict_in:
55
+ for key in dict_in.Keys:
56
+ pydict[key] = dict_in[key]
61
57
  return pydict
62
58
 
63
59
 
@@ -339,3 +339,11 @@ class LayoutValidation:
339
339
  if fix:
340
340
  obj.aedt_name = f"via_{obj.id}"
341
341
  self._pedb.logger.info(f"Found {counts}/{len(pds)} padstacks have no name.")
342
+
343
+ @execution_timer("empty_pin_group")
344
+ def delete_empty_pin_groups(self):
345
+ for name, pg in self._pedb.siwave.pin_groups.items():
346
+ pins = pg.pins
347
+ if len(pins) == 0:
348
+ pg.delete()
349
+ self._pedb.logger.info(f"Pin group {name} deleted because it has no pins.")
@@ -579,14 +579,14 @@ class ViaSettings(object):
579
579
  -------
580
580
  bool
581
581
  """
582
- if float(self._parent._pedb.edbversion) < 2024.1:
582
+ if float(self._parent._pedb.version) < 2024.1:
583
583
  self._parent._pedb.logger.error("Property only supported on Ansys release 2024R1 and later")
584
584
  return False
585
585
  return self._via_settings.ViaMeshPlating
586
586
 
587
587
  @via_mesh_plating.setter
588
588
  def via_mesh_plating(self, value):
589
- if float(self._parent._pedb.edbversion) < 2024.1:
589
+ if float(self._parent._pedb.version) < 2024.1:
590
590
  self._parent._pedb.logger.error("Property only supported on Ansys release 2024R1 and later")
591
591
  else:
592
592
  self._via_settings.ViaMeshPlating = value
@@ -713,6 +713,19 @@ class DCAdvancedSettings(SettingsBase):
713
713
  def max_num_pass(self):
714
714
  """Maximum number of passes.
715
715
 
716
+ deprecated: Use `max_num_passes` instead.
717
+
718
+ Returns
719
+ -------
720
+ int
721
+ """
722
+ warnings.warn("`max_num_pass` is deprecated. Use `max_num_passes` instead.", DeprecationWarning)
723
+ return self.max_num_passes
724
+
725
+ @property
726
+ def max_num_passes(self):
727
+ """Maximum number of passes.
728
+
716
729
  Returns
717
730
  -------
718
731
  int
@@ -723,6 +736,19 @@ class DCAdvancedSettings(SettingsBase):
723
736
  def min_num_pass(self):
724
737
  """Minimum number of passes.
725
738
 
739
+ deprecated: Use `min_num_passes` instead.
740
+
741
+ Returns
742
+ -------
743
+ int
744
+ """
745
+ warnings.warn("`min_num_pass` is deprecated. Use `min_num_passes` instead.", DeprecationWarning)
746
+ return self.sim_setup_info
747
+
748
+ @property
749
+ def min_num_passes(self):
750
+ """Minimum number of passes.
751
+
726
752
  Returns
727
753
  -------
728
754
  int
@@ -753,6 +779,19 @@ class DCAdvancedSettings(SettingsBase):
753
779
  def num_bondwire_sides(self):
754
780
  """Number of bondwire sides.
755
781
 
782
+ deprecated: Use `num_bw_sides` instead.
783
+
784
+ Returns
785
+ -------
786
+ int
787
+ """
788
+ warnings.warn("`num_bondwire_sides` is deprecated. Use `num_bw_sides` instead.", DeprecationWarning)
789
+ return self.num_bw_sides
790
+
791
+ @property
792
+ def num_bw_sides(self):
793
+ """Number of bondwire sides.
794
+
756
795
  Returns
757
796
  -------
758
797
  int
@@ -794,6 +833,20 @@ class DCAdvancedSettings(SettingsBase):
794
833
  def refine_bondwires(self):
795
834
  """Whether to refine mesh along bondwires.
796
835
 
836
+ deprecated: Use `refine_bws` instead.
837
+
838
+ Returns
839
+ -------
840
+ bool
841
+ ``True`` if refine bondwires is used, ``False`` otherwise.
842
+ """
843
+ warnings.warn("`refine_bondwires` is deprecated. Use `refine_bws` instead.", DeprecationWarning)
844
+ return self.refine_bws
845
+
846
+ @property
847
+ def refine_bws(self):
848
+ """Whether to refine mesh along bondwires.
849
+
797
850
  Returns
798
851
  -------
799
852
  bool
@@ -33,6 +33,11 @@ import logging
33
33
  import math
34
34
  import warnings
35
35
 
36
+ from defusedxml.ElementTree import parse as defused_parse
37
+ import matplotlib.colors as colors
38
+ import numpy as np
39
+ import pandas as pd
40
+
36
41
  from pyedb.dotnet.database.edb_data.layer_data import (
37
42
  LayerEdbClass,
38
43
  StackupLayerEdbClass,
@@ -42,24 +47,6 @@ from pyedb.dotnet.database.general import convert_py_list_to_net_list
42
47
  from pyedb.generic.general_methods import ET, generate_unique_name
43
48
  from pyedb.misc.aedtlib_personalib_install import write_pretty_xml
44
49
 
45
- colors = None
46
- pd = None
47
- np = None
48
- try:
49
- import matplotlib.colors as colors
50
- except ImportError:
51
- colors = None
52
-
53
- try:
54
- import numpy as np
55
- except ImportError:
56
- np = None
57
-
58
- try:
59
- import pandas as pd
60
- except ImportError:
61
- pd = None
62
-
63
50
  logger = logging.getLogger(__name__)
64
51
 
65
52
 
@@ -473,9 +460,6 @@ class Stackup(LayerCollection):
473
460
  -------
474
461
  bool
475
462
  """
476
- if not np:
477
- self._pedb.logger.error("Numpy is needed. Please, install it first.")
478
- return False
479
463
  if not layer_count % 2 == 0:
480
464
  return False
481
465
 
@@ -973,10 +957,6 @@ class Stackup(LayerCollection):
973
957
  return self.export(fpath, file_format=file_format, include_material_with_layer=include_material_with_layer)
974
958
 
975
959
  def _export_layer_stackup_to_csv_xlsx(self, fpath=None, file_format=None):
976
- if not pd:
977
- self._pedb.logger.error("Pandas is needed. Please, install it first.")
978
- return False
979
-
980
960
  data = {
981
961
  "Type": [],
982
962
  "Material": [],
@@ -1996,10 +1976,6 @@ class Stackup(LayerCollection):
1996
1976
  file_path : str
1997
1977
  File path to the CSV file.
1998
1978
  """
1999
- if not pd:
2000
- self._pedb.logger.error("Pandas is needed. You must install it first.")
2001
- return False
2002
-
2003
1979
  df = pd.read_csv(file_path, index_col=0)
2004
1980
 
2005
1981
  for name in self.layers.keys(): # pragma: no cover
@@ -2266,9 +2242,6 @@ class Stackup(LayerCollection):
2266
2242
  ``True`` when successful, ``False`` when failed.
2267
2243
  """
2268
2244
 
2269
- if not colors:
2270
- self._pedb.logger.error("Matplotlib is needed. Please, install it first.")
2271
- return False
2272
2245
  tree = ET.parse(file_path)
2273
2246
  root = tree.getroot()
2274
2247
  stackup = root.find("Stackup")