pyedb 0.19.0__py3-none-any.whl → 0.21.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pyedb might be problematic. Click here for more details.

Files changed (40) hide show
  1. pyedb/__init__.py +1 -1
  2. pyedb/dotnet/edb.py +311 -335
  3. pyedb/dotnet/edb_core/cell/connectable.py +64 -0
  4. pyedb/dotnet/edb_core/cell/hierarchy/component.py +12 -10
  5. pyedb/dotnet/edb_core/cell/hierarchy/hierarchy_obj.py +1 -1
  6. pyedb/dotnet/edb_core/cell/layout.py +253 -105
  7. pyedb/dotnet/edb_core/cell/layout_obj.py +4 -49
  8. pyedb/dotnet/edb_core/cell/primitive.py +14 -2
  9. pyedb/dotnet/edb_core/cell/terminal/padstack_instance_terminal.py +1 -1
  10. pyedb/dotnet/edb_core/cell/terminal/point_terminal.py +1 -1
  11. pyedb/dotnet/edb_core/cell/terminal/terminal.py +1 -19
  12. pyedb/dotnet/edb_core/cell/voltage_regulator.py +2 -16
  13. pyedb/dotnet/edb_core/components.py +14 -13
  14. pyedb/dotnet/edb_core/dotnet/database.py +5 -10
  15. pyedb/dotnet/edb_core/dotnet/primitive.py +11 -1
  16. pyedb/dotnet/edb_core/edb_data/control_file.py +2 -12
  17. pyedb/dotnet/edb_core/edb_data/padstacks_data.py +20 -33
  18. pyedb/dotnet/edb_core/general.py +6 -9
  19. pyedb/dotnet/edb_core/hfss.py +4 -8
  20. pyedb/dotnet/edb_core/layout_obj_instance.py +30 -0
  21. pyedb/dotnet/edb_core/materials.py +4 -11
  22. pyedb/dotnet/edb_core/{layout.py → modeler.py} +153 -7
  23. pyedb/dotnet/edb_core/net_class.py +7 -8
  24. pyedb/dotnet/edb_core/nets.py +3 -9
  25. pyedb/dotnet/edb_core/padstack.py +13 -9
  26. pyedb/dotnet/edb_core/sim_setup_data/data/sweep_data.py +5 -2
  27. pyedb/dotnet/edb_core/siwave.py +5 -6
  28. pyedb/dotnet/edb_core/stackup.py +18 -23
  29. pyedb/dotnet/edb_core/utilities/simulation_setup.py +1 -4
  30. pyedb/generic/filesystem.py +2 -8
  31. pyedb/generic/general_methods.py +4 -10
  32. pyedb/generic/plot.py +26 -29
  33. pyedb/generic/process.py +2 -6
  34. pyedb/misc/downloads.py +3 -40
  35. pyedb/siwave.py +2 -5
  36. {pyedb-0.19.0.dist-info → pyedb-0.21.0.dist-info}/METADATA +2 -2
  37. {pyedb-0.19.0.dist-info → pyedb-0.21.0.dist-info}/RECORD +39 -38
  38. pyedb/dotnet/edb_core/dotnet/layout.py +0 -260
  39. {pyedb-0.19.0.dist-info → pyedb-0.21.0.dist-info}/LICENSE +0 -0
  40. {pyedb-0.19.0.dist-info → pyedb-0.21.0.dist-info}/WHEEL +0 -0
@@ -41,7 +41,6 @@ class EdbCommon:
41
41
 
42
42
  Returns
43
43
  -------
