diff --git a/.flake8 b/.flake8 index 31cf5219..c77b8875 100644 --- a/.flake8 +++ b/.flake8 @@ -1,11 +1,11 @@ [flake8] ignore= - E123,E125,E731,E722,W503,W605, # Black takes care of these - D202, # no blank lines after docstring - D203, # blank line before class docstring - D212, # multi-line summary starts at first line - D401, # imperitive mood - D413, # blank line after last section + E123,E125,E731,E722,W503,W605, + D202, + D203, + D212, + D401, + D413 max-line-length=110 docstring-convention=numpy select=E,W,F diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 5276c9cc..0322d265 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -45,11 +45,11 @@ jobs: ) ) steps: - - uses: actions/checkout@v2 - - name: Setup Python 3.8 - uses: actions/setup-python@v2 + - uses: actions/checkout@v4 + - name: Setup Python 3.11 + uses: actions/setup-python@v4 with: - python-version: 3.8 + python-version: 3.11 - name: Echo manual trigger params if: github.event_name == 'workflow_dispatch' @@ -118,7 +118,7 @@ jobs: fail-fast: false name: Build ${{ matrix.benchmark }} on ${{ matrix.arch }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Echo Matrix Permutation run: | cat << EOF @@ -173,7 +173,7 @@ jobs: fail-fast: false name: Push Manifest ${{ matrix.image_name }}:${{ matrix.tag }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Echo Matrix Permutation run: | cat << EOF diff --git a/.github/workflows/doc.yaml b/.github/workflows/doc.yaml index 2e3dd211..5e445d64 100644 --- a/.github/workflows/doc.yaml +++ b/.github/workflows/doc.yaml @@ -9,13 +9,13 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - pyver: [6, 7, 8, 9] + pyver: [11, 12] name: Run Doc Tests -- Python 3.${{ matrix.pyver }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Install build dependencies run: sudo apt-get install -y pandoc - - uses: actions/setup-python@v2 + - uses: actions/setup-python@v4 with: python-version: 3.${{ matrix.pyver }} - name: Install tox diff --git a/.github/workflows/unit.yaml b/.github/workflows/unit.yaml index b14e7a37..70668744 100644 --- a/.github/workflows/unit.yaml +++ b/.github/workflows/unit.yaml @@ -11,11 +11,11 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - pyver: [6, 7, 8, 9] + pyver: [11, 12] name: Run Unit Tests -- Python 3.${{ matrix.pyver }} steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 + - uses: actions/checkout@v4 + - uses: actions/setup-python@v4 with: python-version: 3.${{ matrix.pyver }} - name: Install tox @@ -23,10 +23,10 @@ jobs: - name: Run Tox run: tox -e py3${{ matrix.pyver }}-unit - name: Generate coverage report - if: matrix.pyver == 6 + if: matrix.pyver == 11 run: tox -e coverage - name: Upload coverage report - if: matrix.pyver == 6 + if: matrix.pyver == 11 uses: codecov/codecov-action@v1 with: files: ./coverage.xml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index cbeeae10..3dc8346d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,12 +1,12 @@ --- repos: - repo: https://github.com/Lucas-C/pre-commit-hooks - rev: v1.3.1 + rev: v1.5.5 hooks: - id: remove-tabs - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.3.0 + rev: v6.0.0 hooks: - id: trailing-whitespace - id: check-merge-conflict @@ -16,14 +16,13 @@ repos: - id: check-ast - repo: https://github.com/psf/black - rev: 22.10.0 + rev: 25.1.0 hooks: - id: black args: ['--line-length', '110'] - additional_dependencies: ['click==8.0.4'] - repo: https://github.com/pycqa/isort - rev: 5.10.1 + rev: 6.0.1 hooks: - id: isort args: @@ -32,18 +31,18 @@ repos: - --line-length=110 - repo: https://github.com/PyCQA/flake8 - rev: '5.0.4' + rev: '7.3.0' hooks: - id: flake8 additional_dependencies: ['pep8-naming', 'flake8-docstrings'] - repo: https://github.com/PyCQA/pylint - rev: v2.15.5 + rev: v3.3.8 hooks: - id: pylint - repo: https://github.com/pre-commit/mirrors-mypy - rev: v0.982 + rev: v1.17.1 hooks: - id: mypy additional_dependencies: @@ -57,9 +56,10 @@ repos: - --no-strict-optional - repo: https://github.com/asottile/pyupgrade - rev: v3.2.0 + rev: v3.20.0 hooks: - id: pyupgrade + args: [--py311-plus] ci: autofix_commit_msg: | diff --git a/ci/build_matrix.py b/ci/build_matrix.py index 8bfd9b56..99c40512 100644 --- a/ci/build_matrix.py +++ b/ci/build_matrix.py @@ -61,7 +61,7 @@ import re import shlex import subprocess -from typing import Dict, Iterable, List, Set, Union +from collections.abc import Iterable ARCHS = ( "amd64", @@ -108,7 +108,7 @@ def get_git_diff(upstream_branch: str) -> str: return completed_process.stdout.decode("utf-8") -def parse_git_diff(diff_str: str) -> Set[str]: +def parse_git_diff(diff_str: str) -> set[str]: """ Return parsed output of `git-diff --name-only`. @@ -142,7 +142,7 @@ def get_dockerfile_list() -> str: return completed_process.stdout.decode("utf-8") -def parse_dockerfile_list(df_list: str) -> Set[str]: +def parse_dockerfile_list(df_list: str) -> set[str]: """ Parse given list of Dockerfiles into a set of str. @@ -220,7 +220,7 @@ def new(cls, dockerfile: str, changed: bool, archs: Iterable[str], tags: Iterabl tags=tags, ) - def build_json(self) -> Iterable[Dict[str, Union[str, bool]]]: + def build_json(self) -> Iterable[dict[str, str | bool]]: """Convert the given MatrixEntry into series of JSON-dicts, one for each arch.""" for arch in self.archs: @@ -236,7 +236,7 @@ def build_json(self) -> Iterable[Dict[str, Union[str, bool]]]: "tags": " ".join([f"{tag}{tag_suffix}" for tag in self.tags]), } - def manifest_json(self) -> Iterable[Dict[str, Union[str, bool]]]: + def manifest_json(self) -> Iterable[dict[str, str | bool]]: """Convert the given MatrixEntry into series of JSON-dicts, one for each tag.""" for tag in self.tags: @@ -274,14 +274,14 @@ class MatrixBuilder: Set of changed files within the snafu repository. """ - def __init__( + def __init__( # pylint: disable=too-many-positional-arguments self, archs: Iterable[str], tags: Iterable[str], bones: Iterable[str], upstream_branch: str, - dockerfile_set: Set[str], - changed_set: Set[str], + dockerfile_set: set[str], + changed_set: set[str], ): """Contsruct the matrix builder.""" @@ -291,8 +291,8 @@ def __init__( self.upstream_branch = upstream_branch self.dockerfile_set = dockerfile_set self.changed_set = changed_set - self.manifest_matrix: Dict[str, List[Dict[str, Union[str, bool]]]] = {} - self.build_matrix: Dict[str, List[Dict[str, Union[str, bool]]]] = {} + self.manifest_matrix: dict[str, list[dict[str, str | bool]]] = {} + self.build_matrix: dict[str, list[dict[str, str | bool]]] = {} self.reset() diff --git a/requirements/py36-reqs/docs.txt b/requirements/py36-reqs/docs.txt deleted file mode 100644 index f6b9ea3e..00000000 --- a/requirements/py36-reqs/docs.txt +++ /dev/null @@ -1,474 +0,0 @@ -# -# This file is autogenerated by pip-compile with python 3.6 -# To update, run: -# -# pip-compile --extra=docs --output-file=requirements/py36-reqs/docs.txt requirements/py36-reqs/install.txt setup.cfg -# -alabaster==0.7.12 - # via sphinx -argon2-cffi==21.3.0 - # via notebook -argon2-cffi-bindings==21.2.0 - # via argon2-cffi -async-generator==1.10 - # via nbclient -attrs==21.4.0 - # via - # jsonschema - # markdown-it-py -babel==2.9.1 - # via sphinx -backcall==0.2.0 - # via ipython -backports.zoneinfo==0.2.1 - # via - # -r requirements/py36-reqs/install.txt - # pytz-deprecation-shim - # tzlocal -bleach==4.1.0 - # via nbconvert -boto3==1.20.41 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -botocore==1.23.41 - # via - # -r requirements/py36-reqs/install.txt - # boto3 - # s3transfer -cachetools==4.2.4 - # via - # -r requirements/py36-reqs/install.txt - # google-auth -certifi==2021.10.8 - # via - # -r requirements/py36-reqs/install.txt - # elasticsearch - # kubernetes - # requests -cffi==1.15.0 - # via argon2-cffi-bindings -charset-normalizer==2.0.10 - # via - # -r requirements/py36-reqs/install.txt - # requests -configargparse==1.5.3 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -configparser==5.2.0 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -dataclasses==0.8 - # via - # -r requirements/py36-reqs/install.txt - # argon2-cffi - # snafu (setup.cfg) -dateparser==1.1.0 - # via - # -r requirements/py36-reqs/install.txt - # prometheus-api-client -decorator==5.1.1 - # via - # ipython - # traitlets -defusedxml==0.7.1 - # via nbconvert -deprecated==1.2.13 - # via - # -r requirements/py36-reqs/install.txt - # redis -dictdiffer==0.9.0 - # via - # -r requirements/py36-reqs/install.txt - # openshift -distro==1.6.0 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -docutils==0.16 - # via - # -r requirements/py36-reqs/install.txt - # myst-parser - # nbsphinx - # snafu (setup.cfg) - # sphinx - # sphinx-rtd-theme - # statistics -elasticsearch==7.13.4 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -entrypoints==0.3 - # via - # jupyter-client - # nbconvert -flent==2.0.1 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -google-auth==2.3.3 - # via - # -r requirements/py36-reqs/install.txt - # kubernetes -idna==3.3 - # via - # -r requirements/py36-reqs/install.txt - # requests -imagesize==1.3.0 - # via sphinx -importlib-metadata==4.8.3 - # via - # -r requirements/py36-reqs/install.txt - # jsonschema - # redis - # snafu (setup.cfg) - # sphinx -importlib-resources==5.4.0 - # via - # -r requirements/py36-reqs/install.txt - # backports.zoneinfo -ipykernel==5.5.6 - # via - # notebook - # snafu (setup.cfg) -ipython==7.16.3 - # via - # ipykernel - # snafu (setup.cfg) -ipython-genutils==0.2.0 - # via - # ipykernel - # nbformat - # notebook - # traitlets -jedi==0.17.2 - # via ipython -jinja2==3.0.3 - # via - # -r requirements/py36-reqs/install.txt - # myst-parser - # nbconvert - # nbsphinx - # notebook - # openshift - # sphinx -jmespath==0.10.0 - # via - # -r requirements/py36-reqs/install.txt - # boto3 - # botocore -jsonschema==3.2.0 - # via nbformat -jupyter-client==7.1.2 - # via - # ipykernel - # nbclient - # notebook -jupyter-core==4.9.1 - # via - # jupyter-client - # nbconvert - # nbformat - # notebook -jupyterlab-pygments==0.1.2 - # via nbconvert -kafka-python==2.0.2 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -kubernetes==11.0.0 - # via - # -r requirements/py36-reqs/install.txt - # openshift - # snafu (setup.cfg) -markdown-it-py==2.0.0 - # via - # mdit-py-plugins - # myst-parser -markupsafe==2.0.1 - # via - # -r requirements/py36-reqs/install.txt - # jinja2 -mdit-py-plugins==0.3.0 - # via myst-parser -mdurl==0.1.0 - # via markdown-it-py -mistune==0.8.4 - # via nbconvert -myst-parser==0.16.1 - # via snafu (setup.cfg) -nbclient==0.5.9 - # via nbconvert -nbconvert==6.0.7 - # via - # nbsphinx - # notebook -nbformat==5.1.3 - # via - # nbclient - # nbconvert - # nbsphinx - # notebook -nbsphinx==0.8.8 - # via snafu (setup.cfg) -nest-asyncio==1.5.4 - # via - # jupyter-client - # nbclient - # notebook -notebook==6.4.10 - # via snafu (setup.cfg) -numpy==1.19.5 - # via - # -r requirements/py36-reqs/install.txt - # pandas - # prometheus-api-client - # scipy - # snafu (setup.cfg) -oauthlib==3.1.1 - # via - # -r requirements/py36-reqs/install.txt - # requests-oauthlib -openshift==0.11 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -packaging==21.3 - # via - # -r requirements/py36-reqs/install.txt - # bleach - # redis - # snafu (setup.cfg) - # sphinx -pandas==1.1.5 - # via - # -r requirements/py36-reqs/install.txt - # prometheus-api-client -pandoc==2.0.1 - # via snafu (setup.cfg) -pandocfilters==1.5.0 - # via nbconvert -parso==0.7.1 - # via jedi -pexpect==4.8.0 - # via ipython -pickleshare==0.7.5 - # via ipython -plumbum==1.7.2 - # via pandoc -ply==3.11 - # via pandoc -prometheus-api-client==0.5.0 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -prometheus-client==0.12.0 - # via notebook -prompt-toolkit==3.0.24 - # via ipython -ptyprocess==0.7.0 - # via - # pexpect - # terminado -pyasn1==0.4.8 - # via - # -r requirements/py36-reqs/install.txt - # pyasn1-modules - # rsa -pyasn1-modules==0.2.8 - # via - # -r requirements/py36-reqs/install.txt - # google-auth -pycparser==2.21 - # via cffi -pygments==2.11.2 - # via - # ipython - # jupyterlab-pygments - # nbconvert - # sphinx -pyparsing==3.0.7 - # via - # -r requirements/py36-reqs/install.txt - # packaging -pyrsistent==0.18.0 - # via jsonschema -python-dateutil==2.8.2 - # via - # -r requirements/py36-reqs/install.txt - # botocore - # dateparser - # jupyter-client - # kubernetes - # pandas - # snafu (setup.cfg) -python-string-utils==1.0.0 - # via - # -r requirements/py36-reqs/install.txt - # openshift -pytz==2021.3 - # via - # -r requirements/py36-reqs/install.txt - # babel - # dateparser - # pandas -pytz-deprecation-shim==0.1.0.post0 - # via - # -r requirements/py36-reqs/install.txt - # tzlocal -pyyaml==6.0 - # via - # -r requirements/py36-reqs/install.txt - # kubernetes - # myst-parser - # snafu (setup.cfg) -pyzmq==22.3.0 - # via - # jupyter-client - # notebook -redis==4.1.1 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -regex==2022.1.18 - # via - # -r requirements/py36-reqs/install.txt - # dateparser -requests==2.27.1 - # via - # -r requirements/py36-reqs/install.txt - # kubernetes - # prometheus-api-client - # requests-oauthlib - # snafu (setup.cfg) - # sphinx -requests-oauthlib==1.3.0 - # via - # -r requirements/py36-reqs/install.txt - # kubernetes -rsa==4.8 - # via - # -r requirements/py36-reqs/install.txt - # google-auth -ruamel.yaml==0.17.20 - # via - # -r requirements/py36-reqs/install.txt - # openshift -ruamel.yaml.clib==0.2.6 - # via - # -r requirements/py36-reqs/install.txt - # ruamel.yaml -s3transfer==0.5.0 - # via - # -r requirements/py36-reqs/install.txt - # boto3 -scipy==1.5.4 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -send2trash==1.8.0 - # via notebook -six==1.16.0 - # via - # -r requirements/py36-reqs/install.txt - # bleach - # google-auth - # jsonschema - # kubernetes - # openshift - # python-dateutil - # traitlets -snowballstemmer==2.2.0 - # via sphinx -sphinx==4.4.0 - # via - # myst-parser - # nbsphinx - # snafu (setup.cfg) - # sphinx-rtd-theme -sphinx-rtd-theme==1.0.0 - # via snafu (setup.cfg) -sphinxcontrib-applehelp==1.0.2 - # via sphinx -sphinxcontrib-devhelp==1.0.2 - # via sphinx -sphinxcontrib-htmlhelp==2.0.0 - # via sphinx -sphinxcontrib-jsmath==1.0.1 - # via sphinx -sphinxcontrib-qthelp==1.0.3 - # via sphinx -sphinxcontrib-serializinghtml==1.1.5 - # via sphinx -statistics==1.0.3.5 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -terminado==0.12.1 - # via notebook -testpath==0.5.0 - # via nbconvert -tornado==6.1 - # via - # ipykernel - # jupyter-client - # notebook - # terminado -traitlets==4.3.3 - # via - # ipykernel - # ipython - # jupyter-client - # jupyter-core - # nbclient - # nbconvert - # nbformat - # nbsphinx - # notebook -ttp==0.8.4 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -typing-extensions==4.0.1 - # via - # -r requirements/py36-reqs/install.txt - # argon2-cffi - # importlib-metadata - # markdown-it-py -tzdata==2021.5 - # via - # -r requirements/py36-reqs/install.txt - # pytz-deprecation-shim -tzlocal==4.1 - # via - # -r requirements/py36-reqs/install.txt - # dateparser -urllib3==1.26.8 - # via - # -r requirements/py36-reqs/install.txt - # botocore - # elasticsearch - # kubernetes - # requests -wcwidth==0.2.5 - # via prompt-toolkit -webencodings==0.5.1 - # via bleach -websocket-client==1.2.3 - # via - # -r requirements/py36-reqs/install.txt - # kubernetes -wrapt==1.13.3 - # via - # -r requirements/py36-reqs/install.txt - # deprecated -zipp==3.6.0 - # via - # -r requirements/py36-reqs/install.txt - # importlib-metadata - # importlib-resources - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/requirements/py36-reqs/install.txt b/requirements/py36-reqs/install.txt deleted file mode 100644 index b3ccae56..00000000 --- a/requirements/py36-reqs/install.txt +++ /dev/null @@ -1,171 +0,0 @@ -# -# This file is autogenerated by pip-compile with python 3.6 -# To update, run: -# -# pip-compile --output-file=requirements/py36-reqs/install.txt setup.cfg -# -backports.zoneinfo==0.2.1 - # via - # pytz-deprecation-shim - # tzlocal -boto3==1.20.41 - # via snafu (setup.cfg) -botocore==1.23.41 - # via - # boto3 - # s3transfer -cachetools==4.2.4 - # via google-auth -certifi==2021.10.8 - # via - # elasticsearch - # kubernetes - # requests -charset-normalizer==2.0.10 - # via requests -configargparse==1.5.3 - # via snafu (setup.cfg) -configparser==5.2.0 - # via snafu (setup.cfg) -dataclasses==0.8 - # via snafu (setup.cfg) -dateparser==1.1.0 - # via prometheus-api-client -deprecated==1.2.13 - # via redis -dictdiffer==0.9.0 - # via openshift -distro==1.6.0 - # via snafu (setup.cfg) -docutils==0.16 - # via - # snafu (setup.cfg) - # statistics -elasticsearch==7.13.4 - # via snafu (setup.cfg) -flent==2.0.1 - # via snafu (setup.cfg) -google-auth==2.3.3 - # via kubernetes -idna==3.3 - # via requests -importlib-metadata==4.8.3 - # via - # redis - # snafu (setup.cfg) -importlib-resources==5.4.0 - # via backports.zoneinfo -jinja2==3.0.3 - # via openshift -jmespath==0.10.0 - # via - # boto3 - # botocore -kafka-python==2.0.2 - # via snafu (setup.cfg) -kubernetes==11.0.0 - # via - # openshift - # snafu (setup.cfg) -markupsafe==2.0.1 - # via jinja2 -numpy==1.19.5 - # via - # pandas - # prometheus-api-client - # scipy - # snafu (setup.cfg) -oauthlib==3.1.1 - # via requests-oauthlib -openshift==0.11 - # via snafu (setup.cfg) -packaging==21.3 - # via - # redis - # snafu (setup.cfg) -pandas==1.1.5 - # via prometheus-api-client -prometheus-api-client==0.5.0 - # via snafu (setup.cfg) -pyasn1==0.4.8 - # via - # pyasn1-modules - # rsa -pyasn1-modules==0.2.8 - # via google-auth -pyparsing==3.0.7 - # via packaging -python-dateutil==2.8.2 - # via - # botocore - # dateparser - # kubernetes - # pandas - # snafu (setup.cfg) -python-string-utils==1.0.0 - # via openshift -pytz==2021.3 - # via - # dateparser - # pandas -pytz-deprecation-shim==0.1.0.post0 - # via tzlocal -pyyaml==6.0 - # via - # kubernetes - # snafu (setup.cfg) -redis==4.1.1 - # via snafu (setup.cfg) -regex==2022.1.18 - # via dateparser -requests==2.27.1 - # via - # kubernetes - # prometheus-api-client - # requests-oauthlib - # snafu (setup.cfg) -requests-oauthlib==1.3.0 - # via kubernetes -rsa==4.8 - # via google-auth -ruamel.yaml==0.17.20 - # via openshift -ruamel.yaml.clib==0.2.6 - # via ruamel.yaml -s3transfer==0.5.0 - # via boto3 -scipy==1.5.4 - # via snafu (setup.cfg) -six==1.16.0 - # via - # google-auth - # kubernetes - # openshift - # python-dateutil -statistics==1.0.3.5 - # via snafu (setup.cfg) -ttp==0.8.4 - # via snafu (setup.cfg) -typing-extensions==4.0.1 - # via importlib-metadata -tzdata==2021.5 - # via pytz-deprecation-shim -tzlocal==4.1 - # via dateparser -urllib3==1.26.8 - # via - # botocore - # elasticsearch - # kubernetes - # requests -websocket-client==1.2.3 - # via kubernetes -wrapt==1.13.3 - # via deprecated -zipp==3.6.0 - # via - # importlib-metadata - # importlib-resources - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/requirements/py36-reqs/tests.txt b/requirements/py36-reqs/tests.txt deleted file mode 100644 index 0d1d106e..00000000 --- a/requirements/py36-reqs/tests.txt +++ /dev/null @@ -1,317 +0,0 @@ -# -# This file is autogenerated by pip-compile with python 3.6 -# To update, run: -# -# pip-compile --extra=tests --output-file=requirements/py36-reqs/tests.txt requirements/py36-reqs/install.txt setup.cfg -# -attrs==21.4.0 - # via pytest -backports.zoneinfo==0.2.1 - # via - # -r requirements/py36-reqs/install.txt - # pytz-deprecation-shim - # tzlocal -boto3==1.20.41 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -botocore==1.23.41 - # via - # -r requirements/py36-reqs/install.txt - # boto3 - # s3transfer -cachetools==4.2.4 - # via - # -r requirements/py36-reqs/install.txt - # google-auth -certifi==2021.10.8 - # via - # -r requirements/py36-reqs/install.txt - # elasticsearch - # kubernetes - # requests -charset-normalizer==2.0.10 - # via - # -r requirements/py36-reqs/install.txt - # requests -configargparse==1.5.3 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -configparser==5.2.0 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -coverage[toml]==6.2 - # via pytest-cov -dataclasses==0.8 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -dateparser==1.1.0 - # via - # -r requirements/py36-reqs/install.txt - # prometheus-api-client -deprecated==1.2.13 - # via - # -r requirements/py36-reqs/install.txt - # redis -dictdiffer==0.9.0 - # via - # -r requirements/py36-reqs/install.txt - # openshift -distlib==0.3.4 - # via virtualenv -distro==1.6.0 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -docutils==0.16 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) - # statistics -elasticsearch==7.13.4 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -filelock==3.4.1 - # via - # tox - # virtualenv -flent==2.0.1 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -google-auth==2.3.3 - # via - # -r requirements/py36-reqs/install.txt - # kubernetes -idna==3.3 - # via - # -r requirements/py36-reqs/install.txt - # requests -importlib-metadata==4.8.3 - # via - # -r requirements/py36-reqs/install.txt - # pluggy - # pytest - # redis - # snafu (setup.cfg) - # tox - # virtualenv -importlib-resources==5.4.0 - # via - # -r requirements/py36-reqs/install.txt - # backports.zoneinfo - # virtualenv -iniconfig==1.1.1 - # via pytest -jinja2==3.0.3 - # via - # -r requirements/py36-reqs/install.txt - # openshift -jmespath==0.10.0 - # via - # -r requirements/py36-reqs/install.txt - # boto3 - # botocore -kafka-python==2.0.2 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -kubernetes==11.0.0 - # via - # -r requirements/py36-reqs/install.txt - # openshift - # snafu (setup.cfg) -markupsafe==2.0.1 - # via - # -r requirements/py36-reqs/install.txt - # jinja2 -numpy==1.19.5 - # via - # -r requirements/py36-reqs/install.txt - # pandas - # prometheus-api-client - # scipy - # snafu (setup.cfg) -oauthlib==3.1.1 - # via - # -r requirements/py36-reqs/install.txt - # requests-oauthlib -openshift==0.11 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -packaging==21.3 - # via - # -r requirements/py36-reqs/install.txt - # pytest - # redis - # snafu (setup.cfg) - # tox -pandas==1.1.5 - # via - # -r requirements/py36-reqs/install.txt - # prometheus-api-client -platformdirs==2.4.0 - # via virtualenv -pluggy==1.0.0 - # via - # pytest - # tox -prometheus-api-client==0.5.0 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -py==1.11.0 - # via - # pytest - # tox -pyasn1==0.4.8 - # via - # -r requirements/py36-reqs/install.txt - # pyasn1-modules - # rsa -pyasn1-modules==0.2.8 - # via - # -r requirements/py36-reqs/install.txt - # google-auth -pyparsing==3.0.7 - # via - # -r requirements/py36-reqs/install.txt - # packaging -pytest==6.2.5 - # via - # pytest-cov - # snafu (setup.cfg) -pytest-cov==3.0.0 - # via snafu (setup.cfg) -python-dateutil==2.8.2 - # via - # -r requirements/py36-reqs/install.txt - # botocore - # dateparser - # kubernetes - # pandas - # snafu (setup.cfg) -python-string-utils==1.0.0 - # via - # -r requirements/py36-reqs/install.txt - # openshift -pytz==2021.3 - # via - # -r requirements/py36-reqs/install.txt - # dateparser - # pandas -pytz-deprecation-shim==0.1.0.post0 - # via - # -r requirements/py36-reqs/install.txt - # tzlocal -pyyaml==6.0 - # via - # -r requirements/py36-reqs/install.txt - # kubernetes - # snafu (setup.cfg) -redis==4.1.1 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -regex==2022.1.18 - # via - # -r requirements/py36-reqs/install.txt - # dateparser -requests==2.27.1 - # via - # -r requirements/py36-reqs/install.txt - # kubernetes - # prometheus-api-client - # requests-oauthlib - # snafu (setup.cfg) -requests-oauthlib==1.3.0 - # via - # -r requirements/py36-reqs/install.txt - # kubernetes -rsa==4.8 - # via - # -r requirements/py36-reqs/install.txt - # google-auth -ruamel.yaml==0.17.20 - # via - # -r requirements/py36-reqs/install.txt - # openshift -ruamel.yaml.clib==0.2.6 - # via - # -r requirements/py36-reqs/install.txt - # ruamel.yaml -s3transfer==0.5.0 - # via - # -r requirements/py36-reqs/install.txt - # boto3 -scipy==1.5.4 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -six==1.16.0 - # via - # -r requirements/py36-reqs/install.txt - # google-auth - # kubernetes - # openshift - # python-dateutil - # tox - # virtualenv -statistics==1.0.3.5 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -toml==0.10.2 - # via - # pytest - # tox -tomli==1.2.3 - # via coverage -tox==3.24.5 - # via snafu (setup.cfg) -ttp==0.8.4 - # via - # -r requirements/py36-reqs/install.txt - # snafu (setup.cfg) -typing-extensions==4.0.1 - # via - # -r requirements/py36-reqs/install.txt - # importlib-metadata -tzdata==2021.5 - # via - # -r requirements/py36-reqs/install.txt - # pytz-deprecation-shim -tzlocal==4.1 - # via - # -r requirements/py36-reqs/install.txt - # dateparser -urllib3==1.26.8 - # via - # -r requirements/py36-reqs/install.txt - # botocore - # elasticsearch - # kubernetes - # requests -virtualenv==20.13.0 - # via tox -websocket-client==1.2.3 - # via - # -r requirements/py36-reqs/install.txt - # kubernetes -wrapt==1.13.3 - # via - # -r requirements/py36-reqs/install.txt - # deprecated -zipp==3.6.0 - # via - # -r requirements/py36-reqs/install.txt - # importlib-metadata - # importlib-resources - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/requirements/py37-reqs/docs.txt b/requirements/py37-reqs/docs.txt deleted file mode 100644 index 385a26d7..00000000 --- a/requirements/py37-reqs/docs.txt +++ /dev/null @@ -1,472 +0,0 @@ -# -# This file is autogenerated by pip-compile with python 3.7 -# To update, run: -# -# pip-compile --extra=docs --output-file=requirements/py37-reqs/docs.txt requirements/py37-reqs/install.txt setup.cfg -# -alabaster==0.7.12 - # via sphinx -argon2-cffi==21.3.0 - # via notebook -argon2-cffi-bindings==21.2.0 - # via argon2-cffi -attrs==21.4.0 - # via - # jsonschema - # markdown-it-py -babel==2.9.1 - # via sphinx -backcall==0.2.0 - # via ipython -backports.zoneinfo==0.2.1 - # via - # -r requirements/py37-reqs/install.txt - # pytz-deprecation-shim - # tzlocal -bleach==4.1.0 - # via nbconvert -boto3==1.20.41 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -botocore==1.23.41 - # via - # -r requirements/py37-reqs/install.txt - # boto3 - # s3transfer -cachetools==4.2.4 - # via - # -r requirements/py37-reqs/install.txt - # google-auth -certifi==2021.10.8 - # via - # -r requirements/py37-reqs/install.txt - # elasticsearch - # kubernetes - # requests -cffi==1.15.0 - # via argon2-cffi-bindings -charset-normalizer==2.0.10 - # via - # -r requirements/py37-reqs/install.txt - # requests -configargparse==1.5.3 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -configparser==5.2.0 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -dataclasses==0.6 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -dateparser==1.1.0 - # via - # -r requirements/py37-reqs/install.txt - # prometheus-api-client -debugpy==1.5.1 - # via ipykernel -decorator==5.1.1 - # via ipython -defusedxml==0.7.1 - # via nbconvert -deprecated==1.2.13 - # via - # -r requirements/py37-reqs/install.txt - # redis -dictdiffer==0.9.0 - # via - # -r requirements/py37-reqs/install.txt - # openshift -distro==1.6.0 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -docutils==0.16 - # via - # -r requirements/py37-reqs/install.txt - # myst-parser - # nbsphinx - # snafu (setup.cfg) - # sphinx - # sphinx-rtd-theme - # statistics -elasticsearch==7.13.4 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -entrypoints==0.3 - # via - # jupyter-client - # nbconvert -flent==2.0.1 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -google-auth==2.3.3 - # via - # -r requirements/py37-reqs/install.txt - # kubernetes -idna==3.3 - # via - # -r requirements/py37-reqs/install.txt - # requests -imagesize==1.3.0 - # via sphinx -importlib-metadata==4.10.1 - # via - # -r requirements/py37-reqs/install.txt - # jsonschema - # redis - # snafu (setup.cfg) - # sphinx -importlib-resources==5.4.0 - # via jsonschema -ipykernel==6.7.0 - # via - # notebook - # snafu (setup.cfg) -ipython==7.31.1 - # via - # ipykernel - # snafu (setup.cfg) -ipython-genutils==0.2.0 - # via - # nbformat - # notebook -jedi==0.18.1 - # via ipython -jinja2==3.0.3 - # via - # -r requirements/py37-reqs/install.txt - # myst-parser - # nbconvert - # nbsphinx - # notebook - # openshift - # sphinx -jmespath==0.10.0 - # via - # -r requirements/py37-reqs/install.txt - # boto3 - # botocore -jsonschema==4.4.0 - # via nbformat -jupyter-client==7.1.2 - # via - # ipykernel - # nbclient - # notebook -jupyter-core==4.9.1 - # via - # jupyter-client - # nbconvert - # nbformat - # notebook -jupyterlab-pygments==0.1.2 - # via nbconvert -kafka-python==2.0.2 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -kubernetes==11.0.0 - # via - # -r requirements/py37-reqs/install.txt - # openshift - # snafu (setup.cfg) -markdown-it-py==2.0.0 - # via - # mdit-py-plugins - # myst-parser -markupsafe==2.0.1 - # via - # -r requirements/py37-reqs/install.txt - # jinja2 -matplotlib-inline==0.1.3 - # via - # ipykernel - # ipython -mdit-py-plugins==0.3.0 - # via myst-parser -mdurl==0.1.0 - # via markdown-it-py -mistune==0.8.4 - # via nbconvert -myst-parser==0.16.1 - # via snafu (setup.cfg) -nbclient==0.5.10 - # via nbconvert -nbconvert==6.5.1 - # via - # nbsphinx - # notebook -nbformat==5.1.3 - # via - # nbclient - # nbconvert - # nbsphinx - # notebook -nbsphinx==0.8.8 - # via snafu (setup.cfg) -nest-asyncio==1.5.4 - # via - # ipykernel - # jupyter-client - # nbclient - # notebook -notebook==6.4.12 - # via snafu (setup.cfg) -numpy==1.21.5 - # via - # -r requirements/py37-reqs/install.txt - # pandas - # prometheus-api-client - # scipy - # snafu (setup.cfg) -oauthlib==3.1.1 - # via - # -r requirements/py37-reqs/install.txt - # requests-oauthlib -openshift==0.11 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -packaging==21.3 - # via - # -r requirements/py37-reqs/install.txt - # bleach - # redis - # snafu (setup.cfg) - # sphinx -pandas==1.3.5 - # via - # -r requirements/py37-reqs/install.txt - # prometheus-api-client -pandoc==2.0.1 - # via snafu (setup.cfg) -pandocfilters==1.5.0 - # via nbconvert -parso==0.8.3 - # via jedi -pexpect==4.8.0 - # via ipython -pickleshare==0.7.5 - # via ipython -plumbum==1.7.2 - # via pandoc -ply==3.11 - # via pandoc -prometheus-api-client==0.5.0 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -prometheus-client==0.12.0 - # via notebook -prompt-toolkit==3.0.24 - # via ipython -ptyprocess==0.7.0 - # via - # pexpect - # terminado -pyasn1==0.4.8 - # via - # -r requirements/py37-reqs/install.txt - # pyasn1-modules - # rsa -pyasn1-modules==0.2.8 - # via - # -r requirements/py37-reqs/install.txt - # google-auth -pycparser==2.21 - # via cffi -pygments==2.11.2 - # via - # ipython - # jupyterlab-pygments - # nbconvert - # sphinx -pyparsing==3.0.7 - # via - # -r requirements/py37-reqs/install.txt - # packaging -pyrsistent==0.18.1 - # via jsonschema -python-dateutil==2.8.2 - # via - # -r requirements/py37-reqs/install.txt - # botocore - # dateparser - # jupyter-client - # kubernetes - # pandas - # snafu (setup.cfg) -python-string-utils==1.0.0 - # via - # -r requirements/py37-reqs/install.txt - # openshift -pytz==2021.3 - # via - # -r requirements/py37-reqs/install.txt - # babel - # dateparser - # pandas -pytz-deprecation-shim==0.1.0.post0 - # via - # -r requirements/py37-reqs/install.txt - # tzlocal -pyyaml==6.0 - # via - # -r requirements/py37-reqs/install.txt - # kubernetes - # myst-parser - # snafu (setup.cfg) -pyzmq==22.3.0 - # via - # jupyter-client - # notebook -redis==4.1.1 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -regex==2022.1.18 - # via - # -r requirements/py37-reqs/install.txt - # dateparser -requests==2.27.1 - # via - # -r requirements/py37-reqs/install.txt - # kubernetes - # prometheus-api-client - # requests-oauthlib - # snafu (setup.cfg) - # sphinx -requests-oauthlib==1.3.0 - # via - # -r requirements/py37-reqs/install.txt - # kubernetes -rsa==4.8 - # via - # -r requirements/py37-reqs/install.txt - # google-auth -ruamel.yaml==0.17.20 - # via - # -r requirements/py37-reqs/install.txt - # openshift -ruamel.yaml.clib==0.2.6 - # via - # -r requirements/py37-reqs/install.txt - # ruamel.yaml -s3transfer==0.5.0 - # via - # -r requirements/py37-reqs/install.txt - # boto3 -scipy==1.7.3 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -send2trash==1.8.0 - # via notebook -six==1.16.0 - # via - # -r requirements/py37-reqs/install.txt - # bleach - # google-auth - # kubernetes - # openshift - # python-dateutil -snowballstemmer==2.2.0 - # via sphinx -sphinx==4.4.0 - # via - # myst-parser - # nbsphinx - # snafu (setup.cfg) - # sphinx-rtd-theme -sphinx-rtd-theme==1.0.0 - # via snafu (setup.cfg) -sphinxcontrib-applehelp==1.0.2 - # via sphinx -sphinxcontrib-devhelp==1.0.2 - # via sphinx -sphinxcontrib-htmlhelp==2.0.0 - # via sphinx -sphinxcontrib-jsmath==1.0.1 - # via sphinx -sphinxcontrib-qthelp==1.0.3 - # via sphinx -sphinxcontrib-serializinghtml==1.1.5 - # via sphinx -statistics==1.0.3.5 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -terminado==0.12.1 - # via notebook -testpath==0.5.0 - # via nbconvert -tornado==6.1 - # via - # ipykernel - # jupyter-client - # notebook - # terminado -traitlets==5.1.1 - # via - # ipykernel - # ipython - # jupyter-client - # jupyter-core - # matplotlib-inline - # nbclient - # nbconvert - # nbformat - # nbsphinx - # notebook -ttp==0.8.4 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -typing-extensions==4.0.1 - # via - # -r requirements/py37-reqs/install.txt - # argon2-cffi - # importlib-metadata - # jsonschema - # markdown-it-py -tzdata==2021.5 - # via - # -r requirements/py37-reqs/install.txt - # pytz-deprecation-shim -tzlocal==4.1 - # via - # -r requirements/py37-reqs/install.txt - # dateparser -urllib3==1.26.8 - # via - # -r requirements/py37-reqs/install.txt - # botocore - # elasticsearch - # kubernetes - # requests -wcwidth==0.2.5 - # via prompt-toolkit -webencodings==0.5.1 - # via bleach -websocket-client==1.2.3 - # via - # -r requirements/py37-reqs/install.txt - # kubernetes -wrapt==1.13.3 - # via - # -r requirements/py37-reqs/install.txt - # deprecated -zipp==3.7.0 - # via - # -r requirements/py37-reqs/install.txt - # importlib-metadata - # importlib-resources - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/requirements/py37-reqs/install.txt b/requirements/py37-reqs/install.txt deleted file mode 100644 index 340f4465..00000000 --- a/requirements/py37-reqs/install.txt +++ /dev/null @@ -1,167 +0,0 @@ -# -# This file is autogenerated by pip-compile with python 3.7 -# To update, run: -# -# pip-compile --output-file=requirements/py37-reqs/install.txt setup.cfg -# -backports.zoneinfo==0.2.1 - # via - # pytz-deprecation-shim - # tzlocal -boto3==1.20.41 - # via snafu (setup.cfg) -botocore==1.23.41 - # via - # boto3 - # s3transfer -cachetools==4.2.4 - # via google-auth -certifi==2021.10.8 - # via - # elasticsearch - # kubernetes - # requests -charset-normalizer==2.0.10 - # via requests -configargparse==1.5.3 - # via snafu (setup.cfg) -configparser==5.2.0 - # via snafu (setup.cfg) -dataclasses==0.6 - # via snafu (setup.cfg) -dateparser==1.1.0 - # via prometheus-api-client -deprecated==1.2.13 - # via redis -dictdiffer==0.9.0 - # via openshift -distro==1.6.0 - # via snafu (setup.cfg) -docutils==0.16 - # via - # snafu (setup.cfg) - # statistics -elasticsearch==7.13.4 - # via snafu (setup.cfg) -flent==2.0.1 - # via snafu (setup.cfg) -google-auth==2.3.3 - # via kubernetes -idna==3.3 - # via requests -importlib-metadata==4.10.1 - # via - # redis - # snafu (setup.cfg) -jinja2==3.0.3 - # via openshift -jmespath==0.10.0 - # via - # boto3 - # botocore -kafka-python==2.0.2 - # via snafu (setup.cfg) -kubernetes==11.0.0 - # via - # openshift - # snafu (setup.cfg) -markupsafe==2.0.1 - # via jinja2 -numpy==1.21.5 - # via - # pandas - # prometheus-api-client - # scipy - # snafu (setup.cfg) -oauthlib==3.1.1 - # via requests-oauthlib -openshift==0.11 - # via snafu (setup.cfg) -packaging==21.3 - # via - # redis - # snafu (setup.cfg) -pandas==1.3.5 - # via prometheus-api-client -prometheus-api-client==0.5.0 - # via snafu (setup.cfg) -pyasn1==0.4.8 - # via - # pyasn1-modules - # rsa -pyasn1-modules==0.2.8 - # via google-auth -pyparsing==3.0.7 - # via packaging -python-dateutil==2.8.2 - # via - # botocore - # dateparser - # kubernetes - # pandas - # snafu (setup.cfg) -python-string-utils==1.0.0 - # via openshift -pytz==2021.3 - # via - # dateparser - # pandas -pytz-deprecation-shim==0.1.0.post0 - # via tzlocal -pyyaml==6.0 - # via - # kubernetes - # snafu (setup.cfg) -redis==4.1.1 - # via snafu (setup.cfg) -regex==2022.1.18 - # via dateparser -requests==2.27.1 - # via - # kubernetes - # prometheus-api-client - # requests-oauthlib - # snafu (setup.cfg) -requests-oauthlib==1.3.0 - # via kubernetes -rsa==4.8 - # via google-auth -ruamel.yaml==0.17.20 - # via openshift -ruamel.yaml.clib==0.2.6 - # via ruamel.yaml -s3transfer==0.5.0 - # via boto3 -scipy==1.7.3 - # via snafu (setup.cfg) -six==1.16.0 - # via - # google-auth - # kubernetes - # openshift - # python-dateutil -statistics==1.0.3.5 - # via snafu (setup.cfg) -ttp==0.8.4 - # via snafu (setup.cfg) -typing-extensions==4.0.1 - # via importlib-metadata -tzdata==2021.5 - # via pytz-deprecation-shim -tzlocal==4.1 - # via dateparser -urllib3==1.26.8 - # via - # botocore - # elasticsearch - # kubernetes - # requests -websocket-client==1.2.3 - # via kubernetes -wrapt==1.13.3 - # via deprecated -zipp==3.7.0 - # via importlib-metadata - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/requirements/py37-reqs/tests.txt b/requirements/py37-reqs/tests.txt deleted file mode 100644 index 6e5b9e6e..00000000 --- a/requirements/py37-reqs/tests.txt +++ /dev/null @@ -1,311 +0,0 @@ -# -# This file is autogenerated by pip-compile with python 3.7 -# To update, run: -# -# pip-compile --extra=tests --output-file=requirements/py37-reqs/tests.txt requirements/py37-reqs/install.txt setup.cfg -# -attrs==21.4.0 - # via pytest -backports.zoneinfo==0.2.1 - # via - # -r requirements/py37-reqs/install.txt - # pytz-deprecation-shim - # tzlocal -boto3==1.20.41 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -botocore==1.23.41 - # via - # -r requirements/py37-reqs/install.txt - # boto3 - # s3transfer -cachetools==4.2.4 - # via - # -r requirements/py37-reqs/install.txt - # google-auth -certifi==2021.10.8 - # via - # -r requirements/py37-reqs/install.txt - # elasticsearch - # kubernetes - # requests -charset-normalizer==2.0.10 - # via - # -r requirements/py37-reqs/install.txt - # requests -configargparse==1.5.3 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -configparser==5.2.0 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -coverage[toml]==6.2 - # via pytest-cov -dataclasses==0.6 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -dateparser==1.1.0 - # via - # -r requirements/py37-reqs/install.txt - # prometheus-api-client -deprecated==1.2.13 - # via - # -r requirements/py37-reqs/install.txt - # redis -dictdiffer==0.9.0 - # via - # -r requirements/py37-reqs/install.txt - # openshift -distlib==0.3.4 - # via virtualenv -distro==1.6.0 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -docutils==0.16 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) - # statistics -elasticsearch==7.13.4 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -filelock==3.4.2 - # via - # tox - # virtualenv -flent==2.0.1 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -google-auth==2.3.3 - # via - # -r requirements/py37-reqs/install.txt - # kubernetes -idna==3.3 - # via - # -r requirements/py37-reqs/install.txt - # requests -importlib-metadata==4.10.1 - # via - # -r requirements/py37-reqs/install.txt - # pluggy - # pytest - # redis - # snafu (setup.cfg) - # tox - # virtualenv -iniconfig==1.1.1 - # via pytest -jinja2==3.0.3 - # via - # -r requirements/py37-reqs/install.txt - # openshift -jmespath==0.10.0 - # via - # -r requirements/py37-reqs/install.txt - # boto3 - # botocore -kafka-python==2.0.2 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -kubernetes==11.0.0 - # via - # -r requirements/py37-reqs/install.txt - # openshift - # snafu (setup.cfg) -markupsafe==2.0.1 - # via - # -r requirements/py37-reqs/install.txt - # jinja2 -numpy==1.21.5 - # via - # -r requirements/py37-reqs/install.txt - # pandas - # prometheus-api-client - # scipy - # snafu (setup.cfg) -oauthlib==3.1.1 - # via - # -r requirements/py37-reqs/install.txt - # requests-oauthlib -openshift==0.11 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -packaging==21.3 - # via - # -r requirements/py37-reqs/install.txt - # pytest - # redis - # snafu (setup.cfg) - # tox -pandas==1.3.5 - # via - # -r requirements/py37-reqs/install.txt - # prometheus-api-client -platformdirs==2.4.1 - # via virtualenv -pluggy==1.0.0 - # via - # pytest - # tox -prometheus-api-client==0.5.0 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -py==1.11.0 - # via - # pytest - # tox -pyasn1==0.4.8 - # via - # -r requirements/py37-reqs/install.txt - # pyasn1-modules - # rsa -pyasn1-modules==0.2.8 - # via - # -r requirements/py37-reqs/install.txt - # google-auth -pyparsing==3.0.7 - # via - # -r requirements/py37-reqs/install.txt - # packaging -pytest==6.2.5 - # via - # pytest-cov - # snafu (setup.cfg) -pytest-cov==3.0.0 - # via snafu (setup.cfg) -python-dateutil==2.8.2 - # via - # -r requirements/py37-reqs/install.txt - # botocore - # dateparser - # kubernetes - # pandas - # snafu (setup.cfg) -python-string-utils==1.0.0 - # via - # -r requirements/py37-reqs/install.txt - # openshift -pytz==2021.3 - # via - # -r requirements/py37-reqs/install.txt - # dateparser - # pandas -pytz-deprecation-shim==0.1.0.post0 - # via - # -r requirements/py37-reqs/install.txt - # tzlocal -pyyaml==6.0 - # via - # -r requirements/py37-reqs/install.txt - # kubernetes - # snafu (setup.cfg) -redis==4.1.1 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -regex==2022.1.18 - # via - # -r requirements/py37-reqs/install.txt - # dateparser -requests==2.27.1 - # via - # -r requirements/py37-reqs/install.txt - # kubernetes - # prometheus-api-client - # requests-oauthlib - # snafu (setup.cfg) -requests-oauthlib==1.3.0 - # via - # -r requirements/py37-reqs/install.txt - # kubernetes -rsa==4.8 - # via - # -r requirements/py37-reqs/install.txt - # google-auth -ruamel.yaml==0.17.20 - # via - # -r requirements/py37-reqs/install.txt - # openshift -ruamel.yaml.clib==0.2.6 - # via - # -r requirements/py37-reqs/install.txt - # ruamel.yaml -s3transfer==0.5.0 - # via - # -r requirements/py37-reqs/install.txt - # boto3 -scipy==1.7.3 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -six==1.16.0 - # via - # -r requirements/py37-reqs/install.txt - # google-auth - # kubernetes - # openshift - # python-dateutil - # tox - # virtualenv -statistics==1.0.3.5 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -toml==0.10.2 - # via - # pytest - # tox -tomli==2.0.0 - # via coverage -tox==3.24.5 - # via snafu (setup.cfg) -ttp==0.8.4 - # via - # -r requirements/py37-reqs/install.txt - # snafu (setup.cfg) -typing-extensions==4.0.1 - # via - # -r requirements/py37-reqs/install.txt - # importlib-metadata -tzdata==2021.5 - # via - # -r requirements/py37-reqs/install.txt - # pytz-deprecation-shim -tzlocal==4.1 - # via - # -r requirements/py37-reqs/install.txt - # dateparser -urllib3==1.26.8 - # via - # -r requirements/py37-reqs/install.txt - # botocore - # elasticsearch - # kubernetes - # requests -virtualenv==20.13.0 - # via tox -websocket-client==1.2.3 - # via - # -r requirements/py37-reqs/install.txt - # kubernetes -wrapt==1.13.3 - # via - # -r requirements/py37-reqs/install.txt - # deprecated -zipp==3.7.0 - # via - # -r requirements/py37-reqs/install.txt - # importlib-metadata - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/requirements/py38-reqs/docs.txt b/requirements/py38-reqs/docs.txt deleted file mode 100644 index 4b0355ba..00000000 --- a/requirements/py38-reqs/docs.txt +++ /dev/null @@ -1,486 +0,0 @@ -# -# This file is autogenerated by pip-compile with python 3.8 -# To update, run: -# -# pip-compile --extra=docs --output-file=requirements/py38-reqs/docs.txt requirements/py38-reqs/install.txt setup.cfg -# -alabaster==0.7.12 - # via sphinx -argon2-cffi==21.3.0 - # via notebook -argon2-cffi-bindings==21.2.0 - # via argon2-cffi -asttokens==2.0.5 - # via stack-data -attrs==21.4.0 - # via - # jsonschema - # markdown-it-py -babel==2.9.1 - # via sphinx -backcall==0.2.0 - # via ipython -backports.zoneinfo==0.2.1 - # via - # -r requirements/py38-reqs/install.txt - # pytz-deprecation-shim - # tzlocal -black==21.12b0 - # via ipython -bleach==4.1.0 - # via nbconvert -boto3==1.20.41 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -botocore==1.23.41 - # via - # -r requirements/py38-reqs/install.txt - # boto3 - # s3transfer -cachetools==4.2.4 - # via - # -r requirements/py38-reqs/install.txt - # google-auth -certifi==2021.10.8 - # via - # -r requirements/py38-reqs/install.txt - # elasticsearch - # kubernetes - # requests -cffi==1.15.0 - # via argon2-cffi-bindings -charset-normalizer==2.0.10 - # via - # -r requirements/py38-reqs/install.txt - # requests -click==8.0.3 - # via black -configargparse==1.5.3 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -configparser==5.2.0 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -dataclasses==0.6 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -dateparser==1.1.0 - # via - # -r requirements/py38-reqs/install.txt - # prometheus-api-client -debugpy==1.5.1 - # via ipykernel -decorator==5.1.1 - # via ipython -defusedxml==0.7.1 - # via nbconvert -deprecated==1.2.13 - # via - # -r requirements/py38-reqs/install.txt - # redis -dictdiffer==0.9.0 - # via - # -r requirements/py38-reqs/install.txt - # openshift -distro==1.6.0 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -docutils==0.16 - # via - # -r requirements/py38-reqs/install.txt - # myst-parser - # nbsphinx - # snafu (setup.cfg) - # sphinx - # sphinx-rtd-theme - # statistics -elasticsearch==7.13.4 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -entrypoints==0.3 - # via - # jupyter-client - # nbconvert -executing==0.8.2 - # via stack-data -flent==2.0.1 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -google-auth==2.3.3 - # via - # -r requirements/py38-reqs/install.txt - # kubernetes -idna==3.3 - # via - # -r requirements/py38-reqs/install.txt - # requests -imagesize==1.3.0 - # via sphinx -importlib-metadata==4.10.1 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) - # sphinx -importlib-resources==5.4.0 - # via jsonschema -ipykernel==6.7.0 - # via - # notebook - # snafu (setup.cfg) -ipython==8.0.1 - # via - # ipykernel - # snafu (setup.cfg) -ipython-genutils==0.2.0 - # via - # nbformat - # notebook -jedi==0.18.1 - # via ipython -jinja2==3.0.3 - # via - # -r requirements/py38-reqs/install.txt - # myst-parser - # nbconvert - # nbsphinx - # notebook - # openshift - # sphinx -jmespath==0.10.0 - # via - # -r requirements/py38-reqs/install.txt - # boto3 - # botocore -jsonschema==4.4.0 - # via nbformat -jupyter-client==7.1.2 - # via - # ipykernel - # nbclient - # notebook -jupyter-core==4.9.1 - # via - # jupyter-client - # nbconvert - # nbformat - # notebook -jupyterlab-pygments==0.1.2 - # via nbconvert -kafka-python==2.0.2 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -kubernetes==11.0.0 - # via - # -r requirements/py38-reqs/install.txt - # openshift - # snafu (setup.cfg) -markdown-it-py==2.0.0 - # via - # mdit-py-plugins - # myst-parser -markupsafe==2.0.1 - # via - # -r requirements/py38-reqs/install.txt - # jinja2 -matplotlib-inline==0.1.3 - # via - # ipykernel - # ipython -mdit-py-plugins==0.3.0 - # via myst-parser -mdurl==0.1.0 - # via markdown-it-py -mistune==0.8.4 - # via nbconvert -mypy-extensions==0.4.3 - # via black -myst-parser==0.16.1 - # via snafu (setup.cfg) -nbclient==0.5.10 - # via nbconvert -nbconvert==6.5.1 - # via - # nbsphinx - # notebook -nbformat==5.1.3 - # via - # nbclient - # nbconvert - # nbsphinx - # notebook -nbsphinx==0.8.8 - # via snafu (setup.cfg) -nest-asyncio==1.5.4 - # via - # ipykernel - # jupyter-client - # nbclient - # notebook -notebook==6.4.12 - # via snafu (setup.cfg) -numpy==1.22.1 - # via - # -r requirements/py38-reqs/install.txt - # pandas - # prometheus-api-client - # scipy - # snafu (setup.cfg) -oauthlib==3.1.1 - # via - # -r requirements/py38-reqs/install.txt - # requests-oauthlib -openshift==0.11 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -packaging==21.3 - # via - # -r requirements/py38-reqs/install.txt - # bleach - # redis - # snafu (setup.cfg) - # sphinx -pandas==1.4.0 - # via - # -r requirements/py38-reqs/install.txt - # prometheus-api-client -pandoc==2.0.1 - # via snafu (setup.cfg) -pandocfilters==1.5.0 - # via nbconvert -parso==0.8.3 - # via jedi -pathspec==0.9.0 - # via black -pexpect==4.8.0 - # via ipython -pickleshare==0.7.5 - # via ipython -platformdirs==2.4.1 - # via black -plumbum==1.7.2 - # via pandoc -ply==3.11 - # via pandoc -prometheus-api-client==0.5.0 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -prometheus-client==0.12.0 - # via notebook -prompt-toolkit==3.0.24 - # via ipython -ptyprocess==0.7.0 - # via - # pexpect - # terminado -pure-eval==0.2.2 - # via stack-data -pyasn1==0.4.8 - # via - # -r requirements/py38-reqs/install.txt - # pyasn1-modules - # rsa -pyasn1-modules==0.2.8 - # via - # -r requirements/py38-reqs/install.txt - # google-auth -pycparser==2.21 - # via cffi -pygments==2.11.2 - # via - # ipython - # jupyterlab-pygments - # nbconvert - # sphinx -pyparsing==3.0.7 - # via - # -r requirements/py38-reqs/install.txt - # packaging -pyrsistent==0.18.1 - # via jsonschema -python-dateutil==2.8.2 - # via - # -r requirements/py38-reqs/install.txt - # botocore - # dateparser - # jupyter-client - # kubernetes - # pandas - # snafu (setup.cfg) -python-string-utils==1.0.0 - # via - # -r requirements/py38-reqs/install.txt - # openshift -pytz==2021.3 - # via - # -r requirements/py38-reqs/install.txt - # babel - # dateparser - # pandas -pytz-deprecation-shim==0.1.0.post0 - # via - # -r requirements/py38-reqs/install.txt - # tzlocal -pyyaml==6.0 - # via - # -r requirements/py38-reqs/install.txt - # kubernetes - # myst-parser - # snafu (setup.cfg) -pyzmq==22.3.0 - # via - # jupyter-client - # notebook -redis==4.1.1 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -regex==2022.1.18 - # via - # -r requirements/py38-reqs/install.txt - # dateparser -requests==2.27.1 - # via - # -r requirements/py38-reqs/install.txt - # kubernetes - # prometheus-api-client - # requests-oauthlib - # snafu (setup.cfg) - # sphinx -requests-oauthlib==1.3.0 - # via - # -r requirements/py38-reqs/install.txt - # kubernetes -rsa==4.8 - # via - # -r requirements/py38-reqs/install.txt - # google-auth -ruamel.yaml==0.17.20 - # via - # -r requirements/py38-reqs/install.txt - # openshift -ruamel.yaml.clib==0.2.6 - # via - # -r requirements/py38-reqs/install.txt - # ruamel.yaml -s3transfer==0.5.0 - # via - # -r requirements/py38-reqs/install.txt - # boto3 -scipy==1.7.3 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -send2trash==1.8.0 - # via notebook -six==1.16.0 - # via - # -r requirements/py38-reqs/install.txt - # asttokens - # bleach - # google-auth - # kubernetes - # openshift - # python-dateutil -snowballstemmer==2.2.0 - # via sphinx -sphinx==4.4.0 - # via - # myst-parser - # nbsphinx - # snafu (setup.cfg) - # sphinx-rtd-theme -sphinx-rtd-theme==1.0.0 - # via snafu (setup.cfg) -sphinxcontrib-applehelp==1.0.2 - # via sphinx -sphinxcontrib-devhelp==1.0.2 - # via sphinx -sphinxcontrib-htmlhelp==2.0.0 - # via sphinx -sphinxcontrib-jsmath==1.0.1 - # via sphinx -sphinxcontrib-qthelp==1.0.3 - # via sphinx -sphinxcontrib-serializinghtml==1.1.5 - # via sphinx -stack-data==0.1.4 - # via ipython -statistics==1.0.3.5 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -terminado==0.12.1 - # via notebook -testpath==0.5.0 - # via nbconvert -tomli==1.2.3 - # via black -tornado==6.1 - # via - # ipykernel - # jupyter-client - # notebook - # terminado -traitlets==5.1.1 - # via - # ipykernel - # ipython - # jupyter-client - # jupyter-core - # matplotlib-inline - # nbclient - # nbconvert - # nbformat - # nbsphinx - # notebook -ttp==0.8.4 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -typing-extensions==4.0.1 - # via black -tzdata==2021.5 - # via - # -r requirements/py38-reqs/install.txt - # pytz-deprecation-shim -tzlocal==4.1 - # via - # -r requirements/py38-reqs/install.txt - # dateparser -urllib3==1.26.8 - # via - # -r requirements/py38-reqs/install.txt - # botocore - # elasticsearch - # kubernetes - # requests -wcwidth==0.2.5 - # via prompt-toolkit -webencodings==0.5.1 - # via bleach -websocket-client==1.2.3 - # via - # -r requirements/py38-reqs/install.txt - # kubernetes -wrapt==1.13.3 - # via - # -r requirements/py38-reqs/install.txt - # deprecated -zipp==3.7.0 - # via - # -r requirements/py38-reqs/install.txt - # importlib-metadata - # importlib-resources - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/requirements/py38-reqs/install.txt b/requirements/py38-reqs/install.txt deleted file mode 100644 index a6265a5b..00000000 --- a/requirements/py38-reqs/install.txt +++ /dev/null @@ -1,163 +0,0 @@ -# -# This file is autogenerated by pip-compile with python 3.8 -# To update, run: -# -# pip-compile --output-file=requirements/py38-reqs/install.txt setup.cfg -# -backports.zoneinfo==0.2.1 - # via - # pytz-deprecation-shim - # tzlocal -boto3==1.20.41 - # via snafu (setup.cfg) -botocore==1.23.41 - # via - # boto3 - # s3transfer -cachetools==4.2.4 - # via google-auth -certifi==2021.10.8 - # via - # elasticsearch - # kubernetes - # requests -charset-normalizer==2.0.10 - # via requests -configargparse==1.5.3 - # via snafu (setup.cfg) -configparser==5.2.0 - # via snafu (setup.cfg) -dataclasses==0.6 - # via snafu (setup.cfg) -dateparser==1.1.0 - # via prometheus-api-client -deprecated==1.2.13 - # via redis -dictdiffer==0.9.0 - # via openshift -distro==1.6.0 - # via snafu (setup.cfg) -docutils==0.16 - # via - # snafu (setup.cfg) - # statistics -elasticsearch==7.13.4 - # via snafu (setup.cfg) -flent==2.0.1 - # via snafu (setup.cfg) -google-auth==2.3.3 - # via kubernetes -idna==3.3 - # via requests -importlib-metadata==4.10.1 - # via snafu (setup.cfg) -jinja2==3.0.3 - # via openshift -jmespath==0.10.0 - # via - # boto3 - # botocore -kafka-python==2.0.2 - # via snafu (setup.cfg) -kubernetes==11.0.0 - # via - # openshift - # snafu (setup.cfg) -markupsafe==2.0.1 - # via jinja2 -numpy==1.22.1 - # via - # pandas - # prometheus-api-client - # scipy - # snafu (setup.cfg) -oauthlib==3.1.1 - # via requests-oauthlib -openshift==0.11 - # via snafu (setup.cfg) -packaging==21.3 - # via - # redis - # snafu (setup.cfg) -pandas==1.4.0 - # via prometheus-api-client -prometheus-api-client==0.5.0 - # via snafu (setup.cfg) -pyasn1==0.4.8 - # via - # pyasn1-modules - # rsa -pyasn1-modules==0.2.8 - # via google-auth -pyparsing==3.0.7 - # via packaging -python-dateutil==2.8.2 - # via - # botocore - # dateparser - # kubernetes - # pandas - # snafu (setup.cfg) -python-string-utils==1.0.0 - # via openshift -pytz==2021.3 - # via - # dateparser - # pandas -pytz-deprecation-shim==0.1.0.post0 - # via tzlocal -pyyaml==6.0 - # via - # kubernetes - # snafu (setup.cfg) -redis==4.1.1 - # via snafu (setup.cfg) -regex==2022.1.18 - # via dateparser -requests==2.27.1 - # via - # kubernetes - # prometheus-api-client - # requests-oauthlib - # snafu (setup.cfg) -requests-oauthlib==1.3.0 - # via kubernetes -rsa==4.8 - # via google-auth -ruamel.yaml==0.17.20 - # via openshift -ruamel.yaml.clib==0.2.6 - # via ruamel.yaml -s3transfer==0.5.0 - # via boto3 -scipy==1.7.3 - # via snafu (setup.cfg) -six==1.16.0 - # via - # google-auth - # kubernetes - # openshift - # python-dateutil -statistics==1.0.3.5 - # via snafu (setup.cfg) -ttp==0.8.4 - # via snafu (setup.cfg) -tzdata==2021.5 - # via pytz-deprecation-shim -tzlocal==4.1 - # via dateparser -urllib3==1.26.8 - # via - # botocore - # elasticsearch - # kubernetes - # requests -websocket-client==1.2.3 - # via kubernetes -wrapt==1.13.3 - # via deprecated -zipp==3.7.0 - # via importlib-metadata - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/requirements/py38-reqs/tests.txt b/requirements/py38-reqs/tests.txt deleted file mode 100644 index b19b34ee..00000000 --- a/requirements/py38-reqs/tests.txt +++ /dev/null @@ -1,302 +0,0 @@ -# -# This file is autogenerated by pip-compile with python 3.8 -# To update, run: -# -# pip-compile --extra=tests --output-file=requirements/py38-reqs/tests.txt requirements/py38-reqs/install.txt setup.cfg -# -attrs==21.4.0 - # via pytest -backports.zoneinfo==0.2.1 - # via - # -r requirements/py38-reqs/install.txt - # pytz-deprecation-shim - # tzlocal -boto3==1.20.41 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -botocore==1.23.41 - # via - # -r requirements/py38-reqs/install.txt - # boto3 - # s3transfer -cachetools==4.2.4 - # via - # -r requirements/py38-reqs/install.txt - # google-auth -certifi==2021.10.8 - # via - # -r requirements/py38-reqs/install.txt - # elasticsearch - # kubernetes - # requests -charset-normalizer==2.0.10 - # via - # -r requirements/py38-reqs/install.txt - # requests -configargparse==1.5.3 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -configparser==5.2.0 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -coverage[toml]==6.2 - # via pytest-cov -dataclasses==0.6 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -dateparser==1.1.0 - # via - # -r requirements/py38-reqs/install.txt - # prometheus-api-client -deprecated==1.2.13 - # via - # -r requirements/py38-reqs/install.txt - # redis -dictdiffer==0.9.0 - # via - # -r requirements/py38-reqs/install.txt - # openshift -distlib==0.3.4 - # via virtualenv -distro==1.6.0 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -docutils==0.16 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) - # statistics -elasticsearch==7.13.4 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -filelock==3.4.2 - # via - # tox - # virtualenv -flent==2.0.1 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -google-auth==2.3.3 - # via - # -r requirements/py38-reqs/install.txt - # kubernetes -idna==3.3 - # via - # -r requirements/py38-reqs/install.txt - # requests -importlib-metadata==4.10.1 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -iniconfig==1.1.1 - # via pytest -jinja2==3.0.3 - # via - # -r requirements/py38-reqs/install.txt - # openshift -jmespath==0.10.0 - # via - # -r requirements/py38-reqs/install.txt - # boto3 - # botocore -kafka-python==2.0.2 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -kubernetes==11.0.0 - # via - # -r requirements/py38-reqs/install.txt - # openshift - # snafu (setup.cfg) -markupsafe==2.0.1 - # via - # -r requirements/py38-reqs/install.txt - # jinja2 -numpy==1.22.1 - # via - # -r requirements/py38-reqs/install.txt - # pandas - # prometheus-api-client - # scipy - # snafu (setup.cfg) -oauthlib==3.1.1 - # via - # -r requirements/py38-reqs/install.txt - # requests-oauthlib -openshift==0.11 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -packaging==21.3 - # via - # -r requirements/py38-reqs/install.txt - # pytest - # redis - # snafu (setup.cfg) - # tox -pandas==1.4.0 - # via - # -r requirements/py38-reqs/install.txt - # prometheus-api-client -platformdirs==2.4.1 - # via virtualenv -pluggy==1.0.0 - # via - # pytest - # tox -prometheus-api-client==0.5.0 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -py==1.11.0 - # via - # pytest - # tox -pyasn1==0.4.8 - # via - # -r requirements/py38-reqs/install.txt - # pyasn1-modules - # rsa -pyasn1-modules==0.2.8 - # via - # -r requirements/py38-reqs/install.txt - # google-auth -pyparsing==3.0.7 - # via - # -r requirements/py38-reqs/install.txt - # packaging -pytest==6.2.5 - # via - # pytest-cov - # snafu (setup.cfg) -pytest-cov==3.0.0 - # via snafu (setup.cfg) -python-dateutil==2.8.2 - # via - # -r requirements/py38-reqs/install.txt - # botocore - # dateparser - # kubernetes - # pandas - # snafu (setup.cfg) -python-string-utils==1.0.0 - # via - # -r requirements/py38-reqs/install.txt - # openshift -pytz==2021.3 - # via - # -r requirements/py38-reqs/install.txt - # dateparser - # pandas -pytz-deprecation-shim==0.1.0.post0 - # via - # -r requirements/py38-reqs/install.txt - # tzlocal -pyyaml==6.0 - # via - # -r requirements/py38-reqs/install.txt - # kubernetes - # snafu (setup.cfg) -redis==4.1.1 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -regex==2022.1.18 - # via - # -r requirements/py38-reqs/install.txt - # dateparser -requests==2.27.1 - # via - # -r requirements/py38-reqs/install.txt - # kubernetes - # prometheus-api-client - # requests-oauthlib - # snafu (setup.cfg) -requests-oauthlib==1.3.0 - # via - # -r requirements/py38-reqs/install.txt - # kubernetes -rsa==4.8 - # via - # -r requirements/py38-reqs/install.txt - # google-auth -ruamel.yaml==0.17.20 - # via - # -r requirements/py38-reqs/install.txt - # openshift -ruamel.yaml.clib==0.2.6 - # via - # -r requirements/py38-reqs/install.txt - # ruamel.yaml -s3transfer==0.5.0 - # via - # -r requirements/py38-reqs/install.txt - # boto3 -scipy==1.7.3 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -six==1.16.0 - # via - # -r requirements/py38-reqs/install.txt - # google-auth - # kubernetes - # openshift - # python-dateutil - # tox - # virtualenv -statistics==1.0.3.5 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -toml==0.10.2 - # via - # pytest - # tox -tomli==2.0.0 - # via coverage -tox==3.24.5 - # via snafu (setup.cfg) -ttp==0.8.4 - # via - # -r requirements/py38-reqs/install.txt - # snafu (setup.cfg) -tzdata==2021.5 - # via - # -r requirements/py38-reqs/install.txt - # pytz-deprecation-shim -tzlocal==4.1 - # via - # -r requirements/py38-reqs/install.txt - # dateparser -urllib3==1.26.8 - # via - # -r requirements/py38-reqs/install.txt - # botocore - # elasticsearch - # kubernetes - # requests -virtualenv==20.13.0 - # via tox -websocket-client==1.2.3 - # via - # -r requirements/py38-reqs/install.txt - # kubernetes -wrapt==1.13.3 - # via - # -r requirements/py38-reqs/install.txt - # deprecated -zipp==3.7.0 - # via - # -r requirements/py38-reqs/install.txt - # importlib-metadata - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/requirements/py39-reqs/docs.txt b/requirements/py39-reqs/docs.txt deleted file mode 100644 index 6696f013..00000000 --- a/requirements/py39-reqs/docs.txt +++ /dev/null @@ -1,478 +0,0 @@ -# -# This file is autogenerated by pip-compile with python 3.9 -# To update, run: -# -# pip-compile --extra=docs --output-file=requirements/py39-reqs/docs.txt requirements/py39-reqs/install.txt setup.cfg -# -alabaster==0.7.12 - # via sphinx -argon2-cffi==21.3.0 - # via notebook -argon2-cffi-bindings==21.2.0 - # via argon2-cffi -asttokens==2.0.5 - # via stack-data -attrs==21.4.0 - # via - # jsonschema - # markdown-it-py -babel==2.9.1 - # via sphinx -backcall==0.2.0 - # via ipython -black==21.12b0 - # via ipython -bleach==4.1.0 - # via nbconvert -boto3==1.20.41 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -botocore==1.23.41 - # via - # -r requirements/py39-reqs/install.txt - # boto3 - # s3transfer -cachetools==4.2.4 - # via - # -r requirements/py39-reqs/install.txt - # google-auth -certifi==2021.10.8 - # via - # -r requirements/py39-reqs/install.txt - # elasticsearch - # kubernetes - # requests -cffi==1.15.0 - # via argon2-cffi-bindings -charset-normalizer==2.0.10 - # via - # -r requirements/py39-reqs/install.txt - # requests -click==8.0.3 - # via black -configargparse==1.5.3 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -configparser==5.2.0 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -dataclasses==0.6 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -dateparser==1.1.0 - # via - # -r requirements/py39-reqs/install.txt - # prometheus-api-client -debugpy==1.5.1 - # via ipykernel -decorator==5.1.1 - # via ipython -defusedxml==0.7.1 - # via nbconvert -deprecated==1.2.13 - # via - # -r requirements/py39-reqs/install.txt - # redis -dictdiffer==0.9.0 - # via - # -r requirements/py39-reqs/install.txt - # openshift -distro==1.6.0 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -docutils==0.16 - # via - # -r requirements/py39-reqs/install.txt - # myst-parser - # nbsphinx - # snafu (setup.cfg) - # sphinx - # sphinx-rtd-theme - # statistics -elasticsearch==7.13.4 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -entrypoints==0.3 - # via - # jupyter-client - # nbconvert -executing==0.8.2 - # via stack-data -flent==2.0.1 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -google-auth==2.3.3 - # via - # -r requirements/py39-reqs/install.txt - # kubernetes -idna==3.3 - # via - # -r requirements/py39-reqs/install.txt - # requests -imagesize==1.3.0 - # via sphinx -importlib-metadata==4.10.1 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) - # sphinx -ipykernel==6.7.0 - # via - # notebook - # snafu (setup.cfg) -ipython==8.0.1 - # via - # ipykernel - # snafu (setup.cfg) -ipython-genutils==0.2.0 - # via - # nbformat - # notebook -jedi==0.18.1 - # via ipython -jinja2==3.0.3 - # via - # -r requirements/py39-reqs/install.txt - # myst-parser - # nbconvert - # nbsphinx - # notebook - # openshift - # sphinx -jmespath==0.10.0 - # via - # -r requirements/py39-reqs/install.txt - # boto3 - # botocore -jsonschema==4.4.0 - # via nbformat -jupyter-client==7.1.2 - # via - # ipykernel - # nbclient - # notebook -jupyter-core==4.9.1 - # via - # jupyter-client - # nbconvert - # nbformat - # notebook -jupyterlab-pygments==0.1.2 - # via nbconvert -kafka-python==2.0.2 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -kubernetes==11.0.0 - # via - # -r requirements/py39-reqs/install.txt - # openshift - # snafu (setup.cfg) -markdown-it-py==2.0.0 - # via - # mdit-py-plugins - # myst-parser -markupsafe==2.0.1 - # via - # -r requirements/py39-reqs/install.txt - # jinja2 -matplotlib-inline==0.1.3 - # via - # ipykernel - # ipython -mdit-py-plugins==0.3.0 - # via myst-parser -mdurl==0.1.0 - # via markdown-it-py -mistune==0.8.4 - # via nbconvert -mypy-extensions==0.4.3 - # via black -myst-parser==0.16.1 - # via snafu (setup.cfg) -nbclient==0.5.10 - # via nbconvert -nbconvert==6.5.1 - # via - # nbsphinx - # notebook -nbformat==5.1.3 - # via - # nbclient - # nbconvert - # nbsphinx - # notebook -nbsphinx==0.8.8 - # via snafu (setup.cfg) -nest-asyncio==1.5.4 - # via - # ipykernel - # jupyter-client - # nbclient - # notebook -notebook==6.4.12 - # via snafu (setup.cfg) -numpy==1.22.1 - # via - # -r requirements/py39-reqs/install.txt - # pandas - # prometheus-api-client - # scipy - # snafu (setup.cfg) -oauthlib==3.1.1 - # via - # -r requirements/py39-reqs/install.txt - # requests-oauthlib -openshift==0.11 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -packaging==21.3 - # via - # -r requirements/py39-reqs/install.txt - # bleach - # redis - # snafu (setup.cfg) - # sphinx -pandas==1.4.0 - # via - # -r requirements/py39-reqs/install.txt - # prometheus-api-client -pandoc==2.0.1 - # via snafu (setup.cfg) -pandocfilters==1.5.0 - # via nbconvert -parso==0.8.3 - # via jedi -pathspec==0.9.0 - # via black -pexpect==4.8.0 - # via ipython -pickleshare==0.7.5 - # via ipython -platformdirs==2.4.1 - # via black -plumbum==1.7.2 - # via pandoc -ply==3.11 - # via pandoc -prometheus-api-client==0.5.0 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -prometheus-client==0.12.0 - # via notebook -prompt-toolkit==3.0.24 - # via ipython -ptyprocess==0.7.0 - # via - # pexpect - # terminado -pure-eval==0.2.2 - # via stack-data -pyasn1==0.4.8 - # via - # -r requirements/py39-reqs/install.txt - # pyasn1-modules - # rsa -pyasn1-modules==0.2.8 - # via - # -r requirements/py39-reqs/install.txt - # google-auth -pycparser==2.21 - # via cffi -pygments==2.11.2 - # via - # ipython - # jupyterlab-pygments - # nbconvert - # sphinx -pyparsing==3.0.7 - # via - # -r requirements/py39-reqs/install.txt - # packaging -pyrsistent==0.18.1 - # via jsonschema -python-dateutil==2.8.2 - # via - # -r requirements/py39-reqs/install.txt - # botocore - # dateparser - # jupyter-client - # kubernetes - # pandas - # snafu (setup.cfg) -python-string-utils==1.0.0 - # via - # -r requirements/py39-reqs/install.txt - # openshift -pytz==2021.3 - # via - # -r requirements/py39-reqs/install.txt - # babel - # dateparser - # pandas -pytz-deprecation-shim==0.1.0.post0 - # via - # -r requirements/py39-reqs/install.txt - # tzlocal -pyyaml==6.0 - # via - # -r requirements/py39-reqs/install.txt - # kubernetes - # myst-parser - # snafu (setup.cfg) -pyzmq==22.3.0 - # via - # jupyter-client - # notebook -redis==4.1.1 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -regex==2022.1.18 - # via - # -r requirements/py39-reqs/install.txt - # dateparser -requests==2.27.1 - # via - # -r requirements/py39-reqs/install.txt - # kubernetes - # prometheus-api-client - # requests-oauthlib - # snafu (setup.cfg) - # sphinx -requests-oauthlib==1.3.0 - # via - # -r requirements/py39-reqs/install.txt - # kubernetes -rsa==4.8 - # via - # -r requirements/py39-reqs/install.txt - # google-auth -ruamel.yaml==0.17.20 - # via - # -r requirements/py39-reqs/install.txt - # openshift -ruamel.yaml.clib==0.2.6 - # via - # -r requirements/py39-reqs/install.txt - # ruamel.yaml -s3transfer==0.5.0 - # via - # -r requirements/py39-reqs/install.txt - # boto3 -scipy==1.7.3 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -send2trash==1.8.0 - # via notebook -six==1.16.0 - # via - # -r requirements/py39-reqs/install.txt - # asttokens - # bleach - # google-auth - # kubernetes - # openshift - # python-dateutil -snowballstemmer==2.2.0 - # via sphinx -sphinx==4.4.0 - # via - # myst-parser - # nbsphinx - # snafu (setup.cfg) - # sphinx-rtd-theme -sphinx-rtd-theme==1.0.0 - # via snafu (setup.cfg) -sphinxcontrib-applehelp==1.0.2 - # via sphinx -sphinxcontrib-devhelp==1.0.2 - # via sphinx -sphinxcontrib-htmlhelp==2.0.0 - # via sphinx -sphinxcontrib-jsmath==1.0.1 - # via sphinx -sphinxcontrib-qthelp==1.0.3 - # via sphinx -sphinxcontrib-serializinghtml==1.1.5 - # via sphinx -stack-data==0.1.4 - # via ipython -statistics==1.0.3.5 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -terminado==0.12.1 - # via notebook -testpath==0.5.0 - # via nbconvert -tomli==1.2.3 - # via black -tornado==6.1 - # via - # ipykernel - # jupyter-client - # notebook - # terminado -traitlets==5.1.1 - # via - # ipykernel - # ipython - # jupyter-client - # jupyter-core - # matplotlib-inline - # nbclient - # nbconvert - # nbformat - # nbsphinx - # notebook -ttp==0.8.4 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -typing-extensions==4.0.1 - # via black -tzdata==2021.5 - # via - # -r requirements/py39-reqs/install.txt - # pytz-deprecation-shim -tzlocal==4.1 - # via - # -r requirements/py39-reqs/install.txt - # dateparser -urllib3==1.26.8 - # via - # -r requirements/py39-reqs/install.txt - # botocore - # elasticsearch - # kubernetes - # requests -wcwidth==0.2.5 - # via prompt-toolkit -webencodings==0.5.1 - # via bleach -websocket-client==1.2.3 - # via - # -r requirements/py39-reqs/install.txt - # kubernetes -wrapt==1.13.3 - # via - # -r requirements/py39-reqs/install.txt - # deprecated -zipp==3.7.0 - # via - # -r requirements/py39-reqs/install.txt - # importlib-metadata - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/requirements/py39-reqs/install.txt b/requirements/py39-reqs/install.txt deleted file mode 100644 index 1d2ad091..00000000 --- a/requirements/py39-reqs/install.txt +++ /dev/null @@ -1,159 +0,0 @@ -# -# This file is autogenerated by pip-compile with python 3.9 -# To update, run: -# -# pip-compile --output-file=requirements/py39-reqs/install.txt setup.cfg -# -boto3==1.20.41 - # via snafu (setup.cfg) -botocore==1.23.41 - # via - # boto3 - # s3transfer -cachetools==4.2.4 - # via google-auth -certifi==2021.10.8 - # via - # elasticsearch - # kubernetes - # requests -charset-normalizer==2.0.10 - # via requests -configargparse==1.5.3 - # via snafu (setup.cfg) -configparser==5.2.0 - # via snafu (setup.cfg) -dataclasses==0.6 - # via snafu (setup.cfg) -dateparser==1.1.0 - # via prometheus-api-client -deprecated==1.2.13 - # via redis -dictdiffer==0.9.0 - # via openshift -distro==1.6.0 - # via snafu (setup.cfg) -docutils==0.16 - # via - # snafu (setup.cfg) - # statistics -elasticsearch==7.13.4 - # via snafu (setup.cfg) -flent==2.0.1 - # via snafu (setup.cfg) -google-auth==2.3.3 - # via kubernetes -idna==3.3 - # via requests -importlib-metadata==4.10.1 - # via snafu (setup.cfg) -jinja2==3.0.3 - # via openshift -jmespath==0.10.0 - # via - # boto3 - # botocore -kafka-python==2.0.2 - # via snafu (setup.cfg) -kubernetes==11.0.0 - # via - # openshift - # snafu (setup.cfg) -markupsafe==2.0.1 - # via jinja2 -numpy==1.22.1 - # via - # pandas - # prometheus-api-client - # scipy - # snafu (setup.cfg) -oauthlib==3.1.1 - # via requests-oauthlib -openshift==0.11 - # via snafu (setup.cfg) -packaging==21.3 - # via - # redis - # snafu (setup.cfg) -pandas==1.4.0 - # via prometheus-api-client -prometheus-api-client==0.5.0 - # via snafu (setup.cfg) -pyasn1==0.4.8 - # via - # pyasn1-modules - # rsa -pyasn1-modules==0.2.8 - # via google-auth -pyparsing==3.0.7 - # via packaging -python-dateutil==2.8.2 - # via - # botocore - # dateparser - # kubernetes - # pandas - # snafu (setup.cfg) -python-string-utils==1.0.0 - # via openshift -pytz==2021.3 - # via - # dateparser - # pandas -pytz-deprecation-shim==0.1.0.post0 - # via tzlocal -pyyaml==6.0 - # via - # kubernetes - # snafu (setup.cfg) -redis==4.1.1 - # via snafu (setup.cfg) -regex==2022.1.18 - # via dateparser -requests==2.27.1 - # via - # kubernetes - # prometheus-api-client - # requests-oauthlib - # snafu (setup.cfg) -requests-oauthlib==1.3.0 - # via kubernetes -rsa==4.8 - # via google-auth -ruamel.yaml==0.17.20 - # via openshift -ruamel.yaml.clib==0.2.6 - # via ruamel.yaml -s3transfer==0.5.0 - # via boto3 -scipy==1.7.3 - # via snafu (setup.cfg) -six==1.16.0 - # via - # google-auth - # kubernetes - # openshift - # python-dateutil -statistics==1.0.3.5 - # via snafu (setup.cfg) -ttp==0.8.4 - # via snafu (setup.cfg) -tzdata==2021.5 - # via pytz-deprecation-shim -tzlocal==4.1 - # via dateparser -urllib3==1.26.8 - # via - # botocore - # elasticsearch - # kubernetes - # requests -websocket-client==1.2.3 - # via kubernetes -wrapt==1.13.3 - # via deprecated -zipp==3.7.0 - # via importlib-metadata - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/requirements/py39-reqs/tests.txt b/requirements/py39-reqs/tests.txt deleted file mode 100644 index 05d85dd3..00000000 --- a/requirements/py39-reqs/tests.txt +++ /dev/null @@ -1,297 +0,0 @@ -# -# This file is autogenerated by pip-compile with python 3.9 -# To update, run: -# -# pip-compile --extra=tests --output-file=requirements/py39-reqs/tests.txt requirements/py39-reqs/install.txt setup.cfg -# -attrs==21.4.0 - # via pytest -boto3==1.20.41 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -botocore==1.23.41 - # via - # -r requirements/py39-reqs/install.txt - # boto3 - # s3transfer -cachetools==4.2.4 - # via - # -r requirements/py39-reqs/install.txt - # google-auth -certifi==2021.10.8 - # via - # -r requirements/py39-reqs/install.txt - # elasticsearch - # kubernetes - # requests -charset-normalizer==2.0.10 - # via - # -r requirements/py39-reqs/install.txt - # requests -configargparse==1.5.3 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -configparser==5.2.0 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -coverage[toml]==6.2 - # via pytest-cov -dataclasses==0.6 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -dateparser==1.1.0 - # via - # -r requirements/py39-reqs/install.txt - # prometheus-api-client -deprecated==1.2.13 - # via - # -r requirements/py39-reqs/install.txt - # redis -dictdiffer==0.9.0 - # via - # -r requirements/py39-reqs/install.txt - # openshift -distlib==0.3.4 - # via virtualenv -distro==1.6.0 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -docutils==0.16 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) - # statistics -elasticsearch==7.13.4 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -filelock==3.4.2 - # via - # tox - # virtualenv -flent==2.0.1 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -google-auth==2.3.3 - # via - # -r requirements/py39-reqs/install.txt - # kubernetes -idna==3.3 - # via - # -r requirements/py39-reqs/install.txt - # requests -importlib-metadata==4.10.1 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -iniconfig==1.1.1 - # via pytest -jinja2==3.0.3 - # via - # -r requirements/py39-reqs/install.txt - # openshift -jmespath==0.10.0 - # via - # -r requirements/py39-reqs/install.txt - # boto3 - # botocore -kafka-python==2.0.2 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -kubernetes==11.0.0 - # via - # -r requirements/py39-reqs/install.txt - # openshift - # snafu (setup.cfg) -markupsafe==2.0.1 - # via - # -r requirements/py39-reqs/install.txt - # jinja2 -numpy==1.22.1 - # via - # -r requirements/py39-reqs/install.txt - # pandas - # prometheus-api-client - # scipy - # snafu (setup.cfg) -oauthlib==3.1.1 - # via - # -r requirements/py39-reqs/install.txt - # requests-oauthlib -openshift==0.11 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -packaging==21.3 - # via - # -r requirements/py39-reqs/install.txt - # pytest - # redis - # snafu (setup.cfg) - # tox -pandas==1.4.0 - # via - # -r requirements/py39-reqs/install.txt - # prometheus-api-client -platformdirs==2.4.1 - # via virtualenv -pluggy==1.0.0 - # via - # pytest - # tox -prometheus-api-client==0.5.0 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -py==1.11.0 - # via - # pytest - # tox -pyasn1==0.4.8 - # via - # -r requirements/py39-reqs/install.txt - # pyasn1-modules - # rsa -pyasn1-modules==0.2.8 - # via - # -r requirements/py39-reqs/install.txt - # google-auth -pyparsing==3.0.7 - # via - # -r requirements/py39-reqs/install.txt - # packaging -pytest==6.2.5 - # via - # pytest-cov - # snafu (setup.cfg) -pytest-cov==3.0.0 - # via snafu (setup.cfg) -python-dateutil==2.8.2 - # via - # -r requirements/py39-reqs/install.txt - # botocore - # dateparser - # kubernetes - # pandas - # snafu (setup.cfg) -python-string-utils==1.0.0 - # via - # -r requirements/py39-reqs/install.txt - # openshift -pytz==2021.3 - # via - # -r requirements/py39-reqs/install.txt - # dateparser - # pandas -pytz-deprecation-shim==0.1.0.post0 - # via - # -r requirements/py39-reqs/install.txt - # tzlocal -pyyaml==6.0 - # via - # -r requirements/py39-reqs/install.txt - # kubernetes - # snafu (setup.cfg) -redis==4.1.1 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -regex==2022.1.18 - # via - # -r requirements/py39-reqs/install.txt - # dateparser -requests==2.27.1 - # via - # -r requirements/py39-reqs/install.txt - # kubernetes - # prometheus-api-client - # requests-oauthlib - # snafu (setup.cfg) -requests-oauthlib==1.3.0 - # via - # -r requirements/py39-reqs/install.txt - # kubernetes -rsa==4.8 - # via - # -r requirements/py39-reqs/install.txt - # google-auth -ruamel.yaml==0.17.20 - # via - # -r requirements/py39-reqs/install.txt - # openshift -ruamel.yaml.clib==0.2.6 - # via - # -r requirements/py39-reqs/install.txt - # ruamel.yaml -s3transfer==0.5.0 - # via - # -r requirements/py39-reqs/install.txt - # boto3 -scipy==1.7.3 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -six==1.16.0 - # via - # -r requirements/py39-reqs/install.txt - # google-auth - # kubernetes - # openshift - # python-dateutil - # tox - # virtualenv -statistics==1.0.3.5 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -toml==0.10.2 - # via - # pytest - # tox -tomli==2.0.0 - # via coverage -tox==3.24.5 - # via snafu (setup.cfg) -ttp==0.8.4 - # via - # -r requirements/py39-reqs/install.txt - # snafu (setup.cfg) -tzdata==2021.5 - # via - # -r requirements/py39-reqs/install.txt - # pytz-deprecation-shim -tzlocal==4.1 - # via - # -r requirements/py39-reqs/install.txt - # dateparser -urllib3==1.26.8 - # via - # -r requirements/py39-reqs/install.txt - # botocore - # elasticsearch - # kubernetes - # requests -virtualenv==20.13.0 - # via tox -websocket-client==1.2.3 - # via - # -r requirements/py39-reqs/install.txt - # kubernetes -wrapt==1.13.3 - # via - # -r requirements/py39-reqs/install.txt - # deprecated -zipp==3.7.0 - # via - # -r requirements/py39-reqs/install.txt - # importlib-metadata - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/setup.cfg b/setup.cfg index a8c8138a..8c892b27 100644 --- a/setup.cfg +++ b/setup.cfg @@ -21,9 +21,9 @@ zip_safe = False packages = find: include_package_data = True # Add here dependencies of your project (semicolon/line-separated), e.g. -install_requires = docutils<0.17; dataclasses; configargparse; configparser; elasticsearch>=7.0.0,<7.14.0; statistics; numpy<=1.26.4; pyyaml; requests; redis; python-dateutil>=2.7.3; prometheus_api_client; scipy; openshift==0.11; kubernetes==11; setuptools>=40.3.0; boto3; flent; importlib_metadata; kafka-python; ttp; packaging; distro +install_requires = docutils; configargparse; configparser; elasticsearch>=7.0.0; statistics; numpy; pyyaml; requests; redis; python-dateutil>=2.7.3; prometheus_api_client; scipy; openshift; kubernetes; setuptools>=40.3.0; boto3; flent; kafka-python; ttp; packaging; distro # Require a specific Python version, e.g. Python 2.7 or >= 3.4 -python_requires = >=3.6 +python_requires = >=3.11 [options.extras_require] # Add here additional requirements for extra features, to install with: diff --git a/snafu/benchmarks/_benchmark.py b/snafu/benchmarks/_benchmark.py index dcbec5f4..b8aef625 100644 --- a/snafu/benchmarks/_benchmark.py +++ b/snafu/benchmarks/_benchmark.py @@ -2,8 +2,9 @@ """Base benchmark tools.""" import logging from abc import ABC, abstractmethod +from collections.abc import Iterable from dataclasses import dataclass -from typing import Any, Dict, Iterable +from typing import Any from snafu import registry from snafu.config import Config, ConfigArgument, FuncAction @@ -31,16 +32,16 @@ class BenchmarkResult: """ name: str - metadata: Dict[str, Any] - config: Dict[str, Any] - data: Dict[str, Any] - labels: Dict[str, Any] + metadata: dict[str, Any] + config: dict[str, Any] + data: dict[str, Any] + labels: dict[str, Any] tag: str - def to_jsonable(self) -> Dict[str, Any]: + def to_jsonable(self) -> dict[str, Any]: """Transform dataclass into exportable JSON doc.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result.update(self.config) result.update(self.data) result.update(self.metadata) @@ -61,7 +62,7 @@ class LabelParserAction(FuncAction): """ @staticmethod - def func(arg: str) -> Dict[str, str]: + def func(arg: str) -> dict[str, str]: """Parse given arg by splitting on ',', then on '='.""" labels = {} for pair in arg.strip().split(","): @@ -110,21 +111,21 @@ def __init__(self): self.config.populate_parser(self._common_args) self.config.populate_parser(self.args) - def get_metadata(self) -> Dict[str, str]: + def get_metadata(self) -> dict[str, str]: """ Get metadata dictionary Uses the metadata attribute as a list of keys to pull from the config. """ - metadata: Dict[str, str] = {} + metadata: dict[str, str] = {} for key in self.metadata: value = getattr(self.config, key, None) if value is not None: metadata[key] = value return metadata - def create_new_result(self, data: Dict[str, Any], config: Dict[str, Any], tag: str) -> BenchmarkResult: + def create_new_result(self, data: dict[str, Any], config: dict[str, Any], tag: str) -> BenchmarkResult: """Shortcut method for creating a new :py:class:`BenchmarkResult` instance.""" result = BenchmarkResult( name=self.tool_name, diff --git a/snafu/benchmarks/_load_benchmarks.py b/snafu/benchmarks/_load_benchmarks.py index dfd3605d..fc0510d6 100644 --- a/snafu/benchmarks/_load_benchmarks.py +++ b/snafu/benchmarks/_load_benchmarks.py @@ -12,18 +12,17 @@ import traceback from dataclasses import dataclass from types import TracebackType -from typing import Dict, List, Tuple, Type, Union -_ExcInfoType = Union[Tuple[Type[BaseException], BaseException, TracebackType], Tuple[None, None, None]] +_ExcInfoType = tuple[type[BaseException], BaseException, TracebackType] | tuple[None, None, None] @dataclass class DetectedBenchmarks: """Dataclass representation of benchmark modules that were detected and attempted to be imported.""" - imported: List[str] - failed: List[str] - errors: Dict[str, _ExcInfoType] + imported: list[str] + failed: list[str] + errors: dict[str, _ExcInfoType] def log(self, logger: logging.Logger, level: int = logging.DEBUG, show_tb: bool = False) -> None: """ diff --git a/snafu/benchmarks/coremarkpro/Dockerfile b/snafu/benchmarks/coremarkpro/Dockerfile index 48f67575..3bc36b16 100644 --- a/snafu/benchmarks/coremarkpro/Dockerfile +++ b/snafu/benchmarks/coremarkpro/Dockerfile @@ -1,12 +1,12 @@ -FROM registry.access.redhat.com/ubi8:latest +FROM registry.access.redhat.com/ubi9:latest MAINTAINER Ed Chong RUN dnf install -y --nodocs make git gcc && dnf clean all RUN git clone https://github.com/eembc/coremark-pro.git && cd coremark-pro && ls util/make && make TARGET=linux64 build WORKDIR /output/ -RUN dnf install -y --nodocs python3.8 python38-devel procps-ng iproute net-tools ethtool nmap iputils && dnf clean all +RUN dnf install -y --nodocs python3.11 python3.11-devel procps-ng iproute net-tools ethtool nmap iputils && dnf clean all RUN ln -s /usr/bin/python3 /usr/bin/python RUN pip3 install --upgrade pip COPY . /opt/snafu -RUN pip3 install -r /opt/snafu/requirements/py38-reqs/install.txt -e /opt/snafu +RUN pip3 install -e /opt/snafu diff --git a/snafu/benchmarks/coremarkpro/coremarkpro.py b/snafu/benchmarks/coremarkpro/coremarkpro.py index 38dae56f..9f4da4bd 100644 --- a/snafu/benchmarks/coremarkpro/coremarkpro.py +++ b/snafu/benchmarks/coremarkpro/coremarkpro.py @@ -3,8 +3,8 @@ import re import shlex import uuid +from collections.abc import Iterable from datetime import datetime -from typing import Dict, Iterable, List from dateutil import tz @@ -75,11 +75,11 @@ class Coremarkpro(Benchmark): ), ) - result_config: Dict = {} + result_config: dict = {} """ Helper functions""" - def build_workload_cmd(self) -> List[str]: + def build_workload_cmd(self) -> list[str]: """ Builds the command line arguments needed to run CoreMark Pro """ @@ -108,7 +108,7 @@ def create_raw_results(self) -> Iterable[BenchmarkResult]: types = [str, str, str, int, int, int, float, int, float, int, int] with open(self.config.path + self.config.result_name + ".log", encoding="utf-8") as file: - results = [] + results: list[dict] = [] prev_run_type = "" run_type = "" run_index = 0 diff --git a/snafu/benchmarks/nighthawk/Dockerfile b/snafu/benchmarks/nighthawk/Dockerfile index 544ff130..9151b165 100644 --- a/snafu/benchmarks/nighthawk/Dockerfile +++ b/snafu/benchmarks/nighthawk/Dockerfile @@ -2,7 +2,7 @@ ARG BASE_IMAGE=quay.io/cloud-bulldozer/nighthawk-base:latest FROM ${BASE_IMAGE} RUN apt-get update && apt-get install -y software-properties-common gcc && \ add-apt-repository -y ppa:deadsnakes/ppa -RUN apt-get update && apt-get install -y python3.6 python3-distutils python3-pip python3-apt +RUN apt-get update && apt-get install -y python3.11 python3-distutils python3-pip python3-apt RUN apt-get update && apt-get install -y redis-server RUN ln -s /usr/bin/python3 /usr/bin/python RUN mkdir -p /opt/snafu/ diff --git a/snafu/benchmarks/nighthawk/README.md b/snafu/benchmarks/nighthawk/README.md index 7060606a..76b08e77 100644 --- a/snafu/benchmarks/nighthawk/README.md +++ b/snafu/benchmarks/nighthawk/README.md @@ -43,4 +43,4 @@ ENV LogLevel "info" COPY * /usr/bin/ ``` -6. Now build the docker file and save the image to your desired image repository. \ No newline at end of file +6. Now build the docker file and save the image to your desired image repository. diff --git a/snafu/benchmarks/nighthawk/__init__.py b/snafu/benchmarks/nighthawk/__init__.py index 89c110b0..6ea08595 100644 --- a/snafu/benchmarks/nighthawk/__init__.py +++ b/snafu/benchmarks/nighthawk/__init__.py @@ -1,6 +1,4 @@ #!/usr/bin/env python3 -# -*- coding: utf-8 -*- # flake8: noqa """nighthawk benchmark""" from snafu.benchmarks.nighthawk.nighthawk import Nighthawk - diff --git a/snafu/benchmarks/nighthawk/nighthawk.py b/snafu/benchmarks/nighthawk/nighthawk.py index 76a6bdf5..0455de82 100644 --- a/snafu/benchmarks/nighthawk/nighthawk.py +++ b/snafu/benchmarks/nighthawk/nighthawk.py @@ -1,12 +1,17 @@ #!/usr/bin/env python3 -# -*- coding: utf-8 -*- -"""Wrapper for running the nighthawk workload. See https://github.com/envoyproxy/nighthawk for more information.""" +"""Wrapper for running the nighthawk workload. + +See https://github.com/envoyproxy/nighthawk for more information. +""" import dataclasses import json import os import socket import subprocess -from typing import Any, Dict, Iterable, List, Optional +import sys +from collections.abc import Iterable +from typing import Any + from snafu.benchmarks import Benchmark, BenchmarkResult from snafu.config import Config, ConfigArgument @@ -20,7 +25,7 @@ class NighthawkStat: user: str cluster_name: str duration: int - targets: List[str] + targets: list[str] concurrency: int connections: int max_requests_per_connection: int @@ -43,26 +48,26 @@ class NighthawkStat: timestamp: str bytes_in: float bytes_out: float - iteration: Optional[int] = None + iteration: int | None = None @dataclasses.dataclass class NighthawkConfig: """Container for common configuration options that are passed to Nighthawk.""" - concurrency: Optional[int] = None - duration: Optional[int] = None - connections: Optional[int] = None - max_requests_per_connection: Optional[int] = None - rps: Optional[int] = None - kind: Optional[str] = None - url: Optional[str] = None + concurrency: int | None = None + duration: int | None = None + connections: int | None = None + max_requests_per_connection: int | None = None + rps: int | None = None + kind: str | None = None + url: str | None = None @classmethod def new(cls, stdout: NighthawkStat, config: Config): """Create a new instance given instances of :py:mod:`~snafu.config.Config` and NighthawkStat.""" - kwargs: Dict[str, Any] = {} + kwargs: dict[str, Any] = {} for fields in dataclasses.fields(cls): val = getattr(stdout, fields.name, None) if val is None: @@ -101,43 +106,48 @@ class Nighthawk(Benchmark): required=True, ), ConfigArgument( - "--rps", - dest="rps", - env_var="RPS", - help="The target requests-per-second rate", - default=5, - type=int), + "--rps", + dest="rps", + env_var="RPS", + help="The target requests-per-second rate", + default=5, + type=int, + ), ConfigArgument( - "--max_requests_per_connection", - dest="max_requests_per_connection", - env_var="MAX_REQUESTS_PER_CONNECTION", + "--max_requests_per_connection", + dest="max_requests_per_connection", + env_var="MAX_REQUESTS_PER_CONNECTION", help="Max requests per connection", - default=4294937295, - type=int), + default=4294937295, + type=int, + ), ConfigArgument( - "--connections", - dest="connections", - env_var="CONNECTIONS", + "--connections", + dest="connections", + env_var="CONNECTIONS", help="The maximum allowed number of concurrent connections per event loop", - default=100, - type=int), + default=100, + type=int, + ), ConfigArgument( - "--duration", - dest="duration", - env_var="DURATION", - help="The number of seconds that the test should run", - default=60, - type=int), + "--duration", + dest="duration", + env_var="DURATION", + help="The number of seconds that the test should run", + default=60, + type=int, + ), ConfigArgument( - "--concurrency", - dest="concurrency", - env_var="CONCURRENCY", - help="The number of concurrent event loops that should be used. Specify 'auto' to "\ - "let Nighthawk leverage all vCPUs that have affinity to the Nighthawk process"\ - ". Note that increasing this results in an effective load multiplier combined"\ - " with the configured --rps and --connections values", - default=1, - type=int), + "--concurrency", + dest="concurrency", + env_var="CONCURRENCY", + help="The number of concurrent event loops that should be used. Specify 'auto' to " + "let Nighthawk leverage all vCPUs that have affinity to the Nighthawk process" + ". Note that increasing this results in an effective load multiplier combined" + " with the configured --rps and --connections values", + default=1, + type=int, + ), ) def setup(self) -> bool: @@ -160,17 +170,18 @@ def _parse_stdout(self) -> NighthawkStat: NighthawkStat """ - data = json.load(open("nighthawk.json")) + with open("nighthawk.json", encoding="utf-8") as f: + data = json.load(f) # populating latency in milliseconds and throughput as queries per second. - latency_percentiles = {} - duration_histogram = data['DurationHistogram'] - for each_percentile in duration_histogram['Percentiles']: - percentile = str(each_percentile['Percentile']) - if percentile not in latency_percentiles.keys(): + latency_percentiles: dict[str, float] = {} + duration_histogram = data["DurationHistogram"] + for each_percentile in duration_histogram["Percentiles"]: + percentile = str(each_percentile["Percentile"]) + if percentile not in latency_percentiles: latency_percentiles[percentile] = 0 - latency_percentiles[percentile] += each_percentile['Value'] * 1000 - - status_codes = { "1xx": 0, "2xx": 0, "3xx": 0, "4xx": 0, "5xx": 0 } + latency_percentiles[percentile] += each_percentile["Value"] * 1000 + + status_codes = {"1xx": 0, "2xx": 0, "3xx": 0, "4xx": 0, "5xx": 0} for key, value in data["RetCodes"].items(): status_code = int(key) request_count = int(value) @@ -196,7 +207,7 @@ def _parse_stdout(self) -> NighthawkStat: connections=self.config.connections, max_requests_per_connection=self.config.max_requests_per_connection, hostname=socket.gethostname(), - requested_qps=data['RequestedQPS'], + requested_qps=data["RequestedQPS"], throughput=data["ActualQPS"], status_codes_1xx=status_codes["1xx"], status_codes_2xx=status_codes["2xx"], @@ -210,10 +221,10 @@ def _parse_stdout(self) -> NighthawkStat: p95_latency=latency_percentiles.get("95", None), p99_latency=latency_percentiles.get("99", None), p99_9_latency=latency_percentiles.get("99.9", None), - avg_latency=duration_histogram['Avg'] * 1000, - timestamp=data['StartTime'], - bytes_in=float(data['BytesReceived']), - bytes_out=float(data['BytesSent']) + avg_latency=duration_histogram["Avg"] * 1000, + timestamp=data["StartTime"], + bytes_in=float(data["BytesReceived"]), + bytes_out=float(data["BytesSent"]), ) def _run_nighthawk(self): @@ -222,15 +233,15 @@ def _run_nighthawk(self): """ cmd = ( - "nighthawk_client --concurrency {0} --duration {1} --connections {2} " - "--max-requests-per-connection {3} --rps {4} --output-format fortio {5} > nighthawk.json" - ).format(self.config.concurrency, self.config.duration, self.config.connections, - self.config.max_requests_per_connection, self.config.rps, self.config.url) + f"nighthawk_client --concurrency {self.config.concurrency} --duration {self.config.duration} " + f"--connections {self.config.connections} --max-requests-per-connection " + f"{self.config.max_requests_per_connection} --rps {self.config.rps} " + f"--output-format fortio {self.config.url} > nighthawk.json" + ) self.logger.info(cmd) - p = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + p = subprocess.run(cmd, shell=True, capture_output=True, check=False) return p.stdout.strip().decode("utf-8"), p.stderr.strip().decode("utf-8"), p.returncode - def collect(self) -> Iterable[BenchmarkResult]: """ Run nighthawk benchmark ``self.config.samples`` number of times. @@ -242,13 +253,15 @@ def collect(self) -> Iterable[BenchmarkResult]: self.logger.info(f"Collecting {self.config.samples} sample{_plural} of Nighthawk") for s in range(1, self.config.samples + 1): - self.logger.info("Starting nighthawk sample %d out of %d with uuid %s" % (s, self.config.samples, self.config.uuid)) + self.logger.info( + f"Starting nighthawk sample {s} out of {self.config.samples} with uuid {self.config.uuid}" + ) stdout, stderr, rc = self._run_nighthawk() if rc: - self.logger.critical("Nighthawk failed with returncode %d, stopping benchmark" % rc) - self.logger.critical("stdout: %s" % stdout) - self.logger.critical("stderr: %s" % stderr) - exit(1) + self.logger.critical(f"Nighthawk failed with returncode {rc}, stopping benchmark") + self.logger.critical(f"stdout: {stdout}") + self.logger.critical(f"stderr: {stderr}") + sys.exit(1) parsed_data: NighthawkStat = self._parse_stdout() parsed_data.iteration = s config: NighthawkConfig = NighthawkConfig.new(parsed_data, self.config) @@ -256,15 +269,14 @@ def collect(self) -> Iterable[BenchmarkResult]: data=dataclasses.asdict(parsed_data), config=dataclasses.asdict(config), tag="results", - ) + ) yield result - self.logger.info(f"{'-'*50}") + self.logger.info(f"{'-' * 50}") self.logger.info(f"Got sample result: {result}") - self.logger.info(f"{'-'*50}") - self.logger.info("Finished executing nighthawk sample %d out of %d" % (s, self.config.samples)) + self.logger.info(f"{'-' * 50}") + self.logger.info(f"Finished executing nighthawk sample {s} out of {self.config.samples}") self.logger.info(f"Successfully collected {self.config.samples} sample{_plural} of nighthawk.") - @staticmethod - def cleanup() -> bool: + def cleanup(self) -> bool: """Nighthawk doesn't have any cleanup tasks, therefore this method just returns ``True``.""" return True diff --git a/snafu/benchmarks/systemd_analyze/Dockerfile b/snafu/benchmarks/systemd_analyze/Dockerfile index 3a1f0caa..b318989d 100644 --- a/snafu/benchmarks/systemd_analyze/Dockerfile +++ b/snafu/benchmarks/systemd_analyze/Dockerfile @@ -1,9 +1,8 @@ -FROM registry.access.redhat.com/ubi8:latest +FROM registry.access.redhat.com/ubi9:latest RUN dnf install -y --nodocs git python3-pip && dnf clean all -COPY snafu/image_resources/centos8-appstream.repo /etc/yum.repos.d/centos8-appstream.repo -RUN dnf install -y --nodocs redis --enablerepo=centos8-appstream && dnf clean all -RUN dnf install -y --nodocs hostname procps-ng iproute net-tools ethtool nmap iputils https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm && dnf clean all +RUN dnf install -y --nodocs redis && dnf clean all +RUN dnf install -y --nodocs hostname procps-ng iproute net-tools ethtool nmap iputils https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && dnf clean all RUN ln -s /usr/bin/python3 /usr/bin/python RUN mkdir -p /opt/snafu/ COPY . /opt/snafu/ diff --git a/snafu/benchmarks/systemd_analyze/systemd_analyze.py b/snafu/benchmarks/systemd_analyze/systemd_analyze.py index db0b7327..2c4ee636 100644 --- a/snafu/benchmarks/systemd_analyze/systemd_analyze.py +++ b/snafu/benchmarks/systemd_analyze/systemd_analyze.py @@ -6,7 +6,6 @@ import os import re import subprocess -from typing import List import distro @@ -22,8 +21,8 @@ class systemd_analyze(Benchmark): # pylint: disable=invalid-name """ tool_name = "systemd_analyze" - tc_values: List[str] = [] - td_values: List[str] = [] + tc_values: list[str] = [] + td_values: list[str] = [] # Test configuration lists tc_list = [ @@ -53,7 +52,6 @@ class systemd_analyze(Benchmark): # pylint: disable=invalid-name ) # pylint: disable=attribute-defined-outside-init def setup(self): # pylint: disable=too-many-branches - """ No arguments at this time. args = ( @@ -83,6 +81,7 @@ def setup(self): # pylint: disable=too-many-branches cpuinfo_out = subprocess.run(["lscpu"], stdout=subprocess.PIPE, check=False) cpuinfo_out = cpuinfo_out.stdout.decode("utf-8") # cpu model + model = None for line in cpuinfo_out.split("\n"): if "Model name:" in line: model = re.search("Model name.*:(.*)", cpuinfo_out).group(1) @@ -93,6 +92,7 @@ def setup(self): # pylint: disable=too-many-branches self.tc_values.insert(1, model.lstrip()) # number of cores + numcores = None for line in cpuinfo_out.split("\n"): if "CPU(s):" in line: numcores = re.search(r"CPU\(s\):(.*)", cpuinfo_out).group(1) @@ -103,6 +103,7 @@ def setup(self): # pylint: disable=too-many-branches self.tc_values.insert(2, numcores.strip()) # CPU max MHz + maxmhz = None for line in cpuinfo_out.split("\n"): if "CPU max MHz:" in line: maxmhz = re.search("CPU max MHz:(.*)", cpuinfo_out).group(1) @@ -131,6 +132,7 @@ def setup(self): # pylint: disable=too-many-branches distro_name = distro_name.replace(" ", "_") self.sa_config["test_config"]["distro"]["name"] = distro_name + clustername = "unknown" if "clustername" in os.environ: clustername = os.environ["clustername"] self.sa_config["test_config"]["platform"] = clustername + "_" + distro_name + "_" + self.short_curtime @@ -203,6 +205,7 @@ def get_sa_blame(self): # pylint: disable=missing-function-docstring minutes = re.search(r"(\d+)min", line) seconds = re.search(r"(\d+\.\d+)s", line) millisec = re.search(r"(\d+)ms", line) + etime = None if minutes and seconds: min_var = minutes[0].strip("min") sec = seconds[0].strip("s") diff --git a/snafu/benchmarks/uperf/Dockerfile b/snafu/benchmarks/uperf/Dockerfile index 8d68c880..f6725f04 100644 --- a/snafu/benchmarks/uperf/Dockerfile +++ b/snafu/benchmarks/uperf/Dockerfile @@ -1,9 +1,8 @@ -FROM registry.access.redhat.com/ubi8:latest +FROM registry.access.redhat.com/ubi9:latest RUN dnf install -y --nodocs git gcc python3-pip python3-devel && dnf clean all -COPY snafu/image_resources/centos8-appstream.repo /etc/yum.repos.d/centos8-appstream.repo -RUN dnf install -y --nodocs redis --enablerepo=centos8-appstream && dnf clean all -RUN dnf install -y --nodocs hostname procps-ng iproute net-tools ethtool nmap iputils https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm && dnf clean all +RUN dnf install -y --nodocs redis && dnf clean all +RUN dnf install -y --nodocs hostname procps-ng iproute net-tools ethtool nmap iputils https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && dnf clean all RUN dnf install -y uperf && dnf clean all RUN ln -s /usr/bin/python3 /usr/bin/python RUN mkdir -p /opt/snafu/ diff --git a/snafu/benchmarks/uperf/Dockerfile.ppc64le b/snafu/benchmarks/uperf/Dockerfile.ppc64le index 1769066c..92ed348a 100755 --- a/snafu/benchmarks/uperf/Dockerfile.ppc64le +++ b/snafu/benchmarks/uperf/Dockerfile.ppc64le @@ -1,9 +1,11 @@ -FROM registry.access.redhat.com/ubi8:latest +FROM registry.access.redhat.com/ubi9:latest -RUN dnf install -y --nodocs git python3 python3-pip gcc python3-devel gcc-c++ atlas-devel gcc-gfortran && dnf clean all -COPY snafu/image_resources/centos8-appstream.repo /etc/yum.repos.d/centos8-appstream.repo -RUN dnf install -y --nodocs redis --enablerepo=centos8-appstream && dnf clean all -RUN dnf install -y --nodocs hostname procps-ng iproute net-tools ethtool nmap iputils https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm && dnf clean all +COPY snafu/image_resources/centos9.repo /etc/yum.repos.d/centos9.repo +RUN dnf config-manager --set-enabled ubi-9-codeready-builder-rpms +RUN dnf install -y --nodocs git python3 python3-pip gcc python3-devel gcc-c++ gcc-gfortran && dnf clean all +RUN dnf install -y --enablerepo=centos9 --nodocs atlas-devel || dnf install -y --nodocs openblas-devel +RUN dnf install -y --nodocs redis && dnf clean all +RUN dnf install -y --nodocs hostname procps-ng iproute net-tools ethtool nmap iputils https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && dnf clean all RUN dnf install -y uperf && dnf clean all RUN ln -s /usr/bin/python3 /usr/bin/python RUN python3 -m pip install --upgrade cython numpy importlib_metadata 'urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1' && python3 -m pip install --upgrade scipy pandas diff --git a/snafu/benchmarks/uperf/uperf.py b/snafu/benchmarks/uperf/uperf.py index 3949faec..a9759fc4 100644 --- a/snafu/benchmarks/uperf/uperf.py +++ b/snafu/benchmarks/uperf/uperf.py @@ -5,7 +5,8 @@ import re import shlex import sys -from typing import Any, Dict, Iterable, List, Optional, Tuple, Union +from collections.abc import Iterable +from typing import Any import numpy as np @@ -18,7 +19,7 @@ class ParseRangeAction(FuncAction): """Parses node_range and density_range attributes.""" @staticmethod - def func(arg: str) -> List[int]: + def func(arg: str) -> list[int]: """Take the input argument, split by '-' and cast non-empty results into ints.""" return [int(x) for x in arg.split("-") if x != ""] @@ -43,50 +44,50 @@ class UperfStdout: we parse within the benchmark wrapper and store in this class. """ - results: Tuple[RawUperfStat, ...] + results: tuple[RawUperfStat, ...] duration: int - test_type: Optional[str] = None - protocol: Optional[str] = None - message_size: Optional[int] = None - read_message_size: Optional[int] = None - num_threads: Optional[int] = None + test_type: str | None = None + protocol: str | None = None + message_size: int | None = None + read_message_size: int | None = None + num_threads: int | None = None @dataclasses.dataclass class UperfConfig: """Container for common configuration options that are passed to Uperf.""" - test_type: Optional[str] = None - protocol: Optional[str] = None - message_size: Optional[int] = None - read_message_size: Optional[int] = None - num_threads: Optional[int] = None - duration: Optional[int] = None - kind: Optional[str] = None - hostnetwork: Optional[str] = None - remote_ip: Optional[str] = None - client_ips: Optional[str] = None - service_ip: Optional[str] = None - service_type: Optional[str] = None - port: Optional[str] = None - client_node: Optional[str] = None - server_node: Optional[str] = None - num_pairs: Optional[str] = None - multus_client: Optional[str] = None - networkpolicy: Optional[str] = None - density: Optional[str] = None - nodes_in_iter: Optional[str] = None - step_size: Optional[str] = None - colocate: Optional[str] = None - density_range: Optional[List[int]] = None - node_range: Optional[List[int]] = None - pod_id: Optional[str] = None + test_type: str | None = None + protocol: str | None = None + message_size: int | None = None + read_message_size: int | None = None + num_threads: int | None = None + duration: int | None = None + kind: str | None = None + hostnetwork: str | None = None + remote_ip: str | None = None + client_ips: str | None = None + service_ip: str | None = None + service_type: str | None = None + port: str | None = None + client_node: str | None = None + server_node: str | None = None + num_pairs: str | None = None + multus_client: str | None = None + networkpolicy: str | None = None + density: str | None = None + nodes_in_iter: str | None = None + step_size: str | None = None + colocate: str | None = None + density_range: list[int] | None = None + node_range: list[int] | None = None + pod_id: str | None = None @classmethod def new(cls, stdout: UperfStdout, config: Config): """Create a new instance given instances of :py:mod:`~snafu.config.Config` and UperfStdout.""" - kwargs: Dict[str, Any] = {} + kwargs: dict[str, Any] = {} for fields in dataclasses.fields(cls): val = getattr(stdout, fields.name, None) if val is None: @@ -106,7 +107,7 @@ class UperfStat: ops: int norm_ops: int norm_ltcy: float - iteration: Optional[int] = None + iteration: int | None = None class Uperf(Benchmark): @@ -216,14 +217,14 @@ def parse_stdout(self, stdout: str) -> UperfStdout: # profile_name = re.findall(r"running profile:(.*) \.\.\.", stdout)[0] vals = profile_name.split("-") - parsed_profile_name_types: Dict[str, type] = { + parsed_profile_name_types: dict[str, type] = { "test_type": str, "protocol": str, "message_size": int, "read_message_size": int, "num_threads": int, } - parsed_profile_name: Dict[str, Optional[Union[str, int]]] = {} + parsed_profile_name: dict[str, str | int | None] = {} if len(vals) != 5: self.logger.warning( f"Unable to parse detected profile name: {profile_name}. Expected format of " @@ -231,7 +232,7 @@ def parse_stdout(self, stdout: str) -> UperfStdout: ) parsed_profile_name = {key: None for key in parsed_profile_name_types} else: - overwritten: List[str] = [] + overwritten: list[str] = [] for i, (key, cast) in enumerate(parsed_profile_name_types.items()): if getattr(self.config, key, None) is not None: overwritten.append(key) @@ -261,7 +262,7 @@ def parse_stdout(self, stdout: str) -> UperfStdout: return uperf_stdout @staticmethod - def get_results_from_stdout(stdout: UperfStdout) -> List[UperfStat]: + def get_results_from_stdout(stdout: UperfStdout) -> list[UperfStat]: """ Return list of results given raw uperf stdout. @@ -276,7 +277,7 @@ def get_results_from_stdout(stdout: UperfStdout) -> List[UperfStat]: list of UperfStat """ - processed: List[UperfStat] = [] + processed: list[UperfStat] = [] prev_bytes: int = 0 prev_ops: int = 0 prev_timestamp: float = 0.0 @@ -359,7 +360,7 @@ def collect(self) -> Iterable[BenchmarkResult]: self.logger.debug(sample.successful.stdout) stdout: UperfStdout = self.parse_stdout(sample.successful.stdout) - result_data: List[UperfStat] = self.get_results_from_stdout(stdout) + result_data: list[UperfStat] = self.get_results_from_stdout(stdout) config: UperfConfig = UperfConfig.new(stdout, self.config) byte_summary = [] @@ -377,12 +378,12 @@ def collect(self) -> Iterable[BenchmarkResult]: ) self.logger.debug(f"Got sample result: {result}") yield result - self.logger.info(f"{'-'*50}") + self.logger.info(f"{'-' * 50}") self.logger.info(f"Summary result for sample : {sample_num}") self.logger.info(f"Average byte : {np.average(byte_summary)}") self.logger.info(f"Average ops : {np.average(op_summary)}") - self.logger.info(f"95%ile Latency(ms) : {np.percentile(lat_summary,95)}") - self.logger.info(f"{'-'*50}") + self.logger.info(f"95%ile Latency(ms) : {np.percentile(lat_summary, 95)}") + self.logger.info(f"{'-' * 50}") self.logger.info(f"Successfully collected {self.config.sample} sample{_plural} of Uperf.") @staticmethod diff --git a/snafu/config.py b/snafu/config.py index fe5ca7ac..510e0006 100644 --- a/snafu/config.py +++ b/snafu/config.py @@ -2,7 +2,8 @@ """Tools for setting up config arguments.""" import argparse import os -from typing import Any, Callable, Dict, Iterable, List, Mapping, Sequence, Tuple, Union +from collections.abc import Callable, Iterable, Mapping, Sequence +from typing import Any import configargparse @@ -34,7 +35,7 @@ def check_file(file: str, perms: int = None) -> bool: return os.access(os.path.abspath(file), perms) -def none_or_type(target_type: type) -> Callable[[Any], Union[type, None]]: +def none_or_type(target_type: type) -> Callable[[Any], type | None]: """ Return a function which supports allowing an argparse argument to be ``None`` or a specific type. @@ -50,7 +51,7 @@ def none_or_type(target_type: type) -> Callable[[Any], Union[type, None]]: the argument is casted to the given type ``t``. """ - def _t_or_none(val: Any) -> Union[type, None]: + def _t_or_none(val: Any) -> type | None: return val if val is None else target_type(val) return _t_or_none @@ -84,7 +85,7 @@ def __call__( self, parser: configargparse.ArgumentParser, namespace: argparse.Namespace, - values: Union[str, Sequence[Any], None], + values: str | Sequence[Any] | None, option_string=None, ): """Set destination attribute in namespace to output of performing func on given values.""" @@ -118,8 +119,8 @@ class ConfigArgument: def __init__(self, *args, **kwargs): """Set ``args`` to given args, and ``kwargs`` to given kwargs.""" - self.args: Tuple[Any] = args - self.kwargs: Dict[str, Any] = kwargs + self.args: tuple[Any] = args + self.kwargs: dict[str, Any] = kwargs class Config: @@ -154,7 +155,7 @@ def __init__(self, tool_name: str): self.params: argparse.Namespace = argparse.Namespace() self.parser: configargparse.ArgumentParser = configargparse.get_argument_parser() self.group = self.parser.add_argument_group(tool_name) - self.env_to_params: Dict[str, str] = {} + self.env_to_params: dict[str, str] = {} def __getattr__(self, attr): """If given ``attr`` doesn't already exist in instance, try to pull from ``params``.""" @@ -167,7 +168,7 @@ def get_env(self) -> Mapping[str, str]: Will add in environment variables from the OS environment. """ - env: Dict[str, str] = {} + env: dict[str, str] = {} env.update(os.environ) for env_var, dest in self.env_to_params.items(): try: @@ -202,7 +203,7 @@ def populate_parser(self, args: Iterable[ConfigArgument]) -> None: for arg in args: self.add_argument(*arg.args, **arg.kwargs) - def parse_args(self, args: List[str] = None) -> None: + def parse_args(self, args: list[str] = None) -> None: """ Parse arguments and store them in the ``params`` attribute. diff --git a/snafu/cyclictest_wrapper/Dockerfile b/snafu/cyclictest_wrapper/Dockerfile index 1fd8f287..40ae5017 100644 --- a/snafu/cyclictest_wrapper/Dockerfile +++ b/snafu/cyclictest_wrapper/Dockerfile @@ -1,4 +1,4 @@ -FROM registry.centos.org/centos:8 +FROM registry.access.redhat.com/ubi9:latest USER root RUN dnf install -y --nodocs python3 python3-pip python3-devel numactl-devel perl \ epel-release procps-ng iproute net-tools ethtool nmap iputils gcc diff --git a/snafu/cyclictest_wrapper/trigger_cyclictest.py b/snafu/cyclictest_wrapper/trigger_cyclictest.py index cbf69254..f286cfcf 100644 --- a/snafu/cyclictest_wrapper/trigger_cyclictest.py +++ b/snafu/cyclictest_wrapper/trigger_cyclictest.py @@ -66,7 +66,7 @@ def _json_payload(self, data, sample, timestamp): return payload def _run_cyclictest(self): - cmd = "dumb-init -- {}".format(self.path) + cmd = f"dumb-init -- {self.path}" process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = process.communicate() logger.info("Raw result is \n{}".format(stdout.strip().decode("utf-8"))) @@ -74,10 +74,10 @@ def _run_cyclictest(self): def emit_actions(self): if not os.path.exists(self.path): - logger.critical("Cyclictest script {} not found".format(self.path)) + logger.critical(f"Cyclictest script {self.path} not found") exit(1) for s in range(1, self.samples + 1): - logger.info("Starting sample {} out of {}".format(s, self.samples)) + logger.info(f"Starting sample {s} out of {self.samples}") logger.info("Starting cyclictest benchmark") stdout, stderr, rc = self._run_cyclictest() timestamp = datetime.datetime.now() diff --git a/snafu/dns_perf_wrapper/Dockerfile b/snafu/dns_perf_wrapper/Dockerfile index 41561ace..aa83dd49 100644 --- a/snafu/dns_perf_wrapper/Dockerfile +++ b/snafu/dns_perf_wrapper/Dockerfile @@ -1,10 +1,9 @@ -FROM registry.centos.org/centos:8 +FROM registry.access.redhat.com/ubi9:latest -COPY snafu/image_resources/centos8-appstream.repo /etc/yum.repos.d/centos8-appstream.repo RUN dnf install -y epel-release && dnf install -y --nodocs redis python3 python3-pip openssl-devel ck-devel yum-plugin-copr gcc && \ - dnf copr enable @dnsoarc/dnsperf -y && \ - dnf install dnsperf -y && \ - dnf clean all && rm -rf /var/cache/yum + dnf copr enable @dnsoarc/dnsperf -y && \ + dnf install dnsperf -y && \ + dnf clean all && rm -rf /var/cache/yum RUN curl -L https://mirror.openshift.com/pub/openshift-v4/clients/ocp/latest/openshift-client-linux.tar.gz | tar xz -C /usr/bin/ oc && ln -s /usr/bin/python3 /usr/bin/python RUN mkdir -p /opt/snafu/ COPY . /opt/snafu/ diff --git a/snafu/dns_perf_wrapper/trigger_dns_perf.py b/snafu/dns_perf_wrapper/trigger_dns_perf.py index 648789da..4b96dd1a 100755 --- a/snafu/dns_perf_wrapper/trigger_dns_perf.py +++ b/snafu/dns_perf_wrapper/trigger_dns_perf.py @@ -62,9 +62,9 @@ def run(self): ) (output, err) = out.communicate() if out.returncode != 0: - logger.error("Failed to run {}, error: {}".format(command, err)) + logger.error(f"Failed to run {command}, error: {err}") exit(1) - logger.info("Raw result: \n{}".format(output)) + logger.info(f"Raw result: \n{output}") return output def _parse_stdout(self, stdout): @@ -114,7 +114,7 @@ def emit_actions(self): out = self.run() end_time = time.time() elapsed_time = end_time - start_time - logger.info("Elapsed time in seconds: {}".format(elapsed_time)) + logger.info(f"Elapsed time in seconds: {elapsed_time}") logger.info("Starting output parsing") try: data = self._parse_stdout(str(out)) diff --git a/snafu/fio_wrapper/Dockerfile b/snafu/fio_wrapper/Dockerfile index ede91cba..42639e40 100644 --- a/snafu/fio_wrapper/Dockerfile +++ b/snafu/fio_wrapper/Dockerfile @@ -1,13 +1,12 @@ -FROM registry.access.redhat.com/ubi8:latest as builder -COPY snafu/image_resources/centos8.repo /etc/yum.repos.d/centos8.repo -RUN dnf install -y --enablerepo=centos8 make gcc libaio zlib-devel libaio-devel -RUN curl -L https://github.com/axboe/fio/archive/fio-3.27.tar.gz | tar xzf - -RUN pushd fio-fio-3.27 && ./configure --disable-native && make -j2 +FROM quay.io/centos/centos:stream9 as builder +RUN dnf install -y make gcc libaio libaio-devel zlib-devel kernel-headers +RUN curl -L https://github.com/axboe/fio/archive/fio-3.36.tar.gz | tar xzf - +RUN pushd fio-fio-3.36 && ./configure --disable-native && make -j2 -FROM registry.access.redhat.com/ubi8:latest -COPY --from=builder /fio-fio-3.27/fio /usr/local/bin/fio -RUN dnf install -y --nodocs git python3-pip libaio zlib procps-ng iproute net-tools ethtool nmap iputils python3-devel gcc && dnf clean all -RUN ln -s /usr/bin/python3 /usr/bin/python +FROM quay.io/centos/centos:stream9 as runner +COPY --from=builder /fio-fio-3.36/fio /usr/local/bin/fio +RUN dnf install -y --nodocs git python3.11 python3.11-pip libaio zlib procps-ng iproute net-tools ethtool nmap iputils python3.11-devel gcc && dnf clean all +RUN ln -s /usr/bin/python3.11 /usr/bin/python COPY . /opt/snafu -RUN pip3 install --upgrade pip -RUN pip3 install -e /opt/snafu/ +RUN pip3.11 install --upgrade pip +RUN pip3.11 install -e /opt/snafu/ diff --git a/snafu/fio_wrapper/Dockerfile.ppc64le b/snafu/fio_wrapper/Dockerfile.ppc64le index bd75f255..23733626 100755 --- a/snafu/fio_wrapper/Dockerfile.ppc64le +++ b/snafu/fio_wrapper/Dockerfile.ppc64le @@ -1,12 +1,17 @@ -FROM registry.access.redhat.com/ubi8:latest as builder -COPY snafu/image_resources/centos8.repo /etc/yum.repos.d/centos8.repo -RUN dnf install -y --enablerepo=centos8 make gcc libaio zlib-devel libaio-devel -RUN curl -L https://github.com/axboe/fio/archive/fio-3.27.tar.gz | tar xzf - -RUN pushd fio-fio-3.27 && ./configure --disable-native && make -j2 +FROM registry.access.redhat.com/ubi9:latest as builder +COPY snafu/image_resources/centos9.repo /etc/yum.repos.d/centos9.repo +RUN dnf config-manager --set-enabled ubi-9-codeready-builder-rpms +RUN dnf install -y make gcc libaio zlib-devel +# libaio-devel not available in UBI9/CentOS9, fio will build without async I/O support +RUN curl -L https://github.com/axboe/fio/archive/fio-3.36.tar.gz | tar xzf - +RUN pushd fio-fio-3.36 && ./configure --disable-native && make -j2 -FROM registry.access.redhat.com/ubi8:latest -COPY --from=builder /fio-fio-3.27/fio /usr/local/bin/fio -RUN dnf install -y --nodocs git python3-pip libaio zlib procps-ng iproute net-tools ethtool nmap iputils python3 gcc python3-devel gcc-c++ atlas-devel gcc-gfortran && dnf clean all +FROM registry.access.redhat.com/ubi9:latest +COPY --from=builder /fio-fio-3.36/fio /usr/local/bin/fio +COPY snafu/image_resources/centos9.repo /etc/yum.repos.d/centos9.repo +RUN dnf config-manager --set-enabled ubi-9-codeready-builder-rpms +RUN dnf install -y --nodocs git python3-pip libaio zlib procps-ng iproute net-tools ethtool nmap iputils python3 gcc python3-devel gcc-c++ gcc-gfortran && dnf clean all +RUN dnf install -y --enablerepo=centos9 --nodocs atlas-devel || dnf install -y --nodocs openblas-devel RUN ln -s /usr/bin/python3 /usr/bin/python RUN python3 -m pip install --upgrade cython numpy importlib_metadata 'urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1' && python3 -m pip install --upgrade scipy pandas COPY . /opt/snafu diff --git a/snafu/fio_wrapper/fio_hist_parser.py b/snafu/fio_wrapper/fio_hist_parser.py index a1687afb..40f9fa53 100644 --- a/snafu/fio_wrapper/fio_hist_parser.py +++ b/snafu/fio_wrapper/fio_hist_parser.py @@ -475,7 +475,7 @@ def compute_percentiles_from_logs( csv_out = open(output_csv_file, "w") if output_csv_file_header: csv_out.write(header + "\n") - for (t_msec, all_threads_histo_t) in all_threads_histograms: + for t_msec, all_threads_histo_t in all_threads_histograms: if t_msec == 0: continue samples = get_samples(all_threads_histo_t) @@ -752,7 +752,7 @@ def test_e1_get_pctiles_flat_histo(self): self.A(time_intervals[64][1] == 0.066 and time_intervals[127][1] == 0.256) pctiles_wanted = [0, 50, 100] pct_vs_time = [] - for (time_ms, histo) in aligned_log: + for time_ms, histo in aligned_log: pct_vs_time.append(get_pctiles(histo, pctiles_wanted, time_intervals)) self.A(pct_vs_time[0] is None) # no I/O in this time interval expected_pctiles = {0: 0.000, 50: 0.064, 100: 0.256} diff --git a/snafu/fio_wrapper/fio_wrapper.py b/snafu/fio_wrapper/fio_wrapper.py index 7aa80493..37ec530c 100644 --- a/snafu/fio_wrapper/fio_wrapper.py +++ b/snafu/fio_wrapper/fio_wrapper.py @@ -71,11 +71,9 @@ def run(self): os.makedirs(sample_dir, exist_ok=True) if self.cache_drop_ip: try: - drop = requests.get("http://{}:9432/drop_osd_caches".format(self.cache_drop_ip)).text + drop = requests.get(f"http://{self.cache_drop_ip}:9432/drop_osd_caches").text except: # noqa - logger.error( - "Failed HTTP request to Ceph OSD cache drop pod {}".format(self.cache_drop_ip) - ) + logger.error(f"Failed HTTP request to Ceph OSD cache drop pod {self.cache_drop_ip}") if "SUCCESS" in drop: logger.info("Ceph OSD cache successfully dropped") else: diff --git a/snafu/flent_wrapper/Dockerfile b/snafu/flent_wrapper/Dockerfile index a16ba0dd..00a9df6f 100644 --- a/snafu/flent_wrapper/Dockerfile +++ b/snafu/flent_wrapper/Dockerfile @@ -1,4 +1,4 @@ -FROM registry.access.redhat.com/ubi8:latest as builder +FROM registry.access.redhat.com/ubi9:latest as builder RUN dnf -y install git wget gcc gcc-c++ make bzip2 --nodocs @@ -18,10 +18,9 @@ RUN git clone -n https://git.code.sf.net/p/iperf2/code iperf2-code RUN cd iperf2-code && git checkout bf687b4aac023b303cea08bd1a7248d62ad70f47 && ./configure --prefix=/tmp/install && make && make install # The main container -FROM registry.access.redhat.com/ubi8:latest +FROM registry.access.redhat.com/ubi9:latest -COPY /snafu/image_resources/centos8-appstream.repo /etc/yum.repos.d/centos8-appstream.repo -RUN dnf install -y --nodocs git python3-pip python3-devel iputils redis gcc --enablerepo=centos8-appstream && dnf clean all +RUN dnf install -y --nodocs git python3-pip python3-devel iputils redis gcc && dnf clean all RUN pip3 install --upgrade pip RUN pip3 install flent diff --git a/snafu/fs_drift_wrapper/Dockerfile b/snafu/fs_drift_wrapper/Dockerfile index b6b58fd7..9c3c6425 100644 --- a/snafu/fs_drift_wrapper/Dockerfile +++ b/snafu/fs_drift_wrapper/Dockerfile @@ -1,4 +1,4 @@ -FROM registry.access.redhat.com/ubi8:latest +FROM registry.access.redhat.com/ubi9:latest RUN dnf install -y --nodocs git python3-pip python3-devel gcc RUN ln -s /usr/bin/python3 /usr/bin/python diff --git a/snafu/fs_drift_wrapper/Dockerfile.ppc64le b/snafu/fs_drift_wrapper/Dockerfile.ppc64le index ed8d9f4e..3b7731f4 100755 --- a/snafu/fs_drift_wrapper/Dockerfile.ppc64le +++ b/snafu/fs_drift_wrapper/Dockerfile.ppc64le @@ -1,6 +1,9 @@ -FROM registry.access.redhat.com/ubi8:latest +FROM registry.access.redhat.com/ubi9:latest -RUN dnf install -y --nodocs git python3 python3-pip gcc python3-devel gcc-c++ atlas-devel gcc-gfortran +COPY snafu/image_resources/centos9.repo /etc/yum.repos.d/centos9.repo +RUN dnf config-manager --set-enabled ubi-9-codeready-builder-rpms +RUN dnf install -y --nodocs git python3 python3-pip gcc python3-devel gcc-c++ gcc-gfortran +RUN dnf install -y --enablerepo=centos9 --nodocs atlas-devel || dnf install -y --nodocs openblas-devel RUN dnf install -y --nodocs procps-ng iproute net-tools ethtool nmap iputils RUN ln -s /usr/bin/python3 /usr/bin/python RUN python3 -m pip install --upgrade cython numpy importlib_metadata 'urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1' && python3 -m pip install --upgrade scipy pandas diff --git a/snafu/fs_drift_wrapper/trigger_fs_drift.py b/snafu/fs_drift_wrapper/trigger_fs_drift.py index a981c89d..48d68cc1 100644 --- a/snafu/fs_drift_wrapper/trigger_fs_drift.py +++ b/snafu/fs_drift_wrapper/trigger_fs_drift.py @@ -72,7 +72,7 @@ def emit_actions(self): except subprocess.CalledProcessError as e: self.logger.exception(e) raise FsDriftWrapperException("fs-drift.py non-zero process return code %d" % e.returncode) - self.logger.info("completed sample {} , results in {}".format(self.sample, self.json_output_file)) + self.logger.info(f"completed sample {self.sample} , results in {self.json_output_file}") fsdict = get_vfs_stat_dict(self.working_dir) with open(self.json_output_file) as f: @@ -118,7 +118,7 @@ def process_rsptimes(self, start_time, elapsed_time): except subprocess.CalledProcessError as e: self.logger.exception(e) raise FsDriftWrapperException("rsptime_stats failed, see exception in log") - self.logger.info("response time result {}".format(rsptime_file)) + self.logger.info(f"response time result {rsptime_file}") with open(rsptime_file) as rf: lines = [line.strip() for line in rf.readlines()] start_grabbing = False diff --git a/snafu/hammerdb/Dockerfile b/snafu/hammerdb/Dockerfile index 22f32f98..eb7e8957 100644 --- a/snafu/hammerdb/Dockerfile +++ b/snafu/hammerdb/Dockerfile @@ -1,14 +1,14 @@ -FROM registry.access.redhat.com/ubi8:latest +FROM registry.access.redhat.com/ubi9:latest # install requirements -COPY snafu/image_resources/centos8.repo /etc/yum.repos.d/centos8.repo -COPY snafu/image_resources/centos8-appstream.repo /etc/yum.repos.d/centos8-appstream.repo -RUN dnf install -y --enablerepo=centos8 --enablerepo=centos8-appstream --nodocs tcl unixODBC python3-pip python3-requests python3-devel gcc -RUN dnf install -y --enablerepo=centos8 --enablerepo=centos8-appstream --nodocs procps-ng iproute net-tools ethtool nmap iputils -RUN dnf -y install --enablerepo=centos8 --enablerepo=centos8-appstream --nodocs mysql-libs mysql-common mysql-devel mysql-errmsg libpq +COPY snafu/image_resources/centos9.repo /etc/yum.repos.d/centos9.repo +RUN dnf config-manager --set-enabled ubi-9-codeready-builder-rpms +RUN dnf install -y --nodocs tcl unixODBC python3-pip python3-requests python3-devel gcc +RUN dnf install -y --nodocs procps-ng iproute net-tools ethtool nmap iputils +RUN dnf -y install --enablerepo=centos9 --nodocs mysql-libs mysql-common mysql-devel mysql-errmsg libpq RUN curl https://packages.microsoft.com/config/rhel/8/prod.repo -o /etc/yum.repos.d/mssql-release.repo -RUN ACCEPT_EULA=Y dnf -y install --skip-broken --enablerepo=centos8 --enablerepo=centos8-appstream --nodocs msodbcsql17 +RUN ACCEPT_EULA=Y dnf -y install --skip-broken --nodocs msodbcsql17 RUN dnf clean all COPY . /opt/snafu RUN pip3 install --upgrade pip diff --git a/snafu/hammerdb/trigger_hammerdb.py b/snafu/hammerdb/trigger_hammerdb.py index 4cf02ed8..810d0c6c 100644 --- a/snafu/hammerdb/trigger_hammerdb.py +++ b/snafu/hammerdb/trigger_hammerdb.py @@ -217,9 +217,9 @@ def _summarize_data(self, data): print("Test driver: {}".format(entry["driver"])) print("Runtime: {}".format(entry["runtime"])) print("Rampup time: {}".format(entry["rampup"])) - print("Worker(s): {}".format(current_worker)) + print(f"Worker(s): {current_worker}") print("Total samples: {}".format(entry["samples"])) - print("Current sample {}".format(current_sample + 1)) + print(f"Current sample {current_sample + 1}") print("HammerDB results (TPM):") print( """ diff --git a/snafu/image_pull_wrapper/Dockerfile b/snafu/image_pull_wrapper/Dockerfile index b10b0176..462c4ab7 100644 --- a/snafu/image_pull_wrapper/Dockerfile +++ b/snafu/image_pull_wrapper/Dockerfile @@ -1,8 +1,7 @@ -FROM docker://registry.access.redhat.com/ubi8:latest +FROM registry.access.redhat.com/ubi9:latest -COPY snafu/image_resources/centos8-appstream.repo /etc/yum.repos.d/centos8-appstream.repo RUN dnf install -y --nodocs python3 python3-pip python3-devel gcc && dnf clean all -RUN dnf install -y --nodocs skopeo redis --enablerepo=centos8-appstream && dnf clean all +RUN dnf install -y --nodocs skopeo redis && dnf clean all RUN ln -s /usr/bin/python3 /usr/bin/python RUN mkdir -p /opt/snafu/ COPY . /opt/snafu/ diff --git a/snafu/image_pull_wrapper/trigger_image_pull.py b/snafu/image_pull_wrapper/trigger_image_pull.py index 182bdc08..47cce086 100755 --- a/snafu/image_pull_wrapper/trigger_image_pull.py +++ b/snafu/image_pull_wrapper/trigger_image_pull.py @@ -78,7 +78,7 @@ def _run_image_pull_test(self): logger.info("Failed to pull image: %s" % self.image) logger.info("STDOUT: %s" % output) logger.info("STDERR: %s" % errors) - logger.info("Retrying. {}/{} failures.".format(failures, self.retries)) + logger.info(f"Retrying. {failures}/{self.retries} failures.") # Statistics / Data elapsed_time = end_time - start_time @@ -105,7 +105,7 @@ def emit_actions(self): logger.info( "Running image pull test with %d image retries and image: %s" % (self.retries, str(self.image)) ) - logger.info("Test UUID is {} on cluster {}".format(self.uuid, self.cluster_name)) + logger.info(f"Test UUID is {self.uuid} on cluster {self.cluster_name}") timestamp = time.strftime("%Y-%m-%dT%H:%M:%S") results = self._run_image_pull_test() diff --git a/snafu/image_resources/centos9-appstream.repo b/snafu/image_resources/centos9-appstream.repo new file mode 100644 index 00000000..39a30e69 --- /dev/null +++ b/snafu/image_resources/centos9-appstream.repo @@ -0,0 +1,5 @@ +[centos9-appstream] +name=CentOS-9-Stream-AppStream +baseurl=http://mirror.stream.centos.org/9-stream/AppStream/$basearch/os/ +enabled=0 +gpgcheck=0 diff --git a/snafu/image_resources/centos9.repo b/snafu/image_resources/centos9.repo new file mode 100644 index 00000000..a521aaa2 --- /dev/null +++ b/snafu/image_resources/centos9.repo @@ -0,0 +1,5 @@ +[centos9] +name=CentOS-9-Stream-BaseOS +baseurl=http://mirror.stream.centos.org/9-stream/BaseOS/$basearch/os/ +enabled=0 +gpgcheck=0 diff --git a/snafu/iperf/Dockerfile b/snafu/iperf/Dockerfile index f59dba6d..fa901bce 100644 --- a/snafu/iperf/Dockerfile +++ b/snafu/iperf/Dockerfile @@ -1,5 +1,3 @@ -FROM registry.access.redhat.com/ubi8:latest +FROM registry.access.redhat.com/ubi9:latest -COPY snafu/image_resources/centos8-appstream.repo /etc/yum.repos.d/centos8-appstream.repo -RUN dnf install -y --nodocs iperf3 --enablerepo=centos8-appstream -RUN dnf install -y --nodocs procps-ng iproute net-tools ethtool nmap iputils +RUN dnf install -y --nodocs iperf3 RUN dnf install -y --nodocs procps-ng iproute net-tools ethtool nmap iputils diff --git a/snafu/iperf/Dockerfile.ppc64le b/snafu/iperf/Dockerfile.ppc64le index f59dba6d..fa901bce 100644 --- a/snafu/iperf/Dockerfile.ppc64le +++ b/snafu/iperf/Dockerfile.ppc64le @@ -1,5 +1,3 @@ -FROM registry.access.redhat.com/ubi8:latest +FROM registry.access.redhat.com/ubi9:latest -COPY snafu/image_resources/centos8-appstream.repo /etc/yum.repos.d/centos8-appstream.repo -RUN dnf install -y --nodocs iperf3 --enablerepo=centos8-appstream -RUN dnf install -y --nodocs procps-ng iproute net-tools ethtool nmap iputils +RUN dnf install -y --nodocs iperf3 RUN dnf install -y --nodocs procps-ng iproute net-tools ethtool nmap iputils diff --git a/snafu/linpack_wrapper/Dockerfile b/snafu/linpack_wrapper/Dockerfile index 7c4ff476..1f034e89 100644 --- a/snafu/linpack_wrapper/Dockerfile +++ b/snafu/linpack_wrapper/Dockerfile @@ -1,4 +1,4 @@ -FROM registry.access.redhat.com/ubi8:latest +FROM registry.access.redhat.com/ubi9:latest RUN dnf install -y --nodocs python3-pip python3-devel gcc RUN ln -s /usr/bin/python3 /usr/bin/python diff --git a/snafu/log_generator_wrapper/Dockerfile b/snafu/log_generator_wrapper/Dockerfile index 7d637143..216c735c 100644 --- a/snafu/log_generator_wrapper/Dockerfile +++ b/snafu/log_generator_wrapper/Dockerfile @@ -1,8 +1,7 @@ -FROM registry.access.redhat.com/ubi8:latest +FROM registry.access.redhat.com/ubi9:latest -COPY snafu/image_resources/centos8-appstream.repo /etc/yum.repos.d/centos8-appstream.repo RUN dnf install -y --nodocs python3 python3-pip python3-devel gcc && dnf clean all -RUN dnf install -y --nodocs redis --enablerepo=centos8-appstream && dnf clean all +RUN dnf install -y --nodocs redis && dnf clean all RUN curl -L https://mirror.openshift.com/pub/openshift-v4/clients/ocp/latest/openshift-client-linux.tar.gz | tar xz -C /usr/bin/ oc RUN ln -s /usr/bin/python3 /usr/bin/python RUN pip3 install --upgrade --no-cache-dir pip diff --git a/snafu/log_generator_wrapper/trigger_log_generator.py b/snafu/log_generator_wrapper/trigger_log_generator.py index 8201c470..d9c3c0c5 100755 --- a/snafu/log_generator_wrapper/trigger_log_generator.py +++ b/snafu/log_generator_wrapper/trigger_log_generator.py @@ -215,7 +215,7 @@ def _check_kafka(self, start_time, end_time): consumer_timeout_ms=1000, ) # Create consumer for the topic in a new consumer group except Exception as e: - logging.error("Error connecting to kafka/topic: {}".format(e)) # exit if can't connect to kafka + logging.error(f"Error connecting to kafka/topic: {e}") # exit if can't connect to kafka exit(1) partitions = consumer.partitions_for_topic(self.kafka_topic) # get all partitions for the topic consumer.poll() # dummy poll so that future seek works @@ -256,7 +256,7 @@ def emit_actions(self): "Running log test with %d byte size for %d minutes at a rate of %d messages per second" % (self.size, self.duration, self.messages_per_second) ) - logger.info("Test UUID is {} on cluster {}".format(self.uuid, self.cluster_name)) + logger.info(f"Test UUID is {self.uuid} on cluster {self.cluster_name}") timestamp = time.strftime("%Y-%m-%dT%H:%M:%S") start_time = time.time() @@ -283,10 +283,16 @@ def emit_actions(self): messages_received = self._check_es(int(start_time), int(end_time)) elif self.kafka_bootstrap_server: messages_received = self._check_kafka(start_time, end_time + self.timeout) - if messages_received >= message_count-10: # ES misses 1 or 2 messages inconsistently and very negligible, so tolerating 0.00001% loss. + if ( + messages_received >= message_count - 10 + ): # ES misses 1 or 2 messages inconsistently and very negligible, + # so tolerating 0.00001% loss. received_all_messages = True else: - logger.info("Message check failed. Received %d messages of %d. Retrying until timeout" % (messages_received, message_count)) + logger.info( + "Message check failed. Received %d messages of %d. Retrying until timeout" + % (messages_received, message_count) + ) if self.kafka_bootstrap_server: logger.info( "Current messages received is {}, waiting more time for kafka".format( diff --git a/snafu/oslat_wrapper/Dockerfile b/snafu/oslat_wrapper/Dockerfile index e1ea03ad..800936ab 100644 --- a/snafu/oslat_wrapper/Dockerfile +++ b/snafu/oslat_wrapper/Dockerfile @@ -1,4 +1,4 @@ -FROM registry.centos.org/centos:8 +FROM registry.access.redhat.com/ubi9:latest USER root RUN dnf install -y --nodocs python3 python3-pip python3-devel numactl-devel perl \ epel-release procps-ng iproute net-tools ethtool nmap iputils gcc diff --git a/snafu/oslat_wrapper/trigger_oslat.py b/snafu/oslat_wrapper/trigger_oslat.py index fa25eabd..2fd4a581 100644 --- a/snafu/oslat_wrapper/trigger_oslat.py +++ b/snafu/oslat_wrapper/trigger_oslat.py @@ -81,7 +81,7 @@ def _json_payload(self, data, sample, timestamp): return payload def _run_oslat(self): - cmd = "dumb-init -- {}".format(self.path) + cmd = f"dumb-init -- {self.path}" process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = process.communicate() logger.info("Raw result is \n{}".format(stdout.strip().decode("utf-8"))) @@ -89,10 +89,10 @@ def _run_oslat(self): def emit_actions(self): if not os.path.exists(self.path): - logger.critical("oslat script {} not found".format(self.path)) + logger.critical(f"oslat script {self.path} not found") exit(1) for s in range(1, self.samples + 1): - logger.info("Starting sample {} out of {}".format(s, self.samples)) + logger.info(f"Starting sample {s} out of {self.samples}") logger.info("Starting oslat benchmark") stdout, stderr, rc = self._run_oslat() timestamp = datetime.datetime.now() diff --git a/snafu/pgbench_wrapper/Dockerfile b/snafu/pgbench_wrapper/Dockerfile index 5fd0ff88..5ef57f06 100644 --- a/snafu/pgbench_wrapper/Dockerfile +++ b/snafu/pgbench_wrapper/Dockerfile @@ -1,10 +1,8 @@ -FROM registry.access.redhat.com/ubi8:latest +FROM registry.access.redhat.com/ubi9:latest RUN dnf install -y --nodocs https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm RUN dnf install -y --nodocs python3-pip python3-devel gcc postgresql11 -COPY snafu/image_resources/centos8-appstream.repo /etc/yum.repos.d/centos8-appstream.repo -RUN dnf install -y --nodocs redis --enablerepo=centos8-appstream -RUN dnf install -y --nodocs procps-ng iproute net-tools ethtool nmap iputils +RUN dnf install -y --nodocs redis RUN dnf install -y --nodocs procps-ng iproute net-tools ethtool nmap iputils RUN ln -s /usr/bin/python3 /usr/bin/python RUN ln -s /usr/pgsql-11/bin/pgbench /usr/bin/pgbench RUN mkdir -p /opt/snafu/ diff --git a/snafu/pgbench_wrapper/trigger_pgbench.py b/snafu/pgbench_wrapper/trigger_pgbench.py index a13fe077..2908073f 100644 --- a/snafu/pgbench_wrapper/trigger_pgbench.py +++ b/snafu/pgbench_wrapper/trigger_pgbench.py @@ -53,15 +53,15 @@ def __init__(self, args): def _json_payload(self, meta_processed, data): processed = copy.deepcopy(meta_processed) for line in data["config"]: - processed[0].update({"{}".format(line[0]): self._num_convert(line[1])}) + processed[0].update({f"{line[0]}": self._num_convert(line[1])}) for line in data["results"]: - processed[0].update({"{}".format(line[0]): self._num_convert(line[1])}) + processed[0].update({f"{line[0]}": self._num_convert(line[1])}) return processed def _json_payload_raw(self, meta_processed, data): processed = copy.deepcopy(meta_processed) for line in data["config"]: - processed[0].update({"{}".format(line[0]): self._num_convert(line[1])}) + processed[0].update({f"{line[0]}": self._num_convert(line[1])}) processed[0].update({"raw_output_b64": data["raw_output_b64"].decode("utf-8")}) return processed @@ -71,7 +71,7 @@ def _json_payload_prog(self, meta_processed, progress, data): entry = copy.copy(meta_processed[0]) for line in data["config"]: if "timestamp" not in line[0]: - entry.update({"{}".format(line[0]): self._num_convert(line[1])}) + entry.update({f"{line[0]}": self._num_convert(line[1])}) entry.update(prog) processed.append(entry) return processed @@ -121,7 +121,7 @@ def _parse_stdout(self, stdout): if re.search("tps", results[idx][0]): cons = re.findall(r".*\((....)uding.*", results[idx][1]) # noqa if cons: - results[idx][0] = "tps_{}_con_est".format(cons[0]).strip() + results[idx][0] = f"tps_{cons[0]}_con_est".strip() results[idx][1] = self._num_convert(re.sub(r" \(.*", "", results[idx][1]).strip()) # noqa elif re.search("latency", results[idx][0]): results[idx][0] += "_ms" @@ -150,23 +150,23 @@ def _parse_stderr(self, stderr): def _summarize_data(self, data, iteration, uuid, database, pgb_vers): print("+{} PGBench Results {}+".format("-" * (50), "-" * (50))) - print("PGBench version: {}".format(pgb_vers)) + print(f"PGBench version: {pgb_vers}") print("") - print("UUID: {}".format(uuid)) - print("Run: {}".format(iteration)) + print(f"UUID: {uuid}") + print(f"Run: {iteration}") print("") - print("Database: {}".format(database)) + print(f"Database: {database}") print("") print("PGBench run info:") for line in data["config"]: - print(" {}: {}".format(line[0], line[1])) + print(f" {line[0]}: {line[1]}") print("") # I asked for a mai tai, and they brought me a pina colada, # and I said no salt, NO salt on the margarita, but it had salt # on it, big grains of salt, floating in the glass. print("TPS report:") for line in data["results"]: - print(" {}: {}".format(line[0], line[1])) + print(f" {line[0]}: {line[1]}") print("") print("+{}+".format("-" * (115))) diff --git a/snafu/process.py b/snafu/process.py index b27da7fb..a0e5368f 100644 --- a/snafu/process.py +++ b/snafu/process.py @@ -4,38 +4,38 @@ import datetime import logging import subprocess -from typing import Iterable, List, Optional, Union +from collections.abc import Iterable @dataclasses.dataclass class ProcessRun: """Represent a single run of a subprocess without retries.""" - rc: Optional[int] = None # pylint: disable=C0103 - stdout: Optional[str] = None - stderr: Optional[str] = None - time_seconds: Optional[float] = None - hit_timeout: Optional[bool] = None + rc: int | None = None # pylint: disable=C0103 + stdout: str | None = None + stderr: str | None = None + time_seconds: float | None = None + hit_timeout: bool | None = None @dataclasses.dataclass class ProcessSample: """Represent a process that will be retried on failure.""" - expected_rc: Optional[int] = None - success: Optional[bool] = None - attempts: Optional[int] = None - timeout: Optional[int] = None - failed: List[ProcessRun] = dataclasses.field(default_factory=list) - successful: Optional[ProcessRun] = None + expected_rc: int | None = None + success: bool | None = None + attempts: int | None = None + timeout: int | None = None + failed: list[ProcessRun] = dataclasses.field(default_factory=list) + successful: ProcessRun | None = None def get_process_sample( - cmd: Union[str, List[str]], + cmd: str | list[str], logger: logging.Logger, retries: int = 0, expected_rc: int = 0, - timeout: Optional[int] = None, + timeout: int | None = None, **kwargs, ) -> ProcessSample: """ @@ -79,19 +79,14 @@ def get_process_sample( kwargs.get("capture_output", False) or {"stdout", "stderr", "capture_output"}.intersection(set(kwargs)) == set() ): - kwargs["stdout"] = subprocess.PIPE - kwargs["stderr"] = subprocess.PIPE - - # Keeps python 3.6 compatibility - if "capture_output" in kwargs: - del kwargs["capture_output"] + kwargs["capture_output"] = True while tries <= retries: tries += 1 logger.debug(f"On try {tries}") attempt = ProcessRun() - start_time = datetime.datetime.utcnow() + start_time = datetime.datetime.now(datetime.UTC) try: proc = subprocess.run(cmd, check=False, timeout=timeout, **kwargs) except subprocess.TimeoutExpired as timeout_error: @@ -100,7 +95,7 @@ def get_process_sample( stdout = timeout_error.stdout stderr = timeout_error.stderr else: - attempt.time_seconds = (datetime.datetime.utcnow() - start_time).total_seconds() + attempt.time_seconds = (datetime.datetime.now(datetime.UTC) - start_time).total_seconds() attempt.hit_timeout = False attempt.rc = proc.returncode stdout = proc.stdout @@ -131,12 +126,12 @@ def get_process_sample( return result -def sample_process( - cmd: Union[str, List[str]], +def sample_process( # pylint: disable=too-many-positional-arguments + cmd: str | list[str], logger: logging.Logger, retries: int = 0, expected_rc: int = 0, - timeout: Optional[int] = None, + timeout: int | None = None, num_samples: int = 1, **kwargs, ) -> Iterable[ProcessSample]: diff --git a/snafu/registry.py b/snafu/registry.py index 5af27af2..c6c62bf9 100644 --- a/snafu/registry.py +++ b/snafu/registry.py @@ -9,9 +9,8 @@ ``registry.TOOLS``. Key names will be tool names, values will be their wrapper classes. """ from abc import ABCMeta -from typing import Dict -TOOLS: Dict[str, object] = {} +TOOLS: dict[str, object] = {} class ToolRegistryMeta(ABCMeta): @@ -32,10 +31,10 @@ class ToolRegistryMeta(ABCMeta): 'my_awesome_tool' """ - def __new__(cls, name, bases, namespace, **kwargs): + def __new__(mcs, name, bases, namespace, **kwargs): """Called when a new class is created.""" - new_class = super().__new__(cls, name, bases, namespace) + new_class = super().__new__(mcs, name, bases, namespace) if namespace.get("tool_name", None) is None: raise KeyError("When using ToolRegistryMeta, please set the 'tool_name' class attribute.") TOOLS[namespace["tool_name"]] = new_class diff --git a/snafu/run_snafu.py b/snafu/run_snafu.py index 53dea8e4..9e3bb884 100755 --- a/snafu/run_snafu.py +++ b/snafu/run_snafu.py @@ -188,9 +188,7 @@ def main(): # get time delta for indexing run tdelta = end_t - start_t total_capacity_bytes = index_args.document_size_capacity_bytes - logger.info( - "Duration of execution - {}, with total size of {} bytes".format(tdelta, total_capacity_bytes) - ) + logger.info(f"Duration of execution - {tdelta}, with total size of {total_capacity_bytes} bytes") def process_generator(index_args, parser): diff --git a/snafu/scale_openshift_wrapper/Dockerfile b/snafu/scale_openshift_wrapper/Dockerfile index d23c226b..14ef131a 100644 --- a/snafu/scale_openshift_wrapper/Dockerfile +++ b/snafu/scale_openshift_wrapper/Dockerfile @@ -1,8 +1,7 @@ -FROM registry.access.redhat.com/ubi8:latest +FROM registry.access.redhat.com/ubi9:latest -COPY snafu/image_resources/centos8-appstream.repo /etc/yum.repos.d/centos8-appstream.repo RUN dnf install -y --nodocs python3 python3-pip python3-devel jq gcc && dnf clean all -RUN dnf install -y --nodocs redis --enablerepo=centos8-appstream && dnf clean all +RUN dnf install -y --nodocs redis && dnf clean all RUN curl -L https://mirror.openshift.com/pub/openshift-v4/clients/ocp/latest/openshift-client-linux.tar.gz | tar xz -C /usr/bin/ oc RUN curl -L $(curl -s https://api.github.com/repos/openshift/rosa/releases/latest | jq -r ".assets[] | select(.name == \"rosa-linux-amd64\") | .browser_download_url") --output /usr/bin/rosa RUN curl -L $(curl -s https://api.github.com/repos/openshift-online/ocm-cli/releases/latest | jq -r ".assets[] | select(.name == \"ocm-linux-amd64\") | .browser_download_url") --output /usr/bin/ocm diff --git a/snafu/scale_openshift_wrapper/Dockerfile.ppc64le b/snafu/scale_openshift_wrapper/Dockerfile.ppc64le index f5101bae..db8a2cb6 100755 --- a/snafu/scale_openshift_wrapper/Dockerfile.ppc64le +++ b/snafu/scale_openshift_wrapper/Dockerfile.ppc64le @@ -1,8 +1,10 @@ -FROM registry.access.redhat.com/ubi8:latest +FROM registry.access.redhat.com/ubi9:latest -COPY snafu/image_resources/centos8-appstream.repo /etc/yum.repos.d/centos8-appstream.repo -RUN dnf install -y --nodocs python3 python3-pip gcc python3-devel gcc-c++ atlas-devel gcc-gfortran && dnf clean all -RUN dnf install -y --nodocs redis --enablerepo=centos8-appstream && dnf clean all +COPY snafu/image_resources/centos9.repo /etc/yum.repos.d/centos9.repo +RUN dnf config-manager --set-enabled ubi-9-codeready-builder-rpms +RUN dnf install -y --nodocs python3 python3-pip gcc python3-devel gcc-c++ gcc-gfortran && dnf clean all +RUN dnf install -y --enablerepo=centos9 --nodocs atlas-devel || dnf install -y --nodocs openblas-devel +RUN dnf install -y --nodocs redis && dnf clean all RUN curl -L https://mirror.openshift.com/pub/openshift-v4/ppc64le/clients/ocp/latest/openshift-client-linux.tar.gz | tar xz -C /usr/bin/ oc RUN ln -s /usr/bin/python3 /usr/bin/python RUN python3 -m pip install --upgrade cython numpy importlib_metadata 'urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1' && python3 -m pip install --upgrade scipy pandas diff --git a/snafu/smallfile_wrapper/Dockerfile b/snafu/smallfile_wrapper/Dockerfile index 4bbcf714..2f0b5196 100644 --- a/snafu/smallfile_wrapper/Dockerfile +++ b/snafu/smallfile_wrapper/Dockerfile @@ -1,4 +1,4 @@ -FROM registry.access.redhat.com/ubi8:latest +FROM registry.access.redhat.com/ubi9:latest RUN dnf install -y --nodocs git python3 python3-pip python3-devel gcc && dnf clean all RUN ln -s /usr/bin/python3 /usr/bin/python diff --git a/snafu/smallfile_wrapper/Dockerfile.ppc64le b/snafu/smallfile_wrapper/Dockerfile.ppc64le index ed871a28..fb3da73e 100755 --- a/snafu/smallfile_wrapper/Dockerfile.ppc64le +++ b/snafu/smallfile_wrapper/Dockerfile.ppc64le @@ -1,6 +1,9 @@ -FROM registry.access.redhat.com/ubi8:latest +FROM registry.access.redhat.com/ubi9:latest -RUN dnf install -y --nodocs git python3 python3-pip gcc python3-devel gcc-c++ atlas-devel gcc-gfortran +COPY snafu/image_resources/centos9.repo /etc/yum.repos.d/centos9.repo +RUN dnf config-manager --set-enabled ubi-9-codeready-builder-rpms +RUN dnf install -y --nodocs git python3 python3-pip gcc python3-devel gcc-c++ gcc-gfortran +RUN dnf install -y --enablerepo=centos9 --nodocs atlas-devel || dnf install -y --nodocs openblas-devel RUN dnf install -y --nodocs procps-ng iproute net-tools ethtool nmap iputils RUN ln -s /usr/bin/python3 /usr/bin/python ADD https://api.github.com/repos/distributed-system-analysis/smallfile/git/refs/heads/master /tmp/bustcache diff --git a/snafu/smallfile_wrapper/trigger_smallfile.py b/snafu/smallfile_wrapper/trigger_smallfile.py index e514ff0e..ac7eb797 100644 --- a/snafu/smallfile_wrapper/trigger_smallfile.py +++ b/snafu/smallfile_wrapper/trigger_smallfile.py @@ -161,7 +161,7 @@ def emit_actions(self): except subprocess.CalledProcessError as e: self.logger.exception(e) raise SmallfileWrapperException("rsptime_stats return code %d" % e.returncode) - self.logger.info("response time result for operation {} in {}".format(self.operation, rsptime_file)) + self.logger.info(f"response time result for operation {self.operation} in {rsptime_file}") with open(rsptime_file) as rf: lines = [ln.strip() for ln in rf.readlines()] start_grabbing = False diff --git a/snafu/stressng_wrapper/Dockerfile b/snafu/stressng_wrapper/Dockerfile index 92b71a78..bfd83371 100644 --- a/snafu/stressng_wrapper/Dockerfile +++ b/snafu/stressng_wrapper/Dockerfile @@ -1,11 +1,9 @@ -FROM registry.access.redhat.com/ubi8:latest +FROM registry.access.redhat.com/ubi9:latest # install requirements -COPY snafu/image_resources/centos8.repo /etc/yum.repos.d/centos8.repo -COPY snafu/image_resources/centos8-appstream.repo /etc/yum.repos.d/centos8-appstream.repo -RUN dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -RUN dnf install -y --enablerepo=centos8 --enablerepo=centos8-appstream --enablerepo=epel --nodocs stress-ng python3-pip python3-devel python3-requests gcc -RUN dnf install -y --enablerepo=centos8 --enablerepo=centos8-appstream --nodocs procps-ng iproute net-tools ethtool nmap iputils +RUN dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm +RUN dnf install -y --enablerepo=epel --nodocs stress-ng python3-pip python3-devel python3-requests gcc +RUN dnf install -y --nodocs procps-ng iproute net-tools ethtool nmap iputils RUN dnf clean all COPY . /opt/snafu @@ -13,7 +11,7 @@ RUN pip3 install --upgrade pip RUN pip3 install -e /opt/snafu/ RUN ln -s /usr/bin/python3 /usr/bin/python -RUN mkdir /opt/stressng && \ - chgrp 0 /opt/stressng && \ - chmod g+w /opt/stressng +RUN mkdir /opt/stressng && \ + chgrp 0 /opt/stressng && \ + chmod g+w /opt/stressng WORKDIR /opt/stressng diff --git a/snafu/stressng_wrapper/trigger_stressng.py b/snafu/stressng_wrapper/trigger_stressng.py index 36af5a22..aef40a24 100644 --- a/snafu/stressng_wrapper/trigger_stressng.py +++ b/snafu/stressng_wrapper/trigger_stressng.py @@ -20,7 +20,7 @@ def __init__(self, args): self.jobfile = args.jobfile def _run_stressng(self): - cmd = "stress-ng --job {} --log-file stressng.log -Y stressng.yml".format(self.jobfile) + cmd = f"stress-ng --job {self.jobfile} --log-file stressng.log -Y stressng.yml" process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) stdout, stderr = process.communicate() return stdout.strip().decode("utf-8"), process.returncode diff --git a/snafu/sysbench_wrapper/Dockerfile b/snafu/sysbench_wrapper/Dockerfile index 212a0c6a..dfc530e0 100644 --- a/snafu/sysbench_wrapper/Dockerfile +++ b/snafu/sysbench_wrapper/Dockerfile @@ -1,11 +1,11 @@ -FROM registry.access.redhat.com/ubi8:latest +FROM registry.access.redhat.com/ubi9:latest MAINTAINER Ed Chong -RUN dnf install -y --nodocs https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm +RUN dnf install -y --nodocs https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm RUN dnf install -y --nodocs sysbench && dnf clean all -RUN dnf install -y --nodocs python3.8 python38-devel procps-ng iproute net-tools ethtool nmap iputils gcc && dnf clean all +RUN dnf install -y --nodocs python3.11 python3.11-devel procps-ng iproute net-tools ethtool nmap iputils gcc && dnf clean all RUN ln -s /usr/bin/python3 /usr/bin/python RUN pip3 install --upgrade pip # benchmark-wrapper fails to install otherwise COPY . /opt/snafu -RUN pip3 install -r /opt/snafu/requirements/py38-reqs/install.txt -e /opt/snafu +RUN pip3 install -e /opt/snafu diff --git a/snafu/sysbench_wrapper/trigger_sysbench.py b/snafu/sysbench_wrapper/trigger_sysbench.py index 8f9e601f..f233ea6f 100644 --- a/snafu/sysbench_wrapper/trigger_sysbench.py +++ b/snafu/sysbench_wrapper/trigger_sysbench.py @@ -40,7 +40,6 @@ def __init__(self, uuid, user, cluster_name, sysbench_file, sample, sysbench_arg self.test_config = {} def _run_sysbench(self): - """ loop through each option in config file and add it to the command line option, and test_confg then run the command. this we reduce our dependency on diff --git a/snafu/trex_wrapper/Dockerfile b/snafu/trex_wrapper/Dockerfile index ae212168..f7ff0482 100644 --- a/snafu/trex_wrapper/Dockerfile +++ b/snafu/trex_wrapper/Dockerfile @@ -1,10 +1,8 @@ -FROM registry.access.redhat.com/ubi8:latest +FROM registry.access.redhat.com/ubi9:latest # install requirements RUN dnf -y install --nodocs git wget procps python3 vim python3-pip python3-devel pciutils gcc && dnf clean all -COPY snafu/image_resources/centos8.repo /etc/yum.repos.d/centos8.repo -COPY snafu/image_resources/centos8-appstream.repo /etc/yum.repos.d/centos8-appstream.repo -RUN dnf install -y --nodocs hostname iproute net-tools ethtool nmap iputils https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm && dnf clean all +RUN dnf install -y --nodocs hostname iproute net-tools ethtool nmap iputils https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && dnf clean all # install trex server RUN mkdir -p /opt/trex @@ -17,7 +15,7 @@ RUN git clone -b v2.87 https://github.com/cisco-system-traffic-generator/trex-co ENV PYTHONPATH="/opt/trex/trex-core/scripts/automation/trex_control_plane/interactive" # copy script -COPY snafu/trex_wrapper/scripts/ /usr/local/bin/ +COPY snafu/trex_wrapper/scripts/ /usr/local/bin/ RUN chmod +x /usr/local/bin/run* # copy snafu script diff --git a/snafu/upgrade_openshift_wrapper/Dockerfile b/snafu/upgrade_openshift_wrapper/Dockerfile index 504022a1..cf0e9138 100644 --- a/snafu/upgrade_openshift_wrapper/Dockerfile +++ b/snafu/upgrade_openshift_wrapper/Dockerfile @@ -1,8 +1,7 @@ -FROM registry.access.redhat.com/ubi8:latest +FROM registry.access.redhat.com/ubi9:latest -COPY snafu/image_resources/centos8-appstream.repo /etc/yum.repos.d/centos8-appstream.repo RUN dnf install -y --nodocs python3 python3-pip python3-devel gcc && dnf clean all -RUN dnf install -y --nodocs redis --enablerepo=centos8-appstream && dnf clean all +RUN dnf install -y --nodocs redis && dnf clean all RUN curl -L https://mirror.openshift.com/pub/openshift-v4/clients/ocp/latest/openshift-client-linux.tar.gz | tar xz -C /usr/bin/ oc RUN ln -s /usr/bin/python3 /usr/bin/python RUN mkdir -p /opt/snafu/ diff --git a/snafu/upgrade_openshift_wrapper/Dockerfile.ppc64le b/snafu/upgrade_openshift_wrapper/Dockerfile.ppc64le index f5101bae..db8a2cb6 100755 --- a/snafu/upgrade_openshift_wrapper/Dockerfile.ppc64le +++ b/snafu/upgrade_openshift_wrapper/Dockerfile.ppc64le @@ -1,8 +1,10 @@ -FROM registry.access.redhat.com/ubi8:latest +FROM registry.access.redhat.com/ubi9:latest -COPY snafu/image_resources/centos8-appstream.repo /etc/yum.repos.d/centos8-appstream.repo -RUN dnf install -y --nodocs python3 python3-pip gcc python3-devel gcc-c++ atlas-devel gcc-gfortran && dnf clean all -RUN dnf install -y --nodocs redis --enablerepo=centos8-appstream && dnf clean all +COPY snafu/image_resources/centos9.repo /etc/yum.repos.d/centos9.repo +RUN dnf config-manager --set-enabled ubi-9-codeready-builder-rpms +RUN dnf install -y --nodocs python3 python3-pip gcc python3-devel gcc-c++ gcc-gfortran && dnf clean all +RUN dnf install -y --enablerepo=centos9 --nodocs atlas-devel || dnf install -y --nodocs openblas-devel +RUN dnf install -y --nodocs redis && dnf clean all RUN curl -L https://mirror.openshift.com/pub/openshift-v4/ppc64le/clients/ocp/latest/openshift-client-linux.tar.gz | tar xz -C /usr/bin/ oc RUN ln -s /usr/bin/python3 /usr/bin/python RUN python3 -m pip install --upgrade cython numpy importlib_metadata 'urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1' && python3 -m pip install --upgrade scipy pandas diff --git a/snafu/upgrade_openshift_wrapper/trigger_upgrade.py b/snafu/upgrade_openshift_wrapper/trigger_upgrade.py index f3ded312..e083cc7f 100644 --- a/snafu/upgrade_openshift_wrapper/trigger_upgrade.py +++ b/snafu/upgrade_openshift_wrapper/trigger_upgrade.py @@ -90,7 +90,7 @@ def _run_upgrade(self): elif self.version: cmd = ("oc adm upgrade --to={}").format(self.version) logger.info(cmd) - p = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + p = subprocess.run(cmd, shell=True, capture_output=True) if p.returncode == 1: logger.error("Error executing upgrade command. The error was:") @@ -153,7 +153,7 @@ def _run_upgrade(self): logger.info(clusterversion.get().attributes.items[0].status.history[0]) break status = "oc adm upgrade | grep info" - s = subprocess.run(status, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + s = subprocess.run(status, shell=True, capture_output=True) logger.info(s.stdout.strip().decode("utf-8")) time.sleep(self.poll_interval) @@ -184,9 +184,7 @@ def get_timings(self): op_time = datetime.datetime.strptime(op.metadata.managedFields[field_len - 1].time, time_format) update_time = op_time - self.start_time op_time = op_time.strftime(time_format) - logger.info( - "Operator: {} finished update at {} and took {}".format(op_name, op_time, update_time) - ) + logger.info(f"Operator: {op_name} finished update at {op_time} and took {update_time}") op_data = { "operator": op_name, "end_time": op_time, diff --git a/snafu/utils/py_es_bulk.py b/snafu/utils/py_es_bulk.py index 5d0085bf..af242907 100644 --- a/snafu/utils/py_es_bulk.py +++ b/snafu/utils/py_es_bulk.py @@ -41,7 +41,6 @@ def _tstos(ts=None): def _calc_backoff_sleep(backoff): - global _r b = math.pow(2, backoff) return _r.uniform(0, min(b, _MAX_SLEEP_TIME)) diff --git a/snafu/utils/redis_scripts/publisher.py b/snafu/utils/redis_scripts/publisher.py index 69c8294a..641a1855 100755 --- a/snafu/utils/redis_scripts/publisher.py +++ b/snafu/utils/redis_scripts/publisher.py @@ -13,7 +13,7 @@ def run_publisher(redis_host, redis_port, benchmark, pod_count): r = redis.StrictRedis(host=redis_host, port=redis_port) count = 0 while count != pod_count: - redis_command = "PUBSUB NUMSUB {}".format(benchmark) + redis_command = f"PUBSUB NUMSUB {benchmark}" count = r.execute_command(redis_command)[1] print(count) time.sleep(1) diff --git a/snafu/utils/redis_scripts/subscriber.py b/snafu/utils/redis_scripts/subscriber.py index b5a00893..1e85e837 100755 --- a/snafu/utils/redis_scripts/subscriber.py +++ b/snafu/utils/redis_scripts/subscriber.py @@ -18,7 +18,7 @@ def run_subscriber(redis_host, redis_port, benchmark): count = 1 while STATE: - print("Waiting For all {} Pods to get ready ...{}".format(benchmark, count)) + print(f"Waiting For all {benchmark} Pods to get ready ...{count}") count += 1 message = p.get_message() if message: @@ -28,7 +28,7 @@ def run_subscriber(redis_host, redis_port, benchmark): time.sleep(1) - print("Executing {}...".format(benchmark)) + print(f"Executing {benchmark}...") return True except Exception as e: print("******Exception Occured*******") diff --git a/snafu/vegeta_wrapper/Dockerfile b/snafu/vegeta_wrapper/Dockerfile index af4598c1..3e038cee 100644 --- a/snafu/vegeta_wrapper/Dockerfile +++ b/snafu/vegeta_wrapper/Dockerfile @@ -1,8 +1,7 @@ -FROM registry.access.redhat.com/ubi8:latest +FROM registry.access.redhat.com/ubi9:latest -COPY snafu/image_resources/centos8-appstream.repo /etc/yum.repos.d/centos8-appstream.repo RUN dnf install -y --nodocs python3 python3-pip python3-devel procps-ng iproute net-tools ethtool nmap iputils gcc && dnf clean all -RUN dnf install -y --nodocs redis --enablerepo=centos8-appstream && dnf clean all +RUN dnf install -y --nodocs redis && dnf clean all RUN curl -L https://github.com/tsenart/vegeta/releases/download/v12.8.3/vegeta-12.8.3-linux-amd64.tar.gz | tar xz -C /usr/bin/ vegeta RUN ln -s /usr/bin/python3 /usr/bin/python RUN mkdir -p /opt/snafu/ diff --git a/snafu/vegeta_wrapper/trigger_vegeta.py b/snafu/vegeta_wrapper/trigger_vegeta.py index 6fec4d35..6e7587a9 100644 --- a/snafu/vegeta_wrapper/trigger_vegeta.py +++ b/snafu/vegeta_wrapper/trigger_vegeta.py @@ -65,7 +65,7 @@ def _run_vegeta(self): " -max-workers={1} | vegeta report --every=1s --type=json --output=vegeta.log" ).format(self.keepalive, self.workers, self.duration, self.targets) logger.info(cmd) - p = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + p = subprocess.run(cmd, shell=True, capture_output=True) return p.stdout.strip().decode("utf-8"), p.stderr.strip().decode("utf-8"), p.returncode def _parse_stdout(self): diff --git a/snafu/ycsb_wrapper/Dockerfile b/snafu/ycsb_wrapper/Dockerfile index f4d5a54a..27be39a3 100644 --- a/snafu/ycsb_wrapper/Dockerfile +++ b/snafu/ycsb_wrapper/Dockerfile @@ -1,7 +1,7 @@ -FROM registry.access.redhat.com/ubi8:latest +FROM registry.access.redhat.com/ubi9:latest RUN curl -L https://github.com/brianfrankcooper/YCSB/releases/download/0.15.0/ycsb-0.15.0.tar.gz | tar xz && mv ycsb-0.15.0 ycsb -RUN dnf install -y --nodocs https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm +RUN dnf install -y --nodocs https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm RUN dnf install -y --nodocs git java python3 python2 python3-pip python3-devel gcc procps-ng iproute net-tools ethtool nmap iputils && dnf clean all RUN ln -s /usr/bin/python3 /usr/bin/python COPY . /opt/snafu/ diff --git a/snafu/ycsb_wrapper/Dockerfile.ppc64le b/snafu/ycsb_wrapper/Dockerfile.ppc64le index 9f92457c..a3b78b5f 100755 --- a/snafu/ycsb_wrapper/Dockerfile.ppc64le +++ b/snafu/ycsb_wrapper/Dockerfile.ppc64le @@ -1,8 +1,11 @@ -FROM registry.access.redhat.com/ubi8:latest +FROM registry.access.redhat.com/ubi9:latest RUN curl -L https://github.com/brianfrankcooper/YCSB/releases/download/0.15.0/ycsb-0.15.0.tar.gz | tar xz && mv ycsb-0.15.0 ycsb -RUN dnf install -y --nodocs https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -RUN dnf install -y --nodocs git java python3 python2 python3-pip procps-ng iproute net-tools ethtool nmap iputils gcc python3-devel gcc-c++ atlas-devel gcc-gfortran && dnf clean all +RUN dnf install -y --nodocs https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm +COPY snafu/image_resources/centos9.repo /etc/yum.repos.d/centos9.repo +RUN dnf config-manager --set-enabled ubi-9-codeready-builder-rpms +RUN dnf install -y --nodocs git java python3 python2 python3-pip procps-ng iproute net-tools ethtool nmap iputils gcc python3-devel gcc-c++ gcc-gfortran && dnf clean all +RUN dnf install -y --enablerepo=centos9 --nodocs atlas-devel || dnf install -y --nodocs openblas-devel RUN ln -s /usr/bin/python3 /usr/bin/python RUN python3 -m pip install --upgrade cython numpy importlib_metadata 'urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1' && python3 -m pip install --upgrade scipy pandas COPY . /opt/snafu/ diff --git a/snafu/ycsb_wrapper/trigger_ycsb.py b/snafu/ycsb_wrapper/trigger_ycsb.py index 8310c44a..39c7e79a 100644 --- a/snafu/ycsb_wrapper/trigger_ycsb.py +++ b/snafu/ycsb_wrapper/trigger_ycsb.py @@ -123,14 +123,14 @@ def emit_actions(self): python, self.phase, self.driver[0], self.workload, extra ) stdout, stderr, rc = self._run(cmd) - output = "{}\n{}".format(stdout, stderr) + output = f"{stdout}\n{stderr}" else: self.phase = "run" cmd = "{} /ycsb/bin/ycsb {} {} -s -P /tmp/ycsb/{} {}".format( python, self.phase, self.driver[0], self.workload, extra ) stdout, stderr, rc = self._run(cmd) - output = "{}\n{}".format(stdout, stderr) + output = f"{stdout}\n{stderr}" if rc != 0: print("YCSB failed to execute:\n%s", stderr) diff --git a/tox.ini b/tox.ini index a8332a0c..3df2a742 100644 --- a/tox.ini +++ b/tox.ini @@ -1,16 +1,12 @@ [tox] envlist = - py{36,37,38,39}{-unit,-docs} + py{311,312}{-unit,-docs} skip_missing_interpreters = true -[testenv:py{36,37,38,39}-unit] -deps = - py36-unit: -Ur{toxinidir}/requirements/py36-reqs/tests.txt - py37-unit: -Ur{toxinidir}/requirements/py37-reqs/tests.txt - py38-unit: -Ur{toxinidir}/requirements/py38-reqs/tests.txt - py39-unit: -Ur{toxinidir}/requirements/py39-reqs/tests.txt +[testenv:py{311,312}-unit] +extras = tests setenv = - py{36,37,38,39}-unit: COVERAGE_FILE = .coverage.{envname} + py{311,312}-unit: COVERAGE_FILE = .coverage.{envname} commands = pytest --ignore=tests/functional --cov-config=.coveragerc --cov=snafu --cov-report=term-missing:skip-covered --doctest-modules @@ -21,23 +17,10 @@ commands = coverage combine coverage xml -[testenv:py{36,37,38,39}-docs] -deps = - py36-docs: -Ur{toxinidir}/requirements/py36-reqs/docs.txt - py37-docs: -Ur{toxinidir}/requirements/py37-reqs/docs.txt - py38-docs: -Ur{toxinidir}/requirements/py38-reqs/docs.txt - py39-docs: -Ur{toxinidir}/requirements/py39-reqs/docs.txt +[testenv:py{311,312}-docs] +extras = docs allowlist_externals = sphinx-build commands = sphinx-build -d "{toxworkdir}/docs_doctree" docs/source "{toxworkdir}/docs_out" --color -W -bhtml sphinx-build -d "{toxworkdir}/docs_doctree" docs/source "{toxworkdir}/docs_out/linkchecks" --color -W -blinkcheck - -[testenv:py{36,37,38,39}-reqs] -skip_install = true -deps = pip-tools -commands = - pip install --upgrade pip - pip-compile --upgrade setup.cfg --output-file requirements/{envname}/install.txt - pip-compile --upgrade setup.cfg requirements/{envname}/install.txt --extra docs --output-file requirements/{envname}/docs.txt - pip-compile --upgrade setup.cfg requirements/{envname}/install.txt --extra tests --output-file requirements/{envname}/tests.txt