Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

chore: improve type-hinting for managers#1512

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
nejch merged 3 commits intopython-gitlab:masterfromJohnVillalovos:jlvillal/type_managers
Sep 8, 2021
Merged
Show file tree
Hide file tree
Changes fromall commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 14 additions & 5 deletionsgitlab/base.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -150,13 +150,22 @@ def __hash__(self) -> int:
return hash(self.get_id())

def _create_managers(self) -> None:
managers = getattr(self, "_managers", None)
if managers is None:
return

for attr, cls_name in self._managers:
# NOTE(jlvillal): We are creating our managers by looking at the class
# annotations. If an attribute is annotated as being a *Manager type
# then we create the manager and assign it to the attribute.
for attr, annotation in sorted(self.__annotations__.items()):
if not isinstance(annotation, (type, str)):
continue
if isinstance(annotation, type):
cls_name = annotation.__name__
else:
cls_name = annotation
# All *Manager classes are used except for the base "RESTManager" class
if cls_name == "RESTManager" or not cls_name.endswith("Manager"):
continue
cls = getattr(self._module, cls_name)
manager = cls(self.manager.gitlab, parent=self)
# Since we have our own __setattr__ method, we can't use setattr()
self.__dict__[attr] = manager

def _update_attrs(self, new_attrs: Dict[str, Any]) -> None:
Expand Down
5 changes: 4 additions & 1 deletiongitlab/v4/cli.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -99,7 +99,10 @@ def do_custom(self) -> Any:
def do_project_export_download(self) -> None:
try:
project = self.gl.projects.get(int(self.args["project_id"]), lazy=True)
data = project.exports.get().download()
export_status = project.exports.get()
if TYPE_CHECKING:
assert export_status is not None
data = export_status.download()
sys.stdout.buffer.write(data)

except Exception as e:
Expand Down
4 changes: 2 additions & 2 deletionsgitlab/v4/objects/boards.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -26,7 +26,7 @@ class GroupBoardListManager(CRUDMixin, RESTManager):


class GroupBoard(SaveMixin, ObjectDeleteMixin, RESTObject):
_managers = (("lists", "GroupBoardListManager"),)
lists:GroupBoardListManager


class GroupBoardManager(CRUDMixin, RESTManager):
Expand All@@ -49,7 +49,7 @@ class ProjectBoardListManager(CRUDMixin, RESTManager):


class ProjectBoard(SaveMixin, ObjectDeleteMixin, RESTObject):
_managers = (("lists", "ProjectBoardListManager"),)
lists:ProjectBoardListManager


class ProjectBoardManager(CRUDMixin, RESTManager):
Expand Down
9 changes: 4 additions & 5 deletionsgitlab/v4/objects/commits.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,11 +17,10 @@

class ProjectCommit(RESTObject):
_short_print_attr = "title"
_managers = (
("comments", "ProjectCommitCommentManager"),
("discussions", "ProjectCommitDiscussionManager"),
("statuses", "ProjectCommitStatusManager"),
)

comments: "ProjectCommitCommentManager"
discussions: ProjectCommitDiscussionManager
statuses: "ProjectCommitStatusManager"

@cli.register_custom_action("ProjectCommit")
@exc.on_http_error(exc.GitlabGetError)
Expand Down
2 changes: 1 addition & 1 deletiongitlab/v4/objects/container_registry.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -12,7 +12,7 @@


class ProjectRegistryRepository(ObjectDeleteMixin, RESTObject):
_managers = (("tags", "ProjectRegistryTagManager"),)
tags: "ProjectRegistryTagManager"


class ProjectRegistryRepositoryManager(DeleteMixin, ListMixin, RESTManager):
Expand Down
2 changes: 1 addition & 1 deletiongitlab/v4/objects/deployments.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,7 +10,7 @@


class ProjectDeployment(SaveMixin, RESTObject):
_managers = (("mergerequests", "ProjectDeploymentMergeRequestManager"),)
mergerequests:ProjectDeploymentMergeRequestManager


