Skip to content

Commit 612e7fe

Browse files
committed
Move from 3.8 -> 3.9
1 parent dcc3bf4 commit 612e7fe

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

86 files changed

+832
-944
lines changed

ens/_normalization.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
from typing import (
77
Any,
88
Literal,
9-
Optional,
10-
Union,
119
)
1210

1311
from pyunormalize import (
@@ -64,7 +62,7 @@ class Token:
6462
type: Literal[TokenType.TEXT, TokenType.EMOJI]
6563
_original_text: str
6664
_original_codepoints: list[int]
67-
_normalized_codepoints: Optional[list[int]] = None
65+
_normalized_codepoints: list[int] | None = None
6866

6967
restricted: bool = False
7068

@@ -205,7 +203,7 @@ def _is_fenced(cp: int) -> bool:
205203
return cp in [fenced[0] for fenced in NORMALIZATION_SPEC["fenced"]]
206204

207205

208-
def _codepoints_to_text(cps: Union[list[list[int]], list[int]]) -> str:
206+
def _codepoints_to_text(cps: list[list[int]] | list[int]) -> str:
209207
return "".join(
210208
chr(cp) if isinstance(cp, int) else _codepoints_to_text(cp) for cp in cps
211209
)
@@ -400,7 +398,7 @@ def _build_and_validate_label_from_tokens(tokens: list[Token]) -> Label:
400398
return label
401399

402400

403-
def _buffer_codepoints_to_chars(buffer: Union[list[int], list[list[int]]]) -> str:
401+
def _buffer_codepoints_to_chars(buffer: list[int] | list[list[int]]) -> str:
404402
return "".join(
405403
"".join(chr(c) for c in char) if isinstance(char, list) else chr(char)
406404
for char in buffer

ens/async_ens.py

Lines changed: 30 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
TYPE_CHECKING,
1010
Any,
1111
Optional,
12-
Union,
1312
cast,
1413
)
1514

@@ -103,9 +102,9 @@ class AsyncENS(BaseENS):
103102

104103
def __init__(
105104
self,
106-
provider: Optional["AsyncBaseProvider"] = None,
107-
addr: Optional[ChecksumAddress] = None,
108-
middleware: Optional[Sequence[tuple["Middleware", str]]] = None,
105+
provider: "AsyncBaseProvider" | None = None,
106+
addr: ChecksumAddress | None = None,
107+
middleware: Sequence[tuple["Middleware", str]] | None = None,
109108
) -> None:
110109
"""
111110
:param provider: a single provider used to connect to Ethereum
@@ -138,7 +137,11 @@ def from_web3(
138137
"""
139138
provider = w3.manager.provider
140139
middleware = w3.middleware_onion.middleware
141-
ns = cls(cast("AsyncBaseProvider", provider), addr=addr, middleware=middleware)
140+
ns = cls(
141+
cast("AsyncBaseProvider", provider),
142+
addr=addr,
143+
middleware=middleware,
144+
)
142145

143146
# inherit strict bytes checking from w3 instance
144147
ns.strict_bytes_type_checking = w3.strict_bytes_type_checking
@@ -148,8 +151,8 @@ def from_web3(
148151
async def address(
149152
self,
150153
name: str,
151-
coin_type: Optional[int] = None,
152-
) -> Optional[ChecksumAddress]:
154+
coin_type: int | None = None,
155+
) -> ChecksumAddress | None:
153156
"""
154157
Look up the Ethereum address that `name` currently points to.
155158
@@ -164,7 +167,10 @@ async def address(
164167
else:
165168
r = await self.resolver(name)
166169
await _async_validate_resolver_and_interface_id(
167-
name, r, ENS_MULTICHAIN_ADDRESS_INTERFACE_ID, "addr(bytes32,uint256)"
170+
name,
171+
r,
172+
ENS_MULTICHAIN_ADDRESS_INTERFACE_ID,
173+
"addr(bytes32,uint256)",
168174
)
169175
node = raw_name_to_hash(name)
170176
address_as_bytes = await r.caller.addr(node, coin_type)
@@ -175,12 +181,12 @@ async def address(
175181
async def setup_address(
176182
self,
177183
name: str,
178-
address: Union[Address, ChecksumAddress, HexAddress] = cast( # noqa: B008
179-
ChecksumAddress, default
180-
),
181-
coin_type: Optional[int] = None,
184+
address: Address
185+
| ChecksumAddress
186+
| HexAddress = cast(ChecksumAddress, default), # noqa: B008
187+
coin_type: int | None = None,
182188
transact: Optional["TxParams"] = None,
183-
) -> Optional[HexBytes]:
189+
) -> HexBytes | None:
184190
"""
185191
Set up the name to point to the supplied address.
186192
The sender of the transaction must own the name, or
@@ -229,7 +235,7 @@ async def setup_address(
229235
transact
230236
)
231237

232-
async def name(self, address: ChecksumAddress) -> Optional[str]:
238+
async def name(self, address: ChecksumAddress) -> str | None:
233239
"""
234240
Look up the name that the address points to, using a
235241
reverse lookup. Reverse lookup is opt-in for name owners.
@@ -249,7 +255,7 @@ async def name(self, address: ChecksumAddress) -> Optional[str]:
249255
async def setup_name(
250256
self,
251257
name: str,
252-
address: Optional[ChecksumAddress] = None,
258+
address: ChecksumAddress | None = None,
253259
transact: Optional["TxParams"] = None,
254260
) -> HexBytes:
255261
"""
@@ -315,7 +321,7 @@ async def setup_owner(
315321
name: str,
316322
new_owner: ChecksumAddress = None,
317323
transact: Optional["TxParams"] = None,
318-
) -> Optional[ChecksumAddress]:
324+
) -> ChecksumAddress | None:
319325
"""
320326
Set the owner of the supplied name to `new_owner`.
321327
@@ -455,7 +461,8 @@ async def _get_resolver(
455461
if not is_none_or_zero_address(resolver_addr):
456462
# if resolver found, return it
457463
resolver = cast(
458-
"AsyncContract", self._type_aware_resolver(resolver_addr, fn_name)
464+
"AsyncContract",
465+
self._type_aware_resolver(resolver_addr, fn_name),
459466
)
460467
return resolver, current_name
461468

@@ -465,7 +472,7 @@ async def _get_resolver(
465472
async def _set_resolver(
466473
self,
467474
name: str,
468-
resolver_addr: Optional[ChecksumAddress] = None,
475+
resolver_addr: ChecksumAddress | None = None,
469476
transact: Optional["TxParams"] = None,
470477
) -> "AsyncContract":
471478
if not transact:
@@ -488,7 +495,7 @@ async def _resolve(
488495
self,
489496
name: str,
490497
fn_name: str = "addr",
491-
) -> Optional[Union[ChecksumAddress, str]]:
498+
) -> ChecksumAddress | str | None:
492499
normal_name = normalize_name(name)
493500

494501
resolver, current_name = await self._get_resolver(normal_name, fn_name)
@@ -524,7 +531,7 @@ async def _assert_control(
524531
self,
525532
account: ChecksumAddress,
526533
name: str,
527-
parent_owned: Optional[str] = None,
534+
parent_owned: str | None = None,
528535
) -> None:
529536
if not address_in(account, await self.w3.eth.accounts):
530537
raise UnauthorizedError(
@@ -534,7 +541,7 @@ async def _assert_control(
534541

535542
async def _first_owner(
536543
self, name: str
537-
) -> tuple[Optional[ChecksumAddress], Sequence[str], str]:
544+
) -> tuple[ChecksumAddress | None, Sequence[str], str]:
538545
"""
539546
Takes a name, and returns the owner of the deepest subdomain that has an owner
540547
@@ -555,7 +562,7 @@ async def _claim_ownership(
555562
owner: ChecksumAddress,
556563
unowned: Sequence[str],
557564
owned: str,
558-
old_owner: Optional[ChecksumAddress] = None,
565+
old_owner: ChecksumAddress | None = None,
559566
transact: Optional["TxParams"] = None,
560567
) -> None:
561568
if not transact:
@@ -576,7 +583,7 @@ async def _claim_ownership(
576583

577584
async def _setup_reverse(
578585
self,
579-
name: Optional[str],
586+
name: str | None,
580587
address: ChecksumAddress,
581588
transact: Optional["TxParams"] = None,
582589
) -> HexBytes:

ens/base_ens.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@
3939
class BaseENS:
4040
w3: Union["AsyncWeb3[Any]", "Web3"] = None
4141
ens: Union["Contract", "AsyncContract"] = None
42-
_resolver_contract: Union[type["Contract"], type["AsyncContract"]] = None
43-
_reverse_resolver_contract: Union[type["Contract"], type["AsyncContract"]] = None
42+
_resolver_contract: type["Contract"] | type["AsyncContract"] = None
43+
_reverse_resolver_contract: type["Contract"] | type["AsyncContract"] = None
4444

4545
@property
4646
def strict_bytes_type_checking(self) -> bool:

ens/ens.py

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
TYPE_CHECKING,
99
Any,
1010
Optional,
11-
Union,
1211
cast,
1312
)
1413

