main.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import logging
  2. from pathlib import Path
  3. from typing import List
  4. import arklog
  5. import sys
  6. from signal import SIGINT, SIGTERM, signal
  7. import dacite
  8. import toml
  9. from graph_exploring_tool import __version__
  10. from graph_exploring_tool.graphical.interface import interface
  11. from graph_exploring_tool.query import QueryTemplate
  12. def handler(signal_code, _) -> None:
  13. """Signal handler."""
  14. logging.debug(f"Shutting down because signal {signal_code} was received.")
  15. sys.exit(5)
  16. def load_palette(palette_directory: Path) -> List:
  17. """"""
  18. for query_path in palette_directory.rglob("*.toml"):
  19. logging.debug(f"Loading palette query '{query_path}'.")
  20. query_configuration = toml.loads(query_path.read_text(encoding="utf-8"))
  21. yield dacite.from_dict(data_class=QueryTemplate, data=query_configuration)
  22. def launch():
  23. """"""
  24. signal(SIGINT, handler)
  25. signal(SIGTERM, handler)
  26. arklog.set_config_logging()
  27. logging.info(f"GET {__version__}.")
  28. data_dir = Path(__file__).resolve().parent.parent / Path("data")
  29. logging.debug(f"Looking for configuration in '{data_dir}'.")
  30. try:
  31. configuration = toml.loads((data_dir / Path("configuration.toml")).read_text(encoding="utf-8"))
  32. except FileNotFoundError as e:
  33. logging.error(f"Configuration not found. {e}")
  34. return 8
  35. endpoint_fuseki = configuration.get("endpoint_fuseki", "http://127.0.0.1:3030/Drivetrain/sparql")
  36. example_prefix = configuration.get("example_prefix", "")
  37. example_query = configuration.get("example_query", "")
  38. logging.debug("Parameters:")
  39. logging.debug(f" -> {endpoint_fuseki=}")
  40. logging.debug(f" -> {example_prefix=}")
  41. logging.debug(f" -> {example_query=}")
  42. palette = load_palette(data_dir / Path("palette"))
  43. return interface(endpoint=endpoint_fuseki, example_prefix=example_prefix, example_query=example_query, palette=palette)
  44. if __name__ == "__main__":
  45. launch()