diff --git a/.github/workflows/ci_testing.yml b/.github/workflows/ci_testing.yml index b88b3d0b2..42b84cf3b 100644 --- a/.github/workflows/ci_testing.yml +++ b/.github/workflows/ci_testing.yml @@ -15,7 +15,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, macos-13] - python-version: ["3.9", "3.10", "3.11"] + python-version: ["3.10", "3.11"] defaults: run: shell: bash -l {0} diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d0d8c810..093fa4c87 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,9 @@ release. ## [Unreleased] +### Added +- Added optional boolean flag `remove_kernels` to the `props` dict in the `loads()` func to allow the user to add the `kernels` key in the output ISD. Added the `misc` kernel key for user-entered kernels. Format the kernels value to always be dict type in ISD generation. [#675](https://github.com/DOI-USGS/ale/pull/675) + ## [1.0.2] - Fixed bug where generic CH2 kernels were using for TMC-2 [#672](https://github.com/DOI-USGS/ale/pull/672) diff --git a/ale/base/data_naif.py b/ale/base/data_naif.py index cacff43d5..b6fd7426a 100644 --- a/ale/base/data_naif.py +++ b/ale/base/data_naif.py @@ -86,7 +86,19 @@ def kernels(self): try: self._kernels = kernel_access.get_kernels_from_isis_pvl(self._props['kernels']) except Exception as e: - self._kernels = self._props['kernels'] + if isinstance(self._props['kernels'], list): + self._kernels = { "misc": self._props['kernels'] } + elif isinstance(self._props['kernels'], dict): + for k,v in self._props['kernels'].items(): + # check that the keys are valid kernel types + if k not in ["ck", "spk", "tspk", "fk", "ik", "iak", "pck", "lsk", "sclk"]: + raise ValueError(f"Unknown kernel type: {k}") + # check that kernel values are in list format + if not isinstance(v, list): + raise ValueError(f"Kernels for {k} must be in list format.") + self._kernels = self._props['kernels'] + else: + self._kernels = self._props['kernels'] elif self.search_kernels == True: _, kernels = pyspiceql.searchForKernelsets([self.spiceql_mission, self.target_name, "base"], startTime=self.ephemeris_start_time, stopTime=self.ephemeris_stop_time, useWeb=self.use_web) self._kernels = kernels diff --git a/ale/drivers/__init__.py b/ale/drivers/__init__.py index 6e1284f76..1c9cb0974 100644 --- a/ale/drivers/__init__.py +++ b/ale/drivers/__init__.py @@ -150,6 +150,8 @@ def load(label, props={}, formatter='ale', verbose=False, only_isis_spice=False, res.instrument_id with res as driver: isd = formatter(driver) + if 'attach_kernels' in props and props['attach_kernels'] is False and 'kernels' in isd: + del isd['kernels'] if verbose: logger.info(f"Success with: {driver.__class__.__name__}") logger.info(f"ISD:\n{json.dumps(isd, indent=2, cls=AleJsonEncoder)}") diff --git a/ale/formatters/formatter.py b/ale/formatters/formatter.py index c19f0fa46..d68f0d84c 100644 --- a/ale/formatters/formatter.py +++ b/ale/formatters/formatter.py @@ -207,12 +207,30 @@ def to_isd(driver): raise Exception('No CSM sensor model name found!') # remove extra qualities - # TODO: Rewuires SpiceQL API update to get relative kernels - # if driver.kernels and isinstance(driver.kernels, dict): - # isd["kernels"] = {k: v for k, v in driver.kernels.items() if not "_quality" in k or driver.spiceql_mission in k } - # elif driver.kernels and isinstance(driver.kernels, list): - # isd["kernels"] = driver.kernels - # else: - # isd["kernels"] = {} + if 'kernels' in driver_data and isinstance(driver.kernels, dict): + for k,v in driver.kernels.items(): + # check that the keys are valid kernel types or quality types + if k not in ["ck", "spk", "tspk", "fk", "ik", "iak", "pck", "lsk", "sclk", "misc", driver.spiceql_mission+"_spk_quality", driver.spiceql_mission+"_ck_quality"]: + raise ValueError(f"Kernels key [{k}] is not valid.") + if k in ["ck", "spk", "tspk", "fk", "ik", "iak", "pck", "lsk", "sclk", "misc"]: + if not isinstance(v, list): + raise ValueError(f"Kernel [{k}] must be set to a list of kernels.") + isd["kernels"] = driver.kernels + elif k in [driver.spiceql_mission+"_spk_quality", driver.spiceql_mission+"_ck_quality"]: + if not isinstance(v, str): + raise ValueError(f"Kernel quality type [{k}] must be set to a string.") + isd["kernels"] = driver.kernels #{k: v for k, v in driver.kernels.items() if not "_quality" in k and not driver.spiceql_mission in k } + elif 'kernels' in driver_data and isinstance(driver.kernels, list): + kernels_dict = {} + for k in driver.kernels: + k_split = k.split('/') + k_type = k_split[2] + if k_type in kernels_dict and isinstance(kernels_dict[k_type], list): + kernels_dict[k_type].append(k) + else: + kernels_dict.update({k_type: [k]}) + isd["kernels"] = kernels_dict + else: + isd["kernels"] = {} return isd diff --git a/environment.yml b/environment.yml index 2bb91adcd..48f8e53eb 100644 --- a/environment.yml +++ b/environment.yml @@ -1,4 +1,4 @@ -name: ale +# name: ale channels: - conda-forge @@ -13,7 +13,7 @@ dependencies: - networkx - nlohmann_json - numpy - - spiceql>=1.2.4 + - spiceql=1.2.4=*_6 - pvl - pytest - pytest-cov diff --git a/tests/pytests/conftest.py b/tests/pytests/conftest.py index 8dc32ab2f..63a1213d5 100644 --- a/tests/pytests/conftest.py +++ b/tests/pytests/conftest.py @@ -218,10 +218,10 @@ def convert_kernels(kernels): warnings.warn('Failed to convert transfer kernel, ' + kernel + ', skipping...') else: kernel = matches.group(1) - binary_kernels.append(kernel) + binary_kernels.append(os.path.abspath(kernel)) except: raise Exception(f"Unable to convert {path} to binary kernel") - updated_kernels.append(kernel) + updated_kernels.append(os.path.abspath(kernel)) # Sort Kernels # Ensure that the ISIS Addendum kernel is last in case it overrides diff --git a/tests/pytests/test_apollo_drivers.py b/tests/pytests/test_apollo_drivers.py index 362aae142..61f6f33b4 100644 --- a/tests/pytests/test_apollo_drivers.py +++ b/tests/pytests/test_apollo_drivers.py @@ -23,7 +23,7 @@ def test_kernels(): def test_load(test_kernels): label_file = get_image_label('AS15-M-1450', 'isis3') compare_dict = get_isd("apollometric") - isd_str = ale.loads(label_file, props={'kernels': test_kernels}, verbose=True) + isd_str = ale.loads(label_file, props={'kernels': test_kernels, 'attach_kernels': False}, verbose=True) isd_obj = json.loads(isd_str) print(json.dumps(isd_obj, indent=2)) print("======================") @@ -31,6 +31,39 @@ def test_load(test_kernels): assert compare_dicts(isd_obj, compare_dict) == [] +def test_load_kernels(test_kernels): + label_file = get_image_label('AS15-M-1450', 'isis3') + compare_dict = get_isd("apollometric") + isd_str = ale.loads(label_file, props={'kernels': test_kernels}, verbose=True) + isd_obj = json.loads(isd_str) + print(json.dumps(isd_obj, indent=2)) + print("======================") + print(json.dumps(compare_dict, indent=2)) + assert isd_obj['kernels'] + assert type(isd_obj['kernels']) == dict + assert isd_obj['kernels']['misc'] + assert type(isd_obj['kernels']['misc']) == list + + +def test_bad_kernels(): + label_file = get_image_label('AS15-M-1450', 'isis3') + + # test invalid kernel type + kernels_dict = {"ck": "test_ck", "spk": "test_spk", "unknown": "test_unknown"} + with pytest.raises(Exception) as e: + isd_str = ale.loads(label_file, props={'kernels': kernels_dict}, verbose=True) + + # test invalid kernel quality type + kernels_dict = {"ck": "test_ck", "spk": "test_spk", "abc_ck_quality": "test_unknown_quality"} + with pytest.raises(Exception) as e: + isd_str = ale.loads(label_file, props={'kernels': kernels_dict}, verbose=True) + + # test invalid kernel value + kernels_dict = {"ck": "test_ck", "spk": "test_spk"} + with pytest.raises(Exception) as e: + isd_str = ale.loads(label_file, props={'kernels': kernels_dict}, verbose=True) + + class test_isis3_naif(unittest.TestCase): def setUp(self): label = get_image_label("AS15-M-1450", "isis3") diff --git a/tests/pytests/test_cassini_drivers.py b/tests/pytests/test_cassini_drivers.py index 3c8f8bd35..32056af59 100644 --- a/tests/pytests/test_cassini_drivers.py +++ b/tests/pytests/test_cassini_drivers.py @@ -29,7 +29,7 @@ def test_load_pds(test_iss_kernels): label_file = get_image_label("N1702360370_1") compare_dict = get_isd("cassiniiss") - isd_str = ale.loads(label_file, props={'kernels': test_iss_kernels}, verbose=True) + isd_str = ale.loads(label_file, props={'kernels': test_iss_kernels, 'attach_kernels': False}, verbose=True) isd_obj = json.loads(isd_str) print(json.dumps(isd_obj, indent=2)) assert compare_dicts(isd_obj, compare_dict) == [] @@ -42,7 +42,7 @@ def read_detached_table(table_label, cube): return get_table_data("N1702360370_1", table_label["Name"]) with patch('ale.base.data_isis.read_table_data', side_effect=read_detached_table): - isd_str = ale.loads(label_file) + isd_str = ale.loads(label_file, props={'attach_kernels': False}) isd_obj = json.loads(isd_str) print(json.dumps(isd_obj, indent=2)) x = compare_dicts(isd_obj, compare_dict) @@ -52,7 +52,7 @@ def test_load_iss_isis_naif(test_iss_kernels): label_file = get_image_label("N1702360370_1") compare_dict = get_isd("cassiniiss") - isd_str = ale.loads(label_file, props={"kernels": test_iss_kernels}) + isd_str = ale.loads(label_file, props={"kernels": test_iss_kernels, 'attach_kernels': False}) isd_obj = json.loads(isd_str) print(json.dumps(isd_obj, indent=2)) x = compare_dicts(isd_obj, compare_dict) @@ -62,7 +62,7 @@ def test_load_vims_isis_naif(test_vims_kernels): label_file = get_image_label("v1514284191_1_vis", label_type="isis") compare_dict = get_isd("cassinivims") - isd_str = ale.loads(label_file, props={"kernels": test_vims_kernels}, verbose=True) + isd_str = ale.loads(label_file, props={"kernels": test_vims_kernels, 'attach_kernels': False}, verbose=True) isd_obj = json.loads(isd_str) print(json.dumps(isd_obj, indent=2)) x = compare_dicts(isd_obj, compare_dict) diff --git a/tests/pytests/test_chandrayaan_driver.py b/tests/pytests/test_chandrayaan_driver.py index 2ee71f142..dde52ad19 100644 --- a/tests/pytests/test_chandrayaan_driver.py +++ b/tests/pytests/test_chandrayaan_driver.py @@ -33,7 +33,7 @@ def test_chandrayaan_load(m3_kernels): label_file = get_image_label("M3T20090630T083407_V03_RDN", label_type="isis") compare_dict = get_isd("chandrayannM3") print("kernels: ", m3_kernels) - isd_str = ale.loads(label_file, props={"kernels": m3_kernels}, verbose=False) + isd_str = ale.loads(label_file, props={"kernels": m3_kernels, 'attach_kernels': False}, verbose=False) isd_obj = json.loads(isd_str) print(isd_str) x = compare_dicts(isd_obj, compare_dict) @@ -43,7 +43,7 @@ def test_chandrayaan_mrffr_load(mrffr_kernels): label_file = get_image_label("fsb_00720_1cd_xhu_84n209_v1", label_type="isis3") compare_dict = get_isd("chandrayaan_mrffr") - isd_str = ale.loads(label_file, props={"kernels": mrffr_kernels, "nadir": True}, verbose=True) + isd_str = ale.loads(label_file, props={"kernels": mrffr_kernels, "nadir": True, 'attach_kernels': False}, verbose=True) isd_obj = json.loads(isd_str) x = compare_dicts(isd_obj, compare_dict) assert x == [] @@ -54,7 +54,7 @@ def test_chandrayaan_m3_pds_load(m3_kernels): # Patch the full path of the timing table onto the driver with patch("ale.drivers.chandrayaan_drivers.Chandrayaan1M3Pds3NaifSpiceDriver.utc_time_table", os.path.dirname(label_file)+"/M3T20090630T083407_V03_TIM_cropped.TAB"): - isd_str = ale.loads(label_file, props={"kernels": m3_kernels, "nadir": True}) + isd_str = ale.loads(label_file, props={"kernels": m3_kernels, "nadir": True, 'attach_kernels': False}) isd_obj = json.loads(isd_str) print(isd_obj) print(compare_dicts(isd_obj, compare_dict)) diff --git a/tests/pytests/test_clementine_drivers.py b/tests/pytests/test_clementine_drivers.py index f3232980e..0dc67d3e9 100644 --- a/tests/pytests/test_clementine_drivers.py +++ b/tests/pytests/test_clementine_drivers.py @@ -20,7 +20,7 @@ def test_uvvis_kernels(): def test_uvvis_load(test_uvvis_kernels): label_file = get_image_label('LUA3107H.161', 'isis3') - isd_str = ale.loads(label_file, props={'kernels': test_uvvis_kernels, 'exact_ck_times': False}) + isd_str = ale.loads(label_file, props={'kernels': test_uvvis_kernels, 'exact_ck_times': False, 'attach_kernels': False}) isd_obj = json.loads(isd_str) compare_isd = get_isd('clem_uvvis') assert compare_dicts(isd_obj, compare_isd) == [] @@ -35,7 +35,7 @@ def test_hires_kernels(): def test_hires_load(test_hires_kernels): label_file = get_image_label('LHA0775Q.001', 'isis3') - isd_str = ale.loads(label_file, props={'kernels': test_hires_kernels, 'exact_ck_times': False}, verbose=True) + isd_str = ale.loads(label_file, props={'kernels': test_hires_kernels, 'exact_ck_times': False, 'attach_kernels': False}, verbose=True) isd_obj = json.loads(isd_str) compare_isd = get_isd('clem_hires') assert compare_dicts(isd_obj, compare_isd) == [] @@ -50,7 +50,7 @@ def test_nir_kernels(): def test_nir_load(test_nir_kernels): label_file = get_image_label('LNB4653M.093', 'isis3') - isd_str = ale.loads(label_file, props={'kernels': test_nir_kernels, 'exact_ck_times': False}, verbose=True) + isd_str = ale.loads(label_file, props={'kernels': test_nir_kernels, 'exact_ck_times': False, 'attach_kernels': False}, verbose=True) isd_obj = json.loads(isd_str) compare_isd = get_isd('clem_nir') assert compare_dicts(isd_obj, compare_isd) == [] @@ -65,7 +65,7 @@ def test_lwir_kernels(): def test_lwir_load(test_lwir_kernels): label_file = get_image_label('LLA5391Q.209', 'isis3') - isd_str = ale.loads(label_file, props={'kernels': test_lwir_kernels, 'exact_ck_times': False}, verbose=True) + isd_str = ale.loads(label_file, props={'kernels': test_lwir_kernels, 'exact_ck_times': False, 'attach_kernels': False}, verbose=True) isd_obj = json.loads(isd_str) compare_isd = get_isd('clem_lwir') assert compare_dicts(isd_obj, compare_isd) == [] diff --git a/tests/pytests/test_dawn_drivers.py b/tests/pytests/test_dawn_drivers.py index 81b73233b..7bf0e30cb 100644 --- a/tests/pytests/test_dawn_drivers.py +++ b/tests/pytests/test_dawn_drivers.py @@ -59,7 +59,7 @@ def test_fc_load(fc_kernels, label_type): label_file = get_image_label(label_prefix_file, label_type=label_type) - isd_str = ale.loads(label_file, props={'kernels': fc_kernels}) + isd_str = ale.loads(label_file, props={'kernels': fc_kernels, 'attach_kernels': False}) isd_obj = json.loads(isd_str) # print(json.dumps(isd_obj, indent=2)) assert compare_dicts(isd_obj, compare_dict) == [] @@ -79,7 +79,7 @@ def test_vir_load(vir_kernels): compare_dict = get_isd("dawnvir") - isd_str = ale.loads(label_file, props={"kernels": vir_kernels, "nadir": False}, verbose=False) + isd_str = ale.loads(label_file, props={"kernels": vir_kernels, "nadir": False, 'attach_kernels': False}, verbose=False) print(isd_str) isd_obj = json.loads(isd_str) x = compare_dicts(isd_obj, compare_dict) diff --git a/tests/pytests/test_galileo_drivers.py b/tests/pytests/test_galileo_drivers.py index b3125d992..5ac6fea30 100644 --- a/tests/pytests/test_galileo_drivers.py +++ b/tests/pytests/test_galileo_drivers.py @@ -28,7 +28,7 @@ def test_galileo_load(test_kernels, label_type, kernel_type): isd_str = ale.loads(label_file) compare_isd = get_isd('galileossi_isis') else: - isd_str = ale.loads(label_file, props={'kernels': test_kernels}) + isd_str = ale.loads(label_file, props={'kernels': test_kernels, 'attach_kernels': False}) compare_isd = get_isd('galileossi') isd_obj = json.loads(isd_str) diff --git a/tests/pytests/test_hayabusa2_drivers.py b/tests/pytests/test_hayabusa2_drivers.py index 084c9c62c..2e47f10e9 100644 --- a/tests/pytests/test_hayabusa2_drivers.py +++ b/tests/pytests/test_hayabusa2_drivers.py @@ -22,7 +22,7 @@ def test_kernels(): @pytest.mark.parametrize("label_type", ['isis3']) def test_hayabusa_load(test_kernels, label_type): label_file = get_image_label('hyb2_onc_20151203_084458_w2f_l2a', label_type) - isd_str = ale.loads(label_file, props={'kernels': test_kernels}, verbose=False) + isd_str = ale.loads(label_file, props={'kernels': test_kernels, 'attach_kernels': False}, verbose=False) isd_obj = json.loads(isd_str) compare_dict = get_isd('hayabusa2') print(json.dumps(isd_obj, indent=2)) diff --git a/tests/pytests/test_hayabusa_drivers.py b/tests/pytests/test_hayabusa_drivers.py index 07b3f95d0..f25834e8e 100644 --- a/tests/pytests/test_hayabusa_drivers.py +++ b/tests/pytests/test_hayabusa_drivers.py @@ -21,7 +21,7 @@ def test_amica_load(test_amica_kernels): label_file = get_image_label('st_2458542208_v', 'isis') compare_dict = get_isd("hayabusaamica") - isd_str = ale.loads(label_file, props={'kernels': test_amica_kernels}) + isd_str = ale.loads(label_file, props={'kernels': test_amica_kernels, 'attach_kernels': False}) isd_obj = json.loads(isd_str) assert compare_dicts(isd_obj, compare_dict) == [] @@ -59,7 +59,7 @@ def test_nirs_load(test_nirs_kernels): label_file = get_image_label('2392975548_lvl3_0', 'isis') compare_dict = get_isd("hayabusanirs") - isd_str = ale.loads(label_file, props={'kernels': test_nirs_kernels}, verbose=True) + isd_str = ale.loads(label_file, props={'kernels': test_nirs_kernels, 'attach_kernels': False}, verbose=True) isd_obj = json.loads(isd_str) assert compare_dicts(isd_obj, compare_dict) == [] diff --git a/tests/pytests/test_juno_drivers.py b/tests/pytests/test_juno_drivers.py index 0dc0df43c..2ac4422c7 100644 --- a/tests/pytests/test_juno_drivers.py +++ b/tests/pytests/test_juno_drivers.py @@ -21,7 +21,7 @@ def test_kernels(): @pytest.mark.parametrize("label_type", ['isis3']) def test_juno_load(test_kernels, label_type): label_file = get_image_label('JNCR_2016240_01M06152_V01', label_type) - isd_str = ale.loads(label_file, props={'kernels': test_kernels}) + isd_str = ale.loads(label_file, props={'kernels': test_kernels, 'attach_kernels': False}) isd_obj = json.loads(isd_str) compare_dict = get_isd('juno') # print(json.dumps(isd_obj, indent=2)) diff --git a/tests/pytests/test_kaguya_drivers.py b/tests/pytests/test_kaguya_drivers.py index 5ca7bd472..9845e01b7 100644 --- a/tests/pytests/test_kaguya_drivers.py +++ b/tests/pytests/test_kaguya_drivers.py @@ -41,7 +41,7 @@ def test_kaguya_load(test_kernels, label_type, image): compare_isd = get_isd(image_dict[image]) label_file = get_image_label(image, label_type) - isd_str = ale.loads(label_file, props={'kernels': test_kernels[image]}, verbose=False) + isd_str = ale.loads(label_file, props={'kernels': test_kernels[image], 'attach_kernels': False}, verbose=False) isd_obj = json.loads(isd_str) assert compare_dicts(isd_obj, compare_isd) == [] diff --git a/tests/pytests/test_lo_drivers.py b/tests/pytests/test_lo_drivers.py index 0726b7cc1..0f6bed49f 100644 --- a/tests/pytests/test_lo_drivers.py +++ b/tests/pytests/test_lo_drivers.py @@ -24,7 +24,7 @@ def test_high_load(test_high_kernels): label_file = get_image_label('3133_high_res_1', 'isis') compare_dict = get_isd("lohighcamera") - isd_str = ale.loads(label_file, props={'kernels': test_high_kernels}, verbose=False) + isd_str = ale.loads(label_file, props={'kernels': test_high_kernels, 'attach_kernels': False}, verbose=False) isd_obj = json.loads(isd_str) print(json.dumps(isd_obj, indent=2)) assert compare_dicts(isd_obj, compare_dict) == [] @@ -109,7 +109,7 @@ def test_medium_load(test_medium_kernels): label_file = get_image_label('3133_med_res', 'isis') compare_dict = get_isd("lomediumcamera") - isd_str = ale.loads(label_file, props={'kernels': test_medium_kernels}, verbose=True) + isd_str = ale.loads(label_file, props={'kernels': test_medium_kernels, 'attach_kernels': False}, verbose=True) isd_obj = json.loads(isd_str) print(json.dumps(isd_obj, indent=2)) assert compare_dicts(isd_obj, compare_dict) == [] diff --git a/tests/pytests/test_lro_drivers.py b/tests/pytests/test_lro_drivers.py index 0cf115360..f68e08447 100644 --- a/tests/pytests/test_lro_drivers.py +++ b/tests/pytests/test_lro_drivers.py @@ -45,11 +45,11 @@ def test_kernels(): def test_load_lroc_nac(test_kernels, label_type, image, kernel_type): if kernel_type == 'naif': label_file = get_image_label(image, label_type) - isd_str = ale.loads(label_file, props={'kernels': test_kernels[image]}, verbose=False) + isd_str = ale.loads(label_file, props={'kernels': test_kernels[image], 'attach_kernels': False}, verbose=False) compare_isd = image_dict[image] else: label_file = get_image(image) - isd_str = ale.loads(label_file) + isd_str = ale.loads(label_file, props={'attach_kernels': False}) compare_isd = get_isd('lro_isis') print(isd_str) isd_obj = json.loads(isd_str) @@ -62,7 +62,7 @@ def test_load_lroc_nac(test_kernels, label_type, image, kernel_type): @pytest.mark.parametrize("image", ['wac0000a1c4.uv.even']) def test_load_lroc_wac(test_kernels, label_type, image, kernel_type): label_file = get_image_label(image, label_type) - isd_str = ale.loads(label_file, props={'kernels': test_kernels[image]}) + isd_str = ale.loads(label_file, props={'kernels': test_kernels[image], 'attach_kernels': False}) compare_isd = image_dict[image] isd_obj = json.loads(isd_str) print(json.dumps(isd_obj)) @@ -73,7 +73,7 @@ def test_load_lroc_wac(test_kernels, label_type, image, kernel_type): # Test load of MiniRF labels def test_load_minirf(test_kernels): label_file = get_image_label('03821_16N196_S1', 'isis3') - isd_str = ale.loads(label_file, props={'kernels': test_kernels['03821_16N196_S1']}) + isd_str = ale.loads(label_file, props={'kernels': test_kernels['03821_16N196_S1'], 'attach_kernels': False}) isd_obj = json.loads(isd_str) comparison = compare_dicts(isd_obj, image_dict['03821_16N196_S1']) assert comparison == [] diff --git a/tests/pytests/test_mariner_drivers.py b/tests/pytests/test_mariner_drivers.py index 951aac381..9a99a43f1 100644 --- a/tests/pytests/test_mariner_drivers.py +++ b/tests/pytests/test_mariner_drivers.py @@ -20,7 +20,7 @@ def test_mariner10_load(test_mariner10_kernels): label_file = get_image_label('27265', 'isis') compare_dict = get_isd("mariner10") - isd_str = ale.loads(label_file, props={'kernels': test_mariner10_kernels}) + isd_str = ale.loads(label_file, props={'kernels': test_mariner10_kernels, 'attach_kernels': False}) isd_obj = json.loads(isd_str) assert compare_dicts(isd_obj, compare_dict) == [] diff --git a/tests/pytests/test_mdis_drivers.py b/tests/pytests/test_mdis_drivers.py index 0d19c4243..da768ab55 100644 --- a/tests/pytests/test_mdis_drivers.py +++ b/tests/pytests/test_mdis_drivers.py @@ -29,11 +29,11 @@ def test_kernels(): def test_load(test_kernels, label_type, image, kernel_type): if(kernel_type == "naif"): label_file = get_image_label(image, label_type) - isd_str = ale.loads(label_file, props={'kernels': test_kernels}) + isd_str = ale.loads(label_file, props={'kernels': test_kernels, 'attach_kernels': False}) compare_isd = image_dict[image] else: label_file = get_image(image) - isd_str = ale.loads(label_file) + isd_str = ale.loads(label_file, props={'attach_kernels': False}) compare_isd = get_isd("messmdis_isis") isd_obj = json.loads(isd_str) diff --git a/tests/pytests/test_mex_drivers.py b/tests/pytests/test_mex_drivers.py index e2e7e4cda..39c698189 100644 --- a/tests/pytests/test_mex_drivers.py +++ b/tests/pytests/test_mex_drivers.py @@ -33,7 +33,7 @@ def test_mex_hrsc_kernels(scope="module", autouse=True): def test_mex_src_load(test_mex_src_kernels, label): label_file = get_image_label("H0010_0023_SR2", label) compare_dict = get_isd("mexsrc") - isd_str = ale.loads(label_file, props={'kernels': test_mex_src_kernels}, verbose=True) + isd_str = ale.loads(label_file, props={'kernels': test_mex_src_kernels, 'attach_kernels': False}, verbose=True) isd_obj = json.loads(isd_str) print(json.dumps(isd_obj, indent=2)) assert compare_dicts(isd_obj, compare_dict) == [] @@ -60,7 +60,7 @@ def test_mex_load(test_mex_hrsc_kernels, label): binary_exposure_durations.return_value = [0.012800790786743165, 0.012800790786743165, 0.013227428436279297] binary_lines.return_value = [0.5, 6664.5, 6665.5] - usgscsm_isd = ale.load(label_file, props={'kernels': test_mex_hrsc_kernels}) + usgscsm_isd = ale.load(label_file, props={'kernels': test_mex_hrsc_kernels, 'attach_kernels': False}) if label == "isis3": compare_isd = get_isd('mexhrsc_isis') else: diff --git a/tests/pytests/test_mgs_drivers.py b/tests/pytests/test_mgs_drivers.py index c6b49b60f..e3e2d08e6 100644 --- a/tests/pytests/test_mgs_drivers.py +++ b/tests/pytests/test_mgs_drivers.py @@ -24,7 +24,7 @@ def test_nac_load(test_nac_kernels): label_file = get_image_label('m0402852', 'isis') compare_dict = get_isd("mgsmocna") - isd_str = ale.loads(label_file, props={'kernels': test_nac_kernels}) + isd_str = ale.loads(label_file, props={'kernels': test_nac_kernels, 'attach_kernels': False}) isd_obj = json.loads(isd_str) assert compare_dicts(isd_obj, compare_dict) == [] @@ -41,7 +41,7 @@ def test_wac_load(test_wac_kernels): label_file = get_image_label('ab102401', 'isis3') compare_dict = get_isd("mgsmocwa") - isd_str = ale.loads(label_file, props={'kernels': test_wac_kernels}) + isd_str = ale.loads(label_file, props={'kernels': test_wac_kernels, 'attach_kernels': False}) isd_obj = json.loads(isd_str) assert compare_dicts(isd_obj, compare_dict) == [] diff --git a/tests/pytests/test_mro_drivers.py b/tests/pytests/test_mro_drivers.py index f9933d21e..eb87a3ba7 100644 --- a/tests/pytests/test_mro_drivers.py +++ b/tests/pytests/test_mro_drivers.py @@ -51,10 +51,10 @@ def test_mro_ctx_load(test_ctx_kernels, label_type, kernel_type): if label_type == 'isis3' and kernel_type == 'isis': label_file = get_image('B10_013341_1010_XN_79S172W') - isd_str = ale.loads(label_file) + isd_str = ale.loads(label_file, props={'attach_kernels': False}) compare_isd = get_isd('ctx_isis') else: - isd_str = ale.loads(label_file, props={'kernels': test_ctx_kernels}, verbose=True) + isd_str = ale.loads(label_file, props={'kernels': test_ctx_kernels, 'attach_kernels': False}, verbose=True) compare_isd = get_isd('ctx') isd_obj = json.loads(isd_str) @@ -72,7 +72,7 @@ def test_mro_ctx_load(test_ctx_kernels, label_type, kernel_type): def test_mro_hirise_load(test_hirise_kernels, label_type, kernel_type): label_file = get_image_label("PSP_001446_1790_BG12_0", label_type) - isd_str = ale.loads(label_file, props={'kernels': test_hirise_kernels}, verbose=True) + isd_str = ale.loads(label_file, props={'kernels': test_hirise_kernels, 'attach_kernels': False}, verbose=True) compare_isd = get_isd('hirise') isd_obj = json.loads(isd_str) @@ -84,7 +84,7 @@ def test_mro_hirise_load(test_hirise_kernels, label_type, kernel_type): @pytest.mark.parametrize("label_type, kernel_type", [('isis3', 'naif')]) def test_mro_marci_load(test_marci_kernels, label_type, kernel_type): label_file = get_image_label('U02_071865_1322_MA_00N193W', label_type) - isd_str = ale.loads(label_file, props={'kernels': test_marci_kernels}) + isd_str = ale.loads(label_file, props={'kernels': test_marci_kernels, 'attach_kernels': False}) compare_isd = get_isd('marci') @@ -96,7 +96,7 @@ def test_mro_marci_load(test_marci_kernels, label_type, kernel_type): def test_mro_crism_load(test_crism_kernels): label_file = get_image_label('FRT00003B73_01_IF156S_TRR2', 'isis3') - isd_str = ale.loads(label_file, props={'kernels': test_crism_kernels, 'exact_ck_times': False}, verbose=True) + isd_str = ale.loads(label_file, props={'kernels': test_crism_kernels, 'exact_ck_times': False, 'attach_kernels': False}, verbose=True) isd_obj = json.loads(isd_str) compare_isd = get_isd('crism') print(json.dumps(isd_obj)) diff --git a/tests/pytests/test_msi_drivers.py b/tests/pytests/test_msi_drivers.py index adb248d3c..9fa45ecc6 100644 --- a/tests/pytests/test_msi_drivers.py +++ b/tests/pytests/test_msi_drivers.py @@ -21,7 +21,7 @@ def test_kernels(): @pytest.mark.parametrize("label_type", ['isis']) def test_msi_load(test_kernels, label_type): label_file = get_image_label('m0126888978f7_2p', label_type) - isd_str = ale.loads(label_file, props={'kernels': test_kernels}, verbose=True) + isd_str = ale.loads(label_file, props={'kernels': test_kernels, 'attach_kernels': False}, verbose=True) isd_obj = json.loads(isd_str) compare_dict = get_isd('msi') print(json.dumps(isd_obj, indent=2)) diff --git a/tests/pytests/test_msl_drivers.py b/tests/pytests/test_msl_drivers.py index a4cba84a8..46189750e 100644 --- a/tests/pytests/test_msl_drivers.py +++ b/tests/pytests/test_msl_drivers.py @@ -24,7 +24,7 @@ def test_msl_mastcam_load_local(test_mastcam_kernels): label_file = get_image_label('2264ML0121141200805116C00_DRCL', "pds3") compare_dict = get_isd("msl") - isd_str = ale.loads(label_file, props={'kernels': test_mastcam_kernels, 'local': True}) + isd_str = ale.loads(label_file, props={'kernels': test_mastcam_kernels, 'local': True, 'attach_kernels': False}) isd_obj = json.loads(isd_str) assert compare_dicts(isd_obj, compare_dict) == [] @@ -32,7 +32,7 @@ def test_msl_mastcam_load_nadir(test_mastcam_kernels): label_file = get_image_label('2264ML0121141200805116C00_DRCL', "pds3") compare_dict = get_isd("msl_nadir") - isd_str = ale.loads(label_file, props={'kernels': test_mastcam_kernels, 'nadir': True}) + isd_str = ale.loads(label_file, props={'kernels': test_mastcam_kernels, 'nadir': True, 'attach_kernels': False}) isd_obj = json.loads(isd_str) assert compare_dicts(isd_obj, compare_dict) == [] diff --git a/tests/pytests/test_newhorizons_drivers.py b/tests/pytests/test_newhorizons_drivers.py index 3a2334ca1..e685ca741 100644 --- a/tests/pytests/test_newhorizons_drivers.py +++ b/tests/pytests/test_newhorizons_drivers.py @@ -35,7 +35,7 @@ def test_kernels(): @pytest.mark.parametrize("image", ['lor_0034974380_0x630_sci_1']) def test_nhlorri_load(test_kernels, image): label_file = get_image_label(image, 'isis') - isd_str = ale.loads(label_file, props={'kernels': test_kernels[image]}) + isd_str = ale.loads(label_file, props={'kernels': test_kernels[image], 'attach_kernels': False}) compare_isd = image_dict[image] isd_obj = json.loads(isd_str) comparison = compare_dicts(isd_obj, compare_isd) @@ -45,7 +45,7 @@ def test_nhlorri_load(test_kernels, image): @pytest.mark.parametrize("image", ['lsb_0296962438_0x53c_eng']) def test_nhleisa_load(test_kernels, image): label_file = get_image_label(image, 'isis') - isd_str = ale.loads(label_file, props={'kernels': test_kernels[image]}) + isd_str = ale.loads(label_file, props={'kernels': test_kernels[image], 'attach_kernels': False}) compare_isd = image_dict[image] isd_obj = json.loads(isd_str) comparison = compare_dicts(isd_obj, compare_isd) @@ -55,7 +55,7 @@ def test_nhleisa_load(test_kernels, image): @pytest.mark.parametrize("image", ['mpf_0295610274_0x539_sci']) def test_nhmvic_load(test_kernels, image): label_file = get_image_label(image, 'isis') - isd_str = ale.loads(label_file, props={'kernels': test_kernels[image], 'exact_ck_times': False}) + isd_str = ale.loads(label_file, props={'kernels': test_kernels[image], 'exact_ck_times': False, 'attach_kernels': False}) compare_isd = image_dict[image] isd_obj = json.loads(isd_str) @@ -65,7 +65,7 @@ def test_nhmvic_load(test_kernels, image): @pytest.mark.parametrize("image", ['mc3_0034948318_0x536_sci_1']) def test_nhmvictdi_load(test_kernels, image): label_file = get_image_label(image, 'isis') - isd_str = ale.loads(label_file, props={'kernels': test_kernels[image]}) + isd_str = ale.loads(label_file, props={'kernels': test_kernels[image], 'attach_kernels': False}) compare_isd = image_dict[image] isd_obj = json.loads(isd_str) assert compare_dicts(isd_obj, compare_isd) == [] diff --git a/tests/pytests/test_rosetta_drivers.py b/tests/pytests/test_rosetta_drivers.py index a241db500..ec9acd339 100644 --- a/tests/pytests/test_rosetta_drivers.py +++ b/tests/pytests/test_rosetta_drivers.py @@ -165,7 +165,7 @@ def test_load(test_kernels, label_type, image): patch('ale.drivers.rosetta_drivers.RosettaVirtisIsisLabelNaifSpiceDriver.optical_angle', opt_ang): label_file = get_image_label(image, label_type) - isd_str = ale.loads(label_file, props={'kernels': test_kernels[image]}) + isd_str = ale.loads(label_file, props={'kernels': test_kernels[image], 'attach_kernels': False}) isd_obj = json.loads(isd_str) compare_dict = image_dict[image] assert compare_dicts(isd_obj, compare_dict) == [] diff --git a/tests/pytests/test_viking_drivers.py b/tests/pytests/test_viking_drivers.py index f3d334ce4..ccf165b48 100644 --- a/tests/pytests/test_viking_drivers.py +++ b/tests/pytests/test_viking_drivers.py @@ -268,10 +268,10 @@ def test_viking1_load(test_kernels, label_type, kernel_type, image): label_file = get_image_label(image, label_type) if kernel_type == "naif": label_file = get_image_label(image, label_type) - isd = ale.loads(label_file, props={'kernels': test_kernels[image]}, verbose=True) + isd = ale.loads(label_file, props={'kernels': test_kernels[image], 'attach_kernels': False}, verbose=True) else: label_file = os.path.join(data_root, "{}/{}.cub".format(image, image)) - isd = ale.loads(label_file) + isd = ale.loads(label_file, props={'attach_kernels': False}) isd_name = image if kernel_type == "isis": isd_name = isd_name + '_isis' diff --git a/tests/pytests/test_voyager_drivers.py b/tests/pytests/test_voyager_drivers.py index 74c76c96d..7c8551904 100644 --- a/tests/pytests/test_voyager_drivers.py +++ b/tests/pytests/test_voyager_drivers.py @@ -303,7 +303,7 @@ def test_voyager_load(test_kernels, label_type, image): print(test_kernels[image]) label_file = get_image_label(image, label_type) - usgscsm_isd_str = ale.loads(label_file, props={'kernels': test_kernels[image]}, verbose=False) + usgscsm_isd_str = ale.loads(label_file, props={'kernels': test_kernels[image], 'attach_kernels': False}, verbose=False) usgscsm_isd_obj = json.loads(usgscsm_isd_str) isd_name = image