Skip to content

Commit 309d0c7

Browse files
authored
fix: include URI in provider.network_choice (#2449)
1 parent 11f93d0 commit 309d0c7

File tree

9 files changed

+249
-167
lines changed

9 files changed

+249
-167
lines changed

src/ape/api/networks.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -807,7 +807,6 @@ def empty(self) -> bool:
807807
"""
808808
``True`` when there are no providers in the context.
809809
"""
810-
811810
return not self.connected_providers or not self.provider_stack
812811

813812
def __enter__(self, *args, **kwargs):
@@ -895,7 +894,7 @@ def disconnect_all(self):
895894
self.connected_providers = {}
896895

897896

898-
def _set_provider(provider: "ProviderAPI") -> "ProviderAPI":
897+
def _connect_provider(provider: "ProviderAPI") -> "ProviderAPI":
899898
connection_id = provider.connection_id
900899
if connection_id in ProviderContextManager.connected_providers:
901900
# Likely multi-chain testing or utilizing multiple on-going connections.
@@ -1194,6 +1193,7 @@ def get_provider(
11941193
self,
11951194
provider_name: Optional[str] = None,
11961195
provider_settings: Optional[dict] = None,
1196+
connect: bool = False,
11971197
):
11981198
"""
11991199
Get a provider for the given name. If given ``None``, returns the default provider.
@@ -1203,6 +1203,7 @@ def get_provider(
12031203
When ``None``, returns the default provider.
12041204
provider_settings (dict, optional): Settings to apply to the provider. Defaults to
12051205
``None``.
1206+
connect (bool): Set to ``True`` when you also want the provider to connect.
12061207
12071208
Returns:
12081209
:class:`~ape.api.providers.ProviderAPI`
@@ -1215,7 +1216,6 @@ def get_provider(
12151216
f"\n {self.name}:"
12161217
"\n default_provider: <DEFAULT_PROVIDER>"
12171218
)
1218-
12191219
provider_settings = provider_settings or {}
12201220
if ":" in provider_name:
12211221
# NOTE: Shortcut that allows `--network ecosystem:network:http://...` to work
@@ -1228,7 +1228,7 @@ def get_provider(
12281228

12291229
if provider_name in self.providers:
12301230
provider = self.providers[provider_name](provider_settings=provider_settings)
1231-
return _set_provider(provider)
1231+
return _connect_provider(provider) if connect else provider
12321232

12331233
elif self.is_fork:
12341234
# If it can fork Ethereum (and we are asking for it) assume it can fork this one.
@@ -1239,7 +1239,7 @@ def get_provider(
12391239
provider_settings=provider_settings,
12401240
network=self,
12411241
)
1242-
return _set_provider(provider)
1242+
return _connect_provider(provider) if connect else provider
12431243

12441244
raise ProviderNotFoundError(
12451245
provider_name,
@@ -1288,7 +1288,7 @@ def use_provider(
12881288
# NOTE: The main reason we allow a provider instance here is to avoid unnecessarily
12891289
# re-initializing the class.
12901290
provider_obj = (
1291-
self.get_provider(provider_name=provider, provider_settings=settings)
1291+
self.get_provider(provider_name=provider, provider_settings=settings, connect=True)
12921292
if isinstance(provider, str)
12931293
else provider
12941294
)
@@ -1448,7 +1448,6 @@ def upstream_provider(self) -> "UpstreamProvider":
14481448
When not set, will attempt to use the default provider, if one
14491449
exists.
14501450
"""
1451-
14521451
config_choice: str = self.config.get("upstream_provider")
14531452
if provider_name := config_choice or self.upstream_network.default_provider_name:
14541453
return self.upstream_network.get_provider(provider_name)

src/ape_ethereum/ecosystem.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
ConversionError,
3636
CustomError,
3737
DecodingError,
38-
ProviderError,
3938
SignatureError,
4039
)
4140
from ape.logging import logger
@@ -1459,7 +1458,7 @@ def decode_custom_error(
14591458
try:
14601459
if not (last_addr := next(trace.get_addresses_used(reverse=True), None)):
14611460
return None
1462-
except ProviderError:
1461+
except Exception:
14631462
# When unable to get trace-frames properly, such as eth-tester.
14641463
return None
14651464

0 commit comments

Comments
 (0)