| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 46dfc50 commit 91c4f18
88 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -4,7 +4,18 @@ | |||
| 4 | 4 | import pprint | |
| 5 | 5 | import textwrap | |
| 6 | 6 | from types import ModuleType | |
| 7 | - from typing import Any, Dict, Iterable, Optional, Type, TYPE_CHECKING, Union | ||
| 7 | + from typing import ( | ||
| 8 | + Any, | ||
| 9 | + ClassVar, | ||
| 10 | + Dict, | ||
| 11 | + Generic, | ||
| 12 | + Iterable, | ||
| 13 | + Optional, | ||
| 14 | + Type, | ||
| 15 | + TYPE_CHECKING, | ||
| 16 | + TypeVar, | ||
| 17 | + Union, | ||
| 18 | + ) | ||
| 8 | 19 | ||
| 9 | 20 | import gitlab | |
| 10 | 21 | from gitlab import types as g_types | |
@@ -48,11 +59,11 @@ class RESTObject: | |||
| 48 | 59 | _repr_attr: Optional[str] = None | |
| 49 | 60 | _updated_attrs: Dict[str, Any] | |
| 50 | 61 | _lazy: bool | |
| 51 | - manager: "RESTManager" | ||
| 62 | + manager: "RESTManager[Any]" | ||
| 52 | 63 | ||
| 53 | 64 | def __init__( | |
| 54 | 65 | self, | |
| 55 | - manager: "RESTManager", | ||
| 66 | + manager: "RESTManager[Any]", | ||
| 56 | 67 | attrs: Dict[str, Any], | |
| 57 | 68 | *, | |
| 58 | 69 | created_from_list: bool = False, | |
@@ -269,7 +280,7 @@ class RESTObjectList: | |||
| 269 | 280 | """ | |
| 270 | 281 | ||
| 271 | 282 | def __init__( | |
| 272 | - self, manager: "RESTManager", obj_cls: Type[RESTObject], _list: GitlabList | ||
| 283 | + self, manager: "RESTManager[Any]", obj_cls: Type[RESTObject], _list: GitlabList | ||
| 273 | 284 | ) -> None: | |
| 274 | 285 | """Creates an objects list from a GitlabList. | |
| 275 | 286 | ||
@@ -335,7 +346,10 @@ def total(self) -> Optional[int]: | |||
| 335 | 346 | return self._list.total | |
| 336 | 347 | ||
| 337 | 348 | ||
| 338 | - class RESTManager: | ||
| 349 | + TObjCls = TypeVar("TObjCls", bound=RESTObject) | ||
| 350 | + | ||
| 351 | + | ||
| 352 | + class RESTManager(Generic[TObjCls]): | ||
| 339 | 353 | """Base class for CRUD operations on objects. | |
| 340 | 354 | ||
| 341 | 355 | Derived class must define ``_path`` and ``_obj_cls``. | |
@@ -346,12 +360,12 @@ class RESTManager: | |||
| 346 | 360 | ||
| 347 | 361 | _create_attrs: g_types.RequiredOptional = g_types.RequiredOptional() | |
| 348 | 362 | _update_attrs: g_types.RequiredOptional = g_types.RequiredOptional() | |
| 349 | - _path: Optional[str] = None | ||
| 350 | - _obj_cls: Optional[Type[RESTObject]] = None | ||
| 363 | + _path: ClassVar[str] | ||
| 364 | + _obj_cls: type[TObjCls] | ||
| 351 | 365 | _from_parent_attrs: Dict[str, Any] = {} | |
| 352 | 366 | _types: Dict[str, Type[g_types.GitlabAttribute]] = {} | |
| 353 | 367 | ||
| 354 | - _computed_path: Optional[str] | ||
| 368 | + _computed_path: str | ||
| 355 | 369 | _parent: Optional[RESTObject] | |
| 356 | 370 | _parent_attrs: Dict[str, Any] | |
| 357 | 371 | gitlab: Gitlab | |
@@ -371,12 +385,10 @@ def __init__(self, gl: Gitlab, parent: Optional[RESTObject] = None) -> None: | |||
| 371 | 385 | def parent_attrs(self) -> Optional[Dict[str, Any]]: | |
| 372 | 386 | return self._parent_attrs | |
| 373 | 387 | ||
| 374 | - def _compute_path(self, path: Optional[str] = None) -> Optional[str]: | ||
| 388 | + def _compute_path(self, path: Optional[str] = None) -> str: | ||
| 375 | 389 | self._parent_attrs = {} | |
| 376 | 390 | if path is None: | |
| 377 | 391 | path = self._path | |
| 378 | - if path is None: | ||
| 379 | - return None | ||
| 380 | 392 | if self._parent is None or not self._from_parent_attrs: | |
| 381 | 393 | return path | |
| 382 | 394 | ||
@@ -390,5 +402,5 @@ def _compute_path(self, path: Optional[str] = None) -> Optional[str]: | |||
| 390 | 402 | return path.format(**data) | |
| 391 | 403 | ||
| 392 | 404 | @property | |
| 393 | - def path(self) -> Optional[str]: | ||
| 405 | + def path(self) -> str: | ||
| 394 | 406 | return self._computed_path | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -397,11 +397,10 @@ def auth(self) -> None: | |||
| 397 | 397 | The `user` attribute will hold a `gitlab.objects.CurrentUser` object on | |
| 398 | 398 | success. | |
| 399 | 399 | """ | |
| 400 | - # pylint: disable=line-too-long | ||
| 401 | - self.user = self._objects.CurrentUserManager(self).get() # type: ignore[assignment] | ||
| 400 | + self.user = self._objects.CurrentUserManager(self).get() | ||
| 402 | 401 | ||
| 403 | 402 | if hasattr(self.user, "web_url") and hasattr(self.user, "username"): | |
| 404 | - self._check_url(self.user.web_url, path=self.user.username) # type: ignore[union-attr] | ||
| 403 | + self._check_url(self.user.web_url, path=self.user.username) | ||
| 405 | 404 | ||
| 406 | 405 | def version(self) -> Tuple[str, str]: | |
| 407 | 406 | """Returns the version and revision of the gitlab server. | |
| Back | FazBrowse Home | New Git URL |
0 commit comments