Skip to content

Commit 408a6d2

Browse files
authored
aio.api.github: Typing cleanups (#2364)
Signed-off-by: Ryan Northey <ryan@synca.io>
1 parent 2024d6f commit 408a6d2

File tree

12 files changed

+270
-151
lines changed

12 files changed

+270
-151
lines changed

aio.api.github/aio/api/github/abstract/actions/actions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def repo(self) -> interface.IGithubRepo:
2626
return self._repo
2727

2828
@cached_property
29-
def workflows(self) -> "interface.IGithubWorkflows":
29+
def workflows(self) -> interface.IGithubWorkflows:
3030
return self.github.workflows_class(actions=self)
3131

3232

aio.api.github/aio/api/github/abstract/api.py

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
import abc
33
from functools import cached_property
4-
from typing import Any, Type
4+
from typing import Any
55

66
import aiohttp
77

@@ -36,9 +36,9 @@ def __getitem__(self, k) -> interface.IGithubRepo:
3636
# and validate `k`
3737
return self.repo_class(self, k)
3838

39-
@property # type:ignore
39+
@property
4040
@abstracts.interfacemethod
41-
def actions_class(self) -> Type[interface.IGithubActions]:
41+
def actions_class(self) -> type[interface.IGithubActions]:
4242
raise NotImplementedError
4343

4444
@cached_property
@@ -51,62 +51,62 @@ def api(self) -> gidgethub.aiohttp.GitHubAPI:
5151

5252
@property
5353
@abc.abstractmethod
54-
def api_class(self) -> Type[gidgethub.aiohttp.GitHubAPI]:
54+
def api_class(self) -> type[gidgethub.aiohttp.GitHubAPI]:
5555
"""API class."""
5656
return gidgethub.aiohttp.GitHubAPI
5757

58-
@property # type:ignore
58+
@property
5959
@abstracts.interfacemethod
60-
def commit_class(self) -> Type[interface.IGithubCommit]:
60+
def commit_class(self) -> type[interface.IGithubCommit]:
6161
raise NotImplementedError
6262

63-
@property # type:ignore
63+
@property
6464
@abstracts.interfacemethod
65-
def issue_class(self) -> Type[interface.IGithubIssue]:
65+
def issue_class(self) -> type[interface.IGithubIssue]:
6666
raise NotImplementedError
6767

68-
@property # type:ignore
68+
@property
6969
@abstracts.interfacemethod
70-
def issues_class(self) -> Type[interface.IGithubIssues]:
70+
def issues_class(self) -> type[interface.IGithubIssues]:
7171
raise NotImplementedError
7272

73-
@property # type:ignore
73+
@property
7474
@abstracts.interfacemethod
75-
def iterator_class(self) -> Type[interface.IGithubIterator]:
75+
def iterator_class(self) -> type[interface.IGithubIterator]:
7676
"""Github iterator class.
7777
7878
Provides both an async iterator and a `total_count` async prop.
7979
"""
8080
raise NotImplementedError
8181

82-
@property # type:ignore
82+
@property
8383
@abstracts.interfacemethod
84-
def label_class(self) -> Type[interface.IGithubLabel]:
84+
def label_class(self) -> type[interface.IGithubLabel]:
8585
raise NotImplementedError
8686

87-
@property # type:ignore
87+
@property
8888
@abstracts.interfacemethod
89-
def release_class(self) -> Type[interface.IGithubRelease]:
89+
def release_class(self) -> type[interface.IGithubRelease]:
9090
raise NotImplementedError
9191

92-
@property # type:ignore
92+
@property
9393
@abstracts.interfacemethod
94-
def repo_class(self) -> Type[interface.IGithubRepo]:
94+
def repo_class(self) -> type[interface.IGithubRepo]:
9595
"""Github repo class."""
9696
raise NotImplementedError
9797

9898
@property
9999
def session(self) -> aiohttp.ClientSession:
100100
return self._session
101101

102-
@property # type:ignore
102+
@property
103103
@abstracts.interfacemethod
104-
def tag_class(self) -> Type[interface.IGithubTag]:
104+
def tag_class(self) -> type[interface.IGithubTag]:
105105
raise NotImplementedError
106106

107-
@property # type:ignore
107+
@property
108108
@abstracts.interfacemethod
109-
def workflows_class(self) -> Type[interface.IGithubWorkflows]:
109+
def workflows_class(self) -> type[interface.IGithubWorkflows]:
110110
raise NotImplementedError
111111

112112
async def getitem(self, *args, **kwargs) -> Any:

aio.api.github/aio/api/github/abstract/issues/tracker.py

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22
import abc
33
import re
44
from functools import cached_property
5-
from typing import (
6-
Any, AsyncGenerator,
7-
Pattern, Type)
5+
from typing import Any, AsyncGenerator, Pattern
86

97
import abstracts
108

@@ -103,7 +101,7 @@ async def __aiter__(
103101
if (issue := self.issue_class(self, issue)).key:
104102
yield issue
105103

106-
@property # type:ignore
104+
@property
107105
@abstracts.interfacemethod
108106
def closing_tpl(self) -> str:
109107
raise NotImplementedError
@@ -127,9 +125,9 @@ def github(self) -> interface.IGithubAPI:
127125
def issue_author(self) -> str:
128126
return self._issue_author or ISSUE_AUTHOR
129127

130-
@property # type:ignore
128+
@property
131129
@abstracts.interfacemethod
132-
def issue_class(self) -> Type[interface.IGithubTrackedIssue]:
130+
def issue_class(self) -> type[interface.IGithubTrackedIssue]:
133131
raise NotImplementedError
134132

135133
@async_property(cache=True)
@@ -140,12 +138,12 @@ async def issues(self) -> dict[str, interface.IGithubTrackedIssue]:
140138
issues[issue.key] = issue
141139
return issues
142140

143-
@property # type:ignore
141+
@property
144142
@abc.abstractmethod
145143
def issues_search_tpl(self):
146144
return ISSUES_SEARCH_TPL
147145

148-
@property # type:ignore
146+
@property
149147
@abstracts.interfacemethod
150148
def labels(self) -> tuple[str, ...]:
151149
raise NotImplementedError
@@ -175,7 +173,7 @@ async def open_issues(self) -> tuple[interface.IGithubTrackedIssue, ...]:
175173
def repo(self) -> interface.IGithubRepo:
176174
return self.github[self.repo_name]
177175

178-
@property # type:ignore
176+
@property
179177
@abstracts.interfacemethod
180178
def repo_name(self) -> str:
181179
raise NotImplementedError
@@ -186,17 +184,17 @@ def title_re(self) -> Pattern[str]:
186184
self.title_re_tpl.format(
187185
title_prefix=self.title_prefix))
188186

189-
@property # type:ignore
187+
@property
190188
@abstracts.interfacemethod
191189
def title_prefix(self) -> str:
192190
raise NotImplementedError
193191

194-
@property # type:ignore
192+
@property
195193
@abstracts.interfacemethod
196194
def title_re_tpl(self):
197195
raise NotImplementedError
198196

199-
@property # type:ignore
197+
@property
200198
@abstracts.interfacemethod
201199
def title_tpl(self):
202200
raise NotImplementedError
@@ -224,7 +222,7 @@ async def issue_body(self, **kwargs) -> str:
224222
async def issue_title(self, **kwargs) -> str:
225223
raise NotImplementedError
226224

227-
def iter_issues(self) -> "interface.IGithubIterator":
225+
def iter_issues(self) -> interface.IGithubIterator:
228226
return self.repo.issues.search(
229227
self.issues_search_tpl.format(self=self))
230228

@@ -245,7 +243,7 @@ def __init__(self, github) -> None:
245243
def __getitem__(self, k) -> interface.IGithubTrackedIssues:
246244
return self.tracked_issues[k]
247245

248-
@property # type:ignore
246+
@property
249247
@abstracts.interfacemethod
250248
def tracked_issues(self) -> dict[str, interface.IGithubTrackedIssues]:
251249
raise NotImplementedError

aio.api.github/aio/api/github/abstract/release.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import pathlib
44
from datetime import datetime
55
from functools import cached_property
6-
from typing import AsyncIterator, Callable, Type
6+
from typing import AsyncIterator, Callable
77

88
from packaging import version
99

@@ -50,9 +50,9 @@ def __str__(self):
5050
def assets(self) -> interface.IGithubReleaseAssets:
5151
return self.assets_class(self)
5252

53-
@property # type: ignore
53+
@property
5454
@abstracts.interfacemethod
55-
def assets_class(self) -> Type[interface.IGithubReleaseAssets]:
55+
def assets_class(self) -> type[interface.IGithubReleaseAssets]:
5656
raise NotImplementedError
5757

5858
@property
@@ -90,11 +90,11 @@ class AGithubReleaseAssets(metaclass=abstracts.Abstraction):
9090

9191
def __init__(
9292
self,
93-
release: "interface.IGithubRelease") -> None:
93+
release: interface.IGithubRelease) -> None:
9494
self._release = release
9595

