Workaround Even Better TOML crash related to allOf (#15992)

## Summary

Fixes https://github.com/astral-sh/ruff/issues/15978

Even Better TOML doesn't support `allOf` well. In fact, it just crashes.

This PR works around this limitation by avoid using `allOf` in the
automatically
derived schema for the docstring formatting setting. 

### Alternatives

schemars introduces `allOf` whenver it sees a `$ref` alongside other
object properties
because this is no longer valid according to Draft 7. We could replace
the
visitor performing the rewrite but I prefer not to because replacing
`allOf` with `oneOf`
is only valid for objects that don't have any other `oneOf` or `anyOf`
schema.

## Test Plan


https://github.com/user-attachments/assets/25d73b2a-fee1-4ba6-9ffe-869b2c3bc64e
This commit is contained in:
Micha Reiser
2025-02-06 15:00:50 +00:00
committed by GitHub
parent b66cc94f9b
commit 7cac0da44d
2 changed files with 40 additions and 27 deletions

12
ruff.schema.json generated
View File

@@ -879,7 +879,7 @@
"anyOf": [
{
"description": "Wrap docstring code examples at a fixed line width.",
"allOf": [
"oneOf": [
{
"$ref": "#/definitions/LineWidth"
}
@@ -887,18 +887,10 @@
},
{
"description": "Respect the line length limit setting for the surrounding Python code.",
"allOf": [
{
"$ref": "#/definitions/Dynamic"
}
]
"const": "dynamic"
}
]
},
"Dynamic": {
"type": "string",
"const": "dynamic"
},
"Flake8AnnotationsOptions": {
"description": "Options for the `flake8-annotations` plugin.",
"type": "object",