Conversation
- docs/ — full Jekyll (just-the-docs) documentation site: * index.md — overview, quick examples (C++ and Python) * installation.md — FetchContent, cmake options, pip install * cpp/ — concepts, quick start, full C++ API reference * python/ — quick start, full Python API reference * advanced/ — algorithms guide, column-generation patterns - AGENT.md — self-contained guide for AI agents: data model, all import paths, essential API patterns (Python + C++), resource function quick-reference tables, build instructions, common pitfalls - .github/workflows/pages.yml — auto-deploy to GitHub Pages on push - .markdownlint.json — relax line-length/heading rules for docs - .github/workflows/ci-full.yml fixes: * allow-prereleases: true for Python 3.14 * -DCMAKE_CXX_CLANG_TIDY= to disable clang-tidy in test matrix * macOS: export CC/CXX to brew LLVM so CMake uses the right compiler Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Adds a Jekyll documentation site for the RCSPP C++ library and Python package, plus GitHub Actions automation to publish docs to GitHub Pages.
Changes:
- Introduces structured docs for C++ (concepts, quickstart, API) and Python (quickstart, index, API).
- Adds “Advanced” documentation (algorithms + column generation) and an AI-agent guide (AGENT.md).
- Adds GitHub Pages build/deploy workflow, updates CI configuration, and introduces markdownlint settings.
Reviewed changes
Copilot reviewed 17 out of 17 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| docs/index.md | New home page with quick examples and project overview |
| docs/_config.yml | Jekyll/Just-the-Docs site configuration + nav setup |
| docs/Gemfile | Ruby dependencies for local/docs build |
| docs/cpp/index.md | C++ documentation section landing page |
| docs/cpp/concepts.md | Core solver concepts and resource/function model |
| docs/cpp/quickstart.md | C++ quickstart examples (single/multi-resource, CG, params) |
| docs/cpp/api.md | C++ API reference for core types and algorithms |
| docs/python/index.md | Python package layout and import guidance |
| docs/python/quickstart.md | Python quickstart examples (resources, networkx, CG, NG-path) |
| docs/python/api.md | Python API reference (ResourceGraph, params, functions, PricingPool) |
| docs/advanced/index.md | Advanced section root |
| docs/advanced/algorithms.md | Algorithm selection guidance + label buckets |
| docs/advanced/column-generation.md | Column-generation patterns incl. PricingPool |
| .github/workflows/pages.yml | GitHub Pages build/deploy workflow |
| .github/workflows/ci-full.yml | CI tweaks for macOS LLVM and CMake configuration |
| .markdownlint.json | Markdown lint configuration |
| AGENT.md | AI agent guide to repo architecture + key APIs |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+34
to
+35
| - name: Build with Jekyll | ||
| run: bundle exec jekyll build --source docs --destination _site |
| graph.add_arc({15.0}, 1, 3, /*cost=*/15.0); | ||
| graph.add_arc({20.0}, 0, 2, /*cost=*/20.0); | ||
| graph.add_arc({10.0}, 2, 3, /*cost=*/10.0); | ||
| // path 0→2→3 has lower cost (30) but identical resource usage to 0→1→3 (25) |
Comment on lines
60
to
+63
| - uses: actions/setup-python@v5 | ||
| with: | ||
| python-version: ${{ matrix.python-version }} | ||
| allow-prereleases: true |
Comment on lines
+59
to
+63
| ## `Diversification` | ||
|
|
||
| Wraps another algorithm (default: `Greedy`) and repeatedly solves the | ||
| subproblem after removing solution arcs, collecting a pool of diverse | ||
| solutions. |
| --- | ||
|
|
||
| ## Multiple solutions (diversification) | ||
|
|
|
|
||
| --- | ||
|
|
||
| ## Column generation loop |
| | `TrivialFeasibilityFunction()` | Always feasible | | ||
| | `MinMaxFeasibilityFunction(min, max)` | `min ≤ value ≤ max` | | ||
| | `TimeWindowFeasibilityFunction(tw)` | `value ≤ due_time[node]` | | ||
| | `SizeFeasibilityFunction(min_size, max_size)` | `min ≤ len(container) ≤ max` | |
Comment on lines
+220
to
+227
| | Class | Applies to | Effect | | ||
| |---|---|---| | ||
| | `AdditionExtensionFunction()` | Numerical | `result = current + arc_value` | | ||
| | `SubtractExtensionFunction()` | Numerical | `result = current - arc_value` | | ||
| | `TimeWindowExtensionFunction(tw, default_max=None)` | Numerical | `result = max(current + travel, ready[node])` | | ||
| | `UnionExtensionFunction()` | Container | `result = current ∪ arc_value` | | ||
| | `IntersectionExtensionFunction()` | Container | `result = current ∩ arc_value` | | ||
| | `SubtractExtensionFunction()` | Container | `result = current − arc_value` | |
On Windows, mip can import but crash with TypeError when Gurobi DLL lookup returns None. Broaden the exception guard to catch all import errors, and wrap vrp.solve() in a try/except so any solver-init failure also results in a proper pytest.skip rather than an ERROR. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
mip's Gurobi auto-detection creates internal state (Model.__del__) that calls LoadLibrary(None) during teardown when no Gurobi license is present. Catching the exception in the test body does not prevent the teardown crash. Skip the entire test on sys.platform == 'win32' so mip is never imported and no Gurobi state is created. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… filter mip's Gurobi DLL probe runs at import time on Windows and crashes __del__ with TypeError (LoadLibrary/NoneType) even when the test is skipped. Two-pronged fix: 1. requirements.txt: add sys_platform != 'win32' so mip is never installed on Windows runners — nothing to clean up at teardown. 2. conftest.py: widen the PytestUnraisableExceptionWarning filter to cover all mip/Gurobi-related patterns (SolverGurobi, LoadLibrary, NoneType-iterable, gurobipy) as a belt-and-suspenders guard. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
ctypes.CDLL(None) is valid on Linux/macOS (loads libc) but raises TypeError: LoadLibrary() argument 1 must be str, not None on Windows. The _flush_gcov_on_exit fixture only caught AttributeError, so the TypeError propagated as an ERROR at teardown of the last test. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…gger - gtest_discover_tests: bump DISCOVERY_TIMEOUT from 5s to 30s so Debug binaries on Windows (slow DLL load) don't time out during test list discovery at build time. - ci-full.yml: add issue_comment trigger so posting '/run-ci' in any PR comment launches the full matrix. Jobs guard on workflow_dispatch OR (PR comment AND '/run-ci' body). Checkout uses refs/pull/N/head when triggered by a comment. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
jekyll-seo-tag and jekyll-include-cache are required by just-the-docs but were absent from the Gemfile, causing local jekyll build to fail. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Replace Jekyll/just-the-docs with Sphinx + Furo theme - Add Doxygen XML pipeline (Doxyfile → Breathe/Exhale) for C++ API - Add sphinx.ext.autodoc + napoleon for Python API - Split C++ API into Beginner (instantiate) and Advanced (subclass) pages - Add Doxygen /// comments to all 57 previously undocumented C++ headers - Add Google-style docstrings to all Python modules - Update pages.yml to build Sphinx instead of Jekyll - Add .gitignore entries for _doxygen/, _site/, cpp/api/ (generated) - Remove obsolete Jekyll files (Gemfile, _config.yml, hand-written api.md files) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Contributor
Author
|
/run-ci |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
docs/ — full Jekyll (just-the-docs) documentation site:
AGENT.md — self-contained guide for AI agents: data model, all import paths, essential API patterns (Python + C++), resource function quick-reference tables, build instructions, common pitfalls
.github/workflows/pages.yml — auto-deploy to GitHub Pages on push
.markdownlint.json — relax line-length/heading rules for docs
.github/workflows/ci-full.yml fixes: