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.
Files changed (27) hide show
  1. {codigest-0.3.0 → codigest-0.3.1}/.github/workflows/publish.yml +0 -2
  2. {codigest-0.3.0 → codigest-0.3.1}/PKG-INFO +46 -15
  3. {codigest-0.3.0 → codigest-0.3.1}/README.md +45 -14
  4. {codigest-0.3.0 → codigest-0.3.1}/pyproject.toml +1 -1
  5. codigest-0.3.1/src/codigest/main.py +65 -0
  6. {codigest-0.3.0 → codigest-0.3.1}/uv.lock +1 -35
  7. codigest-0.3.0/.github/workflows/main.yml +0 -30
  8. codigest-0.3.0/src/codigest/main.py +0 -34
  9. {codigest-0.3.0 → codigest-0.3.1}/.gitignore +0 -0
  10. {codigest-0.3.0 → codigest-0.3.1}/.python-version +0 -0
  11. {codigest-0.3.0 → codigest-0.3.1}/src/codigest/__init__.py +0 -0
  12. {codigest-0.3.0 → codigest-0.3.1}/src/codigest/commands/diff.py +0 -0
  13. {codigest-0.3.0 → codigest-0.3.1}/src/codigest/commands/digest.py +0 -0
  14. {codigest-0.3.0 → codigest-0.3.1}/src/codigest/commands/init.py +0 -0
  15. {codigest-0.3.0 → codigest-0.3.1}/src/codigest/commands/scan.py +0 -0
  16. {codigest-0.3.0 → codigest-0.3.1}/src/codigest/commands/semdiff.py +0 -0
  17. {codigest-0.3.0 → codigest-0.3.1}/src/codigest/commands/tree.py +0 -0
  18. {codigest-0.3.0 → codigest-0.3.1}/src/codigest/config.py +0 -0
  19. {codigest-0.3.0 → codigest-0.3.1}/src/codigest/core/git_ops.py +0 -0
  20. {codigest-0.3.0 → codigest-0.3.1}/src/codigest/core/processor.py +0 -0
  21. {codigest-0.3.0 → codigest-0.3.1}/src/codigest/core/prompts.py +0 -0
  22. {codigest-0.3.0 → codigest-0.3.1}/src/codigest/core/scanner.py +0 -0
  23. {codigest-0.3.0 → codigest-0.3.1}/src/codigest/core/semdiff.py +0 -0
  24. {codigest-0.3.0 → codigest-0.3.1}/src/codigest/core/shadow.py +0 -0
  25. {codigest-0.3.0 → codigest-0.3.1}/src/codigest/core/structure.py +0 -0
  26. {codigest-0.3.0 → codigest-0.3.1}/src/codigest/core/tags.py +0 -0
  27. {codigest-0.3.0 → codigest-0.3.1}/src/codigest/core/tokenizer.py +0 -0
@@ -4,8 +4,6 @@ on:
4
4
  push:
5
5
  tags:
6
6
  - 'v*' # v0.3.0 태그 푸시 시 배포 실행
7
- # branches:
8
- # - main # main 브랜치 푸시 시 문서 배포 실행 (옵션)
9
7
 
10
8
  jobs:
11
9
  build-n-publish:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codigest
3
- Version: 0.3.0
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
- * **Python 3.14 Native**: Built using modern Python features including PEP 750 Tag Strings for safe XML generation.
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
- Requires **Python 3.14+**.
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
- # Install via uv
45
- git clone https://github.com/SJB7777/codigest.git
46
- cd codigest
47
- uv tool install .
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 --m " Python 3.14 project. Do NOT use typing. List/Dict."
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
- * **Python 3.14 Native**: Built using modern Python features including PEP 750 Tag Strings for safe XML generation.
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
- Requires **Python 3.14+**.
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
- # Install via uv
20
- git clone https://github.com/SJB7777/codigest.git
21
- cd codigest
22
- uv tool install .
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 --m " Python 3.14 project. Do NOT use typing. List/Dict."
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`.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "codigest"
3
- version = "0.3.0"
3
+ version = "0.3.1"
4
4
  description = "Human-Centered Codebase Context Manager for LLMs"
5
5
  authors = [{name = "Codigest Team", email = "sngd024@google.com"}]
6
6
  readme = "README.md"
@@ -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.2.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