File: pyproject.toml

package info (click to toggle)
python-choreographer 1.2.1-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 588 kB
  • sloc: python: 2,853; makefile: 10
file content (136 lines) | stat: -rw-r--r-- 4,483 bytes parent folder | download | duplicates (4)
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
[build-system]
requires = ["setuptools>=65.0.0", "wheel", "setuptools-git-versioning"]
build-backend = "setuptools.build_meta"

[tool.setuptools]

[tool.setuptools.packages.find]
where = ["src"]
namespaces = false

[tool.setuptools-git-versioning]
enabled = true

[tool.setuptools.package-data]
choreographer = ['resources/last_known_good_chrome.json']

[project]
name = "choreographer"
description = "Devtools Protocol implementation for chrome."
readme = "README.md"
requires-python = ">=3.8"
license = { "file" = "LICENSE.md" }
version = "1.2.1"
authors = [
  {name = "Andrew Pikul", email="ajpikul@gmail.com"},
  {name = "Neyberson Atencio", email="neyberatencio@gmail.com"}
  ]
maintainers = [
  {name = "Andrew Pikul", email = "ajpikul@gmail.com"},
]
dependencies = [
  "logistro>=2.0.1",
  "simplejson>=3.19.3",
]

[project.urls]
Homepage = "https://github.com/plotly/choreographer"
Repository = "https://github.com/plotly/choreographer"

[project.scripts]
choreo_diagnose = "choreographer.cli._cli_utils_no_qa:diagnose"
choreo_get_chrome = "choreographer.cli._cli_utils:get_chrome_cli"

[dependency-groups]
dev = [
  "pytest",
  "pytest-asyncio; python_version < '3.14'",
  "pytest-asyncio>=1.2.0; python_version >= '3.14'",
  "pytest-xdist",
  "async-timeout",
  "numpy; python_version < '3.11'",
  "numpy>=2.3.3; python_version >= '3.11'",
  "mypy>=1.14.1",
  "types-simplejson>=3.19.0.20241221",
  "poethepoet>=0.30.0",
  "pyright>=1.1.406",
]

# uv doens't allow dependency groups to have separate python requirements
# it resolves everything all at once
# this group we need to require higher python
# and only resolve if explicitly asked for

#docs = [
#    "mkquixote @ git+ssh://git@github.com/geopozo/mkquixote; python_version >= '3.11'",
#    "mkdocs>=1.6.1",
#    "mkdocs-material>=9.5.49",
#]

[tool.uv.sources]
#mkquixote = { path = "../mkquixote", editable = true }
#logistro = { path = "../logistro", editable = true }

[tool.ruff]
src = ["src"]

[tool.ruff.lint]
select = ["ALL"]
ignore = [
          "ANN", # no types
          "EM", # allow strings in raise(), despite python being ugly about it
          "TRY003", # allow long error messages inside raise()
          "D203", # No blank before class docstring (D211 = require blank line)
          "D212", # Commit message style docstring is D213, ignore D212
          "COM812", # manual says linter rule conflicts with formatter
          "ISC001", # manual says litner rule conflicts with formatter
          "RET504", # Allow else if unnecessary because more readable
          "RET505", # Allow else if unnecessary because more readable
          "RET506", # Allow else if unnecessary because more readable
          "RET507", # Allow else if unnecessary because more readable
          "RET508", # Allow else if unnecessary because more readable
          "RUF012", # We don't do typing, so no typing
          "SIM105", # Too opionated (try-except-pass)
          "PT003", # scope="function" implied but I like readability
          "G004", # fstrings in my logs
          ]

[tool.ruff.lint.per-file-ignores]
"tests/*" = [
              "D", # ignore docstring errors
              "S101", # allow assert
              "INP001", # no need for __init__ in test directories
              "T201", # if we're printing in tests, there is a reason
              "ERA001"
            ]

[tool.pytest.ini_options]
asyncio_default_fixture_loop_scope = "function"
log_cli = false
addopts = "--import-mode=append"

[tool.poe]
executor.type = "virtualenv"

[tool.poe.tasks]
test_proc = "pytest --log-level=1 -W error -n auto -v -rfE --capture=fd tests/test_process.py"
test_fn = "pytest --log-level=1 -W error -n auto -v -rfE --capture=fd --ignore=tests/test_process.py"
debug-test_proc = "pytest --log-level=1 -W error -vvvx -rA --show-capture=no --capture=no tests/test_process.py"
debug-test_fn = "pytest --log-level=1 -W error -vvvx -rA --show-capture=no --capture=no --ignore=tests/test_process.py"

[tool.poe.tasks.test]
sequence = ["test_proc", "test_fn"]
help = "Run all tests quickly"

[tool.poe.tasks.debug-test]
sequence = ["debug-test_proc", "debug-test_fn"]
help = "Run test by test, slowly, quitting after first error"

[tool.poe.tasks.filter-test]
cmd = "pytest --log-level=1 -W error -vvvx -rA --capture=no --show-capture=no"
help = "Run any/all tests one by one with basic settings: can include filename and -k filters"

[tool.pyright]
venvPath = "."
venv = ".venv"
include = ["src", "tests"]