FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
Source.Python/addons/source-python/Python3/dummy_threading.py at main · CookStar/Source.Python · GitHub
CookStar
Source.Python
Repository navigation
Code
Issues
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
Source.Python
/
addons
/
source-python
/
Python3
/
dummy_threading.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
78 lines (64 loc) · 2.75 KB
Breadcrumbs
Source.Python
/
addons
/
source-python
/
Python3
/
dummy_threading.py
Copy path
File metadata and controls
78 lines (64 loc) · 2.75 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
"""Faux ``threading`` version using ``dummy_thread`` instead of ``thread``.
The module ``_dummy_threading`` is added to ``sys.modules`` in order
to not have ``threading`` considered imported. Had ``threading`` been
directly imported it would have made all subsequent imports succeed
regardless of whether ``_thread`` was available which is not desired.
"""
from
sys
import
modules
as
sys_modules
import
_dummy_thread
# Declaring now so as to not have to nest ``try``s to get proper clean-up.
holding_thread
=
False
holding_threading
=
False
holding__threading_local
=
False
try
:
# Could have checked if ``_thread`` was not in sys.modules and gone
# a different route, but decided to mirror technique used with
# ``threading`` below.
if
'_thread'
in
sys_modules
:
held_thread
=
sys_modules
[
'_thread'
]
holding_thread
=
True
# Must have some module named ``_thread`` that implements its API
# in order to initially import ``threading``.
sys_modules
[
'_thread'
]
=
sys_modules
[
'_dummy_thread'
]
if
'threading'
in
sys_modules
:
# If ``threading`` is already imported, might as well prevent
# trying to import it more than needed by saving it if it is
# already imported before deleting it.
held_threading
=
sys_modules
[
'threading'
]
holding_threading
=
True
del
sys_modules
[
'threading'
]
if
'_threading_local'
in
sys_modules
:
# If ``_threading_local`` is already imported, might as well prevent
# trying to import it more than needed by saving it if it is
# already imported before deleting it.
held__threading_local
=
sys_modules
[
'_threading_local'
]
holding__threading_local
=
True
del
sys_modules
[
'_threading_local'
]
import
threading
# Need a copy of the code kept somewhere...
sys_modules
[
'_dummy_threading'
]
=
sys_modules
[
'threading'
]
del
sys_modules
[
'threading'
]
sys_modules
[
'_dummy__threading_local'
]
=
sys_modules
[
'_threading_local'
]
del
sys_modules
[
'_threading_local'
]
from
_dummy_threading
import
*
from
_dummy_threading
import
__all__
finally
:
# Put back ``threading`` if we overwrote earlier
if
holding_threading
:
sys_modules
[
'threading'
]
=
held_threading
del
held_threading
del
holding_threading
# Put back ``_threading_local`` if we overwrote earlier
if
holding__threading_local
:
sys_modules
[
'_threading_local'
]
=
held__threading_local
del
held__threading_local
del
holding__threading_local
# Put back ``thread`` if we overwrote, else del the entry we made
if
holding_thread
:
sys_modules
[
'_thread'
]
=
held_thread
del
held_thread
else
:
del
sys_modules
[
'_thread'
]
del
holding_thread
del
_dummy_thread
del
sys_modules
Back
|
FazBrowse Home
|
New Git URL