ansys-mechanical-core 0.11.8__py3-none-any.whl → 0.11.10__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.
@@ -50,6 +50,7 @@ from ansys.mechanical.core._version import __version__
50
50
  from ansys.mechanical.core.mechanical import (
51
51
  change_default_mechanical_path,
52
52
  close_all_local_instances,
53
+ connect_to_mechanical,
53
54
  get_mechanical_path,
54
55
  launch_mechanical,
55
56
  )
@@ -21,8 +21,11 @@
21
21
  # SOFTWARE.
22
22
 
23
23
  """Main application class for embedded Mechanical."""
24
+ from __future__ import annotations
25
+
24
26
  import atexit
25
27
  import os
28
+ import shutil
26
29
  import typing
27
30
  import warnings
28
31
 
@@ -34,13 +37,17 @@ from ansys.mechanical.core.embedding.poster import Poster
34
37
  from ansys.mechanical.core.embedding.ui import launch_ui
35
38
  from ansys.mechanical.core.embedding.warnings import connect_warnings, disconnect_warnings
36
39
 
40
+ if typing.TYPE_CHECKING:
41
+ # Make sure to run ``ansys-mechanical-ideconfig`` to add the autocomplete settings to VS Code
42
+ # Run ``ansys-mechanical-ideconfig --help`` for more information
43
+ import Ansys # pragma: no cover
44
+
37
45
  try:
38
46
  import ansys.tools.visualization_interface # noqa: F401
39
47
 
40
48
  HAS_ANSYS_VIZ = True
41
49
  """Whether or not PyVista exists."""
42
50
  except:
43
-
44
51
  HAS_ANSYS_VIZ = False
45
52
 
46
53
 
@@ -130,6 +137,13 @@ class App:
130
137
  if len(INSTANCES) > 0:
131
138
  raise Exception("Cannot have more than one embedded mechanical instance!")
132
139
  version = kwargs.get("version")
140
+ if version is not None:
141
+ try:
142
+ version = int(version)
143
+ except ValueError:
144
+ raise ValueError(
145
+ f"The version must be an integer or that can be converted to an integer."
146
+ )
133
147
  self._version = initializer.initialize(version)
134
148
  configuration = kwargs.get("config", _get_default_addin_configuration())
135
149
 
@@ -188,8 +202,39 @@ class App:
188
202
  else:
189
203
  self.DataModel.Project.Save()
190
204
 
191
- def save_as(self, path):
192
- """Save the project as."""
205
+ def save_as(self, path: str, overwrite: bool = False):
206
+ """Save the project as a new file.
207
+
208
+ If the `overwrite` flag is enabled, the current saved file is temporarily moved
209
+ to a backup location. The new file is then saved in its place. If the process fails,
210
+ the backup file is restored to its original location.
211
+
212
+ Parameters
213
+ ----------
214
+ path: int, optional
215
+ The path where file needs to be saved.
216
+ overwrite: bool, optional
217
+ Whether the file should be overwritten if it already exists (default is False).
218
+ """
219
+ if not os.path.exists(path):
220
+ self.DataModel.Project.SaveAs(path)
221
+ return
222
+
223
+ if not overwrite:
224
+ raise Exception(
225
+ f"File already exists in {path}, Use ``overwrite`` flag to "
226
+ "replace the existing file."
227
+ )
228
+
229
+ file_name = os.path.basename(path)
230
+ file_dir = os.path.dirname(path)
231
+ associated_dir = os.path.join(file_dir, os.path.splitext(file_name)[0] + "_Mech_Files")
232
+
233
+ # Remove existing files and associated folder
234
+ os.remove(path)
235
+ if os.path.exists(associated_dir):
236
+ shutil.rmtree(associated_dir)
237
+ # Save the new file
193
238
  self.DataModel.Project.SaveAs(path)
194
239
 
195
240
  def launch_gui(self, delete_tmp_on_close: bool = True, dry_run: bool = False):
@@ -292,22 +337,22 @@ class App:
292
337
  return GetterWrapper(self._app, lambda app: app.DataModel)
293
338
 
294
339
  @property
295
- def ExtAPI(self):
340
+ def ExtAPI(self) -> Ansys.ACT.Interfaces.Mechanical.IMechanicalExtAPI:
296
341
  """Return the ExtAPI object."""
