af-credentials 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 (32) hide show
  1. af_credentials-0.1.0/.git_archival.txt +3 -0
  2. af_credentials-0.1.0/.gitattributes +1 -0
  3. af_credentials-0.1.0/.github/dependabot.yml +22 -0
  4. af_credentials-0.1.0/.github/release.yml +5 -0
  5. af_credentials-0.1.0/.github/workflows/cd.yml +56 -0
  6. af_credentials-0.1.0/.github/workflows/ci.yml +93 -0
  7. af_credentials-0.1.0/.github/workflows/docs.yml +79 -0
  8. af_credentials-0.1.0/.gitignore +186 -0
  9. af_credentials-0.1.0/.pre-commit-config.yaml +88 -0
  10. af_credentials-0.1.0/.readthedocs.yaml +17 -0
  11. af_credentials-0.1.0/LICENSE +202 -0
  12. af_credentials-0.1.0/PKG-INFO +248 -0
  13. af_credentials-0.1.0/README.md +215 -0
  14. af_credentials-0.1.0/docs/contributing.md +52 -0
  15. af_credentials-0.1.0/docs/index.md +15 -0
  16. af_credentials-0.1.0/lychee.toml +1 -0
  17. af_credentials-0.1.0/pixi.lock +8014 -0
  18. af_credentials-0.1.0/pixi.toml +104 -0
  19. af_credentials-0.1.0/pyproject.toml +179 -0
  20. af_credentials-0.1.0/src/af_credentials/__init__.py +5 -0
  21. af_credentials-0.1.0/src/af_credentials/_version.py +24 -0
  22. af_credentials-0.1.0/src/af_credentials/_version.pyi +2 -0
  23. af_credentials-0.1.0/src/af_credentials/mcp.py +56 -0
  24. af_credentials-0.1.0/src/af_credentials/proxy.py +214 -0
  25. af_credentials-0.1.0/src/af_credentials/py.typed +0 -0
  26. af_credentials-0.1.0/src/af_credentials/verifier.py +161 -0
  27. af_credentials-0.1.0/tbump.toml +42 -0
  28. af_credentials-0.1.0/tests/conftest.py +98 -0
  29. af_credentials-0.1.0/tests/test_mcp.py +66 -0
  30. af_credentials-0.1.0/tests/test_proxy.py +201 -0
  31. af_credentials-0.1.0/tests/test_verifier.py +297 -0
  32. af_credentials-0.1.0/zensical.toml +82 -0
@@ -0,0 +1,3 @@
1
+ node: $Format:%H$
2
+ node-date: $Format:%cI$
3
+ describe-name: $Format:%(describe:tags=true,match=*[0-9]*)$
@@ -0,0 +1 @@
1
+ .git_archival.txt export-subst
@@ -0,0 +1,22 @@
1
+ version: 2
2
+ updates:
3
+ # Maintain dependencies for GitHub Actions
4
+ - package-ecosystem: "github-actions"
5
+ directory: "/"
6
+ schedule:
7
+ interval: "weekly"
8
+ groups:
9
+ actions:
10
+ patterns:
11
+ - "*"
12
+ labels:
13
+ - "github-actions"
14
+ - "dependencies"
15
+
16
+ # Ignore all pip dependencies to avoid PRs to update tests/constraints.txt
17
+ - package-ecosystem: "pip"
18
+ directory: "/"
19
+ schedule:
20
+ interval: "weekly"
21
+ ignore:
22
+ - dependency-name: "*"
@@ -0,0 +1,5 @@
1
+ changelog:
2
+ exclude:
3
+ authors:
4
+ - dependabot[bot]
5
+ - pre-commit-ci[bot]
@@ -0,0 +1,56 @@
1
+ name: CD
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ pull_request:
6
+ push:
7
+ branches:
8
+ - main
9
+ release:
10
+ types:
11
+ - published
12
+
13
+ concurrency:
14
+ group: ${{ github.workflow }}-${{ github.ref }}
15
+ cancel-in-progress: true
16
+
17
+ env:
18
+ # Many color libraries just need this to be set to any value, but at least
19
+ # one distinguishes color depth, where "3" -> "256-bit color".
20
+ FORCE_COLOR: 3
21
+
22
+ jobs:
23
+ dist:
24
+ name: Distribution build
25
+ runs-on: ubuntu-latest
26
+
27
+ steps:
28
+ - uses: actions/checkout@v7
29
+ with:
30
+ fetch-depth: 0
31
+
32
+ - uses: hynek/build-and-inspect-python-package@v2
33
+
34
+ publish:
35
+ needs: [dist]
36
+ name: Publish to PyPI
37
+ environment: pypi
38
+ permissions:
39
+ id-token: write
40
+ attestations: write
41
+ contents: read
42
+ runs-on: ubuntu-latest
43
+ if: github.event_name == 'release' && github.event.action == 'published'
44
+
45
+ steps:
46
+ - uses: actions/download-artifact@v8
47
+ with:
48
+ name: Packages
49
+ path: dist
50
+
51
+ - name: Generate artifact attestation for sdist and wheel
52
+ uses: actions/attest-build-provenance@v4.1.1
53
+ with:
54
+ subject-path: "dist/*"
55
+
56
+ - uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,93 @@
1
+ name: CI
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ pull_request:
6
+ push:
7
+ branches:
8
+ - main
9
+
10
+ concurrency:
11
+ group: ${{ github.workflow }}-${{ github.ref }}
12
+ cancel-in-progress: true
13
+
14
+ env:
15
+ # Many color libraries just need this to be set to any value, but at least
16
+ # one distinguishes color depth, where "3" -> "256-bit color".
17
+ FORCE_COLOR: 3
18
+
19
+ jobs:
20
+ pre-commit:
21
+ name: Format
22
+ runs-on: ubuntu-latest
23
+ steps:
24
+ - uses: actions/checkout@v7
25
+ with:
26
+ fetch-depth: 0
27
+
28
+ - uses: prefix-dev/setup-pixi@v0.10.0
29
+ with:
30
+ pixi-version: v0.68.1
31
+ cache: true
32
+ cache-key: dev
33
+ cache-write:
34
+ ${{ github.event_name == 'push' && github.ref_name == 'main' }}
35
+ environments: dev
36
+
37
+ - name: Run pre-commit
38
+ run: pixi run pre-commit --hook-stage manual
39
+
40
+ - name: Run PyLint
41
+ run: pixi run pylint --output-format=github
42
+
43
+ checks:
44
+ name: Check Python ${{ matrix.python-version }} on ${{ matrix.runs-on }}
45
+ runs-on: ${{ matrix.runs-on }}
46
+ needs: [pre-commit]
47
+ strategy:
48
+ fail-fast: false
49
+ matrix:
50
+ python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
51
+ runs-on: [ubuntu-latest, macos-14]
52
+ include:
53
+ - python-version: "3.10"
54
+ pixi-environment: py310
55
+ - python-version: "3.11"
56
+ pixi-environment: py311
57
+ - python-version: "3.12"
58
+ pixi-environment: py312
59
+ - python-version: "3.13"
60
+ pixi-environment: py313
61
+ - python-version: "3.14"
62
+ pixi-environment: py314
63
+
64
+ steps:
65
+ - uses: actions/checkout@v7
66
+ with:
67
+ fetch-depth: 0
68
+
69
+ - uses: prefix-dev/setup-pixi@v0.10.0
70
+ with:
71
+ pixi-version: v0.68.1
72
+ cache: true
73
+ cache-key: ${{ matrix.pixi-environment }}-${{ github.ref_name }}
74
+ cache-write:
75
+ ${{ github.event_name == 'push' && github.ref_name == 'main' }}
76
+ environments: ${{ matrix.pixi-environment }}
77
+
78
+ - name: Test package
79
+ run: >-
80
+ pixi run -e ${{ matrix.pixi-environment }} test-all -ra --cov-branch
81
+ --cov-report=xml --cov-report=term --junitxml=junit.xml -o
82
+ junit_family=legacy --durations=20
83
+
84
+ - name: Upload coverage report
85
+ uses: codecov/codecov-action@v7.0.0
86
+ with:
87
+ token: ${{ secrets.CODECOV_TOKEN }}
88
+
89
+ - name: Upload test results to Codecov
90
+ if: ${{ !cancelled() }}
91
+ uses: codecov/test-results-action@v1
92
+ with:
93
+ token: ${{ secrets.CODECOV_TOKEN }}
@@ -0,0 +1,79 @@
1
+ name: Docs
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+ workflow_dispatch:
9
+
10
+ concurrency:
11
+ group: ${{ github.workflow }}-${{ github.ref }}
12
+ cancel-in-progress: true
13
+
14
+ permissions:
15
+ contents: read
16
+
17
+ jobs:
18
+ build:
19
+ name: Build docs
20
+ runs-on: ubuntu-latest
21
+
22
+ steps:
23
+ - uses: actions/checkout@v7
24
+ with:
25
+ fetch-depth: 0
26
+
27
+ - uses: prefix-dev/setup-pixi@v0.10.0
28
+ with:
29
+ pixi-version: v0.68.1
30
+ cache: true
31
+ cache-key: docs-${{ github.ref_name }}
32
+ cache-write:
33
+ ${{ github.event_name == 'push' && github.ref_name == 'main' }}
34
+ environments: docs
35
+
36
+ - name: Check docstrings
37
+ run: pixi run check-docstrings
38
+
39
+ - name: Check for broken links
40
+ run: |
41
+ pixi run docs-linkcheck -v --no-progress --format detailed
42
+
43
+ - name: Build docs
44
+ run: pixi run docs-build
45
+
46
+ - name: Fix permissions if needed
47
+ run: |
48
+ chmod -c -R +rX "site/" | while read line; do
49
+ echo "::warning title=Invalid file permissions automatically fixed::$line"
50
+ done
51
+
52
+ - name: Upload artifact
53
+ uses: actions/upload-pages-artifact@v5
54
+ with:
55
+ path: "site/"
56
+
57
+ deploy:
58
+ name: Deploy docs to GitHub Pages
59
+ if: github.event_name == 'push' && github.ref == 'refs/heads/main'
60
+ needs: build
61
+ # Set permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
62
+ permissions:
63
+ contents: read
64
+ pages: write
65
+ id-token: write
66
+
67
+ environment:
68
+ name: github-pages
69
+ url: ${{ steps.deployment.outputs.page_url }}
70
+
71
+ runs-on: ubuntu-latest
72
+
73
+ steps:
74
+ - name: Setup Pages
75
+ uses: actions/configure-pages@v6
76
+
77
+ - name: Deploy to GitHub Pages
78
+ id: deployment
79
+ uses: actions/deploy-pages@v5
@@ -0,0 +1,186 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py,cover
50
+ .hypothesis/
51
+ cover/
52
+
53
+ # Translations
54
+ *.mo
55
+ *.pot
56
+
57
+ # Django stuff:
58
+ *.log
59
+ local_settings.py
60
+ db.sqlite3
61
+ db.sqlite3-journal
62
+
63
+ # Flask stuff:
64
+ instance/
65
+ .webassets-cache
66
+
67
+ # Scrapy stuff:
68
+ .scrapy
69
+
70
+ # Sphinx documentation
71
+ docs/_build/
72
+
73
+ # PyBuilder
74
+ .pybuilder/
75
+ target/
76
+
77
+ # Jupyter Notebook
78
+ .ipynb_checkpoints
79
+
80
+ # IPython
81
+ profile_default/
82
+ ipython_config.py
83
+
84
+ # pyenv
85
+ # For a library or package, you might want to ignore these files since the code is
86
+ # intended to run in multiple environments; otherwise, check them in:
87
+ # .python-version
88
+
89
+ # pipenv
90
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
91
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
92
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
93
+ # install all needed dependencies.
94
+ #Pipfile.lock
95
+
96
+ # UV
97
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
98
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
99
+ # commonly ignored for libraries.
100
+ #uv.lock
101
+
102
+ # poetry
103
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
104
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
105
+ # commonly ignored for libraries.
106
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
107
+ #poetry.lock
108
+
109
+ # pdm
110
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
111
+ #pdm.lock
112
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
113
+ # in version control.
114
+ # https://pdm.fming.dev/latest/usage/project/#working-with-version-control
115
+ .pdm.toml
116
+ .pdm-python
117
+ .pdm-build/
118
+
119
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
120
+ __pypackages__/
121
+
122
+ # Celery stuff
123
+ celerybeat-schedule
124
+ celerybeat.pid
125
+
126
+ # SageMath parsed files
127
+ *.sage.py
128
+
129
+ # Environments
130
+ .env
131
+ .venv
132
+ env/
133
+ venv/
134
+ ENV/
135
+ env.bak/
136
+ venv.bak/
137
+
138
+ # Spyder project settings
139
+ .spyderproject
140
+ .spyproject
141
+
142
+ # Rope project settings
143
+ .ropeproject
144
+
145
+ # mkdocs documentation
146
+ /site
147
+
148
+ # mypy
149
+ .dmypy.json
150
+ dmypy.json
151
+
152
+ # Pyre type checker
153
+ .pyre/
154
+
155
+ # pytype static type analyzer
156
+ .pytype/
157
+
158
+ # Cython debug symbols
159
+ cython_debug/
160
+
161
+ # PyCharm
162
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
163
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
164
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
165
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
166
+ #.idea/
167
+
168
+ # setuptools_scm
169
+ src/*/_version.py
170
+
171
+
172
+ # Caches
173
+ .*_cache/
174
+
175
+ # OS specific stuff
176
+ .DS_Store
177
+ .DS_Store?
178
+ ._*
179
+ .Spotlight-V100
180
+ .Trashes
181
+ ehthumbs.db
182
+ Thumbs.db
183
+
184
+ # Common editor files
185
+ *~
186
+ *.swp
@@ -0,0 +1,88 @@
1
+ ci:
2
+ autoupdate_commit_msg: "chore(deps): update pre-commit hooks"
3
+ autofix_commit_msg: "style: pre-commit fixes"
4
+ autoupdate_schedule: "monthly"
5
+
6
+ exclude: ^.cruft.json|.copier-answers.yml|pixi.lock$
7
+
8
+ repos:
9
+ - repo: https://github.com/adamchainz/blacken-docs
10
+ rev: "1.20.0"
11
+ hooks:
12
+ - id: blacken-docs
13
+ additional_dependencies: [black==26.*]
14
+
15
+ - repo: https://github.com/pre-commit/pre-commit-hooks
16
+ rev: "v6.0.0"
17
+ hooks:
18
+ - id: check-added-large-files
19
+ - id: check-case-conflict
20
+ - id: check-merge-conflict
21
+ - id: check-symlinks
22
+ - id: check-yaml
23
+ - id: debug-statements
24
+ - id: end-of-file-fixer
25
+ - id: mixed-line-ending
26
+ - id: name-tests-test
27
+ args: ["--pytest-test-first"]
28
+ - id: trailing-whitespace
29
+
30
+ - repo: https://github.com/rbubley/mirrors-prettier
31
+ rev: "v3.9.6"
32
+ hooks:
33
+ - id: prettier
34
+ types_or: [yaml, markdown, html, css, scss, javascript, json]
35
+ args: [--prose-wrap=always]
36
+
37
+ - repo: https://github.com/astral-sh/ruff-pre-commit
38
+ rev: "v0.16.1"
39
+ hooks:
40
+ - id: ruff-check
41
+ args: ["--fix", "--show-fixes"]
42
+ - id: ruff-format
43
+
44
+ - repo: https://github.com/pre-commit/mirrors-mypy
45
+ rev: "v2.3.0"
46
+ hooks:
47
+ - id: mypy
48
+ files: src|tests
49
+ args: []
50
+ additional_dependencies:
51
+ - pytest
52
+ - mcp==2.0.0
53
+ - httpx2
54
+ - pyjwt
55
+ - typing_extensions
56
+
57
+ - repo: https://github.com/codespell-project/codespell
58
+ rev: "v2.4.3"
59
+ hooks:
60
+ - id: codespell
61
+ additional_dependencies:
62
+ - tomli; python_version<'3.11'
63
+
64
+ - repo: https://github.com/shellcheck-py/shellcheck-py
65
+ rev: "v0.11.0.1"
66
+ hooks:
67
+ - id: shellcheck
68
+
69
+ - repo: local
70
+ hooks:
71
+ - id: disallow-caps
72
+ name: Disallow improper capitalization
73
+ language: pygrep
74
+ entry: PyBind|Numpy|Cmake|CCache|Github|PyTest
75
+ exclude: .pre-commit-config.yaml
76
+
77
+ - repo: https://github.com/abravalheri/validate-pyproject
78
+ rev: "v0.25"
79
+ hooks:
80
+ - id: validate-pyproject
81
+ additional_dependencies: ["validate-pyproject-schema-store[all]"]
82
+
83
+ - repo: https://github.com/python-jsonschema/check-jsonschema
84
+ rev: "0.37.4"
85
+ hooks:
86
+ - id: check-dependabot
87
+ - id: check-github-workflows
88
+ - id: check-readthedocs
@@ -0,0 +1,17 @@
1
+ # Read the Docs configuration file
2
+ # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
3
+
4
+ version: 2
5
+
6
+ build:
7
+ os: ubuntu-24.04
8
+ tools:
9
+ python: "3.13"
10
+ commands:
11
+ - asdf plugin add uv
12
+ - asdf install uv latest
13
+ - asdf global uv latest
14
+ - uv sync --group docs
15
+ - uv run zensical build
16
+ - mkdir -p $READTHEDOCS_OUTPUT/html/
17
+ - cp --recursive site/* $READTHEDOCS_OUTPUT/html/