1717 strategy :
1818 fail-fast : false
1919 matrix :
20- os : [ubuntu-latest]
21- python-version : ['3.10', '3.11', '3.12', '3.13', '3.14']
20+ os : [ubuntu-latest, macos-latest ]
21+ python-version : ['3.9', '3. 10', '3.11', '3.12', '3.13', '3.14']
2222
2323 steps :
2424 - name : Checkout code
6565
6666 - name : Upload coverage to Codecov
6767 if : matrix.os == 'ubuntu-latest' && matrix.python-version == '3.14'
68- uses : codecov/codecov-action@v3
68+ uses : codecov/codecov-action@v4
6969 with :
7070 file : ./coverage.xml
7171 flags : unittests
@@ -75,14 +75,16 @@ jobs:
7575 security :
7676 name : Security checks
7777 runs-on : ubuntu-latest
78+ # Note: Using Python 3.13 for security checks until bandit supports Python 3.14
79+ # See: https://github.com/PyCQA/bandit/issues with ast.Num deprecation
7880 steps :
7981 - name : Checkout code
8082 uses : actions/checkout@v4
8183
8284 - name : Set up Python
8385 uses : actions/setup-python@v5
8486 with :
85- python-version : ' 3.14 '
87+ python-version : ' 3.13 ' # Use 3.13 until bandit supports 3.14
8688
8789 - name : Install security tools
8890 run : |
9193
9294 - name : Run security checks with bandit
9395 run : |
94- bandit -r himl/ -f json -o bandit-report.json || true
96+ # Generate JSON report (allow failures for reporting)
97+ bandit -r himl/ -f json -o bandit-report.json || echo "Bandit JSON report generation completed with issues"
98+ # Run bandit with medium severity (fail on medium+ issues)
9599 bandit -r himl/ --severity-level medium
96100
97101 - name : Check dependencies for known security vulnerabilities
@@ -159,7 +163,7 @@ jobs:
159163 uses : actions/checkout@v4
160164
161165 - name : Set up Python
162- uses : actions/setup-python@v4
166+ uses : actions/setup-python@v5
163167 with :
164168 python-version : ' 3.14'
165169
0 commit comments