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}")
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()
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()