From 9ecf8db63a725f64afe9aceaff030625be6f9f39 Mon Sep 17 00:00:00 2001 From: Robert Gruen Date: Tue, 24 Feb 2026 15:11:38 -0700 Subject: [PATCH 1/3] Added latest python and node versions to CI. --- .github/workflows/ci.js.yml | 2 +- .github/workflows/ci.python.yml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.js.yml b/.github/workflows/ci.js.yml index 294a58f7..4e1efb1b 100644 --- a/.github/workflows/ci.js.yml +++ b/.github/workflows/ci.js.yml @@ -26,7 +26,7 @@ jobs: strategy: matrix: - node-version: [18.x, 20.x] + node-version: [18.x, 20.x, 22.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: diff --git a/.github/workflows/ci.python.yml b/.github/workflows/ci.python.yml index 93818a23..637e9988 100644 --- a/.github/workflows/ci.python.yml +++ b/.github/workflows/ci.python.yml @@ -21,8 +21,9 @@ jobs: os: - ubuntu-latest python-version: - - '3.11' - '3.12' + - '3.13' + - '3.14' runs-on: ${{ matrix.os }} From e9b9806f2c888af3b7b9f9dbfd80b08c88d63082 Mon Sep 17 00:00:00 2001 From: Robert Gruen Date: Tue, 24 Feb 2026 15:39:07 -0700 Subject: [PATCH 2/3] added 3.13 snapshots --- .github/workflows/ci.python.yml | 1 + .../test_conflicting_names_1.schema.d.ts | 15 ++++++++ .../test_generic_alias1.schema.d.ts | 35 +++++++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 python/tests/__py3.13_snapshots__/test_conflicting_names_1/test_conflicting_names_1.schema.d.ts create mode 100644 python/tests/__py3.13_snapshots__/test_hello_world/test_generic_alias1.schema.d.ts diff --git a/.github/workflows/ci.python.yml b/.github/workflows/ci.python.yml index 637e9988..903e9d21 100644 --- a/.github/workflows/ci.python.yml +++ b/.github/workflows/ci.python.yml @@ -21,6 +21,7 @@ jobs: os: - ubuntu-latest python-version: + - '3.11' - '3.12' - '3.13' - '3.14' diff --git a/python/tests/__py3.13_snapshots__/test_conflicting_names_1/test_conflicting_names_1.schema.d.ts b/python/tests/__py3.13_snapshots__/test_conflicting_names_1/test_conflicting_names_1.schema.d.ts new file mode 100644 index 00000000..1e14c802 --- /dev/null +++ b/python/tests/__py3.13_snapshots__/test_conflicting_names_1/test_conflicting_names_1.schema.d.ts @@ -0,0 +1,15 @@ +// Entry point is: 'Derived' + +// ERRORS: +// !!! Cannot create a schema using two types with the same name. C conflicts between .C'> and .C'> + +interface Derived extends C, C { +} + +interface C { + my_attr_2: number; +} + +interface C { + my_attr_1: string; +} diff --git a/python/tests/__py3.13_snapshots__/test_hello_world/test_generic_alias1.schema.d.ts b/python/tests/__py3.13_snapshots__/test_hello_world/test_generic_alias1.schema.d.ts new file mode 100644 index 00000000..00de4634 --- /dev/null +++ b/python/tests/__py3.13_snapshots__/test_hello_world/test_generic_alias1.schema.d.ts @@ -0,0 +1,35 @@ +// Entry point is: 'D_or_E' + +type D_or_E = D | E + +// This is the definition of the class E. +interface E extends C { + tag: "E"; + next: this | null; +} + +// This is a generic class named C. +interface C { + x?: T; + c: C; +} + +// This is the definition of the class D. +interface D extends C { + tag?: "D"; + // This comes from string metadata + // within an Annotated hint. + y: boolean | null; + z?: number[] | null; + other?: IndirectC; + non_class?: NonClass; + // This comes from later metadata. + multiple_metadata?: string; +} + +interface NonClass { + a: number; + "my-dict": Record; +} + +type IndirectC = C From 4d0902de3fbc97f91cec8f5275d855450b6f5469 Mon Sep 17 00:00:00 2001 From: Robert Gruen Date: Tue, 24 Feb 2026 15:51:05 -0700 Subject: [PATCH 3/3] added 3.14 snapshots --- .../test_conflicting_names_1.schema.d.ts | 15 ++++++++ .../test_generic_alias1.schema.d.ts | 35 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 python/tests/__py3.14_snapshots__/test_conflicting_names_1/test_conflicting_names_1.schema.d.ts create mode 100644 python/tests/__py3.14_snapshots__/test_hello_world/test_generic_alias1.schema.d.ts diff --git a/python/tests/__py3.14_snapshots__/test_conflicting_names_1/test_conflicting_names_1.schema.d.ts b/python/tests/__py3.14_snapshots__/test_conflicting_names_1/test_conflicting_names_1.schema.d.ts new file mode 100644 index 00000000..1e14c802 --- /dev/null +++ b/python/tests/__py3.14_snapshots__/test_conflicting_names_1/test_conflicting_names_1.schema.d.ts @@ -0,0 +1,15 @@ +// Entry point is: 'Derived' + +// ERRORS: +// !!! Cannot create a schema using two types with the same name. C conflicts between .C'> and .C'> + +interface Derived extends C, C { +} + +interface C { + my_attr_2: number; +} + +interface C { + my_attr_1: string; +} diff --git a/python/tests/__py3.14_snapshots__/test_hello_world/test_generic_alias1.schema.d.ts b/python/tests/__py3.14_snapshots__/test_hello_world/test_generic_alias1.schema.d.ts new file mode 100644 index 00000000..00de4634 --- /dev/null +++ b/python/tests/__py3.14_snapshots__/test_hello_world/test_generic_alias1.schema.d.ts @@ -0,0 +1,35 @@ +// Entry point is: 'D_or_E' + +type D_or_E = D | E + +// This is the definition of the class E. +interface E extends C { + tag: "E"; + next: this | null; +} + +// This is a generic class named C. +interface C { + x?: T; + c: C; +} + +// This is the definition of the class D. +interface D extends C { + tag?: "D"; + // This comes from string metadata + // within an Annotated hint. + y: boolean | null; + z?: number[] | null; + other?: IndirectC; + non_class?: NonClass; + // This comes from later metadata. + multiple_metadata?: string; +} + +interface NonClass { + a: number; + "my-dict": Record; +} + +type IndirectC = C