Skip to content

Commit d02cddc

Browse files
Use Python identifiers as an approximation to avoid quoting property names (#210)
* Use Python identifiers as an approximation for when property names can avoid quoting. * Update snapshots. * Remove re
1 parent 05578e9 commit d02cddc

10 files changed

Lines changed: 39 additions & 40 deletions

File tree

python/src/typechat/_internal/ts_conversion/ts_node_to_string.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,11 @@ def ts_type_to_str(type_node: TypeNode) -> str:
6464
# raise NotImplementedError(f"Unhandled type {type(type_node)}")
6565
assert_never(type_node)
6666

67-
6867
def object_member_to_str(member: PropertyDeclarationNode | IndexSignatureDeclarationNode) -> str:
6968
match member:
7069
case PropertyDeclarationNode(name, is_optional, comment, annotation):
7170
comment = comment_to_str(comment, " ")
72-
if not name.isalnum():
71+
if not name.isidentifier():
7372
name = json.dumps(name)
7473
return f"{comment} {name}{'?' if is_optional else ''}: {ts_type_to_str(annotation)};"
7574
case IndexSignatureDeclarationNode(key_type, value_type):
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Entry point is: 'Derived'
22

33
interface Derived {
4-
"my_attr_1": string;
5-
"my_attr_2": number;
4+
my_attr_1: string;
5+
my_attr_2: number;
66
}

python/tests/__py3.11_snapshots__/test_hello_world/test_generic_alias1.schema.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ interface D extends C<string> {
2222
y: boolean | null;
2323
z?: number[] | null;
2424
other?: IndirectC;
25-
"non_class"?: NonClass;
25+
non_class?: NonClass;
2626
// This comes from later metadata.
27-
"multiple_metadata"?: string;
27+
multiple_metadata?: string;
2828
}
2929

3030
interface NonClass {

python/tests/__py3.12_snapshots__/test_conflicting_names_1/test_conflicting_names_1.schema.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ interface Derived extends C, C {
77
}
88

99
interface C {
10-
"my_attr_2": number;
10+
my_attr_2: number;
1111
}
1212

1313
interface C {
14-
"my_attr_1": string;
14+
my_attr_1: string;
1515
}

python/tests/__py3.12_snapshots__/test_hello_world/test_generic_alias1.schema.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ interface D extends C<string> {
2222
y: boolean | null;
2323
z?: number[] | null;
2424
other?: IndirectC;
25-
"non_class"?: NonClass;
25+
non_class?: NonClass;
2626
// This comes from later metadata.
27-
"multiple_metadata"?: string;
27+
multiple_metadata?: string;
2828
}
2929

3030
interface NonClass {

python/tests/__snapshots__/test_dataclasses/test_data_classes.schema.d.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
// Entry point is: 'Response'
22

33
interface Response {
4-
"attr_1": string;
4+
attr_1: string;
55
// Hello!
6-
"attr_2": number;
7-
"attr_3": string | null;
8-
"attr_4"?: string;
9-
"attr_5"?: string | null;
10-
"attr_6"?: string[];
11-
"attr_7"?: Options;
12-
"_underscore_attr_1"?: number;
6+
attr_2: number;
7+
attr_3: string | null;
8+
attr_4?: string;
9+
attr_5?: string | null;
10+
attr_6?: string[];
11+
attr_7?: Options;
12+
_underscore_attr_1?: number;
1313
}
1414

1515
// TODO: someone add something here.

python/tests/__snapshots__/test_generic_alias_1/test_generic_alias1.schema.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ type FirstOrSecond<T> = First<T> | Second<T>
44

55
interface Second<T> {
66
kind: "second";
7-
"second_attr": T;
7+
second_attr: T;
88
}
99

1010
interface First<T> {
1111
kind: "first";
12-
"first_attr": T;
12+
first_attr: T;
1313
}

python/tests/__snapshots__/test_generic_alias_2/test_generic_alias1.schema.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ type FirstOrSecond<T> = First<T> | Second<T>
88

99
interface Second<T> {
1010
kind: "second";
11-
"second_attr": T;
11+
second_attr: T;
1212
}
1313

1414
interface First<T> {
1515
kind: "first";
16-
"first_attr": T;
16+
first_attr: T;
1717
}

python/tests/__snapshots__/test_tuple_errors_1/test_tuples_2.schema.d.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@
1212
// !!! The tuple type 'tuple[int, ..., int, ...]' is ill-formed. Tuples with an ellipsis can only take the form 'tuple[SomeType, ...]'.
1313

1414
interface TupleContainer {
15-
"empty_tuples_args_1": [any, any];
16-
"empty_tuples_args_2": any[];
17-
"arbitrary_length_1": any[];
18-
"arbitrary_length_2": any[];
19-
"arbitrary_length_3": any[];
20-
"arbitrary_length_4": any[];
21-
"arbitrary_length_5": any[];
22-
"arbitrary_length_6": any[];
15+
empty_tuples_args_1: [any, any];
16+
empty_tuples_args_2: any[];
17+
arbitrary_length_1: any[];
18+
arbitrary_length_2: any[];
19+
arbitrary_length_3: any[];
20+
arbitrary_length_4: any[];
21+
arbitrary_length_5: any[];
22+
arbitrary_length_6: any[];
2323
}
Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
// Entry point is: 'TupleContainer'
22

33
interface TupleContainer {
4-
"empty_tuple": [];
5-
"tuple_1": [number];
6-
"tuple_2": [number, string];
7-
"tuple_3": [number, string];
8-
"arbitrary_length_1": number[];
9-
"arbitrary_length_2": number[];
10-
"arbitrary_length_3": number[];
11-
"arbitrary_length_4": number[];
12-
"arbitrary_length_5": number[] | [number];
13-
"arbitrary_length_6": number[] | [number] | [number, number];
4+
empty_tuple: [];
5+
tuple_1: [number];
6+
tuple_2: [number, string];
7+
tuple_3: [number, string];
8+
arbitrary_length_1: number[];
9+
arbitrary_length_2: number[];
10+
arbitrary_length_3: number[];
11+
arbitrary_length_4: number[];
12+
arbitrary_length_5: number[] | [number];
13+
arbitrary_length_6: number[] | [number] | [number, number];
1414
}

0 commit comments

Comments
 (0)