Skip to content

Commit 4b2225c

Browse files
committed
Generate latest lsp types
upgrade datamodel generator with fixes and enhancements remove postprocess hack since upstream is fixed
1 parent b73d36f commit 4b2225c

7 files changed

Lines changed: 116 additions & 211 deletions

File tree

CLAUDE.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,7 @@ This is a zero-dependency Python library providing typed LSP (Language Server Pr
7878
**Generation Process:**
7979
1. `download_schemas.py`: Fetches latest schemas from upstream
8080
2. `datamodel-codegen`: Converts JSON schema to TypedDict definitions
81-
3. `postprocess_schema.py`: Applies fixes for codegen limitations
82-
4. `generate.py`: Orchestrates final type file generation with utilities in `assets/scripts/utils/`
81+
3. `generate.py`: Orchestrates final type file generation with utilities in `assets/scripts/utils/`
8382

8483
### Testing Strategy
8584

Makefile

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ help: ## Show this help message
2222

2323
download-schemas: ## Download latest LSP schemas (run this before generate-types)
2424
echo "Downloading latest LSP schemas..."
25-
python -m assets.scripts.download_schemas
25+
uv run python -m assets.scripts.download_schemas
2626
echo "Done."
2727

2828
generate-lsp-schema:
29-
datamodel-codegen \
29+
uv run datamodel-codegen \
3030
--input ./assets/lsprotocol/lsp.schema.json \
3131
--output ./assets/scripts/lsp_schema.py \
3232
--output-model-type "typing.TypedDict" \
@@ -36,11 +36,8 @@ generate-lsp-schema:
3636
--use-schema-description \
3737
--use-double-quotes
3838

39-
# see: https://github.com/koxudaxi/datamodel-code-generator/issues/2314
40-
python -m assets.scripts.postprocess_schema
41-
4239
generate-pyright-schema:
43-
datamodel-codegen \
40+
uv run datamodel-codegen \
4441
--input ./assets/lsps/pyright.schema.json \
4542
--output ./lsp_types/pyright/config_schema.py \
4643
--output-model-type "typing.TypedDict" \
@@ -50,12 +47,9 @@ generate-pyright-schema:
5047
--use-schema-description \
5148
--use-double-quotes
5249

53-
# see: https://github.com/koxudaxi/datamodel-code-generator/issues/2314
54-
# python -m assets.scripts.postprocess_schema
55-
5650
generate-types: ## Generate LSP type definitions
5751
echo "Generating LSP type definitions..."
58-
python -m assets.scripts.generate
52+
uv run python -m assets.scripts.generate
5953
echo "Done."
6054

6155
generate-latest-types: download-schemas generate-lsp-schema generate-pyright-schema generate-types ## Download latest LSP schemas and generate type definitions

assets/lsprotocol/lsp.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,8 @@
196196
}
197197
},
198198
"messageDirection": "clientToServer",
199+
"clientCapability": "textDocument.colorProvider",
200+
"serverCapability": "colorProvider",
199201
"params": {
200202
"kind": "reference",
201203
"name": "ColorPresentationParams"

assets/lsps/pyright.schema.json

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -499,11 +499,6 @@
499499
"title": "Controls reporting of code that is determined by type analysis to be unreachable",
500500
"default": "none"
501501
},
502-
"reportShadowedImports": {
503-
"$ref": "#/definitions/diagnostic",
504-
"title": "Controls reporting of shadowed imports of stdlib modules",
505-
"default": "none"
506-
},
507502
"reportImplicitOverride": {
508503
"$ref": "#/definitions/diagnostic",
509504
"title": "Controls reporting overridden methods that are missing an `@override` decorator",
@@ -863,9 +858,6 @@
863858
"reportUnreachable": {
864859
"$ref": "#/definitions/reportUnreachable"
865860
},
866-
"reportShadowedImports": {
867-
"$ref": "#/definitions/reportShadowedImports"
868-
},
869861
"reportImplicitOverride": {
870862
"$ref": "#/definitions/reportImplicitOverride"
871863
},
@@ -1184,9 +1176,6 @@
11841176
"reportUnreachable": {
11851177
"$ref": "#/definitions/reportUnreachable"
11861178
},
1187-
"reportShadowedImports": {
1188-
"$ref": "#/definitions/reportShadowedImports"
1189-
},
11901179
"reportImplicitOverride": {
11911180
"$ref": "#/definitions/reportImplicitOverride"
11921181
},

assets/scripts/lsp_schema.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
# generated by datamodel-codegen:
22
# filename: lsp.schema.json
3-
# timestamp: 2025-08-03T05:12:32+00:00
3+
# timestamp: 2025-11-28T18:09:27+00:00
44

55
from __future__ import annotations
66

77
from typing import Any, List, Literal, NotRequired, TypedDict, Union
88

9-
Model = Any
9+
type Model = Any
1010

1111

12-
BaseTypes = Literal[
12+
type BaseTypes = Literal[
1313
"URI",
1414
"DocumentUri",
1515
"integer",
@@ -88,7 +88,10 @@ class MapKeyType1(TypedDict):
8888
name: Literal["URI", "DocumentUri", "string", "integer"]
8989

9090

91-
MessageDirection = Literal["clientToServer", "serverToClient", "both"]
91+
type MessageDirection = Literal["clientToServer", "serverToClient", "both"]
92+
"""
93+
Indicates in which direction a message is sent in the protocol.
94+
"""
9295

9396

9497
class MetaData(TypedDict):
@@ -116,7 +119,7 @@ class StringLiteralType(TypedDict):
116119
value: str
117120

118121

119-
TypeKind = Literal[
122+
type TypeKind = Literal[
120123
"base",
121124
"reference",
122125
"array",
@@ -183,7 +186,10 @@ class Enumeration(TypedDict):
183186
"""
184187

185188

186-
MapKeyType = Union[MapKeyType1, ReferenceType]
189+
type MapKeyType = Union[MapKeyType1, ReferenceType]
190+
"""
191+
Represents a type that can be used as a key in a map type. If a reference type is used then the type must either resolve to a `string` or `integer` type. (e.g. `type ChangeAnnotationIdentifier === string`).
192+
"""
187193

188194

189195
class AndType(TypedDict):
@@ -515,7 +521,7 @@ class TupleType(TypedDict):
515521
kind: Literal["tuple"]
516522

517523

518-
Type = Union[
524+
type Type = Union[
519525
BaseType,
520526
ReferenceType,
521527
ArrayType,

assets/scripts/postprocess_schema.py

Lines changed: 0 additions & 80 deletions
This file was deleted.

0 commit comments

Comments
 (0)