From ed79b4b9f53fe99293139c18f053168e564508b8 Mon Sep 17 00:00:00 2001
From: wisp3rwind <17089248+wisp3rwind@users.noreply.github.com>
Date: Thu, 17 Apr 2025 22:35:06 +0200
Subject: [PATCH] address deprecation of  pkgutil.get_loader

Closes https://github.com/beetbox/confuse/issues/165
---
 confuse/util.py | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/confuse/util.py b/confuse/util.py
index c27e161..a3f6e62 100644
--- a/confuse/util.py
+++ b/confuse/util.py
@@ -1,9 +1,9 @@
+import importlib.util
 import os
 import sys
 import argparse
 import optparse
 import platform
-import pkgutil
 
 
 UNIX_DIR_FALLBACK = '~/.config'
@@ -114,8 +114,14 @@ def find_package_path(name):
     None if the path could not be identified (e.g., if
     ``name == "__main__"``).
     """
-    # Based on get_root_path from Flask by Armin Ronacher.
-    loader = pkgutil.get_loader(name)
+    # Based on get_root_path from Flask by Armin Ronacher, cf.
+    # https://github.com/pallets/flask/blob/85c5d93cbd049c4bd0679c36fd1ddcae8c37b642/src/flask/helpers.py#L570
+    try:
+        spec = importlib.util.find_spec(name)
+    except (ImportError, ValueError):
+        return None
+
+    loader = spec.loader
     if loader is None or name == '__main__':
         return None
 
