Skip to content

Rename to goodmem-nlweb / goodmem_nlweb, release 0.3.0 - #5

Merged
bashareid merged 3 commits into
mainfrom
chore/rename-to-goodmem-nlweb-2026-09-29
Sep 29, 2026
Merged

bashareid merged 3 commits into
mainfrom
chore/rename-to-goodmem-nlweb-2026-09-29

Conversation

@bashareid

@bashareid bashareid commented Sep 29, 2026 •

Copy link
Copy Markdown
Collaborator

Renames this integration to the goodmem-<framework> naming used by goodmem-adk and goodmem-semantic-kernel, published inside the PAIR Systems (pairsysai) PyPI organisation. Version 0.3.0. The version is a minor bump because the import path change is breaking.

Before (main, 0.2.2) After (0.3.0)
Distribution nlweb-goodmem goodmem-nlweb
Import package nlweb_goodmem goodmem_nlweb
NLWeb import_path nlweb_goodmem goodmem_nlweb

What changes for users

  • Install: pip install goodmem-nlweb.
  • Breaking: from goodmem_nlweb import GoodMemRetrievalProvider, GoodMemObjectLookupProvider, upload_documents replaces the old import. There is no compatibility shim.
  • Breaking, NLWeb config: NLWeb imports the provider from the YAML import_path, so provider entries become:
    retrieval:
      default:
        import_path: goodmem_nlweb
        class_name: GoodMemRetrievalProvider
    (the same applies to object_storage.default).
  • Memory metadata keys stored on the GoodMem server (url, site, schema_json) are unchanged, so existing spaces read exactly as before.
  • nlweb-goodmem stays at 0.2.2 on PyPI.

Before merging

This repo has release-on-merge.yml: merging this PR publishes immediately. When CI passes on main, it tags the merge v0.3.0 and dispatches publish.yml, which uploads via Trusted Publishing. The pending publisher for goodmem-nlweb must exist on PyPI first, or the publish job fails.

In the pairsysai organisation on PyPI, go to Publishing and choose "Add a new pending publisher". Enter these values, read from this repo:

Field Value
PyPI project name goodmem-nlweb
Owner PAIR-Systems-Inc
Repository name goodmem_nlweb
Workflow name publish.yml
Environment name pypi

release-on-merge.yml reads name and version from pyproject.toml, so its PyPI check queries https://pypi.org/pypi/goodmem-nlweb/0.3.0/json. That URL returns 404 today, so the release will publish. The tag v0.3.0 does not exist yet.

Changes

  • src/nlweb_goodmem/ → src/goodmem_nlweb/ (git mv). All internal imports are updated.
  • pyproject.toml: name = "goodmem-nlweb", version = "0.3.0", hatch wheel packages and sdist include paths, and [tool.mypy] packages. __version__ = "0.3.0".
  • .github/workflows/ci.yml: the clean-env smoke test installs dist/goodmem_nlweb-*.whl and runs from goodmem_nlweb import ….
  • .github/workflows/publish.yml: environment URL https://pypi.org/project/goodmem-nlweb/, plus the pending-publisher setup comment.
  • README.md: title, install line, the YAML import_path (retrieval and object_storage) and the Python samples.
  • Docstrings in __init__.py and provider.py carry the YAML import_path: goodmem_nlweb. tests/test_config.py loads those docstrings and the README YAML with nlweb-core's own load_config / initialize_providers, so the new import_path is exercised for real.
  • Tests: imports, the caplog logger name (goodmem_nlweb.provider; the module uses logging.getLogger(__name__)), the throwaway e2e space label, and the regression-suite docstring.
  • examples/nlweb_provider.py: import.
  • CHANGELOG.md: one 0.3.0 entry (renamed; breaking: update imports and import_path). Older entries keep the old name as history.

Grep for nlweb[-_. ]?goodmem (case-insensitive) has 5 hits, all in CHANGELOG.md: the 0.3.0 entry names the old import in its "update from" instructions (2 lines), and 3 lines in older history entries are left as written.

What failed before, and how it behaves now

Before (main):

