Skip to content

feat: add missing APIs #665

feat: add missing APIs

feat: add missing APIs #665

Workflow file for this run

name: GitHub CI
on:
pull_request:
workflow_dispatch:
push:
tags:
- "*"
branches:
- main
env:
MAIN_PYTHON_VERSION: '3.10'
PACKAGE_NAME: ansys-mechanical-stubs
PACKAGE_NAMESPACE: ansys.mechanical.stubs
PACKAGE_PATH: src/ansys/mechanical/stubs
DOCUMENTATION_CNAME: scripting.mechanical.docs.pyansys.com
LICENSE_SERVER: ${{ secrets.LICENSE_SERVER }}
ANSYSLMD_LICENSE_FILE: 1055@${{ secrets.LICENSE_SERVER }}
ANSYS_WORKBENCH_LOGGING_CONSOLE: 0
ANSYS_WORKBENCH_LOGGING: 0
ANSYS_WORKBENCH_LOGGING_FILTER_LEVEL: 2
NUM_CORES: 1
MEILISEARCH_API_KEY: ${{ secrets.MEILISEARCH_API_KEY }}
MEILISEARCH_HOST_URL: ${{ vars.MEILISEARCH_HOST_URL }}
MEILISEARCH_PUBLIC_API_KEY: ${{ secrets.MEILISEARCH_PUBLIC_API_KEY }}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
update-changelog:
name: "Update CHANGELOG for new tag"
if: github.event_name == 'push' && contains(github.ref, 'refs/tags')
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: ansys/actions/doc-deploy-changelog@v8
with:
token: ${{ secrets.PYANSYS_CI_BOT_TOKEN }}
bot-user: ${{ secrets.PYANSYS_CI_BOT_USERNAME }}
bot-email: ${{ secrets.PYANSYS_CI_BOT_EMAIL }}
style:
name: Code style
runs-on: ubuntu-latest
steps:
- name: "PyAnsys code style checks"
uses: ansys/actions/code-style@v8
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
doc-style:
name: Documentation style check
runs-on: ubuntu-latest
steps:
- name: "PyAnsys documentation style checks"
uses: ansys/actions/doc-style@v8
with:
vale-config: doc/.vale.ini
token: ${{ secrets.GITHUB_TOKEN }}
gen-stubs:
name: Generate Mechanical stubs
needs: [style, doc-style]
runs-on: ${{ matrix.os }}
container:
image: ghcr.io/ansys/mechanical:${{ matrix.mechanical.image }}
options: --entrypoint /bin/bash
strategy:
matrix:
os: [public-ubuntu-latest-8-cores]
mechanical: [
{ image: '24.1.0', version: '241' },
{ image: '24.2.0', version: '242' },
]
python-version: ['3.10', '3.11', '3.12']
steps:
- name: "Install Git and clone project"
uses: actions/checkout@v4
- name: "Install dependencies"
env:
AWP_ROOTDV_DEV: /install/ansys_inc/v${{ matrix.mechanical.version }}
ANSYSCL${{ matrix.mechanical.version }}_DIR: /install/ansys_inc/v${{ matrix.mechanical.version }}/licensingclient
run: |
apt update
apt install --reinstall ca-certificates
apt install software-properties-common -y
add-apt-repository ppa:deadsnakes/ppa -y
apt install python${{ matrix.python-version }} -y
ln -s /usr/bin/python${{ matrix.python-version }} /usr/bin/python
apt install python${{ matrix.python-version }}-venv -y
apt install -y lsb-release mono-complete make git zip
python -m ensurepip --default-pip
python -m pip install --upgrade pip
python --version
python -m pip --version
python -m pip install -e .[build,doc]
python -m pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org pip setuptools
python -m pip install --upgrade pip flit pytz tzdata ansys-pythonnet
- name: "Generate the Mechanical stub files"
env:
AWP_ROOTDV_DEV: /install/ansys_inc/v${{ matrix.mechanical.version }}
ANSYSCL${{ matrix.mechanical.version }}_DIR: /install/ansys_inc/v${{ matrix.mechanical.version }}/licensingclient
run: |
python src/ansys/mechanical/stubs/stub_generator/create_files.py > results.txt
continue-on-error: True
- name: "Check stubs were generated"
run: |
cat results.txt
# Check if failure occurred
output=$(grep -c "Done processing all mechanical stubs" results.txt)
if [ $output -eq 1 ]; then
echo "All mechanical stubs were created"
exit 0
else
echo "There was an issue creating the mechanical stubs"
exit 1
fi
- name: "Upload v${{ matrix.mechanical.version }} stubs"
uses: actions/upload-artifact@v4
with:
name: v${{ matrix.mechanical.version }}-${{ matrix.python-version }}
path: ${{ env.PACKAGE_PATH }}/v${{ matrix.mechanical.version }}
retention-days: 7
smoke-tests:
name: Build wheelhouse
runs-on: ${{ matrix.os }}
needs: [gen-stubs]
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
python-version: ['3.10', '3.11', '3.12']
steps:
- name: "Install Git and clone project"
uses: actions/checkout@v4
- name: "Download stubs"
uses: ./.github/workflows/setup-stubs/
with:
folder-pattern: "v[0-9][0-9][0-9]-${{ matrix.python-version }}"
package-path: "${{ env.PACKAGE_PATH }}"
python-version: ${{ matrix.python-version }}
- name: Install build requirements
run: |
pip install -U pip
pip install build
- name: Build project
run: |
python -m build
- name: Install on Windows
if: matrix.os == 'windows-latest'
run: |
New-Item -Path $PWD -Name "wheelhouse" -ItemType "Directory"
cd dist
$files = Get-ChildItem -Path $PWD | Where-Object { $_.Extension -eq '.whl' }
foreach ($file in $files) {
Copy-Item -Path "$file" -Destination "..\wheelhouse"
pip install $file
}
- name: Install on Ubuntu
if: matrix.os == 'ubuntu-latest'
run: |
mkdir wheelhouse
cp dist/*.whl wheelhouse
pip install dist/*.whl
- name: "Retrieve Mechanical version"
shell: python
run: |
import os
from ${{ env.PACKAGE_NAMESPACE }} import __version__
# Get the GITHUB_ENV variable
github_env = os.getenv('GITHUB_ENV')
with open(github_env, "a") as f:
f.write(f"MECHANICAL_VERSION={__version__}")
print(f"Mechanical version is {__version__}")
- name: "Compress the wheelhouse"
uses: vimtor/[email protected]
with:
files: wheelhouse
dest: ${{ env.PACKAGE_NAME }}-v${{ env.MECHANICAL_VERSION }}-wheelhouse-${{ matrix.os }}-${{ matrix.python-version }}.zip
- name: "Upload the compressed wheelhouse"
uses: actions/upload-artifact@v4
with:
name: ${{ env.PACKAGE_NAME }}-v${{ env.MECHANICAL_VERSION }}-wheelhouse-${{ matrix.os }}-${{ matrix.python-version }}
path: ${{ env.PACKAGE_NAME }}-v${{ env.MECHANICAL_VERSION }}-wheelhouse-${{ matrix.os }}-${{ matrix.python-version }}.zip
retention-days: 7
doc-build:
name: Make html and markdown documentation
needs: [smoke-tests]
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.10']
steps:
- name: "Install Git and clone project"
uses: actions/checkout@v4
- name: "Download stubs"
uses: ./.github/workflows/setup-stubs/
with:
folder-pattern: "v[0-9][0-9][0-9]-${{ matrix.python-version }}"
package-path: "${{ env.PACKAGE_PATH }}"
python-version: ${{ matrix.python-version }}
- name: "Install project & doc dependencies"
run: |
python -m pip install -e .[doc]
- name: "Generate HTML documentation"
run: |
make -C doc html
make -C doc pdf
- name: "Upload original Sphinx HTML documentation"
uses: actions/upload-artifact@v4
if: matrix.python-version == env.MAIN_PYTHON_VERSION
with:
name: original-documentation-html
path: doc/_build/html
retention-days: 7
- name: "Generate Markdown documentation"
run: |
make -C doc markdown
- name: "Upload original markdown documentation"
uses: actions/upload-artifact@v4
if: matrix.python-version == env.MAIN_PYTHON_VERSION
with:
name: original-documentation-md
path: doc/_build/markdown
retention-days: 7
- name: "Replace Windows apostrophes with single quotes"
run: |
python scripts/replace-windows-apostrophes.py
- name: "Make all hrefs local in Markdown"
run: |
python scripts/fix-href-md.py
- name: "Make all hrefs local in HTML"
run: |
python scripts/fix-href-html.py
- name: "Clean ID in first row"
run: |
python scripts/01-clean-id.py
- name: "Clean empty rows"
run: |
python scripts/02-clean-empty-row.py
- name: "Create table of contents"
run: |
python scripts/03-create-toc-from-html-mechanical.py
- name: "Fix paths in toc.yml"
shell: bash
run: |
# Remove doc/_build/html from paths in toc.yml file
sed -i -e 's;doc/_build/html/;;g' output/toc.yml
- name: "Add header to tables"
run: |
python scripts/04-add-header-to-tables.py
- name: "Remove links in heading"
run: |
python scripts/05-remove-link-in-heading.py
- name: "Upload toc.yml"
if: matrix.python-version == env.MAIN_PYTHON_VERSION
uses: actions/upload-artifact@v4
with:
name: toc-file
path: output/
- name: "Upload Markdown documentation"
uses: actions/upload-artifact@v4
if: matrix.python-version == env.MAIN_PYTHON_VERSION
with:
name: documentation-md
path: doc/_build/markdown
retention-days: 7
- name: "Upload HTML documentation"
uses: actions/upload-artifact@v4
if: matrix.python-version == env.MAIN_PYTHON_VERSION
with:
name: documentation-html
path: doc/_build/html
retention-days: 7
- name: Upload PDF Documentation
if: matrix.python-version == env.MAIN_PYTHON_VERSION
uses: actions/upload-artifact@v4
with:
name: documentation-pdf
path: doc/_build/latex/doc.pdf
retention-days: 7
build-library:
name: Build library
runs-on: ubuntu-latest
needs: [doc-build]
steps:
- name: "Install Git and clone project"
uses: actions/checkout@v4
- name: "Set up Python"
uses: ansys/actions/_setup-python@v8
with:
python-version: ${{ env.MAIN_PYTHON_VERSION }}
use-cache: false
- name: "Download stubs"
uses: ./.github/workflows/setup-stubs/
with:
folder-pattern: "v[0-9][0-9][0-9]-${{ env.MAIN_PYTHON_VERSION }}"
package-path: "${{ env.PACKAGE_PATH }}"
python-version: ${{ env.MAIN_PYTHON_VERSION }}
- name: "Install build and twine"
shell: bash
run: |
python -m pip install build twine
- name: "Build distribution artifacts"
shell: bash
run: |
python -m build
- name: "Check build health"
shell: bash
run: |
python -m twine check dist/*
- name: "Upload distribution artifacts to GitHub artifacts"
uses: actions/upload-artifact@v4
with:
name: ${{ env.PACKAGE_NAME }}-artifacts
path: dist/
retention-days: 7
release:
runs-on: ubuntu-latest
needs: [build-library, update-changelog]
environment: release
permissions:
id-token: write
contents: write
if: github.event_name == 'push' && contains(github.ref, 'refs/tags')
steps:
- name: "Release to the public PyPI repository"
uses: ansys/actions/release-pypi-public@v8
with:
library-name: ${{ env.PACKAGE_NAME }}
use-trusted-publisher: true
- name: "Release to GitHub"
uses: ansys/actions/release-github@v8
with:
library-name: ${{ env.PACKAGE_NAME }}
doc-deploy-dev:
name: "Deploy development documentation"
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
needs: [doc-build]
steps:
- name: "Deploy development documentation"
uses: ansys/actions/doc-deploy-dev@v8
with:
cname: ${{ env.DOCUMENTATION_CNAME }}
token: ${{ secrets.GITHUB_TOKEN }}
doc-artifact-name: 'documentation-html'
bot-user: ${{ secrets.PYANSYS_CI_BOT_USERNAME }}
bot-email: ${{ secrets.PYANSYS_CI_BOT_EMAIL }}
doc-deploy-stable:
name: "Deploy stable documentation"
if: github.event_name == 'push' && contains(github.ref, 'refs/tags')
runs-on: ubuntu-latest
needs: release
steps:
- name: "Deploy stable documentation"
uses: ansys/actions/doc-deploy-stable@v8
with:
cname: ${{ env.DOCUMENTATION_CNAME }}
token: ${{ secrets.GITHUB_TOKEN }}
doc-artifact-name: 'documentation-html'
bot-user: ${{ secrets.PYANSYS_CI_BOT_USERNAME }}
bot-email: ${{ secrets.PYANSYS_CI_BOT_EMAIL }}