def get_client()

in firebase_admin/db.py [0:0]


    def get_client(self, db_url=None):
        """Creates a client based on the db_url. Clients may be cached."""
        if db_url is None:
            db_url = self._db_url

        if not db_url or not isinstance(db_url, str):
            raise ValueError(
                'Invalid database URL: "{0}". Database URL must be a non-empty '
                'URL string.'.format(db_url))

        parsed_url = parse.urlparse(db_url)
        if not parsed_url.netloc:
            raise ValueError(
                'Invalid database URL: "{0}". Database URL must be a wellformed '
                'URL string.'.format(db_url))

        emulator_config = self._get_emulator_config(parsed_url)
        if emulator_config:
            credential = _utils.EmulatorAdminCredentials()
            base_url = emulator_config.base_url
            params = {'ns': emulator_config.namespace}
        else:
            # Defer credential lookup until we are certain it's going to be prod connection.
            credential = self._credential.get_credential()
            base_url = 'https://{0}'.format(parsed_url.netloc)
            params = {}


        if self._auth_override:
            params['auth_variable_override'] = self._auth_override

        client_cache_key = (base_url, json.dumps(params, sort_keys=True))
        if client_cache_key not in self._clients:
            client = _Client(credential, base_url, self._timeout, params)
            self._clients[client_cache_key] = client
        return self._clients[client_cache_key]