diff --git a/firebase_admin/__init__.py b/firebase_admin/__init__.py index 7e3b2eab0..833cab3d7 100644 --- a/firebase_admin/__init__.py +++ b/firebase_admin/__init__.py @@ -175,11 +175,13 @@ def _load_from_environment(self): with open(config_file, 'r') as json_file: json_str = json_file.read() except Exception as err: - raise ValueError('Unable to read file {}. {}'.format(config_file, err)) + raise ValueError('Unable to read file {}. {}'.format(config_file, err)) from err try: json_data = json.loads(json_str) except Exception as err: - raise ValueError('JSON string "{0}" is not valid json. {1}'.format(json_str, err)) + raise ValueError( + 'JSON string "{0}" is not valid json. {1}'.format(json_str, err) + ) from err return {k: v for k, v in json_data.items() if k in _CONFIG_VALID_KEYS} diff --git a/firebase_admin/_auth_providers.py b/firebase_admin/_auth_providers.py index 31511f3c5..e69e83888 100644 --- a/firebase_admin/_auth_providers.py +++ b/firebase_admin/_auth_providers.py @@ -379,7 +379,7 @@ def _make_request(self, method, path, **kwargs): try: return self.http_client.body(method, url, **kwargs) except requests.exceptions.RequestException as error: - raise _auth_utils.handle_auth_backend_error(error) + raise _auth_utils.handle_auth_backend_error(error) from error def _validate_oidc_provider_id(provider_id): diff --git a/firebase_admin/_token_gen.py b/firebase_admin/_token_gen.py index 32c109d5d..918d67ec9 100644 --- a/firebase_admin/_token_gen.py +++ b/firebase_admin/_token_gen.py @@ -158,7 +158,7 @@ def signing_provider(self): 'Failed to determine service account: {0}. Make sure to initialize the SDK ' 'with service account credentials or specify a service account ID with ' 'iam.serviceAccounts.signBlob permission. Please refer to {1} for more ' - 'details on creating custom tokens.'.format(error, url)) + 'details on creating custom tokens.'.format(error, url)) from error return self._signing_provider def create_custom_token(self, uid, developer_claims=None, tenant_id=None): @@ -203,7 +203,7 @@ def create_custom_token(self, uid, developer_claims=None, tenant_id=None): return jwt.encode(signing_provider.signer, payload, header=header) except google.auth.exceptions.TransportError as error: msg = 'Failed to sign custom token. {0}'.format(error) - raise TokenSignError(msg, error) + raise TokenSignError(msg, error) from error def create_session_cookie(self, id_token, expires_in): @@ -233,7 +233,7 @@ def create_session_cookie(self, id_token, expires_in): try: body, http_resp = self.http_client.body_and_response('post', url, json=payload) except requests.exceptions.RequestException as error: - raise _auth_utils.handle_auth_backend_error(error) + raise _auth_utils.handle_auth_backend_error(error) from error else: if not body or not body.get('sessionCookie'): raise _auth_utils.UnexpectedResponseError( @@ -397,11 +397,11 @@ def verify(self, token, request): verified_claims['uid'] = verified_claims['sub'] return verified_claims except google.auth.exceptions.TransportError as error: - raise CertificateFetchError(str(error), cause=error) + raise CertificateFetchError(str(error), cause=error) from error except ValueError as error: if 'Token expired' in str(error): - raise self._expired_token_error(str(error), cause=error) - raise self._invalid_token_error(str(error), cause=error) + raise self._expired_token_error(str(error), cause=error) from error + raise self._invalid_token_error(str(error), cause=error) from error def _decode_unverified(self, token): try: @@ -409,7 +409,7 @@ def _decode_unverified(self, token): payload = jwt.decode(token, verify=False) return header, payload except ValueError as error: - raise self._invalid_token_error(str(error), cause=error) + raise self._invalid_token_error(str(error), cause=error) from error class TokenSignError(exceptions.UnknownError): diff --git a/firebase_admin/_user_mgt.py b/firebase_admin/_user_mgt.py index c77c4d40d..7b65a3b1e 100644 --- a/firebase_admin/_user_mgt.py +++ b/firebase_admin/_user_mgt.py @@ -841,7 +841,7 @@ def _make_request(self, method, path, **kwargs): try: return self.http_client.body_and_response(method, url, **kwargs) except requests.exceptions.RequestException as error: - raise _auth_utils.handle_auth_backend_error(error) + raise _auth_utils.handle_auth_backend_error(error) from error class _UserIterator(_auth_utils.PageIterator): diff --git a/firebase_admin/app_check.py b/firebase_admin/app_check.py index 91b0c4c31..d843166d2 100644 --- a/firebase_admin/app_check.py +++ b/firebase_admin/app_check.py @@ -122,7 +122,7 @@ def _decode_and_verify(self, token: str, signing_key: str): except InvalidTokenError as exception: raise ValueError( f'Decoding App Check token failed. Error: {exception}' - ) + ) from exception audience = payload.get('aud') if not isinstance(audience, list) or self._scoped_project_id not in audience: diff --git a/firebase_admin/credentials.py b/firebase_admin/credentials.py index 5477e1cf7..22c48599a 100644 --- a/firebase_admin/credentials.py +++ b/firebase_admin/credentials.py @@ -97,7 +97,7 @@ def __init__(self, cert): json_data, scopes=_scopes) except ValueError as error: raise ValueError('Failed to initialize a certificate credential. ' - 'Caused by: "{0}"'.format(error)) + 'Caused by: "{0}"'.format(error)) from error @property def project_id(self): diff --git a/firebase_admin/db.py b/firebase_admin/db.py index 890968796..0bd7938ca 100644 --- a/firebase_admin/db.py +++ b/firebase_admin/db.py @@ -299,7 +299,7 @@ def set_if_unchanged(self, expected_etag, value): snapshot = http_response.json() return False, snapshot, etag - raise error + raise def push(self, value=''): """Creates a new child node. @@ -470,7 +470,7 @@ def _listen_with_session(self, callback, session=None): sse = _sseclient.SSEClient(url, session) return ListenerRegistration(callback, sse) except requests.exceptions.RequestException as error: - raise _Client.handle_rtdb_error(error) + raise _Client.handle_rtdb_error(error) from error class Query: @@ -928,7 +928,7 @@ def request(self, method, url, **kwargs): try: return super(_Client, self).request(method, url, **kwargs) except requests.exceptions.RequestException as error: - raise _Client.handle_rtdb_error(error) + raise _Client.handle_rtdb_error(error) from error def create_listener_session(self): return _sseclient.KeepAuthSession(self.credential) diff --git a/firebase_admin/instance_id.py b/firebase_admin/instance_id.py index 604158d9c..ec9c1eba4 100644 --- a/firebase_admin/instance_id.py +++ b/firebase_admin/instance_id.py @@ -86,7 +86,7 @@ def delete_instance_id(self, instance_id): self._client.request('delete', path) except requests.exceptions.RequestException as error: msg = self._extract_message(instance_id, error) - raise _utils.handle_requests_error(error, msg) + raise _utils.handle_requests_error(error, msg) from error def _extract_message(self, instance_id, error): if error.response is None: diff --git a/firebase_admin/messaging.py b/firebase_admin/messaging.py index 46dd7d410..d4615420e 100644 --- a/firebase_admin/messaging.py +++ b/firebase_admin/messaging.py @@ -352,7 +352,7 @@ def send(self, message, dry_run=False): json=data ) except requests.exceptions.RequestException as error: - raise self._handle_fcm_error(error) + raise self._handle_fcm_error(error) from error else: return resp['name'] @@ -390,7 +390,7 @@ def batch_callback(_, response, error): try: batch.execute() except Exception as error: - raise self._handle_batch_error(error) + raise self._handle_batch_error(error) from error else: return BatchResponse(responses) @@ -421,7 +421,7 @@ def make_topic_management_request(self, tokens, topic, operation): headers=_MessagingService.IID_HEADERS ) except requests.exceptions.RequestException as error: - raise self._handle_iid_error(error) + raise self._handle_iid_error(error) from error else: return TopicManagementResponse(resp) diff --git a/firebase_admin/ml.py b/firebase_admin/ml.py index 98bdbb56a..03c64aa00 100644 --- a/firebase_admin/ml.py +++ b/firebase_admin/ml.py @@ -855,7 +855,7 @@ def get_operation(self, op_name): try: return self._operation_client.body('get', url=op_name) except requests.exceptions.RequestException as error: - raise _utils.handle_platform_error_from_requests(error) + raise _utils.handle_platform_error_from_requests(error) from error def _exponential_backoff(self, current_attempt, stop_time): """Sleeps for the appropriate amount of time. Or throws deadline exceeded.""" @@ -932,7 +932,7 @@ def create_model(self, model): return self.handle_operation( self._client.body('post', url='models', json=model.as_dict(for_upload=True))) except requests.exceptions.RequestException as error: - raise _utils.handle_platform_error_from_requests(error) + raise _utils.handle_platform_error_from_requests(error) from error def update_model(self, model, update_mask=None): _validate_model(model, update_mask) @@ -943,7 +943,7 @@ def update_model(self, model, update_mask=None): return self.handle_operation( self._client.body('patch', url=path, json=model.as_dict(for_upload=True))) except requests.exceptions.RequestException as error: - raise _utils.handle_platform_error_from_requests(error) + raise _utils.handle_platform_error_from_requests(error) from error def set_published(self, model_id, publish): _validate_model_id(model_id) @@ -961,7 +961,7 @@ def get_model(self, model_id): try: return self._client.body('get', url='models/{0}'.format(model_id)) except requests.exceptions.RequestException as error: - raise _utils.handle_platform_error_from_requests(error) + raise _utils.handle_platform_error_from_requests(error) from error def list_models(self, list_filter, page_size, page_token): """ lists Firebase ML models.""" @@ -982,11 +982,11 @@ def list_models(self, list_filter, page_size, page_token): try: return self._client.body('get', url=path) except requests.exceptions.RequestException as error: - raise _utils.handle_platform_error_from_requests(error) + raise _utils.handle_platform_error_from_requests(error) from error def delete_model(self, model_id): _validate_model_id(model_id) try: self._client.body('delete', url='models/{0}'.format(model_id)) except requests.exceptions.RequestException as error: - raise _utils.handle_platform_error_from_requests(error) + raise _utils.handle_platform_error_from_requests(error) from error diff --git a/firebase_admin/project_management.py b/firebase_admin/project_management.py index ed292b80f..9512e61a6 100644 --- a/firebase_admin/project_management.py +++ b/firebase_admin/project_management.py @@ -661,4 +661,4 @@ def _body_and_response(self, method, url, json=None): try: return self._client.body_and_response(method=method, url=url, json=json) except requests.exceptions.RequestException as error: - raise _utils.handle_platform_error_from_requests(error) + raise _utils.handle_platform_error_from_requests(error) from error diff --git a/firebase_admin/tenant_mgt.py b/firebase_admin/tenant_mgt.py index 396a819fb..015218b34 100644 --- a/firebase_admin/tenant_mgt.py +++ b/firebase_admin/tenant_mgt.py @@ -267,7 +267,7 @@ def get_tenant(self, tenant_id): try: body = self.client.body('get', '/tenants/{0}'.format(tenant_id)) except requests.exceptions.RequestException as error: - raise _auth_utils.handle_auth_backend_error(error) + raise _auth_utils.handle_auth_backend_error(error) from error else: return Tenant(body) @@ -286,7 +286,7 @@ def create_tenant( try: body = self.client.body('post', '/tenants', json=payload) except requests.exceptions.RequestException as error: - raise _auth_utils.handle_auth_backend_error(error) + raise _auth_utils.handle_auth_backend_error(error) from error else: return Tenant(body) @@ -316,7 +316,7 @@ def update_tenant( try: body = self.client.body('patch', url, json=payload, params=params) except requests.exceptions.RequestException as error: - raise _auth_utils.handle_auth_backend_error(error) + raise _auth_utils.handle_auth_backend_error(error) from error else: return Tenant(body) @@ -329,7 +329,7 @@ def delete_tenant(self, tenant_id): try: self.client.request('delete', '/tenants/{0}'.format(tenant_id)) except requests.exceptions.RequestException as error: - raise _auth_utils.handle_auth_backend_error(error) + raise _auth_utils.handle_auth_backend_error(error) from error def list_tenants(self, page_token=None, max_results=_MAX_LIST_TENANTS_RESULTS): """Retrieves a batch of tenants.""" @@ -349,7 +349,7 @@ def list_tenants(self, page_token=None, max_results=_MAX_LIST_TENANTS_RESULTS): try: return self.client.body('get', '/tenants', params=payload) except requests.exceptions.RequestException as error: - raise _auth_utils.handle_auth_backend_error(error) + raise _auth_utils.handle_auth_backend_error(error) from error class ListTenantsPage: