summaryrefslogtreecommitdiff
path: root/gitlab/v4/objects/projects.py
diff options
context:
space:
mode:
authorJohn L. Villalovos <john@sodarock.com>2021-06-12 15:05:36 -0700
committerJohn L. Villalovos <john@sodarock.com>2021-09-07 08:19:39 -0700
commitc9b5d3bac8f7c1f779dd57653f718dd0fac4db4b (patch)
tree925700991c94a5a71797d6992b97c5b90ed74089 /gitlab/v4/objects/projects.py
parentb8a47bae3342400a411fb9bf4bef3c15ba91c98e (diff)
downloadgitlab-c9b5d3bac8f7c1f779dd57653f718dd0fac4db4b.tar.gz
chore: improve type-hinting for managers
The 'managers' are dynamically created. This unfortunately means that we don't have any type-hints for them and so editors which understand type-hints won't know that they are valid attributes. * Add the type-hints for the managers we define. * Add a unit test that makes sure that the type-hints and the '_managers' attribute are kept in sync with each other. * Add unit test that makes sure specified managers in '_managers' have a name ending in 'Managers' to keep with current convention. * Make RESTObject._managers always present with a default value of None. * Fix a type-issue revealed now that mypy knows what the type is
Diffstat (limited to 'gitlab/v4/objects/projects.py')
-rw-r--r--gitlab/v4/objects/projects.py76
1 files changed, 65 insertions, 11 deletions
diff --git a/gitlab/v4/objects/projects.py b/gitlab/v4/objects/projects.py
index ee7aca8..71d4564 100644
--- a/gitlab/v4/objects/projects.py
+++ b/gitlab/v4/objects/projects.py
@@ -110,29 +110,88 @@ class GroupProjectManager(ListMixin, RESTManager):
class Project(RefreshMixin, SaveMixin, ObjectDeleteMixin, RepositoryMixin, RESTObject):
_short_print_attr = "path"
+
+ access_tokens: ProjectAccessTokenManager
+ accessrequests: ProjectAccessRequestManager
+ additionalstatistics: ProjectAdditionalStatisticsManager
+ approvalrules: ProjectApprovalRuleManager
+ approvals: ProjectApprovalManager
+ audit_events: ProjectAuditEventManager
+ badges: ProjectBadgeManager
+ boards: ProjectBoardManager
+ branches: ProjectBranchManager
+ clusters: ProjectClusterManager
+ commits: ProjectCommitManager
+ customattributes: ProjectCustomAttributeManager
+ deployments: ProjectDeploymentManager
+ deploytokens: ProjectDeployTokenManager
+ environments: ProjectEnvironmentManager
+ events: ProjectEventManager
+ exports: ProjectExportManager
+ files: ProjectFileManager
+ forks: "ProjectForkManager"
+ generic_packages: GenericPackageManager
+ hooks: ProjectHookManager
+ imports: ProjectImportManager
+ issues: ProjectIssueManager
+ issues_statistics: ProjectIssuesStatisticsManager
+ issuesstatistics: ProjectIssuesStatisticsManager
+ jobs: ProjectJobManager
+ keys: ProjectKeyManager
+ labels: ProjectLabelManager
+ members: ProjectMemberManager
+ members_all: ProjectMemberAllManager
+ mergerequests: ProjectMergeRequestManager
+ milestones: ProjectMilestoneManager
+ notes: ProjectNoteManager
+ notificationsettings: ProjectNotificationSettingsManager
+ packages: ProjectPackageManager
+ pagesdomains: ProjectPagesDomainManager
+ pipelines: ProjectPipelineManager
+ pipelineschedules: ProjectPipelineScheduleManager
+ protectedbranches: ProjectProtectedBranchManager
+ protectedtags: ProjectProtectedTagManager
+ pushrules: ProjectPushRulesManager
+ releases: ProjectReleaseManager
+ remote_mirrors: "ProjectRemoteMirrorManager"
+ repositories: ProjectRegistryRepositoryManager
+ runners: ProjectRunnerManager
+ services: ProjectServiceManager
+ snippets: ProjectSnippetManager
+ tags: ProjectTagManager
+ triggers: ProjectTriggerManager
+ users: ProjectUserManager
+ variables: ProjectVariableManager
+ wikis: ProjectWikiManager
+
_managers = (
("access_tokens", "ProjectAccessTokenManager"),
("accessrequests", "ProjectAccessRequestManager"),
- ("approvals", "ProjectApprovalManager"),
+ ("additionalstatistics", "ProjectAdditionalStatisticsManager"),
("approvalrules", "ProjectApprovalRuleManager"),
+ ("approvals", "ProjectApprovalManager"),
+ ("audit_events", "ProjectAuditEventManager"),
("badges", "ProjectBadgeManager"),
("boards", "ProjectBoardManager"),
("branches", "ProjectBranchManager"),
- ("jobs", "ProjectJobManager"),
+ ("clusters", "ProjectClusterManager"),
("commits", "ProjectCommitManager"),
("customattributes", "ProjectCustomAttributeManager"),
("deployments", "ProjectDeploymentManager"),
+ ("deploytokens", "ProjectDeployTokenManager"),
("environments", "ProjectEnvironmentManager"),
("events", "ProjectEventManager"),
- ("audit_events", "ProjectAuditEventManager"),
("exports", "ProjectExportManager"),
("files", "ProjectFileManager"),
("forks", "ProjectForkManager"),
("generic_packages", "GenericPackageManager"),
("hooks", "ProjectHookManager"),
- ("keys", "ProjectKeyManager"),
("imports", "ProjectImportManager"),
("issues", "ProjectIssueManager"),
+ ("issues_statistics", "ProjectIssuesStatisticsManager"),
+ ("issuesstatistics", "ProjectIssuesStatisticsManager"), # Deprecated
+ ("jobs", "ProjectJobManager"),
+ ("keys", "ProjectKeyManager"),
("labels", "ProjectLabelManager"),
("members", "ProjectMemberManager"),
("members_all", "ProjectMemberAllManager"),
@@ -143,9 +202,9 @@ class Project(RefreshMixin, SaveMixin, ObjectDeleteMixin, RepositoryMixin, RESTO
("packages", "ProjectPackageManager"),
("pagesdomains", "ProjectPagesDomainManager"),
("pipelines", "ProjectPipelineManager"),
+ ("pipelineschedules", "ProjectPipelineScheduleManager"),
("protectedbranches", "ProjectProtectedBranchManager"),
("protectedtags", "ProjectProtectedTagManager"),
- ("pipelineschedules", "ProjectPipelineScheduleManager"),
("pushrules", "ProjectPushRulesManager"),
("releases", "ProjectReleaseManager"),
("remote_mirrors", "ProjectRemoteMirrorManager"),
@@ -154,15 +213,10 @@ class Project(RefreshMixin, SaveMixin, ObjectDeleteMixin, RepositoryMixin, RESTO
("services", "ProjectServiceManager"),
("snippets", "ProjectSnippetManager"),
("tags", "ProjectTagManager"),
- ("users", "ProjectUserManager"),
("triggers", "ProjectTriggerManager"),
+ ("users", "ProjectUserManager"),
("variables", "ProjectVariableManager"),
("wikis", "ProjectWikiManager"),
- ("clusters", "ProjectClusterManager"),
- ("additionalstatistics", "ProjectAdditionalStatisticsManager"),
- ("issues_statistics", "ProjectIssuesStatisticsManager"),
- ("issuesstatistics", "ProjectIssuesStatisticsManager"), # Deprecated
- ("deploytokens", "ProjectDeployTokenManager"),
)
@cli.register_custom_action("Project", ("forked_from_id",))