Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: certifi/python-certifi
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 2022.06.15
Choose a base ref
...
head repository: certifi/python-certifi
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 2022.06.15.1
Choose a head ref
  • 3 commits
  • 5 files changed
  • 5 contributors

Commits on Jul 6, 2022

  1. 1
    Copy the full SHA
    b0b48e0 View commit details

Commits on Jul 15, 2022

  1. Fix deprecation warning on Python 3.11 (#199)

    * Fix deprecation warning on Python 3.11
    
    Fixes #192.
    
    * Retain support for Python 3.6
    
    Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
    
    * Bump actions versions
    
    * Use same 'where' for 3.6 and 3.7-3.10
    
    Co-authored-by: Adam Johnson <me@adamj.eu>
    Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
    3 people authored Jul 15, 2022
    Copy the full SHA
    47fb7ab View commit details

Commits on Sep 9, 2022

  1. 2022.06.15.1

    Lukasa committed Sep 9, 2022
    Copy the full SHA
    b8eb5e9 View commit details
Showing with 65 additions and 18 deletions.
  1. +12 −7 .github/workflows/ci.yml
  2. +1 −1 LICENSE
  3. +1 −1 certifi/__init__.py
  4. +49 −9 certifi/core.py
  5. +2 −0 setup.py
19 changes: 12 additions & 7 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -10,9 +10,9 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v2
uses: actions/setup-python@v4
- name: Install dependencies
run: pip install mypy
- name: Run mypy
@@ -22,12 +22,17 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.6", "3.7", "3.8", "3.9", "3.10"]

python-version:
- "3.6"
- "3.7"
- "3.8"
- "3.9"
- "3.10"
- "3.11-dev"
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install test dependencies
@@ -36,4 +41,4 @@ jobs:
python -m pip install pytest
- name: Test with pytest
run: |
pytest
python -W error -m pytest
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -6,7 +6,7 @@ Certificate data from Mozilla as of: Thu Nov 3 19:04:19 2011#
This is a bundle of X.509 certificates of public Certificate Authorities
(CA). These were automatically extracted from Mozilla's root certificates
file (certdata.txt). This file can be found in the mozilla source tree:
http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1#
https://hg.mozilla.org/mozilla-central/file/tip/security/nss/lib/ckfw/builtins/certdata.txt
It contains the certificates in PEM format and therefore
can be directly used with curl / libcurl / php_curl, or with
an Apache+mod_ssl webserver for SSL client authentication.
2 changes: 1 addition & 1 deletion certifi/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from .core import contents, where

__all__ = ["contents", "where"]
__version__ = "2022.06.15"
__version__ = "2022.06.15.1"
58 changes: 49 additions & 9 deletions certifi/core.py
Original file line number Diff line number Diff line change
@@ -4,12 +4,12 @@
This module returns the installation location of cacert.pem or its contents.
"""
import os
import types
from typing import Union
import sys

try:
from importlib.resources import path as get_path, read_text

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

from importlib.resources import as_file, files

_CACERT_CTX = None
_CACERT_PATH = None
@@ -33,13 +33,54 @@ def where() -> str:
# We also have to hold onto the actual context manager, because
# it will do the cleanup whenever it gets garbage collected, so
# we will also store that at the global level as well.
_CACERT_CTX = as_file(files("certifi").joinpath("cacert.pem"))
_CACERT_PATH = str(_CACERT_CTX.__enter__())

return _CACERT_PATH

def contents() -> str:
return files("certifi").joinpath("cacert.pem").read_text(encoding="ascii")

elif sys.version_info >= (3, 7):

from importlib.resources import path as get_path, read_text

_CACERT_CTX = None
_CACERT_PATH = None

def where() -> str:
# This is slightly terrible, but we want to delay extracting the
# file in cases where we're inside of a zipimport situation until
# someone actually calls where(), but we don't want to re-extract
# the file on every call of where(), so we'll do it once then store
# it in a global variable.
global _CACERT_CTX
global _CACERT_PATH
if _CACERT_PATH is None:
# This is slightly janky, the importlib.resources API wants you
# to manage the cleanup of this file, so it doesn't actually
# return a path, it returns a context manager that will give
# you the path when you enter it and will do any cleanup when
# you leave it. In the common case of not needing a temporary
# file, it will just return the file system location and the
# __exit__() is a no-op.
#
# We also have to hold onto the actual context manager, because
# it will do the cleanup whenever it gets garbage collected, so
# we will also store that at the global level as well.
_CACERT_CTX = get_path("certifi", "cacert.pem")
_CACERT_PATH = str(_CACERT_CTX.__enter__())

return _CACERT_PATH

def contents() -> str:
return read_text("certifi", "cacert.pem", encoding="ascii")

else:
import os
import types
from typing import Union

except ImportError:
Package = Union[types.ModuleType, str]
Resource = Union[str, "os.PathLike"]

@@ -63,6 +104,5 @@ def where() -> str:

return os.path.join(f, "cacert.pem")


def contents() -> str:
return read_text("certifi", "cacert.pem", encoding="ascii")
def contents() -> str:
return read_text("certifi", "cacert.pem", encoding="ascii")
2 changes: 2 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
@@ -54,11 +54,13 @@
'Natural Language :: English',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3 :: Only',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
],
project_urls={
'Source': 'https://github.com/certifi/python-certifi',