@@ -514,8 +514,10 @@ def modify(
514514 ) -> Optional [Union [AnyResource , dict ]]:
515515 raise NotImplementedError ()
516516
517- def _discover (self , resource_types , schemas ):
518- self .resource_types = resource_types
517+ def build_resource_models (
518+ self , resource_types : Collection [ResourceType ], schemas : Collection [Schema ]
519+ ) -> tuple [type [Resource ]]:
520+ """Build models from server objects."""
519521 resource_types_by_schema = {
520522 resource_type .schema_ : resource_type for resource_type in resource_types
521523 }
@@ -534,7 +536,7 @@ def _discover(self, resource_types, schemas):
534536 model = model [tuple (extensions )]
535537 resource_models .append (model )
536538
537- self . resource_models = tuple (resource_models )
539+ return tuple (resource_models )
538540
539541
540542class BaseSyncSCIMClient (BaseSCIMClient ):
@@ -797,7 +799,9 @@ def discover(self):
797799 """Dynamically discover the server models :class:`~scim2_models.Schema` and :class:`~scim2_models.ResourceType`."""
798800 resource_types_response = self .query (ResourceType )
799801 schemas_response = self .query (Schema )
800- self ._discover (resource_types_response .resources , schemas_response .resources )
802+ self .resource_types = resource_types_response .resources
803+ schemas = schemas_response .resources
804+ self .resource_models = self .build_resource_models (self .resource_types , schemas )
801805
802806
803807class BaseAsyncSCIMClient (BaseSCIMClient ):
@@ -1062,4 +1066,6 @@ async def discover(self):
10621066 schemas_task = asyncio .create_task (self .query (Schema ))
10631067 resource_types_response = await resources_task
10641068 schemas_response = await schemas_task
1065- self ._discover (resource_types_response .resources , schemas_response .resources )
1069+ self .resource_types = resource_types_response .resources
1070+ schemas = schemas_response .resources
1071+ self .resource_models = self .build_resource_models (self .resource_types , schemas )
0 commit comments