[project]
name = "SimpleLogin"
version = "0.1.0"
description = "SimpleLogin partner API"
authors = [ {name="SimpleLogin", email="dev@simplelogin.io"}]
license = "MIT"
repository = "https://github.com/simple-login/app"
keywords = ["email", "alias", "privacy", "oauth2", "openid"]
packages = [
    { include = "app/" },
    { include = "migrations/" },
]
include = ["templates/*", "templates/**/*", "local_data/*.txt"]

requires-python = "~=3.12"

dependencies = [
    "flask ~= 1.1.2",
    "flask_login ~= 0.5.0",
    "wtforms ~= 2.3.3",
    "unidecode ~= 1.1.1",
    "gunicorn ~= 20.0.4",
    "bcrypt ~= 3.2.0",
    "python-dotenv ~= 0.14.0",
    "ipython ~= 7.31.1",
    "sqlalchemy_utils ~= 0.36.8",
    "psycopg2-binary ~= 2.9.10",
    "sentry_sdk ~= 2.20.0",
    "blinker ~= 1.9.0",
    "arrow ~= 0.16.0",
    "Flask-WTF ~= 0.14.3",
    "boto3 ~= 1.35.37",
    "Flask-Migrate ~= 2.5.3",
    "flask_admin ~= 1.5.6",
    "flask-cors ~= 3.0.9",
    "watchtower ~= 0.8.0",
    "sqlalchemy-utils == 0.36.8",
    "jwcrypto ~= 0.8",
    "yacron~=0.19.0",
    "flask-debugtoolbar ~= 0.11.0",
    "requests_oauthlib ~= 1.3.0",
    "pyopenssl ~= 19.1.0",
    "aiosmtpd ~= 1.2",
    "dnspython ~= 2.7.0",
    "coloredlogs ~= 14.0",
    "pycryptodome ~= 3.9.8",
    "phpserialize ~= 1.3",
    "dkimpy == 1.0.5",
    "pyotp ~= 2.4.0",
    "flask_profiler ~= 1.8.1",
    "facebook-sdk ~= 3.1.0",
    "google-api-python-client ~= 1.12.3",
    "google-auth-httplib2 ~= 0.0.4",
    "python-gnupg ~= 0.4.6",
    "webauthn ~= 0.4.7",

    # Git dependency until pyspf creates a new release
    #"pyspf @ git+https://github.com/sdgathman/pyspf.git@665a6df079485a9824be0829e7d71088453db7f6",
    "pyspf ~= 2.0.14",

    "Flask-Limiter == 1.5",
    "memory_profiler ~= 0.57.0",
    "gevent ~= 24.11.1",
    "email-validator ~= 2.2.0",
    "PGPy == 0.5.4",
    "coinbase-commerce ~= 1.0.1",
    "requests ~= 2.25.1",
    "newrelic ~= 8.8.0",
    "flanker ~= 0.9.11",
    "pyre2 ~= 0.3.6",
    "tldextract ~= 3.1.2",
    "flask-debugtoolbar-sqlalchemy ~= 0.2.0",
    "twilio ~= 7.3.2",
    "Deprecated ~= 1.2.13",
    "MarkupSafe~=1.1.1",
    "cryptography ~= 37.0.1",
    "SQLAlchemy ~= 1.3.24",
    "redis==5.2.1",
    "newrelic-telemetry-sdk ~= 0.5.0",
    "aiospamc == 0.10",
    "itsdangerous ~= 1.1.0",
    "werkzeug ~= 1.0.1",
    "alembic ~= 1.4.3",
    "limits ~= 4.0.1",
    "strictyaml ~= 1.7.3",
]

[tool.black]
target-version = ['py312']
exclude = '''
(
 /(
   \.eggs         # exclude a few common directories in the
   | \.git          # root of the project
   | \.hg
   | \.mypy_cache
   | \.tox
   | \.venv
   | _build
   | buck-out
   | build
   | dist
   | migrations    # migrations/ is generated by alembic
   | app/events/generated
  )/
)
'''

[tool.ruff]
exclude = [".venv", "migrations", "app/events/generated"]
[tool.ruff.lint]
ignore-init-module-imports = true

[tool.djlint]
indent = 2
profile = "jinja"
blank_line_after_tag = "if,for,include,load,extends,block,endcall"
# H006: Images should have a height attribute
# H013: Images should have an alt attribute
# H016: Missing title tag in html. | False positive on template
# H017: Tag should be self closing
# H019: Replace 'javascript:abc()' with on_ event and real url. (javascript:history.back())
# H021: Avoid inline styles
# H025: Tag seems to be orphan (it messes up with indicators on strings such as <email@example.com>)
# H030: Consider adding a meta description | False positive on template
# H031: Consider adding meta keywords
# T003: Endblock should have a name
# J004: (Jinja) Static urls should follow {{ url_for('static'..) }} pattern
# J018: (Jinja) Internal links should use the {{ url_for() ... }} pattern. | Some false positives
# T001: Variables should be wrapped in a single whitespace. | Messes up with comments
ignore = "H006,H013,H016,H017,H019,H021,H025,H030,H031,T003,J004,J018,T001"

[tool.uv]
dev-dependencies = [
    "pytest ~= 7.0.0",
    "pytest-cov ~= 3.0.0",
    "pre-commit ~= 4.1.0",
    "black ~= 22.1.0",
    "djlint==1.34.1",
    "pylint ~= 2.14.4",
    "ruff ~= 0.1.5",
]

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[tool.hatch.metadata]
allow-direct-references = true

[tool.hatch.build.targets.sdist]
include = ["app", "local_data", "migrations", "templates"]

[tool.hatch.build.targets.wheel]
packages = ["app", "local_data", "migrations", "templates"]
