-
Notifications
You must be signed in to change notification settings - Fork 4
/
pyproject.toml
99 lines (90 loc) · 4.11 KB
/
pyproject.toml
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
[tool.poetry]
name = "execexam"
version = "0.3.2"
description = "ExecExam runs executable examinations, providing feedback and assistance!"
authors = ["Hemani Alaparthi <[email protected]>","Gregory M. Kapfhammer <[email protected]>"]
readme = "README.md"
[tool.poetry.scripts]
execexam = "execexam.main:cli"
[tool.poetry.dependencies]
python = "^3.11"
pytest = "^8.1.1"
pytest-json-report = "^1.5.0"
rich = "^13.7.1"
coverage = "^7.4.3"
pytest-cov = "^4.1.0"
typer = "^0.12.3"
litellm = {extras = ["proxy"], version = "^1.43.15"}
openai = "^1.41.0"
validators = "^0.33.0"
toml = "^0.10.2"
[tool.poetry.group.dev.dependencies]
taskipy = "^1.13.0"
mypy = "^1.11.1"
pytest-randomly = "^3.15.0"
symbex = "^1.4"
pytest-clarity = "^1.0.1"
hypothesis = "^6.111.1"
[tool.pytest.ini_options]
filterwarnings = [
"error",
]
enable_assertion_pass_hook = true
markers = [
"order(number): marks test to run in a specific order"
]
[tool.ruff]
line-length = 79
lint.ignore = [
"E501", # do not check line length
]
lint.select = [
"E", # pycodestyle errors
"I", # isort
"F", # Pyflakes
"PL", # pylint
"Q", # flake8-quotes
"RUF", # ruff-specific
"W", # pycodestyle warnings
"T201" # flake8-print
]
[tool.isort]
include_trailing_comma = true
force_single_line = true
force_grid_wrap = 0
use_parentheses = true
ensure_newline_before_comments = true
line_length = 88
[tool.taskipy.variables]
project = "execexam"
tests = "tests"
check-command = { var = "ruff check {project} {tests}", recursive = true }
coverage-test-command = "pytest -s --cov-context=test --cov-fail-under=50 --cov-config .coveragerc --cov-report term-missing --cov-report json --cov --cov-branch"
coverage-test-command-silent = "pytest -x --show-capture=no --cov-config .coveragerc --cov-report term-missing --cov-report json --cov --cov-branch"
developer-test-command = "pytest -x -s"
developer-test-silent-command = "pytest -x --show-capture=no"
fixformat-command = { var = "ruff format {project} {tests}", recursive = true }
format-command = { var = "ruff format --check {project} {tests}", recursive = true }
symbex-typed-command = {var = "symbex -s --untyped -d {project} --check", recursive = true}
symbex-documented-command = {var = "symbex -s --undocumented -d {project} --check", recursive = true}
mypy-command = {var = "mypy {project}", recursive = true}
[tool.taskipy.tasks]
all = "task lint && task test"
lint = "task format && task check && task mypy && task symbex"
check = { cmd = "{check-command}", help = "Run the ruff linting checks", use_vars = true }
coverage = { cmd = "{coverage-test-command}", help = "Run test coverage monitoring", use_vars = true }
coverage-silent = { cmd = "{coverage-test-command-silent}", help = "Run test coverage monitoring", use_vars = true }
format = { cmd = "{format-command}", help = "Run the ruff formatter on source code", use_vars = true }
format-fix = { cmd = "{fixformat-command}", help = "Run the ruff formatter to fix source code", use_vars = true }
mypy = { cmd = "{mypy-command}", help = "Run the mypy type checker for potential type errors", use_vars = true }
symbex = "task symbex-typed && task symbex-documented"
symbex-typed = { cmd = "{symbex-typed-command}", help = "Run symbex for fully typed functions", use_vars = true }
symbex-documented = { cmd = "{symbex-documented-command}", help = "Run symbex for documentation", use_vars = true }
test = { cmd = "pytest -x -s -vv", help = "Run the pytest test suite using order randomization and test distribution" }
test-not-fuzz = { cmd = "pytest -x -s -vv -m \"not fuzz\"", help = "Run the pytest test suite using order randomization and test distribution" }
test-not-randomly = { cmd = "pytest -x -s -vv -p no:randomly", help = "Run the pytest test suite without order randomization" }
test-silent = { cmd = "pytest -x --show-capture=no -n auto", help = "Run the pytest test suite without showing output" }
test-silent-not-randomly = { cmd = "pytest -x --show-capture=no -p no:randomly", help = "Run the pytest test suite without showing output and order randomization" }
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"