Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
9d04331
Update and rename LICENSE to LICENCE
JHogenboom Apr 25, 2025
993c8ba
initial commit
JHogenboom Apr 28, 2025
c6a4a71
switch from PyPi to GitHub only
JHogenboom Apr 29, 2025
6357f80
remove tests for now
JHogenboom Apr 29, 2025
c5c7cc3
correct pyproject.toml
JHogenboom Apr 29, 2025
e5b0027
update licence information
JHogenboom Apr 29, 2025
bd234f3
update workflow permission
JHogenboom Apr 29, 2025
056adc7
remove non-functional dispatch and include package step
JHogenboom Apr 29, 2025
408ca1f
remove package step
JHogenboom Apr 29, 2025
0365eab
allow users to predetermine info using DataFrame accessor
JHogenboom May 1, 2025
e7dd6c5
upgrade version
JHogenboom May 1, 2025
af10869
add deterministic seed to differential privacy
JHogenboom May 2, 2025
9145c38
include vantage6 errors
JHogenboom May 2, 2025
164840f
rearrange functions
JHogenboom May 2, 2025
2cfa620
include summation function and various aesthetics
JHogenboom May 2, 2025
c8f3f95
update version
JHogenboom May 2, 2025
a797992
update authors
JHogenboom May 2, 2025
e5298a3
Correct try-except for predetermined information
JHogenboom May 12, 2025
908745b
update privacy and misc typing
JHogenboom May 16, 2025
2b32b8b
update version
JHogenboom May 16, 2025
2ce665a
include inliers for non-categorical typing
JHogenboom May 16, 2025
e99af0c
update handling of in and outliers
JHogenboom Jul 23, 2025
74cd81b
update handling of datatypes
JHogenboom Jul 23, 2025
dd7cd3f
update logging for clarity
JHogenboom Jul 23, 2025
2204813
improve handling of predetermined information
JHogenboom Jul 23, 2025
f7cad48
Initial plan
Copilot Jul 24, 2025
129e19b
Initial implementation plan for comprehensive testing framework
Copilot Jul 24, 2025
c981e1a
Implement comprehensive testing framework with unit tests, integratio…
Copilot Jul 24, 2025
e240fd6
Complete comprehensive testing framework implementation with working …
Copilot Jul 24, 2025
45fefc0
fix unit tests and testdata
JHogenboom Jul 29, 2025
3dc2775
Initial analysis and plan for addressing code review feedback
Copilot Jul 29, 2025
6b634b6
Implement new federated vs centralised testing framework with proper …
Copilot Jul 29, 2025
d807b31
Fix unit tests to follow proper local->aggregate pattern and convert …
Copilot Jul 29, 2025
56617bd
update deviation assessment
JHogenboom Jul 29, 2025
c17d1af
various cleanup
JHogenboom Jul 29, 2025
831c41e
update formatting
JHogenboom Jul 29, 2025
7d0f463
handle empty dictionaries for stratification
JHogenboom Jul 29, 2025
a148681
Address PR feedback: Move federated vs centralised tests to empirical…
Copilot Jul 29, 2025
d5e30f7
Fix unit test failures: adjusted deviation JSON format, differential …
Copilot Jul 29, 2025
2a934a3
Complete PR feedback implementation: Handle known mathematical limita…
Copilot Jul 29, 2025
0d5a95e
update formatting using black, flake8, and MyPy
JHogenboom Jul 30, 2025
99f46c8
Fix final issues: add psutil dependency, resolve TODOs, and fix MyPy …
Copilot Jul 30, 2025
c3ef763
update formatting
JHogenboom Jul 30, 2025
6af7075
update formatting
JHogenboom Jul 30, 2025
75b96b6
update formatting even more
JHogenboom Jul 30, 2025
88c7eb1
rearrange badge order
JHogenboom Jul 30, 2025
4671ac9
reduce code coverage requirements
JHogenboom Jul 30, 2025
6ac26e9
Merge pull request #2 from STRONGAYA/copilot/fix-1 fixing #1
JHogenboom Jul 30, 2025
1b98a57
update coverage badge
JHogenboom Jul 30, 2025
7aadb79
update coverage badge
JHogenboom Jul 30, 2025
6563686
update coverage badge
JHogenboom Jul 30, 2025
f2047f5
local coverage badge setup
JHogenboom Jul 30, 2025
f4d4ed4
update badge setup
JHogenboom Aug 7, 2025
302fe2f
prepare for release
JHogenboom Aug 7, 2025
49c4594
Update coverage badge to 59%
github-actions[bot] Aug 7, 2025
83e3086
update badge aesthetic
JHogenboom Aug 7, 2025
4fbe929
correct typo in links
JHogenboom Aug 7, 2025
aa94784
port over two misc functions important for generic checks
JHogenboom Aug 26, 2025
b6bbe53
resolve various tests (after rename) and linting errors
JHogenboom Aug 26, 2025
493e592
correct too eager error resolving
JHogenboom Aug 26, 2025
79d1a73
Update coverage badge to 60%
github-actions[bot] Aug 26, 2025
19c0222
bump version
JHogenboom Aug 26, 2025
bd3761d
Merge remote-tracking branch 'origin/main'
JHogenboom Aug 26, 2025
77f9624
various minor formatting updates
JHogenboom Aug 26, 2025
458cfb6
update inlier handling after JSON-serialisation adaptation
JHogenboom Sep 5, 2025
3e83868
Update logging of inlier operations
JHogenboom Sep 5, 2025
d4a0e37
prevent errors with non-numerical inliers for numerical variables
JHogenboom Sep 5, 2025
5ba1d75
Merge remote-tracking branch 'origin/update-inlier-handling' into upd…
JHogenboom Sep 5, 2025
3551085
minor review adaptations and linting
JHogenboom Sep 5, 2025
60a1771
correct typo
JHogenboom Sep 5, 2025
e396b9f
Merge pull request #5 from STRONGAYA/update-inlier-handling
JHogenboom Sep 5, 2025
96e3b92
update categorical inlier handling
JHogenboom Sep 9, 2025
435035e
Merge pull request #7 from STRONGAYA/update-inlier-handling
JHogenboom Sep 9, 2025
07d874e
include type conversion for NumPy and Pandas types
JHogenboom Nov 24, 2025
4d2a231
bump version
JHogenboom Nov 24, 2025
267f7c1
include new function in init
JHogenboom Nov 24, 2025
6f271b9
Merge pull request #9 from STRONGAYA/update-predetermined-info-handling
JHogenboom Nov 24, 2025
d9cf567
Update coverage badge to 59%
github-actions[bot] Nov 24, 2025
4f9e7fc
update vantage6-algorithm-tools dependency range
JHogenboom Jun 16, 2026
336cca9
add `*.pyc` in `.gitignore`
JHogenboom Jun 16, 2026
03ceee4
raise error instead of returning an empty list to simplify flow
JHogenboom Jun 19, 2026
41d84e9
remove `TESTING_GUIDE.md`
JHogenboom Jun 19, 2026
9437886
update README to reflect v1.0.4 guideline conformity approval and bum…
JHogenboom Jul 14, 2026
8772157
Merge pull request #10 from STRONGAYA/review/important-comments
JHogenboom Jul 14, 2026
2fa323d
Update coverage badge to 59%
github-actions[bot] Jul 14, 2026
e4b9326
adjust parameter name and extend inliers type check
JHogenboom Jul 16, 2026
153e61d
Merge pull request #11 from STRONGAYA/fix/adjusted-std-calc-inlier-types
JHogenboom Jul 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions .github/workflows/publish_python_package.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: Build Python Package

