Skip to content

Commit 3eb11cc

Browse files
committed
Enable the type annotation linter.
Specifically because Sphinx doesn't render return types without them present.
1 parent 848f3aa commit 3eb11cc

File tree

6 files changed

+31
-11
lines changed

6 files changed

+31
-11
lines changed

docs/api.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,14 @@ API Reference
1313
:undoc-members:
1414

1515

16+
.. autoclass:: referencing._core.Retrieved
17+
:members:
18+
:undoc-members:
19+
20+
21+
.. autoclass:: referencing._core.T
22+
23+
1624
.. autoclass:: referencing._core.Resolver
1725
:members:
1826
:undoc-members:

docs/spelling-wordlist.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ discoverability
99
filesystem
1010
instantiable
1111
instantiation
12+
iterable
1213
metaschemas
1314
referenceable
1415
resolvers

pyproject.toml

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,15 @@ exclude = [
7070
[tool.ruff]
7171
line-length = 79
7272
target-version = "py38"
73-
select = ["B", "D", "E", "F", "Q", "UP", "W"]
73+
select = ["ANN", "B", "D", "E", "F", "Q", "UP", "W"]
7474
ignore = [
75+
# Wat, type annotations for self and cls, why is this a thing?
76+
"ANN101",
77+
"ANN102",
78+
# Private annotations are fine to leave out.
79+
"ANN202",
80+
# I don't know how to more properly annotate "pass along all arguments".
81+
"ANN401",
7582
# raise SomeException(...) is fine.
7683
"B904",
7784
# It's fine to not have docstrings for magic methods.
@@ -97,9 +104,9 @@ extend-exclude = ["suite"]
97104
docstring-quotes = "double"
98105

99106
[tool.ruff.per-file-ignores]
100-
"docs/*" = ["D"]
101-
"referencing/tests/*" = ["D"]
102-
"noxfile.py" = ["D"]
107+
"docs/*" = ["ANN", "D"]
108+
"referencing/tests/*" = ["ANN", "D"]
109+
"noxfile.py" = ["ANN", "D"]
103110

104111
[tool.ruff.pyupgrade]
105112
# We support 3.8 + 3.9

referencing/_core.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class Specification(Generic[D]):
5858
#: nor internal identifiers.
5959
OPAQUE: ClassVar[Specification[Any]]
6060

61-
def __repr__(self):
61+
def __repr__(self) -> str:
6262
return f"<Specification name={self.name!r}>"
6363

6464
def anchors_in(self, contents: D):
@@ -257,7 +257,10 @@ def __len__(self) -> int:
257257
"""
258258
return len(self._resources)
259259

260-
def __rmatmul__(self, new: Resource[D] | Iterable[Resource[D]]):
260+
def __rmatmul__(
261+
self,
262+
new: Resource[D] | Iterable[Resource[D]],
263+
) -> Registry[D]:
261264
"""
262265
Create a new registry with resource(s) added using their internal IDs.
263266
@@ -311,7 +314,7 @@ def __repr__(self) -> str:
311314
summary = f"{pluralized}"
312315
return f"<Registry ({size} {summary})>"
313316

314-
def get_or_retrieve(self, uri: URI) -> Retrieved:
317+
def get_or_retrieve(self, uri: URI) -> Retrieved[D, Resource[D]]:
315318
"""
316319
Get a resource from the registry, crawling or retrieving if necessary.
317320
@@ -498,6 +501,7 @@ def resolver_with_root(self, resource: Resource[D]) -> Resolver[D]:
498501
)
499502

500503

504+
#: An anchor or resource.
501505
T = TypeVar("T", AnchorType[Any], Resource[Any])
502506

503507

referencing/exceptions.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ class PointerToNowhere(Unresolvable):
9393

9494
resource: Resource[Any]
9595

96-
def __str__(self):
96+
def __str__(self) -> str:
9797
msg = f"{self.ref!r} does not exist within {self.resource.contents!r}"
9898
if self.ref == "/":
9999
msg += (
@@ -113,7 +113,7 @@ class NoSuchAnchor(Unresolvable):
113113
resource: Resource[Any]
114114
anchor: str
115115

116-
def __str__(self):
116+
def __str__(self) -> str:
117117
return (
118118
f"{self.anchor!r} does not exist within {self.resource.contents!r}"
119119
)
@@ -130,7 +130,7 @@ class InvalidAnchor(Unresolvable):
130130
resource: Resource[Any]
131131
anchor: str
132132

133-
def __str__(self):
133+
def __str__(self) -> str:
134134
return (
135135
f"'#{self.anchor}' is not a valid anchor, neither as a "
136136
"plain name anchor nor as a JSON Pointer. You may have intended "

referencing/jsonschema.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -586,7 +586,7 @@ class DynamicAnchor:
586586
name: str
587587
resource: Resource[Schema]
588588

589-
def resolve(self, resolver: _Resolver[Schema]):
589+
def resolve(self, resolver: _Resolver[Schema]) -> _Resolved[Schema]:
590590
"""
591591
Resolve this anchor dynamically.
592592
"""

0 commit comments

Comments
 (0)