def _get_filesystem_and_paths(self, filename, timestamps, create_paths=False): """ It takes location parameters from init and execute methods, joins them together, and creates a filesystem object and file paths relative to the filesystem object. """ if isinstance(filename, str) or filename is None: filesystem, relative_path = get_base_filesystem_and_path( self.folder, filename, config=self.config) filename_paths = self._generate_paths(relative_path, timestamps) elif isinstance(filename, list): filename_paths = [] for timestamp_index, path in enumerate(filename): filesystem, relative_path = get_base_filesystem_and_path( self.folder, path, config=self.config) if len(filename) == len(timestamps): filename_paths.append(*self._generate_paths( relative_path, [timestamps[timestamp_index]])) elif not timestamps: filename_paths.append( *self._generate_paths(relative_path, timestamps)) else: raise ValueError( 'The number of provided timestamps does not match ' 'the number of provided filenames.') else: raise TypeError( f"The 'filename' parameter must either be a list or a string, but {filename} found" ) if create_paths: paths_to_create = { fs.path.dirname(filename_path) for filename_path in filename_paths } for filename_path in paths_to_create: filesystem.makedirs(filename_path, recreate=True) return filesystem, filename_paths
def execute(self, eopatch: Union[EOPatch, str], *, tile_name: str): """ Execute method to delete tiffs relative to the specified tile :param eopatch: Name of the eopatch to process :param tile_name: Name of the tyle to process """ filesystem, relative_path = get_base_filesystem_and_path(self.path) for filename in self.filenames: full_path = fs.path.join(relative_path, tile_name, filename) filesystem.remove(full_path)
def _get_valid_dates(self, tile_name: str, filename: str = 'userdata.json') -> List[datetime]: """ :param tile_name: Name of the tile to process :param filename: Name of the json file containing timestamps """ filesystem, relative_path = get_base_filesystem_and_path(self.path) full_path = fs.path.join(relative_path, tile_name, filename) decoded_data = filesystem.readtext(full_path, encoding='utf-8') parsed_data = json.loads(decoded_data) dates = ast.literal_eval(parsed_data['dates']) return dates