3939 EdgeModelInfo ,
4040 MLPipeline ,
4141 ModeEnum ,
42+ PaginatedMLPipelineList ,
43+ PaginatedPrimingGroupList ,
4244 PaginatedRuleList ,
4345 PayloadTemplate ,
4446 PrimingGroup ,
@@ -477,7 +479,7 @@ def list_rules(self, page=1, page_size=10) -> PaginatedRuleList:
477479 :return: PaginatedRuleList containing the rules and pagination info
478480 """
479481 obj = self .actions_api .list_rules (page = page , page_size = page_size )
480- return PaginatedRuleList .parse_obj (obj .to_dict ())
482+ return PaginatedRuleList .model_validate (obj .to_dict ())
481483
482484 def delete_all_rules (self , detector : Union [None , str , Detector ] = None ) -> int :
483485 """
@@ -686,8 +688,7 @@ def create_text_recognition_detector( # noqa: PLR0913 # pylint: disable=too-man
686688 information like location, purpose, or related system IDs. You can retrieve this
687689 metadata later by calling `get_detector()`.
688690 :param priming_group_id: Optional ID of an existing PrimingGroup to associate with this detector.
689- PrimingGroup IDs are provided by Groundlight representatives. If you would like
690- to use a priming_group_id, please reach out to your Groundlight representative.
691+ You can create a PrimingGroup using the ExperimentalApi's create_priming_group method.
691692
692693 :return: The created Detector object
693694 """
@@ -708,7 +709,7 @@ def create_text_recognition_detector( # noqa: PLR0913 # pylint: disable=too-man
708709
709710 detector_creation_input .mode_configuration = mode_config
710711 obj = self .detectors_api .create_detector (detector_creation_input , _request_timeout = DEFAULT_REQUEST_TIMEOUT )
711- return Detector .parse_obj (obj .to_dict ())
712+ return Detector .model_validate (obj .to_dict ())
712713
713714 def _download_mlbinary_url (self , detector : Union [str , Detector ]) -> EdgeModelInfo :
714715 """
@@ -718,7 +719,7 @@ def _download_mlbinary_url(self, detector: Union[str, Detector]) -> EdgeModelInf
718719 if isinstance (detector , Detector ):
719720 detector = detector .id
720721 obj = self ._edge_model_download_api .get_model_urls (detector )
721- return EdgeModelInfo .parse_obj (obj .to_dict ())
722+ return EdgeModelInfo .model_validate (obj .to_dict ())
722723
723724 def download_mlbinary (self , detector : Union [str , Detector ], output_dir : str ) -> None :
724725 """
@@ -840,7 +841,9 @@ def edge_base_url(self) -> str:
840841 # ML Pipeline methods
841842 # ---------------------------------------------------------------------------
842843
843- def list_detector_pipelines (self , detector : Union [str , Detector ]) -> List [MLPipeline ]:
844+ def list_detector_pipelines (
845+ self , detector : Union [str , Detector ], page : int = 1 , page_size : int = 10
846+ ) -> PaginatedMLPipelineList :
844847 """
845848 Lists all ML pipelines associated with a given detector.
846849
@@ -852,25 +855,27 @@ def list_detector_pipelines(self, detector: Union[str, Detector]) -> List[MLPipe
852855 gl = ExperimentalApi()
853856 detector = gl.get_detector("det_abc123")
854857 pipelines = gl.list_detector_pipelines(detector)
855- for p in pipelines:
858+ for p in pipelines.results :
856859 if p.is_active_pipeline:
857860 print(f"Active pipeline: {p.id}, config={p.pipeline_config}")
858861
859862 :param detector: A Detector object or detector ID string.
860- :return: A list of MLPipeline objects for this detector.
863+ :param page: The page number to retrieve (1-based indexing).
864+ :param page_size: The number of pipelines to return per page.
865+ :return: PaginatedMLPipelineList containing the requested page of pipelines and pagination metadata.
861866 """
862867 detector_id = detector .id if isinstance (detector , Detector ) else detector
863868 try :
864- paginated_result = self .detectors_api .list_detector_pipelines (detector_id )
865- return [ MLPipeline ( ** p .to_dict ()) for p in paginated_result . results ]
869+ obj = self .detectors_api .list_detector_pipelines (detector_id , page = page , page_size = page_size )
870+ return PaginatedMLPipelineList . model_validate ( obj .to_dict ())
866871 except NotFoundException as e :
867872 raise NotFoundError (f"Detector '{ detector_id } ' not found." ) from e
868873
869874 # ---------------------------------------------------------------------------
870875 # PrimingGroup methods
871876 # ---------------------------------------------------------------------------
872877
873- def list_priming_groups (self ) -> List [ PrimingGroup ] :
878+ def list_priming_groups (self , page : int = 1 , page_size : int = 10 ) -> PaginatedPrimingGroupList :
874879 """
875880 Lists all PrimingGroups owned by the authenticated user's account.
876881
@@ -881,13 +886,15 @@ def list_priming_groups(self) -> List[PrimingGroup]:
881886
882887 gl = ExperimentalApi()
883888 groups = gl.list_priming_groups()
884- for g in groups:
889+ for g in groups.results :
885890 print(f"{g.name}: {g.id}")
886891
887- :return: A list of PrimingGroup objects.
892+ :param page: The page number to retrieve (1-based indexing).
893+ :param page_size: The number of priming groups to return per page.
894+ :return: PaginatedPrimingGroupList containing the requested page of priming groups and pagination metadata.
888895 """
889- paginated_result = self .priming_groups_api .list_priming_groups ()
890- return [ PrimingGroup . parse_obj ( pg .to_dict ()) for pg in paginated_result . results ]
896+ obj = self .priming_groups_api .list_priming_groups (page = page , page_size = page_size )
897+ return PaginatedPrimingGroupList . model_validate ( obj .to_dict ())
891898
892899 def create_priming_group (
893900 self ,
@@ -908,7 +915,7 @@ def create_priming_group(
908915 gl = ExperimentalApi()
909916 detector = gl.get_detector("det_abc123")
910917 pipelines = gl.list_detector_pipelines(detector)
911- active = next(p for p in pipelines if p.is_active_pipeline)
918+ active = next(p for p in pipelines.results if p.is_active_pipeline)
912919
913920 priming_group = gl.create_priming_group(
914921 name="door-detector-primer",
@@ -933,7 +940,7 @@ def create_priming_group(
933940 disable_shadow_pipelines = disable_shadow_pipelines ,
934941 )
935942 result = self .priming_groups_api .create_priming_group (request )
936- return PrimingGroup .parse_obj (result .to_dict ())
943+ return PrimingGroup .model_validate (result .to_dict ())
937944
938945 def get_priming_group (self , priming_group_id : str ) -> PrimingGroup :
939946 """
@@ -950,7 +957,7 @@ def get_priming_group(self, priming_group_id: str) -> PrimingGroup:
950957 """
951958 try :
952959 result = self .priming_groups_api .get_priming_group (priming_group_id )
953- return PrimingGroup .parse_obj (result .to_dict ())
960+ return PrimingGroup .model_validate (result .to_dict ())
954961 except NotFoundException as e :
955962 raise NotFoundError (f"PrimingGroup '{ priming_group_id } ' not found." ) from e
956963 except ApiException as e :
0 commit comments