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 2024-04-02 16:40:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jupyter-events (Old)
 and      /work/SRC/openSUSE:Factory/.python-jupyter-events.new.1905 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-jupyter-events"

Tue Apr  2 16:40:35 2024 rev:9 rq:1163573 version:0.10.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-jupyter-events/python-jupyter-events.changes  
    2024-02-06 16:40:29.379941981 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-jupyter-events.new.1905/python-jupyter-events.changes
    2024-04-02 16:40:57.666021956 +0200
@@ -1,0 +2,7 @@
+Fri Mar 29 18:22:29 UTC 2024 - Ben Greiner <c...@bnavigator.de>
+
+- Update to 0.10.0
+  * Enable adding listeners to event before the event is registered
+    #97 (@Zsailer)
+
+-------------------------------------------------------------------

Old:
----
  jupyter_events-0.9.0.tar.gz

New:
----
  jupyter_events-0.10.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-jupyter-events.spec ++++++
--- /var/tmp/diff_new_pack.KwkkSl/_old  2024-04-02 16:40:58.458051144 +0200
+++ /var/tmp/diff_new_pack.KwkkSl/_new  2024-04-02 16:40:58.462051291 +0200
@@ -24,7 +24,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-jupyter-events
-Version:        0.9.0
+Version:        0.10.0
 Release:        0
 Summary:        Jupyter Event System library
 License:        BSD-3-Clause

++++++ jupyter_events-0.9.0.tar.gz -> jupyter_events-0.10.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_events-0.9.0/.github/dependabot.yml 
new/jupyter_events-0.10.0/.github/dependabot.yml
--- old/jupyter_events-0.9.0/.github/dependabot.yml     2020-02-02 
01:00:00.000000000 +0100
+++ new/jupyter_events-0.10.0/.github/dependabot.yml    2020-02-02 
01:00:00.000000000 +0100
@@ -4,7 +4,15 @@
     directory: "/"
     schedule:
       interval: "weekly"
+    groups:
+      actions:
+        patterns:
+          - "*"
   - package-ecosystem: "pip"
     directory: "/"
     schedule:
       interval: "weekly"
+    groups:
+      actions:
+        patterns:
+          - "*"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_events-0.9.0/.github/workflows/prep-release.yml 
new/jupyter_events-0.10.0/.github/workflows/prep-release.yml
--- old/jupyter_events-0.9.0/.github/workflows/prep-release.yml 2020-02-02 
01:00:00.000000000 +0100
+++ new/jupyter_events-0.10.0/.github/workflows/prep-release.yml        
2020-02-02 01:00:00.000000000 +0100
@@ -12,6 +12,10 @@
       post_version_spec:
         description: "Post Version Specifier"
         required: false
+      silent:
+        description: "Set a placeholder in the changelog and don't publish the 
release."
+        required: false
+        type: boolean
       since:
         description: "Use PRs with activity since this date or git reference"
         required: false
@@ -22,6 +26,8 @@
 jobs:
   prep_release:
     runs-on: ubuntu-latest
+    permissions:
+      contents: write
     steps:
       - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
 
@@ -29,8 +35,9 @@
         id: prep-release
         uses: jupyter-server/jupyter_releaser/.github/actions/prep-release@v2
         with:
-          token: ${{ secrets.ADMIN_GITHUB_TOKEN }}
+          token: ${{ secrets.GITHUB_TOKEN }}
           version_spec: ${{ github.event.inputs.version_spec }}
