Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def load(self, source, mode='t', encoding=None):
# Prepare source
source = helpers.requote_uri(source)
# Prepare bytes
try:
parts = urlparse(source, allow_fragments=False)
response = self.__s3_client.get_object(Bucket=parts.netloc, Key=parts.path[1:])
# https://github.com/frictionlessdata/tabulator-py/issues/271
bytes = io.BufferedRandom(io.BytesIO())
bytes.write(response['Body'].read())
bytes.seek(0)
if self.__stats:
bytes = helpers.BytesStatsWrapper(bytes, self.__stats)
except Exception as exception:
raise exceptions.IOError(str(exception))
# Return bytes
if mode == 'b':
return bytes
# Detect encoding
if self.__bytes_sample_size:
sample = bytes.read(self.__bytes_sample_size)
bytes.seek(0)
encoding = helpers.detect_encoding(sample, encoding)
# Prepare chars
chars = io.TextIOWrapper(bytes, encoding)
def load(self, source, mode='t', encoding=None):
# Support only bytes
if hasattr(source, 'encoding'):
message = 'Only byte streams are supported.'
raise exceptions.SourceError(message)
# Prepare bytes
bytes = source
if self.__stats:
bytes = helpers.BytesStatsWrapper(bytes, self.__stats)
# Return bytes
if mode == 'b':
return bytes
# Detect encoding
if self.__bytes_sample_size:
sample = bytes.read(self.__bytes_sample_size)
bytes.seek(0)
encoding = helpers.detect_encoding(sample, encoding)
# Prepare chars
chars = io.TextIOWrapper(bytes, encoding)
return chars
def load(self, source, mode='t', encoding=None):
# Prepare source
source = helpers.requote_uri(source)
# Prepare bytes
try:
bytes = _RemoteStream(source, self.__http_session, self.__http_timeout).open()
if not self.__http_stream:
buffer = io.BufferedRandom(io.BytesIO())
buffer.write(bytes.read())
buffer.seek(0)
bytes = buffer
if self.__stats:
bytes = helpers.BytesStatsWrapper(bytes, self.__stats)
except IOError as exception:
raise exceptions.HTTPError(str(exception))
# Return bytes
if mode == 'b':
return bytes
# Detect encoding
if self.__bytes_sample_size:
sample = bytes.read(self.__bytes_sample_size)
bytes.seek(0)
encoding = helpers.detect_encoding(sample, encoding)
# Prepare chars
chars = io.TextIOWrapper(bytes, encoding)
def load(self, source, mode='t', encoding=None):
# Prepare source
scheme = 'file://'
if source.startswith(scheme):
source = source.replace(scheme, '', 1)
# Prepare bytes
try:
bytes = io.open(source, 'rb')
if self.__stats:
bytes = helpers.BytesStatsWrapper(bytes, self.__stats)
except IOError as exception:
raise exceptions.IOError(str(exception))
# Return bytes
if mode == 'b':
return bytes
# Detect encoding
if self.__bytes_sample_size:
sample = bytes.read(self.__bytes_sample_size)
bytes.seek(0)
encoding = helpers.detect_encoding(sample, encoding)
# Prepare chars
chars = io.TextIOWrapper(bytes, encoding)
def load(self, source, mode='t', encoding=None):
# Prepare source
scheme = 'text://'
if source.startswith(scheme):
source = source.replace(scheme, '', 1)
# Prepare bytes
bytes = io.BufferedRandom(io.BytesIO())
bytes.write(source.encode(encoding or config.DEFAULT_ENCODING))
bytes.seek(0)
if self.__stats:
bytes = helpers.BytesStatsWrapper(bytes, self.__stats)
# Return bytes
if mode == 'b':
return bytes
# Prepare chars
chars = io.TextIOWrapper(bytes, encoding)
return chars