Skip to content

Aquaveo/xmscore

Repository files navigation

XmsCore-CI

XMSCore

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.

Prerequisites

In order to build this library, you must first have a few things installed.

  1. Conan
  2. CMake

Building

See xmscore build instructions.

Source Layout

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.

Testing

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.

Documentation

  • C++ Documentation — generated by Doxygen from Doxygen/Doxyfile. To rebuild locally, run doxygen Doxygen/Doxyfile from the repository root.

  • Python Documentation — generated by Sphinx from pydocs/source/. To rebuild locally:

    cd pydocs
    pip install -r source/doc_requirements.txt
    make html
    

    The generated HTML lands in pydocs/build/html/.

Coverage

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.

License

Distributed under the FreeBSD license. See LICENSE.