pyedb 0.22.0__py3-none-any.whl → 0.22.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.

pyedb/__init__.py CHANGED
@@ -44,7 +44,7 @@ deprecation_warning()
44
44
  #
45
45
 
46
46
  pyedb_path = os.path.dirname(__file__)
47
- __version__ = "0.22.0"
47
+ __version__ = "0.22.1"
48
48
  version = __version__
49
49
 
50
50
  #
pyedb/dotnet/edb.py CHANGED
@@ -37,6 +37,7 @@ import time
37
37
  import traceback
38
38
  from typing import Union
39
39
  import warnings
40
+ from zipfile import ZipFile as zpf
40
41
 
41
42
  import rtree
42
43
 
@@ -118,7 +119,7 @@ class Edb(Database):
118
119
  edbpath : str, optional
119
120
  Full path to the ``aedb`` folder. The variable can also contain
120
121
  the path to a layout to import. Allowed formats are BRD, MCM,
121
- XML (IPC2581), GDS, and DXF. The default is ``None``.
122
+ XML (IPC2581), GDS, ODB++(TGZ and ZIP) and DXF. The default is ``None``.
122
123
  For GDS import, the Ansys control file (also XML) should have the same
123
124
  name as the GDS file. Only the file extension differs.
124
125
  cellname : str, optional
@@ -221,7 +222,31 @@ class Edb(Database):
221
222
  if not isreadonly:
222
223
  self._check_remove_project_files(edbpath, remove_existing_aedt)
223
224
 
224
- if edbpath[-3:] in ["brd", "mcm", "sip", "gds", "xml", "dxf", "tgz", "anf"]:
225
+ if edbpath[-3:] == "zip":
226
+ self.edbpath = edbpath[:-4] + ".aedb"
227
+ working_dir = os.path.dirname(edbpath)
228
+ zipped_file = zpf(edbpath, "r")
229
+ top_level_folders = {item.split("/")[0] for item in zipped_file.namelist()}
230
+ if len(top_level_folders) == 1:
231
+ self.logger.info("Unzipping ODB++...")
232
+ zipped_file.extractall(working_dir)
233
+ else:
234
+ self.logger.info("Unzipping ODB++ before translating to EDB...")
235
+ zipped_file.extractall(edbpath[:-4])
236
+ self.logger.info("ODB++ unzipped successfully.")
237
+ zipped_file.close()
238
+ control_file = None
239
+ if technology_file:
240
+ if os.path.splitext(technology_file)[1] == ".xml":
241
+ control_file = technology_file
242
+ else:
243
+ control_file = convert_technology_file(technology_file, edbversion=edbversion)
244
+ self.logger.info("Translating ODB++ to EDB...")
245
+ self.import_layout_pcb(edbpath[:-4], working_dir, use_ppe=use_ppe, control_file=control_file)
246
+ if settings.enable_local_log_file and self.log_name:
247
+ self._logger.add_file_logger(self.log_name, "Edb")
248
+ self.logger.info("EDB %s was created correctly from %s file.", self.edbpath, edbpath)
249
+ elif edbpath[-3:] in ["brd", "mcm", "sip", "gds", "xml", "dxf", "tgz", "anf"]:
225
250
  self.edbpath = edbpath[:-4] + ".aedb"
226
251
  working_dir = os.path.dirname(edbpath)
227
252
  control_file = None
@@ -581,7 +606,7 @@ class Edb(Database):
581
606
  ):
