Skip to main content

xstrumodeler

Python bindings (Boost.Python) for the xstrucore cross-section modeler.

The repository is self-contained:

Path Content
boost-wrap.cpp Boost.Python module definition (xstrumodeler)
lib/coreobj/ core objects library (functions, units, keys, ...)
lib/xstrucore/ structural section modeler library
src/xstrumodeler/ Python package; the compiled module is installed here

Boost 1.88 is downloaded automatically at configure time (CMake FetchContent) and Boost.Python is compiled statically into the module, so no system Boost is required. The wheel depends only on the C++ runtime.

Requirements

  • Python >= 3.10 (with headers)
  • a C++17 compiler:
    • Linux: GCC or Clang (g++)
    • Windows: Visual Studio 2022 Build Tools with the Desktop development with C++ workload
  • network access on first build (≈100 MB Boost download)

CMake is provided by scikit-build-core if not installed.

Build

pip wheel . -w dist          # build a wheel
pip install .                # or install directly
from xstrumodeler import xstrumodeler
modeler = xstrumodeler.XStruModeler()

Faster rebuilds (development)

By default pip builds in a temporary directory, so every build downloads Boost again and recompiles everything (about a minute). To reuse a build directory, install the build tools once and disable build isolation:

pip install "scikit-build-core>=0.11" ninja
pip install --no-build-isolation . -Cbuild-dir=build/{wheel_tag}

Following builds only recompile the changed files (seconds). Build isolation must be off: with it, pip uses a different temporary ninja on each run and the build directory is discarded.

Offline build

Download and extract boost-1.88.0-cmake.tar.xz then:

pip wheel . -w dist -Ccmake.define.FETCHCONTENT_SOURCE_DIR_BOOST=/path/to/boost-1.88.0

Plain CMake (development)

cmake -S . -B build
cmake --build build -j
PYTHONPATH=build python -c "import xstrumodeler; print(xstrumodeler.XStruModeler())"

Here the compiled module is imported directly (import xstrumodeler), while the installed package is from xstrumodeler import xstrumodeler.

Wheels for all Python versions (like CI)

pipx run cibuildwheel --platform linux     # requires Docker
pipx run cibuildwheel --platform windows   # on Windows

Wheels are written to wheelhouse/. Locally cibuildwheel uses its default manylinux image, so Linux wheels may be tagged manylinux_2_28 instead of the manylinux_2_34 built by CI.

Releasing

GitLab CI builds the sdist, manylinux_2_34 wheels (cp310–cp314) and Windows wheels (cibuildwheel):

  • on pushes to master and merge requests that change build files (sources, CMake, pyproject.toml, CI), or from Run pipeline in the GitLab UI: build only, to catch problems before a release;
  • on version tags: it also checks that the tag matches version in pyproject.toml and, if every build succeeds, uploads them all:
Tag Upload to
vX.Y.ZrcN TestPyPI
vX.Y.Z PyPI

Uploads use Trusted Publishing: no token is stored in GitLab.

Release steps:

  1. Set version = "X.Y.ZrcN" in pyproject.toml, commit, push, then git tag vX.Y.ZrcN && git push origin vX.Y.ZrcN.
  2. Check the release candidate: pip install -i https://test.pypi.org/simple/ xstrumodeler==X.Y.ZrcN.
  3. Set version = "X.Y.Z" in pyproject.toml and CITATION.cff, commit, push, then git tag vX.Y.Z && git push origin vX.Y.Z.

A version can be uploaded only once: if a release fails after uploading, use the next rc number.

One-time setup:

  • PyPI → xstrumodeler → Settings → Publishing → add a GitLab publisher: namespace luigi_paone, project xstrumodeler, pipeline file .gitlab-ci.yml, environment pypi.
  • TestPyPI → Account → Publishing → add a pending publisher with the same values, project name xstrumodeler, environment testpypi.
  • GitLab → Settings → Repository → Protected tags: v*, Maintainers only.

Provenance

Extracted from the exagon repository (commit 5455d2d) with history preserved: src/app/xstrumodeler → repository root, src/lib/coreobj and src/lib/xstrucore → lib/. The copies in lib/ are now independent from exagon; changes are not synchronized automatically.

License

Licensed under the Apache License, Version 2.0. Redistributions must retain the NOTICE file. If you use xstrumodeler in published work, please cite it as described in CITATION.cff.

Boost is distributed under the Boost Software License, Version 1.0.

Metadata

Release files for xstrumodeler 0.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for xstrumodeler 0.0.4
File Size Uploaded Provenance Actions
xstrumodeler-0.0.4.tar.gz 88.7 kB Without provenance Details for xstrumodeler-0.0.4.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for xstrumodeler 0.0.4
File Actions
xstrumodeler-0.0.4-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for xstrumodeler-0.0.4-cp314-cp314-win_amd64.whl
xstrumodeler-0.0.4-cp314-cp314-manylinux_2_34_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.34+ x86-64 Details for xstrumodeler-0.0.4-cp314-cp314-manylinux_2_34_x86_64.whl
xstrumodeler-0.0.4-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for xstrumodeler-0.0.4-cp313-cp313-win_amd64.whl
xstrumodeler-0.0.4-cp313-cp313-manylinux_2_34_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.34+ x86-64 Details for xstrumodeler-0.0.4-cp313-cp313-manylinux_2_34_x86_64.whl
xstrumodeler-0.0.4-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for xstrumodeler-0.0.4-cp312-cp312-win_amd64.whl
xstrumodeler-0.0.4-cp312-cp312-manylinux_2_34_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.34+ x86-64 Details for xstrumodeler-0.0.4-cp312-cp312-manylinux_2_34_x86_64.whl
xstrumodeler-0.0.4-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for xstrumodeler-0.0.4-cp311-cp311-win_amd64.whl
xstrumodeler-0.0.4-cp311-cp311-manylinux_2_34_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.34+ x86-64 Details for xstrumodeler-0.0.4-cp311-cp311-manylinux_2_34_x86_64.whl
xstrumodeler-0.0.4-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for xstrumodeler-0.0.4-cp310-cp310-win_amd64.whl
xstrumodeler-0.0.4-cp310-cp310-manylinux_2_34_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.34+ x86-64 Details for xstrumodeler-0.0.4-cp310-cp310-manylinux_2_34_x86_64.whl

Total release size: 4.2 MB

Release files / xstrumodeler-0.0.4.tar.gz

Download URL xstrumodeler-0.0.4.tar.gz
Size 88.7 kB
Tags Source
SHA-256 checksum
How to use checksums
1ea11da1b2ec4fa8faeb17b2010c28f997551f6bb0491495d6ba3a5ceec7e116
BLAKE2b-256 checksum
How to use checksums
e1dcbffc25e3d9277f63cb45831107307883a7626a7dee03e2b57754b28755c9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / xstrumodeler-0.0.4-cp314-cp314-win_amd64.whl

Download URL xstrumodeler-0.0.4-cp314-cp314-win_amd64.whl
Size 275.0 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
a9278a7eff73105660a03350640c8aed95d683e525311b23fb1742625e6cd630
BLAKE2b-256 checksum
How to use checksums
cde4dc2c77853ae7c5dedc85e276c5f40c4917ce278d5613da3317008892f180
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / xstrumodeler-0.0.4-cp314-cp314-manylinux_2_34_x86_64.whl

Download URL xstrumodeler-0.0.4-cp314-cp314-manylinux_2_34_x86_64.whl
Size 549.1 kB
Tags CPython 3.14 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
a970f2e1b10aa2103f5e7b3980314d8664373288e5a51378da6a232cd844750d
BLAKE2b-256 checksum
How to use checksums
3a366d4b373b26f487f5e5e32c095830c01b21148ddbdc96278f19969a3a0120
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / xstrumodeler-0.0.4-cp313-cp313-win_amd64.whl

Download URL xstrumodeler-0.0.4-cp313-cp313-win_amd64.whl
Size 266.7 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
6dc29be750b9aff444b4cd0f2564dfe669b83865dbad03fdc458c257fa713b6b
BLAKE2b-256 checksum
How to use checksums
309ebcb2bbb521ab1bd4551f1e0ced5455c93b25ad1937a101d6fffcfa2a4e12
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / xstrumodeler-0.0.4-cp313-cp313-manylinux_2_34_x86_64.whl

Download URL xstrumodeler-0.0.4-cp313-cp313-manylinux_2_34_x86_64.whl
Size 546.0 kB
Tags CPython 3.13 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
516ba2495fc8bc8c3d2b0e6fc5a8918e7c5190aadc72790c30fb1dce18d60506
BLAKE2b-256 checksum
How to use checksums
9f2d1ca449fce36b7f00e412ee33b1a77d4ae04d3780db39df90c1f5b414adf0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / xstrumodeler-0.0.4-cp312-cp312-win_amd64.whl

Download URL xstrumodeler-0.0.4-cp312-cp312-win_amd64.whl
Size 266.6 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
c25de9d02b288a27ff4bcfa7247ba337fb66a411d7c87dc72574e5cfe2f2a102
BLAKE2b-256 checksum
How to use checksums
58d12d6eabd435bba4fb931539ba8c3e88b76e60dc3fb0e17d24cbbfe2487eb3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / xstrumodeler-0.0.4-cp312-cp312-manylinux_2_34_x86_64.whl

Download URL xstrumodeler-0.0.4-cp312-cp312-manylinux_2_34_x86_64.whl
Size 545.9 kB
Tags CPython 3.12 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
e40f8eccaef8cfcc08b74e49cbe5ce65d4ffc68e9fef86135fd3de56f7c905d6
BLAKE2b-256 checksum
How to use checksums
75565dc0c130553bf124291b3b718a843b3d0c2955ad4ec6a384625e5a1669df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / xstrumodeler-0.0.4-cp311-cp311-win_amd64.whl

Download URL xstrumodeler-0.0.4-cp311-cp311-win_amd64.whl
Size 265.6 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
0461730e2c0513103b8a202f20b44f792e5e0ecca18699e9511a316eac70df23
BLAKE2b-256 checksum
How to use checksums
35071079882e26f23837eb7e313e8202a601df8e13edbf7211f146125d7837c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / xstrumodeler-0.0.4-cp311-cp311-manylinux_2_34_x86_64.whl

Download URL xstrumodeler-0.0.4-cp311-cp311-manylinux_2_34_x86_64.whl
Size 549.7 kB
Tags CPython 3.11 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
54bb68da4cc4cd2d21e2c24dda9244d2b200bbf52c1bd843836d8a8192586ab9
BLAKE2b-256 checksum
How to use checksums
ba87785f464967315da190ac6c5411afec93f9e644e2455e1a7e45af62207204
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / xstrumodeler-0.0.4-cp310-cp310-win_amd64.whl

Download URL xstrumodeler-0.0.4-cp310-cp310-win_amd64.whl
Size 265.6 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
e2fb173fe1232d2d6a7dae33fa71465c8ffa872876291c86f99bae17baf98c76
BLAKE2b-256 checksum
How to use checksums
646ccef654b8f5547a13afc0c9c277ed30ad89b00d70d7652de59db05194f0c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / xstrumodeler-0.0.4-cp310-cp310-manylinux_2_34_x86_64.whl

Download URL xstrumodeler-0.0.4-cp310-cp310-manylinux_2_34_x86_64.whl
Size 550.0 kB
Tags CPython 3.10 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
f58623919556fd5dfd4b991b7c3563b5da69de1eb97b86b39921393f2d4a05a4
BLAKE2b-256 checksum
How to use checksums
21da014dece02e92dea36004254c8e7ba260387b87fad06b6af2d0f0debacb6e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.12.15

Security for xstrumodeler 0.0.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page