/ pyproject.toml
pyproject.toml
 1  [project]
 2  name = "spoolman"
 3  version = "0.23.1"
 4  description = "A web service that keeps track of 3D printing spools."
 5  license = "MIT"
 6  readme = "README.md"
 7  authors = [{ name = "Donkie", email = "daniel.cf.hultgren@gmail.com" }]
 8  dependencies = [
 9      "uvicorn~=0.34",
10      "httptools>=0.6.4; platform_machine != \"armv7l\"",
11      "uvloop!=0.15.0,!=0.15.1,>=0.21.0; platform_machine != \"armv7l\" and sys_platform != \"win32\" and (sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\")",
12      "fastapi~=0.115",
13      "SQLAlchemy[aiomysql,aiosqlite,asyncio,postgresql_asyncpg]~=2.0",
14      "pydantic~=2.10",
15      "platformdirs~=4.3",
16      "alembic~=1.15",
17      "scheduler~=0.8",
18      "sqlalchemy-cockroachdb~=2.0",
19      "asyncpg~=0.30",
20      "psycopg2-binary~=2.9",
21      "setuptools~=78.1",
22      "WebSockets~=15.0",
23      "prometheus-client~=0.21",
24      "httpx~=0.28",
25      "hishel~=0.1",
26      "aiomysql[rsa]~=0.3",
27  ]
28  requires-python = ">=3.10"
29  
30  [dependency-groups]
31  dev = [
32      "ruff==0.14.10",
33      "pytest~=8.3.5",
34      "pytest-asyncio~=0.25.3",
35      "httpx~=0.28.1",
36      "poethepoet>=0.40.0",
37  ]
38  
39  [tool.poe.tasks.generate-docs]
40  script = "spoolman.docs:generate_docs"
41  help = "Generate API documentation for Spoolman."
42  
43  [tool.poe.tasks.bump]
44  script = "spoolman.bump:bump"
45  help = "Bump Spoolman version."
46  
47  [tool.poe.tasks.run]
48  cmd = "uvicorn spoolman.main:app"
49  help = "Start Spoolman."
50  
51  [tool.poe.tasks.itest]
52  cmd = "python tests_integration/run.py"
53  help = "Builds Spoolman and runs integration tests on the backend against all supported databases."
54  
55  [tool.bumpversion]
56  current_version = "0.22.1"
57  parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
58  serialize = ["{major}.{minor}.{patch}"]
59  allow_dirty = false
60  
61  [[tool.bumpversion.files]]
62  filename = "pyproject.toml"
63  search = 'version = "{current_version}"'
64  replace = 'version = "{new_version}"'
65  
66  [tool.ruff]
67  line-length = 120
68  target-version = "py310"
69  
70  [tool.ruff.lint]
71  select = ["ALL"]
72  ignore = [
73      "A003",
74      "COM812",
75      "D101",
76      "D104",
77      "D203",
78      "D213",
79      "D406",
80      "D407",
81      "DTZ003",
82      "EM101",
83      "EM102",
84      "FA100",
85      "FIX002",
86      "PLR0913",
87      "S104",
88      "S603",
89      "SIM108",
90      "TD002",
91      "TD003",
92      "TRY003",
93      "TRY201",
94  ]
95  
96  [tool.ruff.lint.per-file-ignores]
97  "tests*/*" = ["ANN201", "ASYNC210", "S101", "PLR2004", "D103", "TID252"]
98  "migrations/versions/*" = ["N999"]