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
56829d5b
Kaydet (Commit)
56829d5b
authored
Tem 06, 2006
tarafından
Nick Coghlan
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Revert the __module_name__ changes made in rev 47142. We'll revisit this in Python 2.6
üst
bf84e540
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
26 additions
and
47 deletions
+26
-47
librunpy.tex
Doc/lib/librunpy.tex
+8
-13
runpy.py
Lib/runpy.py
+13
-21
test_runpy.py
Lib/test/test_runpy.py
+5
-13
No files found.
Doc/lib/librunpy.tex
Dosyayı görüntüle @
56829d5b
...
...
@@ -35,19 +35,16 @@ The supplied dictionary will not be modified. If any of the special
global variables below are defined in the supplied dictionary, those
definitions are overridden by the
\code
{
run
_
module
}
function.
The special global variables
\code
{__
name
__}
,
\code
{__
module
_
nam
e
__}
,
\code
{__
file
__}
,
\code
{__
loader
__}
and
\code
{__
builtins
__}
are
set in the globals
dictionary before the module code is executed.
The special global variables
\code
{__
name
__}
,
\code
{__
fil
e
__}
,
\code
{__
loader
__}
and
\code
{__
builtins
__}
are set in the globals
dictionary before the module code is executed.
\code
{__
name
__}
is set to
\var
{
run
_
name
}
if this optional argument is
supplied, and the
\var
{
mod
_
name
}
argument otherwise.
\code
{__
module
_
name
__}
is always set to
\var
{
mod
_
name
}
(this allows
modules to use imports relative to their package name).
\code
{__
loader
__}
is set to the PEP 302 module loader used to retrieve
the code for the module (This
will not be defined if the module was
found using the
standard import mechanism).
the code for the module (This
loader may be a wrapper around the
standard import mechanism).
\code
{__
file
__}
is set to the name provided by the module loader. If
the loader does not make filename information available, this
...
...
@@ -58,12 +55,10 @@ the top level namespace of the \module{__builtin__} module.
If the argument
\var
{
alter
_
sys
}
is supplied and evaluates to
\code
{
True
}
, then
\code
{
sys.argv[0]
}
is updated with the value of
\code
{__
file
__}
and
\code
{
sys.modules[
mod
_
name
]
}
is updated with a
\code
{__
file
__}
and
\code
{
sys.modules[
__
name
__
]
}
is updated with a
temporary module object for the module being executed. Both
\code
{
sys.argv[0]
}
and
\code
{
sys.modules[mod
_
name]
}
are restored to
their original values before the function returns. If
\var
{
run
_
name
}
differs from
\var
{
mod
_
name
}
entries are made in
\code
{
sys.modules
}
for both names.
\code
{
sys.argv[0]
}
and
\code
{
sys.modules[
__
name
__
]
}
are restored to
their original values before the function returns.
Note that this manipulation of
\module
{
sys
}
is not thread-safe. Other
threads may see the partially initialised module, as well as the
...
...
Lib/runpy.py
Dosyayı görüntüle @
56829d5b
...
...
@@ -21,19 +21,18 @@ __all__ = [
]
def
_run_code
(
code
,
run_globals
,
init_globals
,
run_name
,
def
_run_code
(
code
,
run_globals
,
init_globals
,
mod_name
,
mod_fname
,
mod_loader
):
"""Helper for _run_module_code"""
if
init_globals
is
not
None
:
run_globals
.
update
(
init_globals
)
run_globals
.
update
(
__name__
=
run_name
,
__module_name__
=
mod_name
,
run_globals
.
update
(
__name__
=
mod_name
,
__file__
=
mod_fname
,
__loader__
=
mod_loader
)
exec
code
in
run_globals
return
run_globals
def
_run_module_code
(
code
,
init_globals
=
None
,
run_name
=
None
,
def
_run_module_code
(
code
,
init_globals
=
None
,
mod_name
=
None
,
mod_fname
=
None
,
mod_loader
=
None
,
alter_sys
=
False
):
"""Helper for run_module"""
...
...
@@ -43,33 +42,26 @@ def _run_module_code(code, init_globals=None, run_name=None,
temp_module
=
imp
.
new_module
(
mod_name
)
mod_globals
=
temp_module
.
__dict__
saved_argv0
=
sys
.
argv
[
0
]
sentinel
=
object
()
module_mod_name
=
sys
.
modules
.
get
(
mod_name
,
sentinel
)
module_run_name
=
sys
.
modules
.
get
(
run_name
,
sentinel
)
restore_module
=
mod_name
in
sys
.
modules
if
restore_module
:
saved_module
=
sys
.
modules
[
mod_name
]
sys
.
argv
[
0
]
=
mod_fname
sys
.
modules
[
mod_name
]
=
temp_module
if
run_name
!=
mod_name
:
sys
.
modules
[
run_name
]
=
temp_module
try
:
_run_code
(
code
,
mod_globals
,
init_globals
,
run_name
,
_run_code
(
code
,
mod_globals
,
init_globals
,
mod_name
,
mod_fname
,
mod_loader
)
finally
:
sys
.
argv
[
0
]
=
saved_argv0
if
module_mod_name
is
not
sentinel
:
sys
.
modules
[
mod_name
]
=
module_mod_name
else
:
del
sys
.
modules
[
mod_name
]
if
run_name
!=
mod_name
:
if
module_run_name
is
not
sentinel
:
sys
.
modules
[
run_name
]
=
module_run_name
else
:
del
sys
.
modules
[
run_name
]
if
restore_module
:
sys
.
modules
[
mod_name
]
=
saved_module
else
:
del
sys
.
modules
[
mod_name
]
# Copy the globals of the temporary module, as they
# may be cleared when the temporary module goes away
return
mod_globals
.
copy
()
else
:
# Leave the sys module alone
return
_run_code
(
code
,
{},
init_globals
,
run_name
,
return
_run_code
(
code
,
{},
init_globals
,
mod_name
,
mod_fname
,
mod_loader
)
...
...
@@ -100,7 +92,7 @@ def run_module(mod_name, init_globals=None,
if
run_name
is
None
:
run_name
=
mod_name
return
_run_module_code
(
code
,
init_globals
,
run_name
,
mod_name
,
filename
,
loader
,
alter_sys
)
filename
,
loader
,
alter_sys
)
if
__name__
==
"__main__"
:
...
...
Lib/test/test_runpy.py
Dosyayı görüntüle @
56829d5b
...
...
@@ -23,8 +23,6 @@ class RunModuleCodeTest(unittest.TestCase):
"run_argv0 = sys.argv[0]
\n
"
"if __name__ in sys.modules:
\n
"
" run_name = sys.modules[__name__].__name__
\n
"
"if __module_name__ in sys.modules:
\n
"
" mod_name = sys.modules[__module_name__].__module_name__
\n
"
"# Check nested operation
\n
"
"import runpy
\n
"
"nested = runpy._run_module_code('x=1
\\
n', mod_name='<run>',
\n
"
...
...
@@ -34,16 +32,14 @@ class RunModuleCodeTest(unittest.TestCase):
def
test_run_module_code
(
self
):
initial
=
object
()
run_name
=
"<Nonsense>"
mod_name
=
"<ModuleNonsense>"
name
=
"<Nonsense>"
file
=
"Some other nonsense"
loader
=
"Now you're just being silly"
d1
=
dict
(
initial
=
initial
)
saved_argv0
=
sys
.
argv
[
0
]
d2
=
_run_module_code
(
self
.
test_source
,
d1
,
run_name
,
mod_name
,
name
,
file
,
loader
,
True
)
...
...
@@ -51,23 +47,19 @@ class RunModuleCodeTest(unittest.TestCase):
self
.
failUnless
(
d2
[
"initial"
]
is
initial
)
self
.
failUnless
(
d2
[
"result"
]
==
self
.
expected_result
)
self
.
failUnless
(
d2
[
"nested"
][
"x"
]
==
1
)
self
.
failUnless
(
d2
[
"__name__"
]
is
run_name
)
self
.
failUnless
(
d2
[
"run_name"
]
is
run_name
)
self
.
failUnless
(
d2
[
"__module_name__"
]
is
mod_name
)
self
.
failUnless
(
d2
[
"mod_name"
]
is
mod_name
)
self
.
failUnless
(
d2
[
"__name__"
]
is
name
)
self
.
failUnless
(
d2
[
"run_name"
]
is
name
)
self
.
failUnless
(
d2
[
"__file__"
]
is
file
)
self
.
failUnless
(
d2
[
"run_argv0"
]
is
file
)
self
.
failUnless
(
d2
[
"__loader__"
]
is
loader
)
self
.
failUnless
(
sys
.
argv
[
0
]
is
saved_argv0
)
self
.
failUnless
(
mod_name
not
in
sys
.
modules
)
self
.
failUnless
(
run_name
not
in
sys
.
modules
)
self
.
failUnless
(
name
not
in
sys
.
modules
)
def
test_run_module_code_defaults
(
self
):
saved_argv0
=
sys
.
argv
[
0
]
d
=
_run_module_code
(
self
.
test_source
)
self
.
failUnless
(
d
[
"result"
]
==
self
.
expected_result
)
self
.
failUnless
(
d
[
"__name__"
]
is
None
)
self
.
failUnless
(
d
[
"__module_name__"
]
is
None
)
self
.
failUnless
(
d
[
"__file__"
]
is
None
)
self
.
failUnless
(
d
[
"__loader__"
]
is
None
)
self
.
failUnless
(
d
[
"run_argv0"
]
is
saved_argv0
)
...
...
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