1818import importlib
1919import pprint
2020import textwrap
21- from dataclasses import dataclass
2221from types import ModuleType
23- from typing import Any ,Dict ,Iterable ,Optional ,Tuple , Type ,Union
22+ from typing import Any ,Dict ,Iterable ,Optional ,Type ,Union
2423
2524import gitlab
2625from gitlab import types as g_types
2928from .client import Gitlab ,GitlabList
3029
3130__all__ = [
32- "RequiredOptional" ,
3331"RESTObject" ,
3432"RESTObjectList" ,
3533"RESTManager" ,
@@ -330,12 +328,6 @@ def total(self) -> Optional[int]:
330328return self ._list .total
331329
332330
333- @dataclass (frozen = True )
334- class RequiredOptional :
335- required :Tuple [str , ...]= ()
336- optional :Tuple [str , ...]= ()
337-
338-
339331class RESTManager :
340332"""Base class for CRUD operations on objects.
341333
@@ -345,8 +337,8 @@ class RESTManager:
345337 ``_obj_cls``: The class of objects that will be created
346338 """
347339
348- _create_attrs :RequiredOptional = RequiredOptional ()
349- _update_attrs :RequiredOptional = RequiredOptional ()
340+ _create_attrs :g_types . RequiredOptional = g_types . RequiredOptional ()
341+ _update_attrs :g_types . RequiredOptional = g_types . RequiredOptional ()
350342_path :Optional [str ]= None
351343_obj_cls :Optional [Type [RESTObject ]]= None
352344_from_parent_attrs :Dict [str ,Any ]= {}