@descryy/adapter-python 0.1.0 → 0.3.0

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/LICENSE ADDED
@@ -0,0 +1,8 @@
1
+ Copyright (c) 2026 Descry
2
+
3
+ All rights reserved.
4
+
5
+ This software is proprietary and confidential. No license, express or
6
+ implied, to use, copy, modify, merge, publish, distribute, sublicense, or
7
+ sell copies of this software is granted without prior written permission
8
+ from the copyright holder.
package/dist/adapter.d.ts CHANGED
@@ -1,10 +1,9 @@
1
1
  /**
2
2
  * The Python `LanguageAdapter` — all seven methods.
3
3
  *
4
- * The parser is Python's own `ast`, reached through one subprocess per run
5
- * (DEC-062). Everything language-specific stops at this package's boundary;
6
- * `@descryy/ir` is the only engine dependency, which is what makes the IR
7
- * boundary a dependency-direction fact rather than a convention.
4
+ * Parses with Python's own `ast` via one subprocess per run (DEC-062).
5
+ * `@descryy/ir` is the only engine dependency, enforcing the IR boundary
6
+ * by dependency direction, not convention.
8
7
  */
9
8
  import { type LanguageAdapter, type ResolutionLevel, type SkipReason } from "@descryy/ir";
10
9
  import { LANGUAGE, type PyResult } from "./extract.ts";
@@ -18,18 +17,13 @@ export interface PythonAdapterOptions {
18
17
  readonly python?: string;
19
18
  }
20
19
  /**
21
- * Why the extractor is not read with `execFile`.
22
- *
23
- * `execFile` buffers the whole of stdout and fails past `maxBuffer` with a
24
- * generic error. On home-assistant-core the extractor emits **284.4 MB**, which
25
- * overflowed a 256 MB bound; the error was indistinguishable from "the
26
- * interpreter failed", so `prepare()` degraded to R0 and the run reported
27
- * **success with an empty graph over 18,189 files**. Two separate faults, and
28
- * the second is the serious one — a capacity limit became a silent wrong answer.
29
- *
30
- * This reads the stream line by line instead. There is no buffer ceiling, no
31
- * single giant string, and a stream that ends without its trailer is detected as
32
- * truncation rather than mistaken for a short repository.
20
+ * Read line-by-line rather than via `execFile`: `execFile` buffers all of
21
+ * stdout and fails past `maxBuffer` with a generic error. On
22
+ * home-assistant-core the extractor emitted 284.4 MB against a 256 MB bound,
23
+ * which was indistinguishable from "the interpreter failed" and made
24
+ * `prepare()` silently degrade to R0 — success reported over an empty graph
25
+ * across 18,189 files. Streaming removes the buffer ceiling and lets a
26
+ * stream ending without its trailer be detected as truncation, not a short repo.
33
27
  */
