Skip to main content

py2aspen

A Python wrapper for Aspen Plus built on comtypes ✨

PyPI version Python Downloads Stars Issues License

comtypes uv ty ruff QQ Group

English | 简体中文

A Python wrapper for Aspen Plus built on comtypes, packaging COM automation calls into an object-oriented Python API: connect to the application, open .bkp files, place/connect blocks and streams on the flowsheet, read/write properties, run simulations, and export reports. It supports local COM as well as remote connections over DCOM.

Installation

Install with uv (recommended) or pip:

uv add py2aspen
# or
pip install py2aspen

Minimal example

from py2aspen import UnitAspen, bind, MaterialStream, MaterialStreamInput

# ProgID for Aspen Plus
PROGID = "AspenPlus.Document"
BKP_PATH = r"C:\path\to\solid1.bkp" # Example file shipped with Aspen; pick a valid path on your machine

with UnitAspen(PROGID) as aspen:
    aspen.suppress_dialogs(True)
    aspen.open_bkp(BKP_PATH)
    aspen.set_visible(True)

    stream = MaterialStream(name="WET-COAL")
    aspen.exec(bind(stream))

    stream.set_input(MaterialStreamInput(temperature=100))
    aspen.engine_run()

The with block automatically calls lazy_bind() to enable late binding and closes Aspen Plus on exit. To keep the application window open after the script finishes (e.g. for debugging), skip with and call lazy_bind() manually instead.

Development workflow (uv + ty + ruff)

The project uses the src layout with uv_build as the build backend. Dependency management is handled by uv, type checking by ty, and code style by ruff.

Generate the comtypes type module

py2aspen depends on comtypes.gen.Happ (the Aspen Plus type library). The repo ships the .tlb at tlb/v14/happ.tlb; after installing, generate it once in the target Python environment (the output is written to <env>/Lib/site-packages/comtypes/gen/):

.venv\Scripts\python.exe -c "import comtypes.client as cc; cc.GetModule(r'tlb\v14\happ.tlb')"

Re-run this command after recreating the virtual environment or deleting the comtypes/gen/ directory.

Environment and dependencies

# Initialize the environment after cloning (installs runtime deps and the dev group from pyproject.toml)
uv sync

Type checking (ty)

uvx ty check            # Check the whole repo
uvx ty check src/       # Check a specific path

Code style (ruff)

uvx ruff check          # Static checks
uvx ruff check --fix    # Auto-fix
uvx ruff format         # Format

Tests

uv run pytest -v        # Or run the pytest task in VS Code

Project Status

Project Status

Contributors

Thanks to everyone who contributes to py2aspen!

Contributors

Special thanks to the friends in our chat group:

QQ: 562721026

TG: None

Contributions of any kind are welcome: open an Issue to report problems or suggest features, or submit a Pull Request to improve the code.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py2aspen-0.2.1.tar.gz (16.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

py2aspen-0.2.1-py3-none-any.whl (19.0 kB view details)

Uploaded Python 3

File details

Details for the file py2aspen-0.2.1.tar.gz.

File metadata

  • Download URL: py2aspen-0.2.1.tar.gz
  • Upload date:
  • Size: 16.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for py2aspen-0.2.1.tar.gz
Algorithm Hash digest
SHA256 68e19907f1acfb9a72dc3a20b8975edd7b15d8675c3a790452807e0036848d89
MD5 60f39c237d7f4f736fc5ff7577426937
BLAKE2b-256 7550c2b88aeb3e2154a1a459f2255d65af1951e31c81912a05bfbc135d0cd38a

See more details on using hashes here.

File details

Details for the file py2aspen-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: py2aspen-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 19.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for py2aspen-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1ed32a670744524cedd0ed43e865fdf50dd86faad379c3d04eca8b120ae2f7d3
MD5 90516b21692c53d580edd3d502c6c843
BLAKE2b-256 1649fa3ef46c53effd0f9edb759db80440f4480e857008005a4985b57da8a680

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page