Remove import-froms for errors.

This commit is contained in:
Ethan Dalool 2020-03-23 20:54:50 -07:00
parent 86e6756b2c
commit 6d59de416e

View file

@ -17,8 +17,8 @@ import shutil
import requests import requests
from tenacity import retry, wait_exponential, retry_if_exception_type from tenacity import retry, wait_exponential, retry_if_exception_type
from . import crypto
from . import errors from . import errors
from .errors import ValidationError, RequestError, error_for_code
from .crypto import ( from .crypto import (
a32_to_base64, encrypt_key, base64_url_encode, encrypt_attr, base64_to_a32, a32_to_base64, encrypt_key, base64_url_encode, encrypt_attr, base64_to_a32,
base64_url_decode, decrypt_attr, a32_to_str, get_chunks, str_to_a32, base64_url_decode, decrypt_attr, a32_to_str, get_chunks, str_to_a32,
@ -78,7 +78,7 @@ class Mega:
json_resp = json_resp[0] json_resp = json_resp[0]
if isinstance(json_resp, int): if isinstance(json_resp, int):
# If this raises EAGAIN it'll be caught by tenacity retry. # If this raises EAGAIN it'll be caught by tenacity retry.
raise error_for_code(json_resp) raise errors.error_for_code(json_resp)
return json_resp[0] return json_resp[0]
def _api_account_version_and_salt(self, email): def _api_account_version_and_salt(self, email):
@ -147,7 +147,7 @@ class Mega:
resp = self._api_start_session(email, user_hash) resp = self._api_start_session(email, user_hash)
if isinstance(resp, int): if isinstance(resp, int):
raise RequestError(resp) raise errors.RequestError(resp)
self._login_process(resp, password_aes) self._login_process(resp, password_aes)
def login_anonymous(self): def login_anonymous(self):
@ -164,7 +164,7 @@ class Mega:
resp = self._api_start_session(user) resp = self._api_start_session(user)
if isinstance(resp, int): if isinstance(resp, int):
raise RequestError(resp) raise errors.RequestError(resp)
self._login_process(resp, password_key) self._login_process(resp, password_key)
def _login_process(self, resp, password): def _login_process(self, resp, password):
@ -231,7 +231,7 @@ class Mega:
# File urls are '#!', Folder urls are '#F!' # File urls are '#!', Folder urls are '#F!'
match = re.findall(r'/#F?!(.*)!(.*)', url) match = re.findall(r'/#F?!(.*)!(.*)', url)
if not match: if not match:
raise ValidationError('Invalid public url. Should have /#!id!key') raise errors.ValidationError('Invalid public url. Should have /#!id!key')
(public_handle, decryption_key) = match[0] (public_handle, decryption_key) = match[0]
return (public_handle, decryption_key) return (public_handle, decryption_key)
@ -435,7 +435,7 @@ class Mega:
if 'h' in file and 'k' in file: if 'h' in file and 'k' in file:
public_handle = self._api_request({'a': 'l', 'n': file['h']}) public_handle = self._api_request({'a': 'l', 'n': file['h']})
if public_handle == -11: if public_handle == -11:
raise RequestError( raise errors.RequestError(
"Can't get a public link from that file " "Can't get a public link from that file "
"(is this a shared file?)" "(is this a shared file?)"
) )
@ -445,7 +445,7 @@ class Mega:
f'/#!{public_handle}!{decrypted_key}' f'/#!{public_handle}!{decrypted_key}'
) )
else: else:
raise ValidationError('File id and key must be present') raise errors.ValidationError('File id and key must be present')
def _node_data(self, node): def _node_data(self, node):
try: try:
@ -461,7 +461,7 @@ class Mega:
if 'h' in file and 'k' in file: if 'h' in file and 'k' in file:
public_handle = self._api_request({'a': 'l', 'n': file['h']}) public_handle = self._api_request({'a': 'l', 'n': file['h']})
if public_handle == -11: if public_handle == -11:
raise RequestError( raise errors.RequestError(
"Can't get a public link from that file " "Can't get a public link from that file "
"(is this a shared file?)" "(is this a shared file?)"
) )
@ -471,7 +471,7 @@ class Mega:
f'/#F!{public_handle}!{decrypted_key}' f'/#F!{public_handle}!{decrypted_key}'
) )
else: else:
raise ValidationError('File id and key must be present') raise errors.ValidationError('File id and key must be present')
def get_user(self): def get_user(self):
user_data = self._api_request({'a': 'ug'}) user_data = self._api_request({'a': 'ug'})
@ -658,7 +658,7 @@ class Mega:
try: try:
# If already exported # If already exported
return self.get_folder_link(node) return self.get_folder_link(node)
except (RequestError, KeyError): except (errors.RequestError, KeyError):
pass pass
master_key_cipher = AES.new(a32_to_str(self.master_key), AES.MODE_ECB) master_key_cipher = AES.new(a32_to_str(self.master_key), AES.MODE_ECB)
@ -745,7 +745,7 @@ class Mega:
# inaccessible also in the official also in the official web app. # inaccessible also in the official also in the official web app.
# Strangely, files can come back later. # Strangely, files can come back later.
if 'g' not in file_data: if 'g' not in file_data:
raise RequestError('File not accessible anymore') raise errors.RequestError('File not accessible anymore')
file_url = file_data['g'] file_url = file_data['g']
file_size = file_data['s'] file_size = file_data['s']
attribs = base64_url_decode(file_data['at']) attribs = base64_url_decode(file_data['at'])
@ -1040,10 +1040,10 @@ class Mega:
elif add is False: elif add is False:
l = '0' # remove command l = '0' # remove command
else: else:
raise ValidationError('add parameter must be of type bool') raise errors.ValidationError('add parameter must be of type bool')
if not re.match(r"[^@]+@[^@]+\.[^@]+", email): if not re.match(r"[^@]+@[^@]+\.[^@]+", email):
ValidationError('add_contact requires a valid email address') raise errors.ValidationError('add_contact requires a valid email address')
else: else:
request = { request = {
'a': 'ur', 'a': 'ur',
@ -1176,7 +1176,7 @@ class Mega:
""" """
data = self._api_request({'a': 'g', 'p': file_handle, 'ssm': 1}) data = self._api_request({'a': 'g', 'p': file_handle, 'ssm': 1})
if isinstance(data, int): if isinstance(data, int):
raise RequestError(data) raise errors.RequestError(data)
if 'at' not in data or 's' not in data: if 'at' not in data or 's' not in data:
raise ValueError("Unexpected result", data) raise ValueError("Unexpected result", data)