88 - synchronize
99
1010jobs :
11- build :
12- # compatible for py 3.6
13- runs-on : ubuntu-20.04
11+ linux :
12+ runs-on : ubuntu-24.04
1413 strategy :
15- # You can use PyPy versions in python-version.
14+ fail-fast : false
1615 matrix :
17- python-version : ["3.6 ", "3.7 ", "3.8 ", "3.9 ", "3.10", "3.11", "3.12 "]
16+ python-version : ["3.10 ", "3.11 ", "3.12 ", "3.13 ", "3.14 "]
1817
1918 steps :
20- - uses : actions/checkout@v3
19+ - uses : actions/checkout@v7
2120 - name : Set up Python ${{ matrix.python-version }}
22- uses : actions/setup-python@v4
21+ uses : actions/setup-python@v7
2322 with :
2423 python-version : ${{ matrix.python-version }}
2524 # You can test your matrix by printing the current Python version
@@ -28,21 +27,77 @@ jobs:
2827 - name : Install dependencies
2928 run : |
3029 python -m pip install --upgrade pip
31- pip install flake8 pytest pytest-mock build
32- if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
30+ python -m pip install flake8 pytest pytest-mock build
31+ if [ -f requirements.txt ]; then python -m pip install -r requirements.txt; fi
32+ python -m pip install --no-deps .
3333 - name : Lint with flake8
3434 run : |
3535 # stop the build if there are Python syntax errors
36- flake8 .
36+ python -m flake8 .
3737 - name : Test with pytest
3838 run : |
39- pytest
39+ python -m pytest
4040 - name : Audit concurrency, memory, and thread cleanup
41- if : matrix.python-version == '3.12'
41+ if : matrix.python-version == '3.12' || matrix.python-version == '3.14'
4242 run : python scripts/resource_audit.py --evaluations 20000 --workers 8
4343 - name : Build production distributions
44- if : matrix.python-version == '3.12'
44+ if : matrix.python-version == '3.12' || matrix.python-version == '3.14'
4545 run : python -m build
4646 - name : Verify wheel contains production packages only
47- if : matrix.python-version == '3.12'
47+ if : matrix.python-version == '3.12' || matrix.python-version == '3.14'
4848 run : python -c "import glob, zipfile; names = zipfile.ZipFile(glob.glob('dist/*.whl')[0]).namelist(); assert not any(name.startswith(('tests/', 'featbit_openfeature/')) for name in names)"
49+ - name : Install and smoke-test the built wheel
50+ if : matrix.python-version == '3.14'
51+ run : |
52+ python -m venv "$RUNNER_TEMP/featbit-wheel-test"
53+ "$RUNNER_TEMP/featbit-wheel-test/bin/python" -m pip install --upgrade pip
54+ "$RUNNER_TEMP/featbit-wheel-test/bin/python" -m pip install dist/*.whl
55+ "$RUNNER_TEMP/featbit-wheel-test/bin/python" -m pip check
56+ "$RUNNER_TEMP/featbit-wheel-test/bin/python" scripts/wheel_smoke.py \
57+ --bootstrap tests/fbclient_test_data.json \
58+ --expected-version-file release/package.json
59+
60+ windows :
61+ runs-on : windows-latest
62+ strategy :
63+ fail-fast : false
64+ matrix :
65+ python-version : ["3.10", "3.11", "3.12", "3.13", "3.14"]
66+ steps :
67+ - uses : actions/checkout@v7
68+ - name : Set up Python ${{ matrix.python-version }}
69+ uses : actions/setup-python@v7
70+ with :
71+ python-version : ${{ matrix.python-version }}
72+ - name : Install dependencies
73+ run : |
74+ python -m pip install --upgrade pip
75+ python -m pip install pytest pytest-mock
76+ python -m pip install -r requirements.txt
77+ python -m pip install --no-deps .
78+ - name : Test with pytest
79+ run : python -m pytest
80+
81+ minimum-dependencies :
82+ runs-on : ubuntu-24.04
83+ steps :
84+ - uses : actions/checkout@v7
85+ - name : Set up Python 3.14
86+ uses : actions/setup-python@v7
87+ with :
88+ python-version : " 3.14"
89+ - name : Install exact minimum dependencies
90+ run : |
91+ python -m pip install --upgrade pip
92+ python -m pip install pytest pytest-mock
93+ python -m pip install \
94+ certifi==2018.4.16 \
95+ urllib3==1.26.5 \
96+ python-dateutil==2.8.2 \
97+ websocket-client==1.0.0
98+ python -m pip install --no-deps .
99+ python -m pip check
100+ - name : Test with pytest
101+ run : python -m pytest
102+ - name : Audit concurrency, memory, and thread cleanup
103+ run : python scripts/resource_audit.py --evaluations 20000 --workers 8
0 commit comments