-
Notifications
You must be signed in to change notification settings - Fork 50
Expand file tree
/
Copy pathpyproject.toml
More file actions
118 lines (102 loc) · 3.18 KB
/
pyproject.toml
File metadata and controls
118 lines (102 loc) · 3.18 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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# Copyright (C) 2022-2025 Intel Corporation
# LIMITED EDGE SOFTWARE DISTRIBUTION LICENSE
[project]
name = "user-directory"
version = "1.0.0"
description = "User Directory service for Geti"
requires-python = ">=3.10, <3.11"
dependencies = [
"confluent-kafka==2.3.0",
"cryptography==46.0.5",
"fastapi==0.117.1",
"starlette>=0.47.2", # Lower bound due to CVEs
"Jinja2==3.1.*",
"kubernetes==24.2.0",
"Pillow>=10.2.0",
"pyjwt==2.12.0",
"python-ldap==3.4.5",
"sherlock[kubernetes]==0.4.0",
"uvicorn==0.19.0",
"geti-spicedb-tools",
"geti-telemetry-tools[telemetry,fastapi]",
"grpc_interfaces[account-service]",
"users_handler",
]
[tool.uv.sources]
geti-spicedb-tools = { path = "../../../libs/spicedb_tools", editable = true }
geti-telemetry-tools = { path = "../../../libs/telemetry_tools", editable = true }
grpc_interfaces = { path = "../../../libs/grpc_interfaces", editable = true }
users_handler = { path = "../../libs/users_handler", editable = true }
[dependency-groups]
dev = [
"pytest~=8.3",
"ruff~=0.11.2",
"pre-commit~=4.1",
"mypy~=1.15",
"httpx~=0.23",
"pytest-mock~=3.14",
"types-requests",
"pytest-asyncio~=0.19.0"
]
[tool.ruff]
target-version = "py310"
line-length = 120
exclude = [
".venv*",
]
src = ["src"]
[tool.ruff.lint]
select = ["ARG", "E", "F", "I", "N", "UP", "YTT", "ASYNC", "S", "COM", "C4", "FA", "PIE", "PYI", "Q", "RSE", "RET", "SIM",
"TID", "TC", "PL", "RUF", "C90", "D103", "ANN001", "ANN201", "ANN205", "FAST"]
ignore = ["N801", "N805","N806","N807", "N818", "COM812", "RET503", "SIM108", "SIM105", "PLR2004",
"RUF010", "TC001", "RUF012"]
fixable = ["ALL"]
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
[tool.ruff.lint.per-file-ignores]
"__init__.py" = ["E402"]
# Covers any pytest
"*test*.py" = ["E741", "E402", "E501",
"S",
"RET",
"PL",
"RUF",
"SIM",
"D103",
"ARG",
"PYI024",
"ANN"]
# Covers BDD tests
"*features*.py" = ["E741", "E402", "E501",
"S",
"RET",
"PL",
"RUF",
"SIM",
"D103",
"ARG",
"PYI024",
"ANN"]
[tool.ruff.lint.isort]
# First-party = self-contained packages defined within Geti
known-first-party = [
"base_logger", "common_logger", "datumaro_helper", "jobs_common",
"k8s_custom_resources", "load_tests", "microservices", "nodes_resource",
"platform_models", "iai_core", "telemetry", "users_handler", "account_service_client", "migration", "kafka_client"
]
# Local folder = Geti folder that often appears as base in import statements, but that doesn't qualify as a package logically
known-local-folder = [
"application", "common", "communication", "config", "job", "migration_job", "tests", "platform_cleaner", "weights_uploader"
]
# Third-party = self-contained packages defined and maintained outside Geti
known-third-party = ["grpc", "kafka", "kubernetes", "kubernetes_asyncio", "minio", "otx", "starlette", "sqlalchemy"]
split-on-trailing-comma = false
[tool.ruff.lint.pylint]
max-args=7
[tool.mypy]
python_version = "3.10"
ignore_missing_imports = true
exclude = "^.*/tests/.*\\.py$"
show_error_codes = true
[tool.mypy-torch]
follow_imports = "skip"
follow_imports_for_stubs = true