Skip to content

Commit f0357c5

Browse files
committed
Remove CHANGELOG
Made-with: Cursor
1 parent 572f197 commit f0357c5

63 files changed

Lines changed: 3096 additions & 678 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.editorconfig

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# https://editorconfig.org
2+
root = true
3+
4+
[*]
5+
charset = utf-8
6+
end_of_line = lf
7+
insert_final_newline = true
8+
trim_trailing_whitespace = true
9+
10+
[*.md]
11+
trim_trailing_whitespace = false
12+
13+
[*.{py,toml,yml,yaml}]
14+
indent_style = space
15+
indent_size = 4
16+
17+
[Makefile]
18+
indent_style = tab
19+
20+
[*.ps1]
21+
end_of_line = crlf

.gitattributes

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
* text=auto
2+
3+
*.py text eol=lf
4+
*.toml text eol=lf
5+
*.yml text eol=lf
6+
*.yaml text eol=lf
7+
*.md text eol=lf
8+
*.sh text eol=lf
9+
*.json text eol=lf
10+
*.ps1 text eol=crlf

.github/dependabot.yml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: "uv"
4+
directory: "/"
5+
schedule:
6+
interval: "weekly"
7+
groups:
8+
uv-patch:
9+
patterns:
10+
- "*"
11+
update-types:
12+
- "patch"
13+
14+
- package-ecosystem: "github-actions"
15+
directory: "/"
16+
schedule:
17+
interval: "weekly"
18+
groups:
19+
actions:
20+
patterns:
21+
- "*"

.github/pull_request_template.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
## Summary
2+
3+
What does this PR change and why?
4+
5+
## Checklist
6+
7+
- [ ] `uv run ruff check .` and `uv run ruff format --check .` pass
8+
- [ ] `uv run mypy noisecutter/` passes
9+
- [ ] `uv run pytest tests/` passes (with coverage if you touched core logic)
10+
- [ ] Documentation updated (`README.md`, `docs/*` when user-visible)
11+
- [ ] Typos: CI uses `typos` (`_typos.toml`); run locally if you edit a lot of prose
12+
13+
## Notes for reviewers
14+
15+
Optional: risk areas, follow-ups, or migration notes.

.github/workflows/ci.yml

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
name: CI
2+
3+
on:
4+
pull_request:
5+
branches: [main]
6+
push:
7+
branches: [main]
8+
workflow_dispatch:
9+
10+
concurrency:
11+
group: ci-${{ github.workflow }}-${{ github.ref }}
12+
cancel-in-progress: true
13+
14+
permissions:
15+
contents: read
16+
17+
jobs:
18+
lint-test:
19+
runs-on: ubuntu-latest
20+
strategy:
21+
fail-fast: false
22+
matrix:
23+
python-version: ["3.9", "3.11", "3.12", "3.13"]
24+
steps:
25+
- uses: actions/checkout@v4
26+
27+
- name: Spell check
28+
uses: crate-ci/typos@v1
29+
30+
- uses: actions/setup-python@v5
31+
with:
32+
python-version: ${{ matrix.python-version }}
33+
cache: pip
34+
cache-dependency-path: |
35+
pyproject.toml
36+
uv.lock
37+
38+
- name: Install uv
39+
uses: astral-sh/setup-uv@v5
40+
with:
41+
version: "0.6.9"
42+
43+
- name: Sync environment
44+
run: uv sync --frozen --extra dev
45+
46+
- name: Ruff
47+
run: uv run ruff check .
48+
49+
- name: Ruff format (check)
50+
run: uv run ruff format --check .
51+
52+
- name: Mypy
53+
run: uv run mypy noisecutter/
54+
55+
- name: Pytest with coverage
56+
run: uv run pytest tests/ --cov=noisecutter --cov-report=term-missing
57+
58+
- name: Audit locked runtime dependencies
59+
run: |
60+
uv export --frozen --no-dev --no-hashes --no-emit-project -o /tmp/requirements-audit.txt
61+
uvx pip-audit==2.7.3 -r /tmp/requirements-audit.txt --strict

