Skip to content

FEAT: New extension manager #6406

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 79 commits into from
Aug 11, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
d6a3334
New extension manager
Samuelopez-ansys Jul 11, 2025
00a037c
FEAT: Improved theme styling in new extension manager
eblanco-ansys Jul 11, 2025
2bd6d0f
Uninstall extension
Samuelopez-ansys Jul 14, 2025
537a4f4
Merge branch 'main' into feat/issue_6387
Samuelopez-ansys Jul 14, 2025
5094e8e
Add unit test
Samuelopez-ansys Jul 15, 2025
5f0d3ae
Add documentation
Samuelopez-ansys Jul 15, 2025
8dce110
CHORE: Auto fixes from pre-commit hooks
pre-commit-ci[bot] Jul 15, 2025
363fa6c
chore: adding changelog file 6406.added.md [dependabot-skip]
pyansys-ci-bot Jul 15, 2025
692ff8e
Merge branch 'main' into feat/issue_6387
Samuelopez-ansys Jul 15, 2025
ff3ddf8
Fix codacy
Samuelopez-ansys Jul 15, 2025
1e2f213
Merge branch 'main' into feat/issue_6387
Samuelopez-ansys Jul 16, 2025
0212004
Include extensions installer in codecov.yml
Samuelopez-ansys Jul 16, 2025
431cbba
Fux codacy
Samuelopez-ansys Jul 16, 2025
9a340e8
Merge branch 'main' into feat/issue_6387
Samuelopez-ansys Jul 16, 2025
20a2c3c
FEAT: Improved user experience and responsiveness
eblanco-ansys Jul 17, 2025
d07f9a4
FEAT: Added new buttons to add and remove extensions to the top bar
eblanco-ansys Jul 17, 2025
a29ee6d
FEAT: Implemented new button to pin/unpin extensions
eblanco-ansys Jul 17, 2025
ddd8bcb
FEAT: Click icon to show docs feat implemented
eblanco-ansys Jul 17, 2025
6690560
FEAT: Improved tooltip to show docs
eblanco-ansys Jul 17, 2025
1fc0efd
FEAT: Moved styles to common extensions theme
eblanco-ansys Jul 17, 2025
3d71d75
FEAT: Custom extension launch interface improved
eblanco-ansys Jul 17, 2025
0fb6483
FEAT: Changed icon to pin/unpin
eblanco-ansys Jul 17, 2025
38c7a47
TEST: Updated unit tests
eblanco-ansys Jul 18, 2025
fd6d9e3
FEAT: Improved theming
eblanco-ansys Jul 18, 2025
998d7d0
FIX: Fixed pin bug in some applications
eblanco-ansys Jul 18, 2025
3686a55
Merge main
Samuelopez-ansys Jul 20, 2025
8545447
CHORE: Auto fixes from pre-commit hooks
pre-commit-ci[bot] Jul 20, 2025
ea3006e
Fix extension manager with new main
Samuelopez-ansys Jul 20, 2025
0efd641
Merge remote-tracking branch 'origin/feat/issue_6387' into feat/issue…
Samuelopez-ansys Jul 20, 2025
52a8d0d
FEAT: Integrated custom scripts into extension view
eblanco-ansys Jul 21, 2025
f605d76
Merge branch 'feat/issue_6387' of https://github.com/ansys/pyaedt int…
eblanco-ansys Jul 21, 2025
37b8d84
FIX: Fixed import
eblanco-ansys Jul 21, 2025
4ec06cc
CHORE: Auto fixes from pre-commit hooks
pre-commit-ci[bot] Jul 21, 2025
b85daaf
Pass if check_design_type is not implemented, to allow use CommonClas…
Samuelopez-ansys Jul 21, 2025
6018836
Template using Project level class
Samuelopez-ansys Jul 21, 2025
583713c
FIX: Fixes for vulnerabilies and bugs
eblanco-ansys Jul 21, 2025
69158e1
CHORE: Auto fixes from pre-commit hooks
pre-commit-ci[bot] Jul 21, 2025
5f79e26
FIX: Exit custom extension setup
eblanco-ansys Jul 21, 2025
0a7a940
FIX: Category problem when loading extensions
eblanco-ansys Jul 21, 2025
e2bdc07
Merge branch 'feat/issue_6387' of https://github.com/ansys/pyaedt int…
eblanco-ansys Jul 21, 2025
71156ac
TEST: Fixed test
eblanco-ansys Jul 21, 2025
c0cc1c6
FIX: Removed unused variable
eblanco-ansys Jul 21, 2025
b29a515
FIX: Solved launch from AEDT not working bug
eblanco-ansys Jul 22, 2025
6d43aff
PERF: Solved auto refresh bug after launching extension
eblanco-ansys Jul 22, 2025
f3c43f3
Merge branch 'main' into feat/issue_6387
Samuelopez-ansys Jul 23, 2025
1e5a411
Add master to PhotoImage
Samuelopez-ansys Jul 23, 2025
492924c
Revert pin_photo
Samuelopez-ansys Jul 23, 2025
9253c91
Fix version
Samuelopez-ansys Jul 23, 2025
244f7a0
Merge branch 'main' into feat/issue_6387
Samuelopez-ansys Jul 23, 2025
b38bf37
Fix issues
Samuelopez-ansys Jul 24, 2025
6604274
Remove disclaimer
Samuelopez-ansys Jul 24, 2025
fde399b
Merge branch 'main' into feat/issue_6387
Samuelopez-ansys Jul 24, 2025
62cb98c
Do not refresh UI because it is messing up AEDT. Bug submitted in TFS
Samuelopez-ansys Jul 24, 2025
0026a6a
Merge branch 'main' into feat/issue_6387
Samuelopez-ansys Jul 31, 2025
ee21834
Fix release desktop and close on exit
Samuelopez-ansys Jul 31, 2025
c9d138f
Merge branch 'main' into feat/issue_6387
eblanco-ansys Aug 4, 2025
33c41ac
Merge branch 'main' into feat/issue_6387
Samuelopez-ansys Aug 5, 2025
bcb4a71
Fix fields calculator test
Samuelopez-ansys Aug 6, 2025
2ad50d5
Fix misc test
Samuelopez-ansys Aug 6, 2025
74e1aeb
Fix template test
Samuelopez-ansys Aug 6, 2025
4bf2b66
Merge branch 'main' into feat/issue_6387
Samuelopez-ansys Aug 6, 2025
6123f22
Add logger
Samuelopez-ansys Aug 6, 2025
2ca9574
Unused import
Samuelopez-ansys Aug 6, 2025
912c696
Upate documentation
Samuelopez-ansys Aug 6, 2025
cf96ed6
Merge branch 'main' into feat/issue_6387
Samuelopez-ansys Aug 6, 2025
fc798ad
Fix codacy
Samuelopez-ansys Aug 6, 2025
de58631
Fix doc style
Samuelopez-ansys Aug 6, 2025
b23c627
Added more tests for coverage
eblanco-ansys Aug 8, 2025
4c8d4b2
CHORE: Auto fixes from pre-commit hooks
pre-commit-ci[bot] Aug 8, 2025
bb407df
Merge branch 'main' into feat/issue_6387
eblanco-ansys Aug 8, 2025
09c0a11
Formatted documents
eblanco-ansys Aug 8, 2025
c7aa898
CHORE: Auto fixes from pre-commit hooks
pre-commit-ci[bot] Aug 8, 2025
e68346e
Fix precommit
Samuelopez-ansys Aug 8, 2025
a71b501
Fix codacy issue
eblanco-ansys Aug 8, 2025
dd289cd
Fixed os issue with path
eblanco-ansys Aug 8, 2025
b7c51b7
CHORE: Auto fixes from pre-commit hooks
pre-commit-ci[bot] Aug 8, 2025
794ea18
Merge branch 'main' into feat/issue_6387
eblanco-ansys Aug 11, 2025
75d13be
Fix codacy
Samuelopez-ansys Aug 11, 2025
a7b2654
Fix codacy
Samuelopez-ansys Aug 11, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion codecov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ ignore:
- "src/ansys/aedt/core/rpc/*.py"
- "src/ansys/aedt/core/misc/*.py"
- "src/ansys/aedt/core/visualization/advanced/sbrplus/hdm_utils.py"
- "src/ansys/aedt/core/extensions/installer"
- "src/ansys/aedt/core/extensions/templates"
- "src/ansys/aedt/core/common_rpc.py"
- "src/ansys/aedt/core/internal/grpc_plugin_dll_class.py"
Expand Down
1 change: 1 addition & 0 deletions doc/changelog.d/6406.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
New extension manager
29 changes: 25 additions & 4 deletions doc/source/Getting_started/Installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,15 @@ If you have installation problems, visit :ref:`Troubleshooting<panel_error>`.
Extension manager
~~~~~~~~~~~~~~~~~

