From d7c265b3362d68a4796f08f852745a3fd300d9ca Mon Sep 17 00:00:00 2001 From: Carlos Herrero <26092748+hbcarlos@users.noreply.github.com> Date: Wed, 12 Jul 2023 17:58:15 +0200 Subject: [PATCH 01/15] Migrate RefResolver to referencing.Registry --- jupyter_events/schema.py | 11 ++++++----- jupyter_events/validators.py | 16 +++++++++++----- pyproject.toml | 1 + 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/jupyter_events/schema.py b/jupyter_events/schema.py index 7665f20..6d0c8c0 100644 --- a/jupyter_events/schema.py +++ b/jupyter_events/schema.py @@ -3,7 +3,8 @@ from pathlib import Path, PurePath from typing import Optional, Type, Union -from jsonschema import FormatChecker, RefResolver, validators +from jsonschema import FormatChecker, validators +from referencing import Registry try: from jsonschema.protocols import Validator @@ -55,8 +56,8 @@ class EventSchema: any schema registered here follows the expected form of Jupyter Events. - resolver: - RefResolver for nested JSON schema references. + registry: + Registry for nested JSON schema references. """ def __init__( @@ -64,14 +65,14 @@ def __init__( schema: SchemaType, validator_class: Type[Validator] = validators.Draft7Validator, # type:ignore[assignment] format_checker: FormatChecker = draft7_format_checker, - resolver: Optional[RefResolver] = None, + registry: Optional[Registry] = None, ): """Initialize an event schema.""" _schema = self._load_schema(schema) # Validate the schema against Jupyter Events metaschema. validate_schema(_schema) # Create a validator for this schema - self._validator = validator_class(_schema, resolver=resolver, format_checker=format_checker) + self._validator = validator_class(_schema, registry=registry, format_checker=format_checker) self._schema = _schema def __repr__(self): diff --git a/jupyter_events/validators.py b/jupyter_events/validators.py index 278db52..a19597b 100644 --- a/jupyter_events/validators.py +++ b/jupyter_events/validators.py @@ -2,7 +2,9 @@ import pathlib import jsonschema -from jsonschema import Draft7Validator, RefResolver, ValidationError +from jsonschema import Draft7Validator, ValidationError +from referencing import Registry +from referencing.jsonschema import DRAFT7 from . import yaml @@ -30,19 +32,23 @@ EVENT_CORE_SCHEMA["$id"]: EVENT_CORE_SCHEMA, } -METASCHEMA_RESOLVER = RefResolver( - base_uri=EVENT_METASCHEMA["$id"], referrer=EVENT_METASCHEMA, store=SCHEMA_STORE +METASCHEMA_REGISTRY = Registry().with_resources( + [ + (EVENT_METASCHEMA["$id"], DRAFT7.create_resource(EVENT_METASCHEMA)), + (PROPERTY_METASCHEMA["$id"], DRAFT7.create_resource(PROPERTY_METASCHEMA)), + (EVENT_CORE_SCHEMA["$id"], DRAFT7.create_resource(EVENT_CORE_SCHEMA)) + ] ) JUPYTER_EVENTS_SCHEMA_VALIDATOR = Draft7Validator( schema=EVENT_METASCHEMA, - resolver=METASCHEMA_RESOLVER, + registry=METASCHEMA_REGISTRY, format_checker=draft7_format_checker, ) JUPYTER_EVENTS_CORE_VALIDATOR = Draft7Validator( schema=EVENT_CORE_SCHEMA, - resolver=METASCHEMA_RESOLVER, + registry=METASCHEMA_REGISTRY, format_checker=draft7_format_checker, ) diff --git a/pyproject.toml b/pyproject.toml index 72a2dda..2b18305 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,6 +23,7 @@ classifiers = [ "Programming Language :: Python :: 3", ] dependencies = [ + "referencing", "jsonschema[format-nongpl,format_nongpl]>=3.2.0", "python-json-logger>=2.0.4", "pyyaml>=5.3", From bd97003a7ed35282179b96357b873f6c27ffc03b Mon Sep 17 00:00:00 2001 From: Carlos Herrero <26092748+hbcarlos@users.noreply.github.com> Date: Mon, 17 Jul 2023 15:27:05 +0200 Subject: [PATCH 02/15] Adds a default registry --- jupyter_events/schema.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/jupyter_events/schema.py b/jupyter_events/schema.py index 6d0c8c0..55765c5 100644 --- a/jupyter_events/schema.py +++ b/jupyter_events/schema.py @@ -5,6 +5,7 @@ from jsonschema import FormatChecker, validators from referencing import Registry +from referencing.jsonschema import DRAFT7 try: from jsonschema.protocols import Validator @@ -71,6 +72,10 @@ def __init__( _schema = self._load_schema(schema) # Validate the schema against Jupyter Events metaschema. validate_schema(_schema) + + if registry is None: + registry = Registry().with_resource(_schema["$id"], DRAFT7.create_resource(_schema)) + # Create a validator for this schema self._validator = validator_class(_schema, registry=registry, format_checker=format_checker) self._schema = _schema From d16ba81b7f1483abf4277411d3a8811d00db1f45 Mon Sep 17 00:00:00 2001 From: Carlos Herrero <26092748+hbcarlos@users.noreply.github.com> Date: Tue, 18 Jul 2023 15:24:27 +0200 Subject: [PATCH 03/15] Bump minimum version --- jupyter_events/validators.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/jupyter_events/validators.py b/jupyter_events/validators.py index a19597b..4d46482 100644 --- a/jupyter_events/validators.py +++ b/jupyter_events/validators.py @@ -32,7 +32,7 @@ EVENT_CORE_SCHEMA["$id"]: EVENT_CORE_SCHEMA, } -METASCHEMA_REGISTRY = Registry().with_resources( +METASCHEMA_REGISTRY = Registry().with_resources( # type:ignore [ (EVENT_METASCHEMA["$id"], DRAFT7.create_resource(EVENT_METASCHEMA)), (PROPERTY_METASCHEMA["$id"], DRAFT7.create_resource(PROPERTY_METASCHEMA)), diff --git a/pyproject.toml b/pyproject.toml index 2b18305..a10bb37 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,7 +24,7 @@ classifiers = [ ] dependencies = [ "referencing", - "jsonschema[format-nongpl,format_nongpl]>=3.2.0", + "jsonschema[format-nongpl,format_nongpl]>=4.18.0", "python-json-logger>=2.0.4", "pyyaml>=5.3", "traitlets>=5.3", From 219c0ea82ea21e5749fbb13fa5213df159c0bec5 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 18 Jul 2023 13:24:58 +0000 Subject: [PATCH 04/15] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- jupyter_events/validators.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jupyter_events/validators.py b/jupyter_events/validators.py index 4d46482..6f61963 100644 --- a/jupyter_events/validators.py +++ b/jupyter_events/validators.py @@ -32,11 +32,11 @@ EVENT_CORE_SCHEMA["$id"]: EVENT_CORE_SCHEMA, } -METASCHEMA_REGISTRY = Registry().with_resources( # type:ignore +METASCHEMA_REGISTRY = Registry().with_resources( # type:ignore [ (EVENT_METASCHEMA["$id"], DRAFT7.create_resource(EVENT_METASCHEMA)), (PROPERTY_METASCHEMA["$id"], DRAFT7.create_resource(PROPERTY_METASCHEMA)), - (EVENT_CORE_SCHEMA["$id"], DRAFT7.create_resource(EVENT_CORE_SCHEMA)) + (EVENT_CORE_SCHEMA["$id"], DRAFT7.create_resource(EVENT_CORE_SCHEMA)), ] ) From 33e27182781c5c24f46832bd9c45ac38f7f59ed6 Mon Sep 17 00:00:00 2001 From: Carlos Herrero <26092748+hbcarlos@users.noreply.github.com> Date: Tue, 18 Jul 2023 15:37:20 +0200 Subject: [PATCH 05/15] Ignore types --- jupyter_events/schema.py | 2 +- jupyter_events/validators.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/jupyter_events/schema.py b/jupyter_events/schema.py index 55765c5..720ea29 100644 --- a/jupyter_events/schema.py +++ b/jupyter_events/schema.py @@ -77,7 +77,7 @@ def __init__( registry = Registry().with_resource(_schema["$id"], DRAFT7.create_resource(_schema)) # Create a validator for this schema - self._validator = validator_class(_schema, registry=registry, format_checker=format_checker) + self._validator = validator_class(_schema, registry=registry, format_checker=format_checker) # type: ignore self._schema = _schema def __repr__(self): diff --git a/jupyter_events/validators.py b/jupyter_events/validators.py index 6f61963..ecf9e7d 100644 --- a/jupyter_events/validators.py +++ b/jupyter_events/validators.py @@ -40,13 +40,13 @@ ] ) -JUPYTER_EVENTS_SCHEMA_VALIDATOR = Draft7Validator( +JUPYTER_EVENTS_SCHEMA_VALIDATOR = Draft7Validator( # type: ignore schema=EVENT_METASCHEMA, registry=METASCHEMA_REGISTRY, format_checker=draft7_format_checker, ) -JUPYTER_EVENTS_CORE_VALIDATOR = Draft7Validator( +JUPYTER_EVENTS_CORE_VALIDATOR = Draft7Validator( # type: ignore schema=EVENT_CORE_SCHEMA, registry=METASCHEMA_REGISTRY, format_checker=draft7_format_checker, From cd9d91cddb64adf925302afa600db59cd8e9cc9a Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 18 Jul 2023 13:37:53 +0000 Subject: [PATCH 06/15] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- jupyter_events/schema.py | 2 +- jupyter_events/validators.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/jupyter_events/schema.py b/jupyter_events/schema.py index 720ea29..d9b8c03 100644 --- a/jupyter_events/schema.py +++ b/jupyter_events/schema.py @@ -77,7 +77,7 @@ def __init__( registry = Registry().with_resource(_schema["$id"], DRAFT7.create_resource(_schema)) # Create a validator for this schema - self._validator = validator_class(_schema, registry=registry, format_checker=format_checker) # type: ignore + self._validator = validator_class(_schema, registry=registry, format_checker=format_checker) # type: ignore self._schema = _schema def __repr__(self): diff --git a/jupyter_events/validators.py b/jupyter_events/validators.py index ecf9e7d..dbeb9a5 100644 --- a/jupyter_events/validators.py +++ b/jupyter_events/validators.py @@ -40,13 +40,13 @@ ] ) -JUPYTER_EVENTS_SCHEMA_VALIDATOR = Draft7Validator( # type: ignore +JUPYTER_EVENTS_SCHEMA_VALIDATOR = Draft7Validator( # type: ignore schema=EVENT_METASCHEMA, registry=METASCHEMA_REGISTRY, format_checker=draft7_format_checker, ) -JUPYTER_EVENTS_CORE_VALIDATOR = Draft7Validator( # type: ignore +JUPYTER_EVENTS_CORE_VALIDATOR = Draft7Validator( # type: ignore schema=EVENT_CORE_SCHEMA, registry=METASCHEMA_REGISTRY, format_checker=draft7_format_checker, From b18846281e0142832b3549db8bb5dac6d6960d4c Mon Sep 17 00:00:00 2001 From: Carlos Herrero <26092748+hbcarlos@users.noreply.github.com> Date: Fri, 28 Jul 2023 11:28:09 +0200 Subject: [PATCH 07/15] Adds suggestions Co-authored-by: Julian Berman --- jupyter_events/schema.py | 4 ++-- jupyter_events/validators.py | 9 ++------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/jupyter_events/schema.py b/jupyter_events/schema.py index d9b8c03..497adb5 100644 --- a/jupyter_events/schema.py +++ b/jupyter_events/schema.py @@ -4,7 +4,7 @@ from typing import Optional, Type, Union from jsonschema import FormatChecker, validators -from referencing import Registry +from referencing import Registry, Resource from referencing.jsonschema import DRAFT7 try: @@ -74,7 +74,7 @@ def __init__( validate_schema(_schema) if registry is None: - registry = Registry().with_resource(_schema["$id"], DRAFT7.create_resource(_schema)) + registry = DRAFT7.create_resource(_schema) @ Registry() # Create a validator for this schema self._validator = validator_class(_schema, registry=registry, format_checker=format_checker) # type: ignore diff --git a/jupyter_events/validators.py b/jupyter_events/validators.py index dbeb9a5..3d86a12 100644 --- a/jupyter_events/validators.py +++ b/jupyter_events/validators.py @@ -32,13 +32,8 @@ EVENT_CORE_SCHEMA["$id"]: EVENT_CORE_SCHEMA, } -METASCHEMA_REGISTRY = Registry().with_resources( # type:ignore - [ - (EVENT_METASCHEMA["$id"], DRAFT7.create_resource(EVENT_METASCHEMA)), - (PROPERTY_METASCHEMA["$id"], DRAFT7.create_resource(PROPERTY_METASCHEMA)), - (EVENT_CORE_SCHEMA["$id"], DRAFT7.create_resource(EVENT_CORE_SCHEMA)), - ] -) +resources = [DRAFT7.create_resource(each) for each in (EVENT_METASCHEMA, PROPERTY_METASCHEMA, EVENT_CORE_SCHEMA)] +METASCHEMA_REGISTRY = resources @ Registry() JUPYTER_EVENTS_SCHEMA_VALIDATOR = Draft7Validator( # type: ignore schema=EVENT_METASCHEMA, From 289ad1c7372f548aa94f5f888d8f6da981fa9fb3 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 28 Jul 2023 09:28:38 +0000 Subject: [PATCH 08/15] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- jupyter_events/schema.py | 2 +- jupyter_events/validators.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/jupyter_events/schema.py b/jupyter_events/schema.py index 497adb5..187bc8e 100644 --- a/jupyter_events/schema.py +++ b/jupyter_events/schema.py @@ -4,7 +4,7 @@ from typing import Optional, Type, Union from jsonschema import FormatChecker, validators -from referencing import Registry, Resource +from referencing import Registry from referencing.jsonschema import DRAFT7 try: diff --git a/jupyter_events/validators.py b/jupyter_events/validators.py index 3d86a12..97df45f 100644 --- a/jupyter_events/validators.py +++ b/jupyter_events/validators.py @@ -32,7 +32,10 @@ EVENT_CORE_SCHEMA["$id"]: EVENT_CORE_SCHEMA, } -resources = [DRAFT7.create_resource(each) for each in (EVENT_METASCHEMA, PROPERTY_METASCHEMA, EVENT_CORE_SCHEMA)] +resources = [ + DRAFT7.create_resource(each) + for each in (EVENT_METASCHEMA, PROPERTY_METASCHEMA, EVENT_CORE_SCHEMA) +] METASCHEMA_REGISTRY = resources @ Registry() JUPYTER_EVENTS_SCHEMA_VALIDATOR = Draft7Validator( # type: ignore From 9caa2d305f518c270f34c98cfe28c389fc706c33 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 28 Jul 2023 22:04:55 -0500 Subject: [PATCH 09/15] bump supported pythons --- .github/workflows/python-tests.yml | 4 ++-- pyproject.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml index c570293..7bf0add 100644 --- a/.github/workflows/python-tests.yml +++ b/.github/workflows/python-tests.yml @@ -18,7 +18,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] - python-version: ["3.7", "3.11"] + python-version: ["3.8", "3.12"] include: - os: windows-latest python-version: "3.9" @@ -27,7 +27,7 @@ jobs: - os: ubuntu-latest python-version: "3.10" - os: macos-latest - python-version: "3.8" + python-version: "3.11" steps: - uses: actions/checkout@v3 - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 diff --git a/pyproject.toml b/pyproject.toml index a10bb37..2c35fcc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "hatchling.build" name = "jupyter-events" description = "Jupyter Event System library" readme = "README.md" -requires-python = ">=3.7" +requires-python = ">=3.8" authors = [ { name = "Jupyter Development Team", email = "jupyter@googlegroups.com" }, ] From 79200aa01b8931d140c4faa9b6a5892a67a7ea10 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 28 Jul 2023 22:12:30 -0500 Subject: [PATCH 10/15] adjust tests for python 3.12 --- tests/test_logger.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/tests/test_logger.py b/tests/test_logger.py index 81f9c22..398ab29 100644 --- a/tests/test_logger.py +++ b/tests/test_logger.py @@ -158,12 +158,15 @@ def test_emit(): assert "__timestamp__" in event_capsule # Remove timestamp from capsule when checking equality, since it is gonna vary del event_capsule["__timestamp__"] - assert event_capsule == { + expected = { "__schema__": "http://test/test", "__schema_version__": 1, "__metadata_version__": 1, "something": "blah", } + if sys.version_info >= (3, 12): + expected["taskName"] = None + assert event_capsule == expected def test_message_field(): @@ -411,24 +414,30 @@ def test_unique_logger_instances(): assert "__timestamp__" in event_capsule0 # Remove timestamp from capsule when checking equality, since it is gonna vary del event_capsule0["__timestamp__"] - assert event_capsule0 == { + expected = { "__schema__": "http://test/test0", "__schema_version__": 1, "__metadata_version__": 1, "something": "blah", } + if sys.version_info >= (3, 12): + expected["taskName"] = None + assert event_capsule0 == expected event_capsule1 = json.loads(output1.getvalue()) assert "__timestamp__" in event_capsule1 # Remove timestamp from capsule when checking equality, since it is gonna vary del event_capsule1["__timestamp__"] - assert event_capsule1 == { + expected = { "__schema__": "http://test/test1", "__schema_version__": 1, "__metadata_version__": 1, "something": "blah", } + if sys.version_info >= (3, 12): + expected["taskName"] = None + assert event_capsule1 == expected def test_register_duplicate_schemas(): From cac661de3a3dcac5caabeddae35054b367255e1f Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 28 Jul 2023 22:13:24 -0500 Subject: [PATCH 11/15] add missing import --- tests/test_logger.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_logger.py b/tests/test_logger.py index 398ab29..344458c 100644 --- a/tests/test_logger.py +++ b/tests/test_logger.py @@ -1,6 +1,7 @@ import io import json import logging +import sys from datetime import datetime, timedelta, timezone from unittest.mock import MagicMock From 3a4e438316b51f85d78064ecccca55140b9103b0 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 28 Jul 2023 22:15:46 -0500 Subject: [PATCH 12/15] lint --- jupyter_events/validators.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/jupyter_events/validators.py b/jupyter_events/validators.py index 97df45f..0082e8e 100644 --- a/jupyter_events/validators.py +++ b/jupyter_events/validators.py @@ -1,4 +1,5 @@ """Event validators.""" +from __future__ import annotations import pathlib import jsonschema @@ -36,7 +37,7 @@ DRAFT7.create_resource(each) for each in (EVENT_METASCHEMA, PROPERTY_METASCHEMA, EVENT_CORE_SCHEMA) ] -METASCHEMA_REGISTRY = resources @ Registry() +METASCHEMA_REGISTRY: list = resources @ Registry() JUPYTER_EVENTS_SCHEMA_VALIDATOR = Draft7Validator( # type: ignore schema=EVENT_METASCHEMA, From 77b1c6d5486c69a5cefc2a6e0cab5beadda8f99a Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 29 Jul 2023 03:16:01 +0000 Subject: [PATCH 13/15] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- jupyter_events/validators.py | 1 + 1 file changed, 1 insertion(+) diff --git a/jupyter_events/validators.py b/jupyter_events/validators.py index 0082e8e..5a8419c 100644 --- a/jupyter_events/validators.py +++ b/jupyter_events/validators.py @@ -1,5 +1,6 @@ """Event validators.""" from __future__ import annotations + import pathlib import jsonschema From e2d8ee899abc5955b7beb05e820459b81dde2bbc Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 28 Jul 2023 22:18:13 -0500 Subject: [PATCH 14/15] lint --- jupyter_events/validators.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/jupyter_events/validators.py b/jupyter_events/validators.py index 5a8419c..31a7074 100644 --- a/jupyter_events/validators.py +++ b/jupyter_events/validators.py @@ -1,6 +1,4 @@ """Event validators.""" -from __future__ import annotations - import pathlib import jsonschema @@ -38,7 +36,7 @@ DRAFT7.create_resource(each) for each in (EVENT_METASCHEMA, PROPERTY_METASCHEMA, EVENT_CORE_SCHEMA) ] -METASCHEMA_REGISTRY: list = resources @ Registry() +METASCHEMA_REGISTRY: Registry = resources @ Registry() JUPYTER_EVENTS_SCHEMA_VALIDATOR = Draft7Validator( # type: ignore schema=EVENT_METASCHEMA, From cd9a5edfa29d65c854628377df0291591d1d0bc7 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 28 Jul 2023 22:21:54 -0500 Subject: [PATCH 15/15] more test fixes --- tests/test_logger.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/test_logger.py b/tests/test_logger.py index 344458c..17d8db9 100644 --- a/tests/test_logger.py +++ b/tests/test_logger.py @@ -206,13 +206,16 @@ def test_message_field(): assert "__timestamp__" in event_capsule # Remove timestamp from capsule when checking equality, since it is gonna vary del event_capsule["__timestamp__"] - assert event_capsule == { + expected = { "__schema__": "http://test/test", "__schema_version__": 1, "__metadata_version__": 1, "something": "blah", "message": "a message was seen", } + if sys.version_info >= (3, 12): + expected["taskName"] = None + assert event_capsule == expected def test_nested_message_field(): @@ -253,12 +256,15 @@ def test_nested_message_field(): assert "__timestamp__" in event_capsule # Remove timestamp from capsule when checking equality, since it is gonna vary del event_capsule["__timestamp__"] - assert event_capsule == { + expected = { "__schema__": "http://test/test", "__schema_version__": 1, "__metadata_version__": 1, "thing": {"message": "a nested message was seen"}, } + if sys.version_info >= (3, 12): + expected["taskName"] = None + assert event_capsule == expected def test_register_event_schema(tmp_path):