Skip to content

Commit

Permalink
chore: wip
Browse files Browse the repository at this point in the history
  • Loading branch information
antazoey committed Oct 10, 2023
1 parent 1064516 commit 5da3506
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 3 deletions.
2 changes: 1 addition & 1 deletion src/ape/api/networks.py
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,7 @@ def default_network(self) -> str:
return self.networks[0]

# Very unlikely scenario.
raise ValueError("No networks found.")
raise NetworkError("No networks found.")

def set_default_network(self, network_name: str):
"""
Expand Down
15 changes: 13 additions & 2 deletions src/ape/managers/converters.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from datetime import datetime, timedelta, timezone
from decimal import Decimal
from typing import Any, Dict, List, Sequence, Tuple, Type, Union
from eth_typing.evm import ChecksumAddress

from dateutil.parser import parse # type: ignore
from eth_utils import (
Expand Down Expand Up @@ -270,7 +271,7 @@ def _converters(self) -> Dict[Type, List[ConverterAPI]]:
for plugin_name, (conversion_type, converter_class) in self.plugin_manager.converters:
converter = converter_class()
if conversion_type not in converters:
options = ", ".join([t.__name__ for t in converters])
options = ", ".join([_get_type_name_from_type(t) for t in converters])
raise ConversionError(f"Type '{conversion_type}' must be one of [{options}].")

converters[conversion_type].append(converter)
Expand Down Expand Up @@ -329,7 +330,7 @@ def convert(self, value: Any, type: Union[Type, Tuple, List]) -> Any:
)

elif type not in self._converters:
options = ", ".join([t.__name__ for t in self._converters])
options = ", ".join([_get_type_name_from_type(t) for t in self._converters])
raise ConversionError(f"Type '{type}' must be one of [{options}].")

elif self.is_type(value, type) and not isinstance(value, (list, tuple)):
Expand Down Expand Up @@ -408,3 +409,13 @@ def get_real_type(type_):
converted_fields[field_name] = converted_value

return {**kwargs, **converted_fields}


def _get_type_name_from_type(var_type: Type) -> str:
if var_type.__name__ == "Annotated" and (real_types := getattr(var_type, "__args__", None)):
# Is a NewType
result = real_types[0].__name__
if result == ChecksumAddress.__name__:
return "AddressType"

return var_type.__name__

0 comments on commit 5da3506

Please sign in to comment.