on:
push:
tags:
- '*'

permissions:
contents: write

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install build
- name: Build package
run: python -m build
- name: Create GitHub Release
uses: softprops/action-gh-release@v1
with:
files: |
dist/*.whl
dist/*.tar.gz
generate_release_notes: true
191 changes: 191 additions & 0 deletions .github/workflows/test-suite.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,191 @@
name: Test Suite

on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main, develop ]

permissions:
contents: write

jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10"]

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}

- name: Cache dependencies
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/pyproject.toml') }}
restore-keys: |
${{ runner.os }}-pip-

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install pytest pytest-cov pytest-mock hypothesis faker psutil scipy
pip install -e .

- name: Run unit tests
run: |
pytest tests/unit/ -v --tb=short

- name: Run integration tests
run: |
pytest tests/integration/ -v --tb=short

- name: Run empirical tests
run: |
pytest tests/empirical/ -v --tb=short

- name: Run tests with coverage
run: |
pytest --cov=vantage6_strongaya_general --cov-report=term-missing --cov-report=html --cov-report=json

- name: Extract coverage percentage and create badge
run: |
COVERAGE=$(python -c "import json; print(json.load(open('coverage.json'))['totals']['percent_covered_display'])")
echo "::notice title=Coverage Percentage::Coverage: $COVERAGE%"
echo "COVERAGE_PERCENTAGE=$COVERAGE" >> $GITHUB_ENV

# Determine color based on coverage
if (( $(echo "$COVERAGE >= 80" | bc -l) )); then
COLOR="brightgreen"
elif (( $(echo "$COVERAGE >= 60" | bc -l) )); then
COLOR="yellow"
elif (( $(echo "$COVERAGE >= 40" | bc -l) )); then
COLOR="orange"
else
COLOR="red"
fi

curl -o tests/coverage-badge.svg "https://img.shields.io/badge/coverage-$COVERAGE%25-$COLOR"

- name: Commit coverage badge
if: github.ref == 'refs/heads/main'
run: |
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
git add tests/coverage-badge.svg
git diff --staged --quiet || git commit -m "Update coverage badge to $COVERAGE_PERCENTAGE%"
git push

- name: Check coverage threshold
run: |
coverage report --fail-under=50

- name: Archive test results
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results-${{ matrix.python-version }}
path: |
htmlcov/
coverage.json

lint:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.10"

- name: Install linting dependencies
run: |
python -m pip install --upgrade pip
pip install flake8 black mypy
pip install -e .

- name: Run Black code formatter check
run: |
black --check --diff src/ tests/

- name: Run Flake8 linter
run: |
flake8 src/ tests/ --max-line-length=120 --extend-ignore=E203,W503

- name: Run MyPy type checker
run: |
mypy src/vantage6_strongaya_general/ --ignore-missing-imports

security:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.10"

- name: Install security scanning dependencies
run: |
python -m pip install --upgrade pip
pip install bandit safety

- name: Run Bandit security linter
run: |
bandit -r src/ -f json -o bandit-report.json || true

- name: Check dependencies for known vulnerabilities
run: |
safety check --json --output safety-report.json || true

- name: Upload security reports
uses: actions/upload-artifact@v4
if: always()
with:
name: security-reports
path: |
bandit-report.json
safety-report.json

performance:
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.10"

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install pytest pytest-benchmark
pip install -e .

- name: Run performance benchmarks
run: |
pytest tests/integration/ -k "performance" --benchmark-only --benchmark-json=benchmark-results.json || true

- name: Upload benchmark results
uses: actions/upload-artifact@v4
if: always()
with:
name: benchmark-results
path: benchmark-results.json
72 changes: 72 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Python
__pycache__/
*.py[cod]
*$py.class
*.so
*.pyc
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# Testing
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
htmlcov/

# Virtual environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# IDEs
.vscode/
.idea/
*.swp
*.swo
*~

# OS
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

# Jupyter Notebook
.ipynb_checkpoints

# Test artifacts
/tmp/
test_results/
benchmark_results/
13 changes: 1 addition & 12 deletions LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -175,18 +175,7 @@

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work.

To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright [yyyy] [name of copyright owner]
Copyright 2025 STRONG AYA

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
Loading
Loading