pyvegh 0.4.0__tar.gz → 0.6.0__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.
@@ -1,6 +1,5 @@
1
1
  # Rust
2
2
  /target
3
- Cargo.lock
4
3
  **/*.rs.bk
5
4
 
6
5
  # Python
@@ -44,4 +43,5 @@ venv.bak/
44
43
  # Internal
45
44
  *.vegh
46
45
  .veghcache/
47
- .veghhooks.json
46
+ .veghhooks.json
47
+ *.xml
@@ -83,9 +83,9 @@ checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510"
83
83
 
84
84
  [[package]]
85
85
  name = "cc"
86
- version = "1.2.50"
86
+ version = "1.2.51"
87
87
  source = "registry+https://github.com/rust-lang/crates.io-index"
88
- checksum = "9f50d563227a1c37cc0a263f64eca3334388c01c5e4c4861a9def205c614383c"
88
+ checksum = "7a0aeaff4ff1a90589618835a598e545176939b97874f7abc7851caa0618f203"
89
89
  dependencies = [
90
90
  "find-msvc-tools",
91
91
  "jobserver",
@@ -173,9 +173,9 @@ dependencies = [
173
173
 
174
174
  [[package]]
175
175
  name = "find-msvc-tools"
176
- version = "0.1.5"
176
+ version = "0.1.6"
177
177
  source = "registry+https://github.com/rust-lang/crates.io-index"
178
- checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844"
178
+ checksum = "645cbb3a84e60b7531617d5ae4e57f7e27308f6445f5abf653209ea76dec8dff"
179
179
 
180
180
  [[package]]
181
181
  name = "getrandom"
@@ -265,9 +265,9 @@ dependencies = [
265
265
 
266
266
  [[package]]
267
267
  name = "itoa"
268
- version = "1.0.15"
268
+ version = "1.0.17"
269
269
  source = "registry+https://github.com/rust-lang/crates.io-index"
270
- checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
270
+ checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
271
271
 
272
272
  [[package]]
273
273
  name = "jobserver"
@@ -291,15 +291,15 @@ dependencies = [
291
291
 
292
292
  [[package]]
293
293
  name = "libc"
294
- version = "0.2.178"
294
+ version = "0.2.179"
295
295
  source = "registry+https://github.com/rust-lang/crates.io-index"
296
- checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091"
296
+ checksum = "c5a2d376baa530d1238d133232d15e239abad80d05838b4b59354e5268af431f"
297
297
 
298
298
  [[package]]
299
299
  name = "libredox"
300
- version = "0.1.11"
300
+ version = "0.1.12"
301
301
  source = "registry+https://github.com/rust-lang/crates.io-index"
302
- checksum = "df15f6eac291ed1cf25865b1ee60399f57e7c227e7f51bdbd4c5270396a9ed50"
302
+ checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616"
303
303
  dependencies = [
304
304
  "bitflags",
305
305
  "libc",
@@ -365,15 +365,15 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
365
365
 
366
366
  [[package]]
367
367
  name = "portable-atomic"
368
- version = "1.12.0"
368
+ version = "1.13.0"
369
369
  source = "registry+https://github.com/rust-lang/crates.io-index"
370
- checksum = "f59e70c4aef1e55797c2e8fd94a4f2a973fc972cfde0e0b05f683667b0cd39dd"
370
+ checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950"
371
371
 
372
372
  [[package]]
373
373
  name = "proc-macro2"
374
- version = "1.0.103"
374
+ version = "1.0.105"
375
375
  source = "registry+https://github.com/rust-lang/crates.io-index"
376
- checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
376
+ checksum = "535d180e0ecab6268a3e718bb9fd44db66bbbc256257165fc699dadf70d16fe7"
377
377
  dependencies = [
378
378
  "unicode-ident",
379
379
  ]
@@ -441,7 +441,7 @@ dependencies = [
441
441
 
442
442
  [[package]]
443
443
  name = "pyvegh"
444
- version = "0.4.0"
444
+ version = "0.6.0"
445
445
  dependencies = [
446
446
  "anyhow",
447
447
  "blake3",
@@ -458,9 +458,9 @@ dependencies = [
458
458
 
459
459
  [[package]]
460
460
  name = "quote"
461
- version = "1.0.42"
461
+ version = "1.0.43"
462
462
  source = "registry+https://github.com/rust-lang/crates.io-index"
463
- checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"
463
+ checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a"
464
464
  dependencies = [
465
465
  "proc-macro2",
466
466
  ]
@@ -483,9 +483,9 @@ dependencies = [
483
483
 
484
484
  [[package]]
485
485
  name = "redox_syscall"
486
- version = "0.6.0"
486
+ version = "0.7.0"
487
487
  source = "registry+https://github.com/rust-lang/crates.io-index"
488
- checksum = "ec96166dafa0886eb81fe1c0a388bece180fbef2135f97c1e2cf8302e74b43b5"
488
+ checksum = "49f3fe0889e69e2ae9e41f4d6c4c0181701d00e4697b356fb1f74173a5e0ee27"
489
489
  dependencies = [
490
490
  "bitflags",
491
491
  ]
@@ -509,9 +509,9 @@ checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58"
509
509
 
510
510
  [[package]]
511
511
  name = "rustix"
512
- version = "1.1.2"
512
+ version = "1.1.3"
513
513
  source = "registry+https://github.com/rust-lang/crates.io-index"
514
- checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e"
514
+ checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34"
515
515
  dependencies = [
516
516
  "bitflags",
517
517
  "errno",
@@ -526,12 +526,6 @@ version = "1.0.22"
526
526
  source = "registry+https://github.com/rust-lang/crates.io-index"
527
527
  checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
528
528
 
529
- [[package]]
530
- name = "ryu"
531
- version = "1.0.21"
532
- source = "registry+https://github.com/rust-lang/crates.io-index"
533
- checksum = "62049b2877bf12821e8f9ad256ee38fdc31db7387ec2d3b3f403024de2034aea"
534
-
535
529
  [[package]]
536
530
  name = "same-file"
537
531
  version = "1.0.6"
@@ -573,15 +567,15 @@ dependencies = [
573
567
 
574
568
  [[package]]
575
569
  name = "serde_json"
576
- version = "1.0.145"
570
+ version = "1.0.149"
577
571
  source = "registry+https://github.com/rust-lang/crates.io-index"
578
- checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c"
572
+ checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
579
573
  dependencies = [
580
574
  "itoa",
581
575
  "memchr",
582
- "ryu",
583
576
  "serde",
584
577
  "serde_core",
578
+ "zmij",
585
579
  ]
586
580
 
587
581
  [[package]]
@@ -592,9 +586,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
592
586
 
593
587
  [[package]]
594
588
  name = "syn"
595
- version = "2.0.111"
589
+ version = "2.0.114"
596
590
  source = "registry+https://github.com/rust-lang/crates.io-index"
597
- checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87"
591
+ checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a"
598
592
  dependencies = [
599
593
  "proc-macro2",
600
594
  "quote",
@@ -861,6 +855,12 @@ dependencies = [
861
855
  "rustix",
862
856
  ]
863
857
 
858
+ [[package]]
859
+ name = "zmij"
860
+ version = "1.0.12"
861
+ source = "registry+https://github.com/rust-lang/crates.io-index"
862
+ checksum = "2fc5a66a20078bf1251bde995aa2fdcc4b800c70b5d92dd2c62abc5c60f679f8"
863
+
864
864
  [[package]]
865
865
  name = "zstd"
866
866
  version = "0.13.3"
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "pyvegh"
3
- version = "0.4.0"
3
+ version = "0.6.0"
4
4
  edition = "2024"
5
5
  authors = ["CodeTease"]
6
6
  readme = "README.md"
@@ -14,7 +14,6 @@ pyo3 = { version = "0.27.1", features = ["extension-module", "abi3-py38"] }
14
14
 
15
15
  # Core Logic Deps
16
16
  tar = "0.4"
17
- # Kích hoạt zstdmt (multithread) cho zstd
18
17
  zstd = { version = "0.13", features = ["zstdmt"] }
19
18
  ignore = "0.4"
20
19
 
@@ -1,3 +1,31 @@
1
+ Metadata-Version: 2.4
2
+ Name: pyvegh
3
+ Version: 0.6.0
4
+ Classifier: Programming Language :: Python :: 3.10
5
+ Classifier: Programming Language :: Python :: 3.11
6
+ Classifier: Programming Language :: Python :: 3.12
7
+ Classifier: Programming Language :: Python :: 3.13
8
+ Classifier: Programming Language :: Python :: 3.14
9
+ Classifier: Programming Language :: Python :: 3.15
10
+ Classifier: Programming Language :: Python :: 3 :: Only
11
+ Classifier: Programming Language :: Rust
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Topic :: Software Development :: Libraries
15
+ Classifier: Topic :: Utilities
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: Development Status :: 5 - Production/Stable
18
+ Requires-Dist: typer>=0.20.0
19
+ Requires-Dist: rich>=14.2.0
20
+ Requires-Dist: shellingham>=1.5.4
21
+ Requires-Dist: requests>=2.32.5
22
+ License-File: LICENSE
23
+ Summary: Python bindings for Vegh - The Snapshot Tool.
24
+ Keywords: snapshot,backup,rust,binding,loc,analytics
25
+ Author: CodeTease
26
+ Requires-Python: >=3.10
27
+ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
28
+
1
29
  # 🥬 PyVegh
2
30
 
3
31
  **PyVegh** is the official Python binding for the Vegh snapshot engine, developed by **CodeTease**.
@@ -9,7 +37,8 @@ It delivers the raw performance of Rust (Zstd multithreaded compression, Tar arc
9
37
  ## Features
10
38
 
11
39
  * **Blazing Fast:** Core logic is implemented in Rust using PyO3, utilizing **Zstd Multithreading** and the next-gen **Blake3** hashing algorithm.
12
- * **Analytics Dashboard:** Instantly visualize your project's Lines of Code (LOC) with a beautiful terminal dashboard—no extraction required.
40
+ * **AI-Ready Context:** Generate clean, token-optimized XML prompts for ChatGPT/Claude in milliseconds.
41
+ * **Analytics Dashboard:** Instantly visualize your project's Lines of Code (LOC) with a beautiful terminal dashboard, no extraction required.
13
42
  * **Dry-Run Mode:** Simulate snapshot creation to check file sizes and detect sensitive data risks before packing.
14
43
  * **Integrity v2:** Verify data integrity at lightning speed with **Blake3** and inspect metadata (author, timestamp, tool version) without unpacking.
15
44
  * **Smart Upload:** Built-in `send` command supporting concurrent **Chunked Uploads** for large files.
@@ -22,7 +51,7 @@ It delivers the raw performance of Rust (Zstd multithreaded compression, Tar arc
22
51
  Install directly from PyPI:
23
52
  ```bash
24
53
  pip install pyvegh
25
- ````
54
+ ```
26
55
 
27
56
  Or build from source (requires Rust):
28
57
 
@@ -41,7 +70,13 @@ Set up your default server URL and Auth Token so you don't have to type them eve
41
70
  ```bash
42
71
  vegh config
43
72
  # Or one-liner:
44
- vegh config --url https://api.teaserverse.online/test --auth YOUR_TOKEN
73
+ vegh config send --url https://api.teaserverse.online/test --auth YOUR_TOKEN
74
+
75
+ # List current configuration
76
+ vegh config list
77
+
78
+ # Reset configuration to defaults
79
+ vegh config reset
45
80
  ```
46
81
 
47
82
  ### 2\. Create Snapshot
@@ -56,15 +91,49 @@ vegh snap ./my-project --output backup.vegh
56
91
  vegh snap ./my-project --dry-run
57
92
  ```
58
93
 
59
- ### 3\. Analytics
94
+ ### 3\. LOC
60
95
 
61
- View the CodeTease Analytics Dashboard to break down your project by language and lines of code.
96
+ View the Analytics Dashboard to break down your project by language and lines of code.
62
97
 
63
98
  ```bash
64
99
  vegh loc backup.vegh
100
+
101
+ # Show Source Lines of Code (SLOC) instead of total LOC
102
+ # Excludes blank lines and comments
103
+ vegh loc backup.vegh --sloc
65
104
  ```
66
105
 
67
- ### 4\. Inspect & Verify
106
+ ### 4\. Prompt
107
+
108
+ Generate a structured XML context of your codebase to feed directly into ChatGPT, Claude, or Gemini.
109
+ ```bash
110
+ # Generate XML context to stdout
111
+ vegh prompt .
112
+
113
+ # Clean Mode (Recommended):
114
+ # Removes lock files (package-lock.json, Cargo.lock), logs, secrets and other unnecessary files.
115
+ vegh prompt . --clean
116
+
117
+ # Copy to Clipboard (One-shot):
118
+ vegh prompt . --clean --copy
119
+
120
+ # Save to file
121
+ vegh prompt . --clean --output context.xml
122
+ ```
123
+
124
+ ### 5\. Prune
125
+
126
+ Clean up old snapshots to free disk space.
127
+
128
+ ```bash
129
+ # Keep only the 5 most recent snapshots in the current directory
130
+ vegh prune --keep 5
131
+
132
+ # Force clean without confirmation (useful for CI/CD)
133
+ vegh prune --keep 1 --force
134
+ ```
135
+
136
+ ### 6\. Check
68
137
 
69
138
  Check file integrity (Blake3) and view embedded metadata.
70
139
 
@@ -72,7 +141,7 @@ Check file integrity (Blake3) and view embedded metadata.
72
141
  vegh check backup.vegh
73
142
  ```
74
143
 
75
- ### 5\. Restore
144
+ ### 7\. Restore
76
145
 
77
146
  Restore the snapshot to a target directory. Supports **Partial Restore**.
78
147
 
@@ -82,9 +151,12 @@ vegh restore backup.vegh ./restored-folder
82
151
 
83
152
  # Partial restore (Specific files or folders)
84
153
  vegh restore backup.vegh ./restored-folder --path src/main.rs --path config/
154
+
155
+ # Flatten directory structure (Extract files directly to output dir)
156
+ vegh restore backup.vegh ./restored-folder --flatten
85
157
  ```
86
158
 
87
- ### 6\. Peek & Diff
159
+ ### 8\. Cat & Diff
88
160
 
89
161
  Inspect content without extracting.
90
162
 
@@ -92,20 +164,23 @@ Inspect content without extracting.
92
164
  # View a file's content inside the snapshot
93
165
  vegh cat backup.vegh src/main.rs
94
166
 
167
+ # View raw content (Useful for piping binary files)
168
+ vegh cat backup.vegh image.png --raw > extracted_image.png
169
+
95
170
  # Compare snapshot with a directory
96
171
  vegh diff backup.vegh ./current-project
97
172
  ```
98
173
 
99
- ### 7\. Send
174
+ ### 9\. Send
100
175
 
101
- Send the snapshot to a remote server. PyVegh now supports **Chunked Uploads** for reliability.
176
+ Send the snapshot to a remote server. Supports **Chunked Uploads** for reliability.
102
177
 
103
178
  ```bash
104
179
  # Auto-detects if chunking is needed, or force it:
105
180
  vegh send backup.vegh --force-chunk
106
181
  ```
107
182
 
108
- ### 8\. Doctor
183
+ ### 10\. Doctor
109
184
 
110
185
  Check your environment and installation health.
111
186
 
@@ -113,7 +188,7 @@ Check your environment and installation health.
113
188
  vegh doctor
114
189
  ```
115
190
 
116
- ### 9\. Hooks example
191
+ ### 11\. Hooks example
117
192
 
118
193
  Create a `.veghhooks.json` in your workspace.
119
194
 
@@ -163,3 +238,4 @@ restore_snap("backup.vegh", "dest_folder")
163
238
  ## License
164
239
 
165
240
  This project is under the **MIT License**.
241
+
@@ -1,17 +1,3 @@
1
- Metadata-Version: 2.4
2
- Name: pyvegh
3
- Version: 0.4.0
4
- Requires-Dist: typer>=0.20.0
5
- Requires-Dist: rich>=14.2.0
6
- Requires-Dist: shellingham>=1.5.4
7
- Requires-Dist: requests>=2.32.5
8
- License-File: LICENSE
9
- Summary: Python bindings for Vegh - The Snapshot Tool.
10
- Keywords: snapshot,backup,rust,binding,loc,analytics
11
- Author: CodeTease
12
- Requires-Python: >=3.10
13
- Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
14
-
15
1
  # 🥬 PyVegh
16
2
 
17
3
  **PyVegh** is the official Python binding for the Vegh snapshot engine, developed by **CodeTease**.
@@ -23,7 +9,8 @@ It delivers the raw performance of Rust (Zstd multithreaded compression, Tar arc
23
9
  ## Features
24
10
 
25
11
  * **Blazing Fast:** Core logic is implemented in Rust using PyO3, utilizing **Zstd Multithreading** and the next-gen **Blake3** hashing algorithm.
26
- * **Analytics Dashboard:** Instantly visualize your project's Lines of Code (LOC) with a beautiful terminal dashboard—no extraction required.
12
+ * **AI-Ready Context:** Generate clean, token-optimized XML prompts for ChatGPT/Claude in milliseconds.
13
+ * **Analytics Dashboard:** Instantly visualize your project's Lines of Code (LOC) with a beautiful terminal dashboard, no extraction required.
27
14
  * **Dry-Run Mode:** Simulate snapshot creation to check file sizes and detect sensitive data risks before packing.
28
15
  * **Integrity v2:** Verify data integrity at lightning speed with **Blake3** and inspect metadata (author, timestamp, tool version) without unpacking.
29
16
  * **Smart Upload:** Built-in `send` command supporting concurrent **Chunked Uploads** for large files.
@@ -36,7 +23,7 @@ It delivers the raw performance of Rust (Zstd multithreaded compression, Tar arc
36
23
  Install directly from PyPI:
37
24
  ```bash
38
25
  pip install pyvegh
39
- ````
26
+ ```
40
27
 
41
28
  Or build from source (requires Rust):
42
29
 
@@ -55,7 +42,13 @@ Set up your default server URL and Auth Token so you don't have to type them eve
55
42
  ```bash
56
43
  vegh config
57
44
  # Or one-liner:
58
- vegh config --url https://api.teaserverse.online/test --auth YOUR_TOKEN
45
+ vegh config send --url https://api.teaserverse.online/test --auth YOUR_TOKEN
46
+
47
+ # List current configuration
48
+ vegh config list
49
+
50
+ # Reset configuration to defaults
51
+ vegh config reset
59
52
  ```
60
53
 
61
54
  ### 2\. Create Snapshot
@@ -70,15 +63,49 @@ vegh snap ./my-project --output backup.vegh
70
63
  vegh snap ./my-project --dry-run
71
64
  ```
72
65
 
73
- ### 3\. Analytics
66
+ ### 3\. LOC
74
67
 
75
- View the CodeTease Analytics Dashboard to break down your project by language and lines of code.
68
+ View the Analytics Dashboard to break down your project by language and lines of code.
76
69
 
77
70
  ```bash
78
71
  vegh loc backup.vegh
72
+
73
+ # Show Source Lines of Code (SLOC) instead of total LOC
74
+ # Excludes blank lines and comments
75
+ vegh loc backup.vegh --sloc
79
76
  ```
80
77
 
81
- ### 4\. Inspect & Verify
78
+ ### 4\. Prompt
79
+
80
+ Generate a structured XML context of your codebase to feed directly into ChatGPT, Claude, or Gemini.
81
+ ```bash
82
+ # Generate XML context to stdout
83
+ vegh prompt .
84
+
85
+ # Clean Mode (Recommended):
86
+ # Removes lock files (package-lock.json, Cargo.lock), logs, secrets and other unnecessary files.
87
+ vegh prompt . --clean
88
+
89
+ # Copy to Clipboard (One-shot):
90
+ vegh prompt . --clean --copy
91
+
92
+ # Save to file
93
+ vegh prompt . --clean --output context.xml
94
+ ```
95
+
96
+ ### 5\. Prune
97
+
98
+ Clean up old snapshots to free disk space.
99
+
100
+ ```bash
101
+ # Keep only the 5 most recent snapshots in the current directory
102
+ vegh prune --keep 5
103
+
104
+ # Force clean without confirmation (useful for CI/CD)
105
+ vegh prune --keep 1 --force
106
+ ```
107
+
108
+ ### 6\. Check
82
109
 
83
110
  Check file integrity (Blake3) and view embedded metadata.
84
111
 
@@ -86,7 +113,7 @@ Check file integrity (Blake3) and view embedded metadata.
86
113
  vegh check backup.vegh
87
114
  ```
88
115
 
89
- ### 5\. Restore
116
+ ### 7\. Restore
90
117
 
91
118
  Restore the snapshot to a target directory. Supports **Partial Restore**.
92
119
 
@@ -96,9 +123,12 @@ vegh restore backup.vegh ./restored-folder
96
123
 
97
124
  # Partial restore (Specific files or folders)
98
125
  vegh restore backup.vegh ./restored-folder --path src/main.rs --path config/
126
+
127
+ # Flatten directory structure (Extract files directly to output dir)
128
+ vegh restore backup.vegh ./restored-folder --flatten
99
129
  ```
100
130
 
101
- ### 6\. Peek & Diff
131
+ ### 8\. Cat & Diff
102
132
 
103
133
  Inspect content without extracting.
104
134
 
@@ -106,20 +136,23 @@ Inspect content without extracting.
106
136
  # View a file's content inside the snapshot
107
137
  vegh cat backup.vegh src/main.rs
108
138
 
139
+ # View raw content (Useful for piping binary files)
140
+ vegh cat backup.vegh image.png --raw > extracted_image.png
141
+
109
142
  # Compare snapshot with a directory
110
143
  vegh diff backup.vegh ./current-project
111
144
  ```
112
145
 
113
- ### 7\. Send
146
+ ### 9\. Send
114
147
 
115
- Send the snapshot to a remote server. PyVegh now supports **Chunked Uploads** for reliability.
148
+ Send the snapshot to a remote server. Supports **Chunked Uploads** for reliability.
116
149
 
117
150
  ```bash
118
151
  # Auto-detects if chunking is needed, or force it:
119
152
  vegh send backup.vegh --force-chunk
120
153
  ```
121
154
 
122
- ### 8\. Doctor
155
+ ### 10\. Doctor
123
156
 
124
157
  Check your environment and installation health.
125
158
 
@@ -127,7 +160,7 @@ Check your environment and installation health.
127
160
  vegh doctor
128
161
  ```
129
162
 
130
- ### 9\. Hooks example
163
+ ### 11\. Hooks example
131
164
 
132
165
  Create a `.veghhooks.json` in your workspace.
133
166
 
@@ -177,4 +210,3 @@ restore_snap("backup.vegh", "dest_folder")
177
210
  ## License
178
211
 
179
212
  This project is under the **MIT License**.
180
-
@@ -0,0 +1,44 @@
1
+ [build-system]
2
+ requires = ["maturin>=1.0,<2.0"]
3
+ build-backend = "maturin"
4
+
5
+ [project]
6
+ name = "pyvegh"
7
+ version = "0.6.0"
8
+ description = "Python bindings for Vegh - The Snapshot Tool."
9
+ authors = [{name = "CodeTease"}]
10
+ readme = "README.md"
11
+ requires-python = ">=3.10"
12
+ keywords = ["snapshot", "backup", "rust", "binding", "loc", "analytics"]
13
+ classifiers = [
14
+ "Programming Language :: Python :: 3.10",
15
+ "Programming Language :: Python :: 3.11",
16
+ "Programming Language :: Python :: 3.12",
17
+ "Programming Language :: Python :: 3.13",
18
+ "Programming Language :: Python :: 3.14",
19
+ "Programming Language :: Python :: 3.15",
20
+ "Programming Language :: Python :: 3 :: Only",
21
+ "Programming Language :: Rust",
22
+ "License :: OSI Approved :: MIT License",
23
+ "Operating System :: OS Independent",
24
+ "Topic :: Software Development :: Libraries",
25
+ "Topic :: Utilities",
26
+ "Intended Audience :: Developers",
27
+ "Development Status :: 5 - Production/Stable",
28
+ ]
29
+ license = {file = "LICENSE"}
30
+ dependencies = [
31
+ "typer>=0.20.0",
32
+ "rich>=14.2.0",
33
+ "shellingham>=1.5.4",
34
+ "requests>=2.32.5",
35
+ ]
36
+
37
+ [project.scripts]
38
+ vegh = "vegh.cli:app" # CLI entry point
39
+ pyvegh = "vegh.cli:app" # Alternate
40
+
41
+ [tool.maturin]
42
+ features = ["pyo3/extension-module"]
43
+ python-source = "python"
44
+ module-name = "vegh._core" # Maps Rust binary to vegh._core
@@ -0,0 +1,24 @@
1
+ # PyVegh - The CodeTease Snapshot Tool (Python Binding)
2
+ # Copyright (c) 2025 CodeTease
3
+
4
+ from ._core import (
5
+ create_snap,
6
+ dry_run_snap,
7
+ restore_snap,
8
+ check_integrity,
9
+ get_metadata,
10
+ count_locs,
11
+ scan_locs_dir,
12
+ )
13
+
14
+ __version__ = "0.6.0"
15
+ __all__ = [
16
+ "create_snap",
17
+ "dry_run_snap",
18
+ "restore_snap",
19
+ "check_integrity",
20
+ "get_metadata",
21
+ "count_locs",
22
+ "scan_locs_dir",
23
+ "__version__",
24
+ ]