[build-system]
# A list of packages that are needed to build your package:
requires = ["setuptools"] # REQUIRED if [build-system] table is used
# The name of the Python object that frontends will use to perform the build:
build-backend = "setuptools.build_meta" # If not defined, then legacy behavior can happen.


[project]
version = "3.0.7"
name = "karabo.karathon"
description = "Karabo's Karathon Python API"
readme = "README.md"
requires-python = ">=3.12"
license = "MPL-2.0"
keywords = ["Karabo", "SCADA", "async", "control system"]
authors = [{ name = "European XFEL GmbH", email = "opensource@xfel.eu" }]
maintainers = [
  { name = "S. Hauf", email = "steffen.hauf@xfel.eu" },
  { name = "D. Goeries", email = "dennis.goeries@xfel.eu" },
]

# Classifiers help users find your project by categorizing it.
#
# For a list of valid classifiers, see https://pypi.org/classifiers/
classifiers = [
  # How mature is this project? Common values are
  #   3 - Alpha
  #   4 - Beta
  #   5 - Production/Stable
  "Development Status :: 5 - Production/Stable",

  # Indicate who your project is intended for
  "Intended Audience :: Developers",
  "Intended Audience :: Science/Research",
]

# This field lists other packages that your project depends on to run.
# Any package you put here will be installed by pip when your project is
# installed, so they must be valid existing projects.
#
# For an analysis of this field vs pip's requirements files see:
# https://packaging.python.org/discussions/install-requires-vs-requirements/
dependencies = [
  "SQLAlchemy==2.0.43",
  "aiormq==3.3.1",
  "ipython==8.17.2",
  "karabo-native==3.0.7",
  "lxml==6.0.2",
  "numpy==2.1.3",
  "pint>=0.24.4",
  "psutil==5.9.5",
  "pyexistdb==1.0.1",
  "pytest==8.3.3",
  "pytest_asyncio==1.2.0",
  "python_dateutil==2.9.0.post0",
  "pytz==2020.5",
  "sqlmodel==0.0.22",
  "tornado==6.3.3",
  "traits==6.4.3",
  "tzlocal==5.0.1",
  "urllib3==1.26.20",
  ]

# List URLs that are relevant to your project
#
# This field corresponds to the "Project-URL" and "Home-Page" metadata fields:
# https://packaging.python.org/specifications/core-metadata/#project-url-multiple-use
# https://packaging.python.org/specifications/core-metadata/#home-page-optional
#
# Examples listed include a pattern for specifying where the package tracks
# issues, where the source is hosted, where to say thanks to the package
# maintainers, and where to support the project financially. The key is
# what's used to render the link text on PyPI.
[project.urls]
"Homepage" = "https://github.com/European-XFEL/Karabo"
"Bug Reports" = "https://github.com/European-XFEL/Karabo/issues"
#"Funding" = "https://donate.pypi.org"
# "Say Thanks!" = "mailto://opensource@xfel.eu"
"Source" = "https://github.com/European-XFEL/Karabo"

# The following would provide a command line executable called `sample`
# which executes the function `main` from this package when invoked.
[project.scripts]
karabo-middlelayerserver = "karabo.middlelayer.device_server:MiddleLayerDeviceServer.main"
karabo-macroserver = "karabo.middlelayer.macro_server:MacroServer.main"
karabo-webserver = "karabo.interactive.webserver:run_webserver"
karabo-webaggregatorserver = "karabo.interactive.webaggregatorserver:run_webserver"
ikarabo = "karabo.interactive.ikarabo:main"

[project.entry-points."karabo.middlelayer_device"]
PropertyTest = "karabo.middlelayer_devices.property_test:PropertyTest"
ProjectManager = "karabo.middlelayer_devices.project_manager:ProjectManager"
ConfigurationManager = "karabo.middlelayer_devices.configuration_manager:ConfigurationManager"
DaemonManager = "karabo.middlelayer_devices.daemon_manager:DaemonManager"

[project.entry-points."karabo.macro_device"]
MetaMacro = "karabo.middlelayer.metamacro:MetaMacro"

[project.entry-points."karabo.project_db"]
file_db = "karabo.project_db.file_db.node:DbConnectionNode"
exist_db = "karabo.project_db.exist_db.node:DbConnectionNode"

# This is configuration specific to the `setuptools` build backend.
# If you are using a different build backend, you will need to change this.
[tool.setuptools]
# If there are data files included in your packages that need to be
# installed, specify them here.
[tool.setuptools.package-data]
"karabo.common.scenemodel.tests" = ["data/*.svg", "data/inkscape/*.svg", "data/legacy/*.svg", "data/legacy/icon_data/*.svg"]
"karabo.interactive" = [
  'static/*.css',
  'static/*.js',
  'static/*.html',
  'static/favicon.ico',
  'templates/*.html'
]

"karabo.middlelayer.tests" = ["*.xml"]
"karabo.testing" = ["resources/*.*"]