Repository navigation
feat(client)!: replace get() with get_manifest() and get_card() - #672
Merged
Merged
Conversation
This was referenced Nov 4, 2026
karhu
force-pushed
the
tnet-157/19-inspection
branch
from
November 5, 2026 07:24
1b579ac to
af5e917
Compare
karhu
force-pushed
the
tnet-157/19-inspection
branch
from
November 5, 2026 07:27
af5e917 to
5975888
Compare
karhu
force-pushed
the
tnet-157/19-inspection
branch
from
November 5, 2026 08:16
5975888 to
88142b8
Compare
karhu
force-pushed
the
tnet-157/19-inspection
branch
2 times, most recently
from
November 5, 2026 14:05
f18a705 to
4ed8639
Compare
karhu
force-pushed
the
tnet-157/19-inspection
branch
from
November 7, 2026 20:26
3a8d5d1 to
10367cf
Compare
karhu
force-pushed
the
tnet-157/19-inspection
branch
from
November 7, 2026 22:40
10367cf to
12b9cc4
Compare
TimoStoff
reviewed
Nov 9, 2026
karhu
force-pushed
the
tnet-157/19-inspection
branch
3 times, most recently
from
November 9, 2026 13:56
3c2bb60 to
1d014dc
Compare
karhu
force-pushed
the
tnet-157/19-inspection
branch
from
November 9, 2026 16:18
1d014dc to
88e50dd
Compare
TimoStoff
approved these changes
Nov 10, 2026
karhu
force-pushed
the
tnet-157/19-inspection
branch
from
November 10, 2026 14:39
88e50dd to
55453be
Compare
karhu
force-pushed
the
tnet-157/19-inspection
branch
from
November 10, 2026 15:50
55453be to
017579c
Compare
karhu
force-pushed
the
tnet-157/19-inspection
branch
from
November 10, 2026 16:24
017579c to
761dfd1
Compare
There was a problem hiding this comment.
Code review completed
Nothing new to post: everything this review found is already covered by existing comments on this pull request or didn't merit a separate one.
Still open from earlier reviews (1):
- 🔴
packages/timenet/src/timenet/client.py:528—Users with a connector installed lose the listed manifest of gated releases. get_manifest() and timenet info raise Time…
If you have decided not to act on one of these findings, resolve its thread (a reply alone leaves it open) and the next review stops counting it. To review this commit again now, use Re-run on its "Claude Code Review" check.
TimeNet.get() asked one registry of the list: the first registry that is not the local registry. So its manifest could belong to another release than the release that open() reads. It also knew nothing of a release that only an installed connector provides. get_manifest() returns the manifest of the release that open() reads. It resolves the release through the whole list, and it reads only the manifest. If a registry lists a release but does not serve its files, the call returns the listed manifest, so the access pages stay visible. A release gets its manifest when it is built. So for a release that only an installed connector provides, get_manifest() raises the new TimeNetNotBuiltError. The error holds the release and the card of the connector, and it writes its own message. download() raises the same error for such a release. get_card() returns the card of the release, from its manifest or from the installed connector. The two methods take org/name@version like open(), and they add the hints of open(). open() and the two methods share these hints in one private context manager. raise_not_found() in the read coordinator raises the error for a release that no source provides. The plan of a read and the client use it, so both raise the same error. timenet info calls get_manifest(). For a release that only an installed connector provides, it shows the card from the error and the build command that adds the schema and the counts. So info resolves the release once. The command repeats the --local-registry and --remote-registry that info got. BREAKING CHANGE: TimeNet.get() is gone. get_manifest() returns the manifest of the release that open() reads and raises TimeNetNotBuiltError for a release that only a connector provides. get_card() returns its card. Part of TNET-157.
Shorter docstrings for the code that this change adds or changes. Part of TNET-157.
Drop tests that cannot fail or repeat other tests, and sharpen the rest. Part of TNET-157.
karhu
force-pushed
the
tnet-157/19-inspection
branch
from
November 10, 2026 17:41
761dfd1 to
e1b635b
Compare
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 Stack
This stack covers refactoring the internal logic of how releases are resolved during read, download & build, in particular also in the context of parent releases / parent datasets. On top of that it refactors the public TimeNet APIs and CLI interfaces around these actions, to streamline the behavior across them.
This PR
TimeNet.get()is replaced byget_manifest()andget_card().timenet infousesget_manifest().Details
TimeNet.get()asked one registry of the list: the first registry that is not the store. So its manifest can belong to another release than the release thatopen()reads. It also knows nothing of a release that only an installed connector provides.get_manifest()returns the manifest of the release thatopen()reads. It resolves the release through the whole list and reads only the manifest. If a registry lists a release but does not serve its files, it returns the listed manifest, so the access pages stay visible.get_manifest()raises the newTimeNetNotBuiltError, which namesget_card()andtimenet.build().download()raises the same error for such a release.get_card()returns the card of the release, from its manifest or from the installed connector.org/name@versionlikeopen()and add its hints. They share the hints withopen()in one private context manager.raise_not_found()in the read coordinator, asopen()anddownload()do. So a missing release gives the same error in each of them.timenet infoshows the card and the build command for a release that only an installed connector provides. The build command repeats the--local-registryand--remote-registrythatinfogot.Design decisions
get_manifest()resolves through the whole list, because a manifest of another release than the one thatopen()reads is misleading.TimeNetNotBuiltErrorand not a manifest with missing fields, because the manifest does not exist before the build. The error names the two ways out.Breaking changes
TimeNet.get()is gone.get_manifest()returns the manifest of the release thatopen()reads and raisesTimeNetNotBuiltErrorfor a release that only a connector provides.get_card()returns its card.Stack
Changes later in the stack:
list()andsearch()still ask one registry through_catalog(). The next PR replaces them.Merge message