locust/pyproject.toml

224 lines
5.6 KiB
TOML

[build-system]
requires = ["poetry-core>=1.0.0", "poetry-dynamic-versioning>=1.0.0,<2.0.0"]
build-backend = "poetry_dynamic_versioning.backend"
[tool.poetry]
name = "locust"
description = "Developer-friendly load testing framework"
version = "0.0.0"
license = "MIT"
readme = "README.md"
authors = ["Jonatan Heyman", "Lars Holmberg"]
maintainers = ["Lars Holmberg", "Jonatan Heyman", "Andrew Baldwin"]
homepage = "https://locust.io/"
repository = "https://github.com/locustio/locust"
documentation = "https://docs.locust.io/"
classifiers = [
"Topic :: Software Development :: Testing :: Traffic Generation",
"Development Status :: 5 - Production/Stable",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"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",
"Intended Audience :: Developers",
"Intended Audience :: System Administrators",
"Topic :: Software Development :: Testing",
"Topic :: Software Development :: Testing :: Traffic Generation",
"Topic :: System :: Distributed Computing",
]
packages = [{ include = "locust" }]
include = [
"locust/webui/dist/**/*",
"locust/_version.py",
{ path = "poetry.lock", format = [
"sdist",
"wheel",
] },
]
exclude = [
"locust/webui/public",
"locust/webui/src",
"locust/webui/**",
"locust/webui/node_modules",
"locust/test",
"locust/build",
]
[tool.poetry.build]
generate-setup-file = false
[tool.poe.poetry_hooks]
pre_build = "pre-build"
pre_install = "pre-build"
[tool.poe.tasks.pre-build]
script = "pre_build:main"
help = "Run the front end build required for package creation"
[tool.poetry.urls]
"Help/Questions" = "https://github.com/orgs/locustio/discussions/"
"Issue Tracker" = "https://github.com/locustio/locust/issues"
"Stack Overflow" = "https://stackoverflow.com/questions/tagged/locust"
"Slack" = "https://locustio.slack.com/"
"Slack/Signup" = "https://communityinviter.com/apps/locustio/locust"
[tool.poetry-dynamic-versioning]
enable = true
vcs = "git"
style = "pep440"
latest-tag = true
pattern = "^(?P<base>\\d+\\.\\d+\\.\\d+)(?P<stage>.*)$"
format-jinja = """
{%- if distance == 0 -%}
{{ serialize_pep440(base) }}
{%- else -%}
{{ serialize_pep440(bump_version(base), dev=distance) }}
{%- endif -%}
"""
[tool.poetry-dynamic-versioning.files."locust/_version.py"]
persistent-substitution = true
initial-content = """
# file generated by setuptools_scm
# don't change, don't track in version control
TYPE_CHECKING = False
if TYPE_CHECKING:
from typing import Tuple, Union
VERSION_TUPLE = Tuple[Union[int, str], ...]
else:
VERSION_TUPLE = object
version: str
__version__: str
__version_tuple__: VERSION_TUPLE
version_tuple: VERSION_TUPLE
__version__ = "0.0.0"
version = __version__
__version_tuple__ = (0, 0, 0)
version_tuple = __version_tuple__
"""
[tool.poetry.dependencies]
python = ">=3.9"
gevent = [
{ version = ">=22.10.2", python = "<=3.12" },
{ version = ">=24.10.1", python = ">3.13" },
]
flask = ">=2.0.0"
Werkzeug = ">=2.0.0"
requests = [
{ version = ">=2.26.0", python = "<=3.11" },
{ version = ">=2.32.2", python = ">3.11" },
]
msgpack = ">=1.0.0"
pyzmq = ">=25.0.0"
geventhttpclient = ">=2.3.1"
ConfigArgParse = ">=1.5.5"
tomli = { version = ">=1.1.0", python = "<3.11" }
typing_extensions = { version = ">=4.6.0", python = "<3.11" }
psutil = ">=5.9.1"
Flask-Login = ">=0.6.3"
Flask-Cors = ">=3.0.10"
pywin32 = { version = "*", markers = "sys_platform == 'win32'" }
[tool.poetry.group.dev]
optional = true
[tool.poetry.group.dev.dependencies]
mypy = "1.11.2"
pre-commit = "^3.7.1"
ruff = "0.3.7"
tox = "^4.16.0"
twine = "^5.1.1"
[tool.poetry.group.test]
optional = true
[tool.poetry.group.test.dependencies]
cryptography = "^43.0.1"
pyquery = "^2.0.0"
mock = "^5.1.0"
mypy = "1.11.2"
retry = "^0.9.2"
ruff = "0.3.7"
tox = "^4.16.0"
types-requests = "^2.32.0.20240622"
pytest = "^8.3.3"
[tool.poetry.group.docs]
optional = true
[tool.poetry.group.docs.dependencies]
sphinx = "7.3.7"
sphinx-rtd-theme = "2.0.0"
readthedocs-sphinx-search = "0.3.2"
Sphinx-Substitution-Extensions = "2020.9.30.0"
Pygments = "2.16.1"
alabaster = "0.7.16"
babel = "2.13.0"
docutils = "0.18.1"
imagesize = "1.4.1"
snowballstemmer = "2.2.0"
sphinx-prompt = "1.5.0"
sphinxcontrib-applehelp = "1.0.4"
sphinxcontrib-devhelp = "1.0.2"
sphinxcontrib-htmlhelp = "2.0.1"
sphinxcontrib-jsmath = "1.0.1"
sphinxcontrib-qthelp = "1.0.3"
sphinxcontrib-serializinghtml = "1.1.10"
sphinxcontrib-googleanalytics = ">=0.4"
[tool.poetry.scripts]
locust = "locust.main:main"
[tool.ruff]
target-version = "py39"
line-length = 120
extend-exclude = [
"build",
"examples/issue_*.py",
"src/readthedocs-sphinx-search/",
]
lint.ignore = ["E402", "E501", "E713", "E731", "E741", "F401"]
lint.select = ["E", "F", "W", "UP", "FA102", "I001"]
[tool.ruff.lint.per-file-ignores]
"examples/*" = ["F841"]
[tool.ruff.lint.isort]
section-order = [
"future",
"locust",
"standard-library",
"third-party",
"first-party",
"local-folder",
]
# Custom selection-order: to ensure locust is imported as first in locustfiles (for successful gevent monkey patching)
[tool.ruff.lint.isort.sections]
locust = ["locust"]
[tool.mypy]
# missing type stubs
ignore_missing_imports = true
python_version = "3.9"
[tool.pyright]
exclude = ["locust/test"]
reportOptionalMemberAccess = "none"
analyzeUnannotatedFunctions = false