9696
@property
97-
def release(self) -> "interface.IGithubRelease":
97+
def release(self) -> interface.IGithubRelease:
9898
return self._release
9999

100100
@property

aio.api.github/aio/api/github/abstract/repo.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import pathlib
44
from datetime import datetime
55
from functools import cached_property, partial
6-
from typing import Any, Type
6+
from typing import Any
77

88
import gidgethub
99

@@ -20,15 +20,15 @@
2020
class AGithubRepo(metaclass=abstracts.Abstraction):
2121
"""A Github repo."""
2222

23-
def __init__(self, github: "interface.IGithubAPI", name: str) -> None:
23+
def __init__(self, github: interface.IGithubAPI, name: str) -> None:
2424
self._github = github
2525
self._name = name
2626

2727
def __str__(self):
2828
return f"<{self.__class__.__name__} {self.name}>"
2929

3030
@cached_property
31-
def actions(self) -> "interface.IGithubActions":
31+
def actions(self) -> interface.IGithubActions:
3232
return self.github.actions_class(repo=self)
3333

3434
@cached_property
@@ -41,28 +41,28 @@ def github(self) -> interface.IGithubAPI:
4141
return self._github
4242

4343
@cached_property
44-
def issues(self) -> "interface.IGithubIssues":
44+
def issues(self) -> interface.IGithubIssues:
4545
return self.github.issues_class(
4646
self.github,
4747
repo=self)
4848

