Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-jupyter-events for openSUSE:Factory checked in at 2023-07-30 20:58:25 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-jupyter-events (Old) and /work/SRC/openSUSE:Factory/.python-jupyter-events.new.32662 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jupyter-events" Sun Jul 30 20:58:25 2023 rev:5 rq:1101394 version:0.6.3 Changes: -------- --- /work/SRC/openSUSE:Factory/python-jupyter-events/python-jupyter-events.changes 2023-07-13 17:19:23.305414667 +0200 +++ /work/SRC/openSUSE:Factory/.python-jupyter-events.new.32662/python-jupyter-events.changes 2023-07-30 20:58:33.255498377 +0200 @@ -1,0 +2,16 @@ +Sun Jul 30 15:30:25 UTC 2023 - Ben Greiner <c...@bnavigator.de> + +- Add jupyter_events-pr80-jsonschema-referencing.patch + * gh#jupyter/jupyter_events#80 + * Avoid test suite errors in consuming packages because of + jsonschema DeprecationWarning +- Remove workaround for rpmlint parser crash + +------------------------------------------------------------------- +Wed Jul 19 20:47:32 UTC 2023 - Ben Greiner <c...@bnavigator.de> + +- Unpin jsonschema: nbformat has been fixed, the jupyter ecosystem + can work with jsonschema 4.18 now (asdf-format is still blocked + but not on the dependency chain for jupyter packages). + +------------------------------------------------------------------- New: ---- jupyter_events-pr80-jsonschema-referencing.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-jupyter-events.spec ++++++ --- /var/tmp/diff_new_pack.RwXRIz/_old 2023-07-30 20:58:33.935502414 +0200 +++ /var/tmp/diff_new_pack.RwXRIz/_new 2023-07-30 20:58:33.939502438 +0200 @@ -28,7 +28,9 @@ License: BSD-3-Clause URL: https://github.com/jupyter/jupyter_events Source: https://files.pythonhosted.org/packages/source/j/jupyter_events/jupyter_events-%{version}.tar.gz -BuildRequires: %{python_module base >= 3.7} +# PATCH-FIX-UPSTREAM jupyter_events-pr80-jsonschema-referencing.patch gh#jupyter/jupyter_events#80 +Patch0: jupyter_events-pr80-jsonschema-referencing.patch +BuildRequires: %{python_module base >= 3.8} BuildRequires: %{python_module hatchling >= 1.5} BuildRequires: %{python_module pip} BuildRequires: alts @@ -36,22 +38,24 @@ BuildRequires: python-rpm-macros Requires: alts Requires: python-PyYAML >= 5.3 +Requires: python-jsonschema-format-nongpl >= 4.18 Requires: python-python-json-logger >= 2.0.4 +Requires: python-referencing Requires: python-rfc3339-validator Requires: python-rfc3986-validator >= 0.1.1 Requires: python-traitlets >= 5.3 -Requires: (python-jsonschema-format-nongpl >= 3.2.0 with python-jsonschema-format-nongpl < 4.18) Provides: python-jupyter_events = %{version}-%{release} BuildArch: noarch # SECTION test requirements BuildRequires: %{python_module rfc3339-validator} BuildRequires: %{python_module PyYAML >= 5.3} BuildRequires: %{python_module click} -BuildRequires: %{python_module jsonschema-format-nongpl >= 3.2.0 with %python-jsonschema-format-nongpl < 4.18} +BuildRequires: %{python_module jsonschema-format-nongpl >= 4.18} BuildRequires: %{python_module pytest >= 7} BuildRequires: %{python_module pytest-asyncio >= 0.19.0} BuildRequires: %{python_module pytest-console-scripts} BuildRequires: %{python_module python-json-logger >= 2.0.4} +BuildRequires: %{python_module referencing} BuildRequires: %{python_module rfc3986-validator >= 0.1.1} BuildRequires: %{python_module rich} BuildRequires: %{python_module traitlets >= 5.3} @@ -67,8 +71,7 @@ %prep %autosetup -p1 -n jupyter_events-%{version} -# gh#pypa/hatch#801, gh#rpm-software-management/rpmlint#1043, gh#jupyter/jupyter_events#70 -sed -i -e 's/--color=yes//' -e '/jsonschema/ s/\[.*\]//' pyproject.toml +sed -i -e 's/--color=yes//' pyproject.toml %build %pyproject_wheel ++++++ jupyter_events-pr80-jsonschema-referencing.patch ++++++ >From d7c265b3362d68a4796f08f852745a3fd300d9ca Mon Sep 17 00:00:00 2001 From: Carlos Herrero <26092748+hbcar...@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(-) Index: jupyter_events-0.6.3/jupyter_events/schema.py =================================================================== --- jupyter_events-0.6.3.orig/jupyter_events/schema.py +++ jupyter_events-0.6.3/jupyter_events/schema.py @@ -3,7 +3,9 @@ import json 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 +from referencing.jsonschema import DRAFT7 try: from jsonschema.protocols import Validator @@ -55,8 +57,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 +66,18 @@ class EventSchema: 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) + + if registry is None: + registry = DRAFT7.create_resource(_schema) @ Registry() + # 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) # type: ignore self._schema = _schema def __repr__(self): Index: jupyter_events-0.6.3/jupyter_events/validators.py =================================================================== --- jupyter_events-0.6.3.orig/jupyter_events/validators.py +++ jupyter_events-0.6.3/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 draft7_format_checker = ( Draft7Validator.FORMAT_CHECKER @@ -29,19 +31,21 @@ SCHEMA_STORE = { EVENT_CORE_SCHEMA["$id"]: EVENT_CORE_SCHEMA, } -METASCHEMA_RESOLVER = RefResolver( - base_uri=EVENT_METASCHEMA["$id"], referrer=EVENT_METASCHEMA, store=SCHEMA_STORE -) +resources = [ + DRAFT7.create_resource(each) + for each in (EVENT_METASCHEMA, PROPERTY_METASCHEMA, EVENT_CORE_SCHEMA) +] +METASCHEMA_REGISTRY: Registry = resources @ Registry() -JUPYTER_EVENTS_SCHEMA_VALIDATOR = Draft7Validator( +JUPYTER_EVENTS_SCHEMA_VALIDATOR = Draft7Validator( # type: ignore schema=EVENT_METASCHEMA, - resolver=METASCHEMA_RESOLVER, + registry=METASCHEMA_REGISTRY, format_checker=draft7_format_checker, ) -JUPYTER_EVENTS_CORE_VALIDATOR = Draft7Validator( +JUPYTER_EVENTS_CORE_VALIDATOR = Draft7Validator( # type: ignore schema=EVENT_CORE_SCHEMA, - resolver=METASCHEMA_RESOLVER, + registry=METASCHEMA_REGISTRY, format_checker=draft7_format_checker, ) Index: jupyter_events-0.6.3/pyproject.toml =================================================================== --- jupyter_events-0.6.3.orig/pyproject.toml +++ jupyter_events-0.6.3/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 = "jupy...@googlegroups.com" }, ] @@ -23,7 +23,8 @@ classifiers = [ "Programming Language :: Python :: 3", ] dependencies = [ - "jsonschema[format-nongpl,format_nongpl]>=3.2.0", + "referencing", + "jsonschema[format-nongpl,format_nongpl]>=4.18.0", "python-json-logger>=2.0.4", "pyyaml>=5.3", "traitlets>=5.3", Index: jupyter_events-0.6.3/.github/workflows/python-tests.yml =================================================================== --- jupyter_events-0.6.3.orig/.github/workflows/python-tests.yml +++ jupyter_events-0.6.3/.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 Index: jupyter_events-0.6.3/tests/test_logger.py =================================================================== --- jupyter_events-0.6.3.orig/tests/test_logger.py +++ jupyter_events-0.6.3/tests/test_logger.py @@ -1,6 +1,7 @@ import io import json import logging +import sys from datetime import datetime, timedelta from unittest.mock import MagicMock @@ -158,12 +159,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_register_event_schema(tmp_path): @@ -320,24 +324,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():