Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
f03617b
refactor(nix): replace hardcoded package enumeration with readDir dis…
cameronraysmith Feb 18, 2026
015dfcb
refactor(justfile): remove pnt-cli defaults from Rust recipes
cameronraysmith Feb 18, 2026
3cb6b5d
refactor(justfile): remove pnt-cli defaults from container recipes
cameronraysmith Feb 18, 2026
8a13df6
feat(justfile): add maturin field to list-packages-json output
cameronraysmith Feb 18, 2026
d64722e
feat(justfile): add list-maturin-packages convenience recipe
cameronraysmith Feb 18, 2026
b5f4df4
feat(ci): add is_maturin field to discover-packages output
cameronraysmith Feb 18, 2026
6814d4f
chore(beads): close pnt-kaf.1, pnt-kaf.4, pnt-kaf.5 after wave 1 impl…
cameronraysmith Feb 18, 2026
21a0288
refactor(devshell): replace hardcoded hasCli with discovery-based has…
cameronraysmith Feb 18, 2026
5292a0a
refactor(containers): replace hardcoded container defs with maturin p…
cameronraysmith Feb 18, 2026
9a4d8bb
refactor(mergify): replace hardcoded package names with wildcard regex
cameronraysmith Feb 18, 2026
f705185
chore(beads): close pnt-kaf.2, pnt-kaf.3, pnt-kaf.6 after wave 2 impl…
cameronraysmith Feb 18, 2026
65f1533
chore(beads): close pnt-kaf.7 after integration verification
cameronraysmith Feb 18, 2026
05836ec
chore(beads): checkpoint pnt-kaf epic completion
cameronraysmith Feb 18, 2026
8eb9bf3
chore(beads): checkpoint pnt-kaf with follow-up template substitution…
cameronraysmith Feb 18, 2026
823609e
chore(beads): create pnt-2nw epic for repo-name/package-name disambig…
cameronraysmith Feb 18, 2026
d25ef29
chore(beads): checkpoint pnt-2nw planning session
cameronraysmith Feb 18, 2026
d7d6e19
chore(beads): update pnt-2nw issues with definitive classification co…
cameronraysmith Feb 18, 2026
504ad46
refactor: rename packages/python-nix-template to packages/pnt-core
cameronraysmith Feb 18, 2026
e52f322
refactor: update package-name references in pnt-core package files
cameronraysmith Feb 18, 2026
33258bf
refactor: rename Nix package and devshell attrs to pntCore
cameronraysmith Feb 18, 2026
a0ac0c9
docs: update package-name references from python-nix-template to pnt-…
cameronraysmith Feb 18, 2026
3b6da04
refactor: update justfile package defaults from python-nix-template t…
cameronraysmith Feb 18, 2026
831fa96
docs: update README recipe examples with pnt-core package defaults
cameronraysmith Feb 18, 2026
5608945
refactor: update debug config module name to pnt-core
cameronraysmith Feb 18, 2026
73078ef
docs: update pnt-functional conda env name to pnt-core
cameronraysmith Feb 18, 2026
8931e61
chore(beads): close pnt-2nw.1 after rename implementation
cameronraysmith Feb 18, 2026
964d4ee
chore(beads): close pnt-2nw.2 after discovery verification
cameronraysmith Feb 18, 2026
93dae1e
fix(template): update package-name placeholder values to match rename…
cameronraysmith Feb 18, 2026
9c7a975
feat(template): add repo-name parameter for repository name substitution
cameronraysmith Feb 18, 2026
3ef7495
test(template): add repo-name to template test params
cameronraysmith Feb 18, 2026
75ae5b6
chore(beads): close pnt-2nw.3 after template.nix repo-name parameter
cameronraysmith Feb 18, 2026
0eca741
refactor(template): make template-ref a required parameter in templat…
cameronraysmith Feb 18, 2026
1022d93
docs: update README recipe listing with template-init parameter
cameronraysmith Feb 18, 2026
2096d1a
chore(beads): close pnt-2nw.4 after template reference context fixes
cameronraysmith Feb 18, 2026
321ed47
docs(readme): add repo-name and package-name-camel-case to instantiat…
cameronraysmith Feb 18, 2026
784eb81
chore(beads): close pnt-2nw.5 and pnt-2nw epic after integration veri…
cameronraysmith Feb 18, 2026
ee519d3
fix(lock): regenerate uv.lock after package rename to pnt-core
cameronraysmith Feb 18, 2026
1f07281
fix(ci): add repo-name parameter to template workflow instantiation t…
cameronraysmith Feb 18, 2026
4056a24
chore(pnt-core): 0.2.1 -> 0.2.2
cameronraysmith Feb 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 14 additions & 8 deletions .beads/issues.jsonl

