| # 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 |
| """ |