Let us walk on the 3-isogeny graph
Loading...
Searching...
No Matches
core.py
Go to the documentation of this file.
1
"""
2
certifi.py
3
~~~~~~~~~~
4
5
This module returns the installation location of cacert.pem or its contents.
6
"""
7
import
sys
8
9
10
if
sys.version_info
>= (3, 11):
11
12
from
importlib.resources
import
as_file, files
13
14
_CACERT_CTX =
None
15
_CACERT_PATH =
None
16
17
def
where
() -> str:
18
# This is slightly terrible, but we want to delay extracting the file
19
# in cases where we're inside of a zipimport situation until someone
20
# actually calls where(), but we don't want to re-extract the file
21
# on every call of where(), so we'll do it once then store it in a
22
# global variable.
23
global
_CACERT_CTX
24
global
_CACERT_PATH
25
if
_CACERT_PATH
is
None
:
26
# This is slightly janky, the importlib.resources API wants you to
27
# manage the cleanup of this file, so it doesn't actually return a
28
# path, it returns a context manager that will give you the path
29
# when you enter it and will do any cleanup when you leave it. In
30
# the common case of not needing a temporary file, it will just
31
# return the file system location and the __exit__() is a no-op.
32
#
33
# We also have to hold onto the actual context manager, because
34
# it will do the cleanup whenever it gets garbage collected, so
35
# we will also store that at the global level as well.
36
_CACERT_CTX = as_file(files(
"pip._vendor.certifi"
).
joinpath
(
"cacert.pem"
))
37
_CACERT_PATH = str(
_CACERT_CTX.__enter__
())
38
39
return
_CACERT_PATH
40
41
def
contents
() -> str:
42
return
files(
"pip._vendor.certifi"
).
joinpath
(
"cacert.pem"
).
read_text
(encoding=
"ascii"
)
43
44
elif
sys.version_info
>= (3, 7):
45
46
from
importlib.resources
import
path
as
get_path, read_text
47
48
_CACERT_CTX =
None
49
_CACERT_PATH =
None
50
51
def
where
() -> str:
52
# This is slightly terrible, but we want to delay extracting the
53
# file in cases where we're inside of a zipimport situation until
54
# someone actually calls where(), but we don't want to re-extract
55
# the file on every call of where(), so we'll do it once then store
56
# it in a global variable.
57
global
_CACERT_CTX
58
global
_CACERT_PATH
59
if
_CACERT_PATH
is
None
:
60
# This is slightly janky, the importlib.resources API wants you
61
# to manage the cleanup of this file, so it doesn't actually
62
# return a path, it returns a context manager that will give
63
# you the path when you enter it and will do any cleanup when
64
# you leave it. In the common case of not needing a temporary
65
# file, it will just return the file system location and the
66
# __exit__() is a no-op.
67
#
68
# We also have to hold onto the actual context manager, because
69
# it will do the cleanup whenever it gets garbage collected, so
70
# we will also store that at the global level as well.
71
_CACERT_CTX =
get_path
(
"pip._vendor.certifi"
,
"cacert.pem"
)
72
_CACERT_PATH = str(
_CACERT_CTX.__enter__
())
73
74
return
_CACERT_PATH
75
76
def
contents
() -> str:
77
return
read_text
(
"pip._vendor.certifi"
,
"cacert.pem"
, encoding=
"ascii"
)
78
79
else
:
80
import
os
81
import
types
82
from
typing
import
Union
83
84
Package = Union[
types.ModuleType
, str]
85
Resource = Union[str,
"os.PathLike"
]
86
87
# This fallback will work for Python versions prior to 3.7 that lack the
88
# importlib.resources module but relies on the existing `where` function
89
# so won't address issues with environments like PyOxidizer that don't set
90
# __file__ on modules.
91
def
read_text
(
92
package: Package,
93
resource: Resource,
94
encoding: str =
'utf-8'
,
95
errors: str =
'strict'
96
) -> str:
97
with
open(
where
(), encoding=encoding)
as
data:
98
return
data.read
()
99
100
# If we don't have importlib.resources, then we will just do the old logic
101
# of assuming we're on the filesystem and munge the path directly.
102
def
where
() -> str:
103
f =
os.path.dirname
(__file__)
104
105
return
os.path.join
(f,
"cacert.pem"
)
106
107
def
contents
() -> str:
108
return
read_text
(
"pip._vendor.certifi"
,
"cacert.pem"
, encoding=
"ascii"
)
pip._vendor.certifi.core.where
str where()
Definition
core.py:17
pip._vendor.certifi.core.contents
str contents()
Definition
core.py:41
pip._vendor.certifi.core.read_text
str read_text(Package package, Resource resource, str encoding='utf-8', str errors='strict')
Definition
core.py:96
i
for i
Definition
prime_search.m:10
venv
lib
python3.12
site-packages
pip
_vendor
certifi
core.py
Generated by
1.9.8