Skip to content

Drop the inert timeseries securityCategories field - #107

Merged
JosteinGj merged 1 commit into
mainfrom
chore/remove-timeseries-security-categories
Aug 28, 2026
Merged

Drop the inert timeseries securityCategories field#107
JosteinGj merged 1 commit into
mainfrom
chore/remove-timeseries-security-categories

Conversation

@JosteinGj

Copy link
Copy Markdown
Contributor

Mirrors the api's chore/remove-timeseries-security-categories. The field was stored, writable and returned, but nothing read it: no part in access control (dataset grants are Keycloak organization groups), no query filtering on it, and the backend silently dropped any id that did not already exist - which is why the four update tests covering it were xfail rather than assertions.

Gone from TimeSeries and TimeSeriesUpdateFields, from the PyO3 constructor, getters and update form, from the stubs, and from the tests. ListFieldU64 goes with it: TimeSeriesUpdateFields.securityCategories was its only field on either side, so the Python wrapper class had nothing left to type. test_resource_label_updates' wrapper-invariant loop takes ListFieldIdCollection in its place rather than losing a case. Also corrects EventUpdate's docstring, which named ListFieldU64 for a list that has used ListFieldIdCollection for a while.

Files keep their own securityCategories (INode) - separate entity, separate question.

Safe to land ahead of the api: the api defaults the absent field, and nothing here sets deny_unknown_fields, so a response that still carries it still deserializes. It is the old SDK against the new api that 400s, so this wants to ship first.

Claude-Session: https://claude.ai/code/session_01SFK7fDtg6QQrZdXsFBzGUv

Mirrors the api's chore/remove-timeseries-security-categories. The field was
stored, writable and returned, but nothing read it: no part in access control
(dataset grants are Keycloak organization groups), no query filtering on it,
and the backend silently dropped any id that did not already exist - which is
why the four update tests covering it were xfail rather than assertions.

Gone from TimeSeries and TimeSeriesUpdateFields, from the PyO3 constructor,
getters and update form, from the stubs, and from the tests. ListFieldU64
goes with it: TimeSeriesUpdateFields.securityCategories was its only field on
either side, so the Python wrapper class had nothing left to type.
test_resource_label_updates' wrapper-invariant loop takes ListFieldIdCollection
in its place rather than losing a case. Also corrects EventUpdate's docstring,
which named ListFieldU64 for a list that has used ListFieldIdCollection for a
while.

Files keep their own securityCategories (INode) - separate entity, separate
question.

Safe to land ahead of the api: the api defaults the absent field, and nothing
here sets deny_unknown_fields, so a response that still carries it still
deserializes. It is the old SDK against the new api that 400s, so this wants
to ship first.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SFK7fDtg6QQrZdXsFBzGUv
@JosteinGj
JosteinGj requested a review from olavgg August 28, 2026 07:16
@JosteinGj
JosteinGj merged commit 0d88c4a into main Aug 28, 2026
18 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