@mcptoolshop/venvkit 0.2.0 → 0.2.5
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.
- package/README.es.md +263 -0
- package/README.fr.md +263 -0
- package/README.hi.md +267 -0
- package/README.it.md +263 -0
- package/README.ja.md +263 -0
- package/README.md +17 -3
- package/README.pt-BR.md +263 -0
- package/README.zh.md +263 -0
- package/package.json +69 -58
- package/dist/doctorLite.d.ts +0 -75
- package/dist/doctorLite.d.ts.map +0 -1
- package/dist/doctorLite.js +0 -705
- package/dist/doctorLite.js.map +0 -1
- package/dist/doctorLite.test.d.ts +0 -2
- package/dist/doctorLite.test.d.ts.map +0 -1
- package/dist/doctorLite.test.js +0 -268
- package/dist/doctorLite.test.js.map +0 -1
- package/dist/index.d.ts +0 -6
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -6
- package/dist/index.js.map +0 -1
- package/dist/integration.test.d.ts +0 -2
- package/dist/integration.test.d.ts.map +0 -1
- package/dist/integration.test.js +0 -245
- package/dist/integration.test.js.map +0 -1
- package/dist/mapRender.d.ts +0 -105
- package/dist/mapRender.d.ts.map +0 -1
- package/dist/mapRender.js +0 -718
- package/dist/mapRender.js.map +0 -1
- package/dist/mapRender.test.d.ts +0 -2
- package/dist/mapRender.test.d.ts.map +0 -1
- package/dist/mapRender.test.js +0 -571
- package/dist/mapRender.test.js.map +0 -1
- package/dist/map_cli.d.ts +0 -3
- package/dist/map_cli.d.ts.map +0 -1
- package/dist/map_cli.js +0 -278
- package/dist/map_cli.js.map +0 -1
- package/dist/map_cli.test.d.ts +0 -2
- package/dist/map_cli.test.d.ts.map +0 -1
- package/dist/map_cli.test.js +0 -276
- package/dist/map_cli.test.js.map +0 -1
- package/dist/runLog.d.ts +0 -71
- package/dist/runLog.d.ts.map +0 -1
- package/dist/runLog.js +0 -98
- package/dist/runLog.js.map +0 -1
- package/dist/runLog.test.d.ts +0 -2
- package/dist/runLog.test.d.ts.map +0 -1
- package/dist/runLog.test.js +0 -327
- package/dist/runLog.test.js.map +0 -1
- package/dist/scanEnvPaths.d.ts +0 -18
- package/dist/scanEnvPaths.d.ts.map +0 -1
- package/dist/scanEnvPaths.js +0 -174
- package/dist/scanEnvPaths.js.map +0 -1
- package/dist/scanEnvPaths.test.d.ts +0 -2
- package/dist/scanEnvPaths.test.d.ts.map +0 -1
- package/dist/scanEnvPaths.test.js +0 -250
- package/dist/scanEnvPaths.test.js.map +0 -1
- package/dist/taskCluster.d.ts +0 -62
- package/dist/taskCluster.d.ts.map +0 -1
- package/dist/taskCluster.js +0 -180
- package/dist/taskCluster.js.map +0 -1
- package/dist/taskCluster.test.d.ts +0 -2
- package/dist/taskCluster.test.d.ts.map +0 -1
- package/dist/taskCluster.test.js +0 -375
- package/dist/taskCluster.test.js.map +0 -1
- package/dist/vitest.config.d.ts +0 -3
- package/dist/vitest.config.d.ts.map +0 -1
- package/dist/vitest.config.js +0 -8
- package/dist/vitest.config.js.map +0 -1
package/README.hi.md
ADDED
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="README.md">English</a> | <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/venvkit/readme.png" alt="venvkit" width="400">
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
# वीएनवीकिट (venvkit)
|
|
10
|
+
|
|
11
|
+
यह [MCP टूल शॉप](https://mcptoolshop.com) का एक हिस्सा है।
|
|
12
|
+
|
|
13
|
+
<p align="center">
|
|
14
|
+
<a href="https://github.com/mcp-tool-shop-org/venvkit/actions/workflows/ci.yml"><img src="https://github.com/mcp-tool-shop-org/venvkit/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
15
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square" alt="License: MIT"></a>
|
|
16
|
+
<a href="https://mcp-tool-shop-org.github.io/venvkit/"><img src="https://img.shields.io/badge/Landing_Page-live-blue?style=flat-square" alt="Landing Page"></a>
|
|
17
|
+
<a href="https://www.npmjs.com/package/@mcptoolshop/venvkit"><img src="https://img.shields.io/npm/v/@mcptoolshop/venvkit?style=flat-square&color=cb3837" alt="npm version"></a>
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
विंडोज मशीन लर्निंग (एमएल) वर्कफ़्लो के लिए पायथन वर्चुअल एनवायरनमेंट डायग्नोस्टिक टूलकिट।
|
|
21
|
+
|
|
22
|
+
यह आपके सिस्टम में मौजूद पाइथन वातावरण की जांच करता है, संभावित समस्याओं (जैसे एसएसएल, डीएलएल, एबीआई में असंगति, पाथ लीकेज) का पता लगाता है, कार्यों के निष्पादन इतिहास को ट्रैक करता है, अस्थिर कार्यों की पहचान करता है, और एक पारिस्थितिकी तंत्र का मानचित्र प्रदर्शित करता है।
|
|
23
|
+
|
|
24
|
+
## 30 सेकंड में त्वरित शुरुआत।
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
git clone https://github.com/mcp-tool-shop-org/venvkit && cd venvkit
|
|
28
|
+
npm install && npm run build
|
|
29
|
+
node dist/map_cli.js --root C:\projects --httpsProbe
|
|
30
|
+
# Open .venvkit/venv-map.html in your browser
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## विशेषताएं।
|
|
34
|
+
|
|
35
|
+
- **डॉक्टरलाइट** - किसी भी पायथन इंटरप्रेटर के लिए त्वरित स्वास्थ्य जांच।
|
|
36
|
+
- एसएसएल/टीएलएस सत्यापन।
|
|
37
|
+
- डीएलएल लोड होने में विफलता (पायटॉर्च/CUDA के साथ आम)।
|
|
38
|
+
- एबीआई (एप्लिकेशन बाइनरी इंटरफेस) में असंगति (एआरएम बनाम एक्स86)।
|
|
39
|
+
- पिप की बुनियादी जांच।
|
|
40
|
+
- उपयोगकर्ता साइट और PYTHONPATH से संबंधित समस्याओं का पता लगाना।
|
|
41
|
+
|
|
42
|
+
- **scanEnvPaths** - आपके सिस्टम पर मौजूद सभी पाइथन वातावरणों की खोज करें।
|
|
43
|
+
- यह वर्चुअल एनवायरनमेंट (venv), कोंडा एनवायरनमेंट, पायएनव संस्करण और बेस इंटरप्रेटर को ढूंढता है।
|
|
44
|
+
- इसकी गहराई और फ़िल्टरिंग को अनुकूलित किया जा सकता है।
|
|
45
|
+
|
|
46
|
+
- **मैप रेंडर (mapRender)** - अपने पाइथन इकोसिस्टम को दृश्यमान बनाएं।
|
|
47
|
+
- प्रोग्रामेटिक उपयोग के लिए ग्राफ जेएसओएन आउटपुट।
|
|
48
|
+
- दस्तावेज़ों के लिए मर्मेड आरेख।
|
|
49
|
+
- बेस इंटरप्रेटर समूहों का वर्गीकरण और संभावित प्रभाव विश्लेषण।
|
|
50
|
+
- कार्य रूटिंग का दृश्य प्रदर्शन।
|
|
51
|
+
|
|
52
|
+
- **रन लॉग (runLog)** - कार्यों के निष्पादन इतिहास को ट्रैक करता है।
|
|
53
|
+
- यह केवल डेटा जोड़ने की अनुमति देने वाले JSONL प्रारूप में होता है।
|
|
54
|
+
- यह रिकॉर्ड करता है कि किस वातावरण में कौन सा कार्य चलाया गया था।
|
|
55
|
+
- यह सफलता/विफलता को त्रुटि वर्गीकरण के साथ दर्ज करता है।
|
|
56
|
+
|
|
57
|
+
- **टास्कक्लस्टर:** हस्ताक्षर के आधार पर कार्यों के परिणामों का एकत्रीकरण।
|
|
58
|
+
- अस्थिर कार्यों का पता लगाना (असंगत पास/विफल परिणाम)।
|
|
59
|
+
- वातावरण पर निर्भर अस्थिरता का पता लगाना।
|
|
60
|
+
- विफलता के मुख्य कारणों की पहचान।
|
|
61
|
+
- संक्रामक विश्लेषण (साझा मूल कारण)।
|
|
62
|
+
|
|
63
|
+
## स्थापना।
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
npm install
|
|
67
|
+
npm run build
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## कमांड लाइन इंटरफेस (सीएलआई) का उपयोग
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
# Scan current directory and generate ecosystem map
|
|
74
|
+
node dist/map_cli.js
|
|
75
|
+
|
|
76
|
+
# Scan specific directories
|
|
77
|
+
node dist/map_cli.js --root C:\projects --root D:\ml-experiments
|
|
78
|
+
|
|
79
|
+
# Include task run history
|
|
80
|
+
node dist/map_cli.js --runlog .venvkit/runs.jsonl
|
|
81
|
+
|
|
82
|
+
# Output options
|
|
83
|
+
node dist/map_cli.js --out ./output --minScore 50 --strict --httpsProbe
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### कमांड लाइन विकल्प।
|
|
87
|
+
|
|
88
|
+
| Flag | विवरण। |
|
|
89
|
+
| "Please provide the English text you would like me to translate into Hindi." | कृपया वह अंग्रेजी पाठ प्रदान करें जिसका आप हिंदी में अनुवाद करवाना चाहते हैं। |
|
|
90
|
+
| `--root, -r` | स्कैन करने के लिए फ़ोल्डर (आप एक से अधिक फ़ोल्डर भी निर्दिष्ट कर सकते हैं)। |
|
|
91
|
+
| `--out` | आउटपुट डायरेक्टरी (डिफ़ॉल्ट: `.venvkit`) |
|
|
92
|
+
| `--maxDepth` | स्कैन करने के लिए अधिकतम फ़ोल्डर की गहराई (डिफ़ॉल्ट: 5)। |
|
|
93
|
+
| `--strict` | सख्त मोड की जांच सक्षम करें। |
|
|
94
|
+
| `--httpsProbe` | एचटीटीपीएस कनेक्टिविटी का परीक्षण करें। |
|
|
95
|
+
| `--minScore` | इस स्वास्थ्य स्कोर से नीचे के वातावरणों को फ़िल्टर करें। |
|
|
96
|
+
| `--concurrency` | समानांतर जांच (डिफ़ॉल्ट: सीपीयू की संख्या)। |
|
|
97
|
+
| `--runlog` | टास्क रन लॉग (JSONL) तक पहुंचने का रास्ता। |
|
|
98
|
+
| `--no-tasks` | कार्य प्रदर्शन का दृश्य छोड़ें। |
|
|
99
|
+
|
|
100
|
+
### परिणाम।
|
|
101
|
+
|
|
102
|
+
| File | विवरण। |
|
|
103
|
+
| "Please provide the English text you would like me to translate into Hindi." | कृपया वह अंग्रेजी पाठ प्रदान करें जिसका आप हिंदी में अनुवाद करवाना चाहते हैं। |
|
|
104
|
+
| `venv-map.json` | पूरा ग्राफ डेटा (नोड, किनारे, सारांश)। |
|
|
105
|
+
| `venv-map.mmd` | मर्मेड आरेख का स्रोत। |
|
|
106
|
+
| `venv-map.html` | इंटरैक्टिव दर्शक। |
|
|
107
|
+
| `reports.json` | अद्यतित डॉक्टरलाइट रिपोर्ट (बिना किसी प्रसंस्करण के)। |
|
|
108
|
+
| `insights.json` | कार्यान्वयन योग्य सुझाव। |
|
|
109
|
+
|
|
110
|
+
## प्रोग्रामेटिक उपयोग।
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
import { doctorLite, scanEnvPaths, mapRender, readRunLog } from 'venvkit';
|
|
114
|
+
|
|
115
|
+
// Check a specific Python
|
|
116
|
+
const report = await doctorLite({
|
|
117
|
+
pythonPath: 'C:\\project\\.venv\\Scripts\\python.exe',
|
|
118
|
+
requiredModules: ['torch', 'transformers'],
|
|
119
|
+
httpsProbe: true,
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
console.log(report.status); // 'good' | 'warn' | 'bad'
|
|
123
|
+
console.log(report.score); // 0-100
|
|
124
|
+
console.log(report.findings); // Array of issues
|
|
125
|
+
|
|
126
|
+
// Scan for all Python environments
|
|
127
|
+
const scan = await scanEnvPaths({
|
|
128
|
+
roots: ['C:\\projects'],
|
|
129
|
+
maxDepth: 5,
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
// Run doctorLite on all found environments
|
|
133
|
+
const reports = await Promise.all(
|
|
134
|
+
scan.pythonPaths.map(p => doctorLite({ pythonPath: p }))
|
|
135
|
+
);
|
|
136
|
+
|
|
137
|
+
// Load task execution history
|
|
138
|
+
const runs = await readRunLog('.venvkit/runs.jsonl');
|
|
139
|
+
|
|
140
|
+
// Generate ecosystem visualization
|
|
141
|
+
const { graph, mermaid, insights } = mapRender(reports, runs, {
|
|
142
|
+
taskMode: 'clustered', // 'none' | 'runs' | 'clustered'
|
|
143
|
+
includeHotEdgeLabels: true,
|
|
144
|
+
});
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## रन लॉग स्कीमा।
|
|
148
|
+
|
|
149
|
+
कार्यों के निष्पादन को ट्रैक करने के लिए, घटनाओं को एक JSONL फ़ाइल में जोड़ें:
|
|
150
|
+
|
|
151
|
+
```typescript
|
|
152
|
+
import { appendRunLog, newRunId } from 'venvkit';
|
|
153
|
+
|
|
154
|
+
await appendRunLog('.venvkit/runs.jsonl', {
|
|
155
|
+
version: '1.0',
|
|
156
|
+
runId: newRunId(),
|
|
157
|
+
at: new Date().toISOString(),
|
|
158
|
+
task: {
|
|
159
|
+
name: 'train',
|
|
160
|
+
command: 'python train.py --epochs 10',
|
|
161
|
+
requirements: { packages: ['torch', 'transformers'] },
|
|
162
|
+
},
|
|
163
|
+
selected: {
|
|
164
|
+
pythonPath: 'C:\\project\\.venv\\Scripts\\python.exe',
|
|
165
|
+
score: 95,
|
|
166
|
+
status: 'good',
|
|
167
|
+
},
|
|
168
|
+
outcome: {
|
|
169
|
+
ok: true,
|
|
170
|
+
exitCode: 0,
|
|
171
|
+
durationMs: 45000,
|
|
172
|
+
},
|
|
173
|
+
});
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## कार्य समूहीकरण।
|
|
177
|
+
|
|
178
|
+
जब आपके पास कई कार्य (टास्क) चल रहे होते हैं, तो venvkit उन्हें उनके "सिग्नेचर" के आधार पर समूहीकृत करता है।
|
|
179
|
+
|
|
180
|
+
```typescript
|
|
181
|
+
import { clusterRuns, isFlaky, getFailingEnvs } from 'venvkit';
|
|
182
|
+
|
|
183
|
+
const clusters = clusterRuns(runs);
|
|
184
|
+
|
|
185
|
+
for (const c of clusters) {
|
|
186
|
+
console.log(`${c.sig.name}: ${c.ok}/${c.runs} (${(c.successRate * 100).toFixed(0)}%)`);
|
|
187
|
+
|
|
188
|
+
if (isFlaky(c)) {
|
|
189
|
+
console.log(` WARNING: Flaky task!`);
|
|
190
|
+
const badEnvs = getFailingEnvs(c, 3);
|
|
191
|
+
console.log(` Failing most on: ${badEnvs.map(e => e.pythonPath).join(', ')}`);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## ग्राफ स्कीमा।
|
|
197
|
+
|
|
198
|
+
`mapRender` का आउटपुट एक स्थिर JSON स्कीमा का पालन करता है:
|
|
199
|
+
|
|
200
|
+
```typescript
|
|
201
|
+
type GraphJSONv1 = {
|
|
202
|
+
version: '1.0';
|
|
203
|
+
generatedAt: string;
|
|
204
|
+
host: { os: string; arch: string; hostname: string };
|
|
205
|
+
summary: {
|
|
206
|
+
envCount: number;
|
|
207
|
+
baseCount: number;
|
|
208
|
+
taskCount: number;
|
|
209
|
+
healthy: number;
|
|
210
|
+
warning: number;
|
|
211
|
+
broken: number;
|
|
212
|
+
runsPassed: number;
|
|
213
|
+
runsFailed: number;
|
|
214
|
+
topIssues: Array<{ code: string; count: number; hint: string }>;
|
|
215
|
+
};
|
|
216
|
+
nodes: GraphNode[];
|
|
217
|
+
edges: GraphEdge[];
|
|
218
|
+
};
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### नोड के प्रकार।
|
|
222
|
+
|
|
223
|
+
| Type | विवरण। |
|
|
224
|
+
| "The quick brown fox jumps over the lazy dog."
|
|
225
|
+
|
|
226
|
+
"तेज़ भूरी लोमड़ी आलसी कुत्ते के ऊपर से कूदती है।" | कृपया वह अंग्रेजी पाठ प्रदान करें जिसका आप हिंदी में अनुवाद करवाना चाहते हैं। मैं उसका सटीक और उचित अनुवाद करने के लिए तैयार हूं। |
|
|
227
|
+
| `base` | पायथन इंटरप्रेटर का मूल संस्करण (उदाहरण के लिए, `C:\Python311`)। |
|
|
228
|
+
| `venv` | वर्चुअल वातावरण। |
|
|
229
|
+
| `task` | कार्य हस्ताक्षर (समूहीकृत रन)। |
|
|
230
|
+
|
|
231
|
+
### किनारों के प्रकार।
|
|
232
|
+
|
|
233
|
+
| Type | विवरण। |
|
|
234
|
+
| "The quick brown fox jumps over the lazy dog."
|
|
235
|
+
|
|
236
|
+
"तेज़ भूरी लोमड़ी आलसी कुत्ते के ऊपर से कूदती है।" | कृपया वह अंग्रेजी पाठ प्रदान करें जिसका आप हिंदी में अनुवाद करवाना चाहते हैं। |
|
|
237
|
+
| `USES_BASE` | "venv" और "बेस" के बीच का संबंध। |
|
|
238
|
+
| `ROUTES_TASK_TO` | कार्य → पर्यावरण रूटिंग |
|
|
239
|
+
| `FAILED_RUN` | कार्य → पर्यावरण विफलता (मर्मेड आरेख में डैश के साथ दर्शाया गया) |
|
|
240
|
+
|
|
241
|
+
## कोड्स खोजना।
|
|
242
|
+
|
|
243
|
+
| Code | गंभीरता। | विवरण। |
|
|
244
|
+
| "Please provide the English text you would like me to translate into Hindi." | ज़रूर, मैं आपकी मदद कर सकता हूँ। कृपया वह अंग्रेजी पाठ प्रदान करें जिसका आप हिंदी में अनुवाद करवाना चाहते हैं। | कृपया वह अंग्रेजी पाठ प्रदान करें जिसका आप हिंदी में अनुवाद करवाना चाहते हैं। |
|
|
245
|
+
| `SSL_BROKEN` | bad | एसएसएल मॉड्यूल आयात करने में विफल हो रहा है। |
|
|
246
|
+
| `CERT_STORE_FAIL` | warn | एचटीटीपीएस प्रमाणपत्र की जांच में त्रुटि हुई। |
|
|
247
|
+
| `DLL_LOAD_FAIL` | bad | मूल एक्सटेंशन डीएलएल (DLL) को लोड करने में विफलता। |
|
|
248
|
+
| `ABI_MISMATCH` | bad | बाइनरी असंगति (एआरएम/एक्स86) |
|
|
249
|
+
| `PIP_MISSING` | warn | "पिप" उपलब्ध नहीं है। |
|
|
250
|
+
| `PIP_CHECK_FAIL` | warn | निर्भरता संबंधी टकराव पाए गए। |
|
|
251
|
+
| `USER_SITE_LEAK` | warn | उपयोगकर्ता साइट-पैकेजों को वर्चुअल एनवायरनमेंट में सक्षम किया गया है। |
|
|
252
|
+
| `PYTHONPATH_INJECTED` | warn | PYTHONPATH पर्यावरण चर सेट है। |
|
|
253
|
+
| `ARCH_MISMATCH` | bad | 64-बिट सिस्टम पर 32-बिट पाइथन का उपयोग किया जा रहा है, जबकि 64-बिट की आवश्यकता है। |
|
|
254
|
+
| `PYVENV_CFG_INVALID` | warn | pyvenv.cfg फ़ाइल क्षतिग्रस्त है या गायब है। |
|
|
255
|
+
|
|
256
|
+
## विकास।
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
npm install
|
|
260
|
+
npm run typecheck # Type check
|
|
261
|
+
npm run test # Run tests
|
|
262
|
+
npm run build # Build to dist/
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
## लाइसेंस।
|
|
266
|
+
|
|
267
|
+
एमआईटी।
|
package/README.it.md
ADDED
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="README.md">English</a> | <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/venvkit/readme.png" alt="venvkit" width="400">
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
# venvkit
|
|
10
|
+
|
|
11
|
+
> Parte di [MCP Tool Shop](https://mcptoolshop.com)
|
|
12
|
+
|
|
13
|
+
<p align="center">
|
|
14
|
+
<a href="https://github.com/mcp-tool-shop-org/venvkit/actions/workflows/ci.yml"><img src="https://github.com/mcp-tool-shop-org/venvkit/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
15
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square" alt="License: MIT"></a>
|
|
16
|
+
<a href="https://mcp-tool-shop-org.github.io/venvkit/"><img src="https://img.shields.io/badge/Landing_Page-live-blue?style=flat-square" alt="Landing Page"></a>
|
|
17
|
+
<a href="https://www.npmjs.com/package/@mcptoolshop/venvkit"><img src="https://img.shields.io/npm/v/@mcptoolshop/venvkit?style=flat-square&color=cb3837" alt="npm version"></a>
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
**Kit di strumenti diagnostici per ambienti virtuali Python per i flussi di lavoro di Machine Learning su Windows.**
|
|
21
|
+
|
|
22
|
+
Scansiona il sistema alla ricerca di ambienti Python, diagnostica problemi di salute (SSL, DLL, incompatibilità ABI, perdite di percorsi), tiene traccia della cronologia di esecuzione delle attività, rileva attività instabili e genera una mappa dell'ecosistema.
|
|
23
|
+
|
|
24
|
+
## Guida rapida
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
git clone https://github.com/mcp-tool-shop-org/venvkit && cd venvkit
|
|
28
|
+
npm install && npm run build
|
|
29
|
+
node dist/map_cli.js --root C:\projects --httpsProbe
|
|
30
|
+
# Open .venvkit/venv-map.html in your browser
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Funzionalità
|
|
34
|
+
|
|
35
|
+
- **doctorLite** - Controllo rapido dello stato di salute per qualsiasi interprete Python
|
|
36
|
+
- Verifica SSL/TLS
|
|
37
|
+
- Errori di caricamento delle DLL (comuni con PyTorch/CUDA)
|
|
38
|
+
- Incompatibilità ABI (ARM vs x86)
|
|
39
|
+
- Controlli di sanità di pip
|
|
40
|
+
- Rilevamento di perdite di `user-site` e `PYTHONPATH`
|
|
41
|
+
|
|
42
|
+
- **scanEnvPaths** - Scopri tutti gli ambienti Python presenti nel tuo sistema
|
|
43
|
+
- Trova ambienti virtuali (venv), ambienti conda, versioni pyenv, interpreti di base
|
|
44
|
+
- Profondità e filtri configurabili
|
|
45
|
+
|
|
46
|
+
- **mapRender** - Visualizza l'ecosistema Python
|
|
47
|
+
- Output in formato JSON per l'uso programmatico
|
|
48
|
+
- Diagrammi Mermaid per la documentazione
|
|
49
|
+
- Raggruppamento degli interpreti di base con analisi del raggio di impatto
|
|
50
|
+
- Visualizzazione del routing delle attività
|
|
51
|
+
|
|
52
|
+
- **runLog** - Tieni traccia della cronologia di esecuzione delle attività
|
|
53
|
+
- Formato JSONL solo per l'aggiunta di dati
|
|
54
|
+
- Registra quale ambiente ha eseguito quale attività
|
|
55
|
+
- Cattura successo/fallimento con classificazione degli errori
|
|
56
|
+
|
|
57
|
+
- **taskCluster** - Aggrega le esecuzioni delle attività in base alla firma
|
|
58
|
+
- Rilevamento di attività instabili (passaggi/fallimenti inconsistenti)
|
|
59
|
+
- Rilevamento di instabilità dipendente dall'ambiente
|
|
60
|
+
- Identificazione dei punti critici di errore
|
|
61
|
+
- Analisi della contaminazione (cause radice condivise)
|
|
62
|
+
|
|
63
|
+
## Installazione
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
npm install
|
|
67
|
+
npm run build
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Utilizzo della CLI
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
# Scan current directory and generate ecosystem map
|
|
74
|
+
node dist/map_cli.js
|
|
75
|
+
|
|
76
|
+
# Scan specific directories
|
|
77
|
+
node dist/map_cli.js --root C:\projects --root D:\ml-experiments
|
|
78
|
+
|
|
79
|
+
# Include task run history
|
|
80
|
+
node dist/map_cli.js --runlog .venvkit/runs.jsonl
|
|
81
|
+
|
|
82
|
+
# Output options
|
|
83
|
+
node dist/map_cli.js --out ./output --minScore 50 --strict --httpsProbe
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Opzioni della CLI
|
|
87
|
+
|
|
88
|
+
| Flag | Descrizione |
|
|
89
|
+
| ------ | ------------- |
|
|
90
|
+
| `--root, -r` | Directory da scansionare (è possibile specificarne più di una) |
|
|
91
|
+
| `--out` | Directory di output (predefinito: `.venvkit`) |
|
|
92
|
+
| `--maxDepth` | Profondità massima delle directory da scansionare (predefinito: 5) |
|
|
93
|
+
| `--strict` | Abilita i controlli in modalità rigorosa |
|
|
94
|
+
| `--httpsProbe` | Testa la connettività HTTPS |
|
|
95
|
+
| `--minScore` | Filtra gli ambienti con un punteggio di salute inferiore a questo valore |
|
|
96
|
+
| `--concurrency` | Controlli paralleli (predefinito: numero di core della CPU) |
|
|
97
|
+
| `--runlog` | Percorso del file di registro delle esecuzioni delle attività (JSONL) |
|
|
98
|
+
| `--no-tasks` | Salta la visualizzazione delle attività |
|
|
99
|
+
|
|
100
|
+
### Output
|
|
101
|
+
|
|
102
|
+
| File | Descrizione |
|
|
103
|
+
| ------ | ------------- |
|
|
104
|
+
| `venv-map.json` | Dati completi del grafico (nodi, archi, riepilogo) |
|
|
105
|
+
| `venv-map.mmd` | Codice sorgente del diagramma Mermaid |
|
|
106
|
+
| `venv-map.html` | Visualizzatore interattivo |
|
|
107
|
+
| `reports.json` | Report raw di doctorLite |
|
|
108
|
+
| `insights.json` | Raccomandazioni attuabili |
|
|
109
|
+
|
|
110
|
+
## Utilizzo programmatico
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
import { doctorLite, scanEnvPaths, mapRender, readRunLog } from 'venvkit';
|
|
114
|
+
|
|
115
|
+
// Check a specific Python
|
|
116
|
+
const report = await doctorLite({
|
|
117
|
+
pythonPath: 'C:\\project\\.venv\\Scripts\\python.exe',
|
|
118
|
+
requiredModules: ['torch', 'transformers'],
|
|
119
|
+
httpsProbe: true,
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
console.log(report.status); // 'good' | 'warn' | 'bad'
|
|
123
|
+
console.log(report.score); // 0-100
|
|
124
|
+
console.log(report.findings); // Array of issues
|
|
125
|
+
|
|
126
|
+
// Scan for all Python environments
|
|
127
|
+
const scan = await scanEnvPaths({
|
|
128
|
+
roots: ['C:\\projects'],
|
|
129
|
+
maxDepth: 5,
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
// Run doctorLite on all found environments
|
|
133
|
+
const reports = await Promise.all(
|
|
134
|
+
scan.pythonPaths.map(p => doctorLite({ pythonPath: p }))
|
|
135
|
+
);
|
|
136
|
+
|
|
137
|
+
// Load task execution history
|
|
138
|
+
const runs = await readRunLog('.venvkit/runs.jsonl');
|
|
139
|
+
|
|
140
|
+
// Generate ecosystem visualization
|
|
141
|
+
const { graph, mermaid, insights } = mapRender(reports, runs, {
|
|
142
|
+
taskMode: 'clustered', // 'none' | 'runs' | 'clustered'
|
|
143
|
+
includeHotEdgeLabels: true,
|
|
144
|
+
});
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Schema del registro delle attività
|
|
148
|
+
|
|
149
|
+
Tieni traccia delle esecuzioni delle attività aggiungendo eventi a un file JSONL:
|
|
150
|
+
|
|
151
|
+
```typescript
|
|
152
|
+
import { appendRunLog, newRunId } from 'venvkit';
|
|
153
|
+
|
|
154
|
+
await appendRunLog('.venvkit/runs.jsonl', {
|
|
155
|
+
version: '1.0',
|
|
156
|
+
runId: newRunId(),
|
|
157
|
+
at: new Date().toISOString(),
|
|
158
|
+
task: {
|
|
159
|
+
name: 'train',
|
|
160
|
+
command: 'python train.py --epochs 10',
|
|
161
|
+
requirements: { packages: ['torch', 'transformers'] },
|
|
162
|
+
},
|
|
163
|
+
selected: {
|
|
164
|
+
pythonPath: 'C:\\project\\.venv\\Scripts\\python.exe',
|
|
165
|
+
score: 95,
|
|
166
|
+
status: 'good',
|
|
167
|
+
},
|
|
168
|
+
outcome: {
|
|
169
|
+
ok: true,
|
|
170
|
+
exitCode: 0,
|
|
171
|
+
durationMs: 45000,
|
|
172
|
+
},
|
|
173
|
+
});
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## Raggruppamento delle attività
|
|
177
|
+
|
|
178
|
+
Quando si hanno molte esecuzioni di attività, venvkit le raggruppa in base alla firma:
|
|
179
|
+
|
|
180
|
+
```typescript
|
|
181
|
+
import { clusterRuns, isFlaky, getFailingEnvs } from 'venvkit';
|
|
182
|
+
|
|
183
|
+
const clusters = clusterRuns(runs);
|
|
184
|
+
|
|
185
|
+
for (const c of clusters) {
|
|
186
|
+
console.log(`${c.sig.name}: ${c.ok}/${c.runs} (${(c.successRate * 100).toFixed(0)}%)`);
|
|
187
|
+
|
|
188
|
+
if (isFlaky(c)) {
|
|
189
|
+
console.log(` WARNING: Flaky task!`);
|
|
190
|
+
const badEnvs = getFailingEnvs(c, 3);
|
|
191
|
+
console.log(` Failing most on: ${badEnvs.map(e => e.pythonPath).join(', ')}`);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## Schema del grafico
|
|
197
|
+
|
|
198
|
+
L'output di `mapRender` segue uno schema JSON stabile:
|
|
199
|
+
|
|
200
|
+
```typescript
|
|
201
|
+
type GraphJSONv1 = {
|
|
202
|
+
version: '1.0';
|
|
203
|
+
generatedAt: string;
|
|
204
|
+
host: { os: string; arch: string; hostname: string };
|
|
205
|
+
summary: {
|
|
206
|
+
envCount: number;
|
|
207
|
+
baseCount: number;
|
|
208
|
+
taskCount: number;
|
|
209
|
+
healthy: number;
|
|
210
|
+
warning: number;
|
|
211
|
+
broken: number;
|
|
212
|
+
runsPassed: number;
|
|
213
|
+
runsFailed: number;
|
|
214
|
+
topIssues: Array<{ code: string; count: number; hint: string }>;
|
|
215
|
+
};
|
|
216
|
+
nodes: GraphNode[];
|
|
217
|
+
edges: GraphEdge[];
|
|
218
|
+
};
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Tipi di nodo
|
|
222
|
+
|
|
223
|
+
| Type | Descrizione |
|
|
224
|
+
| ------ | ------------- |
|
|
225
|
+
| `base` | Interprete Python di base (ad esempio, `C:\Python311`) |
|
|
226
|
+
| `venv` | Ambiente virtuale |
|
|
227
|
+
| `task` | Firma dell'attività (esecuzioni raggruppate) |
|
|
228
|
+
|
|
229
|
+
### Tipi di arco
|
|
230
|
+
|
|
231
|
+
| Type | Descrizione |
|
|
232
|
+
| ------ | ------------- |
|
|
233
|
+
| `USES_BASE` | Relazione venv → base |
|
|
234
|
+
| `ROUTES_TASK_TO` | Routing attività → ambiente |
|
|
235
|
+
| `FAILED_RUN` | Errore attività → ambiente (tratteggiato nei diagrammi Mermaid) |
|
|
236
|
+
|
|
237
|
+
## Codici di errore
|
|
238
|
+
|
|
239
|
+
| Code | Gravità | Descrizione |
|
|
240
|
+
| ------ | ---------- | ------------- |
|
|
241
|
+
| `SSL_BROKEN` | bad | Impossibile importare il modulo SSL |
|
|
242
|
+
| `CERT_STORE_FAIL` | warn | La verifica del certificato HTTPS non riesce |
|
|
243
|
+
| `DLL_LOAD_FAIL` | bad | Impossibile caricare la DLL dell'estensione nativa |
|
|
244
|
+
| `ABI_MISMATCH` | bad | Incompatibilità binaria (ARM/x86) |
|
|
245
|
+
| `PIP_MISSING` | warn | pip non disponibile |
|
|
246
|
+
| `PIP_CHECK_FAIL` | warn | Rilevati conflitti di dipendenze |
|
|
247
|
+
| `USER_SITE_LEAK` | warn | I pacchetti utente sono abilitati nell'ambiente virtuale. |
|
|
248
|
+
| `PYTHONPATH_INJECTED` | warn | Variabile d'ambiente PYTHONPATH impostata. |
|
|
249
|
+
| `ARCH_MISMATCH` | bad | Versione a 32 bit di Python quando è richiesta la versione a 64 bit. |
|
|
250
|
+
| `PYVENV_CFG_INVALID` | warn | File pyvenv.cfg corrotto o mancante. |
|
|
251
|
+
|
|
252
|
+
## Sviluppo
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
npm install
|
|
256
|
+
npm run typecheck # Type check
|
|
257
|
+
npm run test # Run tests
|
|
258
|
+
npm run build # Build to dist/
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
## Licenza
|
|
262
|
+
|
|
263
|
+
MIT.
|