From b92afd8f361688d970ec5b61d9b0f13e0ef803c2 Mon Sep 17 00:00:00 2001 From: Aria Desires Date: Wed, 7 Jan 2026 18:14:39 -0500 Subject: [PATCH] Update ty's JSON schema This updates ty's JSON schema to [d18902cdcc4d39badfad86c88e89b866a809c881](https://github.com/astral-sh/ty/commit/d18902cdcc4d39badfad86c88e89b866a809c881) --- src/schemas/json/ty.json | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/schemas/json/ty.json b/src/schemas/json/ty.json index dcbd3a40535..7b43853bc28 100644 --- a/src/schemas/json/ty.json +++ b/src/schemas/json/ty.json @@ -304,6 +304,10 @@ { "description": "Python 3.14", "const": "3.14" + }, + { + "description": "Python 3.15", + "const": "3.15" } ] }, @@ -778,6 +782,16 @@ } ] }, + "invalid-total-ordering": { + "title": "detects `@total_ordering` classes without an ordering method", + "description": "## What it does\nChecks for classes decorated with `@functools.total_ordering` that don't\ndefine any ordering method (`__lt__`, `__le__`, `__gt__`, or `__ge__`).\n\n## Why is this bad?\nThe `@total_ordering` decorator requires the class to define at least one\nordering method. If none is defined, Python raises a `ValueError` at runtime.\n\n## Example\n\n```python\nfrom functools import total_ordering\n\n@total_ordering\nclass MyClass: # Error: no ordering method defined\n def __eq__(self, other: object) -> bool:\n return True\n```\n\nUse instead:\n\n```python\nfrom functools import total_ordering\n\n@total_ordering\nclass MyClass:\n def __eq__(self, other: object) -> bool:\n return True\n\n def __lt__(self, other: \"MyClass\") -> bool:\n return True\n```", + "default": "error", + "oneOf": [ + { + "$ref": "#/definitions/Level" + } + ] + }, "invalid-type-alias-type": { "title": "detects invalid TypeAliasType definitions", "description": "## What it does\nChecks for the creation of invalid `TypeAliasType`s\n\n## Why is this bad?\nThere are several requirements that you must follow when creating a `TypeAliasType`.\n\n## Examples\n```python\nfrom typing import TypeAliasType\n\nIntOrStr = TypeAliasType(\"IntOrStr\", int | str) # okay\nNewAlias = TypeAliasType(get_name(), int) # error: TypeAliasType name must be a string literal\n```", @@ -848,6 +862,16 @@ } ] }, + "invalid-typed-dict-statement": { + "title": "detects invalid statements in `TypedDict` class bodies", + "description": "## What it does\nDetects statements other than annotated declarations in `TypedDict` class bodies.\n\n## Why is this bad?\n`TypedDict` class bodies aren't allowed to contain any other types of statements. For\nexample, method definitions and field values aren't allowed. None of these will be\navailable on \"instances of the `TypedDict`\" at runtime (as `dict` is the runtime class of\nall \"`TypedDict` instances\").\n\n## Example\n```python\nfrom typing import TypedDict\n\nclass Foo(TypedDict):\n def bar(self): # error: [invalid-typed-dict-statement]\n pass\n```", + "default": "error", + "oneOf": [ + { + "$ref": "#/definitions/Level" + } + ] + }, "missing-argument": { "title": "detects missing required arguments in a call", "description": "## What it does\nChecks for missing required arguments in a call.\n\n## Why is this bad?\nFailing to provide a required argument will raise a `TypeError` at runtime.\n\n## Examples\n```python\ndef func(x: int): ...\nfunc() # TypeError: func() missing 1 required positional argument: 'x'\n```",