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.
- ansys/mechanical/core/__init__.py +1 -0
- ansys/mechanical/core/embedding/app.py +52 -7
- ansys/mechanical/core/embedding/background.py +5 -5
- ansys/mechanical/core/embedding/ui.py +6 -3
- ansys/mechanical/core/examples/downloads.py +9 -4
- ansys/mechanical/core/ide_config.py +58 -10
- ansys/mechanical/core/launcher.py +8 -8
- ansys/mechanical/core/mechanical.py +83 -1
- ansys/mechanical/core/pool.py +3 -3
- {ansys_mechanical_core-0.11.8.dist-info → ansys_mechanical_core-0.11.10.dist-info}/METADATA +12 -10
- {ansys_mechanical_core-0.11.8.dist-info → ansys_mechanical_core-0.11.10.dist-info}/RECORD +14 -14
- {ansys_mechanical_core-0.11.8.dist-info → ansys_mechanical_core-0.11.10.dist-info}/WHEEL +1 -1
- {ansys_mechanical_core-0.11.8.dist-info → ansys_mechanical_core-0.11.10.dist-info}/LICENSE +0 -0
- {ansys_mechanical_core-0.11.8.dist-info → ansys_mechanical_core-0.11.10.dist-info}/entry_points.txt +0 -0
@@ -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
|
-
|
63
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
58
|
-
|
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
|
110
|
-
|
111
|
-
|
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 --
|
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
|
-
|
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(
|
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
|
+
)
|
ansys/mechanical/core/pool.py
CHANGED
@@ -180,7 +180,7 @@ class LocalMechanicalPool:
|
|
180
180
|
version = kwargs["version"]
|
181
181
|
self._remote = True
|
182
182
|
else:
|
183
|
-
raise "Pypim is configured
|
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
|
-
|
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
|
+
Metadata-Version: 2.3
|
2
2
|
Name: ansys-mechanical-core
|
3
|
-
Version: 0.11.
|
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.
|
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
|
32
|
-
Requires-Dist: grpcio==1.
|
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.
|
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.
|
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==
|
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.
|
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.
|
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=
|
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=
|
6
|
-
ansys/mechanical/core/launcher.py,sha256
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
41
|
-
ansys_mechanical_core-0.11.
|
42
|
-
ansys_mechanical_core-0.11.
|
43
|
-
ansys_mechanical_core-0.11.
|
44
|
-
ansys_mechanical_core-0.11.
|
45
|
-
ansys_mechanical_core-0.11.
|
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,,
|
File without changes
|
{ansys_mechanical_core-0.11.8.dist-info → ansys_mechanical_core-0.11.10.dist-info}/entry_points.txt
RENAMED
File without changes
|