@@ -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 )
0 commit comments