diff --git a/python/idsse_common/idsse/common/aws_utils.py b/python/idsse_common/idsse/common/aws_utils.py index 5a1da26f..851be68d 100644 --- a/python/idsse_common/idsse/common/aws_utils.py +++ b/python/idsse_common/idsse/common/aws_utils.py @@ -53,10 +53,10 @@ def aws_ls(self, path: str, prepend_path: bool = True) -> Sequence[str]: Sequence[str]: The results sent to stdout from executing an 'ls' on passed path """ try: - commands = ["s5cmd", "--no-sign-request", "ls", path] + commands = ['s5cmd', '--no-sign-request', 'ls', path] commands_result = exec_cmd(commands) except FileNotFoundError: - commands = ["aws", "s3", "--no-sign-request", "ls", path] + commands = ['aws', 's3', '--no-sign-request', 'ls', path] commands_result = exec_cmd(commands) except PermissionError: return [] @@ -76,13 +76,13 @@ def aws_cp(self, path: str, dest: str) -> bool: """ try: logger.debug('First attempt with s5cmd') - commands = ["s5cmd", "--no-sign-request", "cp", path, dest] + commands = ['s5cmd', '--no-sign-request', 'cp', path, dest] exec_cmd(commands) return True except FileNotFoundError: try: logger.debug('Second attempt with aws command line') - commands = ["aws", "s3", "--no-sign-request", "cp", path, dest] + commands = ['aws', 's3', '--no-sign-request', 'cp', path, dest] exec_cmd(commands) return True except: diff --git a/python/idsse_common/test/test_aws_utils.py b/python/idsse_common/test/test_aws_utils.py index 4a208b19..b0615fc2 100644 --- a/python/idsse_common/test/test_aws_utils.py +++ b/python/idsse_common/test/test_aws_utils.py @@ -51,14 +51,14 @@ def mock_exec_cmd(monkeypatch: MonkeyPatch) -> Mock: def test_get_path(aws_utils: AwsUtils): result_path = aws_utils.get_path(EXAMPLE_ISSUE, EXAMPLE_VALID) - assert result_path == f"{EXAMPLE_DIR}/blend.t12z.core.f002.co.grib2" + assert result_path == f'{EXAMPLE_DIR}/blend.t12z.core.f002.co.grib2' def test_aws_ls(aws_utils: AwsUtils, mock_exec_cmd): result = aws_utils.aws_ls(EXAMPLE_DIR) assert len(result) == len(EXAMPLE_FILES) - assert result[0] == f"{EXAMPLE_DIR}/{EXAMPLE_FILES[0]}" + assert result[0] == f'{EXAMPLE_DIR}/{EXAMPLE_FILES[0]}' mock_exec_cmd.assert_called_once() @@ -93,8 +93,8 @@ def test_aws_ls_returns_empty_array_on_error(aws_utils: AwsUtils, monkeypatch: M def test_aws_cp_succeeds(aws_utils: AwsUtils, mock_exec_cmd): - path = f"{EXAMPLE_DIR}/file.grib2.idx" - dest = f"{EXAMPLE_DIR}/new_file.grib2.idx" + path = f'{EXAMPLE_DIR}/file.grib2.idx' + dest = f'{EXAMPLE_DIR}/new_file.grib2.idx' copy_success = aws_utils.aws_cp(path, dest) assert copy_success @@ -153,7 +153,7 @@ def test_get_valids_all(aws_utils: AwsUtils, mock_exec_cmd): result = aws_utils.get_valids(EXAMPLE_ISSUE) assert len(result) == 2 - assert result[1] == ((EXAMPLE_VALID + timedelta(hours=1)), f"{EXAMPLE_DIR}/{EXAMPLE_FILES[1]}") + assert result[1] == ((EXAMPLE_VALID + timedelta(hours=1)), f'{EXAMPLE_DIR}/{EXAMPLE_FILES[1]}') def test_get_valids_with_start_filter(aws_utils: AwsUtils, mock_exec_cmd): @@ -161,7 +161,7 @@ def test_get_valids_with_start_filter(aws_utils: AwsUtils, mock_exec_cmd): result = aws_utils.get_valids(EXAMPLE_ISSUE, valid_start=valid_start) assert len(result) == 1 - assert result[0] == (valid_start, f"{EXAMPLE_DIR}/{EXAMPLE_FILES[1]}") + assert result[0] == (valid_start, f'{EXAMPLE_DIR}/{EXAMPLE_FILES[1]}') def test_get_valids_with_start_and_end_filer(aws_utils: AwsUtils, mock_exec_cmd): @@ -170,4 +170,4 @@ def test_get_valids_with_start_and_end_filer(aws_utils: AwsUtils, mock_exec_cmd) result = aws_utils.get_valids(EXAMPLE_ISSUE, valid_start=valid_start, valid_end=valid_end) assert len(result) == 1 - assert result[0] == (valid_end, f"{EXAMPLE_DIR}/{EXAMPLE_FILES[0]}") + assert result[0] == (valid_end, f'{EXAMPLE_DIR}/{EXAMPLE_FILES[0]}') diff --git a/python/idsse_common/test/test_path_builder.py b/python/idsse_common/test/test_path_builder.py index 04fdc7c6..2d096277 100644 --- a/python/idsse_common/test/test_path_builder.py +++ b/python/idsse_common/test/test_path_builder.py @@ -20,28 +20,28 @@ # pylint: disable=invalid-name def test_from_dir_filename_creates_valid_pathbuilder(): - directory = "./test_directory" - filename ="some_file.txt" + directory = './test_directory' + filename ='some_file.txt' path_builder = PathBuilder.from_dir_filename(directory, filename) assert isinstance(path_builder, PathBuilder) assert path_builder._basedir == directory - assert path_builder._file_ext == "" + assert path_builder._file_ext == '' def test_from_path_creates_valid_pathbuilder(): - base_dir = "./test_directory" - path_builder = PathBuilder.from_path(f"{base_dir}/some_file.txt") + base_dir = './test_directory' + path_builder = PathBuilder.from_path(f'{base_dir}/some_file.txt') assert isinstance(path_builder, PathBuilder) assert path_builder._basedir == base_dir assert path_builder._file_base == base_dir - assert path_builder._file_ext == "" + assert path_builder._file_ext == '' # properties -EXAMPLE_BASE_DIR = "./some/directory" -EXAMPLE_SUB_DIR = "another/directory" -EXAMPLE_FILE = "my_file" -EXAMPLE_FILE_EXT = ".txt" +EXAMPLE_BASE_DIR = './some/directory' +EXAMPLE_SUB_DIR = 'another/directory' +EXAMPLE_FILE = 'my_file' +EXAMPLE_FILE_EXT = '.txt' @pytest.fixture def local_path_builder() -> PathBuilder: @@ -49,33 +49,33 @@ def local_path_builder() -> PathBuilder: return PathBuilder(EXAMPLE_BASE_DIR, EXAMPLE_SUB_DIR, EXAMPLE_FILE, EXAMPLE_FILE_EXT) def test_dir_fmt(local_path_builder: PathBuilder): - assert local_path_builder.dir_fmt == f"{EXAMPLE_BASE_DIR}/{EXAMPLE_SUB_DIR}" + assert local_path_builder.dir_fmt == f'{EXAMPLE_BASE_DIR}/{EXAMPLE_SUB_DIR}' def test_filename_fmt(local_path_builder: PathBuilder): - assert local_path_builder.filename_fmt == f"{EXAMPLE_FILE}{EXAMPLE_FILE_EXT}" + assert local_path_builder.filename_fmt == f'{EXAMPLE_FILE}{EXAMPLE_FILE_EXT}' def test_file_ext(local_path_builder: PathBuilder): assert local_path_builder.file_ext == EXAMPLE_FILE_EXT def test_path_fmt(local_path_builder: PathBuilder): - assert local_path_builder.path_fmt == f"{EXAMPLE_BASE_DIR}/{EXAMPLE_SUB_DIR}/{EXAMPLE_FILE}{EXAMPLE_FILE_EXT}" + assert local_path_builder.path_fmt == f'{EXAMPLE_BASE_DIR}/{EXAMPLE_SUB_DIR}/{EXAMPLE_FILE}{EXAMPLE_FILE_EXT}' # methods EXAMPLE_ISSUE = datetime(1970, 10, 3, 12) # a.k.a. issued at EXAMPLE_VALID = datetime(1970, 10, 3, 14) # a.k.a. valid until EXAMPLE_LEAD = TimeDelta(EXAMPLE_VALID - EXAMPLE_ISSUE) # a.k.a. duration of time that issue lasts -EXAMPLE_FULL_PATH = "~/blend.19701003/12/core/blend.t12z.core.f002.co.grib2.idx" +EXAMPLE_FULL_PATH = '~/blend.19701003/12/core/blend.t12z.core.f002.co.grib2.idx' @pytest.fixture def path_builder() -> PathBuilder: - subdirectory_pattern = "blend.{issue.year:04d}{issue.month:02d}{issue.day:02d}/{issue.hour:02d}/core/" - file_base_pattern = "blend.t{issue.hour:02d}z.core.f{lead.hour:03d}.co" - return PathBuilder("~", subdirectory_pattern, file_base_pattern, "grib2.idx") + subdirectory_pattern = 'blend.{issue.year:04d}{issue.month:02d}{issue.day:02d}/{issue.hour:02d}/core/' + file_base_pattern = 'blend.t{issue.hour:02d}z.core.f{lead.hour:03d}.co' + return PathBuilder('~', subdirectory_pattern, file_base_pattern, 'grib2.idx') def test_build_dir_gets_issue_valid_and_lead(path_builder: PathBuilder): result_dict = path_builder.build_dir(issue=EXAMPLE_ISSUE) - assert result_dict == "~/blend.19701003/12/core/" + assert result_dict == '~/blend.19701003/12/core/' def test_build_dir_fails_without_issue(path_builder: PathBuilder): result_dict = path_builder.build_dir(issue=None) @@ -83,23 +83,23 @@ def test_build_dir_fails_without_issue(path_builder: PathBuilder): def test_build_filename(path_builder: PathBuilder): result_filename = path_builder.build_filename(issue=EXAMPLE_ISSUE, lead=EXAMPLE_LEAD) - assert result_filename == "blend.t12z.core.f002.co.grib2.idx" + assert result_filename == 'blend.t12z.core.f002.co.grib2.idx' def test_build_path(path_builder: PathBuilder): result_filepath = path_builder.build_path(issue=EXAMPLE_ISSUE, valid=EXAMPLE_VALID) - assert result_filepath == "~/blend.19701003/12/core/blend.t12z.core.f002.co.grib2.idx" + assert result_filepath == '~/blend.19701003/12/core/blend.t12z.core.f002.co.grib2.idx' def test_parse_dir(path_builder: PathBuilder): result_dict = path_builder.parse_dir(EXAMPLE_FULL_PATH) assert result_dict.keys() != [] - assert result_dict["issue.year"] == 1970 - assert result_dict["issue.day"] == 3 + assert result_dict['issue.year'] == 1970 + assert result_dict['issue.day'] == 3 def test_parse_filename(path_builder: PathBuilder): result_dict = path_builder.parse_filename(EXAMPLE_FULL_PATH) assert result_dict.keys() != [] - assert result_dict["lead.hour"] == 2 + assert result_dict['lead.hour'] == 2 def test_get_issue(path_builder: PathBuilder): actual_issue: datetime = path_builder.get_issue(EXAMPLE_FULL_PATH) @@ -112,7 +112,7 @@ def test_get_valid_from_issue_and_lead(path_builder: PathBuilder): assert result_valid == EXAMPLE_VALID def test_get_valid_returns_none_when_issue_or_lead_failed(path_builder: PathBuilder): - path_with_invalid_lead = "~/blend.19701003/12/core/blend.t12z.core.f000.co.grib2.idx" + path_with_invalid_lead = '~/blend.19701003/12/core/blend.t12z.core.f000.co.grib2.idx' result_valid = path_builder.get_valid(path_with_invalid_lead) assert result_valid is None