The user can install or uninstall automated workflows using the extension manager.
There are three options:
The **PyAEDT Extension Manager** provides a centralized interface for accessing, launching, and managing automation workflows directly within AEDT.

From this window, you can:

- Browse and launch **project-level toolkits** organized by design type.
- Add **custom extensions** from your local environment.
- Control whether extensions appear in the **AEDT Automation ribbon** for quick access.

There are three types of extensions supported:

- **Pre-installed extensions** already available in the PyAEDT library.

Expand All @@ -64,13 +71,27 @@ See `Extension Manager <https://aedt.docs.pyansys.com/version/stable/User_guide/
:width: 800
:alt: PyAEDT toolkit manager 1

The user can select the AEDT application to install the specific workflow.
Each extension tile shows its name, icon, and a **Launch** button.
Extensions that are not currently linked to the AEDT ribbon show a muted icon.
Pinned extensions are marked and appears in the corresponding AEDT design ribbon tab.


Selecting the **Custom** tile in the Extension Manager opens a dialog where you can add your own PyAEDT-based extension.

.. image:: ../Resources/toolkit_manager_2.png
:width: 400
:alt: PyAEDT toolkit manager 2

Once the toolkit is installed, its icon only appears in the ribbon when you either create a new design or open an existing one that is compatible with the toolkit. Toolkit icons are visible only within the corresponding design environment.
In the dialog, you can:

- **Browse for a Python script** that implements the extension behavior.
- **Optionally leave the script path empty**. If no script is provided, a default extension script is automatically generated using a predefined template.

You must also specify an **Extension Name**, which appears in the AEDT Automation.

Once configured, click **OK** to register the extension. It then appears alongside other extensions in the manager interface.

A message bar at the bottom provides real-time feedback about actions, such as launching extensions or errors.

For additional information about AEDT extensions,
see `Extensions <https://aedt.docs.pyansys.com/version/stable/User_guide/extensions.html>`_.
Expand Down
Binary file removed doc/source/Resources/my_custom_extension.png
Binary file not shown.
Binary file modified doc/source/Resources/toolkit_manager_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified doc/source/Resources/toolkit_manager_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed doc/source/Resources/toolkit_manager_3.png
Binary file not shown.
16 changes: 5 additions & 11 deletions doc/source/User_guide/extensions.rst
Original file line number Diff line number Diff line change
Expand Up @@ -284,30 +284,24 @@ Here are some links to existing toolkits:
Now, you need to download the installer from the Releases section of each toolkit.
You can access it by clicking the "Install" button in the corresponding repository.

