diff --git a/doc/changelog.d/6289.maintenance.md b/doc/changelog.d/6289.maintenance.md new file mode 100644 index 00000000000..12093d3036b --- /dev/null +++ b/doc/changelog.d/6289.maintenance.md @@ -0,0 +1 @@ +Add numpy as default requirement \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 7c69f8430a4..27561c92bf9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,6 +45,7 @@ dependencies = [ "rpyc>=6.0.0,<6.1", "pyyaml", "defusedxml>=0.7,<8.0", + "numpy>=1.20.0,<2.3", ] [project.optional-dependencies] @@ -55,7 +56,6 @@ unit-tests = [ ] integration-tests = [ "matplotlib>=3.5.0,<3.11", - "numpy>=1.20.0,<2.3", "pandas>=1.1.0,<2.3", "pyaedt[unit-tests]", ] @@ -105,7 +105,6 @@ jupyter = [ ] all = [ "matplotlib>=3.5.0,<3.11", - "numpy>=1.20.0,<2.3", "openpyxl>=3.1.0,<3.3", "osmnx>=1.1.0,<2.1", "pandas>=1.1.0,<2.3", @@ -120,7 +119,6 @@ all = [ examples = [ "imageio>=2.34.0,<2.38", "matplotlib>=3.5.0,<3.11", - "numpy>=1.20.0,<2.3", "openpyxl>=3.1.0,<3.3", "osmnx>=1.1.0,<2.1", "pandas>=1.1.0,<2.3", diff --git a/src/ansys/aedt/core/generic/file_utils.py b/src/ansys/aedt/core/generic/file_utils.py index ae9aa86b380..e05f02ee8fc 100644 --- a/src/ansys/aedt/core/generic/file_utils.py +++ b/src/ansys/aedt/core/generic/file_utils.py @@ -670,11 +670,7 @@ def parse_excitation_file( tuple or bool Frequency, magnitude and phase. """ - try: - import numpy as np - except ImportError: # pragma: no cover - pyaedt_logger.error("NumPy is not available. Install it.") - return False + import numpy as np try: import pandas @@ -880,11 +876,7 @@ def compute_fft(time_values, data_values, window=None) -> Union[tuple, bool]: # tuple or bool Frequency and values. """ - try: - import numpy as np - except ImportError: - pyaedt_logger.error("NumPy is not available. Install it.") - return False + import numpy as np deltaT = time_values[-1] - time_values[0] num_points = len(time_values) diff --git a/src/ansys/aedt/core/generic/general_methods.py b/src/ansys/aedt/core/generic/general_methods.py index dbe8eb36d6c..bff84882da5 100644 --- a/src/ansys/aedt/core/generic/general_methods.py +++ b/src/ansys/aedt/core/generic/general_methods.py @@ -794,11 +794,7 @@ def conversion_function(data, function=None): # pragma: no cover >>> conversion_function(values, "ang_deg") array([ 0., 0., 0., 0.]) """ - try: - import numpy as np - except ImportError: - logging.error("NumPy is not available. Install it.") - return False + import numpy as np function = function or "dB10" available_functions = { diff --git a/src/ansys/aedt/core/generic/python_optimizers.py b/src/ansys/aedt/core/generic/python_optimizers.py index 57b9b4a149b..8ee5ad2a123 100644 --- a/src/ansys/aedt/core/generic/python_optimizers.py +++ b/src/ansys/aedt/core/generic/python_optimizers.py @@ -24,15 +24,8 @@ import sys import threading -import warnings - -try: - import numpy as np -except ImportError: # pragma: no cover - warnings.warn( - "The NumPy module is required to run some functionalities of PostProcess.\n" - "Install with \n\npip install numpy\n\nRequires CPython." - ) + +import numpy as np class ThreadTrace(threading.Thread): diff --git a/src/ansys/aedt/core/modeler/advanced_cad/oms.py b/src/ansys/aedt/core/modeler/advanced_cad/oms.py index 9bad58887a5..2d76e922570 100644 --- a/src/ansys/aedt/core/modeler/advanced_cad/oms.py +++ b/src/ansys/aedt/core/modeler/advanced_cad/oms.py @@ -26,20 +26,16 @@ import os import warnings +import numpy as np + from ansys.aedt.core.generic.general_methods import pyaedt_function_handler from ansys.aedt.core.generic.general_methods import settings from ansys.aedt.core.internal.checks import graphics_required logger = settings.logger -try: - import numpy as np -except ImportError: # pragma: no cover - warnings.warn("The NumPy module is required to use the OpenStreetMap Reader.\nInstall with \n\npip install numpy") - try: import osmnx as ox - except ImportError: # pragma: no cover warnings.warn("OpenStreetMap Reader requires osmnx extra package.\nInstall with \n\npip install osmnx") diff --git a/src/ansys/aedt/core/q3d.py b/src/ansys/aedt/core/q3d.py index 3aa713496aa..7e48238fb2e 100644 --- a/src/ansys/aedt/core/q3d.py +++ b/src/ansys/aedt/core/q3d.py @@ -2044,11 +2044,7 @@ def set_material_thresholds( self.oboundary.SetMaterialThresholds(insulator_threshold, perfect_conductor_threshold, magnetic_threshold) return True - except ImportError: # pragma: no cover - warnings.warn( - "The NumPy module is required to use functionalities provided by the module ansys.edt.core.q3d.\n" - "Install with \n\npip install numpy" - ) + except Exception: return False diff --git a/src/ansys/aedt/core/visualization/advanced/farfield_visualization.py b/src/ansys/aedt/core/visualization/advanced/farfield_visualization.py index 939a1ae66f3..5ced125037f 100644 --- a/src/ansys/aedt/core/visualization/advanced/farfield_visualization.py +++ b/src/ansys/aedt/core/visualization/advanced/farfield_visualization.py @@ -27,10 +27,10 @@ import os import shutil import sys -import warnings import defusedxml from defusedxml.ElementTree import ParseError +import numpy as np from ansys.aedt.core.aedt_logger import pyaedt_logger as logger from ansys.aedt.core.generic.constants import AEDT_UNITS @@ -47,16 +47,6 @@ from ansys.aedt.core.visualization.plot.pyvista import ModelPlotter from ansys.aedt.core.visualization.plot.pyvista import get_structured_mesh -try: - import numpy as np -except ImportError: # pragma: no cover - warnings.warn( - "The NumPy module is required to run some functionalities of FfdSolutionData.\n" - "Install with \n\npip install numpy" - ) - np = None - - defusedxml.defuse_stdlib() diff --git a/src/ansys/aedt/core/visualization/advanced/frtm_visualization.py b/src/ansys/aedt/core/visualization/advanced/frtm_visualization.py index 36bdbd817a6..9cdb7f1582a 100644 --- a/src/ansys/aedt/core/visualization/advanced/frtm_visualization.py +++ b/src/ansys/aedt/core/visualization/advanced/frtm_visualization.py @@ -25,7 +25,8 @@ import csv from pathlib import Path import sys -import warnings + +import numpy as np from ansys.aedt.core.aedt_logger import pyaedt_logger as logger from ansys.aedt.core.generic.constants import SpeedOfLight @@ -38,14 +39,6 @@ if current_python_version < (3, 10): # pragma: no cover raise Exception("Python 3.10 or higher is required for Monostatic RCS post-processing.") -try: - import numpy as np -except ImportError: # pragma: no cover - warnings.warn( - "The NumPy module is required to use module rcs_visualization.py.\nInstall with \n\npip install numpy" - ) - np = None - class FRTMData(object): """Provides FRTM data. diff --git a/src/ansys/aedt/core/visualization/advanced/hdm_plot.py b/src/ansys/aedt/core/visualization/advanced/hdm_plot.py index 40ceaa63b89..c3f0a82ed6e 100644 --- a/src/ansys/aedt/core/visualization/advanced/hdm_plot.py +++ b/src/ansys/aedt/core/visualization/advanced/hdm_plot.py @@ -27,19 +27,14 @@ import os import warnings +import numpy as np + from ansys.aedt.core.generic.constants import AEDT_UNITS from ansys.aedt.core.generic.general_methods import pyaedt_function_handler from ansys.aedt.core.internal.checks import graphics_required from ansys.aedt.core.visualization.plot.pyvista import CommonPlotter from ansys.aedt.core.visualization.plot.pyvista import ObjClass -try: - import numpy as np -except ImportError: - warnings.warn( - "The NumPy module is required to run some functionalities of PostProcess.\nInstall with \n\npip install numpy" - ) - class HDMPlotter(CommonPlotter): """ diff --git a/src/ansys/aedt/core/visualization/advanced/rcs_visualization.py b/src/ansys/aedt/core/visualization/advanced/rcs_visualization.py index 2fc71930876..5efdc71835d 100644 --- a/src/ansys/aedt/core/visualization/advanced/rcs_visualization.py +++ b/src/ansys/aedt/core/visualization/advanced/rcs_visualization.py @@ -27,6 +27,7 @@ import sys import warnings +import numpy as np from scipy.interpolate import RegularGridInterpolator from ansys.aedt.core.aedt_logger import pyaedt_logger as logger @@ -45,13 +46,6 @@ if current_python_version < (3, 10): # pragma: no cover raise Exception("Python 3.10 or higher is required for Monostatic RCS post-processing.") -try: - import numpy as np -except ImportError: # pragma: no cover - warnings.warn( - "The NumPy module is required to use module rcs_visualization.py.\nInstall with \n\npip install numpy" - ) - np = None # Check that graphics are available try: diff --git a/src/ansys/aedt/core/visualization/advanced/sbrplus/hdm_parser.py b/src/ansys/aedt/core/visualization/advanced/sbrplus/hdm_parser.py index 7b4ec1342ac..897cd177fac 100644 --- a/src/ansys/aedt/core/visualization/advanced/sbrplus/hdm_parser.py +++ b/src/ansys/aedt/core/visualization/advanced/sbrplus/hdm_parser.py @@ -24,20 +24,14 @@ import ast import struct -import warnings + +import numpy as np try: from enum import Enum except ImportError: pass -try: - import numpy as np -except ImportError: - warnings.warn( - "The NumPy module is required to run some functionalities of PostProcess.\nInstall with \n\npip install numpy" - ) - from ansys.aedt.core.aedt_logger import pyaedt_logger diff --git a/src/ansys/aedt/core/visualization/advanced/touchstone_parser.py b/src/ansys/aedt/core/visualization/advanced/touchstone_parser.py index f5b9b043052..706041ef35f 100644 --- a/src/ansys/aedt/core/visualization/advanced/touchstone_parser.py +++ b/src/ansys/aedt/core/visualization/advanced/touchstone_parser.py @@ -28,6 +28,8 @@ import tempfile import warnings +import numpy as np + from ansys.aedt.core import Edb from ansys.aedt.core.aedt_logger import pyaedt_logger as logger from ansys.aedt.core.generic.file_utils import open_file @@ -35,15 +37,6 @@ from ansys.aedt.core.internal.aedt_versions import aedt_versions from ansys.aedt.core.internal.checks import graphics_required -try: - import numpy as np -except ImportError: # pragma: no cover - warnings.warn( - "The NumPy module is required to run some functionalities of TouchstoneData.\n" - "Install with \n\npip install numpy" - ) - np = None - try: import skrf as rf except ImportError: # pragma: no cover diff --git a/src/ansys/aedt/core/visualization/plot/matplotlib.py b/src/ansys/aedt/core/visualization/plot/matplotlib.py index 1cc9edfc66b..58e1c48d03b 100644 --- a/src/ansys/aedt/core/visualization/plot/matplotlib.py +++ b/src/ansys/aedt/core/visualization/plot/matplotlib.py @@ -27,18 +27,13 @@ import os import warnings +import numpy as np + from ansys.aedt.core.generic.general_methods import pyaedt_function_handler from ansys.aedt.core.generic.settings import settings from ansys.aedt.core.internal.checks import ERROR_GRAPHICS_REQUIRED from ansys.aedt.core.internal.checks import check_graphics_available -try: - import numpy as np -except ImportError: - warnings.warn( - "The NumPy module is required to run some functionalities of PostProcess.\nInstall with \n\npip install numpy" - ) - # Check that graphics are available try: check_graphics_available() diff --git a/src/ansys/aedt/core/visualization/plot/pyvista.py b/src/ansys/aedt/core/visualization/plot/pyvista.py index 4ed5d54e748..df9813dce24 100644 --- a/src/ansys/aedt/core/visualization/plot/pyvista.py +++ b/src/ansys/aedt/core/visualization/plot/pyvista.py @@ -31,6 +31,8 @@ import time import warnings +import numpy as np + from ansys.aedt.core.aedt_logger import pyaedt_logger from ansys.aedt.core.generic.constants import AEDT_UNITS from ansys.aedt.core.generic.constants import CSS4_COLORS @@ -39,13 +41,6 @@ from ansys.aedt.core.internal.checks import ERROR_GRAPHICS_REQUIRED from ansys.aedt.core.internal.checks import check_graphics_available -try: - import numpy as np -except ImportError: - warnings.warn( - "The NumPy module is required to run some functionalities of PostProcess.\nInstall with \n\npip install numpy" - ) - # Check that graphics are available try: check_graphics_available() diff --git a/src/ansys/aedt/core/visualization/post/post_common_3d.py b/src/ansys/aedt/core/visualization/post/post_common_3d.py index 0158f16e874..b50a6c44c09 100644 --- a/src/ansys/aedt/core/visualization/post/post_common_3d.py +++ b/src/ansys/aedt/core/visualization/post/post_common_3d.py @@ -39,6 +39,8 @@ from typing import Tuple import warnings +import numpy as np + from ansys.aedt.core.generic.constants import unit_converter from ansys.aedt.core.generic.file_utils import check_and_download_file from ansys.aedt.core.generic.file_utils import generate_unique_name @@ -47,17 +49,8 @@ from ansys.aedt.core.generic.settings import settings from ansys.aedt.core.modeler.cad.elements_3d import FacePrimitive from ansys.aedt.core.visualization.post.common import PostProcessorCommon -from ansys.aedt.core.visualization.post.fields_calculator import FieldsCalculator - -try: - import numpy as np -except ImportError: - np = None - warnings.warn( - "The NumPy module is required to run some functionalities of PostProcess.\nInstall with \n\npip install numpy" - ) - from ansys.aedt.core.visualization.post.field_data import FieldPlot +from ansys.aedt.core.visualization.post.fields_calculator import FieldsCalculator from ansys.aedt.core.visualization.report.constants import ORIENTATION_TO_VIEW diff --git a/src/ansys/aedt/core/visualization/post/solution_data.py b/src/ansys/aedt/core/visualization/post/solution_data.py index 7248f9639f5..09c76a63c2b 100644 --- a/src/ansys/aedt/core/visualization/post/solution_data.py +++ b/src/ansys/aedt/core/visualization/post/solution_data.py @@ -27,6 +27,8 @@ import os import warnings +import numpy as np + from ansys.aedt.core import Quantity from ansys.aedt.core.generic.constants import AEDT_UNITS from ansys.aedt.core.generic.constants import db10 @@ -36,16 +38,6 @@ from ansys.aedt.core.generic.general_methods import pyaedt_function_handler from ansys.aedt.core.generic.settings import settings -np = None -pd = None - -try: - import numpy as np -except ImportError: - np = None - warnings.warn( - "The NumPy module is required to run some functionalities of PostProcess.\nInstall with \n\npip install numpy" - ) try: import pandas as pd except ImportError: diff --git a/src/ansys/aedt/core/visualization/post/spisim.py b/src/ansys/aedt/core/visualization/post/spisim.py index f52d8d891a5..70332e431a7 100644 --- a/src/ansys/aedt/core/visualization/post/spisim.py +++ b/src/ansys/aedt/core/visualization/post/spisim.py @@ -446,8 +446,8 @@ class DataSet(object): Normally the user doesn't have to be aware of this class. It is only used internally to encapsulate the different implementations of the wave population. Data can be retrieved directly by using the [] operator. - If numpy is available, the numpy vector can be retrieved by using the get_wave() method. - The parameter whattype defines what is the trace representing in the simulation, Voltage, Current a Time or + The numpy vector can be retrieved by using the get_wave() method. + The parameter whattype defines what the trace is representing in the simulation, Voltage, Current a Time or Frequency. """ @@ -490,7 +490,7 @@ class Trace(DataSet): """This class is used to represent a trace. This class is constructed by the get_trace() command. - If numpy is available the get_wave() method will return a numpy array. + The get_wave() method will return a numpy array. """ def __init__(