Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
06c9d96b
Kaydet (Commit)
06c9d96b
authored
15 years ago
tarafından
Brett Cannon
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Move importlib completely over to using rpartition and accepting the empty
string for top-level modules.
üst
d94e558f
No related merge requests found
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
22 additions
and
15 deletions
+22
-15
NOTES
Lib/importlib/NOTES
+1
-4
_bootstrap.py
Lib/importlib/_bootstrap.py
+18
-9
test_loader.py
Lib/importlib/test/extension/test_loader.py
+2
-1
test_loader.py
Lib/importlib/test/source/test_loader.py
+1
-1
No files found.
Lib/importlib/NOTES
Dosyayı görüntüle @
06c9d96b
to do
/////
* Use rpartition for getting the package of a module.
+ Make sure there is a test for the empty string as acceptable for
__package__.
* Extract test_path_hooks constants into a util module for extension testing.
* Implement PEP 302 protocol for loaders (should just be a matter of testing).
...
...
This diff is collapsed.
Click to expand it.
Lib/importlib/_bootstrap.py
Dosyayı görüntüle @
06c9d96b
...
...
@@ -90,6 +90,18 @@ class closing:
self
.
obj
.
close
()
def
set___package__
(
fxn
):
"""Set __package__ on the returned module."""
def
wrapper
(
*
args
,
**
kwargs
):
module
=
fxn
(
*
args
,
**
kwargs
)
if
not
hasattr
(
module
,
'__package__'
)
or
module
.
__package__
is
None
:
module
.
__package__
=
module
.
__name__
if
not
hasattr
(
module
,
'__path__'
):
module
.
__package__
=
module
.
__package__
.
rpartition
(
'.'
)[
0
]
return
module
return
wrapper
class
BuiltinImporter
:
"""Meta path loader for built-in modules.
...
...
@@ -111,12 +123,12 @@ class BuiltinImporter:
return
cls
if
imp
.
is_builtin
(
fullname
)
else
None
@classmethod
@set___package__
def
load_module
(
cls
,
fullname
):
"""Load a built-in module."""
if
fullname
not
in
sys
.
builtin_module_names
:
raise
ImportError
(
"{0} is not a built-in module"
.
format
(
fullname
))
module
=
imp
.
init_builtin
(
fullname
)
module
.
__package__
=
''
return
module
...
...
@@ -135,14 +147,12 @@ class FrozenImporter:
return
cls
if
imp
.
is_frozen
(
fullname
)
else
None
@classmethod
@set___package__
def
load_module
(
cls
,
fullname
):
"""Load a frozen module."""
if
cls
.
find_module
(
fullname
)
is
None
:
raise
ImportError
(
"{0} is not a frozen module"
.
format
(
fullname
))
module
=
imp
.
init_frozen
(
fullname
)
module
.
__package__
=
module
.
__name__
if
not
hasattr
(
module
,
'__path__'
):
module
.
__package__
=
module
.
__package__
.
rpartition
(
'.'
)[
0
]
return
module
...
...
@@ -230,6 +240,7 @@ class _ExtensionFileLoader(object):
raise
ValueError
(
"extension modules cannot be packages"
)
@check_name
@set___package__
def
load_module
(
self
,
fullname
):
"""Load an extension module."""
assert
self
.
_name
==
fullname
...
...
@@ -368,11 +379,9 @@ class _PyFileLoader(object):
module
.
__loader__
=
self
if
self
.
_is_pkg
:
module
.
__path__
=
[
module
.
__file__
.
rsplit
(
path_sep
,
1
)[
0
]]
module
.
__package__
=
module
.
__name__
elif
'.'
in
module
.
__name__
:
module
.
__package__
=
module
.
__name__
.
rsplit
(
'.'
,
1
)[
0
]
else
:
module
.
__package__
=
None
module
.
__package__
=
module
.
__name__
if
not
hasattr
(
module
,
'__path__'
):
module
.
__package__
=
module
.
__package__
.
rpartition
(
'.'
)[
0
]
exec
(
code_object
,
module
.
__dict__
)
return
module
...
...
This diff is collapsed.
Click to expand it.
Lib/importlib/test/extension/test_loader.py
Dosyayı görüntüle @
06c9d96b
...
...
@@ -21,7 +21,8 @@ class LoaderTests(abc.LoaderTests):
with
util
.
uncache
(
test_path_hook
.
NAME
):
module
=
self
.
load_module
(
test_path_hook
.
NAME
)
for
attr
,
value
in
[(
'__name__'
,
test_path_hook
.
NAME
),
(
'__file__'
,
test_path_hook
.
FILEPATH
)]:
(
'__file__'
,
test_path_hook
.
FILEPATH
),
(
'__package__'
,
''
)]:
self
.
assertEqual
(
getattr
(
module
,
attr
),
value
)
self
.
assert_
(
test_path_hook
.
NAME
in
sys
.
modules
)
...
...
This diff is collapsed.
Click to expand it.
Lib/importlib/test/source/test_loader.py
Dosyayı görüntüle @
06c9d96b
...
...
@@ -23,7 +23,7 @@ class SimpleTest(unittest.TestCase):
module
=
loader
.
load_module
(
'_temp'
)
self
.
assert_
(
'_temp'
in
sys
.
modules
)
check
=
{
'__name__'
:
'_temp'
,
'__file__'
:
mapping
[
'_temp'
],
'__package__'
:
None
}
'__package__'
:
''
}
for
attr
,
value
in
check
.
items
():
self
.
assertEqual
(
getattr
(
module
,
attr
),
value
)
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment