def load(self, in_stream, format=None, **kwargs): """ Import `in_stream` to the :class:`Dataset` object using the `format`. `in_stream` can be a file-like object, a string, or a bytestring. :param \\*\\*kwargs: (optional) custom configuration to the format `import_set`. """ stream = normalize_input(in_stream) if not format: # pythonlibrary.net: # 如果没有提供格式,则尝试自动检测 format = detect_format(stream) fmt = registry.get_format(format) if not hasattr(fmt, 'import_set'): raise UnsupportedFormat( 'Format {} cannot be imported.'.format(format)) if not import_set: # support to pass in the custom import_set function raise UnsupportedFormat( 'Format {} cannot be imported.'.format(format)) fmt.import_set(self, stream, **kwargs) return self
def detect_format(stream): """Return format name of given stream (file-like object, string, or bytestring).""" stream = normalize_input(stream) fmt_title = None for fmt in registry.formats(): try: if fmt.detect(stream): fmt_title = fmt.title break except AttributeError: pass finally: if hasattr(stream, 'seek'): stream.seek(0) return fmt_title
def load(self, in_stream, format, **kwargs): """ Import `in_stream` to the :class:`Databook` object using the `format`. `in_stream` can be a file-like object, a string, or a bytestring. :param \\*\\*kwargs: (optional) custom configuration to the format `import_book`. """ stream = normalize_input(in_stream) if not format: format = detect_format(stream) fmt = registry.get_format(format) if not hasattr(fmt, 'import_book'): raise UnsupportedFormat(f'Format {format} cannot be loaded.') fmt.import_book(self, stream, **kwargs) return self
def _set_in_format(self, fmt_key, in_stream, **kwargs): # pythonlibrary.net: # 调用了format类的import_set方法,其具体实现要看不同的format类 in_stream = normalize_input(in_stream) return registry.get_format(fmt_key).import_set(self, in_stream, **kwargs)
def import_book(stream, format=None, **kwargs): """Return dataset of given stream (file-like object, string, or bytestring).""" return Databook().load(normalize_input(stream), format, **kwargs)
def __set__(self, obj, val): self.ensure_format_loaded() return self._format.import_set(obj, normalize_input(val))
def _set_in_format(self, fmt_key, in_stream, **kwargs): in_stream = normalize_input(in_stream) return registry.get_format(fmt_key).import_set(self, in_stream, **kwargs)