You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
_clean_json_payload drops nested None, so update() cannot remove a build tag or clear a field #1136
Every update and create body goes through _clean_json_payload (_resource_client.py#L154-L187, called at #L253, #L290, #L307). It removes None at every nesting level and then removes dicts that end up empty.
The ActorClient.update() docstring says a tag is removed by setting it to None, e.g. {'latest': {'buildId': 'abc'}, 'beta': None} (actor.py#L180-L182). The API docs agree: taggedBuilds maps a tag to a build object or null. In the client, 'beta': None is stripped before sending. actor.update(tagged_builds={'beta': None}) sends {}, the API changes nothing, and the call returns without error.
The same filter means no update can send null to clear a field, such as a run's generalAccess (run.py#L78-L105). Empty lists are also turned into None before the filter, so schedule.update(actions=[]) and version.update(env_vars=[], source_files=[]) are silently ignored (schedule.py#L95, actor_version.py#L107-L110).
tagged_builds={'beta': None} sends {"taggedBuilds": {"beta": null}} and removes the tag. Drop None only at the top level of the payload (an unset argument), and keep None inside values the caller passed. An empty list the caller passed is sent as []. Clearing top-level fields to null needs a separate sentinel and is tracked in #1135.
Activity