$ python -m build -w && ls dist
nlweb_goodmem-0.2.2-py3-none-any.whl
$ pip install dist/nlweb_goodmem-0.2.2-py3-none-any.whl && python -c "import goodmem_nlweb"
ModuleNotFoundError: No module named 'goodmem_nlweb'
$ pip install goodmem-nlweb
ERROR: No matching distribution found for goodmem-nlweb

After (this branch):

$ python -m build && ls dist
goodmem_nlweb-0.3.0-py3-none-any.whl  goodmem_nlweb-0.3.0.tar.gz
$ unzip -p dist/goodmem_nlweb-0.3.0-py3-none-any.whl goodmem_nlweb-0.3.0.dist-info/METADATA | grep -E '^(Name|Version):'
Name: goodmem-nlweb
Version: 0.3.0
$ unzip -l dist/goodmem_nlweb-0.3.0-py3-none-any.whl   # top-level entries: goodmem_nlweb/ (10 files), goodmem_nlweb-0.3.0.dist-info/ (4)
$ twine check dist/*            # PASSED x2
$ python -m venv .venv-smoke && .venv-smoke/bin/pip install dist/goodmem_nlweb-*.whl
$ .venv-smoke/bin/python -c "import goodmem_nlweb; print(goodmem_nlweb.__version__)"
0.3.0
$ .venv-smoke/bin/python -c "import nlweb_goodmem"
ModuleNotFoundError: No module named 'nlweb_goodmem'

pip install goodmem-nlweb works from PyPI once this is merged and published.

Local CI, run the way ci.yml runs it from a fresh venv: ruff check src tests examples is clean, mypy is clean (9 files), and pytest -m "not integration" gives 194 passed, 1 skipped. Also run: bash -n on every run: block of the three workflows, and the gm_ key scan over the tree and the diff (both clean).

🤖 Generated with Claude Code

bashareid and others added 3 commits September 29, 2026 21:39
The package moves into the PAIR Systems (pairsysai) organization on PyPI,
under the new distribution name goodmem-nlweb. The import package stays
nlweb_goodmem, so imports and NLWeb's `import_path: nlweb_goodmem` config
entries are unchanged. nlweb-goodmem stays at 0.2.2.

- pyproject: name goodmem-nlweb, version 0.2.3; __version__ 0.2.3
- ci.yml: smoke-install dist/goodmem_nlweb-*.whl
- publish.yml: environment url and pending-publisher setup comment
- README: install line and a note on the old name; CHANGELOG 0.2.3
- test_e2e: throwaway space label follows the new name

release-on-merge.yml reads the name from pyproject.toml, so its PyPI
check follows the rename without an edit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Both distributions ship the nlweb_goodmem import package, so having both
installed makes them overwrite each other's files; uninstalling the old
one afterwards removes nlweb_goodmem entirely (ModuleNotFoundError).
README and CHANGELOG now say to run
`pip uninstall -y nlweb-goodmem && pip install goodmem-nlweb`.

CHANGELOG states the reason for the rename: the move into the PAIR
Systems PyPI organisation under the goodmem-<framework> naming used by
goodmem-adk and goodmem-semantic-kernel.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Distribution goodmem-nlweb now imports as goodmem_nlweb, the
goodmem-<framework> / goodmem_<framework> naming used by goodmem-adk and
goodmem-semantic-kernel. Breaking: `import nlweb_goodmem` becomes
`import goodmem_nlweb`, and NLWeb provider entries change from
`import_path: nlweb_goodmem` to `import_path: goodmem_nlweb`.

- git mv src/nlweb_goodmem -> src/goodmem_nlweb; every import, the hatch
  wheel/sdist paths, [tool.mypy] packages, the CI smoke import, the
  caplog logger name, README code and YAML samples, and the docstring
  YAML that tests/test_config.py loads through nlweb-core
- version 0.3.0 (minor: the import path change is breaking)
- README: drop the "previously published as" / uninstall note
- CHANGELOG: one 0.3.0 entry replaces the unreleased 0.2.3 entry;
  older entries keep the old import name as history

Metadata keys stored on the server (url, site, schema_json) are
unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@bashareid bashareid changed the title Publish as goodmem-nlweb 0.2.3 (was nlweb-goodmem) Rename to goodmem-nlweb / goodmem_nlweb, release 0.3.0 Sep 29, 2026
@bashareid
bashareid merged commit ab5996d into main Sep 29, 2026
7 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