(
code: string,
definitions: Record<string, JSONSchema7>,
definitionCollections: DefinitionCollections
)
| 1140 | } |
| 1141 | |
| 1142 | function removeRequiredAnyDefaultsForPython( |
| 1143 | code: string, |
| 1144 | definitions: Record<string, JSONSchema7>, |
| 1145 | definitionCollections: DefinitionCollections |
| 1146 | ): string { |
| 1147 | const requiredFieldsByClass = new Map<string, Set<string>>(); |
| 1148 | |
| 1149 | for (const [definitionName, schema] of Object.entries(definitions)) { |
| 1150 | const resolved = resolveObjectSchema(schema, definitionCollections) ?? resolveSchema(schema, definitionCollections); |
| 1151 | if (!resolved || !isObjectSchema(resolved) || !resolved.properties || !Array.isArray(resolved.required)) { |
| 1152 | continue; |
| 1153 | } |
| 1154 | |
| 1155 | const requiredFields = resolved.required.map(toSnakeCase); |
| 1156 | for (const className of new Set([definitionName, toPascalCase(definitionName)])) { |
| 1157 | const fields = requiredFieldsByClass.get(className) ?? new Set<string>(); |
| 1158 | for (const field of requiredFields) { |
| 1159 | fields.add(field); |
| 1160 | } |
| 1161 | requiredFieldsByClass.set(className, fields); |
| 1162 | } |
| 1163 | } |
| 1164 | |
| 1165 | const classBlockRe = /(@dataclass\r?\nclass\s+(\w+):[\s\S]*?)(?=^@dataclass|^class\s+\w|^def\s+\w|\Z)/gm; |
| 1166 | return code.replace(classBlockRe, (block: string, _classPrefix: string, className: string) => { |
| 1167 | const requiredFields = requiredFieldsByClass.get(className); |
| 1168 | if (!requiredFields) { |
| 1169 | return block; |
| 1170 | } |
| 1171 | |
| 1172 | let updatedBlock = block; |
| 1173 | for (const field of requiredFields) { |
| 1174 | updatedBlock = updatedBlock.replace(new RegExp(`^( ${escapeRegExp(field)}: Any) = None$`, "m"), "$1"); |
| 1175 | } |
| 1176 | return updatedBlock; |
| 1177 | }); |
| 1178 | } |
| 1179 | |
| 1180 | /** |
| 1181 | * Remove locally-emitted Enum class definitions whose name already comes from |
no test coverage detected
searching dependent graphs…