class ProjectDeploymentManager(RetrieveMixin, CreateMixin, UpdateMixin, RESTManager):
Expand Down
8 changes: 4 additions & 4 deletionsgitlab/v4/objects/discussions.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,7 +21,7 @@


class ProjectCommitDiscussion(RESTObject):
_managers = (("notes", "ProjectCommitDiscussionNoteManager"),)
notes:ProjectCommitDiscussionNoteManager


class ProjectCommitDiscussionManager(RetrieveMixin, CreateMixin, RESTManager):
Expand All@@ -32,7 +32,7 @@ class ProjectCommitDiscussionManager(RetrieveMixin, CreateMixin, RESTManager):


class ProjectIssueDiscussion(RESTObject):
_managers = (("notes", "ProjectIssueDiscussionNoteManager"),)
notes:ProjectIssueDiscussionNoteManager


class ProjectIssueDiscussionManager(RetrieveMixin, CreateMixin, RESTManager):
Expand All@@ -43,7 +43,7 @@ class ProjectIssueDiscussionManager(RetrieveMixin, CreateMixin, RESTManager):


class ProjectMergeRequestDiscussion(SaveMixin, RESTObject):
_managers = (("notes", "ProjectMergeRequestDiscussionNoteManager"),)
notes:ProjectMergeRequestDiscussionNoteManager