34
28
  export type ExtractorFailure = {
35
29
  readonly kind: "no-interpreter";
@@ -58,10 +52,9 @@ export interface ExtractorOutcome {
58
52
  /** Human-readable, and deliberately explicit that the graph is incomplete. */
59
53
  export declare function describeFailure(failure: ExtractorFailure): string;
60
54
  /**
61
- * `extract.py`'s per-file error strings have no machine-readable kind, only a
62
- * prefix convention (`"unreadable: ..."` for an `OSError`, `"syntax error at
63
- * line ..."` for a `SyntaxError`) — everything else (`ValueError`,
64
- * `RecursionError`) falls to `"other"` rather than being guessed at.
55
+ * `extract.py`'s per-file errors carry no machine-readable kind, only a
56
+ * prefix convention (`"unreadable: ..."`, `"syntax error at line ..."`);
57
+ * anything else falls to `"other"` rather than being guessed at.
65
58
  */
66
59
  export declare function skipReasonOf(message: string): SkipReason;
67
60
  export interface PythonAdapter extends LanguageAdapter {
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,EAML,KAAK,eAAe,EAGpB,KAAK,eAAe,EACpB,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AAIrB,OAAO,EAA0B,QAAQ,EAAmB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAIhG,eAAO,MAAM,UAAU,mBAAmB,CAAC;AAC3C,eAAO,MAAM,eAAe,UAAU,CAAC;AACvC,eAAO,MAAM,oBAAoB,kCAAmC,CAAC;AAkBrE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,aAAa,CAAC,EAAE,eAAe,CAAC;IACzC,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAiBD;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,GACnC;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjF;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAuBjE;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAIxD;AAkID,MAAM,WAAW,aAAc,SAAQ,eAAe;IACpD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,oBAAyB,GAAG,aAAa,CA2TrF;AAED,2DAA2D;AAC3D,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM7D;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,EAML,KAAK,eAAe,EAGpB,KAAK,eAAe,EACpB,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AAIrB,OAAO,EAA0B,QAAQ,EAAmB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAIhG,eAAO,MAAM,UAAU,mBAAmB,CAAC;AAC3C,eAAO,MAAM,eAAe,UAAU,CAAC;AACvC,eAAO,MAAM,oBAAoB,kCAAmC,CAAC;AAcrE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,aAAa,CAAC,EAAE,eAAe,CAAC;IACzC,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAiBD;;;;;;;;GAQG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,GACnC;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACjF;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAuBjE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAIxD;AA2HD,MAAM,WAAW,aAAc,SAAQ,eAAe;IACpD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,oBAAyB,GAAG,aAAa,CAgTrF;AAED,2DAA2D;AAC3D,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAW7D;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
package/dist/adapter.js CHANGED
@@ -1,10 +1,9 @@
1
1
  /**
2
2
  * The Python `LanguageAdapter` — all seven methods.
3
3
  *
4
- * The parser is Python's own `ast`, reached through one subprocess per run
5
- * (DEC-062). Everything language-specific stops at this package's boundary;
6
- * `@descryy/ir` is the only engine dependency, which is what makes the IR
7
- * boundary a dependency-direction fact rather than a convention.
4
+ * Parses with Python's own `ast` via one subprocess per run (DEC-062).
5
+ * `@descryy/ir` is the only engine dependency, enforcing the IR boundary
6
+ * by dependency direction, not convention.
8
7
  */
9
8
  import { execFile, spawn } from "node:child_process";
10
9
  import { existsSync, readFileSync } from "node:fs";
@@ -19,14 +18,9 @@ export const ADAPTER_ID = "adapter-python";
19
18
  export const ADAPTER_VERSION = "0.1.0";
20
19
  export const DEFAULT_PYTHON_GLOBS = ["**/*.py", "**/*.pyi"];
21
20
  const PRODUCED_BY = `${ADAPTER_ID}@${ADAPTER_VERSION}`;
22
- /**
23
- * The extractor, shipped as a file and located relative to this module.
24
- *
25
- * Resolved from `import.meta.dirname` rather than from `process.cwd()`, because
26
- * an adapter is loaded by an engine whose working directory is the repository
27
- * under analysis, not this package.
28
- */
29
21
  import { CLIENT_MODULES } from "./client.js";
22
+ // Resolved from `import.meta.dirname`, not `process.cwd()`: the engine's
23
+ // cwd is the repo under analysis, not this package.
30
24
  const EXTRACTOR = join(import.meta.dirname, "extract.py");
31
25
  /** Interpreters to try, in order. `python` last: on many systems it is Python 2. */
32
26
  const INTERPRETERS = ["python3", "python"];
@@ -52,10 +46,9 @@ export function describeFailure(failure) {
52
46
  }
53
47
  }
54
48
  /**
55
- * `extract.py`'s per-file error strings have no machine-readable kind, only a
56
- * prefix convention (`"unreadable: ..."` for an `OSError`, `"syntax error at
57
- * line ..."` for a `SyntaxError`) — everything else (`ValueError`,
58
- * `RecursionError`) falls to `"other"` rather than being guessed at.
49
+ * `extract.py`'s per-file errors carry no machine-readable kind, only a
50
+ * prefix convention (`"unreadable: ..."`, `"syntax error at line ..."`);
51
+ * anything else falls to `"other"` rather than being guessed at.
59
52
  */
60
53
  export function skipReasonOf(message) {
61
54
  if (message.startsWith("unreadable:"))
@@ -65,17 +58,13 @@ export function skipReasonOf(message) {
65
58
  return "other";
66
59
  }
67
60
  /**
68
- * `AnalysisContext.prepareTimeoutMs` was declared in the contract and honoured by
69
- * neither adapter — a bound the caller could set and nothing would enforce, so a
70
- * repository that hung the extractor hung the whole run with no upper limit. The
71
- * same class of defect as a field computed on one side of a process boundary and
72
- * never read on the other, and found by the same method: looking for declared
73
- * things nothing consumes.
61
+ * `AnalysisContext.prepareTimeoutMs` was declared but unenforced by either
62
+ * adapter, so a hung extractor hung the whole run with no ceiling.
74
63
  *
75
- * A timeout here is a **degraded state, not a crash.** The child is killed, what
76
- * it managed to stream is discarded rather than reported as a whole graph, and
77
- * the run falls to the disclosed R0 path — because a partial parse silently
78
- * presented as complete is exactly the failure the posthog transport bug was.
64
+ * A timeout here is a degraded state, not a crash: the child is killed, what
65
+ * it streamed is discarded rather than reported as a complete graph, and the
66
+ * run falls to the disclosed R0 path — a partial parse presented as whole is
67
+ * the same failure as the posthog transport bug.
79
68
  */
80
69
  function runStreaming(command, args, input, signal, timeoutMs) {
81
70
  return new Promise((resolve) => {
@@ -136,8 +125,7 @@ function runStreaming(command, args, input, signal, timeoutMs) {
136
125
  child.on("error", (error) => finish({ failure: { kind: "spawn-failed", detail: error.message } }));
137
126
  child.on("close", (code) => {
138
127
  take(pending);
139
- // The timeout is reported ahead of the non-zero exit it causes, because
140
- // "we killed it" and "it failed" are different statements to the reader.
128
+ // "we killed it" and "it failed" are different statements; report the timeout first.
141
129
  if (timedOut)
142
130
  finish({ failure: { kind: "timed-out", afterMs: timeoutMs, linesRead: lines } });
143
131
  else if (code !== 0)
@@ -155,14 +143,12 @@ function runStreaming(command, args, input, signal, timeoutMs) {
155
143
  function run(command, args, input, signal) {
156
144
  return new Promise((resolve) => {
157
145
  const child = execFile(command, [...args],
158
- // A repository large enough to overflow this has other problems, but the
159
- // failure would be a truncated JSON parse with no explanation, so it is
160
- // bounded explicitly rather than left at the 1 MB default.
146
+ // Bounded explicitly (default is 1 MB) — overflow would otherwise be an
147
+ // unexplained truncated JSON parse.
161
148
  { maxBuffer: 256 * 1024 * 1024, signal }, (error, stdout, stderr) => {
162
- // `ExecException.code` is `string | number`: an exit status when the
163
- // process ran, an errno like ENOENT when it never started. Both mean
164
- // "not zero" here, and collapsing them is deliberate — the caller
165
- // distinguishes them by whether stdout parses, not by the code.
149
+ // `ExecException.code` is an exit status when the process ran, an
150
+ // errno like ENOENT when it never started; both collapse to "not
151
+ // zero" here, since the caller distinguishes by whether stdout parses.
166
152
  resolve({ code: error === null ? 0 : 1, stdout, stderr });
167
153
  });
168
154
  child.stdin?.end(input);
@@ -183,7 +169,19 @@ export function createPythonAdapter(options = {}) {
183
169
  const ceiling = options.maxResolution ?? 3;
184
170
  let session;
185
171
  let interpreter;
186
- const filesUnder = (root) => discover(root.absolutePath, globs).filter((file) => !file.includes("/site-packages/"));
172
+ let nestedCheckouts = [];
173
+ let ignoredByProject = [];
174
+ const filesUnder = (root) => {
175
+ const nested = [];
176
+ // Wired so the skipped counts reach `detect()`'s evidence — a skip that
177
+ // never surfaces there is indistinguishable from a file never seen.
178
+ const found = discover(root.absolutePath, globs, {
179
+ onNestedCheckout: (dir) => nested.push(dir),
180
+ onIgnored: (names) => (ignoredByProject = names),
181
+ }).filter((file) => !file.includes("/site-packages/"));
182
+ nestedCheckouts = nested;
183
+ return found;
184
+ };
187
185
  return {
188
186
  id: ADAPTER_ID,
189
187
  version: ADAPTER_VERSION,
@@ -192,10 +190,8 @@ export function createPythonAdapter(options = {}) {
192
190
  const evidence = [];
193
191
  const found = await findInterpreter(options.python, new AbortController().signal);
194
192
  if (found === undefined) {
195
- // A hard stop, not a degradation. DEC-062 takes the interpreter as a
196
- // dependency of the adapter, and an absent one has to say so — a run
197
- // that produced nothing must never look like a repository with nothing
198
- // in it.
193
+ // A hard stop, not a degradation (DEC-062): a run that produced
194
+ // nothing must never look like a repo with nothing in it.
199
195
  return {
200
196
  detected: false,
201
197
  roots: [],
@@ -211,9 +207,8 @@ export function createPythonAdapter(options = {}) {
211
207
  return { detected: false, roots: [], evidence: [...evidence, "no .py files found"] };
212
208
  }
213
209
  evidence.push(`${files.length} Python file(s)`);
214
- // A repository that changed its collection rules must see that we read
215
- // them. A silently-applied non-default rule is indistinguishable from a
216
- // silently-ignored one when the numbers come out wrong.
210
+ // Surface a non-default collection rule — silently applied is
211
+ // indistinguishable from silently ignored when counts come out wrong.
217
212
  const pytest = readPytestConfig(root.absolutePath);
218
213
  if (pytest !== PYTEST_DEFAULTS)
219
214
  evidence.push(pytest.source);
@@ -223,6 +218,13 @@ export function createPythonAdapter(options = {}) {
223
218
  }
224
219
  const project = projectName(root.absolutePath);
225
220
  evidence.push(project.evidence);
221
+ for (const nested of nestedCheckouts) {
222
+ evidence.push(`skipped ${nested}: a separate checkout with its own .git`);
223
+ }
224
+ if (ignoredByProject.length > 0) {
225
+ evidence.push(`skipped ${ignoredByProject.length} director(ies) the project's own .gitignore excludes: ` +
226
+ `${ignoredByProject.slice(0, 12).join(", ")}`);
227
+ }
226
228
  const roots = [
227
229
  ...new Set(files.map((file) => file.split("/")[0]).filter((p) => p !== undefined)),
228
230
  ].sort();
@@ -232,31 +234,23 @@ export function createPythonAdapter(options = {}) {
232
234
  return {
233
235
  maxResolution: ceiling,
234
236
  /**
235
- * What this adapter can produce, and by omission what it cannot.
237
+ * `MODEL` is earned from framework evidence (declarative base, table
238
+ * binding, column declaration) — never from a class merely named
239
+ * `Order` (DEC-043; `src/orm.ts` has no name rule).
236
240
  *
237
- * `MODEL` is present because a framework extractor is now bound and can
238
- * earn it from evidence — a declarative base, a table binding, a column
239
- * declaration, all written in the source. It is not present because the
240
- * corpus holds a class called `Order`: DEC-043's constraint still stands,
241
- * and `src/orm.ts` contains no name rule of any kind.
241
+ * `API_ROUTE`/`API_ENDPOINT` per DEC-099: FastAPI/Flask/Django
242
+ * declare routes, so reading the declaration isn't inference. Only
243
+ * admitted where the receiver resolves to a framework-constructed
244
+ * router, never by an attribute merely spelled like an HTTP verb —
245
+ * on saleor that naive rule would invent 1,150 routes out of
246
+ * `unittest.mock.patch`.
242
247
  *
243
- * `API_ROUTE` and `API_ENDPOINT` are present as of DEC-099: FastAPI,
244
- * Flask and Django all *declare* their routes, and reading a declaration
245
- * is not inference. The route extractor admits a route only where its
246
- * receiver resolves to a router constructed from a web framework's own
247
- * module — never from an attribute spelled like an HTTP verb, which on
248
- * saleor would have invented 1,150 routes out of `unittest.mock.patch`.
248
+ * `DTO` per DEC-100: Pydantic's `BaseModel` chain is a class
249
+ * declaring itself a runtime-enforced validation boundary — same
250
+ * evidence standard as `MODEL`. First language adapter to earn `DTO`
251
+ * (`adapter-openapi` needed a published contract for it).
249
252
  *
250
- * `DTO` joined them under DEC-100. It needs a transport boundary, and
251
- * DEC-043 was right that Python does not supply one — but Pydantic
252
- * does: a base chain reaching `BaseModel` imported from `pydantic` is a
253
- * class declaring itself a validated boundary object, enforced at
254
- * runtime by the framework. Same standard as `MODEL`, different
255
- * evidence. This is the first *language* adapter to earn `DTO`;
256
- * `adapter-openapi` needed a published contract for it.
257
- *
258
- * `COMPONENT` remains absent. Nothing SQLAlchemy, Django, Pydantic or a
259
- * route decorator writes down says anything about a UI.
253
+ * `COMPONENT` stays absent — nothing here writes anything about a UI.
260
254
  */
261
255
  nodeTypes: [
262
256
  "MODULE",
@@ -285,24 +279,15 @@ export function createPythonAdapter(options = {}) {
285
279
  hasCallHierarchy: false,
286
280
  hasTypeHierarchy: false,
287
281
  /**
288
- * Directories this ecosystem installs dependencies or build output into —
289
- * DEC-110's end state. The engine used to hold `node_modules`/`vendor`/`target`
290
- * in a hardcoded list; it holds none of them now and consumes this instead.
291
- *
292
- * `filesUnder()` already filters `/site-packages/` out of every discovered file.
293
- * `.venv` and `.tox` are dotted and structural; the undotted `venv` spelling is
294
- * not, so it is declared.
295
- *
296
- * Names only — the walk matches one path component, so a path or glob matches
297
- * nothing. Nothing dotted — those are skipped structurally already.
282
+ * DEC-110: the engine no longer hardcodes `node_modules`/`vendor`/`target`,
283
+ * adapters declare their own noise dirs instead. `filesUnder()` already
284
+ * filters `/site-packages/`; `.venv`/`.tox` are dotted and skipped
285
+ * structurally, but undotted `venv` is not, so it's declared here.
286
+ * Names only, one path component — no path or glob matches.
298
287
  */
299
288
  noiseDirectories: ["site-packages", "__pycache__", "venv"],
300
- /**
301
- * Named per framework rather than per language, because that is the unit
302
- * the work actually comes in. SQLAlchemy and Django disagree about the
303
- * default nullability of a column — SQLAlchemy 1.x says nullable, Django
304
- * says not — so neither rule could be written once for "Python".
305
- */
289
+ // Per framework, not per language: SQLAlchemy and Django disagree on a
290
+ // column's default nullability, so no single "Python" rule would work.
306
291
  frameworkExtractors: [
307
292
  "sqlalchemy",
308
293
  "django",
@@ -310,9 +295,8 @@ export function createPythonAdapter(options = {}) {
310
295
  "fastapi",
311
296
  "flask",
312
297
  "odoo",
313
- // GraphQL root operations, `method: "GRAPHQL"`. Rides `route-extractor`
314
- // exactly as gRPC rides Go's — a new query over the existing edges,
315
- // not a new capability tag.
298
+ // GraphQL root ops ride `route-extractor`, as gRPC rides Go's — a
299
+ // query over existing edges, not a new capability tag.
316
300
  "strawberry",
317
301
  "pydantic",
318
302
  "requests",
@@ -355,23 +339,18 @@ export function createPythonAdapter(options = {}) {
355
339
  const outcome = await runStreaming(interpreter.command, [EXTRACTOR], JSON.stringify({
356
340
  root: ctx.root.absolutePath,
357
341
  files,
358
- // The Python side records calls at depth 1 by default, which is right
359
- // for declarative configuration and wrong for the caller half: an
360
- // HTTP call lives in a method. Naming *which* packages make a file
361
- // worth full-depth recording is framework knowledge and stays here;
362
- // the extractor only knows how to record a call.
342
+ // Default call recording is depth 1, right for declarative config but
343
+ // wrong for the caller half (an HTTP call lives in a method). Which
344
+ // packages need full depth is framework knowledge, kept here — the
345
+ // extractor only knows how to record a call.
363
346
  deepCallModules: [...CLIENT_MODULES],
364
347
  }), ctx.signal,
365
- // **Measured, not chosen.** Across the 21-repository sweep the slowest
366
- // observed full-repository extraction was posthog at 25 ms per file
367
- // (462 s over 18,479 files); strapi ran at 7.6 ms and cal.com at 4.9 ms.
368
- // The budget is four times the worst observed rate with a one-minute
369
- // floor, so an ordinary repository can never trip it and a genuinely
370
- // stuck one is bounded.
348
+ // Measured: slowest of a 21-repo sweep was posthog at 25ms/file (462s
349
+ // over 18,479 files); strapi 7.6ms, cal.com 4.9ms. Budget is 4x worst
350
+ // observed rate with a one-minute floor.
371
351
  Math.max(ctx.prepareTimeoutMs, 60_000, files.length * 100));
372
- // R0 needs no imports resolved, R1 upward does — and every level this
373
- // adapter offers rests on the same single parse, so there is no cheaper
374
- // rung to fall back to between 0 and the ceiling.
352
+ // Every level above R0 rests on the same single parse — no cheaper rung
353
+ // between 0 and the ceiling.
375
354
  const reached = outcome.parsed === undefined ? 0 : ceiling;
376
355
  session = {
377
356
  root: ctx.root,
@@ -384,9 +363,8 @@ export function createPythonAdapter(options = {}) {
384
363
  return reached;
385
364
  },
386
365
  async parseFiles(files) {
387
- // Independent of `prepare` by contract: R0 must be achievable with no
388
- // dependencies present. The tree is the parsed record when one exists and
389
- // an empty placeholder otherwise, because the caller owns the file list.
366
+ // Independent of `prepare` by contract: R0 must work with no dependencies
367
+ // present, so the tree falls back to an empty placeholder.
390
368
  const parsed = session?.parsed;
391
369
  return files.map((file) => ({
392
370
  file,
@@ -410,15 +388,10 @@ export function createPythonAdapter(options = {}) {
410
388
  detail: message,
411
389
  }));
412
390
  const skippedSet = new Set(Object.keys(errors));
413
- // **An empty graph over a non-empty repository is never returned silently.**
414
- //
415
- // This is the rule that was missing. home-assistant-core and posthog each
416
- // returned 0 nodes over ~18,000 files and reported a successful R0 run,
417
- // because a transport failure and "this repository has nothing in it" were
418
- // indistinguishable downstream. Degrading to R0 is legitimate; saying
419
- // nothing about it is not — honest degradation requires the fallback to be
420
- // labelled, and an unlabelled one is a wrong answer wearing a right one's
421
- // clothes.
391
+ // An empty graph over a non-empty repo is never returned silently: this is
392
+ // the rule that was missing when home-assistant-core and posthog each
393
+ // returned 0 nodes over ~18,000 files as a "successful" R0 run. Degrading
394
+ // is legitimate; an unlabelled fallback is a wrong answer in disguise.
422
395
  const degraded = extraction.nodes.length === 0 && active.files.length > 0
423
396
  ? degradedGraph({
424
397
  repo: ctx.root.repo,
@@ -461,9 +434,8 @@ export function createPythonAdapter(options = {}) {
461
434
  reached: active.reached,
462
435
  packageName: active.packageName,
463
436
  parsed: active.parsed,
464
- // The repository's own collection rules, read from its config rather than
465
- // assumed. `test_*.py` / `Test*` / `test_*` are pytest's defaults, not its
466
- // definition, and a project may change all three.
437
+ // Read from the project's own config — pytest's `test_*.py`/`Test*`/
438
+ // `test_*` are defaults, not its definition, and can be overridden.
467
439
  pytest: readPytestConfig(active.root.absolutePath),
468
440
  });
469
441
  }
@@ -473,8 +445,13 @@ export function hashOf(root, relative) {
473
445
  try {
474
446
  return createHash("sha256").update(readFileSync(join(root, relative))).digest("hex").slice(0, 32);
475
447
  }
476
- catch {
477
- return "";
448
+ catch (error) {
449
+ // A read failure is a disclosed gap, not a hash: `""` would collide every
450
+ // unreadable file onto one value, hiding a later readable/unreadable flip
451
+ // (C-F7). This marker can never equal a real 32-hex hash, and is keyed by
452
+ // path so two unreadable files never collide with each other either.
453
+ const code = error instanceof Error && "code" in error ? String(error.code) : "UNKNOWN";
454
+ return `unreadable:${code}:${relative}`;
478
455
  }
479
456
  }
480
457
  export { LANGUAGE };
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAWN,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAkC,MAAM,cAAc,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAgB,CAAC;AAC3C,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC;AACvC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,SAAS,EAAE,UAAU,CAAU,CAAC;AAErE,MAAM,WAAW,GAAG,GAAG,UAAU,IAAI,eAAe,EAAE,CAAC;AAEvD;;;;;;GAMG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAE1D,oFAAoF;AACpF,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAU,CAAC;AAmDpD,8EAA8E;AAC9E,MAAM,UAAU,eAAe,CAAC,OAAyB;IACvD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,gBAAgB;YACnB,OAAO,+DAA+D,CAAC;QACzE,KAAK,cAAc;YACjB,OAAO,uCAAuC,OAAO,CAAC,MAAM,EAAE,CAAC;QACjE,KAAK,cAAc;YACjB,OAAO,wBAAwB,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QACjF,KAAK,WAAW;YACd,OAAO,CACL,oEAAoE,OAAO,CAAC,SAAS,GAAG;gBACxF,uFAAuF,CACxF,CAAC;QACJ,KAAK,WAAW;YACd,OAAO,6CAA6C,OAAO,CAAC,MAAM,EAAE,CAAC;QACvE,KAAK,WAAW;YACd,OAAO,CACL,kCAAkC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,qBAAqB;gBACzF,GAAG,OAAO,CAAC,SAAS,sEAAsE;gBAC1F,yFAAyF;gBACzF,8DAA8D,CAC/D,CAAC;IACN,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,IAAI,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,YAAY,CAAC;IAC3D,IAAI,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;QAAE,OAAO,eAAe,CAAC;IAC/D,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,YAAY,CACnB,OAAe,EACf,IAAuB,EACvB,KAAa,EACb,MAAmB,EACnB,SAAiB;IAEjB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAA4B,EAAE,CAAC;QAC1C,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,SAA6B,CAAC;QAElC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACpD,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,QAAQ,GAAG,IAAI,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC,EAAE,SAAS,CAAC,CAAC;QACd,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,CAAC,OAAyB,EAAQ,EAAE;YACjD,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,OAAO,CAAC,CAAC;QACnB,CAAC,CAAC;QAEF,MAAM,IAAI,GAAG,CAAC,IAAY,EAAQ,EAAE;YAClC,IAAI,IAAI,KAAK,EAAE;gBAAE,OAAO;YACxB,KAAK,IAAI,CAAC,CAAC;YACX,IAAI,MAAkG,CAAC;YACvG,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAkB,CAAC;YAC7C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,KAAK,QAAQ,KAAK,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC;gBAC3D,OAAO;YACT,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;gBAAE,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC;iBACpE,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;gBAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;iBAC5F,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;gBAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;iBACnG,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;gBAAE,UAAU,GAAG,IAAI,CAAC;QACxD,CAAC,CAAC;QAEF,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,OAAO,IAAI,KAAK,CAAC;YACjB,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpC,OAAO,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;gBACtB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;gBAChC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;gBACrC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;QACH,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QACnG,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,CAAC,OAAO,CAAC,CAAC;YACd,wEAAwE;YACxE,yEAAyE;YACzE,IAAI,QAAQ;gBAAE,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;iBAC1F,IAAI,IAAI,KAAK,CAAC;gBAAE,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;iBACxF,IAAI,SAAS,KAAK,SAAS;gBAAE,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;iBAC3F,IAAI,CAAC,UAAU;gBAAE,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;;gBAC9E,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAc,EAAE,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,GAAG,CACV,OAAe,EACf,IAAuB,EACvB,KAAa,EACb,MAAmB;IAEnB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,QAAQ,CACpB,OAAO,EACP,CAAC,GAAG,IAAI,CAAC;QACT,yEAAyE;QACzE,wEAAwE;QACxE,2DAA2D;QAC3D,EAAE,SAAS,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,MAAM,EAAE,EACxC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACxB,qEAAqE;YACrE,qEAAqE;YACrE,kEAAkE;YAClE,gEAAgE;YAChE,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC,CACF,CAAC;QACF,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,SAA6B,EAC7B,MAAmB;IAEnB,KAAK,MAAM,OAAO,IAAI,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3E,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,2DAA2D,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QACnH,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACrC,yEAAyE;QACzE,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAChF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAOD,MAAM,UAAU,mBAAmB,CAAC,UAAgC,EAAE;IACpE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,oBAAoB,CAAC;IACpD,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC;IAC3C,IAAI,OAA4B,CAAC;IACjC,IAAI,WAAoC,CAAC;IAEzC,MAAM,UAAU,GAAG,CAAC,IAAc,EAAqB,EAAE,CACvD,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAEzF,OAAO;QACL,EAAE,EAAE,UAAU;QACd,OAAO,EAAE,eAAe;QAExB,KAAK,CAAC,MAAM,CAAC,IAAc;YACzB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAC/B,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC;YAElF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,qEAAqE;gBACrE,qEAAqE;gBACrE,uEAAuE;gBACvE,SAAS;gBACT,OAAO;oBACL,QAAQ,EAAE,KAAK;oBACf,KAAK,EAAE,EAAE;oBACT,QAAQ,EAAE;wBACR,0CAA0C,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB;4BACjF,oEAAoE;qBACvE;iBACF,CAAC;YACJ,CAAC;YACD,WAAW,GAAG,KAAK,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAEnD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,EAAE,oBAAoB,CAAC,EAAE,CAAC;YACvF,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,iBAAiB,CAAC,CAAC;YAChD,uEAAuE;YACvE,wEAAwE;YACxE,wDAAwD;YACxD,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACnD,IAAI,MAAM,KAAK,eAAe;gBAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAE7D,KAAK,MAAM,MAAM,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,kBAAkB,CAAC,EAAE,CAAC;gBACrF,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;oBAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,UAAU,CAAC,CAAC;YACtF,CAAC;YACD,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC/C,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAEhC,MAAM,KAAK,GAAG;gBACZ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;aAChG,CAAC,IAAI,EAAE,CAAC;YACT,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAC7C,CAAC;QAED,YAAY;YACV,OAAO;gBACL,aAAa,EAAE,OAAO;gBACtB;;;;;;;;;;;;;;;;;;;;;;;;;;mBA0BG;gBACH,SAAS,EAAE;oBACT,QAAQ;oBACR,OAAO;oBACP,OAAO;oBACP,KAAK;oBACL,gBAAgB;oBAChB,iBAAiB;oBACjB,UAAU;oBACV,WAAW;oBACX,WAAW;oBACX,cAAc;iBACf;gBACD,SAAS,EAAE;oBACT,SAAS;oBACT,OAAO;oBACP,OAAO;oBACP,UAAU;oBACV,WAAW;oBACX,OAAO;oBACP,QAAQ;oBACR,SAAS;oBACT,YAAY;oBACZ,UAAU;iBACX;gBACD,gBAAgB,EAAE,KAAK;gBACvB,gBAAgB,EAAE,KAAK;gBACvB;;;;;;;;;;;mBAWG;gBACH,gBAAgB,EAAE,CAAC,eAAe,EAAE,aAAa,EAAE,MAAM,CAAC;gBAC1D;;;;;mBAKG;gBACH,mBAAmB,EAAE;oBACnB,YAAY;oBACZ,QAAQ;oBACR,qBAAqB;oBACrB,SAAS;oBACT,OAAO;oBACP,MAAM;oBACN,wEAAwE;oBACxE,oEAAoE;oBACpE,4BAA4B;oBAC5B,YAAY;oBACZ,UAAU;oBACV,UAAU;oBACV,OAAO;oBACP,SAAS;iBACV;gBACD,kEAAkE;gBAClE,gEAAgE;gBAChE,wCAAwC;gBACxC,qBAAqB,EAAE,CAAC,iBAAiB,EAAE,eAAe,EAAE,uBAAuB,CAAC;gBACpF,oBAAoB,EAAE;oBACpB,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC;oBAChE,MAAM,EACJ,qFAAqF;wBACrF,oFAAoF;wBACpF,qFAAqF;wBACrF,iEAAiE;iBACpE;aACF,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,GAAoB;YAChC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAEnD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9B,WAAW,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YAClE,CAAC;YACD,IAAI,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACpD,OAAO,GAAG;oBACR,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,KAAK;oBACL,MAAM,EAAE,SAAS;oBACjB,OAAO,EAAE,CAAC;oBACV,WAAW,EAAE,OAAO,CAAC,IAAI;oBACzB,gDAAgD;oBAChD,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;wBAC/C,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAsB,EAAE;wBAC7D,CAAC,CAAC,EAAE,CAAC;iBACR,CAAC;gBACF,OAAO,CAAC,CAAC;YACX,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,YAAY,CAChC,WAAW,CAAC,OAAO,EACnB,CAAC,SAAS,CAAC,EACX,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY;gBAC3B,KAAK;gBACL,sEAAsE;gBACtE,kEAAkE;gBAClE,mEAAmE;gBACnE,oEAAoE;gBACpE,iDAAiD;gBACjD,eAAe,EAAE,CAAC,GAAG,cAAc,CAAC;aACrC,CAAC,EACF,GAAG,CAAC,MAAM;YACV,uEAAuE;YACvE,oEAAoE;YACpE,yEAAyE;YACzE,qEAAqE;YACrE,qEAAqE;YACrE,wBAAwB;YACxB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAC3D,CAAC;YAEF,sEAAsE;YACtE,wEAAwE;YACxE,kDAAkD;YAClD,MAAM,OAAO,GAAoB,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5E,OAAO,GAAG;gBACR,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,KAAK;gBACL,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,OAAO;gBACP,WAAW,EAAE,OAAO,CAAC,IAAI;gBACzB,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;aACvE,CAAC;YACF,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,KAAyB;YACxC,sEAAsE;YACtE,0EAA0E;YAC1E,yEAAyE;YACzE,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;YAC/B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC1B,IAAI;gBACJ,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;aACrC,CAAC,CAAC,CAAC;QACN,CAAC;QAED,YAAY;YACV,OAAO,OAAO,EAAE,CAAC,KAAK,CAAC;QACzB,CAAC;QAED,YAAY;YACV,OAAO,OAAO,EAAE,CAAC,KAAK,CAAC;QACzB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,GAAoB;YAC7B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,OAAQ,CAAC;YACxB,MAAM,UAAU,GAAG,OAAO,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC;YAC3C,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;gBACpE,IAAI;gBACJ,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC;gBAC7B,MAAM,EAAE,OAAO;aAChB,CAAC,CAAC,CAAC;YACJ,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAEhD,6EAA6E;YAC7E,EAAE;YACF,0EAA0E;YAC1E,wEAAwE;YACxE,2EAA2E;YAC3E,sEAAsE;YACtE,2EAA2E;YAC3E,0EAA0E;YAC1E,WAAW;YACX,MAAM,QAAQ,GACZ,UAAU,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gBACtD,CAAC,CAAC,aAAa,CAAC;oBACZ,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI;oBACnB,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS;oBAC7B,UAAU,EAAE,WAAW;oBACvB,OAAO;oBACP,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,KAAK,EACH,MAAM,CAAC,OAAO,KAAK,SAAS;wBAC1B,CAAC,CAAC,sDAAsD;wBACxD,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC;iBACtC,CAAC;gBACJ,CAAC,CAAC,SAAS,CAAC;YAEhB,OAAO;gBACL,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI;gBACnB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC9E,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS;gBAC7B,UAAU,EAAE,WAAW;gBACvB,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC3D,YAAY;gBACZ,iBAAiB,EAAE,OAAO;gBAC1B,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,UAAU,CAAC,KAAK;gBAC1C,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,UAAU,CAAC,KAAK;gBAC1C,UAAU,EAAE,QAAQ,EAAE,UAAU,IAAI,UAAU,CAAC,UAAU;aAC1D,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,OAAO;YACX,OAAO,GAAG,SAAS,CAAC;YACpB,WAAW,GAAG,SAAS,CAAC;QAC1B,CAAC;KACF,CAAC;IAEF,SAAS,OAAO;QACd,MAAM,MAAM,GAAG,OAAO,CAAC;QACvB,IAAI,MAAM,EAAE,MAAM,KAAK,SAAS;YAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QAClF,OAAO,OAAO,CAAC;YACb,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;YACtB,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS;YAChC,UAAU,EAAE,WAAW;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,0EAA0E;YAC1E,2EAA2E;YAC3E,kDAAkD;YAClD,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;SACnD,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,MAAM,CAAC,IAAY,EAAE,QAAgB;IACnD,IAAI,CAAC;QACH,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts CHANGED
@@ -5,29 +5,19 @@
5
5
  * API_ROUTE ──SERVES_API──▶ API_ENDPOINT ◀──USES_API── caller
6
6
  * ```
7
7
  *
8
- * `routes.ts` produces the provider half. This produces the consumer half, and
9
- * until it existed `adapter-python` declared no `USES_API` at all, so golden
10
- * pattern 08 was skipped rather than passed — declared incapacity, per DEC-043.
8
+ * `routes.ts` produces the provider half; this the consumer half — until it
9
+ * existed, `adapter-python` declared no `USES_API` and golden 08 was skipped
10
+ * as declared incapacity (DEC-043).
11
11
  *
12
- * ## What counts as evidence
12
+ * Provenance, never the name: `requests.get(...)` is only an HTTP call when
13
+ * `requests` resolves through this file's imports. `client.get()` is the
14
+ * commonest false positive here — every Django/Flask test suite calls
15
+ * `client.get("/orders/1")` on a test client making no HTTP request at all
16
+ * (1,970 such sites in django, 310 in flask, against one file in either that
17
+ * imports `requests`).
13
18
  *
14
- * **Provenance, never the name.** `requests.get(...)` is only an HTTP call when
15
- * `requests` resolves, through this file's own import table, to the `requests`
16
- * package. A local object called `requests`, or a `client.get()` on something
17
- * this reader cannot trace, is not one — and `client.get()` is the single most
18
- * common false positive available here, because every Django and Flask test
19
- * suite in existence calls `client.get("/orders/1")` on a **test client** that
20
- * makes no HTTP request at all. A census of the reference set found 1,970 such
21
- * call sites in `django` and 310 in `flask`, against **one** file in either that
22
- * imports `requests`. Matching on the verb name would have produced 2,280 edges
23
- * to endpoints nothing serves.
24
- *
25
- * ## What is refused
26
- *
27
- * A path that is not a literal or an f-string · a path that is not
28
- * repository-relative, which is an outbound call to somebody else's service and
29
- * has no route on this side of the join · a `request()` whose verb is not a
30
- * literal. Each is a ledger row.
19
+ * Refused: a non-literal/non-f-string path, a non-repository-relative path
20
+ * (an outbound call with no route on this side), a non-literal `request()` verb.
31
21
  */
32
22
  import type { PyCall } from "./extract.ts";
33
23
  /** The packages whose module-level verbs are HTTP calls. */
@@ -67,17 +57,12 @@ export interface ClientRefusal {
67
57
  export type BaseRefusalClass = "value-unknown" | "varies-per-call" | "capability-gap";
68
58
  /**
69
59
  * An f-string whose first element is an interpolation: `f"{BASE}/orders/{id}"`.
70
- *
71
- * **This is the shape a Python service actually writes**, and until this was
72
- * added the reader refused every one of them as "not a literal". Counted across
73
- * five reference repositories: 283 module-level `requests`/`httpx` verb calls,
74
- * of which **not one** takes a repository-relative literal and **78** take this
75
- * form. The extractor was built for a shape the corpus does not contain, and no
76
- * precision draw could have said so — there were no edges to sample.
77
- *
78
- * Returns the base expression as written and the remainder as a template. The
79
- * remainder must begin with `/`, because `f"{base}orders"` is a base whose own
80
- * trailing slash decides the path and this reader cannot see it.
60
+ * This is the shape a Python service actually writes — until added, the
61
+ * reader refused every one as "not a literal": across five reference repos,
62
+ * 283 module-level verb calls, zero repository-relative literals, 78 of
63
+ * this form. Returns the base as written and the remainder as a template;
64
+ * the remainder must start with `/`, since a base's own trailing slash
65
+ * would otherwise decide the path invisibly.
81
66
  */
82
67
  export declare function assemblyOfSource(raw: string): {
83
68
  base: string;
@@ -85,15 +70,11 @@ export declare function assemblyOfSource(raw: string): {
85
70
  } | undefined;
86
71
  /**
87
72
  * A path argument's source text as a template, or `undefined`.
88
- *
89
- * `f"/orders/{order_id}"` becomes `/orders/{param}`, which is what
90
- * `normaliseEndpointPath` produces from the provider's `/orders/{order_id}` —
91
- * the two must agree or the join does not happen. `{{` is an escaped brace and
92
- * is not an interpolation.
93
- *
94
- * Deliberately narrow: one string, no implicit concatenation, no `%` or
95
- * `.format()`. Each of those is a path assembled somewhere else, and a template
96
- * guessed from half of it is an endpoint that does not exist.
73
+ * `f"/orders/{order_id}"` -> `/orders/{param}`, matching what
74
+ * `normaliseEndpointPath` produces from the provider side, or the join
75
+ * doesn't happen. Deliberately narrow — one string, no concatenation, no
76
+ * `%`/`.format()` — since a template guessed from half an assembly is an
77
+ * endpoint that doesn't exist.
97
78
  */
98
79
  export declare function templateOfSource(raw: string): string | undefined;
99
80
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}