582
607
  """Import a board file and generate an ``edb.def`` file in the working directory.
583
608
 
584
- This function supports all AEDT formats, including DXF, GDS, SML (IPC2581), BRD, MCM and TGZ.
609
+ This function supports all AEDT formats, including DXF, GDS, SML (IPC2581), BRD, MCM, SIP, ZIP and TGZ.
585
610
 
586
611
  Parameters
587
612
  ----------
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyedb
3
- Version: 0.22.0
3
+ Version: 0.22.1
4
4
  Summary: Higher-Level Pythonic Ansys Electronics Data Base
5
5
  Author-email: "ANSYS, Inc." <pyansys.core@ansys.com>
6
6
  Maintainer-email: PyEDB developers <simon.vandenbrouck@ansys.com>
@@ -1,4 +1,4 @@
1
- pyedb/__init__.py,sha256=eeZ4uwtMKyM3lN_RAY7x7q0qJqt1DN16_E85ANf8luE,1521
1
+ pyedb/__init__.py,sha256=aGJoyShOw-T16kkEdjWiiAZz944O0yLK-PpwX5lBoBc,1521
2
2
  pyedb/edb_logger.py,sha256=yNkXnoL2me7ubLT6O6r6ElVnkZ1g8fmfFYC_2XJZ1Sw,14950
3
3
  pyedb/exceptions.py,sha256=n94xluzUks6BA24vd_L6HkrvoP_H_l6__hQmqzdCyPo,111
4
4
  pyedb/siwave.py,sha256=_AxkSZ-7P9aVmizWUWmwcqI07rpGsIZ_fYsd1WNjR6w,12986
@@ -23,7 +23,7 @@ pyedb/configuration/cfg_stackup.py,sha256=CX7uNN5QRoYW_MOObknP8003YchTS7PH9Oee7F
23
23
  pyedb/configuration/configuration.py,sha256=coJU6y-y7VOGmH_NPXdEdoBdD_aZzYFx7sgvLKNm02E,12629
24
24
  pyedb/dotnet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
25
  pyedb/dotnet/clr_module.py,sha256=Mo13Of3DVSA5HR-5xZEXOiHApIKy52CUxtJ2gPkEu1A,3406
26
- pyedb/dotnet/edb.py,sha256=18OY0I1Hhpx4hVVubGDlzqqeyEjyFV_sV8S7xYBAIvg,179320
26
+ pyedb/dotnet/edb.py,sha256=ps_zASr7shSBISTB2fsfayCWmTDJ9FTYhDL3T-2pAUg,180752
27
27
  pyedb/dotnet/application/Variables.py,sha256=v_fxFJ6xjyyhk4uaMzWAbP-1FhXGuKsVNuyV1huaPME,77867
28
28
  pyedb/dotnet/application/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
29
  pyedb/dotnet/edb_core/__init__.py,sha256=nIRLJ8VZLcMAp12zmGsnZ5x2BEEl7q_Kj_KAOXxVjpQ,52
@@ -74,7 +74,6 @@ pyedb/dotnet/edb_core/edb_data/control_file.py,sha256=_W5DDBFvm4gTq8yCvhzfiWUsfp
74
74
  pyedb/dotnet/edb_core/edb_data/design_options.py,sha256=RO9ip-T5Bfxpsl97_QEk0qDZsza3tLzIX2t25XLutys,2057
75
75
  pyedb/dotnet/edb_core/edb_data/edbvalue.py,sha256=Vj_11HXsQUNavizKp5FicORm6cjhXRh9uvxhv_D_RJc,1977
76
76
  pyedb/dotnet/edb_core/edb_data/hfss_extent_info.py,sha256=hKFHWUl0_OCMEZJbQn5c8Y1a-BYKr8nAycIlrCoeufk,13005
77
- pyedb/dotnet/edb_core/edb_data/hfss_pi_simulation_setup_data.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
77
  pyedb/dotnet/edb_core/edb_data/layer_data.py,sha256=B6cClg5KTcKUn33jYccTN0uNZZ5dQ037WHCsI-vg3Us,25748
79
78
  pyedb/dotnet/edb_core/edb_data/nets_data.py,sha256=ICF61kgST9Rm4hUqU3KUh8FMNlrZEVQO1LqZR1VADkA,9979
80
79
  pyedb/dotnet/edb_core/edb_data/padstacks_data.py,sha256=atUTmNcR7qZ9GASM7_j8sQyjUM-IWePMbDBJ1A9kDZc,78359
@@ -183,7 +182,7 @@ pyedb/misc/siw_feature_config/xtalk_scan/scan_config.py,sha256=YmYI6WTQulL5Uf8Wx
183
182
  pyedb/misc/siw_feature_config/xtalk_scan/td_xtalk_config.py,sha256=KHa-UqcXuabiVfT2CV-UvWl5Q2qGYHF2Ye9azcAlnXc,3966
184
183
  pyedb/modeler/geometry_operators.py,sha256=g_Sy7a6R23sP6RtboJn1rl8uTuo8oeLmMF21rNkzwjk,74198
185
184
  pyedb/siwave_core/icepak.py,sha256=WnZ-t8mik7LDY06V8hZFV-TxRZJQWK7bu_8Ichx-oBs,5206
186
- pyedb-0.22.0.dist-info/LICENSE,sha256=qQWivZ12ETN5l3QxvTARY-QI5eoRRlyHdwLlAj0Bg5I,1089
187
- pyedb-0.22.0.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
188
- pyedb-0.22.0.dist-info/METADATA,sha256=6c2U6qZ3d7D46pQ1l0w8WDTc0Z6VTzVEMOe36U4fEsE,8387
189
- pyedb-0.22.0.dist-info/RECORD,,
185
+ pyedb-0.22.1.dist-info/LICENSE,sha256=qQWivZ12ETN5l3QxvTARY-QI5eoRRlyHdwLlAj0Bg5I,1089
186
+ pyedb-0.22.1.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
187
+ pyedb-0.22.1.dist-info/METADATA,sha256=ggDIgzAO9DRVSItoBXoaskYZIA0xzSSv8hSosVGDOS4,8387
188
+ pyedb-0.22.1.dist-info/RECORD,,
File without changes