From 59a7376c51f4fcf5e9c01d24480525451e2e93a8 Mon Sep 17 00:00:00 2001 From: Avasam Date: Thu, 29 Feb 2024 15:30:06 -0500 Subject: [PATCH] Make `find_nothing` return an (empty) `Generator` of `Distribution` This aligns with `find_eggs_in_zip` and `find_on_path` and ensures `find_distributions` always returns a generator --- newsfragments/4249.bugfix.rst | 1 + pkg_resources/__init__.py | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 newsfragments/4249.bugfix.rst diff --git a/newsfragments/4249.bugfix.rst b/newsfragments/4249.bugfix.rst new file mode 100644 index 00000000000..bfcd732a094 --- /dev/null +++ b/newsfragments/4249.bugfix.rst @@ -0,0 +1 @@ +Ensure `pkg_resources.find_distributions` always returns a `Generator` as per its docstring by making `pkg_resources.find_nothing` yield nothing rather than returning an empty `tuple` -- by :user:`Avasam` diff --git a/pkg_resources/__init__.py b/pkg_resources/__init__.py index 10c6a9cd060..a88a687becb 100644 --- a/pkg_resources/__init__.py +++ b/pkg_resources/__init__.py @@ -27,7 +27,7 @@ import time import re import types -from typing import Protocol +from typing import Generator, Protocol import zipfile import zipimport import warnings @@ -2089,8 +2089,11 @@ def find_eggs_in_zip(importer, path_item, only=False): register_finder(zipimport.zipimporter, find_eggs_in_zip) -def find_nothing(importer, path_item, only=False): - return () +def find_nothing( + importer, path_item, only=False +) -> Generator["Distribution", None, None]: + return + yield register_finder(object, find_nothing)