Large diffs are not rendered by default.

10 changes: 2 additions & 8 deletions .github/mergify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,8 @@ shared:
- check-success=nix (x86_64-linux, ubuntu-latest, devshells)
- check-skipped=nix (x86_64-linux, ubuntu-latest, devshells)
- or:
- "check-success~=^test-python \\(python-nix-template, packages/python-nix-template.* / test$"
- "check-skipped~=^test-python \\(python-nix-template, packages/python-nix-template.* / test$"
- or:
- "check-success~=^test-python \\(pnt-functional, packages/pnt-functional.* / test$"
- "check-skipped~=^test-python \\(pnt-functional, packages/pnt-functional.* / test$"
- or:
- "check-success~=^test-python \\(pnt-cli, packages/pnt-cli.* / test$"
- "check-skipped~=^test-python \\(pnt-cli, packages/pnt-cli.* / test$"
- "check-success~=^test-python \\(.* / test$"
- "check-skipped~=^test-python \\(.* / test$"
- or:
- check-success=test-omnix-template
- check-skipped=test-omnix-template
Expand Down
7 changes: 6 additions & 1 deletion .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,10 @@ jobs:
d=$(dirname "$f")
n=$(basename "$d")

# Detect maturin/pyo3 package by Cargo.toml presence
is_maturin="false"
if [ -f "$d/Cargo.toml" ]; then is_maturin="true"; fi