@@ -101,7 +100,7 @@ def __init__(
101100
self,
102101
provider: "BaseProvider" = None,
103102
addr: ChecksumAddress = None,
104-
middleware: Optional[Sequence[tuple["Middleware", str]]] = None,
103+
middleware: Sequence[tuple["Middleware", str]] | None = None,
105104
) -> None:
106105
"""
107106
:param provider: a single provider used to connect to Ethereum
@@ -143,8 +142,8 @@ def from_web3(cls, w3: "Web3", addr: ChecksumAddress = None) -> "ENS":
143142
def address(
144143
self,
145144
name: str,
146-
coin_type: Optional[int] = None,
147-
) -> Optional[ChecksumAddress]:
145+
coin_type: int | None = None,
146+
) -> ChecksumAddress | None:
148147
"""
149148
Look up the Ethereum address that `name` currently points to.
150149
@@ -173,12 +172,12 @@ def address(
173172
def setup_address(
174173
self,
175174
name: str,
176-
address: Union[Address, ChecksumAddress, HexAddress] = cast( # noqa: B008
177-
ChecksumAddress, default
178-
),
179-
coin_type: Optional[int] = None,
175+
address: Address
176+
| ChecksumAddress
177+
| HexAddress = cast(ChecksumAddress, default), # noqa: B008
178+
coin_type: int | None = None,
180179
transact: Optional["TxParams"] = None,
181-
) -> Optional[HexBytes]:
180+
) -> HexBytes | None:
182181
"""
183182
Set up the name to point to the supplied address.
184183
The sender of the transaction must own the name, or
@@ -228,7 +227,7 @@ def setup_address(
228227
transact
229228
)
230229

231-
def name(self, address: ChecksumAddress) -> Optional[str]:
230+
def name(self, address: ChecksumAddress) -> str | None:
232231
"""
233232
Look up the name that the address points to, using a
234233
reverse lookup. Reverse lookup is opt-in for name owners.
@@ -246,7 +245,7 @@ def name(self, address: ChecksumAddress) -> Optional[str]:
246245
def setup_name(
247246
self,
248247
name: str,
249-
address: Optional[ChecksumAddress] = None,
248+
address: ChecksumAddress | None = None,
250249
transact: Optional["TxParams"] = None,
251250
) -> HexBytes:
252251
"""
@@ -312,7 +311,7 @@ def setup_owner(
312311
name: str,
313312
new_owner: ChecksumAddress = None,
314313
transact: Optional["TxParams"] = None,
315-
) -> Optional[ChecksumAddress]:
314+
) -> ChecksumAddress | None:
316315
"""
317316
Set the owner of the supplied name to `new_owner`.
318317
@@ -454,7 +453,7 @@ def _get_resolver(
454453
def _set_resolver(
455454
self,
456455
name: str,
457-
resolver_addr: Optional[ChecksumAddress] = None,
456+
resolver_addr: ChecksumAddress | None = None,
458457
transact: Optional["TxParams"] = None,
459458
) -> "Contract":
460459
if not transact:
@@ -469,7 +468,7 @@ def _set_resolver(
469468

470469
def _resolve(
471470
self, name: str, fn_name: str = "addr"
472-
) -> Optional[Union[ChecksumAddress, str]]:
471+
) -> ChecksumAddress | str | None:
473472
normal_name = normalize_name(name)
474473
resolver, current_name = self._get_resolver(normal_name, fn_name)
475474
if not resolver:
@@ -502,7 +501,7 @@ def _assert_control(
502501
self,
503502
account: ChecksumAddress,
504503
name: str,
505-
parent_owned: Optional[str] = None,
504+
parent_owned: str | None = None,
506505
) -> None:
507506
if not address_in(account, self.w3.eth.accounts):
508507
raise UnauthorizedError(
@@ -512,7 +511,7 @@ def _assert_control(
512511

513512
def _first_owner(
514513
self, name: str
515-
) -> tuple[Optional[ChecksumAddress], Sequence[str], str]:
514+
) -> tuple[ChecksumAddress | None, Sequence[str], str]:
516515
"""
517516
Takes a name, and returns the owner of the deepest subdomain that has an owner
518517
@@ -533,7 +532,7 @@ def _claim_ownership(
533532
owner: ChecksumAddress,
534533
unowned: Sequence[str],
535534
owned: str,
536-
old_owner: Optional[ChecksumAddress] = None,
535+
old_owner: ChecksumAddress | None = None,
537536
transact: Optional["TxParams"] = None,
538537
) -> None:
539538
if not transact:
@@ -550,7 +549,7 @@ def _claim_ownership(
550549

551550
def _setup_reverse(
552551
self,
553-
name: Optional[str],
552+
name: str | None,
554553
address: ChecksumAddress,
555554
transact: Optional["TxParams"] = None,
556555
) -> HexBytes:

ens/utils.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99
from typing import (
1010
TYPE_CHECKING,
1111
Any,
12-
Optional,
13-
Union,
1412
cast,
1513
)
1614
import warnings
@@ -76,7 +74,7 @@ def Web3() -> type["_Web3"]:
7674

7775
def init_web3(
7876
provider: "BaseProvider" = None,
79-
middleware: Optional[Sequence[tuple["Middleware", str]]] = None,
77+
middleware: Sequence[tuple["Middleware", str]] | None = None,
8078
) -> "_Web3":
8179
from web3 import (
8280
Web3 as Web3Main,
@@ -195,11 +193,11 @@ def is_valid_name(name: str) -> bool:
195193
return False
196194

197195

198-
def to_utc_datetime(timestamp: float) -> Optional[datetime]:
196+
def to_utc_datetime(timestamp: float) -> datetime | None:
199197
return datetime.fromtimestamp(timestamp, timezone.utc) if timestamp else None
200198

201199

202-
def sha3_text(val: Union[str, bytes]) -> HexBytes:
200+
def sha3_text(val: str | bytes) -> HexBytes:
203201
if isinstance(val, str):
204202
val = val.encode("utf-8")
205203
return Web3().keccak(val)
@@ -278,7 +276,7 @@ def assert_signer_in_modifier_kwargs(modifier_kwargs: Any) -> ChecksumAddress:
278276
return modifier_dict["from"]
279277

280278

281-
def is_none_or_zero_address(addr: Union[Address, ChecksumAddress, HexAddress]) -> bool:
279+
def is_none_or_zero_address(addr: Address | ChecksumAddress | HexAddress) -> bool:
282280
return not addr or addr == EMPTY_ADDR_HEX
283281

284282

@@ -301,7 +299,7 @@ def is_valid_ens_name(ens_name: str) -> bool:
301299

302300
def init_async_web3(
303301
provider: "AsyncBaseProvider" = None,
304-
middleware: Optional[Sequence[tuple["Middleware", str]]] = (),
302+
middleware: Sequence[tuple["Middleware", str]] | None = (),
305303
) -> "AsyncWeb3[Any]":
306304
from web3 import (
307305
AsyncWeb3 as AsyncWeb3Main,

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ disallow_untyped_calls = true
2626
disallow_untyped_decorators = false
2727
disallow_untyped_defs = true
2828
ignore_missing_imports = true
29+
python_version="3.10"
2930
strict_equality = true
3031
strict_optional = false
3132
warn_redundant_casts = true

0 commit comments

Comments
 (0)