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__"