🔨 update code for denepdency injection and add user warning about older interface
This commit is contained in:
parent
c684c08efa
commit
b3cb1a05c8
|
@ -7,11 +7,19 @@
|
|||
:copyright: (c) 2014-2020 by Onni Software Ltd.
|
||||
:license: New BSD License, see LICENSE for more details
|
||||
"""
|
||||
import warnings
|
||||
|
||||
import pyexcel_io.manager as manager
|
||||
from pyexcel_io._compact import OrderedDict, isstream
|
||||
|
||||
from .constants import MESSAGE_ERROR_03, MESSAGE_WRONG_IO_INSTANCE
|
||||
|
||||
DEPRECATED_SINCE_0_6_0 = (
|
||||
"Deprecated since v0.6.0! "
|
||||
+ "Although backward compatibility is preserved, "
|
||||
+ "it is recommended to upgrade to get new features."
|
||||
)
|
||||
|
||||
|
||||
class RWInterface(object):
|
||||
"""
|
||||
|
@ -21,6 +29,7 @@ class RWInterface(object):
|
|||
stream_type = None
|
||||
|
||||
def __init__(self):
|
||||
warnings.warn(DEPRECATED_SINCE_0_6_0)
|
||||
self._file_type = None
|
||||
|
||||
def open(self, file_name, **keywords):
|
||||
|
|
|
@ -33,12 +33,20 @@ class Reader(object):
|
|||
self.library = library
|
||||
self.keywords = None
|
||||
|
||||
# if you know which reader class to use, this attribute allows
|
||||
# you to set reader class externally. Since there is no
|
||||
# so call private field in Python, I am not going to create
|
||||
# useless setter and getter functions like Java.
|
||||
# in pyexcel, this attribute is mainly used for testing
|
||||
self.reader_class = None
|
||||
|
||||
def open(self, file_name, **keywords):
|
||||
reader_class = NEW_READERS.get_a_plugin(
|
||||
self.file_type, location="file", library=self.library
|
||||
)
|
||||
if self.reader_class is None:
|
||||
self.reader_class = NEW_READERS.get_a_plugin(
|
||||
self.file_type, location="file", library=self.library
|
||||
)
|
||||
self.keywords, native_sheet_keywords = clean_keywords(keywords)
|
||||
self.reader = reader_class(
|
||||
self.reader = self.reader_class(
|
||||
file_name, self.file_type, **native_sheet_keywords
|
||||
)
|
||||
return self.reader
|
||||
|
@ -46,10 +54,11 @@ class Reader(object):
|
|||
def open_content(self, file_content, **keywords):
|
||||
self.keywords, native_sheet_keywords = clean_keywords(keywords)
|
||||
try:
|
||||
reader_class = NEW_READERS.get_a_plugin(
|
||||
self.file_type, location="content", library=self.library
|
||||
)
|
||||
self.reader = reader_class(
|
||||
if self.reader_class is None:
|
||||
self.reader_class = NEW_READERS.get_a_plugin(
|
||||
self.file_type, location="content", library=self.library
|
||||
)
|
||||
self.reader = self.reader_class(
|
||||
file_content, self.file_type, **native_sheet_keywords
|
||||
)
|
||||
return self.reader
|
||||
|
@ -64,10 +73,11 @@ class Reader(object):
|
|||
|
||||
def open_stream(self, file_stream, **keywords):
|
||||
self.keywords, native_sheet_keywords = clean_keywords(keywords)
|
||||
reader_class = NEW_READERS.get_a_plugin(
|
||||
self.file_type, location="memory", library=self.library
|
||||
)
|
||||
self.reader = reader_class(
|
||||
if self.reader_class is None:
|
||||
self.reader_class = NEW_READERS.get_a_plugin(
|
||||
self.file_type, location="memory", library=self.library
|
||||
)
|
||||
self.reader = self.reader_class(
|
||||
file_stream, self.file_type, **native_sheet_keywords
|
||||
)
|
||||
return self.reader
|
||||
|
|
|
@ -6,26 +6,37 @@ class Writer(object):
|
|||
self.file_type = file_type
|
||||
self.library = library
|
||||
self.keyboards = None
|
||||
# if you know which reader class to use, this attribute allows
|
||||
# you to set reader class externally. Since there is no
|
||||
# so call private field in Python, I am not going to create
|
||||
# useless setter and getter functions like Java.
|
||||
# in pyexcel, this attribute is mainly used for testing
|
||||
self.writer_class = None
|
||||
|
||||
def open(self, file_name, **keywords):
|
||||
writer_class = NEW_WRITERS.get_a_plugin(
|
||||
self.file_type, library=self.library, location="file"
|
||||
)
|
||||
self.writer = writer_class(file_name, self.file_type, **keywords)
|
||||
if self.writer_class is None:
|
||||
self.writer_class = NEW_WRITERS.get_a_plugin(
|
||||
self.file_type, library=self.library, location="file"
|
||||
)
|
||||
self.writer = self.writer_class(file_name, self.file_type, **keywords)
|
||||
|
||||
def open_content(self, file_stream, **keywords):
|
||||
# if not isstream(file_stream):
|
||||
# raise IOError(MESSAGE_ERROR_03)
|
||||
writer_class = NEW_WRITERS.get_a_plugin(
|
||||
self.file_type, library=self.library, location="content"
|
||||
if self.writer_class is None:
|
||||
self.writer_class = NEW_WRITERS.get_a_plugin(
|
||||
self.file_type, library=self.library, location="content"
|
||||
)
|
||||
self.writer = self.writer_class(
|
||||
file_stream, self.file_type, **keywords
|
||||
)
|
||||
self.writer = writer_class(file_stream, self.file_type, **keywords)
|
||||
|
||||
def open_stream(self, file_stream, **keywords):
|
||||
writer_class = NEW_WRITERS.get_a_plugin(
|
||||
self.file_type, library=self.library, location="memory"
|
||||
if self.writer_class is None:
|
||||
self.writer_class = NEW_WRITERS.get_a_plugin(
|
||||
self.file_type, library=self.library, location="memory"
|
||||
)
|
||||
self.writer = self.writer_class(
|
||||
file_stream, self.file_type, **keywords
|
||||
)
|
||||
self.writer = writer_class(file_stream, self.file_type, **keywords)
|
||||
|
||||
def write(self, incoming_dict):
|
||||
self.writer.write(incoming_dict)
|
||||
|
|
Loading…
Reference in New Issue