diff --git a/.circleci/config.templ.yml b/.circleci/config.templ.yml index 161af7359c0..08dc00bb806 100644 --- a/.circleci/config.templ.yml +++ b/.circleci/config.templ.yml @@ -572,6 +572,7 @@ jobs: pattern: "datastreams" tracer: + parallelism: 10 <<: *contrib_job_large steps: - run_test: diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 3520ff5d7c6..ebfe3c84e57 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -19,8 +19,10 @@ releasenotes/ @DataDog/apm-python tests/snapshots/ @DataDog/apm-python riotfile.py @DataDog/apm-python .riot/requirements/ @DataDog/apm-python +CHANGELOG.md @DataDog/apm-python +README.md @DataDog/apm-python -# Core +# Core / Language Platform tests/internal @DataDog/apm-core-python tests/lib-injection @DataDog/apm-core-python tests/opentelemetry @DataDog/apm-core-python @@ -62,6 +64,7 @@ tests/internal/test_module.py @DataDog/debugger-python @DataDog/apm-core-p tests/internal/symbol_db/ @DataDog/debugger-python # ASM +benchmarks/appsec* @DataDog/asm-python ddtrace/appsec/ @DataDog/asm-python ddtrace/settings/asm.py @DataDog/asm-python ddtrace/contrib/subprocess/ @DataDog/asm-python @@ -117,6 +120,28 @@ mypy.ini @DataDog/python-guild @DataDog/apm-core-pyt ddtrace/internal/_file_queue.py @DataDog/python-guild ddtrace/internal/_unpatched.py @DataDog/python-guild ddtrace/internal/compat.py @DataDog/python-guild @DataDog/apm-core-python +ddtrace/settings/config.py @DataDog/python-guild @DataDog/apm-sdk-api-python tests/utils.py @DataDog/python-guild tests/.suitespec.json @DataDog/python-guild @DataDog/apm-core-python tests/suitespec.py @DataDog/python-guild @DataDog/apm-core-python + +# API SDK +ddtrace/_trace/ @DataDog/apm-sdk-api-python +ddtrace/opentelemetry/ @DataDog/apm-sdk-api-python +ddtrace/opentracer/ @DataDog/apm-sdk-api-python +ddtrace/propagation/ @DataDog/apm-sdk-api-python +ddtrace/filters.py @DataDog/apm-sdk-api-python +ddtrace/pin.py @DataDog/apm-sdk-api-python +ddtrace/sampler.py @DataDog/apm-sdk-api-python +ddtrace/sampling_rule.py @DataDog/apm-sdk-api-python +ddtrace/internal/sampling.py @DataDog/apm-sdk-api-python +ddtrace/internal/tracemethods.py @DataDog/apm-sdk-api-python +ddttace/settings/_otel_remapper.py @DataDog/apm-sdk-api-python +tests/integration/test_priority_sampling.py @DataDog/apm-sdk-api-python +tests/integration/test_propagation.py @DataDog/apm-sdk-api-python +tests/test_sampling.py @DataDog/apm-sdk-api-python +tests/test_tracemethods.py @DataDog/apm-sdk-api-python +tests/opentelemetry/ @DataDog/apm-sdk-api-python +tests/tracer/ @DataDog/apm-sdk-api-python +# Override because order matters +tests/tracer/test_ci.py @DataDog/ci-app-libraries diff --git a/.github/workflows/requirements-locks.yml b/.github/workflows/requirements-locks.yml index 613842b7d9f..3192f61db64 100644 --- a/.github/workflows/requirements-locks.yml +++ b/.github/workflows/requirements-locks.yml @@ -20,7 +20,7 @@ jobs: run: git config --global --add safe.directory "$GITHUB_WORKSPACE" - name: Set python interpreters - run: pyenv global 3.10 3.7 3.8 3.9 3.11 + run: pyenv global 3.10 3.7 3.8 3.9 3.11 3.12 - name: Install Dependencies run: pip install --upgrade pip && pip install riot diff --git a/.gitlab/benchmarks.yml b/.gitlab/benchmarks.yml index aef83647c40..38706efe47e 100644 --- a/.gitlab/benchmarks.yml +++ b/.gitlab/benchmarks.yml @@ -33,6 +33,7 @@ variables: UPSTREAM_COMMIT_SHA: $CI_COMMIT_SHA # The commit revision the project is built for. KUBERNETES_SERVICE_ACCOUNT_OVERWRITE: dd-trace-py FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY: "true" + CARGO_NET_GIT_FETCH_WITH_CLI: "true" # use system git binary to pull git dependencies benchmarks-pr-comment: stage: benchmarks-pr-comment diff --git a/.riot/requirements/103f817.txt b/.riot/requirements/1026e4e.txt similarity index 78% rename from .riot/requirements/103f817.txt rename to .riot/requirements/1026e4e.txt index 3f23e89b1b1..60de6cc0939 100644 --- a/.riot/requirements/103f817.txt +++ b/.riot/requirements/1026e4e.txt @@ -2,30 +2,30 @@ # This file is autogenerated by pip-compile with Python 3.7 # by the following command: # -# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/103f817.in +# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/1026e4e.in # aiohttp==3.8.6 aiohttp-jinja2==1.5.1 aiosignal==1.3.1 async-timeout==4.0.3 asynctest==0.13.0 -attrs==23.1.0 +attrs==23.2.0 charset-normalizer==3.3.2 coverage[toml]==7.2.7 -exceptiongroup==1.2.0 +exceptiongroup==1.2.1 frozenlist==1.3.3 hypothesis==6.45.0 -idna==3.6 +idna==3.7 importlib-metadata==6.7.0 iniconfig==2.0.0 -jinja2==3.1.2 -markupsafe==2.1.3 +jinja2==3.1.4 +markupsafe==2.1.5 mock==5.1.0 -multidict==6.0.4 +multidict==6.0.5 opentracing==2.4.0 -packaging==23.2 +packaging==24.0 pluggy==1.2.0 -pytest==7.4.3 +pytest==7.4.4 pytest-aiohttp==1.0.5 pytest-asyncio==0.21.1 pytest-cov==4.1.0 diff --git a/.riot/requirements/104310d.txt b/.riot/requirements/104310d.txt deleted file mode 100644 index dbed2241bb1..00000000000 --- a/.riot/requirements/104310d.txt +++ /dev/null @@ -1,61 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.10 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/104310d.in -# -aiohttp==3.9.1 -aiosignal==1.3.1 -async-timeout==4.0.3 -attrs==23.1.0 -certifi==2023.11.17 -charset-normalizer==3.3.2 -contourpy==1.2.0 -coverage[toml]==7.3.4 -cycler==0.12.1 -et-xmlfile==1.1.0 -exceptiongroup==1.2.0 -fonttools==4.47.0 -frozenlist==1.4.1 -hypothesis==6.45.0 -idna==3.6 -iniconfig==2.0.0 -joblib==1.3.2 -kiwisolver==1.4.5 -matplotlib==3.8.2 -mock==5.1.0 -multidict==6.0.4 -numpy==1.26.2 -openai[datalib,embeddings]==0.27.2 -openpyxl==3.1.2 -opentracing==2.4.0 -packaging==23.2 -pandas==2.1.4 -pandas-stubs==2.1.4.231218 -pillow==10.1.0 -plotly==5.18.0 -pluggy==1.3.0 -pyparsing==3.1.1 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -python-dateutil==2.8.2 -pytz==2023.3.post1 -pyyaml==6.0.1 -requests==2.31.0 -scikit-learn==1.3.2 -scipy==1.11.4 -six==1.16.0 -sortedcontainers==2.4.0 -tenacity==8.2.3 -threadpoolctl==3.2.0 -tomli==2.0.1 -tqdm==4.66.1 -types-pytz==2023.3.1.1 -tzdata==2023.3 -urllib3==1.26.18 -vcrpy==4.2.1 -wrapt==1.16.0 -yarl==1.9.4 diff --git a/.riot/requirements/1070785.txt b/.riot/requirements/1070785.txt deleted file mode 100644 index 511985964b6..00000000000 --- a/.riot/requirements/1070785.txt +++ /dev/null @@ -1,86 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/1070785.in -# -annotated-types==0.6.0 -attrs==23.2.0 -aws-sam-translator==1.85.0 -aws-xray-sdk==2.12.1 -boto3==1.34.49 -botocore==1.34.49 -certifi==2024.2.2 -cffi==1.16.0 -cfn-lint==0.85.2 -charset-normalizer==3.3.2 -coverage[toml]==7.4.3 -cryptography==42.0.5 -docker==7.0.0 -ecdsa==0.18.0 -graphql-core==3.2.3 -hypothesis==6.45.0 -idna==3.6 -iniconfig==2.0.0 -jinja2==3.1.3 -jmespath==1.0.1 -jschema-to-python==1.2.3 -jsondiff==2.0.0 -jsonpatch==1.33 -jsonpickle==3.0.3 -jsonpointer==2.4 -jsonschema==4.21.1 -jsonschema-path==0.3.2 -jsonschema-specifications==2023.12.1 -junit-xml==1.9 -lazy-object-proxy==1.10.0 -markupsafe==2.1.5 -mock==5.1.0 -moto[all]==4.2.14 -mpmath==1.3.0 -multidict==6.0.5 -multipart==0.2.4 -networkx==3.2.1 -openapi-schema-validator==0.6.2 -openapi-spec-validator==0.7.1 -opentracing==2.4.0 -packaging==23.2 -pathable==0.4.3 -pbr==6.0.0 -pluggy==1.4.0 -py-partiql-parser==0.5.0 -pyasn1==0.5.1 -pycparser==2.21 -pydantic==2.6.2 -pydantic-core==2.16.3 -pyparsing==3.1.1 -pytest==8.0.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -python-dateutil==2.8.2 -python-jose[cryptography]==3.3.0 -pyyaml==6.0.1 -referencing==0.31.1 -regex==2023.12.25 -requests==2.31.0 -responses==0.25.0 -rfc3339-validator==0.1.4 -rpds-py==0.18.0 -rsa==4.9 -s3transfer==0.10.0 -sarif-om==1.0.4 -six==1.16.0 -sortedcontainers==2.4.0 -sshpubkeys==3.3.1 -sympy==1.12 -typing-extensions==4.9.0 -urllib3==2.0.7 -vcrpy==6.0.1 -werkzeug==3.0.1 -wrapt==1.16.0 -xmltodict==0.13.0 -yarl==1.9.4 - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/.riot/requirements/17d7a61.txt b/.riot/requirements/1092157.txt similarity index 71% rename from .riot/requirements/17d7a61.txt rename to .riot/requirements/1092157.txt index cd7fec9785b..d9e498741ef 100644 --- a/.riot/requirements/17d7a61.txt +++ b/.riot/requirements/1092157.txt @@ -2,10 +2,10 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/17d7a61.in +# pip-compile --no-annotate .riot/requirements/1092157.in # attrs==23.2.0 -coverage[toml]==7.5.1 +coverage[toml]==7.6.0 gevent==24.2.1 greenlet==3.0.3 httpretty==1.1.4 @@ -13,18 +13,18 @@ hypothesis==6.45.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==24.0 +packaging==24.1 pluggy==1.5.0 -pyfakefs==5.5.0 -pytest==8.2.1 -pytest-asyncio==0.21.2 +pyfakefs==5.6.0 +pytest==8.2.2 +pytest-asyncio==0.23.7 pytest-cov==5.0.0 pytest-mock==3.14.0 pytest-randomly==3.15.0 python-json-logger==2.0.7 sortedcontainers==2.4.0 zope-event==5.0 -zope-interface==6.4 +zope-interface==6.4.post2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/17a929f.txt b/.riot/requirements/10bdae9.txt similarity index 52% rename from .riot/requirements/17a929f.txt rename to .riot/requirements/10bdae9.txt index d37acc78410..ba98878ab1f 100644 --- a/.riot/requirements/17a929f.txt +++ b/.riot/requirements/10bdae9.txt @@ -2,31 +2,28 @@ # This file is autogenerated by pip-compile with Python 3.12 # by the following command: # -# pip-compile --no-annotate .riot/requirements/17a929f.in +# pip-compile --no-annotate .riot/requirements/10bdae9.in # attrs==23.2.0 -certifi==2023.11.17 -charset-normalizer==3.3.2 +blinker==1.8.2 click==7.1.2 -coverage[toml]==7.4.0 +coverage[toml]==7.5.4 flask==1.1.4 -gunicorn==21.2.0 -httpretty==1.0.5 +flask-caching==1.10.1 hypothesis==6.45.0 -idna==3.6 iniconfig==2.0.0 itsdangerous==1.1.0 jinja2==2.11.3 markupsafe==1.1.1 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.4 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -requests==2.31.0 +python-memcached==1.62 +redis==5.0.7 sortedcontainers==2.4.0 -urllib3==2.1.0 werkzeug==1.0.1 diff --git a/.riot/requirements/10e6eb3.txt b/.riot/requirements/10e6eb3.txt deleted file mode 100644 index bf3297f4f9d..00000000000 --- a/.riot/requirements/10e6eb3.txt +++ /dev/null @@ -1,90 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/10e6eb3.in -# -annotated-types==0.6.0 -attrs==23.2.0 -aws-sam-translator==1.85.0 -aws-xray-sdk==2.12.1 -boto3==1.34.49 -botocore==1.34.49 -certifi==2024.2.2 -cffi==1.16.0 -cfn-lint==0.85.2 -charset-normalizer==3.3.2 -coverage[toml]==7.4.3 -cryptography==42.0.5 -docker==7.0.0 -ecdsa==0.18.0 -exceptiongroup==1.2.0 -graphql-core==3.2.3 -hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.1 -iniconfig==2.0.0 -jinja2==3.1.3 -jmespath==1.0.1 -jschema-to-python==1.2.3 -jsondiff==2.0.0 -jsonpatch==1.33 -jsonpickle==3.0.3 -jsonpointer==2.4 -jsonschema==4.21.1 -jsonschema-path==0.3.2 -jsonschema-specifications==2023.12.1 -junit-xml==1.9 -lazy-object-proxy==1.10.0 -markupsafe==2.1.5 -mock==5.1.0 -moto[all]==4.2.14 -mpmath==1.3.0 -multidict==6.0.5 -multipart==0.2.4 -networkx==3.2.1 -openapi-schema-validator==0.6.2 -openapi-spec-validator==0.7.1 -opentracing==2.4.0 -packaging==23.2 -pathable==0.4.3 -pbr==6.0.0 -pluggy==1.4.0 -py-partiql-parser==0.5.0 -pyasn1==0.5.1 -pycparser==2.21 -pydantic==2.6.2 -pydantic-core==2.16.3 -pyparsing==3.1.1 -pytest==8.0.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -python-dateutil==2.8.2 -python-jose[cryptography]==3.3.0 -pyyaml==6.0.1 -referencing==0.31.1 -regex==2023.12.25 -requests==2.31.0 -responses==0.25.0 -rfc3339-validator==0.1.4 -rpds-py==0.18.0 -rsa==4.9 -s3transfer==0.10.0 -sarif-om==1.0.4 -six==1.16.0 -sortedcontainers==2.4.0 -sshpubkeys==3.3.1 -sympy==1.12 -tomli==2.0.1 -typing-extensions==4.9.0 -urllib3==1.26.18 -vcrpy==6.0.1 -werkzeug==3.0.1 -wrapt==1.16.0 -xmltodict==0.13.0 -yarl==1.9.4 -zipp==3.17.0 - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/.riot/requirements/196b6c3.txt b/.riot/requirements/111ed90.txt similarity index 50% rename from .riot/requirements/196b6c3.txt rename to .riot/requirements/111ed90.txt index 5c748ddee55..0a55d7681d4 100644 --- a/.riot/requirements/196b6c3.txt +++ b/.riot/requirements/111ed90.txt @@ -2,21 +2,22 @@ # This file is autogenerated by pip-compile with Python 3.12 # by the following command: # -# pip-compile --no-annotate .riot/requirements/196b6c3.in +# pip-compile --no-annotate .riot/requirements/111ed90.in # attrs==23.2.0 -coverage[toml]==7.4.2 -googleapis-common-protos==1.62.0 +coverage[toml]==7.5.4 +googleapis-common-protos==1.63.2 grpcio==1.59.3 hypothesis==6.45.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.4.0 -protobuf==4.25.3 -pytest==8.0.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +protobuf==5.27.2 +pytest==8.2.2 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 diff --git a/.riot/requirements/1cb14d6.txt b/.riot/requirements/115aba5.txt similarity index 81% rename from .riot/requirements/1cb14d6.txt rename to .riot/requirements/115aba5.txt index 84462d9f57e..f165e70bbfb 100644 --- a/.riot/requirements/1cb14d6.txt +++ b/.riot/requirements/115aba5.txt @@ -2,20 +2,20 @@ # This file is autogenerated by pip-compile with Python 3.7 # by the following command: # -# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/1cb14d6.in +# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/115aba5.in # async-timeout==4.0.3 -attrs==23.1.0 +attrs==23.2.0 coverage[toml]==7.2.7 -exceptiongroup==1.2.0 +exceptiongroup==1.2.1 hypothesis==6.45.0 importlib-metadata==6.7.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 +packaging==24.0 pluggy==1.2.0 -pytest==7.4.3 +pytest==7.4.4 pytest-asyncio==0.21.1 pytest-cov==4.1.0 pytest-mock==3.11.1 diff --git a/.riot/requirements/18f1e69.txt b/.riot/requirements/11705e0.txt similarity index 50% rename from .riot/requirements/18f1e69.txt rename to .riot/requirements/11705e0.txt index 52f5a82f958..6d48b0bea84 100644 --- a/.riot/requirements/18f1e69.txt +++ b/.riot/requirements/11705e0.txt @@ -2,31 +2,31 @@ # This file is autogenerated by pip-compile with Python 3.8 # by the following command: # -# pip-compile --no-annotate .riot/requirements/18f1e69.in +# pip-compile --no-annotate .riot/requirements/11705e0.in # -aiohttp==3.9.1 +aiohttp==3.9.5 aiosignal==1.3.1 async-timeout==4.0.3 -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 frozenlist==1.4.1 hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.0 +idna==3.7 +importlib-metadata==8.0.0 iniconfig==2.0.0 mock==5.1.0 -multidict==6.0.4 +multidict==6.0.5 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 pytest-aiohttp==1.0.5 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 tomli==2.0.1 yarl==1.9.4 -zipp==3.17.0 +zipp==3.19.2 diff --git a/.riot/requirements/11f3313.txt b/.riot/requirements/11f3313.txt new file mode 100644 index 00000000000..8fa550e49d9 --- /dev/null +++ b/.riot/requirements/11f3313.txt @@ -0,0 +1,46 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/11f3313.in +# +attrs==23.2.0 +certifi==2024.6.2 +charset-normalizer==2.1.1 +click==8.1.7 +coverage[toml]==7.5.4 +deprecated==1.2.14 +flask==2.1.3 +gevent==24.2.1 +greenlet==3.0.3 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +itsdangerous==2.2.0 +jinja2==3.1.4 +markupsafe==2.0.1 +mock==5.1.0 +opentelemetry-api==1.8.0 +opentelemetry-instrumentation==0.32b0 +opentelemetry-instrumentation-flask==0.32b0 +opentelemetry-instrumentation-wsgi==0.32b0 +opentelemetry-semantic-conventions==0.32b0 +opentelemetry-util-http==0.32b0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.21.1 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +requests==2.28.1 +sortedcontainers==2.4.0 +urllib3==1.26.19 +werkzeug==2.1.2 +wrapt==1.16.0 +zope-event==5.0 +zope-interface==6.4.post2 + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/.riot/requirements/1460721.txt b/.riot/requirements/1212ab8.txt similarity index 52% rename from .riot/requirements/1460721.txt rename to .riot/requirements/1212ab8.txt index 18c54a5c557..08402633a64 100644 --- a/.riot/requirements/1460721.txt +++ b/.riot/requirements/1212ab8.txt @@ -2,29 +2,29 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1460721.in +# pip-compile --no-annotate .riot/requirements/1212ab8.in # -aiohttp==3.9.1 +aiohttp==3.9.5 aiohttp-jinja2==1.5.1 aiosignal==1.3.1 -attrs==23.1.0 -coverage[toml]==7.3.4 +attrs==23.2.0 +coverage[toml]==7.5.4 frozenlist==1.4.1 hypothesis==6.45.0 -idna==3.6 +idna==3.7 iniconfig==2.0.0 -jinja2==3.1.2 -markupsafe==2.1.3 +jinja2==3.1.4 +markupsafe==2.1.5 mock==5.1.0 -multidict==6.0.4 +multidict==6.0.5 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 pytest-aiohttp==1.0.5 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 yarl==1.9.4 diff --git a/.riot/requirements/18f872d.txt b/.riot/requirements/121a519.txt similarity index 52% rename from .riot/requirements/18f872d.txt rename to .riot/requirements/121a519.txt index 3c716b55bc9..19626cce673 100644 --- a/.riot/requirements/18f872d.txt +++ b/.riot/requirements/121a519.txt @@ -2,31 +2,31 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/18f872d.in +# pip-compile --no-annotate .riot/requirements/121a519.in # -aiohttp==3.9.1 +aiohttp==3.9.5 aiohttp-jinja2==1.5.1 aiosignal==1.3.1 async-timeout==4.0.3 -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 frozenlist==1.4.1 hypothesis==6.45.0 -idna==3.6 +idna==3.7 iniconfig==2.0.0 -jinja2==3.1.2 -markupsafe==2.1.3 +jinja2==3.1.4 +markupsafe==2.1.5 mock==5.1.0 -multidict==6.0.4 +multidict==6.0.5 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 pytest-aiohttp==1.0.5 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 tomli==2.0.1 diff --git a/.riot/requirements/125f4b9.txt b/.riot/requirements/125f4b9.txt index 0c6536bdf5d..624745ca417 100644 --- a/.riot/requirements/125f4b9.txt +++ b/.riot/requirements/125f4b9.txt @@ -4,69 +4,69 @@ # # pip-compile --no-annotate .riot/requirements/125f4b9.in # -annotated-types==0.6.0 -attrs==23.1.0 -aws-sam-translator==1.82.0 -aws-xray-sdk==2.12.1 +annotated-types==0.7.0 +attrs==23.2.0 +aws-sam-translator==1.89.0 +aws-xray-sdk==2.14.0 boto==2.49.0 -boto3==1.34.6 -botocore==1.34.6 -certifi==2023.11.17 +boto3==1.34.139 +botocore==1.34.139 +certifi==2024.6.2 cffi==1.16.0 cfn-lint==0.53.1 charset-normalizer==3.3.2 -coverage[toml]==7.3.4 -cryptography==41.0.7 -docker==7.0.0 +coverage[toml]==7.5.4 +cryptography==42.0.8 +docker==7.1.0 ecdsa==0.14.1 -exceptiongroup==1.2.0 +exceptiongroup==1.2.1 hypothesis==6.45.0 idna==2.10 -importlib-metadata==7.0.0 +importlib-metadata==8.0.0 iniconfig==2.0.0 jinja2==2.11.3 jmespath==1.0.1 -jsondiff==2.0.0 +jsondiff==2.1.1 jsonpatch==1.33 -jsonpointer==2.4 +jsonpointer==3.0.0 jsonschema==3.2.0 junit-xml==1.9 markupsafe==1.1.1 mock==5.1.0 -more-itertools==10.1.0 +more-itertools==10.3.0 moto==1.3.16 networkx==2.8.8 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pyasn1==0.5.1 -pycparser==2.21 -pydantic==2.5.2 -pydantic-core==2.14.5 +packaging==24.1 +pluggy==1.5.0 +pyasn1==0.6.0 +pycparser==2.22 +pydantic==2.8.0 +pydantic-core==2.20.0 pynamodb==5.5.1 pyrsistent==0.20.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 python-jose[cryptography]==3.3.0 -pytz==2023.3.post1 +pytz==2024.1 pyyaml==6.0.1 -requests==2.31.0 -responses==0.24.1 +requests==2.32.3 +responses==0.25.3 rsa==4.9 -s3transfer==0.10.0 +s3transfer==0.10.2 six==1.16.0 sortedcontainers==2.4.0 sshpubkeys==3.3.1 tomli==2.0.1 -typing-extensions==4.9.0 -urllib3==1.26.18 +typing-extensions==4.12.2 +urllib3==1.26.19 werkzeug==2.1.2 wrapt==1.16.0 xmltodict==0.13.0 -zipp==3.17.0 +zipp==3.19.2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/15235b0.txt b/.riot/requirements/12974a3.txt similarity index 50% rename from .riot/requirements/15235b0.txt rename to .riot/requirements/12974a3.txt index 7380eee24f9..db272e2f553 100644 --- a/.riot/requirements/15235b0.txt +++ b/.riot/requirements/12974a3.txt @@ -2,35 +2,38 @@ # This file is autogenerated by pip-compile with Python 3.8 # by the following command: # -# pip-compile --no-annotate --resolver=backtracking .riot/requirements/15235b0.in +# pip-compile --no-annotate .riot/requirements/12974a3.in # attrs==23.2.0 -certifi==2023.11.17 +certifi==2024.7.4 charset-normalizer==3.3.2 click==7.1.2 -coverage[toml]==7.4.0 -exceptiongroup==1.2.0 +coverage[toml]==7.6.0 +deprecated==1.2.14 +exceptiongroup==1.2.2 flask==1.1.4 -gunicorn==21.2.0 +gunicorn==22.0.0 httpretty==1.0.5 hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.1 +idna==3.7 +importlib-metadata==7.0.0 iniconfig==2.0.0 itsdangerous==1.1.0 jinja2==2.11.3 markupsafe==1.1.1 mock==5.1.0 +opentelemetry-api==1.24.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.4 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.3.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -requests==2.31.0 +requests==2.32.3 sortedcontainers==2.4.0 tomli==2.0.1 -urllib3==2.1.0 +urllib3==2.2.2 werkzeug==1.0.1 -zipp==3.17.0 +wrapt==1.16.0 +zipp==3.19.2 diff --git a/.riot/requirements/12bf701.txt b/.riot/requirements/12bf701.txt new file mode 100644 index 00000000000..cc77a634504 --- /dev/null +++ b/.riot/requirements/12bf701.txt @@ -0,0 +1,23 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/12bf701.in +# +attrs==23.2.0 +coverage[toml]==7.5.4 +googleapis-common-protos==1.63.2 +grpcio==1.64.1 +hypothesis==6.45.0 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +protobuf==5.27.2 +pytest==8.2.2 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 diff --git a/.riot/requirements/12d5b48.txt b/.riot/requirements/12d5b48.txt new file mode 100644 index 00000000000..dc7c139936f --- /dev/null +++ b/.riot/requirements/12d5b48.txt @@ -0,0 +1,27 @@ +# +# This file is autogenerated by pip-compile with Python 3.8 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/12d5b48.in +# +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 +googleapis-common-protos==1.63.2 +grpcio==1.59.3 +hypothesis==6.45.0 +importlib-metadata==8.0.0 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +protobuf==5.27.2 +pytest==8.2.2 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 +tomli==2.0.1 +zipp==3.19.2 diff --git a/.riot/requirements/1356251.txt b/.riot/requirements/1356251.txt new file mode 100644 index 00000000000..0b3c927d4fb --- /dev/null +++ b/.riot/requirements/1356251.txt @@ -0,0 +1,35 @@ +# +# This file is autogenerated by pip-compile with Python 3.8 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/1356251.in +# +aiohttp==3.9.5 +aiohttp-jinja2==1.6 +aiosignal==1.3.1 +async-timeout==4.0.3 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 +frozenlist==1.4.1 +hypothesis==6.45.0 +idna==3.7 +importlib-metadata==8.0.0 +iniconfig==2.0.0 +jinja2==3.1.4 +markupsafe==2.1.5 +mock==5.1.0 +multidict==6.0.5 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-aiohttp==1.0.5 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 +tomli==2.0.1 +yarl==1.9.4 +zipp==3.19.2 diff --git a/.riot/requirements/1338800.txt b/.riot/requirements/137098c.txt similarity index 86% rename from .riot/requirements/1338800.txt rename to .riot/requirements/137098c.txt index 5fb0a89fd83..b10fef098ac 100644 --- a/.riot/requirements/1338800.txt +++ b/.riot/requirements/137098c.txt @@ -2,11 +2,11 @@ # This file is autogenerated by pip-compile with Python 3.7 # by the following command: # -# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/1338800.in +# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/137098c.in # attrs==23.2.0 coverage[toml]==7.2.7 -exceptiongroup==1.2.1 +exceptiongroup==1.2.2 gevent==22.10.2 greenlet==3.0.3 httpretty==1.1.4 @@ -17,7 +17,7 @@ mock==5.1.0 opentracing==2.4.0 packaging==24.0 pluggy==1.2.0 -pyfakefs==5.5.0 +pyfakefs==5.6.0 pytest==7.4.4 pytest-asyncio==0.21.2 pytest-cov==4.1.0 @@ -29,7 +29,7 @@ tomli==2.0.1 typing-extensions==4.7.1 zipp==3.15.0 zope-event==5.0 -zope-interface==6.4 +zope-interface==6.4.post2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/1e7ee60.txt b/.riot/requirements/13804af.txt similarity index 69% rename from .riot/requirements/1e7ee60.txt rename to .riot/requirements/13804af.txt index dcc1cf169e6..54924327397 100644 --- a/.riot/requirements/1e7ee60.txt +++ b/.riot/requirements/13804af.txt @@ -2,36 +2,36 @@ # This file is autogenerated by pip-compile with Python 3.8 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1e7ee60.in +# pip-compile --no-annotate .riot/requirements/13804af.in # annotated-types==0.7.0 -anyio==4.3.0 +anyio==4.4.0 attrs==23.2.0 -certifi==2024.2.2 +certifi==2024.7.4 charset-normalizer==3.3.2 -coverage[toml]==7.5.1 +coverage[toml]==7.6.0 distro==1.9.0 -exceptiongroup==1.2.1 +exceptiongroup==1.2.2 h11==0.14.0 httpcore==1.0.5 httpx==0.27.0 hypothesis==6.45.0 idna==3.7 -importlib-metadata==7.1.0 +importlib-metadata==8.0.0 iniconfig==2.0.0 mock==5.1.0 multidict==6.0.5 numpy==1.24.4 openai[datalib]==1.30.1 opentracing==2.4.0 -packaging==24.0 +packaging==24.1 pandas==2.0.3 pandas-stubs==2.0.3.230814 -pillow==10.3.0 +pillow==10.1.0 pluggy==1.5.0 -pydantic==2.7.1 -pydantic-core==2.18.2 -pytest==8.2.1 +pydantic==2.8.2 +pydantic-core==2.20.1 +pytest==8.2.2 pytest-asyncio==0.21.1 pytest-cov==5.0.0 pytest-mock==3.14.0 @@ -40,7 +40,7 @@ python-dateutil==2.9.0.post0 pytz==2024.1 pyyaml==6.0.1 regex==2024.5.15 -requests==2.32.0 +requests==2.32.3 six==1.16.0 sniffio==1.3.1 sortedcontainers==2.4.0 @@ -48,10 +48,10 @@ tiktoken==0.7.0 tomli==2.0.1 tqdm==4.66.4 types-pytz==2024.1.0.20240417 -typing-extensions==4.11.0 +typing-extensions==4.12.2 tzdata==2024.1 -urllib3==1.26.18 +urllib3==1.26.19 vcrpy==4.2.1 wrapt==1.16.0 yarl==1.9.4 -zipp==3.18.2 +zipp==3.19.2 diff --git a/.riot/requirements/13c0fff.txt b/.riot/requirements/13c0fff.txt new file mode 100644 index 00000000000..3919d9ddaf1 --- /dev/null +++ b/.riot/requirements/13c0fff.txt @@ -0,0 +1,35 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/13c0fff.in +# +aiobotocore==2.13.1 +aiohttp==3.9.5 +aioitertools==0.11.0 +aiosignal==1.3.1 +async-generator==1.10 +attrs==23.2.0 +botocore==1.34.131 +coverage[toml]==7.5.4 +frozenlist==1.4.1 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +jmespath==1.0.1 +mock==5.1.0 +multidict==6.0.5 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.21.1 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +python-dateutil==2.9.0.post0 +six==1.16.0 +sortedcontainers==2.4.0 +urllib3==2.2.2 +wrapt==1.16.0 +yarl==1.9.4 diff --git a/.riot/requirements/13d7c9a.txt b/.riot/requirements/13d7c9a.txt deleted file mode 100644 index f19e854ff0a..00000000000 --- a/.riot/requirements/13d7c9a.txt +++ /dev/null @@ -1,51 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.10 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/13d7c9a.in -# -annotated-types==0.6.0 -anyio==3.7.1 -attrs==23.1.0 -certifi==2023.11.17 -coverage[toml]==7.3.4 -distro==1.8.0 -exceptiongroup==1.2.0 -h11==0.14.0 -httpcore==1.0.2 -httpx==0.26.0 -hypothesis==6.45.0 -idna==3.6 -iniconfig==2.0.0 -mock==5.1.0 -multidict==6.0.4 -numpy==1.26.2 -openai[datalib,embeddings]==1.1.1 -opentracing==2.4.0 -packaging==23.2 -pandas==2.1.4 -pandas-stubs==2.1.4.231218 -pillow==10.1.0 -pluggy==1.3.0 -pydantic==2.5.2 -pydantic-core==2.14.5 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -python-dateutil==2.8.2 -pytz==2023.3.post1 -pyyaml==6.0.1 -six==1.16.0 -sniffio==1.3.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -tqdm==4.66.1 -types-pytz==2023.3.1.1 -typing-extensions==4.9.0 -tzdata==2023.3 -urllib3==1.26.18 -vcrpy==4.2.1 -wrapt==1.16.0 -yarl==1.9.4 diff --git a/.riot/requirements/13d8f2b.txt b/.riot/requirements/13d8f2b.txt new file mode 100644 index 00000000000..a713e2e4089 --- /dev/null +++ b/.riot/requirements/13d8f2b.txt @@ -0,0 +1,28 @@ +# +# This file is autogenerated by pip-compile with Python 3.8 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/13d8f2b.in +# +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 +googleapis-common-protos==1.63.2 +grpcio==1.34.1 +hypothesis==6.45.0 +importlib-metadata==8.0.0 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +protobuf==5.27.2 +pytest==8.2.2 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +six==1.16.0 +sortedcontainers==2.4.0 +tomli==2.0.1 +zipp==3.19.2 diff --git a/.riot/requirements/d15238d.txt b/.riot/requirements/13ecda2.txt similarity index 50% rename from .riot/requirements/d15238d.txt rename to .riot/requirements/13ecda2.txt index 312d8e693d8..1e9b53ce750 100644 --- a/.riot/requirements/d15238d.txt +++ b/.riot/requirements/13ecda2.txt @@ -2,31 +2,31 @@ # This file is autogenerated by pip-compile with Python 3.8 # by the following command: # -# pip-compile --no-annotate .riot/requirements/d15238d.in +# pip-compile --no-annotate .riot/requirements/13ecda2.in # -aiohttp==3.9.1 +aiohttp==3.9.5 aiosignal==1.3.1 async-timeout==4.0.3 -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 frozenlist==1.4.1 hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.0 +idna==3.7 +importlib-metadata==8.0.0 iniconfig==2.0.0 mock==5.1.0 -multidict==6.0.4 +multidict==6.0.5 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 pytest-aiohttp==1.0.5 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 tomli==2.0.1 yarl==1.9.4 -zipp==3.17.0 +zipp==3.19.2 diff --git a/.riot/requirements/13fec34.txt b/.riot/requirements/13fec34.txt new file mode 100644 index 00000000000..a73160dd648 --- /dev/null +++ b/.riot/requirements/13fec34.txt @@ -0,0 +1,49 @@ +# +# This file is autogenerated by pip-compile with Python 3.11 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/13fec34.in +# +annotated-types==0.7.0 +anyio==3.7.1 +attrs==23.2.0 +certifi==2024.7.4 +coverage[toml]==7.6.0 +distro==1.9.0 +h11==0.14.0 +httpcore==1.0.5 +httpx==0.27.0 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +mock==5.1.0 +multidict==6.0.5 +numpy==2.0.0 +openai[datalib,embeddings]==1.1.1 +opentracing==2.4.0 +packaging==24.1 +pandas==2.2.2 +pandas-stubs==2.2.2.240603 +pillow==9.5.0 +pluggy==1.5.0 +pydantic==2.8.2 +pydantic-core==2.20.1 +pytest==8.2.2 +pytest-asyncio==0.21.1 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +python-dateutil==2.9.0.post0 +pytz==2024.1 +pyyaml==6.0.1 +six==1.16.0 +sniffio==1.3.1 +sortedcontainers==2.4.0 +tqdm==4.66.4 +types-pytz==2024.1.0.20240417 +typing-extensions==4.12.2 +tzdata==2024.1 +urllib3==1.26.19 +vcrpy==4.2.1 +wrapt==1.16.0 +yarl==1.9.4 diff --git a/.riot/requirements/662f556.txt b/.riot/requirements/1427bf2.txt similarity index 76% rename from .riot/requirements/662f556.txt rename to .riot/requirements/1427bf2.txt index 1eaab334cde..80cb9ed0935 100644 --- a/.riot/requirements/662f556.txt +++ b/.riot/requirements/1427bf2.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/662f556.in +# pip-compile --allow-unsafe --no-annotate .riot/requirements/1427bf2.in # ai21==2.9.2 ai21-tokenizer==0.11.2 @@ -12,11 +12,11 @@ annotated-types==0.7.0 anthropic==0.31.2 anyio==4.4.0 attrs==23.2.0 -boto3==1.34.145 -botocore==1.34.145 +boto3==1.34.148 +botocore==1.34.148 certifi==2024.7.4 charset-normalizer==3.3.2 -cohere==5.6.1 +cohere==5.6.2 coverage[toml]==7.6.0 dataclasses-json==0.6.7 defusedxml==0.7.1 @@ -31,7 +31,7 @@ h11==0.14.0 httpcore==1.0.5 httpx==0.27.0 httpx-sse==0.4.0 -huggingface-hub==0.24.0 +huggingface-hub==0.24.2 hypothesis==6.45.0 idna==3.7 iniconfig==2.0.0 @@ -39,44 +39,45 @@ jiter==0.5.0 jmespath==1.0.1 jsonpatch==1.33 jsonpointer==3.0.0 -langchain==0.2.9 +langchain==0.2.11 langchain-anthropic==0.1.20 -langchain-aws==0.1.11 +langchain-aws==0.1.12 langchain-cohere==0.1.9 -langchain-community==0.2.7 -langchain-core==0.2.21 -langchain-experimental==0.0.62 +langchain-community==0.2.10 +langchain-core==0.2.23 +langchain-experimental==0.0.63 langchain-openai==0.1.17 -langchain-pinecone==0.1.2 +langchain-pinecone==0.1.3 langchain-text-splitters==0.2.2 -langsmith==0.1.92 +langsmith==0.1.93 marshmallow==3.21.3 mock==5.1.0 multidict==6.0.5 mypy-extensions==1.0.0 -numexpr==2.10.1 +numexpr==2.8.5 numpy==1.26.4 -openai==1.35.15 +openai==1.37.0 opentracing==2.4.0 orjson==3.10.6 packaging==24.1 pandas==2.2.2 parameterized==0.9.0 -pinecone-client==4.1.2 +pinecone-client==5.0.0 +pinecone-plugin-inference==1.0.2 pinecone-plugin-interface==0.0.7 pluggy==1.5.0 psutil==6.0.0 pydantic==2.8.2 pydantic-core==2.20.1 -pytest==8.2.2 +pytest==8.3.2 pytest-asyncio==0.21.1 pytest-cov==5.0.0 pytest-mock==3.14.0 -pytest-randomly==3.15.0 +pytest-randomly==3.10.1 python-dateutil==2.9.0.post0 pytz==2024.1 pyyaml==6.0.1 -regex==2024.5.15 +regex==2024.7.24 requests==2.32.3 s3transfer==0.10.2 sentencepiece==0.2.0 diff --git a/.riot/requirements/151b369.txt b/.riot/requirements/151b369.txt deleted file mode 100644 index fbeff6af3e7..00000000000 --- a/.riot/requirements/151b369.txt +++ /dev/null @@ -1,24 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.10 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/151b369.in -# -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 -hypothesis==6.45.0 -iniconfig==2.0.0 -mock==5.1.0 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -psycopg==3.1.16 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -typing-extensions==4.9.0 diff --git a/.riot/requirements/153b29f.txt b/.riot/requirements/153b29f.txt deleted file mode 100644 index 2d71cc69a00..00000000000 --- a/.riot/requirements/153b29f.txt +++ /dev/null @@ -1,35 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/153b29f.in -# -aiohttp==3.9.1 -aiohttp-jinja2==1.5.1 -aiosignal==1.3.1 -async-timeout==4.0.3 -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 -frozenlist==1.4.1 -hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.0 -iniconfig==2.0.0 -jinja2==3.1.2 -markupsafe==2.1.3 -mock==5.1.0 -multidict==6.0.4 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-aiohttp==1.0.5 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -yarl==1.9.4 -zipp==3.17.0 diff --git a/.riot/requirements/1567cf8.txt b/.riot/requirements/1567cf8.txt deleted file mode 100644 index 75bd4bed87a..00000000000 --- a/.riot/requirements/1567cf8.txt +++ /dev/null @@ -1,29 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/1567cf8.in -# -anyio==3.7.1 -attrs==23.1.0 -certifi==2023.11.17 -charset-normalizer==3.3.2 -coverage[toml]==7.3.4 -h11==0.12.0 -httpcore==0.14.7 -httpx==0.22.0 -hypothesis==6.45.0 -idna==3.6 -iniconfig==2.0.0 -mock==5.1.0 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -rfc3986[idna2008]==1.5.0 -sniffio==1.3.0 -sortedcontainers==2.4.0 diff --git a/.riot/requirements/16d03fb.txt b/.riot/requirements/15b093e.txt similarity index 51% rename from .riot/requirements/16d03fb.txt rename to .riot/requirements/15b093e.txt index d34f2f0118e..31686a68e09 100644 --- a/.riot/requirements/16d03fb.txt +++ b/.riot/requirements/15b093e.txt @@ -2,84 +2,79 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/16d03fb.in +# pip-compile --no-annotate .riot/requirements/15b093e.in # -annotated-types==0.6.0 +annotated-types==0.7.0 attrs==23.2.0 -aws-sam-translator==1.85.0 -aws-xray-sdk==2.12.1 +aws-sam-translator==1.89.0 +aws-xray-sdk==2.14.0 boto3==1.34.49 botocore==1.34.49 -certifi==2024.2.2 +certifi==2024.7.4 cffi==1.16.0 -cfn-lint==0.85.2 +cfn-lint==1.7.0 charset-normalizer==3.3.2 -coverage[toml]==7.4.3 -cryptography==42.0.5 -docker==7.0.0 -ecdsa==0.18.0 -exceptiongroup==1.2.0 +coverage[toml]==7.6.0 +cryptography==42.0.8 +docker==7.1.0 +ecdsa==0.19.0 +exceptiongroup==1.2.2 graphql-core==3.2.3 hypothesis==6.45.0 -idna==3.6 +idna==3.7 iniconfig==2.0.0 -jinja2==3.1.3 +jinja2==3.1.4 jmespath==1.0.1 -jschema-to-python==1.2.3 -jsondiff==2.0.0 +jsondiff==2.1.2 jsonpatch==1.33 -jsonpickle==3.0.3 -jsonpointer==2.4 -jsonschema==4.21.1 -jsonschema-path==0.3.2 +jsonpointer==3.0.0 +jsonschema==4.23.0 +jsonschema-path==0.3.3 jsonschema-specifications==2023.12.1 -junit-xml==1.9 lazy-object-proxy==1.10.0 markupsafe==2.1.5 mock==5.1.0 moto[all]==4.2.14 mpmath==1.3.0 multidict==6.0.5 -multipart==0.2.4 -networkx==3.2.1 +multipart==0.2.5 +networkx==3.3 openapi-schema-validator==0.6.2 openapi-spec-validator==0.7.1 opentracing==2.4.0 -packaging==23.2 +packaging==24.1 pathable==0.4.3 -pbr==6.0.0 -pluggy==1.4.0 +pluggy==1.5.0 py-partiql-parser==0.5.0 -pyasn1==0.5.1 -pycparser==2.21 -pydantic==2.6.2 -pydantic-core==2.16.3 -pyparsing==3.1.1 -pytest==8.0.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pyasn1==0.6.0 +pycparser==2.22 +pydantic==2.8.2 +pydantic-core==2.20.1 +pyparsing==3.1.2 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 python-jose[cryptography]==3.3.0 pyyaml==6.0.1 -referencing==0.31.1 -regex==2023.12.25 -requests==2.31.0 -responses==0.25.0 +referencing==0.35.1 +regex==2024.5.15 +requests==2.32.3 +responses==0.25.3 rfc3339-validator==0.1.4 -rpds-py==0.18.0 +rpds-py==0.19.0 rsa==4.9 -s3transfer==0.10.0 -sarif-om==1.0.4 +s3transfer==0.10.2 six==1.16.0 sortedcontainers==2.4.0 sshpubkeys==3.3.1 -sympy==1.12 +sympy==1.13.0 tomli==2.0.1 -typing-extensions==4.9.0 +typing-extensions==4.12.2 urllib3==2.0.7 vcrpy==6.0.1 -werkzeug==3.0.1 +werkzeug==3.0.3 wrapt==1.16.0 xmltodict==0.13.0 yarl==1.9.4 diff --git a/.riot/requirements/13a8940.txt b/.riot/requirements/15cc9b9.txt similarity index 52% rename from .riot/requirements/13a8940.txt rename to .riot/requirements/15cc9b9.txt index a823caaf2a3..eeaf4191909 100644 --- a/.riot/requirements/13a8940.txt +++ b/.riot/requirements/15cc9b9.txt @@ -2,31 +2,31 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/13a8940.in +# pip-compile --no-annotate .riot/requirements/15cc9b9.in # -aiohttp==3.9.1 +aiohttp==3.9.5 aiohttp-jinja2==1.6 aiosignal==1.3.1 async-timeout==4.0.3 -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 frozenlist==1.4.1 hypothesis==6.45.0 -idna==3.6 +idna==3.7 iniconfig==2.0.0 -jinja2==3.1.2 -markupsafe==2.1.3 +jinja2==3.1.4 +markupsafe==2.1.5 mock==5.1.0 -multidict==6.0.4 +multidict==6.0.5 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 pytest-aiohttp==1.0.5 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 tomli==2.0.1 diff --git a/.riot/requirements/1a7830b.txt b/.riot/requirements/15e76f9.txt similarity index 52% rename from .riot/requirements/1a7830b.txt rename to .riot/requirements/15e76f9.txt index a8e24bdb9a5..63ae52f3b82 100644 --- a/.riot/requirements/1a7830b.txt +++ b/.riot/requirements/15e76f9.txt @@ -2,29 +2,29 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1a7830b.in +# pip-compile --no-annotate .riot/requirements/15e76f9.in # -aiohttp==3.9.1 +aiohttp==3.9.5 aiohttp-jinja2==1.5.1 aiosignal==1.3.1 -attrs==23.1.0 -coverage[toml]==7.3.4 +attrs==23.2.0 +coverage[toml]==7.5.4 frozenlist==1.4.1 hypothesis==6.45.0 -idna==3.6 +idna==3.7 iniconfig==2.0.0 -jinja2==3.1.2 -markupsafe==2.1.3 +jinja2==3.1.4 +markupsafe==2.1.5 mock==5.1.0 -multidict==6.0.4 +multidict==6.0.5 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 pytest-aiohttp==1.0.5 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 yarl==1.9.4 diff --git a/.riot/requirements/1b4108b.txt b/.riot/requirements/1605571.txt similarity index 78% rename from .riot/requirements/1b4108b.txt rename to .riot/requirements/1605571.txt index b68262fc1c5..3a2c7bb0af4 100644 --- a/.riot/requirements/1b4108b.txt +++ b/.riot/requirements/1605571.txt @@ -2,21 +2,21 @@ # This file is autogenerated by pip-compile with Python 3.7 # by the following command: # -# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/1b4108b.in +# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/1605571.in # -attrs==23.1.0 +attrs==23.2.0 backports-zoneinfo==0.2.1 coverage[toml]==7.2.7 -exceptiongroup==1.2.0 +exceptiongroup==1.2.1 hypothesis==6.45.0 importlib-metadata==6.7.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 +packaging==24.0 pluggy==1.2.0 -psycopg==3.0.18 -pytest==7.4.3 +psycopg==3.1.20 +pytest==7.4.4 pytest-asyncio==0.21.1 pytest-cov==4.1.0 pytest-mock==3.11.1 diff --git a/.riot/requirements/19fe101.txt b/.riot/requirements/1619693.txt similarity index 78% rename from .riot/requirements/19fe101.txt rename to .riot/requirements/1619693.txt index 10b2353ea74..1069309457b 100644 --- a/.riot/requirements/19fe101.txt +++ b/.riot/requirements/1619693.txt @@ -2,30 +2,30 @@ # This file is autogenerated by pip-compile with Python 3.7 # by the following command: # -# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/19fe101.in +# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/1619693.in # aiohttp==3.8.6 aiohttp-jinja2==1.5.1 aiosignal==1.3.1 async-timeout==4.0.3 asynctest==0.13.0 -attrs==23.1.0 +attrs==23.2.0 charset-normalizer==3.3.2 coverage[toml]==7.2.7 -exceptiongroup==1.2.0 +exceptiongroup==1.2.1 frozenlist==1.3.3 hypothesis==6.45.0 -idna==3.6 +idna==3.7 importlib-metadata==6.7.0 iniconfig==2.0.0 -jinja2==3.1.2 -markupsafe==2.1.3 +jinja2==3.1.4 +markupsafe==2.1.5 mock==5.1.0 -multidict==6.0.4 +multidict==6.0.5 opentracing==2.4.0 -packaging==23.2 +packaging==24.0 pluggy==1.2.0 -pytest==7.4.3 +pytest==7.4.4 pytest-aiohttp==1.0.5 pytest-asyncio==0.21.1 pytest-cov==4.1.0 diff --git a/.riot/requirements/162e30e.txt b/.riot/requirements/162e30e.txt new file mode 100644 index 00000000000..5de56c7f9c1 --- /dev/null +++ b/.riot/requirements/162e30e.txt @@ -0,0 +1,27 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/162e30e.in +# +aiohttp==3.9.5 +aiosignal==1.3.1 +attrs==23.2.0 +coverage[toml]==7.5.4 +frozenlist==1.4.1 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +mock==5.1.0 +multidict==6.0.5 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-aiohttp==1.0.5 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 +yarl==1.9.4 diff --git a/.riot/requirements/1634a62.txt b/.riot/requirements/1634a62.txt new file mode 100644 index 00000000000..9f829aa76d8 --- /dev/null +++ b/.riot/requirements/1634a62.txt @@ -0,0 +1,48 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/1634a62.in +# +attrs==23.2.0 +certifi==2024.6.2 +charset-normalizer==2.1.1 +click==8.1.7 +coverage[toml]==7.5.4 +deprecated==1.2.14 +flask==2.1.3 +gevent==24.2.1 +greenlet==3.0.3 +hypothesis==6.45.0 +idna==3.7 +importlib-metadata==7.1.0 +iniconfig==2.0.0 +itsdangerous==2.2.0 +jinja2==3.1.4 +markupsafe==2.0.1 +mock==5.1.0 +opentelemetry-api==1.25.0 +opentelemetry-instrumentation==0.37b0 +opentelemetry-instrumentation-flask==0.37b0 +opentelemetry-instrumentation-wsgi==0.37b0 +opentelemetry-semantic-conventions==0.37b0 +opentelemetry-util-http==0.37b0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.21.1 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +requests==2.28.1 +sortedcontainers==2.4.0 +urllib3==1.26.19 +werkzeug==2.1.2 +wrapt==1.16.0 +zipp==3.19.2 +zope-event==5.0 +zope-interface==6.4.post2 + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/.riot/requirements/1f0c84d.txt b/.riot/requirements/165b374.txt similarity index 81% rename from .riot/requirements/1f0c84d.txt rename to .riot/requirements/165b374.txt index 6690a30efd0..5e40fc5446f 100644 --- a/.riot/requirements/1f0c84d.txt +++ b/.riot/requirements/165b374.txt @@ -2,27 +2,27 @@ # This file is autogenerated by pip-compile with Python 3.7 # by the following command: # -# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/1f0c84d.in +# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/165b374.in # aiohttp==3.8.6 aiosignal==1.3.1 async-timeout==4.0.3 asynctest==0.13.0 -attrs==23.1.0 +attrs==23.2.0 charset-normalizer==3.3.2 coverage[toml]==7.2.7 -exceptiongroup==1.2.0 +exceptiongroup==1.2.1 frozenlist==1.3.3 hypothesis==6.45.0 -idna==3.6 +idna==3.7 importlib-metadata==6.7.0 iniconfig==2.0.0 mock==5.1.0 -multidict==6.0.4 +multidict==6.0.5 opentracing==2.4.0 -packaging==23.2 +packaging==24.0 pluggy==1.2.0 -pytest==7.4.3 +pytest==7.4.4 pytest-aiohttp==1.0.5 pytest-asyncio==0.21.1 pytest-cov==4.1.0 diff --git a/.riot/requirements/1153ad9.txt b/.riot/requirements/1677649.txt similarity index 51% rename from .riot/requirements/1153ad9.txt rename to .riot/requirements/1677649.txt index 3816405de28..e4862279695 100644 --- a/.riot/requirements/1153ad9.txt +++ b/.riot/requirements/1677649.txt @@ -2,31 +2,36 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate --resolver=backtracking .riot/requirements/1153ad9.in +# pip-compile --no-annotate .riot/requirements/1677649.in # attrs==23.2.0 -certifi==2023.11.17 +certifi==2024.7.4 charset-normalizer==3.3.2 click==7.1.2 -coverage[toml]==7.4.0 +coverage[toml]==7.6.0 +deprecated==1.2.14 flask==1.1.4 -gunicorn==21.2.0 +gunicorn==22.0.0 httpretty==1.0.5 hypothesis==6.45.0 -idna==3.6 +idna==3.7 +importlib-metadata==7.0.0 iniconfig==2.0.0 itsdangerous==1.1.0 jinja2==2.11.3 markupsafe==1.1.1 mock==5.1.0 +opentelemetry-api==1.24.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.4 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.3.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -requests==2.31.0 +requests==2.32.3 sortedcontainers==2.4.0 -urllib3==2.1.0 +urllib3==2.2.2 werkzeug==1.0.1 +wrapt==1.16.0 +zipp==3.19.2 diff --git a/.riot/requirements/1fadc81.txt b/.riot/requirements/1683324.txt similarity index 85% rename from .riot/requirements/1fadc81.txt rename to .riot/requirements/1683324.txt index a463455ad90..70f7284a8a1 100644 --- a/.riot/requirements/1fadc81.txt +++ b/.riot/requirements/1683324.txt @@ -2,18 +2,18 @@ # This file is autogenerated by pip-compile with Python 3.7 # by the following command: # -# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/1fadc81.in +# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/1683324.in # async-timeout==4.0.3 attrs==23.2.0 coverage[toml]==7.2.7 -exceptiongroup==1.2.0 +exceptiongroup==1.2.1 hypothesis==6.45.0 importlib-metadata==6.7.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 +packaging==24.0 pluggy==1.2.0 pytest==7.4.4 pytest-asyncio==0.21.1 diff --git a/.riot/requirements/169c991.txt b/.riot/requirements/169c991.txt index b00087df1f0..94e279b24f8 100644 --- a/.riot/requirements/169c991.txt +++ b/.riot/requirements/169c991.txt @@ -4,68 +4,68 @@ # # pip-compile --no-annotate .riot/requirements/169c991.in # -annotated-types==0.6.0 -attrs==23.1.0 -aws-sam-translator==1.82.0 -aws-xray-sdk==2.12.1 +annotated-types==0.7.0 +attrs==23.2.0 +aws-sam-translator==1.89.0 +aws-xray-sdk==2.14.0 boto==2.49.0 -boto3==1.34.6 -botocore==1.34.6 -certifi==2023.11.17 +boto3==1.34.139 +botocore==1.34.139 +certifi==2024.6.2 cffi==1.16.0 cfn-lint==0.53.1 charset-normalizer==3.3.2 -coverage[toml]==7.3.4 -cryptography==41.0.7 -docker==7.0.0 +coverage[toml]==7.5.4 +cryptography==42.0.8 +docker==7.1.0 ecdsa==0.14.1 -exceptiongroup==1.2.0 +exceptiongroup==1.2.1 hypothesis==6.45.0 idna==2.10 iniconfig==2.0.0 jinja2==2.11.3 jmespath==1.0.1 -jsondiff==2.0.0 +jsondiff==2.1.1 jsonpatch==1.33 -jsonpointer==2.4 +jsonpointer==3.0.0 jsonschema==3.2.0 junit-xml==1.9 markupsafe==1.1.1 mock==5.1.0 -more-itertools==10.1.0 +more-itertools==10.3.0 moto==1.3.16 networkx==2.8.8 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pyasn1==0.5.1 -pycparser==2.21 -pydantic==2.5.2 -pydantic-core==2.14.5 +packaging==24.1 +pluggy==1.5.0 +pyasn1==0.6.0 +pycparser==2.22 +pydantic==2.8.0 +pydantic-core==2.20.0 pynamodb==5.5.1 pyrsistent==0.20.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 python-jose[cryptography]==3.3.0 -pytz==2023.3.post1 +pytz==2024.1 pyyaml==6.0.1 -requests==2.31.0 -responses==0.24.1 +requests==2.32.3 +responses==0.25.3 rsa==4.9 -s3transfer==0.10.0 +s3transfer==0.10.2 six==1.16.0 sortedcontainers==2.4.0 sshpubkeys==3.3.1 tomli==2.0.1 -typing-extensions==4.9.0 -urllib3==2.0.7 +typing-extensions==4.12.2 +urllib3==2.2.2 werkzeug==2.1.2 wrapt==1.16.0 xmltodict==0.13.0 -zipp==3.17.0 +zipp==3.19.2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/16c251e.txt b/.riot/requirements/16c251e.txt new file mode 100644 index 00000000000..5b48776289c --- /dev/null +++ b/.riot/requirements/16c251e.txt @@ -0,0 +1,27 @@ +# +# This file is autogenerated by pip-compile with Python 3.8 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/16c251e.in +# +attrs==23.2.0 +backports-zoneinfo==0.2.1 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 +hypothesis==6.45.0 +importlib-metadata==8.0.0 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +psycopg==3.2.1 +pytest==8.2.2 +pytest-asyncio==0.21.1 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 +tomli==2.0.1 +typing-extensions==4.12.2 +zipp==3.19.2 diff --git a/.riot/requirements/1726ded.txt b/.riot/requirements/1726ded.txt deleted file mode 100644 index 728b890009e..00000000000 --- a/.riot/requirements/1726ded.txt +++ /dev/null @@ -1,35 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.8 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/1726ded.in -# -aiohttp==3.9.1 -aiohttp-jinja2==1.5.1 -aiosignal==1.3.1 -async-timeout==4.0.3 -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 -frozenlist==1.4.1 -hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.0 -iniconfig==2.0.0 -jinja2==3.1.2 -markupsafe==2.1.3 -mock==5.1.0 -multidict==6.0.4 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-aiohttp==1.0.5 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -yarl==1.9.4 -zipp==3.17.0 diff --git a/.riot/requirements/1b1cb07.txt b/.riot/requirements/177912e.txt similarity index 56% rename from .riot/requirements/1b1cb07.txt rename to .riot/requirements/177912e.txt index ed197d18484..0fe298c21d5 100644 --- a/.riot/requirements/1b1cb07.txt +++ b/.riot/requirements/177912e.txt @@ -2,22 +2,22 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1b1cb07.in +# pip-compile --no-annotate .riot/requirements/177912e.in # async-timeout==4.0.3 attrs==23.2.0 -coverage[toml]==7.4.0 -exceptiongroup==1.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 hypothesis==6.45.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.4 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 redis==5.0.1 sortedcontainers==2.4.0 diff --git a/.riot/requirements/178eed6.txt b/.riot/requirements/178eed6.txt deleted file mode 100644 index 0299069410e..00000000000 --- a/.riot/requirements/178eed6.txt +++ /dev/null @@ -1,146 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.10 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/178eed6.in -# -<<<<<<< HEAD:.riot/requirements/178eed6.txt -ai21==2.9.2 -======= -ai21==2.9.1 ->>>>>>> main:.riot/requirements/fd7ae89.txt -ai21-tokenizer==0.11.2 -aiohttp==3.9.5 -aiosignal==1.3.1 -annotated-types==0.7.0 -<<<<<<< HEAD:.riot/requirements/178eed6.txt -anthropic==0.31.1 -anyio==4.4.0 -async-timeout==4.0.3 -attrs==23.2.0 -boto3==1.34.144 -botocore==1.34.144 -certifi==2024.7.4 -charset-normalizer==3.3.2 -cohere==5.6.0 -======= -anthropic==0.31.0 -anyio==4.4.0 -async-timeout==4.0.3 -attrs==23.2.0 -boto3==1.34.143 -botocore==1.34.143 -certifi==2024.7.4 -charset-normalizer==3.3.2 -cohere==5.5.8 ->>>>>>> main:.riot/requirements/fd7ae89.txt -coverage[toml]==7.6.0 -dataclasses-json==0.6.7 -defusedxml==0.7.1 -distro==1.9.0 -<<<<<<< HEAD:.riot/requirements/178eed6.txt -exceptiongroup==1.2.2 -======= -exceptiongroup==1.2.1 ->>>>>>> main:.riot/requirements/fd7ae89.txt -fastavro==1.9.5 -filelock==3.15.4 -frozenlist==1.4.1 -fsspec==2024.6.1 -greenlet==3.0.3 -h11==0.14.0 -httpcore==1.0.5 -httpx==0.27.0 -httpx-sse==0.4.0 -huggingface-hub==0.23.5 -hypothesis==6.45.0 -idna==3.7 -iniconfig==2.0.0 -jiter==0.5.0 -jmespath==1.0.1 -jsonpatch==1.33 -jsonpointer==3.0.0 -<<<<<<< HEAD:.riot/requirements/178eed6.txt -langchain==0.2.8 -langchain-anthropic==0.1.20 -langchain-aws==0.1.11 -langchain-cohere==0.1.9 -langchain-community==0.2.7 -langchain-core==0.2.19 -langchain-experimental==0.0.62 -langchain-openai==0.1.16 -langchain-pinecone==0.1.1 -langchain-text-splitters==0.2.2 -langsmith==0.1.86 -======= -langchain==0.2.7 -langchain-anthropic==0.1.19 -langchain-aws==0.1.10 -langchain-cohere==0.1.9 -langchain-community==0.2.7 -langchain-core==0.2.15 -langchain-experimental==0.0.62 -langchain-openai==0.1.15 -langchain-pinecone==0.1.1 -langchain-text-splitters==0.2.2 -langsmith==0.1.85 ->>>>>>> main:.riot/requirements/fd7ae89.txt -marshmallow==3.21.3 -mock==5.1.0 -multidict==6.0.5 -mypy-extensions==1.0.0 -numexpr==2.10.1 -numpy==1.26.4 -<<<<<<< HEAD:.riot/requirements/178eed6.txt -openai==1.35.14 -======= -openai==1.35.13 ->>>>>>> main:.riot/requirements/fd7ae89.txt -opentracing==2.4.0 -orjson==3.10.6 -packaging==24.1 -pandas==2.2.2 -parameterized==0.9.0 -pinecone-client==3.2.2 -pluggy==1.5.0 -psutil==6.0.0 -pydantic==2.8.2 -pydantic-core==2.20.1 -pytest==8.2.2 -pytest-asyncio==0.21.1 -pytest-cov==5.0.0 -pytest-mock==3.14.0 -pytest-randomly==3.15.0 -python-dateutil==2.9.0.post0 -pytz==2024.1 -pyyaml==6.0.1 -regex==2024.5.15 -requests==2.32.3 -s3transfer==0.10.2 -sentencepiece==0.2.0 -six==1.16.0 -sniffio==1.3.1 -sortedcontainers==2.4.0 -sqlalchemy==2.0.31 -tabulate==0.9.0 -tenacity==8.5.0 -tiktoken==0.7.0 -tokenizers==0.19.1 -tomli==2.0.1 -tqdm==4.66.4 -<<<<<<< HEAD:.riot/requirements/178eed6.txt -types-requests==2.32.0.20240712 -======= -types-requests==2.32.0.20240622 ->>>>>>> main:.riot/requirements/fd7ae89.txt -typing-extensions==4.12.2 -typing-inspect==0.9.0 -tzdata==2024.1 -urllib3==2.2.2 -<<<<<<< HEAD:.riot/requirements/178eed6.txt -vcrpy==5.1.0 -======= -vcrpy==6.0.1 ->>>>>>> main:.riot/requirements/fd7ae89.txt -wrapt==1.16.0 -yarl==1.9.4 diff --git a/.riot/requirements/7e67451.txt b/.riot/requirements/17a194c.txt similarity index 51% rename from .riot/requirements/7e67451.txt rename to .riot/requirements/17a194c.txt index 254d6a1ec8e..0fdb8f339b0 100644 --- a/.riot/requirements/7e67451.txt +++ b/.riot/requirements/17a194c.txt @@ -2,24 +2,24 @@ # This file is autogenerated by pip-compile with Python 3.9 # by the following command: # -# pip-compile --no-annotate .riot/requirements/7e67451.in +# pip-compile --no-annotate .riot/requirements/17a194c.in # -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 hypothesis==6.45.0 -importlib-metadata==7.0.0 +importlib-metadata==8.0.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 redis==3.5.3 redis-py-cluster==2.1.3 sortedcontainers==2.4.0 tomli==2.0.1 -zipp==3.17.0 +zipp==3.19.2 diff --git a/.riot/requirements/427c22a.txt b/.riot/requirements/17c4377.txt similarity index 68% rename from .riot/requirements/427c22a.txt rename to .riot/requirements/17c4377.txt index 10859c1323e..7ad55b82d7b 100644 --- a/.riot/requirements/427c22a.txt +++ b/.riot/requirements/17c4377.txt @@ -2,27 +2,29 @@ # This file is autogenerated by pip-compile with Python 3.7 # by the following command: # -# pip-compile --no-annotate --resolver=backtracking .riot/requirements/427c22a.in +# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/17c4377.in # attrs==23.2.0 -certifi==2023.11.17 +certifi==2024.7.4 charset-normalizer==3.3.2 click==7.1.2 coverage[toml]==7.2.7 -exceptiongroup==1.2.0 +deprecated==1.2.14 +exceptiongroup==1.2.2 flask==1.1.4 -gunicorn==21.2.0 +gunicorn==22.0.0 httpretty==1.0.5 hypothesis==6.45.0 -idna==3.6 +idna==3.7 importlib-metadata==6.7.0 iniconfig==2.0.0 itsdangerous==1.1.0 jinja2==2.11.3 markupsafe==1.1.1 mock==5.1.0 +opentelemetry-api==1.22.0 opentracing==2.4.0 -packaging==23.2 +packaging==24.0 pluggy==1.2.0 pytest==7.4.4 pytest-cov==4.1.0 @@ -34,4 +36,5 @@ tomli==2.0.1 typing-extensions==4.7.1 urllib3==2.0.7 werkzeug==1.0.1 +wrapt==1.16.0 zipp==3.15.0 diff --git a/.riot/requirements/1ec1f44.txt b/.riot/requirements/17d4731.txt similarity index 50% rename from .riot/requirements/1ec1f44.txt rename to .riot/requirements/17d4731.txt index 91bd3d42495..54c89dc586b 100644 --- a/.riot/requirements/1ec1f44.txt +++ b/.riot/requirements/17d4731.txt @@ -2,24 +2,23 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1ec1f44.in +# pip-compile --no-annotate .riot/requirements/17d4731.in # attrs==23.2.0 -coverage[toml]==7.4.2 -exceptiongroup==1.2.0 -googleapis-common-protos==1.62.0 -grpcio==1.59.3 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 hypothesis==6.45.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.4.0 -protobuf==4.25.3 -pytest==8.0.1 +packaging==24.1 +pluggy==1.5.0 +psycopg==3.2.1 +pytest==8.2.2 pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 tomli==2.0.1 +typing-extensions==4.12.2 diff --git a/.riot/requirements/17de2dc.txt b/.riot/requirements/17de2dc.txt deleted file mode 100644 index dfa860d32c5..00000000000 --- a/.riot/requirements/17de2dc.txt +++ /dev/null @@ -1,26 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/17de2dc.in -# -async-timeout==4.0.3 -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 -hypothesis==6.45.0 -importlib-metadata==7.0.0 -iniconfig==2.0.0 -mock==5.1.0 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -redis==4.6.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -zipp==3.17.0 diff --git a/.riot/requirements/17ec5eb.txt b/.riot/requirements/17ec5eb.txt new file mode 100644 index 00000000000..40b68f0c906 --- /dev/null +++ b/.riot/requirements/17ec5eb.txt @@ -0,0 +1,35 @@ +# +# This file is autogenerated by pip-compile with Python 3.8 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/17ec5eb.in +# +aiohttp==3.9.5 +aiohttp-jinja2==1.5.1 +aiosignal==1.3.1 +async-timeout==4.0.3 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 +frozenlist==1.4.1 +hypothesis==6.45.0 +idna==3.7 +importlib-metadata==8.0.0 +iniconfig==2.0.0 +jinja2==3.1.4 +markupsafe==2.1.5 +mock==5.1.0 +multidict==6.0.5 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-aiohttp==1.0.5 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 +tomli==2.0.1 +yarl==1.9.4 +zipp==3.19.2 diff --git a/.riot/requirements/1c18506.txt b/.riot/requirements/181128c.txt similarity index 52% rename from .riot/requirements/1c18506.txt rename to .riot/requirements/181128c.txt index 35005b0a03e..bbbfce393fd 100644 --- a/.riot/requirements/1c18506.txt +++ b/.riot/requirements/181128c.txt @@ -2,25 +2,25 @@ # This file is autogenerated by pip-compile with Python 3.9 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1c18506.in +# pip-compile --no-annotate .riot/requirements/181128c.in # async-timeout==4.0.3 attrs==23.2.0 -coverage[toml]==7.4.0 -exceptiongroup==1.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 hypothesis==6.45.0 -importlib-metadata==7.0.1 +importlib-metadata==8.0.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.4 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 redis==5.0.1 sortedcontainers==2.4.0 tomli==2.0.1 -zipp==3.17.0 +zipp==3.19.2 diff --git a/.riot/requirements/1666d46.txt b/.riot/requirements/181216c.txt similarity index 89% rename from .riot/requirements/1666d46.txt rename to .riot/requirements/181216c.txt index e74f4447748..3297b734317 100644 --- a/.riot/requirements/1666d46.txt +++ b/.riot/requirements/181216c.txt @@ -2,16 +2,16 @@ # This file is autogenerated by pip-compile with Python 3.7 # by the following command: # -# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/1666d46.in +# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/181216c.in # annotated-types==0.5.0 anyio==3.7.1 attrs==23.2.0 cached-property==1.5.2 -certifi==2024.2.2 +certifi==2024.7.4 coverage[toml]==7.2.7 distro==1.9.0 -exceptiongroup==1.2.1 +exceptiongroup==1.2.2 h11==0.14.0 httpcore==0.17.3 httpx==0.24.1 @@ -45,7 +45,7 @@ sortedcontainers==2.4.0 tomli==2.0.1 tqdm==4.66.4 typing-extensions==4.7.1 -urllib3==1.26.18 +urllib3==1.26.19 vcrpy==4.2.1 wrapt==1.16.0 yarl==1.9.4 diff --git a/.riot/requirements/7e8b35e.txt b/.riot/requirements/1825740.txt similarity index 80% rename from .riot/requirements/7e8b35e.txt rename to .riot/requirements/1825740.txt index 702100391df..d802e1be924 100644 --- a/.riot/requirements/7e8b35e.txt +++ b/.riot/requirements/1825740.txt @@ -2,32 +2,32 @@ # This file is autogenerated by pip-compile with Python 3.7 # by the following command: # -# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/7e8b35e.in +# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/1825740.in # aiohttp==3.8.6 aiosignal==1.3.1 async-timeout==4.0.3 asynctest==0.13.0 -attrs==23.1.0 -certifi==2023.11.17 +attrs==23.2.0 +certifi==2024.7.4 charset-normalizer==3.3.2 coverage[toml]==7.2.7 -exceptiongroup==1.2.0 +exceptiongroup==1.2.2 frozenlist==1.3.3 hypothesis==6.45.0 -idna==3.6 +idna==3.7 importlib-metadata==6.7.0 iniconfig==2.0.0 joblib==1.3.2 mock==5.1.0 -multidict==6.0.4 +multidict==6.0.5 numpy==1.21.6 openai==0.26.5 opentracing==2.4.0 -packaging==23.2 +packaging==24.0 pillow==9.5.0 pluggy==1.2.0 -pytest==7.4.3 +pytest==7.4.4 pytest-asyncio==0.21.1 pytest-cov==4.1.0 pytest-mock==3.11.1 @@ -40,9 +40,9 @@ six==1.16.0 sortedcontainers==2.4.0 threadpoolctl==3.1.0 tomli==2.0.1 -tqdm==4.66.1 +tqdm==4.66.4 typing-extensions==4.7.1 -urllib3==1.26.18 +urllib3==1.26.19 vcrpy==4.2.1 wrapt==1.16.0 yarl==1.9.4 diff --git a/.riot/requirements/1853bc5.txt b/.riot/requirements/1853bc5.txt index 6bbebbc9a97..d35e81127bc 100644 --- a/.riot/requirements/1853bc5.txt +++ b/.riot/requirements/1853bc5.txt @@ -4,69 +4,69 @@ # # pip-compile --no-annotate .riot/requirements/1853bc5.in # -annotated-types==0.6.0 -attrs==23.1.0 -aws-sam-translator==1.82.0 -aws-xray-sdk==2.12.1 +annotated-types==0.7.0 +attrs==23.2.0 +aws-sam-translator==1.89.0 +aws-xray-sdk==2.14.0 boto==2.49.0 -boto3==1.34.6 -botocore==1.34.6 -certifi==2023.11.17 +boto3==1.34.139 +botocore==1.34.139 +certifi==2024.6.2 cffi==1.16.0 cfn-lint==0.53.1 charset-normalizer==3.3.2 -coverage[toml]==7.3.4 -cryptography==41.0.7 -docker==7.0.0 +coverage[toml]==7.5.4 +cryptography==42.0.8 +docker==7.1.0 ecdsa==0.14.1 -exceptiongroup==1.2.0 +exceptiongroup==1.2.1 hypothesis==6.45.0 idna==2.10 -importlib-metadata==7.0.0 +importlib-metadata==8.0.0 iniconfig==2.0.0 jinja2==2.11.3 jmespath==1.0.1 -jsondiff==2.0.0 +jsondiff==2.1.1 jsonpatch==1.33 -jsonpointer==2.4 +jsonpointer==3.0.0 jsonschema==3.2.0 junit-xml==1.9 markupsafe==1.1.1 mock==5.1.0 -more-itertools==10.1.0 +more-itertools==10.3.0 moto==1.3.16 networkx==2.8.8 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pyasn1==0.5.1 -pycparser==2.21 -pydantic==2.5.2 -pydantic-core==2.14.5 +packaging==24.1 +pluggy==1.5.0 +pyasn1==0.6.0 +pycparser==2.22 +pydantic==2.8.0 +pydantic-core==2.20.0 pynamodb==5.5.1 pyrsistent==0.20.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 python-jose[cryptography]==3.3.0 -pytz==2023.3.post1 +pytz==2024.1 pyyaml==6.0.1 -requests==2.31.0 -responses==0.24.1 +requests==2.32.3 +responses==0.25.3 rsa==4.9 -s3transfer==0.10.0 +s3transfer==0.10.2 six==1.16.0 sortedcontainers==2.4.0 sshpubkeys==3.3.1 tomli==2.0.1 -typing-extensions==4.9.0 -urllib3==1.26.18 +typing-extensions==4.12.2 +urllib3==1.26.19 werkzeug==2.1.2 wrapt==1.16.0 xmltodict==0.13.0 -zipp==3.17.0 +zipp==3.19.2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/135aac0.txt b/.riot/requirements/18589ec.txt similarity index 50% rename from .riot/requirements/135aac0.txt rename to .riot/requirements/18589ec.txt index 34447792a37..b57924b80f4 100644 --- a/.riot/requirements/135aac0.txt +++ b/.riot/requirements/18589ec.txt @@ -2,35 +2,38 @@ # This file is autogenerated by pip-compile with Python 3.9 # by the following command: # -# pip-compile --no-annotate --resolver=backtracking .riot/requirements/135aac0.in +# pip-compile --no-annotate .riot/requirements/18589ec.in # attrs==23.2.0 -certifi==2023.11.17 +certifi==2024.7.4 charset-normalizer==3.3.2 click==7.1.2 -coverage[toml]==7.4.0 -exceptiongroup==1.2.0 +coverage[toml]==7.6.0 +deprecated==1.2.14 +exceptiongroup==1.2.2 flask==1.1.4 -gunicorn==21.2.0 +gunicorn==22.0.0 httpretty==1.0.5 hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.1 +idna==3.7 +importlib-metadata==7.0.0 iniconfig==2.0.0 itsdangerous==1.1.0 jinja2==2.11.3 markupsafe==1.1.1 mock==5.1.0 +opentelemetry-api==1.24.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.4 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.3.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -requests==2.31.0 +requests==2.32.3 sortedcontainers==2.4.0 tomli==2.0.1 -urllib3==2.1.0 +urllib3==2.2.2 werkzeug==1.0.1 -zipp==3.17.0 +wrapt==1.16.0 +zipp==3.19.2 diff --git a/.riot/requirements/18d7e9f.txt b/.riot/requirements/186ece2.txt similarity index 80% rename from .riot/requirements/18d7e9f.txt rename to .riot/requirements/186ece2.txt index 8762d68ea48..79af56e0359 100644 --- a/.riot/requirements/18d7e9f.txt +++ b/.riot/requirements/186ece2.txt @@ -2,19 +2,19 @@ # This file is autogenerated by pip-compile with Python 3.7 # by the following command: # -# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/18d7e9f.in +# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/186ece2.in # -attrs==23.1.0 +attrs==23.2.0 coverage[toml]==7.2.7 -exceptiongroup==1.2.0 +exceptiongroup==1.2.1 hypothesis==6.45.0 importlib-metadata==6.7.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 +packaging==24.0 pluggy==1.2.0 -pytest==7.4.3 +pytest==7.4.4 pytest-cov==4.1.0 pytest-mock==3.11.1 pytest-randomly==3.12.0 diff --git a/.riot/requirements/ac23362.txt b/.riot/requirements/1894fac.txt similarity index 68% rename from .riot/requirements/ac23362.txt rename to .riot/requirements/1894fac.txt index 01cced6616c..7565d0dd040 100644 --- a/.riot/requirements/ac23362.txt +++ b/.riot/requirements/1894fac.txt @@ -2,32 +2,31 @@ # This file is autogenerated by pip-compile with Python 3.7 # by the following command: # -# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/ac23362.in +# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/1894fac.in # anyio==3.7.1 -attrs==23.1.0 -certifi==2023.11.17 -charset-normalizer==3.3.2 +attrs==23.2.0 +certifi==2024.6.2 coverage[toml]==7.2.7 -exceptiongroup==1.2.0 -h11==0.12.0 -httpcore==0.14.7 -httpx==0.22.0 +exceptiongroup==1.2.1 +h11==0.14.0 +httpcore==0.16.3 +httpx==0.23.3 hypothesis==6.45.0 -idna==3.6 +idna==3.7 importlib-metadata==6.7.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 +packaging==24.0 pluggy==1.2.0 -pytest==7.4.3 +pytest==7.4.4 pytest-asyncio==0.21.1 pytest-cov==4.1.0 pytest-mock==3.11.1 pytest-randomly==3.12.0 rfc3986[idna2008]==1.5.0 -sniffio==1.3.0 +sniffio==1.3.1 sortedcontainers==2.4.0 tomli==2.0.1 typing-extensions==4.7.1 diff --git a/.riot/requirements/1b365e2.txt b/.riot/requirements/189a9da.txt similarity index 76% rename from .riot/requirements/1b365e2.txt rename to .riot/requirements/189a9da.txt index bf8e3b567c6..b329bd7b50f 100644 --- a/.riot/requirements/1b365e2.txt +++ b/.riot/requirements/189a9da.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.7 # by the following command: # -# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/1b365e2.in +# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/189a9da.in # aiobotocore==2.3.1 aiohttp==3.8.6 @@ -12,43 +12,43 @@ async-timeout==4.0.3 asynctest==0.13.0 attrs==23.2.0 botocore==1.24.21 -certifi==2024.2.2 +certifi==2024.7.4 charset-normalizer==3.3.2 coverage[toml]==7.2.7 -elastic-transport==8.12.0 -elasticsearch==8.12.1 -exceptiongroup==1.2.0 +elastic-transport==8.13.1 +elasticsearch==8.14.0 +exceptiongroup==1.2.1 frozenlist==1.3.3 gevent==20.12.1 greenlet==1.0.0 hypothesis==6.45.0 -idna==3.6 +idna==3.7 importlib-metadata==6.7.0 iniconfig==2.0.0 jmespath==1.0.1 mock==5.1.0 multidict==6.0.5 -opensearch-py==2.4.2 +opensearch-py==2.5.0 opentracing==2.4.0 -packaging==23.2 +packaging==24.0 pluggy==1.2.0 -pynamodb==6.0.0 +pynamodb==5.5.1 pytest==7.4.4 pytest-cov==4.1.0 pytest-mock==3.11.1 pytest-randomly==3.12.0 -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 requests==2.31.0 six==1.16.0 sortedcontainers==2.4.0 tomli==2.0.1 typing-extensions==4.7.1 -urllib3==1.26.18 +urllib3==1.26.19 wrapt==1.16.0 yarl==1.9.4 zipp==3.15.0 zope-event==5.0 -zope-interface==6.2 +zope-interface==6.4.post2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/1bcdaef.txt b/.riot/requirements/18b32f4.txt similarity index 55% rename from .riot/requirements/1bcdaef.txt rename to .riot/requirements/18b32f4.txt index 17c4ae82196..ce02e20acda 100644 --- a/.riot/requirements/1bcdaef.txt +++ b/.riot/requirements/18b32f4.txt @@ -2,20 +2,20 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1bcdaef.in +# pip-compile --no-annotate .riot/requirements/18b32f4.in # attrs==23.2.0 -coverage[toml]==7.4.0 +coverage[toml]==7.5.4 hypothesis==6.45.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.4 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 redis==5.0.1 sortedcontainers==2.4.0 diff --git a/.riot/requirements/18dee11.txt b/.riot/requirements/18dee11.txt new file mode 100644 index 00000000000..f3b7a09f9db --- /dev/null +++ b/.riot/requirements/18dee11.txt @@ -0,0 +1,54 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/18dee11.in +# +aiosqlite==0.17.0 +annotated-types==0.7.0 +attrs==23.2.0 +blinker==1.8.2 +bytecode==0.15.1 +cattrs==22.2.0 +certifi==2024.7.4 +charset-normalizer==3.3.2 +click==8.1.7 +coverage[toml]==7.6.0 +deprecated==1.2.14 +envier==0.5.2 +flask==3.0.3 +greenlet==3.0.3 +hypothesis==6.45.0 +idna==3.7 +importlib-metadata==7.1.0 +iniconfig==2.0.0 +iso8601==1.1.0 +itsdangerous==2.2.0 +jinja2==3.1.4 +markupsafe==2.1.5 +mock==5.1.0 +opentelemetry-api==1.25.0 +opentracing==2.4.0 +packaging==24.1 +peewee==3.17.6 +pluggy==1.5.0 +pony==0.7.17 +protobuf==5.27.2 +pycryptodome==3.20.0 +pydantic==2.8.2 +pydantic-core==2.20.1 +pypika-tortoise==0.1.6 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytz==2024.1 +requests==2.32.3 +sortedcontainers==2.4.0 +sqlalchemy==2.0.31 +tortoise-orm==0.21.5 +typing-extensions==4.12.2 +urllib3==2.2.2 +werkzeug==3.0.3 +wrapt==1.16.0 +xmltodict==0.13.0 +zipp==3.19.2 diff --git a/.riot/requirements/18fce4a.txt b/.riot/requirements/18fce4a.txt new file mode 100644 index 00000000000..4887dc3a68f --- /dev/null +++ b/.riot/requirements/18fce4a.txt @@ -0,0 +1,30 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/18fce4a.in +# +aiohttp==3.9.5 +aiohttp-jinja2==1.5.1 +aiosignal==1.3.1 +attrs==23.2.0 +coverage[toml]==7.5.4 +frozenlist==1.4.1 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +jinja2==3.1.4 +markupsafe==2.1.5 +mock==5.1.0 +multidict==6.0.5 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-aiohttp==1.0.5 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 +yarl==1.9.4 diff --git a/.riot/requirements/1916976.txt b/.riot/requirements/1916976.txt new file mode 100644 index 00000000000..d883e6de3cb --- /dev/null +++ b/.riot/requirements/1916976.txt @@ -0,0 +1,26 @@ +# +# This file is autogenerated by pip-compile with Python 3.9 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/1916976.in +# +async-timeout==4.0.3 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 +hypothesis==6.45.0 +importlib-metadata==8.0.0 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +redis==4.6.0 +sortedcontainers==2.4.0 +tomli==2.0.1 +zipp==3.19.2 diff --git a/.riot/requirements/1926f3f.txt b/.riot/requirements/1926f3f.txt deleted file mode 100644 index 39395e33836..00000000000 --- a/.riot/requirements/1926f3f.txt +++ /dev/null @@ -1,26 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/1926f3f.in -# -async-timeout==4.0.3 -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 -hypothesis==6.45.0 -importlib-metadata==7.0.0 -iniconfig==2.0.0 -mock==5.1.0 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -redis==4.6.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -zipp==3.17.0 diff --git a/.riot/requirements/19346ff.txt b/.riot/requirements/19346ff.txt new file mode 100644 index 00000000000..e904cac80da --- /dev/null +++ b/.riot/requirements/19346ff.txt @@ -0,0 +1,94 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --allow-unsafe --no-annotate .riot/requirements/19346ff.in +# +ai21==2.9.2 +ai21-tokenizer==0.11.2 +aiohttp==3.9.5 +aiosignal==1.3.1 +annotated-types==0.7.0 +anthropic==0.31.2 +anyio==4.4.0 +attrs==23.2.0 +boto3==1.34.51 +botocore==1.34.51 +certifi==2024.7.4 +charset-normalizer==3.3.2 +cohere==5.6.2 +coverage[toml]==7.6.0 +dataclasses-json==0.6.7 +defusedxml==0.7.1 +distro==1.9.0 +exceptiongroup==1.2.2 +fastavro==1.9.5 +filelock==3.15.4 +frozenlist==1.4.1 +fsspec==2024.6.1 +greenlet==3.0.3 +h11==0.14.0 +httpcore==1.0.5 +httpx==0.27.0 +httpx-sse==0.4.0 +huggingface-hub==0.24.2 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +jiter==0.5.0 +jmespath==1.0.1 +jsonpatch==1.33 +jsonpointer==3.0.0 +langchain==0.2.0 +langchain-anthropic==0.1.13 +langchain-aws==0.1.6 +langchain-cohere==0.1.8 +langchain-core==0.2.0 +langchain-openai==0.1.7 +langchain-pinecone==0.1.3 +langchain-text-splitters==0.2.1 +langsmith==0.1.93 +marshmallow==3.21.3 +mock==5.1.0 +multidict==6.0.5 +mypy-extensions==1.0.0 +numexpr==2.8.5 +numpy==1.26.4 +openai==1.37.0 +opentracing==2.4.0 +orjson==3.10.6 +packaging==23.2 +parameterized==0.9.0 +pinecone-client==5.0.0 +pinecone-plugin-inference==1.0.2 +pinecone-plugin-interface==0.0.7 +pluggy==1.5.0 +psutil==6.0.0 +pydantic==2.8.2 +pydantic-core==2.20.1 +pytest==8.3.2 +pytest-asyncio==0.21.1 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.10.1 +python-dateutil==2.9.0.post0 +pyyaml==6.0.1 +regex==2024.7.24 +requests==2.32.3 +s3transfer==0.10.2 +sentencepiece==0.2.0 +six==1.16.0 +sniffio==1.3.1 +sortedcontainers==2.4.0 +sqlalchemy==2.0.31 +tenacity==8.5.0 +tiktoken==0.7.0 +tokenizers==0.19.1 +tqdm==4.66.4 +types-requests==2.32.0.20240712 +typing-extensions==4.12.2 +typing-inspect==0.9.0 +urllib3==2.0.7 +vcrpy==5.1.0 +wrapt==1.16.0 +yarl==1.9.4 diff --git a/.riot/requirements/1951d97.txt b/.riot/requirements/1951d97.txt deleted file mode 100644 index d131378e1ba..00000000000 --- a/.riot/requirements/1951d97.txt +++ /dev/null @@ -1,35 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/1951d97.in -# -aiohttp==3.9.1 -aiohttp-jinja2==1.6 -aiosignal==1.3.1 -async-timeout==4.0.3 -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 -frozenlist==1.4.1 -hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.0 -iniconfig==2.0.0 -jinja2==3.1.2 -markupsafe==2.1.3 -mock==5.1.0 -multidict==6.0.4 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-aiohttp==1.0.5 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -yarl==1.9.4 -zipp==3.17.0 diff --git a/.riot/requirements/77beea8.txt b/.riot/requirements/195ecad.txt similarity index 53% rename from .riot/requirements/77beea8.txt rename to .riot/requirements/195ecad.txt index 0a9b8d6e7e4..71ab9cd4907 100644 --- a/.riot/requirements/77beea8.txt +++ b/.riot/requirements/195ecad.txt @@ -2,22 +2,22 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/77beea8.in +# pip-compile --no-annotate .riot/requirements/195ecad.in # async-timeout==4.0.3 -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 hypothesis==6.45.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 redis==4.6.0 sortedcontainers==2.4.0 diff --git a/.riot/requirements/84620ce.txt b/.riot/requirements/1a00ed1.txt similarity index 71% rename from .riot/requirements/84620ce.txt rename to .riot/requirements/1a00ed1.txt index 4fb324487fc..3f8c46a76c7 100644 --- a/.riot/requirements/84620ce.txt +++ b/.riot/requirements/1a00ed1.txt @@ -2,10 +2,10 @@ # This file is autogenerated by pip-compile with Python 3.12 # by the following command: # -# pip-compile --no-annotate .riot/requirements/84620ce.in +# pip-compile --no-annotate .riot/requirements/1a00ed1.in # attrs==23.2.0 -coverage[toml]==7.5.1 +coverage[toml]==7.6.0 gevent==24.2.1 greenlet==3.0.3 httpretty==1.1.4 @@ -13,18 +13,18 @@ hypothesis==6.45.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==24.0 +packaging==24.1 pluggy==1.5.0 -pyfakefs==5.5.0 -pytest==8.2.1 -pytest-asyncio==0.21.2 +pyfakefs==5.6.0 +pytest==8.2.2 +pytest-asyncio==0.23.7 pytest-cov==5.0.0 pytest-mock==3.14.0 pytest-randomly==3.15.0 python-json-logger==2.0.7 sortedcontainers==2.4.0 zope-event==5.0 -zope-interface==6.4 +zope-interface==6.4.post2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/118cb50.txt b/.riot/requirements/1a14242.txt similarity index 50% rename from .riot/requirements/118cb50.txt rename to .riot/requirements/1a14242.txt index ecb387eea6c..024e32a631f 100644 --- a/.riot/requirements/118cb50.txt +++ b/.riot/requirements/1a14242.txt @@ -2,33 +2,38 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/118cb50.in +# pip-compile --no-annotate .riot/requirements/1a14242.in # attrs==23.2.0 -certifi==2023.11.17 +certifi==2024.7.4 charset-normalizer==3.3.2 click==7.1.2 -coverage[toml]==7.4.0 -exceptiongroup==1.2.0 +coverage[toml]==7.6.0 +deprecated==1.2.14 +exceptiongroup==1.2.2 flask==1.1.4 -gunicorn==21.2.0 +gunicorn==22.0.0 httpretty==1.0.5 hypothesis==6.45.0 -idna==3.6 +idna==3.7 +importlib-metadata==7.0.0 iniconfig==2.0.0 itsdangerous==1.1.0 jinja2==2.11.3 markupsafe==1.1.1 mock==5.1.0 +opentelemetry-api==1.24.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.4 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.3.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -requests==2.31.0 +requests==2.32.3 sortedcontainers==2.4.0 tomli==2.0.1 -urllib3==2.1.0 +urllib3==2.2.2 werkzeug==1.0.1 +wrapt==1.16.0 +zipp==3.19.2 diff --git a/.riot/requirements/1a22dee.txt b/.riot/requirements/1a22dee.txt new file mode 100644 index 00000000000..441586337fc --- /dev/null +++ b/.riot/requirements/1a22dee.txt @@ -0,0 +1,35 @@ +# +# This file is autogenerated by pip-compile with Python 3.9 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/1a22dee.in +# +aiohttp==3.9.5 +aiohttp-jinja2==1.5.1 +aiosignal==1.3.1 +async-timeout==4.0.3 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 +frozenlist==1.4.1 +hypothesis==6.45.0 +idna==3.7 +importlib-metadata==8.0.0 +iniconfig==2.0.0 +jinja2==3.1.4 +markupsafe==2.1.5 +mock==5.1.0 +multidict==6.0.5 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-aiohttp==1.0.5 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 +tomli==2.0.1 +yarl==1.9.4 +zipp==3.19.2 diff --git a/.riot/requirements/1a30edd.txt b/.riot/requirements/1a30edd.txt new file mode 100644 index 00000000000..7f4c6d1649a --- /dev/null +++ b/.riot/requirements/1a30edd.txt @@ -0,0 +1,46 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/1a30edd.in +# +attrs==23.2.0 +certifi==2024.6.2 +charset-normalizer==2.1.1 +click==8.1.7 +coverage[toml]==7.5.4 +deprecated==1.2.14 +flask==2.1.3 +gevent==24.2.1 +greenlet==3.0.3 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +itsdangerous==2.2.0 +jinja2==3.1.4 +markupsafe==2.0.1 +mock==5.1.0 +opentelemetry-api==1.11.1 +opentelemetry-instrumentation==0.32b0 +opentelemetry-instrumentation-flask==0.32b0 +opentelemetry-instrumentation-wsgi==0.32b0 +opentelemetry-semantic-conventions==0.32b0 +opentelemetry-util-http==0.32b0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.21.1 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +requests==2.28.1 +sortedcontainers==2.4.0 +urllib3==1.26.19 +werkzeug==2.1.2 +wrapt==1.16.0 +zope-event==5.0 +zope-interface==6.4.post2 + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/.riot/requirements/1a6e474.txt b/.riot/requirements/1a6e474.txt index 6d83771863a..5430a9b2ce5 100644 --- a/.riot/requirements/1a6e474.txt +++ b/.riot/requirements/1a6e474.txt @@ -4,69 +4,69 @@ # # pip-compile --no-annotate .riot/requirements/1a6e474.in # -annotated-types==0.6.0 -attrs==23.1.0 -aws-sam-translator==1.82.0 -aws-xray-sdk==2.12.1 +annotated-types==0.7.0 +attrs==23.2.0 +aws-sam-translator==1.89.0 +aws-xray-sdk==2.14.0 boto==2.49.0 -boto3==1.34.6 -botocore==1.34.6 -certifi==2023.11.17 +boto3==1.34.139 +botocore==1.34.139 +certifi==2024.6.2 cffi==1.16.0 cfn-lint==0.53.1 charset-normalizer==3.3.2 -coverage[toml]==7.3.4 -cryptography==41.0.7 -docker==7.0.0 +coverage[toml]==7.5.4 +cryptography==42.0.8 +docker==7.1.0 ecdsa==0.14.1 -exceptiongroup==1.2.0 +exceptiongroup==1.2.1 hypothesis==6.45.0 idna==2.10 -importlib-metadata==7.0.0 +importlib-metadata==8.0.0 iniconfig==2.0.0 jinja2==2.11.3 jmespath==1.0.1 -jsondiff==2.0.0 +jsondiff==2.1.1 jsonpatch==1.33 -jsonpointer==2.4 +jsonpointer==3.0.0 jsonschema==3.2.0 junit-xml==1.9 markupsafe==1.1.1 mock==5.1.0 -more-itertools==10.1.0 +more-itertools==10.3.0 moto==1.3.16 networkx==2.8.8 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pyasn1==0.5.1 -pycparser==2.21 -pydantic==2.5.2 -pydantic-core==2.14.5 +packaging==24.1 +pluggy==1.5.0 +pyasn1==0.6.0 +pycparser==2.22 +pydantic==2.8.0 +pydantic-core==2.20.0 pynamodb==5.5.1 pyrsistent==0.20.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 python-jose[cryptography]==3.3.0 -pytz==2023.3.post1 +pytz==2024.1 pyyaml==6.0.1 -requests==2.31.0 -responses==0.24.1 +requests==2.32.3 +responses==0.25.3 rsa==4.9 -s3transfer==0.10.0 +s3transfer==0.10.2 six==1.16.0 sortedcontainers==2.4.0 sshpubkeys==3.3.1 tomli==2.0.1 -typing-extensions==4.9.0 -urllib3==1.26.18 +typing-extensions==4.12.2 +urllib3==1.26.19 werkzeug==2.1.2 wrapt==1.16.0 xmltodict==0.13.0 -zipp==3.17.0 +zipp==3.19.2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/1a79d00.txt b/.riot/requirements/1a79d00.txt deleted file mode 100644 index 639cef4d192..00000000000 --- a/.riot/requirements/1a79d00.txt +++ /dev/null @@ -1,88 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.10 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/1a79d00.in -# -annotated-types==0.6.0 -attrs==23.2.0 -aws-sam-translator==1.85.0 -aws-xray-sdk==2.12.1 -boto3==1.34.49 -botocore==1.34.49 -certifi==2024.2.2 -cffi==1.16.0 -cfn-lint==0.85.2 -charset-normalizer==3.3.2 -coverage[toml]==7.4.3 -cryptography==42.0.5 -docker==7.0.0 -ecdsa==0.18.0 -exceptiongroup==1.2.0 -graphql-core==3.2.3 -hypothesis==6.45.0 -idna==3.6 -iniconfig==2.0.0 -jinja2==3.1.3 -jmespath==1.0.1 -jschema-to-python==1.2.3 -jsondiff==2.0.0 -jsonpatch==1.33 -jsonpickle==3.0.3 -jsonpointer==2.4 -jsonschema==4.21.1 -jsonschema-path==0.3.2 -jsonschema-specifications==2023.12.1 -junit-xml==1.9 -lazy-object-proxy==1.10.0 -markupsafe==2.1.5 -mock==5.1.0 -moto[all]==4.2.14 -mpmath==1.3.0 -multidict==6.0.5 -multipart==0.2.4 -networkx==3.2.1 -openapi-schema-validator==0.6.2 -openapi-spec-validator==0.7.1 -opentracing==2.4.0 -packaging==23.2 -pathable==0.4.3 -pbr==6.0.0 -pluggy==1.4.0 -py-partiql-parser==0.5.0 -pyasn1==0.5.1 -pycparser==2.21 -pydantic==2.6.2 -pydantic-core==2.16.3 -pyparsing==3.1.1 -pytest==8.0.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -python-dateutil==2.8.2 -python-jose[cryptography]==3.3.0 -pyyaml==6.0.1 -referencing==0.31.1 -regex==2023.12.25 -requests==2.31.0 -responses==0.25.0 -rfc3339-validator==0.1.4 -rpds-py==0.18.0 -rsa==4.9 -s3transfer==0.10.0 -sarif-om==1.0.4 -six==1.16.0 -sortedcontainers==2.4.0 -sshpubkeys==3.3.1 -sympy==1.12 -tomli==2.0.1 -typing-extensions==4.9.0 -urllib3==2.0.7 -vcrpy==6.0.1 -werkzeug==3.0.1 -wrapt==1.16.0 -xmltodict==0.13.0 -yarl==1.9.4 - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/.riot/requirements/1a7c146.txt b/.riot/requirements/1a7c146.txt new file mode 100644 index 00000000000..7468881a7dd --- /dev/null +++ b/.riot/requirements/1a7c146.txt @@ -0,0 +1,28 @@ +# +# This file is autogenerated by pip-compile with Python 3.11 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/1a7c146.in +# +anyio==4.4.0 +attrs==23.2.0 +certifi==2024.6.2 +coverage[toml]==7.5.4 +h11==0.14.0 +httpcore==0.16.3 +httpx==0.23.3 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.21.1 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +rfc3986[idna2008]==1.5.0 +sniffio==1.3.1 +sortedcontainers==2.4.0 diff --git a/.riot/requirements/14e8a04.txt b/.riot/requirements/1a9f37e.txt similarity index 88% rename from .riot/requirements/14e8a04.txt rename to .riot/requirements/1a9f37e.txt index b59f8ff174d..8d587ce4e54 100644 --- a/.riot/requirements/14e8a04.txt +++ b/.riot/requirements/1a9f37e.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/14e8a04.in +# pip-compile --allow-unsafe --no-annotate .riot/requirements/1a9f37e.in # ai21==1.3.4 aiohttp==3.9.5 @@ -23,7 +23,7 @@ filelock==3.15.4 frozenlist==1.4.1 fsspec==2024.6.1 greenlet==3.0.3 -huggingface-hub==0.24.0 +huggingface-hub==0.24.2 hypothesis==6.45.0 idna==3.7 importlib-metadata==6.11.0 @@ -40,7 +40,7 @@ marshmallow==3.21.3 mock==5.1.0 multidict==6.0.5 mypy-extensions==1.0.0 -numexpr==2.10.1 +numexpr==2.8.5 numpy==1.26.4 openai==0.27.8 openapi-schema-pydantic==1.2.4 @@ -50,14 +50,14 @@ pinecone-client==2.2.4 pluggy==1.5.0 psutil==6.0.0 pydantic==1.10.17 -pytest==8.2.2 +pytest==8.3.2 pytest-asyncio==0.21.1 pytest-cov==5.0.0 pytest-mock==3.14.0 -pytest-randomly==3.15.0 +pytest-randomly==3.10.1 python-dateutil==2.9.0.post0 pyyaml==6.0.1 -regex==2024.5.15 +regex==2024.7.24 requests==2.32.3 six==1.16.0 sniffio==1.3.1 diff --git a/.riot/requirements/e69c5ca.txt b/.riot/requirements/1aa652f.txt similarity index 56% rename from .riot/requirements/e69c5ca.txt rename to .riot/requirements/1aa652f.txt index cff674d7fa7..9c6a8b6202b 100644 --- a/.riot/requirements/e69c5ca.txt +++ b/.riot/requirements/1aa652f.txt @@ -2,46 +2,47 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/e69c5ca.in +# pip-compile --no-annotate .riot/requirements/1aa652f.in # aiobotocore==2.3.1 -aiohttp==3.9.1 +aiohttp==3.9.5 aioitertools==0.11.0 aiosignal==1.3.1 -attrs==23.1.0 +attrs==23.2.0 botocore==1.24.21 -certifi==2023.11.17 +certifi==2024.7.4 charset-normalizer==3.3.2 -coverage[toml]==7.3.4 -elastic-transport==8.11.0 -elasticsearch==8.11.1 +coverage[toml]==7.5.4 +elastic-transport==8.13.1 +elasticsearch==8.14.0 +events==0.5 frozenlist==1.4.1 gevent==22.10.2 greenlet==3.0.3 hypothesis==6.45.0 -idna==3.6 +idna==3.7 iniconfig==2.0.0 jmespath==1.0.1 mock==5.1.0 -multidict==6.0.4 -opensearch-py==2.4.2 +multidict==6.0.5 +opensearch-py==2.6.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 +packaging==24.1 +pluggy==1.5.0 pynamodb==5.5.1 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -python-dateutil==2.8.2 -requests==2.31.0 +python-dateutil==2.9.0.post0 +requests==2.32.3 six==1.16.0 sortedcontainers==2.4.0 -urllib3==1.26.18 +urllib3==1.26.19 wrapt==1.16.0 yarl==1.9.4 zope-event==5.0 -zope-interface==6.1 +zope-interface==6.4.post2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/1dad7a9.txt b/.riot/requirements/1ab2cd6.txt similarity index 52% rename from .riot/requirements/1dad7a9.txt rename to .riot/requirements/1ab2cd6.txt index 567bdd2e66b..88426f95126 100644 --- a/.riot/requirements/1dad7a9.txt +++ b/.riot/requirements/1ab2cd6.txt @@ -2,29 +2,29 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1dad7a9.in +# pip-compile --no-annotate .riot/requirements/1ab2cd6.in # -aiohttp==3.9.1 +aiohttp==3.9.5 aiohttp-jinja2==1.6 aiosignal==1.3.1 -attrs==23.1.0 -coverage[toml]==7.3.4 +attrs==23.2.0 +coverage[toml]==7.5.4 frozenlist==1.4.1 hypothesis==6.45.0 -idna==3.6 +idna==3.7 iniconfig==2.0.0 -jinja2==3.1.2 -markupsafe==2.1.3 +jinja2==3.1.4 +markupsafe==2.1.5 mock==5.1.0 -multidict==6.0.4 +multidict==6.0.5 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 pytest-aiohttp==1.0.5 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 yarl==1.9.4 diff --git a/.riot/requirements/1ab601c.txt b/.riot/requirements/1ab601c.txt deleted file mode 100644 index b5b525fa8cc..00000000000 --- a/.riot/requirements/1ab601c.txt +++ /dev/null @@ -1,26 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.8 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/1ab601c.in -# -attrs==23.1.0 -backports-zoneinfo==0.2.1 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 -hypothesis==6.45.0 -importlib-metadata==7.0.0 -iniconfig==2.0.0 -mock==5.1.0 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -psycopg==3.0.18 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -zipp==3.17.0 diff --git a/.riot/requirements/1f22840.txt b/.riot/requirements/1ac55e4.txt similarity index 52% rename from .riot/requirements/1f22840.txt rename to .riot/requirements/1ac55e4.txt index 12c29d8f402..5e5434235c0 100644 --- a/.riot/requirements/1f22840.txt +++ b/.riot/requirements/1ac55e4.txt @@ -2,70 +2,70 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1f22840.in +# pip-compile --no-annotate .riot/requirements/1ac55e4.in # -annotated-types==0.6.0 -attrs==23.1.0 -aws-sam-translator==1.82.0 -aws-xray-sdk==2.12.1 +annotated-types==0.7.0 +attrs==23.2.0 +aws-sam-translator==1.89.0 +aws-xray-sdk==2.14.0 boto==2.49.0 -boto3==1.34.6 -botocore==1.34.6 -certifi==2023.11.17 +boto3==1.34.140 +botocore==1.34.140 +certifi==2024.7.4 cffi==1.16.0 cfn-lint==0.53.1 charset-normalizer==3.3.2 -coverage[toml]==7.3.4 -cryptography==41.0.7 -docker==7.0.0 +coverage[toml]==7.5.4 +cryptography==42.0.8 +docker==7.1.0 ecdsa==0.14.1 -exceptiongroup==1.2.0 +exceptiongroup==1.2.1 hypothesis==6.45.0 idna==2.10 iniconfig==2.0.0 jinja2==2.11.3 jmespath==1.0.1 -jsondiff==2.0.0 +jsondiff==2.1.1 jsonpatch==1.33 -jsonpointer==2.4 +jsonpointer==3.0.0 jsonschema==3.2.0 junit-xml==1.9 markupsafe==1.1.1 mock==5.1.0 -more-itertools==10.1.0 +more-itertools==10.3.0 moto==1.3.16 networkx==2.8.8 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pyasn1==0.5.1 -pycparser==2.21 -pydantic==2.5.2 -pydantic-core==2.14.5 +packaging==24.1 +pluggy==1.5.0 +pyasn1==0.6.0 +pycparser==2.22 +pydantic==2.8.2 +pydantic-core==2.20.1 pynamodb==5.5.1 pyrsistent==0.20.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 python-jose[cryptography]==3.3.0 -pytz==2023.3.post1 +pytz==2024.1 pyyaml==6.0.1 -requests==2.31.0 -responses==0.24.1 +requests==2.32.3 +responses==0.25.3 rsa==4.9 -s3transfer==0.10.0 +s3transfer==0.10.2 six==1.16.0 sortedcontainers==2.4.0 sshpubkeys==3.3.1 tomli==2.0.1 -typing-extensions==4.9.0 -urllib3==2.0.7 +typing-extensions==4.12.2 +urllib3==2.2.2 werkzeug==2.1.2 wrapt==1.16.0 xmltodict==0.13.0 -zipp==3.17.0 +zipp==3.19.2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/ba7aca6.txt b/.riot/requirements/1ac848e.txt similarity index 86% rename from .riot/requirements/ba7aca6.txt rename to .riot/requirements/1ac848e.txt index 76d277ca0b8..c8cbfdca2bc 100644 --- a/.riot/requirements/ba7aca6.txt +++ b/.riot/requirements/1ac848e.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/ba7aca6.in +# pip-compile --allow-unsafe --no-annotate .riot/requirements/1ac848e.in # ai21==2.9.2 ai21-tokenizer==0.11.2 @@ -13,8 +13,8 @@ anthropic==0.31.2 anyio==4.4.0 async-timeout==4.0.3 attrs==23.2.0 -boto3==1.34.145 -botocore==1.34.145 +boto3==1.34.51 +botocore==1.34.51 certifi==2024.7.4 charset-normalizer==3.3.2 cohere==5.4.0 @@ -33,7 +33,7 @@ h11==0.14.0 httpcore==1.0.5 httpx==0.27.0 httpx-sse==0.4.0 -huggingface-hub==0.24.0 +huggingface-hub==0.24.2 hypothesis==6.45.0 idna==3.7 iniconfig==2.0.0 @@ -50,12 +50,12 @@ langchain-core==0.1.52 langchain-openai==0.1.6 langchain-pinecone==0.1.0 langchain-text-splitters==0.0.2 -langsmith==0.1.92 +langsmith==0.1.93 marshmallow==3.21.3 mock==5.1.0 multidict==6.0.5 mypy-extensions==1.0.0 -numexpr==2.10.1 +numexpr==2.8.5 numpy==1.26.4 openai==1.30.3 opentracing==2.4.0 @@ -66,14 +66,14 @@ pluggy==1.5.0 psutil==6.0.0 pydantic==2.8.2 pydantic-core==2.20.1 -pytest==8.2.2 +pytest==8.3.2 pytest-asyncio==0.21.1 pytest-cov==5.0.0 pytest-mock==3.14.0 -pytest-randomly==3.15.0 +pytest-randomly==3.10.1 python-dateutil==2.9.0.post0 pyyaml==6.0.1 -regex==2024.5.15 +regex==2024.7.24 requests==2.32.3 s3transfer==0.10.2 sentencepiece==0.2.0 @@ -89,7 +89,7 @@ tqdm==4.66.4 types-requests==2.32.0.20240712 typing-extensions==4.12.2 typing-inspect==0.9.0 -urllib3==2.2.2 +urllib3==2.0.7 vcrpy==5.1.0 wrapt==1.16.0 yarl==1.9.4 diff --git a/.riot/requirements/cf557a6.txt b/.riot/requirements/1ace55b.txt similarity index 57% rename from .riot/requirements/cf557a6.txt rename to .riot/requirements/1ace55b.txt index 49f58dc8b49..1b79dbd68fe 100644 --- a/.riot/requirements/cf557a6.txt +++ b/.riot/requirements/1ace55b.txt @@ -2,49 +2,50 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/cf557a6.in +# pip-compile --no-annotate .riot/requirements/1ace55b.in # aiobotocore==2.3.1 -aiohttp==3.9.1 +aiohttp==3.9.5 aioitertools==0.11.0 aiosignal==1.3.1 async-timeout==4.0.3 -attrs==23.1.0 +attrs==23.2.0 botocore==1.24.21 -certifi==2023.11.17 +certifi==2024.7.4 charset-normalizer==3.3.2 -coverage[toml]==7.3.4 -elastic-transport==8.11.0 -elasticsearch==8.11.1 -exceptiongroup==1.2.0 +coverage[toml]==7.5.4 +elastic-transport==8.13.1 +elasticsearch==8.14.0 +events==0.5 +exceptiongroup==1.2.1 frozenlist==1.4.1 gevent==21.12.0 greenlet==1.1.3.post0 hypothesis==6.45.0 -idna==3.6 +idna==3.7 iniconfig==2.0.0 jmespath==1.0.1 mock==5.1.0 -multidict==6.0.4 -opensearch-py==2.4.2 +multidict==6.0.5 +opensearch-py==2.6.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 +packaging==24.1 +pluggy==1.5.0 pynamodb==5.5.1 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -python-dateutil==2.8.2 -requests==2.31.0 +python-dateutil==2.9.0.post0 +requests==2.32.3 six==1.16.0 sortedcontainers==2.4.0 tomli==2.0.1 -urllib3==1.26.18 +urllib3==1.26.19 wrapt==1.16.0 yarl==1.9.4 zope-event==5.0 -zope-interface==6.1 +zope-interface==6.4.post2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/ed2f19c.txt b/.riot/requirements/1ae24f1.txt similarity index 51% rename from .riot/requirements/ed2f19c.txt rename to .riot/requirements/1ae24f1.txt index aebb1471660..526183f1265 100644 --- a/.riot/requirements/ed2f19c.txt +++ b/.riot/requirements/1ae24f1.txt @@ -2,22 +2,21 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/ed2f19c.in +# pip-compile --no-annotate .riot/requirements/1ae24f1.in # attrs==23.2.0 -coverage[toml]==7.4.2 -googleapis-common-protos==1.62.0 -grpcio==1.59.3 +coverage[toml]==7.5.4 hypothesis==6.45.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.4.0 -protobuf==4.25.3 -pytest==8.0.1 +packaging==24.1 +pluggy==1.5.0 +psycopg==3.2.1 +pytest==8.2.2 pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 +typing-extensions==4.12.2 diff --git a/.riot/requirements/1ae2797.txt b/.riot/requirements/1ae2797.txt new file mode 100644 index 00000000000..b1170153af9 --- /dev/null +++ b/.riot/requirements/1ae2797.txt @@ -0,0 +1,35 @@ +# +# This file is autogenerated by pip-compile with Python 3.8 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/1ae2797.in +# +aiohttp==3.9.5 +aiohttp-jinja2==1.5.1 +aiosignal==1.3.1 +async-timeout==4.0.3 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 +frozenlist==1.4.1 +hypothesis==6.45.0 +idna==3.7 +importlib-metadata==8.0.0 +iniconfig==2.0.0 +jinja2==3.1.4 +markupsafe==2.1.5 +mock==5.1.0 +multidict==6.0.5 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-aiohttp==1.0.5 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 +tomli==2.0.1 +yarl==1.9.4 +zipp==3.19.2 diff --git a/.riot/requirements/1af884e.txt b/.riot/requirements/1af884e.txt deleted file mode 100644 index 80303446854..00000000000 --- a/.riot/requirements/1af884e.txt +++ /dev/null @@ -1,64 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/1af884e.in -# -aiohttp==3.9.1 -aiosignal==1.3.1 -async-timeout==4.0.3 -attrs==23.1.0 -certifi==2023.11.17 -charset-normalizer==3.3.2 -contourpy==1.2.0 -coverage[toml]==7.3.4 -cycler==0.12.1 -et-xmlfile==1.1.0 -exceptiongroup==1.2.0 -fonttools==4.47.0 -frozenlist==1.4.1 -hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.0 -importlib-resources==6.1.1 -iniconfig==2.0.0 -joblib==1.3.2 -kiwisolver==1.4.5 -matplotlib==3.8.2 -mock==5.1.0 -multidict==6.0.4 -numpy==1.26.2 -openai[datalib,embeddings]==0.27.2 -openpyxl==3.1.2 -opentracing==2.4.0 -packaging==23.2 -pandas==2.1.4 -pandas-stubs==2.1.4.231218 -pillow==10.1.0 -plotly==5.18.0 -pluggy==1.3.0 -pyparsing==3.1.1 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -python-dateutil==2.8.2 -pytz==2023.3.post1 -pyyaml==6.0.1 -requests==2.31.0 -scikit-learn==1.3.2 -scipy==1.11.4 -six==1.16.0 -sortedcontainers==2.4.0 -tenacity==8.2.3 -threadpoolctl==3.2.0 -tomli==2.0.1 -tqdm==4.66.1 -types-pytz==2023.3.1.1 -tzdata==2023.3 -urllib3==1.26.18 -vcrpy==4.2.1 -wrapt==1.16.0 -yarl==1.9.4 -zipp==3.17.0 diff --git a/.riot/requirements/1b10316.txt b/.riot/requirements/1b10316.txt deleted file mode 100644 index 7c72653a093..00000000000 --- a/.riot/requirements/1b10316.txt +++ /dev/null @@ -1,35 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/1b10316.in -# -aiohttp==3.9.1 -aiohttp-jinja2==1.6 -aiosignal==1.3.1 -async-timeout==4.0.3 -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 -frozenlist==1.4.1 -hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.0 -iniconfig==2.0.0 -jinja2==3.1.2 -markupsafe==2.1.3 -mock==5.1.0 -multidict==6.0.4 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-aiohttp==1.0.5 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -yarl==1.9.4 -zipp==3.17.0 diff --git a/.riot/requirements/1b3fcdf.txt b/.riot/requirements/1b3fcdf.txt index c48bb53fd34..a5b826ed02f 100644 --- a/.riot/requirements/1b3fcdf.txt +++ b/.riot/requirements/1b3fcdf.txt @@ -5,21 +5,21 @@ # pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/1b3fcdf.in # annotated-types==0.5.0 -attrs==23.1.0 +attrs==23.2.0 aws-sam-translator==1.82.0 -aws-xray-sdk==2.12.1 +aws-xray-sdk==2.14.0 boto==2.49.0 boto3==1.33.13 botocore==1.33.13 -certifi==2023.11.17 +certifi==2024.6.2 cffi==1.15.1 cfn-lint==0.53.1 charset-normalizer==3.3.2 coverage[toml]==7.2.7 -cryptography==41.0.7 +cryptography==42.0.8 docker==6.1.3 ecdsa==0.14.1 -exceptiongroup==1.2.0 +exceptiongroup==1.2.1 hypothesis==6.45.0 idna==2.10 importlib-metadata==6.7.0 @@ -28,7 +28,7 @@ jinja2==2.11.3 jmespath==1.0.1 jsondiff==2.0.0 jsonpatch==1.33 -jsonpointer==2.4 +jsonpointer==3.0.0 jsonschema==3.2.0 junit-xml==1.9 markupsafe==1.1.1 @@ -37,21 +37,21 @@ more-itertools==9.1.0 moto==1.3.16 networkx==2.6.3 opentracing==2.4.0 -packaging==23.2 +packaging==24.0 pluggy==1.2.0 pyasn1==0.5.1 pycparser==2.21 -pydantic==2.5.2 -pydantic-core==2.14.5 +pydantic==2.5.3 +pydantic-core==2.14.6 pynamodb==5.5.1 pyrsistent==0.19.3 -pytest==7.4.3 +pytest==7.4.4 pytest-cov==4.1.0 pytest-mock==3.11.1 pytest-randomly==3.12.0 -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 python-jose[cryptography]==3.3.0 -pytz==2023.3.post1 +pytz==2024.1 pyyaml==6.0.1 requests==2.31.0 responses==0.23.3 @@ -63,7 +63,7 @@ sshpubkeys==3.3.1 tomli==2.0.1 types-pyyaml==6.0.12.12 typing-extensions==4.7.1 -urllib3==1.26.18 +urllib3==1.26.19 websocket-client==1.6.1 werkzeug==2.1.2 wrapt==1.16.0 diff --git a/.riot/requirements/1ba505f.txt b/.riot/requirements/1ba505f.txt deleted file mode 100644 index fbbc97b48bf..00000000000 --- a/.riot/requirements/1ba505f.txt +++ /dev/null @@ -1,53 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.8 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/1ba505f.in -# -annotated-types==0.6.0 -anyio==3.7.1 -attrs==23.1.0 -certifi==2023.11.17 -coverage[toml]==7.3.4 -distro==1.8.0 -exceptiongroup==1.2.0 -h11==0.14.0 -httpcore==1.0.2 -httpx==0.26.0 -hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.0 -iniconfig==2.0.0 -mock==5.1.0 -multidict==6.0.4 -numpy==1.24.4 -openai[datalib,embeddings]==1.1.1 -opentracing==2.4.0 -packaging==23.2 -pandas==2.0.3 -pandas-stubs==2.0.3.230814 -pillow==10.1.0 -pluggy==1.3.0 -pydantic==2.5.2 -pydantic-core==2.14.5 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -python-dateutil==2.8.2 -pytz==2023.3.post1 -pyyaml==6.0.1 -six==1.16.0 -sniffio==1.3.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -tqdm==4.66.1 -types-pytz==2023.3.1.1 -typing-extensions==4.9.0 -tzdata==2023.3 -urllib3==1.26.18 -vcrpy==4.2.1 -wrapt==1.16.0 -yarl==1.9.4 -zipp==3.17.0 diff --git a/.riot/requirements/1bbf463.txt b/.riot/requirements/1bbf463.txt new file mode 100644 index 00000000000..bb060d1914a --- /dev/null +++ b/.riot/requirements/1bbf463.txt @@ -0,0 +1,23 @@ +# +# This file is autogenerated by pip-compile with Python 3.11 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/1bbf463.in +# +attrs==23.2.0 +coverage[toml]==7.5.4 +googleapis-common-protos==1.63.2 +grpcio==1.59.3 +hypothesis==6.45.0 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +protobuf==5.27.2 +pytest==8.2.2 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 diff --git a/.riot/requirements/1d6adbd.txt b/.riot/requirements/1bceb88.txt similarity index 54% rename from .riot/requirements/1d6adbd.txt rename to .riot/requirements/1bceb88.txt index 35c5028e755..eedbfcfcdd7 100644 --- a/.riot/requirements/1d6adbd.txt +++ b/.riot/requirements/1bceb88.txt @@ -2,52 +2,53 @@ # This file is autogenerated by pip-compile with Python 3.8 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1d6adbd.in +# pip-compile --no-annotate .riot/requirements/1bceb88.in # aiobotocore==2.3.1 -aiohttp==3.9.3 +aiohttp==3.9.5 aioitertools==0.11.0 aiosignal==1.3.1 async-timeout==4.0.3 attrs==23.2.0 botocore==1.24.21 -certifi==2024.2.2 +certifi==2024.7.4 charset-normalizer==3.3.2 -coverage[toml]==7.4.3 -elastic-transport==8.12.0 -elasticsearch==8.12.1 -exceptiongroup==1.2.0 +coverage[toml]==7.5.4 +elastic-transport==8.13.1 +elasticsearch==8.14.0 +events==0.5 +exceptiongroup==1.2.1 frozenlist==1.4.1 gevent==20.12.1 greenlet==1.0.0 hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.1 +idna==3.7 +importlib-metadata==8.0.0 iniconfig==2.0.0 jmespath==1.0.1 mock==5.1.0 multidict==6.0.5 -opensearch-py==2.4.2 +opensearch-py==2.6.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.4.0 -pynamodb==6.0.0 -pytest==8.0.2 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pynamodb==5.5.1 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -python-dateutil==2.8.2 -requests==2.31.0 +python-dateutil==2.9.0.post0 +requests==2.32.3 six==1.16.0 sortedcontainers==2.4.0 tomli==2.0.1 -typing-extensions==4.10.0 -urllib3==1.26.18 +typing-extensions==4.12.2 +urllib3==1.26.19 wrapt==1.16.0 yarl==1.9.4 -zipp==3.17.0 +zipp==3.19.2 zope-event==5.0 -zope-interface==6.2 +zope-interface==6.4.post2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/46621c4.txt b/.riot/requirements/1bcefe4.txt similarity index 81% rename from .riot/requirements/46621c4.txt rename to .riot/requirements/1bcefe4.txt index 915ebc7e2e5..8354b9e0cef 100644 --- a/.riot/requirements/46621c4.txt +++ b/.riot/requirements/1bcefe4.txt @@ -2,19 +2,19 @@ # This file is autogenerated by pip-compile with Python 3.7 # by the following command: # -# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/46621c4.in +# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/1bcefe4.in # attrs==23.2.0 coverage[toml]==7.2.7 -exceptiongroup==1.2.0 -googleapis-common-protos==1.62.0 +exceptiongroup==1.2.1 +googleapis-common-protos==1.63.2 grpcio==1.59.3 hypothesis==6.45.0 importlib-metadata==6.7.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 +packaging==24.0 pluggy==1.2.0 protobuf==4.24.4 pytest==7.4.4 diff --git a/.riot/requirements/76ab3c5.txt b/.riot/requirements/1c1da8c.txt similarity index 51% rename from .riot/requirements/76ab3c5.txt rename to .riot/requirements/1c1da8c.txt index 50d201346cb..090dda34995 100644 --- a/.riot/requirements/76ab3c5.txt +++ b/.riot/requirements/1c1da8c.txt @@ -2,24 +2,24 @@ # This file is autogenerated by pip-compile with Python 3.8 # by the following command: # -# pip-compile --no-annotate .riot/requirements/76ab3c5.in +# pip-compile --no-annotate .riot/requirements/1c1da8c.in # -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 hypothesis==6.45.0 -importlib-metadata==7.0.0 +importlib-metadata==8.0.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 redis==3.5.3 redis-py-cluster==2.1.3 sortedcontainers==2.4.0 tomli==2.0.1 -zipp==3.17.0 +zipp==3.19.2 diff --git a/.riot/requirements/1c9b9ba.txt b/.riot/requirements/1c9b9ba.txt deleted file mode 100644 index 9e5e4bff7a0..00000000000 --- a/.riot/requirements/1c9b9ba.txt +++ /dev/null @@ -1,26 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/1c9b9ba.in -# -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 -hypothesis==6.45.0 -importlib-metadata==7.0.0 -iniconfig==2.0.0 -mock==5.1.0 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -psycopg==3.1.16 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -typing-extensions==4.9.0 -zipp==3.17.0 diff --git a/.riot/requirements/1cd1d4a.txt b/.riot/requirements/1cd1d4a.txt index e8115eb8475..a5135c9af64 100644 --- a/.riot/requirements/1cd1d4a.txt +++ b/.riot/requirements/1cd1d4a.txt @@ -4,68 +4,68 @@ # # pip-compile --no-annotate .riot/requirements/1cd1d4a.in # -annotated-types==0.6.0 -attrs==23.1.0 -aws-sam-translator==1.82.0 -aws-xray-sdk==2.12.1 +annotated-types==0.7.0 +attrs==23.2.0 +aws-sam-translator==1.89.0 +aws-xray-sdk==2.14.0 boto==2.49.0 -boto3==1.34.6 -botocore==1.34.6 -certifi==2023.11.17 +boto3==1.34.139 +botocore==1.34.139 +certifi==2024.6.2 cffi==1.16.0 cfn-lint==0.53.1 charset-normalizer==3.3.2 -coverage[toml]==7.3.4 -cryptography==41.0.7 -docker==7.0.0 +coverage[toml]==7.5.4 +cryptography==42.0.8 +docker==7.1.0 ecdsa==0.14.1 -exceptiongroup==1.2.0 +exceptiongroup==1.2.1 hypothesis==6.45.0 idna==2.10 iniconfig==2.0.0 jinja2==2.11.3 jmespath==1.0.1 -jsondiff==2.0.0 +jsondiff==2.1.1 jsonpatch==1.33 -jsonpointer==2.4 +jsonpointer==3.0.0 jsonschema==3.2.0 junit-xml==1.9 markupsafe==1.1.1 mock==5.1.0 -more-itertools==10.1.0 +more-itertools==10.3.0 moto==1.3.16 networkx==2.8.8 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pyasn1==0.5.1 -pycparser==2.21 -pydantic==2.5.2 -pydantic-core==2.14.5 +packaging==24.1 +pluggy==1.5.0 +pyasn1==0.6.0 +pycparser==2.22 +pydantic==2.8.0 +pydantic-core==2.20.0 pynamodb==5.5.1 pyrsistent==0.20.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 python-jose[cryptography]==3.3.0 -pytz==2023.3.post1 +pytz==2024.1 pyyaml==6.0.1 -requests==2.31.0 -responses==0.24.1 +requests==2.32.3 +responses==0.25.3 rsa==4.9 -s3transfer==0.10.0 +s3transfer==0.10.2 six==1.16.0 sortedcontainers==2.4.0 sshpubkeys==3.3.1 tomli==2.0.1 -typing-extensions==4.9.0 -urllib3==2.0.7 +typing-extensions==4.12.2 +urllib3==2.2.2 werkzeug==2.1.2 wrapt==1.16.0 xmltodict==0.13.0 -zipp==3.17.0 +zipp==3.19.2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/12e59f1.txt b/.riot/requirements/1cd7351.txt similarity index 52% rename from .riot/requirements/12e59f1.txt rename to .riot/requirements/1cd7351.txt index d811241b42c..104f37339fa 100644 --- a/.riot/requirements/12e59f1.txt +++ b/.riot/requirements/1cd7351.txt @@ -2,29 +2,29 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/12e59f1.in +# pip-compile --no-annotate .riot/requirements/1cd7351.in # -aiohttp==3.9.1 +aiohttp==3.9.5 aiohttp-jinja2==1.6 aiosignal==1.3.1 -attrs==23.1.0 -coverage[toml]==7.3.4 +attrs==23.2.0 +coverage[toml]==7.5.4 frozenlist==1.4.1 hypothesis==6.45.0 -idna==3.6 +idna==3.7 iniconfig==2.0.0 -jinja2==3.1.2 -markupsafe==2.1.3 +jinja2==3.1.4 +markupsafe==2.1.5 mock==5.1.0 -multidict==6.0.4 +multidict==6.0.5 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 pytest-aiohttp==1.0.5 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 yarl==1.9.4 diff --git a/.riot/requirements/1cde730.txt b/.riot/requirements/1cde730.txt deleted file mode 100644 index 6817c6ce638..00000000000 --- a/.riot/requirements/1cde730.txt +++ /dev/null @@ -1,26 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.8 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/1cde730.in -# -async-timeout==4.0.3 -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 -hypothesis==6.45.0 -importlib-metadata==7.0.0 -iniconfig==2.0.0 -mock==5.1.0 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -redis==4.6.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -zipp==3.17.0 diff --git a/.riot/requirements/76fbde2.txt b/.riot/requirements/1d0e1bf.txt similarity index 81% rename from .riot/requirements/76fbde2.txt rename to .riot/requirements/1d0e1bf.txt index efc439f20a0..3ffbdf8eff9 100644 --- a/.riot/requirements/76fbde2.txt +++ b/.riot/requirements/1d0e1bf.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/76fbde2.in +# pip-compile --allow-unsafe --no-annotate .riot/requirements/1d0e1bf.in # ai21==2.9.2 ai21-tokenizer==0.11.2 @@ -13,11 +13,11 @@ anthropic==0.31.2 anyio==4.4.0 async-timeout==4.0.3 attrs==23.2.0 -boto3==1.34.145 -botocore==1.34.145 +boto3==1.34.51 +botocore==1.34.51 certifi==2024.7.4 charset-normalizer==3.3.2 -cohere==5.6.1 +cohere==5.6.2 coverage[toml]==7.6.0 dataclasses-json==0.6.7 defusedxml==0.7.1 @@ -32,7 +32,7 @@ h11==0.14.0 httpcore==1.0.5 httpx==0.27.0 httpx-sse==0.4.0 -huggingface-hub==0.24.0 +huggingface-hub==0.24.2 hypothesis==6.45.0 idna==3.7 iniconfig==2.0.0 @@ -46,34 +46,35 @@ langchain-aws==0.1.6 langchain-cohere==0.1.8 langchain-core==0.2.0 langchain-openai==0.1.7 -langchain-pinecone==0.1.2 +langchain-pinecone==0.1.3 langchain-text-splitters==0.2.1 -langsmith==0.1.92 +langsmith==0.1.93 marshmallow==3.21.3 mock==5.1.0 multidict==6.0.5 mypy-extensions==1.0.0 -numexpr==2.10.1 +numexpr==2.8.5 numpy==1.26.4 -openai==1.35.15 +openai==1.37.0 opentracing==2.4.0 orjson==3.10.6 packaging==23.2 parameterized==0.9.0 -pinecone-client==4.1.2 +pinecone-client==5.0.0 +pinecone-plugin-inference==1.0.2 pinecone-plugin-interface==0.0.7 pluggy==1.5.0 psutil==6.0.0 pydantic==2.8.2 pydantic-core==2.20.1 -pytest==8.2.2 +pytest==8.3.2 pytest-asyncio==0.21.1 pytest-cov==5.0.0 pytest-mock==3.14.0 -pytest-randomly==3.15.0 +pytest-randomly==3.10.1 python-dateutil==2.9.0.post0 pyyaml==6.0.1 -regex==2024.5.15 +regex==2024.7.24 requests==2.32.3 s3transfer==0.10.2 sentencepiece==0.2.0 @@ -89,7 +90,7 @@ tqdm==4.66.4 types-requests==2.32.0.20240712 typing-extensions==4.12.2 typing-inspect==0.9.0 -urllib3==2.2.2 +urllib3==2.0.7 vcrpy==5.1.0 wrapt==1.16.0 yarl==1.9.4 diff --git a/.riot/requirements/1d189a7.txt b/.riot/requirements/1d189a7.txt deleted file mode 100644 index 9f9f812e2ef..00000000000 --- a/.riot/requirements/1d189a7.txt +++ /dev/null @@ -1,27 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.8 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/1d189a7.in -# -attrs==23.1.0 -backports-zoneinfo==0.2.1 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 -hypothesis==6.45.0 -importlib-metadata==7.0.0 -iniconfig==2.0.0 -mock==5.1.0 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -psycopg==3.1.16 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -typing-extensions==4.9.0 -zipp==3.17.0 diff --git a/.riot/requirements/1d32f58.txt b/.riot/requirements/1d32f58.txt new file mode 100644 index 00000000000..2e623af931d --- /dev/null +++ b/.riot/requirements/1d32f58.txt @@ -0,0 +1,26 @@ +# +# This file is autogenerated by pip-compile with Python 3.9 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/1d32f58.in +# +async-timeout==4.0.3 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 +hypothesis==6.45.0 +importlib-metadata==8.0.0 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +redis==4.6.0 +sortedcontainers==2.4.0 +tomli==2.0.1 +zipp==3.19.2 diff --git a/.riot/requirements/1d8a1bf.txt b/.riot/requirements/1d8a1bf.txt new file mode 100644 index 00000000000..3f9c2ae4767 --- /dev/null +++ b/.riot/requirements/1d8a1bf.txt @@ -0,0 +1,25 @@ +# +# This file is autogenerated by pip-compile with Python 3.10 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/1d8a1bf.in +# +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 +googleapis-common-protos==1.63.2 +grpcio==1.59.3 +hypothesis==6.45.0 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +protobuf==5.27.2 +pytest==8.2.2 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 +tomli==2.0.1 diff --git a/.riot/requirements/9ad019f.txt b/.riot/requirements/1db5311.txt similarity index 69% rename from .riot/requirements/9ad019f.txt rename to .riot/requirements/1db5311.txt index f0c802e7ba1..8f59080503b 100644 --- a/.riot/requirements/9ad019f.txt +++ b/.riot/requirements/1db5311.txt @@ -2,35 +2,35 @@ # This file is autogenerated by pip-compile with Python 3.8 # by the following command: # -# pip-compile --no-annotate .riot/requirements/9ad019f.in +# pip-compile --no-annotate .riot/requirements/1db5311.in # annotated-types==0.7.0 -anyio==4.3.0 +anyio==4.4.0 attrs==23.2.0 -certifi==2024.2.2 -coverage[toml]==7.5.1 +certifi==2024.7.4 +coverage[toml]==7.6.0 distro==1.9.0 -exceptiongroup==1.2.1 +exceptiongroup==1.2.2 h11==0.14.0 httpcore==1.0.5 httpx==0.27.0 hypothesis==6.45.0 idna==3.7 -importlib-metadata==7.1.0 +importlib-metadata==8.0.0 iniconfig==2.0.0 mock==5.1.0 multidict==6.0.5 numpy==1.24.4 openai[datalib,embeddings]==1.30.1 opentracing==2.4.0 -packaging==24.0 +packaging==24.1 pandas==2.0.3 pandas-stubs==2.0.3.230814 -pillow==10.3.0 +pillow==9.5.0 pluggy==1.5.0 -pydantic==2.7.1 -pydantic-core==2.18.2 -pytest==8.2.1 +pydantic==2.8.2 +pydantic-core==2.20.1 +pytest==8.2.2 pytest-asyncio==0.21.1 pytest-cov==5.0.0 pytest-mock==3.14.0 @@ -44,10 +44,10 @@ sortedcontainers==2.4.0 tomli==2.0.1 tqdm==4.66.4 types-pytz==2024.1.0.20240417 -typing-extensions==4.11.0 +typing-extensions==4.12.2 tzdata==2024.1 -urllib3==1.26.18 +urllib3==1.26.19 vcrpy==4.2.1 wrapt==1.16.0 yarl==1.9.4 -zipp==3.18.2 +zipp==3.19.2 diff --git a/.riot/requirements/1e250cd.txt b/.riot/requirements/1e250cd.txt deleted file mode 100644 index 592524c2f56..00000000000 --- a/.riot/requirements/1e250cd.txt +++ /dev/null @@ -1,62 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.7 -# by the following command: -# -# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/1e250cd.in -# -aiohttp==3.8.6 -aiosignal==1.3.1 -async-timeout==4.0.3 -asynctest==0.13.0 -attrs==23.1.0 -certifi==2023.11.17 -charset-normalizer==3.3.2 -coverage[toml]==7.2.7 -cycler==0.11.0 -et-xmlfile==1.1.0 -exceptiongroup==1.2.0 -fonttools==4.38.0 -frozenlist==1.3.3 -hypothesis==6.45.0 -idna==3.6 -importlib-metadata==6.7.0 -iniconfig==2.0.0 -joblib==1.3.2 -kiwisolver==1.4.5 -matplotlib==3.5.3 -mock==5.1.0 -multidict==6.0.4 -numpy==1.21.6 -openai[datalib,embeddings]==0.27.2 -openpyxl==3.1.2 -opentracing==2.4.0 -packaging==23.2 -pandas==1.3.5 -pandas-stubs==1.2.0.62 -pillow==9.5.0 -plotly==5.18.0 -pluggy==1.2.0 -pyparsing==3.1.1 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.11.1 -pytest-randomly==3.12.0 -python-dateutil==2.8.2 -pytz==2023.3.post1 -pyyaml==6.0.1 -requests==2.31.0 -scikit-learn==1.0.2 -scipy==1.7.3 -six==1.16.0 -sortedcontainers==2.4.0 -tenacity==8.2.3 -threadpoolctl==3.1.0 -tomli==2.0.1 -tqdm==4.66.1 -typing-extensions==4.7.1 -urllib3==1.26.18 -vcrpy==4.2.1 -wrapt==1.16.0 -yarl==1.9.4 -zipp==3.15.0 diff --git a/.riot/requirements/169042d.txt b/.riot/requirements/1ec15f5.txt similarity index 65% rename from .riot/requirements/169042d.txt rename to .riot/requirements/1ec15f5.txt index 6fd565b093f..d40fd1e4cca 100644 --- a/.riot/requirements/169042d.txt +++ b/.riot/requirements/1ec15f5.txt @@ -2,36 +2,36 @@ # This file is autogenerated by pip-compile with Python 3.9 # by the following command: # -# pip-compile --no-annotate .riot/requirements/169042d.in +# pip-compile --no-annotate .riot/requirements/1ec15f5.in # annotated-types==0.7.0 -anyio==4.3.0 +anyio==4.4.0 attrs==23.2.0 -certifi==2024.2.2 +certifi==2024.7.4 charset-normalizer==3.3.2 -coverage[toml]==7.5.1 +coverage[toml]==7.6.0 distro==1.9.0 -exceptiongroup==1.2.1 +exceptiongroup==1.2.2 h11==0.14.0 httpcore==1.0.5 httpx==0.27.0 hypothesis==6.45.0 idna==3.7 -importlib-metadata==7.1.0 +importlib-metadata==8.0.0 iniconfig==2.0.0 mock==5.1.0 multidict==6.0.5 -numpy==1.26.4 +numpy==2.0.0 openai[datalib]==1.30.1 opentracing==2.4.0 -packaging==24.0 +packaging==24.1 pandas==2.2.2 -pandas-stubs==2.2.2.240514 -pillow==10.3.0 +pandas-stubs==2.2.2.240603 +pillow==10.1.0 pluggy==1.5.0 -pydantic==2.7.1 -pydantic-core==2.18.2 -pytest==8.2.1 +pydantic==2.8.2 +pydantic-core==2.20.1 +pytest==8.2.2 pytest-asyncio==0.21.1 pytest-cov==5.0.0 pytest-mock==3.14.0 @@ -40,7 +40,7 @@ python-dateutil==2.9.0.post0 pytz==2024.1 pyyaml==6.0.1 regex==2024.5.15 -requests==2.32.0 +requests==2.32.3 six==1.16.0 sniffio==1.3.1 sortedcontainers==2.4.0 @@ -48,10 +48,10 @@ tiktoken==0.7.0 tomli==2.0.1 tqdm==4.66.4 types-pytz==2024.1.0.20240417 -typing-extensions==4.11.0 +typing-extensions==4.12.2 tzdata==2024.1 -urllib3==1.26.18 +urllib3==1.26.19 vcrpy==4.2.1 wrapt==1.16.0 yarl==1.9.4 -zipp==3.18.2 +zipp==3.19.2 diff --git a/.riot/requirements/1642d4d.txt b/.riot/requirements/1ee49b9.txt similarity index 69% rename from .riot/requirements/1642d4d.txt rename to .riot/requirements/1ee49b9.txt index 82c806406a6..9e04d313a33 100644 --- a/.riot/requirements/1642d4d.txt +++ b/.riot/requirements/1ee49b9.txt @@ -2,14 +2,14 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1642d4d.in +# pip-compile --no-annotate .riot/requirements/1ee49b9.in # annotated-types==0.7.0 -anyio==4.3.0 +anyio==4.4.0 attrs==23.2.0 -certifi==2024.2.2 +certifi==2024.7.4 charset-normalizer==3.3.2 -coverage[toml]==7.5.1 +coverage[toml]==7.6.0 distro==1.9.0 h11==0.14.0 httpcore==1.0.5 @@ -19,17 +19,17 @@ idna==3.7 iniconfig==2.0.0 mock==5.1.0 multidict==6.0.5 -numpy==1.26.4 +numpy==2.0.0 openai[datalib]==1.30.1 opentracing==2.4.0 -packaging==24.0 +packaging==24.1 pandas==2.2.2 -pandas-stubs==2.2.2.240514 -pillow==10.3.0 +pandas-stubs==2.2.2.240603 +pillow==10.1.0 pluggy==1.5.0 -pydantic==2.7.1 -pydantic-core==2.18.2 -pytest==8.2.1 +pydantic==2.8.2 +pydantic-core==2.20.1 +pytest==8.2.2 pytest-asyncio==0.21.1 pytest-cov==5.0.0 pytest-mock==3.14.0 @@ -38,16 +38,16 @@ python-dateutil==2.9.0.post0 pytz==2024.1 pyyaml==6.0.1 regex==2024.5.15 -requests==2.32.0 +requests==2.32.3 six==1.16.0 sniffio==1.3.1 sortedcontainers==2.4.0 tiktoken==0.7.0 tqdm==4.66.4 types-pytz==2024.1.0.20240417 -typing-extensions==4.11.0 +typing-extensions==4.12.2 tzdata==2024.1 -urllib3==1.26.18 +urllib3==1.26.19 vcrpy==4.2.1 wrapt==1.16.0 yarl==1.9.4 diff --git a/.riot/requirements/3c9fad3.txt b/.riot/requirements/1ef7371.txt similarity index 51% rename from .riot/requirements/3c9fad3.txt rename to .riot/requirements/1ef7371.txt index bc1215b07ca..c94f76cedcb 100644 --- a/.riot/requirements/3c9fad3.txt +++ b/.riot/requirements/1ef7371.txt @@ -2,24 +2,24 @@ # This file is autogenerated by pip-compile with Python 3.8 # by the following command: # -# pip-compile --no-annotate .riot/requirements/3c9fad3.in +# pip-compile --no-annotate .riot/requirements/1ef7371.in # -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 hypothesis==6.45.0 -importlib-metadata==7.0.0 +importlib-metadata==8.0.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 redis==3.0.1 redis-py-cluster==2.0.0 sortedcontainers==2.4.0 tomli==2.0.1 -zipp==3.17.0 +zipp==3.19.2 diff --git a/.riot/requirements/1ef773e.txt b/.riot/requirements/1ef773e.txt new file mode 100644 index 00000000000..79f06d87c9a --- /dev/null +++ b/.riot/requirements/1ef773e.txt @@ -0,0 +1,20 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/1ef773e.in +# +attrs==23.2.0 +coverage[toml]==7.5.4 +hypothesis==6.45.0 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pyodbc==5.1.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 diff --git a/.riot/requirements/1efa336.txt b/.riot/requirements/1efa336.txt deleted file mode 100644 index a4bda1ba226..00000000000 --- a/.riot/requirements/1efa336.txt +++ /dev/null @@ -1,29 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.12 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/1efa336.in -# -anyio==3.7.1 -attrs==23.1.0 -certifi==2023.11.17 -charset-normalizer==3.3.2 -coverage[toml]==7.3.4 -h11==0.12.0 -httpcore==0.14.7 -httpx==0.22.0 -hypothesis==6.45.0 -idna==3.6 -iniconfig==2.0.0 -mock==5.1.0 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -rfc3986[idna2008]==1.5.0 -sniffio==1.3.0 -sortedcontainers==2.4.0 diff --git a/.riot/requirements/1f08b51.txt b/.riot/requirements/1f08b51.txt new file mode 100644 index 00000000000..5aedc632826 --- /dev/null +++ b/.riot/requirements/1f08b51.txt @@ -0,0 +1,30 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/1f08b51.in +# +aiohttp==3.9.5 +aiohttp-jinja2==1.6 +aiosignal==1.3.1 +attrs==23.2.0 +coverage[toml]==7.5.4 +frozenlist==1.4.1 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +jinja2==3.1.4 +markupsafe==2.1.5 +mock==5.1.0 +multidict==6.0.5 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-aiohttp==1.0.5 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 +yarl==1.9.4 diff --git a/.riot/requirements/1e1254f.txt b/.riot/requirements/1f1cb11.txt similarity index 88% rename from .riot/requirements/1e1254f.txt rename to .riot/requirements/1f1cb11.txt index a589d225bbb..49d921e1f91 100644 --- a/.riot/requirements/1e1254f.txt +++ b/.riot/requirements/1f1cb11.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.9 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1e1254f.in +# pip-compile --allow-unsafe --no-annotate .riot/requirements/1f1cb11.in # ai21==1.3.4 aiohttp==3.9.5 @@ -23,7 +23,7 @@ filelock==3.15.4 frozenlist==1.4.1 fsspec==2024.6.1 greenlet==3.0.3 -huggingface-hub==0.24.0 +huggingface-hub==0.24.2 hypothesis==6.45.0 idna==3.7 importlib-metadata==6.11.0 @@ -40,7 +40,7 @@ marshmallow==3.21.3 mock==5.1.0 multidict==6.0.5 mypy-extensions==1.0.0 -numexpr==2.10.1 +numexpr==2.8.5 numpy==1.26.4 openai==0.27.8 openapi-schema-pydantic==1.2.4 @@ -50,14 +50,14 @@ pinecone-client==2.2.4 pluggy==1.5.0 psutil==6.0.0 pydantic==1.10.17 -pytest==8.2.2 +pytest==8.3.2 pytest-asyncio==0.21.1 pytest-cov==5.0.0 pytest-mock==3.14.0 -pytest-randomly==3.15.0 +pytest-randomly==3.10.1 python-dateutil==2.9.0.post0 pyyaml==6.0.1 -regex==2024.5.15 +regex==2024.7.24 requests==2.32.3 six==1.16.0 sniffio==1.3.1 diff --git a/.riot/requirements/1f238e9.txt b/.riot/requirements/1f238e9.txt new file mode 100644 index 00000000000..f07e9d431d9 --- /dev/null +++ b/.riot/requirements/1f238e9.txt @@ -0,0 +1,28 @@ +# +# This file is autogenerated by pip-compile with Python 3.9 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/1f238e9.in +# +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 +googleapis-common-protos==1.63.2 +grpcio==1.34.1 +hypothesis==6.45.0 +importlib-metadata==8.0.0 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +protobuf==5.27.2 +pytest==8.2.2 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +six==1.16.0 +sortedcontainers==2.4.0 +tomli==2.0.1 +zipp==3.19.2 diff --git a/.riot/requirements/1f23a69.txt b/.riot/requirements/1f23a69.txt new file mode 100644 index 00000000000..75fdcaab1dc --- /dev/null +++ b/.riot/requirements/1f23a69.txt @@ -0,0 +1,29 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/1f23a69.in +# +attrs==23.2.0 +blinker==1.8.2 +click==8.1.7 +coverage[toml]==7.5.4 +flask==3.0.3 +flask-caching==1.10.1 +hypothesis==6.45.0 +iniconfig==2.0.0 +itsdangerous==2.2.0 +jinja2==3.1.4 +markupsafe==2.1.5 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +python-memcached==1.62 +redis==5.0.7 +sortedcontainers==2.4.0 +werkzeug==3.0.3 diff --git a/.riot/requirements/1f26e81.txt b/.riot/requirements/1f26e81.txt deleted file mode 100644 index ac8a7b98b0a..00000000000 --- a/.riot/requirements/1f26e81.txt +++ /dev/null @@ -1,27 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.7 -# by the following command: -# -# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/1f26e81.in -# -attrs==23.1.0 -backports-zoneinfo==0.2.1 -coverage[toml]==7.2.7 -exceptiongroup==1.2.0 -hypothesis==6.45.0 -importlib-metadata==6.7.0 -iniconfig==2.0.0 -mock==5.1.0 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.2.0 -psycopg==3.1.16 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.11.1 -pytest-randomly==3.12.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -typing-extensions==4.7.1 -zipp==3.15.0 diff --git a/.riot/requirements/1f35619.txt b/.riot/requirements/1f35619.txt new file mode 100644 index 00000000000..e48ac8ccd52 --- /dev/null +++ b/.riot/requirements/1f35619.txt @@ -0,0 +1,46 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/1f35619.in +# +attrs==23.2.0 +certifi==2024.6.2 +charset-normalizer==2.1.1 +click==8.1.7 +coverage[toml]==7.5.4 +deprecated==1.2.14 +flask==2.1.3 +gevent==24.2.1 +greenlet==3.0.3 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +itsdangerous==2.2.0 +jinja2==3.1.4 +markupsafe==2.0.1 +mock==5.1.0 +opentelemetry-api==1.4.1 +opentelemetry-instrumentation==0.32b0 +opentelemetry-instrumentation-flask==0.32b0 +opentelemetry-instrumentation-wsgi==0.32b0 +opentelemetry-semantic-conventions==0.32b0 +opentelemetry-util-http==0.32b0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.21.1 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +requests==2.28.1 +sortedcontainers==2.4.0 +urllib3==1.26.19 +werkzeug==2.1.2 +wrapt==1.16.0 +zope-event==5.0 +zope-interface==6.4.post2 + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/.riot/requirements/b416620.txt b/.riot/requirements/1f8ac1c.txt similarity index 91% rename from .riot/requirements/b416620.txt rename to .riot/requirements/1f8ac1c.txt index 5cd01b1b2b8..e3042b85cd7 100644 --- a/.riot/requirements/b416620.txt +++ b/.riot/requirements/1f8ac1c.txt @@ -2,13 +2,13 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/b416620.in +# pip-compile --no-annotate .riot/requirements/1f8ac1c.in # amqp==5.2.0 attrs==23.2.0 billiard==4.2.0 celery==5.4.0 -certifi==2024.6.2 +certifi==2024.7.4 charset-normalizer==3.3.2 click==8.1.7 click-didyoumean==0.3.1 diff --git a/.riot/requirements/1f8f136.txt b/.riot/requirements/1f8f136.txt new file mode 100644 index 00000000000..c8487dc29ba --- /dev/null +++ b/.riot/requirements/1f8f136.txt @@ -0,0 +1,27 @@ +# +# This file is autogenerated by pip-compile with Python 3.9 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/1f8f136.in +# +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 +googleapis-common-protos==1.63.2 +grpcio==1.59.3 +hypothesis==6.45.0 +importlib-metadata==8.0.0 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +protobuf==5.27.2 +pytest==8.2.2 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 +tomli==2.0.1 +zipp==3.19.2 diff --git a/.riot/requirements/1fab05e.txt b/.riot/requirements/1fab05e.txt new file mode 100644 index 00000000000..ab0155d6835 --- /dev/null +++ b/.riot/requirements/1fab05e.txt @@ -0,0 +1,25 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/1fab05e.in +# +attrs==23.2.0 +certifi==2024.6.2 +charset-normalizer==3.3.2 +coverage[toml]==7.5.4 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +requests==2.32.3 +requests-mock==1.12.1 +sortedcontainers==2.4.0 +urllib3==1.26.19 diff --git a/.riot/requirements/80cba21.txt b/.riot/requirements/1ff2f1b.txt similarity index 52% rename from .riot/requirements/80cba21.txt rename to .riot/requirements/1ff2f1b.txt index b1738e198ac..5cddc8842fe 100644 --- a/.riot/requirements/80cba21.txt +++ b/.riot/requirements/1ff2f1b.txt @@ -2,31 +2,31 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/80cba21.in +# pip-compile --no-annotate .riot/requirements/1ff2f1b.in # -aiohttp==3.9.1 +aiohttp==3.9.5 aiohttp-jinja2==1.6 aiosignal==1.3.1 async-timeout==4.0.3 -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 frozenlist==1.4.1 hypothesis==6.45.0 -idna==3.6 +idna==3.7 iniconfig==2.0.0 -jinja2==3.1.2 -markupsafe==2.1.3 +jinja2==3.1.4 +markupsafe==2.1.5 mock==5.1.0 -multidict==6.0.4 +multidict==6.0.5 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 pytest-aiohttp==1.0.5 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 tomli==2.0.1 diff --git a/.riot/requirements/2164da7.txt b/.riot/requirements/2164da7.txt new file mode 100644 index 00000000000..4f5335c4318 --- /dev/null +++ b/.riot/requirements/2164da7.txt @@ -0,0 +1,30 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/2164da7.in +# +attrs==23.2.0 +blinker==1.8.2 +cachelib==0.9.0 +click==8.1.7 +coverage[toml]==7.5.4 +flask==3.0.3 +flask-caching==2.3.0 +hypothesis==6.45.0 +iniconfig==2.0.0 +itsdangerous==2.2.0 +jinja2==3.1.4 +markupsafe==2.1.5 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +python-memcached==1.62 +redis==5.0.7 +sortedcontainers==2.4.0 +werkzeug==3.0.3 diff --git a/.riot/requirements/22f4d7e.txt b/.riot/requirements/266b298.txt similarity index 87% rename from .riot/requirements/22f4d7e.txt rename to .riot/requirements/266b298.txt index 0dd1bfddb55..fc18bd0c83f 100644 --- a/.riot/requirements/22f4d7e.txt +++ b/.riot/requirements/266b298.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/22f4d7e.in +# pip-compile --allow-unsafe --no-annotate .riot/requirements/266b298.in # ai21==1.3.4 aiohttp==3.9.5 @@ -22,7 +22,7 @@ filelock==3.15.4 frozenlist==1.4.1 fsspec==2024.6.1 greenlet==3.0.3 -huggingface-hub==0.24.0 +huggingface-hub==0.24.2 hypothesis==6.45.0 idna==3.7 importlib-metadata==6.11.0 @@ -39,7 +39,7 @@ marshmallow==3.21.3 mock==5.1.0 multidict==6.0.5 mypy-extensions==1.0.0 -numexpr==2.10.1 +numexpr==2.8.5 numpy==1.26.4 openai==0.27.8 openapi-schema-pydantic==1.2.4 @@ -49,14 +49,14 @@ pinecone-client==2.2.4 pluggy==1.5.0 psutil==6.0.0 pydantic==1.10.17 -pytest==8.2.2 +pytest==8.3.2 pytest-asyncio==0.21.1 pytest-cov==5.0.0 pytest-mock==3.14.0 -pytest-randomly==3.15.0 +pytest-randomly==3.10.1 python-dateutil==2.9.0.post0 pyyaml==6.0.1 -regex==2024.5.15 +regex==2024.7.24 requests==2.32.3 six==1.16.0 sniffio==1.3.1 diff --git a/.riot/requirements/e0c0926.txt b/.riot/requirements/26ee64c.txt similarity index 90% rename from .riot/requirements/e0c0926.txt rename to .riot/requirements/26ee64c.txt index 08fe0d707f1..6b444a9f73d 100644 --- a/.riot/requirements/e0c0926.txt +++ b/.riot/requirements/26ee64c.txt @@ -2,14 +2,14 @@ # This file is autogenerated by pip-compile with Python 3.8 # by the following command: # -# pip-compile --no-annotate .riot/requirements/e0c0926.in +# pip-compile --no-annotate .riot/requirements/26ee64c.in # amqp==5.2.0 attrs==23.2.0 backports-zoneinfo[tzdata]==0.2.1 billiard==4.2.0 celery==5.4.0 -certifi==2024.6.2 +certifi==2024.7.4 charset-normalizer==3.3.2 click==8.1.7 click-didyoumean==0.3.1 @@ -22,7 +22,7 @@ gevent==24.2.1 greenlet==3.0.3 hypothesis==6.45.0 idna==3.7 -importlib-metadata==7.2.1 +importlib-metadata==8.0.0 iniconfig==2.0.0 kombu==5.3.7 mock==5.1.0 diff --git a/.riot/requirements/ee2fdd5.txt b/.riot/requirements/27d8bd1.txt similarity index 56% rename from .riot/requirements/ee2fdd5.txt rename to .riot/requirements/27d8bd1.txt index 16482318105..615eec22a3b 100644 --- a/.riot/requirements/ee2fdd5.txt +++ b/.riot/requirements/27d8bd1.txt @@ -2,20 +2,20 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/ee2fdd5.in +# pip-compile --no-annotate .riot/requirements/27d8bd1.in # -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 hypothesis==6.45.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 redis==3.0.1 redis-py-cluster==2.0.0 diff --git a/.riot/requirements/155e293.txt b/.riot/requirements/285f337.txt similarity index 50% rename from .riot/requirements/155e293.txt rename to .riot/requirements/285f337.txt index 4cce39198c2..f6f1b84c400 100644 --- a/.riot/requirements/155e293.txt +++ b/.riot/requirements/285f337.txt @@ -2,31 +2,31 @@ # This file is autogenerated by pip-compile with Python 3.9 # by the following command: # -# pip-compile --no-annotate .riot/requirements/155e293.in +# pip-compile --no-annotate .riot/requirements/285f337.in # -aiohttp==3.9.1 +aiohttp==3.9.5 aiosignal==1.3.1 async-timeout==4.0.3 -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 frozenlist==1.4.1 hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.0 +idna==3.7 +importlib-metadata==8.0.0 iniconfig==2.0.0 mock==5.1.0 -multidict==6.0.4 +multidict==6.0.5 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 pytest-aiohttp==1.0.5 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 tomli==2.0.1 yarl==1.9.4 -zipp==3.17.0 +zipp==3.19.2 diff --git a/.riot/requirements/2975509.txt b/.riot/requirements/2975509.txt deleted file mode 100644 index 8d9fa57264d..00000000000 --- a/.riot/requirements/2975509.txt +++ /dev/null @@ -1,35 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/2975509.in -# -aiohttp==3.9.1 -aiohttp-jinja2==1.5.1 -aiosignal==1.3.1 -async-timeout==4.0.3 -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 -frozenlist==1.4.1 -hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.0 -iniconfig==2.0.0 -jinja2==3.1.2 -markupsafe==2.1.3 -mock==5.1.0 -multidict==6.0.4 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-aiohttp==1.0.5 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -yarl==1.9.4 -zipp==3.17.0 diff --git a/.riot/requirements/29fa506.txt b/.riot/requirements/29fa506.txt new file mode 100644 index 00000000000..f79f9d4d220 --- /dev/null +++ b/.riot/requirements/29fa506.txt @@ -0,0 +1,33 @@ +# +# This file is autogenerated by pip-compile with Python 3.9 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/29fa506.in +# +anyio==4.4.0 +attrs==23.2.0 +certifi==2024.6.2 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 +h11==0.14.0 +httpcore==0.16.3 +httpx==0.23.3 +hypothesis==6.45.0 +idna==3.7 +importlib-metadata==8.0.0 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.21.1 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +rfc3986[idna2008]==1.5.0 +sniffio==1.3.1 +sortedcontainers==2.4.0 +tomli==2.0.1 +typing-extensions==4.12.2 +zipp==3.19.2 diff --git a/.riot/requirements/2a84086.txt b/.riot/requirements/2a84086.txt deleted file mode 100644 index c852856849c..00000000000 --- a/.riot/requirements/2a84086.txt +++ /dev/null @@ -1,27 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.8 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/2a84086.in -# -attrs==23.2.0 -coverage[toml]==7.4.2 -exceptiongroup==1.2.0 -googleapis-common-protos==1.62.0 -grpcio==1.59.3 -hypothesis==6.45.0 -importlib-metadata==7.0.1 -iniconfig==2.0.0 -mock==5.1.0 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.4.0 -protobuf==4.25.3 -pytest==8.0.1 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -zipp==3.17.0 diff --git a/.riot/requirements/2a8f858.txt b/.riot/requirements/2a8f858.txt deleted file mode 100644 index bdd34a96bef..00000000000 --- a/.riot/requirements/2a8f858.txt +++ /dev/null @@ -1,58 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/2a8f858.in -# -aiohttp==3.9.1 -aiosignal==1.3.1 -attrs==23.1.0 -certifi==2023.11.17 -charset-normalizer==3.3.2 -contourpy==1.2.0 -coverage[toml]==7.3.4 -cycler==0.12.1 -et-xmlfile==1.1.0 -fonttools==4.47.0 -frozenlist==1.4.1 -hypothesis==6.45.0 -idna==3.6 -iniconfig==2.0.0 -joblib==1.3.2 -kiwisolver==1.4.5 -matplotlib==3.8.2 -mock==5.1.0 -multidict==6.0.4 -numpy==1.26.2 -openai[datalib,embeddings]==0.27.2 -openpyxl==3.1.2 -opentracing==2.4.0 -packaging==23.2 -pandas==2.1.4 -pandas-stubs==2.1.4.231218 -pillow==10.1.0 -plotly==5.18.0 -pluggy==1.3.0 -pyparsing==3.1.1 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -python-dateutil==2.8.2 -pytz==2023.3.post1 -pyyaml==6.0.1 -requests==2.31.0 -scikit-learn==1.3.2 -scipy==1.11.4 -six==1.16.0 -sortedcontainers==2.4.0 -tenacity==8.2.3 -threadpoolctl==3.2.0 -tqdm==4.66.1 -types-pytz==2023.3.1.1 -tzdata==2023.3 -urllib3==1.26.18 -vcrpy==4.2.1 -wrapt==1.16.0 -yarl==1.9.4 diff --git a/.riot/requirements/2be0986.txt b/.riot/requirements/2be0986.txt new file mode 100644 index 00000000000..d6092055872 --- /dev/null +++ b/.riot/requirements/2be0986.txt @@ -0,0 +1,22 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/2be0986.in +# +attrs==23.2.0 +coverage[toml]==7.5.4 +hypothesis==6.45.0 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +psycopg==3.2.1 +pytest==8.2.2 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 +typing-extensions==4.12.2 diff --git a/.riot/requirements/15d4403.txt b/.riot/requirements/2f7da3e.txt similarity index 50% rename from .riot/requirements/15d4403.txt rename to .riot/requirements/2f7da3e.txt index 858a6938fa4..510729d88af 100644 --- a/.riot/requirements/15d4403.txt +++ b/.riot/requirements/2f7da3e.txt @@ -2,91 +2,86 @@ # This file is autogenerated by pip-compile with Python 3.8 # by the following command: # -# pip-compile --no-annotate .riot/requirements/15d4403.in +# pip-compile --no-annotate .riot/requirements/2f7da3e.in # -annotated-types==0.6.0 +annotated-types==0.7.0 attrs==23.2.0 -aws-sam-translator==1.85.0 -aws-xray-sdk==2.12.1 +aws-sam-translator==1.89.0 +aws-xray-sdk==2.14.0 boto3==1.34.49 botocore==1.34.49 -certifi==2024.2.2 +certifi==2024.7.4 cffi==1.16.0 -cfn-lint==0.85.2 +cfn-lint==1.7.0 charset-normalizer==3.3.2 -coverage[toml]==7.4.3 -cryptography==42.0.5 -docker==7.0.0 -ecdsa==0.18.0 -exceptiongroup==1.2.0 +coverage[toml]==7.6.0 +cryptography==42.0.8 +docker==7.1.0 +ecdsa==0.19.0 +exceptiongroup==1.2.2 graphql-core==3.2.3 hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.1 -importlib-resources==6.1.1 +idna==3.7 +importlib-metadata==8.0.0 +importlib-resources==6.4.0 iniconfig==2.0.0 -jinja2==3.1.3 +jinja2==3.1.4 jmespath==1.0.1 -jschema-to-python==1.2.3 -jsondiff==2.0.0 +jsondiff==2.1.2 jsonpatch==1.33 -jsonpickle==3.0.3 -jsonpointer==2.4 -jsonschema==4.21.1 -jsonschema-path==0.3.2 +jsonpointer==3.0.0 +jsonschema==4.23.0 +jsonschema-path==0.3.3 jsonschema-specifications==2023.12.1 -junit-xml==1.9 lazy-object-proxy==1.10.0 markupsafe==2.1.5 mock==5.1.0 moto[all]==4.2.14 mpmath==1.3.0 multidict==6.0.5 -multipart==0.2.4 +multipart==0.2.5 networkx==3.1 openapi-schema-validator==0.6.2 openapi-spec-validator==0.7.1 opentracing==2.4.0 -packaging==23.2 +packaging==24.1 pathable==0.4.3 -pbr==6.0.0 pkgutil-resolve-name==1.3.10 -pluggy==1.4.0 +pluggy==1.5.0 py-partiql-parser==0.5.0 -pyasn1==0.5.1 -pycparser==2.21 -pydantic==2.6.2 -pydantic-core==2.16.3 -pyparsing==3.1.1 -pytest==8.0.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pyasn1==0.6.0 +pycparser==2.22 +pydantic==2.8.2 +pydantic-core==2.20.1 +pyparsing==3.1.2 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 python-jose[cryptography]==3.3.0 pyyaml==6.0.1 -referencing==0.31.1 -regex==2023.12.25 -requests==2.31.0 -responses==0.25.0 +referencing==0.35.1 +regex==2024.5.15 +requests==2.32.3 +responses==0.25.3 rfc3339-validator==0.1.4 -rpds-py==0.18.0 +rpds-py==0.19.0 rsa==4.9 -s3transfer==0.10.0 -sarif-om==1.0.4 +s3transfer==0.10.2 six==1.16.0 sortedcontainers==2.4.0 sshpubkeys==3.3.1 -sympy==1.12 +sympy==1.13.0 tomli==2.0.1 -typing-extensions==4.9.0 -urllib3==1.26.18 +typing-extensions==4.12.2 +urllib3==1.26.19 vcrpy==6.0.1 -werkzeug==3.0.1 +werkzeug==3.0.3 wrapt==1.16.0 xmltodict==0.13.0 yarl==1.9.4 -zipp==3.17.0 +zipp==3.19.2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/30b2227.txt b/.riot/requirements/30b2227.txt new file mode 100644 index 00000000000..11938ffc708 --- /dev/null +++ b/.riot/requirements/30b2227.txt @@ -0,0 +1,35 @@ +# +# This file is autogenerated by pip-compile with Python 3.8 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/30b2227.in +# +aiohttp==3.9.5 +aiohttp-jinja2==1.6 +aiosignal==1.3.1 +async-timeout==4.0.3 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 +frozenlist==1.4.1 +hypothesis==6.45.0 +idna==3.7 +importlib-metadata==8.0.0 +iniconfig==2.0.0 +jinja2==3.1.4 +markupsafe==2.1.5 +mock==5.1.0 +multidict==6.0.5 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-aiohttp==1.0.5 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 +tomli==2.0.1 +yarl==1.9.4 +zipp==3.19.2 diff --git a/.riot/requirements/315c2cb.txt b/.riot/requirements/315c2cb.txt new file mode 100644 index 00000000000..f76fe912353 --- /dev/null +++ b/.riot/requirements/315c2cb.txt @@ -0,0 +1,26 @@ +# +# This file is autogenerated by pip-compile with Python 3.8 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/315c2cb.in +# +async-timeout==4.0.3 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 +hypothesis==6.45.0 +importlib-metadata==8.0.0 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +redis==4.6.0 +sortedcontainers==2.4.0 +tomli==2.0.1 +zipp==3.19.2 diff --git a/.riot/requirements/32cfa88.txt b/.riot/requirements/32cfa88.txt deleted file mode 100644 index afa4dbed104..00000000000 --- a/.riot/requirements/32cfa88.txt +++ /dev/null @@ -1,25 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/32cfa88.in -# -asyncpg==0.22.0 -attrs==23.2.0 -coverage[toml]==7.4.0 -exceptiongroup==1.2.0 -hypothesis==6.45.0 -importlib-metadata==7.0.1 -iniconfig==2.0.0 -mock==5.1.0 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.4 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -zipp==3.17.0 diff --git a/.riot/requirements/17c49c8.txt b/.riot/requirements/35ce786.txt similarity index 68% rename from .riot/requirements/17c49c8.txt rename to .riot/requirements/35ce786.txt index a199149ecce..8f19eb63ade 100644 --- a/.riot/requirements/17c49c8.txt +++ b/.riot/requirements/35ce786.txt @@ -2,16 +2,16 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/17c49c8.in +# pip-compile --no-annotate .riot/requirements/35ce786.in # annotated-types==0.7.0 -anyio==4.3.0 +anyio==4.4.0 attrs==23.2.0 -certifi==2024.2.2 +certifi==2024.7.4 charset-normalizer==3.3.2 -coverage[toml]==7.5.1 +coverage[toml]==7.6.0 distro==1.9.0 -exceptiongroup==1.2.1 +exceptiongroup==1.2.2 h11==0.14.0 httpcore==1.0.5 httpx==0.27.0 @@ -20,17 +20,17 @@ idna==3.7 iniconfig==2.0.0 mock==5.1.0 multidict==6.0.5 -numpy==1.26.4 +numpy==2.0.0 openai[datalib]==1.30.1 opentracing==2.4.0 -packaging==24.0 +packaging==24.1 pandas==2.2.2 -pandas-stubs==2.2.2.240514 -pillow==10.3.0 +pandas-stubs==2.2.2.240603 +pillow==10.1.0 pluggy==1.5.0 -pydantic==2.7.1 -pydantic-core==2.18.2 -pytest==8.2.1 +pydantic==2.8.2 +pydantic-core==2.20.1 +pytest==8.2.2 pytest-asyncio==0.21.1 pytest-cov==5.0.0 pytest-mock==3.14.0 @@ -39,7 +39,7 @@ python-dateutil==2.9.0.post0 pytz==2024.1 pyyaml==6.0.1 regex==2024.5.15 -requests==2.32.0 +requests==2.32.3 six==1.16.0 sniffio==1.3.1 sortedcontainers==2.4.0 @@ -47,9 +47,9 @@ tiktoken==0.7.0 tomli==2.0.1 tqdm==4.66.4 types-pytz==2024.1.0.20240417 -typing-extensions==4.11.0 +typing-extensions==4.12.2 tzdata==2024.1 -urllib3==1.26.18 +urllib3==1.26.19 vcrpy==4.2.1 wrapt==1.16.0 yarl==1.9.4 diff --git a/.riot/requirements/3b9f513.txt b/.riot/requirements/3b9f513.txt deleted file mode 100644 index e8603c4ab4a..00000000000 --- a/.riot/requirements/3b9f513.txt +++ /dev/null @@ -1,35 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.8 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/3b9f513.in -# -aiohttp==3.9.1 -aiohttp-jinja2==1.6 -aiosignal==1.3.1 -async-timeout==4.0.3 -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 -frozenlist==1.4.1 -hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.0 -iniconfig==2.0.0 -jinja2==3.1.2 -markupsafe==2.1.3 -mock==5.1.0 -multidict==6.0.4 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-aiohttp==1.0.5 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -yarl==1.9.4 -zipp==3.17.0 diff --git a/.riot/requirements/3df1421.txt b/.riot/requirements/3df1421.txt new file mode 100644 index 00000000000..0b4f9bb4bf4 --- /dev/null +++ b/.riot/requirements/3df1421.txt @@ -0,0 +1,28 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/3df1421.in +# +anyio==4.4.0 +attrs==23.2.0 +certifi==2024.6.2 +coverage[toml]==7.5.4 +h11==0.14.0 +httpcore==0.16.3 +httpx==0.23.3 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.21.1 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +rfc3986[idna2008]==1.5.0 +sniffio==1.3.1 +sortedcontainers==2.4.0 diff --git a/.riot/requirements/3e500e7.txt b/.riot/requirements/3e500e7.txt deleted file mode 100644 index a05245b041d..00000000000 --- a/.riot/requirements/3e500e7.txt +++ /dev/null @@ -1,22 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.12 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/3e500e7.in -# -attrs==23.2.0 -coverage[toml]==7.4.2 -googleapis-common-protos==1.62.0 -grpcio==1.62.0 -hypothesis==6.45.0 -iniconfig==2.0.0 -mock==5.1.0 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.4.0 -protobuf==4.25.3 -pytest==8.0.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -sortedcontainers==2.4.0 diff --git a/.riot/requirements/3e7be37.txt b/.riot/requirements/3e7be37.txt new file mode 100644 index 00000000000..d4967bd3287 --- /dev/null +++ b/.riot/requirements/3e7be37.txt @@ -0,0 +1,47 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/3e7be37.in +# +asgiref==3.8.1 +attrs==23.2.0 +certifi==2024.6.2 +charset-normalizer==2.1.1 +click==8.1.7 +coverage[toml]==7.5.4 +deprecated==1.2.14 +flask==2.1.3 +gevent==24.2.1 +greenlet==3.0.3 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +itsdangerous==2.2.0 +jinja2==3.1.4 +markupsafe==2.0.1 +mock==5.1.0 +opentelemetry-api==1.3.0 +opentelemetry-instrumentation==0.22b0 +opentelemetry-instrumentation-flask==0.22b0 +opentelemetry-instrumentation-wsgi==0.22b0 +opentelemetry-semantic-conventions==0.22b0 +opentelemetry-util-http==0.22b0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.21.1 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +requests==2.28.1 +sortedcontainers==2.4.0 +urllib3==1.26.19 +werkzeug==2.1.2 +wrapt==1.16.0 +zope-event==5.0 +zope-interface==6.4.post2 + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/.riot/requirements/684cdcc.txt b/.riot/requirements/3f38536.txt similarity index 52% rename from .riot/requirements/684cdcc.txt rename to .riot/requirements/3f38536.txt index feae1ac2a1c..978cf03cdfd 100644 --- a/.riot/requirements/684cdcc.txt +++ b/.riot/requirements/3f38536.txt @@ -2,68 +2,68 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/684cdcc.in +# pip-compile --no-annotate .riot/requirements/3f38536.in # -annotated-types==0.6.0 -attrs==23.1.0 -aws-sam-translator==1.82.0 -aws-xray-sdk==2.12.1 +annotated-types==0.7.0 +attrs==23.2.0 +aws-sam-translator==1.89.0 +aws-xray-sdk==2.14.0 boto==2.49.0 -boto3==1.34.6 -botocore==1.34.6 -certifi==2023.11.17 +boto3==1.34.140 +botocore==1.34.140 +certifi==2024.7.4 cffi==1.16.0 cfn-lint==0.53.1 charset-normalizer==3.3.2 -coverage[toml]==7.3.4 -cryptography==41.0.7 -docker==7.0.0 +coverage[toml]==7.5.4 +cryptography==42.0.8 +docker==7.1.0 ecdsa==0.14.1 hypothesis==6.45.0 idna==2.10 iniconfig==2.0.0 jinja2==2.11.3 jmespath==1.0.1 -jsondiff==2.0.0 +jsondiff==2.1.1 jsonpatch==1.33 -jsonpointer==2.4 +jsonpointer==3.0.0 jsonschema==3.2.0 junit-xml==1.9 markupsafe==1.1.1 mock==5.1.0 -more-itertools==10.1.0 +more-itertools==10.3.0 moto==1.3.16 networkx==2.8.8 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pyasn1==0.5.1 -pycparser==2.21 -pydantic==2.5.2 -pydantic-core==2.14.5 +packaging==24.1 +pluggy==1.5.0 +pyasn1==0.6.0 +pycparser==2.22 +pydantic==2.8.2 +pydantic-core==2.20.1 pynamodb==5.5.1 pyrsistent==0.20.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 python-jose[cryptography]==3.3.0 -pytz==2023.3.post1 +pytz==2024.1 pyyaml==6.0.1 -requests==2.31.0 -responses==0.24.1 +requests==2.32.3 +responses==0.25.3 rsa==4.9 -s3transfer==0.10.0 +s3transfer==0.10.2 six==1.16.0 sortedcontainers==2.4.0 sshpubkeys==3.3.1 -typing-extensions==4.9.0 -urllib3==2.0.7 +typing-extensions==4.12.2 +urllib3==2.2.2 werkzeug==2.1.2 wrapt==1.16.0 xmltodict==0.13.0 -zipp==3.17.0 +zipp==3.19.2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/4132bce.txt b/.riot/requirements/4132bce.txt new file mode 100644 index 00000000000..ac1cb8ca1e0 --- /dev/null +++ b/.riot/requirements/4132bce.txt @@ -0,0 +1,26 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/4132bce.in +# +attrs==23.2.0 +coverage[toml]==7.5.4 +gevent==23.9.1 +greenlet==3.0.3 +hypothesis==6.45.0 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 +zope-event==5.0 +zope-interface==6.4.post2 + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/.riot/requirements/41529f2.txt b/.riot/requirements/41529f2.txt new file mode 100644 index 00000000000..9560182a024 --- /dev/null +++ b/.riot/requirements/41529f2.txt @@ -0,0 +1,37 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/41529f2.in +# +aiofiles==24.1.0 +aiosqlite==0.20.0 +anyio==3.7.1 +attrs==23.2.0 +certifi==2024.6.2 +charset-normalizer==3.3.2 +coverage[toml]==7.5.4 +databases==0.8.0 +greenlet==3.0.3 +h11==0.14.0 +httpcore==1.0.5 +httpx==0.27.0 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.21.1 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +requests==2.32.3 +sniffio==1.3.1 +sortedcontainers==2.4.0 +sqlalchemy==1.4.52 +starlette==0.37.2 +typing-extensions==4.12.2 +urllib3==2.2.2 diff --git a/.riot/requirements/46e8cd7.txt b/.riot/requirements/4211915.txt similarity index 55% rename from .riot/requirements/46e8cd7.txt rename to .riot/requirements/4211915.txt index ee696cf66cf..672f0595cac 100644 --- a/.riot/requirements/46e8cd7.txt +++ b/.riot/requirements/4211915.txt @@ -2,49 +2,50 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/46e8cd7.in +# pip-compile --no-annotate .riot/requirements/4211915.in # aiobotocore==2.3.1 -aiohttp==3.9.1 +aiohttp==3.9.5 aioitertools==0.11.0 aiosignal==1.3.1 async-timeout==4.0.3 -attrs==23.1.0 +attrs==23.2.0 botocore==1.24.21 -certifi==2023.11.17 +certifi==2024.7.4 charset-normalizer==3.3.2 -coverage[toml]==7.3.4 -elastic-transport==8.11.0 -elasticsearch==8.11.1 -exceptiongroup==1.2.0 +coverage[toml]==7.5.4 +elastic-transport==8.13.1 +elasticsearch==8.14.0 +events==0.5 +exceptiongroup==1.2.1 frozenlist==1.4.1 -gevent==23.9.1 +gevent==24.2.1 greenlet==3.0.3 hypothesis==6.45.0 -idna==3.6 +idna==3.7 iniconfig==2.0.0 jmespath==1.0.1 mock==5.1.0 -multidict==6.0.4 -opensearch-py==2.4.2 +multidict==6.0.5 +opensearch-py==2.6.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 +packaging==24.1 +pluggy==1.5.0 pynamodb==5.5.1 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -python-dateutil==2.8.2 -requests==2.31.0 +python-dateutil==2.9.0.post0 +requests==2.32.3 six==1.16.0 sortedcontainers==2.4.0 tomli==2.0.1 -urllib3==1.26.18 +urllib3==1.26.19 wrapt==1.16.0 yarl==1.9.4 zope-event==5.0 -zope-interface==6.1 +zope-interface==6.4.post2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/479c504.txt b/.riot/requirements/4334c5c.txt similarity index 51% rename from .riot/requirements/479c504.txt rename to .riot/requirements/4334c5c.txt index 6b89e7f3a6b..3bdf66ee85b 100644 --- a/.riot/requirements/479c504.txt +++ b/.riot/requirements/4334c5c.txt @@ -2,71 +2,71 @@ # This file is autogenerated by pip-compile with Python 3.8 # by the following command: # -# pip-compile --no-annotate .riot/requirements/479c504.in +# pip-compile --no-annotate .riot/requirements/4334c5c.in # -annotated-types==0.6.0 -attrs==23.1.0 -aws-sam-translator==1.82.0 -aws-xray-sdk==2.12.1 +annotated-types==0.7.0 +attrs==23.2.0 +aws-sam-translator==1.89.0 +aws-xray-sdk==2.14.0 boto==2.49.0 -boto3==1.34.6 -botocore==1.34.6 -certifi==2023.11.17 +boto3==1.34.139 +botocore==1.34.139 +certifi==2024.7.4 cffi==1.16.0 cfn-lint==0.53.1 charset-normalizer==3.3.2 -coverage[toml]==7.3.4 -cryptography==41.0.7 -docker==7.0.0 +coverage[toml]==7.5.4 +cryptography==42.0.8 +docker==7.1.0 ecdsa==0.14.1 -exceptiongroup==1.2.0 +exceptiongroup==1.2.1 hypothesis==6.45.0 idna==2.10 -importlib-metadata==7.0.0 +importlib-metadata==8.0.0 iniconfig==2.0.0 jinja2==2.11.3 jmespath==1.0.1 -jsondiff==2.0.0 +jsondiff==2.1.1 jsonpatch==1.33 -jsonpointer==2.4 +jsonpointer==3.0.0 jsonschema==3.2.0 junit-xml==1.9 markupsafe==1.1.1 mock==5.1.0 -more-itertools==10.1.0 +more-itertools==10.3.0 moto==1.3.16 networkx==2.8.8 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pyasn1==0.5.1 -pycparser==2.21 -pydantic==2.5.2 -pydantic-core==2.14.5 +packaging==24.1 +pluggy==1.5.0 +pyasn1==0.6.0 +pycparser==2.22 +pydantic==2.8.2 +pydantic-core==2.20.1 pynamodb==5.5.1 pyrsistent==0.20.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 python-jose[cryptography]==3.3.0 -pytz==2023.3.post1 +pytz==2024.1 pyyaml==6.0.1 -requests==2.31.0 -responses==0.24.1 +requests==2.32.3 +responses==0.25.3 rsa==4.9 -s3transfer==0.10.0 +s3transfer==0.10.2 six==1.16.0 sortedcontainers==2.4.0 sshpubkeys==3.3.1 tomli==2.0.1 -typing-extensions==4.9.0 -urllib3==1.26.18 +typing-extensions==4.12.2 +urllib3==1.26.19 werkzeug==2.1.2 wrapt==1.16.0 xmltodict==0.13.0 -zipp==3.17.0 +zipp==3.19.2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/481655f.txt b/.riot/requirements/481655f.txt new file mode 100644 index 00000000000..602d536b99f --- /dev/null +++ b/.riot/requirements/481655f.txt @@ -0,0 +1,38 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/481655f.in +# +asn1crypto==1.5.1 +attrs==23.2.0 +certifi==2024.6.2 +cffi==1.16.0 +charset-normalizer==3.3.2 +coverage[toml]==7.5.4 +cryptography==38.0.4 +filelock==3.15.4 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +platformdirs==4.2.2 +pluggy==1.5.0 +pycparser==2.22 +pyjwt==2.8.0 +pyopenssl==23.2.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +pytz==2024.1 +requests==2.32.3 +responses==0.16.0 +six==1.16.0 +snowflake-connector-python==3.11.0 +sortedcontainers==2.4.0 +tomlkit==0.12.5 +typing-extensions==4.12.2 +urllib3==2.2.2 diff --git a/.riot/requirements/62ba76c.txt b/.riot/requirements/489529d.txt similarity index 80% rename from .riot/requirements/62ba76c.txt rename to .riot/requirements/489529d.txt index 0062fa1fabb..9e7917f0fe2 100644 --- a/.riot/requirements/62ba76c.txt +++ b/.riot/requirements/489529d.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/62ba76c.in +# pip-compile --allow-unsafe --no-annotate .riot/requirements/489529d.in # ai21==2.9.2 ai21-tokenizer==0.11.2 @@ -12,11 +12,11 @@ annotated-types==0.7.0 anthropic==0.31.2 anyio==4.4.0 attrs==23.2.0 -boto3==1.34.145 -botocore==1.34.145 +boto3==1.34.51 +botocore==1.34.51 certifi==2024.7.4 charset-normalizer==3.3.2 -cohere==5.6.1 +cohere==5.6.2 coverage[toml]==7.6.0 dataclasses-json==0.6.7 defusedxml==0.7.1 @@ -31,7 +31,7 @@ h11==0.14.0 httpcore==1.0.5 httpx==0.27.0 httpx-sse==0.4.0 -huggingface-hub==0.24.0 +huggingface-hub==0.24.2 hypothesis==6.45.0 idna==3.7 iniconfig==2.0.0 @@ -45,34 +45,35 @@ langchain-aws==0.1.6 langchain-cohere==0.1.8 langchain-core==0.2.0 langchain-openai==0.1.7 -langchain-pinecone==0.1.2 +langchain-pinecone==0.1.3 langchain-text-splitters==0.2.1 -langsmith==0.1.92 +langsmith==0.1.93 marshmallow==3.21.3 mock==5.1.0 multidict==6.0.5 mypy-extensions==1.0.0 -numexpr==2.10.1 +numexpr==2.8.5 numpy==1.26.4 -openai==1.35.15 +openai==1.37.0 opentracing==2.4.0 orjson==3.10.6 packaging==23.2 parameterized==0.9.0 -pinecone-client==4.1.2 +pinecone-client==5.0.0 +pinecone-plugin-inference==1.0.2 pinecone-plugin-interface==0.0.7 pluggy==1.5.0 psutil==6.0.0 pydantic==2.8.2 pydantic-core==2.20.1 -pytest==8.2.2 +pytest==8.3.2 pytest-asyncio==0.21.1 pytest-cov==5.0.0 pytest-mock==3.14.0 -pytest-randomly==3.15.0 +pytest-randomly==3.10.1 python-dateutil==2.9.0.post0 pyyaml==6.0.1 -regex==2024.5.15 +regex==2024.7.24 requests==2.32.3 s3transfer==0.10.2 sentencepiece==0.2.0 @@ -87,7 +88,7 @@ tqdm==4.66.4 types-requests==2.32.0.20240712 typing-extensions==4.12.2 typing-inspect==0.9.0 -urllib3==2.2.2 +urllib3==2.0.7 vcrpy==5.1.0 wrapt==1.16.0 yarl==1.9.4 diff --git a/.riot/requirements/4920d3f.txt b/.riot/requirements/4920d3f.txt new file mode 100644 index 00000000000..96d77a0ab4d --- /dev/null +++ b/.riot/requirements/4920d3f.txt @@ -0,0 +1,30 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/4920d3f.in +# +aiohttp==3.9.5 +aiohttp-jinja2==1.6 +aiosignal==1.3.1 +attrs==23.2.0 +coverage[toml]==7.5.4 +frozenlist==1.4.1 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +jinja2==3.1.4 +markupsafe==2.1.5 +mock==5.1.0 +multidict==6.0.5 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-aiohttp==1.0.5 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 +yarl==1.9.4 diff --git a/.riot/requirements/9886044.txt b/.riot/requirements/4c49dba.txt similarity index 50% rename from .riot/requirements/9886044.txt rename to .riot/requirements/4c49dba.txt index 508cc682b1d..62e806586ea 100644 --- a/.riot/requirements/9886044.txt +++ b/.riot/requirements/4c49dba.txt @@ -2,31 +2,31 @@ # This file is autogenerated by pip-compile with Python 3.9 # by the following command: # -# pip-compile --no-annotate .riot/requirements/9886044.in +# pip-compile --no-annotate .riot/requirements/4c49dba.in # -aiohttp==3.9.1 +aiohttp==3.9.5 aiosignal==1.3.1 async-timeout==4.0.3 -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 frozenlist==1.4.1 hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.0 +idna==3.7 +importlib-metadata==8.0.0 iniconfig==2.0.0 mock==5.1.0 -multidict==6.0.4 +multidict==6.0.5 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 pytest-aiohttp==1.0.5 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 tomli==2.0.1 yarl==1.9.4 -zipp==3.17.0 +zipp==3.19.2 diff --git a/.riot/requirements/4de07e7.txt b/.riot/requirements/4de07e7.txt new file mode 100644 index 00000000000..5263f0bd9bb --- /dev/null +++ b/.riot/requirements/4de07e7.txt @@ -0,0 +1,46 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/4de07e7.in +# +attrs==23.2.0 +certifi==2024.6.2 +charset-normalizer==2.1.1 +click==8.1.7 +coverage[toml]==7.5.4 +deprecated==1.2.14 +flask==2.1.3 +gevent==24.2.1 +greenlet==3.0.3 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +itsdangerous==2.2.0 +jinja2==3.1.4 +markupsafe==2.0.1 +mock==5.1.0 +opentelemetry-api==1.15.0 +opentelemetry-instrumentation==0.37b0 +opentelemetry-instrumentation-flask==0.37b0 +opentelemetry-instrumentation-wsgi==0.37b0 +opentelemetry-semantic-conventions==0.37b0 +opentelemetry-util-http==0.37b0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.21.1 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +requests==2.28.1 +sortedcontainers==2.4.0 +urllib3==1.26.19 +werkzeug==2.1.2 +wrapt==1.16.0 +zope-event==5.0 +zope-interface==6.4.post2 + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/.riot/requirements/17141ca.txt b/.riot/requirements/4e87dd9.txt similarity index 70% rename from .riot/requirements/17141ca.txt rename to .riot/requirements/4e87dd9.txt index e6140c614fd..c7f4348ce95 100644 --- a/.riot/requirements/17141ca.txt +++ b/.riot/requirements/4e87dd9.txt @@ -2,11 +2,11 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/17141ca.in +# pip-compile --no-annotate .riot/requirements/4e87dd9.in # attrs==23.2.0 -coverage[toml]==7.5.1 -exceptiongroup==1.2.1 +coverage[toml]==7.6.0 +exceptiongroup==1.2.2 gevent==24.2.1 greenlet==3.0.3 httpretty==1.1.4 @@ -14,11 +14,11 @@ hypothesis==6.45.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==24.0 +packaging==24.1 pluggy==1.5.0 -pyfakefs==5.5.0 -pytest==8.2.1 -pytest-asyncio==0.21.2 +pyfakefs==5.6.0 +pytest==8.2.2 +pytest-asyncio==0.23.7 pytest-cov==5.0.0 pytest-mock==3.14.0 pytest-randomly==3.15.0 @@ -26,7 +26,7 @@ python-json-logger==2.0.7 sortedcontainers==2.4.0 tomli==2.0.1 zope-event==5.0 -zope-interface==6.4 +zope-interface==6.4.post2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/385eb37.txt b/.riot/requirements/4f8a3a1.txt similarity index 78% rename from .riot/requirements/385eb37.txt rename to .riot/requirements/4f8a3a1.txt index d70d355ee32..95ec5b6f2c7 100644 --- a/.riot/requirements/385eb37.txt +++ b/.riot/requirements/4f8a3a1.txt @@ -2,30 +2,30 @@ # This file is autogenerated by pip-compile with Python 3.7 # by the following command: # -# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/385eb37.in +# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/4f8a3a1.in # aiohttp==3.8.6 aiohttp-jinja2==1.5.1 aiosignal==1.3.1 async-timeout==4.0.3 asynctest==0.13.0 -attrs==23.1.0 +attrs==23.2.0 charset-normalizer==3.3.2 coverage[toml]==7.2.7 -exceptiongroup==1.2.0 +exceptiongroup==1.2.1 frozenlist==1.3.3 hypothesis==6.45.0 -idna==3.6 +idna==3.7 importlib-metadata==6.7.0 iniconfig==2.0.0 -jinja2==3.1.2 -markupsafe==2.1.3 +jinja2==3.1.4 +markupsafe==2.1.5 mock==5.1.0 -multidict==6.0.4 +multidict==6.0.5 opentracing==2.4.0 -packaging==23.2 +packaging==24.0 pluggy==1.2.0 -pytest==7.4.3 +pytest==7.4.4 pytest-aiohttp==1.0.5 pytest-asyncio==0.21.1 pytest-cov==4.1.0 diff --git a/.riot/requirements/f20bd15.txt b/.riot/requirements/50d0377.txt similarity index 93% rename from .riot/requirements/f20bd15.txt rename to .riot/requirements/50d0377.txt index c4e39d2e7ce..0c69ed31b07 100644 --- a/.riot/requirements/f20bd15.txt +++ b/.riot/requirements/50d0377.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/f20bd15.in +# pip-compile --no-annotate .riot/requirements/50d0377.in # aiosqlite==0.17.0 annotated-types==0.7.0 diff --git a/.riot/requirements/1b0c4c1.txt b/.riot/requirements/512bff3.txt similarity index 53% rename from .riot/requirements/1b0c4c1.txt rename to .riot/requirements/512bff3.txt index 6208dad06ef..ea5e5ca7090 100644 --- a/.riot/requirements/1b0c4c1.txt +++ b/.riot/requirements/512bff3.txt @@ -2,52 +2,53 @@ # This file is autogenerated by pip-compile with Python 3.9 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1b0c4c1.in +# pip-compile --no-annotate .riot/requirements/512bff3.in # aiobotocore==2.3.1 -aiohttp==3.9.1 +aiohttp==3.9.5 aioitertools==0.11.0 aiosignal==1.3.1 async-timeout==4.0.3 -attrs==23.1.0 +attrs==23.2.0 botocore==1.24.21 -certifi==2023.11.17 +certifi==2024.7.4 charset-normalizer==3.3.2 -coverage[toml]==7.3.4 -elastic-transport==8.11.0 -elasticsearch==8.11.1 -exceptiongroup==1.2.0 +coverage[toml]==7.5.4 +elastic-transport==8.13.1 +elasticsearch==8.14.0 +events==0.5 +exceptiongroup==1.2.1 frozenlist==1.4.1 gevent==21.1.2 greenlet==1.1.3.post0 hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.0 +idna==3.7 +importlib-metadata==8.0.0 iniconfig==2.0.0 jmespath==1.0.1 mock==5.1.0 -multidict==6.0.4 -opensearch-py==2.4.2 +multidict==6.0.5 +opensearch-py==2.6.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 +packaging==24.1 +pluggy==1.5.0 pynamodb==5.5.1 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -python-dateutil==2.8.2 -requests==2.31.0 +python-dateutil==2.9.0.post0 +requests==2.32.3 six==1.16.0 sortedcontainers==2.4.0 tomli==2.0.1 -typing-extensions==4.9.0 -urllib3==1.26.18 +typing-extensions==4.12.2 +urllib3==1.26.19 wrapt==1.16.0 yarl==1.9.4 -zipp==3.17.0 +zipp==3.19.2 zope-event==5.0 -zope-interface==6.1 +zope-interface==6.4.post2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/1629f19.txt b/.riot/requirements/51e2096.txt similarity index 57% rename from .riot/requirements/1629f19.txt rename to .riot/requirements/51e2096.txt index b47a87edc15..719f5b93487 100644 --- a/.riot/requirements/1629f19.txt +++ b/.riot/requirements/51e2096.txt @@ -2,19 +2,19 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1629f19.in +# pip-compile --no-annotate .riot/requirements/51e2096.in # -attrs==23.1.0 -coverage[toml]==7.3.4 +attrs==23.2.0 +coverage[toml]==7.5.4 hypothesis==6.45.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 redis==3.0.1 redis-py-cluster==2.0.0 diff --git a/.riot/requirements/51f5382.txt b/.riot/requirements/51f5382.txt new file mode 100644 index 00000000000..a738296d606 --- /dev/null +++ b/.riot/requirements/51f5382.txt @@ -0,0 +1,48 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/51f5382.in +# +aiobotocore==2.3.1 +aiohttp==3.9.5 +aioitertools==0.11.0 +aiosignal==1.3.1 +attrs==23.2.0 +botocore==1.24.21 +certifi==2024.7.4 +charset-normalizer==3.3.2 +coverage[toml]==7.5.4 +elastic-transport==8.13.1 +elasticsearch==8.14.0 +events==0.5 +frozenlist==1.4.1 +gevent==24.2.1 +greenlet==3.0.3 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +jmespath==1.0.1 +mock==5.1.0 +multidict==6.0.5 +opensearch-py==2.6.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pynamodb==5.5.1 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +python-dateutil==2.9.0.post0 +requests==2.32.3 +six==1.16.0 +sortedcontainers==2.4.0 +urllib3==1.26.19 +wrapt==1.16.0 +yarl==1.9.4 +zope-event==5.0 +zope-interface==6.4.post2 + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/.riot/requirements/59f93d3.txt b/.riot/requirements/59f93d3.txt new file mode 100644 index 00000000000..7ae946cace8 --- /dev/null +++ b/.riot/requirements/59f93d3.txt @@ -0,0 +1,45 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/59f93d3.in +# +asgiref==3.8.1 +attrs==23.2.0 +certifi==2024.6.2 +charset-normalizer==2.1.1 +click==7.1.2 +coverage[toml]==7.5.4 +flask==1.1.4 +gevent==24.2.1 +greenlet==3.0.3 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +itsdangerous==1.1.0 +jinja2==2.11.3 +markupsafe==2.0.1 +mock==5.1.0 +opentelemetry-api==1.0.0 +opentelemetry-instrumentation==0.19b0 +opentelemetry-instrumentation-flask==0.19b0 +opentelemetry-instrumentation-wsgi==0.19b0 +opentelemetry-util-http==0.19b0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.21.1 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +requests==2.28.1 +sortedcontainers==2.4.0 +urllib3==1.26.19 +werkzeug==1.0.1 +wrapt==1.16.0 +zope-event==5.0 +zope-interface==6.4.post2 + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/.riot/requirements/7a5d8b0.txt b/.riot/requirements/5b82761.txt similarity index 50% rename from .riot/requirements/7a5d8b0.txt rename to .riot/requirements/5b82761.txt index ff6ae34f10f..ecf5c058142 100644 --- a/.riot/requirements/7a5d8b0.txt +++ b/.riot/requirements/5b82761.txt @@ -2,24 +2,24 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/7a5d8b0.in +# pip-compile --no-annotate .riot/requirements/5b82761.in # attrs==23.2.0 -coverage[toml]==7.4.2 -exceptiongroup==1.2.0 -googleapis-common-protos==1.62.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 +googleapis-common-protos==1.63.2 grpcio==1.42.0 hypothesis==6.45.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.4.0 -protobuf==4.25.3 -pytest==8.0.1 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +protobuf==5.27.2 +pytest==8.2.2 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 six==1.16.0 sortedcontainers==2.4.0 diff --git a/.riot/requirements/1bb5be8.txt b/.riot/requirements/5baaec1.txt similarity index 66% rename from .riot/requirements/1bb5be8.txt rename to .riot/requirements/5baaec1.txt index 0cf613fc4e8..1082f83a517 100644 --- a/.riot/requirements/1bb5be8.txt +++ b/.riot/requirements/5baaec1.txt @@ -2,33 +2,33 @@ # This file is autogenerated by pip-compile with Python 3.9 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1bb5be8.in +# pip-compile --no-annotate .riot/requirements/5baaec1.in # attrs==23.2.0 -coverage[toml]==7.5.1 -exceptiongroup==1.2.1 +coverage[toml]==7.6.0 +exceptiongroup==1.2.2 gevent==24.2.1 greenlet==3.0.3 httpretty==1.1.4 hypothesis==6.45.0 -importlib-metadata==7.1.0 +importlib-metadata==8.0.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==24.0 +packaging==24.1 pluggy==1.5.0 -pyfakefs==5.5.0 -pytest==8.2.1 -pytest-asyncio==0.21.2 +pyfakefs==5.6.0 +pytest==8.2.2 +pytest-asyncio==0.23.7 pytest-cov==5.0.0 pytest-mock==3.14.0 pytest-randomly==3.15.0 python-json-logger==2.0.7 sortedcontainers==2.4.0 tomli==2.0.1 -zipp==3.18.2 +zipp==3.19.2 zope-event==5.0 -zope-interface==6.4 +zope-interface==6.4.post2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/5c0475c.txt b/.riot/requirements/5c0475c.txt new file mode 100644 index 00000000000..e57d30b0c6c --- /dev/null +++ b/.riot/requirements/5c0475c.txt @@ -0,0 +1,37 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/5c0475c.in +# +attrs==23.2.0 +certifi==2024.7.4 +charset-normalizer==3.3.2 +click==7.1.2 +coverage[toml]==7.6.0 +deprecated==1.2.14 +flask==1.1.4 +gunicorn==22.0.0 +httpretty==1.0.5 +hypothesis==6.45.0 +idna==3.7 +importlib-metadata==7.0.0 +iniconfig==2.0.0 +itsdangerous==1.1.0 +jinja2==2.11.3 +markupsafe==1.1.1 +mock==5.1.0 +opentelemetry-api==1.24.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.3.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +requests==2.32.3 +sortedcontainers==2.4.0 +urllib3==2.2.2 +werkzeug==1.0.1 +wrapt==1.16.0 +zipp==3.19.2 diff --git a/.riot/requirements/5c057b1.txt b/.riot/requirements/5c057b1.txt deleted file mode 100644 index 45a4b0df1e3..00000000000 --- a/.riot/requirements/5c057b1.txt +++ /dev/null @@ -1,53 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/5c057b1.in -# -annotated-types==0.6.0 -anyio==3.7.1 -attrs==23.1.0 -certifi==2023.11.17 -coverage[toml]==7.3.4 -distro==1.8.0 -exceptiongroup==1.2.0 -h11==0.14.0 -httpcore==1.0.2 -httpx==0.26.0 -hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.0 -iniconfig==2.0.0 -mock==5.1.0 -multidict==6.0.4 -numpy==1.26.2 -openai[datalib,embeddings]==1.1.1 -opentracing==2.4.0 -packaging==23.2 -pandas==2.1.4 -pandas-stubs==2.1.4.231218 -pillow==10.1.0 -pluggy==1.3.0 -pydantic==2.5.2 -pydantic-core==2.14.5 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -python-dateutil==2.8.2 -pytz==2023.3.post1 -pyyaml==6.0.1 -six==1.16.0 -sniffio==1.3.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -tqdm==4.66.1 -types-pytz==2023.3.1.1 -typing-extensions==4.9.0 -tzdata==2023.3 -urllib3==1.26.18 -vcrpy==4.2.1 -wrapt==1.16.0 -yarl==1.9.4 -zipp==3.17.0 diff --git a/.riot/requirements/e9958eb.txt b/.riot/requirements/5da4fd8.txt similarity index 69% rename from .riot/requirements/e9958eb.txt rename to .riot/requirements/5da4fd8.txt index 6d04bb99ccc..a1c5ebc9a1c 100644 --- a/.riot/requirements/e9958eb.txt +++ b/.riot/requirements/5da4fd8.txt @@ -2,13 +2,13 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/e9958eb.in +# pip-compile --no-annotate .riot/requirements/5da4fd8.in # annotated-types==0.7.0 -anyio==4.3.0 +anyio==4.4.0 attrs==23.2.0 -certifi==2024.2.2 -coverage[toml]==7.5.1 +certifi==2024.7.4 +coverage[toml]==7.6.0 distro==1.9.0 h11==0.14.0 httpcore==1.0.5 @@ -18,17 +18,17 @@ idna==3.7 iniconfig==2.0.0 mock==5.1.0 multidict==6.0.5 -numpy==1.26.4 +numpy==2.0.0 openai[datalib,embeddings]==1.30.1 opentracing==2.4.0 -packaging==24.0 +packaging==24.1 pandas==2.2.2 -pandas-stubs==2.2.2.240514 -pillow==10.3.0 +pandas-stubs==2.2.2.240603 +pillow==9.5.0 pluggy==1.5.0 -pydantic==2.7.1 -pydantic-core==2.18.2 -pytest==8.2.1 +pydantic==2.8.2 +pydantic-core==2.20.1 +pytest==8.2.2 pytest-asyncio==0.21.1 pytest-cov==5.0.0 pytest-mock==3.14.0 @@ -41,9 +41,9 @@ sniffio==1.3.1 sortedcontainers==2.4.0 tqdm==4.66.4 types-pytz==2024.1.0.20240417 -typing-extensions==4.11.0 +typing-extensions==4.12.2 tzdata==2024.1 -urllib3==1.26.18 +urllib3==1.26.19 vcrpy==4.2.1 wrapt==1.16.0 yarl==1.9.4 diff --git a/.riot/requirements/11971ed.txt b/.riot/requirements/5ff3018.txt similarity index 51% rename from .riot/requirements/11971ed.txt rename to .riot/requirements/5ff3018.txt index dc66e7346db..f1d17983a83 100644 --- a/.riot/requirements/11971ed.txt +++ b/.riot/requirements/5ff3018.txt @@ -2,82 +2,77 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/11971ed.in +# pip-compile --no-annotate .riot/requirements/5ff3018.in # -annotated-types==0.6.0 +annotated-types==0.7.0 attrs==23.2.0 -aws-sam-translator==1.85.0 -aws-xray-sdk==2.12.1 +aws-sam-translator==1.89.0 +aws-xray-sdk==2.14.0 boto3==1.34.49 botocore==1.34.49 -certifi==2024.2.2 +certifi==2024.7.4 cffi==1.16.0 -cfn-lint==0.85.2 +cfn-lint==1.7.0 charset-normalizer==3.3.2 -coverage[toml]==7.4.3 -cryptography==42.0.5 -docker==7.0.0 -ecdsa==0.18.0 +coverage[toml]==7.6.0 +cryptography==42.0.8 +docker==7.1.0 +ecdsa==0.19.0 graphql-core==3.2.3 hypothesis==6.45.0 -idna==3.6 +idna==3.7 iniconfig==2.0.0 -jinja2==3.1.3 +jinja2==3.1.4 jmespath==1.0.1 -jschema-to-python==1.2.3 -jsondiff==2.0.0 +jsondiff==2.1.2 jsonpatch==1.33 -jsonpickle==3.0.3 -jsonpointer==2.4 -jsonschema==4.21.1 -jsonschema-path==0.3.2 +jsonpointer==3.0.0 +jsonschema==4.23.0 +jsonschema-path==0.3.3 jsonschema-specifications==2023.12.1 -junit-xml==1.9 lazy-object-proxy==1.10.0 markupsafe==2.1.5 mock==5.1.0 moto[all]==4.2.14 mpmath==1.3.0 multidict==6.0.5 -multipart==0.2.4 -networkx==3.2.1 +multipart==0.2.5 +networkx==3.3 openapi-schema-validator==0.6.2 openapi-spec-validator==0.7.1 opentracing==2.4.0 -packaging==23.2 +packaging==24.1 pathable==0.4.3 -pbr==6.0.0 -pluggy==1.4.0 +pluggy==1.5.0 py-partiql-parser==0.5.0 -pyasn1==0.5.1 -pycparser==2.21 -pydantic==2.6.2 -pydantic-core==2.16.3 -pyparsing==3.1.1 -pytest==8.0.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pyasn1==0.6.0 +pycparser==2.22 +pydantic==2.8.2 +pydantic-core==2.20.1 +pyparsing==3.1.2 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 python-jose[cryptography]==3.3.0 pyyaml==6.0.1 -referencing==0.31.1 -regex==2023.12.25 -requests==2.31.0 -responses==0.25.0 +referencing==0.35.1 +regex==2024.5.15 +requests==2.32.3 +responses==0.25.3 rfc3339-validator==0.1.4 -rpds-py==0.18.0 +rpds-py==0.19.0 rsa==4.9 -s3transfer==0.10.0 -sarif-om==1.0.4 +s3transfer==0.10.2 six==1.16.0 sortedcontainers==2.4.0 sshpubkeys==3.3.1 -sympy==1.12 -typing-extensions==4.9.0 +sympy==1.13.0 +typing-extensions==4.12.2 urllib3==2.0.7 vcrpy==6.0.1 -werkzeug==3.0.1 +werkzeug==3.0.3 wrapt==1.16.0 xmltodict==0.13.0 yarl==1.9.4 diff --git a/.riot/requirements/9c53429.txt b/.riot/requirements/60b507f.txt similarity index 50% rename from .riot/requirements/9c53429.txt rename to .riot/requirements/60b507f.txt index 5ad185db23f..dc6c2bdb702 100644 --- a/.riot/requirements/9c53429.txt +++ b/.riot/requirements/60b507f.txt @@ -2,89 +2,84 @@ # This file is autogenerated by pip-compile with Python 3.9 # by the following command: # -# pip-compile --no-annotate .riot/requirements/9c53429.in +# pip-compile --no-annotate .riot/requirements/60b507f.in # -annotated-types==0.6.0 +annotated-types==0.7.0 attrs==23.2.0 -aws-sam-translator==1.85.0 -aws-xray-sdk==2.12.1 +aws-sam-translator==1.89.0 +aws-xray-sdk==2.14.0 boto3==1.34.49 botocore==1.34.49 -certifi==2024.2.2 +certifi==2024.7.4 cffi==1.16.0 -cfn-lint==0.85.2 +cfn-lint==1.7.0 charset-normalizer==3.3.2 -coverage[toml]==7.4.3 -cryptography==42.0.5 -docker==7.0.0 -ecdsa==0.18.0 -exceptiongroup==1.2.0 +coverage[toml]==7.6.0 +cryptography==42.0.8 +docker==7.1.0 +ecdsa==0.19.0 +exceptiongroup==1.2.2 graphql-core==3.2.3 hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.1 +idna==3.7 +importlib-metadata==8.0.0 iniconfig==2.0.0 -jinja2==3.1.3 +jinja2==3.1.4 jmespath==1.0.1 -jschema-to-python==1.2.3 -jsondiff==2.0.0 +jsondiff==2.1.2 jsonpatch==1.33 -jsonpickle==3.0.3 -jsonpointer==2.4 -jsonschema==4.21.1 -jsonschema-path==0.3.2 +jsonpointer==3.0.0 +jsonschema==4.23.0 +jsonschema-path==0.3.3 jsonschema-specifications==2023.12.1 -junit-xml==1.9 lazy-object-proxy==1.10.0 markupsafe==2.1.5 mock==5.1.0 moto[all]==4.2.14 mpmath==1.3.0 multidict==6.0.5 -multipart==0.2.4 +multipart==0.2.5 networkx==3.2.1 openapi-schema-validator==0.6.2 openapi-spec-validator==0.7.1 opentracing==2.4.0 -packaging==23.2 +packaging==24.1 pathable==0.4.3 -pbr==6.0.0 -pluggy==1.4.0 +pluggy==1.5.0 py-partiql-parser==0.5.0 -pyasn1==0.5.1 -pycparser==2.21 -pydantic==2.6.2 -pydantic-core==2.16.3 -pyparsing==3.1.1 -pytest==8.0.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pyasn1==0.6.0 +pycparser==2.22 +pydantic==2.8.2 +pydantic-core==2.20.1 +pyparsing==3.1.2 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 python-jose[cryptography]==3.3.0 pyyaml==6.0.1 -referencing==0.31.1 -regex==2023.12.25 -requests==2.31.0 -responses==0.25.0 +referencing==0.35.1 +regex==2024.5.15 +requests==2.32.3 +responses==0.25.3 rfc3339-validator==0.1.4 -rpds-py==0.18.0 +rpds-py==0.19.0 rsa==4.9 -s3transfer==0.10.0 -sarif-om==1.0.4 +s3transfer==0.10.2 six==1.16.0 sortedcontainers==2.4.0 sshpubkeys==3.3.1 -sympy==1.12 +sympy==1.13.0 tomli==2.0.1 -typing-extensions==4.9.0 -urllib3==1.26.18 +typing-extensions==4.12.2 +urllib3==1.26.19 vcrpy==6.0.1 -werkzeug==3.0.1 +werkzeug==3.0.3 wrapt==1.16.0 xmltodict==0.13.0 yarl==1.9.4 -zipp==3.17.0 +zipp==3.19.2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/86c9153.txt b/.riot/requirements/694a5dc.txt similarity index 57% rename from .riot/requirements/86c9153.txt rename to .riot/requirements/694a5dc.txt index 1a58bfcce03..8388c65c621 100644 --- a/.riot/requirements/86c9153.txt +++ b/.riot/requirements/694a5dc.txt @@ -2,19 +2,19 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/86c9153.in +# pip-compile --no-annotate .riot/requirements/694a5dc.in # -attrs==23.1.0 -coverage[toml]==7.3.4 +attrs==23.2.0 +coverage[toml]==7.5.4 hypothesis==6.45.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 redis==3.5.3 redis-py-cluster==2.1.3 diff --git a/.riot/requirements/15f5e47.txt b/.riot/requirements/6cbe0ef.txt similarity index 53% rename from .riot/requirements/15f5e47.txt rename to .riot/requirements/6cbe0ef.txt index 969689c63e3..0f697349d32 100644 --- a/.riot/requirements/15f5e47.txt +++ b/.riot/requirements/6cbe0ef.txt @@ -2,26 +2,26 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/15f5e47.in +# pip-compile --no-annotate .riot/requirements/6cbe0ef.in # -aiohttp==3.9.1 +aiohttp==3.9.5 aiosignal==1.3.1 -attrs==23.1.0 -coverage[toml]==7.3.4 +attrs==23.2.0 +coverage[toml]==7.5.4 frozenlist==1.4.1 hypothesis==6.45.0 -idna==3.6 +idna==3.7 iniconfig==2.0.0 mock==5.1.0 -multidict==6.0.4 +multidict==6.0.5 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 pytest-aiohttp==1.0.5 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 yarl==1.9.4 diff --git a/.riot/requirements/6e56629.txt b/.riot/requirements/6e56629.txt deleted file mode 100644 index b5c1370b467..00000000000 --- a/.riot/requirements/6e56629.txt +++ /dev/null @@ -1,33 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/6e56629.in -# -anyio==3.7.1 -attrs==23.1.0 -certifi==2023.11.17 -charset-normalizer==3.3.2 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 -h11==0.12.0 -httpcore==0.14.7 -httpx==0.22.0 -hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.0 -iniconfig==2.0.0 -mock==5.1.0 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -rfc3986[idna2008]==1.5.0 -sniffio==1.3.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -zipp==3.17.0 diff --git a/.riot/requirements/6ebd15f.txt b/.riot/requirements/6ebd15f.txt new file mode 100644 index 00000000000..e15eb9136da --- /dev/null +++ b/.riot/requirements/6ebd15f.txt @@ -0,0 +1,25 @@ +# +# This file is autogenerated by pip-compile with Python 3.9 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/6ebd15f.in +# +asyncpg==0.23.0 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 +hypothesis==6.45.0 +importlib-metadata==8.0.0 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.21.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 +tomli==2.0.1 +zipp==3.19.2 diff --git a/.riot/requirements/162ca82.txt b/.riot/requirements/74e07bf.txt similarity index 53% rename from .riot/requirements/162ca82.txt rename to .riot/requirements/74e07bf.txt index a9cdf5e9697..670f96c7732 100644 --- a/.riot/requirements/162ca82.txt +++ b/.riot/requirements/74e07bf.txt @@ -2,22 +2,22 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/162ca82.in +# pip-compile --no-annotate .riot/requirements/74e07bf.in # async-timeout==4.0.3 -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 hypothesis==6.45.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 redis==4.6.0 sortedcontainers==2.4.0 diff --git a/.riot/requirements/7669807.txt b/.riot/requirements/7669807.txt deleted file mode 100644 index 6b78ad2a41e..00000000000 --- a/.riot/requirements/7669807.txt +++ /dev/null @@ -1,92 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.8 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/7669807.in -# -annotated-types==0.6.0 -attrs==23.2.0 -aws-sam-translator==1.85.0 -aws-xray-sdk==2.12.1 -boto3==1.34.49 -botocore==1.34.49 -certifi==2024.2.2 -cffi==1.16.0 -cfn-lint==0.85.2 -charset-normalizer==3.3.2 -coverage[toml]==7.4.3 -cryptography==42.0.5 -docker==7.0.0 -ecdsa==0.18.0 -exceptiongroup==1.2.0 -graphql-core==3.2.3 -hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.1 -importlib-resources==6.1.1 -iniconfig==2.0.0 -jinja2==3.1.3 -jmespath==1.0.1 -jschema-to-python==1.2.3 -jsondiff==2.0.0 -jsonpatch==1.33 -jsonpickle==3.0.3 -jsonpointer==2.4 -jsonschema==4.21.1 -jsonschema-path==0.3.2 -jsonschema-specifications==2023.12.1 -junit-xml==1.9 -lazy-object-proxy==1.10.0 -markupsafe==2.1.5 -mock==5.1.0 -moto[all]==4.2.14 -mpmath==1.3.0 -multidict==6.0.5 -multipart==0.2.4 -networkx==3.1 -openapi-schema-validator==0.6.2 -openapi-spec-validator==0.7.1 -opentracing==2.4.0 -packaging==23.2 -pathable==0.4.3 -pbr==6.0.0 -pkgutil-resolve-name==1.3.10 -pluggy==1.4.0 -py-partiql-parser==0.5.0 -pyasn1==0.5.1 -pycparser==2.21 -pydantic==2.6.2 -pydantic-core==2.16.3 -pyparsing==3.1.1 -pytest==8.0.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -python-dateutil==2.8.2 -python-jose[cryptography]==3.3.0 -pyyaml==6.0.1 -referencing==0.31.1 -regex==2023.12.25 -requests==2.31.0 -responses==0.25.0 -rfc3339-validator==0.1.4 -rpds-py==0.18.0 -rsa==4.9 -s3transfer==0.10.0 -sarif-om==1.0.4 -six==1.16.0 -sortedcontainers==2.4.0 -sshpubkeys==3.3.1 -sympy==1.12 -tomli==2.0.1 -typing-extensions==4.9.0 -urllib3==1.26.18 -vcrpy==6.0.1 -werkzeug==3.0.1 -wrapt==1.16.0 -xmltodict==0.13.0 -yarl==1.9.4 -zipp==3.17.0 - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/.riot/requirements/1adb2ea.txt b/.riot/requirements/7fc374a.txt similarity index 86% rename from .riot/requirements/1adb2ea.txt rename to .riot/requirements/7fc374a.txt index 0877f6354c3..d070be0d3b7 100644 --- a/.riot/requirements/1adb2ea.txt +++ b/.riot/requirements/7fc374a.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.9 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1adb2ea.in +# pip-compile --allow-unsafe --no-annotate .riot/requirements/7fc374a.in # ai21==2.9.2 ai21-tokenizer==0.11.2 @@ -13,8 +13,8 @@ anthropic==0.31.2 anyio==4.4.0 async-timeout==4.0.3 attrs==23.2.0 -boto3==1.34.145 -botocore==1.34.145 +boto3==1.34.51 +botocore==1.34.51 certifi==2024.7.4 charset-normalizer==3.3.2 cohere==5.4.0 @@ -33,10 +33,10 @@ h11==0.14.0 httpcore==1.0.5 httpx==0.27.0 httpx-sse==0.4.0 -huggingface-hub==0.24.0 +huggingface-hub==0.24.2 hypothesis==6.45.0 idna==3.7 -importlib-metadata==8.0.0 +importlib-metadata==8.2.0 iniconfig==2.0.0 jiter==0.5.0 jmespath==1.0.1 @@ -51,12 +51,12 @@ langchain-core==0.1.52 langchain-openai==0.1.6 langchain-pinecone==0.1.0 langchain-text-splitters==0.0.2 -langsmith==0.1.92 +langsmith==0.1.93 marshmallow==3.21.3 mock==5.1.0 multidict==6.0.5 mypy-extensions==1.0.0 -numexpr==2.10.1 +numexpr==2.8.5 numpy==1.26.4 openai==1.30.3 opentracing==2.4.0 @@ -67,14 +67,14 @@ pluggy==1.5.0 psutil==6.0.0 pydantic==2.8.2 pydantic-core==2.20.1 -pytest==8.2.2 +pytest==8.3.2 pytest-asyncio==0.21.1 pytest-cov==5.0.0 pytest-mock==3.14.0 -pytest-randomly==3.15.0 +pytest-randomly==3.10.1 python-dateutil==2.9.0.post0 pyyaml==6.0.1 -regex==2024.5.15 +regex==2024.7.24 requests==2.32.3 s3transfer==0.10.2 sentencepiece==0.2.0 diff --git a/.riot/requirements/84ec59a.txt b/.riot/requirements/84ec59a.txt new file mode 100644 index 00000000000..4f74f601126 --- /dev/null +++ b/.riot/requirements/84ec59a.txt @@ -0,0 +1,53 @@ +# +# This file is autogenerated by pip-compile with Python 3.8 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/84ec59a.in +# +annotated-types==0.7.0 +anyio==3.7.1 +attrs==23.2.0 +certifi==2024.7.4 +coverage[toml]==7.6.0 +distro==1.9.0 +exceptiongroup==1.2.2 +h11==0.14.0 +httpcore==1.0.5 +httpx==0.27.0 +hypothesis==6.45.0 +idna==3.7 +importlib-metadata==8.0.0 +iniconfig==2.0.0 +mock==5.1.0 +multidict==6.0.5 +numpy==1.24.4 +openai[datalib,embeddings]==1.1.1 +opentracing==2.4.0 +packaging==24.1 +pandas==2.0.3 +pandas-stubs==2.0.3.230814 +pillow==9.5.0 +pluggy==1.5.0 +pydantic==2.8.2 +pydantic-core==2.20.1 +pytest==8.2.2 +pytest-asyncio==0.21.1 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +python-dateutil==2.9.0.post0 +pytz==2024.1 +pyyaml==6.0.1 +six==1.16.0 +sniffio==1.3.1 +sortedcontainers==2.4.0 +tomli==2.0.1 +tqdm==4.66.4 +types-pytz==2024.1.0.20240417 +typing-extensions==4.12.2 +tzdata==2024.1 +urllib3==1.26.19 +vcrpy==4.2.1 +wrapt==1.16.0 +yarl==1.9.4 +zipp==3.19.2 diff --git a/.riot/requirements/194d473.txt b/.riot/requirements/87a1fff.txt similarity index 65% rename from .riot/requirements/194d473.txt rename to .riot/requirements/87a1fff.txt index 8b03bcc82b3..29c1d482b75 100644 --- a/.riot/requirements/194d473.txt +++ b/.riot/requirements/87a1fff.txt @@ -2,35 +2,35 @@ # This file is autogenerated by pip-compile with Python 3.9 # by the following command: # -# pip-compile --no-annotate .riot/requirements/194d473.in +# pip-compile --no-annotate .riot/requirements/87a1fff.in # annotated-types==0.7.0 -anyio==4.3.0 +anyio==4.4.0 attrs==23.2.0 -certifi==2024.2.2 -coverage[toml]==7.5.1 +certifi==2024.7.4 +coverage[toml]==7.6.0 distro==1.9.0 -exceptiongroup==1.2.1 +exceptiongroup==1.2.2 h11==0.14.0 httpcore==1.0.5 httpx==0.27.0 hypothesis==6.45.0 idna==3.7 -importlib-metadata==7.1.0 +importlib-metadata==8.0.0 iniconfig==2.0.0 mock==5.1.0 multidict==6.0.5 -numpy==1.26.4 +numpy==2.0.0 openai[datalib,embeddings]==1.30.1 opentracing==2.4.0 -packaging==24.0 +packaging==24.1 pandas==2.2.2 -pandas-stubs==2.2.2.240514 -pillow==10.3.0 +pandas-stubs==2.2.2.240603 +pillow==9.5.0 pluggy==1.5.0 -pydantic==2.7.1 -pydantic-core==2.18.2 -pytest==8.2.1 +pydantic==2.8.2 +pydantic-core==2.20.1 +pytest==8.2.2 pytest-asyncio==0.21.1 pytest-cov==5.0.0 pytest-mock==3.14.0 @@ -44,10 +44,10 @@ sortedcontainers==2.4.0 tomli==2.0.1 tqdm==4.66.4 types-pytz==2024.1.0.20240417 -typing-extensions==4.11.0 +typing-extensions==4.12.2 tzdata==2024.1 -urllib3==1.26.18 +urllib3==1.26.19 vcrpy==4.2.1 wrapt==1.16.0 yarl==1.9.4 -zipp==3.18.2 +zipp==3.19.2 diff --git a/.riot/requirements/8e06425.txt b/.riot/requirements/8e06425.txt new file mode 100644 index 00000000000..2c0f45973b2 --- /dev/null +++ b/.riot/requirements/8e06425.txt @@ -0,0 +1,27 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/8e06425.in +# +aiohttp==3.9.5 +aiosignal==1.3.1 +attrs==23.2.0 +coverage[toml]==7.5.4 +frozenlist==1.4.1 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +mock==5.1.0 +multidict==6.0.5 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-aiohttp==1.0.5 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 +yarl==1.9.4 diff --git a/.riot/requirements/3304fd2.txt b/.riot/requirements/8ef4a62.txt similarity index 52% rename from .riot/requirements/3304fd2.txt rename to .riot/requirements/8ef4a62.txt index f3b2ba2ccb8..e0c2e02f3c5 100644 --- a/.riot/requirements/3304fd2.txt +++ b/.riot/requirements/8ef4a62.txt @@ -2,31 +2,31 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/3304fd2.in +# pip-compile --no-annotate .riot/requirements/8ef4a62.in # -aiohttp==3.9.1 +aiohttp==3.9.5 aiohttp-jinja2==1.5.1 aiosignal==1.3.1 async-timeout==4.0.3 -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 frozenlist==1.4.1 hypothesis==6.45.0 -idna==3.6 +idna==3.7 iniconfig==2.0.0 -jinja2==3.1.2 -markupsafe==2.1.3 +jinja2==3.1.4 +markupsafe==2.1.5 mock==5.1.0 -multidict==6.0.4 +multidict==6.0.5 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 pytest-aiohttp==1.0.5 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 tomli==2.0.1 diff --git a/.riot/requirements/8fc3285.txt b/.riot/requirements/8fc3285.txt index e68cc3a8259..e60c1d7eb76 100644 --- a/.riot/requirements/8fc3285.txt +++ b/.riot/requirements/8fc3285.txt @@ -4,66 +4,66 @@ # # pip-compile --no-annotate .riot/requirements/8fc3285.in # -annotated-types==0.6.0 -attrs==23.1.0 -aws-sam-translator==1.82.0 -aws-xray-sdk==2.12.1 +annotated-types==0.7.0 +attrs==23.2.0 +aws-sam-translator==1.89.0 +aws-xray-sdk==2.14.0 boto==2.49.0 -boto3==1.34.6 -botocore==1.34.6 -certifi==2023.11.17 +boto3==1.34.139 +botocore==1.34.139 +certifi==2024.6.2 cffi==1.16.0 cfn-lint==0.53.1 charset-normalizer==3.3.2 -coverage[toml]==7.3.4 -cryptography==41.0.7 -docker==7.0.0 +coverage[toml]==7.5.4 +cryptography==42.0.8 +docker==7.1.0 ecdsa==0.14.1 hypothesis==6.45.0 idna==2.10 iniconfig==2.0.0 jinja2==2.11.3 jmespath==1.0.1 -jsondiff==2.0.0 +jsondiff==2.1.1 jsonpatch==1.33 -jsonpointer==2.4 +jsonpointer==3.0.0 jsonschema==3.2.0 junit-xml==1.9 markupsafe==1.1.1 mock==5.1.0 -more-itertools==10.1.0 +more-itertools==10.3.0 moto==1.3.16 networkx==2.8.8 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pyasn1==0.5.1 -pycparser==2.21 -pydantic==2.5.2 -pydantic-core==2.14.5 +packaging==24.1 +pluggy==1.5.0 +pyasn1==0.6.0 +pycparser==2.22 +pydantic==2.8.0 +pydantic-core==2.20.0 pynamodb==5.5.1 pyrsistent==0.20.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 python-jose[cryptography]==3.3.0 -pytz==2023.3.post1 +pytz==2024.1 pyyaml==6.0.1 -requests==2.31.0 -responses==0.24.1 +requests==2.32.3 +responses==0.25.3 rsa==4.9 -s3transfer==0.10.0 +s3transfer==0.10.2 six==1.16.0 sortedcontainers==2.4.0 sshpubkeys==3.3.1 -typing-extensions==4.9.0 -urllib3==2.0.7 +typing-extensions==4.12.2 +urllib3==2.2.2 werkzeug==2.1.2 wrapt==1.16.0 xmltodict==0.13.0 -zipp==3.17.0 +zipp==3.19.2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/1688be1.txt b/.riot/requirements/9050f7e.txt similarity index 80% rename from .riot/requirements/1688be1.txt rename to .riot/requirements/9050f7e.txt index a642fe783f4..35b5c11a05d 100644 --- a/.riot/requirements/1688be1.txt +++ b/.riot/requirements/9050f7e.txt @@ -2,19 +2,19 @@ # This file is autogenerated by pip-compile with Python 3.7 # by the following command: # -# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/1688be1.in +# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/9050f7e.in # -attrs==23.1.0 +attrs==23.2.0 coverage[toml]==7.2.7 -exceptiongroup==1.2.0 +exceptiongroup==1.2.1 hypothesis==6.45.0 importlib-metadata==6.7.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 +packaging==24.0 pluggy==1.2.0 -pytest==7.4.3 +pytest==7.4.4 pytest-cov==4.1.0 pytest-mock==3.11.1 pytest-randomly==3.12.0 diff --git a/.riot/requirements/9232661.txt b/.riot/requirements/9232661.txt new file mode 100644 index 00000000000..184749d7813 --- /dev/null +++ b/.riot/requirements/9232661.txt @@ -0,0 +1,21 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/9232661.in +# +attrs==23.2.0 +coverage[toml]==7.5.4 +hypothesis==6.45.0 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +redis==5.0.7 +sortedcontainers==2.4.0 diff --git a/.riot/requirements/925e4fe.txt b/.riot/requirements/925e4fe.txt deleted file mode 100644 index 73beb52996a..00000000000 --- a/.riot/requirements/925e4fe.txt +++ /dev/null @@ -1,28 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/925e4fe.in -# -attrs==23.2.0 -coverage[toml]==7.4.2 -exceptiongroup==1.2.0 -googleapis-common-protos==1.62.0 -grpcio==1.34.1 -hypothesis==6.45.0 -importlib-metadata==7.0.1 -iniconfig==2.0.0 -mock==5.1.0 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.4.0 -protobuf==4.25.3 -pytest==8.0.1 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -six==1.16.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -zipp==3.17.0 diff --git a/.riot/requirements/94f0e61.txt b/.riot/requirements/94f0e61.txt deleted file mode 100644 index b4b72199f57..00000000000 --- a/.riot/requirements/94f0e61.txt +++ /dev/null @@ -1,26 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.8 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/94f0e61.in -# -async-timeout==4.0.3 -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 -hypothesis==6.45.0 -importlib-metadata==7.0.0 -iniconfig==2.0.0 -mock==5.1.0 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -redis==4.6.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -zipp==3.17.0 diff --git a/.riot/requirements/3791b2a.txt b/.riot/requirements/9af62ac.txt similarity index 53% rename from .riot/requirements/3791b2a.txt rename to .riot/requirements/9af62ac.txt index c46f79f66b7..bd1c268298f 100644 --- a/.riot/requirements/3791b2a.txt +++ b/.riot/requirements/9af62ac.txt @@ -2,26 +2,26 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/3791b2a.in +# pip-compile --no-annotate .riot/requirements/9af62ac.in # -aiohttp==3.9.1 +aiohttp==3.9.5 aiosignal==1.3.1 -attrs==23.1.0 -coverage[toml]==7.3.4 +attrs==23.2.0 +coverage[toml]==7.5.4 frozenlist==1.4.1 hypothesis==6.45.0 -idna==3.6 +idna==3.7 iniconfig==2.0.0 mock==5.1.0 -multidict==6.0.4 +multidict==6.0.5 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 pytest-aiohttp==1.0.5 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 yarl==1.9.4 diff --git a/.riot/requirements/9b18162.txt b/.riot/requirements/9b18162.txt index 95a63746b41..22ff6cdfa16 100644 --- a/.riot/requirements/9b18162.txt +++ b/.riot/requirements/9b18162.txt @@ -5,21 +5,21 @@ # pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/9b18162.in # annotated-types==0.5.0 -attrs==23.1.0 +attrs==23.2.0 aws-sam-translator==1.82.0 -aws-xray-sdk==2.12.1 +aws-xray-sdk==2.14.0 boto==2.49.0 boto3==1.33.13 botocore==1.33.13 -certifi==2023.11.17 +certifi==2024.6.2 cffi==1.15.1 cfn-lint==0.53.1 charset-normalizer==3.3.2 coverage[toml]==7.2.7 -cryptography==41.0.7 +cryptography==42.0.8 docker==6.1.3 ecdsa==0.14.1 -exceptiongroup==1.2.0 +exceptiongroup==1.2.1 hypothesis==6.45.0 idna==2.10 importlib-metadata==6.7.0 @@ -28,7 +28,7 @@ jinja2==2.11.3 jmespath==1.0.1 jsondiff==2.0.0 jsonpatch==1.33 -jsonpointer==2.4 +jsonpointer==3.0.0 jsonschema==3.2.0 junit-xml==1.9 markupsafe==1.1.1 @@ -37,21 +37,21 @@ more-itertools==9.1.0 moto==1.3.16 networkx==2.6.3 opentracing==2.4.0 -packaging==23.2 +packaging==24.0 pluggy==1.2.0 pyasn1==0.5.1 pycparser==2.21 -pydantic==2.5.2 -pydantic-core==2.14.5 +pydantic==2.5.3 +pydantic-core==2.14.6 pynamodb==5.5.1 pyrsistent==0.19.3 -pytest==7.4.3 +pytest==7.4.4 pytest-cov==4.1.0 pytest-mock==3.11.1 pytest-randomly==3.12.0 -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 python-jose[cryptography]==3.3.0 -pytz==2023.3.post1 +pytz==2024.1 pyyaml==6.0.1 requests==2.31.0 responses==0.23.3 @@ -63,7 +63,7 @@ sshpubkeys==3.3.1 tomli==2.0.1 types-pyyaml==6.0.12.12 typing-extensions==4.7.1 -urllib3==1.26.18 +urllib3==1.26.19 websocket-client==1.6.1 werkzeug==2.1.2 wrapt==1.16.0 diff --git a/.riot/requirements/9c2da11.txt b/.riot/requirements/9c2da11.txt deleted file mode 100644 index 10eb49c7f70..00000000000 --- a/.riot/requirements/9c2da11.txt +++ /dev/null @@ -1,31 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.10 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/9c2da11.in -# -anyio==3.7.1 -attrs==23.1.0 -certifi==2023.11.17 -charset-normalizer==3.3.2 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 -h11==0.12.0 -httpcore==0.14.7 -httpx==0.22.0 -hypothesis==6.45.0 -idna==3.6 -iniconfig==2.0.0 -mock==5.1.0 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -rfc3986[idna2008]==1.5.0 -sniffio==1.3.0 -sortedcontainers==2.4.0 -tomli==2.0.1 diff --git a/.riot/requirements/388495a.txt b/.riot/requirements/9c7af23.txt similarity index 86% rename from .riot/requirements/388495a.txt rename to .riot/requirements/9c7af23.txt index 17bdf19e558..31f71755082 100644 --- a/.riot/requirements/388495a.txt +++ b/.riot/requirements/9c7af23.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/388495a.in +# pip-compile --allow-unsafe --no-annotate .riot/requirements/9c7af23.in # ai21==2.9.2 ai21-tokenizer==0.11.2 @@ -12,8 +12,8 @@ annotated-types==0.7.0 anthropic==0.31.2 anyio==4.4.0 attrs==23.2.0 -boto3==1.34.145 -botocore==1.34.145 +boto3==1.34.51 +botocore==1.34.51 certifi==2024.7.4 charset-normalizer==3.3.2 cohere==5.4.0 @@ -32,7 +32,7 @@ h11==0.14.0 httpcore==1.0.5 httpx==0.27.0 httpx-sse==0.4.0 -huggingface-hub==0.24.0 +huggingface-hub==0.24.2 hypothesis==6.45.0 idna==3.7 iniconfig==2.0.0 @@ -49,12 +49,12 @@ langchain-core==0.1.52 langchain-openai==0.1.6 langchain-pinecone==0.1.0 langchain-text-splitters==0.0.2 -langsmith==0.1.92 +langsmith==0.1.93 marshmallow==3.21.3 mock==5.1.0 multidict==6.0.5 mypy-extensions==1.0.0 -numexpr==2.10.1 +numexpr==2.8.5 numpy==1.26.4 openai==1.30.3 opentracing==2.4.0 @@ -65,14 +65,14 @@ pluggy==1.5.0 psutil==6.0.0 pydantic==2.8.2 pydantic-core==2.20.1 -pytest==8.2.2 +pytest==8.3.2 pytest-asyncio==0.21.1 pytest-cov==5.0.0 pytest-mock==3.14.0 -pytest-randomly==3.15.0 +pytest-randomly==3.10.1 python-dateutil==2.9.0.post0 pyyaml==6.0.1 -regex==2024.5.15 +regex==2024.7.24 requests==2.32.3 s3transfer==0.10.2 sentencepiece==0.2.0 @@ -87,7 +87,7 @@ tqdm==4.66.4 types-requests==2.32.0.20240712 typing-extensions==4.12.2 typing-inspect==0.9.0 -urllib3==2.2.2 +urllib3==2.0.7 vcrpy==5.1.0 wrapt==1.16.0 yarl==1.9.4 diff --git a/.riot/requirements/18f8bd1.txt b/.riot/requirements/9e36105.txt similarity index 81% rename from .riot/requirements/18f8bd1.txt rename to .riot/requirements/9e36105.txt index 2b4b50abae3..0596dbe2b06 100644 --- a/.riot/requirements/18f8bd1.txt +++ b/.riot/requirements/9e36105.txt @@ -2,20 +2,20 @@ # This file is autogenerated by pip-compile with Python 3.7 # by the following command: # -# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/18f8bd1.in +# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/9e36105.in # async-timeout==4.0.3 -attrs==23.1.0 +attrs==23.2.0 coverage[toml]==7.2.7 -exceptiongroup==1.2.0 +exceptiongroup==1.2.1 hypothesis==6.45.0 importlib-metadata==6.7.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 +packaging==24.0 pluggy==1.2.0 -pytest==7.4.3 +pytest==7.4.4 pytest-asyncio==0.21.1 pytest-cov==4.1.0 pytest-mock==3.11.1 diff --git a/.riot/requirements/a273f3b.txt b/.riot/requirements/a273f3b.txt new file mode 100644 index 00000000000..c0ed98fadc8 --- /dev/null +++ b/.riot/requirements/a273f3b.txt @@ -0,0 +1,20 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/a273f3b.in +# +attrs==23.2.0 +coverage[toml]==7.5.4 +hypothesis==6.45.0 +iniconfig==2.0.0 +mock==5.1.0 +mysql-connector-python==9.0.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 diff --git a/.riot/requirements/a41adfe.txt b/.riot/requirements/a41adfe.txt new file mode 100644 index 00000000000..f85425b9b21 --- /dev/null +++ b/.riot/requirements/a41adfe.txt @@ -0,0 +1,35 @@ +# +# This file is autogenerated by pip-compile with Python 3.9 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/a41adfe.in +# +aiohttp==3.9.5 +aiohttp-jinja2==1.6 +aiosignal==1.3.1 +async-timeout==4.0.3 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 +frozenlist==1.4.1 +hypothesis==6.45.0 +idna==3.7 +importlib-metadata==8.0.0 +iniconfig==2.0.0 +jinja2==3.1.4 +markupsafe==2.1.5 +mock==5.1.0 +multidict==6.0.5 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-aiohttp==1.0.5 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 +tomli==2.0.1 +yarl==1.9.4 +zipp==3.19.2 diff --git a/.riot/requirements/a525a50.txt b/.riot/requirements/a525a50.txt deleted file mode 100644 index 7efcba0c3f2..00000000000 --- a/.riot/requirements/a525a50.txt +++ /dev/null @@ -1,28 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.8 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/a525a50.in -# -attrs==23.2.0 -coverage[toml]==7.4.2 -exceptiongroup==1.2.0 -googleapis-common-protos==1.62.0 -grpcio==1.34.1 -hypothesis==6.45.0 -importlib-metadata==7.0.1 -iniconfig==2.0.0 -mock==5.1.0 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.4.0 -protobuf==4.25.3 -pytest==8.0.1 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -six==1.16.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -zipp==3.17.0 diff --git a/.riot/requirements/abfbfa5.txt b/.riot/requirements/abfbfa5.txt index b705cf7dc6c..e3e1fcf0aa6 100644 --- a/.riot/requirements/abfbfa5.txt +++ b/.riot/requirements/abfbfa5.txt @@ -4,66 +4,66 @@ # # pip-compile --no-annotate .riot/requirements/abfbfa5.in # -annotated-types==0.6.0 -attrs==23.1.0 -aws-sam-translator==1.82.0 -aws-xray-sdk==2.12.1 +annotated-types==0.7.0 +attrs==23.2.0 +aws-sam-translator==1.89.0 +aws-xray-sdk==2.14.0 boto==2.49.0 -boto3==1.34.6 -botocore==1.34.6 -certifi==2023.11.17 +boto3==1.34.139 +botocore==1.34.139 +certifi==2024.6.2 cffi==1.16.0 cfn-lint==0.53.1 charset-normalizer==3.3.2 -coverage[toml]==7.3.4 -cryptography==41.0.7 -docker==7.0.0 +coverage[toml]==7.5.4 +cryptography==42.0.8 +docker==7.1.0 ecdsa==0.14.1 hypothesis==6.45.0 idna==2.10 iniconfig==2.0.0 jinja2==2.11.3 jmespath==1.0.1 -jsondiff==2.0.0 +jsondiff==2.1.1 jsonpatch==1.33 -jsonpointer==2.4 +jsonpointer==3.0.0 jsonschema==3.2.0 junit-xml==1.9 markupsafe==1.1.1 mock==5.1.0 -more-itertools==10.1.0 +more-itertools==10.3.0 moto==1.3.16 networkx==2.8.8 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pyasn1==0.5.1 -pycparser==2.21 -pydantic==2.5.2 -pydantic-core==2.14.5 +packaging==24.1 +pluggy==1.5.0 +pyasn1==0.6.0 +pycparser==2.22 +pydantic==2.8.0 +pydantic-core==2.20.0 pynamodb==5.5.1 pyrsistent==0.20.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 python-jose[cryptography]==3.3.0 -pytz==2023.3.post1 +pytz==2024.1 pyyaml==6.0.1 -requests==2.31.0 -responses==0.24.1 +requests==2.32.3 +responses==0.25.3 rsa==4.9 -s3transfer==0.10.0 +s3transfer==0.10.2 six==1.16.0 sortedcontainers==2.4.0 sshpubkeys==3.3.1 -typing-extensions==4.9.0 -urllib3==2.0.7 +typing-extensions==4.12.2 +urllib3==2.2.2 werkzeug==2.1.2 wrapt==1.16.0 xmltodict==0.13.0 -zipp==3.17.0 +zipp==3.19.2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/88b73aa.txt b/.riot/requirements/ad6365e.txt similarity index 81% rename from .riot/requirements/88b73aa.txt rename to .riot/requirements/ad6365e.txt index b2968c71aee..b52eb7c8f01 100644 --- a/.riot/requirements/88b73aa.txt +++ b/.riot/requirements/ad6365e.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.9 # by the following command: # -# pip-compile --no-annotate .riot/requirements/88b73aa.in +# pip-compile --allow-unsafe --no-annotate .riot/requirements/ad6365e.in # ai21==2.9.2 ai21-tokenizer==0.11.2 @@ -13,11 +13,11 @@ anthropic==0.31.2 anyio==4.4.0 async-timeout==4.0.3 attrs==23.2.0 -boto3==1.34.145 -botocore==1.34.145 +boto3==1.34.51 +botocore==1.34.51 certifi==2024.7.4 charset-normalizer==3.3.2 -cohere==5.6.1 +cohere==5.6.2 coverage[toml]==7.6.0 dataclasses-json==0.6.7 defusedxml==0.7.1 @@ -32,10 +32,10 @@ h11==0.14.0 httpcore==1.0.5 httpx==0.27.0 httpx-sse==0.4.0 -huggingface-hub==0.24.0 +huggingface-hub==0.24.2 hypothesis==6.45.0 idna==3.7 -importlib-metadata==8.0.0 +importlib-metadata==8.2.0 iniconfig==2.0.0 jiter==0.5.0 jmespath==1.0.1 @@ -47,34 +47,35 @@ langchain-aws==0.1.6 langchain-cohere==0.1.8 langchain-core==0.2.0 langchain-openai==0.1.7 -langchain-pinecone==0.1.2 +langchain-pinecone==0.1.3 langchain-text-splitters==0.2.1 -langsmith==0.1.92 +langsmith==0.1.93 marshmallow==3.21.3 mock==5.1.0 multidict==6.0.5 mypy-extensions==1.0.0 -numexpr==2.10.1 +numexpr==2.8.5 numpy==1.26.4 -openai==1.35.15 +openai==1.37.0 opentracing==2.4.0 orjson==3.10.6 packaging==23.2 parameterized==0.9.0 -pinecone-client==4.1.2 +pinecone-client==5.0.0 +pinecone-plugin-inference==1.0.2 pinecone-plugin-interface==0.0.7 pluggy==1.5.0 psutil==6.0.0 pydantic==2.8.2 pydantic-core==2.20.1 -pytest==8.2.2 +pytest==8.3.2 pytest-asyncio==0.21.1 pytest-cov==5.0.0 pytest-mock==3.14.0 -pytest-randomly==3.15.0 +pytest-randomly==3.10.1 python-dateutil==2.9.0.post0 pyyaml==6.0.1 -regex==2024.5.15 +regex==2024.7.24 requests==2.32.3 s3transfer==0.10.2 sentencepiece==0.2.0 diff --git a/.riot/requirements/97ea583.txt b/.riot/requirements/adb0290.txt similarity index 89% rename from .riot/requirements/97ea583.txt rename to .riot/requirements/adb0290.txt index ccb4bfc1ac3..9c4839f8323 100644 --- a/.riot/requirements/97ea583.txt +++ b/.riot/requirements/adb0290.txt @@ -2,13 +2,13 @@ # This file is autogenerated by pip-compile with Python 3.9 # by the following command: # -# pip-compile --no-annotate .riot/requirements/97ea583.in +# pip-compile --no-annotate .riot/requirements/adb0290.in # amqp==5.2.0 attrs==23.2.0 billiard==4.2.0 celery==5.4.0 -certifi==2024.6.2 +certifi==2024.7.4 charset-normalizer==3.3.2 click==8.1.7 click-didyoumean==0.3.1 @@ -21,7 +21,7 @@ gevent==24.2.1 greenlet==3.0.3 hypothesis==6.45.0 idna==3.7 -importlib-metadata==7.2.1 +importlib-metadata==8.0.0 iniconfig==2.0.0 kombu==5.3.7 mock==5.1.0 diff --git a/.riot/requirements/1ff4147.txt b/.riot/requirements/adec509.txt similarity index 51% rename from .riot/requirements/1ff4147.txt rename to .riot/requirements/adec509.txt index 5f19ddd2dc2..428be2a2816 100644 --- a/.riot/requirements/1ff4147.txt +++ b/.riot/requirements/adec509.txt @@ -2,24 +2,24 @@ # This file is autogenerated by pip-compile with Python 3.9 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1ff4147.in +# pip-compile --no-annotate .riot/requirements/adec509.in # -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 hypothesis==6.45.0 -importlib-metadata==7.0.0 +importlib-metadata==8.0.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 redis==3.0.1 redis-py-cluster==2.0.0 sortedcontainers==2.4.0 tomli==2.0.1 -zipp==3.17.0 +zipp==3.19.2 diff --git a/.riot/requirements/b2251c4.txt b/.riot/requirements/b2251c4.txt new file mode 100644 index 00000000000..ce5bfb57d7e --- /dev/null +++ b/.riot/requirements/b2251c4.txt @@ -0,0 +1,46 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/b2251c4.in +# +aiofiles==24.1.0 +anyio==4.4.0 +attrs==23.2.0 +certifi==2024.6.2 +charset-normalizer==3.3.2 +coverage[toml]==7.5.4 +h11==0.14.0 +html5tagger==1.3.0 +httpcore==0.16.3 +httptools==0.6.1 +httpx==0.23.3 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +mock==5.1.0 +multidict==6.0.5 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.21.1 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +requests==2.32.3 +rfc3986[idna2008]==1.5.0 +sanic==24.6.0 +sanic-routing==23.12.0 +sanic-testing==22.3.1 +sniffio==1.3.1 +sortedcontainers==2.4.0 +tracerite==1.1.1 +typing-extensions==4.12.2 +ujson==5.10.0 +urllib3==2.2.2 +uvloop==0.19.0 +websockets==10.4 + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/.riot/requirements/b29b7a2.txt b/.riot/requirements/b29b7a2.txt new file mode 100644 index 00000000000..4a8629c5f25 --- /dev/null +++ b/.riot/requirements/b29b7a2.txt @@ -0,0 +1,20 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/b29b7a2.in +# +attrs==23.2.0 +confluent-kafka==2.4.0 +coverage[toml]==7.5.4 +hypothesis==6.45.0 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 diff --git a/.riot/requirements/b56d9af.txt b/.riot/requirements/b56d9af.txt new file mode 100644 index 00000000000..9a0e93ec9c4 --- /dev/null +++ b/.riot/requirements/b56d9af.txt @@ -0,0 +1,42 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/b56d9af.in +# +attrs==23.2.0 +beautifulsoup4==4.12.3 +certifi==2024.6.2 +charset-normalizer==3.3.2 +coverage[toml]==7.5.4 +hupper==1.12.1 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pastedeploy==3.1.0 +plaster==1.1.2 +plaster-pastedeploy==1.0.1 +pluggy==1.5.0 +pserve-test-app @ file:///root/project/tests/contrib/pyramid/pserve_app +pyramid==2.0.2 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +requests==2.32.3 +sortedcontainers==2.4.0 +soupsieve==2.5 +translationstring==1.4 +urllib3==2.2.2 +venusian==3.1.0 +waitress==3.0.0 +webob==1.8.7 +webtest==3.0.0 +zope-deprecation==5.0 +zope-interface==6.4.post2 + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/.riot/requirements/b5fb73e.txt b/.riot/requirements/b5fb73e.txt new file mode 100644 index 00000000000..14ad35f08e8 --- /dev/null +++ b/.riot/requirements/b5fb73e.txt @@ -0,0 +1,35 @@ +# +# This file is autogenerated by pip-compile with Python 3.9 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/b5fb73e.in +# +aiohttp==3.9.5 +aiohttp-jinja2==1.6 +aiosignal==1.3.1 +async-timeout==4.0.3 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 +frozenlist==1.4.1 +hypothesis==6.45.0 +idna==3.7 +importlib-metadata==8.0.0 +iniconfig==2.0.0 +jinja2==3.1.4 +markupsafe==2.1.5 +mock==5.1.0 +multidict==6.0.5 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-aiohttp==1.0.5 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 +tomli==2.0.1 +yarl==1.9.4 +zipp==3.19.2 diff --git a/.riot/requirements/a4e2e30.txt b/.riot/requirements/b9941cb.txt similarity index 51% rename from .riot/requirements/a4e2e30.txt rename to .riot/requirements/b9941cb.txt index 4f88c60cc52..d1991243cb7 100644 --- a/.riot/requirements/a4e2e30.txt +++ b/.riot/requirements/b9941cb.txt @@ -2,71 +2,71 @@ # This file is autogenerated by pip-compile with Python 3.9 # by the following command: # -# pip-compile --no-annotate .riot/requirements/a4e2e30.in +# pip-compile --no-annotate .riot/requirements/b9941cb.in # -annotated-types==0.6.0 -attrs==23.1.0 -aws-sam-translator==1.82.0 -aws-xray-sdk==2.12.1 +annotated-types==0.7.0 +attrs==23.2.0 +aws-sam-translator==1.89.0 +aws-xray-sdk==2.14.0 boto==2.49.0 -boto3==1.34.6 -botocore==1.34.6 -certifi==2023.11.17 +boto3==1.34.140 +botocore==1.34.140 +certifi==2024.7.4 cffi==1.16.0 cfn-lint==0.53.1 charset-normalizer==3.3.2 -coverage[toml]==7.3.4 -cryptography==41.0.7 -docker==7.0.0 +coverage[toml]==7.5.4 +cryptography==42.0.8 +docker==7.1.0 ecdsa==0.14.1 -exceptiongroup==1.2.0 +exceptiongroup==1.2.1 hypothesis==6.45.0 idna==2.10 -importlib-metadata==7.0.0 +importlib-metadata==8.0.0 iniconfig==2.0.0 jinja2==2.11.3 jmespath==1.0.1 -jsondiff==2.0.0 +jsondiff==2.1.1 jsonpatch==1.33 -jsonpointer==2.4 +jsonpointer==3.0.0 jsonschema==3.2.0 junit-xml==1.9 markupsafe==1.1.1 mock==5.1.0 -more-itertools==10.1.0 +more-itertools==10.3.0 moto==1.3.16 networkx==2.8.8 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pyasn1==0.5.1 -pycparser==2.21 -pydantic==2.5.2 -pydantic-core==2.14.5 +packaging==24.1 +pluggy==1.5.0 +pyasn1==0.6.0 +pycparser==2.22 +pydantic==2.8.2 +pydantic-core==2.20.1 pynamodb==5.5.1 pyrsistent==0.20.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 python-jose[cryptography]==3.3.0 -pytz==2023.3.post1 +pytz==2024.1 pyyaml==6.0.1 -requests==2.31.0 -responses==0.24.1 +requests==2.32.3 +responses==0.25.3 rsa==4.9 -s3transfer==0.10.0 +s3transfer==0.10.2 six==1.16.0 sortedcontainers==2.4.0 sshpubkeys==3.3.1 tomli==2.0.1 -typing-extensions==4.9.0 -urllib3==1.26.18 +typing-extensions==4.12.2 +urllib3==1.26.19 werkzeug==2.1.2 wrapt==1.16.0 xmltodict==0.13.0 -zipp==3.17.0 +zipp==3.19.2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/baf46ab.txt b/.riot/requirements/baf46ab.txt new file mode 100644 index 00000000000..7aa767d1ec0 --- /dev/null +++ b/.riot/requirements/baf46ab.txt @@ -0,0 +1,26 @@ +# +# This file is autogenerated by pip-compile with Python 3.8 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/baf46ab.in +# +async-timeout==4.0.3 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 +hypothesis==6.45.0 +importlib-metadata==8.0.0 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +redis==4.6.0 +sortedcontainers==2.4.0 +tomli==2.0.1 +zipp==3.19.2 diff --git a/.riot/requirements/bbb3af0.txt b/.riot/requirements/bbb3af0.txt new file mode 100644 index 00000000000..b3e2bbda22e --- /dev/null +++ b/.riot/requirements/bbb3af0.txt @@ -0,0 +1,50 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/bbb3af0.in +# +amqp==5.2.0 +asgiref==3.8.1 +attrs==23.2.0 +billiard==4.2.0 +celery==5.4.0 +certifi==2024.7.4 +charset-normalizer==3.3.2 +click==8.1.7 +click-didyoumean==0.3.1 +click-plugins==1.1.1 +click-repl==0.3.0 +coverage[toml]==7.5.4 +django==5.0.6 +gevent==24.2.1 +greenlet==3.0.3 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +kombu==5.3.7 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +prompt-toolkit==3.0.47 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +python-dateutil==2.9.0.post0 +requests==2.32.3 +six==1.16.0 +sortedcontainers==2.4.0 +sqlalchemy==2.0.31 +sqlparse==0.5.0 +typing-extensions==4.12.2 +tzdata==2024.1 +urllib3==2.2.2 +vine==5.1.0 +wcwidth==0.2.13 +zope-event==5.0 +zope-interface==6.4.post2 + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/.riot/requirements/19390c2.txt b/.riot/requirements/bd14427.txt similarity index 56% rename from .riot/requirements/19390c2.txt rename to .riot/requirements/bd14427.txt index 27f2a3111aa..a919acbc021 100644 --- a/.riot/requirements/19390c2.txt +++ b/.riot/requirements/bd14427.txt @@ -2,20 +2,20 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/19390c2.in +# pip-compile --no-annotate .riot/requirements/bd14427.in # -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 hypothesis==6.45.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 redis==3.5.3 redis-py-cluster==2.1.3 diff --git a/.riot/requirements/becad20.txt b/.riot/requirements/becad20.txt new file mode 100644 index 00000000000..061f4634480 --- /dev/null +++ b/.riot/requirements/becad20.txt @@ -0,0 +1,30 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/becad20.in +# +aiohttp==3.9.5 +aiohttp-jinja2==1.5.1 +aiosignal==1.3.1 +attrs==23.2.0 +coverage[toml]==7.5.4 +frozenlist==1.4.1 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +jinja2==3.1.4 +markupsafe==2.1.5 +mock==5.1.0 +multidict==6.0.5 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-aiohttp==1.0.5 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 +yarl==1.9.4 diff --git a/.riot/requirements/beef8eb.txt b/.riot/requirements/beef8eb.txt deleted file mode 100644 index 22ffde69460..00000000000 --- a/.riot/requirements/beef8eb.txt +++ /dev/null @@ -1,64 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.8 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/beef8eb.in -# -aiohttp==3.9.1 -aiosignal==1.3.1 -async-timeout==4.0.3 -attrs==23.1.0 -certifi==2023.11.17 -charset-normalizer==3.3.2 -contourpy==1.1.1 -coverage[toml]==7.3.4 -cycler==0.12.1 -et-xmlfile==1.1.0 -exceptiongroup==1.2.0 -fonttools==4.47.0 -frozenlist==1.4.1 -hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.0 -importlib-resources==6.1.1 -iniconfig==2.0.0 -joblib==1.3.2 -kiwisolver==1.4.5 -matplotlib==3.7.4 -mock==5.1.0 -multidict==6.0.4 -numpy==1.24.4 -openai[datalib,embeddings]==0.27.2 -openpyxl==3.1.2 -opentracing==2.4.0 -packaging==23.2 -pandas==2.0.3 -pandas-stubs==2.0.3.230814 -pillow==10.1.0 -plotly==5.18.0 -pluggy==1.3.0 -pyparsing==3.1.1 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -python-dateutil==2.8.2 -pytz==2023.3.post1 -pyyaml==6.0.1 -requests==2.31.0 -scikit-learn==1.3.2 -scipy==1.10.1 -six==1.16.0 -sortedcontainers==2.4.0 -tenacity==8.2.3 -threadpoolctl==3.2.0 -tomli==2.0.1 -tqdm==4.66.1 -types-pytz==2023.3.1.1 -tzdata==2023.3 -urllib3==1.26.18 -vcrpy==4.2.1 -wrapt==1.16.0 -yarl==1.9.4 -zipp==3.17.0 diff --git a/.riot/requirements/c0ff15b.txt b/.riot/requirements/c0ff15b.txt deleted file mode 100644 index f3afe6067ba..00000000000 --- a/.riot/requirements/c0ff15b.txt +++ /dev/null @@ -1,25 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/c0ff15b.in -# -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 -hypothesis==6.45.0 -importlib-metadata==7.0.0 -iniconfig==2.0.0 -mock==5.1.0 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -psycopg==3.0.18 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -zipp==3.17.0 diff --git a/.riot/requirements/c147b37.txt b/.riot/requirements/c147b37.txt deleted file mode 100644 index 9df3a97f9e0..00000000000 --- a/.riot/requirements/c147b37.txt +++ /dev/null @@ -1,21 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/c147b37.in -# -attrs==23.1.0 -coverage[toml]==7.3.4 -hypothesis==6.45.0 -iniconfig==2.0.0 -mock==5.1.0 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -psycopg==3.0.18 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -sortedcontainers==2.4.0 diff --git a/.riot/requirements/c174fc5.txt b/.riot/requirements/c174fc5.txt deleted file mode 100644 index fe11594e0ee..00000000000 --- a/.riot/requirements/c174fc5.txt +++ /dev/null @@ -1,35 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.8 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/c174fc5.in -# -aiohttp==3.9.1 -aiohttp-jinja2==1.5.1 -aiosignal==1.3.1 -async-timeout==4.0.3 -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 -frozenlist==1.4.1 -hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.0 -iniconfig==2.0.0 -jinja2==3.1.2 -markupsafe==2.1.3 -mock==5.1.0 -multidict==6.0.4 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-aiohttp==1.0.5 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -yarl==1.9.4 -zipp==3.17.0 diff --git a/.riot/requirements/c18a3b5.txt b/.riot/requirements/c18a3b5.txt new file mode 100644 index 00000000000..4ee89490133 --- /dev/null +++ b/.riot/requirements/c18a3b5.txt @@ -0,0 +1,35 @@ +# +# This file is autogenerated by pip-compile with Python 3.9 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/c18a3b5.in +# +aiohttp==3.9.5 +aiohttp-jinja2==1.5.1 +aiosignal==1.3.1 +async-timeout==4.0.3 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 +frozenlist==1.4.1 +hypothesis==6.45.0 +idna==3.7 +importlib-metadata==8.0.0 +iniconfig==2.0.0 +jinja2==3.1.4 +markupsafe==2.1.5 +mock==5.1.0 +multidict==6.0.5 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-aiohttp==1.0.5 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 +tomli==2.0.1 +yarl==1.9.4 +zipp==3.19.2 diff --git a/.riot/requirements/c54cef3.txt b/.riot/requirements/c54cef3.txt new file mode 100644 index 00000000000..09488a21472 --- /dev/null +++ b/.riot/requirements/c54cef3.txt @@ -0,0 +1,26 @@ +# +# This file is autogenerated by pip-compile with Python 3.9 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/c54cef3.in +# +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 +hypothesis==6.45.0 +importlib-metadata==8.0.0 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +psycopg==3.2.1 +pytest==8.2.2 +pytest-asyncio==0.21.1 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 +tomli==2.0.1 +typing-extensions==4.12.2 +zipp==3.19.2 diff --git a/.riot/requirements/c72857d.txt b/.riot/requirements/c72857d.txt new file mode 100644 index 00000000000..a96c9e4ac07 --- /dev/null +++ b/.riot/requirements/c72857d.txt @@ -0,0 +1,102 @@ +# +# This file is autogenerated by pip-compile with Python 3.10 +# by the following command: +# +# pip-compile --allow-unsafe --no-annotate .riot/requirements/c72857d.in +# +ai21==2.9.2 +ai21-tokenizer==0.11.2 +aiohttp==3.9.5 +aiosignal==1.3.1 +annotated-types==0.7.0 +anthropic==0.31.2 +anyio==4.4.0 +async-timeout==4.0.3 +attrs==23.2.0 +boto3==1.34.148 +botocore==1.34.148 +certifi==2024.7.4 +charset-normalizer==3.3.2 +cohere==5.6.2 +coverage[toml]==7.6.0 +dataclasses-json==0.6.7 +defusedxml==0.7.1 +distro==1.9.0 +exceptiongroup==1.2.2 +fastavro==1.9.5 +filelock==3.15.4 +frozenlist==1.4.1 +fsspec==2024.6.1 +greenlet==3.0.3 +h11==0.14.0 +httpcore==1.0.5 +httpx==0.27.0 +httpx-sse==0.4.0 +huggingface-hub==0.24.2 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +jiter==0.5.0 +jmespath==1.0.1 +jsonpatch==1.33 +jsonpointer==3.0.0 +langchain==0.2.11 +langchain-anthropic==0.1.20 +langchain-aws==0.1.12 +langchain-cohere==0.1.9 +langchain-community==0.2.10 +langchain-core==0.2.23 +langchain-experimental==0.0.63 +langchain-openai==0.1.17 +langchain-pinecone==0.1.3 +langchain-text-splitters==0.2.2 +langsmith==0.1.93 +marshmallow==3.21.3 +mock==5.1.0 +multidict==6.0.5 +mypy-extensions==1.0.0 +numexpr==2.8.5 +numpy==1.26.4 +openai==1.37.0 +opentracing==2.4.0 +orjson==3.10.6 +packaging==24.1 +pandas==2.2.2 +parameterized==0.9.0 +pinecone-client==5.0.0 +pinecone-plugin-inference==1.0.2 +pinecone-plugin-interface==0.0.7 +pluggy==1.5.0 +psutil==6.0.0 +pydantic==2.8.2 +pydantic-core==2.20.1 +pytest==8.3.2 +pytest-asyncio==0.21.1 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.10.1 +python-dateutil==2.9.0.post0 +pytz==2024.1 +pyyaml==6.0.1 +regex==2024.7.24 +requests==2.32.3 +s3transfer==0.10.2 +sentencepiece==0.2.0 +six==1.16.0 +sniffio==1.3.1 +sortedcontainers==2.4.0 +sqlalchemy==2.0.31 +tabulate==0.9.0 +tenacity==8.5.0 +tiktoken==0.7.0 +tokenizers==0.19.1 +tomli==2.0.1 +tqdm==4.66.4 +types-requests==2.32.0.20240712 +typing-extensions==4.12.2 +typing-inspect==0.9.0 +tzdata==2024.1 +urllib3==2.2.2 +vcrpy==5.1.0 +wrapt==1.16.0 +yarl==1.9.4 diff --git a/.riot/requirements/185da79.txt b/.riot/requirements/c74f6e0.txt similarity index 68% rename from .riot/requirements/185da79.txt rename to .riot/requirements/c74f6e0.txt index b10648c8e41..05e4f0a233f 100644 --- a/.riot/requirements/185da79.txt +++ b/.riot/requirements/c74f6e0.txt @@ -2,15 +2,15 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/185da79.in +# pip-compile --no-annotate .riot/requirements/c74f6e0.in # annotated-types==0.7.0 -anyio==4.3.0 +anyio==4.4.0 attrs==23.2.0 -certifi==2024.2.2 -coverage[toml]==7.5.1 +certifi==2024.7.4 +coverage[toml]==7.6.0 distro==1.9.0 -exceptiongroup==1.2.1 +exceptiongroup==1.2.2 h11==0.14.0 httpcore==1.0.5 httpx==0.27.0 @@ -19,17 +19,17 @@ idna==3.7 iniconfig==2.0.0 mock==5.1.0 multidict==6.0.5 -numpy==1.26.4 +numpy==2.0.0 openai[datalib,embeddings]==1.30.1 opentracing==2.4.0 -packaging==24.0 +packaging==24.1 pandas==2.2.2 -pandas-stubs==2.2.2.240514 -pillow==10.3.0 +pandas-stubs==2.2.2.240603 +pillow==9.5.0 pluggy==1.5.0 -pydantic==2.7.1 -pydantic-core==2.18.2 -pytest==8.2.1 +pydantic==2.8.2 +pydantic-core==2.20.1 +pytest==8.2.2 pytest-asyncio==0.21.1 pytest-cov==5.0.0 pytest-mock==3.14.0 @@ -43,9 +43,9 @@ sortedcontainers==2.4.0 tomli==2.0.1 tqdm==4.66.4 types-pytz==2024.1.0.20240417 -typing-extensions==4.11.0 +typing-extensions==4.12.2 tzdata==2024.1 -urllib3==1.26.18 +urllib3==1.26.19 vcrpy==4.2.1 wrapt==1.16.0 yarl==1.9.4 diff --git a/.riot/requirements/181e8d2.txt b/.riot/requirements/c7b5ba5.txt similarity index 53% rename from .riot/requirements/181e8d2.txt rename to .riot/requirements/c7b5ba5.txt index 4614b6283ec..33bb64dd56a 100644 --- a/.riot/requirements/181e8d2.txt +++ b/.riot/requirements/c7b5ba5.txt @@ -2,52 +2,53 @@ # This file is autogenerated by pip-compile with Python 3.9 # by the following command: # -# pip-compile --no-annotate .riot/requirements/181e8d2.in +# pip-compile --no-annotate .riot/requirements/c7b5ba5.in # aiobotocore==2.3.1 -aiohttp==3.9.1 +aiohttp==3.9.5 aioitertools==0.11.0 aiosignal==1.3.1 async-timeout==4.0.3 -attrs==23.1.0 +attrs==23.2.0 botocore==1.24.21 -certifi==2023.11.17 +certifi==2024.7.4 charset-normalizer==3.3.2 -coverage[toml]==7.3.4 -elastic-transport==8.11.0 -elasticsearch==8.11.1 -exceptiongroup==1.2.0 +coverage[toml]==7.5.4 +elastic-transport==8.13.1 +elasticsearch==8.14.0 +events==0.5 +exceptiongroup==1.2.1 frozenlist==1.4.1 gevent==22.10.1 greenlet==1.1.3.post0 hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.0 +idna==3.7 +importlib-metadata==8.0.0 iniconfig==2.0.0 jmespath==1.0.1 mock==5.1.0 -multidict==6.0.4 -opensearch-py==2.4.2 +multidict==6.0.5 +opensearch-py==2.6.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 +packaging==24.1 +pluggy==1.5.0 pynamodb==5.5.1 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -python-dateutil==2.8.2 -requests==2.31.0 +python-dateutil==2.9.0.post0 +requests==2.32.3 six==1.16.0 sortedcontainers==2.4.0 tomli==2.0.1 -typing-extensions==4.9.0 -urllib3==1.26.18 +typing-extensions==4.12.2 +urllib3==1.26.19 wrapt==1.16.0 yarl==1.9.4 -zipp==3.17.0 +zipp==3.19.2 zope-event==5.0 -zope-interface==6.1 +zope-interface==6.4.post2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/7e898ec.txt b/.riot/requirements/c961281.txt similarity index 52% rename from .riot/requirements/7e898ec.txt rename to .riot/requirements/c961281.txt index 0840757f541..65346f6985b 100644 --- a/.riot/requirements/7e898ec.txt +++ b/.riot/requirements/c961281.txt @@ -2,20 +2,20 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/7e898ec.in +# pip-compile --no-annotate .riot/requirements/c961281.in # -attrs==23.1.0 -coverage[toml]==7.3.4 +attrs==23.2.0 +coverage[toml]==7.5.4 hypothesis==6.45.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 redis==4.6.0 sortedcontainers==2.4.0 diff --git a/.riot/requirements/6e89ec4.txt b/.riot/requirements/c9aa578.txt similarity index 54% rename from .riot/requirements/6e89ec4.txt rename to .riot/requirements/c9aa578.txt index b6b1725bed3..e9a0980680d 100644 --- a/.riot/requirements/6e89ec4.txt +++ b/.riot/requirements/c9aa578.txt @@ -2,28 +2,28 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/6e89ec4.in +# pip-compile --no-annotate .riot/requirements/c9aa578.in # -aiohttp==3.9.1 +aiohttp==3.9.5 aiosignal==1.3.1 async-timeout==4.0.3 -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 frozenlist==1.4.1 hypothesis==6.45.0 -idna==3.6 +idna==3.7 iniconfig==2.0.0 mock==5.1.0 -multidict==6.0.4 +multidict==6.0.5 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 pytest-aiohttp==1.0.5 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 tomli==2.0.1 diff --git a/.riot/requirements/cd2e4ea.txt b/.riot/requirements/cd2e4ea.txt new file mode 100644 index 00000000000..21c29f1243f --- /dev/null +++ b/.riot/requirements/cd2e4ea.txt @@ -0,0 +1,53 @@ +# +# This file is autogenerated by pip-compile with Python 3.9 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/cd2e4ea.in +# +annotated-types==0.7.0 +anyio==3.7.1 +attrs==23.2.0 +certifi==2024.7.4 +coverage[toml]==7.6.0 +distro==1.9.0 +exceptiongroup==1.2.2 +h11==0.14.0 +httpcore==1.0.5 +httpx==0.27.0 +hypothesis==6.45.0 +idna==3.7 +importlib-metadata==8.0.0 +iniconfig==2.0.0 +mock==5.1.0 +multidict==6.0.5 +numpy==2.0.0 +openai[datalib,embeddings]==1.1.1 +opentracing==2.4.0 +packaging==24.1 +pandas==2.2.2 +pandas-stubs==2.2.2.240603 +pillow==9.5.0 +pluggy==1.5.0 +pydantic==2.8.2 +pydantic-core==2.20.1 +pytest==8.2.2 +pytest-asyncio==0.21.1 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +python-dateutil==2.9.0.post0 +pytz==2024.1 +pyyaml==6.0.1 +six==1.16.0 +sniffio==1.3.1 +sortedcontainers==2.4.0 +tomli==2.0.1 +tqdm==4.66.4 +types-pytz==2024.1.0.20240417 +typing-extensions==4.12.2 +tzdata==2024.1 +urllib3==1.26.19 +vcrpy==4.2.1 +wrapt==1.16.0 +yarl==1.9.4 +zipp==3.19.2 diff --git a/.riot/requirements/1e147db.txt b/.riot/requirements/ce6cd33.txt similarity index 92% rename from .riot/requirements/1e147db.txt rename to .riot/requirements/ce6cd33.txt index 063f0e44c08..ff61eb1ddc8 100644 --- a/.riot/requirements/1e147db.txt +++ b/.riot/requirements/ce6cd33.txt @@ -2,13 +2,13 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1e147db.in +# pip-compile --no-annotate .riot/requirements/ce6cd33.in # amqp==5.2.0 attrs==23.2.0 billiard==4.2.0 celery==5.4.0 -certifi==2024.6.2 +certifi==2024.7.4 charset-normalizer==3.3.2 click==8.1.7 click-didyoumean==0.3.1 diff --git a/.riot/requirements/cea6065.txt b/.riot/requirements/cea6065.txt index 3b046941ea8..599683a499b 100644 --- a/.riot/requirements/cea6065.txt +++ b/.riot/requirements/cea6065.txt @@ -4,69 +4,69 @@ # # pip-compile --no-annotate .riot/requirements/cea6065.in # -annotated-types==0.6.0 -attrs==23.1.0 -aws-sam-translator==1.82.0 -aws-xray-sdk==2.12.1 +annotated-types==0.7.0 +attrs==23.2.0 +aws-sam-translator==1.89.0 +aws-xray-sdk==2.14.0 boto==2.49.0 -boto3==1.34.6 -botocore==1.34.6 -certifi==2023.11.17 +boto3==1.34.139 +botocore==1.34.139 +certifi==2024.6.2 cffi==1.16.0 cfn-lint==0.53.1 charset-normalizer==3.3.2 -coverage[toml]==7.3.4 -cryptography==41.0.7 -docker==7.0.0 +coverage[toml]==7.5.4 +cryptography==42.0.8 +docker==7.1.0 ecdsa==0.14.1 -exceptiongroup==1.2.0 +exceptiongroup==1.2.1 hypothesis==6.45.0 idna==2.10 -importlib-metadata==7.0.0 +importlib-metadata==8.0.0 iniconfig==2.0.0 jinja2==2.11.3 jmespath==1.0.1 -jsondiff==2.0.0 +jsondiff==2.1.1 jsonpatch==1.33 -jsonpointer==2.4 +jsonpointer==3.0.0 jsonschema==3.2.0 junit-xml==1.9 markupsafe==1.1.1 mock==5.1.0 -more-itertools==10.1.0 +more-itertools==10.3.0 moto==1.3.16 networkx==2.8.8 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pyasn1==0.5.1 -pycparser==2.21 -pydantic==2.5.2 -pydantic-core==2.14.5 +packaging==24.1 +pluggy==1.5.0 +pyasn1==0.6.0 +pycparser==2.22 +pydantic==2.8.0 +pydantic-core==2.20.0 pynamodb==5.5.1 pyrsistent==0.20.0 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 python-jose[cryptography]==3.3.0 -pytz==2023.3.post1 +pytz==2024.1 pyyaml==6.0.1 -requests==2.31.0 -responses==0.24.1 +requests==2.32.3 +responses==0.25.3 rsa==4.9 -s3transfer==0.10.0 +s3transfer==0.10.2 six==1.16.0 sortedcontainers==2.4.0 sshpubkeys==3.3.1 tomli==2.0.1 -typing-extensions==4.9.0 -urllib3==1.26.18 +typing-extensions==4.12.2 +urllib3==1.26.19 werkzeug==2.1.2 wrapt==1.16.0 xmltodict==0.13.0 -zipp==3.17.0 +zipp==3.19.2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/d1cd70d.txt b/.riot/requirements/d1cd70d.txt new file mode 100644 index 00000000000..f05440494ce --- /dev/null +++ b/.riot/requirements/d1cd70d.txt @@ -0,0 +1,100 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --allow-unsafe --no-annotate .riot/requirements/d1cd70d.in +# +ai21==2.9.2 +ai21-tokenizer==0.11.2 +aiohttp==3.9.5 +aiosignal==1.3.1 +annotated-types==0.7.0 +anthropic==0.31.2 +anyio==4.4.0 +attrs==23.2.0 +boto3==1.34.148 +botocore==1.34.148 +certifi==2024.7.4 +charset-normalizer==3.3.2 +cohere==5.6.2 +coverage[toml]==7.6.0 +dataclasses-json==0.6.7 +defusedxml==0.7.1 +distro==1.9.0 +exceptiongroup==1.2.2 +fastavro==1.9.5 +filelock==3.15.4 +frozenlist==1.4.1 +fsspec==2024.6.1 +greenlet==3.0.3 +h11==0.14.0 +httpcore==1.0.5 +httpx==0.27.0 +httpx-sse==0.4.0 +huggingface-hub==0.24.2 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +jiter==0.5.0 +jmespath==1.0.1 +jsonpatch==1.33 +jsonpointer==3.0.0 +langchain==0.2.11 +langchain-anthropic==0.1.20 +langchain-aws==0.1.12 +langchain-cohere==0.1.9 +langchain-community==0.2.10 +langchain-core==0.2.23 +langchain-experimental==0.0.63 +langchain-openai==0.1.17 +langchain-pinecone==0.1.3 +langchain-text-splitters==0.2.2 +langsmith==0.1.93 +marshmallow==3.21.3 +mock==5.1.0 +multidict==6.0.5 +mypy-extensions==1.0.0 +numexpr==2.8.5 +numpy==1.26.4 +openai==1.37.0 +opentracing==2.4.0 +orjson==3.10.6 +packaging==24.1 +pandas==2.2.2 +parameterized==0.9.0 +pinecone-client==5.0.0 +pinecone-plugin-inference==1.0.2 +pinecone-plugin-interface==0.0.7 +pluggy==1.5.0 +psutil==6.0.0 +pydantic==2.8.2 +pydantic-core==2.20.1 +pytest==8.3.2 +pytest-asyncio==0.21.1 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.10.1 +python-dateutil==2.9.0.post0 +pytz==2024.1 +pyyaml==6.0.1 +regex==2024.7.24 +requests==2.32.3 +s3transfer==0.10.2 +sentencepiece==0.2.0 +six==1.16.0 +sniffio==1.3.1 +sortedcontainers==2.4.0 +sqlalchemy==2.0.31 +tabulate==0.9.0 +tenacity==8.5.0 +tiktoken==0.7.0 +tokenizers==0.19.1 +tqdm==4.66.4 +types-requests==2.32.0.20240712 +typing-extensions==4.12.2 +typing-inspect==0.9.0 +tzdata==2024.1 +urllib3==2.2.2 +vcrpy==5.1.0 +wrapt==1.16.0 +yarl==1.9.4 diff --git a/.riot/requirements/d2b8f24.txt b/.riot/requirements/d2b8f24.txt new file mode 100644 index 00000000000..6f3b14c4a98 --- /dev/null +++ b/.riot/requirements/d2b8f24.txt @@ -0,0 +1,81 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/d2b8f24.in +# +annotated-types==0.7.0 +attrs==23.2.0 +aws-sam-translator==1.89.0 +aws-xray-sdk==2.14.0 +boto3==1.34.49 +botocore==1.34.49 +certifi==2024.7.4 +cffi==1.16.0 +cfn-lint==1.7.0 +charset-normalizer==3.3.2 +coverage[toml]==7.6.0 +cryptography==42.0.8 +docker==7.1.0 +ecdsa==0.19.0 +graphql-core==3.2.3 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +jinja2==3.1.4 +jmespath==1.0.1 +jsondiff==2.1.2 +jsonpatch==1.33 +jsonpointer==3.0.0 +jsonschema==4.23.0 +jsonschema-path==0.3.3 +jsonschema-specifications==2023.12.1 +lazy-object-proxy==1.10.0 +markupsafe==2.1.5 +mock==5.1.0 +moto[all]==4.2.14 +mpmath==1.3.0 +multidict==6.0.5 +multipart==0.2.5 +networkx==3.3 +openapi-schema-validator==0.6.2 +openapi-spec-validator==0.7.1 +opentracing==2.4.0 +packaging==24.1 +pathable==0.4.3 +pluggy==1.5.0 +py-partiql-parser==0.5.0 +pyasn1==0.6.0 +pycparser==2.22 +pydantic==2.8.2 +pydantic-core==2.20.1 +pyparsing==3.1.2 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +python-dateutil==2.9.0.post0 +python-jose[cryptography]==3.3.0 +pyyaml==6.0.1 +referencing==0.35.1 +regex==2024.5.15 +requests==2.32.3 +responses==0.25.3 +rfc3339-validator==0.1.4 +rpds-py==0.19.0 +rsa==4.9 +s3transfer==0.10.2 +six==1.16.0 +sortedcontainers==2.4.0 +sshpubkeys==3.3.1 +sympy==1.13.0 +typing-extensions==4.12.2 +urllib3==2.0.7 +vcrpy==6.0.1 +werkzeug==3.0.3 +wrapt==1.16.0 +xmltodict==0.13.0 +yarl==1.9.4 + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/.riot/requirements/1e5d4a5.txt b/.riot/requirements/d502c8f.txt similarity index 76% rename from .riot/requirements/1e5d4a5.txt rename to .riot/requirements/d502c8f.txt index 63c4b1fa20f..daa9bc31892 100644 --- a/.riot/requirements/1e5d4a5.txt +++ b/.riot/requirements/d502c8f.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.9 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1e5d4a5.in +# pip-compile --allow-unsafe --no-annotate .riot/requirements/d502c8f.in # ai21==2.9.2 ai21-tokenizer==0.11.2 @@ -13,11 +13,11 @@ anthropic==0.31.2 anyio==4.4.0 async-timeout==4.0.3 attrs==23.2.0 -boto3==1.34.145 -botocore==1.34.145 +boto3==1.34.148 +botocore==1.34.148 certifi==2024.7.4 charset-normalizer==3.3.2 -cohere==5.6.1 +cohere==5.6.2 coverage[toml]==7.6.0 dataclasses-json==0.6.7 defusedxml==0.7.1 @@ -32,53 +32,54 @@ h11==0.14.0 httpcore==1.0.5 httpx==0.27.0 httpx-sse==0.4.0 -huggingface-hub==0.24.0 +huggingface-hub==0.24.2 hypothesis==6.45.0 idna==3.7 -importlib-metadata==8.0.0 +importlib-metadata==8.2.0 iniconfig==2.0.0 jiter==0.5.0 jmespath==1.0.1 jsonpatch==1.33 jsonpointer==3.0.0 -langchain==0.2.9 +langchain==0.2.11 langchain-anthropic==0.1.20 -langchain-aws==0.1.11 +langchain-aws==0.1.12 langchain-cohere==0.1.9 -langchain-community==0.2.7 -langchain-core==0.2.21 -langchain-experimental==0.0.62 +langchain-community==0.2.10 +langchain-core==0.2.23 +langchain-experimental==0.0.63 langchain-openai==0.1.17 -langchain-pinecone==0.1.2 +langchain-pinecone==0.1.3 langchain-text-splitters==0.2.2 -langsmith==0.1.92 +langsmith==0.1.93 marshmallow==3.21.3 mock==5.1.0 multidict==6.0.5 mypy-extensions==1.0.0 -numexpr==2.10.1 +numexpr==2.8.5 numpy==1.26.4 -openai==1.35.15 +openai==1.37.0 opentracing==2.4.0 orjson==3.10.6 packaging==24.1 pandas==2.2.2 parameterized==0.9.0 -pinecone-client==4.1.2 +pinecone-client==5.0.0 +pinecone-plugin-inference==1.0.2 pinecone-plugin-interface==0.0.7 pluggy==1.5.0 psutil==6.0.0 pydantic==2.8.2 pydantic-core==2.20.1 -pytest==8.2.2 +pytest==8.3.2 pytest-asyncio==0.21.1 pytest-cov==5.0.0 pytest-mock==3.14.0 -pytest-randomly==3.15.0 +pytest-randomly==3.10.1 python-dateutil==2.9.0.post0 pytz==2024.1 pyyaml==6.0.1 -regex==2024.5.15 +regex==2024.7.24 requests==2.32.3 s3transfer==0.10.2 sentencepiece==0.2.0 diff --git a/.riot/requirements/1614f17.txt b/.riot/requirements/d68f919.txt similarity index 81% rename from .riot/requirements/1614f17.txt rename to .riot/requirements/d68f919.txt index b6aff88a5b8..5949407b547 100644 --- a/.riot/requirements/1614f17.txt +++ b/.riot/requirements/d68f919.txt @@ -2,19 +2,19 @@ # This file is autogenerated by pip-compile with Python 3.7 # by the following command: # -# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/1614f17.in +# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/d68f919.in # attrs==23.2.0 coverage[toml]==7.2.7 -exceptiongroup==1.2.0 -googleapis-common-protos==1.62.0 +exceptiongroup==1.2.1 +googleapis-common-protos==1.63.2 grpcio==1.34.1 hypothesis==6.45.0 importlib-metadata==6.7.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 +packaging==24.0 pluggy==1.2.0 protobuf==4.24.4 pytest==7.4.4 diff --git a/.riot/requirements/19cac45.txt b/.riot/requirements/ddba314.txt similarity index 53% rename from .riot/requirements/19cac45.txt rename to .riot/requirements/ddba314.txt index 914ba541921..ee9ef750495 100644 --- a/.riot/requirements/19cac45.txt +++ b/.riot/requirements/ddba314.txt @@ -2,46 +2,47 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/19cac45.in +# pip-compile --no-annotate .riot/requirements/ddba314.in # aiobotocore==2.3.1 -aiohttp==3.9.1 +aiohttp==3.9.5 aioitertools==0.11.0 aiosignal==1.3.1 -attrs==23.1.0 +attrs==23.2.0 botocore==1.24.21 -certifi==2023.11.17 +certifi==2024.7.4 charset-normalizer==3.3.2 -coverage[toml]==7.3.4 -elastic-transport==8.11.0 -elasticsearch==8.11.1 +coverage[toml]==7.5.4 +elastic-transport==8.13.1 +elasticsearch==8.14.0 +events==0.5 frozenlist==1.4.1 -gevent==23.9.1 -greenlet==3.0.2 +gevent==24.2.1 +greenlet==3.0.3 hypothesis==6.45.0 -idna==3.6 +idna==3.7 iniconfig==2.0.0 jmespath==1.0.1 mock==5.1.0 -multidict==6.0.4 -opensearch-py==2.4.2 +multidict==6.0.5 +opensearch-py==2.6.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 +packaging==24.1 +pluggy==1.5.0 pynamodb==5.5.1 -pytest==7.4.3 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 -python-dateutil==2.8.2 -requests==2.31.0 +python-dateutil==2.9.0.post0 +requests==2.32.3 six==1.16.0 sortedcontainers==2.4.0 -urllib3==1.26.18 +urllib3==1.26.19 wrapt==1.16.0 yarl==1.9.4 zope-event==5.0 -zope-interface==6.1 +zope-interface==6.4.post2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/de6c032.txt b/.riot/requirements/de6c032.txt deleted file mode 100644 index 32c02363cfc..00000000000 --- a/.riot/requirements/de6c032.txt +++ /dev/null @@ -1,35 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.8 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/de6c032.in -# -aiohttp==3.9.1 -aiohttp-jinja2==1.6 -aiosignal==1.3.1 -async-timeout==4.0.3 -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 -frozenlist==1.4.1 -hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.0 -iniconfig==2.0.0 -jinja2==3.1.2 -markupsafe==2.1.3 -mock==5.1.0 -multidict==6.0.4 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-aiohttp==1.0.5 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -yarl==1.9.4 -zipp==3.17.0 diff --git a/.riot/requirements/5d8701b.txt b/.riot/requirements/e092ac7.txt similarity index 54% rename from .riot/requirements/5d8701b.txt rename to .riot/requirements/e092ac7.txt index 343ba4b8130..47900b99f76 100644 --- a/.riot/requirements/5d8701b.txt +++ b/.riot/requirements/e092ac7.txt @@ -2,28 +2,28 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --no-annotate .riot/requirements/5d8701b.in +# pip-compile --no-annotate .riot/requirements/e092ac7.in # -aiohttp==3.9.1 +aiohttp==3.9.5 aiosignal==1.3.1 async-timeout==4.0.3 -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 +attrs==23.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 frozenlist==1.4.1 hypothesis==6.45.0 -idna==3.6 +idna==3.7 iniconfig==2.0.0 mock==5.1.0 -multidict==6.0.4 +multidict==6.0.5 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 pytest-aiohttp==1.0.5 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 sortedcontainers==2.4.0 tomli==2.0.1 diff --git a/.riot/requirements/e2c6900.txt b/.riot/requirements/e2c6900.txt new file mode 100644 index 00000000000..f3cb21179d5 --- /dev/null +++ b/.riot/requirements/e2c6900.txt @@ -0,0 +1,33 @@ +# +# This file is autogenerated by pip-compile with Python 3.8 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/e2c6900.in +# +anyio==4.4.0 +attrs==23.2.0 +certifi==2024.6.2 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 +h11==0.14.0 +httpcore==0.16.3 +httpx==0.23.3 +hypothesis==6.45.0 +idna==3.7 +importlib-metadata==8.0.0 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.21.1 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +rfc3986[idna2008]==1.5.0 +sniffio==1.3.1 +sortedcontainers==2.4.0 +tomli==2.0.1 +typing-extensions==4.12.2 +zipp==3.19.2 diff --git a/.riot/requirements/e328453.txt b/.riot/requirements/e328453.txt deleted file mode 100644 index 18bca54055d..00000000000 --- a/.riot/requirements/e328453.txt +++ /dev/null @@ -1,23 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.10 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/e328453.in -# -attrs==23.1.0 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 -hypothesis==6.45.0 -iniconfig==2.0.0 -mock==5.1.0 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -psycopg==3.0.18 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -sortedcontainers==2.4.0 -tomli==2.0.1 diff --git a/.riot/requirements/e59b1f6.txt b/.riot/requirements/e59b1f6.txt new file mode 100644 index 00000000000..f6e3f50ff0b --- /dev/null +++ b/.riot/requirements/e59b1f6.txt @@ -0,0 +1,31 @@ +# +# This file is autogenerated by pip-compile with Python 3.10 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/e59b1f6.in +# +anyio==4.4.0 +attrs==23.2.0 +certifi==2024.6.2 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 +h11==0.14.0 +httpcore==0.16.3 +httpx==0.23.3 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.21.1 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +rfc3986[idna2008]==1.5.0 +sniffio==1.3.1 +sortedcontainers==2.4.0 +tomli==2.0.1 +typing-extensions==4.12.2 diff --git a/.riot/requirements/18e7930.txt b/.riot/requirements/e6619c9.txt similarity index 78% rename from .riot/requirements/18e7930.txt rename to .riot/requirements/e6619c9.txt index fd5bf05d3ec..d6eb30c32e2 100644 --- a/.riot/requirements/18e7930.txt +++ b/.riot/requirements/e6619c9.txt @@ -2,30 +2,30 @@ # This file is autogenerated by pip-compile with Python 3.7 # by the following command: # -# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/18e7930.in +# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/e6619c9.in # aiohttp==3.8.6 aiohttp-jinja2==1.5.1 aiosignal==1.3.1 async-timeout==4.0.3 asynctest==0.13.0 -attrs==23.1.0 +attrs==23.2.0 charset-normalizer==3.3.2 coverage[toml]==7.2.7 -exceptiongroup==1.2.0 +exceptiongroup==1.2.1 frozenlist==1.3.3 hypothesis==6.45.0 -idna==3.6 +idna==3.7 importlib-metadata==6.7.0 iniconfig==2.0.0 -jinja2==3.1.2 -markupsafe==2.1.3 +jinja2==3.1.4 +markupsafe==2.1.5 mock==5.1.0 -multidict==6.0.4 +multidict==6.0.5 opentracing==2.4.0 -packaging==23.2 +packaging==24.0 pluggy==1.2.0 -pytest==7.4.3 +pytest==7.4.4 pytest-aiohttp==1.0.5 pytest-asyncio==0.21.1 pytest-cov==4.1.0 diff --git a/.riot/requirements/1b61411.txt b/.riot/requirements/e68fea2.txt similarity index 66% rename from .riot/requirements/1b61411.txt rename to .riot/requirements/e68fea2.txt index d260abc3c79..37238bf6a05 100644 --- a/.riot/requirements/1b61411.txt +++ b/.riot/requirements/e68fea2.txt @@ -2,33 +2,33 @@ # This file is autogenerated by pip-compile with Python 3.8 # by the following command: # -# pip-compile --no-annotate .riot/requirements/1b61411.in +# pip-compile --no-annotate .riot/requirements/e68fea2.in # attrs==23.2.0 -coverage[toml]==7.5.1 -exceptiongroup==1.2.1 +coverage[toml]==7.6.0 +exceptiongroup==1.2.2 gevent==24.2.1 greenlet==3.0.3 httpretty==1.1.4 hypothesis==6.45.0 -importlib-metadata==7.1.0 +importlib-metadata==8.0.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==24.0 +packaging==24.1 pluggy==1.5.0 -pyfakefs==5.5.0 -pytest==8.2.1 -pytest-asyncio==0.21.2 +pyfakefs==5.6.0 +pytest==8.2.2 +pytest-asyncio==0.23.7 pytest-cov==5.0.0 pytest-mock==3.14.0 pytest-randomly==3.15.0 python-json-logger==2.0.7 sortedcontainers==2.4.0 tomli==2.0.1 -zipp==3.18.2 +zipp==3.19.2 zope-event==5.0 -zope-interface==6.4 +zope-interface==6.4.post2 # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/.riot/requirements/ede4798.txt b/.riot/requirements/ede4798.txt deleted file mode 100644 index c04cbe4d4b3..00000000000 --- a/.riot/requirements/ede4798.txt +++ /dev/null @@ -1,27 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.9 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/ede4798.in -# -attrs==23.2.0 -coverage[toml]==7.4.2 -exceptiongroup==1.2.0 -googleapis-common-protos==1.62.0 -grpcio==1.59.3 -hypothesis==6.45.0 -importlib-metadata==7.0.1 -iniconfig==2.0.0 -mock==5.1.0 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.4.0 -protobuf==4.25.3 -pytest==8.0.1 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -zipp==3.17.0 diff --git a/.riot/requirements/ee80c7e.txt b/.riot/requirements/ee80c7e.txt new file mode 100644 index 00000000000..ad457b400ec --- /dev/null +++ b/.riot/requirements/ee80c7e.txt @@ -0,0 +1,30 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/ee80c7e.in +# +attrs==23.2.0 +blinker==1.8.2 +cachelib==0.9.0 +click==7.1.2 +coverage[toml]==7.5.4 +flask==1.1.4 +flask-caching==2.3.0 +hypothesis==6.45.0 +iniconfig==2.0.0 +itsdangerous==1.1.0 +jinja2==2.11.3 +markupsafe==1.1.1 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +python-memcached==1.62 +redis==5.0.7 +sortedcontainers==2.4.0 +werkzeug==1.0.1 diff --git a/.riot/requirements/1bd152d.txt b/.riot/requirements/f0bc737.txt similarity index 80% rename from .riot/requirements/1bd152d.txt rename to .riot/requirements/f0bc737.txt index a706da72acc..fc4d0547279 100644 --- a/.riot/requirements/1bd152d.txt +++ b/.riot/requirements/f0bc737.txt @@ -2,24 +2,24 @@ # This file is autogenerated by pip-compile with Python 3.7 # by the following command: # -# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/1bd152d.in +# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/f0bc737.in # annotated-types==0.5.0 -attrs==23.1.0 +attrs==23.2.0 aws-sam-translator==1.82.0 -aws-xray-sdk==2.12.1 +aws-xray-sdk==2.14.0 boto==2.49.0 boto3==1.33.13 botocore==1.33.13 -certifi==2023.11.17 +certifi==2024.7.4 cffi==1.15.1 cfn-lint==0.53.1 charset-normalizer==3.3.2 coverage[toml]==7.2.7 -cryptography==41.0.7 +cryptography==42.0.8 docker==6.1.3 ecdsa==0.14.1 -exceptiongroup==1.2.0 +exceptiongroup==1.2.1 hypothesis==6.45.0 idna==2.10 importlib-metadata==6.7.0 @@ -28,7 +28,7 @@ jinja2==2.11.3 jmespath==1.0.1 jsondiff==2.0.0 jsonpatch==1.33 -jsonpointer==2.4 +jsonpointer==3.0.0 jsonschema==3.2.0 junit-xml==1.9 markupsafe==1.1.1 @@ -37,21 +37,21 @@ more-itertools==9.1.0 moto==1.3.16 networkx==2.6.3 opentracing==2.4.0 -packaging==23.2 +packaging==24.0 pluggy==1.2.0 pyasn1==0.5.1 pycparser==2.21 -pydantic==2.5.2 -pydantic-core==2.14.5 +pydantic==2.5.3 +pydantic-core==2.14.6 pynamodb==5.5.1 pyrsistent==0.19.3 -pytest==7.4.3 +pytest==7.4.4 pytest-cov==4.1.0 pytest-mock==3.11.1 pytest-randomly==3.12.0 -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 python-jose[cryptography]==3.3.0 -pytz==2023.3.post1 +pytz==2024.1 pyyaml==6.0.1 requests==2.31.0 responses==0.23.3 @@ -63,7 +63,7 @@ sshpubkeys==3.3.1 tomli==2.0.1 types-pyyaml==6.0.12.12 typing-extensions==4.7.1 -urllib3==1.26.18 +urllib3==1.26.19 websocket-client==1.6.1 werkzeug==2.1.2 wrapt==1.16.0 diff --git a/.riot/requirements/f1199a8.txt b/.riot/requirements/f1199a8.txt deleted file mode 100644 index 885e6d94631..00000000000 --- a/.riot/requirements/f1199a8.txt +++ /dev/null @@ -1,33 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.8 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/f1199a8.in -# -anyio==3.7.1 -attrs==23.1.0 -certifi==2023.11.17 -charset-normalizer==3.3.2 -coverage[toml]==7.3.4 -exceptiongroup==1.2.0 -h11==0.12.0 -httpcore==0.14.7 -httpx==0.22.0 -hypothesis==6.45.0 -idna==3.6 -importlib-metadata==7.0.0 -iniconfig==2.0.0 -mock==5.1.0 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -rfc3986[idna2008]==1.5.0 -sniffio==1.3.0 -sortedcontainers==2.4.0 -tomli==2.0.1 -zipp==3.17.0 diff --git a/.riot/requirements/f1c37b1.txt b/.riot/requirements/f1c37b1.txt new file mode 100644 index 00000000000..5fe13450a50 --- /dev/null +++ b/.riot/requirements/f1c37b1.txt @@ -0,0 +1,51 @@ +# +# This file is autogenerated by pip-compile with Python 3.10 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/f1c37b1.in +# +annotated-types==0.7.0 +anyio==3.7.1 +attrs==23.2.0 +certifi==2024.7.4 +coverage[toml]==7.6.0 +distro==1.9.0 +exceptiongroup==1.2.2 +h11==0.14.0 +httpcore==1.0.5 +httpx==0.27.0 +hypothesis==6.45.0 +idna==3.7 +iniconfig==2.0.0 +mock==5.1.0 +multidict==6.0.5 +numpy==2.0.0 +openai[datalib,embeddings]==1.1.1 +opentracing==2.4.0 +packaging==24.1 +pandas==2.2.2 +pandas-stubs==2.2.2.240603 +pillow==9.5.0 +pluggy==1.5.0 +pydantic==2.8.2 +pydantic-core==2.20.1 +pytest==8.2.2 +pytest-asyncio==0.21.1 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +python-dateutil==2.9.0.post0 +pytz==2024.1 +pyyaml==6.0.1 +six==1.16.0 +sniffio==1.3.1 +sortedcontainers==2.4.0 +tomli==2.0.1 +tqdm==4.66.4 +types-pytz==2024.1.0.20240417 +typing-extensions==4.12.2 +tzdata==2024.1 +urllib3==1.26.19 +vcrpy==4.2.1 +wrapt==1.16.0 +yarl==1.9.4 diff --git a/.riot/requirements/13a122f.txt b/.riot/requirements/f4b1bd3.txt similarity index 52% rename from .riot/requirements/13a122f.txt rename to .riot/requirements/f4b1bd3.txt index 159ede2974d..06f7e7334bd 100644 --- a/.riot/requirements/13a122f.txt +++ b/.riot/requirements/f4b1bd3.txt @@ -2,25 +2,25 @@ # This file is autogenerated by pip-compile with Python 3.8 # by the following command: # -# pip-compile --no-annotate .riot/requirements/13a122f.in +# pip-compile --no-annotate .riot/requirements/f4b1bd3.in # async-timeout==4.0.3 attrs==23.2.0 -coverage[toml]==7.4.0 -exceptiongroup==1.2.0 +coverage[toml]==7.5.4 +exceptiongroup==1.2.1 hypothesis==6.45.0 -importlib-metadata==7.0.1 +importlib-metadata==8.0.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -pytest==7.4.4 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 redis==5.0.1 sortedcontainers==2.4.0 tomli==2.0.1 -zipp==3.17.0 +zipp==3.19.2 diff --git a/.riot/requirements/f554053.txt b/.riot/requirements/f554053.txt deleted file mode 100644 index 05cb529f801..00000000000 --- a/.riot/requirements/f554053.txt +++ /dev/null @@ -1,49 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/f554053.in -# -annotated-types==0.6.0 -anyio==3.7.1 -attrs==23.1.0 -certifi==2023.11.17 -coverage[toml]==7.3.4 -distro==1.8.0 -h11==0.14.0 -httpcore==1.0.2 -httpx==0.26.0 -hypothesis==6.45.0 -idna==3.6 -iniconfig==2.0.0 -mock==5.1.0 -multidict==6.0.4 -numpy==1.26.2 -openai[datalib,embeddings]==1.1.1 -opentracing==2.4.0 -packaging==23.2 -pandas==2.1.4 -pandas-stubs==2.1.4.231218 -pillow==10.1.0 -pluggy==1.3.0 -pydantic==2.5.2 -pydantic-core==2.14.5 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -python-dateutil==2.8.2 -pytz==2023.3.post1 -pyyaml==6.0.1 -six==1.16.0 -sniffio==1.3.0 -sortedcontainers==2.4.0 -tqdm==4.66.1 -types-pytz==2023.3.1.1 -typing-extensions==4.9.0 -tzdata==2023.3 -urllib3==1.26.18 -vcrpy==4.2.1 -wrapt==1.16.0 -yarl==1.9.4 diff --git a/.riot/requirements/1eac0e3.txt b/.riot/requirements/f630df9.txt similarity index 81% rename from .riot/requirements/1eac0e3.txt rename to .riot/requirements/f630df9.txt index 024950d9a88..765af18d4c7 100644 --- a/.riot/requirements/1eac0e3.txt +++ b/.riot/requirements/f630df9.txt @@ -2,27 +2,27 @@ # This file is autogenerated by pip-compile with Python 3.7 # by the following command: # -# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/1eac0e3.in +# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/f630df9.in # aiohttp==3.8.6 aiosignal==1.3.1 async-timeout==4.0.3 asynctest==0.13.0 -attrs==23.1.0 +attrs==23.2.0 charset-normalizer==3.3.2 coverage[toml]==7.2.7 -exceptiongroup==1.2.0 +exceptiongroup==1.2.1 frozenlist==1.3.3 hypothesis==6.45.0 -idna==3.6 +idna==3.7 importlib-metadata==6.7.0 iniconfig==2.0.0 mock==5.1.0 -multidict==6.0.4 +multidict==6.0.5 opentracing==2.4.0 -packaging==23.2 +packaging==24.0 pluggy==1.2.0 -pytest==7.4.3 +pytest==7.4.4 pytest-aiohttp==1.0.5 pytest-asyncio==0.21.1 pytest-cov==4.1.0 diff --git a/.riot/requirements/f680e00.txt b/.riot/requirements/f680e00.txt deleted file mode 100644 index ca487883b7c..00000000000 --- a/.riot/requirements/f680e00.txt +++ /dev/null @@ -1,22 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile --no-annotate .riot/requirements/f680e00.in -# -attrs==23.1.0 -coverage[toml]==7.3.4 -hypothesis==6.45.0 -iniconfig==2.0.0 -mock==5.1.0 -opentracing==2.4.0 -packaging==23.2 -pluggy==1.3.0 -psycopg==3.1.16 -pytest==7.4.3 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 -pytest-randomly==3.15.0 -sortedcontainers==2.4.0 -typing-extensions==4.9.0 diff --git a/.riot/requirements/17e3783.txt b/.riot/requirements/f73b199.txt similarity index 51% rename from .riot/requirements/17e3783.txt rename to .riot/requirements/f73b199.txt index 16d3da17e0d..b03c6e3f043 100644 --- a/.riot/requirements/17e3783.txt +++ b/.riot/requirements/f73b199.txt @@ -2,23 +2,23 @@ # This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --no-annotate .riot/requirements/17e3783.in +# pip-compile --no-annotate .riot/requirements/f73b199.in # attrs==23.2.0 -coverage[toml]==7.4.2 -googleapis-common-protos==1.62.0 +coverage[toml]==7.5.4 +googleapis-common-protos==1.63.2 grpcio==1.49.1 hypothesis==6.45.0 iniconfig==2.0.0 mock==5.1.0 opentracing==2.4.0 -packaging==23.2 -pluggy==1.4.0 -protobuf==4.25.3 -pytest==8.0.1 -pytest-asyncio==0.21.1 -pytest-cov==4.1.0 -pytest-mock==3.12.0 +packaging==24.1 +pluggy==1.5.0 +protobuf==5.27.2 +pytest==8.2.2 +pytest-asyncio==0.23.7 +pytest-cov==5.0.0 +pytest-mock==3.14.0 pytest-randomly==3.15.0 six==1.16.0 sortedcontainers==2.4.0 diff --git a/.riot/requirements/1b0e657.txt b/.riot/requirements/f7c30a0.txt similarity index 69% rename from .riot/requirements/1b0e657.txt rename to .riot/requirements/f7c30a0.txt index efc4db0b9f4..39dc4709cbf 100644 --- a/.riot/requirements/1b0e657.txt +++ b/.riot/requirements/f7c30a0.txt @@ -2,49 +2,49 @@ # This file is autogenerated by pip-compile with Python 3.7 # by the following command: # -# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/1b0e657.in +# pip-compile --config=pyproject.toml --no-annotate --resolver=backtracking .riot/requirements/f7c30a0.in # annotated-types==0.5.0 anyio==3.7.1 -attrs==23.1.0 -certifi==2023.11.17 +attrs==23.2.0 +certifi==2024.7.4 coverage[toml]==7.2.7 -distro==1.8.0 -exceptiongroup==1.2.0 +distro==1.9.0 +exceptiongroup==1.2.2 h11==0.14.0 httpcore==0.17.3 httpx==0.24.1 hypothesis==6.45.0 -idna==3.6 +idna==3.7 importlib-metadata==6.7.0 iniconfig==2.0.0 mock==5.1.0 -multidict==6.0.4 +multidict==6.0.5 numpy==1.21.6 openai[datalib,embeddings]==1.1.1 opentracing==2.4.0 -packaging==23.2 +packaging==24.0 pandas==1.3.5 pandas-stubs==1.2.0.62 pillow==9.5.0 pluggy==1.2.0 -pydantic==2.5.2 -pydantic-core==2.14.5 -pytest==7.4.3 +pydantic==2.5.3 +pydantic-core==2.14.6 +pytest==7.4.4 pytest-asyncio==0.21.1 pytest-cov==4.1.0 pytest-mock==3.11.1 pytest-randomly==3.12.0 -python-dateutil==2.8.2 -pytz==2023.3.post1 +python-dateutil==2.9.0.post0 +pytz==2024.1 pyyaml==6.0.1 six==1.16.0 -sniffio==1.3.0 +sniffio==1.3.1 sortedcontainers==2.4.0 tomli==2.0.1 -tqdm==4.66.1 +tqdm==4.66.4 typing-extensions==4.7.1 -urllib3==1.26.18 +urllib3==1.26.19 vcrpy==4.2.1 wrapt==1.16.0 yarl==1.9.4 diff --git a/.riot/requirements/fa9267f.txt b/.riot/requirements/fa9267f.txt new file mode 100644 index 00000000000..80c862d47e3 --- /dev/null +++ b/.riot/requirements/fa9267f.txt @@ -0,0 +1,21 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# pip-compile --no-annotate .riot/requirements/fa9267f.in +# +asyncpg==0.29.0 +attrs==23.2.0 +coverage[toml]==7.5.4 +hypothesis==6.45.0 +iniconfig==2.0.0 +mock==5.1.0 +opentracing==2.4.0 +packaging==24.1 +pluggy==1.5.0 +pytest==8.2.2 +pytest-asyncio==0.21.2 +pytest-cov==5.0.0 +pytest-mock==3.14.0 +pytest-randomly==3.15.0 +sortedcontainers==2.4.0 diff --git a/ddtrace/_trace/_span_link.py b/ddtrace/_trace/_span_link.py index 78f06b9888a..6f304d7bf01 100644 --- a/ddtrace/_trace/_span_link.py +++ b/ddtrace/_trace/_span_link.py @@ -109,3 +109,10 @@ def to_dict(self): d["flags"] = self.flags return d + + def __str__(self) -> str: + attrs_str = ",".join([f"{k}:{v}" for k, v in self.attributes.items()]) + return ( + f"trace_id={self.trace_id} span_id={self.span_id} attributes={attrs_str} " + f"tracestate={self.tracestate} flags={self.flags} dropped_attributes={self._dropped_attributes}" + ) diff --git a/ddtrace/_trace/processor/__init__.py b/ddtrace/_trace/processor/__init__.py index 01d066f58c4..609a965aa16 100644 --- a/ddtrace/_trace/processor/__init__.py +++ b/ddtrace/_trace/processor/__init__.py @@ -24,6 +24,7 @@ from ddtrace.internal.sampling import SpanSamplingRule from ddtrace.internal.sampling import is_single_span_sampled from ddtrace.internal.service import ServiceStatusError +from ddtrace.internal.telemetry.constants import TELEMETRY_LOG_LEVEL from ddtrace.internal.telemetry.constants import TELEMETRY_NAMESPACE_TAG_TRACER from ddtrace.internal.writer import TraceWriter from ddtrace.sampler import BaseSampler @@ -292,7 +293,7 @@ def on_span_finish(self, span: Span) -> None: # e.g. `tracer.configure()` is called after starting a span if span.trace_id not in self._traces: log_msg = "finished span not connected to a trace" - telemetry.telemetry_writer.add_log("ERROR", log_msg) + telemetry.telemetry_writer.add_log(TELEMETRY_LOG_LEVEL.ERROR, log_msg) log.debug("%s: %s", log_msg, span) return @@ -316,7 +317,7 @@ def on_span_finish(self, span: Span) -> None: trace.num_finished -= num_finished if trace.num_finished != 0: log_msg = "unexpected finished span count" - telemetry.telemetry_writer.add_log("ERROR", log_msg) + telemetry.telemetry_writer.add_log(TELEMETRY_LOG_LEVEL.ERROR, log_msg) log.debug("%s (%s) for span %s", log_msg, num_finished, span) trace.num_finished = 0 diff --git a/ddtrace/_trace/span.py b/ddtrace/_trace/span.py index e7c7fec6b00..b9ea6cdac7f 100644 --- a/ddtrace/_trace/span.py +++ b/ddtrace/_trace/span.py @@ -72,6 +72,10 @@ def __dict__(self): d["attributes"] = self.attributes return d + def __str__(self): + attrs_str = ",".join([f"{k}:{v}" for k, v in self.attributes.items()]) + return f"name={self.name} time={self.time_unix_nano} attributes={attrs_str}" + log = get_logger(__name__) @@ -569,6 +573,8 @@ def _pprint(self) -> str: ("error", self.error), ("tags", dict(sorted(self._meta.items()))), ("metrics", dict(sorted(self._metrics.items()))), + ("links", ", ".join([str(link) for _, link in self._links.items()])), + ("events", ", ".join([str(e) for e in self._events])), ] return " ".join( # use a large column width to keep pprint output on one line diff --git a/ddtrace/appsec/_asm_request_context.py b/ddtrace/appsec/_asm_request_context.py index df4795b2c48..39229bfff6b 100644 --- a/ddtrace/appsec/_asm_request_context.py +++ b/ddtrace/appsec/_asm_request_context.py @@ -1,6 +1,7 @@ import contextlib import functools import json +import sys from typing import Any from typing import Callable from typing import Dict @@ -31,13 +32,18 @@ # Stopgap module for providing ASM context for the blocking features wrapping some contextvars. -_WAF_ADDRESSES = "waf_addresses" -_CALLBACKS = "callbacks" -_TELEMETRY = "telemetry" -_CONTEXT_CALL = "context" -_WAF_CALL = "waf_run" -_BLOCK_CALL = "block" -_TELEMETRY_WAF_RESULTS = "t_waf_results" +if sys.version_info >= (3, 8): + from typing import Literal # noqa:F401 +else: + from typing_extensions import Literal # noqa:F401 + +_WAF_ADDRESSES: Literal["waf_addresses"] = "waf_addresses" +_CALLBACKS: Literal["callbacks"] = "callbacks" +_TELEMETRY: Literal["telemetry"] = "telemetry" +_CONTEXT_CALL: Literal["context"] = "context" +_WAF_CALL: Literal["waf_run"] = "waf_run" +_BLOCK_CALL: Literal["block"] = "block" +_TELEMETRY_WAF_RESULTS: Literal["t_waf_results"] = "t_waf_results" GLOBAL_CALLBACKS: Dict[str, List[Callable]] = {} diff --git a/ddtrace/appsec/_constants.py b/ddtrace/appsec/_constants.py index 49716c7412b..addaa6f7dc5 100644 --- a/ddtrace/appsec/_constants.py +++ b/ddtrace/appsec/_constants.py @@ -1,4 +1,12 @@ import os +import sys + + +if sys.version_info >= (3, 8): + from typing import Literal # noqa:F401 +else: + from typing_extensions import Literal # noqa:F401 + from typing import Any from typing import Iterator @@ -41,85 +49,103 @@ def __getitem__(self, k: str) -> Any: class APPSEC(metaclass=Constant_Class): """Specific constants for AppSec""" - ENV = "DD_APPSEC_ENABLED" - STANDALONE_ENV = "DD_EXPERIMENTAL_APPSEC_STANDALONE_ENABLED" - RULE_FILE = "DD_APPSEC_RULES" - ENABLED = "_dd.appsec.enabled" - JSON = "_dd.appsec.json" - STRUCT = "appsec" - EVENT_RULE_VERSION = "_dd.appsec.event_rules.version" - EVENT_RULE_ERRORS = "_dd.appsec.event_rules.errors" - EVENT_RULE_LOADED = "_dd.appsec.event_rules.loaded" - EVENT_RULE_ERROR_COUNT = "_dd.appsec.event_rules.error_count" - WAF_DURATION = "_dd.appsec.waf.duration" - WAF_DURATION_EXT = "_dd.appsec.waf.duration_ext" - WAF_TIMEOUTS = "_dd.appsec.waf.timeouts" - WAF_VERSION = "_dd.appsec.waf.version" - RASP_DURATION = "_dd.appsec.rasp.duration" - RASP_DURATION_EXT = "_dd.appsec.rasp.duration_ext" - RASP_RULE_EVAL = "_dd.appsec.rasp.rule.eval" - ORIGIN_VALUE = "appsec" - CUSTOM_EVENT_PREFIX = "appsec.events" - USER_LOGIN_EVENT_PREFIX = "_dd.appsec.events.users.login" - USER_LOGIN_EVENT_PREFIX_PUBLIC = "appsec.events.users.login" - USER_LOGIN_EVENT_SUCCESS_TRACK = "appsec.events.users.login.success.track" - USER_LOGIN_EVENT_FAILURE_TRACK = "appsec.events.users.login.failure.track" - USER_SIGNUP_EVENT = "appsec.events.users.signup.track" - AUTO_LOGIN_EVENTS_SUCCESS_MODE = "_dd.appsec.events.users.login.success.auto.mode" - AUTO_LOGIN_EVENTS_FAILURE_MODE = "_dd.appsec.events.users.login.failure.auto.mode" - BLOCKED = "appsec.blocked" - EVENT = "appsec.event" - AUTOMATIC_USER_EVENTS_TRACKING = "DD_APPSEC_AUTOMATED_USER_EVENTS_TRACKING" # DEPRECATED - AUTO_USER_INSTRUMENTATION_MODE = "DD_APPSEC_AUTO_USER_INSTRUMENTATION_MODE" - AUTO_USER_INSTRUMENTATION_MODE_ENABLED = "DD_APPSEC_AUTOMATED_USER_EVENTS_TRACKING_ENABLED" - USER_MODEL_LOGIN_FIELD = "DD_USER_MODEL_LOGIN_FIELD" - USER_MODEL_EMAIL_FIELD = "DD_USER_MODEL_EMAIL_FIELD" - USER_MODEL_NAME_FIELD = "DD_USER_MODEL_NAME_FIELD" - PROPAGATION_HEADER = "_dd.p.appsec" - OBFUSCATION_PARAMETER_KEY_REGEXP = "DD_APPSEC_OBFUSCATION_PARAMETER_KEY_REGEXP" - OBFUSCATION_PARAMETER_VALUE_REGEXP = "DD_APPSEC_OBFUSCATION_PARAMETER_VALUE_REGEXP" + ENV: Literal["DD_APPSEC_ENABLED"] = "DD_APPSEC_ENABLED" + STANDALONE_ENV: Literal["DD_EXPERIMENTAL_APPSEC_STANDALONE_ENABLED"] = "DD_EXPERIMENTAL_APPSEC_STANDALONE_ENABLED" + RULE_FILE: Literal["DD_APPSEC_RULES"] = "DD_APPSEC_RULES" + ENABLED: Literal["_dd.appsec.enabled"] = "_dd.appsec.enabled" + JSON: Literal["_dd.appsec.json"] = "_dd.appsec.json" + STRUCT: Literal["appsec"] = "appsec" + EVENT_RULE_VERSION: Literal["_dd.appsec.event_rules.version"] = "_dd.appsec.event_rules.version" + EVENT_RULE_ERRORS: Literal["_dd.appsec.event_rules.errors"] = "_dd.appsec.event_rules.errors" + EVENT_RULE_LOADED: Literal["_dd.appsec.event_rules.loaded"] = "_dd.appsec.event_rules.loaded" + EVENT_RULE_ERROR_COUNT: Literal["_dd.appsec.event_rules.error_count"] = "_dd.appsec.event_rules.error_count" + WAF_DURATION: Literal["_dd.appsec.waf.duration"] = "_dd.appsec.waf.duration" + WAF_DURATION_EXT: Literal["_dd.appsec.waf.duration_ext"] = "_dd.appsec.waf.duration_ext" + WAF_TIMEOUTS: Literal["_dd.appsec.waf.timeouts"] = "_dd.appsec.waf.timeouts" + WAF_VERSION: Literal["_dd.appsec.waf.version"] = "_dd.appsec.waf.version" + RASP_DURATION: Literal["_dd.appsec.rasp.duration"] = "_dd.appsec.rasp.duration" + RASP_DURATION_EXT: Literal["_dd.appsec.rasp.duration_ext"] = "_dd.appsec.rasp.duration_ext" + RASP_RULE_EVAL: Literal["_dd.appsec.rasp.rule.eval"] = "_dd.appsec.rasp.rule.eval" + ORIGIN_VALUE: Literal["appsec"] = "appsec" + CUSTOM_EVENT_PREFIX: Literal["appsec.events"] = "appsec.events" + USER_LOGIN_EVENT_PREFIX: Literal["_dd.appsec.events.users.login"] = "_dd.appsec.events.users.login" + USER_LOGIN_EVENT_PREFIX_PUBLIC: Literal["appsec.events.users.login"] = "appsec.events.users.login" + USER_LOGIN_EVENT_SUCCESS_TRACK: Literal[ + "appsec.events.users.login.success.track" + ] = "appsec.events.users.login.success.track" + USER_LOGIN_EVENT_FAILURE_TRACK: Literal[ + "appsec.events.users.login.failure.track" + ] = "appsec.events.users.login.failure.track" + USER_SIGNUP_EVENT: Literal["appsec.events.users.signup.track"] = "appsec.events.users.signup.track" + AUTO_LOGIN_EVENTS_SUCCESS_MODE: Literal[ + "_dd.appsec.events.users.login.success.auto.mode" + ] = "_dd.appsec.events.users.login.success.auto.mode" + AUTO_LOGIN_EVENTS_FAILURE_MODE: Literal[ + "_dd.appsec.events.users.login.failure.auto.mode" + ] = "_dd.appsec.events.users.login.failure.auto.mode" + BLOCKED: Literal["appsec.blocked"] = "appsec.blocked" + EVENT: Literal["appsec.event"] = "appsec.event" + AUTOMATIC_USER_EVENTS_TRACKING: Literal[ + "DD_APPSEC_AUTOMATED_USER_EVENTS_TRACKING" + ] = "DD_APPSEC_AUTOMATED_USER_EVENTS_TRACKING" + AUTO_USER_INSTRUMENTATION_MODE: Literal[ + "DD_APPSEC_AUTO_USER_INSTRUMENTATION_MODE" + ] = "DD_APPSEC_AUTO_USER_INSTRUMENTATION_MODE" + AUTO_USER_INSTRUMENTATION_MODE_ENABLED: Literal[ + "DD_APPSEC_AUTOMATED_USER_EVENTS_TRACKING_ENABLED" + ] = "DD_APPSEC_AUTOMATED_USER_EVENTS_TRACKING_ENABLED" + USER_MODEL_LOGIN_FIELD: Literal["DD_USER_MODEL_LOGIN_FIELD"] = "DD_USER_MODEL_LOGIN_FIELD" + USER_MODEL_EMAIL_FIELD: Literal["DD_USER_MODEL_EMAIL_FIELD"] = "DD_USER_MODEL_EMAIL_FIELD" + USER_MODEL_NAME_FIELD: Literal["DD_USER_MODEL_NAME_FIELD"] = "DD_USER_MODEL_NAME_FIELD" + PROPAGATION_HEADER: Literal["_dd.p.appsec"] = "_dd.p.appsec" + OBFUSCATION_PARAMETER_KEY_REGEXP: Literal[ + "DD_APPSEC_OBFUSCATION_PARAMETER_KEY_REGEXP" + ] = "DD_APPSEC_OBFUSCATION_PARAMETER_KEY_REGEXP" + OBFUSCATION_PARAMETER_VALUE_REGEXP: Literal[ + "DD_APPSEC_OBFUSCATION_PARAMETER_VALUE_REGEXP" + ] = "DD_APPSEC_OBFUSCATION_PARAMETER_VALUE_REGEXP" class IAST(metaclass=Constant_Class): """Specific constants for IAST""" - ENV = "DD_IAST_ENABLED" - ENV_DEBUG = "_DD_IAST_DEBUG" - TELEMETRY_REPORT_LVL = "DD_IAST_TELEMETRY_VERBOSITY" - LAZY_TAINT = "_DD_IAST_LAZY_TAINT" - JSON = "_dd.iast.json" - ENABLED = "_dd.iast.enabled" - CONTEXT_KEY = "_iast_data" - PATCH_MODULES = "_DD_IAST_PATCH_MODULES" - DENY_MODULES = "_DD_IAST_DENY_MODULES" - SEP_MODULES = "," - REQUEST_IAST_ENABLED = "_dd.iast.request_enabled" + ENV: Literal["DD_IAST_ENABLED"] = "DD_IAST_ENABLED" + ENV_DEBUG: Literal["_DD_IAST_DEBUG"] = "_DD_IAST_DEBUG" + TELEMETRY_REPORT_LVL: Literal["DD_IAST_TELEMETRY_VERBOSITY"] = "DD_IAST_TELEMETRY_VERBOSITY" + LAZY_TAINT: Literal["_DD_IAST_LAZY_TAINT"] = "_DD_IAST_LAZY_TAINT" + JSON: Literal["_dd.iast.json"] = "_dd.iast.json" + ENABLED: Literal["_dd.iast.enabled"] = "_dd.iast.enabled" + CONTEXT_KEY: Literal["_iast_data"] = "_iast_data" + PATCH_MODULES: Literal["_DD_IAST_PATCH_MODULES"] = "_DD_IAST_PATCH_MODULES" + DENY_MODULES: Literal["_DD_IAST_DENY_MODULES"] = "_DD_IAST_DENY_MODULES" + SEP_MODULES: Literal[","] = "," + REQUEST_IAST_ENABLED: Literal["_dd.iast.request_enabled"] = "_dd.iast.request_enabled" TEXT_TYPES = (str, bytes, bytearray) class IAST_SPAN_TAGS(metaclass=Constant_Class): """Specific constants for IAST span tags""" - TELEMETRY_REQUEST_TAINTED = "_dd.iast.telemetry.request.tainted" - TELEMETRY_EXECUTED_SINK = "_dd.iast.telemetry.executed.sink" + TELEMETRY_REQUEST_TAINTED: Literal["_dd.iast.telemetry.request.tainted"] = "_dd.iast.telemetry.request.tainted" + TELEMETRY_EXECUTED_SINK: Literal["_dd.iast.telemetry.executed.sink"] = "_dd.iast.telemetry.executed.sink" class WAF_DATA_NAMES(metaclass=Constant_Class): """string names used by the waf library for requesting data from requests""" # PERSISTENT ADDRESSES - REQUEST_BODY = "server.request.body" - REQUEST_QUERY = "server.request.query" - REQUEST_HEADERS_NO_COOKIES = "server.request.headers.no_cookies" - REQUEST_URI_RAW = "server.request.uri.raw" - REQUEST_METHOD = "server.request.method" - REQUEST_PATH_PARAMS = "server.request.path_params" - REQUEST_COOKIES = "server.request.cookies" - REQUEST_HTTP_IP = "http.client_ip" - REQUEST_USER_ID = "usr.id" - RESPONSE_STATUS = "server.response.status" - RESPONSE_HEADERS_NO_COOKIES = "server.response.headers.no_cookies" - RESPONSE_BODY = "server.response.body" + REQUEST_BODY: Literal["server.request.body"] = "server.request.body" + REQUEST_QUERY: Literal["server.request.query"] = "server.request.query" + REQUEST_HEADERS_NO_COOKIES: Literal["server.request.headers.no_cookies"] = "server.request.headers.no_cookies" + REQUEST_URI_RAW: Literal["server.request.uri.raw"] = "server.request.uri.raw" + REQUEST_METHOD: Literal["server.request.method"] = "server.request.method" + REQUEST_PATH_PARAMS: Literal["server.request.path_params"] = "server.request.path_params" + REQUEST_COOKIES: Literal["server.request.cookies"] = "server.request.cookies" + REQUEST_HTTP_IP: Literal["http.client_ip"] = "http.client_ip" + REQUEST_USER_ID: Literal["usr.id"] = "usr.id" + RESPONSE_STATUS: Literal["server.response.status"] = "server.response.status" + RESPONSE_HEADERS_NO_COOKIES: Literal["server.response.headers.no_cookies"] = "server.response.headers.no_cookies" + RESPONSE_BODY: Literal["server.response.body"] = "server.response.body" PERSISTENT_ADDRESSES = frozenset( ( REQUEST_BODY, @@ -138,73 +164,75 @@ class WAF_DATA_NAMES(metaclass=Constant_Class): ) # EPHEMERAL ADDRESSES - PROCESSOR_SETTINGS = "waf.context.processor" - LFI_ADDRESS = "server.io.fs.file" - SSRF_ADDRESS = "server.io.net.url" - SQLI_ADDRESS = "server.db.statement" - SQLI_SYSTEM_ADDRESS = "server.db.system" + PROCESSOR_SETTINGS: Literal["waf.context.processor"] = "waf.context.processor" + LFI_ADDRESS: Literal["server.io.fs.file"] = "server.io.fs.file" + SSRF_ADDRESS: Literal["server.io.net.url"] = "server.io.net.url" + SQLI_ADDRESS: Literal["server.db.statement"] = "server.db.statement" + SQLI_SYSTEM_ADDRESS: Literal["server.db.system"] = "server.db.system" class SPAN_DATA_NAMES(metaclass=Constant_Class): """string names used by the library for tagging data from requests in context or span""" - REQUEST_BODY = "http.request.body" - REQUEST_QUERY = "http.request.query" - REQUEST_HEADERS_NO_COOKIES = "http.request.headers" - REQUEST_HEADERS_NO_COOKIES_CASE = "http.request.headers_case_sensitive" - REQUEST_URI_RAW = "http.request.uri" - REQUEST_ROUTE = "http.request.route" - REQUEST_METHOD = "http.request.method" + REQUEST_BODY: Literal["http.request.body"] = "http.request.body" + REQUEST_QUERY: Literal["http.request.query"] = "http.request.query" + REQUEST_HEADERS_NO_COOKIES: Literal["http.request.headers"] = "http.request.headers" + REQUEST_HEADERS_NO_COOKIES_CASE: Literal[ + "http.request.headers_case_sensitive" + ] = "http.request.headers_case_sensitive" + REQUEST_URI_RAW: Literal["http.request.uri"] = "http.request.uri" + REQUEST_ROUTE: Literal["http.request.route"] = "http.request.route" + REQUEST_METHOD: Literal["http.request.method"] = "http.request.method" REQUEST_PATH_PARAMS = REQUEST_PATH_PARAMS - REQUEST_COOKIES = "http.request.cookies" - REQUEST_HTTP_IP = "http.request.remote_ip" - REQUEST_USER_ID = "usr.id" - RESPONSE_STATUS = "http.response.status" + REQUEST_COOKIES: Literal["http.request.cookies"] = "http.request.cookies" + REQUEST_HTTP_IP: Literal["http.request.remote_ip"] = "http.request.remote_ip" + REQUEST_USER_ID: Literal["usr.id"] = "usr.id" + RESPONSE_STATUS: Literal["http.response.status"] = "http.response.status" RESPONSE_HEADERS_NO_COOKIES = RESPONSE_HEADERS - RESPONSE_BODY = "http.response.body" - GRPC_SERVER_REQUEST_MESSAGE = "grpc.server.request.message" - GRPC_SERVER_RESPONSE_MESSAGE = "grpc.server.response.message" - GRPC_SERVER_REQUEST_METADATA = "grpc.server.request.metadata" - GRPC_SERVER_METHOD = "grpc.server.method" + RESPONSE_BODY: Literal["http.response.body"] = "http.response.body" + GRPC_SERVER_REQUEST_MESSAGE: Literal["grpc.server.request.message"] = "grpc.server.request.message" + GRPC_SERVER_RESPONSE_MESSAGE: Literal["grpc.server.response.message"] = "grpc.server.response.message" + GRPC_SERVER_REQUEST_METADATA: Literal["grpc.server.request.metadata"] = "grpc.server.request.metadata" + GRPC_SERVER_METHOD: Literal["grpc.server.method"] = "grpc.server.method" class API_SECURITY(metaclass=Constant_Class): """constants related to API Security""" - ENABLED = "_dd.appsec.api_security.enabled" - ENV_VAR_ENABLED = "DD_API_SECURITY_ENABLED" - PARSE_RESPONSE_BODY = "DD_API_SECURITY_PARSE_RESPONSE_BODY" - REQUEST_HEADERS_NO_COOKIES = "_dd.appsec.s.req.headers" - REQUEST_COOKIES = "_dd.appsec.s.req.cookies" - REQUEST_QUERY = "_dd.appsec.s.req.query" - REQUEST_PATH_PARAMS = "_dd.appsec.s.req.params" - REQUEST_BODY = "_dd.appsec.s.req.body" - RESPONSE_HEADERS_NO_COOKIES = "_dd.appsec.s.res.headers" - RESPONSE_BODY = "_dd.appsec.s.res.body" - SAMPLE_RATE = "DD_API_SECURITY_REQUEST_SAMPLE_RATE" - SAMPLE_DELAY = "DD_API_SECURITY_SAMPLE_DELAY" - MAX_PAYLOAD_SIZE = 0x1000000 # 16MB maximum size + ENABLED: Literal["_dd.appsec.api_security.enabled"] = "_dd.appsec.api_security.enabled" + ENV_VAR_ENABLED: Literal["DD_API_SECURITY_ENABLED"] = "DD_API_SECURITY_ENABLED" + PARSE_RESPONSE_BODY: Literal["DD_API_SECURITY_PARSE_RESPONSE_BODY"] = "DD_API_SECURITY_PARSE_RESPONSE_BODY" + REQUEST_HEADERS_NO_COOKIES: Literal["_dd.appsec.s.req.headers"] = "_dd.appsec.s.req.headers" + REQUEST_COOKIES: Literal["_dd.appsec.s.req.cookies"] = "_dd.appsec.s.req.cookies" + REQUEST_QUERY: Literal["_dd.appsec.s.req.query"] = "_dd.appsec.s.req.query" + REQUEST_PATH_PARAMS: Literal["_dd.appsec.s.req.params"] = "_dd.appsec.s.req.params" + REQUEST_BODY: Literal["_dd.appsec.s.req.body"] = "_dd.appsec.s.req.body" + RESPONSE_HEADERS_NO_COOKIES: Literal["_dd.appsec.s.res.headers"] = "_dd.appsec.s.res.headers" + RESPONSE_BODY: Literal["_dd.appsec.s.res.body"] = "_dd.appsec.s.res.body" + SAMPLE_RATE: Literal["DD_API_SECURITY_REQUEST_SAMPLE_RATE"] = "DD_API_SECURITY_REQUEST_SAMPLE_RATE" + SAMPLE_DELAY: Literal["DD_API_SECURITY_SAMPLE_DELAY"] = "DD_API_SECURITY_SAMPLE_DELAY" + MAX_PAYLOAD_SIZE: Literal[0x1000000] = 0x1000000 # 16MB maximum size class WAF_CONTEXT_NAMES(metaclass=Constant_Class): """string names used by the library for tagging data from requests in context""" - RESULTS = "http.request.waf.results" + RESULTS: Literal["http.request.waf.results"] = "http.request.waf.results" BLOCKED = HTTP_REQUEST_BLOCKED - CALLBACK = "http.request.waf.callback" + CALLBACK: Literal["http.request.waf.callback"] = "http.request.waf.callback" class WAF_ACTIONS(metaclass=Constant_Class): """string identifier for actions returned by the waf""" - BLOCK = "block" - PARAMETERS = "parameters" - TYPE = "type" - ID = "id" + BLOCK: Literal["block"] = "block" + PARAMETERS: Literal["parameters"] = "parameters" + TYPE: Literal["type"] = "type" + ID: Literal["id"] = "id" DEFAULT_PARAMETERS = STATUS_403_TYPE_AUTO - BLOCK_ACTION = "block_request" - REDIRECT_ACTION = "redirect_request" - STACK_ACTION = "generate_stack" + BLOCK_ACTION: Literal["block_request"] = "block_request" + REDIRECT_ACTION: Literal["redirect_request"] = "redirect_request" + STACK_ACTION: Literal["generate_stack"] = "generate_stack" DEFAULT_ACTIONS = { BLOCK: { ID: BLOCK, @@ -217,10 +245,10 @@ class WAF_ACTIONS(metaclass=Constant_Class): class PRODUCTS(metaclass=Constant_Class): """string identifier for remote config products""" - ASM = "ASM" - ASM_DATA = "ASM_DATA" - ASM_DD = "ASM_DD" - ASM_FEATURES = "ASM_FEATURES" + ASM: Literal["ASM"] = "ASM" + ASM_DATA: Literal["ASM_DATA"] = "ASM_DATA" + ASM_DD: Literal["ASM_DD"] = "ASM_DD" + ASM_FEATURES: Literal["ASM_FEATURES"] = "ASM_FEATURES" class LOGIN_EVENTS_MODE(metaclass=Constant_Class): @@ -233,11 +261,11 @@ class LOGIN_EVENTS_MODE(metaclass=Constant_Class): SDK: manually issued login events using the SDK. """ - DISABLED = "disabled" - IDENT = "identification" - ANON = "anonymization" - SDK = "sdk" - AUTO = "auto" + DISABLED: Literal["disabled"] = "disabled" + IDENT: Literal["identification"] = "identification" + ANON: Literal["anonymization"] = "anonymization" + SDK: Literal["sdk"] = "sdk" + AUTO: Literal["auto"] = "auto" class DEFAULT(metaclass=Constant_Class): @@ -260,20 +288,20 @@ class DEFAULT(metaclass=Constant_Class): class EXPLOIT_PREVENTION(metaclass=Constant_Class): - STACK_TRACES = "_dd.stack" - STACK_TRACE_ID = "stack_id" - EP_ENABLED = "DD_APPSEC_RASP_ENABLED" - STACK_TRACE_ENABLED = "DD_APPSEC_STACK_TRACE_ENABLED" - MAX_STACK_TRACES = "DD_APPSEC_MAX_STACK_TRACES" - MAX_STACK_TRACE_DEPTH = "DD_APPSEC_MAX_STACK_TRACE_DEPTH" + STACK_TRACES: Literal["_dd.stack"] = "_dd.stack" + STACK_TRACE_ID: Literal["stack_id"] = "stack_id" + EP_ENABLED: Literal["DD_APPSEC_RASP_ENABLED"] = "DD_APPSEC_RASP_ENABLED" + STACK_TRACE_ENABLED: Literal["DD_APPSEC_STACK_TRACE_ENABLED"] = "DD_APPSEC_STACK_TRACE_ENABLED" + MAX_STACK_TRACES: Literal["DD_APPSEC_MAX_STACK_TRACES"] = "DD_APPSEC_MAX_STACK_TRACES" + MAX_STACK_TRACE_DEPTH: Literal["DD_APPSEC_MAX_STACK_TRACE_DEPTH"] = "DD_APPSEC_MAX_STACK_TRACE_DEPTH" class TYPE(metaclass=Constant_Class): - LFI = "lfi" - SSRF = "ssrf" - SQLI = "sql_injection" + LFI: Literal["lfi"] = "lfi" + SSRF: Literal["ssrf"] = "ssrf" + SQLI: Literal["sql_injection"] = "sql_injection" class ADDRESS(metaclass=Constant_Class): - LFI = "LFI_ADDRESS" - SSRF = "SSRF_ADDRESS" - SQLI = "SQLI_ADDRESS" - SQLI_TYPE = "SQLI_SYSTEM_ADDRESS" + LFI: Literal["LFI_ADDRESS"] = "LFI_ADDRESS" + SSRF: Literal["SSRF_ADDRESS"] = "SSRF_ADDRESS" + SQLI: Literal["SQLI_ADDRESS"] = "SQLI_ADDRESS" + SQLI_TYPE: Literal["SQLI_SYSTEM_ADDRESS"] = "SQLI_SYSTEM_ADDRESS" diff --git a/ddtrace/appsec/_iast/_ast/ast_patching.py b/ddtrace/appsec/_iast/_ast/ast_patching.py index f4856dd326a..22d8b345938 100644 --- a/ddtrace/appsec/_iast/_ast/ast_patching.py +++ b/ddtrace/appsec/_iast/_ast/ast_patching.py @@ -38,6 +38,7 @@ "ddsketch", "ddtrace", "encodings", # this package is used to load encodings when a module is imported, propagation is not needed + "encodings.idna", "envier", "exceptiongroup", "freezegun", # Testing utilities for time manipulation diff --git a/ddtrace/appsec/_iast/_metrics.py b/ddtrace/appsec/_iast/_metrics.py index 521b5e5d79d..03a24466ec2 100644 --- a/ddtrace/appsec/_iast/_metrics.py +++ b/ddtrace/appsec/_iast/_metrics.py @@ -9,6 +9,7 @@ from ddtrace.appsec._deduplications import deduplication from ddtrace.internal import telemetry from ddtrace.internal.logger import get_logger +from ddtrace.internal.telemetry.constants import TELEMETRY_LOG_LEVEL from ddtrace.internal.telemetry.constants import TELEMETRY_NAMESPACE_TAG_IAST @@ -73,7 +74,7 @@ def _set_iast_error_metric(msg: Text) -> None: tags = { "lib_language": "python", } - telemetry.telemetry_writer.add_log("ERROR", msg, stack_trace=stack_trace, tags=tags) + telemetry.telemetry_writer.add_log(TELEMETRY_LOG_LEVEL.ERROR, msg, stack_trace=stack_trace, tags=tags) except Exception: log.warning("Error reporting ASM WAF logs metrics", exc_info=True) diff --git a/ddtrace/appsec/_iast/_taint_tracking/_native.cpp b/ddtrace/appsec/_iast/_taint_tracking/_native.cpp index c98330ad28a..e0a64332431 100644 --- a/ddtrace/appsec/_iast/_taint_tracking/_native.cpp +++ b/ddtrace/appsec/_iast/_taint_tracking/_native.cpp @@ -60,14 +60,15 @@ PYBIND11_MODULE(_native, m) { const char* env_iast_enabled = std::getenv("DD_IAST_ENABLED"); if (env_iast_enabled == nullptr) { - throw py::import_error("IAST not enabled"); - } - - std::string iast_enabled = std::string(env_iast_enabled); - std::transform( - iast_enabled.begin(), iast_enabled.end(), iast_enabled.begin(), [](unsigned char c) { return std::tolower(c); }); - if (iast_enabled != "true" && iast_enabled != "1") { - throw py::import_error("IAST not enabled"); + py::module::import("logging").attr("warning")("IAST not enabled but native module is being loaded"); + } else { + std::string iast_enabled = std::string(env_iast_enabled); + std::transform(iast_enabled.begin(), iast_enabled.end(), iast_enabled.begin(), [](unsigned char c) { + return std::tolower(c); + }); + if (iast_enabled != "true" && iast_enabled != "1") { + py::module::import("logging").attr("warning")("IAST not enabled but native module is being loaded"); + } } initializer = make_unique(); diff --git a/ddtrace/appsec/_metrics.py b/ddtrace/appsec/_metrics.py index a501f3c3259..776c25f1735 100644 --- a/ddtrace/appsec/_metrics.py +++ b/ddtrace/appsec/_metrics.py @@ -4,6 +4,7 @@ from ddtrace.appsec._deduplications import deduplication from ddtrace.internal import telemetry from ddtrace.internal.logger import get_logger +from ddtrace.internal.telemetry.constants import TELEMETRY_LOG_LEVEL from ddtrace.internal.telemetry.constants import TELEMETRY_NAMESPACE_TAG_APPSEC @@ -21,7 +22,7 @@ def _set_waf_error_metric(msg: str, stack_trace: str, info: DDWaf_info) -> None: } if info and info.version: tags["event_rules_version"] = info.version - telemetry.telemetry_writer.add_log("ERROR", msg, stack_trace=stack_trace, tags=tags) + telemetry.telemetry_writer.add_log(TELEMETRY_LOG_LEVEL.ERROR, msg, stack_trace=stack_trace, tags=tags) except Exception: log.warning("Error reporting ASM WAF logs metrics", exc_info=True) diff --git a/ddtrace/appsec/rules.json b/ddtrace/appsec/rules.json index 0b25be934c8..f181703cce3 100644 --- a/ddtrace/appsec/rules.json +++ b/ddtrace/appsec/rules.json @@ -1,7 +1,7 @@ { "version": "2.2", "metadata": { - "rules_version": "1.12.0" + "rules_version": "1.13.0" }, "rules": [ { @@ -6285,6 +6285,55 @@ "stack_trace" ] }, + { + "id": "rasp-932-100", + "name": "Shell injection exploit", + "enabled": false, + "tags": { + "type": "command_injection", + "category": "vulnerability_trigger", + "cwe": "77", + "capec": "1000/152/248/88", + "confidence": "0", + "module": "rasp" + }, + "conditions": [ + { + "parameters": { + "resource": [ + { + "address": "server.sys.shell.cmd" + } + ], + "params": [ + { + "address": "server.request.query" + }, + { + "address": "server.request.body" + }, + { + "address": "server.request.path_params" + }, + { + "address": "grpc.server.request.message" + }, + { + "address": "graphql.server.all_resolvers" + }, + { + "address": "graphql.server.resolver" + } + ] + }, + "operator": "shi_detector" + } + ], + "transformers": [], + "on_match": [ + "stack_trace" + ] + }, { "id": "rasp-934-100", "name": "Server-side request forgery exploit", @@ -8388,6 +8437,57 @@ } ], "processors": [ + { + "id": "http-endpoint-fingerprint", + "generator": "http_endpoint_fingerprint", + "conditions": [ + { + "operator": "exists", + "parameters": { + "inputs": [ + { + "address": "waf.context.event" + }, + { + "address": "server.business_logic.users.login.failure" + }, + { + "address": "server.business_logic.users.login.success" + } + ] + } + } + ], + "parameters": { + "mappings": [ + { + "method": [ + { + "address": "server.request.method" + } + ], + "uri_raw": [ + { + "address": "server.request.uri.raw" + } + ], + "body": [ + { + "address": "server.request.body" + } + ], + "query": [ + { + "address": "server.request.query" + } + ], + "output": "_dd.appsec.fp.http.endpoint" + } + ] + }, + "evaluate": false, + "output": true + }, { "id": "extract-content", "generator": "extract_schema", @@ -8537,6 +8637,124 @@ }, "evaluate": false, "output": true + }, + { + "id": "http-header-fingerprint", + "generator": "http_header_fingerprint", + "conditions": [ + { + "operator": "exists", + "parameters": { + "inputs": [ + { + "address": "waf.context.event" + }, + { + "address": "server.business_logic.users.login.failure" + }, + { + "address": "server.business_logic.users.login.success" + } + ] + } + } + ], + "parameters": { + "mappings": [ + { + "headers": [ + { + "address": "server.request.headers.no_cookies" + } + ], + "output": "_dd.appsec.fp.http.header" + } + ] + }, + "evaluate": false, + "output": true + }, + { + "id": "http-network-fingerprint", + "generator": "http_network_fingerprint", + "conditions": [ + { + "operator": "exists", + "parameters": { + "inputs": [ + { + "address": "waf.context.event" + }, + { + "address": "server.business_logic.users.login.failure" + }, + { + "address": "server.business_logic.users.login.success" + } + ] + } + } + ], + "parameters": { + "mappings": [ + { + "headers": [ + { + "address": "server.request.headers.no_cookies" + } + ], + "output": "_dd.appsec.fp.http.network" + } + ] + }, + "evaluate": false, + "output": true + }, + { + "id": "session-fingerprint", + "generator": "session_fingerprint", + "conditions": [ + { + "operator": "exists", + "parameters": { + "inputs": [ + { + "address": "waf.context.event" + }, + { + "address": "server.business_logic.users.login.failure" + }, + { + "address": "server.business_logic.users.login.success" + } + ] + } + } + ], + "parameters": { + "mappings": [ + { + "cookies": [ + { + "address": "server.request.cookies" + } + ], + "session_id": [ + { + "address": "usr.session_id" + } + ], + "user_id": [ + { + "address": "usr.id" + } + ], + "output": "_dd.appsec.fp.session" + } + ] + }, + "evaluate": false, + "output": true } ], "scanners": [ diff --git a/ddtrace/bootstrap/preload.py b/ddtrace/bootstrap/preload.py index 64d5fc72edc..24160402174 100644 --- a/ddtrace/bootstrap/preload.py +++ b/ddtrace/bootstrap/preload.py @@ -2,11 +2,12 @@ Bootstrapping code that is run when using the `ddtrace-run` Python entrypoint Add all monkey-patching that needs to run by default here """ + import os # noqa:I001 from ddtrace import config # noqa:F401 from ddtrace.debugging._config import di_config # noqa:F401 -from ddtrace.debugging._config import ed_config # noqa:F401 +from ddtrace.debugging._config import er_config # noqa:F401 from ddtrace.settings.profiling import config as profiling_config # noqa:F401 from ddtrace.internal.logger import get_logger # noqa:F401 from ddtrace.internal.module import ModuleWatchdog # noqa:F401 @@ -15,6 +16,7 @@ from ddtrace.internal.utils.formats import asbool # noqa:F401 from ddtrace.internal.utils.formats import parse_tags_str # noqa:F401 from ddtrace.settings.asm import config as asm_config # noqa:F401 +from ddtrace.settings.crashtracker import config as crashtracker_config from ddtrace.settings.symbol_db import config as symdb_config # noqa:F401 from ddtrace import tracer @@ -41,6 +43,16 @@ def register_post_preload(func: t.Callable) -> None: log = get_logger(__name__) +# DEV: We want to start the crashtracker as early as possible +if crashtracker_config.enabled: + log.debug("crashtracking enabled via environment variable") + try: + from ddtrace.internal.core import crashtracking + + crashtracking.start() + except Exception: + log.error("failed to enable crashtracking", exc_info=True) + if profiling_config.enabled: log.debug("profiler enabled via environment variable") @@ -59,8 +71,8 @@ def register_post_preload(func: t.Callable) -> None: DynamicInstrumentation.enable() -if ed_config.enabled: # Exception Replay - from ddtrace.debugging._exception.auto_instrument import SpanExceptionProcessor +if er_config.enabled: # Exception Replay + from ddtrace.debugging._exception.replay import SpanExceptionProcessor SpanExceptionProcessor().register() diff --git a/ddtrace/contrib/botocore/patch.py b/ddtrace/contrib/botocore/patch.py index b0db100b81e..8078350ccf6 100644 --- a/ddtrace/contrib/botocore/patch.py +++ b/ddtrace/contrib/botocore/patch.py @@ -13,9 +13,11 @@ from ddtrace import config from ddtrace.contrib.trace_utils import with_traced_module +from ddtrace.internal.utils.deprecations import DDTraceDeprecationWarning from ddtrace.llmobs._integrations import BedrockIntegration from ddtrace.settings.config import Config from ddtrace.vendor import wrapt +from ddtrace.vendor.debtcollector import deprecate from ...constants import SPAN_KIND from ...ext import SpanKind @@ -31,6 +33,7 @@ from ...internal.utils.formats import asbool from ...internal.utils.formats import deep_getattr from ...pin import Pin +from ..trace_utils import ext_service from ..trace_utils import unwrap from .services.bedrock import patched_bedrock_api_call from .services.kinesis import patched_kinesis_api_call @@ -62,6 +65,7 @@ config._add( "botocore", { + "_default_service": os.getenv("DD_BOTOCORE_SERVICE", default="aws"), "distributed_tracing": asbool(os.getenv("DD_BOTOCORE_DISTRIBUTED_TRACING", default=True)), "invoke_with_legacy_context": asbool(os.getenv("DD_BOTOCORE_INVOKE_WITH_LEGACY_CONTEXT", default=False)), "operations": collections.defaultdict(Config._HTTPServerConfig), @@ -75,21 +79,31 @@ ) -def get_version(): +def _get_version(): # type: () -> str return __version__ +def get_version(): + deprecate( + "get_version is deprecated", + message="get_version is deprecated", + removal_version="3.0.0", + category=DDTraceDeprecationWarning, + ) + return _get_version() + + def patch(): if getattr(botocore.client, "_datadog_patch", False): return botocore.client._datadog_patch = True botocore._datadog_integration = BedrockIntegration(integration_config=config.botocore) - wrapt.wrap_function_wrapper("botocore.client", "BaseClient._make_api_call", patched_api_call(botocore)) - Pin(service="aws").onto(botocore.client.BaseClient) - wrapt.wrap_function_wrapper("botocore.parsers", "ResponseParser.parse", patched_lib_fn) - Pin(service="aws").onto(botocore.parsers.ResponseParser) + wrapt.wrap_function_wrapper("botocore.client", "BaseClient._make_api_call", _patched_api_call(botocore)) + Pin().onto(botocore.client.BaseClient) + wrapt.wrap_function_wrapper("botocore.parsers", "ResponseParser.parse", _patched_lib_fn) + Pin().onto(botocore.parsers.ResponseParser) _PATCHED_SUBMODULES.clear() @@ -101,7 +115,7 @@ def unpatch(): unwrap(botocore.client.BaseClient, "_make_api_call") -def patch_submodules(submodules): +def _patch_submodules(submodules): # type: (Union[List[str], bool]) -> None if isinstance(submodules, bool) and submodules: _PATCHED_SUBMODULES.clear() @@ -110,7 +124,17 @@ def patch_submodules(submodules): _PATCHED_SUBMODULES.update(submodules) -def patched_lib_fn(original_func, instance, args, kwargs): +def patch_submodules(submodules): + deprecate( + "patch_submodules is deprecated", + message="patch_submodules is deprecated", + removal_version="3.0.0", + category=DDTraceDeprecationWarning, + ) + return _patch_submodules(submodules) + + +def _patched_lib_fn(original_func, instance, args, kwargs): pin = Pin.get_from(instance) if not pin or not pin.enabled() or not config.botocore["instrument_internals"]: return original_func(*args, **kwargs) @@ -122,8 +146,18 @@ def patched_lib_fn(original_func, instance, args, kwargs): return original_func(*args, **kwargs) +def patched_lib_fn(original_func, instance, args, kwargs): + deprecate( + "patched_lib_fn is deprecated", + message="patched_lib_fn is deprecated", + removal_version="3.0.0", + category=DDTraceDeprecationWarning, + ) + return _patched_lib_fn(original_func, instance, args, kwargs) + + @with_traced_module -def patched_api_call(botocore, pin, original_func, instance, args, kwargs): +def _patched_api_call(botocore, pin, original_func, instance, args, kwargs): if not pin or not pin.enabled(): return original_func(*args, **kwargs) @@ -151,7 +185,7 @@ def patched_api_call(botocore, pin, original_func, instance, args, kwargs): if endpoint_name == "bedrock-runtime" and operation.startswith("InvokeModel"): patching_fn = patched_bedrock_api_call else: - patching_fn = PATCHING_FUNCTIONS.get(endpoint_name, patched_api_call_fallback) + patching_fn = PATCHING_FUNCTIONS.get(endpoint_name, _patched_api_call_fallback) return patching_fn( original_func=original_func, @@ -162,7 +196,17 @@ def patched_api_call(botocore, pin, original_func, instance, args, kwargs): ) -def prep_context_injection(ctx, endpoint_name, operation, trace_operation, params): +def patched_api_call(botocore, pin, original_func, instance, args, kwargs): + deprecate( + "patched_api_call is deprecated", + message="patched_api_call is deprecated", + removal_version="3.0.0", + category=DDTraceDeprecationWarning, + ) + return _patched_api_call(botocore, pin, original_func, instance, args, kwargs) + + +def _prep_context_injection(ctx, endpoint_name, operation, trace_operation, params): cloud_service = None injection_function = None schematization_function = schematize_cloud_messaging_operation @@ -187,7 +231,17 @@ def prep_context_injection(ctx, endpoint_name, operation, trace_operation, param ) -def patched_api_call_fallback(original_func, instance, args, kwargs, function_vars): +def prep_context_injection(ctx, endpoint_name, operation, trace_operation, params): + deprecate( + "prep_context_injection is deprecated", + message="prep_context_injection is deprecated", + removal_version="3.0.0", + category=DDTraceDeprecationWarning, + ) + return _prep_context_injection(ctx, endpoint_name, operation, trace_operation, params) + + +def _patched_api_call_fallback(original_func, instance, args, kwargs, function_vars): # default patched api call that is used generally for several services / operations params = function_vars.get("params") trace_operation = function_vars.get("trace_operation") @@ -202,7 +256,7 @@ def patched_api_call_fallback(original_func, instance, args, kwargs, function_va params=params, endpoint_name=endpoint_name, operation=operation, - service=schematize_service_name("{}.{}".format(pin.service, endpoint_name)), + service=schematize_service_name("{}.{}".format(ext_service(pin, int_config=config.botocore), endpoint_name)), pin=pin, span_name=function_vars.get("trace_operation"), span_type=SpanTypes.HTTP, @@ -210,7 +264,7 @@ def patched_api_call_fallback(original_func, instance, args, kwargs, function_va ) as ctx, ctx.get_item("instrumented_api_call"): core.dispatch("botocore.patched_api_call.started", [ctx]) if args and config.botocore["distributed_tracing"]: - prep_context_injection(ctx, endpoint_name, operation, trace_operation, params) + _prep_context_injection(ctx, endpoint_name, operation, trace_operation, params) try: result = original_func(*args, **kwargs) @@ -228,3 +282,13 @@ def patched_api_call_fallback(original_func, instance, args, kwargs, function_va else: core.dispatch("botocore.patched_api_call.success", [ctx, result]) return result + + +def patched_api_call_fallback(original_func, instance, args, kwargs, function_vars): + deprecate( + "patched_api_call_fallback is deprecated", + message="patched_api_call_fallback is deprecated", + removal_version="3.0.0", + category=DDTraceDeprecationWarning, + ) + return _patched_api_call_fallback(original_func, instance, args, kwargs, function_vars) diff --git a/ddtrace/contrib/botocore/services/bedrock.py b/ddtrace/contrib/botocore/services/bedrock.py index 12bb97092bb..6377f7d8ddf 100644 --- a/ddtrace/contrib/botocore/services/bedrock.py +++ b/ddtrace/contrib/botocore/services/bedrock.py @@ -4,6 +4,8 @@ from typing import Dict from typing import List +from ddtrace import config +from ddtrace.contrib.trace_utils import ext_service from ddtrace.ext import SpanTypes from ddtrace.internal import core from ddtrace.internal.logger import get_logger @@ -323,7 +325,9 @@ def patched_bedrock_api_call(original_func, instance, args, kwargs, function_var "botocore.patched_bedrock_api_call", pin=pin, span_name=function_vars.get("trace_operation"), - service=schematize_service_name("{}.{}".format(pin.service, function_vars.get("endpoint_name"))), + service=schematize_service_name( + "{}.{}".format(ext_service(pin, int_config=config.botocore), function_vars.get("endpoint_name")) + ), resource=function_vars.get("operation"), span_type=SpanTypes.LLM if submit_to_llmobs else None, call_key="instrumented_bedrock_call", diff --git a/ddtrace/contrib/botocore/services/kinesis.py b/ddtrace/contrib/botocore/services/kinesis.py index 858f011410f..7bf1ea81284 100644 --- a/ddtrace/contrib/botocore/services/kinesis.py +++ b/ddtrace/contrib/botocore/services/kinesis.py @@ -9,6 +9,7 @@ import botocore.exceptions from ddtrace import config +from ddtrace.contrib.trace_utils import ext_service from ddtrace.internal import core from ddtrace.internal.schema.span_attribute_schema import SpanDirection @@ -137,7 +138,9 @@ def patched_kinesis_api_call(original_func, instance, args, kwargs, function_var params=params, endpoint_name=endpoint_name, operation=operation, - service=schematize_service_name("{}.{}".format(pin.service, endpoint_name)), + service=schematize_service_name( + "{}.{}".format(ext_service(pin, int_config=config.botocore), endpoint_name) + ), call_trace=False, pin=pin, span_name=span_name, diff --git a/ddtrace/contrib/botocore/services/sqs.py b/ddtrace/contrib/botocore/services/sqs.py index 25de175853a..da82df3113e 100644 --- a/ddtrace/contrib/botocore/services/sqs.py +++ b/ddtrace/contrib/botocore/services/sqs.py @@ -7,6 +7,7 @@ import botocore.exceptions from ddtrace import config +from ddtrace.contrib.trace_utils import ext_service from ddtrace.ext import SpanTypes from ddtrace.internal import core from ddtrace.internal.logger import get_logger @@ -142,7 +143,9 @@ def _patched_sqs_api_call(parent_ctx, original_func, instance, args, kwargs, fun "botocore.patched_sqs_api_call", parent=parent_ctx, span_name=call_name, - service=schematize_service_name("{}.{}".format(pin.service, endpoint_name)), + service=schematize_service_name( + "{}.{}".format(ext_service(pin, int_config=config.botocore), endpoint_name) + ), span_type=SpanTypes.HTTP, child_of=child_of if child_of is not None else pin.tracer.context_provider.active(), activate=True, diff --git a/ddtrace/contrib/botocore/services/stepfunctions.py b/ddtrace/contrib/botocore/services/stepfunctions.py index 16213f2e3ed..4919d8d827e 100644 --- a/ddtrace/contrib/botocore/services/stepfunctions.py +++ b/ddtrace/contrib/botocore/services/stepfunctions.py @@ -5,6 +5,7 @@ import botocore.exceptions from ddtrace import config +from ddtrace.contrib.trace_utils import ext_service from ddtrace.internal import core from ....ext import SpanTypes @@ -60,7 +61,7 @@ def patched_stepfunction_api_call(original_func, instance, args, kwargs: Dict, f with core.context_with_data( "botocore.patched_stepfunctions_api_call", span_name=call_name, - service=schematize_service_name("{}.{}".format(pin.service, endpoint_name)), + service=schematize_service_name("{}.{}".format(ext_service(pin, int_config=config.botocore), endpoint_name)), span_type=SpanTypes.HTTP, call_key="patched_stepfunctions_api_call", instance=instance, diff --git a/ddtrace/contrib/consul/patch.py b/ddtrace/contrib/consul/patch.py index 41873407c67..a09e290892f 100644 --- a/ddtrace/contrib/consul/patch.py +++ b/ddtrace/contrib/consul/patch.py @@ -3,6 +3,8 @@ from ddtrace import config from ddtrace.internal.constants import COMPONENT from ddtrace.internal.schema.span_attribute_schema import SpanDirection +from ddtrace.internal.utils.deprecations import DDTraceDeprecationWarning +from ddtrace.vendor.debtcollector import deprecate from ddtrace.vendor.wrapt import wrap_function_wrapper as _w from ...constants import ANALYTICS_SAMPLE_RATE_KEY @@ -22,11 +24,21 @@ _KV_FUNCS = ["put", "get", "delete"] -def get_version(): +def _get_version(): # type: () -> str return getattr(consul, "__version__", "") +def get_version(): + deprecate( + "get_version is deprecated", + message="get_version is deprecated", + removal_version="3.0.0", + category=DDTraceDeprecationWarning, + ) + return _get_version() + + def patch(): if getattr(consul, "__datadog_patch", False): return @@ -36,7 +48,7 @@ def patch(): pin.onto(consul.Consul.KV) for f_name in _KV_FUNCS: - _w("consul", "Consul.KV.%s" % f_name, wrap_function(f_name)) + _w("consul", "Consul.KV.%s" % f_name, _wrap_function(f_name)) def unpatch(): @@ -48,7 +60,7 @@ def unpatch(): _u(consul.Consul.KV, f_name) -def wrap_function(name): +def _wrap_function(name): def trace_func(wrapped, instance, args, kwargs): pin = Pin.get_from(instance) if not pin or not pin.enabled(): @@ -83,3 +95,13 @@ def trace_func(wrapped, instance, args, kwargs): return wrapped(*args, **kwargs) return trace_func + + +def wrap_function(name): + deprecate( + "wrap_function is deprecated", + message="get_version is deprecated", + removal_version="3.0.0", + category=DDTraceDeprecationWarning, + ) + return _wrap_function(name) diff --git a/ddtrace/contrib/pylibmc/client.py b/ddtrace/contrib/pylibmc/client.py index af788ab98b8..db676849806 100644 --- a/ddtrace/contrib/pylibmc/client.py +++ b/ddtrace/contrib/pylibmc/client.py @@ -69,6 +69,9 @@ def clone(self, *args, **kwargs): pin.clone().onto(traced_client) return traced_client + def add(self, *args, **kwargs): + return self._trace_cmd("add", *args, **kwargs) + def get(self, *args, **kwargs): return self._trace_cmd("get", *args, **kwargs) diff --git a/ddtrace/contrib/trace_utils.py b/ddtrace/contrib/trace_utils.py index ace93ec06f2..1fd05e57d8d 100644 --- a/ddtrace/contrib/trace_utils.py +++ b/ddtrace/contrib/trace_utils.py @@ -144,7 +144,7 @@ def _store_headers(headers, span, integration_config, request_or_response): return for header_name, header_value in headers.items(): - """config._header_tag_name gets an element of the dictionary in config.http._header_tags + """config._header_tag_name gets an element of the dictionary in config.trace_http_header_tags which gets the value from DD_TRACE_HEADER_TAGS environment variable.""" tag_name = integration_config._header_tag_name(header_name) if tag_name is None: diff --git a/ddtrace/debugging/_config.py b/ddtrace/debugging/_config.py index fb7b76d0506..02fce853b66 100644 --- a/ddtrace/debugging/_config.py +++ b/ddtrace/debugging/_config.py @@ -1,6 +1,6 @@ from ddtrace.internal.logger import get_logger from ddtrace.settings.dynamic_instrumentation import config as di_config # noqa: F401 -from ddtrace.settings.exception_debugging import config as ed_config # noqa: F401 +from ddtrace.settings.exception_replay import config as er_config # noqa: F401 log = get_logger(__name__) diff --git a/ddtrace/debugging/_debugger.py b/ddtrace/debugging/_debugger.py index 341c22e6078..7370c897e62 100644 --- a/ddtrace/debugging/_debugger.py +++ b/ddtrace/debugging/_debugger.py @@ -23,7 +23,7 @@ from ddtrace import config as ddconfig from ddtrace._trace.tracer import Tracer from ddtrace.debugging._config import di_config -from ddtrace.debugging._exception.auto_instrument import SpanExceptionProcessor +from ddtrace.debugging._exception.replay import SpanExceptionProcessor from ddtrace.debugging._function.discovery import FunctionDiscovery from ddtrace.debugging._function.store import FullyNamedWrappedFunction from ddtrace.debugging._function.store import FunctionStore diff --git a/ddtrace/debugging/_exception/auto_instrument.py b/ddtrace/debugging/_exception/replay.py similarity index 100% rename from ddtrace/debugging/_exception/auto_instrument.py rename to ddtrace/debugging/_exception/replay.py diff --git a/ddtrace/internal/core/crashtracking.py b/ddtrace/internal/core/crashtracking.py new file mode 100644 index 00000000000..9e96341af04 --- /dev/null +++ b/ddtrace/internal/core/crashtracking.py @@ -0,0 +1,59 @@ +from typing import Callable + +from ddtrace import config +from ddtrace import version +from ddtrace.internal import agent +from ddtrace.internal.datadog.profiling import crashtracker +from ddtrace.internal.runtime import get_runtime_id +from ddtrace.internal.runtime import on_runtime_id_change +from ddtrace.settings.crashtracker import config as crashtracker_config + + +is_available: bool = crashtracker.is_available +failure_msg: str = crashtracker.failure_msg +is_started: Callable[[], bool] = crashtracker.is_started + + +@on_runtime_id_change +def _update_runtime_id(runtime_id: str) -> None: + crashtracker.set_runtime_id(runtime_id) + + +def add_tag(key: str, value: str) -> None: + if is_available: + crashtracker.set_tag(key, value) + + +def start() -> bool: + if not is_available: + return False + + crashtracker.set_url(crashtracker_config.debug_url or agent.get_trace_url()) + crashtracker.set_service(config.service) + crashtracker.set_version(config.version) + crashtracker.set_env(config.env) + crashtracker.set_runtime_id(get_runtime_id()) + crashtracker.set_library_version(version.get_version()) + crashtracker.set_alt_stack(bool(crashtracker_config.alt_stack)) + if crashtracker_config.stacktrace_resolver == "fast": + crashtracker.set_resolve_frames_fast() + elif crashtracker_config.stacktrace_resolver == "full": + crashtracker.set_resolve_frames_full() + elif crashtracker_config.stacktrace_resolver == "safe": + crashtracker.set_resolve_frames_safe() + else: + crashtracker.set_resolve_frames_disable() + + if crashtracker_config.stdout_filename: + crashtracker.set_stdout_filename(crashtracker_config.stdout_filename) + if crashtracker_config.stderr_filename: + crashtracker.set_stderr_filename(crashtracker_config.stderr_filename) + + # Add user tags + for key, value in crashtracker_config.tags.items(): + add_tag(key, value) + + # Only start if it is enabled + if crashtracker_config.enabled: + return crashtracker.start() + return False diff --git a/ddtrace/internal/datadog/profiling/crashtracker/__init__.py b/ddtrace/internal/datadog/profiling/crashtracker/__init__.py index a4a3542e18b..54d4f68f51c 100644 --- a/ddtrace/internal/datadog/profiling/crashtracker/__init__.py +++ b/ddtrace/internal/datadog/profiling/crashtracker/__init__.py @@ -4,6 +4,10 @@ failure_msg = "" +def _default_return_false(*args, **kwargs): + return False + + try: from ._crashtracker import * # noqa: F403, F401 @@ -11,3 +15,12 @@ except Exception as e: failure_msg = str(e) + + # Crashtracker is used early during startup, and so it must be robust across installations. + # Here we just stub everything. + def __getattr__(name): + if name == "failure_msg": + return failure_msg + if name == "is_available": + return False + return _default_return_false diff --git a/ddtrace/internal/datadog/profiling/crashtracker/_crashtracker.pyi b/ddtrace/internal/datadog/profiling/crashtracker/_crashtracker.pyi index f455456b45b..a8eea6a2348 100644 --- a/ddtrace/internal/datadog/profiling/crashtracker/_crashtracker.pyi +++ b/ddtrace/internal/datadog/profiling/crashtracker/_crashtracker.pyi @@ -17,5 +17,6 @@ def set_resolve_frames_full() -> None: ... def set_profiling_state_sampling(on: bool) -> None: ... def set_profiling_state_unwinding(on: bool) -> None: ... def set_profiling_state_serializing(on: bool) -> None: ... +def set_tag(key: StringType, value: StringType) -> None: ... def start() -> bool: ... def is_started() -> bool: ... diff --git a/ddtrace/internal/datadog/profiling/crashtracker/_crashtracker.pyx b/ddtrace/internal/datadog/profiling/crashtracker/_crashtracker.pyx index 0f1d5606686..b7b6fdb684d 100644 --- a/ddtrace/internal/datadog/profiling/crashtracker/_crashtracker.pyx +++ b/ddtrace/internal/datadog/profiling/crashtracker/_crashtracker.pyx @@ -33,6 +33,7 @@ cdef extern from "crashtracker_interface.hpp": void crashtracker_set_resolve_frames_full() void crashtracker_set_resolve_frames_safe() bint crashtracker_set_receiver_binary_path(string_view path) + void crashtracker_set_tag(string_view key, string_view value) void crashtracker_profiling_state_sampling_start() void crashtracker_profiling_state_sampling_stop() void crashtracker_profiling_state_unwinding_start() @@ -134,6 +135,15 @@ def set_profiling_state_serializing(on: bool) -> None: crashtracker_profiling_state_serializing_stop() +def set_tag(key: StringType, value: StringType) -> None: + key_bytes = ensure_binary_or_empty(key) + value_bytes = ensure_binary_or_empty(value) + crashtracker_set_tag( + string_view(key_bytes, len(key_bytes)), + string_view(value_bytes, len(value_bytes)) + ) + + def start() -> bool: # The file is "crashtracker_exe" in the same directory as the libdd_wrapper.so exe_dir = os.path.dirname(__file__) diff --git a/ddtrace/internal/datadog/profiling/dd_wrapper/include/crashtracker.hpp b/ddtrace/internal/datadog/profiling/dd_wrapper/include/crashtracker.hpp index ef141cd5ce4..a54b8a9c8ad 100644 --- a/ddtrace/internal/datadog/profiling/dd_wrapper/include/crashtracker.hpp +++ b/ddtrace/internal/datadog/profiling/dd_wrapper/include/crashtracker.hpp @@ -7,6 +7,7 @@ #include #include #include +#include namespace Datadog { @@ -46,6 +47,8 @@ class Crashtracker std::string library_version; std::string url; + std::unordered_map user_tags; + static constexpr std::string_view family{ g_language_name }; static constexpr std::string_view library_name{ g_library_name }; @@ -65,6 +68,7 @@ class Crashtracker void set_runtime_version(std::string_view _runtime_version); void set_library_version(std::string_view _library_version); void set_url(std::string_view _url); + void set_tag(std::string_view _key, std::string_view _value); void set_create_alt_stack(bool _create_alt_stack); void set_stderr_filename(std::string_view _stderr_filename); diff --git a/ddtrace/internal/datadog/profiling/dd_wrapper/include/crashtracker_interface.hpp b/ddtrace/internal/datadog/profiling/dd_wrapper/include/crashtracker_interface.hpp index 101e68f87d1..f3c747a2236 100644 --- a/ddtrace/internal/datadog/profiling/dd_wrapper/include/crashtracker_interface.hpp +++ b/ddtrace/internal/datadog/profiling/dd_wrapper/include/crashtracker_interface.hpp @@ -24,6 +24,7 @@ extern "C" void crashtracker_set_resolve_frames_full(); void crashtracker_set_resolve_frames_safe(); bool crashtracker_set_receiver_binary_path(std::string_view path); + void crashtracker_set_tag(std::string_view key, std::string_view value); void crashtracker_profiling_state_sampling_start(); void crashtracker_profiling_state_sampling_stop(); void crashtracker_profiling_state_unwinding_start(); diff --git a/ddtrace/internal/datadog/profiling/dd_wrapper/src/crashtracker.cpp b/ddtrace/internal/datadog/profiling/dd_wrapper/src/crashtracker.cpp index e82b1d737a7..d1925cb0d27 100644 --- a/ddtrace/internal/datadog/profiling/dd_wrapper/src/crashtracker.cpp +++ b/ddtrace/internal/datadog/profiling/dd_wrapper/src/crashtracker.cpp @@ -86,6 +86,16 @@ Datadog::Crashtracker::set_library_version(std::string_view _library_version) library_version = std::string(_library_version); } +void +Datadog::Crashtracker::set_tag(std::string_view key, std::string_view value) +{ + // Maybe this should be called "add tag," but the interface to the uploader is already called "set_tag" + // and we have another refactor incoming anyway, so let's just kick the can for now + if (!key.empty() && !value.empty()) { + user_tags[std::string(key)] = std::string(value); + } +} + bool Datadog::Crashtracker::set_receiver_binary_path(std::string_view _path) { @@ -147,10 +157,19 @@ Datadog::Crashtracker::get_tags() { ExportTagKey::library_version, library_version }, }; + // Add system tags std::string errmsg; // Populated, but unused - for (const auto& [tag, data] : tag_data) { - if (!data.empty()) { - add_tag(tags, tag, data, errmsg); // We don't have a good way of handling errors here + for (const auto& [key, value] : tag_data) { + // NB - keys here are members of an enum; `add_tag()` specialization below will stringify them + if (!value.empty()) { + add_tag(tags, key, value, errmsg); // We don't have a good way of handling errors here + } + } + + // Add user tags + for (const auto& [key, value] : user_tags) { + if (!key.empty() && !value.empty()) { + add_tag(tags, key, value, errmsg); } } diff --git a/ddtrace/internal/datadog/profiling/dd_wrapper/src/crashtracker_interface.cpp b/ddtrace/internal/datadog/profiling/dd_wrapper/src/crashtracker_interface.cpp index 677f128dd06..9c9e3788541 100644 --- a/ddtrace/internal/datadog/profiling/dd_wrapper/src/crashtracker_interface.cpp +++ b/ddtrace/internal/datadog/profiling/dd_wrapper/src/crashtracker_interface.cpp @@ -112,6 +112,12 @@ crashtracker_set_receiver_binary_path(std::string_view path) // cppcheck-suppres return crashtracker.set_receiver_binary_path(path); } +void +crashtracker_set_tag(std::string_view key, std::string_view value) // cppcheck-suppress unusedFunction +{ + crashtracker.set_tag(key, value); +} + // Store the old segfault handler (uses sigaction prototype) void (*old_sigsegv_handler)(int, siginfo_t*, void*) = nullptr; void (*old_sigbus_handler)(int, siginfo_t*, void*) = nullptr; diff --git a/ddtrace/internal/runtime/__init__.py b/ddtrace/internal/runtime/__init__.py index 3ccfcfa362d..e34182aec72 100644 --- a/ddtrace/internal/runtime/__init__.py +++ b/ddtrace/internal/runtime/__init__.py @@ -9,12 +9,22 @@ ] -def _generate_runtime_id(): +def _generate_runtime_id() -> str: return uuid.uuid4().hex -_RUNTIME_ID = _generate_runtime_id() +_RUNTIME_ID: str = _generate_runtime_id() _ANCESTOR_RUNTIME_ID: t.Optional[str] = None +_ON_RUNTIME_ID_CHANGE: t.Set[t.Callable[[str], None]] = set() + + +def on_runtime_id_change(cb: t.Callable[[str], None]) -> None: + """Register a callback to be called when the runtime ID changes. + + This can happen after a fork. + """ + global _ON_RUNTIME_ID_CHANGE + _ON_RUNTIME_ID_CHANGE.add(cb) @forksafe.register @@ -26,6 +36,8 @@ def _set_runtime_id(): _ANCESTOR_RUNTIME_ID = _RUNTIME_ID _RUNTIME_ID = _generate_runtime_id() + for cb in _ON_RUNTIME_ID_CHANGE: + cb(_RUNTIME_ID) def get_runtime_id(): diff --git a/ddtrace/internal/telemetry/constants.py b/ddtrace/internal/telemetry/constants.py index 704a99725dd..73c11df1099 100644 --- a/ddtrace/internal/telemetry/constants.py +++ b/ddtrace/internal/telemetry/constants.py @@ -1,3 +1,6 @@ +from enum import Enum + + TELEMETRY_NAMESPACE_TAG_TRACER = "tracers" TELEMETRY_NAMESPACE_TAG_APPSEC = "appsec" TELEMETRY_NAMESPACE_TAG_IAST = "iast" @@ -6,10 +9,17 @@ TELEMETRY_TYPE_DISTRIBUTION = "distributions" TELEMETRY_TYPE_LOGS = "logs" + +class TELEMETRY_LOG_LEVEL(Enum): + DEBUG = "DEBUG" + WARNING = "WARN" + ERROR = "ERROR" + + # Configuration names must map to values supported by backend services: # https://github.com/DataDog/dd-go/blob/f88e85d64b173e7733ac03e23576d1c9be37f32e/trace/apps/tracer-telemetry-intake/telemetry-payload/static/config_norm_rules.json TELEMETRY_DYNAMIC_INSTRUMENTATION_ENABLED = "DD_DYNAMIC_INSTRUMENTATION_ENABLED" -TELEMETRY_EXCEPTION_DEBUGGING_ENABLED = "DD_EXCEPTION_DEBUGGING_ENABLED" +TELEMETRY_EXCEPTION_REPLAY_ENABLED = "DD_EXCEPTION_REPLAY_ENABLED" # Tracing Features @@ -70,3 +80,14 @@ TELEMETRY_INJECT_WAS_ATTEMPTED = "DD_LIB_INJECTION_ATTEMPTED" TELEMETRY_LIB_WAS_INJECTED = "DD_LIB_INJECTED" TELEMETRY_LIB_INJECTION_FORCED = "DD_INJECT_FORCE" + + +# Crashtracker +TELEMETRY_CRASHTRACKING_ENABLED = "crashtracking_enabled" # Env var enabled +TELEMETRY_CRASHTRACKING_AVAILABLE = "crashtracking_available" # Feature is available +TELEMETRY_CRASHTRACKING_STARTED = "crashtracking_started" # Crashtracking is running +TELEMETRY_CRASHTRACKING_STDOUT_FILENAME = "crashtracking_stdout_filename" +TELEMETRY_CRASHTRACKING_STDERR_FILENAME = "crashtracking_stderr_filename" +TELEMETRY_CRASHTRACKING_ALT_STACK = "crashtracking_alt_stack" +TELEMETRY_CRASHTRACKING_STACKTRACE_RESOLVER = "crashtracking_stacktrace_resolver" +TELEMETRY_CRASHTRACKING_DEBUG_URL = "crashtracking_debug_url" diff --git a/ddtrace/internal/telemetry/writer.py b/ddtrace/internal/telemetry/writer.py index afaa42358ec..f9f6dbc729d 100644 --- a/ddtrace/internal/telemetry/writer.py +++ b/ddtrace/internal/telemetry/writer.py @@ -16,14 +16,16 @@ from ...internal import atexit from ...internal import forksafe from ...internal.compat import parse +from ...internal.core import crashtracking from ...internal.module import BaseModuleWatchdog from ...internal.module import origin from ...internal.schema import SCHEMA_VERSION from ...internal.schema import _remove_client_service_names from ...settings import _config as config from ...settings.config import _ConfigSource +from ...settings.crashtracker import config as crashtracker_config from ...settings.dynamic_instrumentation import config as di_config -from ...settings.exception_debugging import config as ed_config +from ...settings.exception_replay import config as er_config from ...settings.peer_service import _ps_config from ...settings.profiling import config as prof_config from ..agent import get_connection @@ -47,14 +49,23 @@ from .constants import TELEMETRY_AGENT_URL from .constants import TELEMETRY_ANALYTICS_ENABLED from .constants import TELEMETRY_CLIENT_IP_ENABLED +from .constants import TELEMETRY_CRASHTRACKING_ALT_STACK +from .constants import TELEMETRY_CRASHTRACKING_AVAILABLE +from .constants import TELEMETRY_CRASHTRACKING_DEBUG_URL +from .constants import TELEMETRY_CRASHTRACKING_ENABLED +from .constants import TELEMETRY_CRASHTRACKING_STACKTRACE_RESOLVER +from .constants import TELEMETRY_CRASHTRACKING_STARTED +from .constants import TELEMETRY_CRASHTRACKING_STDERR_FILENAME +from .constants import TELEMETRY_CRASHTRACKING_STDOUT_FILENAME from .constants import TELEMETRY_DOGSTATSD_PORT from .constants import TELEMETRY_DOGSTATSD_URL from .constants import TELEMETRY_DYNAMIC_INSTRUMENTATION_ENABLED from .constants import TELEMETRY_ENABLED -from .constants import TELEMETRY_EXCEPTION_DEBUGGING_ENABLED +from .constants import TELEMETRY_EXCEPTION_REPLAY_ENABLED from .constants import TELEMETRY_INJECT_WAS_ATTEMPTED from .constants import TELEMETRY_LIB_INJECTION_FORCED from .constants import TELEMETRY_LIB_WAS_INJECTED +from .constants import TELEMETRY_LOG_LEVEL # noqa:F401 from .constants import TELEMETRY_OBFUSCATION_QUERY_STRING_PATTERN from .constants import TELEMETRY_OTEL_ENABLED from .constants import TELEMETRY_PARTIAL_FLUSH_ENABLED @@ -230,7 +241,7 @@ class TelemetryWriter(PeriodicService): # of `itertools.count()` which is a CPython implementation detail. The sequence field in telemetry # payloads is only used in tests and is not required to process Telemetry events. _sequence = itertools.count(1) - _ORIGINAL_EXCEPTHOOK = sys.excepthook + _ORIGINAL_EXCEPTHOOK = staticmethod(sys.excepthook) def __init__(self, is_periodic=True, agentless=None): # type: (bool, Optional[bool]) -> None @@ -452,7 +463,7 @@ def _app_started_event(self, register_app_shutdown=True): inst_config_id_entry, (TELEMETRY_STARTUP_LOGS_ENABLED, config._startup_logs_enabled, "unknown"), (TELEMETRY_DYNAMIC_INSTRUMENTATION_ENABLED, di_config.enabled, "unknown"), - (TELEMETRY_EXCEPTION_DEBUGGING_ENABLED, ed_config.enabled, "unknown"), + (TELEMETRY_EXCEPTION_REPLAY_ENABLED, er_config.enabled, "unknown"), (TELEMETRY_PROPAGATION_STYLE_INJECT, ",".join(config._propagation_style_inject), "unknown"), (TELEMETRY_PROPAGATION_STYLE_EXTRACT, ",".join(config._propagation_style_extract), "unknown"), ("ddtrace_bootstrapped", config._ddtrace_bootstrapped, "unknown"), @@ -510,6 +521,15 @@ def _app_started_event(self, register_app_shutdown=True): (TELEMETRY_INJECT_WAS_ATTEMPTED, config._inject_was_attempted, "unknown"), (TELEMETRY_LIB_WAS_INJECTED, config._lib_was_injected, "unknown"), (TELEMETRY_LIB_INJECTION_FORCED, config._inject_force, "unknown"), + # Crashtracker + (TELEMETRY_CRASHTRACKING_ENABLED, crashtracker_config.enabled, "unknown"), + (TELEMETRY_CRASHTRACKING_STARTED, crashtracking.is_started(), "unknown"), + (TELEMETRY_CRASHTRACKING_AVAILABLE, crashtracking.is_available, "unknown"), + (TELEMETRY_CRASHTRACKING_STACKTRACE_RESOLVER, str(crashtracker_config.stacktrace_resolver), "unknown"), + (TELEMETRY_CRASHTRACKING_STDOUT_FILENAME, str(crashtracker_config.stdout_filename), "unknown"), + (TELEMETRY_CRASHTRACKING_STDERR_FILENAME, str(crashtracker_config.stderr_filename), "unknown"), + (TELEMETRY_CRASHTRACKING_DEBUG_URL, str(crashtracker_config.debug_url), "unknown"), + (TELEMETRY_CRASHTRACKING_ALT_STACK, crashtracker_config.alt_stack, "unknown"), ] + get_python_config_vars() ) @@ -633,7 +653,7 @@ def add_configurations(self, configuration_list): } def add_log(self, level, message, stack_trace="", tags=None): - # type: (str, str, str, Optional[Dict]) -> None + # type: (TELEMETRY_LOG_LEVEL, str, str, Optional[Dict]) -> None """ Queues log. This event is meant to send library logs to Datadog’s backend through the Telemetry intake. This will make support cycles easier and ensure we know about potentially silent issues in libraries. @@ -645,7 +665,7 @@ def add_log(self, level, message, stack_trace="", tags=None): data = LogData( { "message": message, - "level": level, + "level": level.value, "tracer_time": int(time.time()), } ) @@ -863,7 +883,7 @@ def _telemetry_excepthook(self, tp, value, root_traceback): self.app_shutdown() - return self._ORIGINAL_EXCEPTHOOK(tp, value, root_traceback) + return TelemetryWriter._ORIGINAL_EXCEPTHOOK(tp, value, root_traceback) def install_excepthook(self): """Install a hook that intercepts unhandled exception and send metrics about them.""" @@ -871,4 +891,4 @@ def install_excepthook(self): def uninstall_excepthook(self): """Uninstall the global tracer except hook.""" - sys.excepthook = self._ORIGINAL_EXCEPTHOOK + sys.excepthook = TelemetryWriter._ORIGINAL_EXCEPTHOOK diff --git a/ddtrace/internal/utils/formats.py b/ddtrace/internal/utils/formats.py index 778c01f2797..e9e3b85f434 100644 --- a/ddtrace/internal/utils/formats.py +++ b/ddtrace/internal/utils/formats.py @@ -70,6 +70,8 @@ def parse_tags_str(tags_str): The expected string is of the form:: "key1:value1,key2:value2" "key1:value1 key2:value2" + "key1,key2" + "key1 key2" :param tags_str: A string of the above form to parse tags from. :return: A dict containing the tags that were parsed. @@ -86,10 +88,14 @@ def parse_tags(tags): for tag in tags: key, sep, value = tag.partition(":") - if not sep or not key or "," in key: + if not key.strip() or "," in key or (sep and not value): invalids.append(tag) - else: + elif sep: + # parse key:val,key2:value2 parsed_tags.append((key, value)) + else: + # parse key,key2 + parsed_tags.append((key, "")) return parsed_tags, invalids diff --git a/ddtrace/llmobs/_integrations/anthropic.py b/ddtrace/llmobs/_integrations/anthropic.py index ace7baa52d9..52c9344863c 100644 --- a/ddtrace/llmobs/_integrations/anthropic.py +++ b/ddtrace/llmobs/_integrations/anthropic.py @@ -117,11 +117,19 @@ def _extract_input_message(self, messages, system_prompt=None): input_messages.append({"content": "([IMAGE DETECTED])", "role": role}) elif _get_attr(block, "type", None) == "tool_use": - name = _get_attr(block, "name", "") - inputs = _get_attr(block, "input", "") - input_messages.append( - {"content": "[tool: {}]\n\n{}".format(name, json.dumps(inputs)), "role": role} - ) + text = _get_attr(block, "text", None) + input_data = _get_attr(block, "input", "") + if isinstance(input_data, str): + input_data = json.loads(input_data) + tool_call_info = { + "name": _get_attr(block, "name", ""), + "arguments": input_data, + "tool_id": _get_attr(block, "id", ""), + "type": _get_attr(block, "type", ""), + } + if text is None: + text = "" + input_messages.append({"content": text, "role": role, "tool_calls": [tool_call_info]}) elif _get_attr(block, "type", None) == "tool_result": content = _get_attr(block, "content", None) @@ -143,7 +151,7 @@ def _extract_input_message(self, messages, system_prompt=None): def _extract_output_message(self, response): """Extract output messages from the stored response.""" output_messages = [] - content = _get_attr(response, "content", None) + content = _get_attr(response, "content", "") role = _get_attr(response, "role", "") if isinstance(content, str): @@ -156,11 +164,18 @@ def _extract_output_message(self, response): output_messages.append({"content": text, "role": role}) else: if _get_attr(completion, "type", None) == "tool_use": - name = _get_attr(completion, "name", "") - inputs = _get_attr(completion, "input", "") - output_messages.append( - {"content": "[tool: {}]\n\n{}".format(name, json.dumps(inputs)), "role": role} - ) + input_data = _get_attr(completion, "input", "") + if isinstance(input_data, str): + input_data = json.loads(input_data) + tool_call_info = { + "name": _get_attr(completion, "name", ""), + "arguments": input_data, + "tool_id": _get_attr(completion, "id", ""), + "type": _get_attr(completion, "type", ""), + } + if text is None: + text = "" + output_messages.append({"content": text, "role": role, "tool_calls": [tool_call_info]}) return output_messages def record_usage(self, span: Span, usage: Dict[str, Any]) -> None: diff --git a/ddtrace/llmobs/_integrations/openai.py b/ddtrace/llmobs/_integrations/openai.py index f1ce88043cd..1344c1ea84a 100644 --- a/ddtrace/llmobs/_integrations/openai.py +++ b/ddtrace/llmobs/_integrations/openai.py @@ -206,20 +206,32 @@ def _llmobs_set_meta_tags_from_chat( return output_messages = [] for idx, choice in enumerate(resp.choices): + tool_calls_info = [] content = getattr(choice.message, "content", "") if getattr(choice.message, "function_call", None): - content = "[function: {}]\n\n{}".format( - getattr(choice.message.function_call, "name", ""), - getattr(choice.message.function_call, "arguments", ""), + function_call_info = { + "name": getattr(choice.message.function_call, "name", ""), + "arguments": json.loads(getattr(choice.message.function_call, "arguments", "")), + } + if content is None: + content = "" + output_messages.append( + {"content": content, "role": choice.message.role, "tool_calls": [function_call_info]} ) elif getattr(choice.message, "tool_calls", None): - content = "" for tool_call in choice.message.tool_calls: - content += "\n[tool: {}]\n\n{}\n".format( - getattr(tool_call.function, "name", ""), - getattr(tool_call.function, "arguments", ""), - ) - output_messages.append({"content": str(content).strip(), "role": choice.message.role}) + tool_call_info = { + "name": getattr(tool_call.function, "name", ""), + "arguments": json.loads(getattr(tool_call.function, "arguments", "")), + "tool_id": getattr(tool_call, "id", ""), + "type": getattr(tool_call, "type", ""), + } + tool_calls_info.append(tool_call_info) + if content is None: + content = "" + output_messages.append({"content": content, "role": choice.message.role, "tool_calls": tool_calls_info}) + else: + output_messages.append({"content": content, "role": choice.message.role}) span.set_tag_str(OUTPUT_MESSAGES, json.dumps(output_messages)) @staticmethod diff --git a/ddtrace/propagation/_database_monitoring.py b/ddtrace/propagation/_database_monitoring.py index 9faf4f5fb2a..5b585b13210 100644 --- a/ddtrace/propagation/_database_monitoring.py +++ b/ddtrace/propagation/_database_monitoring.py @@ -19,16 +19,23 @@ from ddtrace import Span # noqa:F401 -DBM_PARENT_SERVICE_NAME_KEY = "ddps" -DBM_DATABASE_SERVICE_NAME_KEY = "dddbs" -DBM_PEER_HOSTNAME_KEY = "ddh" -DBM_PEER_DB_NAME_KEY = "dddb" -DBM_PEER_SERVICE_KEY = "ddprs" -DBM_ENVIRONMENT_KEY = "dde" -DBM_VERSION_KEY = "ddpv" -DBM_TRACE_PARENT_KEY = "traceparent" -DBM_TRACE_INJECTED_TAG = "_dd.dbm_trace_injected" - +import sys + + +if sys.version_info >= (3, 8): + from typing import Literal # noqa:F401 +else: + from typing_extensions import Literal # noqa:F401 + +DBM_PARENT_SERVICE_NAME_KEY: Literal["ddps"] = "ddps" +DBM_DATABASE_SERVICE_NAME_KEY: Literal["dddbs"] = "dddbs" +DBM_PEER_HOSTNAME_KEY: Literal["ddh"] = "ddh" +DBM_PEER_DB_NAME_KEY: Literal["dddb"] = "dddb" +DBM_PEER_SERVICE_KEY: Literal["ddprs"] = "ddprs" +DBM_ENVIRONMENT_KEY: Literal["dde"] = "dde" +DBM_VERSION_KEY: Literal["ddpv"] = "ddpv" +DBM_TRACE_PARENT_KEY: Literal["traceparent"] = "traceparent" +DBM_TRACE_INJECTED_TAG: Literal["_dd.dbm_trace_injected"] = "_dd.dbm_trace_injected" log = get_logger(__name__) diff --git a/ddtrace/propagation/http.py b/ddtrace/propagation/http.py index ddbd2f14ef1..f5d21327d59 100644 --- a/ddtrace/propagation/http.py +++ b/ddtrace/propagation/http.py @@ -62,19 +62,19 @@ # HTTP headers one should set for distributed tracing. # These are cross-language (eg: Python, Go and other implementations should honor these) -_HTTP_BAGGAGE_PREFIX = "ot-baggage-" -HTTP_HEADER_TRACE_ID = "x-datadog-trace-id" -HTTP_HEADER_PARENT_ID = "x-datadog-parent-id" -HTTP_HEADER_SAMPLING_PRIORITY = "x-datadog-sampling-priority" -HTTP_HEADER_ORIGIN = "x-datadog-origin" -_HTTP_HEADER_B3_SINGLE = "b3" -_HTTP_HEADER_B3_TRACE_ID = "x-b3-traceid" -_HTTP_HEADER_B3_SPAN_ID = "x-b3-spanid" -_HTTP_HEADER_B3_SAMPLED = "x-b3-sampled" -_HTTP_HEADER_B3_FLAGS = "x-b3-flags" -_HTTP_HEADER_TAGS = "x-datadog-tags" -_HTTP_HEADER_TRACEPARENT = "traceparent" -_HTTP_HEADER_TRACESTATE = "tracestate" +_HTTP_BAGGAGE_PREFIX: Literal["ot-baggage-"] = "ot-baggage-" +HTTP_HEADER_TRACE_ID: Literal["x-datadog-trace-id"] = "x-datadog-trace-id" +HTTP_HEADER_PARENT_ID: Literal["x-datadog-parent-id"] = "x-datadog-parent-id" +HTTP_HEADER_SAMPLING_PRIORITY: Literal["x-datadog-sampling-priority"] = "x-datadog-sampling-priority" +HTTP_HEADER_ORIGIN: Literal["x-datadog-origin"] = "x-datadog-origin" +_HTTP_HEADER_B3_SINGLE: Literal["b3"] = "b3" +_HTTP_HEADER_B3_TRACE_ID: Literal["x-b3-traceid"] = "x-b3-traceid" +_HTTP_HEADER_B3_SPAN_ID: Literal["x-b3-spanid"] = "x-b3-spanid" +_HTTP_HEADER_B3_SAMPLED: Literal["x-b3-sampled"] = "x-b3-sampled" +_HTTP_HEADER_B3_FLAGS: Literal["x-b3-flags"] = "x-b3-flags" +_HTTP_HEADER_TAGS: Literal["x-datadog-tags"] = "x-datadog-tags" +_HTTP_HEADER_TRACEPARENT: Literal["traceparent"] = "traceparent" +_HTTP_HEADER_TRACESTATE: Literal["tracestate"] = "tracestate" def _possible_header(header): diff --git a/ddtrace/settings/crashtracker.py b/ddtrace/settings/crashtracker.py index 1d7b1dae61e..a27af59bca8 100644 --- a/ddtrace/settings/crashtracker.py +++ b/ddtrace/settings/crashtracker.py @@ -2,27 +2,34 @@ from envier import En -from ddtrace.internal.datadog.profiling import crashtracker +from ddtrace.internal.utils.formats import parse_tags_str -def _derive_stacktrace_resolver(config): - # type: (CrashtrackerConfig) -> t.Optional[str] - resolver = config._stacktrace_resolver or "" +resolver_default = "full" + + +def _derive_stacktrace_resolver(config: "CrashtrackerConfig") -> t.Optional[str]: + resolver = str(config._stacktrace_resolver or "") resolver = resolver.lower() - if resolver in ("fast", "full"): + if resolver == "none": + return None + if resolver in ("fast", "full", "safe"): return resolver - return None + + # Invalid values should degrade to the default + return resolver_default -def _check_for_crashtracker_available(): +def _check_for_crashtracker_available() -> bool: + from ddtrace.internal.datadog.profiling import crashtracker + return crashtracker.is_available -def _derive_crashtracker_enabled(config): - # type: (CrashtrackerConfig) -> bool +def _derive_crashtracker_enabled(config: "CrashtrackerConfig") -> bool: if not _check_for_crashtracker_available(): return False - return config._enabled + return bool(config._enabled) class CrashtrackerConfig(En): @@ -31,7 +38,7 @@ class CrashtrackerConfig(En): _enabled = En.v( bool, "enabled", - default=False, + default=True, help_type="Boolean", help="Enables the crashtracker", ) @@ -43,8 +50,8 @@ class CrashtrackerConfig(En): "debug_url", default=None, help_type="String", - help="Overrides the URL parameter set by the ddtrace library. This is for testing and debugging purposes" - " and is not generally useful for end-users.", + help="Overrides the URL parameter set by the ddtrace library. " + "This is generally useful only for dd-trace-py development.", ) stdout_filename = En.v( @@ -68,15 +75,29 @@ class CrashtrackerConfig(En): "alt_stack", default=False, help_type="Boolean", - help="Whether to use an alternate stack for the crashtracker. This is used for internal development.", + help="Whether to use an alternate stack for the crashtracker." + "This is generally useful only for dd-trace-py development.", ) _stacktrace_resolver = En.v( t.Optional[str], "stacktrace_resolver", - default=None, + default=resolver_default, help_type="String", help="How to collect native stack traces during a crash, if at all. Accepted values are 'none', 'fast'," - " and 'full'. The default value is 'none' (no stack traces).", + " 'safe', and 'full'. The default value is '" + resolver_default + "'.", ) stacktrace_resolver = En.d(t.Optional[str], _derive_stacktrace_resolver) + + tags = En.v( + dict, + "tags", + parser=parse_tags_str, + default={}, + help_type="Mapping", + help="Additional crashtracking tags. Must be a list in the ``key1:value,key2:value2`` format. " + "This is generally useful only for dd-trace-py development.", + ) + + +config = CrashtrackerConfig() diff --git a/ddtrace/settings/exception_debugging.py b/ddtrace/settings/exception_replay.py similarity index 51% rename from ddtrace/settings/exception_debugging.py rename to ddtrace/settings/exception_replay.py index 7329e97bf6a..d85e38b1fad 100644 --- a/ddtrace/settings/exception_debugging.py +++ b/ddtrace/settings/exception_replay.py @@ -1,16 +1,17 @@ from envier import En -class ExceptionDebuggingConfig(En): - __prefix__ = "dd.exception_debugging" +class ExceptionReplayConfig(En): + __prefix__ = "dd.exception" enabled = En.v( bool, - "enabled", + "replay.enabled", default=False, help_type="Boolean", help="Enable automatic capturing of exception debugging information", + deprecations=[("debugging.enabled", None, "3.0")], ) -config = ExceptionDebuggingConfig() +config = ExceptionReplayConfig() diff --git a/docker/Dockerfile_py311_debug_mode b/docker/Dockerfile_py311_debug_mode index 64e53d93bc2..1366bceb2ff 100644 --- a/docker/Dockerfile_py311_debug_mode +++ b/docker/Dockerfile_py311_debug_mode @@ -62,12 +62,10 @@ RUN git clone --depth 1 --branch v3.11.6 https://github.com/python/cpython/ "${P && cd - RUN python3.11 -m pip install -U pip \ - && python3.11 -m pip install cattrs setuptools cython wheel cmake pytest pytest-cov hypothesis pytest-memray\ + && python3.11 -m pip install setuptools cython wheel cmake pytest pytest-cov hypothesis pytest-memray\ memray==1.12.0 \ requests==2.31.0 \ - attrs>=20 \ bytecode>=0.14.0 \ - cattrs \ envier~=0.5 \ opentelemetry-api>=1 \ protobuf>=3 \ diff --git a/docker/Dockerfile_py312_debug_mode b/docker/Dockerfile_py312_debug_mode index 52e0a9c26ac..9bcb1bf5f41 100644 --- a/docker/Dockerfile_py312_debug_mode +++ b/docker/Dockerfile_py312_debug_mode @@ -62,12 +62,10 @@ RUN git clone --depth 1 --branch v3.12.3 https://github.com/python/cpython/ "${P && cd - RUN python3.12 -m pip install -U pip \ - && python3.12 -m pip install cattrs setuptools cython wheel cmake pytest pytest-cov hypothesis pytest-memray\ + && python3.12 -m pip install setuptools cython wheel cmake pytest pytest-cov hypothesis pytest-memray\ memray==1.12.0 \ requests==2.31.0 \ - attrs>=20 \ bytecode>=0.14.0 \ - cattrs \ envier~=0.5 \ opentelemetry-api>=1 \ protobuf>=3 \ diff --git a/docs/configuration.rst b/docs/configuration.rst index 3b2056d9b55..b95ed0639fd 100644 --- a/docs/configuration.rst +++ b/docs/configuration.rst @@ -31,6 +31,8 @@ The following environment variables for the tracer are supported: DD_TAGS: description: | Set global tags to be attached to every span. Value must be either comma or space separated. e.g. ``key1:value1,key2:value2`` or ``key1:value key2:value2``. + + If a tag value is not supplied the value will be an empty string. e.g. ``key1,key2`` or ``key1 key2``. version_added: v0.38.0: Comma separated support added v0.48.0: Space separated support added @@ -290,9 +292,11 @@ The following environment variables for the tracer are supported: DD_TRACE_HEADER_TAGS: description: | - A map of case-insensitive header keys to tag names. Automatically applies matching header values as tags on root spans. + A map of case-insensitive http headers to tag names. Automatically applies matching header values as tags on request and response spans. For example if + ``DD_TRACE_HEADER_TAGS=User-Agent:http.useragent,content-type:http.content_type``. The value of the header will be stored in tags with the name ``http.useragent`` and ``http.content_type``. - For example, ``User-Agent:http.useragent,content-type:http.content_type``. + If a tag name is not supplied the header name will be used. For example if + ``DD_TRACE_HEADER_TAGS=User-Agent,content-type``. The value of http header will be stored in tags with the names ``http..headers.user-agent`` and ``http..headers.content-type``. DD_TRACE_API_VERSION: default: | @@ -629,6 +633,14 @@ The following environment variables for the tracer are supported: version_added: v2.3.0: + DD_BOTOCORE_SERVICE: + type: String + default: "aws" + description: | + Set the service name, allowing default service name overrides for traces in botocore. + version_added: + v2.11.0: + DD_BOTOCORE_PROPAGATION_ENABLED: type: Boolean default: False @@ -663,7 +675,7 @@ Dynamic Instrumentation .. ddtrace-envier-configuration:: ddtrace.settings.dynamic_instrumentation:DynamicInstrumentationConfig -Exception Debugging -------------------- +Exception Replay +---------------- -.. ddtrace-envier-configuration:: ddtrace.settings.exception_debugging:ExceptionDebuggingConfig +.. ddtrace-envier-configuration:: ddtrace.settings.exception_replay:ExceptionReplayConfig diff --git a/docs/contributing-integrations.rst b/docs/contributing-integrations.rst index bbb21ae9085..faa7570ddff 100644 --- a/docs/contributing-integrations.rst +++ b/docs/contributing-integrations.rst @@ -110,14 +110,15 @@ What are "snapshot tests"? -------------------------- Many of the tests are based on "snapshots": saved copies of actual traces sent to the -`APM test agent <../README.md#use-the-apm-test-agent>`_. +`APM test agent <../README.md#use-the-apm-test-agent>`_. When an integration is added or modified, the snapshots +(if they exist) should be updated to match the new expected output. -To update the snapshots expected by a test, first update the library and test code to generate -new traces. Then, delete the snapshot file corresponding to your test at ``tests/snapshots/``. +1. Update the library and test code to generate new traces. +2. Delete the snapshot file corresponding to your test at ``tests/snapshots/`` (if applicable). +3. Use `docker-compose up -d testagent` to start the APM test agent, and then re-run the test. Use `--pass-env` as described + `here <../README.md#use-the-apm-test-agent>`_ to ensure that your test run can talk to the test agent. -Use `docker-compose up -d testagent` to start the APM test agent, and then re-run the test. Use `--pass-env` as described -`here <../README.md#use-the-apm-test-agent>`_ to ensure that your test run can talk to the -test agent. Once the run finishes, the snapshot file will have been regenerated. +Once the run finishes, the snapshot file will have been regenerated. How should I write integration tests for my integration? -------------------------------------------------------- diff --git a/hatch.toml b/hatch.toml index 2cce1db3cb1..6840496bb2e 100644 --- a/hatch.toml +++ b/hatch.toml @@ -15,7 +15,6 @@ dependencies = [ "mypy==0.991", "coverage==7.3.0", "envier==0.5.2", - "types-attrs==19.1.0", "types-docutils==0.19.1.1", "types-protobuf==3.20.4.5", "types-PyYAML==6.0.12.2", @@ -72,8 +71,6 @@ python = "3.10" features = ["opentracing"] dependencies = [ # copied from library dependencies "protobuf>=3", - "attrs>=20", - "cattrs", "typing_extensions", "xmltodict>=0.12", "envier", diff --git a/lib-injection/min_compatible_versions.csv b/lib-injection/min_compatible_versions.csv index 4ff0128c5e5..dfa8389a0ae 100644 --- a/lib-injection/min_compatible_versions.csv +++ b/lib-injection/min_compatible_versions.csv @@ -14,14 +14,15 @@ aiomysql,~=0.1.0 aiopg,~=0.16.0 aiosqlite,0 algoliasearch,~=2.5 +anthropic,~=0.28 anyio,>=3.4.0 aredis,0 -asgiref,~=3.0 +asgiref,~=3.0.0 astunparse,0 async_generator,~=1.10 asyncpg,~=0.22.0 asynctest,==0.13.0 -attrs,>=20 +attrs,==22.1.0 austin-python,~=1.0 blinker,0 boto3,0 @@ -30,7 +31,7 @@ bottle,>=0.12 bytecode,0 cassandra-driver,~=3.24.0 cattrs,<23.1.1 -celery,~=4.4 +celery,~=5.1.0 cfn-lint,~=0.53.1 channels,~=3.0 cherrypy,>=17 @@ -62,18 +63,18 @@ elasticsearch8,~=8.0.1 elasticsearch[async],0 envier,==0.5.2 exceptiongroup,0 -falcon,~=3.0 +falcon,~=3.0.0 fastapi,~=0.64.0 flask,~=0.12.0 flask-caching,~=1.10.0 -flask-login,~=0.6.2 +flask-openapi3,0 gevent,~=20.12.0 git+https://github.com/gnufede/pytest-memray.git@24a3c0735db99eedf57fb36c573680f9bab7cd73,0 googleapis-common-protos,0 graphene,~=3.0.0 graphql-core,~=3.2.0 graphql-relay,0 -greenlet,~=1.0.0 +greenlet,~=1.0 grpcio,~=1.34.0 gunicorn,==20.0.4 gunicorn[gevent],0 @@ -87,13 +88,14 @@ itsdangerous,<2.0 jinja2,~=2.11.0 kombu,>=4.2.0 langchain,==0.0.192 -langchain-aws,0 +langchain-anthropic,==0.1.11 +langchain-aws,==0.1.3 +langchain-cohere,==0.1.4 langchain-community,==0.0.14 langchain-core,==0.1.52 langchain-openai,==0.1.6 langchain-pinecone,==0.1.0 langchain_experimental,==0.0.47 -langsmith,==0.1.58 logbook,~=1.0.0 loguru,~=0.4.0 mako,~=1.1.0 @@ -139,11 +141,11 @@ pyramid,~=1.10 pysqlite3-binary,0 pytest,~=4.0 pytest-aiohttp,0 -pytest-asyncio,==0.21.1 +pytest-asyncio,~=0.21.1 pytest-bdd,>=4.0 pytest-benchmark,>=3.1.0 pytest-cov,==2.9.0 -pytest-django,==3.10.0 +pytest-django[testing],==3.10.0 pytest-mock,==2.0.0 pytest-randomly,0 pytest-sanic,~=1.6.2 @@ -177,6 +179,7 @@ urllib3,~=1.0 uwsgi,0 vcrpy,==4.2.1 vertica-python,>=0.6.0 +virtualenv-clone,0 websockets,<11.0 webtest,0 werkzeug,<1.0 diff --git a/min_compatible_versions.csv b/min_compatible_versions.csv index 4ff0128c5e5..dfa8389a0ae 100644 --- a/min_compatible_versions.csv +++ b/min_compatible_versions.csv @@ -14,14 +14,15 @@ aiomysql,~=0.1.0 aiopg,~=0.16.0 aiosqlite,0 algoliasearch,~=2.5 +anthropic,~=0.28 anyio,>=3.4.0 aredis,0 -asgiref,~=3.0 +asgiref,~=3.0.0 astunparse,0 async_generator,~=1.10 asyncpg,~=0.22.0 asynctest,==0.13.0 -attrs,>=20 +attrs,==22.1.0 austin-python,~=1.0 blinker,0 boto3,0 @@ -30,7 +31,7 @@ bottle,>=0.12 bytecode,0 cassandra-driver,~=3.24.0 cattrs,<23.1.1 -celery,~=4.4 +celery,~=5.1.0 cfn-lint,~=0.53.1 channels,~=3.0 cherrypy,>=17 @@ -62,18 +63,18 @@ elasticsearch8,~=8.0.1 elasticsearch[async],0 envier,==0.5.2 exceptiongroup,0 -falcon,~=3.0 +falcon,~=3.0.0 fastapi,~=0.64.0 flask,~=0.12.0 flask-caching,~=1.10.0 -flask-login,~=0.6.2 +flask-openapi3,0 gevent,~=20.12.0 git+https://github.com/gnufede/pytest-memray.git@24a3c0735db99eedf57fb36c573680f9bab7cd73,0 googleapis-common-protos,0 graphene,~=3.0.0 graphql-core,~=3.2.0 graphql-relay,0 -greenlet,~=1.0.0 +greenlet,~=1.0 grpcio,~=1.34.0 gunicorn,==20.0.4 gunicorn[gevent],0 @@ -87,13 +88,14 @@ itsdangerous,<2.0 jinja2,~=2.11.0 kombu,>=4.2.0 langchain,==0.0.192 -langchain-aws,0 +langchain-anthropic,==0.1.11 +langchain-aws,==0.1.3 +langchain-cohere,==0.1.4 langchain-community,==0.0.14 langchain-core,==0.1.52 langchain-openai,==0.1.6 langchain-pinecone,==0.1.0 langchain_experimental,==0.0.47 -langsmith,==0.1.58 logbook,~=1.0.0 loguru,~=0.4.0 mako,~=1.1.0 @@ -139,11 +141,11 @@ pyramid,~=1.10 pysqlite3-binary,0 pytest,~=4.0 pytest-aiohttp,0 -pytest-asyncio,==0.21.1 +pytest-asyncio,~=0.21.1 pytest-bdd,>=4.0 pytest-benchmark,>=3.1.0 pytest-cov,==2.9.0 -pytest-django,==3.10.0 +pytest-django[testing],==3.10.0 pytest-mock,==2.0.0 pytest-randomly,0 pytest-sanic,~=1.6.2 @@ -177,6 +179,7 @@ urllib3,~=1.0 uwsgi,0 vcrpy,==4.2.1 vertica-python,>=0.6.0 +virtualenv-clone,0 websockets,<11.0 webtest,0 werkzeug,<1.0 diff --git a/pyproject.toml b/pyproject.toml index e08e845b5eb..85a5cd48e56 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,7 +25,6 @@ classifiers = [ "Programming Language :: Python :: 3.12", ] dependencies = [ - "attrs>=20", "bytecode>=0.15.0; python_version>='3.12'", "bytecode>=0.14.0; python_version~='3.11.0'", "bytecode>=0.13.0; python_version<'3.11'", @@ -269,3 +268,7 @@ relative-imports-order = "furthest-to-closest" # Exclude typing stubs as vertical line spacing incompatibility with black # See: https://github.com/astral-sh/ruff/pull/6501 "*.pyi" = ["I001"] + +[tool.ruff.lint] +# Do not auto-fix unused imports (as this deletes things like import ddtrace) +unfixable = ["F401"] diff --git a/releasenotes/notes/add-c0f1d24cf11f23b7.yaml b/releasenotes/notes/add-c0f1d24cf11f23b7.yaml new file mode 100644 index 00000000000..c6dd1fb1805 --- /dev/null +++ b/releasenotes/notes/add-c0f1d24cf11f23b7.yaml @@ -0,0 +1,6 @@ +--- +features: + - | + - botocore: Adds support for overriding the default service name in botocore + by either setting the environment variable ``DD_BOTOCORE_SERVICE`` or configuring it via + `ddtrace.config.botocore["service"]`. diff --git a/releasenotes/notes/asm-avoid-idna-d724dce73afafa93.yaml b/releasenotes/notes/asm-avoid-idna-d724dce73afafa93.yaml new file mode 100644 index 00000000000..58f63e5d8df --- /dev/null +++ b/releasenotes/notes/asm-avoid-idna-d724dce73afafa93.yaml @@ -0,0 +1,4 @@ +--- +fixes: + - | + Code Security: add encodings.idna to the IAST patching denylist to avoid problems with gevent. diff --git a/releasenotes/notes/change-tool-call-output-openai-anthropic-f59f6ef816589cf8.yaml b/releasenotes/notes/change-tool-call-output-openai-anthropic-f59f6ef816589cf8.yaml new file mode 100644 index 00000000000..90b4c7f62d1 --- /dev/null +++ b/releasenotes/notes/change-tool-call-output-openai-anthropic-f59f6ef816589cf8.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + LLM Observability: This introduces improved support for capturing tool + call responses from the OpenAI and Anthropic integrations. diff --git a/releasenotes/notes/deprecate-patch-py-methods-consul-botocore-da36c9501c7fc279.yaml b/releasenotes/notes/deprecate-patch-py-methods-consul-botocore-da36c9501c7fc279.yaml new file mode 100644 index 00000000000..54bfc6eb0c3 --- /dev/null +++ b/releasenotes/notes/deprecate-patch-py-methods-consul-botocore-da36c9501c7fc279.yaml @@ -0,0 +1,6 @@ +--- +deprecations: + - | + botocore: All methods in botocore/patch.py except ``patch()`` and ``unpatch()`` are deprecated and will be removed in version 3.0.0. + - | + consul: All methods in consul/patch.py except ``patch()`` and ``unpatch()`` are deprecated and will be removed in version 3.0.0. diff --git a/releasenotes/notes/feat-pylibmc-support-add-command-8c3545bfd7ac7c9b.yaml b/releasenotes/notes/feat-pylibmc-support-add-command-8c3545bfd7ac7c9b.yaml new file mode 100644 index 00000000000..6a629055bd2 --- /dev/null +++ b/releasenotes/notes/feat-pylibmc-support-add-command-8c3545bfd7ac7c9b.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + pylibmc: adds traces for memcached add command diff --git a/releasenotes/notes/iast-dont-throw-native-a1d1adcf209dc529.yaml b/releasenotes/notes/iast-dont-throw-native-a1d1adcf209dc529.yaml new file mode 100644 index 00000000000..3b353ec074a --- /dev/null +++ b/releasenotes/notes/iast-dont-throw-native-a1d1adcf209dc529.yaml @@ -0,0 +1,4 @@ +--- +fixes: + - | + Code Security: Logs warning instead of throwing an exception in the native module if IAST is not enabled by env var. diff --git a/releasenotes/notes/list_dd_header_tags-f8a9ce1daa2a1cf6.yaml b/releasenotes/notes/list_dd_header_tags-f8a9ce1daa2a1cf6.yaml new file mode 100644 index 00000000000..44a81c9b117 --- /dev/null +++ b/releasenotes/notes/list_dd_header_tags-f8a9ce1daa2a1cf6.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + tracing: Updates ``DD_HEADER_TAGS`` and ``DD_TAGS`` to support the following formats: + ``key1,key2,key3``, ``key1:val,key2:val,key3:val3``, ``key1:val key2:val key3:val3``, and ``key1 key2 key3``. + Key value pairs that do not match an expected format will be logged and ignored by the tracer. diff --git a/releasenotes/notes/refactor-di-er-enablement-env-var-12056782561eecc6.yaml b/releasenotes/notes/refactor-di-er-enablement-env-var-12056782561eecc6.yaml new file mode 100644 index 00000000000..82302a47ba1 --- /dev/null +++ b/releasenotes/notes/refactor-di-er-enablement-env-var-12056782561eecc6.yaml @@ -0,0 +1,6 @@ +--- +deprecations: + - | + exception replay: The ``DD_EXCEPTION_DEBUGGING_ENABLED`` environment + variable has been deprecated in favor of ``DD_EXCEPTION_REPLAY_ENABLED``. + The old environment variable will be removed in a future major release. diff --git a/riotfile.py b/riotfile.py index dd64ec70ec9..9e732037135 100644 --- a/riotfile.py +++ b/riotfile.py @@ -190,7 +190,7 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): ), Venv( name="appsec_iast_tdd_propagation", - pys=select_pys(min_version="3.11", max_version="3.11"), + pys=select_pys(min_version="3.11"), command="pytest tests/appsec/iast_tdd_propagation/", pkgs={ "coverage": latest, @@ -205,7 +205,6 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): "envier": "==0.5.2", "cattrs": "<23.1.1", "protobuf": ">=3", - "attrs": ">=20", "typing_extensions": latest, "xmltodict": ">=0.12", "opentelemetry-api": ">=1", @@ -331,6 +330,8 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): "flask": "<=2.2.3", "httpretty": "<1.1", "werkzeug": "<2.0", + # FIXME: ddtrace does not support the latest versions of opentelemetry-api + "opentelemetry-api": "<1.25.0", "pytest-randomly": latest, "markupsafe": "<2.0", }, @@ -407,19 +408,31 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): pkgs={ "httpretty": latest, "gevent": latest, - "pytest-asyncio": "~=0.21.1", "pytest-randomly": latest, "python-json-logger": "==2.0.7", "pyfakefs": latest, }, - pys=select_pys(min_version="3.7", max_version="3.12"), + venvs=[ + Venv( + pys="3.7", + pkgs={ + "pytest-asyncio": "~=0.21.1", + }, + ), + Venv( + pys=select_pys(min_version="3.8"), + pkgs={ + "pytest-asyncio": "~=0.23.7", + }, + ), + ], ), Venv( name="gevent", command="pytest {cmdargs} tests/contrib/gevent", pkgs={ "elasticsearch": latest, - "pynamodb": latest, + "pynamodb": "<6.0", "pytest-randomly": latest, }, venvs=[ @@ -455,13 +468,17 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): }, ), Venv( - # gevent added support for Python 3.11 in 22.8.0 pys="3.11", pkgs={ "gevent": ["~=22.10.0", latest], }, ), - # FIXME[python-3.12]: blocked on aiohttp release https://github.com/aio-libs/aiohttp/issues/7229 + Venv( + pys=select_pys(min_version="3.12"), + pkgs={ + "gevent": [latest], + }, + ), ], ), ], @@ -862,15 +879,28 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): # other versions as the main purpose of these tests is to ensure # an error-free interaction between Django and Celery. We find # that we currently have no reasons for expanding this matrix. - "django": "==2.2.1", - "sqlalchemy": "~=1.2.18", "celery": latest, "gevent": latest, "requests": latest, "typing-extensions": latest, "pytest-randomly": latest, }, - pys=select_pys(min_version="3.8", max_version="3.11"), + venvs=[ + Venv( + pys=select_pys(min_version="3.8", max_version="3.11"), + pkgs={ + "sqlalchemy": "~=1.2.18", + "django": "==2.2.1", + }, + ), + Venv( + pys=select_pys(min_version="3.12"), + pkgs={ + "sqlalchemy": latest, + "django": latest, + }, + ), + ], ), Venv( name="dramatiq", @@ -1074,7 +1104,6 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): ], ), Venv( - pys=select_pys(min_version="3.7", max_version="3.11"), pkgs={ "flask": "~=1.1.0", "flask-caching": ["~=1.10.0", latest], @@ -1085,13 +1114,24 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): # DEV: Breaking change made in 2.1.0 release "markupsafe": "<2.0", }, + venvs=[ + Venv( + pys=select_pys(min_version="3.7", max_version="3.11"), + ), + Venv(pys=select_pys(min_version="3.12"), pkgs={"redis": latest}), + ], ), Venv( - pys=select_pys(min_version="3.7", max_version="3.11"), pkgs={ "flask": [latest], "flask-caching": ["~=1.10.0", latest], }, + venvs=[ + Venv( + pys=select_pys(min_version="3.7", max_version="3.11"), + ), + Venv(pys=select_pys(min_version="3.12"), pkgs={"redis": latest}), + ], ), ], ), @@ -1125,6 +1165,10 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): pys="3.11", pkgs={"mysql-connector-python": ["~=8.0.31", latest]}, ), + Venv( + pys=select_pys(min_version="3.12"), + pkgs={"mysql-connector-python": latest}, + ), ], ), Venv( @@ -1150,19 +1194,25 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): name="psycopg", command="pytest {cmdargs} tests/contrib/psycopg", pkgs={ - "pytest-asyncio": "==0.21.1", "pytest-randomly": latest, }, venvs=[ Venv( - pys=select_pys(min_version="3.7", max_version="3.11"), - # Python 3.6 supported up to 3.1.0 - pkgs={"psycopg": ["~=3.0.18"]}, - ), - Venv( - pys=select_pys(min_version="3.7", max_version="3.11"), - # psycopg3>=3.1.0 supports Python 3.7 -> 3.11 pkgs={"psycopg": [latest]}, + venvs=[ + Venv( + pys=select_pys(min_version="3.7", max_version="3.11"), + pkgs={ + "pytest-asyncio": "==0.21.1", + }, + ), + Venv( + pys=select_pys(min_version="3.12"), + pkgs={ + "pytest-asyncio": "==0.23.7", + }, + ), + ], ), ], ), @@ -1185,12 +1235,12 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): Venv( name="pynamodb", command="pytest {cmdargs} tests/contrib/pynamodb", + # TODO: Py312 requires changes to test code venvs=[ Venv( - # FIXME[python-3.12]: moto test dependency needs to be updated pys=select_pys(min_version="3.7", max_version="3.11"), pkgs={ - "pynamodb": ["~=5.0", "~=5.3", latest], + "pynamodb": ["~=5.0", "~=5.3", "<6.0"], "moto": ">=1.0,<2.0", "cfn-lint": "~=0.53.1", "Jinja2": "~=2.11.0", @@ -1236,6 +1286,10 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): pys="3.11", pkgs={"starlette": ["~=0.21.0", "~=0.33.0", latest]}, ), + Venv( + pys=select_pys(min_version="3.12"), + pkgs={"starlette": latest}, + ), ], ), Venv( @@ -1256,7 +1310,7 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): }, venvs=[ Venv( - pys=select_pys(min_version="3.7", max_version="3.12"), + pys=select_pys(min_version="3.7"), pkgs={ "sqlalchemy": ["~=1.3.0", latest], "psycopg2-binary": latest, @@ -1271,13 +1325,13 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): pkgs={ "pytest-randomly": latest, "urllib3": "~=1.0", + "requests-mock": ">=1.4", }, venvs=[ # requests added support for Python 3.7 in 2.20 Venv( pys="3.7", pkgs={ - "requests-mock": ">=1.4", "requests": [ "~=2.20.0", latest, @@ -1288,7 +1342,6 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): # requests added support for Python 3.8 in 2.23 pys="3.8", pkgs={ - "requests-mock": ">=1.4", "requests": [ "~=2.23.0", latest, @@ -1299,7 +1352,6 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): # requests added support for Python 3.9 in 2.25 pys="3.9", pkgs={ - "requests-mock": ">=1.4", "requests": [ "~=2.25.0", latest, @@ -1310,7 +1362,6 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): # requests added support for Python 3.10 in 2.27 pys="3.10", pkgs={ - "requests-mock": ">=1.4", "requests": [ "~=2.27", latest, @@ -1321,13 +1372,20 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): # requests added support for Python 3.11 in 2.28 pys="3.11", pkgs={ - "requests-mock": ">=1.4", "requests": [ "~=2.28.0", latest, ], }, ), + Venv( + pys=select_pys(min_version="3.12"), + pkgs={ + "requests": [ + latest, + ], + }, + ), ], ), Venv( @@ -1349,11 +1407,12 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): pkgs={ "moto[all]": "<5.0", "pytest-randomly": latest, + "vcrpy": "==6.0.1", }, venvs=[ Venv( - pys=select_pys(min_version="3.8", max_version="3.11"), - pkgs={"botocore": ["~=1.13", latest], "vcrpy": latest}, + pys=select_pys(min_version="3.8"), + pkgs={"botocore": "==1.34.49", "boto3": "==1.34.49"}, ), ], ), @@ -1453,7 +1512,7 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): Venv( # pyramid added support for Python 3.10/3.11 in 2.1 # FIXME[python-3.12]: blocked on venusian release https://github.com/Pylons/venusian/issues/85 - pys=select_pys(min_version="3.10", max_version="3.11"), + pys=select_pys(min_version="3.10"), pkgs={ "pyramid": [latest], }, @@ -1469,15 +1528,16 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): "pytest-randomly": latest, }, venvs=[ - # async_generator 1.10 used because @asynccontextmanager was only available in Python 3.6+ - # aiobotocore 1.x and higher require Python 3.6 or higher Venv( - # FIXME[python-3.12]: blocked on aiohttp release https://github.com/aio-libs/aiohttp/issues/7229 pys=select_pys(min_version="3.7", max_version="3.11"), pkgs={ "aiobotocore": ["~=1.4.2", "~=2.0.0", latest], }, ), + Venv( + pys=select_pys(min_version="3.12"), + pkgs={"aiobotocore": latest}, + ), ], ), Venv( @@ -1676,8 +1736,11 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): ), Venv( # grpcio added support for Python 3.12 in 1.59 - pys="3.12", - pkgs={"grpcio": ["~=1.59.0", latest]}, + pys=select_pys(min_version="3.12"), + pkgs={ + "grpcio": ["~=1.59.0", latest], + "pytest-asyncio": "==0.23.7", + }, ), ], ), @@ -1686,26 +1749,41 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): command="python -m pytest {cmdargs} tests/contrib/grpc_aio", pkgs={ "googleapis-common-protos": latest, - "pytest-asyncio": "==0.21.1", "pytest-randomly": latest, }, # grpc.aio support is broken and disabled by default env={"_DD_TRACE_GRPC_AIO_ENABLED": "true"}, venvs=[ Venv( - pys=select_pys(min_version="3.7", max_version="3.9"), - pkgs={"grpcio": ["~=1.34.0", "~=1.59.0"]}, + pys="3.7", + pkgs={ + "grpcio": ["~=1.34.0", "~=1.59.0"], + "pytest-asyncio": "==0.21.1", + }, + ), + Venv( + pys=select_pys(min_version="3.8", max_version="3.9"), + pkgs={ + "grpcio": ["~=1.34.0", "~=1.59.0"], + "pytest-asyncio": "==0.23.7", + }, ), Venv( # grpcio added support for Python 3.10 in 1.41 # but the version contains some bugs resolved by https://github.com/grpc/grpc/pull/27635. pys="3.10", - pkgs={"grpcio": ["~=1.42.0", "~=1.59.0"]}, + pkgs={ + "grpcio": ["~=1.42.0", "~=1.59.0"], + "pytest-asyncio": "==0.23.7", + }, ), Venv( # grpcio added support for Python 3.11 in 1.49 pys="3.11", - pkgs={"grpcio": ["~=1.49.0", "~=1.59.0"]}, + pkgs={ + "grpcio": ["~=1.49.0", "~=1.59.0"], + "pytest-asyncio": "==0.23.7", + }, ), ], ), @@ -1779,7 +1857,7 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): "pytest-randomly": latest, "httpx": [ "~=0.17.0", - "~=0.22.0", + "~=0.23.0", latest, ], }, @@ -1819,7 +1897,7 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): ), Venv( # Support added for Python 3.12 in 2.0.0 - pys="3.12", + pys=select_pys(min_version="3.12"), pkgs={"urllib3": ["==2.0.0", latest]}, ), ], @@ -1860,7 +1938,7 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): }, venvs=[ Venv( - pys=select_pys(min_version="3.7", max_version="3.12"), + pys=select_pys(min_version="3.7"), pkgs={ "aiopg": ["~=1.0", "~=1.4.0"], }, @@ -1872,7 +1950,6 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): command="pytest {cmdargs} tests/contrib/aiohttp", pkgs={ "pytest-aiohttp": [latest], - "pytest-asyncio": ["==0.21.1"], "pytest-randomly": latest, "aiohttp": [ "~=3.7", @@ -1880,15 +1957,26 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): ], "yarl": "~=1.0", }, - # FIXME[python-3.12]: blocked on aiohttp release https://github.com/aio-libs/aiohttp/issues/7229 - pys=select_pys(min_version="3.7", max_version="3.11"), + venvs=[ + Venv( + pys=select_pys(min_version="3.7", max_version="3.7"), + pkgs={ + "pytest-asyncio": ["==0.21.1"], + }, + ), + Venv( + pys=select_pys(min_version="3.8"), + pkgs={ + "pytest-asyncio": ["==0.23.7"], + }, + ), + ], ), Venv( name="aiohttp_jinja2", command="pytest {cmdargs} tests/contrib/aiohttp_jinja2", pkgs={ "pytest-aiohttp": [latest], - "pytest-asyncio": ["==0.21.1"], "pytest-randomly": latest, "aiohttp": [ "~=3.7", @@ -1900,8 +1988,20 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): ], "jinja2": latest, }, - # FIXME[python-3.12]: blocked on aiohttp release https://github.com/aio-libs/aiohttp/issues/7229 - pys=select_pys(min_version="3.7", max_version="3.11"), + venvs=[ + Venv( + pys=select_pys(min_version="3.7", max_version="3.7"), + pkgs={ + "pytest-asyncio": ["==0.21.1"], + }, + ), + Venv( + pys=select_pys(min_version="3.8"), + pkgs={ + "pytest-asyncio": ["==0.23.7"], + }, + ), + ], ), Venv( name="jinja2", @@ -1929,23 +2029,19 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): ), Venv( name="rediscluster", - pys=select_pys(max_version="3.11"), command="pytest {cmdargs} tests/contrib/rediscluster", - pkgs={ - # deprecated package - "redis-py-cluster": [">=2.0,<2.1", latest], - "pytest-randomly": latest, - }, + pkgs={"pytest-randomly": latest}, + venvs=[ + Venv(pys=select_pys(max_version="3.11"), pkgs={"redis-py-cluster": [">=2.0,<2.1", latest]}), + ], ), Venv( name="redis", pkgs={ - "pytest-asyncio": "==0.21.1", "pytest-randomly": latest, }, venvs=[ Venv( - pys=select_pys(min_version="3.7", max_version="3.10"), command="pytest {cmdargs} tests/contrib/redis", pkgs={ "redis": [ @@ -1954,6 +2050,20 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): "==5.0.1", ], }, + venvs=[ + Venv( + pys="3.7", + pkgs={ + "pytest-asyncio": "==0.21.1", + }, + ), + Venv( + pys=select_pys(min_version="3.8", max_version="3.10"), + pkgs={ + "pytest-asyncio": "==0.23.7", + }, + ), + ], ), Venv( # redis added support for Python 3.11 in 4.3 @@ -1961,9 +2071,17 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): command="pytest {cmdargs} tests/contrib/redis", pkgs={ "redis": ["~=4.3", "==5.0.1"], + "pytest-asyncio": "==0.23.7", + }, + ), + Venv( + pys=select_pys(min_version="3.12"), + command="pytest {cmdargs} tests/contrib/redis", + pkgs={ + "redis": latest, + "pytest-asyncio": "==0.23.7", }, ), - # FIXME[python-3.12]: blocked on redis release https://github.com/redis/redis-py/pull/2873 ], ), Venv( @@ -2046,6 +2164,13 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): "sanic-testing": "~=22.3.0", }, ), + Venv( + pys=select_pys(min_version="3.12"), + pkgs={ + "sanic": [latest], + "sanic-testing": "~=22.3.0", + }, + ), ], ), Venv( @@ -2073,7 +2198,7 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): ), Venv( # snowflake-connector-python added support for Python 3.11 in 3.0 - pys="3.11", + pys=select_pys(min_version="3.11"), pkgs={"snowflake-connector-python": [latest]}, ), ], @@ -2102,7 +2227,7 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): Venv( # asyncpg added support for Python 3.9 in 0.22 pys="3.9", - pkgs={"asyncpg": ["~=0.22.0", latest]}, + pkgs={"asyncpg": ["~=0.23.0", latest]}, ), Venv( # asyncpg added support for Python 3.10 in 0.24 @@ -2114,6 +2239,10 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): pys="3.11", pkgs={"asyncpg": ["~=0.27", latest]}, ), + Venv( + pys=select_pys(min_version="3.12"), + pkgs={"asyncpg": [latest]}, + ), ], ), Venv( @@ -2223,7 +2352,7 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): name="opentelemetry", command="pytest {cmdargs} tests/opentelemetry", # FIXME: this test suite breaks on 3.7 - pys=select_pys(min_version="3.8", max_version="3.11"), + pys=select_pys(min_version="3.8"), pkgs={ "pytest-randomly": latest, "pytest-asyncio": "==0.21.1", @@ -2241,10 +2370,9 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): command="pytest {cmdargs} tests/contrib/openai", pkgs={ "vcrpy": "==4.2.1", - "urllib3": "~=1.26", # vcrpy errors with urllib3 2.x https://github.com/kevin1024/vcrpy/issues/688 + "urllib3": "~=1.26", "pytest-asyncio": "==0.21.1", "pytest-randomly": latest, - "pillow": latest, }, venvs=[ Venv( @@ -2255,12 +2383,14 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): pkgs={ "openai": "==0.26.5", "scikit-learn": "==1.0.2", + "pillow": "==9.5.0", }, ), Venv( pys=select_pys(min_version="3.7", max_version="3.11"), pkgs={ - "openai[embeddings,datalib]": ["==0.27.2", "==1.1.1", "==1.30.1"], + "openai[embeddings,datalib]": ["==1.1.1", "==1.30.1"], + "pillow": "==9.5.0", }, ), Venv( @@ -2268,6 +2398,7 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): pkgs={ "openai[datalib]": ["==1.30.1"], "tiktoken": latest, + "pillow": "==10.1.0", }, env={"TIKTOKEN_AVAILABLE": "True"}, ), @@ -2320,6 +2451,10 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): pys="3.11", pkgs={"gevent": "~=22.8.0"}, ), + Venv( + pys=select_pys(min_version="3.12"), + pkgs={"gevent": "~=23.9.0"}, + ), ], ), ], @@ -2340,7 +2475,7 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): ), Venv( # pyodbc added support for Python 3.11 in 4.0.35 - pys="3.11", + pys=select_pys(min_version="3.11"), pkgs={"pyodbc": [latest]}, ), ], @@ -2392,7 +2527,7 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): "kombu": [">=5.2,<5.3", latest], }, ), - Venv(pys="3.12", pkgs={"kombu": latest}), + Venv(pys=select_pys(min_version="3.12"), pkgs={"kombu": latest}), ], ), Venv( @@ -2432,7 +2567,6 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): name="langchain", command="pytest -v {cmdargs} tests/contrib/langchain", # FIXME[python-3.12]: blocked on aiohttp release https://github.com/aio-libs/aiohttp/issues/7229 - pys=select_pys(min_version="3.9", max_version="3.11"), pkgs={ "vcrpy": "==5.1.0", "pytest-asyncio": "==0.21.1", @@ -2441,8 +2575,8 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): "ai21": latest, "exceptiongroup": latest, "psutil": latest, - "pytest-randomly": latest, - "numexpr": latest, + "pytest-randomly": "==3.10.1", + "numexpr": "==2.8.5", "greenlet": "==3.0.3", }, venvs=[ @@ -2453,7 +2587,8 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): "openai": "==0.27.8", "pinecone-client": "==2.2.4", "cohere": "==4.57", - } + }, + pys=select_pys(min_version="3.9", max_version="3.11"), ), Venv( pkgs={ @@ -2467,10 +2602,12 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): "langchain-cohere": "==0.1.4", "openai": "==1.30.3", "pinecone-client": latest, - "botocore": latest, + "botocore": "==1.34.51", + "boto3": "==1.34.51", "cohere": "==5.4.0", "faiss-cpu": "==1.8.0", - } + }, + pys=select_pys(min_version="3.9", max_version="3.11"), ), Venv( pkgs={ @@ -2483,9 +2620,12 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): "langchain-cohere": latest, "openai": latest, "pinecone-client": latest, - "botocore": latest, + "botocore": "==1.34.51", + "boto3": "==1.34.51", "cohere": latest, - } + "anthropic": latest, + }, + pys=select_pys(min_version="3.9"), ), Venv( pkgs={ @@ -2501,14 +2641,15 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): "pinecone-client": latest, "botocore": latest, "cohere": latest, - } + }, + pys=select_pys(min_version="3.9"), ), ], ), Venv( name="anthropic", command="pytest {cmdargs} tests/contrib/anthropic", - pys=select_pys(min_version="3.8", max_version="3.12"), + pys=select_pys(min_version="3.8"), pkgs={ "pytest-asyncio": latest, "vcrpy": latest, @@ -2572,7 +2713,7 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): pkgs={"confluent-kafka": ["~=1.9.2", latest]}, ), # confluent-kafka added support for Python 3.11 in 2.0.2 - Venv(pys="3.11", pkgs={"confluent-kafka": latest}), + Venv(pys=select_pys(min_version="3.11"), pkgs={"confluent-kafka": latest}), ], ), ], @@ -2621,7 +2762,7 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): name="llmobs", command="pytest {cmdargs} tests/llmobs", pkgs={"vcrpy": latest, "pytest-asyncio": "==0.21.1"}, - pys=select_pys(min_version="3.7", max_version="3.12"), + pys=select_pys(min_version="3.7"), ), Venv( name="profile", diff --git a/setup.py b/setup.py index 2d60d3949df..f837ea0f297 100644 --- a/setup.py +++ b/setup.py @@ -53,7 +53,7 @@ CURRENT_OS = platform.system() -LIBDDWAF_VERSION = "1.18.0" +LIBDDWAF_VERSION = "1.19.0" RUST_MINIMUM_VERSION = "1.71" # Safe guess: 1.71 is about a year old as of 2024-07-03 diff --git a/src/core/Cargo.toml b/src/core/Cargo.toml index c55ac470d09..f972b216738 100644 --- a/src/core/Cargo.toml +++ b/src/core/Cargo.toml @@ -21,3 +21,9 @@ pyo3-build-config = "0.21.2" name = "_core" path = "lib.rs" crate-type = ["cdylib"] + + +[net] +# Use git binary from the system instead of the built-in git client +# "Setting this to true can be helpful if you have special authentication requirements that Cargo does not support." +git-fetch-with-cli = true diff --git a/tests/.suitespec.json b/tests/.suitespec.json index 0dff5add577..c22772ce599 100644 --- a/tests/.suitespec.json +++ b/tests/.suitespec.json @@ -168,7 +168,7 @@ "debugging": [ "ddtrace/debugging/*", "ddtrace/settings/dynamic_instrumentation.py", - "ddtrace/settings/exception_debugging.py" + "ddtrace/settings/exception_replay.py" ], "ci": [ "ddtrace/ext/ci.py" diff --git a/tests/appsec/iast/fixtures/propagation_path.py b/tests/appsec/iast/fixtures/propagation_path.py index e411fade164..2c46d2f2a69 100644 --- a/tests/appsec/iast/fixtures/propagation_path.py +++ b/tests/appsec/iast/fixtures/propagation_path.py @@ -146,7 +146,8 @@ def propagation_memory_check(origin_string1, tainted_string_2): string11 = "notainted#{}".format(string10) # TAINTSOURCE1TAINTSOURCE2-TAINTSOURCE1TAINTSOURCE2-TAINTSOURCE1TAINTSOURCE_notainted string12 = string11.rsplit("#")[1] - string13 = string12 + "\n" + "notainted" + string13_pre = string12 + "\n" + string13 = string13_pre + "notainted" # TAINTSOURCE1TAINTSOURCE2-TAINTSOURCE1TAINTSOURCE2-TAINTSOURCE1TAINTSOURCE_notainted\nnotainted string14 = string13.splitlines()[0] # string14 = string12 # TAINTSOURCE1TAINTSOURCE2-TAINTSOURCE1TAINTSOURCE2-TAINTSOURCE1TAINTSOURCE_notainted diff --git a/tests/appsec/iast/test_env_var.py b/tests/appsec/iast/test_env_var.py index 12008077beb..67c4f096b10 100644 --- a/tests/appsec/iast/test_env_var.py +++ b/tests/appsec/iast/test_env_var.py @@ -48,6 +48,18 @@ def test_env_var_iast_unset(monkeypatch, capfd): assert "IAST enabled" not in captured.err +@pytest.mark.subprocess( + env=dict(DD_IAST_ENABLED="False"), err=b"WARNING:root:IAST not enabled but native module is being loaded\n" +) +def test_env_var_iast_disabled_native_module_warning(): + import ddtrace.appsec._iast._taint_tracking._native # noqa: F401 + + +@pytest.mark.subprocess(env=dict(DD_IAST_ENABLED="True"), err=None) +def test_env_var_iast_enabled_no__native_module_warning(): + import ddtrace.appsec._iast._taint_tracking._native # noqa: F401 + + @pytest.mark.xfail(reason="IAST not working with Gevent yet") def test_env_var_iast_enabled_gevent_unload_modules_true(capfd): # type: (...) -> None diff --git a/tests/appsec/integrations/test_flask_entrypoint_iast_patches.py b/tests/appsec/integrations/test_flask_entrypoint_iast_patches.py index 644251f7bb2..4b0812b4807 100644 --- a/tests/appsec/integrations/test_flask_entrypoint_iast_patches.py +++ b/tests/appsec/integrations/test_flask_entrypoint_iast_patches.py @@ -182,8 +182,6 @@ def test_ddtrace_iast_flask_app_create_app_patch_all_enable_iast_propagation_dis import dis import io - import pytest - from ddtrace import ModuleWatchdog from tests.utils import override_env from tests.utils import override_global_config @@ -204,5 +202,3 @@ def _uninstall_watchdog_and_reload(): # Should have replaced the binary op with the aspect in add_test: assert "(add_aspect)" not in str_output assert "BINARY_ADD" in str_output or "BINARY_OP" in str_output - with pytest.raises(ImportError): - assert flask_entrypoint_views.add_test() == [] diff --git a/tests/conftest.py b/tests/conftest.py index bf377d96c4f..13182fb370a 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -103,7 +103,6 @@ def _run(code, **kwargs): @pytest.fixture(autouse=True) def snapshot(request): marks = [m for m in request.node.iter_markers(name="snapshot")] - assert len(marks) < 2, "Multiple snapshot marks detected" if marks and os.getenv("DD_SNAPSHOT_ENABLED", "1") == "1": snap = marks[0] token = snap.kwargs.get("token") diff --git a/tests/contrib/anthropic/cassettes/anthropic_completion_tools_call_with_tool_result_stream.yaml b/tests/contrib/anthropic/cassettes/anthropic_completion_tools_call_with_tool_result_stream.yaml index a10ac849678..1d7b9a3bd7e 100644 --- a/tests/contrib/anthropic/cassettes/anthropic_completion_tools_call_with_tool_result_stream.yaml +++ b/tests/contrib/anthropic/cassettes/anthropic_completion_tools_call_with_tool_result_stream.yaml @@ -9,7 +9,7 @@ interactions: are needed, as the get_weather tool should provide a complete answer to the user''s question.\n", "type": "text"}, {"id": "toolu_01UiyhG7tywQKaqdgxyqa8z9", "input": {"location": "San Francisco, CA"}, "name": "get_weather", "type": "tool_use"}]}, - {"role": "user", "content": [{"type": "tool_result", "tool_use_id": "toolu_01UiyhG7tywQKaqdgxyqa8z9", + {"role": "user", "content": [{"type": "tool_result", "tool_use_id": "toolu_01DYJo37oETVsCdLTTcCWcdq", "content": [{"type": "text", "text": "The weather is 73f"}]}]}], "model": "claude-3-opus-20240229", "stream": true, "tools": [{"name": "get_weather", "description": "Get the weather for a specific location", "input_schema": {"type": "object", "properties": {"location": diff --git a/tests/contrib/anthropic/cassettes/anthropic_completion_tools_call_with_tool_result_stream_helper.yaml b/tests/contrib/anthropic/cassettes/anthropic_completion_tools_call_with_tool_result_stream_helper.yaml index 44007688927..d385add8c54 100644 --- a/tests/contrib/anthropic/cassettes/anthropic_completion_tools_call_with_tool_result_stream_helper.yaml +++ b/tests/contrib/anthropic/cassettes/anthropic_completion_tools_call_with_tool_result_stream_helper.yaml @@ -9,7 +9,7 @@ interactions: are needed, as the get_weather tool should provide a complete answer to the user''s question.\n", "type": "text"}, {"id": "toolu_01UiyhG7tywQKaqdgxyqa8z9", "input": {"location": "San Francisco, CA"}, "name": "get_weather", "type": "tool_use"}]}, - {"role": "user", "content": [{"type": "tool_result", "tool_use_id": "toolu_01UiyhG7tywQKaqdgxyqa8z9", + {"role": "user", "content": [{"type": "tool_result", "tool_use_id": "toolu_01DYJo37oETVsCdLTTcCWcdq", "content": [{"type": "text", "text": "The weather is 73f"}]}]}], "model": "claude-3-opus-20240229", "tools": [{"name": "get_weather", "description": "Get the weather for a specific location", "input_schema": {"type": "object", "properties": {"location": {"type": diff --git a/tests/contrib/anthropic/cassettes/anthropic_completion_tools_stream.yaml b/tests/contrib/anthropic/cassettes/anthropic_completion_tools_stream.yaml index a82b60f09c2..2267f62a274 100644 --- a/tests/contrib/anthropic/cassettes/anthropic_completion_tools_stream.yaml +++ b/tests/contrib/anthropic/cassettes/anthropic_completion_tools_stream.yaml @@ -475,7 +475,7 @@ interactions: event: content_block_start - data: {"type":"content_block_start","index":1,"content_block":{"type":"tool_use","id":"toolu_01LktqwpwQ8XKE8D17BffC65","name":"get_weather","input":{}} } + data: {"type":"content_block_start","index":1,"content_block":{"type":"tool_use","id":"toolu_01DYJo37oETVsCdLTTcCWcdq","name":"get_weather","input":{}} } event: content_block_delta diff --git a/tests/contrib/anthropic/cassettes/anthropic_completion_tools_stream_helper.yaml b/tests/contrib/anthropic/cassettes/anthropic_completion_tools_stream_helper.yaml index c8f8f0f1b0f..7d59d991a6e 100644 --- a/tests/contrib/anthropic/cassettes/anthropic_completion_tools_stream_helper.yaml +++ b/tests/contrib/anthropic/cassettes/anthropic_completion_tools_stream_helper.yaml @@ -547,7 +547,7 @@ interactions: event: content_block_start - data: {"type":"content_block_start","index":1,"content_block":{"type":"tool_use","id":"toolu_01UiyhG7tywQKaqdgxyqa8z9","name":"get_weather","input":{}} } + data: {"type":"content_block_start","index":1,"content_block":{"type":"tool_use","id":"toolu_01DYJo37oETVsCdLTTcCWcdq","name":"get_weather","input":{}} } event: content_block_delta diff --git a/tests/contrib/anthropic/test_anthropic_llmobs.py b/tests/contrib/anthropic/test_anthropic_llmobs.py index 1bf50d2bf3f..77de13f18e1 100644 --- a/tests/contrib/anthropic/test_anthropic_llmobs.py +++ b/tests/contrib/anthropic/test_anthropic_llmobs.py @@ -14,7 +14,14 @@ parameter. The user has provided the location of "San Francisco, CA" in their question, so we have \ the necessary information to make the API call.\n\nNo other tools are needed to answer this question. \ We can proceed with calling the get_weather tool with the provided location.\n' -WEATHER_OUTPUT_MESSAGE_2 = '[tool: get_weather]\n\n{"location": "San Francisco, CA"}' +WEATHER_OUTPUT_MESSAGE_2_TOOL_CALL = [ + { + "name": "get_weather", + "arguments": {"location": "San Francisco, CA"}, + "tool_id": "toolu_01DYJo37oETVsCdLTTcCWcdq", + "type": "tool_use", + } +] WEATHER_OUTPUT_MESSAGE_3 = "Based on the result from the get_weather tool, the current weather in San \ Francisco, CA is 73°F." @@ -150,7 +157,10 @@ def test_stream(self, anthropic, ddtrace_global_config, mock_llmobs_writer, mock }, ], output_messages=[ - {"content": 'The phrase "I think, therefore I am" (originally in Latin as', "role": "assistant"} + { + "content": 'The phrase "I think, therefore I am" (originally in Latin as', + "role": "assistant", + } ], metadata={"temperature": 0.8, "max_tokens": 15.0}, token_metrics={"input_tokens": 27, "output_tokens": 15, "total_tokens": 42}, @@ -300,7 +310,11 @@ def test_tools_sync(self, anthropic, ddtrace_global_config, mock_llmobs_writer, "content": WEATHER_OUTPUT_MESSAGE_1, "role": "assistant", }, - {"content": WEATHER_OUTPUT_MESSAGE_2, "role": "assistant"}, + { + "content": "", + "role": "assistant", + "tool_calls": WEATHER_OUTPUT_MESSAGE_2_TOOL_CALL, + }, ], metadata={"max_tokens": 200.0}, token_metrics={"input_tokens": 599, "output_tokens": 152, "total_tokens": 751}, @@ -346,7 +360,7 @@ def test_tools_sync(self, anthropic, ddtrace_global_config, mock_llmobs_writer, "content": WEATHER_OUTPUT_MESSAGE_1, "role": "assistant", }, - {"content": WEATHER_OUTPUT_MESSAGE_2, "role": "assistant"}, + {"content": "", "role": "assistant", "tool_calls": WEATHER_OUTPUT_MESSAGE_2_TOOL_CALL}, {"content": ["The weather is 73f"], "role": "user"}, ], output_messages=[ @@ -392,7 +406,11 @@ async def test_tools_async(self, anthropic, ddtrace_global_config, mock_llmobs_w "content": WEATHER_OUTPUT_MESSAGE_1, "role": "assistant", }, - {"content": WEATHER_OUTPUT_MESSAGE_2, "role": "assistant"}, + { + "content": "", + "role": "assistant", + "tool_calls": WEATHER_OUTPUT_MESSAGE_2_TOOL_CALL, + }, ], metadata={"max_tokens": 200.0}, token_metrics={"input_tokens": 599, "output_tokens": 152, "total_tokens": 751}, @@ -438,7 +456,7 @@ async def test_tools_async(self, anthropic, ddtrace_global_config, mock_llmobs_w "content": WEATHER_OUTPUT_MESSAGE_1, "role": "assistant", }, - {"content": WEATHER_OUTPUT_MESSAGE_2, "role": "assistant"}, + {"content": "", "role": "assistant", "tool_calls": WEATHER_OUTPUT_MESSAGE_2_TOOL_CALL}, {"content": ["The weather is 73f"], "role": "user"}, ], output_messages=[ @@ -481,7 +499,7 @@ def test_tools_sync_stream(self, anthropic, ddtrace_global_config, mock_llmobs_w + " the location is fully specified. We can proceed with calling the get_weather tool.\n", "type": "text", }, - {"text": WEATHER_OUTPUT_MESSAGE_2, "type": "text"}, + {"text": WEATHER_OUTPUT_MESSAGE_2_TOOL_CALL, "type": "text"}, ] traces = mock_tracer.pop_traces() @@ -494,7 +512,18 @@ def test_tools_sync_stream(self, anthropic, ddtrace_global_config, mock_llmobs_w input_messages=[{"content": WEATHER_PROMPT, "role": "user"}], output_messages=[ {"content": message[0]["text"], "role": "assistant"}, - {"content": message[1]["text"], "role": "assistant"}, + { + "content": "", + "role": "assistant", + "tool_calls": [ + { + "name": "get_weather", + "arguments": {"location": "San Francisco, CA"}, + "tool_id": "", + "type": "tool_use", + } + ], + }, ], metadata={"max_tokens": 200.0}, token_metrics={"input_tokens": 599, "output_tokens": 135, "total_tokens": 734}, @@ -514,7 +543,7 @@ def test_tools_sync_stream(self, anthropic, ddtrace_global_config, mock_llmobs_w "content": [ { "type": "tool_result", - "tool_use_id": "toolu_01LktqwpwQ8XKE8D17BffC65", + "tool_use_id": "toolu_01DYJo37oETVsCdLTTcCWcdq", "content": [{"type": "text", "text": "The weather is 73f"}], } ], @@ -588,7 +617,18 @@ async def test_tools_async_stream_helper( input_messages=[{"content": WEATHER_PROMPT, "role": "user"}], output_messages=[ {"content": message.content[0].text, "role": "assistant"}, - {"content": WEATHER_OUTPUT_MESSAGE_2, "role": "assistant"}, + { + "content": "", + "role": "assistant", + "tool_calls": [ + { + "name": "get_weather", + "arguments": {"location": "San Francisco, CA"}, + "tool_id": "", + "type": "tool_use", + } + ], + }, ], metadata={"max_tokens": 200.0}, token_metrics={"input_tokens": 599, "output_tokens": 146, "total_tokens": 745}, @@ -608,7 +648,7 @@ async def test_tools_async_stream_helper( "content": [ { "type": "tool_result", - "tool_use_id": "toolu_01UiyhG7tywQKaqdgxyqa8z9", + "tool_use_id": "toolu_01DYJo37oETVsCdLTTcCWcdq", "content": [{"type": "text", "text": "The weather is 73f"}], } ], @@ -636,11 +676,14 @@ async def test_tools_async_stream_helper( input_messages=[ {"content": WEATHER_PROMPT, "role": "user"}, {"content": message.content[0].text, "role": "assistant"}, - {"content": WEATHER_OUTPUT_MESSAGE_2, "role": "assistant"}, + {"content": "", "role": "assistant", "tool_calls": WEATHER_OUTPUT_MESSAGE_2_TOOL_CALL}, {"content": ["The weather is 73f"], "role": "user"}, ], output_messages=[ - {"content": "\n\nThe current weather in San Francisco, CA is 73°F.", "role": "assistant"} + { + "content": "\n\nThe current weather in San Francisco, CA is 73°F.", + "role": "assistant", + } ], metadata={"max_tokens": 500.0}, token_metrics={"input_tokens": 762, "output_tokens": 18, "total_tokens": 780}, diff --git a/tests/contrib/botocore/test.py b/tests/contrib/botocore/test.py index e61c1d700d2..bad2b6fa355 100644 --- a/tests/contrib/botocore/test.py +++ b/tests/contrib/botocore/test.py @@ -36,8 +36,8 @@ from ddtrace.constants import ERROR_MSG from ddtrace.constants import ERROR_STACK from ddtrace.constants import ERROR_TYPE +from ddtrace.contrib.botocore.patch import _patch_submodules from ddtrace.contrib.botocore.patch import patch -from ddtrace.contrib.botocore.patch import patch_submodules from ddtrace.contrib.botocore.patch import unpatch from ddtrace.internal.compat import PYTHON_VERSION_INFO from ddtrace.internal.datastreams.processor import PROPAGATION_KEY_BASE_64 @@ -76,7 +76,7 @@ class BotocoreTest(TracerTestCase): @mock_sqs def setUp(self): patch() - patch_submodules(True) + _patch_submodules(True) self.session = botocore.session.get_session() self.session.set_credentials(access_key="access-key", secret_key="secret-key") @@ -103,7 +103,7 @@ def tearDown(self): @mock_ec2 @mock_s3 def test_patch_submodules(self): - patch_submodules(["s3"]) + _patch_submodules(["s3"]) ec2 = self.session.create_client("ec2", region_name="us-west-2") Pin(service=self.TEST_SERVICE, tracer=self.tracer).onto(ec2) @@ -417,6 +417,37 @@ def test_s3_put_no_params(self): assert span.get_tag("params.Body") is None assert span.get_tag("component") == "botocore" + @mock_s3 + @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_BOTOCORE_SERVICE="botocore")) + def test_service_name_override(self): + s3 = self.session.create_client("s3", region_name="us-west-2") + Pin.get_from(s3).clone(tracer=self.tracer).onto(s3) + + params = { + "Bucket": "mybucket", + "CreateBucketConfiguration": { + "LocationConstraint": "us-west-2", + }, + } + s3.create_bucket(**params) + params = dict(Key="foo", Bucket="mybucket", Body=b"bar") + s3.put_object(**params) + + spans = self.get_spans() + assert spans + span = spans[0] + assert span.service == "botocore.s3", "Expected 'botocore.s3' but got {}".format(span.service) + + cfg = config.botocore + cfg["service"] = "boto-service" + + s3.list_buckets() + spans = self.get_spans() + assert spans + span = spans[-1] + + assert span.service == "boto-service.s3", "Expected 'boto-service.s3' but got {}".format(span.service) + @mock_s3 @TracerTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc")) def test_schematized_s3_client_default(self): diff --git a/tests/contrib/grpc_aio/test_grpc_aio.py b/tests/contrib/grpc_aio/test_grpc_aio.py index 39671459b8c..0a6bd6492fe 100644 --- a/tests/contrib/grpc_aio/test_grpc_aio.py +++ b/tests/contrib/grpc_aio/test_grpc_aio.py @@ -274,7 +274,6 @@ def _check_server_span(span, service, method_name, method_kind, resource="hellow assert span.get_tag("span.kind") == "server" -@pytest.mark.asyncio @pytest.mark.parametrize("server_info", [_CoroHelloServicer(), _SyncHelloServicer()], indirect=True) async def test_insecure_channel(server_info, tracer): async with aio.insecure_channel(server_info.target) as channel: @@ -289,7 +288,6 @@ async def test_insecure_channel(server_info, tracer): _check_server_span(server_span, "grpc-aio-server", "SayHello", "unary") -@pytest.mark.asyncio @pytest.mark.parametrize("server_info", [_CoroHelloServicer(), _SyncHelloServicer()], indirect=True) async def test_secure_channel(server_info, tracer): credentials = grpc.ChannelCredentials(None) @@ -305,7 +303,6 @@ async def test_secure_channel(server_info, tracer): _check_server_span(server_span, "grpc-aio-server", "SayHello", "unary") -@pytest.mark.asyncio @pytest.mark.parametrize("server_info", [_CoroHelloServicer(), _SyncHelloServicer()], indirect=True) async def test_secure_channel_with_interceptor_in_args(server_info, tracer): credentials = grpc.ChannelCredentials(None) @@ -322,7 +319,6 @@ async def test_secure_channel_with_interceptor_in_args(server_info, tracer): _check_server_span(server_span, "grpc-aio-server", "SayHello", "unary") -@pytest.mark.asyncio @pytest.mark.parametrize("server_info", [_CoroHelloServicer(), _SyncHelloServicer()], indirect=True) async def test_invalid_target(server_info, tracer): target = "localhost:50051" @@ -345,7 +341,6 @@ async def test_invalid_target(server_info, tracer): assert client_span.get_tag("span.kind") == "client" -@pytest.mark.asyncio @pytest.mark.parametrize("server_info", [_CoroHelloServicer(), _SyncHelloServicer()], indirect=True) async def test_pin_not_activated(server_info, tracer): tracer.configure(enabled=False) @@ -357,7 +352,6 @@ async def test_pin_not_activated(server_info, tracer): assert len(spans) == 0 -@pytest.mark.asyncio @pytest.mark.parametrize( "servicer", [_CoroHelloServicer(), _SyncHelloServicer()], @@ -390,7 +384,6 @@ async def test_pin_tags_put_in_span(servicer, tracer): assert server_span.get_tag("span.kind") == "server" -@pytest.mark.asyncio @pytest.mark.parametrize("server_info", [_CoroHelloServicer(), _SyncHelloServicer()], indirect=True) async def test_pin_can_be_defined_per_channel(server_info, tracer): Pin.override(GRPC_AIO_PIN_MODULE_CLIENT, service="grpc1") @@ -422,7 +415,6 @@ async def test_pin_can_be_defined_per_channel(server_info, tracer): _check_server_span(server_span2, "grpc-aio-server", "SayHello", "unary") -@pytest.mark.asyncio @pytest.mark.parametrize("server_info", [_CoroHelloServicer(), _SyncHelloServicer()], indirect=True) async def test_analytics_default(server_info, tracer): credentials = grpc.ChannelCredentials(None) @@ -440,7 +432,6 @@ async def test_analytics_default(server_info, tracer): assert server_span.get_metric(ANALYTICS_SAMPLE_RATE_KEY) is None -@pytest.mark.asyncio @pytest.mark.parametrize("server_info", [_CoroHelloServicer(), _SyncHelloServicer()], indirect=True) async def test_analytics_with_rate(server_info, tracer): with override_config("grpc_aio_client", dict(analytics_enabled=True, analytics_sample_rate=0.5)): @@ -457,7 +448,6 @@ async def test_analytics_with_rate(server_info, tracer): assert server_span.get_metric(ANALYTICS_SAMPLE_RATE_KEY) == 0.75 -@pytest.mark.asyncio @pytest.mark.parametrize("server_info", [_CoroHelloServicer(), _SyncHelloServicer()], indirect=True) async def test_priority_sampling(server_info, tracer): # DEV: Priority sampling is enabled by default @@ -475,7 +465,6 @@ async def test_priority_sampling(server_info, tracer): assert "x-datadog-sampling-priority=1" in response.message -@pytest.mark.asyncio @pytest.mark.parametrize("server_info", [_CoroHelloServicer(), _SyncHelloServicer()], indirect=True) async def test_analytics_without_rate(server_info, tracer): with override_config("grpc_aio_client", dict(analytics_enabled=True)): @@ -495,10 +484,9 @@ async def test_analytics_without_rate(server_info, tracer): @pytest.mark.skipif( - sys.version_info in ((3, 11, 0), (3, 11, 1)), - reason="Segfaults in Python 3.11.0 and 3.11.1", + sys.version_info >= (3, 11, 0), + reason="Segfaults in Python 3.11.0 and later", ) -@pytest.mark.asyncio @pytest.mark.parametrize("server_info", [_CoroHelloServicer(), _SyncHelloServicer()], indirect=True) async def test_unary_exception(server_info, tracer): async with aio.insecure_channel(server_info.target) as channel: @@ -537,10 +525,9 @@ async def test_unary_exception(server_info, tracer): @pytest.mark.skipif( - sys.version_info in ((3, 11, 0), (3, 11, 1)), - reason="Segfaults in Python 3.11.0 and 3.11.1", + sys.version_info >= (3, 11, 0), + reason="Segfaults in Python 3.11.0 and later", ) -@pytest.mark.asyncio @pytest.mark.parametrize("server_info", [_CoroHelloServicer(), _SyncHelloServicer()], indirect=True) async def test_unary_cancellation(server_info, tracer): async with aio.insecure_channel(server_info.target) as channel: @@ -553,7 +540,6 @@ async def test_unary_cancellation(server_info, tracer): assert len(spans) == 0 -@pytest.mark.asyncio @pytest.mark.parametrize( "server_info", [_CoroHelloServicer(), _AsyncGenHelloServicer(), _SyncHelloServicer()], indirect=True ) @@ -577,7 +563,6 @@ async def test_server_streaming(server_info, tracer): _check_server_span(server_span, "grpc-aio-server", "SayHelloTwice", "server_streaming") -@pytest.mark.asyncio @pytest.mark.parametrize( "server_info", [_CoroHelloServicer(), _AsyncGenHelloServicer(), _SyncHelloServicer()], indirect=True ) @@ -624,7 +609,6 @@ async def test_server_streaming_exception(server_info, tracer): assert server_span.get_tag("span.kind") == "server" -@pytest.mark.asyncio @pytest.mark.parametrize( "server_info", [_CoroHelloServicer(), _AsyncGenHelloServicer(), _SyncHelloServicer()], indirect=True ) @@ -642,7 +626,6 @@ async def test_server_streaming_cancelled_before_rpc(server_info, tracer): assert len(spans) == 0 -@pytest.mark.asyncio @pytest.mark.parametrize( "server_info", [_CoroHelloServicer(), _AsyncGenHelloServicer(), _SyncHelloServicer()], indirect=True ) @@ -679,7 +662,6 @@ async def test_server_streaming_cancelled_during_rpc(server_info, tracer): _check_server_span(server_span, "grpc-aio-server", "SayHelloTwice", "server_streaming") -@pytest.mark.asyncio @pytest.mark.parametrize( "server_info", [_CoroHelloServicer(), _AsyncGenHelloServicer(), _SyncHelloServicer()], indirect=True ) @@ -706,7 +688,6 @@ async def test_server_streaming_cancelled_after_rpc(server_info, tracer): _check_server_span(server_span, "grpc-aio-server", "SayHelloTwice", "server_streaming") -@pytest.mark.asyncio @pytest.mark.parametrize("server_info", [_CoroHelloServicer(), _SyncHelloServicer()], indirect=True) async def test_client_streaming(server_info, tracer): request_iterator = iter(HelloRequest(name=name) for name in ["first", "second"]) @@ -724,10 +705,9 @@ async def test_client_streaming(server_info, tracer): @pytest.mark.skipif( - sys.version_info in ((3, 11, 0), (3, 11, 1)), - reason="Segfaults in Python 3.11.0 and 3.11.1", + sys.version_info >= (3, 11, 0), + reason="Segfaults in Python 3.11.0 and later", ) -@pytest.mark.asyncio @pytest.mark.parametrize("server_info", [_CoroHelloServicer(), _SyncHelloServicer()], indirect=True) async def test_client_streaming_exception(server_info, tracer): request_iterator = iter(HelloRequest(name=name) for name in ["exception", "test"]) @@ -766,7 +746,6 @@ async def test_client_streaming_exception(server_info, tracer): assert server_span.get_tag("span.kind") == "server" -@pytest.mark.asyncio @pytest.mark.parametrize("server_info", [_CoroHelloServicer(), _SyncHelloServicer()], indirect=True) async def test_client_streaming_cancelled_before_rpc(server_info, tracer): request_iterator = iter(HelloRequest(name=name) for name in ["first", "second"]) @@ -782,7 +761,6 @@ async def test_client_streaming_cancelled_before_rpc(server_info, tracer): assert len(spans) == 0 -@pytest.mark.asyncio @pytest.mark.parametrize("server_info", [_CoroHelloServicer(), _SyncHelloServicer()], indirect=True) async def test_client_streaming_cancelled_after_rpc(server_info, tracer): request_iterator = iter(HelloRequest(name=name) for name in ["first", "second"]) @@ -801,7 +779,6 @@ async def test_client_streaming_cancelled_after_rpc(server_info, tracer): _check_server_span(server_span, "grpc-aio-server", "SayHelloLast", "client_streaming") -@pytest.mark.asyncio @pytest.mark.parametrize( "server_info", [_CoroHelloServicer(), _AsyncGenHelloServicer(), _SyncHelloServicer()], indirect=True ) @@ -828,10 +805,9 @@ async def test_bidi_streaming(server_info, tracer): @pytest.mark.skipif( - sys.version_info in ((3, 11, 0), (3, 11, 1)), - reason="Segfaults in Python 3.11.0 and 3.11.1", + sys.version_info >= (3, 11, 0), + reason="Segfaults in Python 3.11.0 and later", ) -@pytest.mark.asyncio @pytest.mark.parametrize( "server_info", [_CoroHelloServicer(), _AsyncGenHelloServicer(), _SyncHelloServicer()], indirect=True ) @@ -875,7 +851,6 @@ async def test_bidi_streaming_exception(server_info, tracer): assert server_span.get_tag("span.kind") == "server" -@pytest.mark.asyncio @pytest.mark.parametrize( "server_info", [_CoroHelloServicer(), _AsyncGenHelloServicer(), _SyncHelloServicer()], indirect=True ) @@ -895,7 +870,6 @@ async def test_bidi_streaming_cancelled_before_rpc(server_info, tracer): assert len(spans) == 0 -@pytest.mark.asyncio @pytest.mark.parametrize( "server_info", [_CoroHelloServicer(), _AsyncGenHelloServicer(), _SyncHelloServicer()], indirect=True ) @@ -941,7 +915,6 @@ async def test_bidi_streaming_cancelled_during_rpc(server_info, tracer): _check_server_span(server_span, "grpc-aio-server", "SayHelloRepeatedly", "bidi_streaming") -@pytest.mark.asyncio @pytest.mark.parametrize( "server_info", [_CoroHelloServicer(), _AsyncGenHelloServicer(), _SyncHelloServicer()], indirect=True ) @@ -1005,7 +978,6 @@ def test_schematization_of_operation(ddtrace_run_python_code_in_subprocess, serv from tests.contrib.grpc_aio.test_grpc_aio import server_info from tests.contrib.grpc_aio.test_grpc_aio import tracer -@pytest.mark.asyncio @pytest.mark.parametrize("server_info",[_CoroHelloServicer(), _SyncHelloServicer()], indirect=True) async def test_client_streaming(server_info, tracer): request_iterator = iter(HelloRequest(name=name) for name in ["first", "second"]) @@ -1065,7 +1037,6 @@ async def run_streaming_example(server_info, use_generator=False): i += 1 -@pytest.mark.asyncio @pytest.mark.skip( "Bug/error from grpc when adding an async streaming client interceptor throws StopAsyncIteration. Issue can be \ found at: https://github.com/DataDog/dd-trace-py/issues/9139" @@ -1083,7 +1054,6 @@ async def test_async_streaming_direct_read(async_server_info, tracer): _check_server_span(server_span, "grpc-aio-server", "SayHelloRepeatedly", "bidi_streaming") -@pytest.mark.asyncio @pytest.mark.parametrize("async_server_info", [_CoroHelloServicer()], indirect=True) async def test_async_streaming_generator(async_server_info, tracer): await run_streaming_example(async_server_info, use_generator=True) diff --git a/tests/contrib/langchain/test_langchain_community.py b/tests/contrib/langchain/test_langchain_community.py index 5b9d38758e6..b8927be784e 100644 --- a/tests/contrib/langchain/test_langchain_community.py +++ b/tests/contrib/langchain/test_langchain_community.py @@ -19,12 +19,23 @@ reason="This module only tests langchain >= 0.1 and Python 3.10+", ) +IGNORE_FIELDS = [ + "resources", + "meta.openai.request.logprobs", # langchain-openai llm call now includes logprobs as param + "meta.error.stack", + "meta.http.useragent", + "meta.langchain.request.openai.parameters.seed", # langchain-openai llm call now includes seed as param + "meta.langchain.request.openai.parameters.logprobs", # langchain-openai llm call now includes seed as param + "metrics.langchain.tokens.total_cost", # total_cost depends on if tiktoken is installed +] + @pytest.fixture(scope="session") def request_vcr(): yield get_request_vcr(subdirectory_name="langchain_community") +@flaky(1735812000) @pytest.mark.parametrize("ddtrace_config_langchain", [dict(logs_enabled=True, log_prompt_completion_sample_rate=1.0)]) def test_global_tags(ddtrace_config_langchain, langchain_openai, request_vcr, mock_metrics, mock_logs, mock_tracer): """ @@ -74,14 +85,16 @@ def test_global_tags(ddtrace_config_langchain, langchain_openai, request_vcr, mo ) -@pytest.mark.snapshot(ignores=["metrics.langchain.tokens.total_cost", "resource"]) +@flaky(1735812000) +@pytest.mark.snapshot(ignores=IGNORE_FIELDS) def test_openai_llm_sync(langchain_openai, request_vcr): llm = langchain_openai.OpenAI() with request_vcr.use_cassette("openai_completion_sync.yaml"): llm.invoke("Can you explain what Descartes meant by 'I think, therefore I am'?") -@pytest.mark.snapshot(ignores=["metrics.langchain.tokens.total_cost"]) +@flaky(1735812000) +@pytest.mark.snapshot(ignores=IGNORE_FIELDS) def test_openai_llm_sync_multiple_prompts(langchain_openai, request_vcr): llm = langchain_openai.OpenAI() with request_vcr.use_cassette("openai_completion_sync_multi_prompt.yaml"): @@ -93,16 +106,35 @@ def test_openai_llm_sync_multiple_prompts(langchain_openai, request_vcr): ) +@flaky(1735812000) @pytest.mark.asyncio -@pytest.mark.snapshot(ignores=["metrics.langchain.tokens.total_cost"]) +@pytest.mark.snapshot(ignores=IGNORE_FIELDS) async def test_openai_llm_async(langchain_openai, request_vcr): llm = langchain_openai.OpenAI() with request_vcr.use_cassette("openai_completion_async.yaml"): await llm.agenerate(["Which team won the 2019 NBA finals?"]) -@pytest.mark.snapshot(ignores=["meta.error.stack", "resource"]) -def test_openai_llm_error(langchain_openai, request_vcr): +@flaky(1735812000) +@pytest.mark.snapshot(ignores=IGNORE_FIELDS) +def test_openai_llm_sync_stream(langchain_openai, request_vcr): + llm = langchain_openai.OpenAI(streaming=True) + with request_vcr.use_cassette("openai_completion_sync_stream.yaml"): + llm.invoke("Why is Spongebob so bad at driving?") + + +@flaky(1735812000) +@pytest.mark.asyncio +@pytest.mark.snapshot(ignores=IGNORE_FIELDS) +async def test_openai_llm_async_stream(langchain, langchain_openai, request_vcr): + llm = langchain_openai.OpenAI(streaming=True) + with request_vcr.use_cassette("openai_completion_async_stream.yaml"): + await llm.agenerate(["Why is Spongebob so bad at driving?"]) + + +@flaky(1735812000) +@pytest.mark.snapshot(ignores=IGNORE_FIELDS) +def test_openai_llm_error(langchain, langchain_openai, request_vcr): import openai # Imported here because the os env OPENAI_API_KEY needs to be set via langchain fixture before import llm = langchain_openai.OpenAI() @@ -116,6 +148,7 @@ def test_openai_llm_error(langchain_openai, request_vcr): llm.generate([12345, 123456]) +@flaky(1735812000) @pytest.mark.snapshot def test_cohere_llm_sync(langchain_cohere, request_vcr): llm = langchain_cohere.llms.Cohere(cohere_api_key=os.getenv("COHERE_API_KEY", "")) @@ -123,6 +156,7 @@ def test_cohere_llm_sync(langchain_cohere, request_vcr): llm.invoke("What is the secret Krabby Patty recipe?") +@flaky(1735812000) @pytest.mark.snapshot def test_ai21_llm_sync(langchain_community, request_vcr): if langchain_community is None: @@ -162,6 +196,7 @@ def test_openai_llm_metrics( mock_logs.assert_not_called() +@flaky(1735812000) @pytest.mark.parametrize( "ddtrace_config_langchain", [dict(metrics_enabled=False, logs_enabled=True, log_prompt_completion_sample_rate=1.0)], @@ -198,14 +233,16 @@ def test_llm_logs(langchain_openai, ddtrace_config_langchain, request_vcr, mock_ mock_metrics.count.assert_not_called() -@pytest.mark.snapshot(ignores=["metrics.langchain.tokens.total_cost"]) +@flaky(1735812000) +@pytest.mark.snapshot(ignores=IGNORE_FIELDS) def test_openai_chat_model_sync_call_langchain_openai(langchain_openai, request_vcr): chat = langchain_openai.ChatOpenAI(temperature=0, max_tokens=256) with request_vcr.use_cassette("openai_chat_completion_sync_call.yaml"): chat.invoke(input=[langchain.schema.HumanMessage(content="When do you use 'whom' instead of 'who'?")]) -@pytest.mark.snapshot(ignores=["metrics.langchain.tokens.total_cost"]) +@flaky(1735812000) +@pytest.mark.snapshot(ignores=IGNORE_FIELDS) def test_openai_chat_model_sync_generate(langchain_openai, request_vcr): chat = langchain_openai.ChatOpenAI(temperature=0, max_tokens=256) with request_vcr.use_cassette("openai_chat_completion_sync_generate.yaml"): @@ -225,7 +262,8 @@ def test_openai_chat_model_sync_generate(langchain_openai, request_vcr): ) -@pytest.mark.snapshot(ignores=["metrics.langchain.tokens.total_cost"]) +@flaky(1735812000) +@pytest.mark.snapshot(ignores=IGNORE_FIELDS) def test_openai_chat_model_vision_generate(langchain_openai, request_vcr): """ Test that input messages with nested contents are still tagged without error @@ -254,16 +292,18 @@ def test_openai_chat_model_vision_generate(langchain_openai, request_vcr): ) +@flaky(1735812000) @pytest.mark.asyncio -@pytest.mark.snapshot(ignores=["metrics.langchain.tokens.total_cost"]) +@pytest.mark.snapshot(ignores=IGNORE_FIELDS) async def test_openai_chat_model_async_call(langchain_openai, request_vcr): chat = langchain_openai.ChatOpenAI(temperature=0, max_tokens=256) with request_vcr.use_cassette("openai_chat_completion_async_call.yaml"): await chat._call_async([langchain.schema.HumanMessage(content="When do you use 'whom' instead of 'who'?")]) +@flaky(1735812000) @pytest.mark.asyncio -@pytest.mark.snapshot(ignores=["metrics.langchain.tokens.total_cost"]) +@pytest.mark.snapshot(ignores=IGNORE_FIELDS) async def test_openai_chat_model_async_generate(langchain_openai, request_vcr): chat = langchain_openai.ChatOpenAI(temperature=0, max_tokens=256) with request_vcr.use_cassette("openai_chat_completion_async_generate.yaml"): @@ -283,6 +323,7 @@ async def test_openai_chat_model_async_generate(langchain_openai, request_vcr): ) +@flaky(1735812000) def test_chat_model_metrics( langchain, langchain_community, langchain_openai, request_vcr, mock_metrics, mock_logs, snapshot_tracer ): @@ -313,6 +354,7 @@ def test_chat_model_metrics( mock_logs.assert_not_called() +@flaky(1735812000) @pytest.mark.parametrize( "ddtrace_config_langchain", [dict(metrics_enabled=False, logs_enabled=True, log_prompt_completion_sample_rate=1.0)], @@ -365,6 +407,7 @@ def test_chat_model_logs( mock_metrics.count.assert_not_called() +@flaky(1735812000) @pytest.mark.snapshot def test_openai_embedding_query(langchain_openai, request_vcr): with mock.patch("langchain_openai.OpenAIEmbeddings._get_len_safe_embeddings", return_value=[0.0] * 1536): @@ -389,6 +432,7 @@ def test_fake_embedding_document(langchain_community): embeddings.embed_documents(texts=["foo", "bar"]) +@flaky(1735812000) def test_openai_embedding_metrics(langchain_openai, request_vcr, mock_metrics, mock_logs, snapshot_tracer): with mock.patch("langchain_openai.OpenAIEmbeddings._get_len_safe_embeddings", return_value=[0.0] * 1536): embeddings = langchain_openai.OpenAIEmbeddings() @@ -411,6 +455,7 @@ def test_openai_embedding_metrics(langchain_openai, request_vcr, mock_metrics, m mock_logs.assert_not_called() +@flaky(1735812000) @pytest.mark.parametrize( "ddtrace_config_langchain", [dict(metrics_enabled=False, logs_enabled=True, log_prompt_completion_sample_rate=1.0)], @@ -447,7 +492,8 @@ def test_embedding_logs(langchain_openai, ddtrace_config_langchain, request_vcr, mock_metrics.count.assert_not_called() -@pytest.mark.snapshot(ignores=["metrics.langchain.tokens.total_cost"]) +@flaky(1735812000) +@pytest.mark.snapshot(ignores=IGNORE_FIELDS) def test_openai_math_chain_sync(langchain_openai, request_vcr): """ Test that using the provided LLMMathChain will result in a 3-span trace with @@ -460,7 +506,7 @@ def test_openai_math_chain_sync(langchain_openai, request_vcr): @pytest.mark.snapshot( token="tests.contrib.langchain.test_langchain_community.test_chain_invoke", - ignores=["metrics.langchain.tokens.total_cost"], + ignores=IGNORE_FIELDS, ) def test_chain_invoke_dict_input(langchain_openai, request_vcr): prompt_template = "what is {base} raised to the fifty-fourth power?" @@ -470,9 +516,10 @@ def test_chain_invoke_dict_input(langchain_openai, request_vcr): chain.invoke(input={"base": "two"}) +@flaky(1735812000) @pytest.mark.snapshot( token="tests.contrib.langchain.test_langchain_community.test_chain_invoke", - ignores=["metrics.langchain.tokens.total_cost"], + ignores=IGNORE_FIELDS, ) def test_chain_invoke_str_input(langchain_openai, request_vcr): prompt_template = "what is {base} raised to the fifty-fourth power?" @@ -482,8 +529,9 @@ def test_chain_invoke_str_input(langchain_openai, request_vcr): chain.invoke("two") +@flaky(1735812000) @pytest.mark.asyncio -@pytest.mark.snapshot(ignores=["metrics.langchain.tokens.total_cost"]) +@pytest.mark.snapshot(ignores=IGNORE_FIELDS) async def test_openai_math_chain_async(langchain_openai, request_vcr): """ Test that using the provided LLMMathChain will result in a 3-span trace with @@ -494,6 +542,7 @@ async def test_openai_math_chain_async(langchain_openai, request_vcr): await chain.ainvoke("what is two raised to the fifty-fourth power?") +@flaky(1735812000) @pytest.mark.snapshot(token="tests.contrib.langchain.test_langchain_community.test_cohere_math_chain") def test_cohere_math_chain_sync(langchain_cohere, request_vcr): """ @@ -507,7 +556,8 @@ def test_cohere_math_chain_sync(langchain_cohere, request_vcr): chain.invoke("what is thirteen raised to the .3432 power?") -@pytest.mark.snapshot(ignores=["metrics.langchain.tokens.total_cost"]) +@flaky(1735812000) +@pytest.mark.snapshot(ignores=IGNORE_FIELDS) def test_openai_sequential_chain(langchain_openai, request_vcr): """ Test that using a SequentialChain will result in a 4-span trace with @@ -560,7 +610,8 @@ def _transform_func(inputs): sequential_chain.invoke({"text": input_text, "style": "a 90s rapper"}) -@pytest.mark.snapshot(ignores=["metrics.langchain.tokens.total_cost"]) +@flaky(1735812000) +@pytest.mark.snapshot(ignores=IGNORE_FIELDS) def test_openai_sequential_chain_with_multiple_llm_sync(langchain_openai, request_vcr): template = """Paraphrase this text: @@ -599,8 +650,9 @@ def test_openai_sequential_chain_with_multiple_llm_sync(langchain_openai, reques sequential_chain.invoke({"input_text": input_text}) +@flaky(1735812000) @pytest.mark.asyncio -@pytest.mark.snapshot(ignores=["metrics.langchain.tokens.total_cost"]) +@pytest.mark.snapshot(ignores=IGNORE_FIELDS) async def test_openai_sequential_chain_with_multiple_llm_async(langchain_openai, request_vcr): template = """Paraphrase this text: @@ -748,6 +800,7 @@ def test_chat_prompt_template_does_not_parse_template(langchain_openai, mock_tra assert chain_span.get_tag("langchain.request.prompt") is None +@flaky(1735812000) @pytest.mark.snapshot def test_pinecone_vectorstore_similarity_search(langchain_openai, request_vcr): """ @@ -769,12 +822,10 @@ def test_pinecone_vectorstore_similarity_search(langchain_openai, request_vcr): vectorstore.similarity_search("Who was Alan Turing?", 1) +@flaky(1735812000) @pytest.mark.snapshot( - ignores=[ - "metrics.langchain.tokens.total_cost", - "meta.langchain.response.outputs.input_documents", - "meta.langchain.request.inputs.input_documents", - ] + ignores=IGNORE_FIELDS + + ["meta.langchain.response.outputs.input_documents", "meta.langchain.request.inputs.input_documents"] ) def test_pinecone_vectorstore_retrieval_chain(langchain_openai, request_vcr): """ @@ -801,6 +852,7 @@ def test_pinecone_vectorstore_retrieval_chain(langchain_openai, request_vcr): qa_with_sources.invoke("Who was Alan Turing?") +@flaky(1735812000) def test_vectorstore_similarity_search_metrics(langchain_openai, request_vcr, mock_metrics, mock_logs, snapshot_tracer): import langchain_pinecone import pinecone @@ -829,6 +881,7 @@ def test_vectorstore_similarity_search_metrics(langchain_openai, request_vcr, mo mock_logs.assert_not_called() +@flaky(1735812000) @pytest.mark.parametrize( "ddtrace_config_langchain", [dict(metrics_enabled=False, logs_enabled=True, log_prompt_completion_sample_rate=1.0)], @@ -893,7 +946,8 @@ def test_vectorstore_logs( mock_metrics.count.assert_not_called() -@pytest.mark.snapshot(ignores=["metrics.langchain.tokens.total_cost", "meta.http.useragent", "resource"]) +@flaky(1735812000) +@pytest.mark.snapshot(ignores=IGNORE_FIELDS) def test_openai_integration(request_vcr, ddtrace_run_python_code_in_subprocess): env = os.environ.copy() pypath = [os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))] @@ -923,7 +977,8 @@ def test_openai_integration(request_vcr, ddtrace_run_python_code_in_subprocess): assert err == b"" -@pytest.mark.snapshot(ignores=["meta.http.useragent", "metrics.langchain.tokens.total_cost"]) +@flaky(1735812000) +@pytest.mark.snapshot(ignores=IGNORE_FIELDS) @pytest.mark.parametrize("schema_version", [None, "v0", "v1"]) @pytest.mark.parametrize("service_name", [None, "mysvc"]) def test_openai_service_name(request_vcr, ddtrace_run_python_code_in_subprocess, schema_version, service_name): @@ -1077,7 +1132,8 @@ def test_embedding_logs_when_response_not_completed( ) -@pytest.mark.snapshot(ignores=["metrics.langchain.tokens.total_cost"]) +@flaky(1735812000) +@pytest.mark.snapshot(ignores=IGNORE_FIELDS) def test_lcel_chain_simple(langchain_core, langchain_openai, request_vcr): prompt = langchain_core.prompts.ChatPromptTemplate.from_messages( [("system", "You are world class technical documentation writer."), ("user", "{input}")] @@ -1089,7 +1145,8 @@ def test_lcel_chain_simple(langchain_core, langchain_openai, request_vcr): chain.invoke({"input": "how can langsmith help with testing?"}) -@pytest.mark.snapshot(ignores=["metrics.langchain.tokens.total_cost"]) +@flaky(1735812000) +@pytest.mark.snapshot(ignores=IGNORE_FIELDS) def test_lcel_chain_complicated(langchain_core, langchain_openai, request_vcr): prompt = langchain_core.prompts.ChatPromptTemplate.from_template( "Tell me a short joke about {topic} in the style of {style}" @@ -1118,8 +1175,9 @@ def test_lcel_chain_complicated(langchain_core, langchain_openai, request_vcr): chain.invoke({"topic": "chickens", "style": "a 90s rapper"}) +@flaky(1735812000) @pytest.mark.asyncio -@pytest.mark.snapshot(ignores=["metrics.langchain.tokens.total_cost"]) +@pytest.mark.snapshot(ignores=IGNORE_FIELDS) async def test_lcel_chain_simple_async(langchain_core, langchain_openai, request_vcr): prompt = langchain_core.prompts.ChatPromptTemplate.from_messages( [("system", "You are world class technical documentation writer."), ("user", "{input}")] @@ -1132,7 +1190,7 @@ async def test_lcel_chain_simple_async(langchain_core, langchain_openai, request @flaky(1735812000, reason="batch() is non-deterministic in which order it processes inputs") -@pytest.mark.snapshot(ignores=["metrics.langchain.tokens.total_cost"]) +@pytest.mark.snapshot(ignores=IGNORE_FIELDS) @pytest.mark.skipif(sys.version_info >= (3, 11, 0), reason="Python <3.11 test") def test_lcel_chain_batch(langchain_core, langchain_openai, request_vcr): """ @@ -1149,7 +1207,7 @@ def test_lcel_chain_batch(langchain_core, langchain_openai, request_vcr): @flaky(1735812000, reason="batch() is non-deterministic in which order it processes inputs") -@pytest.mark.snapshot(ignores=["metrics.langchain.tokens.total_cost"]) +@pytest.mark.snapshot(ignores=IGNORE_FIELDS) @pytest.mark.skipif(sys.version_info < (3, 11, 0), reason="Python 3.11+ required") def test_lcel_chain_batch_311(langchain_core, langchain_openai, request_vcr): """ @@ -1165,7 +1223,8 @@ def test_lcel_chain_batch_311(langchain_core, langchain_openai, request_vcr): chain.batch(inputs=["chickens", "pigs"]) -@pytest.mark.snapshot(ignores=["metrics.langchain.tokens.total_cost"]) +@flaky(1735812000) +@pytest.mark.snapshot(ignores=IGNORE_FIELDS) def test_lcel_chain_nested(langchain_core, langchain_openai, request_vcr): """ Test that invoking a nested chain will result in a 4-span trace with a root @@ -1190,7 +1249,7 @@ def test_lcel_chain_nested(langchain_core, langchain_openai, request_vcr): @flaky(1735812000, reason="batch() is non-deterministic in which order it processes inputs") @pytest.mark.asyncio -@pytest.mark.snapshot(ignores=["metrics.langchain.tokens.total_cost"]) +@pytest.mark.snapshot(ignores=IGNORE_FIELDS) async def test_lcel_chain_batch_async(langchain_core, langchain_openai, request_vcr): """ Test that invoking a chain with a batch of inputs will result in a 4-span trace, @@ -1217,6 +1276,7 @@ def test_lcel_chain_non_dict_input(langchain_core): sequence.invoke(1) +@flaky(1735812000) @pytest.mark.snapshot def test_faiss_vectorstore_retrieval(langchain_community, langchain_openai, request_vcr): if langchain_community is None: diff --git a/tests/contrib/openai/test_openai_llmobs.py b/tests/contrib/openai/test_openai_llmobs.py index 2ffde2882e2..1578acfd092 100644 --- a/tests/contrib/openai/test_openai_llmobs.py +++ b/tests/contrib/openai/test_openai_llmobs.py @@ -154,10 +154,22 @@ def test_chat_completion_function_call(self, openai, ddtrace_global_config, mock function_call="auto", user="ddtrace-test", ) - expected_output = "[function: {}]\n\n{}".format( - resp.choices[0].message.function_call.name, - resp.choices[0].message.function_call.arguments, - ) + expected_output = { + "content": "", + "role": "assistant", + "tool_calls": [ + { + "name": "extract_student_info", + "arguments": { + "name": "David Nguyen", + "major": "computer science", + "school": "Stanford University", + "grades": 3.8, + "clubs": ["Chess Club", "South Asian Student Association"], + }, + } + ], + } span = mock_tracer.pop_traces()[0][0] assert mock_llmobs_writer.enqueue.call_count == 1 mock_llmobs_writer.enqueue.assert_called_with( @@ -166,7 +178,7 @@ def test_chat_completion_function_call(self, openai, ddtrace_global_config, mock model_name=resp.model, model_provider="openai", input_messages=[{"content": chat_completion_input_description, "role": "user"}], - output_messages=[{"content": expected_output, "role": "assistant"}], + output_messages=[expected_output], metadata={"function_call": "auto", "user": "ddtrace-test"}, token_metrics={"input_tokens": 157, "output_tokens": 57, "total_tokens": 214}, tags={"ml_app": ""}, @@ -222,7 +234,24 @@ def test_chat_completion_tool_call(self, openai, ddtrace_global_config, mock_llm tool_choice="auto", user="ddtrace-test", ) - expected_output = '[tool: extract_student_info]\n\n{\n "name": "David Nguyen",\n "major": "computer science",\n "school": "Stanford University",\n "grades": 3.8,\n "clubs": ["Chess Club", "South Asian Student Association"]\n}' # noqa: E501 + expected_output = { + "content": "", + "role": "assistant", + "tool_calls": [ + { + "name": "extract_student_info", + "arguments": { + "name": "David Nguyen", + "major": "computer science", + "school": "Stanford University", + "grades": 3.8, + "clubs": ["Chess Club", "South Asian Student Association"], + }, + "tool_id": "call_ukwJcJsOt7gOrv9xGRAntkZQ", + "type": "function", + } + ], + } span = mock_tracer.pop_traces()[0][0] assert mock_llmobs_writer.enqueue.call_count == 1 mock_llmobs_writer.enqueue.assert_called_with( @@ -231,7 +260,7 @@ def test_chat_completion_tool_call(self, openai, ddtrace_global_config, mock_llm model_name=resp.model, model_provider="openai", input_messages=[{"content": chat_completion_input_description, "role": "user"}], - output_messages=[{"content": expected_output, "role": "assistant"}], + output_messages=[expected_output], metadata={"tool_choice": "auto", "user": "ddtrace-test"}, token_metrics={"input_tokens": 157, "output_tokens": 57, "total_tokens": 214}, tags={"ml_app": ""}, @@ -462,10 +491,22 @@ def test_chat_completion_function_call(self, openai, ddtrace_global_config, mock function_call="auto", user="ddtrace-test", ) - expected_output = "[function: {}]\n\n{}".format( - resp.choices[0].message.function_call.name, - resp.choices[0].message.function_call.arguments, - ) + expected_output = { + "content": "", + "role": "assistant", + "tool_calls": [ + { + "name": "extract_student_info", + "arguments": { + "name": "David Nguyen", + "major": "computer science", + "school": "Stanford University", + "grades": 3.8, + "clubs": ["Chess Club", "South Asian Student Association"], + }, + } + ], + } span = mock_tracer.pop_traces()[0][0] assert mock_llmobs_writer.enqueue.call_count == 1 mock_llmobs_writer.enqueue.assert_called_with( @@ -474,7 +515,7 @@ def test_chat_completion_function_call(self, openai, ddtrace_global_config, mock model_name=resp.model, model_provider="openai", input_messages=[{"content": chat_completion_input_description, "role": "user"}], - output_messages=[{"content": expected_output, "role": "assistant"}], + output_messages=[expected_output], metadata={"function_call": "auto", "user": "ddtrace-test"}, token_metrics={"input_tokens": 157, "output_tokens": 57, "total_tokens": 214}, tags={"ml_app": ""}, @@ -493,6 +534,24 @@ def test_chat_completion_tool_call(self, openai, ddtrace_global_config, mock_llm messages=[{"role": "user", "content": chat_completion_input_description}], user="ddtrace-test", ) + expected_output = { + "content": "", + "role": "assistant", + "tool_calls": [ + { + "name": "extract_student_info", + "arguments": { + "name": "David Nguyen", + "major": "computer science", + "school": "Stanford University", + "grades": 3.8, + "clubs": ["Chess Club", "South Asian Student Association"], + }, + "tool_id": "call_FJStsEjxdODw9tBmQRRkm6vY", + "type": "function", + } + ], + } span = mock_tracer.pop_traces()[0][0] assert mock_llmobs_writer.enqueue.call_count == 1 mock_llmobs_writer.enqueue.assert_called_with( @@ -501,15 +560,7 @@ def test_chat_completion_tool_call(self, openai, ddtrace_global_config, mock_llm model_name=resp.model, model_provider="openai", input_messages=[{"content": chat_completion_input_description, "role": "user"}], - output_messages=[ - { - "content": "[tool: {}]\n\n{}".format( - resp.choices[0].message.tool_calls[0].function.name, - resp.choices[0].message.tool_calls[0].function.arguments, - ), - "role": "assistant", - } - ], + output_messages=[expected_output], metadata={"user": "ddtrace-test"}, token_metrics={"input_tokens": 157, "output_tokens": 57, "total_tokens": 214}, tags={"ml_app": ""}, diff --git a/tests/contrib/openai/test_openai_v1.py b/tests/contrib/openai/test_openai_v1.py index e14d54bca8d..a96d63ea712 100644 --- a/tests/contrib/openai/test_openai_v1.py +++ b/tests/contrib/openai/test_openai_v1.py @@ -194,7 +194,6 @@ def test_completion( mock_llmobs_writer.enqueue.assert_not_called() -@pytest.mark.asyncio @pytest.mark.parametrize("api_key_in_env", [True, False]) async def test_acompletion( api_key_in_env, request_api_key, openai, openai_vcr, mock_metrics, mock_logs, mock_llmobs_writer, snapshot_tracer @@ -503,7 +502,6 @@ def test_enable_metrics(openai, openai_vcr, ddtrace_config_openai, mock_metrics, assert not mock_metrics.mock_calls -@pytest.mark.asyncio @pytest.mark.parametrize("api_key_in_env", [True, False]) async def test_achat_completion(api_key_in_env, request_api_key, openai, openai_vcr, snapshot_tracer): with snapshot_context( @@ -543,7 +541,6 @@ def test_image_create(api_key_in_env, request_api_key, openai, openai_vcr, snaps ) -@pytest.mark.asyncio @pytest.mark.parametrize("api_key_in_env", [True, False]) async def test_image_acreate(api_key_in_env, request_api_key, openai, openai_vcr, snapshot_tracer): with snapshot_context( @@ -667,7 +664,6 @@ def test_embedding_array_of_token_arrays(openai, openai_vcr, snapshot_tracer): ) -@pytest.mark.asyncio @pytest.mark.parametrize("api_key_in_env", [True, False]) async def test_aembedding(api_key_in_env, request_api_key, openai, openai_vcr, snapshot_tracer): with snapshot_context( @@ -694,7 +690,6 @@ def test_file_list(api_key_in_env, request_api_key, openai, openai_vcr, snapshot client.files.list() -@pytest.mark.asyncio @pytest.mark.parametrize("api_key_in_env", [True, False]) async def test_file_alist(api_key_in_env, request_api_key, openai, openai_vcr, snapshot_tracer): with snapshot_context( @@ -727,7 +722,6 @@ def test_file_create(api_key_in_env, request_api_key, openai, openai_vcr, snapsh ) -@pytest.mark.asyncio @pytest.mark.parametrize("api_key_in_env", [True, False]) async def test_file_acreate(api_key_in_env, request_api_key, openai, openai_vcr, snapshot_tracer): with snapshot_context( @@ -762,7 +756,6 @@ def test_file_delete(api_key_in_env, request_api_key, openai, openai_vcr, snapsh ) -@pytest.mark.asyncio @pytest.mark.parametrize("api_key_in_env", [True, False]) async def test_file_adelete(api_key_in_env, request_api_key, openai, openai_vcr, snapshot_tracer): with snapshot_context( @@ -789,7 +782,6 @@ def test_file_retrieve(api_key_in_env, request_api_key, openai, openai_vcr, snap ) -@pytest.mark.asyncio @pytest.mark.parametrize("api_key_in_env", [True, False]) async def test_file_aretrieve(api_key_in_env, request_api_key, openai, openai_vcr, snapshot_tracer): with snapshot_context( @@ -816,7 +808,6 @@ def test_file_download(api_key_in_env, request_api_key, openai, openai_vcr, snap ) -@pytest.mark.asyncio @pytest.mark.parametrize("api_key_in_env", [True, False]) async def test_file_adownload(api_key_in_env, request_api_key, openai, openai_vcr, snapshot_tracer): with snapshot_context( @@ -843,7 +834,6 @@ def test_model_delete(api_key_in_env, request_api_key, openai, openai_vcr, snaps ) -@pytest.mark.asyncio @pytest.mark.parametrize("api_key_in_env", [True, False]) async def test_model_adelete(api_key_in_env, request_api_key, openai, openai_vcr, snapshot_tracer): with snapshot_context( @@ -871,7 +861,6 @@ def test_create_moderation(api_key_in_env, request_api_key, openai, openai_vcr, ) -@pytest.mark.asyncio @pytest.mark.parametrize("api_key_in_env", [True, False]) async def test_acreate_moderation(api_key_in_env, request_api_key, openai, openai_vcr, snapshot_tracer): with snapshot_context( @@ -967,7 +956,6 @@ def test_completion_stream(openai, openai_vcr, mock_metrics, mock_tracer): assert mock.call.distribution("tokens.total", mock.ANY, tags=expected_tags) in mock_metrics.mock_calls -@pytest.mark.asyncio async def test_completion_async_stream(openai, openai_vcr, mock_metrics, mock_tracer): with openai_vcr.use_cassette("completion_streamed.yaml"): with mock.patch("ddtrace.contrib.openai.utils.encoding_for_model", create=True) as mock_encoding: @@ -1097,7 +1085,6 @@ def test_chat_completion_stream(openai, openai_vcr, mock_metrics, snapshot_trace assert mock.call.distribution("tokens.total", mock.ANY, tags=expected_tags) in mock_metrics.mock_calls -@pytest.mark.asyncio async def test_chat_completion_async_stream(openai, openai_vcr, mock_metrics, snapshot_tracer): with openai_vcr.use_cassette("chat_completion_streamed.yaml"): with mock.patch("ddtrace.contrib.openai.utils.encoding_for_model", create=True) as mock_encoding: @@ -1150,7 +1137,6 @@ async def test_chat_completion_async_stream(openai, openai_vcr, mock_metrics, sn parse_version(openai_module.version.VERSION) < (1, 6, 0), reason="Streamed response context managers are only available v1.6.0+", ) -@pytest.mark.asyncio async def test_chat_completion_async_stream_context_manager(openai, openai_vcr, mock_metrics, snapshot_tracer): with openai_vcr.use_cassette("chat_completion_streamed.yaml"): with mock.patch("ddtrace.contrib.openai.utils.encoding_for_model", create=True) as mock_encoding: @@ -1526,7 +1512,6 @@ def test_azure_openai_completion(openai, azure_openai_config, openai_vcr, snapsh ) -@pytest.mark.asyncio @pytest.mark.snapshot( token="tests.contrib.openai.test_openai.test_azure_openai_completion", ignores=[ @@ -1578,7 +1563,6 @@ def test_azure_openai_chat_completion(openai, azure_openai_config, openai_vcr, s ) -@pytest.mark.asyncio @pytest.mark.snapshot( token="tests.contrib.openai.test_openai.test_azure_openai_chat_completion", ignores=["meta.http.useragent", "meta.openai.api_base", "meta.openai.api_type", "meta.openai.api_version"], @@ -1620,7 +1604,6 @@ def test_azure_openai_embedding(openai, azure_openai_config, openai_vcr, snapsho ) -@pytest.mark.asyncio @pytest.mark.snapshot( token="tests.contrib.openai.test_openai.test_azure_openai_embedding", ignores=["meta.http.useragent", "meta.openai.api_base", "meta.openai.api_type", "meta.openai.api_version"], diff --git a/tests/contrib/psycopg/test_psycopg_async.py b/tests/contrib/psycopg/test_psycopg_async.py index a255709e192..d39f66cc105 100644 --- a/tests/contrib/psycopg/test_psycopg_async.py +++ b/tests/contrib/psycopg/test_psycopg_async.py @@ -9,7 +9,6 @@ from ddtrace.contrib.psycopg.patch import patch from ddtrace.contrib.psycopg.patch import unpatch from tests.contrib.asyncio.utils import AsyncioTestCase -from tests.contrib.asyncio.utils import mark_asyncio from tests.contrib.config import POSTGRES_CONFIG from tests.opentracer.utils import init_tracer from tests.utils import assert_is_measured @@ -41,7 +40,6 @@ async def _get_conn(self, service=None): return conn - @mark_asyncio async def test_patch_unpatch(self): # Test patch idempotence patch() @@ -130,7 +128,6 @@ async def assert_conn_is_traced_async(self, db, service): self.assertIsNone(root.get_tag("sql.query")) self.reset() - @mark_asyncio async def test_opentracing_propagation(self): # ensure OpenTracing plays well with our integration query = """SELECT 'tracing'""" @@ -172,7 +169,6 @@ async def test_opentracing_propagation(self): ) assert_is_measured(self.get_spans()[1]) - @mark_asyncio async def test_cursor_ctx_manager(self): # ensure cursors work with context managers # https://github.com/DataDog/dd-trace-py/issues/228 @@ -190,7 +186,6 @@ async def test_cursor_ctx_manager(self): dict(name="postgres.query"), ) - @mark_asyncio async def test_disabled_execute(self): conn = await self._get_conn() self.tracer.enabled = False @@ -199,28 +194,24 @@ async def test_disabled_execute(self): await conn.cursor().execute("""select 'blah'""") self.assert_has_no_spans() - @mark_asyncio async def test_connect_factory(self): services = ["db", "another"] for service in services: conn = await self._get_conn(service=service) await self.assert_conn_is_traced_async(conn, service) - @mark_asyncio async def test_commit(self): conn = await self._get_conn() await conn.commit() self.assert_structure(dict(name="psycopg.connection.commit", service=self.TEST_SERVICE)) - @mark_asyncio async def test_rollback(self): conn = await self._get_conn() await conn.rollback() self.assert_structure(dict(name="psycopg.connection.rollback", service=self.TEST_SERVICE)) - @mark_asyncio async def test_composed_query(self): """Checks whether execution of composed SQL string is traced""" query = SQL(" union all ").join( @@ -240,7 +231,6 @@ async def test_composed_query(self): dict(name="postgres.query", resource=query.as_string(db)), ) - @mark_asyncio @AsyncioTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc", DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v0")) async def test_user_specified_app_service_v0(self): """ @@ -259,7 +249,6 @@ async def test_user_specified_app_service_v0(self): self.assertEqual(len(spans), 1) assert spans[0].service != "mysvc" - @mark_asyncio @AsyncioTestCase.run_in_subprocess(env_overrides=dict(DD_SERVICE="mysvc", DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v1")) async def test_user_specified_app_service_v1(self): """ @@ -278,7 +267,6 @@ async def test_user_specified_app_service_v1(self): self.assertEqual(len(spans), 1) assert spans[0].service == "mysvc" - @mark_asyncio @AsyncioTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v0")) async def test_span_name_v0_schema(self): conn = await self._get_conn() @@ -288,7 +276,6 @@ async def test_span_name_v0_schema(self): self.assertEqual(len(spans), 1) assert spans[0].name == "postgres.query" - @mark_asyncio @AsyncioTestCase.run_in_subprocess(env_overrides=dict(DD_TRACE_SPAN_ATTRIBUTE_SCHEMA="v1")) async def test_span_name_v1_schema(self): conn = await self._get_conn() @@ -298,7 +285,6 @@ async def test_span_name_v1_schema(self): self.assertEqual(len(spans), 1) assert spans[0].name == "postgresql.query" - @mark_asyncio async def test_contextmanager_connection(self): service = "fo" db = await self._get_conn(service=service) @@ -306,7 +292,6 @@ async def test_contextmanager_connection(self): await cursor.execute("""select 'blah'""") self.assert_structure(dict(name="postgres.query", service=service)) - @mark_asyncio async def test_connection_execute(self): """Checks whether connection execute shortcute method works as normal""" @@ -318,7 +303,6 @@ async def test_connection_execute(self): assert len(rows) == 1, rows assert rows[0][0] == "one" - @mark_asyncio async def test_connection_context_execute(self): """Checks whether connection context manager works as normal.""" @@ -330,7 +314,6 @@ async def test_connection_context_execute(self): assert len(rows) == 1, rows assert rows[0][0] == "one" - @mark_asyncio async def test_cursor_context_execute(self): """Checks whether cursor context manager works as normal.""" @@ -342,7 +325,6 @@ async def test_cursor_context_execute(self): assert len(rows) == 1, rows assert rows[0][0] == "one" - @mark_asyncio async def test_cursor_from_connection_shortcut(self): """Checks whether connection execute shortcute method works as normal""" diff --git a/tests/contrib/pylibmc/test.py b/tests/contrib/pylibmc/test.py index 825b9c939aa..a67fe56b8b1 100644 --- a/tests/contrib/pylibmc/test.py +++ b/tests/contrib/pylibmc/test.py @@ -160,6 +160,27 @@ def test_get_rowcount(self): assert get_missing_key_span.resource == "get" assert get_missing_key_span.get_metric("db.row_count") == 0 + def test_add(self): + client, tracer = self.get_client() + # test + start = time.time() + client.add("a", "first") + out = client.get("a") + assert out == "first" + client.add("a", "second") + out = client.get("a") + assert out == "first" + end = time.time() + # verify + spans = tracer.pop() + for s in spans: + self._verify_cache_span(s, start, end) + + assert spans[0].resource == "add" + assert spans[1].resource == "get" + assert spans[2].resource == "add" + assert spans[3].resource == "get" + def test_get_multi_rowcount(self): client, tracer = self.get_client() # test diff --git a/tests/contrib/redis/test_redis_asyncio.py b/tests/contrib/redis/test_redis_asyncio.py index b8cc87d319c..5b5d32bbacc 100644 --- a/tests/contrib/redis/test_redis_asyncio.py +++ b/tests/contrib/redis/test_redis_asyncio.py @@ -22,21 +22,18 @@ def get_redis_instance(max_connections: int, client_name: typing.Optional[str] = ) -@pytest.mark.asyncio @pytest.fixture def redis_client(): r = get_redis_instance(max_connections=10) # default values yield r -@pytest.mark.asyncio @pytest.fixture def single_pool_redis_client(): r = get_redis_instance(max_connections=1) yield r -@pytest.mark.asyncio @pytest.fixture(autouse=True) async def traced_redis(redis_client): await redis_client.flushall() @@ -65,21 +62,18 @@ def test_patching(): assert not isinstance(redis.asyncio.client.Pipeline.pipeline, ObjectProxy) -@pytest.mark.asyncio @pytest.mark.snapshot(wait_for_num_traces=1) async def test_basic_request(redis_client): val = await redis_client.get("cheese") assert val is None -@pytest.mark.asyncio @pytest.mark.snapshot(wait_for_num_traces=1) async def test_unicode_request(redis_client): val = await redis_client.get("😐") assert val is None -@pytest.mark.asyncio @pytest.mark.snapshot(wait_for_num_traces=1, ignores=["meta.error.stack"]) async def test_connection_error(redis_client): with mock.patch.object( @@ -91,7 +85,6 @@ async def test_connection_error(redis_client): await redis_client.get("foo") -@pytest.mark.asyncio @pytest.mark.snapshot(wait_for_num_traces=2) async def test_decoding_non_utf8_args(redis_client): await redis_client.set(b"\x80foo", b"\x80abc") @@ -99,7 +92,6 @@ async def test_decoding_non_utf8_args(redis_client): assert val == b"\x80abc" -@pytest.mark.asyncio @pytest.mark.snapshot(wait_for_num_traces=1) async def test_decoding_non_utf8_pipeline_args(redis_client): p = redis_client.pipeline() @@ -115,7 +107,6 @@ async def test_decoding_non_utf8_pipeline_args(redis_client): assert response_list[3] == b"\x80abc" -@pytest.mark.asyncio @pytest.mark.snapshot(wait_for_num_traces=1) async def test_long_command(redis_client): length = 1000 @@ -125,7 +116,6 @@ async def test_long_command(redis_client): assert val is None -@pytest.mark.asyncio @pytest.mark.snapshot(wait_for_num_traces=3) async def test_override_service_name(redis_client): with override_config("redis", dict(service_name="myredis")): @@ -138,7 +128,6 @@ async def test_override_service_name(redis_client): assert val == "my-cheese" -@pytest.mark.asyncio @pytest.mark.snapshot(wait_for_num_traces=1) async def test_pin(redis_client): Pin.override(redis_client, service="my-redis") @@ -146,7 +135,6 @@ async def test_pin(redis_client): assert val is None -@pytest.mark.asyncio @pytest.mark.snapshot(wait_for_num_traces=1) async def test_pipeline_traced(redis_client): p = redis_client.pipeline(transaction=False) @@ -164,7 +152,6 @@ async def test_pipeline_traced(redis_client): assert response_list[3].decode() == "bar" -@pytest.mark.asyncio @pytest.mark.snapshot(wait_for_num_traces=1) async def test_pipeline_traced_context_manager_transaction(redis_client): """ @@ -190,7 +177,6 @@ async def main(): assert get_2.decode() == "bar" -@pytest.mark.asyncio @pytest.mark.snapshot(wait_for_num_traces=1) async def test_two_traced_pipelines(redis_client): with tracer.trace("web-request", service="test"): @@ -220,7 +206,6 @@ async def test_two_traced_pipelines(redis_client): assert response_list2[1].decode() == "bar" -@pytest.mark.asyncio async def test_parenting(redis_client, snapshot_context): with snapshot_context(wait_for_num_traces=1): with tracer.trace("web-request", service="test"): @@ -228,7 +213,6 @@ async def test_parenting(redis_client, snapshot_context): await redis_client.get("blah") -@pytest.mark.asyncio async def test_client_name(snapshot_context): with snapshot_context(wait_for_num_traces=1): with tracer.trace("web-request", service="test"): diff --git a/tests/debugging/exception/test_auto_instrument.py b/tests/debugging/exception/test_replay.py similarity index 83% rename from tests/debugging/exception/test_auto_instrument.py rename to tests/debugging/exception/test_replay.py index d2f408fd8c6..c87670bafc6 100644 --- a/tests/debugging/exception/test_auto_instrument.py +++ b/tests/debugging/exception/test_replay.py @@ -3,26 +3,46 @@ import pytest import ddtrace -import ddtrace.debugging._exception.auto_instrument as auto_instrument +from ddtrace.debugging._exception import replay from ddtrace.internal.packages import _third_party_packages from ddtrace.internal.rate_limiter import BudgetRateLimiterWithJitter as RateLimiter -from tests.debugging.mocking import exception_debugging +from ddtrace.settings.exception_replay import ExceptionReplayConfig +from tests.debugging.mocking import exception_replay from tests.utils import TracerTestCase +def test_exception_replay_config_enabled(monkeypatch): + monkeypatch.setenv("DD_EXCEPTION_REPLAY_ENABLED", "1") + + er_config = ExceptionReplayConfig() + assert er_config.enabled + + +def test_exception_replay_config_enabled_deprecated(monkeypatch): + monkeypatch.setenv("DD_EXCEPTION_DEBUGGING_ENABLED", "1") + + er_config = ExceptionReplayConfig() + assert er_config.enabled + + monkeypatch.setenv("DD_EXCEPTION_REPLAY_ENABLED", "false") + + er_config = ExceptionReplayConfig() + assert not er_config.enabled + + @contextmanager def with_rate_limiter(limiter): - original_limiter = auto_instrument.GLOBAL_RATE_LIMITER - mocked = auto_instrument.GLOBAL_RATE_LIMITER = limiter + original_limiter = replay.GLOBAL_RATE_LIMITER + mocked = replay.GLOBAL_RATE_LIMITER = limiter yield mocked - auto_instrument.GLOBAL_RATE_LIMITER = original_limiter + replay.GLOBAL_RATE_LIMITER = original_limiter -class ExceptionDebuggingTestCase(TracerTestCase): +class ExceptionReplayTestCase(TracerTestCase): def setUp(self): - super(ExceptionDebuggingTestCase, self).setUp() + super(ExceptionReplayTestCase, self).setUp() self.backup_tracer = ddtrace.tracer ddtrace.tracer = self.tracer _third_party_packages().remove("ddtrace") @@ -30,9 +50,9 @@ def setUp(self): def tearDown(self): _third_party_packages().add("ddtrace") ddtrace.tracer = self.backup_tracer - super(ExceptionDebuggingTestCase, self).tearDown() + super(ExceptionReplayTestCase, self).tearDown() - def test_debugger_exception_debugging(self): + def test_debugger_exception_replay(self): def a(v, d=None): with self.trace("a"): if not v: @@ -48,7 +68,7 @@ def c(foo=42): sh = 3 b(foo << sh) - with exception_debugging() as uploader: + with exception_replay() as uploader: with with_rate_limiter(RateLimiter(limit_rate=1, raise_on_exceed=False)): with pytest.raises(ValueError): c() @@ -107,7 +127,7 @@ def c(foo=42): sh = 3 b_chain(foo << sh) - with exception_debugging() as uploader: + with exception_replay() as uploader: rate_limiter = RateLimiter( limit_rate=0.1, # one trace per second tau=10, diff --git a/tests/debugging/mocking.py b/tests/debugging/mocking.py index 6a1d1da2f9b..249b5794307 100644 --- a/tests/debugging/mocking.py +++ b/tests/debugging/mocking.py @@ -10,7 +10,7 @@ from ddtrace.debugging._config import di_config from ddtrace.debugging._debugger import Debugger -from ddtrace.debugging._exception.auto_instrument import SpanExceptionProcessor +from ddtrace.debugging._exception.replay import SpanExceptionProcessor from ddtrace.debugging._probe.model import Probe from ddtrace.debugging._probe.remoteconfig import ProbePollerEvent from ddtrace.debugging._probe.remoteconfig import _filter_by_env_and_version @@ -201,7 +201,7 @@ class MockSpanExceptionProcessor(SpanExceptionProcessor): @contextmanager -def exception_debugging(**config_overrides: Any) -> Generator[MockLogsIntakeUploaderV1, None, None]: +def exception_replay(**config_overrides: Any) -> Generator[MockLogsIntakeUploaderV1, None, None]: processor = MockSpanExceptionProcessor() processor.register() try: diff --git a/tests/internal/crashtracker/test_crashtracker.py b/tests/internal/crashtracker/test_crashtracker.py index cae856f3b00..a3aea313ee4 100644 --- a/tests/internal/crashtracker/test_crashtracker.py +++ b/tests/internal/crashtracker/test_crashtracker.py @@ -1,7 +1,10 @@ +import os import sys import pytest +import tests.internal.crashtracker.utils as utils + @pytest.mark.skipif(not sys.platform.startswith("linux"), reason="Linux only") @pytest.mark.subprocess() @@ -274,3 +277,266 @@ def test_crashtracker_raise_sigbus(): data = utils.conn_to_bytes(conn) conn.close() assert b"os_kill" in data + + +preload_code = """ +import ctypes +ctypes.string_at(0) +exit(-1) +""" + + +@pytest.mark.skipif(not sys.platform.startswith("linux"), reason="Linux only") +def test_crashtracker_preload_default(ddtrace_run_python_code_in_subprocess): + # Setup the listening socket before we open ddtrace + port, sock = utils.crashtracker_receiver_bind() + assert sock + + # Call the program + env = os.environ.copy() + env["DD_TRACE_AGENT_URL"] = "http://localhost:%d" % port + stdout, stderr, exitcode, _ = ddtrace_run_python_code_in_subprocess(preload_code, env=env) + + # Check for expected exit condition + assert not stdout + assert not stderr + assert exitcode == -11 # exit code for SIGSEGV + + # Wait for the connection + conn = utils.listen_get_conn(sock) + assert conn + data = utils.conn_to_bytes(conn) + conn.close() + assert data + assert b"string_at" in data + + +@pytest.mark.skipif(not sys.platform.startswith("linux"), reason="Linux only") +def test_crashtracker_preload_disabled(ddtrace_run_python_code_in_subprocess): + # Setup the listening socket before we open ddtrace + port, sock = utils.crashtracker_receiver_bind() + assert sock + + # Call the program + env = os.environ.copy() + env["DD_TRACE_AGENT_URL"] = "http://localhost:%d" % port + env["DD_CRASHTRACKER_ENABLED"] = "false" + stdout, stderr, exitcode, _ = ddtrace_run_python_code_in_subprocess(preload_code, env=env) + + # Check for expected exit condition + assert not stdout + assert not stderr + assert exitcode == -11 + + # Wait for the connection, which should fail + conn = utils.listen_get_conn(sock) + assert not conn + + +auto_code = """ +import ctypes +import ddtrace.auto +ctypes.string_at(0) +exit(-1) +""" + + +@pytest.mark.skipif(not sys.platform.startswith("linux"), reason="Linux only") +def test_crashtracker_auto_default(run_python_code_in_subprocess): + # Setup the listening socket before we open ddtrace + port, sock = utils.crashtracker_receiver_bind() + assert sock + + # Call the program + env = os.environ.copy() + env["DD_TRACE_AGENT_URL"] = "http://localhost:%d" % port + stdout, stderr, exitcode, _ = run_python_code_in_subprocess(auto_code, env=env) + + # Check for expected exit condition + assert not stdout + assert not stderr + assert exitcode == -11 + + # Wait for the connection + conn = utils.listen_get_conn(sock) + assert conn + data = utils.conn_to_bytes(conn) + conn.close() + assert data + assert b"string_at" in data + + +@pytest.mark.skipif(not sys.platform.startswith("linux"), reason="Linux only") +def test_crashtracker_auto_nostack(run_python_code_in_subprocess): + # Setup the listening socket before we open ddtrace + port, sock = utils.crashtracker_receiver_bind() + assert sock + + # Call the program + env = os.environ.copy() + env["DD_TRACE_AGENT_URL"] = "http://localhost:%d" % port + env["DD_CRASHTRACKER_STACKTRACE_RESOLVER"] = "none" + stdout, stderr, exitcode, _ = run_python_code_in_subprocess(auto_code, env=env) + + # Check for expected exit condition + assert not stdout + assert not stderr + assert exitcode == -11 + + # Wait for the connection + conn = utils.listen_get_conn(sock) + assert conn + data = utils.conn_to_bytes(conn) + conn.close() + assert data + assert b"string_at" not in data + + +@pytest.mark.skipif(not sys.platform.startswith("linux"), reason="Linux only") +def test_crashtracker_auto_disabled(run_python_code_in_subprocess): + # Setup the listening socket before we open ddtrace + port, sock = utils.crashtracker_receiver_bind() + assert sock + + # Call the program + env = os.environ.copy() + env["DD_TRACE_AGENT_URL"] = "http://localhost:%d" % port + env["DD_CRASHTRACKER_ENABLED"] = "false" + stdout, stderr, exitcode, _ = run_python_code_in_subprocess(auto_code, env=env) + + # Check for expected exit condition + assert not stdout + assert not stderr + assert exitcode == -11 + + # Wait for the connection, which should fail + conn = utils.listen_get_conn(sock) + assert not conn + + +@pytest.mark.skipif(not sys.platform.startswith("linux"), reason="Linux only") +def test_crashtracker_user_tags_envvar(run_python_code_in_subprocess): + # Setup the listening socket before we open ddtrace + port, sock = utils.crashtracker_receiver_bind() + assert sock + + # Call the program + env = os.environ.copy() + env["DD_TRACE_AGENT_URL"] = "http://localhost:%d" % port + + # Injecting tags, but since the way we validate them is with a raw-data string search, we make things unique + tag_prefix = "cryptocrystalline" + tags = { + tag_prefix + "_tag1": "quartz_flint", + tag_prefix + "_tag2": "quartz_chert", + } + env["DD_CRASHTRACKER_TAGS"] = ",".join(["%s:%s" % (k, v) for k, v in tags.items()]) + stdout, stderr, exitcode, _ = run_python_code_in_subprocess(auto_code, env=env) + + # Check for expected exit condition + assert not stdout + assert not stderr + assert exitcode == -11 + + # Wait for the connection + conn = utils.listen_get_conn(sock) + assert conn + data = utils.conn_to_bytes(conn) + assert data + + # Now check for the tags + for k, v in tags.items(): + assert k.encode() in data + assert v.encode() in data + + +@pytest.mark.skipif(not sys.platform.startswith("linux"), reason="Linux only") +@pytest.mark.subprocess() +def test_crashtracker_user_tags_profiling(): + # Tests tag ingestion in the backend API (which is currently out of profiling) + import ctypes + import os + + import ddtrace.internal.datadog.profiling.crashtracker as crashtracker + import tests.internal.crashtracker.utils as utils + + # Define some tags + tag_prefix = "manganese_oxides" + tags = { + tag_prefix + "_tag1": "pyrolusite", + tag_prefix + "_tag2": "birnessite", + } + + port, sock = utils.crashtracker_receiver_bind() + assert port + assert sock + + pid = os.fork() + if pid == 0: + # Set the tags before starting + for k, v in tags.items(): + crashtracker.set_tag(k, v) + assert utils.start_crashtracker(port) + stdout_msg, stderr_msg = utils.read_files(["stdout.log", "stderr.log"]) + assert not stdout_msg + assert not stderr_msg + + ctypes.string_at(0) + exit(-1) + + conn = utils.listen_get_conn(sock) + assert conn + data = utils.conn_to_bytes(conn) + conn.close() + assert b"string_at" in data + + # Now check for the tags + for k, v in tags.items(): + assert k.encode() in data + assert v.encode() in data + + +@pytest.mark.skipif(not sys.platform.startswith("linux"), reason="Linux only") +@pytest.mark.subprocess() +def test_crashtracker_user_tags_core(): + # Tests tag ingestion in the core API + import ctypes + import os + + from ddtrace.internal.core import crashtracking + import tests.internal.crashtracker.utils as utils + + # Define some tags + tag_prefix = "manganese_oxides" + tags = { + tag_prefix + "_tag1": "pyrolusite", + tag_prefix + "_tag2": "birnessite", + } + + port, sock = utils.crashtracker_receiver_bind() + assert port + assert sock + + pid = os.fork() + if pid == 0: + # Set the tags before starting + for k, v in tags.items(): + crashtracking.add_tag(k, v) + assert utils.start_crashtracker(port) + stdout_msg, stderr_msg = utils.read_files(["stdout.log", "stderr.log"]) + assert not stdout_msg + assert not stderr_msg + + ctypes.string_at(0) + exit(-1) + + conn = utils.listen_get_conn(sock) + assert conn + data = utils.conn_to_bytes(conn) + conn.close() + assert b"string_at" in data + + # Now check for the tags + for k, v in tags.items(): + assert k.encode() in data + assert v.encode() in data diff --git a/tests/internal/test_settings.py b/tests/internal/test_settings.py index 0ad706b3951..1f3ecc42a0a 100644 --- a/tests/internal/test_settings.py +++ b/tests/internal/test_settings.py @@ -103,6 +103,17 @@ def _deleted_rc_config(): "expected": {"trace_http_header_tags": {"header": "value"}}, "expected_source": {"trace_http_header_tags": "code"}, }, + { + "env": {"DD_TRACE_HEADER_TAGS": "X-Header-Tag-1,X-Header-Tag-2,X-Header-Tag-3:specific_tag3"}, + "expected": { + "trace_http_header_tags": { + "X-Header-Tag-1": "", + "X-Header-Tag-2": "", + "X-Header-Tag-3": "specific_tag3", + } + }, + "expected_source": {"trace_http_header_tags": "env_var"}, + }, { "env": {"DD_TRACE_HEADER_TAGS": "X-Header-Tag-1:header_tag_1,X-Header-Tag-2:header_tag_2"}, "rc": { diff --git a/tests/smoke_test.py b/tests/smoke_test.py index 5e991782b86..a4fbe3d5a39 100644 --- a/tests/smoke_test.py +++ b/tests/smoke_test.py @@ -1,4 +1,3 @@ -import os from platform import system import sys @@ -16,24 +15,6 @@ def mac_supported_iast_version(): if __name__ == "__main__": - # ASM IAST smoke test - if (3, 6, 0) <= sys.version_info < (3, 12) and system() != "Windows" and mac_supported_iast_version(): - # ASM IAST import error test - import_error = False - try: - from ddtrace.appsec._iast._taint_tracking._native import ops - except ImportError: - import_error = True - - assert import_error - assert "ddtrace.appsec._iast._taint_tracking._native.ops" not in sys.modules - - os.environ["DD_IAST_ENABLED"] = "True" - - from ddtrace.appsec._iast._taint_tracking._native import ops - - assert ops - # ASM WAF smoke test if system() == "Linux": if not sys.maxsize > 2**32: diff --git a/tests/snapshots/tests.appsec.appsec.test_processor.test_appsec_body_no_collection_snapshot.json b/tests/snapshots/tests.appsec.appsec.test_processor.test_appsec_body_no_collection_snapshot.json index 39a21e31b88..da402408eab 100644 --- a/tests/snapshots/tests.appsec.appsec.test_processor.test_appsec_body_no_collection_snapshot.json +++ b/tests/snapshots/tests.appsec.appsec.test_processor.test_appsec_body_no_collection_snapshot.json @@ -8,9 +8,9 @@ "parent_id": 0, "type": "web", "meta": { - "_dd.appsec.event_rules.version": "1.12.0", + "_dd.appsec.event_rules.version": "1.13.0", "_dd.appsec.json": "{\"triggers\":[\n {\n \"rule\": {\n \"id\": \"nfd-000-006\",\n \"name\": \"Detect failed attempt to fetch sensitive files\",\n \"tags\": {\n \"capec\": \"1000/118/169\",\n \"category\": \"attack_attempt\",\n \"confidence\": \"1\",\n \"cwe\": \"200\",\n \"type\": \"security_scanner\"\n }\n },\n \"rule_matches\": [\n {\n \"operator\": \"match_regex\",\n \"operator_value\": \"^404$\",\n \"parameters\": [\n {\n \"address\": \"server.response.status\",\n \"highlight\": [\n \"404\"\n ],\n \"key_path\": [],\n \"value\": \"404\"\n }\n ]\n },\n {\n \"operator\": \"match_regex\",\n \"operator_value\": \"\\\\.(cgi|bat|dll|exe|key|cert|crt|pem|der|pkcs|pkcs|pkcs[0-9]*|nsf|jsa|war|java|class|vb|vba|so|git|svn|hg|cvs)([^a-zA-Z0-9_]|$)\",\n \"parameters\": [\n {\n \"address\": \"server.request.uri.raw\",\n \"highlight\": [\n \".git\"\n ],\n \"key_path\": [],\n \"value\": \"/.git\"\n }\n ]\n }\n ]\n }\n]}", - "_dd.appsec.waf.version": "1.18.0", + "_dd.appsec.waf.version": "1.19.0", "_dd.origin": "appsec", "_dd.p.appsec": "1", "_dd.p.dm": "-5", @@ -23,7 +23,7 @@ "metrics": { "_dd.appsec.enabled": 1.0, "_dd.appsec.event_rules.error_count": 0, - "_dd.appsec.event_rules.loaded": 157, + "_dd.appsec.event_rules.loaded": 158, "_dd.appsec.waf.duration": 204.672, "_dd.appsec.waf.duration_ext": 280.3802490234375, "_dd.top_level": 1, diff --git a/tests/snapshots/tests.appsec.appsec.test_processor.test_appsec_cookies_no_collection_snapshot.json b/tests/snapshots/tests.appsec.appsec.test_processor.test_appsec_cookies_no_collection_snapshot.json index 2d61721aecc..d999562b162 100644 --- a/tests/snapshots/tests.appsec.appsec.test_processor.test_appsec_cookies_no_collection_snapshot.json +++ b/tests/snapshots/tests.appsec.appsec.test_processor.test_appsec_cookies_no_collection_snapshot.json @@ -8,9 +8,9 @@ "parent_id": 0, "type": "web", "meta": { - "_dd.appsec.event_rules.version": "1.12.0", + "_dd.appsec.event_rules.version": "1.13.0", "_dd.appsec.json": "{\"triggers\":[\n {\n \"rule\": {\n \"id\": \"nfd-000-006\",\n \"name\": \"Detect failed attempt to fetch sensitive files\",\n \"tags\": {\n \"capec\": \"1000/118/169\",\n \"category\": \"attack_attempt\",\n \"confidence\": \"1\",\n \"cwe\": \"200\",\n \"type\": \"security_scanner\"\n }\n },\n \"rule_matches\": [\n {\n \"operator\": \"match_regex\",\n \"operator_value\": \"^404$\",\n \"parameters\": [\n {\n \"address\": \"server.response.status\",\n \"highlight\": [\n \"404\"\n ],\n \"key_path\": [],\n \"value\": \"404\"\n }\n ]\n },\n {\n \"operator\": \"match_regex\",\n \"operator_value\": \"\\\\.(cgi|bat|dll|exe|key|cert|crt|pem|der|pkcs|pkcs|pkcs[0-9]*|nsf|jsa|war|java|class|vb|vba|so|git|svn|hg|cvs)([^a-zA-Z0-9_]|$)\",\n \"parameters\": [\n {\n \"address\": \"server.request.uri.raw\",\n \"highlight\": [\n \".git\"\n ],\n \"key_path\": [],\n \"value\": \"/.git\"\n }\n ]\n }\n ]\n }\n]}", - "_dd.appsec.waf.version": "1.18.0", + "_dd.appsec.waf.version": "1.19.0", "_dd.origin": "appsec", "_dd.p.appsec": "1", "_dd.p.dm": "-5", @@ -23,7 +23,7 @@ "metrics": { "_dd.appsec.enabled": 1.0, "_dd.appsec.event_rules.error_count": 0, - "_dd.appsec.event_rules.loaded": 157, + "_dd.appsec.event_rules.loaded": 158, "_dd.appsec.waf.duration": 103.238, "_dd.appsec.waf.duration_ext": 174.04556274414062, "_dd.top_level": 1, diff --git a/tests/snapshots/tests.appsec.appsec.test_processor.test_appsec_span_tags_snapshot.json b/tests/snapshots/tests.appsec.appsec.test_processor.test_appsec_span_tags_snapshot.json index 749416020da..8ab6771e21b 100644 --- a/tests/snapshots/tests.appsec.appsec.test_processor.test_appsec_span_tags_snapshot.json +++ b/tests/snapshots/tests.appsec.appsec.test_processor.test_appsec_span_tags_snapshot.json @@ -8,9 +8,9 @@ "parent_id": 0, "type": "web", "meta": { - "_dd.appsec.event_rules.version": "1.12.0", + "_dd.appsec.event_rules.version": "1.13.0", "_dd.appsec.json": "{\"triggers\":[\n {\n \"rule\": {\n \"id\": \"nfd-000-006\",\n \"name\": \"Detect failed attempt to fetch sensitive files\",\n \"tags\": {\n \"capec\": \"1000/118/169\",\n \"category\": \"attack_attempt\",\n \"confidence\": \"1\",\n \"cwe\": \"200\",\n \"type\": \"security_scanner\"\n }\n },\n \"rule_matches\": [\n {\n \"operator\": \"match_regex\",\n \"operator_value\": \"^404$\",\n \"parameters\": [\n {\n \"address\": \"server.response.status\",\n \"highlight\": [\n \"404\"\n ],\n \"key_path\": [],\n \"value\": \"404\"\n }\n ]\n },\n {\n \"operator\": \"match_regex\",\n \"operator_value\": \"\\\\.(cgi|bat|dll|exe|key|cert|crt|pem|der|pkcs|pkcs|pkcs[0-9]*|nsf|jsa|war|java|class|vb|vba|so|git|svn|hg|cvs)([^a-zA-Z0-9_]|$)\",\n \"parameters\": [\n {\n \"address\": \"server.request.uri.raw\",\n \"highlight\": [\n \".git\"\n ],\n \"key_path\": [],\n \"value\": \"/.git\"\n }\n ]\n }\n ]\n }\n]}", - "_dd.appsec.waf.version": "1.18.0", + "_dd.appsec.waf.version": "1.19.0", "_dd.base_service": "", "_dd.origin": "appsec", "_dd.p.appsec": "1", @@ -25,7 +25,7 @@ "metrics": { "_dd.appsec.enabled": 1.0, "_dd.appsec.event_rules.error_count": 0, - "_dd.appsec.event_rules.loaded": 157, + "_dd.appsec.event_rules.loaded": 158, "_dd.appsec.waf.duration": 126.022, "_dd.appsec.waf.duration_ext": 203.3710479736328, "_dd.top_level": 1, diff --git a/tests/snapshots/tests.appsec.appsec.test_processor.test_appsec_span_tags_snapshot_with_errors.json b/tests/snapshots/tests.appsec.appsec.test_processor.test_appsec_span_tags_snapshot_with_errors.json index 86fcfba9f3f..be2c1bae9bb 100644 --- a/tests/snapshots/tests.appsec.appsec.test_processor.test_appsec_span_tags_snapshot_with_errors.json +++ b/tests/snapshots/tests.appsec.appsec.test_processor.test_appsec_span_tags_snapshot_with_errors.json @@ -10,7 +10,7 @@ "meta": { "_dd.appsec.event_rules.errors": "{\"missing key 'conditions'\": [\"crs-913-110\"], \"missing key 'tags'\": [\"crs-942-100\"]}", "_dd.appsec.event_rules.version": "5.5.5", - "_dd.appsec.waf.version": "1.18.0", + "_dd.appsec.waf.version": "1.19.0", "_dd.base_service": "", "_dd.p.dm": "-0", "_dd.runtime_family": "python", diff --git a/tests/snapshots/tests.contrib.django.test_django_appsec_snapshots.test_appsec_enabled.json b/tests/snapshots/tests.contrib.django.test_django_appsec_snapshots.test_appsec_enabled.json index b9635f0f1f7..28b5e6f37c2 100644 --- a/tests/snapshots/tests.contrib.django.test_django_appsec_snapshots.test_appsec_enabled.json +++ b/tests/snapshots/tests.contrib.django.test_django_appsec_snapshots.test_appsec_enabled.json @@ -9,8 +9,8 @@ "type": "web", "error": 0, "meta": { - "_dd.appsec.event_rules.version": "1.12.0", - "_dd.appsec.waf.version": "1.18.0", + "_dd.appsec.event_rules.version": "1.13.0", + "_dd.appsec.waf.version": "1.19.0", "_dd.base_service": "", "_dd.p.dm": "-0", "_dd.p.tid": "654a694400000000", @@ -42,7 +42,7 @@ "metrics": { "_dd.appsec.enabled": 1.0, "_dd.appsec.event_rules.error_count": 0, - "_dd.appsec.event_rules.loaded": 157, + "_dd.appsec.event_rules.loaded": 158, "_dd.appsec.waf.duration": 96.626, "_dd.appsec.waf.duration_ext": 147.81951904296875, "_dd.measured": 1, diff --git a/tests/snapshots/tests.contrib.django.test_django_appsec_snapshots.test_appsec_enabled_attack.json b/tests/snapshots/tests.contrib.django.test_django_appsec_snapshots.test_appsec_enabled_attack.json index 084ddc1342b..2cd56b8fd7c 100644 --- a/tests/snapshots/tests.contrib.django.test_django_appsec_snapshots.test_appsec_enabled_attack.json +++ b/tests/snapshots/tests.contrib.django.test_django_appsec_snapshots.test_appsec_enabled_attack.json @@ -9,9 +9,9 @@ "type": "web", "error": 0, "meta": { - "_dd.appsec.event_rules.version": "1.12.0", + "_dd.appsec.event_rules.version": "1.13.0", "_dd.appsec.json": "{\"triggers\":[\n {\n \"rule\": {\n \"id\": \"nfd-000-006\",\n \"name\": \"Detect failed attempt to fetch sensitive files\",\n \"tags\": {\n \"capec\": \"1000/118/169\",\n \"category\": \"attack_attempt\",\n \"confidence\": \"1\",\n \"cwe\": \"200\",\n \"type\": \"security_scanner\"\n }\n },\n \"rule_matches\": [\n {\n \"operator\": \"match_regex\",\n \"operator_value\": \"^404$\",\n \"parameters\": [\n {\n \"address\": \"server.response.status\",\n \"highlight\": [\n \"404\"\n ],\n \"key_path\": [],\n \"value\": \"404\"\n }\n ]\n },\n {\n \"operator\": \"match_regex\",\n \"operator_value\": \"\\\\.(cgi|bat|dll|exe|key|cert|crt|pem|der|pkcs|pkcs|pkcs[0-9]*|nsf|jsa|war|java|class|vb|vba|so|git|svn|hg|cvs)([^a-zA-Z0-9_]|$)\",\n \"parameters\": [\n {\n \"address\": \"server.request.uri.raw\",\n \"highlight\": [\n \".git\"\n ],\n \"key_path\": [],\n \"value\": \"/.git\"\n }\n ]\n }\n ]\n }\n]}", - "_dd.appsec.waf.version": "1.18.0", + "_dd.appsec.waf.version": "1.19.0", "_dd.base_service": "", "_dd.origin": "appsec", "_dd.p.appsec": "1", @@ -45,7 +45,7 @@ "metrics": { "_dd.appsec.enabled": 1.0, "_dd.appsec.event_rules.error_count": 0, - "_dd.appsec.event_rules.loaded": 157, + "_dd.appsec.event_rules.loaded": 158, "_dd.appsec.waf.duration": 236.874, "_dd.appsec.waf.duration_ext": 339.26963806152344, "_dd.measured": 1, diff --git a/tests/snapshots/tests.contrib.django.test_django_appsec_snapshots.test_request_ipblock_match_403.json b/tests/snapshots/tests.contrib.django.test_django_appsec_snapshots.test_request_ipblock_match_403.json index 22b74fdb577..78c86b04a6f 100644 --- a/tests/snapshots/tests.contrib.django.test_django_appsec_snapshots.test_request_ipblock_match_403.json +++ b/tests/snapshots/tests.contrib.django.test_django_appsec_snapshots.test_request_ipblock_match_403.json @@ -11,7 +11,7 @@ "meta": { "_dd.appsec.event_rules.version": "rules_good", "_dd.appsec.json": "{\"triggers\":[{\"rule\":{\"id\":\"blk-001-001\",\"name\":\"Block IP addresses\",\"on_match\":[\"block\"],\"tags\":{\"category\":\"blocking\",\"type\":\"ip_addresses\"}},\"rule_matches\":[{\"operator\":\"ip_match\",\"operator_value\":\"\",\"parameters\":[{\"address\":\"http.client_ip\",\"key_path\":[],\"value\":\"8.8.4.4\",\"highlight\":[\"8.8.4.4\"]}]}],\"span_id\":10192376353237234254}]}", - "_dd.appsec.waf.version": "1.18.0", + "_dd.appsec.waf.version": "1.19.0", "_dd.base_service": "", "_dd.origin": "appsec", "_dd.p.appsec": "1", diff --git a/tests/snapshots/tests.contrib.django.test_django_appsec_snapshots.test_request_ipblock_match_403_json.json b/tests/snapshots/tests.contrib.django.test_django_appsec_snapshots.test_request_ipblock_match_403_json.json index 92b55f6fad4..6be4a7ac6f3 100644 --- a/tests/snapshots/tests.contrib.django.test_django_appsec_snapshots.test_request_ipblock_match_403_json.json +++ b/tests/snapshots/tests.contrib.django.test_django_appsec_snapshots.test_request_ipblock_match_403_json.json @@ -11,7 +11,7 @@ "meta": { "_dd.appsec.event_rules.version": "rules_good", "_dd.appsec.json": "{\"triggers\":[{\"rule\":{\"id\":\"blk-001-001\",\"name\":\"Block IP addresses\",\"on_match\":[\"block\"],\"tags\":{\"category\":\"blocking\",\"type\":\"ip_addresses\"}},\"rule_matches\":[{\"operator\":\"ip_match\",\"operator_value\":\"\",\"parameters\":[{\"address\":\"http.client_ip\",\"key_path\":[],\"value\":\"8.8.4.4\",\"highlight\":[\"8.8.4.4\"]}]}],\"span_id\":865087550764298227}]}", - "_dd.appsec.waf.version": "1.18.0", + "_dd.appsec.waf.version": "1.19.0", "_dd.base_service": "", "_dd.origin": "appsec", "_dd.p.appsec": "1", diff --git a/tests/snapshots/tests.contrib.django.test_django_appsec_snapshots.test_request_ipblock_nomatch_200.json b/tests/snapshots/tests.contrib.django.test_django_appsec_snapshots.test_request_ipblock_nomatch_200.json index 18e5a5002d3..b4063acc654 100644 --- a/tests/snapshots/tests.contrib.django.test_django_appsec_snapshots.test_request_ipblock_nomatch_200.json +++ b/tests/snapshots/tests.contrib.django.test_django_appsec_snapshots.test_request_ipblock_nomatch_200.json @@ -10,7 +10,7 @@ "error": 0, "meta": { "_dd.appsec.event_rules.version": "rules_good", - "_dd.appsec.waf.version": "1.18.0", + "_dd.appsec.waf.version": "1.19.0", "_dd.base_service": "", "_dd.p.dm": "-0", "_dd.p.tid": "654a694400000000", diff --git a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_ipblock_match_403[flask_appsec_good_rules_env].json b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_ipblock_match_403[flask_appsec_good_rules_env].json index 229ec986ff7..3cc105b6f7b 100644 --- a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_ipblock_match_403[flask_appsec_good_rules_env].json +++ b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_ipblock_match_403[flask_appsec_good_rules_env].json @@ -11,7 +11,7 @@ "meta": { "_dd.appsec.event_rules.version": "rules_good", "_dd.appsec.json": "{\"triggers\":[\n {\n \"rule\": {\n \"id\": \"blk-001-001\",\n \"name\": \"Block IP addresses\",\n \"on_match\": [\n \"block\"\n ],\n \"tags\": {\n \"category\": \"blocking\",\n \"type\": \"ip_addresses\"\n }\n },\n \"rule_matches\": [\n {\n \"operator\": \"ip_match\",\n \"operator_value\": \"\",\n \"parameters\": [\n {\n \"address\": \"http.client_ip\",\n \"highlight\": [\n \"8.8.4.4\"\n ],\n \"key_path\": [],\n \"value\": \"8.8.4.4\"\n }\n ]\n }\n ]\n }\n]}", - "_dd.appsec.waf.version": "1.18.0", + "_dd.appsec.waf.version": "1.19.0", "_dd.base_service": "", "_dd.origin": "appsec", "_dd.p.appsec": "1", diff --git a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_ipblock_match_403[flask_appsec_good_rules_env]_220.json b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_ipblock_match_403[flask_appsec_good_rules_env]_220.json index 4d23d78e00e..e4f9a3bbd41 100644 --- a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_ipblock_match_403[flask_appsec_good_rules_env]_220.json +++ b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_ipblock_match_403[flask_appsec_good_rules_env]_220.json @@ -11,7 +11,7 @@ "meta": { "_dd.appsec.event_rules.version": "rules_good", "_dd.appsec.json": "{\"triggers\":[\n {\n \"rule\": {\n \"id\": \"blk-001-001\",\n \"name\": \"Block IP addresses\",\n \"on_match\": [\n \"block\"\n ],\n \"tags\": {\n \"category\": \"blocking\",\n \"type\": \"ip_addresses\"\n }\n },\n \"rule_matches\": [\n {\n \"operator\": \"ip_match\",\n \"operator_value\": \"\",\n \"parameters\": [\n {\n \"address\": \"http.client_ip\",\n \"highlight\": [\n \"8.8.4.4\"\n ],\n \"key_path\": [],\n \"value\": \"8.8.4.4\"\n }\n ]\n }\n ]\n }\n]}", - "_dd.appsec.waf.version": "1.18.0", + "_dd.appsec.waf.version": "1.19.0", "_dd.base_service": "", "_dd.origin": "appsec", "_dd.p.appsec": "1", diff --git a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_ipblock_match_403_json[flask_appsec_good_rules_env].json b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_ipblock_match_403_json[flask_appsec_good_rules_env].json index 27ea2ea1f38..1bae578cd04 100644 --- a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_ipblock_match_403_json[flask_appsec_good_rules_env].json +++ b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_ipblock_match_403_json[flask_appsec_good_rules_env].json @@ -11,7 +11,7 @@ "meta": { "_dd.appsec.event_rules.version": "rules_good", "_dd.appsec.json": "{\"triggers\":[\n {\n \"rule\": {\n \"id\": \"blk-001-001\",\n \"name\": \"Block IP addresses\",\n \"on_match\": [\n \"block\"\n ],\n \"tags\": {\n \"category\": \"blocking\",\n \"type\": \"ip_addresses\"\n }\n },\n \"rule_matches\": [\n {\n \"operator\": \"ip_match\",\n \"operator_value\": \"\",\n \"parameters\": [\n {\n \"address\": \"http.client_ip\",\n \"highlight\": [\n \"8.8.4.4\"\n ],\n \"key_path\": [],\n \"value\": \"8.8.4.4\"\n }\n ]\n }\n ]\n }\n]}", - "_dd.appsec.waf.version": "1.18.0", + "_dd.appsec.waf.version": "1.19.0", "_dd.base_service": "", "_dd.origin": "appsec", "_dd.p.appsec": "1", diff --git a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_ipblock_match_403_json[flask_appsec_good_rules_env]_220.json b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_ipblock_match_403_json[flask_appsec_good_rules_env]_220.json index ca16524dd91..a86954d9d8d 100644 --- a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_ipblock_match_403_json[flask_appsec_good_rules_env]_220.json +++ b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_ipblock_match_403_json[flask_appsec_good_rules_env]_220.json @@ -11,7 +11,7 @@ "meta": { "_dd.appsec.event_rules.version": "rules_good", "_dd.appsec.json": "{\"triggers\":[\n {\n \"rule\": {\n \"id\": \"blk-001-001\",\n \"name\": \"Block IP addresses\",\n \"on_match\": [\n \"block\"\n ],\n \"tags\": {\n \"category\": \"blocking\",\n \"type\": \"ip_addresses\"\n }\n },\n \"rule_matches\": [\n {\n \"operator\": \"ip_match\",\n \"operator_value\": \"\",\n \"parameters\": [\n {\n \"address\": \"http.client_ip\",\n \"highlight\": [\n \"8.8.4.4\"\n ],\n \"key_path\": [],\n \"value\": \"8.8.4.4\"\n }\n ]\n }\n ]\n }\n]}", - "_dd.appsec.waf.version": "1.18.0", + "_dd.appsec.waf.version": "1.19.0", "_dd.base_service": "", "_dd.origin": "appsec", "_dd.p.appsec": "1", diff --git a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_osspawn[flask_appsec_good_rules_env].json b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_osspawn[flask_appsec_good_rules_env].json index e470ba509a5..76091771279 100644 --- a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_osspawn[flask_appsec_good_rules_env].json +++ b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_osspawn[flask_appsec_good_rules_env].json @@ -10,7 +10,7 @@ "error": 0, "meta": { "_dd.appsec.event_rules.version": "rules_good", - "_dd.appsec.waf.version": "1.18.0", + "_dd.appsec.waf.version": "1.19.0", "_dd.base_service": "", "_dd.p.dm": "-0", "_dd.p.tid": "654a694400000000", diff --git a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_osspawn[flask_appsec_good_rules_env]_220.json b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_osspawn[flask_appsec_good_rules_env]_220.json index d27f02d94e5..60246c266f4 100644 --- a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_osspawn[flask_appsec_good_rules_env]_220.json +++ b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_osspawn[flask_appsec_good_rules_env]_220.json @@ -10,7 +10,7 @@ "error": 0, "meta": { "_dd.appsec.event_rules.version": "rules_good", - "_dd.appsec.waf.version": "1.18.0", + "_dd.appsec.waf.version": "1.19.0", "_dd.base_service": "", "_dd.p.dm": "-0", "_dd.p.tid": "654a694400000000", diff --git a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_ossystem[flask_appsec_good_rules_env].json b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_ossystem[flask_appsec_good_rules_env].json index 83566fae407..e6f675990a6 100644 --- a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_ossystem[flask_appsec_good_rules_env].json +++ b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_ossystem[flask_appsec_good_rules_env].json @@ -10,7 +10,7 @@ "error": 0, "meta": { "_dd.appsec.event_rules.version": "rules_good", - "_dd.appsec.waf.version": "1.18.0", + "_dd.appsec.waf.version": "1.19.0", "_dd.base_service": "", "_dd.p.dm": "-0", "_dd.p.tid": "654a694400000000", diff --git a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_ossystem[flask_appsec_good_rules_env]_220.json b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_ossystem[flask_appsec_good_rules_env]_220.json index d2f5264e869..d0cf04b355c 100644 --- a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_ossystem[flask_appsec_good_rules_env]_220.json +++ b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_ossystem[flask_appsec_good_rules_env]_220.json @@ -10,7 +10,7 @@ "error": 0, "meta": { "_dd.appsec.event_rules.version": "rules_good", - "_dd.appsec.waf.version": "1.18.0", + "_dd.appsec.waf.version": "1.19.0", "_dd.base_service": "", "_dd.p.dm": "-0", "_dd.p.tid": "654a694400000000", diff --git a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_subprocesscommunicatenoshell[flask_appsec_good_rules_env].json b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_subprocesscommunicatenoshell[flask_appsec_good_rules_env].json index 06c532e5af5..f8f29438de6 100644 --- a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_subprocesscommunicatenoshell[flask_appsec_good_rules_env].json +++ b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_subprocesscommunicatenoshell[flask_appsec_good_rules_env].json @@ -10,7 +10,7 @@ "error": 0, "meta": { "_dd.appsec.event_rules.version": "rules_good", - "_dd.appsec.waf.version": "1.18.0", + "_dd.appsec.waf.version": "1.19.0", "_dd.base_service": "", "_dd.p.dm": "-0", "_dd.p.tid": "654a694400000000", diff --git a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_subprocesscommunicatenoshell[flask_appsec_good_rules_env]_220.json b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_subprocesscommunicatenoshell[flask_appsec_good_rules_env]_220.json index 827c5946399..27b97da6b56 100644 --- a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_subprocesscommunicatenoshell[flask_appsec_good_rules_env]_220.json +++ b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_subprocesscommunicatenoshell[flask_appsec_good_rules_env]_220.json @@ -10,7 +10,7 @@ "error": 0, "meta": { "_dd.appsec.event_rules.version": "rules_good", - "_dd.appsec.waf.version": "1.18.0", + "_dd.appsec.waf.version": "1.19.0", "_dd.base_service": "", "_dd.p.dm": "-0", "_dd.p.tid": "654a694400000000", diff --git a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_subprocesscommunicateshell[flask_appsec_good_rules_env].json b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_subprocesscommunicateshell[flask_appsec_good_rules_env].json index 9746bfdde50..199c5e1c451 100644 --- a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_subprocesscommunicateshell[flask_appsec_good_rules_env].json +++ b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_subprocesscommunicateshell[flask_appsec_good_rules_env].json @@ -10,7 +10,7 @@ "error": 0, "meta": { "_dd.appsec.event_rules.version": "rules_good", - "_dd.appsec.waf.version": "1.18.0", + "_dd.appsec.waf.version": "1.19.0", "_dd.base_service": "", "_dd.p.dm": "-0", "_dd.p.tid": "654a694400000000", diff --git a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_subprocesscommunicateshell[flask_appsec_good_rules_env]_220.json b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_subprocesscommunicateshell[flask_appsec_good_rules_env]_220.json index a9c5594a43c..47779f920c0 100644 --- a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_subprocesscommunicateshell[flask_appsec_good_rules_env]_220.json +++ b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_processexec_subprocesscommunicateshell[flask_appsec_good_rules_env]_220.json @@ -10,7 +10,7 @@ "error": 0, "meta": { "_dd.appsec.event_rules.version": "rules_good", - "_dd.appsec.waf.version": "1.18.0", + "_dd.appsec.waf.version": "1.19.0", "_dd.base_service": "", "_dd.p.dm": "-0", "_dd.p.tid": "654a694400000000", diff --git a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_userblock_match_200_json[flask_appsec_good_rules_env].json b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_userblock_match_200_json[flask_appsec_good_rules_env].json index 29a0c9dae32..111387da41c 100644 --- a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_userblock_match_200_json[flask_appsec_good_rules_env].json +++ b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_userblock_match_200_json[flask_appsec_good_rules_env].json @@ -10,7 +10,7 @@ "error": 0, "meta": { "_dd.appsec.event_rules.version": "rules_good", - "_dd.appsec.waf.version": "1.18.0", + "_dd.appsec.waf.version": "1.19.0", "_dd.base_service": "", "_dd.p.dm": "-0", "_dd.p.tid": "654a694400000000", diff --git a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_userblock_match_200_json[flask_appsec_good_rules_env]_220.json b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_userblock_match_200_json[flask_appsec_good_rules_env]_220.json index 506121e72ef..cab2b4c9d06 100644 --- a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_userblock_match_200_json[flask_appsec_good_rules_env]_220.json +++ b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_userblock_match_200_json[flask_appsec_good_rules_env]_220.json @@ -10,7 +10,7 @@ "error": 0, "meta": { "_dd.appsec.event_rules.version": "rules_good", - "_dd.appsec.waf.version": "1.18.0", + "_dd.appsec.waf.version": "1.19.0", "_dd.base_service": "", "_dd.p.dm": "-0", "_dd.p.tid": "654a694400000000", diff --git a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_userblock_match_403_json[flask_appsec_good_rules_env].json b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_userblock_match_403_json[flask_appsec_good_rules_env].json index c355503b7f5..d8185a5ce1d 100644 --- a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_userblock_match_403_json[flask_appsec_good_rules_env].json +++ b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_userblock_match_403_json[flask_appsec_good_rules_env].json @@ -11,7 +11,7 @@ "meta": { "_dd.appsec.event_rules.version": "rules_good", "_dd.appsec.json": "{\"triggers\":[\n {\n \"rule\": {\n \"id\": \"blk-001-002\",\n \"name\": \"Block User Addresses\",\n \"on_match\": [\n \"block\"\n ],\n \"tags\": {\n \"category\": \"security_response\",\n \"type\": \"block_user\"\n }\n },\n \"rule_matches\": [\n {\n \"operator\": \"exact_match\",\n \"operator_value\": \"\",\n \"parameters\": [\n {\n \"address\": \"usr.id\",\n \"highlight\": [\n \"123456\"\n ],\n \"key_path\": [],\n \"value\": \"123456\"\n }\n ]\n }\n ]\n }\n]}", - "_dd.appsec.waf.version": "1.18.0", + "_dd.appsec.waf.version": "1.19.0", "_dd.base_service": "", "_dd.origin": "appsec", "_dd.p.appsec": "1", diff --git a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_userblock_match_403_json[flask_appsec_good_rules_env]_220.json b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_userblock_match_403_json[flask_appsec_good_rules_env]_220.json index 97962d54032..55ecc81f364 100644 --- a/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_userblock_match_403_json[flask_appsec_good_rules_env]_220.json +++ b/tests/snapshots/tests.contrib.flask.test_appsec_flask_snapshot.test_flask_userblock_match_403_json[flask_appsec_good_rules_env]_220.json @@ -11,7 +11,7 @@ "meta": { "_dd.appsec.event_rules.version": "rules_good", "_dd.appsec.json": "{\"triggers\":[\n {\n \"rule\": {\n \"id\": \"blk-001-002\",\n \"name\": \"Block User Addresses\",\n \"on_match\": [\n \"block\"\n ],\n \"tags\": {\n \"category\": \"security_response\",\n \"type\": \"block_user\"\n }\n },\n \"rule_matches\": [\n {\n \"operator\": \"exact_match\",\n \"operator_value\": \"\",\n \"parameters\": [\n {\n \"address\": \"usr.id\",\n \"highlight\": [\n \"123456\"\n ],\n \"key_path\": [],\n \"value\": \"123456\"\n }\n ]\n }\n ]\n }\n]}", - "_dd.appsec.waf.version": "1.18.0", + "_dd.appsec.waf.version": "1.19.0", "_dd.base_service": "", "_dd.origin": "appsec", "_dd.p.appsec": "1", diff --git a/tests/snapshots/tests.contrib.langchain.test_langchain_community.test_lcel_chain_non_dict_input.json b/tests/snapshots/tests.contrib.langchain.test_langchain_community.test_lcel_chain_non_dict_input.json new file mode 100644 index 00000000000..8e3c081fcf1 --- /dev/null +++ b/tests/snapshots/tests.contrib.langchain.test_langchain_community.test_lcel_chain_non_dict_input.json @@ -0,0 +1,29 @@ +[[ + { + "name": "langchain.request", + "service": "", + "resource": "langchain_core.runnables.base.RunnableSequence", + "trace_id": 0, + "span_id": 1, + "parent_id": 0, + "type": "", + "error": 0, + "meta": { + "_dd.p.dm": "-0", + "_dd.p.tid": "669ee23700000000", + "langchain.request.inputs.0": "1", + "langchain.request.type": "chain", + "langchain.response.outputs.0": "4", + "language": "python", + "runtime-id": "919cb1528b424d42988633fa49608826" + }, + "metrics": { + "_dd.measured": 1, + "_dd.top_level": 1, + "_dd.tracer_kr": 1.0, + "_sampling_priority_v1": 1, + "process_id": 43636 + }, + "duration": 2821000, + "start": 1721688631858351000 + }]] diff --git a/tests/telemetry/test_telemetry.py b/tests/telemetry/test_telemetry.py index cc69904c264..beca2e7befb 100644 --- a/tests/telemetry/test_telemetry.py +++ b/tests/telemetry/test_telemetry.py @@ -221,8 +221,7 @@ def process_trace(self, trace): ]["message"] -@pytest.mark.skip(reason="We don't have a way to capture unhandled errors in bootstrap before telemetry is loaded") -def test_app_started_error_unhandled_exception(test_agent_session, run_python_code_in_subprocess): +def test_app_started_error_unhandled_tracer_exception(test_agent_session, run_python_code_in_subprocess): env = os.environ.copy() env["DD_SPAN_SAMPLING_RULES"] = "invalid_rules" @@ -243,19 +242,37 @@ def test_app_started_error_unhandled_exception(test_agent_session, run_python_co assert "Unable to parse DD_SPAN_SAMPLING_RULES='invalid_rules'" in app_starteds[0]["payload"]["error"]["message"] -def test_telemetry_with_raised_exception(test_agent_session, run_python_code_in_subprocess): - _, stderr, status, _ = run_python_code_in_subprocess( - "import ddtrace; ddtrace.tracer.trace('moon').finish(); raise Exception('bad_code')" +def test_register_telemetry_excepthook_after_another_hook(test_agent_session, run_python_code_in_subprocess): + out, stderr, status, _ = run_python_code_in_subprocess( + """ +import sys + +old_exc_hook = sys.excepthook +def pre_ddtrace_exc_hook(exctype, value, traceback): + print("pre_ddtrace_exc_hook called") + return old_exc_hook(exctype, value, traceback) + +sys.excepthook = pre_ddtrace_exc_hook + +import ddtrace +raise Exception('bad_code') +""" ) + assert b"pre_ddtrace_exc_hook called" in out assert status == 1, stderr assert b"bad_code" in stderr # Regression test for python3.12 support assert b"RuntimeError: can't create new thread at interpreter shutdown" not in stderr + # Regression test for invalid number of arguments in wrapped exception hook + assert b"3 positional arguments but 4 were given" not in stderr app_starteds = test_agent_session.get_events("app-started") assert len(app_starteds) == 1 - # app-started does not capture exceptions raised in application code - assert app_starteds[0]["payload"]["error"]["code"] == 0 + # app-started captures unhandled exceptions raised in application code + assert app_starteds[0]["payload"]["error"]["code"] == 1 + assert re.search(r"test\.py:\d+:\sbad_code$", app_starteds[0]["payload"]["error"]["message"]), app_starteds[0][ + "payload" + ]["error"]["message"] def test_handled_integration_error(test_agent_session, run_python_code_in_subprocess): @@ -305,8 +322,6 @@ def test_handled_integration_error(test_agent_session, run_python_code_in_subpro def test_unhandled_integration_error(test_agent_session, ddtrace_run_python_code_in_subprocess): - env = os.environ.copy() - env["DD_PATCH_MODULES"] = "jinja2:False,subprocess:False" code = """ import logging logging.basicConfig() @@ -318,7 +333,7 @@ def test_unhandled_integration_error(test_agent_session, ddtrace_run_python_code f.wsgi_app() """ - _, stderr, status, _ = ddtrace_run_python_code_in_subprocess(code, env=env) + _, stderr, status, _ = ddtrace_run_python_code_in_subprocess(code) assert status == 1, stderr @@ -339,11 +354,13 @@ def test_unhandled_integration_error(test_agent_session, ddtrace_run_python_code integration_events = [event for event in events if event["request_type"] == "app-integrations-change"] integrations = integration_events[0]["payload"]["integrations"] - assert len(integrations) == 1 - assert integrations[0]["enabled"] is True - assert integrations[0]["compatible"] is False - assert "ddtrace/contrib/flask/patch.py:" in integrations[0]["error"] - assert "not enough values to unpack (expected 2, got 0)" in integrations[0]["error"] + + (flask_integration,) = [integration for integration in integrations if integration["name"] == "flask"] + + assert flask_integration["enabled"] is True + assert flask_integration["compatible"] is False + assert "ddtrace/contrib/flask/patch.py:" in flask_integration["error"] + assert "not enough values to unpack (expected 2, got 0)" in flask_integration["error"] metric_events = [event for event in events if event["request_type"] == "generate-metrics"] diff --git a/tests/telemetry/test_telemetry_metrics.py b/tests/telemetry/test_telemetry_metrics.py index a9f46257abe..a3ea6051b8b 100644 --- a/tests/telemetry/test_telemetry_metrics.py +++ b/tests/telemetry/test_telemetry_metrics.py @@ -2,6 +2,7 @@ from mock.mock import ANY +from ddtrace.internal.telemetry.constants import TELEMETRY_LOG_LEVEL from ddtrace.internal.telemetry.constants import TELEMETRY_NAMESPACE_TAG_APPSEC from ddtrace.internal.telemetry.constants import TELEMETRY_NAMESPACE_TAG_TRACER from ddtrace.internal.telemetry.constants import TELEMETRY_TYPE_DISTRIBUTION @@ -335,10 +336,10 @@ def test_send_metric_flush_and_distributions_series_is_restarted(telemetry_write def test_send_log_metric_simple(telemetry_writer, test_agent_session, mock_time): """Check the queue of metrics is empty after run periodic method of PeriodicService""" with override_global_config(dict(_telemetry_dependency_collection=False)): - telemetry_writer.add_log("WARNING", "test error 1") + telemetry_writer.add_log(TELEMETRY_LOG_LEVEL.WARNING, "test error 1") expected_payload = [ { - "level": "WARNING", + "level": "WARN", "message": "test error 1", "tracer_time": 1642544540, }, @@ -350,10 +351,10 @@ def test_send_log_metric_simple(telemetry_writer, test_agent_session, mock_time) def test_send_log_metric_simple_tags(telemetry_writer, test_agent_session, mock_time): """Check the queue of metrics is empty after run periodic method of PeriodicService""" with override_global_config(dict(_telemetry_dependency_collection=False)): - telemetry_writer.add_log("WARNING", "test error 1", tags={"a": "b", "c": "d"}) + telemetry_writer.add_log(TELEMETRY_LOG_LEVEL.WARNING, "test error 1", tags={"a": "b", "c": "d"}) expected_payload = [ { - "level": "WARNING", + "level": "WARN", "message": "test error 1", "tracer_time": 1642544540, "tags": "a:b,c:d", @@ -366,10 +367,10 @@ def test_send_log_metric_simple_tags(telemetry_writer, test_agent_session, mock_ def test_send_multiple_log_metric(telemetry_writer, test_agent_session, mock_time): """Check the queue of metrics is empty after run periodic method of PeriodicService""" with override_global_config(dict(_telemetry_dependency_collection=False)): - telemetry_writer.add_log("WARNING", "test error 1", "Traceback:\nValueError", {"a": "b"}) + telemetry_writer.add_log(TELEMETRY_LOG_LEVEL.WARNING, "test error 1", "Traceback:\nValueError", {"a": "b"}) expected_payload = [ { - "level": "WARNING", + "level": "WARN", "message": "test error 1", "stack_trace": "Traceback:\nValueError", "tracer_time": 1642544540, @@ -379,7 +380,7 @@ def test_send_multiple_log_metric(telemetry_writer, test_agent_session, mock_tim _assert_logs(test_agent_session, expected_payload) - telemetry_writer.add_log("WARNING", "test error 1", "Traceback:\nValueError", {"a": "b"}) + telemetry_writer.add_log(TELEMETRY_LOG_LEVEL.WARNING, "test error 1", "Traceback:\nValueError", {"a": "b"}) _assert_logs(test_agent_session, expected_payload) @@ -387,11 +388,11 @@ def test_send_multiple_log_metric(telemetry_writer, test_agent_session, mock_tim def test_send_multiple_log_metric_no_duplicates(telemetry_writer, test_agent_session, mock_time): with override_global_config(dict(_telemetry_dependency_collection=False)): for _ in range(10): - telemetry_writer.add_log("WARNING", "test error 1", "Traceback:\nValueError", {"a": "b"}) + telemetry_writer.add_log(TELEMETRY_LOG_LEVEL.WARNING, "test error 1", "Traceback:\nValueError", {"a": "b"}) expected_payload = [ { - "level": "WARNING", + "level": "WARN", "message": "test error 1", "stack_trace": "Traceback:\nValueError", "tracer_time": 1642544540, @@ -405,11 +406,11 @@ def test_send_multiple_log_metric_no_duplicates(telemetry_writer, test_agent_ses def test_send_multiple_log_metric_no_duplicates_for_each_interval(telemetry_writer, test_agent_session, mock_time): with override_global_config(dict(_telemetry_dependency_collection=False)): for _ in range(10): - telemetry_writer.add_log("WARNING", "test error 1") + telemetry_writer.add_log(TELEMETRY_LOG_LEVEL.WARNING, "test error 1") expected_payload = [ { - "level": "WARNING", + "level": "WARN", "message": "test error 1", "tracer_time": 1642544540, }, @@ -418,7 +419,7 @@ def test_send_multiple_log_metric_no_duplicates_for_each_interval(telemetry_writ _assert_logs(test_agent_session, expected_payload) for _ in range(10): - telemetry_writer.add_log("WARNING", "test error 1") + telemetry_writer.add_log(TELEMETRY_LOG_LEVEL.WARNING, "test error 1") _assert_logs(test_agent_session, expected_payload) @@ -427,11 +428,11 @@ def test_send_multiple_log_metric_no_duplicates_for_each_interval_check_time(tel with override_global_config(dict(_telemetry_dependency_collection=False)): for _ in range(3): sleep(0.1) - telemetry_writer.add_log("WARNING", "test error 1") + telemetry_writer.add_log(TELEMETRY_LOG_LEVEL.WARNING, "test error 1") expected_payload = [ { - "level": "WARNING", + "level": "WARN", "message": "test error 1", "tracer_time": ANY, }, @@ -441,6 +442,6 @@ def test_send_multiple_log_metric_no_duplicates_for_each_interval_check_time(tel for _ in range(3): sleep(0.1) - telemetry_writer.add_log("WARNING", "test error 1") + telemetry_writer.add_log(TELEMETRY_LOG_LEVEL.WARNING, "test error 1") _assert_logs(test_agent_session, expected_payload) diff --git a/tests/telemetry/test_writer.py b/tests/telemetry/test_writer.py index b4ff3b2f8f2..a914782d959 100644 --- a/tests/telemetry/test_writer.py +++ b/tests/telemetry/test_writer.py @@ -1,4 +1,5 @@ import os +import sys import sysconfig import time from typing import Any # noqa:F401 @@ -72,7 +73,7 @@ def test_app_started_event(telemetry_writer, test_agent_session, mock_time): {"name": "DD_DOGSTATSD_PORT", "origin": "unknown", "value": None}, {"name": "DD_DOGSTATSD_URL", "origin": "unknown", "value": None}, {"name": "DD_DYNAMIC_INSTRUMENTATION_ENABLED", "origin": "unknown", "value": False}, - {"name": "DD_EXCEPTION_DEBUGGING_ENABLED", "origin": "unknown", "value": False}, + {"name": "DD_EXCEPTION_REPLAY_ENABLED", "origin": "unknown", "value": False}, {"name": "DD_INSTRUMENTATION_TELEMETRY_ENABLED", "origin": "unknown", "value": True}, {"name": "DD_PRIORITY_SAMPLING", "origin": "unknown", "value": True}, {"name": "DD_PROFILING_STACK_ENABLED", "origin": "unknown", "value": True}, @@ -128,6 +129,14 @@ def test_app_started_event(telemetry_writer, test_agent_session, mock_time): {"name": "profiling_enabled", "origin": "default", "value": "false"}, {"name": "data_streams_enabled", "origin": "default", "value": "false"}, {"name": "appsec_enabled", "origin": "default", "value": "false"}, + {"name": "crashtracking_alt_stack", "origin": "unknown", "value": False}, + {"name": "crashtracking_available", "origin": "unknown", "value": sys.platform == "linux"}, + {"name": "crashtracking_debug_url", "origin": "unknown", "value": "None"}, + {"name": "crashtracking_enabled", "origin": "unknown", "value": sys.platform == "linux"}, + {"name": "crashtracking_stacktrace_resolver", "origin": "unknown", "value": "full"}, + {"name": "crashtracking_started", "origin": "unknown", "value": False}, + {"name": "crashtracking_stderr_filename", "origin": "unknown", "value": "None"}, + {"name": "crashtracking_stdout_filename", "origin": "unknown", "value": "None"}, { "name": "python_build_gnu_type", "origin": "unknown", @@ -189,7 +198,7 @@ def test_app_started_event_configuration_override( env = os.environ.copy() # Change configuration default values - env["DD_EXCEPTION_DEBUGGING_ENABLED"] = "True" + env["DD_EXCEPTION_REPLAY_ENABLED"] = "True" env["DD_INSTRUMENTATION_TELEMETRY_ENABLED"] = "True" env["DD_TRACE_STARTUP_LOGS"] = "True" env["DD_LOGS_INJECTION"] = "True" @@ -261,7 +270,7 @@ def test_app_started_event_configuration_override( {"name": "DD_DOGSTATSD_PORT", "origin": "unknown", "value": None}, {"name": "DD_DOGSTATSD_URL", "origin": "unknown", "value": None}, {"name": "DD_DYNAMIC_INSTRUMENTATION_ENABLED", "origin": "unknown", "value": False}, - {"name": "DD_EXCEPTION_DEBUGGING_ENABLED", "origin": "unknown", "value": True}, + {"name": "DD_EXCEPTION_REPLAY_ENABLED", "origin": "unknown", "value": True}, {"name": "DD_INSTRUMENTATION_TELEMETRY_ENABLED", "origin": "unknown", "value": True}, {"name": "DD_PRIORITY_SAMPLING", "origin": "unknown", "value": False}, {"name": "DD_PROFILING_STACK_ENABLED", "origin": "unknown", "value": False}, @@ -310,6 +319,14 @@ def test_app_started_event_configuration_override( {"name": "profiling_enabled", "origin": "env_var", "value": "true"}, {"name": "data_streams_enabled", "origin": "env_var", "value": "true"}, {"name": "appsec_enabled", "origin": "env_var", "value": "true"}, + {"name": "crashtracking_alt_stack", "origin": "unknown", "value": False}, + {"name": "crashtracking_available", "origin": "unknown", "value": sys.platform == "linux"}, + {"name": "crashtracking_debug_url", "origin": "unknown", "value": "None"}, + {"name": "crashtracking_enabled", "origin": "unknown", "value": sys.platform == "linux"}, + {"name": "crashtracking_stacktrace_resolver", "origin": "unknown", "value": "full"}, + {"name": "crashtracking_started", "origin": "unknown", "value": sys.platform == "linux"}, + {"name": "crashtracking_stderr_filename", "origin": "unknown", "value": "None"}, + {"name": "crashtracking_stdout_filename", "origin": "unknown", "value": "None"}, {"name": "python_build_gnu_type", "origin": "unknown", "value": sysconfig.get_config_var("BUILD_GNU_TYPE")}, {"name": "python_host_gnu_type", "origin": "unknown", "value": sysconfig.get_config_var("HOST_GNU_TYPE")}, {"name": "python_soabi", "origin": "unknown", "value": sysconfig.get_config_var("SOABI")}, diff --git a/tests/tracer/test_span.py b/tests/tracer/test_span.py index fb0392ba275..58e7a96e6ec 100644 --- a/tests/tracer/test_span.py +++ b/tests/tracer/test_span.py @@ -695,6 +695,9 @@ def test_span_pprint(): root = Span("test.span", service="s", resource="r", span_type=SpanTypes.WEB) root.set_tag("t", "v") root.set_metric("m", 1.0) + root._add_event("message", {"importance": 10}, 16789898242) + root.set_link(trace_id=99, span_id=10, attributes={"link.name": "s1_to_s2", "link.kind": "scheduled_by"}) + root.finish() actual = root._pprint() assert "name='test.span'" in actual @@ -704,6 +707,11 @@ def test_span_pprint(): assert "error=0" in actual assert "tags={'t': 'v'}" in actual assert "metrics={'m': 1.0}" in actual + assert "events='name=message time=16789898242 attributes=importance:10'" in actual + assert ( + "links='trace_id=99 span_id=10 attributes=link.name:s1_to_s2,link.kind:scheduled_by " + "tracestate=None flags=None dropped_attributes=0'" in actual + ) assert re.search("id=[0-9]+", actual) is not None assert re.search("trace_id=[0-9]+", actual) is not None assert "parent_id=None" in actual diff --git a/tests/tracer/test_trace_utils.py b/tests/tracer/test_trace_utils.py index 380198c2688..fae2256f427 100644 --- a/tests/tracer/test_trace_utils.py +++ b/tests/tracer/test_trace_utils.py @@ -306,6 +306,47 @@ def test_ext_service(int_config, pin, config_val, default, expected): assert trace_utils.ext_service(pin, int_config.myint, default) == expected +@pytest.mark.subprocess( + parametrize={ + "DD_TRACE_HEADER_TAGS": ["header1 header2 header3:third-header", "header1,header2,header3:third-header"] + } +) +def test_set_http_meta_with_http_header_tags_config(): + from ddtrace import config + from ddtrace._trace.span import Span + from ddtrace.contrib.trace_utils import set_http_meta + + assert config.trace_http_header_tags == { + "header1": "", + "header2": "", + "header3": "third-header", + }, config.trace_http_header_tags + integration_config = config.new_integration + assert integration_config.is_header_tracing_configured + + # test request headers + request_span = Span(name="new_integration.request") + set_http_meta( + request_span, + integration_config, + request_headers={"header1": "value1", "header2": "value2", "header3": "value3"}, + ) + assert request_span.get_tag("http.request.headers.header1") == "value1" + assert request_span.get_tag("http.request.headers.header2") == "value2" + assert request_span.get_tag("third-header") == "value3" + + # test response headers + response_span = Span(name="new_integration.response") + set_http_meta( + response_span, + integration_config, + response_headers={"header1": "value1", "header2": "value2", "header3": "value3"}, + ) + assert response_span.get_tag("http.response.headers.header1") == "value1" + assert response_span.get_tag("http.response.headers.header2") == "value2" + assert response_span.get_tag("third-header") == "value3" + + @pytest.mark.parametrize("appsec_enabled", [False, True]) @pytest.mark.parametrize("span_type", [SpanTypes.WEB, SpanTypes.HTTP, None]) @pytest.mark.parametrize( diff --git a/tests/tracer/test_tracer.py b/tests/tracer/test_tracer.py index 61f526c7fa4..4771258e398 100644 --- a/tests/tracer/test_tracer.py +++ b/tests/tracer/test_tracer.py @@ -979,11 +979,11 @@ def test_dd_tags(self): assert self.tracer._tags.get("key1") == "value1" assert self.tracer._tags.get("key2") == "value2" - @run_in_subprocess(env_overrides=dict(DD_TAGS="key1:value1,key2:value2,key3")) + @run_in_subprocess(env_overrides=dict(DD_TAGS="key1:value1,key2:value2, key3")) def test_dd_tags_invalid(self): assert self.tracer._tags.get("key1") assert self.tracer._tags.get("key2") - assert self.tracer._tags.get("key3") is None + assert not self.tracer._tags.get("key3") @run_in_subprocess(env_overrides=dict(DD_TAGS="service:mysvc,env:myenv,version:myvers")) def test_tags_from_DD_TAGS(self): diff --git a/tests/tracer/test_utils.py b/tests/tracer/test_utils.py index a5cee9f284e..d1c2533fcc7 100644 --- a/tests/tracer/test_utils.py +++ b/tests/tracer/test_utils.py @@ -56,33 +56,46 @@ def test_asbool(self): ("key:val,key2:val2,key3:1234.23", dict(key="val", key2="val2", key3="1234.23"), None), ("key:val key2:val2 key3:1234.23", dict(key="val", key2="val2", key3="1234.23"), None), ("key: val", dict(key=" val"), None), - ("key key: val", {"key key": " val"}, None), + ( + "key key: val", + {"key": "", "val": ""}, + [mock.call(_LOG_ERROR_MALFORMED_TAG, "key:", "key key: val")], + ), ("key: val,key2:val2", dict(key=" val", key2="val2"), None), (" key: val,key2:val2", {"key": " val", "key2": "val2"}, None), - ("key key2:val1", {"key key2": "val1"}, None), + ("key key2:val1", {"key": "", "key2": "val1"}, None), ("key:val key2:val:2", {"key": "val", "key2": "val:2"}, None), ( "key:val,key2:val2 key3:1234.23", dict(), [mock.call(_LOG_ERROR_FAIL_SEPARATOR, "key:val,key2:val2 key3:1234.23")], ), - ("key:val key2:val2 key3: ", dict(key="val", key2="val2", key3=""), None), + ( + "key:val key2:val2 key3: ", + {"key": "val", "key2": "val2"}, + [mock.call(_LOG_ERROR_MALFORMED_TAG, "key3:", "key:val key2:val2 key3:")], + ), ( "key:val key2:val 2", - dict(key="val", key2="val"), - [mock.call(_LOG_ERROR_MALFORMED_TAG, "2", "key:val key2:val 2")], + {"2": "", "key": "val", "key2": "val"}, + None, ), ( "key: val key2:val2 key3:val3", - {"key": "", "key2": "val2", "key3": "val3"}, - [mock.call(_LOG_ERROR_MALFORMED_TAG, "val", "key: val key2:val2 key3:val3")], + {"key2": "val2", "key3": "val3", "val": ""}, + [mock.call(_LOG_ERROR_MALFORMED_TAG, "key:", "key: val key2:val2 key3:val3")], + ), + ( + "key:,key3:val1,", + {"key3": "val1"}, + [mock.call(_LOG_ERROR_MALFORMED_TAG, "key:", "key:,key3:val1")], ), - ("key:,key3:val1,", dict(key3="val1", key=""), None), (",", dict(), [mock.call(_LOG_ERROR_FAIL_SEPARATOR, "")]), (":,:", dict(), [mock.call(_LOG_ERROR_FAIL_SEPARATOR, ":,:")]), - ("key,key2:val1", {"key2": "val1"}, [mock.call(_LOG_ERROR_MALFORMED_TAG, "key", "key,key2:val1")]), + ("key,key2:val1", {"key": "", "key2": "val1"}, None), ("key2:val1:", {"key2": "val1:"}, None), - ("key,key2,key3", dict(), [mock.call(_LOG_ERROR_FAIL_SEPARATOR, "key,key2,key3")]), + ("key,key2,key3", {"key": "", "key2": "", "key3": ""}, None), + ("key key2 key3", {"key": "", "key2": "", "key3": ""}, None), ("foo:bar,foo:baz", dict(foo="baz"), None), ("hash:asd url:https://github.com/foo/bar", dict(hash="asd", url="https://github.com/foo/bar"), None), ], diff --git a/tests/utils.py b/tests/utils.py index 50a716e93d3..6e12ea0f9e0 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -1,5 +1,6 @@ import contextlib from contextlib import contextmanager +import dataclasses import datetime as dt from http.client import RemoteDisconnected import inspect @@ -11,7 +12,6 @@ from typing import List # noqa:F401 import urllib.parse -import attr import pkg_resources import pytest @@ -977,10 +977,10 @@ class SnapshotFailed(Exception): pass -@attr.s -class SnapshotTest(object): - token = attr.ib(type=str) - tracer = attr.ib(type=ddtrace.Tracer, default=ddtrace.tracer) +@dataclasses.dataclass +class SnapshotTest: + token: str + tracer: ddtrace.Tracer = ddtrace.tracer def clear(self): """Clear any traces sent that were sent for this snapshot."""