-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
76 lines (68 loc) · 2.13 KB
/
pyproject.toml
File metadata and controls
76 lines (68 loc) · 2.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
[build-system]
requires = ["setuptools>=68", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "flexlog"
version = "1.1.0"
description = "Local-only single-user 1v1 session journal"
requires-python = ">=3.11"
dependencies = [
"Flask>=3.0,<4.0",
"SQLAlchemy>=2.0,<3.0",
# Explicit greenlet: SQLAlchemy declares greenlet>=1 as a conditional
# transitive (only on x86_64/aarch64/etc, not on macOS arm64). When
# the lockfile is generated on macOS arm64, greenlet is OMITTED →
# `pip install --require-hashes` fails on Linux x86_64 (Railway)
# because the Linux sqlalchemy wheel pulls greenlet unpinned. Pinning
# it as a direct dep forces inclusion in the lock with == + hash on
# every platform.
"greenlet>=3,<4",
"Flask-WTF>=1.2,<2.0",
"cryptography>=42,<47",
"argon2-cffi>=23,<24",
"boto3>=1.34,<2",
"sqlcipher3>=0.6,<1",
"Pillow>=10,<13",
"pillow-heif>=0.16,<2",
"gunicorn>=21.2,<24",
]
[project.optional-dependencies]
dev = [
"pytest>=8.0",
"pytest-cov>=5.0",
"pip-tools>=7.4,<8",
"pip-audit>=2.7,<3",
"moto[s3]>=5.0,<6",
"openapi-spec-validator>=0.7,<1",
"PyYAML>=6.0,<7",
]
[project.scripts]
flexlog = "flexlog.__main__:main"
[tool.setuptools.packages.find]
include = ["flexlog*"]
[tool.setuptools.package-data]
flexlog = ["templates/**/*.html", "static/**/*"]
[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = "--cov=flexlog --cov-report=term-missing --cov-fail-under=85 -ra"
markers = [
"slow: opt-in slow tests (e.g. wheel-build smoke). Run with `-m slow`.",
]
filterwarnings = [
# test_db_models deliberately triggers a duplicate-id INSERT to verify
# the UNIQUE constraint. SQLAlchemy emits SAWarning before the DB
# constraint trips; the test catches the DB error and asserts the
# behavior we want.
"ignore:New instance.*conflicts with persistent instance:sqlalchemy.exc.SAWarning",
]
[tool.coverage.run]
branch = false
source = ["flexlog"]
[tool.coverage.report]
show_missing = true
skip_covered = false
exclude_lines = [
"pragma: no cover",
"if __name__ == .__main__.:",
"raise NotImplementedError",
]