[tool.poetry] name = "pydase" version = "0.3.1" description = "A flexible and robust Python library for creating, managing, and interacting with data services, with built-in support for web and RPC servers, and customizable features for diverse use cases." authors = ["Mose Mueller "] readme = "README.md" packages = [{ include = "pydase", from = "src" }] [tool.poetry.dependencies] python = "^3.10" rpyc = "^5.3.1" fastapi = "^0.100.0" uvicorn = "^0.22.0" toml = "^0.10.2" python-socketio = "^5.8.0" websockets = "^11.0.3" confz = "^2.0.0" pint = "^0.22" pillow = "^10.0.0" [tool.poetry.group.dev] optional = true [tool.poetry.group.dev.dependencies] types-toml = "^0.10.8.6" pytest = "^7.4.0" pytest-cov = "^4.1.0" mypy = "^1.4.1" black = "^23.1.0" matplotlib = "^3.7.2" pyright = "^1.1.323" pytest-mock = "^3.11.1" ruff = "^0.1.5" [tool.poetry.group.docs] optional = true [tool.poetry.group.docs.dependencies] mkdocs = "^1.5.2" mkdocs-include-markdown-plugin = "^3.9.1" mkdocstrings = "^0.22.0" pymdown-extensions = "^10.1" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" [tool.ruff] target-version = "py310" # Always generate Python 3.10-compatible code line-length = 88 select = ["ALL"] ignore = [ "ANN101", # typing self "ANN401", # disallow Any typing "B904", # Within an `except` clause, raise exceptions with `raise ... from err` or `raise ... from None` to distinguish them from errors in exception handling "COM812", # Missing trailing comma rule; defer to Black for formatting "E203", # whitespace-before-punctuation "UP007", # Use `X | Y` for type annotations "S310", # suspicious-url-open-usage "A", # flake8-builtins "ARG", # flake8-unused-arguments "BLE", # flake8-blind-except "D", # pydocstyle "EM", # flake8 error messages "FBT", # Boolean trap detection "PTH", # flake8-use-pathlib "SLF", # flake8-self "TD", # flake8-todos "TRY", # Exception Handling AntiPatterns in Python ] extend-exclude = [ "docs", "frontend", "tests" ] [tool.ruff.lint.mccabe] max-complexity = 7 [tool.pyright] include = ["src/pydase"] exclude = ["**/node_modules", "**/__pycache__", "docs", "frontend", "tests"] typeCheckingMode = "basic" reportUnknownMemberType = true reportUnknownParameterType = true [tool.black] line-length = 88 exclude = ''' /( \.git | \.mypy_cache | \.tox | venv | \.venv | _build | buck-out | build | dist )/ ''' [tool.isort] profile = "black" [tool.mypy] mypy_path = "src/" show_error_codes = true disallow_untyped_defs = true disallow_untyped_calls = true disallow_incomplete_defs = true check_untyped_defs = true ignore_missing_imports = false