class ProjectMergeRequestDiscussionManager(
Expand All@@ -59,7 +59,7 @@ class ProjectMergeRequestDiscussionManager(


class ProjectSnippetDiscussion(RESTObject):
_managers = (("notes", "ProjectSnippetDiscussionNoteManager"),)
notes:ProjectSnippetDiscussionNoteManager


class ProjectSnippetDiscussionManager(RetrieveMixin, CreateMixin, RESTManager):
Expand Down
7 changes: 3 additions & 4 deletionsgitlab/v4/objects/epics.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -23,10 +23,9 @@

class GroupEpic(ObjectDeleteMixin, SaveMixin, RESTObject):
_id_attr = "iid"
_managers = (
("issues", "GroupEpicIssueManager"),
("resourcelabelevents", "GroupEpicResourceLabelEventManager"),
)

issues: "GroupEpicIssueManager"
resourcelabelevents: GroupEpicResourceLabelEventManager


class GroupEpicManager(CRUDMixin, RESTManager):
Expand Down
57 changes: 28 additions & 29 deletionsgitlab/v4/objects/groups.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -43,35 +43,34 @@

class Group(SaveMixin, ObjectDeleteMixin, RESTObject):
_short_print_attr = "name"
_managers = (
("accessrequests", "GroupAccessRequestManager"),
("audit_events", "GroupAuditEventManager"),
("badges", "GroupBadgeManager"),
("billable_members", "GroupBillableMemberManager"),
("boards", "GroupBoardManager"),
("customattributes", "GroupCustomAttributeManager"),
("descendant_groups", "GroupDescendantGroupManager"),
("exports", "GroupExportManager"),
("epics", "GroupEpicManager"),
("hooks", "GroupHookManager"),
("imports", "GroupImportManager"),
("issues", "GroupIssueManager"),
("issues_statistics", "GroupIssuesStatisticsManager"),
("labels", "GroupLabelManager"),
("members", "GroupMemberManager"),
("members_all", "GroupMemberAllManager"),
("mergerequests", "GroupMergeRequestManager"),
("milestones", "GroupMilestoneManager"),
("notificationsettings", "GroupNotificationSettingsManager"),
("packages", "GroupPackageManager"),
("projects", "GroupProjectManager"),
("runners", "GroupRunnerManager"),
("subgroups", "GroupSubgroupManager"),
("variables", "GroupVariableManager"),
("clusters", "GroupClusterManager"),
("deploytokens", "GroupDeployTokenManager"),
("wikis", "GroupWikiManager"),
)

accessrequests: GroupAccessRequestManager
audit_events: GroupAuditEventManager
badges: GroupBadgeManager
billable_members: GroupBillableMemberManager
boards: GroupBoardManager
clusters: GroupClusterManager
customattributes: GroupCustomAttributeManager
deploytokens: GroupDeployTokenManager
descendant_groups: "GroupDescendantGroupManager"
epics: GroupEpicManager
exports: GroupExportManager
hooks: GroupHookManager
imports: GroupImportManager
issues: GroupIssueManager
issues_statistics: GroupIssuesStatisticsManager
labels: GroupLabelManager
members: GroupMemberManager
members_all: GroupMemberAllManager
mergerequests: GroupMergeRequestManager
milestones: GroupMilestoneManager
notificationsettings: GroupNotificationSettingsManager
packages: GroupPackageManager
projects: GroupProjectManager
runners: GroupRunnerManager
subgroups: "GroupSubgroupManager"
variables: GroupVariableManager
wikis: GroupWikiManager

@cli.register_custom_action("Group", ("to_project_id",))
@exc.on_http_error(exc.GitlabTransferProjectError)
Expand Down
17 changes: 8 additions & 9 deletionsgitlab/v4/objects/issues.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -105,15 +105,14 @@ class ProjectIssue(
):
_short_print_attr = "title"
_id_attr = "iid"
_managers = (
("awardemojis", "ProjectIssueAwardEmojiManager"),
("discussions", "ProjectIssueDiscussionManager"),
("links", "ProjectIssueLinkManager"),
("notes", "ProjectIssueNoteManager"),
("resourcelabelevents", "ProjectIssueResourceLabelEventManager"),
("resourcemilestoneevents", "ProjectIssueResourceMilestoneEventManager"),
("resourcestateevents", "ProjectIssueResourceStateEventManager"),
)

awardemojis: ProjectIssueAwardEmojiManager
discussions: ProjectIssueDiscussionManager
links: "ProjectIssueLinkManager"
notes: ProjectIssueNoteManager
resourcelabelevents: ProjectIssueResourceLabelEventManager
resourcemilestoneevents: ProjectIssueResourceMilestoneEventManager
resourcestateevents: ProjectIssueResourceStateEventManager

@cli.register_custom_action("ProjectIssue", ("to_project_id",))
@exc.on_http_error(exc.GitlabUpdateError)
Expand Down
3 changes: 2 additions & 1 deletiongitlab/v4/objects/members.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -43,7 +43,8 @@ class GroupMemberManager(MemberAllMixin, CRUDMixin, RESTManager):

class GroupBillableMember(ObjectDeleteMixin, RESTObject):
_short_print_attr = "username"
_managers = (("memberships", "GroupBillableMemberMembershipManager"),)

memberships: "GroupBillableMemberMembershipManager"


class GroupBillableMemberManager(ListMixin, DeleteMixin, RESTManager):
Expand Down
22 changes: 10 additions & 12 deletionsgitlab/v4/objects/merge_requests.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -139,18 +139,16 @@ class ProjectMergeRequest(
):
_id_attr = "iid"

_managers = (
("approvals", "ProjectMergeRequestApprovalManager"),
("approval_rules", "ProjectMergeRequestApprovalRuleManager"),
("awardemojis", "ProjectMergeRequestAwardEmojiManager"),
("diffs", "ProjectMergeRequestDiffManager"),
("discussions", "ProjectMergeRequestDiscussionManager"),
("notes", "ProjectMergeRequestNoteManager"),
("pipelines", "ProjectMergeRequestPipelineManager"),
("resourcelabelevents", "ProjectMergeRequestResourceLabelEventManager"),
("resourcemilestoneevents", "ProjectMergeRequestResourceMilestoneEventManager"),
("resourcestateevents", "ProjectMergeRequestResourceStateEventManager"),
)
approval_rules: ProjectMergeRequestApprovalRuleManager
approvals: ProjectMergeRequestApprovalManager
awardemojis: ProjectMergeRequestAwardEmojiManager
diffs: "ProjectMergeRequestDiffManager"
discussions: ProjectMergeRequestDiscussionManager
notes: ProjectMergeRequestNoteManager
pipelines: ProjectMergeRequestPipelineManager
resourcelabelevents: ProjectMergeRequestResourceLabelEventManager
resourcemilestoneevents: ProjectMergeRequestResourceMilestoneEventManager
resourcestateevents: ProjectMergeRequestResourceStateEventManager

@cli.register_custom_action("ProjectMergeRequest")
@exc.on_http_error(exc.GitlabMROnBuildSuccessError)
Expand Down
6 changes: 3 additions & 3 deletionsgitlab/v4/objects/notes.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -71,7 +71,7 @@ class ProjectCommitDiscussionNoteManager(


class ProjectIssueNote(SaveMixin, ObjectDeleteMixin, RESTObject):
_managers = (("awardemojis", "ProjectIssueNoteAwardEmojiManager"),)
awardemojis:ProjectIssueNoteAwardEmojiManager


class ProjectIssueNoteManager(CRUDMixin, RESTManager):
Expand DownExpand Up@@ -104,7 +104,7 @@ class ProjectIssueDiscussionNoteManager(


class ProjectMergeRequestNote(SaveMixin, ObjectDeleteMixin, RESTObject):
_managers = (("awardemojis", "ProjectMergeRequestNoteAwardEmojiManager"),)
awardemojis:ProjectMergeRequestNoteAwardEmojiManager


class ProjectMergeRequestNoteManager(CRUDMixin, RESTManager):
Expand DownExpand Up@@ -137,7 +137,7 @@ class ProjectMergeRequestDiscussionNoteManager(


class ProjectSnippetNote(SaveMixin, ObjectDeleteMixin, RESTObject):
_managers = (("awardemojis", "ProjectSnippetNoteAwardEmojiManager"),)
awardemojis: ProjectMergeRequestNoteAwardEmojiManager


class ProjectSnippetNoteManager(CRUDMixin, RESTManager):
Expand Down
2 changes: 1 addition & 1 deletiongitlab/v4/objects/packages.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -143,7 +143,7 @@ class GroupPackageManager(ListMixin, RESTManager):


class ProjectPackage(ObjectDeleteMixin, RESTObject):
_managers = (("package_files", "ProjectPackageFileManager"),)
package_files: "ProjectPackageFileManager"


class ProjectPackageManager(ListMixin, GetMixin, DeleteMixin, RESTManager):
Expand Down
12 changes: 5 additions & 7 deletionsgitlab/v4/objects/pipelines.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -74,12 +74,10 @@ def __call__(self, **kwargs):


class ProjectPipeline(RefreshMixin, ObjectDeleteMixin, RESTObject):
_managers = (
("jobs", "ProjectPipelineJobManager"),
("bridges", "ProjectPipelineBridgeManager"),
("variables", "ProjectPipelineVariableManager"),
("test_report", "ProjectPipelineTestReportManager"),
)
bridges: "ProjectPipelineBridgeManager"
jobs: "ProjectPipelineJobManager"
test_report: "ProjectPipelineTestReportManager"
variables: "ProjectPipelineVariableManager"

@cli.register_custom_action("ProjectPipeline")
@exc.on_http_error(exc.GitlabPipelineCancelError)
Expand DownExpand Up@@ -199,7 +197,7 @@ class ProjectPipelineScheduleVariableManager(


class ProjectPipelineSchedule(SaveMixin, ObjectDeleteMixin, RESTObject):
_managers = (("variables", "ProjectPipelineScheduleVariableManager"),)
variables:ProjectPipelineScheduleVariableManager

@cli.register_custom_action("ProjectPipelineSchedule")
@exc.on_http_error(exc.GitlabOwnershipError)
Expand Down
Loading

[8]ページ先頭

©2009-2025 Movatter.jp