# Read per-package CI metadata from .ci.json if present
ci_json="$d/.ci.json"
if [ -f "$ci_json" ]; then
Expand All @@ -199,9 +203,10 @@ jobs:
jq -nc \
--arg name "$n" \
--arg path "$d" \
--argjson is_maturin "$is_maturin" \
--arg build_images "$build_images" \
--argjson images "$images" \
'{name: $name, path: $path, "build-images": $build_images, images: ($images | tojson)}'
'{name: $name, path: $path, "is_maturin": $is_maturin, "build-images": $build_images, images: ($images | tojson)}'
done | jq -sc '.')
echo "packages=$PACKAGES" >> "$GITHUB_OUTPUT"
echo "Discovered packages: $PACKAGES"
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/template.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@ jobs:
"package-name-kebab-case": "pnt-mono",
"package-name-snake-case": "pnt_mono",
"package-name-camel-case": "pntMono",
"repo-name": "pnt-mono",
"monorepo-package": true,
"git-org": "pnt-mono",
"author": "Pnt Mono",
Expand Down Expand Up @@ -189,6 +190,7 @@ jobs:
"package-name-kebab-case": "pnt-new",
"package-name-snake-case": "pnt_new",
"package-name-camel-case": "pntNew",
"repo-name": "pnt-new",
"monorepo-package": false,
"git-org": "pnt-new",
"author": "Pnt New",
Expand Down
4 changes: 2 additions & 2 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
"version": "0.1.0",
"configurations": [
{
"name": "python-nix-template: Debug CLI",
"name": "pnt-core: Debug CLI",
"type": "debugpy",
"request": "launch",
"module": "python_nix_template",
"module": "pnt_core",
"args": [
],
"console": "integratedTerminal",
Expand Down
44 changes: 25 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,13 @@ tl;dr
```sh
PROJECT_DIRECTORY=pnt-mono && \
PROJECT_SNAKE_CASE=$(echo "$PROJECT_DIRECTORY" | tr '-' '_') && \
PROJECT_CAMEL_CASE=$(echo "$PROJECT_DIRECTORY" | perl -pe 's/-(.)/uc($1)/ge') && \
PARAMS=$(cat <<EOF
{
"package-name-kebab-case": "$PROJECT_DIRECTORY",
"package-name-snake-case": "$PROJECT_SNAKE_CASE",
"package-name-camel-case": "$PROJECT_CAMEL_CASE",
"repo-name": "$PROJECT_DIRECTORY",
"monorepo-package": true,
"pyo3-package": true,
"git-org": "pnt-mono",
Expand Down Expand Up @@ -62,10 +65,13 @@ development dependencies or `nix develop --accept-flake-config` to enter (or add
```sh
PROJECT_DIRECTORY=pnt-new && \
PROJECT_SNAKE_CASE=$(echo "$PROJECT_DIRECTORY" | tr '-' '_') && \
PROJECT_CAMEL_CASE=$(echo "$PROJECT_DIRECTORY" | perl -pe 's/-(.)/uc($1)/ge') && \
PARAMS=$(cat <<EOF
{
"package-name-kebab-case": "$PROJECT_DIRECTORY",
"package-name-snake-case": "$PROJECT_SNAKE_CASE",
"package-name-camel-case": "$PROJECT_CAMEL_CASE",
"repo-name": "$PROJECT_DIRECTORY",
"monorepo-package": false,
"pyo3-package": false,
"git-org": "pnt-new",
Expand Down Expand Up @@ -262,15 +268,15 @@ Available recipes:
test-docs-deploy branch=`git branch --show-current` # Test full deploy-docs workflow locally with act

[conda]
conda-build package="python-nix-template" # Package commands (conda)
conda-check package="python-nix-template" # Run all checks in conda environment (lint, type, test)
conda-env package="python-nix-template" # Create and sync conda environment with pixi
conda-lint package="python-nix-template" # Run linting in conda environment with pixi
conda-lint-fix package="python-nix-template" # Run linting and fix errors in conda environment with pixi
conda-lock package="python-nix-template" # Update conda environment
conda-test package="python-nix-template" # Run tests in conda environment with pixi
conda-type package="python-nix-template" # Run type checking in conda environment with pixi
pixi-lock package="python-nix-template" # Update pixi lockfile
conda-build package="pnt-core" # Package commands (conda)
conda-check package="pnt-core" # Run all checks in conda environment (lint, type, test)
conda-env package="pnt-core" # Create and sync conda environment with pixi
conda-lint package="pnt-core" # Run linting in conda environment with pixi
conda-lint-fix package="pnt-core" # Run linting and fix errors in conda environment with pixi
conda-lock package="pnt-core" # Update conda environment
conda-test package="pnt-core" # Run tests in conda environment with pixi
conda-type package="pnt-core" # Run type checking in conda environment with pixi
pixi-lock package="pnt-core" # Update pixi lockfile

[containers]
container-build-production CONTAINER="pnt-cli" # Build production container image
Expand Down Expand Up @@ -300,21 +306,21 @@ Available recipes:
flake-update # Update all flake inputs to their latest versions

[python]
check package="python-nix-template" # Run all checks for a package (lint, type, test)
lint package="python-nix-template" # Run linting for a package
check package="pnt-core" # Run all checks for a package (lint, type, test)
lint package="pnt-core" # Run linting for a package
lint-all # Run linting for all packages
lint-fix package="python-nix-template" # Run linting and fix errors for a package
test package="python-nix-template" # Run tests for a package
lint-fix package="pnt-core" # Run linting and fix errors for a package
test package="pnt-core" # Run tests for a package
test-all # Run tests for all packages
type package="python-nix-template" # Run type checking for a package
uv-build package="python-nix-template" # Build a package with uv
uv-lock package="python-nix-template" # Update lockfile for a package
uv-sync package="python-nix-template" # Sync a package environment with uv
type package="pnt-core" # Run type checking for a package
uv-build package="pnt-core" # Build a package with uv
uv-lock package="pnt-core" # Update lockfile for a package
uv-sync package="pnt-core" # Sync a package environment with uv

[release]
preview-version base-branch package-path # Preview release version for a package (dry-run semantic-release with merge simulation)
release-package package-name dry-run="false" # Run semantic-release for a package
test-package-release package-name="python-nix-template" branch="main" # Test package release
test-package-release package-name="pnt-core" branch="main" # Test package release
test-release # Release testing with bun
test-release-as-main # Test release as if on main branch
test-release-direct # Test release directly on release branch
Expand Down Expand Up @@ -353,7 +359,7 @@ Available recipes:
validate-secrets # Validate all sops encrypted files can be decrypted

[template]
template-init # Initialize new project from template
template-init template-ref # Initialize new project from template
template-verify # Verify template functionality by creating and checking a test project
```

Expand Down
4 changes: 2 additions & 2 deletions docs/_quarto.yml
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ website:
quartodoc:
dir: reference
parser: google
package: python_nix_template
package: pnt_core
title: Reference
sidebar: reference/_sidbar.yml
render_interlinks: true
Expand All @@ -124,7 +124,7 @@ quartodoc:
sections:
- title: API Reference
desc: |
API reference for python-nix-template.
API reference for pnt-core.
contents:
- name: main
children: embedded
Expand Down
8 changes: 4 additions & 4 deletions docs/guides/installation.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ This guide covers different ways to install python-nix-template.
The fastest way to get started is with UV:

```bash
uv pip install python-nix-template
uv pip install pnt-core
```

## Using Pip

You can also install with standard pip:

```bash
pip install python-nix-template
pip install pnt-core
```

## Development Installation
Expand All @@ -43,6 +43,6 @@ uv sync
Verify your installation by running:

```python
import python-nix-template
print(python-nix-template.__version__)
import pnt_core
print(pnt_core.__version__)
```
2 changes: 1 addition & 1 deletion docs/notes/architecture/crane-uv2nix-integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -410,7 +410,7 @@ This is a deliberate tradeoff: check caching provides fast CI feedback on the Ru
Maturin packages are incompatible with uv2nix's `pyprojectFixupEditableHook`, which expects `EDITABLE_ROOT` to be set during the build process.
Maturin's build backend does not set this variable.

The `mkEditablePythonSet` in `nix/modules/python.nix` composes editable overlays only for pure Python packages (`pnt-functional`, `python-nix-template`), excluding `pnt-cli`.
The `mkEditablePythonSet` in `nix/modules/python.nix` composes editable overlays only for pure Python packages (`pnt-functional`, `pnt-core`), excluding `pnt-cli`.
The pnt-cli package is built as a regular wheel in the devshell.

For iterative Rust development, the workflow is: enter the devshell via `nix develop`, then run `maturin develop --uv` in the package directory.
Expand Down
8 changes: 4 additions & 4 deletions docs/notes/architecture/package-distribution-channels.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@ uv and pixi serve as dependency resolution tools consumed by the nix layer, not
Runtime dependencies (`beartype`, `expression`) are available on both PyPI and conda-forge.
No channel-specific dependency graph differences for this package.

### python-nix-template
### pnt-core

| Channel | Supported | Lock file | Runtime dependencies |
|---------|-----------|-----------|---------------------|
| uv/PyPI | Yes | `packages/python-nix-template/uv.lock` | (none) |
| pixi/conda-forge | Yes | `packages/python-nix-template/pixi.lock` | python |
| uv/PyPI | Yes | `packages/pnt-core/uv.lock` | (none) |
| pixi/conda-forge | Yes | `packages/pnt-core/pixi.lock` | python |

This package has no runtime dependencies beyond the Python interpreter.
Dev dependencies (pytest, ruff, hypothesis, pyright, jupyter, quartodoc) are available on both channels.
Expand All @@ -53,4 +53,4 @@ This allows packages to be built as conda packages in addition to PyPI wheels.
| Build | `just uv-build <pkg>` | `just conda-build <pkg>` |
| Lock | `just uv-lock <pkg>` | `just pixi-lock <pkg>` |

All recipes accept a package parameter defaulting to `python-nix-template`.
All recipes accept a package parameter defaulting to `pnt-core`.
2 changes: 1 addition & 1 deletion docs/tutorials/getting-started.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ See the [Installation Guide](../guides/installation.qmd) for detailed installati

```python
# Example usage will be added here
print("Hello from python-nix-template!")
print("Hello from pnt-core!")
```

## Next Steps
Expand Down
Loading
Loading