.github/workflows/codeql.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: CodeQL
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
schedule:
9+
- cron: "24 5 * * 1"
10+
11+
concurrency:
12+
group: codeql-${{ github.workflow }}-${{ github.ref }}
13+
cancel-in-progress: true
14+
15+
permissions:
16+
contents: read
17+
security-events: write
18+
19+
jobs:
20+
analyze:
21+
runs-on: ubuntu-latest
22+
steps:
23+
- uses: actions/checkout@v4
24+
25+
- uses: actions/setup-python@v5
26+
with:
27+
python-version: "3.12"
28+
29+
- uses: github/codeql-action/init@v3
30+
with:
31+
languages: python
32+
33+
- uses: github/codeql-action/autobuild@v3
34+
35+
- uses: github/codeql-action/analyze@v3
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
name: Dependency review
2+
3+
on:
4+
pull_request:
5+
branches: [main]
6+
7+
permissions:
8+
contents: read
9+
pull-requests: read
10+
11+
jobs:
12+
dependency-review:
13+
runs-on: ubuntu-latest
14+
steps:
15+
- uses: actions/checkout@v4
16+
17+
- uses: actions/dependency-review-action@v4
18+
with:
19+
fail-on-severity: moderate

.github/workflows/pr.yml

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
name: PR fastpath
2+
3+
on:
4+
pull_request:
5+
branches: [main]
6+
7+
concurrency:
8+
group: pr-${{ github.workflow }}-${{ github.ref }}
9+
cancel-in-progress: true
10+
11+
permissions:
12+
contents: read
13+
security-events: write
14+
15+
jobs:
16+
go-multi-entry:
17+
runs-on: ${{ matrix.os }}
18+
strategy:
19+
fail-fast: false
20+
matrix:
21+
os: [ubuntu-latest, macos-latest]
22+
steps:
23+
- uses: actions/checkout@v4
24+
25+
- uses: actions/setup-python@v5
26+
with:
27+
python-version: "3.12"
28+
cache: pip
29+
cache-dependency-path: uv.lock
30+
31+
- uses: astral-sh/setup-uv@v5
32+
with:
33+
version: "0.6.9"
34+
35+
- uses: actions/setup-go@v5
36+
with:
37+
go-version: "1.22"
38+
39+
- name: Install Python package
40+
run: uv sync --frozen --extra dev
41+
42+
- name: Install Syft
43+
run: bash scripts/install-syft.sh
44+
env:
45+
SYFT_INSTALL_DIR: ${{ github.workspace }}/bin
46+
47+
- name: Install govulncheck
48+
env:
49+
GOBIN: ${{ github.workspace }}/bin
50+
run: |
51+
mkdir -p "$GOBIN"
52+
go install golang.org/x/vuln/cmd/govulncheck@v1.2.0
53+
54+
- name: Add tools to PATH
55+
run: echo "${{ github.workspace }}/bin" >> "$GITHUB_PATH"
56+
57+
- name: Go multi-entry — build and verify goldens
58+
working-directory: examples/go-multi-entry
59+
env:
60+
NOISECUTTER_STRICT_REPRO: "1"
61+
run: |
62+
make all_artifacts
63+
make verify-golden
64+
65+
- name: Upload SARIF (server)
66+
uses: github/codeql-action/upload-sarif@v3
67+
if: matrix.os == 'ubuntu-latest'
68+
with:
69+
sarif_file: examples/go-multi-entry/report.server.sarif
70+
71+
windows-smoke:
72+
runs-on: windows-latest
73+
steps:
74+
- uses: actions/checkout@v4
75+
76+
- uses: actions/setup-python@v5
77+
with:
78+
python-version: "3.12"
79+
cache: pip
80+
cache-dependency-path: uv.lock
81+
82+
- uses: astral-sh/setup-uv@v5
83+
with:
84+
version: "0.6.9"
85+
86+
- name: Install and test
87+
run: |
88+
uv sync --frozen --extra dev
89+
uv run pytest tests/ -q --cov=noisecutter

