[project] name = "pyth-on-line" version = "0" requires-python = ">=3.13" dependencies = [ "ruff~=0.12.0", "webtypy~=0.1.7", "micropip~=0.10.0", "pyodide-py==0.28.2", "promplate-pyodide~=0.0.4.0", "pre-commit~=4.3.0", "pure-eval~=0.2.3", "html2text2~=1.1.1", "pytest~=8.4.0", "pytest-asyncio~=1.1.0", "hmr", "numpy~=2.2", "pandas~=2.2", "trio~=0.30.0", ] [tool.pdm] distribution = false [tool.pdm.scripts] post_install = "pre-commit install" fmt = { composite = ["ruff check --fix --show-fixes -e", "ruff format"] } [tool.black] line-length = 200 [tool.isort] line_length = 200 known_first_party = ["__main__"] [tool.ruff] line-length = 200 [tool.ruff.lint] extend-select = [ "I", # isort "N", # pep8-naming "W", # pycodestyle "UP", # pyupgrade "TRY", # tryceratops "RUF", # ruff "FURB", # refurb "C4", # flake8-comprehensions "ARG", # flake8-unused-arguments "PIE", # flake8-pie "PTH", # flake8-use-pathlib "RSE", # flake8-raise "SIM", # flake8-simplify "SLF", # flake8-self ] ignore = [ # Failed to parse pyproject.toml: missing field `name` "RUF200", # Module level import not at top of file "E402", "F402", # `... import *` used; unable to detect undefined names "F403", # `await` statement outside of a function "F704", ] [tool.pyright] typeCheckingMode = "standard" reportMissingModuleSource = false reportWildcardImportFromLibrary = false reportUnnecessaryTypeIgnoreComment = true [tool.pytest.ini_options] asyncio_mode = "auto" asyncio_default_fixture_loop_scope = "session" # Handle trio tests separately from asyncio tests addopts = "--strict-markers" markers = ["trio: mark test to run with trio backend instead of asyncio"] [tool.uv.sources] hmr = { workspace = true } [tool.uv.workspace] members = ["packages/*"]