qso-graph-auth 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. qso_graph_auth-0.1.0/.github/workflows/publish.yml +70 -0
  2. qso_graph_auth-0.1.0/.gitignore +12 -0
  3. qso_graph_auth-0.1.0/LICENSE +674 -0
  4. qso_graph_auth-0.1.0/PKG-INFO +115 -0
  5. qso_graph_auth-0.1.0/README.md +92 -0
  6. qso_graph_auth-0.1.0/pyproject.toml +34 -0
  7. qso_graph_auth-0.1.0/src/qso_graph_auth/__init__.py +3 -0
  8. qso_graph_auth-0.1.0/src/qso_graph_auth/cli/__init__.py +7 -0
  9. qso_graph_auth-0.1.0/src/qso_graph_auth/cli/creds.py +234 -0
  10. qso_graph_auth-0.1.0/src/qso_graph_auth/cli/persona.py +204 -0
  11. qso_graph_auth-0.1.0/src/qso_graph_auth/cli/provider.py +159 -0
  12. qso_graph_auth-0.1.0/src/qso_graph_auth/cli/root.py +52 -0
  13. qso_graph_auth-0.1.0/src/qso_graph_auth/credentials/__init__.py +19 -0
  14. qso_graph_auth-0.1.0/src/qso_graph_auth/credentials/credentials.py +97 -0
  15. qso_graph_auth-0.1.0/src/qso_graph_auth/identity/__init__.py +19 -0
  16. qso_graph_auth-0.1.0/src/qso_graph_auth/identity/errors.py +24 -0
  17. qso_graph_auth-0.1.0/src/qso_graph_auth/identity/manager.py +78 -0
  18. qso_graph_auth-0.1.0/src/qso_graph_auth/identity/models.py +61 -0
  19. qso_graph_auth-0.1.0/src/qso_graph_auth/identity/store.py +180 -0
  20. qso_graph_auth-0.1.0/src/qso_graph_auth/paths.py +48 -0
  21. qso_graph_auth-0.1.0/src/qso_graph_auth/providers/__init__.py +9 -0
  22. qso_graph_auth-0.1.0/src/qso_graph_auth/providers/adapters.py +68 -0
  23. qso_graph_auth-0.1.0/src/qso_graph_auth/resources/__init__.py +0 -0
  24. qso_graph_auth-0.1.0/src/qso_graph_auth/resources/providers/eqsl.json +19 -0
  25. qso_graph_auth-0.1.0/src/qso_graph_auth/resources/providers/hamqth.json +12 -0
  26. qso_graph_auth-0.1.0/src/qso_graph_auth/resources/providers/lotw.json +19 -0
  27. qso_graph_auth-0.1.0/src/qso_graph_auth/resources/providers/qrz.json +17 -0
  28. qso_graph_auth-0.1.0/src/qso_graph_auth/resources/providers/qrz_logbook.json +17 -0
  29. qso_graph_auth-0.1.0/src/qso_graph_auth/resources/schemas/manifest.v1.json +46 -0
  30. qso_graph_auth-0.1.0/tests/test_security.py +87 -0
@@ -0,0 +1,70 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ jobs:
9
+ security:
10
+ name: Security gates
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+
15
+ - uses: actions/setup-python@v5
16
+ with:
17
+ python-version: "3.12"
18
+
19
+ - name: Install test dependencies
20
+ run: pip install pytest pip-audit
21
+
22
+ - name: Run security test suite
23
+ run: python -m pytest tests/test_security.py -v
24
+
25
+ - name: Audit dependencies for vulnerabilities
26
+ run: pip-audit --strict --desc 2>&1 || true
27
+
28
+ - name: Grep check — no subprocess/shell
29
+ run: |
30
+ if grep -rn 'subprocess\.\|os\.system\|shell=True' src/; then
31
+ echo "FAIL: subprocess/shell found in source"
32
+ exit 1
33
+ fi
34
+
35
+ - name: Grep check — no plaintext http://
36
+ run: |
37
+ if grep -rn 'http://' src/ | grep -v 'localhost\|127\.0\.0\.1\|::1'; then
38
+ echo "FAIL: non-HTTPS URL found in source"
39
+ exit 1
40
+ fi
41
+
42
+ - name: Grep check — no credential logging
43
+ run: |
44
+ if grep -rn -i 'print.*password\|print.*api_key\|logging.*password\|logging.*api_key' src/; then
45
+ echo "FAIL: credential logging found in source"
46
+ exit 1
47
+ fi
48
+
49
+ publish:
50
+ name: Build and publish to PyPI
51
+ needs: security
52
+ runs-on: ubuntu-latest
53
+ environment: pypi
54
+ permissions:
55
+ id-token: write # Required for trusted publishing (OIDC)
56
+ steps:
57
+ - uses: actions/checkout@v4
58
+
59
+ - uses: actions/setup-python@v5
60
+ with:
61
+ python-version: "3.12"
62
+
63
+ - name: Install build dependencies
64
+ run: pip install build
65
+
66
+ - name: Build package
67
+ run: python -m build
68
+
69
+ - name: Publish to PyPI
70
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,12 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *$py.class
4
+ *.egg-info/
5
+ dist/
6
+ build/
7
+ .eggs/
8
+ *.egg
9
+ .venv/
10
+ .pytest_cache/
11
+ .mypy_cache/
12
+ .ruff_cache/