[project] name = "pydase" version = "0.10.12" 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 = [ {name = "Mose Müller",email = "mosemueller@gmail.com"} ] readme = "README.md" requires-python = ">=3.10,<4.0" dependencies = [ "toml (>=0.10.2,<0.11.0)", "python-socketio (>=5.13.0,<6.0.0)", "confz (>=2.1.0,<3.0.0)", "pint (>=0.24.4,<0.25.0)", "websocket-client (>=1.8.0,<2.0.0)", "aiohttp (>=3.11.18,<4.0.0)", "click (>=8.2.0,<9.0.0)", "aiohttp-middlewares (>=2.4.0,<3.0.0)", "anyio (>=4.9.0,<5.0.0)" ] [project.optional-dependencies] socks = ["aiohttp-socks (>=0.10.1,<0.11.0)"] [tool.poetry] packages = [{include = "pydase", from = "src"}] [tool.poetry.group.dev] optional = true [tool.poetry.group.dev.dependencies] types-toml = "^0.10.8.20240310" pytest = "^8.3.5" pytest-cov = "^6.1.1" mypy = "^1.15.0" matplotlib = "^3.10.3" pyright = "^1.1.400" pytest-mock = "^3.14.0" ruff = "^0.11.10" pytest-asyncio = "^0.26.0" [tool.poetry.group.docs] optional = true [tool.poetry.group.docs.dependencies] mkdocs-material = "^9.6.14" mkdocs-include-markdown-plugin = "^7.1.5" mkdocstrings = {extras = ["python"], version = "^0.29.1"} pymdown-extensions = "^10.15" mkdocs-swagger-ui-tag = "^0.7.1" [build-system] requires = ["poetry-core>=2.0.0,<3.0.0"] build-backend = "poetry.core.masonry.api" [tool.ruff] target-version = "py310" # Always generate Python 3.10-compatible code extend-exclude = [ "docs", "frontend" ] [tool.ruff.lint] select = [ "ASYNC", # flake8-async "C4", # flake8-comprehensions "C901", # mccabe complex-structure "E", # pycodestyle errors "ERA", # eradicate "F", # pyflakes "FLY", # flynt "G", # flake8-logging-format "I", # isort "ICN", # flake8-import-conventions "INP", # flake8-no-pep420 "ISC", # flake8-implicit-str-concat "N", # pep8-naming "NPY", # NumPy-specific rules "PERF", # perflint "PIE", # flake8-pie "PL", # pylint "PYI", # flake8-pyi "Q", # flake8-quotes "RET", # flake8-return "RUF", # Ruff-specific rules "SIM", # flake8-simplify "TID", # flake8-tidy-imports "TCH", # flake8-type-checking "UP", # pyupgrade "YTT", # flake8-2020 "W", # pycodestyle warnings ] ignore = [ "RUF006", # asyncio-dangling-task "PERF203", # try-except-in-loop "ASYNC110", # async-busy-wait ] [tool.ruff.lint.mccabe] max-complexity = 7 [tool.pyright] include = ["src/pydase"] typeCheckingMode = "basic" [tool.mypy] disallow_untyped_defs = true disallow_untyped_calls = true disallow_incomplete_defs = true disallow_any_generics = true check_untyped_defs = true ignore_missing_imports = false [tool.pytest.ini_options] asyncio_default_fixture_loop_scope = "function" filterwarnings = [ # I don't controll the usage of the timeout "ignore:parameter 'timeout' of type 'float' is deprecated, please use 'timeout=ClientWSTimeout" ]