1- import copy
21import json
32import logging
43import traceback
@@ -435,7 +434,7 @@ def forbid_filter(request: Request):
435434 if "filter" in request .args :
436435 raise Forbidden
437436
438- def call_service_provider_config (self , request , ** kwargs ):
437+ def call_service_provider_config (self , request : Request , ** kwargs ):
439438 """Returns the ServiceProviderConfig."""
440439 self .forbid_filter (request )
441440 auth_scheme = (
@@ -467,25 +466,25 @@ def call_service_provider_config(self, request, **kwargs):
467466 ).model_dump ()
468467 )
469468
470- def call_resource_type (self , request , resource_type : str , ** kwargs ):
469+ def call_resource_type (self , request : Request , resource_type : str , ** kwargs ):
471470 """Returns a single resource type."""
472471 self .forbid_filter (request )
473472 if res := self .backend .get_resource_type (resource_type ):
474- cp = copy . copy ( res )
473+ cp = res . model_copy ( deep = True )
475474 cp .meta .location = request .url
476475 return self .make_response (cp .model_dump ())
477476 raise NotFound
478477
479- def call_schema (self , request , schema_id : str ):
478+ def call_schema (self , request : Request , schema_id : str ):
480479 """Returns a single schema."""
481480 self .forbid_filter (request )
482481 if res := self .backend .get_schema (schema_id ):
483- cp = copy . copy ( res )
482+ cp = res . model_copy ( deep = True )
484483 cp .meta .location = request .url
485484 return self .make_response (cp .model_dump ())
486485 raise NotFound
487486
488- def call_resource_types (self , request , ** kwargs ):
487+ def call_resource_types (self , request : Request , ** kwargs ):
489488 """Returns a ListResponse of all known resource types."""
490489 self .forbid_filter (request )
491490 results = self .backend .get_resource_types ()
@@ -497,7 +496,7 @@ def call_resource_types(self, request, **kwargs):
497496 ).model_dump ()
498497 return self .make_response (resp )
499498
500- def call_schemas (self , request , ** kwargs ):
499+ def call_schemas (self , request : Request , ** kwargs ):
501500 """Returns a ListResponse of all known schemas."""
502501 self .forbid_filter (request )
503502 results = self .backend .get_schemas ()
@@ -509,7 +508,7 @@ def call_schemas(self, request, **kwargs):
509508 ).model_dump ()
510509 return self .make_response (resp )
511510
512- def wsgi_app (self , request , environ ):
511+ def wsgi_app (self , request : Request , environ ):
513512 try :
514513 if environ .get ("PATH_INFO" , "" ).endswith (".scim" ):
515514 # RFC 7644, Section 3.8
0 commit comments