Independent, unified Python SDK for the MIDAS NX Open API (Civil NX + Gen NX)
Project description
midas-nx
An independent, unified Python SDK for the MIDAS NX Open API (MIDAS Civil NX + MIDAS Gen NX).
Unlike MIDASIT's official midas-civil /
midas-gen packages — separate,
near-duplicated codebases per product, covering roughly a third of the documented API surface —
midas_nx is a single package for both products, built directly against the endpoint schema
documented at Dennis5882/MIDAS-API. See
ROADMAP.md for what's implemented so far vs. planned.
This is an unofficial, community project — not affiliated with or endorsed by MIDASIT.
Install
pip install -e ".[dev]" # from a checkout, for development
Quick start
from midas_nx import MidasClient, Product
from midas_nx import doc
from midas_nx.db.project import Unit
from midas_nx.db.properties.material import Material
from midas_nx.db.properties.section import Section
from midas_nx.db.node_element import Node, Element
client = MidasClient(mapi_key="your-mapi-key-here", product=Product.GEN)
doc.new_project(client=client)
Unit.update({1: {"DIST": "M", "FORCE": "TONF"}}, client=client)
Material.create({1: {
"TYPE": "CONC", "NAME": "C32",
"PARAM": [{"P_TYPE": 1, "STANDARD": "AS17(RC)", "DB": "C32"}],
}}, client=client)
Section.create({1: {
"SECTTYPE": "DBUSER", "SECT_NAME": "H300x150",
"SECT_BEFORE": {
"SHAPE": "H", "OFFSET_PT": "CC", "DATATYPE": 1,
"SECT_I": {"DB_NAME": "KS21", "SECT_NAME": "H300x150x6.5/9"},
},
}}, client=client)
Node.create({
1: {"X": 0, "Y": 0, "Z": 0},
2: {"X": 0, "Y": 0, "Z": 3.2},
}, client=client)
Element.create({1: {
"TYPE": "BEAM", "MATL": 1, "SECT": 1, "NODE": [1, 2], "ANGLE": 0,
}}, client=client)
doc.save(client=client)
Or use the low-level free function directly (same calling convention as the MIDAS-API manual repo's examples):
from midas_nx import configure, MidasAPI
configure(mapi_key="your-mapi-key-here", product="gen")
MidasAPI("POST", "/doc/NEW", {"Argument": {}})
Design
- Instance-based
MidasClient— no global mutable state; errors raise typed exceptions (MidasAuthError,MidasNotFoundError, ...) instead of killing the process. - Unified Gen/Civil —
MidasClient(product=Product.GEN | Product.CIVIL); each resource class declares which product(s) it supports (PRODUCTS), and calling a Civil-only resource against a Gen client raisesProductMismatchErrorby default (strict_product=Falseto only warn). /db/*resources areDbResourcesubclasses with.create()/.get()/.update()/.delete()classmethods;TypedDictpayload types document each endpoint's schema (fromdocs/manual/*.mdin the sibling repo) for editor/type-checker support, without runtime payload validation — schemas are too conditional (see e.g. the Eurocode moving-load endpoint, 5 mutually-exclusive variants) for a one-size-fits-all validated model./doc/*lifecycle endpoints are plain functions (doc.new_project(),doc.save(), ...) — not ID-keyed, wrapped in"Argument"rather than"Assign".
See docs/coverage.json / ROADMAP.md for the full endpoint list, what's
implemented, and where new endpoints should go.
Testing
No live MIDAS Gen/Civil NX server is required — all tests mock HTTP via
responses and assert request shape (URL, headers,
JSON body) against what the manual documents.
pytest
Contributing
Pick an unimplemented endpoint from ROADMAP.md, follow the pattern in
src/midas_nx/db/node_element.py (or doc.py for /doc/*//ope/*//view/*-style plain-function
endpoints), and add a test mirroring tests/db/test_node_element.py. Mark it "implemented" in
docs/coverage.json (see scripts/gen_roadmap.py) and regenerate ROADMAP.md.
License
MIT — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file midas_nx-0.5.0.tar.gz.
File metadata
- Download URL: midas_nx-0.5.0.tar.gz
- Upload date:
- Size: 135.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b753cc7dfc95dcf6037025c2e738ddc0e20642aca2ec3a23be920d544d9ac50
|
|
| MD5 |
f6c5e77fd13dfe1235cfdf49a7196628
|
|
| BLAKE2b-256 |
0774b05b125c790555c42c027e48165270af54f33671ef8102096763f68fdd4f
|
Provenance
The following attestation bundles were made for midas_nx-0.5.0.tar.gz:
Publisher:
publish.yml on Dennis5882/MIDAS-API-NX-SDK
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
midas_nx-0.5.0.tar.gz -
Subject digest:
2b753cc7dfc95dcf6037025c2e738ddc0e20642aca2ec3a23be920d544d9ac50 - Sigstore transparency entry: 2168267490
- Sigstore integration time:
-
Permalink:
Dennis5882/MIDAS-API-NX-SDK@c0c203b743ccf24b65f143ed333823015ad9a7a4 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/Dennis5882
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c0c203b743ccf24b65f143ed333823015ad9a7a4 -
Trigger Event:
release
-
Statement type:
File details
Details for the file midas_nx-0.5.0-py3-none-any.whl.
File metadata
- Download URL: midas_nx-0.5.0-py3-none-any.whl
- Upload date:
- Size: 100.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf4184c919d4711e180ce9fa2f981771f848e8eade3f5205904ac2ba96a28aa5
|
|
| MD5 |
b9de17b7ac4ea756405b42f6df9423fa
|
|
| BLAKE2b-256 |
349e60acbe6aa066364a25acc37231faac1cfa59f8f9dcf9aea9ce5f130d1a53
|
Provenance
The following attestation bundles were made for midas_nx-0.5.0-py3-none-any.whl:
Publisher:
publish.yml on Dennis5882/MIDAS-API-NX-SDK
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
midas_nx-0.5.0-py3-none-any.whl -
Subject digest:
cf4184c919d4711e180ce9fa2f981771f848e8eade3f5205904ac2ba96a28aa5 - Sigstore transparency entry: 2168267671
- Sigstore integration time:
-
Permalink:
Dennis5882/MIDAS-API-NX-SDK@c0c203b743ccf24b65f143ed333823015ad9a7a4 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/Dennis5882
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c0c203b743ccf24b65f143ed333823015ad9a7a4 -
Trigger Event:
release
-
Statement type: