se-admin 0.2.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.
- se_admin-0.2.0/.gitignore +126 -0
- se_admin-0.2.0/LICENSE +21 -0
- se_admin-0.2.0/PKG-INFO +258 -0
- se_admin-0.2.0/README.md +233 -0
- se_admin-0.2.0/data/checks.toml +0 -0
- se_admin-0.2.0/data/migrations.toml +0 -0
- se_admin-0.2.0/data/profiles.toml +91 -0
- se_admin-0.2.0/data/repos.toml +89 -0
- se_admin-0.2.0/data/tasks/add_zensical.toml +40 -0
- se_admin-0.2.0/data/tasks/add_zensical_config.toml +20 -0
- se_admin-0.2.0/data/tasks/add_zensical_dependencies.toml +12 -0
- se_admin-0.2.0/data/tasks/add_zensical_workflows_replace.toml +27 -0
- se_admin-0.2.0/data/tasks/normalize_core_files.toml +36 -0
- se_admin-0.2.0/data/tasks/normalize_lychee_location.toml +18 -0
- se_admin-0.2.0/data/tasks/pull_repo_sets.toml +17 -0
- se_admin-0.2.0/data/tasks/remove_mkdocs_config.toml +13 -0
- se_admin-0.2.0/data/tasks/remove_mkdocs_dependencies.toml +15 -0
- se_admin-0.2.0/data/tasks/replace_mkdocs_with_zensical.toml +31 -0
- se_admin-0.2.0/data/tasks/sync_dependabot_and_pull.toml +30 -0
- se_admin-0.2.0/docs/en/commands.md +65 -0
- se_admin-0.2.0/docs/en/concepts.md +74 -0
- se_admin-0.2.0/docs/en/configuration.md +107 -0
- se_admin-0.2.0/docs/en/examples.md +100 -0
- se_admin-0.2.0/docs/en/index.md +10 -0
- se_admin-0.2.0/docs/index.md +10 -0
- se_admin-0.2.0/pyproject.toml +199 -0
- se_admin-0.2.0/src/se_admin/__init__.py +1 -0
- se_admin-0.2.0/src/se_admin/__main__.py +6 -0
- se_admin-0.2.0/src/se_admin/_version.py +24 -0
- se_admin-0.2.0/src/se_admin/actions/__init__.py +35 -0
- se_admin-0.2.0/src/se_admin/actions/copy_file.py +57 -0
- se_admin-0.2.0/src/se_admin/actions/dependabot.py +58 -0
- se_admin-0.2.0/src/se_admin/actions/git_pull.py +18 -0
- se_admin-0.2.0/src/se_admin/actions/patch_markdown.py +108 -0
- se_admin-0.2.0/src/se_admin/actions/patch_toml.py +149 -0
- se_admin-0.2.0/src/se_admin/actions/replace_file.py +93 -0
- se_admin-0.2.0/src/se_admin/actions/run_command.py +38 -0
- se_admin-0.2.0/src/se_admin/app.py +374 -0
- se_admin-0.2.0/src/se_admin/checks/__init__.py +83 -0
- se_admin-0.2.0/src/se_admin/checks/exact_files.py +72 -0
- se_admin-0.2.0/src/se_admin/checks/python_version.py +94 -0
- se_admin-0.2.0/src/se_admin/checks/reference_files.py +63 -0
- se_admin-0.2.0/src/se_admin/checks/required_paths.py +29 -0
- se_admin-0.2.0/src/se_admin/checks/tags.py +54 -0
- se_admin-0.2.0/src/se_admin/checks/workflows.py +29 -0
- se_admin-0.2.0/src/se_admin/cli.py +89 -0
- se_admin-0.2.0/src/se_admin/domain/__init__.py +1 -0
- se_admin-0.2.0/src/se_admin/domain/capabilities.py +20 -0
- se_admin-0.2.0/src/se_admin/domain/findings.py +34 -0
- se_admin-0.2.0/src/se_admin/domain/operations.py +194 -0
- se_admin-0.2.0/src/se_admin/domain/profiles.py +92 -0
- se_admin-0.2.0/src/se_admin/domain/repos.py +77 -0
- se_admin-0.2.0/src/se_admin/domain/selectors.py +38 -0
- se_admin-0.2.0/src/se_admin/domain/tasks.py +72 -0
- se_admin-0.2.0/src/se_admin/migrations/__init__.py +17 -0
- se_admin-0.2.0/src/se_admin/migrations/python_package_profile.py +62 -0
- se_admin-0.2.0/src/se_admin/migrations/python_tooling_profile.py +54 -0
- se_admin-0.2.0/src/se_admin/migrations/python_version.py +65 -0
- se_admin-0.2.0/src/se_admin/migrations/replace_mkdocs_with_zensical.py +108 -0
- se_admin-0.2.0/src/se_admin/migrations/workflow_names.py +82 -0
- se_admin-0.2.0/src/se_admin/observe/__init__.py +91 -0
- se_admin-0.2.0/src/se_admin/observe/filesystem.py +41 -0
- se_admin-0.2.0/src/se_admin/observe/git.py +74 -0
- se_admin-0.2.0/src/se_admin/observe/github.py +80 -0
- se_admin-0.2.0/src/se_admin/observe/pyproject.py +52 -0
- se_admin-0.2.0/src/se_admin/observe/toml_files.py +54 -0
- se_admin-0.2.0/src/se_admin/observe/workflows.py +43 -0
- se_admin-0.2.0/src/se_admin/py.typed +0 -0
- se_admin-0.2.0/src/se_admin/reports/__init__.py +13 -0
- se_admin-0.2.0/src/se_admin/reports/json_report.py +62 -0
- se_admin-0.2.0/src/se_admin/reports/markdown.py +78 -0
- se_admin-0.2.0/src/se_admin/reports/summary.py +56 -0
- se_admin-0.2.0/src/se_admin/utils/__init__.py +1 -0
- se_admin-0.2.0/src/se_admin/utils/paths.py +41 -0
- se_admin-0.2.0/src/se_admin/utils/subprocesses.py +23 -0
- se_admin-0.2.0/src/se_admin/utils/text.py +55 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/data/profiles.toml +46 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/data/repos.toml +60 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/data/tasks/add_zensical.toml +40 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/data/tasks/add_zensical_config.toml +20 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/data/tasks/add_zensical_dependencies.toml +12 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/data/tasks/add_zensical_workflows_replace.toml +27 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/data/tasks/normalize_core_files.toml +36 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/data/tasks/normalize_lychee_location.toml +18 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/data/tasks/pull_repo_sets.toml +17 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/data/tasks/remove_mkdocs_config.toml +13 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/data/tasks/remove_mkdocs_dependencies.toml +15 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/data/tasks/replace_mkdocs_with_zensical.toml +31 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/data/tasks/sync_dependabot_and_pull.toml +30 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-00-admin/.github/workflows/ci-python-zensical.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-00-admin/.github/workflows/deploy-zensical.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-00-admin/.github/workflows/links.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-00-admin/.markdownlint.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-00-admin/LICENSE +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-00-admin/README.md +3 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-00-admin/pyproject.toml +8 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-00-admin/zensical.toml +3 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-01-foundations/.github/workflows/ci-python-zensical.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-01-foundations/.github/workflows/deploy-zensical.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-01-foundations/.github/workflows/links.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-01-foundations/.markdownlint.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-01-foundations/LICENSE +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-01-foundations/README.md +3 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-01-foundations/pyproject.toml +8 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-01-foundations/zensical.toml +3 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-02-kafka/.github/workflows/ci-python-zensical.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-02-kafka/.github/workflows/deploy-zensical.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-02-kafka/.github/workflows/links.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-02-kafka/.markdownlint.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-02-kafka/LICENSE +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-02-kafka/README.md +3 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-02-kafka/pyproject.toml +8 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-02-kafka/zensical.toml +3 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-03-data/.github/workflows/ci-python-zensical.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-03-data/.github/workflows/deploy-zensical.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-03-data/.github/workflows/links.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-03-data/.markdownlint.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-03-data/LICENSE +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-03-data/README.md +3 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-03-data/pyproject.toml +8 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-03-data/zensical.toml +3 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-04-visualization/.github/workflows/ci-python-zensical.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-04-visualization/.github/workflows/deploy-zensical.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-04-visualization/.github/workflows/links.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-04-visualization/.markdownlint.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-04-visualization/LICENSE +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-04-visualization/README.md +3 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-04-visualization/pyproject.toml +8 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-04-visualization/zensical.toml +3 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-05-storage/.github/workflows/ci-python-zensical.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-05-storage/.github/workflows/deploy-zensical.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-05-storage/.github/workflows/links.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-05-storage/.markdownlint.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-05-storage/LICENSE +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-05-storage/README.md +3 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-05-storage/pyproject.toml +8 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-05-storage/zensical.toml +3 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-06-scenarios/.github/workflows/ci-python-zensical.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-06-scenarios/.github/workflows/deploy-zensical.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-06-scenarios/.github/workflows/links.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-06-scenarios/.markdownlint.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-06-scenarios/LICENSE +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-06-scenarios/README.md +3 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-06-scenarios/pyproject.toml +8 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-06-scenarios/zensical.toml +3 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-07-applied/.github/workflows/ci-python-zensical.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-07-applied/.github/workflows/deploy-zensical.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-07-applied/.github/workflows/links.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-07-applied/.markdownlint.yml +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-07-applied/LICENSE +0 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-07-applied/README.md +3 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-07-applied/pyproject.toml +8 -0
- se_admin-0.2.0/tests/fixtures/streaming-admin/workspace/streaming-07-applied/zensical.toml +3 -0
- se_admin-0.2.0/tests/test_cli.py +29 -0
- se_admin-0.2.0/tests/test_config_loader.py +186 -0
- se_admin-0.2.0/tests/test_profiles.py +178 -0
- se_admin-0.2.0/tests/test_reports.py +143 -0
- se_admin-0.2.0/tests/test_required_paths.py +110 -0
- se_admin-0.2.0/zensical.toml +45 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# ============================================================
|
|
2
|
+
# .gitignore (Keep unnecessary files out of the repository)
|
|
3
|
+
# ============================================================
|
|
4
|
+
# Updated 2026-05-06
|
|
5
|
+
|
|
6
|
+
# REQ.UNIVERSAL: All professional GitHub project repositories MUST include .gitignore.
|
|
7
|
+
# WHY: Prevent committing generated artifacts, local state, secrets, and OS-specific files.
|
|
8
|
+
|
|
9
|
+
# === Universal (all projects, all languages) ===
|
|
10
|
+
|
|
11
|
+
# WHY: Logs are useful during debugging and verification.
|
|
12
|
+
# ALT: Comment if logs must be inspected or validated.
|
|
13
|
+
*.log
|
|
14
|
+
logs/
|
|
15
|
+
PRIVATE_NOTES.md
|
|
16
|
+
PRIVATE-NOTES.md
|
|
17
|
+
|
|
18
|
+
# WHY: Temporary and swap files are machine-local noise and create meaningless diffs.
|
|
19
|
+
*.swo
|
|
20
|
+
*.swp
|
|
21
|
+
*.tmp
|
|
22
|
+
*~
|
|
23
|
+
|
|
24
|
+
# === VS Code (special case) ===
|
|
25
|
+
|
|
26
|
+
# WHY: Ignore editor state while allowing a shared baseline configuration.
|
|
27
|
+
.vscode/
|
|
28
|
+
|
|
29
|
+
# WHY: Commit recommended extensions (opt-in) for consistent development experience.
|
|
30
|
+
# NOTE: Share recommendations, not personal editor styles or preferences.
|
|
31
|
+
# Must reinclude directory first so Git will traverse
|
|
32
|
+
!.vscode/
|
|
33
|
+
!.vscode/extensions.json
|
|
34
|
+
!.vscode/settings.json
|
|
35
|
+
|
|
36
|
+
# === OS-specific files (macOS / Windows) ===
|
|
37
|
+
|
|
38
|
+
# WHY: OS-generated metadata files should never be tracked.
|
|
39
|
+
.AppleDouble
|
|
40
|
+
.DS_Store
|
|
41
|
+
.LSOverride
|
|
42
|
+
Icon\r
|
|
43
|
+
._*
|
|
44
|
+
.Spotlight-V100/
|
|
45
|
+
.Trashes
|
|
46
|
+
desktop.ini
|
|
47
|
+
ehthumbs.db
|
|
48
|
+
Thumbs.db
|
|
49
|
+
|
|
50
|
+
# === Editors / IDEs (non-VS Code) ===
|
|
51
|
+
|
|
52
|
+
# WHY: IDE metadata is machine-local and should not be tracked.
|
|
53
|
+
*.code-workspace
|
|
54
|
+
.idea/
|
|
55
|
+
|
|
56
|
+
# === Environment variables and secrets ===
|
|
57
|
+
|
|
58
|
+
# WHY: Never commit credentials or environment-specific configuration.
|
|
59
|
+
.env
|
|
60
|
+
.env.*
|
|
61
|
+
*.env
|
|
62
|
+
|
|
63
|
+
# === Documentation build output ===
|
|
64
|
+
|
|
65
|
+
# WHY: Static site build output is generated.
|
|
66
|
+
site/
|
|
67
|
+
|
|
68
|
+
# === Generic caches ===
|
|
69
|
+
|
|
70
|
+
# WHY: Generic caches are machine-local and should not be tracked.
|
|
71
|
+
.cache/
|
|
72
|
+
|
|
73
|
+
# === Python ===
|
|
74
|
+
|
|
75
|
+
# WHY: Virtual environments are machine-local and reproducible.
|
|
76
|
+
.venv/
|
|
77
|
+
venv/
|
|
78
|
+
|
|
79
|
+
# REQ.PYTHON: Do NOT git ignore uv.lock. Commit it and use it in CI/CD pipelines.
|
|
80
|
+
|
|
81
|
+
# WHY: Python version when using scm matches any repo depth and any package name
|
|
82
|
+
**/src/**/_version.py
|
|
83
|
+
|
|
84
|
+
# WHY: Python bytecode is generated.
|
|
85
|
+
__pycache__/
|
|
86
|
+
*.pyc
|
|
87
|
+
*.pyd
|
|
88
|
+
*.pyo
|
|
89
|
+
|
|
90
|
+
# WHY: Build and packaging artifacts are generated.
|
|
91
|
+
.eggs/
|
|
92
|
+
build/
|
|
93
|
+
dist/
|
|
94
|
+
*.egg
|
|
95
|
+
*.egg-info/
|
|
96
|
+
*.whl
|
|
97
|
+
|
|
98
|
+
# WHY: Tooling caches should not be tracked.
|
|
99
|
+
.coverage
|
|
100
|
+
.coverage.*
|
|
101
|
+
.mypy_cache/
|
|
102
|
+
.pytest_cache/
|
|
103
|
+
.pytype/
|
|
104
|
+
.ruff_cache/
|
|
105
|
+
.tox/
|
|
106
|
+
|
|
107
|
+
# WHY: Notebook checkpoint state is generated.
|
|
108
|
+
.ipynb_checkpoints/
|
|
109
|
+
|
|
110
|
+
# WHY: Local test and coverage reports are generated.
|
|
111
|
+
htmlcov/
|
|
112
|
+
coverage.xml
|
|
113
|
+
|
|
114
|
+
# WHY: Nox is common in Python tooling
|
|
115
|
+
.nox/
|
|
116
|
+
|
|
117
|
+
# === JS / docs tooling ===
|
|
118
|
+
|
|
119
|
+
node_modules/
|
|
120
|
+
out/
|
|
121
|
+
|
|
122
|
+
# === Lean ===
|
|
123
|
+
|
|
124
|
+
# WHY: Lake build and dependency state is generated.
|
|
125
|
+
.lake/
|
|
126
|
+
lake-packages/
|
se_admin-0.2.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Structural Explainability
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
se_admin-0.2.0/PKG-INFO
ADDED
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: se-admin
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Project-URL: Homepage, https://github.com/structural-explainability/se-admin
|
|
5
|
+
Project-URL: Repository, https://github.com/structural-explainability/se-admin
|
|
6
|
+
Project-URL: Documentation, https://structural-explainability.github.io/se-admin/
|
|
7
|
+
Project-URL: Issues, https://github.com/structural-explainability/se-admin/issues
|
|
8
|
+
Project-URL: Changelog, https://github.com/structural-explainability/se-admin/blob/main/CHANGELOG.md
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Requires-Python: >=3.15
|
|
11
|
+
Requires-Dist: se-manifest-schema
|
|
12
|
+
Requires-Dist: tomlkit
|
|
13
|
+
Provides-Extra: dev
|
|
14
|
+
Requires-Dist: build; extra == 'dev'
|
|
15
|
+
Requires-Dist: packaging; extra == 'dev'
|
|
16
|
+
Requires-Dist: pre-commit; extra == 'dev'
|
|
17
|
+
Requires-Dist: pyright; extra == 'dev'
|
|
18
|
+
Requires-Dist: pytest; extra == 'dev'
|
|
19
|
+
Requires-Dist: pytest-cov; extra == 'dev'
|
|
20
|
+
Requires-Dist: ruff; extra == 'dev'
|
|
21
|
+
Requires-Dist: twine; extra == 'dev'
|
|
22
|
+
Provides-Extra: docs
|
|
23
|
+
Requires-Dist: zensical==0.0.37; extra == 'docs'
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
|
|
26
|
+
# se-admin
|
|
27
|
+
|
|
28
|
+
[](https://structural-explainability.github.io/se-admin/)
|
|
29
|
+
[](https://github.com/structural-explainability/se-admin)
|
|
30
|
+
[](./pyproject.toml)
|
|
31
|
+
[](./LICENSE)
|
|
32
|
+
|
|
33
|
+
[](https://github.com/structural-explainability/se-admin/actions/workflows/ci-python-zensical.yml)
|
|
34
|
+
[](https://github.com/structural-explainability/se-admin/actions/workflows/deploy-zensical.yml)
|
|
35
|
+
[](https://github.com/structural-explainability/se-admin/actions/workflows/links.yml)
|
|
36
|
+
|
|
37
|
+
> Structural Explainability Admin:
|
|
38
|
+
> administration of the SE ecosystem.
|
|
39
|
+
|
|
40
|
+
SE Admin is a data-driven system that applies composable operations
|
|
41
|
+
over repository surfaces
|
|
42
|
+
with declarative targets and selectable scope
|
|
43
|
+
to move repos between states.
|
|
44
|
+
|
|
45
|
+
## Owns
|
|
46
|
+
|
|
47
|
+
- enforcement of constitution (automation)
|
|
48
|
+
- repository lifecycle operations
|
|
49
|
+
- cross-repository consistency
|
|
50
|
+
|
|
51
|
+
## Includes
|
|
52
|
+
|
|
53
|
+
scaffolding
|
|
54
|
+
|
|
55
|
+
- repository templates
|
|
56
|
+
|
|
57
|
+
synchronization
|
|
58
|
+
|
|
59
|
+
- configuration propagation
|
|
60
|
+
|
|
61
|
+
validation orchestration
|
|
62
|
+
|
|
63
|
+
- multi-repo validation execution
|
|
64
|
+
|
|
65
|
+
workflow reuse
|
|
66
|
+
|
|
67
|
+
- shared GitHub Actions
|
|
68
|
+
|
|
69
|
+
bulk operations
|
|
70
|
+
|
|
71
|
+
- dependency upgrades
|
|
72
|
+
- structural updates
|
|
73
|
+
|
|
74
|
+
## Overview
|
|
75
|
+
|
|
76
|
+
```text
|
|
77
|
+
data/ = declared desired state, no logic, only declarations
|
|
78
|
+
observe/ = actual repo state, no decisions, only facts
|
|
79
|
+
checks/ = pure comparison, no side effects
|
|
80
|
+
actions/ = primitive mutations
|
|
81
|
+
migrations/ = composed actions
|
|
82
|
+
reports/ = human/machine output projections only
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
```text
|
|
86
|
+
domain/
|
|
87
|
+
repo - repository
|
|
88
|
+
profile = named bundle of expectations (paths, workflows, checks)
|
|
89
|
+
selector = how you choose repos (set, name, pattern)
|
|
90
|
+
finding = result of a check
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
```text
|
|
94
|
+
repos.toml = instances: which repos exist, repo sets, assigned profiles
|
|
95
|
+
profiles.toml = reusable traits: profile definitions
|
|
96
|
+
checks.toml = constraints: check definitions and canonical comparisons
|
|
97
|
+
migrations.toml = transformations: named migration recipes
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
```text
|
|
101
|
+
data (declared) -> observe (actual) -> checks (compare) -> actions/migrations -> reports
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Operation Requirements
|
|
105
|
+
|
|
106
|
+
Data describes operations and a small interpreter executing them
|
|
107
|
+
|
|
108
|
+
All operations must be:
|
|
109
|
+
|
|
110
|
+
- deterministic
|
|
111
|
+
- idempotent
|
|
112
|
+
- side-effect scoped
|
|
113
|
+
|
|
114
|
+
Examples:
|
|
115
|
+
|
|
116
|
+
- delete_file is OK if missing
|
|
117
|
+
- add_dependency is OK if already present
|
|
118
|
+
- replace_text is no-op if not found
|
|
119
|
+
|
|
120
|
+
## Operation Taxonomy
|
|
121
|
+
|
|
122
|
+
### Detection (no side effects)
|
|
123
|
+
|
|
124
|
+
- path_exists
|
|
125
|
+
- path_missing
|
|
126
|
+
- toml_key_exists
|
|
127
|
+
- toml_value_equals
|
|
128
|
+
- dependency_present
|
|
129
|
+
- workflow_present
|
|
130
|
+
|
|
131
|
+
### Mutation (single responsibility)
|
|
132
|
+
|
|
133
|
+
Filesystem
|
|
134
|
+
|
|
135
|
+
- create_file
|
|
136
|
+
- delete_file
|
|
137
|
+
- copy_file
|
|
138
|
+
- ensure_directory
|
|
139
|
+
- rename_path
|
|
140
|
+
TOML
|
|
141
|
+
- toml_set_key
|
|
142
|
+
- toml_remove_key
|
|
143
|
+
- toml_add_dependency
|
|
144
|
+
- toml_remove_dependency
|
|
145
|
+
- toml_ensure_table
|
|
146
|
+
Workflows (still files, but special intent)
|
|
147
|
+
- ensure_workflow
|
|
148
|
+
- remove_workflow
|
|
149
|
+
- replace_workflow
|
|
150
|
+
Text
|
|
151
|
+
- replace_block
|
|
152
|
+
- insert_block
|
|
153
|
+
- remove_block
|
|
154
|
+
Process
|
|
155
|
+
- run_command
|
|
156
|
+
|
|
157
|
+
## Composition
|
|
158
|
+
|
|
159
|
+
```text
|
|
160
|
+
Operation =
|
|
161
|
+
AtomicOperation
|
|
162
|
+
| Sequence[Operation]
|
|
163
|
+
| Conditional(condition, Operation)
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Example
|
|
167
|
+
|
|
168
|
+
A tool transition is a declarative description of how to
|
|
169
|
+
remove one capability and establish another across all affected surfaces.
|
|
170
|
+
|
|
171
|
+
```text
|
|
172
|
+
Sequence(
|
|
173
|
+
Conditional(detect_mkdocs, Sequence(
|
|
174
|
+
delete_file("mkdocs.yml"),
|
|
175
|
+
toml_remove_dependency("mkdocs"),
|
|
176
|
+
remove_workflow("deploy-mkdocs.yml")
|
|
177
|
+
)),
|
|
178
|
+
|
|
179
|
+
Sequence(
|
|
180
|
+
create_file("zensical.toml"),
|
|
181
|
+
toml_add_dependency(group="docs", name="zensical"),
|
|
182
|
+
ensure_workflow("deploy-zensical.yml"),
|
|
183
|
+
ensure_directory("docs")
|
|
184
|
+
)
|
|
185
|
+
)
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## Command Reference
|
|
189
|
+
|
|
190
|
+
<details>
|
|
191
|
+
<summary>Show command reference</summary>
|
|
192
|
+
|
|
193
|
+
### In a machine terminal
|
|
194
|
+
|
|
195
|
+
Open a machine terminal where you want the project:
|
|
196
|
+
|
|
197
|
+
```shell
|
|
198
|
+
git clone https://github.com/structural-explainability/se-admin
|
|
199
|
+
|
|
200
|
+
cd se-admin
|
|
201
|
+
code .
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### In a VS Code terminal
|
|
205
|
+
|
|
206
|
+
```shell
|
|
207
|
+
# if strange errors, clean uv cache
|
|
208
|
+
# uv cache clean
|
|
209
|
+
|
|
210
|
+
uv self update
|
|
211
|
+
uv python pin 3.15
|
|
212
|
+
uv sync --extra dev --extra docs --upgrade
|
|
213
|
+
|
|
214
|
+
uvx pre-commit install
|
|
215
|
+
|
|
216
|
+
git add -A
|
|
217
|
+
uvx pre-commit run --all-files
|
|
218
|
+
# repeat if changes were made
|
|
219
|
+
git add -A
|
|
220
|
+
uvx pre-commit run --all-files
|
|
221
|
+
|
|
222
|
+
# run the module
|
|
223
|
+
uv run python -m se_admin show
|
|
224
|
+
|
|
225
|
+
# do chores
|
|
226
|
+
uv run python -m pyright
|
|
227
|
+
uv run python -m pytest
|
|
228
|
+
uv run python -m zensical build
|
|
229
|
+
|
|
230
|
+
# save progress
|
|
231
|
+
git add -A
|
|
232
|
+
git commit -m "update"
|
|
233
|
+
git push -u origin main
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
Portability fixture checks verifying that `se-admin`
|
|
237
|
+
can load and operate on a non-SE repository family
|
|
238
|
+
using an alternate data root.
|
|
239
|
+
|
|
240
|
+
```shell
|
|
241
|
+
uv run python -m se_admin --data tests/fixtures/streaming-admin/data repos
|
|
242
|
+
uv run python -m se_admin --data tests/fixtures/streaming-admin/data check --set modules
|
|
243
|
+
uv run python -m se_admin --data tests/fixtures/streaming-admin/data check --set admin
|
|
244
|
+
uv run python -m se_admin --data tests/fixtures/streaming-admin/data run --dry-run normalize_core_files
|
|
245
|
+
|
|
246
|
+
</details>
|
|
247
|
+
|
|
248
|
+
## Citation
|
|
249
|
+
|
|
250
|
+
[CITATION.cff](./CITATION.cff)
|
|
251
|
+
|
|
252
|
+
## License
|
|
253
|
+
|
|
254
|
+
[LICENSE](./LICENSE)
|
|
255
|
+
|
|
256
|
+
## Manifest
|
|
257
|
+
|
|
258
|
+
[SE_MANIFEST.toml](./SE_MANIFEST.toml)
|
se_admin-0.2.0/README.md
ADDED
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
# se-admin
|
|
2
|
+
|
|
3
|
+
[](https://structural-explainability.github.io/se-admin/)
|
|
4
|
+
[](https://github.com/structural-explainability/se-admin)
|
|
5
|
+
[](./pyproject.toml)
|
|
6
|
+
[](./LICENSE)
|
|
7
|
+
|
|
8
|
+
[](https://github.com/structural-explainability/se-admin/actions/workflows/ci-python-zensical.yml)
|
|
9
|
+
[](https://github.com/structural-explainability/se-admin/actions/workflows/deploy-zensical.yml)
|
|
10
|
+
[](https://github.com/structural-explainability/se-admin/actions/workflows/links.yml)
|
|
11
|
+
|
|
12
|
+
> Structural Explainability Admin:
|
|
13
|
+
> administration of the SE ecosystem.
|
|
14
|
+
|
|
15
|
+
SE Admin is a data-driven system that applies composable operations
|
|
16
|
+
over repository surfaces
|
|
17
|
+
with declarative targets and selectable scope
|
|
18
|
+
to move repos between states.
|
|
19
|
+
|
|
20
|
+
## Owns
|
|
21
|
+
|
|
22
|
+
- enforcement of constitution (automation)
|
|
23
|
+
- repository lifecycle operations
|
|
24
|
+
- cross-repository consistency
|
|
25
|
+
|
|
26
|
+
## Includes
|
|
27
|
+
|
|
28
|
+
scaffolding
|
|
29
|
+
|
|
30
|
+
- repository templates
|
|
31
|
+
|
|
32
|
+
synchronization
|
|
33
|
+
|
|
34
|
+
- configuration propagation
|
|
35
|
+
|
|
36
|
+
validation orchestration
|
|
37
|
+
|
|
38
|
+
- multi-repo validation execution
|
|
39
|
+
|
|
40
|
+
workflow reuse
|
|
41
|
+
|
|
42
|
+
- shared GitHub Actions
|
|
43
|
+
|
|
44
|
+
bulk operations
|
|
45
|
+
|
|
46
|
+
- dependency upgrades
|
|
47
|
+
- structural updates
|
|
48
|
+
|
|
49
|
+
## Overview
|
|
50
|
+
|
|
51
|
+
```text
|
|
52
|
+
data/ = declared desired state, no logic, only declarations
|
|
53
|
+
observe/ = actual repo state, no decisions, only facts
|
|
54
|
+
checks/ = pure comparison, no side effects
|
|
55
|
+
actions/ = primitive mutations
|
|
56
|
+
migrations/ = composed actions
|
|
57
|
+
reports/ = human/machine output projections only
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
```text
|
|
61
|
+
domain/
|
|
62
|
+
repo - repository
|
|
63
|
+
profile = named bundle of expectations (paths, workflows, checks)
|
|
64
|
+
selector = how you choose repos (set, name, pattern)
|
|
65
|
+
finding = result of a check
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
```text
|
|
69
|
+
repos.toml = instances: which repos exist, repo sets, assigned profiles
|
|
70
|
+
profiles.toml = reusable traits: profile definitions
|
|
71
|
+
checks.toml = constraints: check definitions and canonical comparisons
|
|
72
|
+
migrations.toml = transformations: named migration recipes
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
```text
|
|
76
|
+
data (declared) -> observe (actual) -> checks (compare) -> actions/migrations -> reports
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Operation Requirements
|
|
80
|
+
|
|
81
|
+
Data describes operations and a small interpreter executing them
|
|
82
|
+
|
|
83
|
+
All operations must be:
|
|
84
|
+
|
|
85
|
+
- deterministic
|
|
86
|
+
- idempotent
|
|
87
|
+
- side-effect scoped
|
|
88
|
+
|
|
89
|
+
Examples:
|
|
90
|
+
|
|
91
|
+
- delete_file is OK if missing
|
|
92
|
+
- add_dependency is OK if already present
|
|
93
|
+
- replace_text is no-op if not found
|
|
94
|
+
|
|
95
|
+
## Operation Taxonomy
|
|
96
|
+
|
|
97
|
+
### Detection (no side effects)
|
|
98
|
+
|
|
99
|
+
- path_exists
|
|
100
|
+
- path_missing
|
|
101
|
+
- toml_key_exists
|
|
102
|
+
- toml_value_equals
|
|
103
|
+
- dependency_present
|
|
104
|
+
- workflow_present
|
|
105
|
+
|
|
106
|
+
### Mutation (single responsibility)
|
|
107
|
+
|
|
108
|
+
Filesystem
|
|
109
|
+
|
|
110
|
+
- create_file
|
|
111
|
+
- delete_file
|
|
112
|
+
- copy_file
|
|
113
|
+
- ensure_directory
|
|
114
|
+
- rename_path
|
|
115
|
+
TOML
|
|
116
|
+
- toml_set_key
|
|
117
|
+
- toml_remove_key
|
|
118
|
+
- toml_add_dependency
|
|
119
|
+
- toml_remove_dependency
|
|
120
|
+
- toml_ensure_table
|
|
121
|
+
Workflows (still files, but special intent)
|
|
122
|
+
- ensure_workflow
|
|
123
|
+
- remove_workflow
|
|
124
|
+
- replace_workflow
|
|
125
|
+
Text
|
|
126
|
+
- replace_block
|
|
127
|
+
- insert_block
|
|
128
|
+
- remove_block
|
|
129
|
+
Process
|
|
130
|
+
- run_command
|
|
131
|
+
|
|
132
|
+
## Composition
|
|
133
|
+
|
|
134
|
+
```text
|
|
135
|
+
Operation =
|
|
136
|
+
AtomicOperation
|
|
137
|
+
| Sequence[Operation]
|
|
138
|
+
| Conditional(condition, Operation)
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Example
|
|
142
|
+
|
|
143
|
+
A tool transition is a declarative description of how to
|
|
144
|
+
remove one capability and establish another across all affected surfaces.
|
|
145
|
+
|
|
146
|
+
```text
|
|
147
|
+
Sequence(
|
|
148
|
+
Conditional(detect_mkdocs, Sequence(
|
|
149
|
+
delete_file("mkdocs.yml"),
|
|
150
|
+
toml_remove_dependency("mkdocs"),
|
|
151
|
+
remove_workflow("deploy-mkdocs.yml")
|
|
152
|
+
)),
|
|
153
|
+
|
|
154
|
+
Sequence(
|
|
155
|
+
create_file("zensical.toml"),
|
|
156
|
+
toml_add_dependency(group="docs", name="zensical"),
|
|
157
|
+
ensure_workflow("deploy-zensical.yml"),
|
|
158
|
+
ensure_directory("docs")
|
|
159
|
+
)
|
|
160
|
+
)
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Command Reference
|
|
164
|
+
|
|
165
|
+
<details>
|
|
166
|
+
<summary>Show command reference</summary>
|
|
167
|
+
|
|
168
|
+
### In a machine terminal
|
|
169
|
+
|
|
170
|
+
Open a machine terminal where you want the project:
|
|
171
|
+
|
|
172
|
+
```shell
|
|
173
|
+
git clone https://github.com/structural-explainability/se-admin
|
|
174
|
+
|
|
175
|
+
cd se-admin
|
|
176
|
+
code .
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### In a VS Code terminal
|
|
180
|
+
|
|
181
|
+
```shell
|
|
182
|
+
# if strange errors, clean uv cache
|
|
183
|
+
# uv cache clean
|
|
184
|
+
|
|
185
|
+
uv self update
|
|
186
|
+
uv python pin 3.15
|
|
187
|
+
uv sync --extra dev --extra docs --upgrade
|
|
188
|
+
|
|
189
|
+
uvx pre-commit install
|
|
190
|
+
|
|
191
|
+
git add -A
|
|
192
|
+
uvx pre-commit run --all-files
|
|
193
|
+
# repeat if changes were made
|
|
194
|
+
git add -A
|
|
195
|
+
uvx pre-commit run --all-files
|
|
196
|
+
|
|
197
|
+
# run the module
|
|
198
|
+
uv run python -m se_admin show
|
|
199
|
+
|
|
200
|
+
# do chores
|
|
201
|
+
uv run python -m pyright
|
|
202
|
+
uv run python -m pytest
|
|
203
|
+
uv run python -m zensical build
|
|
204
|
+
|
|
205
|
+
# save progress
|
|
206
|
+
git add -A
|
|
207
|
+
git commit -m "update"
|
|
208
|
+
git push -u origin main
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
Portability fixture checks verifying that `se-admin`
|
|
212
|
+
can load and operate on a non-SE repository family
|
|
213
|
+
using an alternate data root.
|
|
214
|
+
|
|
215
|
+
```shell
|
|
216
|
+
uv run python -m se_admin --data tests/fixtures/streaming-admin/data repos
|
|
217
|
+
uv run python -m se_admin --data tests/fixtures/streaming-admin/data check --set modules
|
|
218
|
+
uv run python -m se_admin --data tests/fixtures/streaming-admin/data check --set admin
|
|
219
|
+
uv run python -m se_admin --data tests/fixtures/streaming-admin/data run --dry-run normalize_core_files
|
|
220
|
+
|
|
221
|
+
</details>
|
|
222
|
+
|
|
223
|
+
## Citation
|
|
224
|
+
|
|
225
|
+
[CITATION.cff](./CITATION.cff)
|
|
226
|
+
|
|
227
|
+
## License
|
|
228
|
+
|
|
229
|
+
[LICENSE](./LICENSE)
|
|
230
|
+
|
|
231
|
+
## Manifest
|
|
232
|
+
|
|
233
|
+
[SE_MANIFEST.toml](./SE_MANIFEST.toml)
|
|
File without changes
|
|
File without changes
|