Skip to content

Latest commit

 

History

History
226 lines (165 loc) · 9.17 KB

File metadata and controls

226 lines (165 loc) · 9.17 KB

Moldflow API

PyPI version Python versions License CI

Moldflow API is a Python wrapper library for the Synergy API, designed to simplify interactions with Autodesk Moldflow Synergy. This library provides a clean, pythonic interface to Moldflow's simulation capabilities, making it easier to integrate Moldflow functionality into your Python applications.

Prerequisites

Before you begin, ensure you have:

  • Windows 10/11
  • Python 3.10.x - 3.14.x
  • Autodesk Moldflow Synergy 2026.0.1 or later

Install

python -m pip install moldflow

Quick Start

from moldflow import Synergy

# Initialize the API
synergy = Synergy()

# Example: Get version information
version = synergy.version
print(f"Moldflow Synergy version: {version}")

See the full documentation for more in-depth examples.

For Development

1. Clone the Repository

git clone https://github.com/Autodesk/moldflow-api.git

2. Navigate to the Repository

cd moldflow-api

3. Set Up Development Environment

python -m pip install -r requirements.txt
pre-commit install

Usage

Building the Package

python run.py build

Building the Documentation

python run.py build-docs

The documentation version switcher (switcher.json) is automatically generated from git tags during the build process. Only tagged versions are included by default to ensure all links work correctly.

Options:

  • --skip-build (-s): Skip building before generating docs
  • --local (-l): Build documentation locally for a single version (skips multi-version build)
  • --skip-switcher: Skip generating switcher.json (useful for offline builds or custom switcher configurations)
  • --include-current: Include current working tree version from version.json in switcher (useful during development before tagging)
  • --incremental: Only build versions that don't have existing output directories (speeds up development by skipping already-built versions)

Debug command: To manually generate switcher.json without building docs:

python run.py generate-switcher

Development workflow: When working on a version bump before tagging:

# Build docs including your current unreleased version
# This will:
#  1. Build all tagged versions via sphinx_multiversion
#  2. Build current working tree version via sphinx
#  3. Add current version to switcher.json as latest
python run.py build-docs --include-current

Note: By default, if version.json contains a version newer than the latest git tag, it will be validated but NOT added to the switcher (to prevent broken links). Use --include-current to build and include it during development, or create a git tag to include it permanently.

Fast development iteration:

# First build (builds all versions)
python run.py build-docs --include-current

# Subsequent builds (only rebuilds current version, skips existing tagged versions)
python run.py build-docs --include-current --incremental

How --incremental works:

  • Checks which version directories already exist in docs/build/html/
  • For missing tagged versions: checks out each tag, builds docs, then restores your branch
  • For current version (with --include-current): only builds if directory doesn't exist
  • Useful during development to avoid rebuilding all historical versions every time

The documentation can be accessed locally by serving the docs/build/html/ folder:

cd docs/build/html
python -m http.server 8000

Then open http://localhost:8000 in your browser. The root automatically redirects to the latest version documentation.

Versioned Documentation:

  • Each git tag creates a separate documentation version (e.g., /v26.0.5/)
  • A /latest/ directory points to the newest version
  • Root (/) automatically redirects to /latest/
  • Run git fetch --tags before building to ensure all version tags are available
  • If no version tags (tags starting with v) are found in the repository, the build automatically falls back to a single-version Sphinx build instead of attempting the multi-version build

Running the Formatter

python run.py format

Options:

  • --check: Check the code formatting without making changes

Running Lint Checks

python run.py lint

Options:

  • --skip-build (-s): Skip building before linting

Running Tests

python run.py test
Option Alias Description
<tests>... - Test files/directories path
--marker -m Marker [unit, integration, core]
--skip-build -s Skip building before testing
--keep-files -k Don't remove the .coverage files after testing [for report generation]
--unit - Run Unit Tests
--core - Run Core Functionality Tests
--integration - Run Integration Tests
--quiet q Simple test output

Flag Combinations

Flag Combination Runs Unit Runs Core Runs Integration Runs Custom Marker
Default (no flags)
--unit
--core
--integration
--unit --core
--unit --integration
--core --integration
--unit --core --integration
--all
--marker foo ✅ (foo)
--unit --marker bar ✅ (bar)
--integration --marker baz ✅ (baz)

Running specific test files

python run.py test tests/api/unit_tests/test_unit_material_finder.py

API Documentation

For detailed API documentation, please visit our online documentation.

Key modules include:

  • synergy: Main interface to Moldflow Synergy
  • study_doc: Study document management
  • mesh_editor: Mesh manipulation and analysis
  • material_finder: Material database interactions
  • plot: Results visualization

Contributing

We welcome contributions! Please see our Contributing Guide for details on how to contribute to this project. Here's a quick overview:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Run tests (python run.py test)
  5. Commit your changes (git commit -m 'Add amazing feature')
  6. Push to the branch (git push origin feature/amazing-feature)
  7. Open a Pull Request

Versioning

We use Semantic Versioning. For available versions, see the tags on this repository.

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

Support

Code of Conduct

This project adheres to the Contributor Covenant code of conduct. By participating, you are expected to uphold this code.