diff --git a/ens/main.py b/ens/main.py index 3e021473ad..8bf6579ff5 100644 --- a/ens/main.py +++ b/ens/main.py @@ -12,6 +12,7 @@ Union, cast, ) +import warnings from eth_typing import ( Address, @@ -259,6 +260,12 @@ def setup_name( return self._setup_reverse(name, address, transact=transact) def resolve(self, name: str, get: str = 'addr') -> Optional[Union[ChecksumAddress, str]]: + warnings.warn( + "In v6, the resolve() method will be made internal and renamed to _resolve(). The " + "'get' param name will also change to 'fn_name'.", + category=DeprecationWarning, + ) + normal_name = normalize_name(name) resolver = self.resolver(normal_name) if resolver: @@ -272,6 +279,12 @@ def resolve(self, name: str, get: str = 'addr') -> Optional[Union[ChecksumAddres return None def resolver(self, normal_name: str) -> Optional['Contract']: + warnings.warn( + "The function signature for resolver() will change in v6 to accept 'name' as a param, " + "over 'normalized_name', and the method will normalize the name internally.", + category=FutureWarning, + ) + resolver_addr = self.ens.caller.resolver(normal_name_to_hash(normal_name)) if is_none_or_zero_address(resolver_addr): return None diff --git a/newsfragments/2452.misc.rst b/newsfragments/2452.misc.rst new file mode 100644 index 0000000000..0065c6e910 --- /dev/null +++ b/newsfragments/2452.misc.rst @@ -0,0 +1 @@ +Add deprecation and future warnings for ENS changes in v6 \ No newline at end of file diff --git a/tests/ens/test_v6_warnings.py b/tests/ens/test_v6_warnings.py new file mode 100644 index 0000000000..a95e00fde1 --- /dev/null +++ b/tests/ens/test_v6_warnings.py @@ -0,0 +1,19 @@ +import pytest + + +def test_resolve_deprecation_warning(ens): + with pytest.warns( + DeprecationWarning, + match="In v6, the resolve\\(\\) method will be made internal and renamed to " + "_resolve\\(\\). The 'get' param name will also change to 'fn_name'.", + ): + ens.resolve('tester.eth') + + +def test_resolver_future_warning(ens): + with pytest.warns( + FutureWarning, + match="The function signature for resolver\\(\\) will change in v6 to accept 'name' as a " + "param, over 'normalized_name', and the method will normalize the name internally.", + ): + ens.resolver('tester.eth')