Skip to content

Release NetLab-TopoGen 0.6.0 - #11

Merged
networmix merged 8 commits into
mainfrom
release-0.6.0
Oct 27, 2026
Merged

networmix merged 8 commits into
mainfrom
release-0.6.0

Conversation

@networmix

@networmix networmix commented Oct 27, 2026 •

Copy link
Copy Markdown
Owner

The first release under the new name. TopoGen becomes NetLab-TopoGen: install netlab-topogen, import netlab_topogen, run netlab-topogen. No old name is kept.

  • Built for NetGraph 0.25 and NetGraph-Core 0.12 (ngraph>=0.25.0,<0.26); no direct Core dependency.
  • Uniform traffic is written as explicit per-site-pair demands; link sizing is computed exactly in TopoGen itself; build.tm_sizing.flow_placement is removed.
  • Validation runs NetGraph's prepare with every demand set; files are written only after validation passes, each atomically.
  • New Python API: load_library, build_scenario(graph, config, library) -> Build, validate_scenario, write_scenario, write_artifacts.
  • CI and PyPI publishing are NetGraph's workflows: Python 3.11–3.14 and free-threaded 3.14; a published GitHub release uploads to PyPI through trusted publishing.

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

networmix and others added 8 commits October 25, 2026 23:37
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>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-27T12:37:00.024113Z 2e73d5e PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@networmix
networmix merged commit 2e7b7de into main Oct 27, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant