From 4ee45d360def12e18f38e0ddc10a88bc02b3d767 Mon Sep 17 00:00:00 2001 From: Jared O'Neal Date: Mon, 27 Jul 2026 08:59:22 -0500 Subject: [PATCH 1/9] (Issue #27) Cleaning docs as part of PR review. --- docs/get_started_py.rst | 5 +++++ docs/get_started_r.rst | 5 +++++ docs/index.rst | 5 ++++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/get_started_py.rst b/docs/get_started_py.rst index dba67bb..5e81618 100644 --- a/docs/get_started_py.rst +++ b/docs/get_started_py.rst @@ -2,6 +2,11 @@ Getting Started with Python =========================== .. _Meson: https://mesonbuild.com .. _ninja: https://ninja-build.org +.. _Issue 53: https://github.com/bandframework/OpenBT/issues/53 + +.. note:: + While the Python package presently offers only mixing functionality, the + standard regression functionality will be made available (`Issue 53`_). Installed versions of the |openbt| Python package contain and wrap a dedicated set of |openbt| C++ command line tools. In particular, the package is diff --git a/docs/get_started_r.rst b/docs/get_started_r.rst index 5ccc551..cd7b5c4 100644 --- a/docs/get_started_r.rst +++ b/docs/get_started_r.rst @@ -1,6 +1,11 @@ Getting Started with R ======================= .. _remotes: https://remotes.r-lib.org +.. _Issue 52: https://github.com/bandframework/OpenBT/issues/52 + +.. note:: + While the R package presently offers only regression functionality, mixing + functionality will be made available (`Issue 52`_). Installed versions of the |openbt| R package, ``Ropenbt``, provide a front-end R interface that wraps a dedicated set of |openbt| C++ command line tools. The diff --git a/docs/index.rst b/docs/index.rst index f9ddb99..9c841d6 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -5,6 +5,7 @@ Welcome to |openbt|'s Documentation! .. _framework: https://bandframework.github.io .. _OpenBT repository: https://bitbucket.org/mpratola/openbt/src/master .. _OpenBTMixing repository: https://github.com/jcyannotty/OpenBT +.. _Taweret: https://taweretdocs.readthedocs.io .. image:: images/openbt_logo_rect.png :align: center @@ -33,7 +34,9 @@ the former. It, therefore, will supersede those two repositories, which will be frozen. This repository and its contents are being established and developed as part of -|band| framework_. +the |band| framework_. In particular, OpenBTMixing was originally built in +conjunction with Taweret_, and the |openbt| Python package provides mixing +functionality for Taweret. .. toctree:: :numbered: From cfc3cc2472a2469244813ab3ca78c6e1fe5f7d66 Mon Sep 17 00:00:00 2001 From: Jared O'Neal Date: Mon, 27 Jul 2026 09:11:29 -0500 Subject: [PATCH 2/9] (Issue #27) We will publish v1.2.0 on PyPI. --- docs/get_started_py.rst | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/docs/get_started_py.rst b/docs/get_started_py.rst index 5e81618..e4e6f68 100644 --- a/docs/get_started_py.rst +++ b/docs/get_started_py.rst @@ -67,12 +67,17 @@ prefer to use Conda should proceed with extra caution. Install from PyPI ----------------- -.. _project : https://pypi.org/project/openbt +.. _PyPI: https://pypi.org/project/openbt -This |openbt| Python package is **not** currently distributed on PyPI since a -PyPI |openbt| project_ already exists. That PyPI project space will eventually -be transferred to this project so that distribution of this package will be -enabled by PyPI under the name ``openbt``. +The |openbt| Python package is available for installation |via| PyPI_. It can +be installed by setting up a terminal with the desired target Python and +executing + +.. code:: console + + python -m pip install openbt + +The modern version of this package was first established at ``v1.2.0``. Install from clone ------------------ From 823cd09a3f3e77fe5ce5d2252184b42f36bead0f Mon Sep 17 00:00:00 2001 From: Jared O'Neal Date: Tue, 28 Jul 2026 10:18:45 -0500 Subject: [PATCH 3/9] (Issue #27) Clean Python package metadata. I also noticed that the sphinx docs don't render the copyright notice with Matt's middle initial. Since the initial is included in the LICENSE file, let's get contents matching. --- docs/conf.py | 2 +- openbt_pypkg/setup.py | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 92aa8e0..edb253a 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -6,7 +6,7 @@ from openbt import __version__ project = 'OpenBT' -copyright = "2025, Matthew Pratola and John Yannotty" +copyright = "2025, Matthew T. Pratola and John Yannotty" author = "Matthew Pratola and John Yannotty" version = __version__ release = version diff --git a/openbt_pypkg/setup.py b/openbt_pypkg/setup.py index 66c8172..8af84e0 100644 --- a/openbt_pypkg/setup.py +++ b/openbt_pypkg/setup.py @@ -44,7 +44,7 @@ PROJECT_URLS = { "Source": "https://github.com/bandframework/OpenBT", - "Documentation": "https://github.com/bandframework/OpenBT", + "Documentation": "https://openbt.readthedocs.io", "Tracker": "https://github.com/bandframework/OpenBT/issues", } @@ -118,17 +118,17 @@ def readme_md(): setup( name='openbt', - author="John Yannotty", - author_email="yannotty.1@buckeyemail.osu.edu", - maintainer="John Yannotty", - maintainer_email="yannotty.1@buckeyemail.osu.edu", + author="Matthew Pratola, John Yannotty", + author_email="mpratola@iu.edu", + maintainer="Matthew Pratola", + maintainer_email="mpratola@iu.edu", license="MIT", package_dir={"": "src"}, package_data=PACKAGE_DATA, cmdclass=cmdclass, url=PROJECT_URLS["Source"], project_urls=PROJECT_URLS, - description="Model mixing using Bayesian Additive Regression Trees", + description="Bayesian Additive Regression Trees", long_description=readme_md(), long_description_content_type="text/markdown", python_requires=PYTHON_REQUIRES, From 7cc0f9657ed99871d538862704305c07fe9e80a1 Mon Sep 17 00:00:00 2001 From: Jared O'Neal Date: Tue, 28 Jul 2026 10:31:09 -0500 Subject: [PATCH 4/9] (Issue #27) Updated external dependence version identifiers. --- openbt_pypkg/pyproject.toml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/openbt_pypkg/pyproject.toml b/openbt_pypkg/pyproject.toml index 8a4e5d4..de59278 100644 --- a/openbt_pypkg/pyproject.toml +++ b/openbt_pypkg/pyproject.toml @@ -9,11 +9,16 @@ # All other information needed to compose the package itself is in setup.py. [build-system] +# setuptools/_scm version limits set following setuptools_scm documentation for +# custom configurations +# https://setuptools-scm.readthedocs.io +# +# Meson version limit required to get necessary acceptable MPI external +# dependendence functionality. requires = [ - "setuptools", "ninja", "meson>=1.6.0", - "setuptools_scm[toml]>=6.0" + "setuptools>=80", "setuptools_scm[toml]>=8" ] build-backend = "setuptools.build_meta" From 1009d37befbf432cb94371bad66010812524507e Mon Sep 17 00:00:00 2001 From: Jared O'Neal Date: Tue, 28 Jul 2026 10:33:33 -0500 Subject: [PATCH 5/9] (Issue #27) Udpate typos config after finalizing repo structure. Still ignoring C++ and R codes. --- typos.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/typos.toml b/typos.toml index f491e6e..b5fa600 100644 --- a/typos.toml +++ b/typos.toml @@ -1,6 +1,6 @@ [files] extend-exclude = [".git", - "misc", "R", + "Ropenbt", "includes", "src", "tests", "openbt_pypkg/src/openbt/include"] ignore-hidden = false From 5980e1b94892932b5dd4e6f9002e351ebe68bb7b Mon Sep 17 00:00:00 2001 From: Jared O'Neal Date: Tue, 28 Jul 2026 10:38:08 -0500 Subject: [PATCH 6/9] (Issue #27) General cleaning as part of review. --- .gitignore | 14 ++------------ openbt_pypkg/pyproject.toml | 1 + 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/.gitignore b/.gitignore index 6ff199f..15585df 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1,8 @@ -# Text files -!Examples/Data/2d_x_test.txt -!Examples/Data/2d_x_train.txt -!Examples/Data/2d_y_train.txt -!Examples/Data/honda_x_test.txt -!Examples/Data/honda_x_train.txt -!Examples/Data/honda_y_train.txt - # Rhistory .Rhistory # Python cache -__pycache__/* +**/__pycache__ *.pyc # meson setup @@ -20,7 +12,6 @@ subprojects/.wraplock # Other folders .vscode/* -__pycache__ # Sphinx docs docs/build_pdf @@ -37,6 +28,5 @@ openbt_pypkg/src/openbt/_version.py openbt_pypkg/src/openbt/include/ openbt_pypkg/src/openbt/lib/ - # Other files -.DS_Store \ No newline at end of file +.DS_Store diff --git a/openbt_pypkg/pyproject.toml b/openbt_pypkg/pyproject.toml index de59278..73636e5 100644 --- a/openbt_pypkg/pyproject.toml +++ b/openbt_pypkg/pyproject.toml @@ -15,6 +15,7 @@ # # Meson version limit required to get necessary acceptable MPI external # dependendence functionality. +# https://github.com/mesonbuild/meson/pull/13619 requires = [ "ninja", "meson>=1.6.0", From 38e0d98fa340478a1c25e08ef35d4575d4e31bb7 Mon Sep 17 00:00:00 2001 From: Jared O'Neal Date: Tue, 28 Jul 2026 11:45:28 -0500 Subject: [PATCH 7/9] (Issue #27) Cleaning as part of reviewing actions for release. --- .github/workflows/test_py_sdist.yml | 3 +++ docs/git_workflow.rst | 10 ++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test_py_sdist.yml b/.github/workflows/test_py_sdist.yml index ff75445..124d9ae 100644 --- a/.github/workflows/test_py_sdist.yml +++ b/.github/workflows/test_py_sdist.yml @@ -73,6 +73,9 @@ jobs: # # Next testing steps would be to build a minimal MPI program and see # if I can reproduce the issue. + # + # TODO: The C++ CLTs action successfully runs with this setup. Note + # that it doesn't load libmpich-dev. - os: ubuntu-24.04 mpi_impl: "mpich" diff --git a/docs/git_workflow.rst b/docs/git_workflow.rst index 60c3fcd..68ec401 100644 --- a/docs/git_workflow.rst +++ b/docs/git_workflow.rst @@ -50,12 +50,13 @@ All of the following actions run automatically on every push and pull request to Documentation ~~~~~~~~~~~~~ -* **Check Spelling** — Checks all files in the repository +* **Check Spelling** — Checks a (potentially proper) subset of files in the repository for typographic errors using the ``typos`` tool with the ``typos.toml`` - configuration file. + configuration file. Refer to the configuration to determine what files are + being checked. * **Check Links** — Checks all ``.rst`` and ``.md`` files for broken URLs using - the ``lychee`` tool. In addition to running on push and pull request, this + the ``lychee`` tool. In addition to running on pushes and pull requests, this action runs on a regular schedule to catch links that break between contributions. @@ -94,4 +95,5 @@ C++ Tools Testing * **Test** |openbt| **C++ Command Line Tools** — Builds and tests the C++ command line tools directly across a matrix of operating systems and MPI implementations, independently of the Python package. Prints dynamic library linkage information for each built binary so that developers can verify the - correct MPI implementation was linked. + correct MPI implementation was linked. Since this action uses the build + script recommended to users, it also confirms correct script functionality. From b3d535e52dc881b0fab371584da35a6ccbf82ddb Mon Sep 17 00:00:00 2001 From: Jared O'Neal Date: Tue, 28 Jul 2026 14:34:39 -0500 Subject: [PATCH 8/9] (Issue #27) Cleaning as part of prerelease review. --- Ropenbt/DESCRIPTION | 2 +- docs/developer_environment.rst | 5 +++-- docs/get_started_py.rst | 2 +- docs/git_workflow.rst | 21 +++++++++++++++------ docs/index.rst | 9 +++++---- docs/release_procedure.rst | 14 +++++++++----- openbt_pypkg/pyproject.toml | 3 ++- 7 files changed, 36 insertions(+), 20 deletions(-) diff --git a/Ropenbt/DESCRIPTION b/Ropenbt/DESCRIPTION index 024a5fe..b8fcf25 100644 --- a/Ropenbt/DESCRIPTION +++ b/Ropenbt/DESCRIPTION @@ -2,7 +2,7 @@ Package: Ropenbt Type: Package Title: The Open Bayesian Trees Project Version: 1.2.0 -Date: 2026-07-09 +Date: 2026-07-29 Authors@R: c(person('Matthew', 'Pratola', role=c('aut','cre','cph'),email='mpratola@iu.edu')) URL: http://www.github.com/bandframework/OpenBT Description: diff --git a/docs/developer_environment.rst b/docs/developer_environment.rst index 6cbb816..a5c4f4b 100644 --- a/docs/developer_environment.rst +++ b/docs/developer_environment.rst @@ -61,7 +61,7 @@ package is installed |via| $ cd /path/to/OpenBT/openbt_pypkg $ python -m pip install . -or in editable mode |via| +or installed in editable mode |via| .. code-block:: console @@ -104,7 +104,8 @@ are Eigen headers change, the old files persist silently. Consider deleting these if the build produces unexpected behaviour. Note that, of these contents, only a subset of the command line tools in ``bin`` is included in a package - build. See ``meson.build`` for the current list of built tools. + build. See ``meson.build`` for the current list of built tools. See + ``setup.py`` to determine which of these are included in the Python package. * ``openbt_pypkg/src/openbt/include/eigen3/`` — Eigen headers installed under the package prefix as a side effect of Eigen's own Meson install step, diff --git a/docs/get_started_py.rst b/docs/get_started_py.rst index e4e6f68..9db61e5 100644 --- a/docs/get_started_py.rst +++ b/docs/get_started_py.rst @@ -96,7 +96,7 @@ The package can be installed in developer/editable mode by executing $ cd /path/to/OpenBT/openbt_pypkg $ python -m pip install -v -e . -In this latter case, the command line tools are built automatically and +In this latter case, a full set of the command line tools is built automatically and installed at ``/path/to/OpenBT/openbt_pypkg/src/openbt/bin``. Testing diff --git a/docs/git_workflow.rst b/docs/git_workflow.rst index 68ec401..b39965f 100644 --- a/docs/git_workflow.rst +++ b/docs/git_workflow.rst @@ -1,9 +1,12 @@ +Git Usage +========= + Git Workflow -============ +------------ .. note:: - If merge conflicts exist that block the merging of the PR through the GitHub + If merge conflicts exist that block the merging of a PR through the GitHub web interface, do **not** resolve the conflicts through the web interface, which might result in unwanted side effects. Rather, a gatekeeper should resolve the conflicts in a local clone, merge locally, and push. @@ -23,13 +26,15 @@ informal git workflow. A minimal set of rules are commits to the main repository. Ownership of the branch should be handed over to another developer by explicit communication only. #. Do not create branches off of other feature branches. -#. If the contents of a feature branch are deemed as good and ready for +#. If the contents of a feature branch are deemed good and ready for inclusion in the software, the branch's developer should create a PR for merging the feature branch into ``main``. #. If a PR is ready for review, the developer should first merge ``main`` into the feature branch if ``main`` has been updated since the feature branch was based off of it. This forces the integration of the new work in ``main`` to occur in the feature branch rather than in ``main``, which we try to protect. + Similarly, all merge conflict resolution occurs as subsequent commits on the + feature branch rather than on ``main``. #. If a PR is ready for review and synchronized with ``main``, the branch developer should perform a self-review of the PR. Once completed, the PR must undergo a review by a different developer that is also a gatekeeper of @@ -41,11 +46,15 @@ informal git workflow. A minimal set of rules are Developers are encouraged to create PRs early during branch development to begin and record a dialogue with potential reviewers in the PR. +While its up to the reviewers' discretion to determine what indicates a +successful PR, typically merges should only proceed after confirming that all +GitHub actions are passing on the latest commit of the feature branch. + GitHub Actions -------------- All of the following actions run automatically on every push and pull request to -``main``. A merge should only proceed once all actions pass. +``main``. Documentation ~~~~~~~~~~~~~ @@ -76,9 +85,9 @@ Python Package Testing artifact, can be manually uploaded to PyPI as the official release distribution. -* **Test** |openbt| **Developer-mode Installation** — Tests the editable installation +* **Test** |openbt| **Developer-mode Installation** — Tests editable installations (``pip install -e .``) on a reduced matrix. MPI is intentionally installed - |via| |pip| rather than a system package manager to confirm that pip-installed + |via| |pip| rather than a system package manager to confirm that |pip|-installed MPI implementations work correctly. * **Test** |openbt| **in Anaconda** — Tests installation inside a conda environment diff --git a/docs/index.rst b/docs/index.rst index 9c841d6..f439ac9 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,9 +1,10 @@ Welcome to |openbt|'s Documentation! ==================================== +.. _GitHub repository: https://github.com/bandframework/OpenBT .. _Open MPI: https://www.open-mpi.org .. _MPICH: https://www.mpich.org .. _framework: https://bandframework.github.io -.. _OpenBT repository: https://bitbucket.org/mpratola/openbt/src/master +.. _original Bitbucket OpenBT repository: https://bitbucket.org/mpratola/openbt/src/master .. _OpenBTMixing repository: https://github.com/jcyannotty/OpenBT .. _Taweret: https://taweretdocs.readthedocs.io @@ -13,7 +14,7 @@ Welcome to |openbt|'s Documentation! :height: 165 :width: 451 -|openbt| is an extensible software project that implements a variety of Bayesian tree models for scientific and industry applications, including regression, model mixing, sensitivity analysis and multiobjective optimization. +|openbt| is an extensible software project managed in a `GitHub repository`_ that implements a variety of Bayesian tree models for scientific and industry applications, including regression, model mixing, sensitivity analysis and multiobjective optimization. The heart of |openbt| is a set of C++ tools that can be used directly |via| the command line or indirectly through the ``openbt`` Python package or ``RopenBT`` R package, which wrap @@ -28,8 +29,8 @@ it can be built with MPI installed on a laptop using the system's package manager or with MPI installations on leadership class platforms and clusters that were installed by experts and optimized for their specific platform. -This project was established by merging the contents of the original Bitbucket -`OpenBT repository`_ with the `OpenBTMixing repository`_, which was based off of +This project was established by merging the contents of the `original Bitbucket +OpenBT repository`_ with the `OpenBTMixing repository`_, which was based off of the former. It, therefore, will supersede those two repositories, which will be frozen. diff --git a/docs/release_procedure.rst b/docs/release_procedure.rst index 94d4b03..a637a66 100644 --- a/docs/release_procedure.rst +++ b/docs/release_procedure.rst @@ -41,6 +41,8 @@ Seed the release process Once all tasks have been executed +* Determine if new Meson version constraints should be made and implement these + consistently in ``meson.build`` and ``pyproject.toml``. * Check if a new version of the Eigen package is available through the Meson build system's wrapdb facility and assess if the new version should be adopted and tested. @@ -108,6 +110,13 @@ Command line tools tools. This should include a review of the build logs and confirming correct logging of the new release version identifier. +R package +^^^^^^^^^ +The following can likely be piggybacked onto the above command line tool testing. + +#. Gatekeepers to follow installation guide to install and test the R + package in a clean environment + Python package ^^^^^^^^^^^^^^ .. _twine instructions: https://twine.readthedocs.io/en/stable/index.html#using-twine @@ -153,11 +162,6 @@ Otherwise, #. In a clean virtual environment, follow the installation guide for installing from |pip| and to test the installation -R package -^^^^^^^^^ -#. Gatekeepers to follow installation guide to install and test the R - package in a clean environment - Post-release actions -------------------- * Carry out all necessary tasks to integrate the release within the BAND diff --git a/openbt_pypkg/pyproject.toml b/openbt_pypkg/pyproject.toml index 73636e5..bb1d35b 100644 --- a/openbt_pypkg/pyproject.toml +++ b/openbt_pypkg/pyproject.toml @@ -13,7 +13,8 @@ # custom configurations # https://setuptools-scm.readthedocs.io # -# Meson version limit required to get necessary acceptable MPI external +# Meson version limit, which likely needs to be maintained consistent with limits +# in meson.build, required to get necessary acceptable MPI external # dependendence functionality. # https://github.com/mesonbuild/meson/pull/13619 requires = [ From 7366cb661700fd0b9cf2366119a2ed6727d0a262 Mon Sep 17 00:00:00 2001 From: Jared O'Neal Date: Tue, 28 Jul 2026 15:03:10 -0500 Subject: [PATCH 9/9] (Issue #27) Let typos check R wrapper's manual pages --- typos.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/typos.toml b/typos.toml index b5fa600..08dff41 100644 --- a/typos.toml +++ b/typos.toml @@ -1,6 +1,6 @@ [files] extend-exclude = [".git", - "Ropenbt", + "Ropenbt/R", "includes", "src", "tests", "openbt_pypkg/src/openbt/include"] ignore-hidden = false