diff --git a/.gitignore b/.gitignore index f7d7ebe318..a1b77bdb74 100644 --- a/.gitignore +++ b/.gitignore @@ -34,6 +34,7 @@ dist/ _autosummary _build/ _gallery_backreferences +doc/source/api # Testing .coverage diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e17bb09cb3..ec706c5856 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -16,6 +16,10 @@ repos: hooks: - id: blacken-docs additional_dependencies: [black==22.12.0] + exclude: | + (?x)^( + doc/source/_templates/ + ) - repo: https://github.com/PyCQA/flake8 rev: 6.0.0 diff --git a/doc/Makefile b/doc/Makefile index 5f9d1a9451..63604f2462 100755 --- a/doc/Makefile +++ b/doc/Makefile @@ -21,8 +21,9 @@ help: # customized clean due to examples gallery clean: - rm -rf build + rm -rf _build find . -type d -name "_autosummary" -exec rm -rf {} + + rm -rf source/api/ # Create PDF pdf: diff --git a/doc/changelog.d/1061.maintenance.md b/doc/changelog.d/1061.maintenance.md new file mode 100644 index 0000000000..4a8dbdd937 --- /dev/null +++ b/doc/changelog.d/1061.maintenance.md @@ -0,0 +1 @@ +Maint: migrate autoapi to ansys-sphinx-theme autoapi \ No newline at end of file diff --git a/doc/source/_templates/autoapi/index.rst b/doc/source/_templates/autoapi/index.rst new file mode 100644 index 0000000000..3f2a88ebe3 --- /dev/null +++ b/doc/source/_templates/autoapi/index.rst @@ -0,0 +1,14 @@ +API reference +============= + +This section describes ansys-meshing-prime endpoints, their capabilities, and how +to interact with them programmatically. + +.. toctree:: + :titlesonly: + :maxdepth: 1 + + ansys.meshing.prime + ansys.meshing.prime.lucid + ansys.meshing.prime.examples + ansys.meshing.prime.graphics diff --git a/doc/source/_templates/autoapi/python/class.rst b/doc/source/_templates/autoapi/python/class.rst new file mode 100644 index 0000000000..28c27e8f64 --- /dev/null +++ b/doc/source/_templates/autoapi/python/class.rst @@ -0,0 +1,217 @@ +.. vale off + +{% if obj.display %} + +{# ----------------- Start macros definition for tab item ------------------#} +{% macro tab_item_from_objects_list(objects_list, title="") -%} + + .. tab-item:: {{ title }} + + .. list-table:: + :header-rows: 0 + :widths: auto + + {% for obj in objects_list %} + * - :py:attr:`~{{ obj.name }}` + - {{ obj.summary }} + {% endfor %} +{%- endmacro %} + +{# ------------------------ End macros definition for tab ------------------- #} + +{# ----------------- Start macros definition for autosummary -----------------#} + +{% macro autosummary_section(title, members) -%} + +{{ title }} +{{ "-" * title | length }} + +.. autoapisummary:: + + {% for member in members %} + {{ member.id }} + {% endfor %} + +{%- endmacro %} +{# ------------------ End macros definition for autosummary --------------- #} + +{# ----------------- Start macros definition for headers -----------------#} + +{% macro render_members_section(title, members) -%} + +{{ title }} +{{ "-" * title | length }} + + {% for member in members %} +{{ member.render() }} + {% endfor %} + +{%- endmacro %} +{# ------------------ End macros definition for headers --------------- #} + + + {% if is_own_page %} +:class:`{{ obj.name }}` +========={{ "=" * obj.name | length }} + + {% endif %} + {% set visible_children = obj.children|selectattr("display")|list %} + {% set own_page_children = visible_children|selectattr("type", "in", own_page_types)|list %} + {% if is_own_page and own_page_children %} +.. toctree:: + :hidden: + + {% for child in own_page_children %} + {{ child.short_name }}<{{ child.include_path }}> + {% endfor %} + + {% endif %} + +.. py:{{ obj.type }}:: {% if is_own_page %}{{ obj.id }}{% else %}{{ obj.short_name }}{% endif %}{% if obj.args %}({{ obj.args }}){% endif %} + + {% for (args, return_annotation) in obj.overloads %} + {{ " " * (obj.type | length) }} {{ obj.short_name }}{% if args %}({{ args }}){% endif %} + + {% endfor %} + {% if obj.bases %} + {% if "show-inheritance" in autoapi_options %} + + Bases: {% for base in obj.bases %}{{ base|link_objs }}{% if not loop.last %}, {% endif %}{% endfor %} + {% endif %} + + + {% if "show-inheritance-diagram" in autoapi_options and obj.bases != ["object"] %} + .. autoapi-inheritance-diagram:: {{ obj.obj["full_name"] }} + :parts: 1 + {% if "private-members" in autoapi_options %} + :private-bases: + {% endif %} + + {% endif %} + {% endif %} + {% if obj.docstring %} + + {{ obj.docstring|indent(3) }} + {% endif %} + {% set this_page_children = visible_children|rejectattr("type", "in", own_page_types)|list %} + {% set visible_abstract_methods = [] %} + {% set visible_constructor_methods = [] %} + {% set visible_instance_methods = [] %} + {% set visible_special_methods = [] %} + {% set visible_static_methods = [] %} + {% set visible_properties = this_page_children|selectattr("type", "equalto", "property")|list %} + {% set visible_attributes = this_page_children|selectattr("type", "equalto", "attribute")|list %} + {% set all_visible_methods = this_page_children|selectattr("type", "equalto", "method")|list %} + {% if all_visible_methods %} + {% for element in all_visible_methods %} + {% if "abstractmethod" in element.properties %} + {% set _ = visible_abstract_methods.append(element) %} + + {% elif "staticmethod" in element.properties %} + {% set _ = visible_static_methods.append(element) %} + + {% elif "classmethod" in element.properties or element.name in ["__new__", "__init__"] %} + {% set _ = visible_constructor_methods.append(element) %} + + {% elif element.name.startswith("__") and element.name.endswith("__") and element.name not in ["__new__", "__init__"] %} + {% set _ = visible_special_methods.append(element) %} + + {% else %} + {% set _ = visible_instance_methods.append(element) %} + {% endif %} + {% endfor %} + {% endif %} + + {% if this_page_children %} + +.. py:currentmodule:: {{ obj.short_name }} +{# ------------------------- Begin tab-set definition ----------------------- #} + +Overview +-------- + +.. tab-set:: + + {% if visible_abstract_methods %} + {{ tab_item_from_objects_list(visible_abstract_methods, "Abstract methods") }} + {% endif %} + + {% if visible_constructor_methods %} + {{ tab_item_from_objects_list(visible_constructor_methods, "Constructors") }} + {% endif %} + + {% if visible_instance_methods %} + {{ tab_item_from_objects_list(visible_instance_methods, "Methods") }} + {% endif %} + + {% if visible_properties %} + {{ tab_item_from_objects_list(visible_properties, "Properties") }} + {% endif %} + + {% if visible_attributes %} + {{ tab_item_from_objects_list(visible_attributes, "Attributes") }} + {% endif %} + + {% if visible_static_methods %} + {{ tab_item_from_objects_list(visible_static_methods, "Static methods") }} + {% endif %} + + {% if visible_special_methods %} + {{ tab_item_from_objects_list(visible_special_methods, "Special methods") }} + {% endif %} + + {% endif %} +{# ---------------------- End class tabset -------------------- #} + +{# ---------------------- Begin class details -------------------- #} + +Import detail +------------- +{% set split_parts = obj.obj["full_name"].split('.') %} +{% set joined_parts = '.'.join(split_parts[:-1]) %} + +.. code-block:: python + + from {{ joined_parts }} import {{ obj["short_name"] }} + + {% if visible_properties %} +{{ render_members_section("Property detail", visible_properties) }} + {% endif %} + + {% if visible_attributes %} +{{ render_members_section("Attribute detail", visible_attributes) }} + {% endif %} + + {% if all_visible_methods %} +{{ render_members_section("Method detail", all_visible_methods) }} + {% endif %} + + {% if is_own_page and own_page_children %} + {% set visible_attributes = own_page_children|selectattr("type", "equalto", "attribute")|list %} + + {% if visible_attributes %} +{{ autosummary_section("Attributes", visible_attributes) }} + {% endif %} + {% set visible_exceptions = own_page_children|selectattr("type", "equalto", "exception")|list %} + + {% if visible_exceptions %} +{{ autosummary_section("Exceptions", visible_exceptions) }} + {% endif %} + {% set visible_classes = own_page_children|selectattr("type", "equalto", "class")|list %} + + {% if visible_classes %} +{{ autosummary_section("Classes", visible_classes) }} + + {% endif %} + {% set visible_methods = own_page_children|selectattr("type", "equalto", "method")|list %} + + {% if visible_methods %} +{{ autosummary_section("Methods", visible_methods) }} + {% endif %} + {% endif %} + +{# ---------------------- End class details -------------------- #} +{% endif %} + + +.. vale on \ No newline at end of file diff --git a/doc/source/_templates/autoapi/python/module.rst b/doc/source/_templates/autoapi/python/module.rst new file mode 100644 index 0000000000..81688fb495 --- /dev/null +++ b/doc/source/_templates/autoapi/python/module.rst @@ -0,0 +1,323 @@ + +.. vale off + +{# ------------------------- Begin macros definition ----------------------- #} + +{% macro tab_item_from_objects_list(objects_list, title="") -%} + + .. tab-item:: {{ title }} + + .. list-table:: + :header-rows: 0 + :widths: auto + + {% for obj in objects_list %} + + {% if obj.type in own_page_types %} + * - :py:obj:`~{{ obj.id }}` + {% else %} + * - :py:obj:`~{{ obj.short_name }}` + {% endif %} + - {{ obj.summary }} + + {% endfor %} + +{%- endmacro %} + +{% macro toctree_from_objects_list(objects_list, icon="") -%} + +.. toctree:: + :titlesonly: + :maxdepth: 1 + :hidden: + + {% for obj in objects_list %} + {{ obj.short_name }}<{{ obj.include_path }}> + {% endfor %} +{%- endmacro %} + +{# --------------------------- End macros definition ----------------------- #} + +{% if not obj.display %} +:orphan: +{% endif %} + +{% if is_own_page %} + + {% if obj.name.split(".") | length == 3 %} +The ``{{ obj.name }}`` library +{{ "================" + "=" * obj.name|length }} + {% else %} + {% if obj.type == "package" %} +The ``{{ obj.short_name }}`` package +{{ "====================" + "=" * obj.short_name|length }} + {% else %} +The ``{{ obj.short_name }}.py`` module +{{ "==================" + "=" * obj.short_name|length }} + {% endif %} + {% endif %} +{% endif %} + +.. py:module:: {{ obj.name }} + +{# ---------------------- Begin module summary -------------------- #} + +Summary +------- + +{% if obj.all is not none %} +{% set visible_children = obj.children|selectattr("short_name", "in", obj.all)|list %} +{% elif obj.type is equalto("package") %} +{% set visible_children = obj.children|selectattr("display")|list %} +{% else %} +{% set visible_children = obj.children|selectattr("display")|rejectattr("imported")|list %} +{% endif %} + +{% set visible_subpackages = obj.subpackages|selectattr("display")|list %} +{% set visible_submodules = obj.submodules|selectattr("display")|list %} + +{% set visible_classes_and_interfaces = visible_children|selectattr("type", "equalto", "class")|list %} +{% set visible_functions = visible_children|selectattr("type", "equalto", "function")|list %} +{% set visible_attributes_and_constants = visible_children|selectattr("type", "equalto", "data")|list %} +{% set visible_exceptions = visible_children|selectattr("type", "equalto", "exception")|list %} +{% set visible_classes = [] %} +{% set visible_enums = [] %} +{% for element in visible_classes_and_interfaces %} + + {# + HACK: there is not built-in "startswith" test, no "break" statement, and + no limited scope for variables inside blocks, see: + https://stackoverflow.com/questions/4870346/can-a-jinja-variables-scope-extend-beyond-in-an-inner-block + #} + {% set has_enum_base = [] %} + {% for base in element.bases %} + {% if base.startswith("enum.") %} + {% set _ = has_enum_base.append(true) %} + {% endif %} + {% endfor %} + + {% if has_enum_base %} + {% set _ = visible_enums.append(element) %} + {% else %} + {% set _ = visible_classes.append(element) %} + {% endif %} +{% endfor %} + +{% set visible_attributes = [] %} +{% set visible_constants = [] %} +{% for element in visible_attributes_and_constants %} + {% if element.name.isupper() %} + {% set _ = visible_constants.append(element) %} + {% else %} + {% set _ = visible_attributes.append(element) %} + {% endif %} +{% endfor %} + + +{# Deduplicate visible_classes by name #} +{% set seen_names = [] %} +{% set deduped_classes = [] %} + +{% for cls in visible_classes %} + {% if cls.name not in seen_names %} + {% set _ = seen_names.append(cls.name) %} + {# Only append if the class is not already in deduped_classes #} + {% if cls not in deduped_classes %} + {% set _ = deduped_classes.append(cls) %} + {% endif %} + {% endif %} +{% endfor %} + +{% set visible_classes = deduped_classes %} + +{# Deduplicate visible_constants by name #} +{% set seen_constants = [] %} +{% set deduped_constants = [] %} + +{% for const in visible_constants %} + {% if const.name not in seen_constants %} + {% set _ = seen_constants.append(const.name) %} + {# Only append if the constant is not already in deduped_constants #} + {% if const not in deduped_constants %} + {% set _ = deduped_constants.append(const) %} + {% endif %} + {% endif %} +{% endfor %} + +{% set visible_constants = deduped_constants %} + +{# Deduplicate visible_attributes by name #} +{% set seen_attributes = [] %} +{% set deduped_attributes = [] %} + +{% for attr in visible_attributes %} + {% if attr.name not in seen_attributes %} + {% set _ = seen_attributes.append(attr.name) %} + {# Only append if the attribute is not already in deduped_attributes #} + {% if attr not in deduped_attributes %} + {% set _ = deduped_attributes.append(attr) %} + {% endif %} + {% endif %} +{% endfor %} + +{% set visible_attributes = deduped_attributes %} +{# Deduplicate visible_enums by name #} +{% set seen_enums = [] %} +{% set deduped_enums = [] %} + +{% for enum in visible_enums %} + {% if enum.name not in seen_enums %} + {% set _ = seen_enums.append(enum.name) %} + {# Only append if the enum is not already in deduped_enums #} + {% if enum not in deduped_enums %} + {% set _ = deduped_enums.append(enum) %} + {% endif %} + {% endif %} +{% endfor %} + +{% set visible_enums = deduped_enums %} + +{# Deduplicate visible_exceptions by name #} +{% set seen_exceptions = [] %} +{% set deduped_exceptions = [] %} + +{% for exc in visible_exceptions %} + {% if exc.name not in seen_exceptions %} + {% set _ = seen_exceptions.append(exc.name) %} + {# Only append if the exception is not already in deduped_exceptions #} + {% if exc not in deduped_exceptions %} + {% set _ = deduped_exceptions.append(exc) %} + {% endif %} + {% endif %} +{% endfor %} + +{% set visible_exceptions = deduped_exceptions %} + +{% set module_objects = visible_subpackages + visible_submodules + visible_classes + visible_enums + visible_exceptions + visible_functions + visible_constants + visible_attributes %} + +{# ---------------------- End module summary -------------------- #} +{# ---------------------- Begin module tabset -------------------- #} +{% if module_objects %} + +.. py:currentmodule:: {{ obj.short_name }} +.. tab-set:: + +{% if visible_submodules %} + {{ tab_item_from_objects_list(visible_submodules, "Submodules") }} +{% endif %} + +{% if visible_classes %} + {{ tab_item_from_objects_list(visible_classes, "Classes") }} +{% endif %} + +{% if visible_enums %} + {{ tab_item_from_objects_list(visible_enums, "Enums") }} +{% endif %} + +{% if visible_exceptions %} + {{ tab_item_from_objects_list(visible_exceptions, "Exceptions") }} +{% endif %} + +{% if visible_functions %} + {{ tab_item_from_objects_list(visible_functions, "Functions") }} +{% endif %} + +{% if visible_attributes %} + {{ tab_item_from_objects_list(visible_attributes, "Attributes") }} +{% endif %} + +{% if visible_constants %} + {{ tab_item_from_objects_list(visible_constants, "Constants") }} +{% endif %} +{% endif %} + +{# ---------------------- End module tabset -------------------- #} +{# ------------------------ Begin toctree definition ----------------------- #} + +.. {% block subpackages %} +.. {% if visible_subpackages %} +.. {{ toctree_from_objects_list(visible_subpackages, "nf nf-md-package") }} +.. {% endif %} +.. {% endblock %} + +{% block submodules %} +{% if visible_submodules %} +{{ toctree_from_objects_list(visible_submodules, "nf nf-fa-file") }} +{% endif %} +{% endblock %} + +{% block class %} +{% if own_page_types and "class" in own_page_types %} + + +{% if visible_classes %} +{{ toctree_from_objects_list(visible_classes, "nf nf-cod-symbol_class") }} +{% endif %} + +{% if visible_enums %} +{{ toctree_from_objects_list(visible_enums, "nf nf-cod-symbol_enum") }} +{% endif %} + +{% if visible_exceptions %} +{{ toctree_from_objects_list(visible_exceptions, "nf nf-md-lightning_bolt") }} +{% endif %} +{% endif %} +{% endblock %} + +{% block functions %} +{% if own_page_types and visible_functions and "function" in own_page_types %} +{{ toctree_from_objects_list(visible_functions, "nf nf-md-function_variant") }} +{% endif %} +{% endblock %} + +{% block constants %} +{% if own_page_types and visible_constants and "constant" in own_page_types %} +{{ toctree_from_objects_list(visible_constants, "nf nf-cod-symbol_constant") }} +{% endif %} +{% endblock %} + +{# ------------------------- End toctree definition ------------------------ #} + + +{# ------------------------ Begin module description ----------------------- #} + +{% if obj.docstring %} +Description +----------- + +{{ obj.docstring }} +{% endif %} + +{# ------------------------- End module description ------------------------ #} + + +{# -------------------------- Begin module detail -------------------------- #} + +{% set module_objects_in_this_page = visible_classes + visible_enums + visible_exceptions + visible_functions + visible_constants + visible_attributes %} +{% if module_objects_in_this_page %} +{% set visible_objects_in_this_page = [] %} + +{% if own_page_types %} + {% for obj in module_objects_in_this_page %} + {% if obj.type not in own_page_types %} + {% set _ = visible_objects_in_this_page.append(obj) %} + {% endif %} + {% endfor %} +{% else %} + {% set visible_objects_in_this_page = module_objects_in_this_page %} +{% endif %} + +{% if visible_objects_in_this_page %} +Module detail +------------- + + {% for obj in visible_objects_in_this_page %} +{{ obj.render() }} + {% endfor %} + +{% endif %} +{% endif %} + +{# ---------------------- End module detail description -------------------- #} + +.. vale on \ No newline at end of file diff --git a/doc/source/api/index.rst b/doc/source/api/index.rst deleted file mode 100644 index 708ca74655..0000000000 --- a/doc/source/api/index.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. _ref_index_api: - -============= -API reference -============= - -This section gives an overview of all API classes, methods, and parameters present in PyPrimeMesh. - -.. autosummary:: - :toctree: _autosummary - - ansys.meshing.prime - ansys.meshing.prime.examples - ansys.meshing.prime.lucid diff --git a/doc/source/conf.py b/doc/source/conf.py index e04cfe5b82..b170b5a7e2 100755 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -48,7 +48,6 @@ "version_match": get_version_match(__version__), }, "check_switcher": False, - "navbar_end": ["version-switcher", "theme-switcher", "navbar-icon-links"], "navigation_with_keys": False, "github_url": "https://github.com/ansys/pyprimemesh", "show_prev_next": False, @@ -70,13 +69,31 @@ "title": "PyPrimeMesh cheat sheet", "version": __version__, }, + "ansys_sphinx_theme_autoapi": { + "templates": "_templates/autoapi", + "ignore": [ + # ignore all files under the ``relaxed json`` and + # ``internals`` subpackage. + "*relaxed_json*", + "*internals*", + ], + "options": [ + 'members', + 'undoc-members', + 'inherited-members', + 'show-module-summary', + 'special-members', + 'imported-members', + ], + "member_order": "alphabetical", + "own_page_level": "function", + }, } # Sphinx extensions extensions = [ 'sphinx.ext.autodoc', 'sphinx.ext.autosummary', - "numpydoc", "sphinx.ext.intersphinx", "sphinx_copybutton", "sphinx_gallery.gen_gallery", @@ -90,8 +107,21 @@ "sphinxemoji.sphinxemoji", "sphinx_design", "pyvista.ext.viewer_directive", + "ansys_sphinx_theme.extension.autoapi", ] nbsphinx_execute = "always" +suppress_warnings = [ + "docutils", + "ref.class", + "ref.obj", + "ref.func", + "toc.not_included", + "toc.not_readable", + "autoapi.python_import_resolution", + "toc.not_included", + "ref.ref", + "ref.python", +] # Intersphinx mapping intersphinx_mapping = { diff --git a/src/ansys/meshing/prime/__init__.py b/src/ansys/meshing/prime/__init__.py index 57e9477fa5..67861e7d2b 100644 --- a/src/ansys/meshing/prime/__init__.py +++ b/src/ansys/meshing/prime/__init__.py @@ -1,3 +1,25 @@ +# Copyright (C) 2025 ANSYS, Inc. and/or its affiliates. +# SPDX-License-Identifier: MIT +# +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + '''PyPrimeMesh Client library ''' # isort: skip_file @@ -146,5 +168,376 @@ def __filter_internal_symbols(symbol): __symbols = (s for s in dir() if not s.startswith('_')) __symbols = filter(__filter_internal_symbols, __symbols) -__all__ = list(__symbols) +__all__ = [ + 'AddLabelResults', + 'AddThicknessParams', + 'AddThicknessResults', + 'AddToZoneResults', + 'AdvancedSurferSetup', + 'AutoMesh', + 'AutoMeshParams', + 'AutoMeshResults', + 'AutoNodeMoveParams', + 'AutoQuadMesher', + 'AutoQuadMesherResults', + 'BCPair', + 'BCPairType', + 'BCsVolumetricModality', + 'BOIType', + 'BodyQueryType', + 'BoiSizingParams', + 'BoundaryFittedSpline', + 'BoundaryFittedSplineParams', + 'BoundingBox', + 'CadFaceter', + 'CadReaderRoute', + 'CadRefacetingMaxEdgeSizeLimit', + 'CadRefacetingParams', + 'CadRefacetingResolution', + 'CdbAnalysisType', + 'CdbSimulationType', + 'CellQualityMeasure', + 'CellStatisticsParams', + 'CellStatisticsResults', + 'CellZoneletType', + 'CheckFaceDeviationParams', + 'CheckFaceDeviationResults', + 'CheckMeshParams', + 'CheckMeshResults', + 'CheckTopologyParams', + 'Client', + 'CollapseParams', + 'CollapseResults', + 'CollapseTool', + 'ComponentChildrenParams', + 'ComponentChildrenResults', + 'ComputeTopoVolumesResults', + 'ComputeVolumesParams', + 'ComputeVolumesResults', + 'Connect', + 'ConnectFacesParams', + 'ConnectResults', + 'ContactElementTypeParams', + 'ContactPatchAxis', + 'ContactPreventionParams', + 'ControlData', + 'ControlPointSelection', + 'CopyZoneletsParams', + 'CopyZoneletsResults', + 'CreateBOIParams', + 'CreateBOIResults', + 'CreateCapParams', + 'CreateCapResults', + 'CreateContactPatchParams', + 'CreateContactPatchResults', + 'CreateIntersectionEdgeLoopsParams', + 'CreateIntersectionEdgeLoopsResults', + 'CreateMaterialPointParams', + 'CreateMaterialPointResults', + 'CreateShellBLResults', + 'CreateVolumeZonesType', + 'CreateZoneResults', + 'CurvatureSizingParams', + 'DeadRegion', + 'DefeatureTopologyParams', + 'DeleteFringesAndOverlapsParams', + 'DeleteFringesAndOverlapsResults', + 'DeleteInteriorNodesParams', + 'DeleteMaterialPointResults', + 'DeleteMeshParams', + 'DeleteMeshResults', + 'DeleteResults', + 'DeleteTool', + 'DeleteTopoEntitiesParams', + 'DeleteTopoEntitiesResults', + 'DeleteUnwettedParams', + 'DeleteUnwettedResult', + 'DeleteVolumesParams', + 'DeleteVolumesResults', + 'DeleteZoneResults', + 'DetectAndTreatCircularFacesParams', + 'DetectAndTreatFeaturesParams', + 'DetectAndTreatHolesParams', + 'DetectCircularHolesParams', + 'DetectHolesParams', + 'DetectNonCircularHolesParams', + 'EdgeConnectType', + 'EdgeConnectivityResults', + 'EdgeMergeControl', + 'ErrorCode', + 'ExportBoundaryFittedSplineParams', + 'ExportFluentCaseParams', + 'ExportFluentMeshingMeshParams', + 'ExportLSDynaIGAResults', + 'ExportLSDynaIgaKeywordFileParams', + 'ExportLSDynaKeywordFileParams', + 'ExportLSDynaResults', + 'ExportMapdlCdbParams', + 'ExportMapdlCdbResults', + 'ExportSTLParams', + 'ExtractFeatureParams', + 'ExtractFeatureResults', + 'ExtractTopoVolumesParams', + 'ExtractTopoVolumesResults', + 'ExtractVolumesParams', + 'ExtractVolumesResults', + 'ExtractedFeatureIds', + 'FaceAndEdgeConnectivityParams', + 'FaceAndEdgeConnectivityResults', + 'FaceConnectivityResults', + 'FaceQualityMeasure', + 'FeatureExtraction', + 'FeatureRecoveryParams', + 'FileIO', + 'FileReadParams', + 'FileReadResults', + 'FileWriteParams', + 'FileWriteResults', + 'FillHolesAtPlaneParams', + 'FillHolesAtPlaneResults', + 'FixInvalidNormalNodeParams', + 'FixInvalidNormalNodeResults', + 'FlowDirection', + 'FuseOption', + 'FuseParams', + 'FuseResults', + 'GlobalSizingParams', + 'HardSizingParams', + 'HexCoreCellElementType', + 'HexCoreParams', + 'HexCoreTransitionLayerType', + 'HexToSpline', + 'HexToSplineParams', + 'IGAResults', + 'IGASpline', + 'IGAUnstructuredSplineSolid', + 'IGAUnstructuredSplineSurf', + 'ImportAbaqusParams', + 'ImportAbaqusResults', + 'ImportCadParams', + 'ImportCadResults', + 'ImportFluentCaseParams', + 'ImportFluentCaseResults', + 'ImportFluentMeshingMeshParams', + 'ImportFluentMeshingMeshResults', + 'ImportMapdlCdbParams', + 'ImportMapdlCdbResults', + 'IntersectParams', + 'IntersectionMask', + 'Iterable', + 'JoinParams', + 'JoinSeparateMethod', + 'LSDynaAnalysisType', + 'LSDynaFileFormatType', + 'LabelExportParams', + 'LeakPreventionParams', + 'LengthUnit', + 'LocalSurferParams', + 'LocalSurferResults', + 'MatchMorphParams', + 'MatchMorphResults', + 'MatchPair', + 'MatchPairTargetType', + 'MaterialPointManager', + 'MaterialPointType', + 'MergeBoundaryNodesParams', + 'MergeBoundaryNodesResults', + 'MergeNodeType', + 'MergePartsParams', + 'MergePartsResults', + 'MergeVolumesParams', + 'MergeVolumesResults', + 'MergeZoneletsParams', + 'MergeZoneletsResults', + 'MeshInfo', + 'MeshStackerParams', + 'MeshStackerResults', + 'MeshedSizingParams', + 'Model', + 'MorphBCParams', + 'MorphSolveParams', + 'Morpher', + 'MultiZoneControl', + 'MultiZoneEdgeBiasingParams', + 'MultiZoneMapMeshParams', + 'MultiZoneSizingParams', + 'MultiZoneSweepMeshParams', + 'NamePatternParams', + 'OptimizeQuadMeshParams', + 'OverlapPairs', + 'OverlapSearchResults', + 'Part', + 'PartCreationType', + 'PartSummaryParams', + 'PartSummaryResults', + 'PartZonelets', + 'PartialDefeatureParams', + 'PeriodicControl', + 'PeriodicControlParams', + 'PeriodicControlSummaryParams', + 'PeriodicControlSummaryResult', + 'PrimeRuntimeError', + 'PrimeRuntimeWarning', + 'PrismControl', + 'PrismControlGrowthParams', + 'PrismControlOffsetType', + 'PrismParams', + 'PrismStairStep', + 'ProjectOnGeometryParams', + 'ProjectOnGeometryResults', + 'ProximitySizingParams', + 'QuadToSpline', + 'QuadToSplineParams', + 'ReadSizeFieldParams', + 'RefineAtContactsParams', + 'RefineAtContactsResults', + 'RefineSplineParams', + 'RefineTetMeshParams', + 'RemoveLabelResults', + 'RemoveZoneResults', + 'RepairEdgesParams', + 'RepairTopologyParams', + 'ResolveIntersectionResult', + 'ResolveIntersectionsParams', + 'SFPeriodicParams', + 'Scaffolder', + 'ScaffolderMergeResults', + 'ScaffolderParams', + 'ScaffolderRepairMode', + 'ScaffolderResults', + 'ScaffolderSplitResults', + 'ScopeDefinition', + 'ScopeEntity', + 'ScopeEvaluationType', + 'ScopeExpressionType', + 'ScopeZoneletParams', + 'SearchByFoldsParams', + 'SearchByFoldsResults', + 'SearchByIntersectionResults', + 'SearchByInvalidNormalsResults', + 'SearchByQualityParams', + 'SearchByQualityResults', + 'SearchBySelfIntersectionParams', + 'SearchBySpikeParams', + 'SearchBySpikeResults', + 'SearchByThinStripParams', + 'SearchByThinStripResults', + 'SearchInfoByRegisterIdParams', + 'SearchInfoByRegisterIdResults', + 'SeparateBlocksFormatType', + 'SetContactPreventionsResults', + 'SetFeatureRecoveriesResults', + 'SetLeakPreventionsResults', + 'SetNameResults', + 'SetParamsResults', + 'SetScopeResults', + 'SetSizingResults', + 'ShellBLControl', + 'ShellBLControlGrowthParams', + 'ShellBLOffsetType', + 'ShellBLParams', + 'SizeControl', + 'SizeControlSummaryParams', + 'SizeControlSummaryResult', + 'SizeField', + 'SizeFieldFileReadResults', + 'SizeFieldType', + 'SizingType', + 'SmoothDihedralFaceNodesParams', + 'SmoothDihedralFaceNodesResults', + 'SmoothType', + 'SoftSizingParams', + 'SoiSizingParams', + 'SolverType', + 'SplineContinuityType', + 'SplineFeatureCaptureType', + 'SplineRefinementType', + 'SplitParams', + 'StitchParams', + 'StitchType', + 'StretchFreeBoundariesParams', + 'StretchFreeBoundariesResults', + 'SubtractVolumesParams', + 'SubtractVolumesResults', + 'SubtractZoneletsParams', + 'SubtractZoneletsResults', + 'SurfaceDiagnosticSummaryParams', + 'SurfaceDiagnosticSummaryResults', + 'SurfaceFeatureType', + 'SurfaceMeshSizeScaling', + 'SurfaceQualityResult', + 'SurfaceQualitySummaryParams', + 'SurfaceQualitySummaryResults', + 'SurfaceSearch', + 'SurfaceUtilities', + 'Surfer', + 'SurferParams', + 'SurferResults', + 'SweepType', + 'TetMeshSplineParams', + 'TetParams', + 'ThinStripType', + 'ThinVolumeControl', + 'ThinVolumeMeshParams', + 'TopoData', + 'TopoFillHoleParams', + 'TopoFillHoleResult', + 'TopoSearchField', + 'TopoUtilities', + 'Transform', + 'TransformParams', + 'TransformResults', + 'TriangulateParams', + 'TriangulateResults', + 'TrimmedSolidSplineCutMode', + 'TrimmedSpline', + 'TrimmedSplineResults', + 'UniformSolidSplineCreationParams', + 'Union', + 'VTComposer', + 'VTComposerParams', + 'VTComposerResults', + 'VolumeControl', + 'VolumeControlParams', + 'VolumeFillType', + 'VolumeMeshTool', + 'VolumeMeshToolResults', + 'VolumeNamingType', + 'VolumeQualityResultsPart', + 'VolumeQualitySummaryParams', + 'VolumeQualitySummaryResults', + 'VolumeSearch', + 'VolumeSweeper', + 'VolumetricScaffolderParams', + 'VolumetricSizeFieldComputeParams', + 'VolumetricSizeFieldComputeResults', + 'WarningCode', + 'WrapParams', + 'WrapRegion', + 'WrapResult', + 'Wrapper', + 'WrapperCloseGapsParams', + 'WrapperCloseGapsResult', + 'WrapperControl', + 'WrapperImproveQualityParams', + 'WrapperImproveResult', + 'WrapperPatchFlowRegionsParams', + 'WrapperPatchFlowRegionsResult', + 'WriteSizeFieldParams', + 'ZoneMeshResult', + 'ZoneType', + 'disable_optimizing_numpy_arrays', + 'enable_log_output', + 'enable_optimizing_numpy_arrays', + 'examples', + 'is_optimizing_numpy_arrays', + 'launch_prime', + 'launch_server_process', + 'local_model', + 'lucid', + 'np', + 'numpy_array_optimization_disabled', + 'numpy_array_optimization_enabled', + 'relaxed_json', +] # print(__all__) diff --git a/src/ansys/meshing/prime/autogen/__init__.py b/src/ansys/meshing/prime/autogen/__init__.py new file mode 100644 index 0000000000..96fd1a0d28 --- /dev/null +++ b/src/ansys/meshing/prime/autogen/__init__.py @@ -0,0 +1 @@ +"""Autogenerated module.""" \ No newline at end of file diff --git a/src/ansys/meshing/prime/core/__init__.py b/src/ansys/meshing/prime/core/__init__.py new file mode 100644 index 0000000000..3a1406bf22 --- /dev/null +++ b/src/ansys/meshing/prime/core/__init__.py @@ -0,0 +1,23 @@ +# Copyright (C) 2025 ANSYS, Inc. and/or its affiliates. +# SPDX-License-Identifier: MIT +# +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +"""Core module.""" diff --git a/src/ansys/meshing/prime/internals/__init__.py b/src/ansys/meshing/prime/internals/__init__.py new file mode 100644 index 0000000000..cddab16ada --- /dev/null +++ b/src/ansys/meshing/prime/internals/__init__.py @@ -0,0 +1,23 @@ +# Copyright (C) 2025 ANSYS, Inc. and/or its affiliates. +# SPDX-License-Identifier: MIT +# +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +"""Internal module.""" diff --git a/src/ansys/meshing/prime/params/__init__.py b/src/ansys/meshing/prime/params/__init__.py new file mode 100644 index 0000000000..3fda893201 --- /dev/null +++ b/src/ansys/meshing/prime/params/__init__.py @@ -0,0 +1,23 @@ +# Copyright (C) 2025 ANSYS, Inc. and/or its affiliates. +# SPDX-License-Identifier: MIT +# +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +"""Params module.""" diff --git a/tests/test_imports.py b/tests/test_imports.py new file mode 100644 index 0000000000..b47c669faf --- /dev/null +++ b/tests/test_imports.py @@ -0,0 +1,31 @@ +# Copyright (C) 2025 ANSYS, Inc. and/or its affiliates. +# SPDX-License-Identifier: MIT +# +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +import ansys.meshing.prime +from ansys.meshing.prime import __all__ + + +def test_imports(): + """Test that all symbols in __all__ are imported from __symbols__.""" + symbols = dir(ansys.meshing.prime) + for symbol in __all__: + assert symbol in symbols, f"{symbol} is not in __symbols__"