@descryy/adapter-python 0.3.3 → 0.4.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/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +37 -3
- package/dist/adapter.js.map +1 -1
- package/dist/annotation-density.d.ts +147 -0
- package/dist/annotation-density.d.ts.map +1 -0
- package/dist/annotation-density.js +173 -0
- package/dist/annotation-density.js.map +1 -0
- package/dist/external.d.ts +134 -0
- package/dist/external.d.ts.map +1 -0
- package/dist/external.js +227 -0
- package/dist/external.js.map +1 -0
- package/dist/extract.d.ts +6 -0
- package/dist/extract.d.ts.map +1 -1
- package/dist/extract.js +73 -2
- package/dist/extract.js.map +1 -1
- package/dist/extract.py +44 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/module.d.ts +9 -0
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js.map +1 -1
- package/package.json +4 -4
- package/src/extract.py +44 -0
package/dist/adapter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,EAML,KAAK,eAAe,EAGpB,KAAK,eAAe,EAEpB,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AAIrB,OAAO,EAA0B,QAAQ,EAAmB,KAAK,QAAQ,EAAE,MAAM,cAAc,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,EAEpB,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AAIrB,OAAO,EAA0B,QAAQ,EAAmB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAKhG,eAAO,MAAM,UAAU,mBAAmB,CAAC;AAC3C;;;;;;kCAMkC;AAClC,eAAO,MAAM,eAAe,EAAE,MAErB,CAAC;AACV,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;AAmBD;;;;;;;;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,CA2VrF;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
|
@@ -10,9 +10,10 @@ import { existsSync, readFileSync } from "node:fs";
|
|
|
10
10
|
import { createHash } from "node:crypto";
|
|
11
11
|
import { join } from "node:path";
|
|
12
12
|
import { ROUTE_HANDLER_EXTRACTOR, } from "@descryy/ir";
|
|
13
|
-
import { discover } from "@descryy/adapter-common";
|
|
13
|
+
import { discover, extractOrDegrade } from "@descryy/adapter-common";
|
|
14
14
|
import { degradedGraph, extract, LANGUAGE } from "./extract.js";
|
|
15
15
|
import { projectName } from "./module.js";
|
|
16
|
+
import { annotationDensity } from "./annotation-density.js";
|
|
16
17
|
import { PYTEST_DEFAULTS, readPytestConfig } from "./pytest-config.js";
|
|
17
18
|
export const ADAPTER_ID = "adapter-python";
|
|
18
19
|
/** The installed package's own declared version — read directly from this
|
|
@@ -367,13 +368,32 @@ export function createPythonAdapter(options = {}) {
|
|
|
367
368
|
Math.max(ctx.prepareTimeoutMs, 60_000, files.length * 100));
|
|
368
369
|
// Every level above R0 rests on the same single parse — no cheaper rung
|
|
369
370
|
// between 0 and the ceiling.
|
|
370
|
-
|
|
371
|
+
//
|
|
372
|
+
// ...except R3, which rests on something this repository either wrote down
|
|
373
|
+
// or did not. DEC-062 accepts Python's R3 from written annotations rather
|
|
374
|
+
// than from a checker, and caps an UNANNOTATED repository "around R2" in
|
|
375
|
+
// the same breath. Only the first half was ever built, so a repository
|
|
376
|
+
// with no annotations at all was published at R3 — django measures 0.1%
|
|
377
|
+
// annotated parameters and is one of the repositories the tier gate was
|
|
378
|
+
// run against. See `annotation-density.ts` for the measured distribution
|
|
379
|
+
// the floor sits in.
|
|
380
|
+
//
|
|
381
|
+
// This caps the CLAIM, not the edges: every edge already carries its own
|
|
382
|
+
// resolution and the ceiling only suppresses, never promotes, so an
|
|
383
|
+
// unannotated repository never produced R3 edges in the first place. What
|
|
384
|
+
// it produced was a run-level R3 that `capabilities()` published and the
|
|
385
|
+
// tier gate read.
|
|
386
|
+
const parsedOk = outcome.parsed !== undefined;
|
|
387
|
+
const density = parsedOk ? annotationDensity(outcome.parsed) : undefined;
|
|
388
|
+
const capped = ceiling >= 3 && density?.capped === true;
|
|
389
|
+
const reached = !parsedOk ? 0 : capped ? Math.min(2, ceiling) : ceiling;
|
|
371
390
|
session = {
|
|
372
391
|
root: ctx.root,
|
|
373
392
|
files,
|
|
374
393
|
parsed: outcome.parsed,
|
|
375
394
|
reached,
|
|
376
395
|
packageName: project.name,
|
|
396
|
+
...(density === undefined ? {} : { density }),
|
|
377
397
|
...(outcome.failure === undefined ? {} : { failure: outcome.failure }),
|
|
378
398
|
};
|
|
379
399
|
return reached;
|
|
@@ -396,7 +416,21 @@ export function createPythonAdapter(options = {}) {
|
|
|
396
416
|
async emit(ctx) {
|
|
397
417
|
const reached = await this.prepare(ctx);
|
|
398
418
|
const active = session;
|
|
399
|
-
|
|
419
|
+
// A throw here used to escape `emit()` and be reported by the caller as
|
|
420
|
+
// the whole language being not analysable — indistinguishable from this
|
|
421
|
+
// adapter being broken everywhere. It degrades to the same disclosed
|
|
422
|
+
// failed analysis the empty case below already produces; see
|
|
423
|
+
// `extractOrDegrade`.
|
|
424
|
+
const degradedByThrow = (cause) => degradedGraph({
|
|
425
|
+
repo: ctx.root.repo,
|
|
426
|
+
workspace: ctx.root.workspace,
|
|
427
|
+
producedBy: PRODUCED_BY,
|
|
428
|
+
reached,
|
|
429
|
+
packageName: active.packageName,
|
|
430
|
+
files: active.files,
|
|
431
|
+
cause,
|
|
432
|
+
});
|
|
433
|
+
const extraction = extractOrDegrade(current, degradedByThrow);
|
|
400
434
|
const errors = active.parsed?.errors ?? {};
|
|
401
435
|
const skippedFiles = Object.entries(errors).map(([file, message]) => ({
|
|
402
436
|
file,
|
package/dist/adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How much of this repository states its own types — the measurement DEC-062
|
|
3
|
+
* named and no code implemented.
|
|
4
|
+
*
|
|
5
|
+
* DEC-062 accepts Python's R3 from written annotations rather than from a type
|
|
6
|
+
* checker: "`ast` carries no type information at all. R2 name binding and R3
|
|
7
|
+
* shapes come from analysis over the tree — imports, module-level scope and
|
|
8
|
+
* annotations — not from a checker." Its very next sentence is the conditional
|
|
9
|
+
* that went unbuilt for a year: **"an unannotated repository caps Python around
|
|
10
|
+
* R2."** `prepare()` returned the full ceiling whenever any file parsed, so a
|
|
11
|
+
* repository with no annotations anywhere was published at R3.
|
|
12
|
+
*
|
|
13
|
+
* ## What this changes, and what it deliberately does not
|
|
14
|
+
*
|
|
15
|
+
* **Edges were never mis-stamped, and this does not fix them because they are
|
|
16
|
+
* not broken.** Every edge carries its own `resolution`, and the run ceiling
|
|
17
|
+
* only suppresses (`if (level > input.reached) continue`) — it never promotes.
|
|
18
|
+
* An unannotated repository already produced no R3 edges, because it had no R3
|
|
19
|
+
* evidence to produce them from.
|
|
20
|
+
*
|
|
21
|
+
* What was wrong is the **run-level claim**: the number `capabilities()`
|
|
22
|
+
* publishes, that the tier gate reads for `S.r3`/`S.shapes`, and that a consumer
|
|
23
|
+
* sees as the resolution floor under an answer. Saying "this run reached R3" of
|
|
24
|
+
* a repository where almost nothing could be resolved at R3 is a disclosure
|
|
25
|
+
* defect, and `CLAUDE.md` rule 3 makes it a correctness one downstream: R3 maps
|
|
26
|
+
* to reliability class A.
|
|
27
|
+
*
|
|
28
|
+
* ## The threshold is measured
|
|
29
|
+
*
|
|
30
|
+
* Nine Python repositories on disk, 2026-09-17, parameter-annotation rate
|
|
31
|
+
* (`self`/`cls` excluded, matching `extract.py`'s own rule):
|
|
32
|
+
*
|
|
33
|
+
* | repository | params | annotated |
|
|
34
|
+
* | --- | ---: | ---: |
|
|
35
|
+
* | full-stack-fastapi-template | 248 | 100.0% |
|
|
36
|
+
* | sherpa-backend | 714 | 94.7% |
|
|
37
|
+
* | home-assistant-core | 210,323 | 92.6% |
|
|
38
|
+
* | sentry | 62,318 | 78.3% |
|
|
39
|
+
* | paperless | 4,406 | 70.5% |
|
|
40
|
+
* | dispatch | 6,388 | 66.3% |
|
|
41
|
+
* | **— the gap —** | | |
|
|
42
|
+
* | saleor | 69,685 | 13.3% |
|
|
43
|
+
* | netbox | 4,238 | 2.3% |
|
|
44
|
+
* | django | 16,799 | 0.1% |
|
|
45
|
+
*
|
|
46
|
+
* **The distribution is bimodal with a 53-point gap and nothing inside it.** The
|
|
47
|
+
* floor is placed in that gap rather than at a defensible-sounding round number
|
|
48
|
+
* near real data: no repository measured is within 16 points of it, so the
|
|
49
|
+
* ceiling cannot flip on measurement noise or on which files a run happened to
|
|
50
|
+
* select. That is the property worth having, and it is why the number is
|
|
51
|
+
* reported with the distribution attached — a threshold fitted to one repository
|
|
52
|
+
* is how the 2%-versus-5% control conflict happened.
|
|
53
|
+
*
|
|
54
|
+
* **django is the case that proves the gap is real, not an artifact.** It
|
|
55
|
+
* measures 0.1% and was admitted as a precision-draw repository for the run that
|
|
56
|
+
* once published Python at Tier S. DEC-062's "unannotated repository" is not a
|
|
57
|
+
* hypothetical — it is the repository the gate was measured on.
|
|
58
|
+
*/
|
|
59
|
+
import type { PyResult } from "./extract.ts";
|
|
60
|
+
/**
|
|
61
|
+
* The fraction of annotatable positions that must carry an annotation before a
|
|
62
|
+
* run may claim R3.
|
|
63
|
+
*
|
|
64
|
+
* **One line to change, deliberately.** DEC-062 says "around R2" and names no
|
|
65
|
+
* number; this is a proposal with a measurement attached, filed as
|
|
66
|
+
* `DEC-NEXT-annotation-density-gate-for-python-php-r3`, not a settled value.
|
|
67
|
+
* 0.50 reads as "more than half of what could state its type does" and sits
|
|
68
|
+
* near the middle of the measured gap (13.3% … 66.3%).
|
|
69
|
+
*/
|
|
70
|
+
export declare const ANNOTATION_DENSITY_FLOOR = 0.5;
|
|
71
|
+
/**
|
|
72
|
+
* The fewest annotatable positions a run must contain before its density means
|
|
73
|
+
* anything at all. Below this the run is never capped.
|
|
74
|
+
*
|
|
75
|
+
* **Not a concession to make tests pass — a sample-size rule this repository has
|
|
76
|
+
* already had to learn once.** DEC-264 added `TYPE_FLOOR = 20` to `certify.ts`
|
|
77
|
+
* for the identical shape: a per-edge-type precision claim from fewer than 20
|
|
78
|
+
* decided rows was failing promotions on numbers too thin to support either
|
|
79
|
+
* verdict. A density computed over one function is the same statistic with the
|
|
80
|
+
* same defect — `def build():` with no parameters is a single annotatable
|
|
81
|
+
* position, and one unannotated return would otherwise cap the whole run at R2
|
|
82
|
+
* and suppress genuinely resolved R3 edges elsewhere in it.
|
|
83
|
+
*
|
|
84
|
+
* Scale of the distinction, measured: the smallest real repository sampled
|
|
85
|
+
* (`full-stack-fastapi-template`) carries 248 parameter positions and the
|
|
86
|
+
* largest 210,323, so no real repository is anywhere near this floor, while the
|
|
87
|
+
* adapter's own fixtures carry one to five.
|
|
88
|
+
*
|
|
89
|
+
* **The disclosed cost:** a genuinely unannotated package of fewer than ~20
|
|
90
|
+
* annotatable positions is still published at R3. That is a real gap, accepted
|
|
91
|
+
* because the alternative — concluding a repository's annotation culture from a
|
|
92
|
+
* single function — is wrong more often and in a direction that suppresses
|
|
93
|
+
* correct edges (`CLAUDE.md` rule 2 cuts the other way here: the cap costs
|
|
94
|
+
* recall on evidence that was never in doubt).
|
|
95
|
+
*/
|
|
96
|
+
export declare const ANNOTATION_SAMPLE_FLOOR = 20;
|
|
97
|
+
/**
|
|
98
|
+
* The measurement the floor was set from, as data rather than prose — every
|
|
99
|
+
* Python repository on disk on 2026-09-17, with its parameter-annotation rate
|
|
100
|
+
* (`self`/`cls` excluded, matching `extract.py`'s own rule for an annotatable
|
|
101
|
+
* position).
|
|
102
|
+
*
|
|
103
|
+
* **This is a table and not a paragraph on purpose.** A number in a comment that
|
|
104
|
+
* no test reads goes stale silently; this repository has been bitten by exactly
|
|
105
|
+
* that at least four times in one week — an adapter census inferred from a
|
|
106
|
+
* two-adapter corpus build, a capability emitted by one adapter and declared by
|
|
107
|
+
* none, a tier table citing three superseded decisions, and eight inherited
|
|
108
|
+
* findings of which none survived contact with source. The accompanying test
|
|
109
|
+
* asserts that `ANNOTATION_DENSITY_FLOOR` actually separates these two groups,
|
|
110
|
+
* so moving the floor onto a measured repository fails rather than merely
|
|
111
|
+
* reading oddly.
|
|
112
|
+
*
|
|
113
|
+
* **`django` is the row that matters and the reason this is not theoretical.**
|
|
114
|
+
* It measures 0.1% annotated parameters *and* was an admitted precision-draw
|
|
115
|
+
* repository for the run that once published Python at Tier S. DEC-062's
|
|
116
|
+
* "unannotated repository" is not a hypothetical corner of the ecosystem — it is
|
|
117
|
+
* a repository this project measured its own gate against while claiming R3 on
|
|
118
|
+
* it. If this table is ever regenerated, that row is the one to check first.
|
|
119
|
+
*/
|
|
120
|
+
export declare const MEASURED_DENSITIES: Readonly<Record<string, {
|
|
121
|
+
readonly params: number;
|
|
122
|
+
readonly rate: number;
|
|
123
|
+
}>>;
|
|
124
|
+
export interface AnnotationDensity {
|
|
125
|
+
/** Positions that could carry an annotation: every parameter, plus one per function for its return. */
|
|
126
|
+
readonly annotatable: number;
|
|
127
|
+
/** How many of them do. */
|
|
128
|
+
readonly annotated: number;
|
|
129
|
+
/** `annotated / annotatable`, or `null` when nothing could carry one. */
|
|
130
|
+
readonly density: number | null;
|
|
131
|
+
/** True when the run must be capped below R3. */
|
|
132
|
+
readonly capped: boolean;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Count annotatable and annotated positions across everything the extractor
|
|
136
|
+
* parsed.
|
|
137
|
+
*
|
|
138
|
+
* **Parameters and returns only, and `self`/`cls` already excluded upstream** —
|
|
139
|
+
* `extract.py` drops them when building `params` ("`self` and `cls` carry no
|
|
140
|
+
* annotation and name no type"), so the denominator is the set of positions a
|
|
141
|
+
* developer could actually have typed. Class attributes are deliberately not
|
|
142
|
+
* counted: `extract.py` records an unannotated `x = 1` and an annotated `x: int
|
|
143
|
+
* = 1` in the same list, and a repository of plain assignments would be scored
|
|
144
|
+
* as refusing to annotate things that are conventionally never annotated.
|
|
145
|
+
*/
|
|
146
|
+
export declare function annotationDensity(parsed: PyResult): AnnotationDensity;
|
|
147
|
+
//# sourceMappingURL=annotation-density.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotation-density.d.ts","sourceRoot":"","sources":["../src/annotation-density.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAW3G,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,uGAAuG;IACvG,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,2BAA2B;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,yEAAyE;IACzE,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,iDAAiD;IACjD,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,GAAG,iBAAiB,CA8BrE"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How much of this repository states its own types — the measurement DEC-062
|
|
3
|
+
* named and no code implemented.
|
|
4
|
+
*
|
|
5
|
+
* DEC-062 accepts Python's R3 from written annotations rather than from a type
|
|
6
|
+
* checker: "`ast` carries no type information at all. R2 name binding and R3
|
|
7
|
+
* shapes come from analysis over the tree — imports, module-level scope and
|
|
8
|
+
* annotations — not from a checker." Its very next sentence is the conditional
|
|
9
|
+
* that went unbuilt for a year: **"an unannotated repository caps Python around
|
|
10
|
+
* R2."** `prepare()` returned the full ceiling whenever any file parsed, so a
|
|
11
|
+
* repository with no annotations anywhere was published at R3.
|
|
12
|
+
*
|
|
13
|
+
* ## What this changes, and what it deliberately does not
|
|
14
|
+
*
|
|
15
|
+
* **Edges were never mis-stamped, and this does not fix them because they are
|
|
16
|
+
* not broken.** Every edge carries its own `resolution`, and the run ceiling
|
|
17
|
+
* only suppresses (`if (level > input.reached) continue`) — it never promotes.
|
|
18
|
+
* An unannotated repository already produced no R3 edges, because it had no R3
|
|
19
|
+
* evidence to produce them from.
|
|
20
|
+
*
|
|
21
|
+
* What was wrong is the **run-level claim**: the number `capabilities()`
|
|
22
|
+
* publishes, that the tier gate reads for `S.r3`/`S.shapes`, and that a consumer
|
|
23
|
+
* sees as the resolution floor under an answer. Saying "this run reached R3" of
|
|
24
|
+
* a repository where almost nothing could be resolved at R3 is a disclosure
|
|
25
|
+
* defect, and `CLAUDE.md` rule 3 makes it a correctness one downstream: R3 maps
|
|
26
|
+
* to reliability class A.
|
|
27
|
+
*
|
|
28
|
+
* ## The threshold is measured
|
|
29
|
+
*
|
|
30
|
+
* Nine Python repositories on disk, 2026-09-17, parameter-annotation rate
|
|
31
|
+
* (`self`/`cls` excluded, matching `extract.py`'s own rule):
|
|
32
|
+
*
|
|
33
|
+
* | repository | params | annotated |
|
|
34
|
+
* | --- | ---: | ---: |
|
|
35
|
+
* | full-stack-fastapi-template | 248 | 100.0% |
|
|
36
|
+
* | sherpa-backend | 714 | 94.7% |
|
|
37
|
+
* | home-assistant-core | 210,323 | 92.6% |
|
|
38
|
+
* | sentry | 62,318 | 78.3% |
|
|
39
|
+
* | paperless | 4,406 | 70.5% |
|
|
40
|
+
* | dispatch | 6,388 | 66.3% |
|
|
41
|
+
* | **— the gap —** | | |
|
|
42
|
+
* | saleor | 69,685 | 13.3% |
|
|
43
|
+
* | netbox | 4,238 | 2.3% |
|
|
44
|
+
* | django | 16,799 | 0.1% |
|
|
45
|
+
*
|
|
46
|
+
* **The distribution is bimodal with a 53-point gap and nothing inside it.** The
|
|
47
|
+
* floor is placed in that gap rather than at a defensible-sounding round number
|
|
48
|
+
* near real data: no repository measured is within 16 points of it, so the
|
|
49
|
+
* ceiling cannot flip on measurement noise or on which files a run happened to
|
|
50
|
+
* select. That is the property worth having, and it is why the number is
|
|
51
|
+
* reported with the distribution attached — a threshold fitted to one repository
|
|
52
|
+
* is how the 2%-versus-5% control conflict happened.
|
|
53
|
+
*
|
|
54
|
+
* **django is the case that proves the gap is real, not an artifact.** It
|
|
55
|
+
* measures 0.1% and was admitted as a precision-draw repository for the run that
|
|
56
|
+
* once published Python at Tier S. DEC-062's "unannotated repository" is not a
|
|
57
|
+
* hypothetical — it is the repository the gate was measured on.
|
|
58
|
+
*/
|
|
59
|
+
/**
|
|
60
|
+
* The fraction of annotatable positions that must carry an annotation before a
|
|
61
|
+
* run may claim R3.
|
|
62
|
+
*
|
|
63
|
+
* **One line to change, deliberately.** DEC-062 says "around R2" and names no
|
|
64
|
+
* number; this is a proposal with a measurement attached, filed as
|
|
65
|
+
* `DEC-NEXT-annotation-density-gate-for-python-php-r3`, not a settled value.
|
|
66
|
+
* 0.50 reads as "more than half of what could state its type does" and sits
|
|
67
|
+
* near the middle of the measured gap (13.3% … 66.3%).
|
|
68
|
+
*/
|
|
69
|
+
export const ANNOTATION_DENSITY_FLOOR = 0.5;
|
|
70
|
+
/**
|
|
71
|
+
* The fewest annotatable positions a run must contain before its density means
|
|
72
|
+
* anything at all. Below this the run is never capped.
|
|
73
|
+
*
|
|
74
|
+
* **Not a concession to make tests pass — a sample-size rule this repository has
|
|
75
|
+
* already had to learn once.** DEC-264 added `TYPE_FLOOR = 20` to `certify.ts`
|
|
76
|
+
* for the identical shape: a per-edge-type precision claim from fewer than 20
|
|
77
|
+
* decided rows was failing promotions on numbers too thin to support either
|
|
78
|
+
* verdict. A density computed over one function is the same statistic with the
|
|
79
|
+
* same defect — `def build():` with no parameters is a single annotatable
|
|
80
|
+
* position, and one unannotated return would otherwise cap the whole run at R2
|
|
81
|
+
* and suppress genuinely resolved R3 edges elsewhere in it.
|
|
82
|
+
*
|
|
83
|
+
* Scale of the distinction, measured: the smallest real repository sampled
|
|
84
|
+
* (`full-stack-fastapi-template`) carries 248 parameter positions and the
|
|
85
|
+
* largest 210,323, so no real repository is anywhere near this floor, while the
|
|
86
|
+
* adapter's own fixtures carry one to five.
|
|
87
|
+
*
|
|
88
|
+
* **The disclosed cost:** a genuinely unannotated package of fewer than ~20
|
|
89
|
+
* annotatable positions is still published at R3. That is a real gap, accepted
|
|
90
|
+
* because the alternative — concluding a repository's annotation culture from a
|
|
91
|
+
* single function — is wrong more often and in a direction that suppresses
|
|
92
|
+
* correct edges (`CLAUDE.md` rule 2 cuts the other way here: the cap costs
|
|
93
|
+
* recall on evidence that was never in doubt).
|
|
94
|
+
*/
|
|
95
|
+
export const ANNOTATION_SAMPLE_FLOOR = 20;
|
|
96
|
+
/**
|
|
97
|
+
* The measurement the floor was set from, as data rather than prose — every
|
|
98
|
+
* Python repository on disk on 2026-09-17, with its parameter-annotation rate
|
|
99
|
+
* (`self`/`cls` excluded, matching `extract.py`'s own rule for an annotatable
|
|
100
|
+
* position).
|
|
101
|
+
*
|
|
102
|
+
* **This is a table and not a paragraph on purpose.** A number in a comment that
|
|
103
|
+
* no test reads goes stale silently; this repository has been bitten by exactly
|
|
104
|
+
* that at least four times in one week — an adapter census inferred from a
|
|
105
|
+
* two-adapter corpus build, a capability emitted by one adapter and declared by
|
|
106
|
+
* none, a tier table citing three superseded decisions, and eight inherited
|
|
107
|
+
* findings of which none survived contact with source. The accompanying test
|
|
108
|
+
* asserts that `ANNOTATION_DENSITY_FLOOR` actually separates these two groups,
|
|
109
|
+
* so moving the floor onto a measured repository fails rather than merely
|
|
110
|
+
* reading oddly.
|
|
111
|
+
*
|
|
112
|
+
* **`django` is the row that matters and the reason this is not theoretical.**
|
|
113
|
+
* It measures 0.1% annotated parameters *and* was an admitted precision-draw
|
|
114
|
+
* repository for the run that once published Python at Tier S. DEC-062's
|
|
115
|
+
* "unannotated repository" is not a hypothetical corner of the ecosystem — it is
|
|
116
|
+
* a repository this project measured its own gate against while claiming R3 on
|
|
117
|
+
* it. If this table is ever regenerated, that row is the one to check first.
|
|
118
|
+
*/
|
|
119
|
+
export const MEASURED_DENSITIES = {
|
|
120
|
+
"full-stack-fastapi-template": { params: 248, rate: 1.0 },
|
|
121
|
+
"sherpa-backend": { params: 714, rate: 0.947 },
|
|
122
|
+
"home-assistant-core": { params: 210_323, rate: 0.926 },
|
|
123
|
+
sentry: { params: 62_318, rate: 0.783 },
|
|
124
|
+
paperless: { params: 4_406, rate: 0.705 },
|
|
125
|
+
dispatch: { params: 6_388, rate: 0.663 },
|
|
126
|
+
// --- the gap: 53 points, nothing inside it ---
|
|
127
|
+
saleor: { params: 69_685, rate: 0.133 },
|
|
128
|
+
netbox: { params: 4_238, rate: 0.023 },
|
|
129
|
+
django: { params: 16_799, rate: 0.001 },
|
|
130
|
+
};
|
|
131
|
+
/**
|
|
132
|
+
* Count annotatable and annotated positions across everything the extractor
|
|
133
|
+
* parsed.
|
|
134
|
+
*
|
|
135
|
+
* **Parameters and returns only, and `self`/`cls` already excluded upstream** —
|
|
136
|
+
* `extract.py` drops them when building `params` ("`self` and `cls` carry no
|
|
137
|
+
* annotation and name no type"), so the denominator is the set of positions a
|
|
138
|
+
* developer could actually have typed. Class attributes are deliberately not
|
|
139
|
+
* counted: `extract.py` records an unannotated `x = 1` and an annotated `x: int
|
|
140
|
+
* = 1` in the same list, and a repository of plain assignments would be scored
|
|
141
|
+
* as refusing to annotate things that are conventionally never annotated.
|
|
142
|
+
*/
|
|
143
|
+
export function annotationDensity(parsed) {
|
|
144
|
+
let annotatable = 0;
|
|
145
|
+
let annotated = 0;
|
|
146
|
+
for (const file of Object.values(parsed.files ?? {})) {
|
|
147
|
+
for (const declaration of file?.declarations ?? []) {
|
|
148
|
+
if (declaration.kind !== "function")
|
|
149
|
+
continue;
|
|
150
|
+
annotatable += 1; // the return position
|
|
151
|
+
if (declaration.returns != null)
|
|
152
|
+
annotated += 1;
|
|
153
|
+
for (const param of declaration.params ?? []) {
|
|
154
|
+
annotatable += 1;
|
|
155
|
+
if (param.annotation != null)
|
|
156
|
+
annotated += 1;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// Nothing to annotate is not evidence of an unannotated repository. Capping a
|
|
161
|
+
// package of constants because it declares no functions would make the
|
|
162
|
+
// ceiling a property of file selection rather than of the code.
|
|
163
|
+
if (annotatable === 0)
|
|
164
|
+
return { annotatable: 0, annotated: 0, density: null, capped: false };
|
|
165
|
+
const density = annotated / annotatable;
|
|
166
|
+
// Too few positions to conclude from — see ANNOTATION_SAMPLE_FLOOR. The
|
|
167
|
+
// density is still reported, because "measured and thin" and "not measured"
|
|
168
|
+
// are different facts and a caller may want to say which it has.
|
|
169
|
+
if (annotatable < ANNOTATION_SAMPLE_FLOOR)
|
|
170
|
+
return { annotatable, annotated, density, capped: false };
|
|
171
|
+
return { annotatable, annotated, density, capped: density < ANNOTATION_DENSITY_FLOOR };
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=annotation-density.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotation-density.js","sourceRoot":"","sources":["../src/annotation-density.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAIH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAiF;IAC9G,6BAA6B,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;IACzD,gBAAgB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;IAC9C,qBAAqB,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE;IACvD,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;IACvC,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;IACzC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;IACxC,gDAAgD;IAChD,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;IACvC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;IACtC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;CACxC,CAAC;AAaF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAgB;IAChD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QACrD,KAAK,MAAM,WAAW,IAAI,IAAI,EAAE,YAAY,IAAI,EAAE,EAAE,CAAC;YACnD,IAAI,WAAW,CAAC,IAAI,KAAK,UAAU;gBAAE,SAAS;YAE9C,WAAW,IAAI,CAAC,CAAC,CAAC,sBAAsB;YACxC,IAAI,WAAW,CAAC,OAAO,IAAI,IAAI;gBAAE,SAAS,IAAI,CAAC,CAAC;YAEhD,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;gBAC7C,WAAW,IAAI,CAAC,CAAC;gBACjB,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI;oBAAE,SAAS,IAAI,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,uEAAuE;IACvE,gEAAgE;IAChE,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAE7F,MAAM,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC;IACxC,wEAAwE;IACxE,4EAA4E;IAC5E,iEAAiE;IACjE,IAAI,WAAW,GAAG,uBAAuB;QAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAErG,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,wBAAwB,EAAE,CAAC;AACzF,CAAC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The dependency boundary, Python side.
|
|
3
|
+
*
|
|
4
|
+
* A call like `yaml.safe_load(raw)` leaves the repository. Today it becomes a
|
|
5
|
+
* ledger row saying the name resolves to something this run did not analyse,
|
|
6
|
+
* and the call graph stops there. This module answers the one question that
|
|
7
|
+
* turns that boundary into a fact the graph can hold: **which module, and which
|
|
8
|
+
* symbol in it.**
|
|
9
|
+
*
|
|
10
|
+
* **Identity comes from what the source writes, and Python is the language that
|
|
11
|
+
* makes the reason impossible to miss.** The distribution `pyyaml` installs the
|
|
12
|
+
* module `yaml`; `beautifulsoup4` installs `bs4`; `Pillow` installs `PIL`. A
|
|
13
|
+
* name taken from an installed tree, a `requirements.txt` line or
|
|
14
|
+
* `pyproject.toml`'s dependency table would therefore name something no line of
|
|
15
|
+
* source ever writes, and would move the first time somebody ran `pip install`.
|
|
16
|
+
* Nothing here reads any of those. **No distribution name and no version is
|
|
17
|
+
* recorded at all**, so neither can ride inside a node id — which is
|
|
18
|
+
* `hash(repo, kind, qualified symbol path)` and never includes a path.
|
|
19
|
+
*
|
|
20
|
+
* Python has two attributable shapes where Go has one:
|
|
21
|
+
*
|
|
22
|
+
* - `import yaml` … `yaml.safe_load(x)` — a module alias as receiver, the
|
|
23
|
+
* direct analogue of Go's package-qualified call.
|
|
24
|
+
* - `from yaml import safe_load` … `safe_load(x)` — a bare name. `adapter-go`
|
|
25
|
+
* refuses unqualified names because nothing in Go binds one to a package;
|
|
26
|
+
* `from … import` is exactly such a binding, and on measurement it is the
|
|
27
|
+
* LARGER half (2,790 of 4,836 attributions on `dispatch`).
|
|
28
|
+
*
|
|
29
|
+
* **Everything this module does not attribute is a deliberate refusal**, and
|
|
30
|
+
* each one has a test naming what it costs. The measured bar is 0 wrong
|
|
31
|
+
* attributions across 115 graded in-repo call sites on two repositories, and
|
|
32
|
+
* rule 2 prices a wrong edge far above a missing one.
|
|
33
|
+
*/
|
|
34
|
+
import type { ImportRecord } from "./module.ts";
|
|
35
|
+
/** What one local name is bound to by an import statement that left the repo. */
|
|
36
|
+
export type ExternalBinding =
|
|
37
|
+
/** `import yaml`, `import numpy as np` — the name IS a module. */
|
|
38
|
+
{
|
|
39
|
+
readonly kind: "module";
|
|
40
|
+
readonly module: string;
|
|
41
|
+
}
|
|
42
|
+
/** `from yaml import safe_load` — the name is a symbol inside a module. */
|
|
43
|
+
| {
|
|
44
|
+
readonly kind: "symbol";
|
|
45
|
+
readonly module: string;
|
|
46
|
+
readonly name: string;
|
|
47
|
+
};
|
|
48
|
+
export interface ExternalSite {
|
|
49
|
+
/** The receiver as written, or `undefined` for an unqualified call. */
|
|
50
|
+
readonly receiver: string | undefined;
|
|
51
|
+
/** The symbol being called. */
|
|
52
|
+
readonly name: string;
|
|
53
|
+
/** This file's external import table — see `externalImportTable`. */
|
|
54
|
+
readonly imports: ReadonlyMap<string, ExternalBinding>;
|
|
55
|
+
/**
|
|
56
|
+
* Every name this file binds itself: assignment, `for`, `with … as`,
|
|
57
|
+
* `except … as`, a walrus, a comprehension target, a `def`, a `class`, a
|
|
58
|
+
* parameter, a `match` capture. A name in here may shadow an import, and the
|
|
59
|
+
* import table cannot see the shadow.
|
|
60
|
+
*/
|
|
61
|
+
readonly assigned: ReadonlySet<string>;
|
|
62
|
+
}
|
|
63
|
+
export interface ExternalAttribution {
|
|
64
|
+
/** The module path **as written in the import statement** — this is the identity. */
|
|
65
|
+
readonly moduleOrNamespace: string;
|
|
66
|
+
/** The **imported** name, never the local alias. */
|
|
67
|
+
readonly symbolPath: readonly string[];
|
|
68
|
+
/**
|
|
69
|
+
* From an installed package rather than the standard library. Disclosure
|
|
70
|
+
* only — it never enters a node id, because a module that moved between the
|
|
71
|
+
* two would otherwise change identity without a line of source changing.
|
|
72
|
+
*
|
|
73
|
+
* Go reads this off the path itself (a first segment containing a dot is a
|
|
74
|
+
* domain). Python has no such rule, so it is decided against `STDLIB_BASIS`
|
|
75
|
+
* below: a static list baked into this source, which is a property of the
|
|
76
|
+
* language and not of whatever interpreter happens to be installed. That is
|
|
77
|
+
* a labelled fallback, not a measurement — `thirdPartyBasis` rides on every
|
|
78
|
+
* row that carries this flag so a reader can tell which list said so.
|
|
79
|
+
*/
|
|
80
|
+
readonly thirdParty: boolean;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Provenance of the standard-library name list, carried on every attributed
|
|
84
|
+
* row. Read from `sys.stdlib_module_names` at authoring time and frozen into
|
|
85
|
+
* this source — never read from the machine at run time, which would make the
|
|
86
|
+
* answer depend on the interpreter a developer happens to have.
|
|
87
|
+
*/
|
|
88
|
+
export declare const STDLIB_BASIS = "python-3.12 sys.stdlib_module_names";
|
|
89
|
+
/** Top-level standard-library module names. See `STDLIB_BASIS`. */
|
|
90
|
+
export declare const STDLIB_TOP_LEVEL: ReadonlySet<string>;
|
|
91
|
+
export interface ImportTableOptions {
|
|
92
|
+
/**
|
|
93
|
+
* Top-level module names the repository provides for itself — see
|
|
94
|
+
* `ownNamespaces`. A module under one of them is OURS whether or not this run
|
|
95
|
+
* read it, and calling it a dependency is the error that never surfaces.
|
|
96
|
+
*/
|
|
97
|
+
readonly ownNamespaces: ReadonlySet<string>;
|
|
98
|
+
/**
|
|
99
|
+
* Local names this run already resolved to a file inside the repository. The
|
|
100
|
+
* import resolver found them; they are not a boundary. Go's
|
|
101
|
+
* `analysedImportPaths` refusal, in the form this adapter's resolver hands
|
|
102
|
+
* back.
|
|
103
|
+
*/
|
|
104
|
+
readonly resolvedLocals: ReadonlySet<string>;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* One file's `import` statements, reduced to the bindings that leave the
|
|
108
|
+
* repository.
|
|
109
|
+
*
|
|
110
|
+
* Four refusals are made here rather than at the call site, because they are
|
|
111
|
+
* facts about the statement and not about any one use of it.
|
|
112
|
+
*/
|
|
113
|
+
export declare function externalImportTable(records: readonly ImportRecord[], options: ImportTableOptions): ReadonlyMap<string, ExternalBinding>;
|
|
114
|
+
/**
|
|
115
|
+
* The top-level module names the repository provides for itself.
|
|
116
|
+
*
|
|
117
|
+
* Found by the same outward walk `importRoots` uses — a directory stops being
|
|
118
|
+
* part of the module path at the first ancestor with no `__init__.py` — so the
|
|
119
|
+
* two cannot disagree about where a package starts and an import root ends.
|
|
120
|
+
* `src/dispatch/models.py` makes `dispatch` ours; `tests/test_models.py` makes
|
|
121
|
+
* `test_models` ours, because `tests/` has no `__init__.py` and is the import
|
|
122
|
+
* root rather than a package.
|
|
123
|
+
*
|
|
124
|
+
* Over-inclusive by construction: a repository with many rootless directories
|
|
125
|
+
* contributes many names, and every one of them is a name this reader will
|
|
126
|
+
* decline to call a dependency. That is the safe direction.
|
|
127
|
+
*/
|
|
128
|
+
export declare function ownNamespaces(files: readonly string[]): ReadonlySet<string>;
|
|
129
|
+
/**
|
|
130
|
+
* The module and symbol behind a call that left the repository, or `null` when
|
|
131
|
+
* no binding the developer wrote settles it.
|
|
132
|
+
*/
|
|
133
|
+
export declare function attributeExternal(site: ExternalSite): ExternalAttribution | null;
|
|
134
|
+
//# sourceMappingURL=external.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external.d.ts","sourceRoot":"","sources":["../src/external.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,iFAAiF;AACjF,MAAM,MAAM,eAAe;AACzB,kEAAkE;AAChE;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AACtD,2EAA2E;GACzE;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhF,MAAM,WAAW,YAAY;IAC3B,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACvD;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,mBAAmB;IAClC,qFAAqF;IACrF,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,oDAAoD;IACpD,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;GAKG;AACH,eAAO,MAAM,YAAY,wCAAwC,CAAC;AAElE,mEAAmE;AACnE,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CA+BhD,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5C;;;;;OAKG;IACH,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC9C;AAWD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,OAAO,EAAE,kBAAkB,GAC1B,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAuDtC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,CAe3E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,mBAAmB,GAAG,IAAI,CAwChF"}
|