44
- :class:` :class:`pyedb.dotnet.edb_core.dotnet.layout.LayoutDotNet`
45
44
  """
46
45
  return self._pedb.layout
47
46
 
@@ -90,10 +89,10 @@ class EdbNetClasses(EdbCommon, object):
90
89
  dict[str, :class:`pyedb.dotnet.edb_core.edb_data.nets_data.EDBDifferentialPairData`]
91
90
  Dictionary of extended nets.
92
91
  """
93
- net_classes = {}
94
- for net_class in self._layout.net_classes:
95
- net_classes[net_class.GetName()] = EDBNetClassData(self._pedb, net_class)
96
- return net_classes
92
+ temp = {}
93
+ for i in self._layout.net_classes:
94
+ temp[i.name] = i
95
+ return temp
97
96
 
98
97
  def create(self, name, net):
99
98
  # type: (str, str|list)->EDBNetClassData
@@ -147,8 +146,8 @@ class EdbExtendedNets(EdbCommon, object):
147
146
  Dictionary of extended nets.
148
147
  """
149
148
  nets = {}
150
- for extended_net in self._layout.extended_nets:
151
- nets[extended_net.GetName()] = EDBExtendedNetData(self._pedb, extended_net)
149
+ for extended_net in self._pedb.layout.extended_nets:
150
+ nets[extended_net.name] = extended_net
152
151
  return nets
153
152
 
154
153
  def create(self, name, net):
@@ -273,7 +272,7 @@ class EdbDifferentialPairs(EdbCommon, object):
273
272
  """
274
273
  diff_pairs = {}
275
274
  for diff_pair in self._layout.differential_pairs:
276
- diff_pairs[diff_pair.GetName()] = EDBDifferentialPairData(self._pedb, diff_pair)
275
+ diff_pairs[diff_pair.name] = diff_pair
277
276
  return diff_pairs
278
277
 
279
278
  def create(self, name, net_p, net_n):
@@ -29,7 +29,7 @@ import warnings
29
29
 
30
30
  from pyedb.dotnet.edb_core.edb_data.nets_data import EDBNetsData
31
31
  from pyedb.generic.constants import CSS4_COLORS
32
- from pyedb.generic.general_methods import generate_unique_name, is_ironpython
32
+ from pyedb.generic.general_methods import generate_unique_name
33
33
  from pyedb.modeler.geometry_operators import GeometryOperators
34
34
 
35
35
 
@@ -55,10 +55,7 @@ class EdbNets(object):
55
55
  :class:` :class:`pyedb.dotnet.edb_core.edb_data.nets_data.EDBNetsData`
56
56
 
57
57
  """
58
- if name in self.nets:
59
- return self.nets[name]
60
- self._pedb.logger.error("Component or definition not found.")
61
- return
58
+ return self._pedb.layout.find_net_by_name(name)
62
59
 
63
60
  def __contains__(self, name):
64
61
  """Determine if a net is named ``name`` or not.
@@ -119,7 +116,7 @@ class EdbNets(object):
119
116
  dict[str, :class:`pyedb.dotnet.edb_core.edb_data.nets_data.EDBNetsData`]
120
117
  Dictionary of nets.
121
118
  """
122
- return self._pedb.modeler.nets
119
+ return {i.name: i for i in self._pedb.layout.nets}
123
120
 
124
121
  @property
125
122
  def netlist(self):
@@ -841,9 +838,6 @@ class EdbNets(object):
841
838
  show : bool, optional
842
839
  Whether to show the plot or not. Default is `True`.
843
840
  """
844
- if is_ironpython:
845
- self._logger.warning("Plot functionalities are enabled only in CPython.")
846
- return False
847
841
  from pyedb.generic.plot import plot_matplotlib
848
842
 
