Skip to content

Commit

Permalink
chore: merge branch 'main' into feat/piping-MAPDL-output-to-a-given-file
Browse files Browse the repository at this point in the history
  • Loading branch information
germa89 committed Dec 9, 2024
2 parents 13cf83b + afad43e commit f13988f
Show file tree
Hide file tree
Showing 15 changed files with 45 additions and 59 deletions.
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,6 @@ repos:

# this validates our github workflow files
- repo: https://github.com/python-jsonschema/check-jsonschema
rev: 0.29.4
rev: 0.30.0
hooks:
- id: check-github-workflows
1 change: 1 addition & 0 deletions doc/changelog.d/3589.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fix: linkchecker and cheatsheet links
1 change: 1 addition & 0 deletions doc/changelog.d/3590.miscellaneous.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
feat: improving load_array to reduce format line length
1 change: 1 addition & 0 deletions doc/changelog.d/3593.dependencies.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
build: bump imageio from 2.36.0 to 2.36.1 in the documentation group
1 change: 0 additions & 1 deletion doc/changelog.d/3596.miscellaneous.md

This file was deleted.

1 change: 1 addition & 0 deletions doc/changelog.d/3599.maintenance.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ci: pre-commit autoupdate
10 changes: 6 additions & 4 deletions doc/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@
with open("links.rst") as f:
rst_epilog += f.read()

rst_epilog = rst_epilog.replace("%%VERSION%%", "v231")
rst_epilog = rst_epilog.replace("%%VERSION%%", "v242")
rst_epilog = rst_epilog.replace("%%PYMAPDLVERSION%%", release)


Expand All @@ -219,8 +219,10 @@
linkcheck_ignore = [
"https://github.com/ansys/pymapdl/*",
"https://mapdl.docs.pyansys.com/*",
"https://ansysaccount.b2clogin.com/*", # behind payfirewall
"https://ansyshelp.ansys.com/*", # behind payfirewall
"https://www.ansys.com/*", # behind firewall
"https://download.ansys.com/*", # behind firewall
"https://ansysaccount.b2clogin.com/*", # behind authentication
"https://ansyshelp.ansys.com/*", # behind authentication
"https://forum.ansys.com/forums/*", # It is detected as broken
"https://courses.ansys.com/*", # It is detected as broken
]
Expand All @@ -239,7 +241,7 @@
f"https://github.com/ansys/pymapdl/releases/tag/v{__version__}"
)

user_agent = """curl https://www.ansys.com -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.3"""
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.2420.81" # noqa: E501

# The name of the Pygments (syntax highlighting) style to use.
pygments_style = "sphinx"
Expand Down
2 changes: 1 addition & 1 deletion doc/source/getting_started/learning.rst
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Downloads

.. jinja:: cheat_sheet

- View and download :download:`PyMAPDL cheatsheet <https://mapdl.docs.ansys.com/version/{{ version }}/_static/cheatsheet.pdf>`
- View and download :download:`PyMAPDL cheatsheet <https://github.com/ansys/pymapdl/blob/gh-pages/version/{{ version }}/_static/cheat_sheet.pdf>`
to help you to learn PyMAPDL.

- Visit :ref:`ref_examples` to learn how PyMAPDL can be used to solve different real problems.
Expand Down
5 changes: 3 additions & 2 deletions doc/source/getting_started/project.rst
Original file line number Diff line number Diff line change
Expand Up @@ -174,8 +174,9 @@ In the upper right corner of the documentation's title bar, there is an option f
viewing the documentation for the latest stable release to viewing the documentation for the
development version or previously released versions.

You can also `download <pymapdl_cheat_sheet>`_ the PyMAPDL cheat sheet. This one-page reference provides
syntax rules and commands for using PyMAPDL.
You can also download the
:download:`PyMAPDL cheat sheet <https://github.com/ansys/pymapdl/blob/gh-pages/version/{{ version }}/_static/cheat_sheet.pdf>`.
This one-page reference provides syntax rules and commands for using PyMAPDL.