After installing it, you can add the toolkit to AEDT as a Custom extension by pointing to the .exe file.

.. image:: ../Resources/toolkit_manager_3.png
:width: 500
:alt: PyAEDT toolkit manager 3


Custom extensions
-----------------

Custom extensions are custom workflows (Python script) that can be installed both at project and application level.
From the Extension manager select the target destination:
From the Extension manager select the target destination and `Custom` as the extension type:

.. image:: ../Resources/toolkit_manager_1.png
:width: 500
:alt: PyAEDT toolkit manager 1

Select `Custom` as the extension type.
Provide the path of the Python script containing the workflow.
Provide the path of the Python script containing the workflow. If you do not specify any script, the template is assigned.

Enter the extension name. This is the name that appears beneath the button in the Automation tab after a successful installation.

.. image:: ../Resources/my_custom_extension.png
.. image:: ../Resources/toolkit_manager_2.png
:width: 500
:alt: Custom Extension
:alt: PyAEDT toolkit manager 2

After the normal completion of the installation a new button appears:

Expand Down
4 changes: 4 additions & 0 deletions src/ansys/aedt/core/extensions/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,7 @@
# 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.

from pathlib import Path

EXTENSIONS_PATH = Path(__file__).parent
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@ script = "import_schematic.py"
icon = "images/large/schematic.png"
template = "run_pyaedt_toolkit_script"
pip = ""
url = "https://aedt.docs.pyansys.com/version/stable/User_guide/pyaedt_extensions_doc/circuit/import_schematic.html"

[CircuitConfiguration]
name = "Circuit Configuration"
script = "circuit_configuration.py"
icon = "images/large/circuit_config.png"
template = "run_pyaedt_toolkit_script"
pip = ""
url = "https://aedt.docs.pyansys.com/version/stable/User_guide/pyaedt_extensions_doc/circuit/circuit_configuration.html"

Loading