Repository navigation
Prepare the deprecation shim for arcadedb-embedded (26.11.1): points to arcadedb, the native build - #512
Conversation
|
Fixes finding F1 of the migration runbook (commit d5392c1): the old Checks run locally: This PR stays parked. |
|
Pushed 2d6bbaf: the shims now follow the final package names. PyPI
The PR stays open and not merged, draft state unchanged. |
|
Superseded: the earlier layout-v2 comment above (arcadedb-embedded to arcadedb-jvm, arcadedb-embedded-native to arcadedb) no longer applies. Layout v3 is pushed (f038171, f759969) and the PR body is rewritten for it: |
…ive (26.11.1) Two pure-Python shim distributions under bindings/python/deprecation/ that depend on the new packages (arcadedb, arcadedb-native) at the same version, warn once with a FutureWarning at import, and re-export the new module with its submodules aliased. A build script (uv build, no upload), a test against a stub arcadedb module, the migration guide, deprecation notices in the README and the docs index, and the cutover steps. The real package in bindings/python/src is unchanged. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…int) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…env) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…b-embedded-native package (finding F1) The old arcadedb-embedded-native wheel contains only the package arcadedb_native (checked on 26.10.2.dev1), but the shim shipped only arcadedb_embedded. Someone who upgraded and ran `import arcadedb_native` got a bare ModuleNotFoundError, with no warning and no pointer to arcadedb-native. - arcadedb-embedded-native now ships arcadedb_native next to arcadedb_embedded (kept for anyone who aliased it): the same shared body, so one FutureWarning, then the arcadedb module with submodules. - The warning names the module that was imported: "write `import arcadedb` where you wrote `import arcadedb_native`" (it was hard-coded to arcadedb_embedded). The text for arcadedb_embedded is unchanged. - The alias finder is now keyed on the pair (new module, old name), so importing both old names in one process aliases the submodules of each; before, the second name got none. - Tests: the shared-body check covers all three files; the wheel contents, warning, and attribute and submodule tests run per (shim, module); a new test imports both old names in one process. The new tests fail on the old shims with ModuleNotFoundError: No module named 'arcadedb_native'. - README, MIGRATION.md and deprecation/README.md name arcadedb_native. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…tive to arcadedb (final package names) The final names are PyPI `arcadedb` = the native package and `arcadedb-jvm` = the JVM package. The shims now follow that, so nobody is moved from the JVM build to the native one by following the old name. - arcadedb-embedded (the old JVM package) depends on arcadedb-jvm==26.11.1 (extras vector, arrow, pandas, polars forwarded to arcadedb-jvm), with "Replaced by" https://pypi.org/project/arcadedb-jvm/. Its warning says `pip install arcadedb-jvm`, that it is the same JVM build (so nothing changes at run time), and that `arcadedb` is the native build. - arcadedb-embedded-native depends on arcadedb==26.11.1 (it was arcadedb-native), with "Replaced by" https://pypi.org/project/arcadedb/. Its warning says `pip install arcadedb`. - build_shims.py: TARGETS is now the one table that says where each old name points, and IMPORT_NAME is the one assumption behind it (both new packages provide the import name `arcadedb`; neither has a real release yet). check_target() runs before every build and fails when a shim's pyproject.toml (name, description, dependencies, extras, Replaced by URL) or its _NEW_DIST and _NEW_MODULE constants disagree with the table. - The shim __init__ files take the module to re-export from a new _NEW_MODULE constant and print a per-shim _NOTE; the shared body is still identical in all three and still checked by the tests. - README of both shims (the PyPI descriptions), MIGRATION.md, deprecation/README.md (cutover steps: arcadedb-jvm and arcadedb must exist at 26.11.1 first; the native shim waits for a final arcadedb), the notices in the root README.md and docs/index.md, release.md and testing.md state the new mapping. - Tests (22, were 16): the JVM shim requires arcadedb-jvm and not arcadedb, the native shim requires arcadedb and not arcadedb-jvm or arcadedb-native; extras, Replaced by URL and PyPI README install lines; the warning text per shim; TARGETS equals the decided mapping; check_target() refuses a shim pointed at the other package or another module name. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ts to arcadedb (the native build) Two decisions of 2026-10-25 replace the mapping of the previous commit: - arcadedb-embedded-native gets no shim. Its PyPI project has no files and will be archived, so there is nothing to redirect. The shim folder, the arcadedb_native module, its tests and its documentation are gone, and build_shims.py builds one shim. - arcadedb-embedded (the old JVM package) now depends on `arcadedb==26.11.1`, the NATIVE build, re-exports it as arcadedb_embedded and warns once (FutureWarning) in plain words: the package is now `arcadedb`, which is the native build and runs without a JVM; for the JVM build install `arcadedb-jvm`; the Which package? page of the arcadedb-python documentation is linked. The README (the PyPI description) and MIGRATION.md say the same. - The extras are forwarded to `arcadedb`; the old `vector` extra (numpy) maps to the `numpy` extra of `arcadedb`, which has no `vector` (EXTRAS in build_shims.py is now an old-to-new mapping, and check_target() checks it). - deprecation/README.md and the root README state that this shim publishes only after the native `arcadedb` 26.11.1 FINAL exists (the pin `arcadedb==26.11.1` does not match a devN release). Tests (12, were 22; red before the change, green after): the shim requires `arcadedb` and not `arcadedb-jvm`, extras mapping and Replaced by URL, the PyPI README says arcadedb is the native build and names `arcadedb-jvm` with the Which package? link, the warning text, a guard that no native shim or arcadedb_native module comes back, TARGETS equals the decided mapping, check_target() refuses a shim pointed at arcadedb-jvm or another module name. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…s, say the runtime change plainly, note that arcadedb-embedded-native is archived - build_shims.py: NATIVE_EXTRAS is the one place that lists the extras of the real native `arcadedb` wheel (numpy, arrow, pandas, polars; source ArcadeData/arcadedb-python, branch native-two-dist, commit 56aab39, native/wheel/pyproject.toml, not the root pyproject.toml that builds arcadedb-jvm). check_target() fails when the shim forwards anything else, or when EXTRAS no longer covers that set, and when the warning stops naming `pip install arcadedb-jvm`. JVM_DIST names the JVM package; the comments describe layout v3. - The FutureWarning, the PyPI README and the project description now say plainly that this package was the JVM build and `arcadedb` is the native build, so the runtime changes for pip users of the old name; `arcadedb-jvm` (same `import arcadedb`) is the way to stay on the JVM build. - MIGRATION.md, deprecation/README.md, the shim README, the root README and release.md: `arcadedb-embedded-native` is archived (no further releases, no shim, no files on PyPI today), install `arcadedb`, whose import name is `arcadedb`, not `arcadedb_native`. The old test, dev and examples extras do not exist in `arcadedb`. - Tests (14): the forwarded extras equal the native set, a table or shim that forwards to an extra the native wheel lacks (or a native wheel that gains one) stops check_target(), the runtime-change sentence is in the warning and the README, the archived note is in the migration texts. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
e7b848d to
481b53d
Compare
…I README and MIGRATION.md User-facing text says uv add, never pip install (the project rule). The warning every remaining arcadedb-embedded user sees, the shim's PyPI README and MIGRATION.md now say uv add arcadedb, uv add arcadedb-jvm and uv remove arcadedb-embedded; the maintainer steps check PyPI with curl and verify the shim with uv run --with. build_shims.py's check and the tests follow the new wording. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What this prepares
The deprecation path for the old PyPI project
arcadedb-embedded, ready for the day the bindings move to ArcadeData/arcadedb-python. Decided 2026-10-25:arcadedb-embedded(the old JVM package) points toarcadedb, which is the NATIVE build;arcadedb-jvmis the JVM build and the warning names it for people who need it;arcadedb-embedded-nativeis archived: no further releases, no shim (its PyPI project has no files today), installarcadedbinstead, whose import name isarcadedb, notarcadedb_native;arcadedb-nativeis reserved with no files and nothing to publish. This changes the runtime for pip users ofarcadedb-embedded(it was the JVM build,arcadedbis the native build), and the warning, the README and MIGRATION.md say so plainly. Botharcadedbandarcadedb-jvmimport asarcadedb. Nothing is published or archived by this PR, and the real package inbindings/python/srcis untouched (no warning there: the benchmark harness and the mini stages keep importingarcadedb_embeddedfrom the real package until the split).This shim publishes only after the native
arcadedb26.11.1 FINAL exists. It pinsarcadedb==26.11.1, and a26.11.1.devNrelease does not satisfy that pin. This PR is parked: keep it a draft until then.bindings/python/deprecation/arcadedb-embedded/: a pure-Python shim distribution, version 26.11.1 (the final release of the name). It depends on exactlyarcadedb==26.11.1and forwards only extras that the nativearcadedbwheel defines (numpy,arrow,pandas,polars; source: ArcadeData/arcadedb-python, branchnative-two-dist,native/wheel/pyproject.toml):arrow,pandasandpolarskeep their names, the oldvectorextra (numpy) maps tonumpy, and the oldtest,devandexamplesextras are not forwarded becausearcadedbdoes not have them. Its PyPI README says: deprecated, the package is nowarcadedb(the native build, no JVM), for the JVM build installarcadedb-jvm, and links the Which package? page.import arcadedb_embeddedemits oneFutureWarning(visible by default, attributed to the importing line) in plain words: the package is nowarcadedb, which is the native build and runs without a JVM; for the JVM build installarcadedb-jvm; the Which package? link;import arcadedb; the new repo and docs. The description, the README and the warning say that the runtime changes (this package was the JVM build). It then re-exports the new module: the namesfrom arcadedb import *would bind, a module__getattr__for everything else, and submodule aliasing throughsys.modulesplus a small meta-path finder soarcadedb_embedded.x.yis the same module object asarcadedb.x.y, also for submodules the new package has not imported yet (never a second copy loaded from disk).bindings/python/deprecation/build_shims.py:uv buildof the shim (wheel and sdist, with the repo LICENSE in both), version checked withscripts/check_version.pyfirst,--check-pypifor the live next-version check. It never uploads.TARGETSis the one table of where the old name points,EXTRASthe old-to-new extras mapping,NATIVE_EXTRASthe set of extras the nativearcadedbwheel defines (with the source named in a comment), andIMPORT_NAMEthe one assumption behind them;check_target()runs before every build and refuses a shim whosepyproject.toml(name, description, dependencies, extras,Replaced byURL) or_NEW_DIST/_NEW_MODULEconstants disagree with the table, one that forwards to an extra outsideNATIVE_EXTRAS(or no longer covers it), and a warning that stops namingpip install arcadedb-jvm.bindings/python/tests/test_deprecation_shims.py(14 tests, about 1 s): builds the shim and checks the wheel ispy3-none-anywith only its import module, the pin onarcadedband notarcadedb-jvm, the extras mapping and that the forwarded extras equal the native set, theReplaced byURL, the PyPI README (native build,arcadedb-jvmnamed, Which package? linked), the warning text (including the sentence that the runtime changes), that the migration texts sayarcadedb-embedded-nativeis archived, that no native shim orarcadedb_nativemodule comes back, thatTARGETSholds the decided mapping and refuses a shim pointed atarcadedb-jvm, another module name, or an extra the native wheel lacks (or a native wheel that gains one), the version against the counting rule, and, against a stubarcadedbpackage, exactly oneFutureWarningper process and on stderr under the default filters, attribute access, private names, already-imported, not-yet-imported and nested submodules,__spec__of the shared module intact,ModuleNotFoundErrorandAttributeErrorfor missing names.conftest.pyleaves the file uncollected wheredeprecation/is absent. A last test asserts the real package carries no warning.README.mdandbindings/python/docs/index.md, andbindings/python/deprecation/MIGRATION.md(old to new install and import for the native and the JVM build, version mapping, what stays the same, what changes).testing.md,release.md(never push a26.11.1tag here, becauserelease-python-packages.ymlwould build and publish the real wheels underarcadedb-embedded),bindings/python/AGENTS.md. The cutover order, the publish options and a ready workflow are inbindings/python/deprecation/README.md.Merge timing
The notices say the bindings have moved, which is true only from the cutover day. Merge this PR once the native
arcadedb26.11.1 final is on PyPI (andarcadedb-jvm26.11.1, which the warning names; step 1 below), not before: merging earlier announces the move ahead of ArcadeData.Import name: what is assumed
arcadedbis assumed to provide the import namearcadedb(ArcadeData/arcadedb-python.notes/MIGRATION.md, packaging layout v3; both new packages share the module, and the native wheel'spyproject.tomlpackagessrc/arcadedb). It has no real release on PyPI yet (arcadedbandarcadedb-jvmare 0.0.1 placeholders), so this cannot be checked today. The assumption is in one place,IMPORT_NAMEinbuild_shims.py, plus the_NEW_MODULEconstant of the shim__init__.py;check_target()fails until the two agree. The Which package? URL in the warning (https://docs.arcadedb.com/arcadedb-python/which-package.html) follows from the Antora layout of ArcadeData/arcadedb-python and is not live until that site is published.Verified locally
pre-commitclean on the touched files.uv run --no-project --with pytest pytest --noconftest bindings/python/tests/test_deprecation_shims.py: 14 passed on Python 3.11, 3.12, 3.13 and 3.14. Two mutations of the shim'spyproject.toml(dependencies pointed atarcadedb-jvm; an extra the native wheel lacks) each turn the suite red; the file was restored afterwards.build_shims.py --check-pypi:26.11.1is the correct next version forarcadedb-embedded(12 published versions read, latest 26.10.2.post1).twine checkpasses on the wheel and the sdist.bandit==1.9.4 -c pyproject.toml -r bindings/python/deprecation --severity-level low --confidence-level lowreports only the existingassert spec.loader is not None(B101) inbuild_shims.py.Cutover checklist (do not run before the day)
arcadedb26.11.1 FINAL (andarcadedb-jvm26.11.1) from ArcadeData/arcadedb-python first (release-native.ymlandrelease-jvm.yml, trusted publishing). Confirmpip download --no-deps arcadedb==26.11.1works: the shim pins this exact version. If the first finalarcadedbis only a26.11.1.devN, do not publish the shim.python3 bindings/python/deprecation/build_shims.py --out dist --check-pypi && uvx twine check dist/*. Do not push any26.11.1tag in this repository.arcadedb-embedded(repositoryhumemai/arcadedb-embedded-python, workflowpublish-deprecation-shims.yml, environmentpypi), add the workflow given inbindings/python/deprecation/README.mdto.github/workflows/(and toFORK_GITHUB_ALLOWLISTinsync-upstream.shif another sync still runs), dispatch it once withpublishoff to see the build and checks, then withpublishon. Option B:uvx twine upload dist/*from a laptop with a project-scoped API token.pip install arcadedb-embedded==26.11.1(it must installarcadedb, the native build, notarcadedb-jvm), thenpython -W default -c "import arcadedb_embedded"shows one FutureWarning that namesarcadedb-jvm, andarcadedb_embedded.__version__reads 26.11.1..notes/bench/HANDOVER-26111-HUMEMAI-SITE.md). Edit the "Planned changes" paragraph of the rootAGENTS.md, which still says the move is not public.arcadedb-embedded-native(it has no files today; there is no shim and no further release).arcadedb-nativestays reserved with no files: no alias, nothing to publish.Check before the cutover
numpy,arrow,pandas,polarsofarcadedb:NATIVE_EXTRASinbuild_shims.pymust match the wheel that is released).arcadedb0.0.1 andarcadedb-jvm0.0.1 (placeholders that depend on an unpinnedarcadedb-embedded). The new releases supersede both, so no yank is needed.FutureWarningis the only warning; the earlier releases ofarcadedb-embeddedstay on PyPI untouched.🤖 Generated with Claude Code