driftdetect-core 0.1.2 → 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/boundaries/boundary-store.d.ts +92 -0
- package/dist/boundaries/boundary-store.d.ts.map +1 -0
- package/dist/boundaries/boundary-store.js +458 -0
- package/dist/boundaries/boundary-store.js.map +1 -0
- package/dist/boundaries/index.d.ts +8 -0
- package/dist/boundaries/index.d.ts.map +1 -0
- package/dist/boundaries/index.js +8 -0
- package/dist/boundaries/index.js.map +1 -0
- package/dist/boundaries/types.d.ts +237 -0
- package/dist/boundaries/types.d.ts.map +1 -0
- package/dist/boundaries/types.js +8 -0
- package/dist/boundaries/types.js.map +1 -0
- package/dist/dna/ai-context.d.ts +10 -0
- package/dist/dna/ai-context.d.ts.map +1 -0
- package/dist/dna/ai-context.js +46 -0
- package/dist/dna/ai-context.js.map +1 -0
- package/dist/dna/dna-analyzer.d.ts +34 -0
- package/dist/dna/dna-analyzer.d.ts.map +1 -0
- package/dist/dna/dna-analyzer.js +110 -0
- package/dist/dna/dna-analyzer.js.map +1 -0
- package/dist/dna/dna-store.d.ts +13 -0
- package/dist/dna/dna-store.d.ts.map +1 -0
- package/dist/dna/dna-store.js +43 -0
- package/dist/dna/dna-store.js.map +1 -0
- package/dist/dna/gene-extractors/animation-approach.d.ts +15 -0
- package/dist/dna/gene-extractors/animation-approach.d.ts.map +1 -0
- package/dist/dna/gene-extractors/animation-approach.js +97 -0
- package/dist/dna/gene-extractors/animation-approach.js.map +1 -0
- package/dist/dna/gene-extractors/base-extractor.d.ts +53 -0
- package/dist/dna/gene-extractors/base-extractor.d.ts.map +1 -0
- package/dist/dna/gene-extractors/base-extractor.js +76 -0
- package/dist/dna/gene-extractors/base-extractor.js.map +1 -0
- package/dist/dna/gene-extractors/index.d.ts +16 -0
- package/dist/dna/gene-extractors/index.d.ts.map +1 -0
- package/dist/dna/gene-extractors/index.js +38 -0
- package/dist/dna/gene-extractors/index.js.map +1 -0
- package/dist/dna/gene-extractors/responsive-approach.d.ts +10 -0
- package/dist/dna/gene-extractors/responsive-approach.d.ts.map +1 -0
- package/dist/dna/gene-extractors/responsive-approach.js +30 -0
- package/dist/dna/gene-extractors/responsive-approach.js.map +1 -0
- package/dist/dna/gene-extractors/spacing-philosophy.d.ts +10 -0
- package/dist/dna/gene-extractors/spacing-philosophy.d.ts.map +1 -0
- package/dist/dna/gene-extractors/spacing-philosophy.js +30 -0
- package/dist/dna/gene-extractors/spacing-philosophy.js.map +1 -0
- package/dist/dna/gene-extractors/state-styling.d.ts +10 -0
- package/dist/dna/gene-extractors/state-styling.d.ts.map +1 -0
- package/dist/dna/gene-extractors/state-styling.js +29 -0
- package/dist/dna/gene-extractors/state-styling.js.map +1 -0
- package/dist/dna/gene-extractors/theming.d.ts +10 -0
- package/dist/dna/gene-extractors/theming.d.ts.map +1 -0
- package/dist/dna/gene-extractors/theming.js +30 -0
- package/dist/dna/gene-extractors/theming.js.map +1 -0
- package/dist/dna/gene-extractors/variant-handling.d.ts +13 -0
- package/dist/dna/gene-extractors/variant-handling.d.ts.map +1 -0
- package/dist/dna/gene-extractors/variant-handling.js +38 -0
- package/dist/dna/gene-extractors/variant-handling.js.map +1 -0
- package/dist/dna/health-calculator.d.ts +21 -0
- package/dist/dna/health-calculator.d.ts.map +1 -0
- package/dist/dna/health-calculator.js +113 -0
- package/dist/dna/health-calculator.js.map +1 -0
- package/dist/dna/index.d.ts +21 -0
- package/dist/dna/index.d.ts.map +1 -0
- package/dist/dna/index.js +19 -0
- package/dist/dna/index.js.map +1 -0
- package/dist/dna/mutation-detector.d.ts +10 -0
- package/dist/dna/mutation-detector.d.ts.map +1 -0
- package/dist/dna/mutation-detector.js +39 -0
- package/dist/dna/mutation-detector.js.map +1 -0
- package/dist/dna/playbook-generator.d.ts +6 -0
- package/dist/dna/playbook-generator.d.ts.map +1 -0
- package/dist/dna/playbook-generator.js +53 -0
- package/dist/dna/playbook-generator.js.map +1 -0
- package/dist/dna/types.d.ts +95 -0
- package/dist/dna/types.d.ts.map +1 -0
- package/dist/dna/types.js +8 -0
- package/dist/dna/types.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/parsers/parser-manager.d.ts.map +1 -1
- package/dist/parsers/parser-manager.js +2 -0
- package/dist/parsers/parser-manager.js.map +1 -1
- package/dist/parsers/tree-sitter/config.d.ts +82 -0
- package/dist/parsers/tree-sitter/config.d.ts.map +1 -0
- package/dist/parsers/tree-sitter/config.js +200 -0
- package/dist/parsers/tree-sitter/config.js.map +1 -0
- package/dist/parsers/tree-sitter/csharp-ast-converter.d.ts +64 -0
- package/dist/parsers/tree-sitter/csharp-ast-converter.d.ts.map +1 -0
- package/dist/parsers/tree-sitter/csharp-ast-converter.js +271 -0
- package/dist/parsers/tree-sitter/csharp-ast-converter.js.map +1 -0
- package/dist/parsers/tree-sitter/csharp-loader.d.ts +43 -0
- package/dist/parsers/tree-sitter/csharp-loader.d.ts.map +1 -0
- package/dist/parsers/tree-sitter/csharp-loader.js +146 -0
- package/dist/parsers/tree-sitter/csharp-loader.js.map +1 -0
- package/dist/parsers/tree-sitter/index.d.ts +26 -0
- package/dist/parsers/tree-sitter/index.d.ts.map +1 -0
- package/dist/parsers/tree-sitter/index.js +47 -0
- package/dist/parsers/tree-sitter/index.js.map +1 -0
- package/dist/parsers/tree-sitter/java/annotation-extractor.d.ts +79 -0
- package/dist/parsers/tree-sitter/java/annotation-extractor.d.ts.map +1 -0
- package/dist/parsers/tree-sitter/java/annotation-extractor.js +540 -0
- package/dist/parsers/tree-sitter/java/annotation-extractor.js.map +1 -0
- package/dist/parsers/tree-sitter/java/class-extractor.d.ts +40 -0
- package/dist/parsers/tree-sitter/java/class-extractor.d.ts.map +1 -0
- package/dist/parsers/tree-sitter/java/class-extractor.js +770 -0
- package/dist/parsers/tree-sitter/java/class-extractor.js.map +1 -0
- package/dist/parsers/tree-sitter/java/index.d.ts +14 -0
- package/dist/parsers/tree-sitter/java/index.d.ts.map +1 -0
- package/dist/parsers/tree-sitter/java/index.js +25 -0
- package/dist/parsers/tree-sitter/java/index.js.map +1 -0
- package/dist/parsers/tree-sitter/java/method-extractor.d.ts +88 -0
- package/dist/parsers/tree-sitter/java/method-extractor.d.ts.map +1 -0
- package/dist/parsers/tree-sitter/java/method-extractor.js +551 -0
- package/dist/parsers/tree-sitter/java/method-extractor.js.map +1 -0
- package/dist/parsers/tree-sitter/java/types.d.ts +545 -0
- package/dist/parsers/tree-sitter/java/types.d.ts.map +1 -0
- package/dist/parsers/tree-sitter/java/types.js +81 -0
- package/dist/parsers/tree-sitter/java/types.js.map +1 -0
- package/dist/parsers/tree-sitter/loader.d.ts +50 -0
- package/dist/parsers/tree-sitter/loader.d.ts.map +1 -0
- package/dist/parsers/tree-sitter/loader.js +156 -0
- package/dist/parsers/tree-sitter/loader.js.map +1 -0
- package/dist/parsers/tree-sitter/pydantic/config-extractor.d.ts +78 -0
- package/dist/parsers/tree-sitter/pydantic/config-extractor.d.ts.map +1 -0
- package/dist/parsers/tree-sitter/pydantic/config-extractor.js +278 -0
- package/dist/parsers/tree-sitter/pydantic/config-extractor.js.map +1 -0
- package/dist/parsers/tree-sitter/pydantic/constraint-parser.d.ts +84 -0
- package/dist/parsers/tree-sitter/pydantic/constraint-parser.d.ts.map +1 -0
- package/dist/parsers/tree-sitter/pydantic/constraint-parser.js +321 -0
- package/dist/parsers/tree-sitter/pydantic/constraint-parser.js.map +1 -0
- package/dist/parsers/tree-sitter/pydantic/field-extractor.d.ts +74 -0
- package/dist/parsers/tree-sitter/pydantic/field-extractor.d.ts.map +1 -0
- package/dist/parsers/tree-sitter/pydantic/field-extractor.js +285 -0
- package/dist/parsers/tree-sitter/pydantic/field-extractor.js.map +1 -0
- package/dist/parsers/tree-sitter/pydantic/index.d.ts +18 -0
- package/dist/parsers/tree-sitter/pydantic/index.d.ts.map +1 -0
- package/dist/parsers/tree-sitter/pydantic/index.js +23 -0
- package/dist/parsers/tree-sitter/pydantic/index.js.map +1 -0
- package/dist/parsers/tree-sitter/pydantic/inheritance-resolver.d.ts +70 -0
- package/dist/parsers/tree-sitter/pydantic/inheritance-resolver.d.ts.map +1 -0
- package/dist/parsers/tree-sitter/pydantic/inheritance-resolver.js +251 -0
- package/dist/parsers/tree-sitter/pydantic/inheritance-resolver.js.map +1 -0
- package/dist/parsers/tree-sitter/pydantic/pydantic-extractor.d.ts +102 -0
- package/dist/parsers/tree-sitter/pydantic/pydantic-extractor.d.ts.map +1 -0
- package/dist/parsers/tree-sitter/pydantic/pydantic-extractor.js +399 -0
- package/dist/parsers/tree-sitter/pydantic/pydantic-extractor.js.map +1 -0
- package/dist/parsers/tree-sitter/pydantic/type-resolver.d.ts +89 -0
- package/dist/parsers/tree-sitter/pydantic/type-resolver.d.ts.map +1 -0
- package/dist/parsers/tree-sitter/pydantic/type-resolver.js +426 -0
- package/dist/parsers/tree-sitter/pydantic/type-resolver.js.map +1 -0
- package/dist/parsers/tree-sitter/pydantic/types.d.ts +177 -0
- package/dist/parsers/tree-sitter/pydantic/types.d.ts.map +1 -0
- package/dist/parsers/tree-sitter/pydantic/types.js +139 -0
- package/dist/parsers/tree-sitter/pydantic/types.js.map +1 -0
- package/dist/parsers/tree-sitter/pydantic/validator-extractor.d.ts +88 -0
- package/dist/parsers/tree-sitter/pydantic/validator-extractor.d.ts.map +1 -0
- package/dist/parsers/tree-sitter/pydantic/validator-extractor.js +315 -0
- package/dist/parsers/tree-sitter/pydantic/validator-extractor.js.map +1 -0
- package/dist/parsers/tree-sitter/python-ast-converter.d.ts +140 -0
- package/dist/parsers/tree-sitter/python-ast-converter.d.ts.map +1 -0
- package/dist/parsers/tree-sitter/python-ast-converter.js +360 -0
- package/dist/parsers/tree-sitter/python-ast-converter.js.map +1 -0
- package/dist/parsers/tree-sitter/tree-sitter-csharp-parser.d.ts +465 -0
- package/dist/parsers/tree-sitter/tree-sitter-csharp-parser.d.ts.map +1 -0
- package/dist/parsers/tree-sitter/tree-sitter-csharp-parser.js +1146 -0
- package/dist/parsers/tree-sitter/tree-sitter-csharp-parser.js.map +1 -0
- package/dist/parsers/tree-sitter/tree-sitter-python-parser.d.ts +86 -0
- package/dist/parsers/tree-sitter/tree-sitter-python-parser.d.ts.map +1 -0
- package/dist/parsers/tree-sitter/tree-sitter-python-parser.js +177 -0
- package/dist/parsers/tree-sitter/tree-sitter-python-parser.js.map +1 -0
- package/dist/parsers/tree-sitter/types.d.ts +399 -0
- package/dist/parsers/tree-sitter/types.d.ts.map +1 -0
- package/dist/parsers/tree-sitter/types.js +20 -0
- package/dist/parsers/tree-sitter/types.js.map +1 -0
- package/dist/parsers/types.d.ts +1 -1
- package/dist/parsers/types.d.ts.map +1 -1
- package/dist/scanner/file-walker.d.ts.map +1 -1
- package/dist/scanner/file-walker.js +5 -0
- package/dist/scanner/file-walker.js.map +1 -1
- package/dist/store/history-store.d.ts +85 -269
- package/dist/store/history-store.d.ts.map +1 -1
- package/dist/store/history-store.js +272 -624
- package/dist/store/history-store.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/java-type-mapping.d.ts +79 -0
- package/dist/types/java-type-mapping.d.ts.map +1 -0
- package/dist/types/java-type-mapping.js +290 -0
- package/dist/types/java-type-mapping.js.map +1 -0
- package/package.json +8 -3
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pydantic Type Resolver
|
|
3
|
+
*
|
|
4
|
+
* Resolves Python type annotations to TypeInfo structures.
|
|
5
|
+
* Handles Optional, Union, List, Dict, Literal, and nested generics.
|
|
6
|
+
*
|
|
7
|
+
* @module pydantic/type-resolver
|
|
8
|
+
*/
|
|
9
|
+
import { PYTHON_TYPE_MAP } from './types.js';
|
|
10
|
+
// ============================================
|
|
11
|
+
// Type Resolver Class
|
|
12
|
+
// ============================================
|
|
13
|
+
/**
|
|
14
|
+
* Resolves Python type annotations to TypeInfo.
|
|
15
|
+
*
|
|
16
|
+
* Handles:
|
|
17
|
+
* - Simple types: `str`, `int`, `bool`
|
|
18
|
+
* - Optional: `Optional[str]`, `str | None`
|
|
19
|
+
* - Union: `Union[str, int]`, `str | int`
|
|
20
|
+
* - List/Dict: `List[str]`, `Dict[str, int]`
|
|
21
|
+
* - Literal: `Literal['a', 'b', 'c']`
|
|
22
|
+
* - Nested: `List[Dict[str, Optional[int]]]`
|
|
23
|
+
*/
|
|
24
|
+
export class TypeResolver {
|
|
25
|
+
/**
|
|
26
|
+
* Resolve a type annotation string to TypeInfo.
|
|
27
|
+
*
|
|
28
|
+
* @param typeStr - The type annotation string
|
|
29
|
+
* @param context - Extraction context
|
|
30
|
+
* @param depth - Current recursion depth
|
|
31
|
+
* @returns Resolved TypeInfo
|
|
32
|
+
*/
|
|
33
|
+
resolve(typeStr, context, depth = 0) {
|
|
34
|
+
// Prevent infinite recursion
|
|
35
|
+
if (depth > context.maxTypeDepth) {
|
|
36
|
+
return this.createUnknownType(typeStr);
|
|
37
|
+
}
|
|
38
|
+
// Normalize whitespace
|
|
39
|
+
const normalized = typeStr.trim();
|
|
40
|
+
// Check for type alias
|
|
41
|
+
const aliased = context.typeAliases.get(normalized);
|
|
42
|
+
if (aliased) {
|
|
43
|
+
return this.resolve(aliased, context, depth + 1);
|
|
44
|
+
}
|
|
45
|
+
// Parse the type structure
|
|
46
|
+
const parsed = this.parseTypeString(normalized);
|
|
47
|
+
// Convert to TypeInfo
|
|
48
|
+
return this.parsedToTypeInfo(parsed, context, depth);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Create an unknown type placeholder.
|
|
52
|
+
*/
|
|
53
|
+
createUnknownType(raw = 'unknown') {
|
|
54
|
+
return {
|
|
55
|
+
raw,
|
|
56
|
+
base: 'unknown',
|
|
57
|
+
args: [],
|
|
58
|
+
isOptional: false,
|
|
59
|
+
isUnion: false,
|
|
60
|
+
isList: false,
|
|
61
|
+
isDict: false,
|
|
62
|
+
isLiteral: false,
|
|
63
|
+
literalValues: [],
|
|
64
|
+
isPydanticModel: false,
|
|
65
|
+
referencedModel: null,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
// ============================================
|
|
69
|
+
// Type String Parsing
|
|
70
|
+
// ============================================
|
|
71
|
+
/**
|
|
72
|
+
* Parse a type string into a structured format.
|
|
73
|
+
*/
|
|
74
|
+
parseTypeString(typeStr) {
|
|
75
|
+
// Handle union syntax: str | int | None
|
|
76
|
+
if (this.containsUnionOperator(typeStr)) {
|
|
77
|
+
return this.parseUnionType(typeStr);
|
|
78
|
+
}
|
|
79
|
+
// Handle generic types: List[str], Dict[str, int]
|
|
80
|
+
const genericMatch = typeStr.match(/^(\w+(?:\.\w+)*)\s*\[(.+)\]$/);
|
|
81
|
+
if (genericMatch) {
|
|
82
|
+
const [, base, argsStr] = genericMatch;
|
|
83
|
+
const args = this.parseGenericArgs(argsStr ?? '');
|
|
84
|
+
return {
|
|
85
|
+
base: base ?? '',
|
|
86
|
+
args,
|
|
87
|
+
raw: typeStr,
|
|
88
|
+
isOptional: false,
|
|
89
|
+
isUnion: false,
|
|
90
|
+
unionMembers: [],
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
// Simple type
|
|
94
|
+
return {
|
|
95
|
+
base: typeStr,
|
|
96
|
+
args: [],
|
|
97
|
+
raw: typeStr,
|
|
98
|
+
isOptional: false,
|
|
99
|
+
isUnion: false,
|
|
100
|
+
unionMembers: [],
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Check if type string contains union operator (|) outside brackets.
|
|
105
|
+
*/
|
|
106
|
+
containsUnionOperator(typeStr) {
|
|
107
|
+
let depth = 0;
|
|
108
|
+
for (const char of typeStr) {
|
|
109
|
+
if (char === '[' || char === '(')
|
|
110
|
+
depth++;
|
|
111
|
+
else if (char === ']' || char === ')')
|
|
112
|
+
depth--;
|
|
113
|
+
else if (char === '|' && depth === 0)
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Parse a union type (str | int | None).
|
|
120
|
+
*/
|
|
121
|
+
parseUnionType(typeStr) {
|
|
122
|
+
const members = this.splitUnionMembers(typeStr);
|
|
123
|
+
const parsedMembers = members.map((m) => this.parseTypeString(m.trim()));
|
|
124
|
+
// Check if this is Optional (has None member)
|
|
125
|
+
const hasNone = parsedMembers.some((m) => m.base === 'None' || m.base === 'NoneType');
|
|
126
|
+
const nonNoneMembers = parsedMembers.filter((m) => m.base !== 'None' && m.base !== 'NoneType');
|
|
127
|
+
// If only one non-None member, treat as Optional[T]
|
|
128
|
+
if (hasNone && nonNoneMembers.length === 1) {
|
|
129
|
+
const inner = nonNoneMembers[0];
|
|
130
|
+
return {
|
|
131
|
+
...inner,
|
|
132
|
+
isOptional: true,
|
|
133
|
+
raw: typeStr,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
base: 'Union',
|
|
138
|
+
args: parsedMembers,
|
|
139
|
+
raw: typeStr,
|
|
140
|
+
isOptional: hasNone,
|
|
141
|
+
isUnion: true,
|
|
142
|
+
unionMembers: parsedMembers,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Split union members respecting bracket depth.
|
|
147
|
+
*/
|
|
148
|
+
splitUnionMembers(typeStr) {
|
|
149
|
+
const members = [];
|
|
150
|
+
let current = '';
|
|
151
|
+
let depth = 0;
|
|
152
|
+
for (const char of typeStr) {
|
|
153
|
+
if (char === '[' || char === '(') {
|
|
154
|
+
depth++;
|
|
155
|
+
current += char;
|
|
156
|
+
}
|
|
157
|
+
else if (char === ']' || char === ')') {
|
|
158
|
+
depth--;
|
|
159
|
+
current += char;
|
|
160
|
+
}
|
|
161
|
+
else if (char === '|' && depth === 0) {
|
|
162
|
+
members.push(current.trim());
|
|
163
|
+
current = '';
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
current += char;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
if (current.trim()) {
|
|
170
|
+
members.push(current.trim());
|
|
171
|
+
}
|
|
172
|
+
return members;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Parse generic type arguments.
|
|
176
|
+
*/
|
|
177
|
+
parseGenericArgs(argsStr) {
|
|
178
|
+
const args = [];
|
|
179
|
+
let current = '';
|
|
180
|
+
let depth = 0;
|
|
181
|
+
for (const char of argsStr) {
|
|
182
|
+
if (char === '[' || char === '(') {
|
|
183
|
+
depth++;
|
|
184
|
+
current += char;
|
|
185
|
+
}
|
|
186
|
+
else if (char === ']' || char === ')') {
|
|
187
|
+
depth--;
|
|
188
|
+
current += char;
|
|
189
|
+
}
|
|
190
|
+
else if (char === ',' && depth === 0) {
|
|
191
|
+
if (current.trim()) {
|
|
192
|
+
args.push(this.parseTypeString(current.trim()));
|
|
193
|
+
}
|
|
194
|
+
current = '';
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
current += char;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
if (current.trim()) {
|
|
201
|
+
args.push(this.parseTypeString(current.trim()));
|
|
202
|
+
}
|
|
203
|
+
return args;
|
|
204
|
+
}
|
|
205
|
+
// ============================================
|
|
206
|
+
// Type Conversion
|
|
207
|
+
// ============================================
|
|
208
|
+
/**
|
|
209
|
+
* Convert ParsedType to TypeInfo.
|
|
210
|
+
*/
|
|
211
|
+
parsedToTypeInfo(parsed, context, depth) {
|
|
212
|
+
const base = parsed.base;
|
|
213
|
+
// Handle Optional[T]
|
|
214
|
+
if (base === 'Optional') {
|
|
215
|
+
const inner = parsed.args[0];
|
|
216
|
+
if (inner) {
|
|
217
|
+
const innerInfo = this.parsedToTypeInfo(inner, context, depth + 1);
|
|
218
|
+
return {
|
|
219
|
+
...innerInfo,
|
|
220
|
+
isOptional: true,
|
|
221
|
+
raw: parsed.raw,
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
// Handle Union[T, U, ...]
|
|
226
|
+
if (base === 'Union' || parsed.isUnion) {
|
|
227
|
+
return this.handleUnionType(parsed, context, depth);
|
|
228
|
+
}
|
|
229
|
+
// Handle Literal['a', 'b']
|
|
230
|
+
if (base === 'Literal') {
|
|
231
|
+
return this.handleLiteralType(parsed);
|
|
232
|
+
}
|
|
233
|
+
// Handle List/Sequence types
|
|
234
|
+
if (this.isListType(base)) {
|
|
235
|
+
return this.handleListType(parsed, context, depth);
|
|
236
|
+
}
|
|
237
|
+
// Handle Dict/Mapping types
|
|
238
|
+
if (this.isDictType(base)) {
|
|
239
|
+
return this.handleDictType(parsed, context, depth);
|
|
240
|
+
}
|
|
241
|
+
// Handle Tuple
|
|
242
|
+
if (base === 'Tuple' || base === 'tuple') {
|
|
243
|
+
return this.handleTupleType(parsed, context, depth);
|
|
244
|
+
}
|
|
245
|
+
// Check if this is a known Pydantic model
|
|
246
|
+
const isPydanticModel = context.knownModels.has(base);
|
|
247
|
+
// Map Python type to contract type
|
|
248
|
+
const mappedBase = PYTHON_TYPE_MAP[base] ?? base;
|
|
249
|
+
return {
|
|
250
|
+
raw: parsed.raw,
|
|
251
|
+
base: mappedBase,
|
|
252
|
+
args: parsed.args.map((a) => this.parsedToTypeInfo(a, context, depth + 1)),
|
|
253
|
+
isOptional: parsed.isOptional,
|
|
254
|
+
isUnion: false,
|
|
255
|
+
isList: false,
|
|
256
|
+
isDict: false,
|
|
257
|
+
isLiteral: false,
|
|
258
|
+
literalValues: [],
|
|
259
|
+
isPydanticModel,
|
|
260
|
+
referencedModel: isPydanticModel ? base : null,
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Handle Union type conversion.
|
|
265
|
+
*/
|
|
266
|
+
handleUnionType(parsed, context, depth) {
|
|
267
|
+
const members = parsed.unionMembers.length > 0
|
|
268
|
+
? parsed.unionMembers
|
|
269
|
+
: parsed.args;
|
|
270
|
+
// Filter out None for display
|
|
271
|
+
const nonNoneMembers = members.filter((m) => m.base !== 'None' && m.base !== 'NoneType');
|
|
272
|
+
// If single non-None member, return it as optional
|
|
273
|
+
if (nonNoneMembers.length === 1 && parsed.isOptional) {
|
|
274
|
+
const inner = this.parsedToTypeInfo(nonNoneMembers[0], context, depth + 1);
|
|
275
|
+
return {
|
|
276
|
+
...inner,
|
|
277
|
+
isOptional: true,
|
|
278
|
+
raw: parsed.raw,
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
// True union type
|
|
282
|
+
return {
|
|
283
|
+
raw: parsed.raw,
|
|
284
|
+
base: 'union',
|
|
285
|
+
args: nonNoneMembers.map((m) => this.parsedToTypeInfo(m, context, depth + 1)),
|
|
286
|
+
isOptional: parsed.isOptional,
|
|
287
|
+
isUnion: true,
|
|
288
|
+
isList: false,
|
|
289
|
+
isDict: false,
|
|
290
|
+
isLiteral: false,
|
|
291
|
+
literalValues: [],
|
|
292
|
+
isPydanticModel: false,
|
|
293
|
+
referencedModel: null,
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Handle Literal type conversion.
|
|
298
|
+
*/
|
|
299
|
+
handleLiteralType(parsed) {
|
|
300
|
+
// Extract literal values from args
|
|
301
|
+
const literalValues = parsed.args.map((arg) => {
|
|
302
|
+
// Remove quotes from string literals
|
|
303
|
+
const val = arg.base;
|
|
304
|
+
if ((val.startsWith('"') && val.endsWith('"')) ||
|
|
305
|
+
(val.startsWith("'") && val.endsWith("'"))) {
|
|
306
|
+
return val.slice(1, -1);
|
|
307
|
+
}
|
|
308
|
+
return val;
|
|
309
|
+
});
|
|
310
|
+
// Determine base type from first value
|
|
311
|
+
const firstValue = literalValues[0];
|
|
312
|
+
let base = 'string';
|
|
313
|
+
if (firstValue !== undefined) {
|
|
314
|
+
if (/^-?\d+$/.test(firstValue))
|
|
315
|
+
base = 'number';
|
|
316
|
+
else if (firstValue === 'True' || firstValue === 'False')
|
|
317
|
+
base = 'boolean';
|
|
318
|
+
}
|
|
319
|
+
return {
|
|
320
|
+
raw: parsed.raw,
|
|
321
|
+
base,
|
|
322
|
+
args: [],
|
|
323
|
+
isOptional: false,
|
|
324
|
+
isUnion: false,
|
|
325
|
+
isList: false,
|
|
326
|
+
isDict: false,
|
|
327
|
+
isLiteral: true,
|
|
328
|
+
literalValues,
|
|
329
|
+
isPydanticModel: false,
|
|
330
|
+
referencedModel: null,
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Handle List/Sequence type conversion.
|
|
335
|
+
*/
|
|
336
|
+
handleListType(parsed, context, depth) {
|
|
337
|
+
const itemType = parsed.args[0];
|
|
338
|
+
const itemInfo = itemType
|
|
339
|
+
? this.parsedToTypeInfo(itemType, context, depth + 1)
|
|
340
|
+
: this.createUnknownType();
|
|
341
|
+
return {
|
|
342
|
+
raw: parsed.raw,
|
|
343
|
+
base: 'array',
|
|
344
|
+
args: [itemInfo],
|
|
345
|
+
isOptional: parsed.isOptional,
|
|
346
|
+
isUnion: false,
|
|
347
|
+
isList: true,
|
|
348
|
+
isDict: false,
|
|
349
|
+
isLiteral: false,
|
|
350
|
+
literalValues: [],
|
|
351
|
+
isPydanticModel: false,
|
|
352
|
+
referencedModel: null,
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Handle Dict/Mapping type conversion.
|
|
357
|
+
*/
|
|
358
|
+
handleDictType(parsed, context, depth) {
|
|
359
|
+
const keyType = parsed.args[0];
|
|
360
|
+
const valueType = parsed.args[1];
|
|
361
|
+
const keyInfo = keyType
|
|
362
|
+
? this.parsedToTypeInfo(keyType, context, depth + 1)
|
|
363
|
+
: this.createUnknownType();
|
|
364
|
+
const valueInfo = valueType
|
|
365
|
+
? this.parsedToTypeInfo(valueType, context, depth + 1)
|
|
366
|
+
: this.createUnknownType();
|
|
367
|
+
return {
|
|
368
|
+
raw: parsed.raw,
|
|
369
|
+
base: 'object',
|
|
370
|
+
args: [keyInfo, valueInfo],
|
|
371
|
+
isOptional: parsed.isOptional,
|
|
372
|
+
isUnion: false,
|
|
373
|
+
isList: false,
|
|
374
|
+
isDict: true,
|
|
375
|
+
isLiteral: false,
|
|
376
|
+
literalValues: [],
|
|
377
|
+
isPydanticModel: false,
|
|
378
|
+
referencedModel: null,
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Handle Tuple type conversion.
|
|
383
|
+
*/
|
|
384
|
+
handleTupleType(parsed, context, depth) {
|
|
385
|
+
return {
|
|
386
|
+
raw: parsed.raw,
|
|
387
|
+
base: 'array',
|
|
388
|
+
args: parsed.args.map((a) => this.parsedToTypeInfo(a, context, depth + 1)),
|
|
389
|
+
isOptional: parsed.isOptional,
|
|
390
|
+
isUnion: false,
|
|
391
|
+
isList: true,
|
|
392
|
+
isDict: false,
|
|
393
|
+
isLiteral: false,
|
|
394
|
+
literalValues: [],
|
|
395
|
+
isPydanticModel: false,
|
|
396
|
+
referencedModel: null,
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
// ============================================
|
|
400
|
+
// Type Classification Helpers
|
|
401
|
+
// ============================================
|
|
402
|
+
/**
|
|
403
|
+
* Check if a type name is a list-like type.
|
|
404
|
+
*/
|
|
405
|
+
isListType(typeName) {
|
|
406
|
+
return [
|
|
407
|
+
'List', 'list',
|
|
408
|
+
'Sequence', 'MutableSequence',
|
|
409
|
+
'Set', 'set', 'FrozenSet', 'frozenset',
|
|
410
|
+
'Iterable', 'Iterator', 'Generator',
|
|
411
|
+
'Collection', 'AbstractSet',
|
|
412
|
+
].includes(typeName);
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* Check if a type name is a dict-like type.
|
|
416
|
+
*/
|
|
417
|
+
isDictType(typeName) {
|
|
418
|
+
return [
|
|
419
|
+
'Dict', 'dict',
|
|
420
|
+
'Mapping', 'MutableMapping',
|
|
421
|
+
'OrderedDict', 'DefaultDict',
|
|
422
|
+
'Counter', 'ChainMap',
|
|
423
|
+
].includes(typeName);
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
//# sourceMappingURL=type-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-resolver.js","sourceRoot":"","sources":["../../../../src/parsers/tree-sitter/pydantic/type-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pydantic Module Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions specific to Pydantic model extraction.
|
|
5
|
+
* Extends the base types with additional extraction-specific interfaces.
|
|
6
|
+
*
|
|
7
|
+
* @module pydantic/types
|
|
8
|
+
*/
|
|
9
|
+
import type { Position } from '../../types.js';
|
|
10
|
+
import type { TreeSitterNode } from '../types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Context passed during extraction operations.
|
|
13
|
+
* Contains shared state and configuration.
|
|
14
|
+
*/
|
|
15
|
+
export interface ExtractionContext {
|
|
16
|
+
/** Source code being parsed */
|
|
17
|
+
source: string;
|
|
18
|
+
/** Maximum depth for type resolution */
|
|
19
|
+
maxTypeDepth: number;
|
|
20
|
+
/** Known model names in the file */
|
|
21
|
+
knownModels: Set<string>;
|
|
22
|
+
/** Type aliases defined in the file */
|
|
23
|
+
typeAliases: Map<string, string>;
|
|
24
|
+
/** Import mappings (alias -> full path) */
|
|
25
|
+
imports: Map<string, string>;
|
|
26
|
+
/** Whether to include position information */
|
|
27
|
+
includePositions: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Create a default extraction context.
|
|
31
|
+
*/
|
|
32
|
+
export declare function createExtractionContext(source: string, options?: Partial<ExtractionContext>): ExtractionContext;
|
|
33
|
+
/**
|
|
34
|
+
* Raw field data extracted from AST before processing.
|
|
35
|
+
*/
|
|
36
|
+
export interface RawFieldData {
|
|
37
|
+
/** Field name */
|
|
38
|
+
name: string;
|
|
39
|
+
/** Raw type annotation string */
|
|
40
|
+
typeAnnotation: string | null;
|
|
41
|
+
/** Default value expression */
|
|
42
|
+
defaultValue: string | null;
|
|
43
|
+
/** Whether Field() is used */
|
|
44
|
+
usesField: boolean;
|
|
45
|
+
/** Field() arguments if present */
|
|
46
|
+
fieldArguments: FieldArgument[];
|
|
47
|
+
/** AST node for the field */
|
|
48
|
+
node: TreeSitterNode;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* A single argument from Field() call.
|
|
52
|
+
*/
|
|
53
|
+
export interface FieldArgument {
|
|
54
|
+
/** Argument name (null for positional) */
|
|
55
|
+
name: string | null;
|
|
56
|
+
/** Argument value as string */
|
|
57
|
+
value: string;
|
|
58
|
+
/** Whether this is a keyword argument */
|
|
59
|
+
isKeyword: boolean;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Result of parsing a type annotation.
|
|
63
|
+
*/
|
|
64
|
+
export interface ParsedType {
|
|
65
|
+
/** The base type name */
|
|
66
|
+
base: string;
|
|
67
|
+
/** Generic type arguments */
|
|
68
|
+
args: ParsedType[];
|
|
69
|
+
/** Original raw string */
|
|
70
|
+
raw: string;
|
|
71
|
+
/** Whether wrapped in Optional */
|
|
72
|
+
isOptional: boolean;
|
|
73
|
+
/** Whether this is a Union type */
|
|
74
|
+
isUnion: boolean;
|
|
75
|
+
/** Union members if isUnion */
|
|
76
|
+
unionMembers: ParsedType[];
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Python to contract type mapping.
|
|
80
|
+
*/
|
|
81
|
+
export declare const PYTHON_TYPE_MAP: Record<string, string>;
|
|
82
|
+
/**
|
|
83
|
+
* Numeric constraint names.
|
|
84
|
+
*/
|
|
85
|
+
export declare const NUMERIC_CONSTRAINTS: readonly ["ge", "le", "gt", "lt", "multiple_of"];
|
|
86
|
+
export type NumericConstraint = typeof NUMERIC_CONSTRAINTS[number];
|
|
87
|
+
/**
|
|
88
|
+
* String constraint names.
|
|
89
|
+
*/
|
|
90
|
+
export declare const STRING_CONSTRAINTS: readonly ["min_length", "max_length", "pattern", "regex"];
|
|
91
|
+
export type StringConstraint = typeof STRING_CONSTRAINTS[number];
|
|
92
|
+
/**
|
|
93
|
+
* All constraint names.
|
|
94
|
+
*/
|
|
95
|
+
export declare const ALL_CONSTRAINTS: readonly ["ge", "le", "gt", "lt", "multiple_of", "min_length", "max_length", "pattern", "regex", "alias", "title", "description", "examples", "deprecated", "frozen", "exclude", "include", "discriminator", "json_schema_extra", "strict", "default", "default_factory"];
|
|
96
|
+
/**
|
|
97
|
+
* Validator decorator types.
|
|
98
|
+
*/
|
|
99
|
+
export type ValidatorDecoratorType = 'validator' | 'root_validator' | 'field_validator' | 'model_validator' | 'computed_field';
|
|
100
|
+
/**
|
|
101
|
+
* Validator mode for v2 validators.
|
|
102
|
+
*/
|
|
103
|
+
export type ValidatorMode = 'before' | 'after' | 'wrap' | 'plain';
|
|
104
|
+
/**
|
|
105
|
+
* Raw validator data from AST.
|
|
106
|
+
*/
|
|
107
|
+
export interface RawValidatorData {
|
|
108
|
+
/** Function name */
|
|
109
|
+
name: string;
|
|
110
|
+
/** Decorator type */
|
|
111
|
+
decoratorType: ValidatorDecoratorType;
|
|
112
|
+
/** Fields this validator applies to (for field validators) */
|
|
113
|
+
fields: string[];
|
|
114
|
+
/** Validator mode */
|
|
115
|
+
mode: ValidatorMode | null;
|
|
116
|
+
/** Whether pre=True (v1) */
|
|
117
|
+
isPre: boolean;
|
|
118
|
+
/** Whether always=True (v1) */
|
|
119
|
+
isAlways: boolean;
|
|
120
|
+
/** Whether check_fields=False */
|
|
121
|
+
skipOnFailure: boolean;
|
|
122
|
+
/** AST node */
|
|
123
|
+
node: TreeSitterNode;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Raw config data from AST.
|
|
127
|
+
*/
|
|
128
|
+
export interface RawConfigData {
|
|
129
|
+
/** Whether this is v1 Config class or v2 model_config */
|
|
130
|
+
version: 1 | 2;
|
|
131
|
+
/** Config values as key-value pairs */
|
|
132
|
+
values: Map<string, ConfigValue>;
|
|
133
|
+
/** AST node */
|
|
134
|
+
node: TreeSitterNode;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* A config value (can be various types).
|
|
138
|
+
*/
|
|
139
|
+
export interface ConfigValue {
|
|
140
|
+
/** Raw string representation */
|
|
141
|
+
raw: string;
|
|
142
|
+
/** Parsed value if simple type */
|
|
143
|
+
parsed: string | number | boolean | null;
|
|
144
|
+
/** Whether this is a complex expression */
|
|
145
|
+
isComplex: boolean;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Information about a base class.
|
|
149
|
+
*/
|
|
150
|
+
export interface BaseClassInfo {
|
|
151
|
+
/** Base class name */
|
|
152
|
+
name: string;
|
|
153
|
+
/** Full qualified name if available */
|
|
154
|
+
fullName: string | null;
|
|
155
|
+
/** Generic type arguments if any */
|
|
156
|
+
typeArgs: string[];
|
|
157
|
+
/** Whether this is a Pydantic base */
|
|
158
|
+
isPydanticBase: boolean;
|
|
159
|
+
/** Whether this is Generic[T] */
|
|
160
|
+
isGeneric: boolean;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Known Pydantic base classes.
|
|
164
|
+
*/
|
|
165
|
+
export declare const PYDANTIC_BASE_CLASSES: Set<string>;
|
|
166
|
+
/**
|
|
167
|
+
* Extract position from a tree-sitter node.
|
|
168
|
+
*/
|
|
169
|
+
export declare function extractPosition(node: TreeSitterNode): Position;
|
|
170
|
+
/**
|
|
171
|
+
* Extract start and end positions from a node.
|
|
172
|
+
*/
|
|
173
|
+
export declare function extractPositionRange(node: TreeSitterNode): {
|
|
174
|
+
startPosition: Position;
|
|
175
|
+
endPosition: Position;
|
|
176
|
+
};
|
|
177
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/parsers/tree-sitter/pydantic/types.ts"],"names":[],"mappings":"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"}
|