[build-system] requires = ["poetry>=1.0.0", "babel"] build-backend = "poetry.masonry.api" [tool] [tool.poetry] name = "Canaille" version = "0.0.33" description = "Minimalistic identity provider" license = "MIT" keywords = ["oidc", "oauth", "oauth2", "openid", "identity"] classifiers = [ "Intended Audience :: Developers", "Development Status :: 3 - Alpha", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: Implementation :: CPython", "License :: OSI Approved :: MIT License", "Environment :: Web Environment", "Programming Language :: Python", "Operating System :: OS Independent", "Topic :: System :: Systems Administration :: Authentication/Directory", "Topic :: System :: Systems Administration :: Authentication/Directory :: LDAP", ] authors = ["Yaal Coop "] maintainers = [ "Éloi Rivard ", ] homepage = "https://canaille.yaal.coop" documentation = "https://canaille.readthedocs.io/en/latest/" repository = "https://gitlab.com/yaal/canaille" readme = "README.md" include = ["canaille/translations/*/LC_MESSAGES/*.mo"] [tool.poetry.dependencies] python = "^3.8" flask = ">=2.2.2 <2.3" flask-wtf = "^1.1.1" wtforms = "^3.0.1" werkzeug = ">=2.2.2 <2.3" # extra : front email_validator = {version = "^2.0.0", optional=true} flask-babel = {version = "^3.0.0", optional=true} flask-themer = {version = "^2.0.0", optional=true} pycountry = {version = ">=22.1.10", optional=true} pytz = {version = ">=2022.7", optional=true} toml = {version = "^0.10.0", optional=true} # extra : oidc authlib = {version = "^1.2.1", optional=true} # extra : ldap python-ldap = {version = "^3.4.0", optional=true} # extra : sentry sentry-sdk = {version = "<2", optional=true, extras=["flask"]} [tool.poetry.group.doc] optional = true [tool.poetry.group.doc.dependencies] sphinx = "^7.0.0" sphinx-rtd-theme = "^1.3.0" sphinx-issues = "^3.0.0" pygments-ldif = "^1.0.1" [tool.poetry.group.dev.dependencies] coverage = {version = "*", extras=["toml"]} faker = "*" flask-webtest = "*" freezegun = "*" pre-commit = "*" pyquery = "*" pytest = "*" pytest-coverage = "*" pytest-flask = "==1.2.0" pytest-httpserver = "*" pytest-lazy-fixture = "==0.6.3" pytest-xdist = "==3.3.1" slapd = "*" smtpdfix = "*" [tool.poetry.group.demo] optional = true [tool.poetry.group.demo.dependencies] faker = "*" honcho = "*" slapd = "*" requests = "*" [tool.poetry.extras] front = [ "click", "email_validator", "flask-babel", "flask-themer", "pycountry", "pytz", "toml", ] ldap = [ "python-ldap", ] oidc = [ "authlib", ] sentry = [ "sentry-sdk", ] all = [ "click", "email_validator", "flask-babel", "flask-themer", "pycountry", "pytz", "toml", "python-ldap", "authlib", "sentry-sdk", ] [tool.poetry.scripts] canaille = "canaille.commands:cli" [options.packages.find] exclude = [ "tests", "tests.*", "doc", "doc.*", ] [tool.poetry.build] generate-setup-file = false script = "build.py" [tool.coverage.run] source = [ "canaille", "tests", ] omit = [".tox/*"] branch = true [tool.coverage.report] exclude_lines = [ "pragma: no cover", "raise NotImplementedError", "except ImportError", "if app.debug", ] [tool.ruff] ignore = ["E501", "E722"] [tool.tox] legacy_tox_ini = """ [tox] isolated_build = true skipsdist = true envlist = style py38 py39 py310 py311 doc coverage [testenv] allowlist_externals = poetry commands = poetry install --extras all poetry run pytest --showlocals --full-trace {posargs:-n auto} [testenv:style] commands = pip install pre-commit pre-commit run --all-files [testenv:doc] commands = poetry install --with doc --without dev --extras oidc poetry run sphinx-build doc build/sphinx/html [testenv:coverage] commands = poetry install --extras all poetry run pytest --cov --cov-fail-under=100 --cov-report term:skip-covered {posargs:-n auto} poetry run coverage html """