kproj 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.
- kproj-0.1.0/.github/workflows/publish.yml +44 -0
- kproj-0.1.0/.github/workflows/semantic-release.yml +36 -0
- kproj-0.1.0/.github/workflows/test.yml +38 -0
- kproj-0.1.0/.gitignore +47 -0
- kproj-0.1.0/.pre-commit-config.yaml +22 -0
- kproj-0.1.0/.python-version +1 -0
- kproj-0.1.0/CHANGELOG.md +1329 -0
- kproj-0.1.0/LICENSE +21 -0
- kproj-0.1.0/PKG-INFO +91 -0
- kproj-0.1.0/README.md +63 -0
- kproj-0.1.0/docs/AGENT-HANDOFF.md +72 -0
- kproj-0.1.0/docs/DESIGN.md +863 -0
- kproj-0.1.0/docs/GLOSSARY.md +132 -0
- kproj-0.1.0/docs/PRD.md +282 -0
- kproj-0.1.0/docs/RFEs.md +24 -0
- kproj-0.1.0/docs/adr/0001-inherit-jbom-architectural-patterns.md +46 -0
- kproj-0.1.0/docs/adr/0002-jekyll-publisher-scope-a-b-split.md +54 -0
- kproj-0.1.0/docs/adr/0003-jbom-separation-read-not-invoke.md +69 -0
- kproj-0.1.0/docs/adr/0004-show-what-is-provided-audit-policy.md +60 -0
- kproj-0.1.0/docs/adr/0005-writetracker-transactional-site-writes.md +96 -0
- kproj-0.1.0/docs/adr/0006-library-shape-boundary-discipline.md +67 -0
- kproj-0.1.0/docs/adr/0007-local-cli-v1-ci-deferred.md +55 -0
- kproj-0.1.0/docs/adr/0008-ibom-direct-script-invocation.md +78 -0
- kproj-0.1.0/docs/adr/0009-kicad-install-locator.md +108 -0
- kproj-0.1.0/docs/adr/README.md +52 -0
- kproj-0.1.0/docs/phase-g-handoff.md +65 -0
- kproj-0.1.0/docs/phase1/analysis.json +192 -0
- kproj-0.1.0/docs/phase1/audit-rerun/audit.json +949 -0
- kproj-0.1.0/docs/phase1/audit-rerun/audit.py +237 -0
- kproj-0.1.0/docs/phase1/audit-rerun/findings.csv +51 -0
- kproj-0.1.0/docs/phase1/jbom-reuse-map.md +456 -0
- kproj-0.1.0/docs/phase1/kicad-metadata-survey.md +300 -0
- kproj-0.1.0/docs/phase1/site-platform-assessment.md +114 -0
- kproj-0.1.0/docs/phase1/survey.csv +35 -0
- kproj-0.1.0/docs/phase1/survey.json +672 -0
- kproj-0.1.0/docs/phase4-resolutions.md +92 -0
- kproj-0.1.0/docs/phase4-review.md +95 -0
- kproj-0.1.0/docs/wave3-review.md +155 -0
- kproj-0.1.0/pyproject.toml +147 -0
- kproj-0.1.0/src/kproj/__init__.py +4 -0
- kproj-0.1.0/src/kproj/__main__.py +8 -0
- kproj-0.1.0/src/kproj/application/__init__.py +22 -0
- kproj-0.1.0/src/kproj/application/publish_workflow.py +948 -0
- kproj-0.1.0/src/kproj/cli/__init__.py +8 -0
- kproj-0.1.0/src/kproj/cli/main.py +234 -0
- kproj-0.1.0/src/kproj/common/__init__.py +40 -0
- kproj-0.1.0/src/kproj/common/kicad_install.py +316 -0
- kproj-0.1.0/src/kproj/common/kicad_libraries.py +125 -0
- kproj-0.1.0/src/kproj/common/logging_setup.py +91 -0
- kproj-0.1.0/src/kproj/common/project_docs.py +114 -0
- kproj-0.1.0/src/kproj/common/subprocess_runner.py +239 -0
- kproj-0.1.0/src/kproj/config.py +382 -0
- kproj-0.1.0/src/kproj/formatters/__init__.py +18 -0
- kproj-0.1.0/src/kproj/formatters/front_matter_summary_formatter.py +250 -0
- kproj-0.1.0/src/kproj/formatters/markdown_table_formatter.py +157 -0
- kproj-0.1.0/src/kproj/formatters/stderr_formatter.py +72 -0
- kproj-0.1.0/src/kproj/model/__init__.py +40 -0
- kproj-0.1.0/src/kproj/model/analysis_info.py +77 -0
- kproj-0.1.0/src/kproj/model/export_result.py +37 -0
- kproj-0.1.0/src/kproj/model/finding.py +51 -0
- kproj-0.1.0/src/kproj/model/library_ref.py +48 -0
- kproj-0.1.0/src/kproj/model/project_info.py +83 -0
- kproj-0.1.0/src/kproj/model/publication.py +99 -0
- kproj-0.1.0/src/kproj/model/publish_request.py +37 -0
- kproj-0.1.0/src/kproj/model/publish_result.py +130 -0
- kproj-0.1.0/src/kproj/model/raw_title_block.py +63 -0
- kproj-0.1.0/src/kproj/model/resolved_project.py +71 -0
- kproj-0.1.0/src/kproj/model/severity.py +41 -0
- kproj-0.1.0/src/kproj/services/__init__.py +36 -0
- kproj-0.1.0/src/kproj/services/change_journal.py +219 -0
- kproj-0.1.0/src/kproj/services/design_analyzer.py +397 -0
- kproj-0.1.0/src/kproj/services/fab_packager.py +313 -0
- kproj-0.1.0/src/kproj/services/ibom_generator.py +167 -0
- kproj-0.1.0/src/kproj/services/kicad_project_reader.py +418 -0
- kproj-0.1.0/src/kproj/services/metadata_analyzer.py +398 -0
- kproj-0.1.0/src/kproj/services/pcb_exporter.py +207 -0
- kproj-0.1.0/src/kproj/services/schematic_exporter.py +239 -0
- kproj-0.1.0/src/kproj/services/site_publisher.py +428 -0
- kproj-0.1.0/src/kproj/services/source_packager.py +230 -0
- kproj-0.1.0/src/kproj/services/thumbnail_generator.py +92 -0
- kproj-0.1.0/src/kproj/services/zip_archiver.py +107 -0
- kproj-0.1.0/templates/Makefile.kicad +67 -0
- kproj-0.1.0/tests/__init__.py +0 -0
- kproj-0.1.0/tests/_kicad_fixtures.py +111 -0
- kproj-0.1.0/tests/contract/__init__.py +0 -0
- kproj-0.1.0/tests/contract/test_ibom_generator.py +72 -0
- kproj-0.1.0/tests/contract/test_kicad_cli_drc.py +183 -0
- kproj-0.1.0/tests/contract/test_kicad_cli_erc.py +145 -0
- kproj-0.1.0/tests/contract/test_kicad_install_locator.py +96 -0
- kproj-0.1.0/tests/contract/test_pcb_exporter.py +62 -0
- kproj-0.1.0/tests/contract/test_schematic_exporter.py +54 -0
- kproj-0.1.0/tests/features/batch_safety.feature +30 -0
- kproj-0.1.0/tests/features/drc_erc_mechanical_failure.feature +34 -0
- kproj-0.1.0/tests/features/dry_run.feature +10 -0
- kproj-0.1.0/tests/features/findings_surfaced.feature +19 -0
- kproj-0.1.0/tests/features/preflight.feature +14 -0
- kproj-0.1.0/tests/features/private_status.feature +15 -0
- kproj-0.1.0/tests/features/project_resolution.feature +22 -0
- kproj-0.1.0/tests/features/publish.feature +24 -0
- kproj-0.1.0/tests/features/site_repo_cleanliness.feature +13 -0
- kproj-0.1.0/tests/features/steps/preflight_steps.py +54 -0
- kproj-0.1.0/tests/features/steps/private_status_steps.py +110 -0
- kproj-0.1.0/tests/features/steps/publish_steps.py +620 -0
- kproj-0.1.0/tests/features/verbose.feature +19 -0
- kproj-0.1.0/tests/fixtures/minimal/minimal.kicad_pcb +53 -0
- kproj-0.1.0/tests/fixtures/minimal/minimal.kicad_sch +19 -0
- kproj-0.1.0/tests/unit/__init__.py +0 -0
- kproj-0.1.0/tests/unit/application/__init__.py +0 -0
- kproj-0.1.0/tests/unit/application/test_publication_assembly.py +142 -0
- kproj-0.1.0/tests/unit/application/test_publish_workflow.py +1009 -0
- kproj-0.1.0/tests/unit/common/__init__.py +0 -0
- kproj-0.1.0/tests/unit/common/test_kicad_install.py +370 -0
- kproj-0.1.0/tests/unit/common/test_kicad_libraries.py +227 -0
- kproj-0.1.0/tests/unit/common/test_logging_setup.py +86 -0
- kproj-0.1.0/tests/unit/common/test_project_docs.py +139 -0
- kproj-0.1.0/tests/unit/common/test_subprocess_runner.py +146 -0
- kproj-0.1.0/tests/unit/formatters/__init__.py +0 -0
- kproj-0.1.0/tests/unit/formatters/test_front_matter_summary_formatter.py +418 -0
- kproj-0.1.0/tests/unit/formatters/test_markdown_table_formatter.py +159 -0
- kproj-0.1.0/tests/unit/formatters/test_stderr_formatter.py +123 -0
- kproj-0.1.0/tests/unit/formatters/test_stubs.py +34 -0
- kproj-0.1.0/tests/unit/model/__init__.py +0 -0
- kproj-0.1.0/tests/unit/model/test_analysis_info.py +57 -0
- kproj-0.1.0/tests/unit/model/test_export_result.py +42 -0
- kproj-0.1.0/tests/unit/model/test_finding.py +58 -0
- kproj-0.1.0/tests/unit/model/test_library_ref.py +36 -0
- kproj-0.1.0/tests/unit/model/test_project_info.py +62 -0
- kproj-0.1.0/tests/unit/model/test_publication.py +54 -0
- kproj-0.1.0/tests/unit/model/test_resolved_project.py +45 -0
- kproj-0.1.0/tests/unit/model/test_severity.py +30 -0
- kproj-0.1.0/tests/unit/services/__init__.py +0 -0
- kproj-0.1.0/tests/unit/services/test_change_journal.py +233 -0
- kproj-0.1.0/tests/unit/services/test_design_analyzer.py +388 -0
- kproj-0.1.0/tests/unit/services/test_fab_packager.py +403 -0
- kproj-0.1.0/tests/unit/services/test_ibom_generator.py +248 -0
- kproj-0.1.0/tests/unit/services/test_kicad_project_reader.py +342 -0
- kproj-0.1.0/tests/unit/services/test_metadata_analyzer.py +463 -0
- kproj-0.1.0/tests/unit/services/test_pcb_exporter.py +283 -0
- kproj-0.1.0/tests/unit/services/test_schematic_exporter.py +285 -0
- kproj-0.1.0/tests/unit/services/test_site_publisher.py +356 -0
- kproj-0.1.0/tests/unit/services/test_source_packager.py +121 -0
- kproj-0.1.0/tests/unit/services/test_stubs.py +56 -0
- kproj-0.1.0/tests/unit/services/test_thumbnail_generator.py +67 -0
- kproj-0.1.0/tests/unit/services/test_zip_archiver.py +94 -0
- kproj-0.1.0/tests/unit/test_cli.py +292 -0
- kproj-0.1.0/tests/unit/test_config.py +285 -0
- kproj-0.1.0/uv.lock +618 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
name: Build and Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
build:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
env:
|
|
11
|
+
PYTHONPATH: src
|
|
12
|
+
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v4
|
|
15
|
+
|
|
16
|
+
- name: Set up Python
|
|
17
|
+
uses: actions/setup-python@v5
|
|
18
|
+
with:
|
|
19
|
+
# Match the floor declared by pyproject.toml (requires-python = ">=3.11").
|
|
20
|
+
python-version: "3.11"
|
|
21
|
+
|
|
22
|
+
- name: Install build and test dependencies
|
|
23
|
+
run: |
|
|
24
|
+
python -m pip install --upgrade pip
|
|
25
|
+
pip install -e .[dev]
|
|
26
|
+
pip install build twine
|
|
27
|
+
|
|
28
|
+
- name: Run tests
|
|
29
|
+
run: |
|
|
30
|
+
python -m pytest
|
|
31
|
+
python -m behave --format progress tests/features
|
|
32
|
+
|
|
33
|
+
- name: Build distribution
|
|
34
|
+
run: |
|
|
35
|
+
python -m build
|
|
36
|
+
|
|
37
|
+
- name: Check distribution
|
|
38
|
+
run: |
|
|
39
|
+
python -m twine check dist/*
|
|
40
|
+
|
|
41
|
+
- name: Publish to PyPI
|
|
42
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
43
|
+
with:
|
|
44
|
+
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
name: Semantic Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: write
|
|
9
|
+
pull-requests: write
|
|
10
|
+
id-token: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
release:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
concurrency: release
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v4
|
|
19
|
+
with:
|
|
20
|
+
fetch-depth: 0
|
|
21
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
22
|
+
- name: Set up Python
|
|
23
|
+
uses: actions/setup-python@v5
|
|
24
|
+
with:
|
|
25
|
+
python-version: "3.11"
|
|
26
|
+
- name: Install python-semantic-release
|
|
27
|
+
run: |
|
|
28
|
+
python -m pip install --upgrade pip
|
|
29
|
+
pip install python-semantic-release==9.12.0
|
|
30
|
+
- name: Python Semantic Release
|
|
31
|
+
env:
|
|
32
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
33
|
+
run: |
|
|
34
|
+
git config user.name "github-actions"
|
|
35
|
+
git config user.email "github-actions@github.com"
|
|
36
|
+
semantic-release version
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
name: Tests
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
branches: [main]
|
|
5
|
+
pull_request:
|
|
6
|
+
branches: [main]
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
jobs:
|
|
9
|
+
tests:
|
|
10
|
+
name: Tests (py3.11)
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
env:
|
|
13
|
+
PYTHONPATH: src
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v4
|
|
16
|
+
with:
|
|
17
|
+
fetch-depth: 0
|
|
18
|
+
- name: Set up Python 3.11
|
|
19
|
+
uses: actions/setup-python@v5
|
|
20
|
+
with:
|
|
21
|
+
python-version: "3.11"
|
|
22
|
+
- name: Install dependencies
|
|
23
|
+
run: |
|
|
24
|
+
python -m pip install --upgrade pip
|
|
25
|
+
pip install -e .[dev]
|
|
26
|
+
- name: Ruff
|
|
27
|
+
run: |
|
|
28
|
+
ruff check src tests
|
|
29
|
+
ruff format --check src tests
|
|
30
|
+
- name: Mypy
|
|
31
|
+
run: |
|
|
32
|
+
mypy src
|
|
33
|
+
- name: Pytest
|
|
34
|
+
run: |
|
|
35
|
+
python -m pytest
|
|
36
|
+
- name: Behave
|
|
37
|
+
run: |
|
|
38
|
+
python -m behave --format progress tests/features
|
kproj-0.1.0/.gitignore
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
*.egg-info/
|
|
6
|
+
*.egg
|
|
7
|
+
.eggs/
|
|
8
|
+
build/
|
|
9
|
+
dist/
|
|
10
|
+
.installed.cfg
|
|
11
|
+
MANIFEST
|
|
12
|
+
|
|
13
|
+
# Virtual environments
|
|
14
|
+
.venv/
|
|
15
|
+
venv/
|
|
16
|
+
env/
|
|
17
|
+
|
|
18
|
+
# uv (commit uv.lock for application/dev reproducibility; only cache excluded)
|
|
19
|
+
.uv-cache/
|
|
20
|
+
|
|
21
|
+
# Testing
|
|
22
|
+
.coverage
|
|
23
|
+
.coverage.*
|
|
24
|
+
.pytest_cache/
|
|
25
|
+
htmlcov/
|
|
26
|
+
.tox/
|
|
27
|
+
.cache
|
|
28
|
+
|
|
29
|
+
# Type checkers
|
|
30
|
+
.mypy_cache/
|
|
31
|
+
.pyre/
|
|
32
|
+
.pytype/
|
|
33
|
+
|
|
34
|
+
# IDE
|
|
35
|
+
.vscode/
|
|
36
|
+
.idea/
|
|
37
|
+
*.swp
|
|
38
|
+
*.swo
|
|
39
|
+
|
|
40
|
+
# macOS
|
|
41
|
+
.DS_Store
|
|
42
|
+
|
|
43
|
+
# kproj-specific
|
|
44
|
+
.kproj-staging/
|
|
45
|
+
|
|
46
|
+
# KiCad per-user local state (regenerated on demand by kicad-cli)
|
|
47
|
+
*.kicad_prl
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Pre-commit hooks for kproj.
|
|
2
|
+
#
|
|
3
|
+
# Run locally:
|
|
4
|
+
# uv run pre-commit install # one-time
|
|
5
|
+
# uv run pre-commit run -a # ad-hoc full sweep
|
|
6
|
+
#
|
|
7
|
+
# CI integration deferred per ADR 0007.
|
|
8
|
+
repos:
|
|
9
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
10
|
+
rev: v0.15.20
|
|
11
|
+
hooks:
|
|
12
|
+
- id: ruff
|
|
13
|
+
args: [--fix]
|
|
14
|
+
- id: ruff-format
|
|
15
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
16
|
+
rev: v4.6.0
|
|
17
|
+
hooks:
|
|
18
|
+
- id: trailing-whitespace
|
|
19
|
+
- id: end-of-file-fixer
|
|
20
|
+
- id: check-yaml
|
|
21
|
+
- id: check-toml
|
|
22
|
+
- id: check-merge-conflict
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.11
|