On the `PyMAPDL Issues <https://github.com/ansys/pymapdl/issues>`_ page,
you can create issues to report bugs and request new features. On the `PyMAPDL Discussions
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ doc = [
"ansys-tools-visualization-interface==0.5.0",
"grpcio==1.68.0",
"imageio-ffmpeg==0.5.1",
"imageio==2.36.0",
"imageio==2.36.1",
"jupyter_sphinx==0.5.3",
"jupyter==1.1.1",
"jupyterlab>=3.2.8",
Expand Down
49 changes: 10 additions & 39 deletions src/ansys/mapdl/core/launcher.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
import subprocess # nosec B404
import threading
import time
from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional, Tuple, Union
from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional, Union
import warnings

import psutil
Expand Down Expand Up @@ -115,7 +115,6 @@ def version_from_path(*args, **kwargs):
"license_type",
"log_apdl",
"loglevel",
"mapdl_output",
"mode",
"nproc",
"override",
Expand Down Expand Up @@ -438,7 +437,6 @@ def launch_grpc(
run_location: str = None,
env_vars: Optional[Dict[str, str]] = None,
launch_on_hpc: bool = False,
mapdl_output: Optional[str] = None,
) -> subprocess.Popen:
"""Start MAPDL locally in gRPC mode.
Expand All @@ -458,9 +456,6 @@ def launch_grpc(
If running on an HPC, this needs to be :class:`True` to avoid the
temporary file creation on Windows.
mapdl_output : str, optional
Whether redirect MAPDL console output (stdout and stderr) to a file.
Returns
-------
subprocess.Popen
Expand Down Expand Up @@ -492,13 +487,6 @@ def launch_grpc(
"\n============"
)

if mapdl_output:
stdout = open(str(mapdl_output), "wb", 0)
stderr = subprocess.STDOUT
else:
stdout = subprocess.PIPE
stderr = subprocess.PIPE

if os.name == "nt":
# getting tmp file name
if not launch_on_hpc:
Expand All @@ -517,8 +505,8 @@ def launch_grpc(
shell=shell, # sbatch does not work without shell.
cwd=run_location,
stdin=subprocess.DEVNULL,
stdout=stdout,
stderr=stderr,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
env_vars=env_vars,
)

Expand Down Expand Up @@ -566,7 +554,7 @@ def check_mapdl_launch(

if os.name == "posix" and not ON_WSL:
LOG.debug("Checking if gRPC server is alive.")
_check_server_is_alive(stdout_queue, timeout)
_check_server_is_alive(stdout_queue, run_location, timeout)

except MapdlDidNotStart as e: # pragma: no cover
msg = (
Expand Down Expand Up @@ -608,11 +596,7 @@ def _check_file_error_created(run_location, timeout):
raise MapdlDidNotStart(msg)


def _check_server_is_alive(stdout_queue, timeout):
if not stdout_queue:
LOG.debug("No STDOUT queue. Not checking MAPDL this way.")
return

def _check_server_is_alive(stdout_queue, run_location, timeout):
t0 = time.time()
empty_attemps = 3
empty_i = 0
Expand Down Expand Up @@ -645,9 +629,6 @@ def _check_server_is_alive(stdout_queue, timeout):


def _get_std_output(std_queue, timeout=1):
if not std_queue:
return [None]

lines = []
reach_empty = False
t0 = time.time()
Expand All @@ -661,15 +642,10 @@ def _get_std_output(std_queue, timeout=1):
return lines


def _create_queue_for_std(
std: subprocess.PIPE,
) -> Tuple[Optional[Queue[str]], Optional[threading.Thread]]:
def _create_queue_for_std(std):
"""Create a queue and thread objects for a given PIPE std"""
if not std:
LOG.debug("No STDOUT. Not checking MAPDL this way.")
return None, None

def enqueue_output(out: subprocess.PIPE, queue: Queue[str]) -> None:
def enqueue_output(out, queue):
try:
for line in iter(out.readline, b""):
queue.put(line)
Expand All @@ -679,16 +655,16 @@ def enqueue_output(out: subprocess.PIPE, queue: Queue[str]) -> None:
# ValueError: PyMemoryView_FromBuffer(): info -> buf must not be NULL
pass

q: Queue[str] = Queue()
t: threading.Thread = threading.Thread(target=enqueue_output, args=(std, q))
q = Queue()
t = threading.Thread(target=enqueue_output, args=(std, q))
t.daemon = True # thread dies with the program
t.start()

return q, t


def launch_remote_mapdl(
version: Optional[str] = None,
version: str = None,
cleanup_on_exit: bool = True,
) -> MapdlGrpc:
"""Start MAPDL remotely using the product instance management API.
Expand Down Expand Up @@ -1044,7 +1020,6 @@ def launch_mapdl(
version: Optional[Union[int, str]] = None,
running_on_hpc: bool = True,
launch_on_hpc: bool = False,
mapdl_output: Optional[str] = None,
**kwargs: Dict[str, Any],
) -> Union[MapdlGrpc, "MapdlConsole"]:
"""Start MAPDL locally.
Expand Down Expand Up @@ -1230,9 +1205,6 @@ def launch_mapdl(
to specify the scheduler arguments as a string or as a dictionary.
For more information, see :ref:`ref_hpc_slurm`.
mapdl_output : str, optional
Redirect the MAPDL console output to a given file.
kwargs : dict, Optional
These keyword arguments are interface-specific or for
development purposes. For more information, see Notes.
Expand Down Expand Up @@ -1603,7 +1575,6 @@ def launch_mapdl(
run_location=args["run_location"],
env_vars=env_vars,
launch_on_hpc=args.get("launch_on_hpc"),
mapdl_output=args.get("mapdl_output"),
)

if args["launch_on_hpc"]:
Expand Down
4 changes: 2 additions & 2 deletions src/ansys/mapdl/core/mapdl_extended.py
Original file line number Diff line number Diff line change
Expand Up @@ -2314,7 +2314,7 @@ def load_array(self, name, array):
np.savetxt(
filename,
array,
delimiter=",",
delimiter="",
header="File generated by PyMAPDL:load_array",
fmt="%24.18e",
)
Expand All @@ -2329,7 +2329,7 @@ def load_array(self, name, array):
n2 = imax
n3 = kmax
self.vread(name, filename, n1=n1, n2=n2, n3=n3, label=label, nskip=1)
fmt = "(" + ",',',".join(["E24.18" for i in range(jmax)]) + ")"
fmt = f"({jmax}E24.18)"
logger.info("Using *VREAD with format %s in %s", fmt, filename)
self.run(fmt)

Expand Down
4 changes: 2 additions & 2 deletions src/ansys/mapdl/core/mapdl_grpc.py
Original file line number Diff line number Diff line change
Expand Up @@ -650,7 +650,7 @@ def _read_stds(self):
_get_std_output, # Avoid circular import error
)

if self._mapdl_process is None or not self._mapdl_process.stdout:
if self._mapdl_process is None:
return

self._log.debug("Reading stdout")
Expand Down Expand Up @@ -2691,7 +2691,7 @@ def _download_as_raw(self, target_name: str) -> str:
@property
def is_alive(self) -> bool:
"""True when there is an active connect to the gRPC server"""
if self.channel_state not in ["IDLE", "READY", None]:
if self.channel_state not in ["IDLE", "READY"]:
self._log.debug(
"MAPDL instance is not alive because the channel is not 'IDLE' o 'READY'."
)
Expand Down
2 changes: 1 addition & 1 deletion tests/test_launcher.py
Original file line number Diff line number Diff line change
Expand Up @@ -1977,4 +1977,4 @@ def submitter(**kwargs):
assert "### START GRPC SERVER ###" in content
assert " Server listening on" in content

mapdl.exit()
mapdl.exit(force=True)
19 changes: 14 additions & 5 deletions tests/test_parameters.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,11 +134,20 @@ def test__get_parameter_array(mapdl, cleared, number):
assert np.allclose(array, mapdl.parameters._get_parameter_array(name, shape))

# High number
with pytest.raises(MapdlRuntimeError):
shape = (100, 100)
array = np.ones(shape) * number
mapdl.load_array(name=name, array=array)
mapdl.parameters._get_parameter_array(name, shape)
shape = (100, 100)
array = np.ones(shape) * number
mapdl.load_array(name=name, array=array)
assert np.allclose(array, mapdl.parameters._get_parameter_array(name, shape))

# Random number
array = np.random.rand(*shape)
mapdl.load_array(name=name, array=array)
assert np.allclose(array, mapdl.parameters._get_parameter_array(name, shape))

# Random big number
array = np.random.rand(*shape) * number
mapdl.load_array(name=name, array=array)
assert np.allclose(array, mapdl.parameters._get_parameter_array(name, shape))


def parameters_name(mapdl, func, par_name):
Expand Down

0 comments on commit f13988f

Please sign in to comment.