[build-system]
requires = [
    "setuptools>=61.0",
    "setuptools_scm[simple]>=6.2",
    "wheel",
    "build",
    "twine"
]
build-backend = "setuptools.build_meta"

[project]
name = "kerbside"
dynamic = ["version"]

description = "A protocol native SPICE VDI proxy"
readme = "README.md"
requires-python = ">=3.7"
dependencies = [
    "shakenfist-utilities==0.8.4",      # apache2

    "click==8.1.7",                     # bsd
    "cryptography",                     # apache2
    "pylogrus",                         # mit
    "setproctitle==1.3.3",              # bsd
    "prometheus-client==0.20.0",        # apache2
    "Flask==2.2.5",                     # bsd
    "Flask-RESTful==0.3.10",            # bsd
    "flasgger==0.9.7.1",                # mit
    "flask-jwt-extended==4.6.0",        # mit
    "bcrypt==4.1.2",                    # apache2
    "gunicorn==21.2.0",                 # mit
    "flask-request-id-middleware==1.1", # mit
    "pyyaml==6.0.1",                    # mit
    "psutil==7.0.0",                    # bsd
    "PyMySQL==1.1.1",                   # mit
    "webargs==8.3.0",                   # mit

    # These must move as a set
    "pydantic==2.12.4",                 # mit
    "pydantic-settings==2.12.0",        # mit
    "pydantic-core==2.41.5",            # (indirect dependency)
    "typing-extensions==4.14.1",        # (indirect dependency)

    # These also move as a set
    "alembic==1.17.2",                  # mit
    "sqlalchemy==2.0.36",               # mit
    "mysqlclient==2.1.1",               # gpl

    # Optional dependancies, depending on what clouds you want to provide access to
    # shakenfist-client               # apache2
    # ovirt-engine-sdk-python>=4.6.1  # apache2
    # keystoneauth1                   # apache2
    # openstacksdk                    # apache2
    # python-keystoneclient           # apache2

    # Indirect dependencies. We do not track license for these.
    "marshmallow==3.21.1",
    "PyJWT==2.9.0",
    "aniso8601==10.0.1",
    "annotated-types==0.7.0",
    "greenlet==3.2.0",
    "importlib-metadata==8.6.1",
    "itsdangerous==2.2.0",
    "jinja2==3.1.6",
    "mako==1.3.10",
    "MarkupSafe==3.0.2",
    "mistune==3.1.3",
    "python-dotenv==1.1.0",
    "pytz==2025.2",
    "werkzeug==3.1.3",
    "zipp==3.21.0",
]

[project.urls]
"Homepage" = "https://shakenfist.com"
"Bug Tracker" = "https://github.com/shakenfist/kerbside/issues"

[project.scripts]
kerbside = "kerbside.main:cli"
kerbside-util = "kerbside.utilities.main:cli"

[tool.setuptools]
packages = ["kerbside"]

[tool.setuptools_scm]
git_describe_command = "git describe --dirty --tags --match v* --first-parent"
write_to = "kerbside/_version.py"

[project.optional-dependencies]
test = [
    "coverage",            # apache2
    "testtools",           # mit
    "mock",                # bsd
    "stestr",              # apache2
    "tox",                 # mit
    "flake8",              # mit

    "shakenfist-client>=0.7.0.0rc6",   # apache2
    #"ovirt-engine-sdk-python>=4.6.1",  # apache2
    "keystoneauth1",                   # apache2
    "openstacksdk>=4.5.0",             # apache2
]
