@dogsbay/autodoc-python 0.2.0-beta.41

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.
@@ -0,0 +1,279 @@
1
+ import { relative } from "node:path";
2
+ /** Make a source file path relative to the source root for display. */
3
+ function relativeFile(file, sourceRoot) {
4
+ if (!sourceRoot)
5
+ return file;
6
+ return relative(sourceRoot, file);
7
+ }
8
+ /**
9
+ * Convert a SymbolInfo into a tree of API TreeNodes.
10
+ * These render through dedicated components (ApiSymbol, ApiDoc, ApiParams).
11
+ */
12
+ export function symbolToTreeNode(symbol, options, md, fullPath, sourceRoot) {
13
+ if (symbol.kind === "module") {
14
+ return moduleToNode(symbol, options, md, fullPath, sourceRoot);
15
+ }
16
+ if (symbol.kind === "class") {
17
+ return classToNode(symbol, options, md, fullPath, sourceRoot);
18
+ }
19
+ return memberToNode(symbol, options, md, sourceRoot);
20
+ }
21
+ function classToNode(symbol, options, md, fullPath, sourceRoot) {
22
+ const children = [];
23
+ // Docstring
24
+ if (symbol.docstring) {
25
+ children.push({
26
+ type: "api-doc",
27
+ props: { html: md.render(dedentDoc(symbol.docstring)) },
28
+ });
29
+ }
30
+ // Constructor parameters (merged into class)
31
+ if (options.mergeInitIntoClass !== false && symbol.params.length > 0) {
32
+ children.push({
33
+ type: "api-params",
34
+ props: { params: renderParams(symbol.params, md, options) },
35
+ });
36
+ }
37
+ // Source code (collapsible)
38
+ if (options.showSource && symbol.sourceText) {
39
+ children.push({
40
+ type: "api-source",
41
+ props: {
42
+ code: symbol.sourceText,
43
+ file: relativeFile(symbol.source.file, sourceRoot),
44
+ line: symbol.source.line,
45
+ },
46
+ });
47
+ }
48
+ // Members
49
+ const members = filterMembers(symbol.members, options);
50
+ const filteredMembers = members.filter((m) => !(m.name === "__init__" && options.mergeInitIntoClass !== false));
51
+ if (options.groupByCategory) {
52
+ appendGroupedMembers(children, filteredMembers, options, md, sourceRoot);
53
+ }
54
+ else {
55
+ for (const member of filteredMembers) {
56
+ children.push(memberToNode(member, options, md, sourceRoot));
57
+ }
58
+ }
59
+ // Build full signature with params
60
+ const displayName = options.showRootFullPath && fullPath ? fullPath : symbol.name;
61
+ let signature = `class ${displayName}`;
62
+ if (symbol.bases.length > 0) {
63
+ signature = `class ${displayName}(${symbol.bases.join(", ")})`;
64
+ }
65
+ if (options.mergeInitIntoClass !== false && symbol.params.length > 0) {
66
+ const paramLines = symbol.params.map((p) => {
67
+ let s = ` ${p.name}`;
68
+ s += `: ${paramType(p, options)}`;
69
+ if (p.default)
70
+ s += ` = ${p.default}`;
71
+ return s + ",";
72
+ });
73
+ signature = `${displayName}(\n *,\n${paramLines.join("\n")}\n)`;
74
+ }
75
+ return {
76
+ type: "api-class",
77
+ props: {
78
+ name: displayName,
79
+ kind: "class",
80
+ signature,
81
+ bases: options.showBases !== false ? symbol.bases : [],
82
+ },
83
+ children,
84
+ };
85
+ }
86
+ function moduleToNode(symbol, options, md, fullPath, sourceRoot) {
87
+ const children = [];
88
+ const displayName = options.showRootFullPath && fullPath ? fullPath : symbol.name;
89
+ if (symbol.docstring) {
90
+ children.push({
91
+ type: "api-doc",
92
+ props: { html: md.render(dedentDoc(symbol.docstring)) },
93
+ });
94
+ }
95
+ const members = filterMembers(symbol.members, options);
96
+ if (options.groupByCategory) {
97
+ appendGroupedMembers(children, members, options, md, sourceRoot);
98
+ }
99
+ else {
100
+ for (const member of members) {
101
+ children.push(memberToNode(member, options, md, sourceRoot));
102
+ }
103
+ }
104
+ return {
105
+ type: "api-class",
106
+ props: {
107
+ name: displayName,
108
+ kind: "module",
109
+ signature: null,
110
+ bases: [],
111
+ },
112
+ children,
113
+ };
114
+ }
115
+ function memberToNode(symbol, options, md, sourceRoot) {
116
+ const children = [];
117
+ // Docstring
118
+ if (symbol.docstring) {
119
+ children.push({
120
+ type: "api-doc",
121
+ props: { html: md.render(dedentDoc(symbol.docstring)) },
122
+ });
123
+ }
124
+ // Parameters (for functions/methods)
125
+ if (symbol.params.length > 0) {
126
+ children.push({
127
+ type: "api-params",
128
+ props: { params: renderParams(symbol.params, md, options) },
129
+ });
130
+ }
131
+ // Source code (collapsible)
132
+ if (options.showSource && symbol.sourceText) {
133
+ children.push({
134
+ type: "api-source",
135
+ props: {
136
+ code: symbol.sourceText,
137
+ file: relativeFile(symbol.source.file, sourceRoot),
138
+ line: symbol.source.line,
139
+ },
140
+ });
141
+ }
142
+ // Build signature
143
+ let signature = null;
144
+ const kind = symbol.kind === "property" ? "attr" : symbol.kind === "function" ? "func" : symbol.kind === "method" ? "meth" : symbol.kind;
145
+ if (kind === "attr") {
146
+ // Attribute: show value assignment
147
+ signature = symbol.signature;
148
+ }
149
+ else if (symbol.kind === "method" || symbol.kind === "function") {
150
+ // Method/function: call-style signature
151
+ if (symbol.params.length > 0) {
152
+ const paramLines = symbol.params.map((p) => {
153
+ let s = ` ${p.name}`;
154
+ s += `: ${paramType(p, options)}`;
155
+ if (p.default)
156
+ s += ` = ${p.default}`;
157
+ return s + ",";
158
+ });
159
+ signature = `${symbol.name}(\n${paramLines.join("\n")}\n)`;
160
+ }
161
+ else {
162
+ signature = `${symbol.name}()`;
163
+ }
164
+ }
165
+ return {
166
+ type: "api-member",
167
+ props: {
168
+ name: symbol.name,
169
+ kind,
170
+ signature,
171
+ type: symbol.returnType,
172
+ default: symbol.params.length === 0 ? symbol.default : null,
173
+ },
174
+ children,
175
+ };
176
+ }
177
+ /**
178
+ * Get the display type for a parameter, respecting unwrapAnnotated option.
179
+ */
180
+ function paramType(p, options) {
181
+ if (options.unwrapAnnotated !== false && p.bareType)
182
+ return p.bareType;
183
+ return p.bareType || p.type || "";
184
+ }
185
+ function renderParams(params, md, options) {
186
+ return params.map((p) => ({
187
+ name: p.name,
188
+ type: paramType(p, options) || null,
189
+ default: p.default || null,
190
+ required: p.required,
191
+ doc: p.doc ? dedentDoc(p.doc) : null,
192
+ docHtml: p.doc ? md.render(dedentDoc(p.doc)) : null,
193
+ }));
194
+ }
195
+ /**
196
+ * Group members by category and append to children with section headings.
197
+ */
198
+ function appendGroupedMembers(children, members, options, md, sourceRoot) {
199
+ const groups = {};
200
+ const categoryOrder = ["Attributes", "Methods", "Classes", "Functions"];
201
+ for (const member of members) {
202
+ let category;
203
+ if (member.kind === "property" || member.kind === "variable") {
204
+ category = "Attributes";
205
+ }
206
+ else if (member.kind === "class") {
207
+ category = "Classes";
208
+ }
209
+ else if (member.kind === "method") {
210
+ category = "Methods";
211
+ }
212
+ else {
213
+ category = "Functions";
214
+ }
215
+ (groups[category] ??= []).push(member);
216
+ }
217
+ for (const category of categoryOrder) {
218
+ const group = groups[category];
219
+ if (!group || group.length === 0)
220
+ continue;
221
+ // Category heading
222
+ children.push({
223
+ type: "heading",
224
+ props: { level: (options.headingLevel ?? 2) + 1 },
225
+ children: [{ type: "prose", html: category }],
226
+ });
227
+ for (const member of group) {
228
+ children.push(memberToNode(member, options, md, sourceRoot));
229
+ }
230
+ }
231
+ }
232
+ function filterMembers(members, options) {
233
+ let filtered = [...members];
234
+ if (options.members && options.members.length > 0) {
235
+ const allowed = new Set(options.members);
236
+ filtered = filtered.filter((m) => allowed.has(m.name));
237
+ filtered.sort((a, b) => {
238
+ const aIdx = options.members.indexOf(a.name);
239
+ const bIdx = options.members.indexOf(b.name);
240
+ return aIdx - bIdx;
241
+ });
242
+ }
243
+ if (options.filters) {
244
+ for (const filter of options.filters) {
245
+ if (filter.startsWith("!")) {
246
+ const re = new RegExp(filter.slice(1));
247
+ filtered = filtered.filter((m) => !re.test(m.name));
248
+ }
249
+ }
250
+ }
251
+ if (options.membersOrder === "alphabetical") {
252
+ filtered.sort((a, b) => a.name.localeCompare(b.name));
253
+ }
254
+ return filtered;
255
+ }
256
+ function dedentDoc(text) {
257
+ const lines = text.split("\n");
258
+ let minIndent = Infinity;
259
+ for (let i = 0; i < lines.length; i++) {
260
+ if (lines[i].trim() === "")
261
+ continue;
262
+ const indent = lines[i].match(/^(\s*)/)?.[1].length ?? 0;
263
+ if (i === 0 && indent === 0)
264
+ continue;
265
+ if (indent < minIndent)
266
+ minIndent = indent;
267
+ }
268
+ if (minIndent === Infinity || minIndent === 0)
269
+ return text.trim();
270
+ return lines
271
+ .map((l) => {
272
+ if (l.trim() === "")
273
+ return "";
274
+ return l.startsWith(" ".repeat(minIndent)) ? l.slice(minIndent) : l;
275
+ })
276
+ .join("\n")
277
+ .trim();
278
+ }
279
+ //# sourceMappingURL=tree-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-builder.js","sourceRoot":"","sources":["../src/tree-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Structured representation of a Python symbol extracted from source.
3
+ */
4
+ export interface SymbolInfo {
5
+ name: string;
6
+ kind: "class" | "function" | "method" | "property" | "module" | "variable";
7
+ /** Full signature string, e.g. "def get(path: str, *, response_model: Type = None) -> Callable" */
8
+ signature: string;
9
+ /** Raw docstring text (triple-quoted string) */
10
+ docstring: string | null;
11
+ /** Parsed docstring sections */
12
+ doc?: ParsedDocstring;
13
+ /** Decorator strings, e.g. ["@app.get", "@deprecated"] */
14
+ decorators: string[];
15
+ /** Base classes for classes, e.g. ["Starlette"] */
16
+ bases: string[];
17
+ /** Parsed parameter information */
18
+ params: ParamInfo[];
19
+ /** Return type annotation */
20
+ returnType: string | null;
21
+ /** Child symbols (methods, nested classes, properties) */
22
+ members: SymbolInfo[];
23
+ /** Source location */
24
+ source: {
25
+ file: string;
26
+ line: number;
27
+ };
28
+ /** Full source text of the symbol (for show_source) */
29
+ sourceText?: string;
30
+ }
31
+ /**
32
+ * Parameter information extracted from function/method signatures.
33
+ */
34
+ export interface ParamInfo {
35
+ name: string;
36
+ /** Type annotation (may be complex, e.g. "Annotated[str, Doc('...')]") */
37
+ type: string | null;
38
+ /** Raw type without Annotated wrapper */
39
+ bareType: string | null;
40
+ /** Default value as string */
41
+ default: string | null;
42
+ /** Documentation from docstring or Annotated[type, Doc("...")] */
43
+ doc: string | null;
44
+ /** Whether parameter is required (no default) */
45
+ required: boolean;
46
+ /** Whether this is *args or **kwargs */
47
+ kind: "positional" | "keyword" | "var_positional" | "var_keyword" | "keyword_only";
48
+ }
49
+ /**
50
+ * Parsed docstring with sections.
51
+ * Supports Google, NumPy, and Sphinx styles.
52
+ */
53
+ export interface ParsedDocstring {
54
+ /** Summary/description (first paragraph) */
55
+ summary: string;
56
+ /** Extended description (remaining paragraphs before sections) */
57
+ description: string;
58
+ /** Parameter docs from docstring (may be overridden by Annotated[type, Doc()]) */
59
+ params: DocstringParam[];
60
+ /** Return value documentation */
61
+ returns: DocstringReturn | null;
62
+ /** Raised exceptions */
63
+ raises: DocstringRaise[];
64
+ /** Example code blocks */
65
+ examples: string[];
66
+ /** Notes section */
67
+ notes: string[];
68
+ /** Deprecation notice */
69
+ deprecated: string | null;
70
+ }
71
+ export interface DocstringParam {
72
+ name: string;
73
+ type: string | null;
74
+ description: string;
75
+ }
76
+ export interface DocstringReturn {
77
+ type: string | null;
78
+ description: string;
79
+ }
80
+ export interface DocstringRaise {
81
+ type: string;
82
+ description: string;
83
+ }
84
+ /**
85
+ * Options for the autodoc plugin.
86
+ */
87
+ export interface AutodocOptions {
88
+ /** Root directory containing Python source packages */
89
+ sourceRoot: string;
90
+ /** Global handler options (can be overridden per-directive) */
91
+ globalOptions?: AutodocDirectiveOptions;
92
+ }
93
+ /**
94
+ * Options for a single ::: directive (from YAML block).
95
+ */
96
+ export interface AutodocDirectiveOptions {
97
+ /** Specific members to document (whitelist) */
98
+ members?: string[];
99
+ /** Show the root heading for the symbol */
100
+ showRootHeading?: boolean;
101
+ /** Show members even without docstrings */
102
+ showIfNoDocstring?: boolean;
103
+ /** Include inherited members */
104
+ inheritedMembers?: boolean;
105
+ /** Member ordering: "source" | "alphabetical" */
106
+ membersOrder?: "source" | "alphabetical";
107
+ /** Merge __init__ parameters into class documentation */
108
+ mergeInitIntoClass?: boolean;
109
+ /** Show signature in a separate code block */
110
+ separateSignature?: boolean;
111
+ /** Regex filters for excluding members, e.g. ["!^_"] */
112
+ filters?: string[];
113
+ /** Heading level for the root symbol */
114
+ headingLevel?: number;
115
+ /** Show collapsible source code block */
116
+ showSource?: boolean;
117
+ /** Strip Annotated[T, ...] to T in signatures */
118
+ unwrapAnnotated?: boolean;
119
+ /** Group members by category (Attributes, Methods, Classes) */
120
+ groupByCategory?: boolean;
121
+ /** Show full dotted path in root heading (e.g. fastapi.FastAPI) */
122
+ showRootFullPath?: boolean;
123
+ /** Show base classes for classes */
124
+ showBases?: boolean;
125
+ /** Show function/method signatures */
126
+ showSignature?: boolean;
127
+ }
128
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@dogsbay/autodoc-python",
3
+ "version": "0.2.0-beta.41",
4
+ "description": "Pure-JS Python autodoc engine for Dogsbay — tree-sitter-WASM-based Python AST → SymbolInfo → TreeNode. Compatible with mkdocstrings ::: directive semantics.",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist",
16
+ "README.md"
17
+ ],
18
+ "devDependencies": {
19
+ "@types/markdown-it": "^14.1.0",
20
+ "@types/node": "^25.5.0",
21
+ "typescript": "^5.7.0",
22
+ "vitest": "^3.0.0"
23
+ },
24
+ "dependencies": {
25
+ "markdown-it": "^14.1.0",
26
+ "tree-sitter-python": "^0.25.0",
27
+ "web-tree-sitter": "^0.26.8",
28
+ "yaml": "^2.8.3",
29
+ "@dogsbay/types": "0.2.0-beta.41"
30
+ },
31
+ "license": "MIT",
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "https://github.com/dogsbay/dogsbay.git",
35
+ "directory": "packages/autodoc-python"
36
+ },
37
+ "homepage": "https://github.com/dogsbay/dogsbay/tree/main/packages/autodoc-python",
38
+ "bugs": {
39
+ "url": "https://github.com/dogsbay/dogsbay/issues"
40
+ },
41
+ "scripts": {
42
+ "build": "tsc",
43
+ "test": "vitest run",
44
+ "test:watch": "vitest"
45
+ }
46
+ }