Skip to content

Commit

Permalink
tests: Generate Flags tox entries with toxgen script (#3974)
Browse files Browse the repository at this point in the history
- remove hardcoded entries for `openfeature`, `launchdarkly`, `statsig`,
and `unleash` from the tox template
- remove them from the ignore list in `populate_tox.py`
- run `populate_tox.py` to fill in entries for them
- run `split_gh_tox_actions.py` to generate the CI yaml files so that
they correspond to the new `tox.ini`

Note that this effectively eliminates the `-latest` tests for the Flags
group. The script doesn't generate any `-latest` tests since it always
makes sure to add a pinned entry for the latest version. So in case all
of the integrations in a single group are using the script, the whole
`-latest` test category is removed.
  • Loading branch information
sentrivana authored Feb 13, 2025
1 parent 5a66a04 commit 5a5a1cf
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 141 deletions.
70 changes: 1 addition & 69 deletions .github/workflows/test-integrations-flags.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,82 +22,14 @@ env:
CACHED_BUILD_PATHS: |
${{ github.workspace }}/dist-serverless
jobs:
test-flags-latest:
name: Flags (latest)
timeout-minutes: 30
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
python-version: ["3.8","3.12","3.13"]
# python3.6 reached EOL and is no longer being supported on
# new versions of hosted runners on Github Actions
# ubuntu-20.04 is the last version that supported python3.6
# see https://github.com/actions/setup-python/issues/544#issuecomment-1332535877
os: [ubuntu-20.04]
steps:
- uses: actions/[email protected]
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- name: Setup Test Env
run: |
pip install "coverage[toml]" tox
- name: Erase coverage
run: |
coverage erase
- name: Test launchdarkly latest
run: |
set -x # print commands that are executed
./scripts/runtox.sh "py${{ matrix.python-version }}-launchdarkly-latest"
- name: Test openfeature latest
run: |
set -x # print commands that are executed
./scripts/runtox.sh "py${{ matrix.python-version }}-openfeature-latest"
- name: Test statsig latest
run: |
set -x # print commands that are executed
./scripts/runtox.sh "py${{ matrix.python-version }}-statsig-latest"
- name: Test unleash latest
run: |
set -x # print commands that are executed
./scripts/runtox.sh "py${{ matrix.python-version }}-unleash-latest"
- name: Generate coverage XML (Python 3.6)
if: ${{ !cancelled() && matrix.python-version == '3.6' }}
run: |
export COVERAGE_RCFILE=.coveragerc36
coverage combine .coverage-sentry-*
coverage xml --ignore-errors
- name: Generate coverage XML
if: ${{ !cancelled() && matrix.python-version != '3.6' }}
run: |
coverage combine .coverage-sentry-*
coverage xml
- name: Upload coverage to Codecov
if: ${{ !cancelled() }}
uses: codecov/[email protected]
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: coverage.xml
# make sure no plugins alter our coverage reports
plugin: noop
verbose: true
- name: Upload test results to Codecov
if: ${{ !cancelled() }}
uses: codecov/test-results-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: .junitxml
verbose: true
test-flags-pinned:
name: Flags (pinned)
timeout-minutes: 30
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
python-version: ["3.8","3.12","3.13"]
python-version: ["3.7","3.8","3.9","3.12","3.13"]
# python3.6 reached EOL and is no longer being supported on
# new versions of hosted runners on Github Actions
# ubuntu-20.04 is the last version that supported python3.6
Expand Down
15 changes: 15 additions & 0 deletions scripts/populate_tox/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,25 @@
"py3.6": ["aiocontextvars"],
},
},
"launchdarkly": {
"package": "launchdarkly-server-sdk",
},
"openfeature": {
"package": "openfeature-sdk",
},
"statsig": {
"package": "statsig",
"deps": {
"*": ["typing_extensions"],
},
},
"strawberry": {
"package": "strawberry-graphql[fastapi,flask]",
"deps": {
"*": ["httpx"],
},
},
"unleash": {
"package": "UnleashClient",
},
}
4 changes: 0 additions & 4 deletions scripts/populate_tox/populate_tox.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,12 +77,10 @@
"huggingface_hub",
"langchain",
"langchain_notiktoken",
"launchdarkly",
"litestar",
"loguru",
"openai",
"openai_notiktoken",
"openfeature",
"pure_eval",
"pymongo",
"pyramid",
Expand All @@ -96,12 +94,10 @@
"spark",
"starlette",
"starlite",
"statsig",
"sqlalchemy",
"tornado",
"trytond",
"typer",
"unleash",
}


