FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
cpython/Lib/importlib/__init__.py at 2.7 · python-emscripten/cpython · GitHub
python-emscripten
cpython
Repository navigation
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
cpython
/
Lib
/
importlib
/
__init__.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
38 lines (33 loc) · 1.3 KB
Breadcrumbs
cpython
/
Lib
/
importlib
/
__init__.py
Copy path
File metadata and controls
38 lines (33 loc) · 1.3 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
"""Backport of importlib.import_module from 3.x."""
# While not critical (and in no way guaranteed!), it would be nice to keep this
# code compatible with Python 2.3.
import
sys
def
_resolve_name
(
name
,
package
,
level
):
"""Return the absolute name of the module to be imported."""
if
not
hasattr
(
package
,
'rindex'
):
raise
ValueError
(
"'package' not set to a string"
)
dot
=
len
(
package
)
for
x
in
xrange
(
level
,
1
,
-
1
):
try
:
dot
=
package
.
rindex
(
'.'
,
0
,
dot
)
except
ValueError
:
raise
ValueError
(
"attempted relative import beyond top-level "
"package"
)
return
"%s.%s"
%
(
package
[:
dot
],
name
)
def
import_module
(
name
,
package
=
None
):
"""Import a module.
The 'package' argument is required when performing a relative import. It
specifies the package to use as the anchor point from which to resolve the
relative import to an absolute import.
"""
if
name
.
startswith
(
'.'
):
if
not
package
:
raise
TypeError
(
"relative imports require the 'package' argument"
)
level
=
0
for
character
in
name
:
if
character
!=
'.'
:
break
level
+=
1
name
=
_resolve_name
(
name
[
level
:],
package
,
level
)
__import__
(
name
)
return
sys
.
modules
[
name
]
Back
|
FazBrowse Home
|
New Git URL