codigest 0.3.0__tar.gz → 0.3.1__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.
- {codigest-0.3.0 → codigest-0.3.1}/.github/workflows/publish.yml +0 -2
- {codigest-0.3.0 → codigest-0.3.1}/PKG-INFO +46 -15
- {codigest-0.3.0 → codigest-0.3.1}/README.md +45 -14
- {codigest-0.3.0 → codigest-0.3.1}/pyproject.toml +1 -1
- codigest-0.3.1/src/codigest/main.py +65 -0
- {codigest-0.3.0 → codigest-0.3.1}/uv.lock +1 -35
- codigest-0.3.0/.github/workflows/main.yml +0 -30
- codigest-0.3.0/src/codigest/main.py +0 -34
- {codigest-0.3.0 → codigest-0.3.1}/.gitignore +0 -0
- {codigest-0.3.0 → codigest-0.3.1}/.python-version +0 -0
- {codigest-0.3.0 → codigest-0.3.1}/src/codigest/__init__.py +0 -0
- {codigest-0.3.0 → codigest-0.3.1}/src/codigest/commands/diff.py +0 -0
- {codigest-0.3.0 → codigest-0.3.1}/src/codigest/commands/digest.py +0 -0
- {codigest-0.3.0 → codigest-0.3.1}/src/codigest/commands/init.py +0 -0
- {codigest-0.3.0 → codigest-0.3.1}/src/codigest/commands/scan.py +0 -0
- {codigest-0.3.0 → codigest-0.3.1}/src/codigest/commands/semdiff.py +0 -0
- {codigest-0.3.0 → codigest-0.3.1}/src/codigest/commands/tree.py +0 -0
- {codigest-0.3.0 → codigest-0.3.1}/src/codigest/config.py +0 -0
- {codigest-0.3.0 → codigest-0.3.1}/src/codigest/core/git_ops.py +0 -0
- {codigest-0.3.0 → codigest-0.3.1}/src/codigest/core/processor.py +0 -0
- {codigest-0.3.0 → codigest-0.3.1}/src/codigest/core/prompts.py +0 -0
- {codigest-0.3.0 → codigest-0.3.1}/src/codigest/core/scanner.py +0 -0
- {codigest-0.3.0 → codigest-0.3.1}/src/codigest/core/semdiff.py +0 -0
- {codigest-0.3.0 → codigest-0.3.1}/src/codigest/core/shadow.py +0 -0
- {codigest-0.3.0 → codigest-0.3.1}/src/codigest/core/structure.py +0 -0
- {codigest-0.3.0 → codigest-0.3.1}/src/codigest/core/tags.py +0 -0
- {codigest-0.3.0 → codigest-0.3.1}/src/codigest/core/tokenizer.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codigest
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: Human-Centered Codebase Context Manager for LLMs
|
|
5
5
|
Project-URL: Homepage, https://github.com/SJB777/codigest
|
|
6
6
|
Project-URL: Repository, https://github.com/SJB777/codigest
|
|
@@ -25,33 +25,61 @@ Description-Content-Type: text/markdown
|
|
|
25
25
|
|
|
26
26
|
# Codigest
|
|
27
27
|
|
|
28
|
-
Codigest is a CLI tool designed to extract, structure, and track the context of your codebase for Large Language Models (LLMs).
|
|
28
|
+
Codigest is a standalone CLI tool designed to extract, structure, and track the context of your codebase for Large Language Models (LLMs).
|
|
29
29
|
|
|
30
30
|
Unlike simple copy-paste tools, Codigest employs a **Context Anchor** system (Shadow Git) to track changes locally without polluting your main version control history. It also features **Semantic Analysis** to detect structural changes in your code.
|
|
31
31
|
|
|
32
32
|
## Core Philosophy
|
|
33
33
|
|
|
34
|
-
* **Read-Only & Safe**: Codigest never modifies your source code. It only reads, analyzes, and formats context.
|
|
35
|
-
* **Context-Aware**: Instead of dumping raw text, it structures code into XML snapshots designed for LLM comprehension.
|
|
36
|
-
* **Session-Based Tracking**: It maintains an internal anchor to track "work-in-progress" changes independently of your Git commits.
|
|
37
|
-
* **
|
|
34
|
+
* **Read-Only & Safe**: Codigest never modifies your source code. It only reads, analyzes, and formats context.
|
|
35
|
+
* **Context-Aware**: Instead of dumping raw text, it structures code into XML snapshots designed for LLM comprehension.
|
|
36
|
+
* **Session-Based Tracking**: It maintains an internal anchor to track "work-in-progress" changes independently of your Git commits.
|
|
37
|
+
* **Environment Isolated**: Runs in its own isolated Python 3.14 environment via `uv`, ensuring it never conflicts with your project's dependencies.
|
|
38
38
|
|
|
39
39
|
## Installation
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
Codigest runs as a global tool. You don't need to add it to your project's `requirements.txt`.
|
|
42
|
+
We strongly recommend using **uv** for the best experience.
|
|
43
|
+
|
|
44
|
+
### Step 1: Install `uv`
|
|
45
|
+
|
|
46
|
+
If you don't have `uv` installed, use **Winget** (Windows) or curl (macOS/Linux).
|
|
47
|
+
|
|
48
|
+
```powershell
|
|
49
|
+
# Windows (via Winget)
|
|
50
|
+
winget install --id astral-sh.uv
|
|
51
|
+
|
|
52
|
+
# macOS/Linux
|
|
53
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Step 2: Install `codigest`
|
|
57
|
+
|
|
58
|
+
Install Codigest globally. `uv` will automatically manage the required Python 3.14 environment for you.
|
|
42
59
|
|
|
43
60
|
```bash
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
61
|
+
uv tool install codigest
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Step 3: Update Path (Important\!)
|
|
65
|
+
|
|
66
|
+
To run `codigest` from any terminal, ensure your tools directory is in your PATH.
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
uv tool update-shell
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
*\> **Note:** Restart your terminal (or VS Code) after this step to apply changes.*
|
|
73
|
+
|
|
74
|
+
-----
|
|
49
75
|
|
|
50
76
|
## Workflow & Commands
|
|
51
77
|
|
|
78
|
+
Once installed, you can use `codigest` command anywhere.
|
|
79
|
+
|
|
52
80
|
### 1\. Initialization
|
|
53
81
|
|
|
54
|
-
Sets up the `.codigest` directory and captures the initial baseline anchor.
|
|
82
|
+
Sets up the `.codigest` directory and captures the initial baseline anchor.
|
|
55
83
|
|
|
56
84
|
```bash
|
|
57
85
|
codigest init
|
|
@@ -66,7 +94,7 @@ Scans the entire codebase and generates a structured XML snapshot.
|
|
|
66
94
|
* **Side Effect:** Updates the internal Context Anchor to the current state.
|
|
67
95
|
|
|
68
96
|
```bash
|
|
69
|
-
codigest scan --
|
|
97
|
+
codigest scan --message "Initial project context"
|
|
70
98
|
```
|
|
71
99
|
|
|
72
100
|
### 3\. Incremental Changes (`diff`)
|
|
@@ -77,6 +105,7 @@ Tracks text-based changes between the last `scan` and the current working tree.
|
|
|
77
105
|
* **Use Case:** "I modified 3 files. Here is exactly what changed since the last snapshot."
|
|
78
106
|
* **Note:** This is based on the internal Shadow Git, not your project's Git history.
|
|
79
107
|
|
|
108
|
+
|
|
80
109
|
```bash
|
|
81
110
|
codigest diff
|
|
82
111
|
```
|
|
@@ -89,6 +118,7 @@ Analyzes **structural changes** (AST-based) rather than line-by-line text differ
|
|
|
89
118
|
* **Use Case:** "I refactored the API. Show me which functions were added, removed, or had their signatures changed."
|
|
90
119
|
* **Benefit:** Significantly reduces token usage compared to raw diffs by ignoring formatting/comment changes.
|
|
91
120
|
|
|
121
|
+
|
|
92
122
|
```bash
|
|
93
123
|
codigest semdiff
|
|
94
124
|
```
|
|
@@ -100,12 +130,13 @@ Generates a high-level outline of the project structure (Classes, Functions, Met
|
|
|
100
130
|
* **Output:** `.codigest/digest.xml`
|
|
101
131
|
* **Use Case:** "Don't read the implementation details. Just understand the class hierarchy and available methods."
|
|
102
132
|
|
|
103
|
-
<!-- end list -->
|
|
104
133
|
|
|
105
134
|
```bash
|
|
106
135
|
codigest digest
|
|
107
136
|
```
|
|
108
137
|
|
|
138
|
+
-----
|
|
139
|
+
|
|
109
140
|
## Configuration
|
|
110
141
|
|
|
111
142
|
You can customize behavior in `.codigest/config.toml`.
|
|
@@ -1,32 +1,60 @@
|
|
|
1
1
|
# Codigest
|
|
2
2
|
|
|
3
|
-
Codigest is a CLI tool designed to extract, structure, and track the context of your codebase for Large Language Models (LLMs).
|
|
3
|
+
Codigest is a standalone CLI tool designed to extract, structure, and track the context of your codebase for Large Language Models (LLMs).
|
|
4
4
|
|
|
5
5
|
Unlike simple copy-paste tools, Codigest employs a **Context Anchor** system (Shadow Git) to track changes locally without polluting your main version control history. It also features **Semantic Analysis** to detect structural changes in your code.
|
|
6
6
|
|
|
7
7
|
## Core Philosophy
|
|
8
8
|
|
|
9
|
-
* **Read-Only & Safe**: Codigest never modifies your source code. It only reads, analyzes, and formats context.
|
|
10
|
-
* **Context-Aware**: Instead of dumping raw text, it structures code into XML snapshots designed for LLM comprehension.
|
|
11
|
-
* **Session-Based Tracking**: It maintains an internal anchor to track "work-in-progress" changes independently of your Git commits.
|
|
12
|
-
* **
|
|
9
|
+
* **Read-Only & Safe**: Codigest never modifies your source code. It only reads, analyzes, and formats context.
|
|
10
|
+
* **Context-Aware**: Instead of dumping raw text, it structures code into XML snapshots designed for LLM comprehension.
|
|
11
|
+
* **Session-Based Tracking**: It maintains an internal anchor to track "work-in-progress" changes independently of your Git commits.
|
|
12
|
+
* **Environment Isolated**: Runs in its own isolated Python 3.14 environment via `uv`, ensuring it never conflicts with your project's dependencies.
|
|
13
13
|
|
|
14
14
|
## Installation
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
Codigest runs as a global tool. You don't need to add it to your project's `requirements.txt`.
|
|
17
|
+
We strongly recommend using **uv** for the best experience.
|
|
18
|
+
|
|
19
|
+
### Step 1: Install `uv`
|
|
20
|
+
|
|
21
|
+
If you don't have `uv` installed, use **Winget** (Windows) or curl (macOS/Linux).
|
|
22
|
+
|
|
23
|
+
```powershell
|
|
24
|
+
# Windows (via Winget)
|
|
25
|
+
winget install --id astral-sh.uv
|
|
26
|
+
|
|
27
|
+
# macOS/Linux
|
|
28
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Step 2: Install `codigest`
|
|
32
|
+
|
|
33
|
+
Install Codigest globally. `uv` will automatically manage the required Python 3.14 environment for you.
|
|
17
34
|
|
|
18
35
|
```bash
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
36
|
+
uv tool install codigest
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Step 3: Update Path (Important\!)
|
|
40
|
+
|
|
41
|
+
To run `codigest` from any terminal, ensure your tools directory is in your PATH.
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
uv tool update-shell
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
*\> **Note:** Restart your terminal (or VS Code) after this step to apply changes.*
|
|
48
|
+
|
|
49
|
+
-----
|
|
24
50
|
|
|
25
51
|
## Workflow & Commands
|
|
26
52
|
|
|
53
|
+
Once installed, you can use `codigest` command anywhere.
|
|
54
|
+
|
|
27
55
|
### 1\. Initialization
|
|
28
56
|
|
|
29
|
-
Sets up the `.codigest` directory and captures the initial baseline anchor.
|
|
57
|
+
Sets up the `.codigest` directory and captures the initial baseline anchor.
|
|
30
58
|
|
|
31
59
|
```bash
|
|
32
60
|
codigest init
|
|
@@ -41,7 +69,7 @@ Scans the entire codebase and generates a structured XML snapshot.
|
|
|
41
69
|
* **Side Effect:** Updates the internal Context Anchor to the current state.
|
|
42
70
|
|
|
43
71
|
```bash
|
|
44
|
-
codigest scan --
|
|
72
|
+
codigest scan --message "Initial project context"
|
|
45
73
|
```
|
|
46
74
|
|
|
47
75
|
### 3\. Incremental Changes (`diff`)
|
|
@@ -52,6 +80,7 @@ Tracks text-based changes between the last `scan` and the current working tree.
|
|
|
52
80
|
* **Use Case:** "I modified 3 files. Here is exactly what changed since the last snapshot."
|
|
53
81
|
* **Note:** This is based on the internal Shadow Git, not your project's Git history.
|
|
54
82
|
|
|
83
|
+
|
|
55
84
|
```bash
|
|
56
85
|
codigest diff
|
|
57
86
|
```
|
|
@@ -64,6 +93,7 @@ Analyzes **structural changes** (AST-based) rather than line-by-line text differ
|
|
|
64
93
|
* **Use Case:** "I refactored the API. Show me which functions were added, removed, or had their signatures changed."
|
|
65
94
|
* **Benefit:** Significantly reduces token usage compared to raw diffs by ignoring formatting/comment changes.
|
|
66
95
|
|
|
96
|
+
|
|
67
97
|
```bash
|
|
68
98
|
codigest semdiff
|
|
69
99
|
```
|
|
@@ -75,12 +105,13 @@ Generates a high-level outline of the project structure (Classes, Functions, Met
|
|
|
75
105
|
* **Output:** `.codigest/digest.xml`
|
|
76
106
|
* **Use Case:** "Don't read the implementation details. Just understand the class hierarchy and available methods."
|
|
77
107
|
|
|
78
|
-
<!-- end list -->
|
|
79
108
|
|
|
80
109
|
```bash
|
|
81
110
|
codigest digest
|
|
82
111
|
```
|
|
83
112
|
|
|
113
|
+
-----
|
|
114
|
+
|
|
84
115
|
## Configuration
|
|
85
116
|
|
|
86
117
|
You can customize behavior in `.codigest/config.toml`.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Entry Point with Global Error Handling & Version Check
|
|
3
|
+
"""
|
|
4
|
+
import sys
|
|
5
|
+
import typer
|
|
6
|
+
from rich.console import Console
|
|
7
|
+
from importlib.metadata import version, PackageNotFoundError
|
|
8
|
+
|
|
9
|
+
from .commands import init, scan, tree, digest, diff, semdiff
|
|
10
|
+
|
|
11
|
+
console = Console()
|
|
12
|
+
|
|
13
|
+
app = typer.Typer(
|
|
14
|
+
name="codigest",
|
|
15
|
+
help="Semantic Context Manager for LLM-assisted Development",
|
|
16
|
+
add_completion=False,
|
|
17
|
+
no_args_is_help=True
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
app.add_typer(init.app, name="init")
|
|
21
|
+
app.add_typer(scan.app, name="scan")
|
|
22
|
+
app.add_typer(tree.app, name="tree")
|
|
23
|
+
app.add_typer(digest.app, name="digest")
|
|
24
|
+
app.add_typer(diff.app, name="diff")
|
|
25
|
+
app.add_typer(semdiff.app, name="semdiff")
|
|
26
|
+
|
|
27
|
+
def version_callback(value: bool):
|
|
28
|
+
"""
|
|
29
|
+
Callback function to handle --version flag.
|
|
30
|
+
"""
|
|
31
|
+
if value:
|
|
32
|
+
try:
|
|
33
|
+
pkg_version = version("codigest")
|
|
34
|
+
except PackageNotFoundError:
|
|
35
|
+
pkg_version = "0.3.0 (dev)"
|
|
36
|
+
|
|
37
|
+
console.print(f"🦁 [bold cyan]Codigest[/bold cyan] version [bold green]{pkg_version}[/bold green]")
|
|
38
|
+
raise typer.Exit()
|
|
39
|
+
|
|
40
|
+
@app.callback()
|
|
41
|
+
def common(
|
|
42
|
+
ctx: typer.Context,
|
|
43
|
+
version: bool = typer.Option(
|
|
44
|
+
None,
|
|
45
|
+
"--version", "-v",
|
|
46
|
+
help="Show the application version and exit.",
|
|
47
|
+
callback=version_callback,
|
|
48
|
+
is_eager=True
|
|
49
|
+
)
|
|
50
|
+
):
|
|
51
|
+
pass
|
|
52
|
+
|
|
53
|
+
def main():
|
|
54
|
+
try:
|
|
55
|
+
app()
|
|
56
|
+
except Exception as e:
|
|
57
|
+
if isinstance(e, typer.Exit):
|
|
58
|
+
raise e
|
|
59
|
+
|
|
60
|
+
error_msg = str(e)
|
|
61
|
+
console.print(f"[bold red]❌ Error:[/bold red] {error_msg}")
|
|
62
|
+
sys.exit(1)
|
|
63
|
+
|
|
64
|
+
if __name__ == "__main__":
|
|
65
|
+
main()
|
|
@@ -16,7 +16,7 @@ wheels = [
|
|
|
16
16
|
|
|
17
17
|
[[package]]
|
|
18
18
|
name = "codigest"
|
|
19
|
-
version = "0.
|
|
19
|
+
version = "0.3.0"
|
|
20
20
|
source = { editable = "." }
|
|
21
21
|
dependencies = [
|
|
22
22
|
{ name = "loguru" },
|
|
@@ -27,11 +27,6 @@ dependencies = [
|
|
|
27
27
|
{ name = "typer" },
|
|
28
28
|
]
|
|
29
29
|
|
|
30
|
-
[package.dev-dependencies]
|
|
31
|
-
dev = [
|
|
32
|
-
{ name = "ruff" },
|
|
33
|
-
]
|
|
34
|
-
|
|
35
30
|
[package.metadata]
|
|
36
31
|
requires-dist = [
|
|
37
32
|
{ name = "loguru" },
|
|
@@ -42,9 +37,6 @@ requires-dist = [
|
|
|
42
37
|
{ name = "typer" },
|
|
43
38
|
]
|
|
44
39
|
|
|
45
|
-
[package.metadata.requires-dev]
|
|
46
|
-
dev = [{ name = "ruff" }]
|
|
47
|
-
|
|
48
40
|
[[package]]
|
|
49
41
|
name = "colorama"
|
|
50
42
|
version = "0.4.6"
|
|
@@ -128,32 +120,6 @@ wheels = [
|
|
|
128
120
|
{ url = "https://files.pythonhosted.org/packages/25/7a/b0178788f8dc6cafce37a212c99565fa1fe7872c70c6c9c1e1a372d9d88f/rich-14.2.0-py3-none-any.whl", hash = "sha256:76bc51fe2e57d2b1be1f96c524b890b816e334ab4c1e45888799bfaab0021edd", size = 243393, upload-time = "2025-10-09T14:16:51.245Z" },
|
|
129
121
|
]
|
|
130
122
|
|
|
131
|
-
[[package]]
|
|
132
|
-
name = "ruff"
|
|
133
|
-
version = "0.14.8"
|
|
134
|
-
source = { registry = "https://pypi.org/simple" }
|
|
135
|
-
sdist = { url = "https://files.pythonhosted.org/packages/ed/d9/f7a0c4b3a2bf2556cd5d99b05372c29980249ef71e8e32669ba77428c82c/ruff-0.14.8.tar.gz", hash = "sha256:774ed0dd87d6ce925e3b8496feb3a00ac564bea52b9feb551ecd17e0a23d1eed", size = 5765385, upload-time = "2025-12-04T15:06:17.669Z" }
|
|
136
|
-
wheels = [
|
|
137
|
-
{ url = "https://files.pythonhosted.org/packages/48/b8/9537b52010134b1d2b72870cc3f92d5fb759394094741b09ceccae183fbe/ruff-0.14.8-py3-none-linux_armv6l.whl", hash = "sha256:ec071e9c82eca417f6111fd39f7043acb53cd3fde9b1f95bbed745962e345afb", size = 13441540, upload-time = "2025-12-04T15:06:14.896Z" },
|
|
138
|
-
{ url = "https://files.pythonhosted.org/packages/24/00/99031684efb025829713682012b6dd37279b1f695ed1b01725f85fd94b38/ruff-0.14.8-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:8cdb162a7159f4ca36ce980a18c43d8f036966e7f73f866ac8f493b75e0c27e9", size = 13669384, upload-time = "2025-12-04T15:06:51.809Z" },
|
|
139
|
-
{ url = "https://files.pythonhosted.org/packages/72/64/3eb5949169fc19c50c04f28ece2c189d3b6edd57e5b533649dae6ca484fe/ruff-0.14.8-py3-none-macosx_11_0_arm64.whl", hash = "sha256:2e2fcbefe91f9fad0916850edf0854530c15bd1926b6b779de47e9ab619ea38f", size = 12806917, upload-time = "2025-12-04T15:06:08.925Z" },
|
|
140
|
-
{ url = "https://files.pythonhosted.org/packages/c4/08/5250babb0b1b11910f470370ec0cbc67470231f7cdc033cee57d4976f941/ruff-0.14.8-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9d70721066a296f45786ec31916dc287b44040f553da21564de0ab4d45a869b", size = 13256112, upload-time = "2025-12-04T15:06:23.498Z" },
|
|
141
|
-
{ url = "https://files.pythonhosted.org/packages/78/4c/6c588e97a8e8c2d4b522c31a579e1df2b4d003eddfbe23d1f262b1a431ff/ruff-0.14.8-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2c87e09b3cd9d126fc67a9ecd3b5b1d3ded2b9c7fce3f16e315346b9d05cfb52", size = 13227559, upload-time = "2025-12-04T15:06:33.432Z" },
|
|
142
|
-
{ url = "https://files.pythonhosted.org/packages/23/ce/5f78cea13eda8eceac71b5f6fa6e9223df9b87bb2c1891c166d1f0dce9f1/ruff-0.14.8-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d62cb310c4fbcb9ee4ac023fe17f984ae1e12b8a4a02e3d21489f9a2a5f730c", size = 13896379, upload-time = "2025-12-04T15:06:02.687Z" },
|
|
143
|
-
{ url = "https://files.pythonhosted.org/packages/cf/79/13de4517c4dadce9218a20035b21212a4c180e009507731f0d3b3f5df85a/ruff-0.14.8-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:1af35c2d62633d4da0521178e8a2641c636d2a7153da0bac1b30cfd4ccd91344", size = 15372786, upload-time = "2025-12-04T15:06:29.828Z" },
|
|
144
|
-
{ url = "https://files.pythonhosted.org/packages/00/06/33df72b3bb42be8a1c3815fd4fae83fa2945fc725a25d87ba3e42d1cc108/ruff-0.14.8-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:25add4575ffecc53d60eed3f24b1e934493631b48ebbc6ebaf9d8517924aca4b", size = 14990029, upload-time = "2025-12-04T15:06:36.812Z" },
|
|
145
|
-
{ url = "https://files.pythonhosted.org/packages/64/61/0f34927bd90925880394de0e081ce1afab66d7b3525336f5771dcf0cb46c/ruff-0.14.8-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4c943d847b7f02f7db4201a0600ea7d244d8a404fbb639b439e987edcf2baf9a", size = 14407037, upload-time = "2025-12-04T15:06:39.979Z" },
|
|
146
|
-
{ url = "https://files.pythonhosted.org/packages/96/bc/058fe0aefc0fbf0d19614cb6d1a3e2c048f7dc77ca64957f33b12cfdc5ef/ruff-0.14.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb6e8bf7b4f627548daa1b69283dac5a296bfe9ce856703b03130732e20ddfe2", size = 14102390, upload-time = "2025-12-04T15:06:46.372Z" },
|
|
147
|
-
{ url = "https://files.pythonhosted.org/packages/af/a4/e4f77b02b804546f4c17e8b37a524c27012dd6ff05855d2243b49a7d3cb9/ruff-0.14.8-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:7aaf2974f378e6b01d1e257c6948207aec6a9b5ba53fab23d0182efb887a0e4a", size = 14230793, upload-time = "2025-12-04T15:06:20.497Z" },
|
|
148
|
-
{ url = "https://files.pythonhosted.org/packages/3f/52/bb8c02373f79552e8d087cedaffad76b8892033d2876c2498a2582f09dcf/ruff-0.14.8-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e5758ca513c43ad8a4ef13f0f081f80f08008f410790f3611a21a92421ab045b", size = 13160039, upload-time = "2025-12-04T15:06:49.06Z" },
|
|
149
|
-
{ url = "https://files.pythonhosted.org/packages/1f/ad/b69d6962e477842e25c0b11622548df746290cc6d76f9e0f4ed7456c2c31/ruff-0.14.8-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:f74f7ba163b6e85a8d81a590363bf71618847e5078d90827749bfda1d88c9cdf", size = 13205158, upload-time = "2025-12-04T15:06:54.574Z" },
|
|
150
|
-
{ url = "https://files.pythonhosted.org/packages/06/63/54f23da1315c0b3dfc1bc03fbc34e10378918a20c0b0f086418734e57e74/ruff-0.14.8-py3-none-musllinux_1_2_i686.whl", hash = "sha256:eed28f6fafcc9591994c42254f5a5c5ca40e69a30721d2ab18bb0bb3baac3ab6", size = 13469550, upload-time = "2025-12-04T15:05:59.209Z" },
|
|
151
|
-
{ url = "https://files.pythonhosted.org/packages/70/7d/a4d7b1961e4903bc37fffb7ddcfaa7beb250f67d97cfd1ee1d5cddb1ec90/ruff-0.14.8-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:21d48fa744c9d1cb8d71eb0a740c4dd02751a5de9db9a730a8ef75ca34cf138e", size = 14211332, upload-time = "2025-12-04T15:06:06.027Z" },
|
|
152
|
-
{ url = "https://files.pythonhosted.org/packages/5d/93/2a5063341fa17054e5c86582136e9895db773e3c2ffb770dde50a09f35f0/ruff-0.14.8-py3-none-win32.whl", hash = "sha256:15f04cb45c051159baebb0f0037f404f1dc2f15a927418f29730f411a79bc4e7", size = 13151890, upload-time = "2025-12-04T15:06:11.668Z" },
|
|
153
|
-
{ url = "https://files.pythonhosted.org/packages/02/1c/65c61a0859c0add13a3e1cbb6024b42de587456a43006ca2d4fd3d1618fe/ruff-0.14.8-py3-none-win_amd64.whl", hash = "sha256:9eeb0b24242b5bbff3011409a739929f497f3fb5fe3b5698aba5e77e8c833097", size = 14537826, upload-time = "2025-12-04T15:06:26.409Z" },
|
|
154
|
-
{ url = "https://files.pythonhosted.org/packages/6d/63/8b41cea3afd7f58eb64ac9251668ee0073789a3bc9ac6f816c8c6fef986d/ruff-0.14.8-py3-none-win_arm64.whl", hash = "sha256:965a582c93c63fe715fd3e3f8aa37c4b776777203d8e1d8aa3cc0c14424a4b99", size = 13634522, upload-time = "2025-12-04T15:06:43.212Z" },
|
|
155
|
-
]
|
|
156
|
-
|
|
157
123
|
[[package]]
|
|
158
124
|
name = "shellingham"
|
|
159
125
|
version = "1.5.4"
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
name: Publish to PyPI
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
tags:
|
|
6
|
-
- 'v*'
|
|
7
|
-
workflow_dispatch:
|
|
8
|
-
jobs:
|
|
9
|
-
pypi-publish:
|
|
10
|
-
name: Build and publish Python distribution to PyPI
|
|
11
|
-
runs-on: ubuntu-latest
|
|
12
|
-
environment: github
|
|
13
|
-
permissions:
|
|
14
|
-
id-token: write
|
|
15
|
-
contents: read
|
|
16
|
-
|
|
17
|
-
steps:
|
|
18
|
-
- uses: actions/checkout@v4
|
|
19
|
-
|
|
20
|
-
- name: Install uv
|
|
21
|
-
uses: astral-sh/setup-uv@v5
|
|
22
|
-
|
|
23
|
-
- name: Set up Python
|
|
24
|
-
run: uv python install 3.14
|
|
25
|
-
|
|
26
|
-
- name: Build package
|
|
27
|
-
run: uv build
|
|
28
|
-
|
|
29
|
-
- name: Publish package distributions to PyPI
|
|
30
|
-
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Entry Point with Global Error Handling
|
|
3
|
-
"""
|
|
4
|
-
import sys
|
|
5
|
-
import typer
|
|
6
|
-
from rich.console import Console
|
|
7
|
-
from .commands import init, scan, tree, digest, diff, semdiff
|
|
8
|
-
|
|
9
|
-
console = Console()
|
|
10
|
-
|
|
11
|
-
app = typer.Typer(
|
|
12
|
-
name="codigest",
|
|
13
|
-
help="Semantic Context Manager for LLM-assisted Development",
|
|
14
|
-
add_completion=False,
|
|
15
|
-
no_args_is_help=True
|
|
16
|
-
)
|
|
17
|
-
|
|
18
|
-
app.add_typer(init.app, name="init")
|
|
19
|
-
app.add_typer(scan.app, name="scan")
|
|
20
|
-
app.add_typer(tree.app, name="tree")
|
|
21
|
-
app.add_typer(digest.app, name="digest")
|
|
22
|
-
app.add_typer(diff.app, name="diff")
|
|
23
|
-
app.add_typer(semdiff.app, name="semdiff")
|
|
24
|
-
|
|
25
|
-
def main():
|
|
26
|
-
try:
|
|
27
|
-
app()
|
|
28
|
-
except Exception as e:
|
|
29
|
-
error_msg = str(e)
|
|
30
|
-
console.print(f"[bold red]❌ Error:[/bold red] {error_msg}")
|
|
31
|
-
sys.exit(1)
|
|
32
|
-
|
|
33
|
-
if __name__ == "__main__":
|
|
34
|
-
main()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|