Expand Down
33 changes: 0 additions & 33 deletions scripts/populate_tox/tox.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -163,10 +163,6 @@ envlist =
{py3.9,py3.11,py3.12}-langchain-latest
{py3.9,py3.11,py3.12}-langchain-notiktoken

# LaunchDarkly
{py3.8,py3.12,py3.13}-launchdarkly-v9.8.0
{py3.8,py3.12,py3.13}-launchdarkly-latest

# Litestar
{py3.8,py3.11}-litestar-v{2.0}
{py3.8,py3.11,py3.12}-litestar-v{2.6}
Expand All @@ -184,10 +180,6 @@ envlist =
{py3.9,py3.11,py3.12}-openai-latest
{py3.9,py3.11,py3.12}-openai-notiktoken

# OpenFeature
{py3.8,py3.12,py3.13}-openfeature-v0.7
{py3.8,py3.12,py3.13}-openfeature-latest

# OpenTelemetry (OTel)
{py3.7,py3.9,py3.12,py3.13}-opentelemetry

Expand Down Expand Up @@ -259,10 +251,6 @@ envlist =
{py3.8,py3.11}-starlite-v{1.48,1.51}
# 1.51.14 is the last starlite version; the project continues as litestar

# Statsig
{py3.8,py3.12,py3.13}-statsig-v0.55.3
{py3.8,py3.12,py3.13}-statsig-latest

# SQL Alchemy
{py3.6,py3.9}-sqlalchemy-v{1.2,1.4}
{py3.7,py3.11}-sqlalchemy-v{2.0}
Expand All @@ -284,10 +272,6 @@ envlist =
{py3.7,py3.12,py3.13}-typer-v{0.15}
{py3.7,py3.12,py3.13}-typer-latest

# Unleash
{py3.8,py3.12,py3.13}-unleash-v6.0.1
{py3.8,py3.12,py3.13}-unleash-latest

# === Integrations - Auto-generated ===
# These come from the populate_tox.py script. Eventually we should move all
# integration tests there.
Expand Down Expand Up @@ -557,18 +541,6 @@ deps =
openai-latest: tiktoken~=0.6.0
openai-notiktoken: openai
# OpenFeature
openfeature-v0.7: openfeature-sdk~=0.7.1
openfeature-latest: openfeature-sdk
# LaunchDarkly
launchdarkly-v9.8.0: launchdarkly-server-sdk~=9.8.0
launchdarkly-latest: launchdarkly-server-sdk
# Unleash
unleash-v6.0.1: UnleashClient~=6.0.1
unleash-latest: UnleashClient
# OpenTelemetry (OTel)
opentelemetry: opentelemetry-distro
Expand Down Expand Up @@ -693,11 +665,6 @@ deps =
starlite-v{1.48}: starlite~=1.48.0
starlite-v{1.51}: starlite~=1.51.0
# Statsig
statsig: typing_extensions
statsig-v0.55.3: statsig~=0.55.3
statsig-latest: statsig
# SQLAlchemy
sqlalchemy-v1.2: sqlalchemy~=1.2.0
sqlalchemy-v1.4: sqlalchemy~=1.4.0
Expand Down
66 changes: 31 additions & 35 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -163,10 +163,6 @@ envlist =
{py3.9,py3.11,py3.12}-langchain-latest
{py3.9,py3.11,py3.12}-langchain-notiktoken

# LaunchDarkly
{py3.8,py3.12,py3.13}-launchdarkly-v9.8.0
{py3.8,py3.12,py3.13}-launchdarkly-latest

# Litestar
{py3.8,py3.11}-litestar-v{2.0}
{py3.8,py3.11,py3.12}-litestar-v{2.6}
Expand All @@ -184,10 +180,6 @@ envlist =
{py3.9,py3.11,py3.12}-openai-latest
{py3.9,py3.11,py3.12}-openai-notiktoken

# OpenFeature
{py3.8,py3.12,py3.13}-openfeature-v0.7
{py3.8,py3.12,py3.13}-openfeature-latest

# OpenTelemetry (OTel)
{py3.7,py3.9,py3.12,py3.13}-opentelemetry

Expand Down Expand Up @@ -259,10 +251,6 @@ envlist =
{py3.8,py3.11}-starlite-v{1.48,1.51}
# 1.51.14 is the last starlite version; the project continues as litestar

# Statsig
{py3.8,py3.12,py3.13}-statsig-v0.55.3
{py3.8,py3.12,py3.13}-statsig-latest