+          silent: ${{ github.event.inputs.silent }}
           post_version_spec: ${{ github.event.inputs.post_version_spec }}
           target: ${{ github.event.inputs.target }}
           branch: ${{ github.event.inputs.branch }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_events-0.9.0/.github/workflows/publish-changelog.yml 
new/jupyter_events-0.10.0/.github/workflows/publish-changelog.yml
--- old/jupyter_events-0.9.0/.github/workflows/publish-changelog.yml    
1970-01-01 01:00:00.000000000 +0100
+++ new/jupyter_events-0.10.0/.github/workflows/publish-changelog.yml   
2020-02-02 01:00:00.000000000 +0100
@@ -0,0 +1,34 @@
+name: "Publish Changelog"
+on:
+  release:
+    types: [published]
+
+  workflow_dispatch:
+    inputs:
+      branch:
+        description: "The branch to target"
+        required: false
+
+jobs:
+  publish_changelog:
+    runs-on: ubuntu-latest
+    environment: release
+    steps:
+      - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
+
+      - uses: actions/create-github-app-token@v1
+        id: app-token
+        with:
+          app-id: ${{ vars.APP_ID }}
+          private-key: ${{ secrets.APP_PRIVATE_KEY }}
+
+      - name: Publish changelog
+        id: publish-changelog
+        uses: 
jupyter-server/jupyter_releaser/.github/actions/publish-changelog@v2
+        with:
+          token: ${{ steps.app-token.outputs.token }}
+          branch: ${{ github.event.inputs.branch }}
+
+      - name: "** Next Step **"
+        run: |
+          echo "Merge the changelog update PR: ${{ 
steps.publish-changelog.outputs.pr_url }}"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_events-0.9.0/.github/workflows/publish-release.yml 
new/jupyter_events-0.10.0/.github/workflows/publish-release.yml
--- old/jupyter_events-0.9.0/.github/workflows/publish-release.yml      
2020-02-02 01:00:00.000000000 +0100
+++ new/jupyter_events-0.10.0/.github/workflows/publish-release.yml     
2020-02-02 01:00:00.000000000 +0100
@@ -15,30 +15,32 @@
 jobs:
   publish_release:
     runs-on: ubuntu-latest
+    environment: release
+    permissions:
+      id-token: write
     steps:
       - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
 
+      - uses: actions/create-github-app-token@v1
+        id: app-token
+        with:
+          app-id: ${{ vars.APP_ID }}
+          private-key: ${{ secrets.APP_PRIVATE_KEY }}
+
       - name: Populate Release
         id: populate-release
         uses: 
jupyter-server/jupyter_releaser/.github/actions/populate-release@v2
         with:
-          token: ${{ secrets.ADMIN_GITHUB_TOKEN }}
-          target: ${{ github.event.inputs.target }}
+          token: ${{ steps.app-token.outputs.token }}
           branch: ${{ github.event.inputs.branch }}
           release_url: ${{ github.event.inputs.release_url }}
           steps_to_skip: ${{ github.event.inputs.steps_to_skip }}
 
       - name: Finalize Release
         id: finalize-release
-        env:
-          PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
-          PYPI_TOKEN_MAP: ${{ secrets.PYPI_TOKEN_MAP }}
-          TWINE_USERNAME: __token__
-          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
-        uses: 
jupyter-server/jupyter-releaser/.github/actions/finalize-release@v2
+        uses: 
jupyter-server/jupyter_releaser/.github/actions/finalize-release@v2
         with:
-          token: ${{ secrets.ADMIN_GITHUB_TOKEN }}
-          target: ${{ github.event.inputs.target }}
+          token: ${{ steps.app-token.outputs.token }}
           release_url: ${{ steps.populate-release.outputs.release_url }}
 
       - name: "** Next Step **"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_events-0.9.0/.pre-commit-config.yaml 
new/jupyter_events-0.10.0/.pre-commit-config.yaml
--- old/jupyter_events-0.9.0/.pre-commit-config.yaml    2020-02-02 
01:00:00.000000000 +0100
+++ new/jupyter_events-0.10.0/.pre-commit-config.yaml   2020-02-02 
01:00:00.000000000 +0100
@@ -21,7 +21,7 @@
       - id: trailing-whitespace
 
   - repo: https://github.com/python-jsonschema/check-jsonschema
-    rev: 0.27.0
+    rev: 0.27.4
     hooks:
       - id: check-github-workflows
 
@@ -33,7 +33,7 @@
           [mdformat-gfm, mdformat-frontmatter, mdformat-footnote]
 
   - repo: https://github.com/pre-commit/mirrors-prettier
-    rev: "v3.0.3"
+    rev: "v4.0.0-alpha.8"
     hooks:
       - id: prettier
         types_or: [yaml, html, json]
@@ -52,7 +52,7 @@
         args: ["-L", "sur,nd"]
 
   - repo: https://github.com/pre-commit/mirrors-mypy
-    rev: "v1.6.1"
+    rev: "v1.8.0"
     hooks:
       - id: mypy
         files: "^jupyter_events"
@@ -77,14 +77,17 @@
       - id: rst-inline-touching-normal
 
   - repo: https://github.com/astral-sh/ruff-pre-commit
-    rev: v0.1.3
+    rev: v0.2.0
     hooks:
       - id: ruff
+        types_or: [python, jupyter]
         args: ["--fix", "--show-fixes"]
       - id: ruff-format
