[build-system] requires = ["setuptools"] build-backend = "setuptools.build_meta" [project] name = "websockets" description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" requires-python = ">=3.8" license = { text = "BSD-3-Clause" } authors = [ { name = "Aymeric Augustin", email = "aymeric.augustin@m4x.org" }, ] keywords = ["WebSocket"] classifiers = [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", ] dynamic = ["version", "readme"] [project.urls] Homepage = "https://github.com/python-websockets/websockets" Changelog = "https://websockets.readthedocs.io/en/stable/project/changelog.html" Documentation = "https://websockets.readthedocs.io/" Funding = "https://tidelift.com/subscription/pkg/pypi-websockets?utm_source=pypi-websockets&utm_medium=referral&utm_campaign=readme" Tracker = "https://github.com/python-websockets/websockets/issues" # On a macOS runner, build Intel, Universal, and Apple Silicon wheels. [tool.cibuildwheel.macos] archs = ["x86_64", "universal2", "arm64"] # On an Linux Intel runner with QEMU installed, build Intel and ARM wheels. [tool.cibuildwheel.linux] archs = ["auto", "aarch64"] [tool.coverage.run] branch = true omit = [ # */websockets matches src/websockets and .tox/**/site-packages/websockets "*/websockets/__main__.py", "*/websockets/legacy/async_timeout.py", "*/websockets/legacy/compatibility.py", "tests/maxi_cov.py", ] [tool.coverage.paths] source = [ "src/websockets", ".tox/*/lib/python*/site-packages/websockets", ] [tool.coverage.report] exclude_lines = [ "except ImportError:", "if self.debug:", "if sys.platform != \"win32\":", "if typing.TYPE_CHECKING:", "pragma: no cover", "raise AssertionError", "raise NotImplementedError", "self.fail\\(\".*\"\\)", "@unittest.skip", ] [tool.ruff] select = [ "E", # pycodestyle "F", # Pyflakes "W", # pycodestyle "I", # isort ] ignore = [ "F403", "F405", ] [tool.ruff.isort] combine-as-imports = true lines-after-imports = 2