Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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