def decorator(reader_function): file_params = find_sentinels(reader_function, FileSentinel) # This split has to occur for the same reason as in IORegistry.read if cls is not None: @wraps(reader_function) def wrapped_reader(file, encoding=self._encoding, newline=self._newline, **kwargs): file_keys, files, io_kwargs = self._setup_locals( file_params, file, encoding, newline, kwargs) with open_files(files, mode='r', **io_kwargs) as fhs: # The primary file is at the end of fh because append # is cheaper than insert kwargs.update(zip(file_keys, fhs[:-1])) return reader_function(fhs[-1], **kwargs) else: @wraps(reader_function) def wrapped_reader(file, encoding=self._encoding, newline=self._newline, **kwargs): file_keys, files, io_kwargs = self._setup_locals( file_params, file, encoding, newline, kwargs) with open_files(files, mode='r', **io_kwargs) as fhs: kwargs.update(zip(file_keys, fhs[:-1])) for item in reader_function(fhs[-1], **kwargs): yield item self._add_reader(cls, wrapped_reader, monkey_patch, override) return wrapped_reader
def decorator(reader_function): file_params = find_sentinels(reader_function, FileSentinel) # This split has to occur for the same reason as in IORegistry.read if cls is not None: @wraps(reader_function) def wrapped_reader(file, encoding=self._encoding, newline=self._newline, **kwargs): file_keys, files, io_kwargs = self._setup_locals( file_params, file, encoding, newline, kwargs) with open_files(files, mode='r', **io_kwargs) as fhs: # The primary file is at the end of fh because append # is cheaper than insert kwargs.update(zip(file_keys, fhs[:-1])) return reader_function(fhs[-1], **kwargs) else: @wraps(reader_function) def wrapped_reader(file, encoding=self._encoding, newline=self._newline, **kwargs): file_keys, files, io_kwargs = self._setup_locals( file_params, file, encoding, newline, kwargs) with open_files(files, mode='r', **io_kwargs) as fhs: kwargs.update(zip(file_keys, fhs[:-1])) generator = reader_function(fhs[-1], **kwargs) while True: yield next(generator) self._add_reader(cls, wrapped_reader, monkey_patch, override) return wrapped_reader
def decorator(writer_function): file_params = find_sentinels(writer_function, FileSentinel) @wraps(writer_function) def wrapped_writer(obj, file, encoding=self._encoding, newline=self._newline, **kwargs): file_keys, files, io_kwargs = self._setup_locals( file_params, file, encoding, newline, kwargs) with open_files(files, mode='w', **io_kwargs) as fhs: kwargs.update(zip(file_keys, fhs[:-1])) writer_function(obj, fhs[-1], **kwargs) self._add_writer(cls, wrapped_writer, monkey_patch, override) return wrapped_writer