From 1b64afc4b6f3d0cfdd25d97c1140a6eb29a9e45c Mon Sep 17 00:00:00 2001 From: Joshua Wink Date: Sat, 10 Oct 2026 15:25:49 -0500 Subject: [PATCH 1/3] build: version 2.0.0b1, a beta The step labels and the rename of codeupipe.lower are not compatible with 1.0.0. They go out as a beta of version 2, so that 1.0.0 stays the version that pip installs. - Both Python packages are 2.0.0b1, and codeupipe-lint needs that version of codeupipe. - The README says which version is stable and which is the beta, how to install each one, and what changed. - The release workflow needs no change: the tag v2.0.0b1 publishes the beta, and PyPI keeps a beta apart from the stable version. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/release.yml | 3 ++- README.md | 34 +++++++++++++++++++++++--- packages/codeupipe-lint/pyproject.toml | 5 ++-- packages/codeupipe/pyproject.toml | 3 ++- 4 files changed, 37 insertions(+), 8 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b5aa0a6..a1cd1f7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,6 +1,7 @@ name: Release -# Runs when a version tag is pushed: v1.0.0, v1.0.1, ... +# Runs when a version tag is pushed: v1.0.0, v1.0.1, and a beta such as v2.0.0b1. +# PyPI keeps a beta apart: pip installs it only when it is asked for. # Publishes the two packages to PyPI with trusted publishing: PyPI accepts # the upload because it comes from this workflow in this repository. No # token is stored anywhere. diff --git a/README.md b/README.md index 56f1834..5bfe08c 100644 --- a/README.md +++ b/README.md @@ -41,14 +41,26 @@ This repository has five packages. ## Install -Version 1.0.0 is on PyPI. Python 3.9 or later. No dependencies. +Python 3.9 or later. No dependencies. + +| Version | State | Install | +|---|---|---| +| 1.0.0 | Stable. On PyPI | `pip install codeupipe` | +| 2.0.0b1 | Beta. The `main` branch of this repository. Not on PyPI yet | From this repository, see below | + +This README describes version 2, the beta. A beta can change in a way that +is not compatible, from one beta to the next. `pip install codeupipe` does +not install a beta: pip installs one only when you ask for it, with +`pip install --pre codeupipe` or with the exact version. + +Until the beta is on PyPI, install it from this repository: ```bash -pip install codeupipe +pip install "codeupipe @ git+https://github.com/orchestrate-solutions/codeupipe#subdirectory=packages/codeupipe" +pip install "codeupipe-lint @ git+https://github.com/orchestrate-solutions/codeupipe#subdirectory=packages/codeupipe-lint" ``` -`codeupipe-lint` 1.0.0 is not on PyPI yet. Until it is, install it from this -repository: +`codeupipe-lint` 1.0.0 is not on PyPI. Install it from the tag `v1.0.0`: ```bash pip install "codeupipe-lint @ git+https://github.com/orchestrate-solutions/codeupipe@v1.0.0#subdirectory=packages/codeupipe-lint" @@ -57,6 +69,20 @@ pip install "codeupipe-lint @ git+https://github.com/orchestrate-solutions/codeu Version 1.0.0 is not compatible with `codeupipe` 0.10.0. It is a new library with the same name. +### Changes from 1.0.0 to 2.0.0b1 + +These changes are not compatible with 1.0.0. + +- **A step is reported by a label, the name of its class.** State and Hooks + give `DiscountFilter`, where 1.0.0 gave the full path + `examples.pricing.discount_filter.DiscountFilter`. +- **Removed:** `AnonymousStep`, `Pipeline.identities` (use + `Pipeline.labels`), `Pipeline.step_sites`, and lint rule CUP-A006. +- **`codeupipe.lower` is now `codeupipe.compile`.** The command is + `python -m codeupipe.compile`. + +The TypeScript packages are new and are not on npm. + ## Example [examples/pricing/](examples/pricing/) has one class in each file. The diff --git a/packages/codeupipe-lint/pyproject.toml b/packages/codeupipe-lint/pyproject.toml index dd4d45c..658572e 100644 --- a/packages/codeupipe-lint/pyproject.toml +++ b/packages/codeupipe-lint/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "codeupipe-lint" -version = "1.0.0" +version = "2.0.0b1" description = "Lint rules for codeupipe pipelines." readme = "README.md" requires-python = ">=3.9" @@ -13,6 +13,7 @@ license-files = ["LICENSE", "NOTICE"] authors = [{name = "Joshua Wink"}] keywords = ["codeupipe", "lint", "pipeline"] classifiers = [ + "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python :: 3", @@ -25,7 +26,7 @@ classifiers = [ "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Quality Assurance", ] -dependencies = ["codeupipe==1.0.0"] +dependencies = ["codeupipe==2.0.0b1"] [project.urls] Homepage = "https://github.com/orchestrate-solutions/codeupipe" diff --git a/packages/codeupipe/pyproject.toml b/packages/codeupipe/pyproject.toml index a6b0291..7d2859b 100644 --- a/packages/codeupipe/pyproject.toml +++ b/packages/codeupipe/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "codeupipe" -version = "1.0.0" +version = "2.0.0b1" description = "A Python library for writing a program as a pipeline of small steps." readme = "README.md" requires-python = ">=3.9" @@ -13,6 +13,7 @@ license-files = ["LICENSE", "NOTICE"] authors = [{name = "Joshua Wink"}] keywords = ["pipeline", "filter", "payload", "composition"] classifiers = [ + "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python :: 3", From ec1537812aee400b8909962dede88d0c0f1624ba Mon Sep 17 00:00:00 2001 From: Joshua Wink Date: Sat, 10 Oct 2026 15:37:53 -0500 Subject: [PATCH 2/3] build: the TypeScript packages are version 0.1.0-beta.1 The three TypeScript packages have a pre-release version, so that the version says that they are a beta. They stay private and are not on npm. The README points to the beta branch for the install of version 2. Co-Authored-By: Claude Opus 5.5 --- README.md | 9 +++++---- packages/codeupipe-compile-ts/README.md | 3 +-- packages/codeupipe-compile-ts/package-lock.json | 6 +++--- packages/codeupipe-compile-ts/package.json | 2 +- packages/codeupipe-lint-ts/README.md | 2 +- packages/codeupipe-lint-ts/package-lock.json | 6 +++--- packages/codeupipe-lint-ts/package.json | 2 +- packages/codeupipe-ts/README.md | 2 +- packages/codeupipe-ts/package-lock.json | 4 ++-- packages/codeupipe-ts/package.json | 2 +- 10 files changed, 19 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 5bfe08c..e8e6eee 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ Python 3.9 or later. No dependencies. | Version | State | Install | |---|---|---| | 1.0.0 | Stable. On PyPI | `pip install codeupipe` | -| 2.0.0b1 | Beta. The `main` branch of this repository. Not on PyPI yet | From this repository, see below | +| 2.0.0b1 | Beta. The `beta` branch of this repository. Not on PyPI yet | From this repository, see below | This README describes version 2, the beta. A beta can change in a way that is not compatible, from one beta to the next. `pip install codeupipe` does @@ -56,8 +56,8 @@ not install a beta: pip installs one only when you ask for it, with Until the beta is on PyPI, install it from this repository: ```bash -pip install "codeupipe @ git+https://github.com/orchestrate-solutions/codeupipe#subdirectory=packages/codeupipe" -pip install "codeupipe-lint @ git+https://github.com/orchestrate-solutions/codeupipe#subdirectory=packages/codeupipe-lint" +pip install "codeupipe @ git+https://github.com/orchestrate-solutions/codeupipe@beta#subdirectory=packages/codeupipe" +pip install "codeupipe-lint @ git+https://github.com/orchestrate-solutions/codeupipe@beta#subdirectory=packages/codeupipe-lint" ``` `codeupipe-lint` 1.0.0 is not on PyPI. Install it from the tag `v1.0.0`: @@ -81,7 +81,8 @@ These changes are not compatible with 1.0.0. - **`codeupipe.lower` is now `codeupipe.compile`.** The command is `python -m codeupipe.compile`. -The TypeScript packages are new and are not on npm. +The TypeScript packages are new. They are version `0.1.0-beta.1` and are not on +npm. ## Example diff --git a/packages/codeupipe-compile-ts/README.md b/packages/codeupipe-compile-ts/README.md index 6f2b426..04763f8 100644 --- a/packages/codeupipe-compile-ts/README.md +++ b/packages/codeupipe-compile-ts/README.md @@ -1,8 +1,7 @@ # codeupipe-compile for TypeScript Writes a codeupipe pipeline as one plain TypeScript module with no import -of codeupipe. It reads the source and does not run it. It is not on npm -yet. +of codeupipe. It reads the source and does not run it. It is a beta, version `0.1.0-beta.1`, and it is not on npm yet. **The rule: code that compiles gives the same output as the pipeline. A pipeline for which the compiler cannot keep that rule is refused, with the diff --git a/packages/codeupipe-compile-ts/package-lock.json b/packages/codeupipe-compile-ts/package-lock.json index 7b691b9..99c06f5 100644 --- a/packages/codeupipe-compile-ts/package-lock.json +++ b/packages/codeupipe-compile-ts/package-lock.json @@ -1,12 +1,12 @@ { "name": "codeupipe-compile", - "version": "0.1.0", + "version": "0.1.0-beta.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "codeupipe-compile", - "version": "0.1.0", + "version": "0.1.0-beta.1", "license": "Apache-2.0", "dependencies": { "codeupipe": "file:../codeupipe-ts", @@ -24,7 +24,7 @@ }, "../codeupipe-ts": { "name": "codeupipe", - "version": "0.1.0", + "version": "0.1.0-beta.1", "license": "Apache-2.0", "devDependencies": { "@types/node": "^24.0.0", diff --git a/packages/codeupipe-compile-ts/package.json b/packages/codeupipe-compile-ts/package.json index d5e2406..3bc853d 100644 --- a/packages/codeupipe-compile-ts/package.json +++ b/packages/codeupipe-compile-ts/package.json @@ -1,6 +1,6 @@ { "name": "codeupipe-compile", - "version": "0.1.0", + "version": "0.1.0-beta.1", "private": true, "description": "Writes a codeupipe pipeline as plain TypeScript with no import of codeupipe.", "license": "Apache-2.0", diff --git a/packages/codeupipe-lint-ts/README.md b/packages/codeupipe-lint-ts/README.md index b5a98a6..2516a24 100644 --- a/packages/codeupipe-lint-ts/README.md +++ b/packages/codeupipe-lint-ts/README.md @@ -1,7 +1,7 @@ # codeupipe-lint for TypeScript A linter for TypeScript code that uses codeupipe. It reads the source and -does not run it. It is not on npm yet. +does not run it. It is a beta, version `0.1.0-beta.1`, and it is not on npm yet. The linter is a codeupipe pipeline: [src/lint-pipeline.ts](src/lint-pipeline.ts). It depends on `codeupipe` and on the `typescript` package, which it uses to diff --git a/packages/codeupipe-lint-ts/package-lock.json b/packages/codeupipe-lint-ts/package-lock.json index c013f6c..9025973 100644 --- a/packages/codeupipe-lint-ts/package-lock.json +++ b/packages/codeupipe-lint-ts/package-lock.json @@ -1,12 +1,12 @@ { "name": "codeupipe-lint", - "version": "0.1.0", + "version": "0.1.0-beta.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "codeupipe-lint", - "version": "0.1.0", + "version": "0.1.0-beta.1", "license": "Apache-2.0", "dependencies": { "codeupipe": "file:../codeupipe-ts", @@ -24,7 +24,7 @@ }, "../codeupipe-ts": { "name": "codeupipe", - "version": "0.1.0", + "version": "0.1.0-beta.1", "license": "Apache-2.0", "devDependencies": { "@types/node": "^24.0.0", diff --git a/packages/codeupipe-lint-ts/package.json b/packages/codeupipe-lint-ts/package.json index f36a28a..71ecde1 100644 --- a/packages/codeupipe-lint-ts/package.json +++ b/packages/codeupipe-lint-ts/package.json @@ -1,6 +1,6 @@ { "name": "codeupipe-lint", - "version": "0.1.0", + "version": "0.1.0-beta.1", "private": true, "description": "A linter for TypeScript code that uses codeupipe.", "license": "Apache-2.0", diff --git a/packages/codeupipe-ts/README.md b/packages/codeupipe-ts/README.md index d909842..5058298 100644 --- a/packages/codeupipe-ts/README.md +++ b/packages/codeupipe-ts/README.md @@ -4,7 +4,7 @@ codeupipe is a library for writing a program as a pipeline of small steps. This is the TypeScript runtime. It has no dependencies. The built JavaScript runs in a browser and in Node. -It is not on npm yet. It implements the same contract as the Python +It is a beta, version `0.1.0-beta.1`, and it is not on npm yet. It implements the same contract as the Python package, and the same 27 conformance cases judge it: [conformance/API.md](../../conformance/API.md). diff --git a/packages/codeupipe-ts/package-lock.json b/packages/codeupipe-ts/package-lock.json index 4e31871..bc962ca 100644 --- a/packages/codeupipe-ts/package-lock.json +++ b/packages/codeupipe-ts/package-lock.json @@ -1,12 +1,12 @@ { "name": "codeupipe", - "version": "0.1.0", + "version": "0.1.0-beta.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "codeupipe", - "version": "0.1.0", + "version": "0.1.0-beta.1", "license": "Apache-2.0", "devDependencies": { "@types/node": "^24.0.0", diff --git a/packages/codeupipe-ts/package.json b/packages/codeupipe-ts/package.json index 069bece..f73ff54 100644 --- a/packages/codeupipe-ts/package.json +++ b/packages/codeupipe-ts/package.json @@ -1,6 +1,6 @@ { "name": "codeupipe", - "version": "0.1.0", + "version": "0.1.0-beta.1", "private": true, "description": "A TypeScript library for writing a program as a pipeline of small steps.", "license": "Apache-2.0", From aa78bd6880a708e6cfb44515d200941d3ad7beca Mon Sep 17 00:00:00 2001 From: Joshua Wink Date: Sat, 10 Oct 2026 15:46:56 -0500 Subject: [PATCH 3/3] build: the TypeScript packages are version 1.0.0-beta.1 Co-Authored-By: Claude Opus 5.5 --- README.md | 2 +- packages/codeupipe-compile-ts/README.md | 2 +- packages/codeupipe-compile-ts/package-lock.json | 6 +++--- packages/codeupipe-compile-ts/package.json | 2 +- packages/codeupipe-lint-ts/README.md | 2 +- packages/codeupipe-lint-ts/package-lock.json | 6 +++--- packages/codeupipe-lint-ts/package.json | 2 +- packages/codeupipe-ts/README.md | 2 +- packages/codeupipe-ts/package-lock.json | 4 ++-- packages/codeupipe-ts/package.json | 2 +- 10 files changed, 15 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index e8e6eee..a3952c5 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ These changes are not compatible with 1.0.0. - **`codeupipe.lower` is now `codeupipe.compile`.** The command is `python -m codeupipe.compile`. -The TypeScript packages are new. They are version `0.1.0-beta.1` and are not on +The TypeScript packages are new. They are version `1.0.0-beta.1` and are not on npm. ## Example diff --git a/packages/codeupipe-compile-ts/README.md b/packages/codeupipe-compile-ts/README.md index 04763f8..2357435 100644 --- a/packages/codeupipe-compile-ts/README.md +++ b/packages/codeupipe-compile-ts/README.md @@ -1,7 +1,7 @@ # codeupipe-compile for TypeScript Writes a codeupipe pipeline as one plain TypeScript module with no import -of codeupipe. It reads the source and does not run it. It is a beta, version `0.1.0-beta.1`, and it is not on npm yet. +of codeupipe. It reads the source and does not run it. It is a beta, version `1.0.0-beta.1`, and it is not on npm yet. **The rule: code that compiles gives the same output as the pipeline. A pipeline for which the compiler cannot keep that rule is refused, with the diff --git a/packages/codeupipe-compile-ts/package-lock.json b/packages/codeupipe-compile-ts/package-lock.json index 99c06f5..fbf2527 100644 --- a/packages/codeupipe-compile-ts/package-lock.json +++ b/packages/codeupipe-compile-ts/package-lock.json @@ -1,12 +1,12 @@ { "name": "codeupipe-compile", - "version": "0.1.0-beta.1", + "version": "1.0.0-beta.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "codeupipe-compile", - "version": "0.1.0-beta.1", + "version": "1.0.0-beta.1", "license": "Apache-2.0", "dependencies": { "codeupipe": "file:../codeupipe-ts", @@ -24,7 +24,7 @@ }, "../codeupipe-ts": { "name": "codeupipe", - "version": "0.1.0-beta.1", + "version": "1.0.0-beta.1", "license": "Apache-2.0", "devDependencies": { "@types/node": "^24.0.0", diff --git a/packages/codeupipe-compile-ts/package.json b/packages/codeupipe-compile-ts/package.json index 3bc853d..cfee3fc 100644 --- a/packages/codeupipe-compile-ts/package.json +++ b/packages/codeupipe-compile-ts/package.json @@ -1,6 +1,6 @@ { "name": "codeupipe-compile", - "version": "0.1.0-beta.1", + "version": "1.0.0-beta.1", "private": true, "description": "Writes a codeupipe pipeline as plain TypeScript with no import of codeupipe.", "license": "Apache-2.0", diff --git a/packages/codeupipe-lint-ts/README.md b/packages/codeupipe-lint-ts/README.md index 2516a24..5f4668b 100644 --- a/packages/codeupipe-lint-ts/README.md +++ b/packages/codeupipe-lint-ts/README.md @@ -1,7 +1,7 @@ # codeupipe-lint for TypeScript A linter for TypeScript code that uses codeupipe. It reads the source and -does not run it. It is a beta, version `0.1.0-beta.1`, and it is not on npm yet. +does not run it. It is a beta, version `1.0.0-beta.1`, and it is not on npm yet. The linter is a codeupipe pipeline: [src/lint-pipeline.ts](src/lint-pipeline.ts). It depends on `codeupipe` and on the `typescript` package, which it uses to diff --git a/packages/codeupipe-lint-ts/package-lock.json b/packages/codeupipe-lint-ts/package-lock.json index 9025973..c00e595 100644 --- a/packages/codeupipe-lint-ts/package-lock.json +++ b/packages/codeupipe-lint-ts/package-lock.json @@ -1,12 +1,12 @@ { "name": "codeupipe-lint", - "version": "0.1.0-beta.1", + "version": "1.0.0-beta.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "codeupipe-lint", - "version": "0.1.0-beta.1", + "version": "1.0.0-beta.1", "license": "Apache-2.0", "dependencies": { "codeupipe": "file:../codeupipe-ts", @@ -24,7 +24,7 @@ }, "../codeupipe-ts": { "name": "codeupipe", - "version": "0.1.0-beta.1", + "version": "1.0.0-beta.1", "license": "Apache-2.0", "devDependencies": { "@types/node": "^24.0.0", diff --git a/packages/codeupipe-lint-ts/package.json b/packages/codeupipe-lint-ts/package.json index 71ecde1..6d5f607 100644 --- a/packages/codeupipe-lint-ts/package.json +++ b/packages/codeupipe-lint-ts/package.json @@ -1,6 +1,6 @@ { "name": "codeupipe-lint", - "version": "0.1.0-beta.1", + "version": "1.0.0-beta.1", "private": true, "description": "A linter for TypeScript code that uses codeupipe.", "license": "Apache-2.0", diff --git a/packages/codeupipe-ts/README.md b/packages/codeupipe-ts/README.md index 5058298..813425e 100644 --- a/packages/codeupipe-ts/README.md +++ b/packages/codeupipe-ts/README.md @@ -4,7 +4,7 @@ codeupipe is a library for writing a program as a pipeline of small steps. This is the TypeScript runtime. It has no dependencies. The built JavaScript runs in a browser and in Node. -It is a beta, version `0.1.0-beta.1`, and it is not on npm yet. It implements the same contract as the Python +It is a beta, version `1.0.0-beta.1`, and it is not on npm yet. It implements the same contract as the Python package, and the same 27 conformance cases judge it: [conformance/API.md](../../conformance/API.md). diff --git a/packages/codeupipe-ts/package-lock.json b/packages/codeupipe-ts/package-lock.json index bc962ca..d3fc45f 100644 --- a/packages/codeupipe-ts/package-lock.json +++ b/packages/codeupipe-ts/package-lock.json @@ -1,12 +1,12 @@ { "name": "codeupipe", - "version": "0.1.0-beta.1", + "version": "1.0.0-beta.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "codeupipe", - "version": "0.1.0-beta.1", + "version": "1.0.0-beta.1", "license": "Apache-2.0", "devDependencies": { "@types/node": "^24.0.0", diff --git a/packages/codeupipe-ts/package.json b/packages/codeupipe-ts/package.json index f73ff54..102dfe4 100644 --- a/packages/codeupipe-ts/package.json +++ b/packages/codeupipe-ts/package.json @@ -1,6 +1,6 @@ { "name": "codeupipe", - "version": "0.1.0-beta.1", + "version": "1.0.0-beta.1", "private": true, "description": "A TypeScript library for writing a program as a pipeline of small steps.", "license": "Apache-2.0",