[project] name = "pyasic" version = "0.77.0" description = "A simplified and standardized interface for Bitcoin ASICs." authors = [{name = "UpstreamData", email = "brett@upstreamdata.ca"}] repository = "https://github.com/UpstreamData/pyasic" homepage = "https://docs.pyasic.org" source = "https://github.com/UpstreamData/pyasic" documentation = "https://docs.pyasic.org" issues = "https://github.com/UpstreamData/pyasic/issues" readme = {file = "README.md", content-type = "text/markdown"} license = "Apache 2.0" license-files = ["LICEN[CS]E.*"] keywords = [ "python", "asic", "bitcoin", "whatsminer", "antminer", "braiins-os", "vnish", "luxos" ] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", ] requires-python = ">3.10, <4.0" dependencies = [ "httpx>=0.26.0", "asyncssh>=2.20.0", "cryptography>=39.0", "passlib>=1.7.4", "pyaml>=23.12.0", "tomli (>=2.2.1,<3.0.0) ; python_version < '3.11'", "tomli-w>=1.0.0", "aiofiles>=23.2.1", "betterproto==2.0.0b7", "pydantic>=2.11.0", "semver (>=3.0.4,<4.0.0)", ] [tool.poetry.group.dev] optional = true [tool.poetry.group.dev.dependencies] pre-commit = "^4.3.0" ruff = "^0.13.2" types-passlib = "^1.7.7.20250602" types-aiofiles = "^24.1.0.20250822" [tool.poetry.group.docs] optional = true [tool.poetry.group.docs.dependencies] mkdocs = "^1.6.1" mkdocstrings = {extras = ["python"], version = "^0.26.1"} mkdocs-material = "^9.5.39" [build-system] requires = ["poetry-core>=2.0.0"] build-backend = "poetry.core.masonry.api" [tool.mypy] warn_unused_ignores = true plugins = ["pydantic.mypy"] [[tool.mypy.overrides]] module = "pyasic.web.braiins_os.proto.*" disable_error_code = "arg-type" [tool.pydantic-mypy] init_forbid_extra = true init_typed = true warn_required_dynamic_aliases = true [tool.ruff] line-length = 88 indent-width = 4 target-version = "py310" fix = true unsafe-fixes = true extend-exclude = ["pyasic/web/braiins_os/proto"] [tool.ruff.lint] select = [ "E", # pycodestyle "F", # Pyflakes "UP", # pyupgrade "I", # isort ] fixable = ["ALL"] ignore = [ "E402", "E501", "F401", "F403", "F405", "F601", ] [tool.ruff.format] quote-style = "double" indent-style = "space" skip-magic-trailing-comma = false line-ending = "auto"