.github/workflows/release.yml

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- "v*.*.*"
7+
workflow_dispatch:
8+
9+
permissions:
10+
contents: write
11+
id-token: write
12+
packages: write
13+
attestations: write
14+
15+
jobs:
16+
release:
17+
runs-on: ubuntu-latest
18+
environment: production
19+
steps:
20+
- uses: actions/checkout@v4
21+
22+
- uses: actions/setup-python@v5
23+
with:
24+
python-version: "3.12"
25+
26+
- uses: astral-sh/setup-uv@v5
27+
with:
28+
version: "0.6.9"
29+
30+
- name: Set version
31+
run: |
32+
if [ "${{ github.event_name }}" = "push" ]; then
33+
echo "VERSION=${GITHUB_REF_NAME}" >> "$GITHUB_ENV"
34+
else
35+
echo "VERSION=workflow-${GITHUB_RUN_ID}" >> "$GITHUB_ENV"
36+
fi
37+
38+
- name: Build wheel and sdist
39+
run: uv build
40+
41+
- name: Attest distribution artifacts
42+
if: github.event_name == 'push'
43+
uses: actions/attest-build-provenance@v2
44+
with:
45+
subject-path: |
46+
dist/*.whl
47+
dist/*.tar.gz
48+
49+
- name: Test wheel installation
50+
run: |
51+
python -m venv /tmp/nc-venv
52+
/tmp/nc-venv/bin/pip install --upgrade pip
53+
/tmp/nc-venv/bin/pip install dist/*.whl
54+
/tmp/nc-venv/bin/python -m noisecutter --help
55+
56+
- name: Set up Docker Buildx
57+
uses: docker/setup-buildx-action@v3
58+
59+
- name: Build Docker image
60+
run: |
61+
docker build -t "ghcr.io/${{ github.repository }}/noisecutter:${{ env.VERSION }}" .
62+
docker build -t "ghcr.io/${{ github.repository }}/noisecutter:latest" .
63+
64+
- name: Test Docker image
65+
run: docker run --rm "ghcr.io/${{ github.repository }}/noisecutter:${{ env.VERSION }}" --help
66+
67+
- name: Log in to GHCR
68+
if: github.event_name == 'push'
69+
uses: docker/login-action@v3
70+
with:
71+
registry: ghcr.io
72+
username: ${{ github.actor }}
73+
password: ${{ secrets.GITHUB_TOKEN }}
74+
75+
- name: Push Docker image
76+
if: github.event_name == 'push'
77+
run: |
78+
docker push "ghcr.io/${{ github.repository }}/noisecutter:${{ env.VERSION }}"
79+
docker push "ghcr.io/${{ github.repository }}/noisecutter:latest"
80+
81+
- name: Publish to PyPI
82+
if: github.event_name == 'push'
83+
uses: pypa/gh-action-pypi-publish@release/v1
84+
with:
85+
packages-dir: dist/
86+
skip-existing: true
87+
88+
- name: Create GitHub Release
89+
if: github.event_name == 'push'
90+
uses: softprops/action-gh-release@v2
91+
with:
92+
files: dist/*
93+
generate_release_notes: true
94+
draft: false
95+
prerelease: ${{ contains(github.ref_name, 'alpha') || contains(github.ref_name, 'beta') || contains(github.ref_name, 'rc') }}

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,8 @@ vulns.json
1515
report.sarif
1616
.idea/
1717
.vscode/
18-
18+
.coverage
19+
.coverage.*
20+
htmlcov/
21+
.noisecutter-cache/
1922

0 commit comments

Comments
 (0)