297
342
  return GetterWrapper(self._app, lambda app: app.ExtAPI)
298
343
 
299
344
  @property
300
- def Tree(self):
345
+ def Tree(self) -> Ansys.ACT.Automation.Mechanical.Tree:
301
346
  """Return the Tree object."""
302
347
  return GetterWrapper(self._app, lambda app: app.DataModel.Tree)
303
348
 
304
349
  @property
305
- def Model(self):
350
+ def Model(self) -> Ansys.ACT.Automation.Mechanical.Model:
306
351
  """Return the Model object."""
307
352
  return GetterWrapper(self._app, lambda app: app.DataModel.Project.Model)
308
353
 
309
354
  @property
310
- def Graphics(self):
355
+ def Graphics(self) -> Ansys.ACT.Common.Graphics.MechanicalGraphicsWrapper:
311
356
  """Return the Graphics object."""
312
357
  return GetterWrapper(self._app, lambda app: app.ExtAPI.Graphics)
313
358
 
@@ -59,9 +59,8 @@ class BackgroundApp:
59
59
  time.sleep(0.05)
60
60
  continue
61
61
  else:
62
- assert (
63
- not BackgroundApp.__stopped
64
- ), "Cannot initialize a BackgroundApp once it has been stopped!"
62
+ if BackgroundApp.__stopped:
63
+ raise RuntimeError("Cannot initialize a BackgroundApp once it has been stopped!")
65
64
 
66
65
  def new():
67
66
  BackgroundApp.__app.new()
@@ -80,7 +79,8 @@ class BackgroundApp:
80
79
 
81
80
  def post(self, callable: typing.Callable):
82
81
  """Post callable method to the background app thread."""
83
- assert not BackgroundApp.__stopped, "Cannot use background app after stopping it."
82
+ if BackgroundApp.__stopped:
83
+ raise RuntimeError("Cannot use BackgroundApp after stopping it.")
84
84
  return BackgroundApp.__poster.post(callable)
85
85
 
86
86
  def stop(self) -> None:
@@ -102,5 +102,5 @@ class BackgroundApp:
102
102
  try:
103
103
  utils.sleep(40)
104
104
  except:
105
- pass
105
+ raise Exception("BackgroundApp cannot sleep.") # pragma: no cover
106
106
  BackgroundApp.__stopped = True
@@ -22,7 +22,10 @@
22
22
  """Run Mechanical UI from Python."""
23
23
 
24
24
  from pathlib import Path
25
- from subprocess import Popen
25
+
26
+ # Subprocess is needed to launch the GUI and clean up the process on close.
27
+ # Excluding bandit check.
28
+ from subprocess import Popen # nosec: B404
26
29
  import sys
27
30
  import tempfile
28
31
  import typing
@@ -113,7 +116,7 @@ class UILauncher:
113
116
  if not self._dry_run:
114
117
  # The subprocess that uses ansys-mechanical to launch the GUI of the temporary
115
118
  # mechdb file
116
- process = Popen(args)
119
+ process = Popen(args) # nosec: B603 # pragma: no cover
117
120
  return process
118
121
  else:
119
122
  # Return a string containing the args
@@ -136,7 +139,7 @@ class UILauncher:
136
139
  # Open a subprocess to remove the temporary mechdb file and folder when the process ends
137
140
  Popen(
138
141
  [sys.executable, cleanup_script, str(process.pid), temp_mechdb_path]
139
- ) # pragma: no cover
142
+ ) # pragma: no cover # nosec: B603
140
143
 
141
144
 
142
145
  def _is_saved(app: "ansys.mechanical.core.embedding.App") -> bool:
@@ -26,7 +26,8 @@ import os
26
26
  import shutil
27
27
  from typing import Optional
28
28
  from urllib.parse import urljoin
29
- import urllib.request
29
+
30
+ import requests
30
31
 
31
32
  import ansys.mechanical.core as pymechanical
32
33
 
@@ -53,9 +54,13 @@ def _get_filepath_on_default_server(filename: str, *directory: str):
53
54
  return joiner(server, filename)
54
55
 
55
56
 
