[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "preswald" version = "0.1.59" description = "A lightweight data workflow SDK" readme = "README.md" requires-python = ">=3.10" license = "Apache-2.0" authors = [{ name = "Structured Labs", email = "founders@structuredlabs.com" }] dependencies = [ "pandas>=1.5", "toml==0.10.2", "plotly==5.24.1", "markdown>=3.4.0", "matplotlib>=3.8.4", "httpx>=0.23.0,<1.0.0", "python-multipart>=0.0.5,<0.1.0", "jinja2>=3.1.3", "click>=8.1.7", "networkx>=3.0", "requests>=2.31.0", "tomli>=2.0.1", # Server-only dependencies "fastapi>=0.68.0,<1.0.0; platform_system != 'Emscripten'", # "fastplotlib[imgui]~=0.3.0; platform_system != 'Emscripten'", # "imageio~=2.37.0; platform_system != 'Emscripten'", "msgpack~=1.1.0", "uvicorn>=0.15.0,<1.0.0; platform_system != 'Emscripten'", "websockets>=10.0,<11.0; platform_system != 'Emscripten'", # Native code dependencies "duckdb>=1.1.2", "scipy>=1.15.2; platform_system != 'Emscripten'", ] [project.optional-dependencies] dev = ["pytest>=8.3", "build", "twine", "ruff>=0.1.11", "pre-commit>=3.5.0"] playwright = ["playwright>=1.15.0,<2.0.0; platform_system != 'Emscripten'"] [project.scripts] preswald = "preswald.cli:cli" [tool.hatch.build.targets.wheel] packages = ["preswald"] [tool.hatch.build] artifacts = [ "preswald/static/*", "preswald/static/assets/*", "preswald/templates/*", "preswald/tutorial/*", "preswald/tutorial/data/*", "preswald/tutorial/images/*", ] [tool.ruff] line-length = 88 target-version = "py310" lint.select = [ "E", # pycodestyle errors "F", # pyflakes "B", # flake8-bugbear "C", # flake8-comprehensions "I", # isort "N", # pep8-naming "UP", # pyupgrade "PT", # pytest "RUF", # Ruff-specific rules "W", # pycodestyle warnings ] lint.ignore = [ "E501", # Line length (handled by Black) "B008", # Do not perform function call in argument defaults ] exclude = [ ".git", ".ruff_cache", "__pycache__", "build", "dist", "frontend", "*.egg-info", ".eggs", "community_gallery", ] fix = true unsafe-fixes = false [tool.ruff.lint.per-file-ignores] "tests/*" = ["PLR2004"] "__init__.py" = ["F401"] [tool.ruff.lint.mccabe] max-complexity = 12 [tool.ruff.lint.pydocstyle] convention = "google" [tool.ruff.lint.isort] lines-after-imports = 2 section-order = [ "future", "standard-library", "third-party", "first-party", "local-folder", ] [tool.ruff.format] quote-style = "double" indent-style = "space"