Support library for XMS products. xmscore provides the shared C++ utilities
(error handling, logging, math, points, STL helpers, time, and IO) used by the
rest of the XMS family of libraries (xmsinterp, xmsmesher, xmsextractor,
xmsgrid, xmsstamper, …) along with Python bindings for the subset that is useful from Python tools
and tests.
In order to build this library, you must first have a few things installed.
See xmscore build instructions.
All public C++ code lives under xmscore/, split into a handful of small
focused modules (dataio, math, misc, points, stl, testing,
time). The per-module breakdown — what each directory contains and the
matching Doxygen group — is maintained in
Doxygen/DoxygenMainpage.md
(also rendered on the generated docs site).
xmscore/python/ holds the pybind11 bindings; it is not part of the C++
API surface.
Convention: header files paired with .t.h files contain the CxxTest unit-test
suites for that header; the test bodies live in #if CXX_TEST blocks at the
bottom of the corresponding .cpp file.
The Python package source lives in _package/xms/core/ and is installed as
xms.core. The native module is built from xmscore/python/ and exposed as
xms.core._xmscore.
C++ tests run through CxxTest. Python tests live under _package/tests/ and
are run with the standard unittest runner, e.g.:
python -m unittest discover -s _package/tests -p "*_pyt.py"
The full CI invocation (build + test orchestration) is python build.py …
in .github/workflows/XmsCore-CI.yaml.
-
C++ Documentation — generated by Doxygen from
Doxygen/Doxyfile. To rebuild locally, rundoxygen Doxygen/Doxyfilefrom the repository root. -
Python Documentation — generated by Sphinx from
pydocs/source/. To rebuild locally:cd pydocs pip install -r source/doc_requirements.txt make htmlThe generated HTML lands in
pydocs/build/html/.
CI publishes unified C++/Python coverage reports on every push and pull request
via .github/workflows/Coverage.yaml (generated by xmsconan 2.15.2).
Artifacts uploaded per run:
coverage-html— browsable HTML reports for both C++ (coverage-html-cpp/) and Python (coverage-html-py/) coverage.coverage-xml— Cobertura XML files (cov-cpp.xml,cov-py.xml) suitable for coverage badge services or external reporting tools.
Coverage is measured on Linux only (gcovr requires GCC; the macOS and Windows jobs skip it). Thresholds are currently set to 0 (report-only) while the baseline is being established.
Distributed under the FreeBSD license. See LICENSE.