56
- def _retrieve_url(url, dest):
57
- saved_file, _ = urllib.request.urlretrieve(url, filename=dest)
58
- return saved_file
57
+ def _retrieve_url(url: str, dest: str) -> str:
58
+ with requests.get(url, stream=True, timeout=10) as r:
59
+ r.raise_for_status()
60
+ with open(dest, "wb") as f:
61
+ for chunk in r.iter_content(chunk_size=4096):
62
+ f.write(chunk)
63
+ return dest
59
64
 
60
65
 
61
66
  def _retrieve_data(url: str, filename: str, dest: str = None, force: bool = False):
@@ -25,13 +25,57 @@
25
25
  import json
26
26
  import os
27
27
  from pathlib import Path
28
+ import re
29
+ import site
28
30
  import sys
29
- import sysconfig
30
31
 
31
32
  import ansys.tools.path as atp
32
33
  import click
33
34
 
34
35
 
36
+ def get_stubs_location():
37
+ """Find the ansys-mechanical-stubs installation location in site-packages.
38
+
39
+ Returns
40
+ -------
41
+ pathlib.Path
42
+ The path to the ansys-mechanical-stubs installation in site-packages.
43
+ """
44
+ site_packages = site.getsitepackages()
45
+ prefix_path = sys.prefix.replace("\\", "\\\\")
46
+ site_packages_regex = re.compile(f"{prefix_path}.*site-packages$")
47
+ site_packages_paths = list(filter(site_packages_regex.match, site_packages))
48
+
49
+ if len(site_packages_paths) == 1:
50
+ # Get the stubs location
51
+ stubs_location = Path(site_packages_paths[0]) / "ansys" / "mechanical" / "stubs"
52
+ return stubs_location
53
+
54
+ raise Exception("Could not retrieve the location of the ansys-mechanical-stubs package.")
55
+
56
+
57
+ def get_stubs_versions(stubs_location: Path):
58
+ """Retrieve the revision numbers in ansys-mechanical-stubs.
59
+
60
+ Parameters
61
+ ----------
62
+ pathlib.Path
63
+ The path to the ansys-mechanical-stubs installation in site-packages.
64
+
65
+ Returns
66
+ -------
67
+ list
68
+ The list containing minimum and maximum versions in the ansys-mechanical-stubs package.
69
+ """
70
+ # Get revision numbers in stubs folder
71
+ revns = [
72
+ int(revision[1:])
73
+ for revision in os.listdir(stubs_location)
74
+ if os.path.isdir(os.path.join(stubs_location, revision)) and revision.startswith("v")
75
+ ]
76
+ return revns
77
+
78
+
35
79
  def _vscode_impl(
36
80
  target: str = "user",
37
81
  revision: int = None,
@@ -65,9 +109,7 @@ def _vscode_impl(
65
109
  settings_json = current_dir / ".vscode" / "settings.json"
66
110
 
67
111
  # Location where the stubs are installed -> .venv/Lib/site-packages, for example
68
- stubs_location = (
69
- Path(sysconfig.get_paths()["purelib"]) / "ansys" / "mechanical" / "stubs" / f"v{revision}"
70
- )
112
+ stubs_location = get_stubs_location() / f"v{revision}"
71
113
 
72
114
  # The settings to add to settings.json for autocomplete to work
73
115
  settings_json_data = {
@@ -105,11 +147,17 @@ def _cli_impl(
105
147
  The Mechanical revision number. For example, "242".
106
148
  If unspecified, it finds the default Mechanical version from ansys-tools-path.
107
149
  """
150
+ # Get the ansys-mechanical-stubs install location
151
+ stubs_location = get_stubs_location()
152
+ # Get all revision numbers available in ansys-mechanical-stubs
153
+ revns = get_stubs_versions(stubs_location)
108
154
  # Check the IDE and raise an exception if it's not VS Code
109
- if ide == "vscode":
110
- return _vscode_impl(target, revision)
111
- else:
155
+ if revision < min(revns) or revision > max(revns):
156
+ raise Exception(f"PyMechanical Stubs are not available for {revision}")
157
+ elif ide != "vscode":
112
158
  raise Exception(f"{ide} is not supported at the moment.")
159
+ else:
160
+ return _vscode_impl(target, revision)
113
161
 
114
162
 
115
163
  @click.command()
@@ -118,13 +166,13 @@ def _cli_impl(
118
166
  "--ide",
119
167
  default="vscode",
120
168
  type=str,
121
- help="The IDE being used.",
169
+ help="The IDE being used. By default, it's ``vscode``.",
122
170
  )
123
171
  @click.option(
124
172
  "--target",
125
173
  default="user",
126
174
  type=str,
127
- help="The type of settings to update - either ``user`` or ``workspace`` settings.",
175
+ help="The type of settings to update - either ``user`` or ``workspace`` settings in VS Code.",
128
176
  )
129
177
  @click.option(
130
178
  "--revision",
@@ -151,7 +199,7 @@ def cli(ide: str, target: str, revision: int) -> None:
151
199
  -----
152
200
  The following example demonstrates the main use of this tool:
153
201
 
154
- $ ansys-mechanical-ideconfig --ide vscode --location user --revision 242
202
+ $ ansys-mechanical-ideconfig --ide vscode --target user --revision 242
155
203
 
156
204
  """
157
205
  exe = atp.get_mechanical_path(allow_input=False, version=revision)
@@ -23,10 +23,11 @@
23
23
  """Launch Mechanical in batch or UI mode."""
24
24
  import errno
25
25
  import os
26
- import subprocess
26
+
27
+ # Subprocess is needed to start the backend. Excluding bandit check.
28
+ import subprocess # nosec: B404
27
29
 
28
30
  from ansys.mechanical.core import LOG
29
- from ansys.mechanical.core.misc import is_windows
30
31
 
31
32
 
32
33
  class MechanicalLauncher:
@@ -90,17 +91,16 @@ class MechanicalLauncher:
90
91
  env_variables = self.__get_env_variables()
91
92
  args_list = self.__get_commandline_args()
92
93
 
93
- shell_value = False
94
-
95
- if is_windows():
96
- shell_value = True
97
-
98
94
  LOG.info(f"Starting the process using {args_list}.")
99
95
  if self.verbose:
100
96
  command = " ".join(args_list)
101
97
  print(f"Running {command}.")
102
98
 
103
- process = subprocess.Popen(args_list, shell=shell_value, env=env_variables)
99
+ process = subprocess.Popen(
100
+ args_list,
101
+ stdout=subprocess.PIPE,
102
+ env=env_variables,
103
+ ) # nosec: B603
104
104
  LOG.info(f"Started the process:{process} using {args_list}.")
105
105
 
106
106
  @staticmethod
@@ -496,7 +496,6 @@ class Mechanical(object):
496
496
  raise
497
497
  finally:
498
498
  self._disable_logging = False
499
- pass
500
499
  return self._version
501
500
 
502
501
  @property
@@ -2243,3 +2242,86 @@ def launch_mechanical(
2243
2242
  raise exception
2244
2243
 
2245
2244
  return mechanical
2245
+
2246
+
2247
+ def connect_to_mechanical(
2248
+ ip=None,
2249
+ port=None,
2250
+ loglevel="ERROR",
2251
+ log_file=False,
2252
+ log_mechanical=None,
2253
+ connect_timeout=120,
2254
+ clear_on_connect=False,
2255
+ cleanup_on_exit=False,
2256
+ keep_connection_alive=True,
2257
+ ) -> Mechanical:
2258
+ """Connect to an existing Mechanical server instance.
2259
+
2260
+ Parameters
2261
+ ----------
2262
+ ip : str, optional
2263
+ IP address for connecting to an existing Mechanical instance. The
2264
+ IP address defaults to ``"127.0.0.1"``.
2265
+ port : int, optional
2266
+ Port to listen on for an existing Mechanical instance. The default is ``None``,
2267
+ in which case ``10000`` is used. You can override the
2268
+ default behavior of this parameter with the
2269
+ ``PYMECHANICAL_PORT=<VALID PORT>`` environment variable.
2270
+ loglevel : str, optional
2271
+ Level of messages to print to the console.
2272
+ Options are:
2273
+
2274
+ - ``"WARNING"``: Prints only Ansys warning messages.
2275
+ - ``"ERROR"``: Prints only Ansys error messages.
2276
+ - ``"INFO"``: Prints all Ansys messages.
2277
+
2278
+ The default is ``WARNING``.
2279
+ log_file : bool, optional
2280
+ Whether to copy the messages to a file named ``logs.log``, which is
2281
+ located where the Python script is executed. The default is ``False``.
2282
+ log_mechanical : str, optional
2283
+ Path to the output file on the local disk to write every script
2284
+ command to. The default is ``None``. However, you might set
2285
+ ``"log_mechanical='pymechanical_log.txt'"`` to write all commands that are
2286
+ sent to Mechanical via PyMechanical to this file. You can then use these
2287
+ commands to run a script within Mechanical without PyMechanical.
2288
+ connect_timeout : float, optional
2289
+ Maximum allowable time in seconds to connect to the Mechanical server.
2290
+ The default is ``120``.
2291
+ clear_on_connect : bool, optional
2292
+ Whether to clear the Mechanical instance when connecting. The default is ``False``.
2293
+ When ``True``, a fresh environment is provided when you connect to Mechanical.
2294
+ cleanup_on_exit : bool, optional
2295
+ Whether to exit Mechanical when Python exits. The default is ``False``.
2296
+ When ``False``, Mechanical is not exited when the garbage for this Mechanical
2297
+ instance is collected.
2298
+ keep_connection_alive : bool, optional
2299
+ Whether to keep the gRPC connection alive by running a background thread
2300
+ and making dummy calls for remote connections. The default is ``True``.
2301
+
2302
+ Returns
2303
+ -------
2304
+ ansys.mechanical.core.mechanical.Mechanical
2305
+ Instance of Mechanical.
2306
+
2307
+ Examples
2308
+ --------
2309
+ Connect to an existing Mechanical instance at IP address ``192.168.1.30`` on port
2310
+ ``50001``..
2311
+
2312
+
2313
+ >>> from ansys.mechanical.core import connect_to_mechanical
2314
+ >>> pymech = connect_to_mechanical(ip='192.168.1.30', port=50001)
2315
+ """
2316
+ return launch_mechanical(
2317
+ start_instance=False,
2318
+ loglevel=loglevel,
2319
+ log_file=log_file,
2320
+ log_mechanical=log_mechanical,
2321
+ start_timeout=connect_timeout,
2322
+ port=port,
2323
+ ip=ip,
2324
+ clear_on_connect=clear_on_connect,
2325
+ cleanup_on_exit=cleanup_on_exit,
2326
+ keep_connection_alive=keep_connection_alive,
2327
+ )
@@ -180,7 +180,7 @@ class LocalMechanicalPool:
180
180
  version = kwargs["version"]
181
181
  self._remote = True
182
182
  else:
183
- raise "Pypim is configured. But version is not passed."
183
+ raise ValueError("Pypim is configured, but version is not passed.")
184
184
  else: # get default executable
185
185
  exec_file = get_mechanical_path()
186
186
  if exec_file is None: # pragma: no cover
@@ -389,8 +389,8 @@ class LocalMechanicalPool:
389
389
  LOG.error(f"Stopped instance because running failed.")
390
390
  try:
391
391
  obj.exit()
392
- except:
393
- pass
392
+ except Exception as e:
393
+ LOG.error(f"Unexpected error while exiting: {e}")
394
394
 
395
395
  obj.locked = False
396
396
  if pbar:
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: ansys-mechanical-core
3
- Version: 0.11.8
3
+ Version: 0.11.10
4
4
  Summary: A python wrapper for Ansys Mechanical
5
5
  Keywords: pymechanical,mechanical,ansys,pyansys
6
6
  Author-email: "ANSYS, Inc." <pyansys.core@ansys.com>
@@ -17,6 +17,7 @@ Classifier: License :: OSI Approved :: MIT License
17
17
  Classifier: Operating System :: OS Independent
18
18
  Requires-Dist: ansys-api-mechanical==0.1.2
19
19
  Requires-Dist: ansys-mechanical-env==0.1.8
20
+ Requires-Dist: ansys-mechanical-stubs==0.1.4
20
21
  Requires-Dist: ansys-platform-instancemanagement>=1.0.1
21
22
  Requires-Dist: ansys-pythonnet>=3.1.0rc2
22
23
  Requires-Dist: ansys-tools-path>=0.3.1
@@ -25,20 +26,21 @@ Requires-Dist: click>=8.1.3
25
26
  Requires-Dist: clr-loader==0.2.6
26
27
  Requires-Dist: grpcio>=1.30.0
27
28
  Requires-Dist: protobuf>=3.12.2,<6
28
- Requires-Dist: psutil==6.0.0
29
+ Requires-Dist: psutil==6.1.0
29
30
  Requires-Dist: tqdm>=4.45.0
31
+ Requires-Dist: requests>=2,<3
30
32
  Requires-Dist: sphinx==8.1.3 ; extra == "doc"
31
- Requires-Dist: ansys-sphinx-theme[autoapi]==1.1.4 ; extra == "doc"
32
- Requires-Dist: grpcio==1.66.2 ; extra == "doc"
33
+ Requires-Dist: ansys-sphinx-theme[autoapi]==1.2.1 ; extra == "doc"
34
+ Requires-Dist: grpcio==1.68.0 ; extra == "doc"
33
35
  Requires-Dist: imageio-ffmpeg==0.5.1 ; extra == "doc"
34
36
  Requires-Dist: imageio==2.36.0 ; extra == "doc"
35
37
  Requires-Dist: jupyter_sphinx==0.5.3 ; extra == "doc"
36
38
  Requires-Dist: jupyterlab>=3.2.8 ; extra == "doc"
37
39
  Requires-Dist: matplotlib==3.9.2 ; extra == "doc"
38
- Requires-Dist: numpy==2.1.2 ; extra == "doc"
40
+ Requires-Dist: numpy==2.1.3 ; extra == "doc"
39
41
  Requires-Dist: numpydoc==1.8.0 ; extra == "doc"
40
42
  Requires-Dist: pandas==2.2.3 ; extra == "doc"
41
- Requires-Dist: panel==1.5.2 ; extra == "doc"
43
+ Requires-Dist: panel==1.5.4 ; extra == "doc"
42
44
  Requires-Dist: plotly==5.24.1 ; extra == "doc"
43
45
  Requires-Dist: pypandoc==1.14 ; extra == "doc"
44
46
  Requires-Dist: pytest-sphinx==0.6.3 ; extra == "doc"
@@ -53,11 +55,11 @@ Requires-Dist: sphinx-notfound-page==1.0.4 ; extra == "doc"
53
55
  Requires-Dist: sphinxcontrib-websupport==2.0.0 ; extra == "doc"
54
56
  Requires-Dist: sphinxemoji==0.3.1 ; extra == "doc"
55
57
  Requires-Dist: pytest==8.3.3 ; extra == "tests"
56
- Requires-Dist: pytest-cov==5.0.0 ; extra == "tests"
58
+ Requires-Dist: pytest-cov==6.0.0 ; extra == "tests"
57
59
  Requires-Dist: pytest-print==1.0.2 ; extra == "tests"
58
- Requires-Dist: psutil==6.0.0 ; extra == "tests"
60
+ Requires-Dist: psutil==6.1.0 ; extra == "tests"
59
61
  Requires-Dist: ansys-tools-visualization-interface>=0.2.6 ; extra == "viz"
60
- Requires-Dist: usd-core==24.8 ; extra == "viz"
62
+ Requires-Dist: usd-core==24.11 ; extra == "viz"
61
63
  Project-URL: Changelog, https://mechanical.docs.pyansys.com/version/stable/changelog.html
62
64
  Project-URL: Documentation, https://mechanical.docs.pyansys.com
63
65
  Project-URL: Homepage, https://github.com/ansys/pymechanical
@@ -1,20 +1,20 @@
1
- ansys/mechanical/core/__init__.py,sha256=91oPPatmqRyry_kzusIq522MQNiBgN5Of54zDMIuJ58,2537
1
+ ansys/mechanical/core/__init__.py,sha256=3v4dIba0Ku10PyTVnkYux0XyTbByuXkvK3LRzlsrLBw,2564
2
2
  ansys/mechanical/core/_version.py,sha256=V2aPQlSX4bCe1N1hLIkQaed84WN4s9wl6Q7890ZihNU,1744
3
3
  ansys/mechanical/core/errors.py,sha256=oGaBH-QZxen3YV3IChAFv8bwW5rK_IXTYgDqbX5lp1E,4508
4
4
  ansys/mechanical/core/feature_flags.py,sha256=L88vHrI2lRjZPPUTW5sqcdloeK3Ouh8vt1VPfZLs5Wc,2032
5
- ansys/mechanical/core/ide_config.py,sha256=44xst5N67ekVq8GhFMhetJDLJOTJcPJfu1mSaZdxNzI,5619
6
- ansys/mechanical/core/launcher.py,sha256=-I1hoscyc5HY8EHL07gPUeoeRgUJaW8agdQWOpqK30A,6659
5
+ ansys/mechanical/core/ide_config.py,sha256=Sbzax5Pf7FK0XAMhzcsBJu_8CclABLKuebDCqlvHN_0,7334
6
+ ansys/mechanical/core/launcher.py,sha256=dS3hN8RwiRh_c2RlXV5MVL7pgKZG5ZiNWreWQf3E800,6675
7
7
  ansys/mechanical/core/logging.py,sha256=wQ8QwKd2k0R6SkN7cv2nHAO7V5-BrElEOespDNMpSLo,24554
8
- ansys/mechanical/core/mechanical.py,sha256=MOGEMYgT9Mz0GFnTbixw-5SlfDEfZ-f4iDJG8mtXAVE,79993
8
+ ansys/mechanical/core/mechanical.py,sha256=b4v0bntCp505ugVbGglzPxj_KAvOHYLMwvYuXrVJYkw,83205
9
9
  ansys/mechanical/core/misc.py,sha256=edm2UnklbooYW_hQUgk4n_UFCtlSGAVYJmC2gag74vw,5370
10
- ansys/mechanical/core/pool.py,sha256=jC3quT7fsGMkfrPJ-nZhiigYmzXlj80L9fH9emE7Rrw,26514
10
+ ansys/mechanical/core/pool.py,sha256=F-Ckbc5c0V8OvYLOxoV2oJ3E8QOmPG0hH9XA07h3eAU,26586
11
11
  ansys/mechanical/core/run.py,sha256=KgSL2XEyCxK7iq_XVDNEv6fx7SN56RA-ihNg2dLyuZc,9920
12
12
  ansys/mechanical/core/embedding/__init__.py,sha256=y0yp3dnBW2oj9Jh_L_qfZstAbpON974EMmpV9w3kT3g,1356
13
13
  ansys/mechanical/core/embedding/addins.py,sha256=2-de-sIOWjO5MCKdBHC2LFxTItr1DUztABIONTQhiWc,2167
14
- ansys/mechanical/core/embedding/app.py,sha256=Bc3OlcZHzLDcmmfiDiwXRY_SJ6nSU3eIowm2Db3Xg_Y,17033
14
+ ansys/mechanical/core/embedding/app.py,sha256=q6DQC8xTpN8v9hfoHLIIkC6xU4Mkh6i6hnCldgGfDKM,18973
15
15
  ansys/mechanical/core/embedding/app_libraries.py,sha256=RiTO23AzjssAylIH2DaTa6mcJmxhfrlHW-yYvHpIkt0,2923
16
16
  ansys/mechanical/core/embedding/appdata.py,sha256=krcmcgHhraHIlORFr43QvUXlAiXg231g_2iOIxkW_aQ,4223
17
- ansys/mechanical/core/embedding/background.py,sha256=ICm87gO6CDA4Ot_6Yf3-8YPNUEa3PHWieOECXeUfZmM,3650
17
+ ansys/mechanical/core/embedding/background.py,sha256=QxR5QE1Q2gdcVy6QTy-PYmTOyXAhgYV7wqLV2bxUV4I,3731
18
18
  ansys/mechanical/core/embedding/cleanup_gui.py,sha256=GvWX2ylGBb5k1Hgz9vUywXNgWpDVwZ6L2M4gaOXyxl4,2354
19
19
  ansys/mechanical/core/embedding/enum_importer.py,sha256=3REw7SI_WmfPuzD0i9mdC7k53S-1jxhowqSxjzw7UGk,1543
20
20
  ansys/mechanical/core/embedding/imports.py,sha256=FcpePAi867YCuCH_lJotrLzYc1MW5VSAaLpYz7RejcA,4287
@@ -24,7 +24,7 @@ ansys/mechanical/core/embedding/poster.py,sha256=V0-cm229HgpOgcYXa0bnz0U5BDGw8_A
24
24
  ansys/mechanical/core/embedding/resolver.py,sha256=95jUvZhNFEJBlbAbclzpK1Wgk51KsnYOKa5HvC7Oeco,1878
25
25
  ansys/mechanical/core/embedding/runtime.py,sha256=zDxwKDTc23cR_kc63M9u4zDWVoJ2efEtF3djHGwicG4,2285
26
26
  ansys/mechanical/core/embedding/shims.py,sha256=IJHhUmfsCtYEUFmuf2LGgozTiu03D0OZn1Qq1nCxXiI,1732
27
- ansys/mechanical/core/embedding/ui.py,sha256=4XCl9ay30D1sOzLyHFwG_bK7IboYBWNiCrbTM3cYhnc,8331
27
+ ansys/mechanical/core/embedding/ui.py,sha256=6LRLzfPZq2ktdToo8V-pCwoha_GzFZen_VdQeFmW0DE,8497
28
28
  ansys/mechanical/core/embedding/utils.py,sha256=UObL4XBvx19aAYV8iVM4eCQR9vfqNSDsdwqkb1VFwTY,1900
29
29
  ansys/mechanical/core/embedding/warnings.py,sha256=igXfTCkDb8IDQqYP02Cynsqr7ewnueR12Dr0zpku7Kw,3071
30
30
  ansys/mechanical/core/embedding/logger/__init__.py,sha256=XgC05i7r-YzotLtcZ5_rGtA0jDKzeuZiDB88d2pIL7o,7986
@@ -37,9 +37,9 @@ ansys/mechanical/core/embedding/viz/embedding_plotter.py,sha256=ausbFhezwmLCGhu6
37
37
  ansys/mechanical/core/embedding/viz/usd_converter.py,sha256=feDq2KrZhYL-RR1miECQL-y0VNDhnZQ9Wke5UOkYmp4,5329
38
38
  ansys/mechanical/core/embedding/viz/utils.py,sha256=FuGDh7a5mUqs2UZOaXZLD0vONdmDXl5JfDRilIVbjds,3660
39
39
  ansys/mechanical/core/examples/__init__.py,sha256=A1iS8nknTU1ylafHZpYC9LQJ0sY83x8m1cDXsgvFOBo,1267
40
- ansys/mechanical/core/examples/downloads.py,sha256=lJ2SrX9Qs0t2FSmMwUBB4UgSpk6Qb2-coY1PLlzPzHU,4144
41
- ansys_mechanical_core-0.11.8.dist-info/entry_points.txt,sha256=tErx6bIM27HGgwyM6ryyTUTw30Ab2F9J3FFkX2TPkhI,130
42
- ansys_mechanical_core-0.11.8.dist-info/LICENSE,sha256=gBJ2GQ6oDJwAWxcxmjx_0uXc-N0P4sHhA7BXsdPTfco,1098
43
- ansys_mechanical_core-0.11.8.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
44
- ansys_mechanical_core-0.11.8.dist-info/METADATA,sha256=WpLgvz8EIi3vt36XykzYWPtLSs8-Aj4etwPrqg4nJ8Q,9811
45
- ansys_mechanical_core-0.11.8.dist-info/RECORD,,
40
+ ansys/mechanical/core/examples/downloads.py,sha256=rYFsq8U3YpXi_DVx_Uu5sRFFUS85ks6rMJfcgyvBat0,4295
41
+ ansys_mechanical_core-0.11.10.dist-info/entry_points.txt,sha256=tErx6bIM27HGgwyM6ryyTUTw30Ab2F9J3FFkX2TPkhI,130
42
+ ansys_mechanical_core-0.11.10.dist-info/LICENSE,sha256=gBJ2GQ6oDJwAWxcxmjx_0uXc-N0P4sHhA7BXsdPTfco,1098
43
+ ansys_mechanical_core-0.11.10.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
44
+ ansys_mechanical_core-0.11.10.dist-info/METADATA,sha256=Y0fFZOs9WzxoRvYpxVtTDjS8sYw-TBGdju70uD3z_hs,9888
45
+ ansys_mechanical_core-0.11.10.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: flit 3.9.0
2
+ Generator: flit 3.10.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any