4949
@property
50-
def labels(self) -> "interface.IGithubIterator":
50+
def labels(self) -> interface.IGithubIterator:
5151
return self.iter_entities(
5252
self.github.label_class, "labels")
5353

5454
@property
5555
def name(self) -> str:
5656
return self._name
5757

58-
async def commit(self, name: str) -> "interface.IGithubCommit":
58+
async def commit(self, name: str) -> interface.IGithubCommit:
5959
return self.github.commit_class(
6060
self,
6161
await self.getitem(f"commits/{name}"))
6262

6363
def commits(
6464
self,
65-
since: datetime | None = None) -> "interface.IGithubIterator":
65+
since: datetime | None = None) -> interface.IGithubIterator:
6666
query = "commits"
6767
if since is not None:
6868
query = f"{query}?since={utils.dt_to_js_isoformat(since)}"
@@ -100,7 +100,7 @@ async def getitem(self, query: str) -> Any:
100100
"""Call the `gidgethub.getitem` api for this repo."""
101101
return await self.github.getitem(self.github_endpoint(query))
102102

103-
def getiter(self, query: str, **kwargs) -> "interface.IGithubIterator":
103+
def getiter(self, query: str, **kwargs) -> interface.IGithubIterator:
104104
"""Return a `GithubIterator` wrapping `gidgethub.getiter` for this
105105
repo."""
106106
return self.github.getiter(self.github_endpoint(query), **kwargs)
@@ -132,9 +132,9 @@ async def highest_release(
132132

133133
def iter_entities(
134134
self,
135-
entity: Type[base.GithubEntity],
135+
entity: type[base.GithubEntity],
136136
path: str,
137-
**kwargs) -> "interface.IGithubIterator":
137+
**kwargs) -> interface.IGithubIterator:
138138
"""Iterate and inflate entities for provided type."""
139139
return self.getiter(
140140
path,
@@ -157,21 +157,21 @@ async def release(
157157
self,
158158
name: str,
159159
data: dict | None = None,
160-
dry_run: bool = False) -> "interface.IGithubRelease":
160+
dry_run: bool = False) -> interface.IGithubRelease:
161161
if data:
162162
return await self.github.release_class.create(self, data, dry_run)
163163
return self.github.release_class(
164164
self,
165165
await self.getitem(f"releases/tags/{name}"))
166166

167-
def releases(self) -> "interface.IGithubIterator":
167+
def releases(self) -> interface.IGithubIterator:
168168
"""Iterate releases for this repo."""
169169
# TODO: make per_page configurable
170170
return self.iter_entities(
171171
self.github.release_class,
172172
"releases?per_page=100")
173173

174-
async def tag(self, name: str) -> "interface.IGithubTag":
174+
async def tag(self, name: str) -> interface.IGithubTag:
175175
ref_tag = await self.getitem(f"git/ref/tags/{name}")
176176
if ref_tag["object"]["type"] != "tag":
177177
raise exceptions.TagNotFound(name)
@@ -186,7 +186,7 @@ async def tag_exists(self, tag_name: str) -> bool:
186186
pass
187187
return False
188188

189-
def tags(self) -> "interface.IGithubIterator":
189+
def tags(self) -> interface.IGithubIterator:
190190
"""Iterate tags for this repo."""
191191
return self.iter_entities(
192192
self.github.tag_class,
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
"""aio.core.stream."""
2+
3+
from .base import AsyncStream
4+
from ._reader import reader, Reader
5+
from ._writer import writer, Writer
6+
7+
8+
__all__ = (
9+
"AsyncStream", "Reader", "reader", "Writer", "writer")

0 commit comments

Comments
 (0)