849
843
  object_lists = self.get_plot_data(
@@ -61,8 +61,8 @@ class EdbPadstacks(object):
61
61
  :class:`pyedb.dotnet.edb_core.cell.hierarchy.component.EDBComponent`
62
62
 
63
63
  """
64
- if name in self.instances:
65
- return self.instances[name]
64
+ if isinstance(name, int) and name in self.instances:
65
+ return self._pedb.layout.find_object_by_id(name)
66
66
  elif name in self.definitions:
67
67
  return self.definitions[name]
68
68
  else:
@@ -74,6 +74,8 @@ class EdbPadstacks(object):
74
74
 
75
75
  def __init__(self, p_edb):
76
76
  self._pedb = p_edb
77
+ self._instances = {}
78
+ self._definitions = {}
77
79
 
78
80
  @property
79
81
  def _edb(self):
@@ -183,12 +185,14 @@ class EdbPadstacks(object):
183
185
  List of definitions via padstack definitions.
184
186
 
185
187
  """
186
- _padstacks = {}
188
+ if len(self._definitions) == len(self._pedb.padstack_defs):
189
+ return self._definitions
190
+ self._definitions = {}
187
191
  for padstackdef in self._pedb.padstack_defs:
188
192
  PadStackData = padstackdef.GetData()
189
193
  if len(PadStackData.GetLayerNames()) >= 1:
190
- _padstacks[padstackdef.GetName()] = EDBPadstack(padstackdef, self)
191
- return _padstacks
194
+ self._definitions[padstackdef.GetName()] = EDBPadstack(padstackdef, self)
195
+ return self._definitions
192
196
 
193
197
  @property
194
198
  def padstacks(self):
@@ -217,11 +221,11 @@ class EdbPadstacks(object):
217
221
 
218
222
  """
219
223
 
220
- padstack_instances = {}
221
224
  edb_padstack_inst_list = self._pedb.layout.padstack_instances
222
- for edb_padstack_instance in edb_padstack_inst_list:
223
- padstack_instances[edb_padstack_instance.GetId()] = EDBPadstackInstance(edb_padstack_instance, self._pedb)
224
- return padstack_instances
225
+ if len(self._instances) == len(edb_padstack_inst_list):
226
+ return self._instances
227
+ self._instances = {i.id: i for i in edb_padstack_inst_list}
228
+ return self._instances
225
229
 
226
230
  @property
227
231
  def instances_by_name(self):
@@ -50,7 +50,10 @@ class SweepData(object):
50
50
  def _update_sweep(self):
51
51
  """Update the sweep."""
52
52
  self.sim_setup.delete_frequency_sweep(self)
53
- self.sim_setup._add_frequency_sweep(self)
53
+ ss_info = self.sim_setup.sim_setup_info
54
+ ss_info.add_sweep_data(self)
55
+ self.sim_setup.set_sim_setup_info(ss_info)
56
+ self.sim_setup._update_setup()
54
57
  return
55
58
 
56
59
  @property
@@ -165,7 +168,7 @@ class SweepData(object):
165
168
  self._edb_object.FreqSweepType = edb_freq_sweep_type.kBroadbandFastSweep
166
169
  elif value in [3, "kNumSweepTypes"]:
167
170
  self._edb_object.FreqSweepType = edb_freq_sweep_type.kNumSweepTypes
168
- self._edb_object.FreqSweepType.ToString()
171
+ self._update_sweep()
169
172
 
170
173
  @property
171
174
  def type(self):
@@ -36,7 +36,6 @@ from pyedb.dotnet.edb_core.edb_data.sources import (
36
36
  CircuitPort,
37
37
  CurrentSource,
38
38
  DCTerminal,
39
- PinGroup,
40
39
  ResistorSource,
41
40
  VoltageSource,
42
41
  )
@@ -129,8 +128,8 @@ class EdbSiwave(object):
129
128
  List of all layout pin groups.
130
129
  """
131
130
  _pingroups = {}
132
- for el in self._layout.pin_groups:
133
- _pingroups[el.GetName()] = PinGroup(el.GetName(), el, self._pedb)
131
+ for el in self._pedb.layout.pin_groups:
132
+ _pingroups[el._edb_object.GetName()] = el
134
133
  return _pingroups
135
134
 
136
135
  def _create_terminal_on_pins(self, source):
@@ -325,10 +324,10 @@ class EdbSiwave(object):
325
324
  pin = [
326
325
  pin
327
326
  for pin in self._pedb.padstacks.get_pinlist_from_component_and_net(component_name)
328
- if pin.GetName() == pin_name
327
+ if pin.component_pin == pin_name
329
328
  ][0]
330
- term_name = "{}_{}_{}".format(pin.GetComponent().GetName(), pin.GetNet().GetName(), pin.GetName())
331
- res, start_layer, stop_layer = pin.GetLayerRange()
329
+ term_name = "{}_{}_{}".format(pin.component.name, pin._edb_object.GetNet().GetName(), pin.component_pin)
330
+ res, start_layer, stop_layer = pin._edb_object.GetLayerRange()
332
331
  if res:
333
332
  pin_instance = pin._edb_padstackinstance
334
333
  positive_terminal = self._edb.cell.terminal.PadstackInstanceTerminal.Create(
@@ -38,27 +38,26 @@ from pyedb.dotnet.edb_core.edb_data.layer_data import (
38
38
  StackupLayerEdbClass,
39
39
  )
40
40
  from pyedb.dotnet.edb_core.general import convert_py_list_to_net_list
41
- from pyedb.generic.general_methods import ET, generate_unique_name, is_ironpython
41
+ from pyedb.generic.general_methods import ET, generate_unique_name
42
42
  from pyedb.misc.aedtlib_personalib_install import write_pretty_xml
43
43
 
44
44
  colors = None
45
45
  pd = None
46
46
  np = None
47
- if not is_ironpython:
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
47
+ try:
48
+ import matplotlib.colors as colors
49
+ except ImportError:
50
+ colors = None
51
+
52
+ try:
53
+ import numpy as np
54
+ except ImportError:
55
+ np = None
56
+
57
+ try:
58
+ import pandas as pd
59
+ except ImportError:
60
+ pd = None
62
61
 
63
62
  logger = logging.getLogger(__name__)
64
63
 
@@ -970,8 +969,7 @@ class Stackup(LayerCollection):
970
969
  if not pd:
971
970
  self._pedb.logger.error("Pandas is needed. Please, install it first.")
972
971
  return False
973
- if is_ironpython:
974
- return
972
+
975
973
  data = {
976
974
  "Type": [],
977
975
  "Material": [],
@@ -1972,9 +1970,7 @@ class Stackup(LayerCollection):
1972
1970
  if not pd:
1973
1971
  self._pedb.logger.error("Pandas is needed. You must install it first.")
1974
1972
  return False
1975
- if is_ironpython:
1976
- self._pedb.logger.error("Method works on CPython only.")
1977
- return False
1973
+
1978
1974
  df = pd.read_csv(file_path, index_col=0)
1979
1975
 
1980
1976
  for name in self.stackup_layers.keys(): # pragma: no cover
@@ -2451,8 +2447,7 @@ class Stackup(LayerCollection):
2451
2447
  -------
2452
2448
  :class:`matplotlib.plt`
2453
2449
  """
2454
- if is_ironpython:
2455
- return False
2450
+
2456
2451
  from pyedb.generic.constants import CSS4_COLORS
2457
2452
  from pyedb.generic.plot import plot_matplotlib
2458
2453
 
@@ -293,10 +293,7 @@ class SimulationSetup(object):
293
293
  """
294
294
  warnings.warn("Use new property :func:`add_sweep_data` instead.", DeprecationWarning)
295
295
  self._sweep_list[sweep_data.name] = sweep_data
296
- if self.setup_type in ["kRaptorX", "kHFSSPI"]:
297
- edb_setup_info = self._edb_setup_info
298
- else:
299
- edb_setup_info = self.sim_setup_info
296
+ edb_setup_info = self.sim_setup_info
300
297
 
301
298
  if self._setup_type in ["kSIwave", "kHFSS", "kRaptorX", "kHFSSPI"]:
302
299
  for _, v in self._sweep_list.items():
@@ -16,16 +16,10 @@ def search_files(dirname, pattern="*"):
16
16
  -------
17
17
  list
18
18
  """
19
- from pyedb.generic.general_methods import is_ironpython
20
19
 
21
- if is_ironpython:
22
- import glob
20
+ import pathlib
23
21
 
24
- return list(glob.glob(os.path.join(dirname, pattern)))
25
- else:
26
- import pathlib
27
-
28
- return [os.path.abspath(i) for i in pathlib.Path(dirname).glob(pattern)]
22
+ return [os.path.abspath(i) for i in pathlib.Path(dirname).glob(pattern)]
29
23
 
30
24
 
31
25
  def my_location():
@@ -47,11 +47,9 @@ from pyedb.exceptions import MaterialModelException
47
47
  from pyedb.generic.constants import CSS4_COLORS
48
48
  from pyedb.generic.settings import settings
49
49
 
50
- is_ironpython = "IronPython" in sys.version or ".NETFramework" in sys.version
51
50
  is_linux = os.name == "posix"
52
51
  is_windows = not is_linux
53
52
  _pythonver = sys.version_info[0]
54
- inside_desktop = True if is_ironpython and "4.0.30319.42000" in sys.version else False
55
53
 
56
54
 
57
55
  try:
@@ -868,10 +866,7 @@ def read_xlsx(filename): # pragma: no cover
868
866
 
869
867
 
870
868
  def write_csv(output, list_data, delimiter=",", quotechar="|", quoting=csv.QUOTE_MINIMAL): # pragma: no cover
871
- if is_ironpython:
872
- f = open(output, "wb")
873
- else:
874
- f = open(output, "w", newline="")
869
+ f = open(output, "w", newline="")
875
870
  writer = csv.writer(f, delimiter=delimiter, quotechar=quotechar, quoting=quoting)
876
871
  for data in list_data:
877
872
  writer.writerow(data)
@@ -1302,10 +1297,9 @@ def install_with_pip(package_name, package_path=None, upgrade=False, uninstall=F
1302
1297
  uninstall : bool, optional
1303
1298
  Whether to install the package or uninstall the package.
1304
1299
  """
1305
- if is_linux and is_ironpython:
1306
- import subprocessdotnet as subprocess
1307
- else:
1308
- import subprocess
1300
+
1301
+ import subprocess
1302
+
1309
1303
  executable = '"{}"'.format(sys.executable) if is_windows else sys.executable
1310
1304
 
1311
1305
  commands = []
pyedb/generic/plot.py CHANGED
@@ -2,35 +2,32 @@ import ast
2
2
  import os
3
3
  import warnings
4
4
 
5
- from pyedb.generic.general_methods import is_ironpython
6
-
7
- if not is_ironpython: # pragma: no cover
8
- try:
9
- import numpy # noqa: F401
10
- except ImportError:
11
- warnings.warn(
12
- "The NumPy module is required to run some functionalities of PostProcess.\n"
13
- "Install with \n\npip install numpy\n\nRequires CPython."
14
- )
15
-
16
- try:
17
- from matplotlib.patches import PathPatch
18
- from matplotlib.path import Path
19
-
20
- # Use matplotlib agg backend (non-interactive) when the CI is running.
21
- if bool(int(os.getenv("PYEDB_CI_NO_DISPLAY", "0"))): # pragma: no cover
22
- import matplotlib
23
-
24
- matplotlib.use("Agg")
25
- import matplotlib.pyplot as plt
26
-
27
- except ImportError:
28
- warnings.warn(
29
- "The Matplotlib module is required to run some functionalities of PostProcess.\n"
30
- "Install with \n\npip install matplotlib\n\nRequires CPython."
31
- )
32
- except:
33
- pass
5
+ try:
6
+ import numpy # noqa: F401
7
+ except ImportError:
8
+ warnings.warn(
9
+ "The NumPy module is required to run some functionalities of PostProcess.\n"
10
+ "Install with \n\npip install numpy\n\nRequires CPython."
11
+ )
12
+
13
+ try:
14
+ from matplotlib.patches import PathPatch
15
+ from matplotlib.path import Path
16
+
17
+ # Use matplotlib agg backend (non-interactive) when the CI is running.
18
+ if bool(int(os.getenv("PYEDB_CI_NO_DISPLAY", "0"))): # pragma: no cover
19
+ import matplotlib
20
+
21
+ matplotlib.use("Agg")
22
+ import matplotlib.pyplot as plt
23
+
24
+ except ImportError:
25
+ warnings.warn(
26
+ "The Matplotlib module is required to run some functionalities of PostProcess.\n"
27
+ "Install with \n\npip install matplotlib\n\nRequires CPython."
28
+ )
29
+ except:
30
+ pass
34
31
 
35
32
 
36
33
  def plot_matplotlib(
pyedb/generic/process.py CHANGED
@@ -1,11 +1,7 @@
1
1
  import os.path
2
+ import subprocess
2
3
 
3
- from pyedb.generic.general_methods import env_path, is_ironpython, is_linux
4
-
5
- if is_linux and is_ironpython:
6
- import subprocessdotnet as subprocess
7
- else:
8
- import subprocess
4
+ from pyedb.generic.general_methods import env_path, is_linux
9
5
 
10
6
 
11
7
  class SiwaveSolve(object):
pyedb/misc/downloads.py CHANGED
@@ -24,15 +24,10 @@
24
24
  import os
25
25
  import shutil
26
26
  import tempfile
27
+ import urllib.request
27
28
  import zipfile
28
29
 
29
- from pyedb.generic.general_methods import is_ironpython, is_linux, settings
30
- from pyedb.misc.misc import list_installed_ansysem
31
-
32
- if is_ironpython:
33
- import urllib
34
- else:
35
- import urllib.request
30
+ from pyedb.generic.general_methods import is_linux, settings
36
31
 
37
32
  tmpfold = tempfile.gettempdir()
38
33
  EXAMPLE_REPO = "https://github.com/ansys/example-data/raw/master/"
@@ -62,8 +57,7 @@ def _retrieve_file(url, filename, directory, destination=None, local_paths=[]):
62
57
  local_paths.append(local_path_no_zip)
63
58
 
64
59
  # grab the correct url retriever
65
- if not is_ironpython:
66
- urlretrieve = urllib.request.urlretrieve
60
+ urlretrieve = urllib.request.urlretrieve
67
61
  destination_dir = os.path.join(destination, directory)
68
62
  if not os.path.isdir(destination_dir):
69
63
  os.makedirs(destination_dir)
@@ -71,35 +65,6 @@ def _retrieve_file(url, filename, directory, destination=None, local_paths=[]):
71
65
  if is_linux:
72
66
  command = "wget {} -O {}".format(url, local_path)
73
67
  os.system(command)
74
- elif is_ironpython:
75
- versions = list_installed_ansysem()
76
- if versions:
77
- cpython = os.listdir(os.path.join(os.getenv(versions[0]), "commonfiles", "CPython"))
78
- command = (
79
- '"'
80
- + os.path.join(
81
- os.getenv(versions[0]),
82
- "commonfiles",
83
- "CPython",
84
- cpython[0],
85
- "winx64",
86
- "Release",
87
- "python",
88
- "python.exe",
89
- )
90
- + '"'
91
- )
92
- commandargs = os.path.join(os.path.dirname(local_path), "download.py")
93
- command += ' "' + commandargs + '"'
94
- with open(os.path.join(os.path.dirname(local_path), "download.py"), "w") as f:
95
- f.write("import urllib.request\n")
96
- f.write("urlretrieve = urllib.request.urlretrieve\n")
97
- f.write("import urllib.request\n")
98
- f.write('url = r"{}"\n'.format(url))
99
- f.write('local_path = r"{}"\n'.format(local_path))
100
- f.write("urlretrieve(url, local_path)\n")
101
- print(command)
102
- os.system(command)
103
68
  else:
104
69
  _, resp = urlretrieve(url, local_path)
105
70
  local_paths.append(local_path)
@@ -118,8 +83,6 @@ def _retrieve_folder(url, directory, destination=None, local_paths=[]): # pragm
118
83
  else:
119
84
  local_path = os.path.join(destination, directory)
120
85
 
121
- if is_ironpython:
122
- return False
123
86
  _get_dir = _get_file_url(directory)
124
87
  with urllib.request.urlopen(_get_dir) as response: # nosec
125
88
  data = response.read().decode("utf-8").split("\n")
pyedb/siwave.py CHANGED
@@ -16,7 +16,7 @@ import warnings
16
16
 
17
17
  from pyedb.dotnet.clr_module import _clr
18
18
  from pyedb.edb_logger import pyedb_logger
19
- from pyedb.generic.general_methods import _pythonver, is_ironpython, is_windows
19
+ from pyedb.generic.general_methods import _pythonver, is_windows
20
20
  from pyedb.misc.misc import list_installed_ansysem
21
21
  from pyedb.siwave_core.icepak import Icepak
22
22
 
@@ -80,10 +80,7 @@ class Siwave(object): # pragma no cover
80
80
 
81
81
  def __init__(self, specified_version=None):
82
82
  self._logger = pyedb_logger
83
- if is_ironpython:
84
- _com = "pythonnet"
85
- import System
86
- elif is_windows: # pragma: no cover
83
+ if is_windows: # pragma: no cover
87
84
  modules = [tup[1] for tup in pkgutil.iter_modules()]
88
85
  if _clr:
89
86
  import win32com.client
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyedb
3
- Version: 0.19.0
3
+ Version: 0.21.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>
@@ -31,7 +31,7 @@ Requires-Dist: jupyterlab>=4.0.0,<4.3 ; extra == "doc"
31
31
  Requires-Dist: jupytext>=1.16.0,<1.17 ; extra == "doc"
32
32
  Requires-Dist: matplotlib>=3.5.0,<3.10 ; extra == "doc"
33
33
  Requires-Dist: nbsphinx>=0.9.0,<0.10 ; extra == "doc"
34
- Requires-Dist: nbconvert < 7.14 ; extra == "doc"
34
+ Requires-Dist: nbconvert < 7.17 ; extra == "doc"
35
35
  Requires-Dist: numpydoc>=1.5.0,<1.8 ; extra == "doc"
36
36
  Requires-Dist: pypandoc>=1.10.0,<1.14 ; extra == "doc"
37
37
  Requires-Dist: recommonmark ; extra == "doc"