@mcptoolshop/venvkit 0.2.1 → 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 +16 -2
- package/README.pt-BR.md +263 -0
- package/README.zh.md +263 -0
- package/package.json +6 -5
- 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/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 -470
- 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/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 -160
- 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/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 -291
- 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/dist/scanEnvPaths.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export type ScanOptions = {
|
|
2
|
-
roots: string[];
|
|
3
|
-
maxDepth?: number;
|
|
4
|
-
includeHidden?: boolean;
|
|
5
|
-
includeUserHomeCache?: boolean;
|
|
6
|
-
dedupe?: boolean;
|
|
7
|
-
};
|
|
8
|
-
export type ScanResult = {
|
|
9
|
-
pythonPaths: string[];
|
|
10
|
-
meta: {
|
|
11
|
-
scannedRoots: string[];
|
|
12
|
-
maxDepth: number;
|
|
13
|
-
foundVenvs: number;
|
|
14
|
-
foundBases: number;
|
|
15
|
-
};
|
|
16
|
-
};
|
|
17
|
-
export declare function scanEnvPaths(options: ScanOptions): Promise<ScanResult>;
|
|
18
|
-
//# sourceMappingURL=scanEnvPaths.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scanEnvPaths.d.ts","sourceRoot":"","sources":["../scanEnvPaths.ts"],"names":[],"mappings":"AAmBA,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,EAAE;QACJ,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,CAAC;AAsHF,wBAAsB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAiD5E"}
|
package/dist/scanEnvPaths.js
DELETED
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
// scanEnvPaths.ts
|
|
2
|
-
//
|
|
3
|
-
// Discover Python environments on disk (venv + base interpreters) in a fast, pragmatic way.
|
|
4
|
-
// Outputs python executable paths you can feed into doctorLite + mapRender.
|
|
5
|
-
//
|
|
6
|
-
// Strategy (safe + useful defaults):
|
|
7
|
-
// - Project-local: .venv, venv, env, .python, .pyenv (common patterns)
|
|
8
|
-
// - Workspace roots you pass in
|
|
9
|
-
// - Global cache: ~/.venvkit/envs (if you use it)
|
|
10
|
-
// - Also looks for any directory containing pyvenv.cfg and a python executable.
|
|
11
|
-
//
|
|
12
|
-
// Notes:
|
|
13
|
-
// - This is discovery only. You still call doctorLite for health + facts.
|
|
14
|
-
// - On Windows we look for Scripts/python.exe; on POSIX bin/python.
|
|
15
|
-
import * as fs from "node:fs/promises";
|
|
16
|
-
import * as path from "node:path";
|
|
17
|
-
import * as os from "node:os";
|
|
18
|
-
function isWin() {
|
|
19
|
-
return os.platform() === "win32";
|
|
20
|
-
}
|
|
21
|
-
function norm(p) {
|
|
22
|
-
return isWin() ? p.toLowerCase() : p;
|
|
23
|
-
}
|
|
24
|
-
async function exists(p) {
|
|
25
|
-
try {
|
|
26
|
-
await fs.stat(p);
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
catch {
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
async function isDir(p) {
|
|
34
|
-
try {
|
|
35
|
-
return (await fs.stat(p)).isDirectory();
|
|
36
|
-
}
|
|
37
|
-
catch {
|
|
38
|
-
return false;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
function venvPythonCandidates(venvRoot) {
|
|
42
|
-
return isWin()
|
|
43
|
-
? [path.join(venvRoot, "Scripts", "python.exe"), path.join(venvRoot, "Scripts", "python")]
|
|
44
|
-
: [path.join(venvRoot, "bin", "python"), path.join(venvRoot, "bin", "python3")];
|
|
45
|
-
}
|
|
46
|
-
async function detectVenvAt(dir) {
|
|
47
|
-
const cfg = path.join(dir, "pyvenv.cfg");
|
|
48
|
-
if (!(await exists(cfg)))
|
|
49
|
-
return null;
|
|
50
|
-
for (const py of venvPythonCandidates(dir)) {
|
|
51
|
-
if (await exists(py))
|
|
52
|
-
return py;
|
|
53
|
-
}
|
|
54
|
-
return null;
|
|
55
|
-
}
|
|
56
|
-
async function listDirSafe(dir) {
|
|
57
|
-
try {
|
|
58
|
-
return await fs.readdir(dir);
|
|
59
|
-
}
|
|
60
|
-
catch {
|
|
61
|
-
return [];
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
async function walkForVenvs(root, maxDepth, includeHidden, out) {
|
|
65
|
-
const stack = [{ dir: root, depth: 0 }];
|
|
66
|
-
while (stack.length) {
|
|
67
|
-
const cur = stack.pop();
|
|
68
|
-
if (cur.depth > maxDepth)
|
|
69
|
-
continue;
|
|
70
|
-
// quick venv detection at this directory
|
|
71
|
-
const venvPy = await detectVenvAt(cur.dir);
|
|
72
|
-
if (venvPy) {
|
|
73
|
-
out.push(venvPy);
|
|
74
|
-
// Do not descend into this venv further (keeps scan fast)
|
|
75
|
-
continue;
|
|
76
|
-
}
|
|
77
|
-
const children = await listDirSafe(cur.dir);
|
|
78
|
-
for (const name of children) {
|
|
79
|
-
if (!includeHidden && name.startsWith("."))
|
|
80
|
-
continue;
|
|
81
|
-
const full = path.join(cur.dir, name);
|
|
82
|
-
if (!(await isDir(full)))
|
|
83
|
-
continue;
|
|
84
|
-
// Skip common heavy directories
|
|
85
|
-
if (name === "node_modules" || name === "dist" || name === "build" || name === ".git")
|
|
86
|
-
continue;
|
|
87
|
-
stack.push({ dir: full, depth: cur.depth + 1 });
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
async function discoverProjectLocalRoots(root) {
|
|
92
|
-
const candidates = [".venv", "venv", "env", ".python", ".pyenv"];
|
|
93
|
-
const out = [];
|
|
94
|
-
for (const c of candidates) {
|
|
95
|
-
const p = path.join(root, c);
|
|
96
|
-
if (await isDir(p))
|
|
97
|
-
out.push(p);
|
|
98
|
-
}
|
|
99
|
-
return out;
|
|
100
|
-
}
|
|
101
|
-
async function discoverBasePythons() {
|
|
102
|
-
// Best-effort:
|
|
103
|
-
// - On Windows: common install locations
|
|
104
|
-
// - On POSIX: common binaries
|
|
105
|
-
const out = [];
|
|
106
|
-
if (isWin()) {
|
|
107
|
-
const possible = [
|
|
108
|
-
"C:\\Python312\\python.exe",
|
|
109
|
-
"C:\\Python311\\python.exe",
|
|
110
|
-
"C:\\Python310\\python.exe",
|
|
111
|
-
"C:\\Program Files\\Python312\\python.exe",
|
|
112
|
-
"C:\\Program Files\\Python311\\python.exe",
|
|
113
|
-
"C:\\Program Files\\Python310\\python.exe",
|
|
114
|
-
path.join(os.homedir(), "AppData", "Local", "Programs", "Python", "Python312", "python.exe"),
|
|
115
|
-
path.join(os.homedir(), "AppData", "Local", "Programs", "Python", "Python311", "python.exe"),
|
|
116
|
-
path.join(os.homedir(), "AppData", "Local", "Programs", "Python", "Python310", "python.exe"),
|
|
117
|
-
];
|
|
118
|
-
for (const p of possible)
|
|
119
|
-
if (await exists(p))
|
|
120
|
-
out.push(p);
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
const possible = ["/usr/bin/python3", "/usr/local/bin/python3", "/opt/homebrew/bin/python3", "/usr/bin/python"];
|
|
124
|
-
for (const p of possible)
|
|
125
|
-
if (await exists(p))
|
|
126
|
-
out.push(p);
|
|
127
|
-
}
|
|
128
|
-
return out;
|
|
129
|
-
}
|
|
130
|
-
export async function scanEnvPaths(options) {
|
|
131
|
-
const maxDepth = options.maxDepth ?? 5;
|
|
132
|
-
const includeHidden = options.includeHidden ?? false;
|
|
133
|
-
const includeUserHomeCache = options.includeUserHomeCache ?? true;
|
|
134
|
-
const dedupe = options.dedupe ?? true;
|
|
135
|
-
const roots = [...options.roots];
|
|
136
|
-
if (includeUserHomeCache) {
|
|
137
|
-
roots.push(path.join(os.homedir(), ".venvkit", "envs"));
|
|
138
|
-
roots.push(path.join(os.homedir(), ".virtualenvs"));
|
|
139
|
-
}
|
|
140
|
-
const pythonPaths = [];
|
|
141
|
-
// Fast pass: project-local patterns in each root
|
|
142
|
-
for (const r of options.roots) {
|
|
143
|
-
const locals = await discoverProjectLocalRoots(r);
|
|
144
|
-
for (const venvRoot of locals) {
|
|
145
|
-
const py = await detectVenvAt(venvRoot);
|
|
146
|
-
if (py)
|
|
147
|
-
pythonPaths.push(py);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
// Walk: find pyvenv.cfg
|
|
151
|
-
for (const root of roots) {
|
|
152
|
-
if (!(await isDir(root)))
|
|
153
|
-
continue;
|
|
154
|
-
await walkForVenvs(root, maxDepth, includeHidden, pythonPaths);
|
|
155
|
-
}
|
|
156
|
-
// Optional: base interpreter candidates
|
|
157
|
-
const bases = await discoverBasePythons();
|
|
158
|
-
for (const b of bases)
|
|
159
|
-
pythonPaths.push(b);
|
|
160
|
-
const final = dedupe ? [...new Map(pythonPaths.map((p) => [norm(p), p])).values()] : pythonPaths;
|
|
161
|
-
// crude counts
|
|
162
|
-
const foundBases = bases.length;
|
|
163
|
-
const foundVenvs = Math.max(0, final.length - foundBases);
|
|
164
|
-
return {
|
|
165
|
-
pythonPaths: final,
|
|
166
|
-
meta: {
|
|
167
|
-
scannedRoots: roots,
|
|
168
|
-
maxDepth,
|
|
169
|
-
foundVenvs,
|
|
170
|
-
foundBases,
|
|
171
|
-
},
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
//# sourceMappingURL=scanEnvPaths.js.map
|
package/dist/scanEnvPaths.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scanEnvPaths.js","sourceRoot":"","sources":["../scanEnvPaths.ts"],"names":[],"mappings":"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"}
|
package/dist/taskCluster.d.ts
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import type { RunLogEventV1 } from "./runLog.js";
|
|
2
|
-
export type TaskSignature = {
|
|
3
|
-
sigId: string;
|
|
4
|
-
name: string;
|
|
5
|
-
command: string;
|
|
6
|
-
requirementsKey: string;
|
|
7
|
-
};
|
|
8
|
-
export type TaskCluster = {
|
|
9
|
-
sig: TaskSignature;
|
|
10
|
-
runs: number;
|
|
11
|
-
ok: number;
|
|
12
|
-
fail: number;
|
|
13
|
-
successRate: number;
|
|
14
|
-
lastAt: string;
|
|
15
|
-
dominantFailure?: string;
|
|
16
|
-
failureCounts: Record<string, number>;
|
|
17
|
-
envCounts: Record<string, number>;
|
|
18
|
-
envFailCounts: Record<string, number>;
|
|
19
|
-
envOkCounts: Record<string, number>;
|
|
20
|
-
};
|
|
21
|
-
/**
|
|
22
|
-
* Extract a stable signature from a run event.
|
|
23
|
-
* Runs with the same signature are clustered together.
|
|
24
|
-
*/
|
|
25
|
-
export declare function signatureForRun(run: RunLogEventV1): TaskSignature;
|
|
26
|
-
/**
|
|
27
|
-
* Cluster runs by task signature.
|
|
28
|
-
* Returns clusters sorted by run count (descending).
|
|
29
|
-
*/
|
|
30
|
-
export declare function clusterRuns(runs: RunLogEventV1[]): TaskCluster[];
|
|
31
|
-
/**
|
|
32
|
-
* Determine if a task cluster is flaky.
|
|
33
|
-
* Flaky = both succeeds and fails, with success rate not extreme.
|
|
34
|
-
*/
|
|
35
|
-
export declare function isFlaky(cluster: TaskCluster): boolean;
|
|
36
|
-
/**
|
|
37
|
-
* Determine if a task cluster is env-dependent flaky.
|
|
38
|
-
* This means it succeeds on some envs and fails on others.
|
|
39
|
-
*/
|
|
40
|
-
export declare function isEnvDependentFlaky(cluster: TaskCluster): boolean;
|
|
41
|
-
/**
|
|
42
|
-
* Get the envs where this task fails most.
|
|
43
|
-
*/
|
|
44
|
-
export declare function getFailingEnvs(cluster: TaskCluster, limit?: number): Array<{
|
|
45
|
-
pythonPath: string;
|
|
46
|
-
failCount: number;
|
|
47
|
-
totalCount: number;
|
|
48
|
-
failRate: number;
|
|
49
|
-
}>;
|
|
50
|
-
/**
|
|
51
|
-
* Get summary statistics for a set of clusters.
|
|
52
|
-
*/
|
|
53
|
-
export declare function summarizeClusters(clusters: TaskCluster[]): {
|
|
54
|
-
totalTasks: number;
|
|
55
|
-
totalRuns: number;
|
|
56
|
-
totalOk: number;
|
|
57
|
-
totalFail: number;
|
|
58
|
-
overallSuccessRate: number;
|
|
59
|
-
flakyCount: number;
|
|
60
|
-
envDependentFlakyCount: number;
|
|
61
|
-
};
|
|
62
|
-
//# sourceMappingURL=taskCluster.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"taskCluster.d.ts","sourceRoot":"","sources":["../taskCluster.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,aAAa,CAAC;IAEnB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IAEf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEtC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC,CAAC;AA6BF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,aAAa,CAMjE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,WAAW,EAAE,CAuDhE;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAKrD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAejE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,WAAW,EACpB,KAAK,SAAI,GACR,KAAK,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAUxF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB,EAAE,MAAM,CAAC;CAChC,CAwBA"}
|
package/dist/taskCluster.js
DELETED
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
// taskCluster.ts
|
|
2
|
-
//
|
|
3
|
-
// Cluster task runs by signature for aggregated visualization.
|
|
4
|
-
// Instead of 500 task nodes, you get one node per task signature, with:
|
|
5
|
-
// - run count
|
|
6
|
-
// - success rate
|
|
7
|
-
// - last run timestamp
|
|
8
|
-
// - dominant failure code
|
|
9
|
-
// - top envs it routes to
|
|
10
|
-
//
|
|
11
|
-
// Also provides flake detection: a task is flaky if it fails on some envs
|
|
12
|
-
// but succeeds on others (or alternates over time).
|
|
13
|
-
import { createHash } from "node:crypto";
|
|
14
|
-
function sha16(s) {
|
|
15
|
-
return createHash("sha256").update(s).digest("hex").slice(0, 16);
|
|
16
|
-
}
|
|
17
|
-
function normCmd(cmd) {
|
|
18
|
-
return cmd.trim().replace(/\s+/g, " ").toLowerCase();
|
|
19
|
-
}
|
|
20
|
-
function normReq(req) {
|
|
21
|
-
if (!req)
|
|
22
|
-
return "";
|
|
23
|
-
const pkgs = (req.packages ?? [])
|
|
24
|
-
.map((p) => p.toLowerCase())
|
|
25
|
-
.sort()
|
|
26
|
-
.join(",");
|
|
27
|
-
const feats = (req.features ?? [])
|
|
28
|
-
.map((f) => f.toLowerCase())
|
|
29
|
-
.sort()
|
|
30
|
-
.join(",");
|
|
31
|
-
const tags = (req.tags ?? [])
|
|
32
|
-
.map((t) => t.toLowerCase())
|
|
33
|
-
.sort()
|
|
34
|
-
.join(",");
|
|
35
|
-
const py = (req.python ?? "").toLowerCase();
|
|
36
|
-
const x64 = req.requireX64 ? "x64" : "";
|
|
37
|
-
return `py=${py}|pkgs=${pkgs}|feat=${feats}|tags=${tags}|${x64}`;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Extract a stable signature from a run event.
|
|
41
|
-
* Runs with the same signature are clustered together.
|
|
42
|
-
*/
|
|
43
|
-
export function signatureForRun(run) {
|
|
44
|
-
const command = normCmd(run.task.command);
|
|
45
|
-
const requirementsKey = normReq(run.task.requirements);
|
|
46
|
-
const base = `${run.task.name}|${command}|${requirementsKey}`;
|
|
47
|
-
const sigId = `task_${sha16(base)}`;
|
|
48
|
-
return { sigId, name: run.task.name, command, requirementsKey };
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Cluster runs by task signature.
|
|
52
|
-
* Returns clusters sorted by run count (descending).
|
|
53
|
-
*/
|
|
54
|
-
export function clusterRuns(runs) {
|
|
55
|
-
const map = new Map();
|
|
56
|
-
for (const r of runs) {
|
|
57
|
-
const sig = signatureForRun(r);
|
|
58
|
-
const key = sig.sigId;
|
|
59
|
-
let c = map.get(key);
|
|
60
|
-
if (!c) {
|
|
61
|
-
c = {
|
|
62
|
-
sig,
|
|
63
|
-
runs: 0,
|
|
64
|
-
ok: 0,
|
|
65
|
-
fail: 0,
|
|
66
|
-
successRate: 0,
|
|
67
|
-
lastAt: r.at,
|
|
68
|
-
failureCounts: {},
|
|
69
|
-
envCounts: {},
|
|
70
|
-
envFailCounts: {},
|
|
71
|
-
envOkCounts: {},
|
|
72
|
-
};
|
|
73
|
-
map.set(key, c);
|
|
74
|
-
}
|
|
75
|
-
c.runs += 1;
|
|
76
|
-
if (r.outcome.ok)
|
|
77
|
-
c.ok += 1;
|
|
78
|
-
else
|
|
79
|
-
c.fail += 1;
|
|
80
|
-
if (r.at > c.lastAt)
|
|
81
|
-
c.lastAt = r.at;
|
|
82
|
-
const py = r.selected.pythonPath;
|
|
83
|
-
c.envCounts[py] = (c.envCounts[py] ?? 0) + 1;
|
|
84
|
-
if (r.outcome.ok) {
|
|
85
|
-
c.envOkCounts[py] = (c.envOkCounts[py] ?? 0) + 1;
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
const code = r.doctor?.dominantIssue ?? r.outcome.errorClass ?? "RUN_FAILED";
|
|
89
|
-
c.failureCounts[code] = (c.failureCounts[code] ?? 0) + 1;
|
|
90
|
-
c.envFailCounts[py] = (c.envFailCounts[py] ?? 0) + 1;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
// Compute derived fields
|
|
94
|
-
for (const c of map.values()) {
|
|
95
|
-
c.successRate = c.runs ? c.ok / c.runs : 0;
|
|
96
|
-
// Find dominant failure code
|
|
97
|
-
let best = null;
|
|
98
|
-
for (const [code, count] of Object.entries(c.failureCounts)) {
|
|
99
|
-
if (!best || count > best.count)
|
|
100
|
-
best = { code, count };
|
|
101
|
-
}
|
|
102
|
-
if (best)
|
|
103
|
-
c.dominantFailure = best.code;
|
|
104
|
-
}
|
|
105
|
-
return [...map.values()].sort((a, b) => b.runs - a.runs);
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Determine if a task cluster is flaky.
|
|
109
|
-
* Flaky = both succeeds and fails, with success rate not extreme.
|
|
110
|
-
*/
|
|
111
|
-
export function isFlaky(cluster) {
|
|
112
|
-
// Needs both successes and failures
|
|
113
|
-
if (cluster.ok === 0 || cluster.fail === 0)
|
|
114
|
-
return false;
|
|
115
|
-
// Success rate between 20% and 95% indicates inconsistent behavior
|
|
116
|
-
return cluster.successRate > 0.2 && cluster.successRate < 0.95;
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Determine if a task cluster is env-dependent flaky.
|
|
120
|
-
* This means it succeeds on some envs and fails on others.
|
|
121
|
-
*/
|
|
122
|
-
export function isEnvDependentFlaky(cluster) {
|
|
123
|
-
const envs = Object.keys(cluster.envCounts);
|
|
124
|
-
if (envs.length < 2)
|
|
125
|
-
return false;
|
|
126
|
-
let hasSuccessEnv = false;
|
|
127
|
-
let hasFailEnv = false;
|
|
128
|
-
for (const py of envs) {
|
|
129
|
-
const ok = cluster.envOkCounts[py] ?? 0;
|
|
130
|
-
const fail = cluster.envFailCounts[py] ?? 0;
|
|
131
|
-
if (ok > 0 && fail === 0)
|
|
132
|
-
hasSuccessEnv = true;
|
|
133
|
-
if (fail > 0 && ok === 0)
|
|
134
|
-
hasFailEnv = true;
|
|
135
|
-
}
|
|
136
|
-
return hasSuccessEnv && hasFailEnv;
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Get the envs where this task fails most.
|
|
140
|
-
*/
|
|
141
|
-
export function getFailingEnvs(cluster, limit = 3) {
|
|
142
|
-
return Object.entries(cluster.envFailCounts)
|
|
143
|
-
.map(([py, failCount]) => ({
|
|
144
|
-
pythonPath: py,
|
|
145
|
-
failCount,
|
|
146
|
-
totalCount: cluster.envCounts[py] ?? failCount,
|
|
147
|
-
failRate: failCount / (cluster.envCounts[py] ?? failCount),
|
|
148
|
-
}))
|
|
149
|
-
.sort((a, b) => b.failCount - a.failCount)
|
|
150
|
-
.slice(0, limit);
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Get summary statistics for a set of clusters.
|
|
154
|
-
*/
|
|
155
|
-
export function summarizeClusters(clusters) {
|
|
156
|
-
let totalRuns = 0;
|
|
157
|
-
let totalOk = 0;
|
|
158
|
-
let totalFail = 0;
|
|
159
|
-
let flakyCount = 0;
|
|
160
|
-
let envDependentFlakyCount = 0;
|
|
161
|
-
for (const c of clusters) {
|
|
162
|
-
totalRuns += c.runs;
|
|
163
|
-
totalOk += c.ok;
|
|
164
|
-
totalFail += c.fail;
|
|
165
|
-
if (isFlaky(c))
|
|
166
|
-
flakyCount++;
|
|
167
|
-
if (isEnvDependentFlaky(c))
|
|
168
|
-
envDependentFlakyCount++;
|
|
169
|
-
}
|
|
170
|
-
return {
|
|
171
|
-
totalTasks: clusters.length,
|
|
172
|
-
totalRuns,
|
|
173
|
-
totalOk,
|
|
174
|
-
totalFail,
|
|
175
|
-
overallSuccessRate: totalRuns ? totalOk / totalRuns : 0,
|
|
176
|
-
flakyCount,
|
|
177
|
-
envDependentFlakyCount,
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
//# sourceMappingURL=taskCluster.js.map
|
package/dist/taskCluster.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"taskCluster.js","sourceRoot":"","sources":["../taskCluster.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"taskCluster.test.d.ts","sourceRoot":"","sources":["../taskCluster.test.ts"],"names":[],"mappings":""}
|