diff --git a/.github/PULL_REQUEST_TEMPLATE/new_container.md b/.github/PULL_REQUEST_TEMPLATE/new_container.md index dcdff17b..29b8190d 100644 --- a/.github/PULL_REQUEST_TEMPLATE/new_container.md +++ b/.github/PULL_REQUEST_TEMPLATE/new_container.md @@ -2,7 +2,7 @@ You have implemented a new container and would like to contribute it? Great! Her - [ ] Create a new feature directory and populate it with the package structure [described in the documentation](https://testcontainers-python.readthedocs.io/en/latest/#package-structure). Copying one of the existing features is likely the best way to get started. - [ ] Implement the new feature (typically in `__init__.py`) and corresponding tests. -- [ ] Add a line `-e file:[feature name]` to `requirements.in` and run `make requirements`. This command will find any new requirements and generate lock files to ensure reproducible builds (see the [pip-tools documentation](https://pip-tools.readthedocs.io/en/latest/) for details). Then run `pip install -r requirements/[your python version].txt` to install the new requirements. - [ ] Update the feature `README.rst` and add it to the table of contents (`toctree` directive) in the top-level `README.rst`. -- [ ] Add a line `[feature name]` to the list of components in the GitHub Action workflow in `.github/workflows/main.yml` to run tests, build, and publish your package when pushed to the `master` branch. -- [ ] Rebase your development branch on `master` (or merge `master` into your development branch). +- [ ] Add a line `[feature name]` to the list of components in the GitHub Action workflow in `.github/workflows/main.yml` to run tests, build, and publish your package when pushed to the `main` branch. +- [ ] Rebase your development branch on `main` (or merge `main` into your development branch). +- [ ] Add a line `-e file:[feature name]` to `requirements.in` and open a pull request. Opening a pull request will automatically generate lock files to ensure reproducible builds (see the [pip-tools documentation](https://pip-tools.readthedocs.io/en/latest/) for details). Finally, run `python get_requirements.py --pr=[your PR number]` to fetch the updated requirement files (the build needs to have succeeded). diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 893fa5f9..266d60dd 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -1,9 +1,9 @@ name: testcontainers documentation on: push: - branches: [master] + branches: [main] pull_request: - branches: [master] + branches: [main] jobs: build: @@ -15,10 +15,10 @@ jobs: with: python-version: "3.10" cache: pip - cache-dependency-path: requirements/3.10.txt + cache-dependency-path: requirements/ubuntu-latest-3.10.txt - name: Install Python dependencies run: | pip install --upgrade pip - pip install -r requirements/3.10.txt + pip install -r requirements/ubuntu-latest-3.10.txt - name: Build documentation run: make docs diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index be6d0bcd..84b8ca10 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,57 +1,62 @@ name: testcontainers packages on: push: - branches: [master] + branches: [main] pull_request: - branches: [master] + branches: [main] jobs: build: strategy: matrix: - python-version: - - "3.7" - - "3.8" - - "3.9" - - "3.10" - - "3.11" + runtime: + - machine: ubuntu-latest + python-version: "3.7" + - machine: ubuntu-latest + python-version: "3.8" + - machine: ubuntu-latest + python-version: "3.9" + - machine: ubuntu-latest + python-version: "3.10" + - machine: ubuntu-latest + python-version: "3.11" component: - - arangodb - - azurite - - clickhouse - - compose - - core - - elasticsearch - - google - - kafka - - keycloak - - localstack - - meta - - minio - - mongodb - - mssql - - mysql - - neo4j - - nginx - - opensearch - - oracle - - postgres - - rabbitmq - - redis - - selenium - runs-on: ubuntu-latest + - arangodb + - azurite + - clickhouse + - compose + - core + - elasticsearch + - google + - kafka + - keycloak + - localstack + - meta + - minio + - mongodb + - mssql + - mysql + - neo4j + - nginx + - opensearch + - oracle + - postgres + - rabbitmq + - redis + - selenium + runs-on: ${{ matrix.runtime.machine }} steps: - uses: actions/checkout@v3 - - name: Setup python ${{ matrix.python-version }} + - name: Setup python ${{ matrix.runtime.python-version }} uses: actions/setup-python@v4 with: - python-version: ${{ matrix.python-version }} + python-version: ${{ matrix.runtime.python-version }} cache: pip - cache-dependency-path: ${{ format('requirements/{0}.txt', matrix.python-version) }} + cache-dependency-path: ${{ format('requirements/{0}-{1}.txt', matrix.runtime.machine, matrix.runtime.python-version) }} - name: Install Python dependencies run: | pip install --upgrade pip - pip install -r requirements/${{ matrix.python-version }}.txt + pip install -r requirements/${{ matrix.runtime.machine }}-${{ matrix.runtime.python-version }}.txt - name: Run docker diagnostics if: matrix.component == 'core' run: | @@ -76,9 +81,10 @@ jobs: - name: Upload the package to pypi if: > github.event_name == 'push' - && github.ref == 'refs/heads/master' + && github.ref == 'refs/heads/main' && github.repository_owner == 'testcontainers' - && matrix.python-version == '3.10' + && matrix.runtime.python-version == '3.10' + && matrix.runtime.machine == 'ubuntu-latest' env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} diff --git a/.github/workflows/requirements.yml b/.github/workflows/requirements.yml index 684447d4..72c41f30 100644 --- a/.github/workflows/requirements.yml +++ b/.github/workflows/requirements.yml @@ -1,35 +1,43 @@ name: testcontainers requirements on: push: - branches: [master] + branches: [main] pull_request: - branches: [master] + branches: [main] jobs: requirements: strategy: + fail-fast: false matrix: - python-version: - - "3.7" - - "3.8" - - "3.9" - - "3.10" - - "3.11" - runs-on: ubuntu-latest + runtime: + - machine: ubuntu-latest + python-version: "3.7" + - machine: ubuntu-latest + python-version: "3.8" + - machine: ubuntu-latest + python-version: "3.9" + - machine: ubuntu-latest + python-version: "3.10" + - machine: ubuntu-latest + python-version: "3.11" + - machine: windows-latest + python-version: "3.10" + - machine: macos-latest + python-version: "3.10" + runs-on: ${{ matrix.runtime.machine }} steps: - uses: actions/checkout@v3 - - name: Setup python ${{ matrix.python-version }} + - name: Setup python ${{ matrix.runtime.python-version }} uses: actions/setup-python@v4 with: - python-version: ${{ matrix.python-version }} + python-version: ${{ matrix.runtime.python-version }} - name: Update pip and install pip-tools run: pip install --upgrade pip pip-tools - name: Build requirements - run: | - rm requirements/${{ matrix.python-version }}.txt - pip-compile --resolver=backtracking -v --upgrade -o requirements/${{ matrix.python-version }}.txt + run: pip-compile --resolver=backtracking -v --upgrade -o requirements.txt - name: Store requirements as artifact uses: actions/upload-artifact@v3 with: - name: requirements-${{ matrix.python-version }}.txt - path: requirements/${{ matrix.python-version }}.txt + name: requirements-${{ matrix.runtime.machine }}-${{ matrix.runtime.python-version }}.txt + path: requirements.txt diff --git a/.gitignore b/.gitignore index a2c62686..3da297de 100644 --- a/.gitignore +++ b/.gitignore @@ -72,3 +72,4 @@ venv .DS_Store .python-version .env +.github-token diff --git a/Makefile b/Makefile index 4eaf1cc4..501172c9 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,6 @@ PYTHON_VERSIONS = 3.7 3.8 3.9 3.10 3.11 PYTHON_VERSION ?= 3.10 IMAGE = testcontainers-python:${PYTHON_VERSION} -REQUIREMENTS = $(addprefix requirements/,${PYTHON_VERSIONS:=.txt}) RUN = docker run --rm -it # Get all directories that contain a setup.py and get the directory name. PACKAGES = $(subst /,,$(dir $(wildcard */setup.py))) @@ -26,7 +25,7 @@ ${DISTRIBUTIONS} : %/dist : %/setup.py # Targets to run the test suite for each package. tests : ${TESTS} ${TESTS} : %/tests : - pytest -svx --cov-report=term-missing --cov=testcontainers.$* --tb=short $*/tests + pytest -svx --cov-report=term-missing --cov=testcontainers.$* --tb=short --strict-markers $*/tests # Targets to lint the code. lint : ${LINT} @@ -43,7 +42,7 @@ ${UPLOAD} : %/upload : fi # Targets to build docker images -image: requirements/${PYTHON_VERSION}.txt +image: requirements/ubunut-latest-${PYTHON_VERSION}.txt docker build --build-arg version=${PYTHON_VERSION} -t ${IMAGE} . # Targets to run tests in docker containers @@ -63,13 +62,6 @@ doctest : ${DOCTESTS} ${DOCTESTS} : %/doctest : sphinx-build -b doctest -c doctests $* docs/_build -# Targets to build requirement files -requirements : ${REQUIREMENTS} -${REQUIREMENTS} : requirements/%.txt : requirements.in */setup.py - mkdir -p $(dir $@) - ${RUN} -w /workspace -v `pwd`:/workspace --platform=linux/amd64 python:$* bash -c \ - "pip install pip-tools && pip-compile --resolver=backtracking -v --upgrade -o $@ $<" - # Remove any generated files. clean : rm -rf docs/_build diff --git a/README.rst b/README.rst index 08145687..f490e76b 100644 --- a/README.rst +++ b/README.rst @@ -108,11 +108,4 @@ Testcontainers is a collection of `implicit namespace packages `__ documentation for details). Then run :code:`pip install -r requirements/[your python version].txt` to install the new requirements. -4. Update the feature :code:`README.rst` and add it to the table of contents (:code:`toctree` directive) in the top-level :code:`README.rst`. -5. Add a line :code:`[feature name]` to the list of components in the GitHub Action workflow in :code:`.github/workflows/main.yml` to run tests, build, and publish your package when pushed to the :code:`master` branch. -6. Rebase your development branch on :code:`master` (or merge :code:`master` into your development branch). +You want to contribute a new feature or container? Great! You can do that in six steps as outlined `here __`. diff --git a/get_requirements.py b/get_requirements.py new file mode 100644 index 00000000..b1ebc6db --- /dev/null +++ b/get_requirements.py @@ -0,0 +1,94 @@ +import argparse +import io +import pathlib +import requests +import shutil +import tempfile +import zipfile + + +def __main__() -> None: + parser = argparse.ArgumentParser() + parser.add_argument("--owner", default="testcontainers") + parser.add_argument("--repo", default="testcontainers-python") + parser.add_argument("--run", help="GitHub Action run id") + parser.add_argument("--pr", help="GitHub PR number") + parser.add_argument("--branch", default="main") + parser.add_argument("--token", help="GitHub autentication token") + args = parser.parse_args() + + # Get an access token. + if args.token: + token = args.token + elif (path := pathlib.Path(".github-token")).is_file(): + token = path.read_text().strip() + else: + token = input("we need a GitHub access token to fetch the requirements; please visit " + "https://github.com/settings/tokens/new, create a token with `public_repo` " + "scope, and paste it here: ").strip() + cache = input("do you want to cache the token in a `.github-token` file [Ny]? ") + if cache.lower().startswith("y"): + path.write_text(token) + + headers = { + "Authorization": f"Bearer {token}", + } + base_url = f"https://api.github.com/repos/{args.owner}/{args.repo}" + + if args.run: # Run id was specified. + run = args.run + elif args.pr: # PR was specified, let's get the most recent run id. + print(f"fetching most recent commit for PR #{args.pr}") + response = requests.get(f"{base_url}/pulls/{args.pr}", headers=headers) + response.raise_for_status() + response = response.json() + head_sha = response["head"]["sha"] + else: # Nothing was specified, let's get the most recent run id on the main branch. + print(f"fetching most recent commit for branch `{args.branch}`") + response = requests.get(f"{base_url}/branches/{args.branch}", headers=headers) + response.raise_for_status() + response = response.json() + head_sha = response["commit"]["sha"] + + # List all completed runs and find the one that generated the requirements. + response = requests.get(f"{base_url}/actions/runs", headers=headers, params={ + "head_sha": head_sha, + "status": "success", + }) + response.raise_for_status() + response = response.json() + + # Get the requirements run. + runs = [run for run in response["workflow_runs"] if + run["path"].endswith("requirements.yml")] + if len(runs) != 1: + raise RuntimeError(f"could not identify unique workflow run: {runs}") + run = runs[0]["id"] + + # Get all the artifacts. + print(f"fetching artifacts for run {run} ...") + url = f"{base_url}/actions/runs/{run}/artifacts" + response = requests.get(url, headers=headers) + response.raise_for_status() + response = response.json() + artifacts = response["artifacts"] + print(f"discovered {len(artifacts)} artifacts") + + # Get the content for each artifact and save it. + for artifact in artifacts: + name: str = artifact["name"] + name = name.removeprefix("requirements-") + print(f"fetching artifact {name} ...") + response = requests.get(artifact["archive_download_url"], headers=headers) + response.raise_for_status() + with zipfile.ZipFile(io.BytesIO(response.content)) as zip, \ + tempfile.TemporaryDirectory() as tempdir: + zip.extract("requirements.txt", tempdir) + shutil.move(pathlib.Path(tempdir) / "requirements.txt", + pathlib.Path("requirements") / name) + + print("done") + + +if __name__ == "__main__": + __main__() diff --git a/requirements/macos-latest-3.10.txt b/requirements/macos-latest-3.10.txt new file mode 100644 index 00000000..429a054f --- /dev/null +++ b/requirements/macos-latest-3.10.txt @@ -0,0 +1,445 @@ +# +# This file is autogenerated by pip-compile with Python 3.10 +# by the following command: +# +# pip-compile --output-file=requirements.txt --resolver=backtracking +# +-e file:meta + # via -r requirements.in +-e file:arangodb + # via -r requirements.in +-e file:azurite + # via -r requirements.in +-e file:clickhouse + # via -r requirements.in +-e file:compose + # via -r requirements.in +-e file:core + # via + # -r requirements.in + # testcontainers + # testcontainers-arangodb + # testcontainers-azurite + # testcontainers-clickhouse + # testcontainers-compose + # testcontainers-elasticsearch + # testcontainers-gcp + # testcontainers-kafka + # testcontainers-keycloak + # testcontainers-localstack + # testcontainers-minio + # testcontainers-mongodb + # testcontainers-mssql + # testcontainers-mysql + # testcontainers-neo4j + # testcontainers-nginx + # testcontainers-opensearch + # testcontainers-oracle + # testcontainers-postgres + # testcontainers-rabbitmq + # testcontainers-redis + # testcontainers-selenium +-e file:elasticsearch + # via -r requirements.in +-e file:google + # via -r requirements.in +-e file:kafka + # via -r requirements.in +-e file:keycloak + # via -r requirements.in +-e file:localstack + # via -r requirements.in +-e file:minio + # via -r requirements.in +-e file:mongodb + # via -r requirements.in +-e file:mssql + # via -r requirements.in +-e file:mysql + # via -r requirements.in +-e file:neo4j + # via -r requirements.in +-e file:nginx + # via -r requirements.in +-e file:opensearch + # via -r requirements.in +-e file:oracle + # via -r requirements.in +-e file:postgres + # via -r requirements.in +-e file:rabbitmq + # via -r requirements.in +-e file:redis + # via -r requirements.in +-e file:selenium + # via -r requirements.in +alabaster==0.7.13 + # via sphinx +asn1crypto==1.5.1 + # via scramp +async-generator==1.10 + # via trio +async-timeout==4.0.2 + # via redis +attrs==23.1.0 + # via + # jsonschema + # outcome + # trio +azure-core==1.26.4 + # via azure-storage-blob +azure-storage-blob==12.16.0 + # via testcontainers-azurite +babel==2.12.1 + # via sphinx +bcrypt==4.0.1 + # via paramiko +bleach==6.0.0 + # via readme-renderer +boto3==1.26.129 + # via testcontainers-localstack +botocore==1.29.129 + # via + # boto3 + # s3transfer +cachetools==5.3.0 + # via google-auth +certifi==2022.12.7 + # via + # minio + # opensearch-py + # requests + # selenium +cffi==1.15.1 + # via + # cryptography + # pynacl +charset-normalizer==3.1.0 + # via requests +clickhouse-driver==0.2.6 + # via testcontainers-clickhouse +coverage[toml]==7.2.5 + # via pytest-cov +cryptography==36.0.2 + # via + # -r requirements.in + # azure-storage-blob + # paramiko +cx-oracle==8.3.0 + # via testcontainers-oracle +deprecation==2.1.0 + # via python-keycloak +distro==1.8.0 + # via docker-compose +dnspython==2.3.0 + # via pymongo +docker[ssh]==6.1.0 + # via + # docker-compose + # testcontainers-core +docker-compose==1.29.2 + # via testcontainers-compose +dockerpty==0.4.1 + # via docker-compose +docopt==0.6.2 + # via docker-compose +docutils==0.19 + # via + # readme-renderer + # sphinx +ecdsa==0.18.0 + # via python-jose +entrypoints==0.3 + # via flake8 +exceptiongroup==1.1.1 + # via + # pytest + # trio + # trio-websocket +flake8==3.7.9 + # via -r requirements.in +google-api-core[grpc]==2.11.0 + # via google-cloud-pubsub +google-auth==2.17.3 + # via google-api-core +google-cloud-pubsub==2.16.1 + # via testcontainers-gcp +googleapis-common-protos[grpc]==1.59.0 + # via + # google-api-core + # grpc-google-iam-v1 + # grpcio-status +greenlet==2.0.2 + # via sqlalchemy +grpc-google-iam-v1==0.12.6 + # via google-cloud-pubsub +grpcio==1.54.0 + # via + # google-api-core + # google-cloud-pubsub + # googleapis-common-protos + # grpc-google-iam-v1 + # grpcio-status +grpcio-status==1.54.0 + # via + # google-api-core + # google-cloud-pubsub +h11==0.14.0 + # via wsproto +idna==3.4 + # via + # requests + # trio +imagesize==1.4.1 + # via sphinx +importlib-metadata==6.6.0 + # via + # keyring + # twine +iniconfig==2.0.0 + # via pytest +isodate==0.6.1 + # via azure-storage-blob +jaraco-classes==3.2.3 + # via keyring +jinja2==3.1.2 + # via sphinx +jmespath==1.0.1 + # via + # boto3 + # botocore +jsonschema==3.2.0 + # via docker-compose +kafka-python==2.0.2 + # via testcontainers-kafka +keyring==23.13.1 + # via twine +markdown-it-py==2.2.0 + # via rich +markupsafe==2.1.2 + # via jinja2 +mccabe==0.6.1 + # via flake8 +mdurl==0.1.2 + # via markdown-it-py +minio==7.1.14 + # via testcontainers-minio +more-itertools==9.1.0 + # via jaraco-classes +neo4j==5.8.0 + # via testcontainers-neo4j +opensearch-py==2.2.0 + # via testcontainers-opensearch +outcome==1.2.0 + # via trio +packaging==23.1 + # via + # deprecation + # docker + # pytest + # sphinx +paramiko==3.1.0 + # via docker +pg8000==1.29.4 + # via -r requirements.in +pika==1.3.2 + # via testcontainers-rabbitmq +pkginfo==1.9.6 + # via twine +pluggy==1.0.0 + # via pytest +proto-plus==1.22.2 + # via google-cloud-pubsub +protobuf==4.22.4 + # via + # google-api-core + # google-cloud-pubsub + # googleapis-common-protos + # grpc-google-iam-v1 + # grpcio-status + # proto-plus +psycopg2-binary==2.9.6 + # via testcontainers-postgres +pyasn1==0.5.0 + # via + # pyasn1-modules + # python-jose + # rsa +pyasn1-modules==0.3.0 + # via google-auth +pycodestyle==2.5.0 + # via flake8 +pycparser==2.21 + # via cffi +pyflakes==2.1.1 + # via flake8 +pygments==2.15.1 + # via + # readme-renderer + # rich + # sphinx +pyjwt==2.6.0 + # via python-arango +pymongo==4.3.3 + # via testcontainers-mongodb +pymssql==2.2.7 + # via testcontainers-mssql +pymysql==1.0.3 + # via testcontainers-mysql +pynacl==1.5.0 + # via paramiko +pyrsistent==0.19.3 + # via jsonschema +pysocks==1.7.1 + # via urllib3 +pytest==7.3.1 + # via + # -r requirements.in + # pytest-cov +pytest-cov==4.0.0 + # via -r requirements.in +python-arango==7.5.7 + # via testcontainers-arangodb +python-dateutil==2.8.2 + # via + # botocore + # opensearch-py + # pg8000 +python-dotenv==0.21.1 + # via docker-compose +python-jose==3.3.0 + # via python-keycloak +python-keycloak==2.16.1 + # via testcontainers-keycloak +pytz==2023.3 + # via + # clickhouse-driver + # neo4j +pytz-deprecation-shim==0.1.0.post0 + # via tzlocal +pyyaml==5.4.1 + # via docker-compose +readme-renderer==37.3 + # via twine +redis==4.5.4 + # via testcontainers-redis +requests==2.30.0 + # via + # azure-core + # docker + # docker-compose + # google-api-core + # opensearch-py + # python-arango + # python-keycloak + # requests-toolbelt + # sphinx + # twine +requests-toolbelt==0.10.1 + # via + # python-arango + # python-keycloak + # twine +rfc3986==2.0.0 + # via twine +rich==13.3.5 + # via twine +rsa==4.9 + # via + # google-auth + # python-jose +s3transfer==0.6.1 + # via boto3 +scramp==1.4.4 + # via pg8000 +selenium==4.9.0 + # via testcontainers-selenium +six==1.16.0 + # via + # azure-core + # bleach + # dockerpty + # ecdsa + # google-auth + # isodate + # jsonschema + # opensearch-py + # python-dateutil + # websocket-client +sniffio==1.3.0 + # via trio +snowballstemmer==2.2.0 + # via sphinx +sortedcontainers==2.4.0 + # via trio +sphinx==7.0.0 + # via -r requirements.in +sphinxcontrib-applehelp==1.0.4 + # via sphinx +sphinxcontrib-devhelp==1.0.2 + # via sphinx +sphinxcontrib-htmlhelp==2.0.1 + # via sphinx +sphinxcontrib-jsmath==1.0.1 + # via sphinx +sphinxcontrib-qthelp==1.0.3 + # via sphinx +sphinxcontrib-serializinghtml==1.1.5 + # via sphinx +sqlalchemy==2.0.12 + # via + # testcontainers-mssql + # testcontainers-mysql + # testcontainers-oracle + # testcontainers-postgres +texttable==1.6.7 + # via docker-compose +tomli==2.0.1 + # via + # coverage + # pytest +trio==0.22.0 + # via + # selenium + # trio-websocket +trio-websocket==0.10.2 + # via selenium +twine==4.0.2 + # via -r requirements.in +typing-extensions==4.5.0 + # via + # azure-core + # azure-storage-blob + # sqlalchemy +tzdata==2023.3 + # via pytz-deprecation-shim +tzlocal==4.3 + # via clickhouse-driver +urllib3[socks]==1.26.15 + # via + # botocore + # docker + # minio + # opensearch-py + # python-arango + # requests + # selenium + # testcontainers-core + # twine +webencodings==0.5.1 + # via bleach +websocket-client==0.59.0 + # via + # docker + # docker-compose +wheel==0.40.0 + # via -r requirements.in +wrapt==1.15.0 + # via testcontainers-core +wsproto==1.2.0 + # via trio-websocket +zipp==3.15.0 + # via importlib-metadata + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/requirements/3.10.txt b/requirements/ubuntu-latest-3.10.txt similarity index 97% rename from requirements/3.10.txt rename to requirements/ubuntu-latest-3.10.txt index f1a64157..ce657327 100644 --- a/requirements/3.10.txt +++ b/requirements/ubuntu-latest-3.10.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --output-file=requirements/3.10.txt --resolver=backtracking requirements.in +# pip-compile --output-file=requirements.txt --resolver=backtracking # -e file:meta # via -r requirements.in @@ -96,9 +96,9 @@ bcrypt==4.0.1 # via paramiko bleach==6.0.0 # via readme-renderer -boto3==1.26.127 +boto3==1.26.129 # via testcontainers-localstack -botocore==1.29.127 +botocore==1.29.129 # via # boto3 # s3transfer @@ -134,7 +134,7 @@ distro==1.8.0 # via docker-compose dnspython==2.3.0 # via pymongo -docker[ssh]==6.0.1 +docker[ssh]==6.1.0 # via # docker-compose # testcontainers-core @@ -163,7 +163,7 @@ google-api-core[grpc]==2.11.0 # via google-cloud-pubsub google-auth==2.17.3 # via google-api-core -google-cloud-pubsub==2.16.0 +google-cloud-pubsub==2.16.1 # via testcontainers-gcp googleapis-common-protos[grpc]==1.59.0 # via @@ -247,7 +247,7 @@ paramiko==3.1.0 # via docker pg8000==1.29.4 # via -r requirements.in -pika==1.3.1 +pika==1.3.2 # via testcontainers-rabbitmq pkginfo==1.9.6 # via twine diff --git a/requirements/3.11.txt b/requirements/ubuntu-latest-3.11.txt similarity index 97% rename from requirements/3.11.txt rename to requirements/ubuntu-latest-3.11.txt index cbd63b4a..cac9cd54 100644 --- a/requirements/3.11.txt +++ b/requirements/ubuntu-latest-3.11.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --output-file=requirements/3.11.txt --resolver=backtracking requirements.in +# pip-compile --output-file=requirements.txt --resolver=backtracking # -e file:meta # via -r requirements.in @@ -96,9 +96,9 @@ bcrypt==4.0.1 # via paramiko bleach==6.0.0 # via readme-renderer -boto3==1.26.127 +boto3==1.26.129 # via testcontainers-localstack -botocore==1.29.127 +botocore==1.29.129 # via # boto3 # s3transfer @@ -134,7 +134,7 @@ distro==1.8.0 # via docker-compose dnspython==2.3.0 # via pymongo -docker[ssh]==6.0.1 +docker[ssh]==6.1.0 # via # docker-compose # testcontainers-core @@ -160,7 +160,7 @@ google-api-core[grpc]==2.11.0 # via google-cloud-pubsub google-auth==2.17.3 # via google-api-core -google-cloud-pubsub==2.16.0 +google-cloud-pubsub==2.16.1 # via testcontainers-gcp googleapis-common-protos[grpc]==1.59.0 # via @@ -244,7 +244,7 @@ paramiko==3.1.0 # via docker pg8000==1.29.4 # via -r requirements.in -pika==1.3.1 +pika==1.3.2 # via testcontainers-rabbitmq pkginfo==1.9.6 # via twine diff --git a/requirements/3.7.txt b/requirements/ubuntu-latest-3.7.txt similarity index 98% rename from requirements/3.7.txt rename to requirements/ubuntu-latest-3.7.txt index a19856f0..fbe67cf4 100644 --- a/requirements/3.7.txt +++ b/requirements/ubuntu-latest-3.7.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.7 # by the following command: # -# pip-compile --output-file=requirements/3.7.txt --resolver=backtracking requirements.in +# pip-compile --output-file=requirements.txt --resolver=backtracking # -e file:meta # via -r requirements.in @@ -100,9 +100,9 @@ bcrypt==4.0.1 # via paramiko bleach==6.0.0 # via readme-renderer -boto3==1.26.127 +boto3==1.26.129 # via testcontainers-localstack -botocore==1.29.127 +botocore==1.29.129 # via # boto3 # s3transfer @@ -140,7 +140,7 @@ distro==1.8.0 # via docker-compose dnspython==2.3.0 # via pymongo -docker[ssh]==6.0.1 +docker[ssh]==6.1.0 # via # docker-compose # testcontainers-core @@ -169,7 +169,7 @@ google-api-core[grpc]==2.11.0 # via google-cloud-pubsub google-auth==2.17.3 # via google-api-core -google-cloud-pubsub==2.16.0 +google-cloud-pubsub==2.16.1 # via testcontainers-gcp googleapis-common-protos[grpc]==1.59.0 # via @@ -264,7 +264,7 @@ paramiko==3.1.0 # via docker pg8000==1.29.4 # via -r requirements.in -pika==1.3.1 +pika==1.3.2 # via testcontainers-rabbitmq pkginfo==1.9.6 # via twine diff --git a/requirements/3.8.txt b/requirements/ubuntu-latest-3.8.txt similarity index 98% rename from requirements/3.8.txt rename to requirements/ubuntu-latest-3.8.txt index 530e0fd6..70a86aa0 100644 --- a/requirements/3.8.txt +++ b/requirements/ubuntu-latest-3.8.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.8 # by the following command: # -# pip-compile --output-file=requirements/3.8.txt --resolver=backtracking requirements.in +# pip-compile --output-file=requirements.txt --resolver=backtracking # -e file:meta # via -r requirements.in @@ -100,9 +100,9 @@ bcrypt==4.0.1 # via paramiko bleach==6.0.0 # via readme-renderer -boto3==1.26.127 +boto3==1.26.129 # via testcontainers-localstack -botocore==1.29.127 +botocore==1.29.129 # via # boto3 # s3transfer @@ -138,7 +138,7 @@ distro==1.8.0 # via docker-compose dnspython==2.3.0 # via pymongo -docker[ssh]==6.0.1 +docker[ssh]==6.1.0 # via # docker-compose # testcontainers-core @@ -167,7 +167,7 @@ google-api-core[grpc]==2.11.0 # via google-cloud-pubsub google-auth==2.17.3 # via google-api-core -google-cloud-pubsub==2.16.0 +google-cloud-pubsub==2.16.1 # via testcontainers-gcp googleapis-common-protos[grpc]==1.59.0 # via @@ -254,7 +254,7 @@ paramiko==3.1.0 # via docker pg8000==1.29.4 # via -r requirements.in -pika==1.3.1 +pika==1.3.2 # via testcontainers-rabbitmq pkginfo==1.9.6 # via twine diff --git a/requirements/3.9.txt b/requirements/ubuntu-latest-3.9.txt similarity index 98% rename from requirements/3.9.txt rename to requirements/ubuntu-latest-3.9.txt index 5009c1f7..a1e4dd7f 100644 --- a/requirements/3.9.txt +++ b/requirements/ubuntu-latest-3.9.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.9 # by the following command: # -# pip-compile --output-file=requirements/3.9.txt --resolver=backtracking requirements.in +# pip-compile --output-file=requirements.txt --resolver=backtracking # -e file:meta # via -r requirements.in @@ -96,9 +96,9 @@ bcrypt==4.0.1 # via paramiko bleach==6.0.0 # via readme-renderer -boto3==1.26.127 +boto3==1.26.129 # via testcontainers-localstack -botocore==1.29.127 +botocore==1.29.129 # via # boto3 # s3transfer @@ -134,7 +134,7 @@ distro==1.8.0 # via docker-compose dnspython==2.3.0 # via pymongo -docker[ssh]==6.0.1 +docker[ssh]==6.1.0 # via # docker-compose # testcontainers-core @@ -163,7 +163,7 @@ google-api-core[grpc]==2.11.0 # via google-cloud-pubsub google-auth==2.17.3 # via google-api-core -google-cloud-pubsub==2.16.0 +google-cloud-pubsub==2.16.1 # via testcontainers-gcp googleapis-common-protos[grpc]==1.59.0 # via @@ -248,7 +248,7 @@ paramiko==3.1.0 # via docker pg8000==1.29.4 # via -r requirements.in -pika==1.3.1 +pika==1.3.2 # via testcontainers-rabbitmq pkginfo==1.9.6 # via twine diff --git a/requirements/windows-latest-3.10.txt b/requirements/windows-latest-3.10.txt new file mode 100644 index 00000000..c567ecf4 --- /dev/null +++ b/requirements/windows-latest-3.10.txt @@ -0,0 +1,457 @@ +# +# This file is autogenerated by pip-compile with Python 3.10 +# by the following command: +# +# pip-compile --output-file=requirements.txt --resolver=backtracking +# +-e file:meta + # via -r requirements.in +-e file:arangodb + # via -r requirements.in +-e file:azurite + # via -r requirements.in +-e file:clickhouse + # via -r requirements.in +-e file:compose + # via -r requirements.in +-e file:core + # via + # -r requirements.in + # testcontainers + # testcontainers-arangodb + # testcontainers-azurite + # testcontainers-clickhouse + # testcontainers-compose + # testcontainers-elasticsearch + # testcontainers-gcp + # testcontainers-kafka + # testcontainers-keycloak + # testcontainers-localstack + # testcontainers-minio + # testcontainers-mongodb + # testcontainers-mssql + # testcontainers-mysql + # testcontainers-neo4j + # testcontainers-nginx + # testcontainers-opensearch + # testcontainers-oracle + # testcontainers-postgres + # testcontainers-rabbitmq + # testcontainers-redis + # testcontainers-selenium +-e file:elasticsearch + # via -r requirements.in +-e file:google + # via -r requirements.in +-e file:kafka + # via -r requirements.in +-e file:keycloak + # via -r requirements.in +-e file:localstack + # via -r requirements.in +-e file:minio + # via -r requirements.in +-e file:mongodb + # via -r requirements.in +-e file:mssql + # via -r requirements.in +-e file:mysql + # via -r requirements.in +-e file:neo4j + # via -r requirements.in +-e file:nginx + # via -r requirements.in +-e file:opensearch + # via -r requirements.in +-e file:oracle + # via -r requirements.in +-e file:postgres + # via -r requirements.in +-e file:rabbitmq + # via -r requirements.in +-e file:redis + # via -r requirements.in +-e file:selenium + # via -r requirements.in +alabaster==0.7.13 + # via sphinx +asn1crypto==1.5.1 + # via scramp +async-generator==1.10 + # via trio +async-timeout==4.0.2 + # via redis +attrs==23.1.0 + # via + # jsonschema + # outcome + # trio +azure-core==1.26.4 + # via azure-storage-blob +azure-storage-blob==12.16.0 + # via testcontainers-azurite +babel==2.12.1 + # via sphinx +bcrypt==4.0.1 + # via paramiko +bleach==6.0.0 + # via readme-renderer +boto3==1.26.129 + # via testcontainers-localstack +botocore==1.29.129 + # via + # boto3 + # s3transfer +cachetools==5.3.0 + # via google-auth +certifi==2022.12.7 + # via + # minio + # opensearch-py + # requests + # selenium +cffi==1.15.1 + # via + # cryptography + # pynacl + # trio +charset-normalizer==3.1.0 + # via requests +clickhouse-driver==0.2.6 + # via testcontainers-clickhouse +colorama==0.4.6 + # via + # docker-compose + # pytest + # sphinx +coverage[toml]==7.2.5 + # via pytest-cov +cryptography==36.0.2 + # via + # -r requirements.in + # azure-storage-blob + # paramiko +cx-oracle==8.3.0 + # via testcontainers-oracle +deprecation==2.1.0 + # via python-keycloak +distro==1.8.0 + # via docker-compose +dnspython==2.3.0 + # via pymongo +docker[ssh]==6.1.0 + # via + # docker-compose + # testcontainers-core +docker-compose==1.29.2 + # via testcontainers-compose +dockerpty==0.4.1 + # via docker-compose +docopt==0.6.2 + # via docker-compose +docutils==0.19 + # via + # readme-renderer + # sphinx +ecdsa==0.18.0 + # via python-jose +entrypoints==0.3 + # via flake8 +exceptiongroup==1.1.1 + # via + # pytest + # trio + # trio-websocket +flake8==3.7.9 + # via -r requirements.in +google-api-core[grpc]==2.11.0 + # via google-cloud-pubsub +google-auth==2.17.3 + # via google-api-core +google-cloud-pubsub==2.16.1 + # via testcontainers-gcp +googleapis-common-protos[grpc]==1.59.0 + # via + # google-api-core + # grpc-google-iam-v1 + # grpcio-status +greenlet==2.0.2 + # via sqlalchemy +grpc-google-iam-v1==0.12.6 + # via google-cloud-pubsub +grpcio==1.54.0 + # via + # google-api-core + # google-cloud-pubsub + # googleapis-common-protos + # grpc-google-iam-v1 + # grpcio-status +grpcio-status==1.54.0 + # via + # google-api-core + # google-cloud-pubsub +h11==0.14.0 + # via wsproto +idna==3.4 + # via + # requests + # trio +imagesize==1.4.1 + # via sphinx +importlib-metadata==6.6.0 + # via + # keyring + # twine +iniconfig==2.0.0 + # via pytest +isodate==0.6.1 + # via azure-storage-blob +jaraco-classes==3.2.3 + # via keyring +jinja2==3.1.2 + # via sphinx +jmespath==1.0.1 + # via + # boto3 + # botocore +jsonschema==3.2.0 + # via docker-compose +kafka-python==2.0.2 + # via testcontainers-kafka +keyring==23.13.1 + # via twine +markdown-it-py==2.2.0 + # via rich +markupsafe==2.1.2 + # via jinja2 +mccabe==0.6.1 + # via flake8 +mdurl==0.1.2 + # via markdown-it-py +minio==7.1.14 + # via testcontainers-minio +more-itertools==9.1.0 + # via jaraco-classes +neo4j==5.8.0 + # via testcontainers-neo4j +opensearch-py==2.2.0 + # via testcontainers-opensearch +outcome==1.2.0 + # via trio +packaging==23.1 + # via + # deprecation + # docker + # pytest + # sphinx +paramiko==3.1.0 + # via docker +pg8000==1.29.4 + # via -r requirements.in +pika==1.3.2 + # via testcontainers-rabbitmq +pkginfo==1.9.6 + # via twine +pluggy==1.0.0 + # via pytest +proto-plus==1.22.2 + # via google-cloud-pubsub +protobuf==4.22.4 + # via + # google-api-core + # google-cloud-pubsub + # googleapis-common-protos + # grpc-google-iam-v1 + # grpcio-status + # proto-plus +psycopg2-binary==2.9.6 + # via testcontainers-postgres +pyasn1==0.5.0 + # via + # pyasn1-modules + # python-jose + # rsa +pyasn1-modules==0.3.0 + # via google-auth +pycodestyle==2.5.0 + # via flake8 +pycparser==2.21 + # via cffi +pyflakes==2.1.1 + # via flake8 +pygments==2.15.1 + # via + # readme-renderer + # rich + # sphinx +pyjwt==2.6.0 + # via python-arango +pymongo==4.3.3 + # via testcontainers-mongodb +pymssql==2.2.7 + # via testcontainers-mssql +pymysql==1.0.3 + # via testcontainers-mysql +pynacl==1.5.0 + # via paramiko +pyrsistent==0.19.3 + # via jsonschema +pysocks==1.7.1 + # via urllib3 +pytest==7.3.1 + # via + # -r requirements.in + # pytest-cov +pytest-cov==4.0.0 + # via -r requirements.in +python-arango==7.5.7 + # via testcontainers-arangodb +python-dateutil==2.8.2 + # via + # botocore + # opensearch-py + # pg8000 +python-dotenv==0.21.1 + # via docker-compose +python-jose==3.3.0 + # via python-keycloak +python-keycloak==2.16.1 + # via testcontainers-keycloak +pytz==2023.3 + # via + # clickhouse-driver + # neo4j +pytz-deprecation-shim==0.1.0.post0 + # via tzlocal +pywin32==306 + # via docker +pywin32-ctypes==0.2.0 + # via keyring +pyyaml==5.4.1 + # via docker-compose +readme-renderer==37.3 + # via twine +redis==4.5.4 + # via testcontainers-redis +requests==2.30.0 + # via + # azure-core + # docker + # docker-compose + # google-api-core + # opensearch-py + # python-arango + # python-keycloak + # requests-toolbelt + # sphinx + # twine +requests-toolbelt==0.10.1 + # via + # python-arango + # python-keycloak + # twine +rfc3986==2.0.0 + # via twine +rich==13.3.5 + # via twine +rsa==4.9 + # via + # google-auth + # python-jose +s3transfer==0.6.1 + # via boto3 +scramp==1.4.4 + # via pg8000 +selenium==4.9.0 + # via testcontainers-selenium +six==1.16.0 + # via + # azure-core + # bleach + # dockerpty + # ecdsa + # google-auth + # isodate + # jsonschema + # opensearch-py + # python-dateutil + # websocket-client +sniffio==1.3.0 + # via trio +snowballstemmer==2.2.0 + # via sphinx +sortedcontainers==2.4.0 + # via trio +sphinx==7.0.0 + # via -r requirements.in +sphinxcontrib-applehelp==1.0.4 + # via sphinx +sphinxcontrib-devhelp==1.0.2 + # via sphinx +sphinxcontrib-htmlhelp==2.0.1 + # via sphinx +sphinxcontrib-jsmath==1.0.1 + # via sphinx +sphinxcontrib-qthelp==1.0.3 + # via sphinx +sphinxcontrib-serializinghtml==1.1.5 + # via sphinx +sqlalchemy==2.0.12 + # via + # testcontainers-mssql + # testcontainers-mysql + # testcontainers-oracle + # testcontainers-postgres +texttable==1.6.7 + # via docker-compose +tomli==2.0.1 + # via + # coverage + # pytest +trio==0.22.0 + # via + # selenium + # trio-websocket +trio-websocket==0.10.2 + # via selenium +twine==4.0.2 + # via -r requirements.in +typing-extensions==4.5.0 + # via + # azure-core + # azure-storage-blob + # sqlalchemy +tzdata==2023.3 + # via + # pytz-deprecation-shim + # tzlocal +tzlocal==4.3 + # via clickhouse-driver +urllib3[socks]==1.26.15 + # via + # botocore + # docker + # minio + # opensearch-py + # python-arango + # requests + # selenium + # testcontainers-core + # twine +webencodings==0.5.1 + # via bleach +websocket-client==0.59.0 + # via + # docker + # docker-compose +wheel==0.40.0 + # via -r requirements.in +wrapt==1.15.0 + # via testcontainers-core +wsproto==1.2.0 + # via trio-websocket +zipp==3.15.0 + # via importlib-metadata + +# The following packages are considered to be unsafe in a requirements file: +# setuptools