Skip to content

Commit

Permalink
Only use importlib.resources's new files() / Traversable API on Pytho…
Browse files Browse the repository at this point in the history
…n ≥3.11 (#204)

Using importlib.resource's files() API on 3.9 and 3.10 causes a
TypeError on 3.9 and a ValueError on 3.10 when running under a
third-party meta path importer (like PyOxidizer's OxidizedImporter) that
doesn't support the relatively-new API.  This is because the full
adapter layer (importlib.resources._adapters) for the older importlib
resources API doesn't exist until Python 3.11.

The older resources API is now used by 3.7–3.10, as it was prior to the
certifi 2022.06.15.1 release.  This codepath has existed in certifi
since April 2020 (3fc8fec).

An alternative to this change would be testing the actual importer in
use at runtime (e.g. certifi.__loader__) for files() support, but that
seemed more complex than reverting to the previous codepath here.

Resolves: #203
Related-to: #199
Related-to: #123
  • Loading branch information
tsibley committed Sep 13, 2022
1 parent b8eb5e9 commit de0eae1
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion certifi/core.py
Expand Up @@ -7,7 +7,7 @@
import sys


if sys.version_info >= (3, 9):
if sys.version_info >= (3, 11):

from importlib.resources import as_file, files

Expand Down

0 comments on commit de0eae1

Please sign in to comment.