@descryy/adapter-python 0.2.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/dist/routes.d.ts CHANGED
@@ -1,72 +1,42 @@
1
1
  /**
2
2
  * The HTTP-route framework extractor for Python — FastAPI, Flask and Django.
3
+ * `adapter-openapi` reads a published contract, but most repositories
4
+ * publish none; FastAPI/Flask/Django all declare routes in source (a
5
+ * decorator with method + path template, or a `urlpatterns` list), so
6
+ * reading the declaration is not inference.
3
7
  *
4
- * **An `API_ROUTE` is a framework claim, and this file is where it is earned.**
5
- * Until now the only producer of a route in this project was `adapter-openapi`,
6
- * reading a published contract. That is the right first move — *if the framework
7
- * will tell you, never infer it* — but a repository that publishes no contract
8
- * has no route side of the join at all, and most repositories publish nothing.
9
- * FastAPI, Flask and Django all *declare* their routes in source: a decorator
10
- * carrying a method and a path template, or a `urlpatterns` list. Reading a
11
- * declaration is not inference.
12
- *
13
- * ## The rule that does all the precision work
14
- *
15
- * **A route is admitted only when its receiver resolves to a router or
16
- * application constructed from a web framework's own module.** Never because an
17
- * attribute happens to be spelled like an HTTP verb.
18
- *
19
- * That is not a theoretical guard. Matching `@x.get`/`@x.post`/`@x.patch` by
20
- * name alone, measured before this file was written:
8
+ * The precision rule: a route is admitted only when its receiver resolves
9
+ * to a router/application constructed from a web framework's own module,
10
+ * never because an attribute is spelled like an HTTP verb. Measured before
11
+ * this file existed, name-only matching of `@x.get`/`@x.post`/`@x.patch`:
21
12
  *
22
13
  * | repository | verb-named decorators | actually routes |
23
14
  * | --- | --- | --- |
24
- * | django | 171 `@mock.patch` | **0** |
25
- * | saleor | 1,150 `@mock.patch` | **0** |
26
- * | dispatch | 1 `@app.options` on a Slack Bolt app | **0** |
27
- *
28
- * `unittest.mock.patch` is spelled exactly like the HTTP verb, and on saleor a
29
- * name rule would have invented 1,150 routes — every one of them a false claim
30
- * about a URL that does not exist. Slack Bolt's `app.options()` registers an
31
- * *action id*, not a path. This is golden pattern 12's lesson and §4 rule 3: a
32
- * node type comes from provenance — an import, a decorator, a base class — or
33
- * from nothing.
34
- *
35
- * ## Everything below the receiver check is arithmetic on written strings
36
- *
37
- * A served path is a router's mount prefix chain plus the path at the decorator.
38
- * On dispatch that chain is four hops and crosses files under import aliases:
39
- *
40
- * app.mount("/api/v1", app=api) # main.py
41
- * api.include_router(api_router) # main.py
42
- * api_router.include_router(auth_router, prefix=...) # api.py, aliased
43
- * @auth_router.get("/me") # auth/views.py
44
- *
45
- * **Every hop of that chain must be followed or the answer is wrong in a way
46
- * that reads as right.** Dropping the outermost hop yields `/{organization}/…`
47
- * instead of `/api/v1/{organization}/…`: a plausible path, no error, no ledger
48
- * row — and a caller that resolved its base URL to `/api/v1` (DEC-052 followed
49
- * exactly that, three symbol hops on the consumer side) mints a different
50
- * endpoint id and joins nothing. That is DEC-055's failure mode: everything
51
- * normalises, everything resolves, and the join count is silently zero.
52
- *
53
- * ## Where the line is
54
- *
55
- * A prefix or path written as anything but a literal is **disclosed, never
56
- * guessed**. Emitting a route for a path built at runtime attaches a caller to
57
- * an endpoint that does not exist, and unlike a missing edge nothing downstream
58
- * can tell that from a correct one.
59
- *
60
- * The split with `extract.py` is this adapter's standing one: the Python side
61
- * records syntactic form and names no framework, and every decision about what
62
- * a form *means* is taken here.
15
+ * | django | 171 `@mock.patch` | 0 |
16
+ * | saleor | 1,150 `@mock.patch` | 0 |
17
+ * | dispatch | 1 `@app.options` (Slack Bolt) | 0 |
18
+ *
19
+ * Golden pattern 12's lesson: a node type comes from provenance or nothing.
20
+ *
21
+ * Everything below the receiver check is arithmetic on written strings: a
22
+ * served path is the mount prefix chain plus the decorator's path, and
23
+ * every hop must be followed — dropping one yields a plausible wrong path
24
+ * with no error and no ledger row, and a caller resolving its own base URL
25
+ * (DEC-052) would mint a different endpoint id and silently join nothing
26
+ * (DEC-055's failure mode). A prefix or path written as anything but a
27
+ * literal is disclosed, never guessed, since a runtime-built path attaches
28
+ * a caller to an endpoint that doesn't exist and nothing downstream can
29
+ * tell that from a correct edge.
30
+ *
31
+ * `extract.py` records syntactic form and names no framework; every
32
+ * "what does this form mean" decision is taken here.
63
33
  */
64
34
  import type { PyCall } from "./extract.ts";
65
35
  export type RouteFramework = "fastapi" | "flask" | "django";
66
36
  /**
67
- * The constructors that make a receiver a router, and the modules they must
68
- * come from. The module check is the precision control: a local class called
69
- * `Blueprint` is not Flask's, and matching the bare name would admit it.
37
+ * Constructors that make a receiver a router, and the modules they must come
38
+ * from — a local class called `Blueprint` is not Flask's, and a bare-name
39
+ * match would admit it.
70
40
  */
71
41
  export declare const ROUTER_CONSTRUCTORS: Readonly<Record<RouteFramework, Readonly<Record<string, ReadonlySet<string>>>>>;
72
42
  /** `django.urls.path`/`re_path`/`url`, and `include` for a nested urlconf. */
@@ -92,12 +62,9 @@ export interface RouterDecl {
92
62
  readonly line: number;
93
63
  }
94
64
  /**
95
- * Is this the application itself rather than a router that must be mounted?
96
- *
97
- * The distinction decides whether "nothing mounts this" is a disclosure or a
98
- * non-event. `FastAPI()` and `Flask()` are roots and serve their routes at the
99
- * paths written on them. An `APIRouter` or a `Blueprint` that nothing mounts
100
- * serves nothing at all, and the path it would serve is genuinely unknowable.
65
+ * Is this the application itself, not a router that must be mounted? Decides
66
+ * whether "nothing mounts this" is a disclosure or a non-event — `FastAPI()`/
67
+ * `Flask()` are roots; an unmounted `APIRouter`/`Blueprint` serves nothing.
101
68
  */
102
69
  export declare function isApplicationRouter(router: RouterDecl): boolean;
103
70
  /** One router mounted inside another. */
