blob: 2bac4db1ea627b0a17b2f3afab7ef22bc1726e9e [file]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
[build-system]
requires = ["setuptools>=68", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "solr-orbit"
dynamic = ["version"]
description = "Macrobenchmarking framework for Apache Solr"
readme = {file = "README.md", content-type = "text/markdown"}
license = {text = "Apache License, Version 2.0"}
requires-python = ">=3.12,<3.14"
classifiers = [
"Topic :: System :: Benchmark",
"Development Status :: 5 - Production/Stable",
"License :: OSI Approved :: Apache Software License",
"Intended Audience :: Developers",
"Operating System :: MacOS :: MacOS X",
"Operating System :: POSIX",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
]
dependencies = [
# License: BSD
# Solr HTTP client for data operations (indexing, search, commit, optimize)
"pysolr>=3.10.0",
# License: Apache 2.0
# HTTP client for Solr V2 API admin operations
# transitive dependencies:
# urllib3: MIT
"requests>=2.28.0",
# License: BSD
"psutil>=5.8.0",
# License: MIT
"py-cpuinfo>=7.0.0",
# License: MIT
"tabulate>=0.9.0",
# License: MIT
"jsonschema>=3.1.1",
# License: BSD
"Jinja2>=3.1.3",
# License: BSD
"markupsafe>=2.0.1",
# License: MIT
# With 3.10.7, we get InvalidActorAddress exception while initialize Actor
"thespian>=3.10.1,<4.0.2",
# always use the latest version, these are certificate files...
# License: MPL 2.0
"certifi",
# License: Apache 2.0
"yappi>=1.4.0",
# License: BSD
"ijson>=2.6.1",
# License: Apache 2.0
# transitive dependencies:
# google-crc32c: Apache 2.0
"google-resumable-media>=1.1.0",
# License: Apache 2.0
"google-auth>=1.22.1",
# License: MIT
"wheel>=0.38.4",
# License: Apache 2.0
# transitive dependencies:
# botocore: Apache 2.0
# jmespath: MIT
# s3transfer: Apache 2.0
"boto3>=1.28.62",
# Licence: BSD-3-Clause
"zstandard>=0.22.0",
# License: BSD
# Required for knnvector workload
"h5py>=3.10.0",
# License: BSD
# Required for knnvector workload
"numpy>=1.24.2,<=2.4.6",
# License: MIT
"tqdm",
# License: MIT
"faker",
# License: BSD
"pandas>=1.4.3",
# License: MIT
"mimesis==19.1.0",
# Licence: BSD-3-Clause
"dask",
# Licence: BSD-3-Clause
"dask[distributed]",
# Licence: BSD-3-Clause
"bokeh!=3.0.*,>=2.4.2",
# License: MIT
"pydantic>=2.10.6",
# License: MIT
"pydantic_core>=2.27.2",
# License: MIT
"PyYAML>=5.4",
]
[project.urls]
Homepage = "https://github.com/apache/solr-orbit"
[project.scripts]
solr-orbit = "solrorbit.benchmark:main"
solr-orbitd = "solrorbit.benchmarkd:main"
[project.optional-dependencies]
test = [
"ujson",
"pytest==9.0.3",
# Upgraded from 3.2.2: py.io.TerminalWriter was removed in py 1.11+,
# making 3.x incompatible with Python 3.12. 4.0+ dropped the py dependency.
"pytest-benchmark>=4.0.0",
"pytest-asyncio==1.4.0",
]
develop = [
"ujson",
"pytest==9.0.3",
# Upgraded from 3.2.2: py.io.TerminalWriter was removed in py 1.11+,
# making 3.x incompatible with Python 3.12. 4.0+ dropped the py dependency.
"pytest-benchmark>=4.0.0",
"pytest-asyncio==1.4.0",
"tox>=4.0",
"coverage==7.14.1",
"twine==6.2.0",
"wheel>=0.38.4",
"github3.py==4.0.1",
"ruff==0.15.15",
]
# ---------------------------------------------------------------------------
# ruff – linting
# ---------------------------------------------------------------------------
[tool.ruff]
line-length = 180
target-version = "py312"
[tool.ruff.lint]
# E: pycodestyle errors, F: pyflakes
select = ["E", "F"]
ignore = [
# These were disabled in the previous pylint configuration
"E402", # module-level import not at top of file (wrong-import-position)
"E731", # lambda assignment (unnecessary-lambda-assignment)
"E741", # ambiguous variable name (invalid-name)
"F402", # import shadowed by loop variable
]
[tool.ruff.lint.per-file-ignores]
# __init__.py files use imports purely for re-exporting the public API
"**/__init__.py" = ["F401"]
# workload/__init__.py re-exports the complete workload API via a star import
"solrorbit/workload/__init__.py" = ["F403"]
# ---------------------------------------------------------------------------
# Setuptools configuration
# ---------------------------------------------------------------------------
[tool.setuptools]
include-package-data = true
script-files = ["scripts/expand-data-corpus.py"]
[tool.setuptools.packages.find]
where = ["."]
exclude = ["tests*", "benchmarks*", "it*"]
[tool.setuptools.package-data]
"*" = ["*.json", "*.yml"]
[tool.setuptools.dynamic]
version = {file = "version.txt"}
# ---------------------------------------------------------------------------
# pytest
# ---------------------------------------------------------------------------
[tool.pytest.ini_options]
log_cli = false
log_level = "INFO"
addopts = "--verbose --color=yes"
testpaths = ["tests"]
junit_family = "xunit2"
junit_logging = "all"
# ---------------------------------------------------------------------------
# tox
# ---------------------------------------------------------------------------
[tool.tox]
legacy_tox_ini = """
[tox]
envlist =
py312,py313
platform =
linux|darwin
[testenv]
deps=
pytest
passenv =
HOME
JAVA*_HOME
BENCHMARK_HOME
SSH_AUTH_SOCK
THESPLOG_FILE
THESPLOG_FILE_MAXSIZE
THESPLOG_THRESHOLD
# we do not pass LANG and LC_ALL anymore in order to isolate integration tests
# from the test environment. OSBenchmark needs to enforce UTF-8 encoding in every
# place so we intentionally set LC_ALL to C.
setenv =
LC_ALL=C
# According to http://pubs.opengroup.org/onlinepubs/7908799/xbd/envvar.html
# LC_ALL should have priority but to ensure that non-confirming
# applications behave identically, we also set LANG explicitly.
LANG=C
commands =
python -V
pytest -s it --junitxml=junit-{envname}-it.xml
allowlist_externals =
pytest
"""