docs: def dial(self, target):
          '''
          connects to a node
  
          :param url: string (optional) - resource in which to connect.
          if not provided, will use default for the stage
          :returns: provider, error
          '''
  
          if not target:
              return None, "target network must be specified with -t or --target"
  
          url = get_url(self.config, target)
  
          try:
              if url.startswith('ws'):
                  self.w3 = Web3(WebsocketProvider(url))
              elif url.startswith('http'):
                  self.w3 = Web3(HTTPProvider(url))
              elif url.endswith('ipc'):
                  if url == 'ipc':
                      url = None
                  self.w3 = Web3(Web3.IPCProvider(url))
              else:
                  return None, "Invalid Provider URL: {}".format(url)
  
          except Exception as e:
              return None, e
  
          return self.w3, None