@@ -134,19 +101,16 @@ export declare function frameworkOfConstructor(callee: string, moduleOfImport: (
134
101
  } | null;
135
102
  /**
136
103
  * Routers declared in one file, by the local name that holds them.
137
- *
138
- * `moduleOfImport` answers "which module did this name come from", which is the
139
- * only thing separating Flask's `Blueprint` from a class of the same name.
104
+ * `moduleOfImport` is the only thing separating Flask's `Blueprint` from a
105
+ * class of the same name.
140
106
  */
141
107
  export declare function routersIn(file: string, calls: readonly PyCall[], assignedLocal: (call: PyCall) => string | undefined, moduleOfImport: (name: string) => string | undefined): RouterDecl[];
142
108
  /** Mounts declared in one file. */
143
109
  export declare function mountsIn(file: string, calls: readonly PyCall[]): RouterMount[];
144
110
  /**
145
- * Route declarations from one decorator call.
146
- *
147
- * Returns `null` when the decorator is not a route at all. The receiver is
148
- * *not* checked here — the caller does that against the resolved router table,
149
- * because whether `app` is a Flask application or a Slack Bolt one cannot be
111
+ * Route declarations from one decorator call, or `null` when it's not a
112
+ * route. The receiver is not checked here — the caller does that against the
113
+ * resolved router table, since whether `app` is Flask or Slack Bolt can't be
150
114
  * decided from this file alone.
151
115
  */
152
116
  export declare function routeFromDecorator(file: string, call: PyCall, handler: readonly string[] | null): RouteDecl | null;
@@ -167,12 +131,9 @@ export declare function odooRouteFromDecorator(file: string, call: PyCall, handl
167
131
  export declare const DRF_ROUTER_CONSTRUCTORS: ReadonlySet<string>;
168
132
  /**
169
133
  * DRF's fixed action table — what `DefaultRouter`/`SimpleRouter` always
170
- * generate for a registered viewset, unconditionally. This is the router's
171
- * own documented contract, not an inference about which actions a viewset
172
- * implements: an unimplemented action still gets the URL, and 405s at
173
- * request time. Reading the contract rather than the implementation is the
174
- * same trade this file already makes for Flask's undecorated `.route()`
175
- * default (`GENERIC_ROUTE_ATTRS`, above).
134
+ * generate for a registered viewset, unconditionally (the router's own
135
+ * documented contract, not an inference; an unimplemented action still
136
+ * gets the URL and 405s at request time).
176
137
  */
177
138
  export declare const DRF_ACTIONS: readonly {
178
139
  readonly method: string;
@@ -181,15 +142,10 @@ export declare const DRF_ACTIONS: readonly {
181
142
  export declare function djangoUrlFunctionOf(callee: string, moduleOfImport: (name: string) => string | undefined): string | null;
182
143
  /**
183
144
  * `re_path`/`url` write a param as `(?P<name>...)`, not `<type:name>`.
184
- *
185
- * Translating an arbitrary regex into a path template is not attempted —
186
- * that is the same guess `templateOfSource` in `client.ts` refuses to make
187
- * for a call path, for the same reason. What is read: the anchors (`^`/`$`,
188
- * which every Django regex route carries and which are not part of the
189
- * served path), and a named group, which names its own placeholder and
190
- * needs no interpretation. Anything else regex-shaped left afterwards —
191
- * an unnamed group, a character class, a quantifier on a literal segment —
192
- * means the pattern is refused rather than approximated.
145
+ * Translating an arbitrary regex into a template isn't attempted — the same
146
+ * guess `client.ts`'s `templateOfSource` refuses. Reads only the anchors
147
+ * (`^`/`$`, not part of the served path) and named groups; anything else
148
+ * regex-shaped left afterwards means the pattern is refused, not approximated.
193
149
  */
194
150
  export declare function djangoRegexPathOf(raw: string): string | null;
195
151
  /** One `path()`/`re_path()`/`url()` call, read but not yet chain-resolved. */
@@ -239,11 +195,8 @@ export declare function drfRouterLocalsIn(calls: readonly PyCall[], localOfCall:
239
195
  /** Every `.register(...)` call on a receiver, whether or not it is a DRF router — the caller filters. */
240
196
  export declare function drfRegisterCallsIn(file: string, calls: readonly PyCall[]): DrfRegisterEntry[];
241
197
  /**
242
- * Join a mount prefix to a route path.
243
- *
244
- * Frameworks are lenient about the slash between the two and repositories write
245
- * both forms; the served path is the same either way, and two spellings of one
246
- * path must not become two endpoints.
198
+ * Join a mount prefix to a route path. Frameworks are lenient about the
199
+ * slash between the two, and two spellings of one path must not become two endpoints.
247
200
  */
248
201
  export declare function joinPath(prefix: string, path: string): string;
249
202
  //# sourceMappingURL=routes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
package/dist/routes.js CHANGED
@@ -1,70 +1,40 @@
1
1
  /**
2
2
  * The HTTP-route framework extractor for Python — FastAPI, Flask and Django.
3
+ * `adapter-openapi` reads a published contract, but most repositories
4
+ * publish none; FastAPI/Flask/Django all declare routes in source (a
5
+ * decorator with method + path template, or a `urlpatterns` list), so
6
+ * reading the declaration is not inference.
3
7
  *
4
- * **An `API_ROUTE` is a framework claim, and this file is where it is earned.**
5
- * Until now the only producer of a route in this project was `adapter-openapi`,
6
- * reading a published contract. That is the right first move — *if the framework
7
- * will tell you, never infer it* — but a repository that publishes no contract
8
- * has no route side of the join at all, and most repositories publish nothing.
9
- * FastAPI, Flask and Django all *declare* their routes in source: a decorator
10
- * carrying a method and a path template, or a `urlpatterns` list. Reading a
11
- * declaration is not inference.
12
- *
13
- * ## The rule that does all the precision work
14
- *
15
- * **A route is admitted only when its receiver resolves to a router or
16
- * application constructed from a web framework's own module.** Never because an
17
- * attribute happens to be spelled like an HTTP verb.
18
- *
19
- * That is not a theoretical guard. Matching `@x.get`/`@x.post`/`@x.patch` by
20
- * name alone, measured before this file was written:
8
+ * The precision rule: a route is admitted only when its receiver resolves
9
+ * to a router/application constructed from a web framework's own module,
10
+ * never because an attribute is spelled like an HTTP verb. Measured before
11
+ * this file existed, name-only matching of `@x.get`/`@x.post`/`@x.patch`:
21
12
  *
22
13
  * | repository | verb-named decorators | actually routes |
23
14
  * | --- | --- | --- |
24
- * | django | 171 `@mock.patch` | **0** |
25
- * | saleor | 1,150 `@mock.patch` | **0** |
26
- * | dispatch | 1 `@app.options` on a Slack Bolt app | **0** |
27
- *
28
- * `unittest.mock.patch` is spelled exactly like the HTTP verb, and on saleor a
29
- * name rule would have invented 1,150 routes — every one of them a false claim
30
- * about a URL that does not exist. Slack Bolt's `app.options()` registers an
31
- * *action id*, not a path. This is golden pattern 12's lesson and §4 rule 3: a
32
- * node type comes from provenance — an import, a decorator, a base class — or
33
- * from nothing.
34
- *
35
- * ## Everything below the receiver check is arithmetic on written strings
36
- *
37
- * A served path is a router's mount prefix chain plus the path at the decorator.
38
- * On dispatch that chain is four hops and crosses files under import aliases:
39
- *
40
- * app.mount("/api/v1", app=api) # main.py
41
- * api.include_router(api_router) # main.py
42
- * api_router.include_router(auth_router, prefix=...) # api.py, aliased
43
- * @auth_router.get("/me") # auth/views.py
15
+ * | django | 171 `@mock.patch` | 0 |
16
+ * | saleor | 1,150 `@mock.patch` | 0 |
17
+ * | dispatch | 1 `@app.options` (Slack Bolt) | 0 |
44
18
  *
45
- * **Every hop of that chain must be followed or the answer is wrong in a way
46
- * that reads as right.** Dropping the outermost hop yields `/{organization}/…`
47
- * instead of `/api/v1/{organization}/…`: a plausible path, no error, no ledger
48
- * row — and a caller that resolved its base URL to `/api/v1` (DEC-052 followed
49
- * exactly that, three symbol hops on the consumer side) mints a different
50
- * endpoint id and joins nothing. That is DEC-055's failure mode: everything
51
- * normalises, everything resolves, and the join count is silently zero.
19
+ * Golden pattern 12's lesson: a node type comes from provenance or nothing.
52
20
  *
53
- * ## Where the line is
21
+ * Everything below the receiver check is arithmetic on written strings: a
22
+ * served path is the mount prefix chain plus the decorator's path, and
23
+ * every hop must be followed — dropping one yields a plausible wrong path
24
+ * with no error and no ledger row, and a caller resolving its own base URL
25
+ * (DEC-052) would mint a different endpoint id and silently join nothing
26
+ * (DEC-055's failure mode). A prefix or path written as anything but a
27
+ * literal is disclosed, never guessed, since a runtime-built path attaches
28
+ * a caller to an endpoint that doesn't exist and nothing downstream can
29
+ * tell that from a correct edge.
54
30
  *
55
- * A prefix or path written as anything but a literal is **disclosed, never
56
- * guessed**. Emitting a route for a path built at runtime attaches a caller to
57
- * an endpoint that does not exist, and unlike a missing edge nothing downstream
58
- * can tell that from a correct one.
59
- *
60
- * The split with `extract.py` is this adapter's standing one: the Python side
61
- * records syntactic form and names no framework, and every decision about what
62
- * a form *means* is taken here.
31
+ * `extract.py` records syntactic form and names no framework; every
32
+ * "what does this form mean" decision is taken here.
63
33
  */
64
34
  /**
65
- * The constructors that make a receiver a router, and the modules they must
66
- * come from. The module check is the precision control: a local class called
67
- * `Blueprint` is not Flask's, and matching the bare name would admit it.
35
+ * Constructors that make a receiver a router, and the modules they must come
36
+ * from — a local class called `Blueprint` is not Flask's, and a bare-name
37
+ * match would admit it.
68
38
  */
69
39
  export const ROUTER_CONSTRUCTORS = {
70
40
  fastapi: {
@@ -111,12 +81,9 @@ export const MOUNT_ATTRS = new Set([
111
81
  "mount",
112
82
  ]);
113
83
  /**
114
- * Is this the application itself rather than a router that must be mounted?
115
- *
116
- * The distinction decides whether "nothing mounts this" is a disclosure or a
117
- * non-event. `FastAPI()` and `Flask()` are roots and serve their routes at the
118
- * paths written on them. An `APIRouter` or a `Blueprint` that nothing mounts
119
- * serves nothing at all, and the path it would serve is genuinely unknowable.
84
+ * Is this the application itself, not a router that must be mounted? Decides
85
+ * whether "nothing mounts this" is a disclosure or a non-event — `FastAPI()`/
86
+ * `Flask()` are roots; an unmounted `APIRouter`/`Blueprint` serves nothing.
120
87
  */
121
88
  export function isApplicationRouter(router) {
122
89
  return router.constructor === "FastAPI" || router.constructor === "Flask";
@@ -129,17 +96,15 @@ export function frameworkOfConstructor(callee, moduleOfImport) {
129
96
  const modules = table[leaf];
130
97
  if (modules === undefined)
131
98
  continue;
132
- // A dotted callee names its module at the call site; a bare one was
133
- // imported, and the import table says from where. Either way the module is
134
- // checked — this is the whole precision control and it is never skipped.
99
+ // Dotted callee names its module at the call site; bare one was
100
+ // imported. Either way the module is checked — never skipped.
135
101
  const written = callee.includes(".") ? callee.slice(0, callee.lastIndexOf(".")) : undefined;
136
102
  const imported = moduleOfImport(callee.split(".")[0]);
137
103
  const module = written !== undefined && written.includes(".") ? written : imported;
138
104
  if (module !== undefined && modules.has(module)) {
139
105
  return { framework: framework, constructor: leaf };
140
106
  }
141
- // A bare `APIRouter()` whose import resolved to the framework's package
142
- // rather than to the exact submodule.
107
+ // A bare `APIRouter()` whose import resolved to the package, not the exact submodule.
143
108
  if (imported !== undefined && [...modules].some((m) => imported === m || imported.startsWith(`${m}.`))) {
144
109
  return { framework: framework, constructor: leaf };
145
110
  }
@@ -159,9 +124,8 @@ function prefixOf(call, keys) {
159
124
  }
160
125
  /**
161
126
  * Routers declared in one file, by the local name that holds them.
162
- *
163
- * `moduleOfImport` answers "which module did this name come from", which is the
164
- * only thing separating Flask's `Blueprint` from a class of the same name.
127
+ * `moduleOfImport` is the only thing separating Flask's `Blueprint` from a
128
+ * class of the same name.
165
129
  */
166
130
  export function routersIn(file, calls, assignedLocal, moduleOfImport) {
167
131
  const out = [];
@@ -194,8 +158,8 @@ export function mountsIn(file, calls) {
194
158
  if (call.receiver === null)
195
159
  continue;
196
160
  if (call.attribute === "mount") {
197
- // `app.mount("/api/v1", app=sub)` — Starlette. The prefix is positional
198
- // and the child is a keyword or the second positional.
161
+ // `app.mount("/api/v1", app=sub)` — Starlette: positional prefix, child
162
+ // as keyword or second positional.
199
163
  const prefix = typeof call.literals[0] === "string"
200
164
  ? call.literals[0]
201
165
  : call.args.length > 0
@@ -207,11 +171,9 @@ export function mountsIn(file, calls) {
207
171
  out.push({ file, scope: call.scope, parentLocal: call.receiver, childLocal: child, prefix, line: call.line });
208
172
  continue;
209
173
  }
210
- // `app.register_blueprint(auth.bp)` is as common as the bare-name form and
211
- // was invisible while only `argNames` was read — `argNames` is null for an
212
- // attribute. The dotted text is kept and the caller resolves the module
213
- // half through its import table; dropping it disclosed real, registered
214
- // blueprints as never mounted.
174
+ // `app.register_blueprint(auth.bp)` is as common as the bare-name form
175
+ // but was invisible reading only `argNames` (null for an attribute) —
176
+ // dropping it disclosed real, registered blueprints as never mounted.
215
177
  const child = call.argNames[0] ??
216
178
  call.keywordNames["router"] ??
217
179
  call.keywordNames["blueprint"] ??
@@ -230,11 +192,9 @@ export function mountsIn(file, calls) {
230
192
  return out;
231
193
  }
232
194
  /**
233
- * Route declarations from one decorator call.
234
- *
235
- * Returns `null` when the decorator is not a route at all. The receiver is
236
- * *not* checked here — the caller does that against the resolved router table,
237
- * because whether `app` is a Flask application or a Slack Bolt one cannot be
195
+ * Route declarations from one decorator call, or `null` when it's not a
196
+ * route. The receiver is not checked here — the caller does that against the
197
+ * resolved router table, since whether `app` is Flask or Slack Bolt can't be
238
198
  * decided from this file alone.
239
199
  */
240
200
  export function routeFromDecorator(file, call, handler) {
@@ -250,14 +210,13 @@ export function routeFromDecorator(file, call, handler) {
250
210
  methods = written.filter((m) => typeof m === "string").map((m) => m.toUpperCase());
251
211
  }
252
212
  else if (call.opaqueKeywords.includes("methods")) {
253
- // The verbs are written and this reader cannot read them. Defaulting to
254
- // GET here would report the opposite of the source as fact — the same
255
- // mistake `nullable=FLAG` exists to prevent on the ORM side.
213
+ // Verbs are written but unreadable; defaulting to GET would report the
214
+ // opposite of the source as fact.
256
215
  return null;
257
216
  }
258
217
  else {
259
- // Flask's documented default, and FastAPI's `api_route` requires the
260
- // keyword, so an absent one there means this is not a route to read.
218
+ // Flask's documented default; FastAPI's `api_route` requires the
219
+ // keyword, so an absent one means this isn't a route to read.
261
220
  methods = ["GET"];
262
221
  }
263
222
  }
@@ -282,16 +241,10 @@ export function routeFromDecorator(file, call, handler) {
282
241
  responseModel: call.keywordText["response_model"] ?? null,
283
242
  };
284
243
  }
285
- // ---------------------------------------------------------------------------
286
244
  // Odoo — `@http.route(path, methods=[...])`, always on a `Controller`
287
- // subclass's own method.
288
- //
289
- // **Simpler than FastAPI/Flask, not harder.** There is no router object and
290
- // no mount chain: Odoo controllers write the full absolute path directly in
291
- // every `@http.route(...)` call, so once the decorator's provenance is
292
- // verified against `odoo.http` there is nothing left to resolve — the path
293
- // on the decorator IS the served path.
294
- // ---------------------------------------------------------------------------
245
+ // subclass's method. Simpler than FastAPI/Flask: no router object, no mount
246
+ // chain — the full absolute path is written directly, so once provenance is
247
+ // verified against `odoo.http` the decorator's path IS the served path.
295
248
  const ODOO_HTTP_MODULES = new Set(["odoo.http", "odoo.addons.http"]);
296
249
  /** `@http.route(...)` / `@route(...)`, verified against `odoo.http`. */
297
250
  export function odooRouteFromDecorator(file, call, handler, moduleOfImport) {
@@ -319,19 +272,13 @@ export function odooRouteFromDecorator(file, call, handler, moduleOfImport) {
319
272
  : ["GET"]; // Odoo's own documented default when the keyword is absent
320
273
  return { file, scope: call.scope, path: literal, rawPath: raw, methods, line: call.line, handler };
321
274
  }
322
- // ---------------------------------------------------------------------------
323
- // Django's own routing — `urlpatterns`/`path()`/`re_path()`/`url()`, and DRF's
324
- // `router.register(...)`.
325
- //
326
- // **Architecturally different from FastAPI/Flask, which is why it is not a
327
- // case of `ROUTER_CONSTRUCTORS.django`.** There is no router object: `path()`
328
- // is a bare function, verified by where it was imported from rather than by
329
- // what it was constructed from, and a file's `urlpatterns` list is the
330
- // router — identified by its own module path, not by a local variable name,
331
- // because `include("myapp.urls")` names a MODULE, never a local. The prefix
332
- // chain this earns is walked the same way FastAPI's mount chain is (one
333
- // `include()` hop at a time), just keyed differently.
334
- // ---------------------------------------------------------------------------
275
+ // Django's own routing — `urlpatterns`/`path()`/`re_path()`/`url()`, and
276
+ // DRF's `router.register(...)`. Architecturally different from FastAPI/Flask
277
+ // (not a case of `ROUTER_CONSTRUCTORS.django`): no router object, `path()`
278
+ // is a bare function verified by import provenance, and a file's
279
+ // `urlpatterns` list is identified by its module path since
280
+ // `include("myapp.urls")` names a module, never a local. The prefix chain
281
+ // walks the same way as FastAPI's mount chain, just keyed differently.
335
282
  /** `path`, `re_path` and the pre-2.0 alias `url` — all three read a route the same way. */
336
283
  const DJANGO_URL_FUNCTIONS = new Set(["path", "re_path", "url"]);
337
284
  /** `include(...)`, always from `django.urls`. */
@@ -343,12 +290,9 @@ export const DRF_ROUTER_CONSTRUCTORS = new Set([
343
290
  ]);
344
291
  /**
345
292
  * DRF's fixed action table — what `DefaultRouter`/`SimpleRouter` always
346
- * generate for a registered viewset, unconditionally. This is the router's
347
- * own documented contract, not an inference about which actions a viewset
348
- * implements: an unimplemented action still gets the URL, and 405s at
349
- * request time. Reading the contract rather than the implementation is the
350
- * same trade this file already makes for Flask's undecorated `.route()`
351
- * default (`GENERIC_ROUTE_ATTRS`, above).
293
+ * generate for a registered viewset, unconditionally (the router's own
294
+ * documented contract, not an inference; an unimplemented action still
295
+ * gets the URL and 405s at request time).
352
296
  */
353
297
  export const DRF_ACTIONS = [
354
298
  { method: "GET", suffix: "" },
@@ -379,15 +323,10 @@ export function djangoUrlFunctionOf(callee, moduleOfImport) {
379
323
  }
380
324
  /**
381
325
  * `re_path`/`url` write a param as `(?P<name>...)`, not `<type:name>`.
382
- *
383
- * Translating an arbitrary regex into a path template is not attempted —
384
- * that is the same guess `templateOfSource` in `client.ts` refuses to make
385
- * for a call path, for the same reason. What is read: the anchors (`^`/`$`,
386
- * which every Django regex route carries and which are not part of the
387
- * served path), and a named group, which names its own placeholder and
388
- * needs no interpretation. Anything else regex-shaped left afterwards —
389
- * an unnamed group, a character class, a quantifier on a literal segment —
390
- * means the pattern is refused rather than approximated.
326
+ * Translating an arbitrary regex into a template isn't attempted — the same
327
+ * guess `client.ts`'s `templateOfSource` refuses. Reads only the anchors
328
+ * (`^`/`$`, not part of the served path) and named groups; anything else
329
+ * regex-shaped left afterwards means the pattern is refused, not approximated.
391
330
  */
392
331
  export function djangoRegexPathOf(raw) {
393
332
  let pattern = raw;
@@ -494,11 +433,8 @@ export function drfRegisterCallsIn(file, calls) {
494
433
  return out;
495
434
  }
496
435
  /**
497
- * Join a mount prefix to a route path.
498
- *
499
- * Frameworks are lenient about the slash between the two and repositories write
500
- * both forms; the served path is the same either way, and two spellings of one
501
- * path must not become two endpoints.
436
+ * Join a mount prefix to a route path. Frameworks are lenient about the
437
+ * slash between the two, and two spellings of one path must not become two endpoints.
502
438
  */
503
439
  export function joinPath(prefix, path) {
504
440
  const left = prefix.endsWith("/") ? prefix.slice(0, -1) : prefix;
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}