# SQL Alchemy
{py3.6,py3.9}-sqlalchemy-v{1.2,1.4}
{py3.7,py3.11}-sqlalchemy-v{2.0}
Expand All @@ -284,14 +272,24 @@ envlist =
{py3.7,py3.12,py3.13}-typer-v{0.15}
{py3.7,py3.12,py3.13}-typer-latest

# Unleash
{py3.8,py3.12,py3.13}-unleash-v6.0.1
{py3.8,py3.12,py3.13}-unleash-latest

# === Integrations - Auto-generated ===
# These come from the populate_tox.py script. Eventually we should move all
# integration tests there.

# ~~~ Flags ~~~
{py3.8,py3.12,py3.13}-launchdarkly-v9.8.1
{py3.8,py3.12,py3.13}-launchdarkly-v9.9.0

{py3.8,py3.12,py3.13}-openfeature-v0.7.5
{py3.9,py3.12,py3.13}-openfeature-v0.8.0

{py3.7,py3.12,py3.13}-statsig-v0.55.3
{py3.7,py3.12,py3.13}-statsig-v0.56.0

{py3.8,py3.12,py3.13}-unleash-v6.0.1
{py3.8,py3.12,py3.13}-unleash-v6.1.0


# ~~~ GraphQL ~~~
{py3.8,py3.10,py3.11}-ariadne-v0.20.1
{py3.8,py3.11,py3.12}-ariadne-v0.22
Expand All @@ -307,7 +305,7 @@ envlist =
{py3.8,py3.10,py3.11}-strawberry-v0.209.8
{py3.8,py3.11,py3.12}-strawberry-v0.226.2
{py3.8,py3.11,py3.12}-strawberry-v0.243.1
{py3.9,py3.12,py3.13}-strawberry-v0.260.0
{py3.9,py3.12,py3.13}-strawberry-v0.260.1



Expand Down Expand Up @@ -565,18 +563,6 @@ deps =
openai-latest: tiktoken~=0.6.0
openai-notiktoken: openai

# OpenFeature
openfeature-v0.7: openfeature-sdk~=0.7.1
openfeature-latest: openfeature-sdk

# LaunchDarkly
launchdarkly-v9.8.0: launchdarkly-server-sdk~=9.8.0
launchdarkly-latest: launchdarkly-server-sdk

# Unleash
unleash-v6.0.1: UnleashClient~=6.0.1
unleash-latest: UnleashClient

# OpenTelemetry (OTel)
opentelemetry: opentelemetry-distro

Expand Down Expand Up @@ -701,11 +687,6 @@ deps =
starlite-v{1.48}: starlite~=1.48.0
starlite-v{1.51}: starlite~=1.51.0

# Statsig
statsig: typing_extensions
statsig-v0.55.3: statsig~=0.55.3
statsig-latest: statsig

# SQLAlchemy
sqlalchemy-v1.2: sqlalchemy~=1.2.0
sqlalchemy-v1.4: sqlalchemy~=1.4.0
Expand Down Expand Up @@ -737,6 +718,21 @@ deps =
# These come from the populate_tox.py script. Eventually we should move all
# integration tests there.

# ~~~ Flags ~~~
launchdarkly-v9.8.1: launchdarkly-server-sdk==9.8.1
launchdarkly-v9.9.0: launchdarkly-server-sdk==9.9.0

openfeature-v0.7.5: openfeature-sdk==0.7.5
openfeature-v0.8.0: openfeature-sdk==0.8.0

statsig-v0.55.3: statsig==0.55.3
statsig-v0.56.0: statsig==0.56.0
statsig: typing_extensions

unleash-v6.0.1: UnleashClient==6.0.1
unleash-v6.1.0: UnleashClient==6.1.0


# ~~~ GraphQL ~~~
ariadne-v0.20.1: ariadne==0.20.1
ariadne-v0.22: ariadne==0.22
Expand All @@ -760,7 +756,7 @@ deps =
strawberry-v0.209.8: strawberry-graphql[fastapi,flask]==0.209.8
strawberry-v0.226.2: strawberry-graphql[fastapi,flask]==0.226.2
strawberry-v0.243.1: strawberry-graphql[fastapi,flask]==0.243.1
strawberry-v0.260.0: strawberry-graphql[fastapi,flask]==0.260.0
strawberry-v0.260.1: strawberry-graphql[fastapi,flask]==0.260.1
strawberry: httpx


Expand Down

0 comments on commit 5a5a1cf

Please sign in to comment.