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
Apparently github changed API to deprecate "contexts" and replace it with "checks".
However they return both in query and error on update if both are present (nb. anonymized):
Traceback (most recent call last):
File "main.py", line 64, in <module>
gh_branch.protection().update(enforce_admins=False)
File "env/lib/python3.10/site-packages/github3/decorators.py", line 24, in auth_wrapper
return func(self, *args, **kwargs)
File "env/lib/python3.10/site-packages/github3/repos/branch.py", line 465, in update
json = self._json(self._put(self._api, json=edit), 200)
File "env/lib/python3.10/site-packages/github3/models.py", line 161, in _json
raise exceptions.error_for(response)
github3.exceptions.UnprocessableEntity: 422 Invalid request.
No subschema in "anyOf" matched.
More than one subschema in "oneOf" matched.
Not all subschemas of "allOf" matched.
For 'anyOf/1', {"url"=>"https://.../branches/master/protection/required_status_checks", "strict"=>true, "contexts"=>["my ci check"], "contexts_url"=>"https://.../branches/master/protection/required_status_checks/contexts", "checks"=>[{"context"=>"my ci check", "app_id"=>nil}]} is not a null.
Our workaround is when making updates to other parameters, to pass in the retrieved required_status_checks with the extra "checks" field stripped, e.g. (yes we should do this with as_dict(), I was in a rush):
Fixessigmavirus24#1112
Since ~Q1 2022, branch_protection has an additional "checks" field which deprecates "contexts":
"contexts": list[str]
"checks": list[TypedDict("checks", context=str, app_id=int | None)]
The GitHub API returns both and then errors if both are present on update.
So, when making unrelated changes, check whether both are present and if so remove the "contexts" field, on the assumption that "checks" contains all the same data plus possibly app_id fields that we should not overwrite with nil.
Does this look OK? Happy to add polish, tests etc. if it's the right approach.
integrations/terraform-provider-github#1147
google/go-github#2274
Apparently github changed API to deprecate "contexts" and replace it with "checks".
However they return both in query and error on update if both are present (nb. anonymized):
Our workaround is when making updates to other parameters, to pass in the retrieved required_status_checks with the extra "checks" field stripped, e.g. (yes we should do this with as_dict(), I was in a rush):
The text was updated successfully, but these errors were encountered: