Skip to content

Commit 31e0273

Browse files
Add optional rejection_reason when rejecting a user access token (#2758)
* Add optional rejection_reason when rejecting a user access token * fix test --------- Co-authored-by: Celina Hanouti <[email protected]>
1 parent a0c8ee6 commit 31e0273

File tree

2 files changed

+24
-6
lines changed

2 files changed

+24
-6
lines changed

src/huggingface_hub/hf_api.py

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8535,7 +8535,13 @@ def accept_access_request(
85358535

85368536
@validate_hf_hub_args
85378537
def reject_access_request(
8538-
self, repo_id: str, user: str, *, repo_type: Optional[str] = None, token: Union[bool, str, None] = None
8538+
self,
8539+
repo_id: str,
8540+
user: str,
8541+
*,
8542+
repo_type: Optional[str] = None,
8543+
rejection_reason: Optional[str],
8544+
token: Union[bool, str, None] = None,
85398545
) -> None:
85408546
"""
85418547
Reject an access request from a user for a given gated repo.
@@ -8554,6 +8560,8 @@ def reject_access_request(
85548560
repo_type (`str`, *optional*):
85558561
The type of the repo to reject access request for. Must be one of `model`, `dataset` or `space`.
85568562
Defaults to `model`.
8563+
rejection_reason (`str`, *optional*):
8564+
Optional rejection reason that will be sent to the user (max 200 characters).
85578565
token (Union[bool, str, None], optional):
85588566
A valid user access token (string). Defaults to the locally saved
85598567
token, which is the recommended method for authentication (see
@@ -8573,7 +8581,9 @@ def reject_access_request(
85738581
[`HTTPError`](https://requests.readthedocs.io/en/latest/api/#requests.HTTPError):
85748582
HTTP 404 if the user access request is already in the rejected list.
85758583
"""
8576-
self._handle_access_request(repo_id, user, "rejected", repo_type=repo_type, token=token)
8584+
self._handle_access_request(
8585+
repo_id, user, "rejected", repo_type=repo_type, rejection_reason=rejection_reason, token=token
8586+
)
85778587

85788588
@validate_hf_hub_args
85798589
def _handle_access_request(
@@ -8582,17 +8592,25 @@ def _handle_access_request(
85828592
user: str,
85838593
status: Literal["accepted", "rejected", "pending"],
85848594
repo_type: Optional[str] = None,
8595+
rejection_reason: Optional[str] = None,
85858596
token: Union[bool, str, None] = None,
85868597
) -> None:
85878598
if repo_type not in constants.REPO_TYPES:
85888599
raise ValueError(f"Invalid repo type, must be one of {constants.REPO_TYPES}")
85898600
if repo_type is None:
85908601
repo_type = constants.REPO_TYPE_MODEL
85918602

8603+
payload = {"user": user, "status": status}
8604+
8605+
if rejection_reason is not None:
8606+
if status != "rejected":
8607+
raise ValueError("`rejection_reason` can only be passed when rejecting an access request.")
8608+
payload["rejectionReason"] = rejection_reason
8609+
85928610
response = get_session().post(
85938611
f"{constants.ENDPOINT}/api/{repo_type}s/{repo_id}/user-access-request/handle",
85948612
headers=self._build_hf_headers(token=token),
8595-
json={"user": user, "status": status},
8613+
json=payload,
85968614
)
85978615
hf_raise_for_status(response)
85988616

tests/test_hf_api.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4113,7 +4113,7 @@ def test_access_requests_normal_usage(self) -> None:
41134113
assert requests[0].username == OTHER_USER
41144114

41154115
# Reject access
4116-
self._api.reject_access_request(self.repo_id, OTHER_USER)
4116+
self._api.reject_access_request(self.repo_id, OTHER_USER, rejection_reason="This is a rejection reason")
41174117
requests = self._api.list_pending_access_requests(self.repo_id)
41184118
assert len(requests) == 0 # not pending anymore
41194119
requests = self._api.list_rejected_access_requests(self.repo_id)
@@ -4139,9 +4139,9 @@ def test_access_request_error(self):
41394139
self._api.accept_access_request(self.repo_id, OTHER_USER)
41404140

41414141
# Cannot reject to already rejected
4142-
self._api.reject_access_request(self.repo_id, OTHER_USER)
4142+
self._api.reject_access_request(self.repo_id, OTHER_USER, rejection_reason="This is a rejection reason")
41434143
with self.assertRaises(HTTPError):
4144-
self._api.reject_access_request(self.repo_id, OTHER_USER)
4144+
self._api.reject_access_request(self.repo_id, OTHER_USER, rejection_reason="This is a rejection reason")
41454145

41464146
# Cannot cancel to already cancelled
41474147
self._api.cancel_access_request(self.repo_id, OTHER_USER)

0 commit comments

Comments
 (0)