Skip to content

Commit 9be006c

Browse files
fix: PyPI package name MertCapkin_GraphStack (graphstack taken)
Align pyproject.toml with pending PyPI publisher. CLI command remains graphstack. v4.5.1. Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 080cc08 commit 9be006c

9 files changed

Lines changed: 57 additions & 49 deletions

File tree

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,14 @@ All notable changes to GraphStack are documented here.
44

55
---
66

7+
## [v4.5.1] — 2026-06-11
8+
9+
### Changed
10+
- **PyPI distribution name**`MertCapkin_GraphStack` (the name `graphstack` is taken on PyPI). CLI command remains `graphstack`.
11+
- Bootstrap scripts and docs updated for the new pip package name.
12+
13+
---
14+
715
## [v4.5.0] — 2026-06-11
816

917
### Added

README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ One prompt starts the entire lifecycle — from blank repo to production.
77

88
[![CI](https://github.com/MertCapkin/graphstack/actions/workflows/ci.yml/badge.svg)](https://github.com/MertCapkin/graphstack/actions)
99
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
10-
[![Version](https://img.shields.io/badge/version-v4.5.0-blue)](CHANGELOG.md)
10+
[![Version](https://img.shields.io/badge/version-v4.5.1-blue)](CHANGELOG.md)
1111
[![Platforms](https://img.shields.io/badge/platforms-Windows%20%7C%20macOS%20%7C%20Linux-success)](#compatibility)
1212
[![Works with Cursor](https://img.shields.io/badge/Works%20with-Cursor-blue)](https://cursor.sh)
1313
[![Works with Claude Code](https://img.shields.io/badge/Works%20with-Claude%20Code-orange)](https://claude.ai/code)
@@ -33,8 +33,11 @@ curl -fsSL https://raw.githubusercontent.com/MertCapkin/GraphStack/main/scripts/
3333
```
3434

3535
**After [PyPI publish](docs/PYPI.md):**
36+
37+
> PyPI package name is **`MertCapkin_GraphStack`** (`graphstack` was already taken). The CLI command is still `graphstack`.
38+
3639
```bash
37-
pip install "graphstack[graphify]" && graphstack init . -y --install-deps
40+
pip install "MertCapkin_GraphStack[graphify]" && graphstack init . -y --install-deps
3841
```
3942

4043
This installs GraphStack + Graphify, copies workflow files into **the current project**, refreshes the code graph, and runs `doctor`. Then describe your task in Cursor chat — rules load automatically.

docs/PYPI.md

Lines changed: 24 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,41 @@
11
# Publishing GraphStack to PyPI
22

3+
## Package name
4+
5+
PyPI distribution: **`MertCapkin_GraphStack`** (the name `graphstack` is taken on PyPI).
6+
7+
- `pip install MertCapkin_GraphStack[graphify]`
8+
- CLI command after install: **`graphstack`** (unchanged)
9+
10+
Pending publisher on PyPI must use project name **`MertCapkin_GraphStack`** — must match `pyproject.toml` `name`.
11+
312
## One-time setup (maintainer)
413

5-
1. Create a [PyPI](https://pypi.org) account and project **`graphstack`** (check name availability first).
6-
2. Enable [Trusted Publishing](https://docs.pypi.org/trusted-publishers/) on PyPI:
7-
- GitHub repo: `MertCapkin/GraphStack`
14+
1. PyPI account → **Publishing** → pending publisher:
15+
- Pending project name: `MertCapkin_GraphStack`
16+
- Owner: `MertCapkin`
17+
- Repository name: `GraphStack`
818
- Workflow: `publish.yml`
9-
- Environment name: `pypi`
10-
3. In GitHub → Settings → Environments → **pypi** → add protection rules if desired.
19+
- Environment: `pypi`
20+
2. GitHub → Settings → Environments → create **`pypi`**
21+
3. Trusted Publishing linked to `MertCapkin/GraphStack`
1122

1223
## Release flow
1324

1425
1. Bump version in `pyproject.toml` and `scripts/graphstack/__init__.py`.
15-
2. Update `CHANGELOG.md`.
16-
3. Sync bundled assets:
17-
```bash
18-
python scripts/sync_assets.py
19-
```
20-
4. Commit, tag, and push:
21-
```bash
22-
git tag v4.5.0
23-
git push origin v4.5.0
24-
```
25-
5. Create a **GitHub Release** from the tag — this triggers `.github/workflows/publish.yml`.
26-
27-
Or run **Publish to PyPI** workflow manually (`workflow_dispatch`).
28-
29-
## Local dry-run (no upload)
30-
31-
```bash
32-
python scripts/sync_assets.py
33-
python -m pip install build
34-
python -m build
35-
python -m pip install dist/graphstack-*.whl
36-
graphstack --version
37-
graphstack init /tmp/test-project -y --install-deps
38-
```
26+
2. `python scripts/sync_assets.py`
27+
3. Commit, tag, push, **Publish GitHub Release** (triggers `publish.yml`).
3928

4029
## User install (after publish)
4130

4231
```bash
43-
pip install "graphstack[graphify]"
32+
pip install "MertCapkin_GraphStack[graphify]"
4433
cd /path/to/your-project
4534
graphstack init . -y --install-deps
4635
```
4736

48-
Workflow markdown files ship **inside the wheel** under `graphstack/assets/` — no git clone required.
37+
Or one-liner bootstrap (Cursor terminal):
38+
39+
```powershell
40+
irm https://raw.githubusercontent.com/MertCapkin/GraphStack/main/scripts/bootstrap.ps1 | iex
41+
```

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ requires = ["setuptools>=61", "wheel"]
33
build-backend = "setuptools.build_meta"
44

55
[project]
6-
name = "graphstack"
7-
version = "4.5.0"
6+
name = "MertCapkin_GraphStack"
7+
version = "4.5.1"
88
description = "Graph-first AI development workflow — board, gate, graph queries, one-shot init"
99
readme = "README.md"
1010
license = { text = "MIT" }

scripts/bootstrap.ps1

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
#
77
# Or after PyPI publish:
88
# irm ... | iex
9-
# Same as: py -3 -m pip install -U "graphstack[graphify]" ; py -3 -m graphstack init . -y
9+
$Pkg = "MertCapkin_GraphStack[graphify]"
10+
# Same as: py -3 -m pip install -U $Pkg ; py -3 -m graphstack init . -y
1011

1112
$ErrorActionPreference = 'Stop'
1213

@@ -35,11 +36,11 @@ Write-Host ''
3536

3637
& $python.Exe @($python.PreArgs) -m pip install --upgrade pip --quiet 2>$null
3738

38-
Write-Host 'Step 1/2: Installing graphstack + graphify from PyPI...'
39-
& $python.Exe @($python.PreArgs) -m pip install --upgrade "graphstack[graphify]"
39+
Write-Host "Step 1/2: Installing MertCapkin_GraphStack + graphify from PyPI..."
40+
& $python.Exe @($python.PreArgs) -m pip install --upgrade $Pkg
4041
if ($LASTEXITCODE -ne 0) {
4142
Write-Host 'PyPI install failed — trying GitHub source...' -ForegroundColor Yellow
42-
& $python.Exe @($python.PreArgs) -m pip install --upgrade "graphstack[graphify] @ git+https://github.com/MertCapkin/GraphStack.git"
43+
& $python.Exe @($python.PreArgs) -m pip install --upgrade "MertCapkin_GraphStack[graphify] @ git+https://github.com/MertCapkin/GraphStack.git"
4344
if ($LASTEXITCODE -ne 0) {
4445
Write-Error 'Could not install graphstack. Check network and Python pip.'
4546
exit 1

scripts/bootstrap.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@ echo ""
3434

3535
$PY -m pip install --upgrade pip --quiet 2>/dev/null || true
3636

37-
echo "Step 1/2: Installing graphstack + graphify from PyPI..."
38-
if ! $PY -m pip install --upgrade "graphstack[graphify]"; then
37+
echo "Step 1/2: Installing MertCapkin_GraphStack + graphify from PyPI..."
38+
if ! $PY -m pip install --upgrade "MertCapkin_GraphStack[graphify]"; then
3939
echo "PyPI install failed — trying GitHub source..." >&2
40-
$PY -m pip install --upgrade "graphstack[graphify] @ git+https://github.com/MertCapkin/GraphStack.git"
40+
$PY -m pip install --upgrade "MertCapkin_GraphStack[graphify] @ git+https://github.com/MertCapkin/GraphStack.git"
4141
fi
4242

4343
echo ""

scripts/graphstack/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@
88
``gate``, ``state``, ``graph``
99
"""
1010

11-
__version__ = "4.5.0"
11+
__version__ = "4.5.1"
1212
__all__ = ["__version__"]

scripts/graphstack/bootstrap.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,15 @@
33
from __future__ import annotations
44

55
import subprocess
6-
import sys
76

87
from .platform_utils import echo, find_python, graphify_available
98

9+
# PyPI distribution name (``graphstack`` was taken). CLI command remains ``graphstack``.
10+
PIP_SPEC = "MertCapkin_GraphStack[graphify]"
11+
PIP_SPEC_GIT = (
12+
"MertCapkin_GraphStack[graphify] @ git+https://github.com/MertCapkin/GraphStack.git"
13+
)
14+
1015

1116
def pip_install(*specs: str, quiet: bool = True) -> int:
1217
"""Install packages with the same Python running graphstack."""
@@ -27,16 +32,14 @@ def ensure_graphify(*, install: bool = True) -> bool:
2732
return False
2833
echo("")
2934
echo("Installing Graphify (graphifyy)...")
30-
rc = pip_install('graphifyy>=0.7,<0.9')
35+
rc = pip_install("graphifyy>=0.7,<0.9")
3136
return rc == 0 and graphify_available()
3237

3338

3439
def ensure_graphstack_from_git() -> int:
3540
"""Fallback when PyPI package is not published yet."""
3641
echo("Trying GitHub install (PyPI fallback)...")
37-
return pip_install(
38-
"graphstack[graphify] @ git+https://github.com/MertCapkin/GraphStack.git"
39-
)
42+
return pip_install(PIP_SPEC_GIT)
4043

4144

4245
def run_graphify_cursor_install() -> int:

scripts/graphstack/installer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def install_source_root() -> Path:
3131
return bundled
3232
raise FileNotFoundError(
3333
"GraphStack workflow files not found. "
34-
"Reinstall with: pip install --upgrade graphstack"
34+
"Reinstall with: pip install --upgrade MertCapkin_GraphStack"
3535
)
3636

3737

0 commit comments

Comments
 (0)