Source code for b2sdk.v1.file_version

######################################################################
#
# File: b2sdk/v1/file_version.py
#
# Copyright 2021 Backblaze Inc. All Rights Reserved.
#
# License https://www.backblaze.com/using_b2_code.html
#
######################################################################

import datetime
import functools

from b2sdk import _v2 as v2


# override to retain old formatting methods
[docs]class FileVersionInfo(v2.FileVersionInfo): LS_ENTRY_TEMPLATE = '%83s %6s %10s %8s %9d %s' # order is file_id, action, date, time, size, name
[docs] def format_ls_entry(self): dt = datetime.datetime.utcfromtimestamp(self.upload_timestamp / 1000) date_str = dt.strftime('%Y-%m-%d') time_str = dt.strftime('%H:%M:%S') size = self.size or 0 # required if self.action == 'hide' return self.LS_ENTRY_TEMPLATE % ( self.id_, self.action, date_str, time_str, size, self.file_name, )
[docs] @classmethod def format_folder_ls_entry(cls, name): return cls.LS_ENTRY_TEMPLATE % ('-', '-', '-', '-', 0, name)
def file_version_info_from_new_file_version_info( file_version: v2.FileVersionInfo ) -> FileVersionInfo: return FileVersionInfo( **{att_name: getattr(file_version, att_name) for att_name in FileVersionInfo.__slots__} ) def translate_single_file_version(func): @functools.wraps(func) def inner(*a, **kw): return file_version_info_from_new_file_version_info(func(*a, **kw)) return inner # override to return old style FileVersionInfo class FileVersionInfoFactory(v2.FileVersionInfoFactory): from_api_response = translate_single_file_version(v2.FileVersionInfoFactory.from_api_response) from_cancel_large_file_response = translate_single_file_version( v2.FileVersionInfoFactory.from_cancel_large_file_response ) from_response_headers = translate_single_file_version( v2.FileVersionInfoFactory.from_response_headers )