+        types_or: [python, jupyter]
 
   - repo: https://github.com/scientific-python/cookie
-    rev: "2023.10.27"
+    rev: "2024.01.24"
     hooks:
       - id: sp-repo-review
         additional_dependencies: ["repo-review[cli]"]
+        args: ["--ignore", "GH102"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_events-0.9.0/CHANGELOG.md 
new/jupyter_events-0.10.0/CHANGELOG.md
--- old/jupyter_events-0.9.0/CHANGELOG.md       2020-02-02 01:00:00.000000000 
+0100
+++ new/jupyter_events-0.10.0/CHANGELOG.md      2020-02-02 01:00:00.000000000 
+0100
@@ -4,6 +4,40 @@
 
 <!-- <START NEW CHANGELOG ENTRY> -->
 
+## 0.10.0
+
+([Full 
Changelog](https://github.com/jupyter/jupyter_events/compare/v0.9.1...e7784fd09356ef074d69d1c2f192f1ad96f5f00c))
+
+### Enhancements made
+
+- Enable adding listeners to event before the event is registered 
[#97](https://github.com/jupyter/jupyter_events/pull/97) 
([@Zsailer](https://github.com/Zsailer))
+
+### Contributors to this release
+
+([GitHub contributors page for this 
release](https://github.com/jupyter/jupyter_events/graphs/contributors?from=2024-03-12&to=2024-03-18&type=c))
+
+[@Zsailer](https://github.com/search?q=repo%3Ajupyter%2Fjupyter_events+involves%3AZsailer+updated%3A2024-03-12..2024-03-18&type=Issues)
+
+<!-- <END NEW CHANGELOG ENTRY> -->
+
+## 0.9.1
+
+([Full 
Changelog](https://github.com/jupyter/jupyter_events/compare/v0.9.0...014a91c793b12d008bb744614a280bc14b5be7eb))
+
+### Maintenance and upkeep improvements
+
+- Update Release Scripts 
[#96](https://github.com/jupyter/jupyter_events/pull/96) 
([@blink1073](https://github.com/blink1073))
+- chore: update pre-commit hooks 
[#95](https://github.com/jupyter/jupyter_events/pull/95) 
([@pre-commit-ci](https://github.com/pre-commit-ci))
+- chore: update pre-commit hooks 
[#94](https://github.com/jupyter/jupyter_events/pull/94) 
([@pre-commit-ci](https://github.com/pre-commit-ci))
+- Update ruff and typing 
[#93](https://github.com/jupyter/jupyter_events/pull/93) 
([@blink1073](https://github.com/blink1073))
+- chore: update pre-commit hooks 
[#92](https://github.com/jupyter/jupyter_events/pull/92) 
([@pre-commit-ci](https://github.com/pre-commit-ci))
+
+### Contributors to this release
+
+([GitHub contributors page for this 
release](https://github.com/jupyter/jupyter_events/graphs/contributors?from=2023-11-06&to=2024-03-12&type=c))
+
+[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fjupyter_events+involves%3Ablink1073+updated%3A2023-11-06..2024-03-12&type=Issues)
 | 
[@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fjupyter_events+involves%3Apre-commit-ci+updated%3A2023-11-06..2024-03-12&type=Issues)
+
 ## 0.9.0
 
 ([Full 
Changelog](https://github.com/jupyter/jupyter_events/compare/v0.8.0...228a04801224d127f4304e17398464d045794cf0))
@@ -24,8 +58,6 @@
 
 
[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fjupyter_events+involves%3Ablink1073+updated%3A2023-10-16..2023-11-06&type=Issues)
 | 
[@frenzymadness](https://github.com/search?q=repo%3Ajupyter%2Fjupyter_events+involves%3Afrenzymadness+updated%3A2023-10-16..2023-11-06&type=Issues)
 
-<!-- <END NEW CHANGELOG ENTRY> -->
-
 ## 0.8.0
 
 ([Full 
Changelog](https://github.com/jupyter/jupyter_events/compare/v0.7.0...e3edb6a868924d3f1b15eaf18d45be621ad77cef))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_events-0.9.0/PKG-INFO 
new/jupyter_events-0.10.0/PKG-INFO
--- old/jupyter_events-0.9.0/PKG-INFO   2020-02-02 01:00:00.000000000 +0100
+++ new/jupyter_events-0.10.0/PKG-INFO  2020-02-02 01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.3
 Name: jupyter-events
-Version: 0.9.0
+Version: 0.10.0
 Summary: Jupyter Event System library
 Project-URL: Homepage, http://jupyter.org
 Project-URL: documentation, https://jupyter-events.readthedocs.io/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_events-0.9.0/docs/conf.py 
new/jupyter_events-0.10.0/docs/conf.py
--- old/jupyter_events-0.9.0/docs/conf.py       2020-02-02 01:00:00.000000000 
+0100
+++ new/jupyter_events-0.10.0/docs/conf.py      2020-02-02 01:00:00.000000000 
+0100
@@ -16,11 +16,10 @@
 
 
 # -- Project information -----------------------------------------------------
-
-from typing import List
+from __future__ import annotations
 
 project = "jupyter_events"
-copyright = "2019, Project Jupyter"  # noqa
+copyright = "2019, Project Jupyter"
 author = "Project Jupyter"
 
 
@@ -29,10 +28,10 @@
 # Add any Sphinx extension module names here, as strings. They can be
 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
 # ones.
-extensions: List = ["myst_parser", "jupyterlite_sphinx"]
+extensions: list = ["myst_parser", "jupyterlite_sphinx"]
 
 try:
-    import enchant  # type:ignore  # noqa
+    import enchant  # noqa: F401
 
     extensions += ["sphinxcontrib.spelling"]
 except ImportError:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_events-0.9.0/docs/demo/demo-notebook.ipynb 
new/jupyter_events-0.10.0/docs/demo/demo-notebook.ipynb
--- old/jupyter_events-0.9.0/docs/demo/demo-notebook.ipynb      2020-02-02 
01:00:00.000000000 +0100
+++ new/jupyter_events-0.10.0/docs/demo/demo-notebook.ipynb     2020-02-02 
01:00:00.000000000 +0100
@@ -13,6 +13,8 @@
    "metadata": {},
    "outputs": [],
    "source": [
+    "from __future__ import annotations\n",
+    "\n",
     "import piplite\n",
     "\n",
     "await piplite.install(\"jupyter_events\")"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_events-0.9.0/jupyter_events/_version.py 
new/jupyter_events-0.10.0/jupyter_events/_version.py
--- old/jupyter_events-0.9.0/jupyter_events/_version.py 2020-02-02 
01:00:00.000000000 +0100
+++ new/jupyter_events-0.10.0/jupyter_events/_version.py        2020-02-02 
01:00:00.000000000 +0100
@@ -1,17 +1,18 @@
 """
 store the current version info of jupyter-events.
 """
+from __future__ import annotations
+
 import re
-from typing import List
 
 # Version string must appear intact for hatch versioning
-__version__ = "0.9.0"
+__version__ = "0.10.0"
 
 # Build up version_info tuple for backwards compatibility
 pattern = r"(?P<major>\d+).(?P<minor>\d+).(?P<patch>\d+)(?P<rest>.*)"
 match = re.match(pattern, __version__)
-assert match is not None  # noqa
-parts: List[object] = [int(match[part]) for part in ["major", "minor", 
"patch"]]
+assert match is not None
+parts: list[object] = [int(match[part]) for part in ["major", "minor", 
"patch"]]
 if match["rest"]:
     parts.append(match["rest"])
 version_info = tuple(parts)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_events-0.9.0/jupyter_events/cli.py 
new/jupyter_events-0.10.0/jupyter_events/cli.py
--- old/jupyter_events-0.9.0/jupyter_events/cli.py      2020-02-02 
01:00:00.000000000 +0100
+++ new/jupyter_events-0.10.0/jupyter_events/cli.py     2020-02-02 
01:00:00.000000000 +0100
@@ -1,4 +1,6 @@
 """The cli for jupyter events."""
+from __future__ import annotations
+
 import json
 import pathlib
 import platform
@@ -46,7 +48,6 @@
 
         
https://raw.githubusercontent.com/jupyter/jupyter_events/main/jupyter_events/schemas/event-metaschema.yml
     """
-    pass
 
 
 @click.command()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_events-0.9.0/jupyter_events/logger.py 
new/jupyter_events-0.10.0/jupyter_events/logger.py
--- old/jupyter_events-0.9.0/jupyter_events/logger.py   2020-02-02 
01:00:00.000000000 +0100
+++ new/jupyter_events-0.10.0/jupyter_events/logger.py  2020-02-02 
01:00:00.000000000 +0100
@@ -91,9 +91,7 @@
 
     async def gather_listeners(self) -> list[t.Any]:
         """Gather all of the active listeners."""
-        return await asyncio.gather(  # type:ignore[no-any-return]
-            *self._active_listeners, return_exceptions=True
-        )
+        return await asyncio.gather(*self._active_listeners, 
return_exceptions=True)
 
     @default("schemas")
     def _default_schemas(self) -> SchemaRegistry:
@@ -120,8 +118,8 @@
     def _load_config(
         self,
         cfg: Config,
-        section_names: list[str] | None = None,
-        traits: list[str] | None = None,  # type:ignore[override]
+        section_names: list[str] | None = None,  # noqa: ARG002
+        traits: list[str] | None = None,  # type:ignore[override]  # noqa: 
ARG002
     ) -> None:
         """Load EventLogger traits from a Config object, patching the
         handlers trait in the Config object to avoid deepcopy errors.
@@ -144,12 +142,16 @@
 
         Get this registered schema using the EventLogger.schema.get() method.
         """
-
         event_schema = self.schemas.register(schema)  # type:ignore[arg-type]
         key = event_schema.id
-        self._modifiers[key] = set()
-        self._modified_listeners[key] = set()
-        self._unmodified_listeners[key] = set()
+        # It's possible that listeners and modifiers have been added for this
+        # schema before the schema is registered.
+        if key not in self._modifiers:
+            self._modifiers[key] = set()
+        if key not in self._modified_listeners:
+            self._modified_listeners[key] = set()
+        if key not in self._unmodified_listeners:
+            self._unmodified_listeners[key] = set()
 
     def register_handler(self, handler: logging.Handler) -> None:
         """Register a new logging handler to the Event Logger.
@@ -207,7 +209,11 @@
         # If the schema ID and version is given, only add
         # this modifier to that schema
         if schema_id:
-            self._modifiers[schema_id].add(modifier)
+            # If the schema hasn't been added yet,
+            # start a placeholder set.
+            modifiers = self._modifiers.get(schema_id, set())
+            modifiers.add(modifier)
+            self._modifiers[schema_id] = modifiers
             return
         for id_ in self._modifiers:
             if schema_id is None or id_ == schema_id:
@@ -266,9 +272,16 @@
         # this modifier to that schema
         if schema_id:
             if modified:
-                self._modified_listeners[schema_id].add(listener)
+                # If the schema hasn't been added yet,
+                # start a placeholder set.
+                listeners = self._modified_listeners.get(schema_id, set())
+                listeners.add(listener)
+                self._modified_listeners[schema_id] = listeners
                 return
-            self._unmodified_listeners[schema_id].add(listener)
+            listeners = self._unmodified_listeners.get(schema_id, set())
+            listeners.add(listener)
+            self._unmodified_listeners[schema_id] = listeners
+            return
         for id_ in self.schemas.schema_ids:
             if schema_id is None or id_ == schema_id:
                 if modified:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_events-0.9.0/jupyter_events/schema.py 
new/jupyter_events-0.10.0/jupyter_events/schema.py
--- old/jupyter_events-0.9.0/jupyter_events/schema.py   2020-02-02 
01:00:00.000000000 +0100
+++ new/jupyter_events-0.10.0/jupyter_events/schema.py  2020-02-02 
01:00:00.000000000 +0100
@@ -3,7 +3,7 @@
 
 import json
 from pathlib import Path, PurePath
-from typing import Any, Union
+from typing import Any, Dict, Union
 
 from jsonschema import FormatChecker, validators
 from referencing import Registry
@@ -18,25 +18,19 @@
 from .validators import draft7_format_checker, validate_schema
 
 
-class EventSchemaUnrecognized(Exception):  # noqa
+class EventSchemaUnrecognized(Exception):
     """An error for an unrecognized event schema."""
 
-    pass
-
 
 class EventSchemaLoadingError(Exception):
     """An error for an event schema loading error."""
 
-    pass
-
 
-class EventSchemaFileAbsent(Exception):  # noqa
+class EventSchemaFileAbsent(Exception):
     """An error for an absent event schema file."""
 
-    pass
-
 
-SchemaType = Union[dict, str, PurePath]
+SchemaType = Union[Dict[str, Any], str, PurePath]
 
 
 class EventSchema:
@@ -141,7 +135,7 @@
         raise EventSchemaUnrecognized(msg)
 
     @property
-    def id(self) -> str:  # noqa
+    def id(self) -> str:
         """Schema $id field."""
         return self._schema["$id"]  # type:ignore[no-any-return]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_events-0.9.0/jupyter_events/schema_registry.py 
new/jupyter_events-0.10.0/jupyter_events/schema_registry.py
--- old/jupyter_events-0.9.0/jupyter_events/schema_registry.py  2020-02-02 
01:00:00.000000000 +0100
+++ new/jupyter_events-0.10.0/jupyter_events/schema_registry.py 2020-02-02 
01:00:00.000000000 +0100
@@ -6,7 +6,7 @@
 from .schema import EventSchema
 
 
-class SchemaRegistryException(Exception):  # noqa: N818
+class SchemaRegistryException(Exception):
     """Exception class for Jupyter Events Schema Registry Errors."""
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_events-0.9.0/jupyter_events/traits.py 
new/jupyter_events-0.10.0/jupyter_events/traits.py
--- old/jupyter_events-0.9.0/jupyter_events/traits.py   2020-02-02 
01:00:00.000000000 +0100
+++ new/jupyter_events-0.10.0/jupyter_events/traits.py  2020-02-02 
01:00:00.000000000 +0100
@@ -44,8 +44,8 @@
             return out
         # If a list, check it's elements to verify
         # that each element is a logging handler instance.
-        elif isinstance(value, list):
+        if isinstance(value, list):
             self.validate_elements(obj, value)
             return value
-        else:
-            self.error(obj, value)
+        self.error(obj, value)
+        return None  # type:ignore[unreachable]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_events-0.9.0/pyproject.toml 
new/jupyter_events-0.10.0/pyproject.toml
--- old/jupyter_events-0.9.0/pyproject.toml     2020-02-02 01:00:00.000000000 
+0100
+++ new/jupyter_events-0.10.0/pyproject.toml    2020-02-02 01:00:00.000000000 
+0100
@@ -96,7 +96,10 @@
 detached = true
 dependencies = ["pre-commit"]
 [tool.hatch.envs.lint.scripts]
-build = "pre-commit run --all-files ruff"
+build = [
+  "pre-commit run --all-files ruff",
+  "pre-commit run --all-files ruff-format"
+]
 
 [tool.hatch.envs.typing]
 dependencies = [ "pre-commit"]
@@ -149,29 +152,41 @@
 files = "jupyter_events"
 python_version = "3.8"
 strict = true
-show_error_codes = true
 enable_error_code = ["ignore-without-code", "redundant-expr", "truthy-bool"]
 warn_unreachable = true
 
 [tool.ruff]
-target-version = "py38"
 line-length = 100
 
 [tool.ruff.lint]
-select = [
-  "A", "B", "C", "DTZ", "E", "EM", "F", "FBT", "I", "ICN", "N",
-  "PLC", "PLE", "PLR", "PLW", "Q", "RUF", "S", "SIM", "T", "TID", "UP",
-  "W", "YTT",
+extend-select = [
+  "B",           # flake8-bugbear
+  "I",           # isort
+  "ARG",         # flake8-unused-arguments
+  "C4",          # flake8-comprehensions
+  "EM",          # flake8-errmsg
+  "ICN",         # flake8-import-conventions
+  "G",           # flake8-logging-format
+  "PGH",         # pygrep-hooks
+  "PIE",         # flake8-pie
+  "PL",          # pylint
+  "PTH",         # flake8-use-pathlib
+  "PT",          # flake8-pytest-style
+  "RET",         # flake8-return
+  "RUF",         # Ruff-specific
+  "SIM",         # flake8-simplify
+  "T20",         # flake8-print
+  "UP",          # pyupgrade
+  "YTT",         # flake8-2020
+  "EXE",         # flake8-executable
+  "PYI",         # flake8-pyi
+  "S",           # flake8-bandit
 ]
 ignore = [
-  # Q000 Single quotes found but double quotes preferred
-  "Q000",
-  # FBT001 Boolean positional arg in function definition
-  "FBT001", "FBT002", "FBT003",
-  # E501 Line too long (158 > 100 characters)
-  "E501",
-  # SIM105 Use `contextlib.suppress(...)`
-  "SIM105",
+  "E501",     # E501 Line too long (158 > 100 characters)
+  "SIM105",   # SIM105 Use `contextlib.suppress(...)`
+  "PLR",      # Design related pylint codes
+  "S101",     # Use of `assert` detected
 ]
 unfixable = [
   # Don't touch print statements
@@ -179,6 +194,7 @@
   # Don't touch noqa lines
   "RUF100",
 ]
+isort.required-imports = ["from __future__ import annotations"]
 
 [tool.ruff.lint.per-file-ignores]
 # B011 Do not call assert False since python -O removes these calls
@@ -190,10 +206,15 @@
 # N802 Function name `assertIn` should be lowercase
 # F841 Local variable `t` is assigned to but never used
 # S101 Use of `assert` detected
-"tests/*" = ["B011", "F841", "C408", "E402", "T201", "B007", "N802", "F841", 
"S101"]
+"tests/*" = ["B011", "F841", "C408", "E402", "T201", "B007", "N802", "F841", 
"S101", "ARG", "PGH"]
 # C901 Function is too complex
 "jupyter_events/logger.py" = ["C901"] # `emit` is too complex (12 > 10)
+"docs/demo/demo-notebook.ipynb" = ["PLE1142", "E402", "T201"]
 
+[tool.ruff.lint.flake8-pytest-style]
+fixture-parentheses = false
+mark-parentheses = false
+parametrize-names-type = "csv"
 
 [tool.interrogate]
 ignore-init-module=true
@@ -204,6 +225,3 @@
 ignore-nested-classes=true
 fail-under=100
 exclude = ["docs", "tests"]
-
-[tool.repo-review]
-ignore = ["PY007", "GH102"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_events-0.9.0/tests/conftest.py 
new/jupyter_events-0.10.0/tests/conftest.py
--- old/jupyter_events-0.9.0/tests/conftest.py  2020-02-02 01:00:00.000000000 
+0100
+++ new/jupyter_events-0.10.0/tests/conftest.py 2020-02-02 01:00:00.000000000 
+0100
@@ -1 +1,3 @@
+from __future__ import annotations
+
 pytest_plugins = ["jupyter_events.pytest_plugin"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_events-0.9.0/tests/test_cli.py 
new/jupyter_events-0.10.0/tests/test_cli.py
--- old/jupyter_events-0.9.0/tests/test_cli.py  2020-02-02 01:00:00.000000000 
+0100
+++ new/jupyter_events-0.10.0/tests/test_cli.py 2020-02-02 01:00:00.000000000 
+0100
@@ -1,3 +1,5 @@
+from __future__ import annotations
+
 import os
 
 import pytest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_events-0.9.0/tests/test_listeners.py 
new/jupyter_events-0.10.0/tests/test_listeners.py
--- old/jupyter_events-0.9.0/tests/test_listeners.py    2020-02-02 
01:00:00.000000000 +0100
+++ new/jupyter_events-0.10.0/tests/test_listeners.py   2020-02-02 
01:00:00.000000000 +0100
@@ -1,9 +1,11 @@
+from __future__ import annotations
+
 import io
 import logging
 
 import pytest
 
-from jupyter_events.logger import EventLogger
+from jupyter_events.logger import EventLogger, SchemaNotRegistered
 from jupyter_events.schema import EventSchema
 
 from .utils import SCHEMA_PATH
@@ -42,7 +44,7 @@
     event_logger = jp_event_logger
     listener_was_called = False
 
-    async def my_listener(logger: "EventLogger", schema_id: "str", data: 
"dict") -> "None":
+    async def my_listener(logger: EventLogger, schema_id: str, data: dict) -> 
None:
         nonlocal listener_was_called
         listener_was_called = True
 
@@ -136,3 +138,41 @@
     assert listener_was_called
     # Check that the active listeners are cleaned up.
     assert len(event_logger._active_listeners) == 0
+
+
+@pytest.mark.parametrize(
+    # Make sure no schemas are added at the start of this test.
+    "jp_event_schemas",
+    [
+        # Empty events list.
+        []
+    ],
+)
+async def test_listener_added_before_schemas_passes(jp_event_logger, schema):
+    # Ensure there are no schemas listed.
+    assert len(jp_event_logger.schemas.schema_ids) == 0
+
+    listener_was_called = False
+
+    async def my_listener(logger: EventLogger, schema_id: str, data: dict) -> 
None:
+        nonlocal listener_was_called
+        listener_was_called = True
+
+    # Add the listener without any schemas
+    jp_event_logger.add_listener(schema_id=schema.id, listener=my_listener)
+
+    # Proof that emitting the event won't success
+    with pytest.warns(SchemaNotRegistered):
+        jp_event_logger.emit(schema_id=schema.id, data={"prop": "hello, 
world"})
+
+    assert not listener_was_called
+
+    # Now register the event and emit.
+    jp_event_logger.register_event_schema(schema)
+
+    # Try emitting the event again and ensure the listener saw it.
+    jp_event_logger.emit(schema_id=schema.id, data={"prop": "hello, world"})
+    await jp_event_logger.gather_listeners()
+    assert listener_was_called
+    # Check that the active listeners are cleaned up.
+    assert len(jp_event_logger._active_listeners) == 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_events-0.9.0/tests/test_logger.py 
new/jupyter_events-0.10.0/tests/test_logger.py
--- old/jupyter_events-0.9.0/tests/test_logger.py       2020-02-02 
01:00:00.000000000 +0100
+++ new/jupyter_events-0.10.0/tests/test_logger.py      2020-02-02 
01:00:00.000000000 +0100
@@ -1,3 +1,5 @@
+from __future__ import annotations
+
 import io
 import json
 import logging
@@ -40,8 +42,7 @@
 
     # Load written file.
     loader = PyFileConfigLoader(filename, path=str(path))
-    cfg = loader.load_config()
-    return cfg
+    return loader.load_config()
 
 
 def test_good_config_file(tmp_path):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_events-0.9.0/tests/test_modifiers.py 
new/jupyter_events-0.10.0/tests/test_modifiers.py
--- old/jupyter_events-0.9.0/tests/test_modifiers.py    2020-02-02 
01:00:00.000000000 +0100
+++ new/jupyter_events-0.10.0/tests/test_modifiers.py   2020-02-02 
01:00:00.000000000 +0100
@@ -1,3 +1,5 @@
+from __future__ import annotations
+
 import pytest
 
 from jupyter_events.schema import EventSchema
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_events-0.9.0/tests/test_schema.py 
new/jupyter_events-0.10.0/tests/test_schema.py
--- old/jupyter_events-0.9.0/tests/test_schema.py       2020-02-02 
01:00:00.000000000 +0100
+++ new/jupyter_events-0.10.0/tests/test_schema.py      2020-02-02 
01:00:00.000000000 +0100
@@ -1,3 +1,5 @@
+from __future__ import annotations
+
 import os
 from pathlib import Path
 
@@ -31,7 +33,7 @@
     a redactionPolicies field.
     """
     # Read the schema file
-    with open(SCHEMA_PATH / "bad" / schema_file) as f:
+    with Path.open(SCHEMA_PATH / "bad" / schema_file) as f:
         schema = yaml.loads(f)
     # Assert that the schema files for a known reason.
     with pytest.raises(ValidationError) as err:
@@ -49,7 +51,7 @@
     """Ensure EventSchema returns a helpful error message if user passes a
     string intended as a Path."""
     expected_msg_contents = "Paths to schema files must be explicitly wrapped 
in a Pathlib object."
-    str_path = os.path.join(SCHEMA_PATH, "good", "some_schema.yaml")
+    str_path = os.path.join(SCHEMA_PATH, "good", "some_schema.yaml")  # noqa: 
PTH118
     with pytest.raises(EventSchemaLoadingError) as e:
         EventSchema(str_path)
 
@@ -79,7 +81,7 @@
 def test_good_validations(schema_file):
     """Ensure validation passes for good schemas."""
     # Read the schema file
-    with open(SCHEMA_PATH / "good" / schema_file) as f:
+    with Path.open(SCHEMA_PATH / "good" / schema_file) as f:
         schema = yaml.loads(f)
     # assert that no exception gets raised
     validate_schema(schema)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_events-0.9.0/tests/test_traits.py 
new/jupyter_events-0.10.0/tests/test_traits.py
--- old/jupyter_events-0.9.0/tests/test_traits.py       2020-02-02 
01:00:00.000000000 +0100
+++ new/jupyter_events-0.10.0/tests/test_traits.py      2020-02-02 
01:00:00.000000000 +0100
@@ -1,3 +1,5 @@
+from __future__ import annotations
+
 import logging
 
 import pytest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_events-0.9.0/tests/utils.py 
new/jupyter_events-0.10.0/tests/utils.py
--- old/jupyter_events-0.9.0/tests/utils.py     2020-02-02 01:00:00.000000000 
+0100
+++ new/jupyter_events-0.10.0/tests/utils.py    2020-02-02 01:00:00.000000000 
+0100
@@ -1,3 +1,5 @@
+from __future__ import annotations
+
 import io
 import json
 import logging

Reply via email to