Repository navigation
Release NetLab-TopoGen 0.6.0 - #11
Merged
Merged
Conversation
TopoGen now uses only NetGraph 0.25's public API and no longer depends on NetGraph-Core directly. The build is a sequence of stages over immutable records: an explicit library, demands that name their DC sites (uniform traffic as one demand per ordered pair of distinct sites), link sizing computed exactly by TopoGen, device-link hardware with one optic rule shared with validation, validation through NetGraph's prepare with every demand set bound, and files written atomically only after validation passes. build.tm_sizing.flow_placement is removed, flow policy presets must use their canonical names, and the workflow keys follow NetGraph 0.25. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The metro dicts and the NetworkX site graph inside the build are replaced by immutable records (corridor graph, metro settings, finalized blueprints, stripe groups, site plan), and one document writer serves both NetGraph expansions. Results are unchanged apart from three decided changes: each DC site's mw_per_dc_region now carries its own power and an override naming no metro or DC site is refused; a library workflow, its shape included, is checked only when the scenario uses it; drawing modules are imported only on use. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
README and dev/PIPELINE.md describe the build as it now is: its stages, the exact-number and optic rules, traffic models, sizing, validation through NetGraph's prepare, publication after validation and the Python call sequence. The changelog's Unreleased section lists every change a 0.5.2 user must make. A test runs the guide's Python example as written. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The tests follow NetGraph's refusal of a negative component capacity and of an empty link selection while it parses, checking the refusal and where it is, not its wording. A corridor from a metro to itself is refused by name, directly and after a JSON round trip. Python 3.11 gets its own reference for 0.5.2's gravity and hose rows, since float sums changed in Python 3.12. dev/PIPELINE.md says which refusals NetGraph makes and which TopoGen makes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Some of their float sums use the built-in sum, which is compensated from Python 3.12 on, so the same inputs can give volumes that differ in the last digit between Python 3.11 and later versions. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The name topogen on PyPI belongs to another project. The distribution and the command are now netlab-topogen and the package netlab_topogen, with no old name kept: no alias module, old command or old environment variable. Released changelog entries keep the old name. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CI runs on every push and pull request over Python 3.11 to 3.14 and the free-threaded 3.14 build; a published GitHub release uploads the package to PyPI through trusted publishing, and a manual run uploads it to TestPyPI. The classifiers match NetGraph's, and the README installs from PyPI. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The first release under the new name, for NetGraph 0.25 and NetGraph-Core 0.12. The pipeline guide names the previous release by its own name, TopoGen 0.5.2. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
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.
The first release under the new name. TopoGen becomes NetLab-TopoGen: install
netlab-topogen, importnetlab_topogen, runnetlab-topogen. No old name is kept.ngraph>=0.25.0,<0.26); no direct Core dependency.build.tm_sizing.flow_placementis removed.preparewith every demand set; files are written only after validation passes, each atomically.load_library,build_scenario(graph, config, library) -> Build,validate_scenario,write_scenario,write_artifacts.Every change a user must make is in CHANGELOG.md under 0.6.0.
Checked locally on the published NetGraph 0.25.0 (
3d46d05) and NetGraph-Core 0.12.0: clean installs on Python 3.11, 3.12, 3.13, 3.14 and 3.14t, 556 tests each. On an earlier NetGraph 0.25 candidate (63cbddf): NetLab's eight inputs build, prepare and run, and every scenario section matches TopoGen 0.5.2 on NetGraph 0.24.1; these checks are being rerun on 0.25.0 before merge.🤖 Generated with Claude Code