예제 #1
0
def get_observatory_plugin(plugin_name, observatory=None):
    """Get the mission-specific plugin object `plugin_name` which is typically a
    customization function.

    Can be called from contexts where `observatory` is not known locally but
    won't work correctly in all configurations of CRDS;  works best when
    CRDS_OBSERVATORY is defined or `observatory` appears in CRDS_SERVER_URL.

    Returns locator object named `plugin_name`.
    """
    if observatory is None:
        from crds.client import api
        observatory = api.get_default_observatory()
    locator = get_locator_module(observatory)
    return get_object(f"crds.{observatory}.locate.{plugin_name}")
예제 #2
0
파일: cmdline.py 프로젝트: jbdoggett/crds
    def observatory(self):
        """Return either the command-line override observatory,  or the one determined
        by the client/server exchange.
        """
        if self.args.jwst:
            return self.set_server("jwst")
        if self.args.hst:
            return self.set_server("hst")
        if self.args.roman:
            return self.set_server("roman")

        obs = config.OBSERVATORY.get()
        if obs != "none":
            return self.set_server(obs.lower())

        url = os.environ.get("CRDS_SERVER_URL", None)
        if url is not None:
            for obs in constants.ALL_OBSERVATORIES:
                if obs in url.lower():
                    return self.set_server(obs)

        files = []
        if hasattr(self, "contexts"):
            files += self.contexts
        if hasattr(self.args, "files"):
            files += self.args.files if self.args.files else []

        for file_ in files:
            if file_.startswith("hst"):
                return self.set_server("hst")
            if file_.startswith("jwst"):
                return self.set_server("jwst")

        for file_ in files:
            with log.verbose_on_exception("Failed file_to_observatory for",
                                          repr(file_)):
                return self.set_server(utils.file_to_observatory(file_))

        return api.get_default_observatory()
예제 #3
0
파일: cmdline.py 프로젝트: stscirij/crds
    def observatory(self):
        """Return either the command-line override observatory,  or the one determined
        by the client/server exchange.
        """
        if self.args.jwst:
            return self.set_server("jwst")
        if self.args.hst:
            return self.set_server("hst")
        
        obs = os.environ.get("CRDS_OBSERVATORY", None)
        if obs:
            return self.set_server(obs.lower())

        url = os.environ.get("CRDS_SERVER_URL", None)
        if url is not None:
            for obs in crds.ALL_OBSERVATORIES:
                if obs in url.lower():
                    return self.set_server(obs)

        files = []
        if hasattr(self, "contexts"):
            files += self.contexts
        if hasattr(self.args, "files"):
            files += self.args.files if self.args.files else []
            
        for file_ in files:
            if file_.startswith("hst"):
                return self.set_server("hst")
            if file_.startswith("jwst"):
                return self.set_server("jwst")

        for file_ in files:
            with log.verbose_on_exception("Failed file_to_observatory for", repr(file_)):
                return self.set_server(utils.file_to_observatory(file_))

        return api.get_default_observatory()