예제 #1
0
파일: diff.py 프로젝트: brechmos-stsci/crds
 def locate_file(self, filename):
     """Return the full path for `filename` implementing default CRDS file cache
     location behavior,  and verifying that the resulting path is safe.
     """
     path = config.locate_file(filename, self.observatory)
     config.check_path(path)  # check_path returns abspath,  bad for listsings.
     return path
예제 #2
0
파일: cmdline.py 프로젝트: stscirij/crds
 def locate_file(self, filename):
     """Locate file defines how members of the self.args.files list are located.
     The default behavior is to locate CRDS cached files,  either references or mappings.
     This is inappropriate for datasets so in some cases locate_file needs to be overridden.
     Symbolic context names, e.g. hst-operatonal, resolved to literal contexts, e.g. hst_0320.pmap
     """
     filename = config.pop_crds_uri(filename)   # nominally crds://
     return config.locate_file(self.resolve_context(filename), observatory=self.observatory)
예제 #3
0
파일: cmdline.py 프로젝트: nden/crds
 def locate_file(self, filename):
     """Locate file defines how members of the self.args.files list are located.
     The default behavior is to locate CRDS cached files,  either references or mappings.
     This is inappropriate for datasets so in some cases locate_file needs to be overridden.
     Symbolic context names, e.g. hst-operatonal, resolved to literal contexts, e.g. hst_0320.pmap
     """
     filename = config.pop_crds_uri(filename)   # nominally crds://
     return config.locate_file(self.resolve_context(filename), observatory=self.observatory)
예제 #4
0
 def locate_file(self, filename):
     """Return the full path for `filename` implementing default CRDS file cache
     location behavior,  and verifying that the resulting path is safe.
     """
     path = config.locate_file(filename, self.observatory)
     config.check_path(
         path)  # check_path returns abspath,  bad for listsings.
     return path
예제 #5
0
파일: cmdline.py 프로젝트: stscirij/crds
 def locate_file_outside_cache(self, filename):
     """This is essentially normal filename syntax,  except crds:// is interpreted to mean
     locate filename inside the CRDS cache.  symbolic context names are also resolved to
     literal context filenames.
     """
     filename2 = config.pop_crds_uri(filename)   # nominally crds://
     filename2 = self.resolve_context(filename2) # e.g. hst-operational -->  hst_0320.pmap
     if filename != filename2:  # Had crds:// or was date based copnt
         return config.locate_file(filename2, self.observatory)
     else:
         return os.path.abspath(filename2)
예제 #6
0
파일: cmdline.py 프로젝트: nden/crds
 def locate_file_outside_cache(self, filename):
     """This is essentially normal filename syntax,  except crds:// is interpreted to mean
     locate filename inside the CRDS cache.  symbolic context names are also resolved to
     literal context filenames.
     """
     filename2 = config.pop_crds_uri(filename)   # nominally crds://
     filename2 = self.resolve_context(filename2) # e.g. hst-operational -->  hst_0320.pmap
     if filename != filename2:  # Had crds:// or was date based copnt
         return config.locate_file(filename2, self.observatory)
     else:
         return os.path.abspath(filename2)
예제 #7
0
파일: test_sync.py 프로젝트: nden/crds
 def test_sync_contexts(self):
     self.run_script("crds.sync --contexts hst_cos.imap")
     for name in crds.get_cached_mapping("hst_cos.imap").mapping_names():
         self.assert_crds_exists(name)
     self.run_script("crds.sync --contexts hst_cos_deadtab.rmap --fetch-references")
     for name in crds.get_cached_mapping("hst_cos_deadtab.rmap").reference_names():
         self.assert_crds_exists(name)
         with open(config.locate_file(name, "hst"), "w+") as handle:
             handle.write("foo")
     self.run_script("crds.sync --contexts hst_cos_deadtab.rmap --fetch-references --check-files", 2)
     self.run_script("crds.sync --contexts hst_cos_deadtab.rmap --fetch-references --check-files --repair-files", 2)
     self.run_script("crds.sync --contexts hst_cos_deadtab.rmap --fetch-references --check-files --repair-files")
     self.run_script("crds.sync --contexts hst_cos_deadtab.rmap --fetch-references --check-files --repair-files --check-sha1sum")
예제 #8
0
def get_cache_path(context, reftype, error_on_missing=True):
    """
    Fetch the full path to the single reference file of reftype.
    """
    context = rmap.asmapping(context)
    imap = context.get_imap(SYNPHOT_INSTRUMENT)
    mapping = imap.get_rmap(reftype)
    filenames = mapping.reference_names()

    if len(filenames) == 0 and not error_on_missing:
        return None

    if len(filenames) != 1:
        raise RuntimeError(
            "Expected '{}' rmap to contain one reference file".format(reftype))

    filename = filenames[0]
    return config.locate_file(filename, observatory="hst")
예제 #9
0
    def _build_compname_to_path(self, reftype, delivered_files):
        """
        Build a map of component names to filesystem paths, using freshly
        delivered files by preference.
        """
        result = {}
        for file in delivered_files:
            with fits.open(file) as hdul:
                # A significant minority of existing files have uppercase COMPNAME,
                # enough that it's not worthwhile to redeliver them all.
                result[hdul[0].header["COMPNAME"].lower()] = file

        mapping = self.imap.get_rmap(reftype)
        # This is a tad brittle, in that it assumes that the COMPNAME parkey
        # will occupy the first position.
        for key, filename in mapping.selector.todict()["selections"]:
            compname = key[0].lower()
            if not compname in result:
                result[compname] = config.locate_file(filename, "hst")

        return result
예제 #10
0
 def assert_crds_not_exists(self, filename, observatory="hst"):
     self.assertFalse(os.path.exists(config.locate_file(filename, observatory)))
예제 #11
0
파일: api.py 프로젝트: nden/crds
 def locate(self, name):
     """Return the standard CRDS cache location for file `name`."""
     return config.locate_file(name, observatory=self.observatory)
예제 #12
0
파일: test_config.py 프로젝트: nden/crds
 def assert_crds_not_exists(self, filename, observatory="hst"):
     self.assertFalse(
         os.path.exists(config.locate_file(filename, observatory)))
예제 #13
0
파일: utils.py 프로젝트: nden/crds
def get_file_properties(observatory, filename):
    """Return instrument,filekind fields associated with filename."""
    path = config.locate_file(filename, observatory)
    return get_locator_module(observatory).get_file_properties(path)