scim2-client 0.7.0__tar.gz → 0.7.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: scim2-client
3
- Version: 0.7.0
3
+ Version: 0.7.2
4
4
  Summary: Pythonically build SCIM requests and parse SCIM responses
5
5
  Keywords: scim,scim2,provisioning,rfc7643,rfc7644,httpx,api
6
6
  Author: Yaal Coop
@@ -246,6 +246,17 @@ Provisioning is the action of managing a set of resources across different servi
246
246
  SCIM is often used between Identity Providers and applications in completion of standards like OAuth2 and OpenID Connect.
247
247
  It allows users and groups creations, modifications and deletions to be synchronized between applications.
248
248
 
249
+ ## Features
250
+
251
+ - **CRUD Operations**: `create`, `query`, `replace`, `delete` methods for SCIM resources
252
+ - **PATCH Support**: Partial resource modifications with `add`, `remove` and `replace` operations
253
+ - **Server Discovery**: Automatic retrieval of `ServiceProviderConfig`, `ResourceTypes` and `Schemas`
254
+ - **Search & Filtering**: Support for SCIM filters, sorting, pagination and attribute selection
255
+ - **Sync & Async**: Both synchronous and asynchronous clients available
256
+ - **Multiple HTTP Engines**: Built-in support for [httpx](https://github.com/encode/httpx) (sync/async) and [werkzeug](https://werkzeug.palletsprojects.com/) (testing). Adaptable to any network engine.
257
+ - **Request & Response Validation**: Automatic payload validation against SCIM schemas
258
+ - **Error Handling**: Structured exceptions for network, request and response errors
259
+
249
260
  ## Installation
250
261
 
251
262
  ```shell
@@ -14,6 +14,17 @@ Provisioning is the action of managing a set of resources across different servi
14
14
  SCIM is often used between Identity Providers and applications in completion of standards like OAuth2 and OpenID Connect.
15
15
  It allows users and groups creations, modifications and deletions to be synchronized between applications.
16
16
 
17
+ ## Features
18
+
19
+ - **CRUD Operations**: `create`, `query`, `replace`, `delete` methods for SCIM resources
20
+ - **PATCH Support**: Partial resource modifications with `add`, `remove` and `replace` operations
21
+ - **Server Discovery**: Automatic retrieval of `ServiceProviderConfig`, `ResourceTypes` and `Schemas`
22
+ - **Search & Filtering**: Support for SCIM filters, sorting, pagination and attribute selection
23
+ - **Sync & Async**: Both synchronous and asynchronous clients available
24
+ - **Multiple HTTP Engines**: Built-in support for [httpx](https://github.com/encode/httpx) (sync/async) and [werkzeug](https://werkzeug.palletsprojects.com/) (testing). Adaptable to any network engine.
25
+ - **Request & Response Validation**: Automatic payload validation against SCIM schemas
26
+ - **Error Handling**: Structured exceptions for network, request and response errors
27
+
17
28
  ## Installation
18
29
 
19
30
  ```shell
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "scim2-client"
7
- version = "0.7.0"
7
+ version = "0.7.2"
8
8
  description = "Pythonically build SCIM requests and parse SCIM responses"
9
9
  authors = [{name="Yaal Coop", email="contact@yaal.coop"}]
10
10
  license = {file = "LICENSE.md"}
@@ -290,8 +290,6 @@ class SCIMClient:
290
290
  if raise_scim_errors is None:
291
291
  raise_scim_errors = self.raise_scim_errors
292
292
 
293
- self._check_content_types(headers)
294
-
295
293
  # In addition to returning an HTTP response code, implementers MUST return
296
294
  # the errors in the body of the response in a JSON format
297
295
  # https://datatracker.ietf.org/doc/html/rfc7644.html#section-3.12
@@ -301,6 +299,7 @@ class SCIMClient:
301
299
  response_payload = None
302
300
 
303
301
  else:
302
+ self._check_content_types(headers)
304
303
  response_payload = payload
305
304
 
306
305
  if check_response_payload is None:
@@ -424,6 +423,7 @@ class SCIMClient:
424
423
  elif isinstance(search_request, SearchRequest):
425
424
  payload = search_request.model_dump(
426
425
  exclude_unset=True,
426
+ exclude={"schemas"},
427
427
  scim_ctx=Context.RESOURCE_QUERY_REQUEST,
428
428
  )
429
429
 
File without changes