Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
01688022
Commit
01688022
authored
Aug 12, 2007
by
Neal Norwitz
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Kill execfile(), use exec() instead
parent
41eaedd3
Changes
98
Hide whitespace changes
Inline
Side-by-side
Showing
98 changed files
with
179 additions
and
341 deletions
+179
-341
Demo/scripts/newslist.py
Demo/scripts/newslist.py
+1
-1
Demo/scripts/pp.py
Demo/scripts/pp.py
+3
-2
Doc/dist/dist.tex
Doc/dist/dist.tex
+1
-1
Doc/howto/doanddont.tex
Doc/howto/doanddont.tex
+3
-3
Doc/lib/libdoctest.tex
Doc/lib/libdoctest.tex
+1
-1
Doc/lib/libexcs.tex
Doc/lib/libexcs.tex
+1
-1
Doc/lib/libfuncs.tex
Doc/lib/libfuncs.tex
+2
-29
Doc/lib/libuser.tex
Doc/lib/libuser.tex
+1
-1
Doc/ref/ref4.tex
Doc/ref/ref4.tex
+3
-4
Doc/ref/ref6.tex
Doc/ref/ref6.tex
+3
-4
Doc/tut/tut.tex
Doc/tut/tut.tex
+7
-7
Lib/CGIHTTPServer.py
Lib/CGIHTTPServer.py
+1
-1
Lib/cProfile.py
Lib/cProfile.py
+6
-1
Lib/distutils/core.py
Lib/distutils/core.py
+2
-2
Lib/doctest.py
Lib/doctest.py
+8
-5
Lib/lib-tk/Tkinter.py
Lib/lib-tk/Tkinter.py
+4
-4
Lib/optparse.py
Lib/optparse.py
+1
-1
Lib/pdb.py
Lib/pdb.py
+6
-1
Lib/plat-mac/appletrawmain.py
Lib/plat-mac/appletrawmain.py
+1
-1
Lib/plat-mac/bundlebuilder.py
Lib/plat-mac/bundlebuilder.py
+6
-1
Lib/profile.py
Lib/profile.py
+6
-1
Lib/test/test_builtin.py
Lib/test/test_builtin.py
+0
-55
Lib/test/test_multibytecodec.py
Lib/test/test_multibytecodec.py
+1
-1
Lib/test/test_pkg.py
Lib/test/test_pkg.py
+1
-1
Lib/test/test_univnewlines.py
Lib/test/test_univnewlines.py
+0
-7
Lib/trace.py
Lib/trace.py
+6
-1
Lib/user.py
Lib/user.py
+2
-2
Mac/Modules/ae/aescan.py
Mac/Modules/ae/aescan.py
+1
-1
Mac/Modules/ae/aesupport.py
Mac/Modules/ae/aesupport.py
+2
-2
Mac/Modules/ah/ahscan.py
Mac/Modules/ah/ahscan.py
+1
-1
Mac/Modules/ah/ahsupport.py
Mac/Modules/ah/ahsupport.py
+1
-1
Mac/Modules/app/appscan.py
Mac/Modules/app/appscan.py
+1
-1
Mac/Modules/app/appsupport.py
Mac/Modules/app/appsupport.py
+1
-1
Mac/Modules/carbonevt/CarbonEvtscan.py
Mac/Modules/carbonevt/CarbonEvtscan.py
+1
-1
Mac/Modules/carbonevt/CarbonEvtsupport.py
Mac/Modules/carbonevt/CarbonEvtsupport.py
+1
-1
Mac/Modules/cf/cfscan.py
Mac/Modules/cf/cfscan.py
+1
-1
Mac/Modules/cf/cfsupport.py
Mac/Modules/cf/cfsupport.py
+1
-1
Mac/Modules/cg/cgscan.py
Mac/Modules/cg/cgscan.py
+1
-1
Mac/Modules/cg/cgsupport.py
Mac/Modules/cg/cgsupport.py
+1
-1
Mac/Modules/cm/cmscan.py
Mac/Modules/cm/cmscan.py
+1
-1
Mac/Modules/cm/cmsupport.py
Mac/Modules/cm/cmsupport.py
+1
-1
Mac/Modules/ctl/ctlscan.py
Mac/Modules/ctl/ctlscan.py
+1
-1
Mac/Modules/ctl/ctlsupport.py
Mac/Modules/ctl/ctlsupport.py
+2
-2
Mac/Modules/dlg/dlgscan.py
Mac/Modules/dlg/dlgscan.py
+1
-1
Mac/Modules/dlg/dlgsupport.py
Mac/Modules/dlg/dlgsupport.py
+1
-1
Mac/Modules/drag/dragscan.py
Mac/Modules/drag/dragscan.py
+1
-1
Mac/Modules/drag/dragsupport.py
Mac/Modules/drag/dragsupport.py
+1
-1
Mac/Modules/evt/evtscan.py
Mac/Modules/evt/evtscan.py
+1
-1
Mac/Modules/evt/evtsupport.py
Mac/Modules/evt/evtsupport.py
+1
-1
Mac/Modules/file/filescan.py
Mac/Modules/file/filescan.py
+1
-1
Mac/Modules/file/filesupport.py
Mac/Modules/file/filesupport.py
+2
-2
Mac/Modules/fm/fmscan.py
Mac/Modules/fm/fmscan.py
+1
-1
Mac/Modules/fm/fmsupport.py
Mac/Modules/fm/fmsupport.py
+1
-1
Mac/Modules/folder/folderscan.py
Mac/Modules/folder/folderscan.py
+1
-1
Mac/Modules/folder/foldersupport.py
Mac/Modules/folder/foldersupport.py
+2
-2
Mac/Modules/help/helpscan.py
Mac/Modules/help/helpscan.py
+1
-1
Mac/Modules/help/helpsupport.py
Mac/Modules/help/helpsupport.py
+1
-1
Mac/Modules/ibcarbon/IBCarbonscan.py
Mac/Modules/ibcarbon/IBCarbonscan.py
+1
-1
Mac/Modules/ibcarbon/IBCarbonsupport.py
Mac/Modules/ibcarbon/IBCarbonsupport.py
+1
-1
Mac/Modules/icn/icnscan.py
Mac/Modules/icn/icnscan.py
+1
-1
Mac/Modules/icn/icnsupport.py
Mac/Modules/icn/icnsupport.py
+1
-1
Mac/Modules/launch/launchscan.py
Mac/Modules/launch/launchscan.py
+1
-1
Mac/Modules/launch/launchsupport.py
Mac/Modules/launch/launchsupport.py
+2
-2
Mac/Modules/list/listscan.py
Mac/Modules/list/listscan.py
+1
-1
Mac/Modules/list/listsupport.py
Mac/Modules/list/listsupport.py
+1
-1
Mac/Modules/menu/menuscan.py
Mac/Modules/menu/menuscan.py
+1
-1
Mac/Modules/menu/menusupport.py
Mac/Modules/menu/menusupport.py
+2
-2
Mac/Modules/mlte/mltescan.py
Mac/Modules/mlte/mltescan.py
+1
-1
Mac/Modules/mlte/mltesupport.py
Mac/Modules/mlte/mltesupport.py
+2
-2
Mac/Modules/osa/osascan.py
Mac/Modules/osa/osascan.py
+1
-1
Mac/Modules/osa/osasupport.py
Mac/Modules/osa/osasupport.py
+2
-2
Mac/Modules/qd/qdscan.py
Mac/Modules/qd/qdscan.py
+1
-1
Mac/Modules/qd/qdsupport.py
Mac/Modules/qd/qdsupport.py
+2
-2
Mac/Modules/qdoffs/qdoffsscan.py
Mac/Modules/qdoffs/qdoffsscan.py
+1
-1
Mac/Modules/qdoffs/qdoffssupport.py
Mac/Modules/qdoffs/qdoffssupport.py
+1
-1
Mac/Modules/qt/qtscan.py
Mac/Modules/qt/qtscan.py
+1
-1
Mac/Modules/qt/qtsupport.py
Mac/Modules/qt/qtsupport.py
+2
-2
Mac/Modules/res/resscan.py
Mac/Modules/res/resscan.py
+1
-1
Mac/Modules/res/ressupport.py
Mac/Modules/res/ressupport.py
+2
-2
Mac/Modules/scrap/scrapscan.py
Mac/Modules/scrap/scrapscan.py
+1
-1
Mac/Modules/scrap/scrapsupport.py
Mac/Modules/scrap/scrapsupport.py
+1
-1
Mac/Modules/snd/sndscan.py
Mac/Modules/snd/sndscan.py
+1
-1
Mac/Modules/snd/sndsupport.py
Mac/Modules/snd/sndsupport.py
+1
-1
Mac/Modules/te/tescan.py
Mac/Modules/te/tescan.py
+1
-1
Mac/Modules/te/tesupport.py
Mac/Modules/te/tesupport.py
+1
-1
Mac/Modules/win/winscan.py
Mac/Modules/win/winscan.py
+1
-1
Mac/Modules/win/winsupport.py
Mac/Modules/win/winsupport.py
+3
-3
Misc/NEWS
Misc/NEWS
+1
-1
Misc/Vim/python.vim
Misc/Vim/python.vim
+2
-2
Misc/cheatsheet
Misc/cheatsheet
+4
-12
Misc/python-mode.el
Misc/python-mode.el
+6
-6
Objects/fileobject.c
Objects/fileobject.c
+1
-1
Python/bltinmodule.c
Python/bltinmodule.c
+0
-102
README
README
+1
-1
Tools/scripts/hotshotmain.py
Tools/scripts/hotshotmain.py
+6
-1
Tools/versioncheck/README
Tools/versioncheck/README
+1
-1
Tools/versioncheck/checkversions.py
Tools/versioncheck/checkversions.py
+1
-1
setup.py
setup.py
+6
-1
No files found.
Demo/scripts/newslist.py
View file @
01688022
...
...
@@ -99,7 +99,7 @@ for dir in os.curdir, os.environ['HOME']:
rcfile
=
os
.
path
.
join
(
dir
,
'.newslistrc.py'
)
if
os
.
path
.
exists
(
rcfile
):
print
(
rcfile
)
exec
file
(
rcfile
)
exec
(
open
(
rcfile
).
read
()
)
break
from
nntplib
import
NNTP
...
...
Demo/scripts/pp.py
View file @
01688022
...
...
@@ -123,8 +123,9 @@ import tempfile
fp
=
tempfile
.
NamedTemporaryFile
()
fp
.
write
(
program
)
fp
.
flush
()
script
=
open
(
tfn
).
read
()
if
DFLAG
:
import
pdb
pdb
.
run
(
'execfile(%r)'
%
(
tfn
,)
)
pdb
.
run
(
script
)
else
:
exec
file
(
tfn
)
exec
(
script
)
Doc/dist/dist.tex
View file @
01688022
...
...
@@ -2290,7 +2290,7 @@ This is useful if you need to find out the distribution meta-data
(passed as keyword args from
\var
{
script
}
to
\function
{
setup()
}
), or
the contents of the config files or command-line.
\var
{
script
_
name
}
is a file that will be r
un with
\function
{
execfile
()
}
\var
{
script
_
name
}
is a file that will be r
ead and run with
\function
{
exec
()
}
\code
{
sys.argv[0]
}
will be replaced with
\var
{
script
}
for the duration of the
call.
\var
{
script
_
args
}
is a list of strings; if supplied,
\code
{
sys.argv[1:]
}
will be replaced by
\var
{
script
_
args
}
for the duration
...
...
Doc/howto/doanddont.tex
View file @
01688022
...
...
@@ -81,7 +81,7 @@ There are situations in which \code{from module import *} is just fine:
\end{itemize}
\subsection
{
Unadorned
\function
{
exec
}
,
\function
{
execfile
}
and friends
}
\subsection
{
Unadorned
\function
{
exec
}
and friends
}
The word ``unadorned'' refers to the use without an explicit dictionary,
in which case those constructs evaluate code in the
{
\em
current
}
environment.
...
...
@@ -97,7 +97,7 @@ Bad examples:
>>> def func(s, **kw):
>>> for var, val in kw.items():
>>> exec("s.
%s=val" % var) # invalid!
>>> exec
file("handler.py"
)
>>> exec
(open("handler.py").read()
)
>>> handle()
\end{verbatim}
...
...
@@ -111,7 +111,7 @@ Good examples:
>>> for var, val in kw.items():
>>> setattr(s, var, val)
>>> d=
{}
>>> exec
file("handle.py"
, d, d)
>>> exec
(open("handler.py").read()
, d, d)
>>> handle = d['handle']
>>> handle()
\end{verbatim}
...
...
Doc/lib/libdoctest.tex
View file @
01688022
...
...
@@ -1828,7 +1828,7 @@ print doctest.testsource(a, "a.f")
via
\function
{
\refmodule
{
pdb
}
.post
_
mortem()
}
, passing the traceback object
from the unhandled exception. If
\var
{
pm
}
is not specified, or is false,
the script is run under the debugger from the start, via passing an
appropriate
\function
{
exec
file
()
}
call to
\function
{
\refmodule
{
pdb
}
.run()
}
.
appropriate
\function
{
exec()
}
call to
\function
{
\refmodule
{
pdb
}
.run()
}
.
\versionadded
{
2.3
}
...
...
Doc/lib/libexcs.tex
View file @
01688022
...
...
@@ -260,7 +260,7 @@ Raised when an \keyword{assert} statement fails.
% XXXJH xref to these functions?
Raised when the parser encounters a syntax error. This may occur in
an
\keyword
{
import
}
statement, in a call to the built-in functions
\function
{
exec()
}
,
\function
{
e
xecfile()
}
,
\function
{
e
val()
}
or
\function
{
exec()
}
,
\function
{
eval()
}
or
\function
{
input()
}
, or when reading the initial script or standard
input (also interactively).
...
...
Doc/lib/libfuncs.tex
View file @
01688022
...
...
@@ -382,15 +382,13 @@ class C:
compiled passing
\code
{
'eval'
}
as the
\var
{
kind
}
argument.
Hints: dynamic execution of statements is supported by the
\function
{
exec()
}
function. Execution of statements from a file is
supported by the
\function
{
execfile()
}
function. The
\function
{
exec()
}
function. The
\function
{
globals()
}
and
\function
{
locals()
}
functions returns the
current global and local dictionary, respectively, which may be
useful to pass around for use by
\function
{
eval()
}
or
\function
{
exec
file
()
}
.
\function
{
exec()
}
.
\end{funcdesc}
\begin{funcdesc}
{
exec
}{
object
\optional
{
, globals
\optional
{
, locals
}}}
This function supports dynamic execution of Python code.
\var
{
object
}
must be either a string, an open file object, or
...
...
@@ -425,31 +423,6 @@ class C:
argument to
\function
{
exec()
}
.
}
\end{funcdesc}
\begin{funcdesc}
{
execfile
}{
filename
\optional
{
, globals
\optional
{
, locals
}}}
This function is similar to the
\function
{
exec()
}
function, but parses a
file given by the file name instead of a string. It
is different from the
\keyword
{
import
}
statement in that it does not
use the module administration --- it reads the file unconditionally
and does not create a new module.
The arguments are a file name and two optional dictionaries. The file is
parsed and evaluated as a sequence of Python statements (similarly to a
module) using the
\var
{
globals
}
and
\var
{
locals
}
dictionaries as global and
local namespace. If provided,
\var
{
locals
}
can be any mapping object.
\versionchanged
[formerly \var{locals} was required to be a dictionary]
{
2.4
}
If the
\var
{
locals
}
dictionary is omitted it defaults to the
\var
{
globals
}
dictionary. If both dictionaries are omitted, the expression is executed in
the environment where
\function
{
execfile()
}
is called. The return value is
\code
{
None
}
.
\warning
{
The default
\var
{
locals
}
act as described for function
\function
{
locals()
}
below: modifications to the default
\var
{
locals
}
dictionary should not be attempted. Pass an explicit
\var
{
locals
}
dictionary if you need to see effects of the code on
\var
{
locals
}
after
function
\function
{
execfile()
}
returns.
\function
{
execfile()
}
cannot
be used reliably to modify a function's locals.
}
\end{funcdesc}
\begin{funcdesc}
{
file
}{
filename
\optional
{
, mode
\optional
{
, bufsize
}}}
Constructor function for the
\class
{
file
}
type, described further
in section~
\ref
{
bltin-file-objects
}
, ``
\ulink
{
File
...
...
Doc/lib/libuser.tex
View file @
01688022
...
...
@@ -24,7 +24,7 @@ import user
The
\module
{
user
}
module looks for a file
\file
{
.pythonrc.py
}
in the user's
home directory and if it can be opened, executes it (using
\function
{
exec
file()
}
\bifuncindex
{
execfile
}
) in its own (the
\function
{
exec
()
}
\bifuncindex
{
exec
}
) in its own (the
module
\module
{
user
}
's) global namespace. Errors during this phase
are not caught; that's up to the program that imports the
\module
{
user
}
module, if it wishes. The home directory is assumed to
...
...
Doc/ref/ref4.tex
View file @
01688022
...
...
@@ -19,8 +19,7 @@ block. A script file (a file given as standard input to the
interpreter or specified on the interpreter command line the first
argument) is a code block. A script command (a command specified on
the interpreter command line with the `
\strong
{
-c
}
' option) is a code
block. The file read by the built-in function
\function
{
execfile()
}
is a code block. The string argument passed to the built-in functions
block. The string argument passed to the built-in functions
\function
{
eval()
}
and
\function
{
exec()
}
is a code block.
The expression read and evaluated by the built-in function
\function
{
input()
}
is a code block.
...
...
@@ -139,7 +138,7 @@ If the wild card form of import --- \samp{import *} --- is used in a
function and the function contains or is a nested block with free
variables, the compiler will raise a
\exception
{
SyntaxError
}
.
The
\function
{
eval()
}
,
\function
{
exec()
}
,
\function
{
execfile()
}
,
The
\function
{
eval()
}
,
\function
{
exec()
}
,
and
\function
{
input()
}
functions do not have access to the
full environment for resolving names. Names may be resolved in the
local and global namespaces of the caller. Free variables are not
...
...
@@ -147,7 +146,7 @@ resolved in the nearest enclosing namespace, but in the global
namespace.
\footnote
{
This limitation occurs because the code that is
executed by these operations is not available at the time the
module is compiled.
}
The
\function
{
exec()
}
,
\function
{
eval()
}
and
\function
{
execfile
()
}
The
\function
{
exec()
}
and
\function
{
eval
()
}
functions have optional arguments to override
the global and local namespace. If only one namespace is specified,
it is used for both.
...
...
Doc/ref/ref6.tex
View file @
01688022
...
...
@@ -760,8 +760,8 @@ import __future__ [as name]
That is not a future statement; it's an ordinary import statement with
no special semantics or syntax restrictions.
Code compiled by calls to the builtin functions
\function
{
exec()
}
,
\function
{
compile()
}
and
\function
{
execfile()
}
that occur in a module
Code compiled by calls to the builtin functions
\function
{
exec()
}
and
\function
{
compile()
}
that occur in a module
\module
{
M
}
containing a future statement will, by default, use the new
syntax or semantics associated with the future statement. This can,
starting with Python 2.2 be controlled by optional arguments to
...
...
@@ -811,9 +811,8 @@ string or code object supplied to the builtin \function{exec()} function
does not affect the code block
\emph
{
containing
}
the function call,
and code contained in such a string is unaffected by
\keyword
{
global
}
statements in the code containing the function call. The same applies to the
\function
{
eval()
}
,
\function
{
execfile()
}
and
\function
{
compile()
}
functions.
\function
{
eval()
}
and
\function
{
compile()
}
functions.
\bifuncindex
{
exec
}
\bifuncindex
{
eval
}
\bifuncindex
{
execfile
}
\bifuncindex
{
compile
}
Doc/tut/tut.tex
View file @
01688022
...
...
@@ -409,14 +409,14 @@ this file.
If you want to read an additional start
-
up file from the current
directory, you can program this in the global start
-
up file using code
like
\samp
{
if os.path.isfile
(
'.pythonrc.py'
)
:
exec
file
(
'.pythonrc.py'
)
}
. If you want to use the startup file in a
exec
(
open
(
'.pythonrc.py'
))
.read
(
)
}
. If you want to use the startup file in a
script, you must do this explicitly in the script:
\begin
{
verbatim
}
import os
filename
=
os.environ.get
(
'PYTHONSTARTUP'
)
if filename and os.path.isfile
(
filename
)
:
exec
file
(
filename
)
exec
(
open
(
filename
)
.read
()
)
\end
{
verbatim
}
...
...
@@ -2736,14 +2736,14 @@ standard module \module{__builtin__}\refbimodindex{__builtin__}:
'
__
name
__
', 'abs', 'basestring', 'bool', 'buffer',
'chr', 'classmethod', 'cmp', 'compile',
'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod',
'enumerate', 'eval', 'exec
file', 'exit', 'file
', 'filter', 'float',
'enumerate', 'eval', 'exec
', 'exit
', 'filter', 'float',
'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex',
'id', 'input', 'int', 'isinstance', 'issubclass', 'iter',
'len', 'license', 'list', 'locals', '
long', '
map', 'max', 'min',
'len', 'license', 'list', 'locals', 'map', 'max', 'min',
'object', 'oct', 'open', 'ord', 'pow', 'property', 'quit', 'range',
'repr', 'reversed', 'round', 'set',
'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super',
'tuple', 'type', '
unichr', 'unicode', '
vars', 'zip']
'tuple', 'type', 'vars', 'zip']
\end{verbatim}
...
...
@@ -4413,8 +4413,8 @@ the debugger, and that's one reason why this loophole is not closed.
(Buglet: derivation of a class with the same name as the base class
makes use of private variables of the base class possible.)
Notice that code passed to
\code
{
exec()
}
,
\code
{
eval()
}
or
\code
{
execfile()
}
does not consider the classname of the invoking
Notice that code passed to
\code
{
exec()
}
or
\code
{
eval()
}
does not consider the classname of the invoking
class to be the current class; this is similar to the effect of the
\code
{
global
}
statement, the effect of which is likewise restricted to
code that is byte-compiled together. The same restriction applies to
...
...
Lib/CGIHTTPServer.py
View file @
01688022
...
...
@@ -316,7 +316,7 @@ class CGIHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
sys
.
argv
.
append
(
decoded_query
)
sys
.
stdout
=
self
.
wfile
sys
.
stdin
=
self
.
rfile
exec
file
(
scriptfile
,
{
"__name__"
:
"__main__"
})
exec
(
open
(
scriptfile
).
read
()
,
{
"__name__"
:
"__main__"
})
finally
:
sys
.
argv
=
save_argv
sys
.
stdin
=
save_stdin
...
...
Lib/cProfile.py
View file @
01688022
...
...
@@ -180,7 +180,12 @@ def main():
if
(
len
(
sys
.
argv
)
>
0
):
sys
.
path
.
insert
(
0
,
os
.
path
.
dirname
(
sys
.
argv
[
0
]))
run
(
'execfile(%r)'
%
(
sys
.
argv
[
0
],),
options
.
outfile
,
options
.
sort
)
fp
=
open
(
sys
.
argv
[
0
])
try
:
script
=
fp
.
read
()
finally
:
fp
.
close
()
run
(
'exec(%r)'
%
script
,
options
.
outfile
,
options
.
sort
)
else
:
parser
.
print_usage
()
return
parser
...
...
Lib/distutils/core.py
View file @
01688022
...
...
@@ -179,7 +179,7 @@ def run_setup (script_name, script_args=None, stop_after="run"):
keyword args from 'script' to 'setup()', or the contents of the
config files or command-line.
'script_name' is a file that will be r
un with 'execfile
()';
'script_name' is a file that will be r
ead and run with 'exec
()';
'sys.argv[0]' will be replaced with 'script' for the duration of the
call. 'script_args' is a list of strings; if supplied,
'sys.argv[1:]' will be replaced by 'script_args' for the duration of
...
...
@@ -217,7 +217,7 @@ def run_setup (script_name, script_args=None, stop_after="run"):
sys
.
argv
[
0
]
=
script_name
if
script_args
is
not
None
:
sys
.
argv
[
1
:]
=
script_args
exec
file
(
script_name
,
g
,
l
)
exec
(
open
(
script_name
).
read
()
,
g
,
l
)
finally
:
sys
.
argv
=
save_argv
_setup_stop_after
=
None
...
...
Lib/doctest.py
View file @
01688022
...
...
@@ -2490,7 +2490,7 @@ def debug_script(src, pm=False, globs=None):
# Note that tempfile.NameTemporaryFile() cannot be used. As the
# docs say, a file so created cannot be opened by name a second time
# on modern Windows boxes, and exec
file() needs to open
it.
# on modern Windows boxes, and exec
() needs to open and read
it.
srcfilename
=
tempfile
.
mktemp
(
".py"
,
"doctestdebug"
)
f
=
open
(
srcfilename
,
'w'
)
f
.
write
(
src
)
...
...
@@ -2504,14 +2504,17 @@ def debug_script(src, pm=False, globs=None):
if
pm
:
try
:
exec
file
(
srcfilename
,
globs
,
globs
)
exec
(
open
(
srcfilename
).
read
()
,
globs
,
globs
)
except
:
print
(
sys
.
exc_info
()[
1
])
pdb
.
post_mortem
(
sys
.
exc_info
()[
2
])
else
:
# Note that %r is vital here. '%s' instead can, e.g., cause
# backslashes to get treated as metacharacters on Windows.
pdb
.
run
(
"execfile(%r)"
%
srcfilename
,
globs
,
globs
)
fp
=
open
(
srcfilename
)
try
:
script
=
fp
.
read
()
finally
:
fp
.
close
()
pdb
.
run
(
"exec(%r)"
%
script
,
globs
,
globs
)
finally
:
os
.
remove
(
srcfilename
)
...
...
Lib/lib-tk/Tkinter.py
View file @
01688022
...
...
@@ -1688,8 +1688,8 @@ class Tk(Misc, Wm):
_default_root
=
None
def
readprofile
(
self
,
baseName
,
className
):
"""Internal function. It reads BASENAME.tcl and CLASSNAME.tcl into
the Tcl Interpreter and calls exec
file on BASENAME.py and CLASSNAME.py if
such a file exists in the home directory."""
the Tcl Interpreter and calls exec
on the contents of BASENAME.py and
CLASSNAME.py if
such a file exists in the home directory."""
import
os
if
'HOME'
in
os
.
environ
:
home
=
os
.
environ
[
'HOME'
]
else
:
home
=
os
.
curdir
...
...
@@ -1702,11 +1702,11 @@ class Tk(Misc, Wm):
if
os
.
path
.
isfile
(
class_tcl
):
self
.
tk
.
call
(
'source'
,
class_tcl
)
if
os
.
path
.
isfile
(
class_py
):
exec
file
(
class_py
,
dir
)
exec
(
open
(
class_py
).
read
()
,
dir
)
if
os
.
path
.
isfile
(
base_tcl
):
self
.
tk
.
call
(
'source'
,
base_tcl
)
if
os
.
path
.
isfile
(
base_py
):
exec
file
(
base_py
,
dir
)
exec
(
open
(
base_py
).
read
()
,
dir
)
def
report_callback_exception
(
self
,
exc
,
val
,
tb
):
"""Internal function. It reports exception on sys.stderr."""
import
traceback
,
sys
...
...
Lib/optparse.py
View file @
01688022
...
...
@@ -874,7 +874,7 @@ class Values:
def
read_file
(
self
,
filename
,
mode
=
"careful"
):
vars
=
{}
exec
file
(
filename
,
vars
)
exec
(
open
(
filename
).
read
()
,
vars
)
self
.
_update
(
vars
,
mode
)
def
ensure_value
(
self
,
attr
,
value
):
...
...
Lib/pdb.py
View file @
01688022
...
...
@@ -1164,7 +1164,12 @@ see no sign that the breakpoint was reached.
self
.
_wait_for_mainpyfile
=
1
self
.
mainpyfile
=
self
.
canonic
(
filename
)
self
.
_user_requested_quit
=
0
statement
=
'execfile( "%s")'
%
filename
fp
=
open
(
filename
)
try
:
script
=
fp
.
read
()
finally
:
fp
.
close
()
statement
=
'exec("%s")'
%
script
self
.
run
(
statement
)
# Simplified interface
...
...
Lib/plat-mac/appletrawmain.py
View file @
01688022
...
...
@@ -41,7 +41,7 @@ if os.path.exists(__file__):
#
sys
.
argv
[
0
]
=
__file__
del
argvemulator
,
os
,
sys
,
_dir
exec
file
(
__file__
)
exec
(
open
(
__file__
).
read
()
)
else
:
__file__
=
os
.
path
.
join
(
_dir
,
'__main__.pyc'
)
if
os
.
path
.
exists
(
__file__
):
...
...
Lib/plat-mac/bundlebuilder.py
View file @
01688022
...
...
@@ -322,7 +322,12 @@ ARGV_EMULATOR = """\
import argvemulator, os
argvemulator.ArgvCollector().mainloop()
execfile(os.path.join(os.path.split(__file__)[0], "%(realmainprogram)s"))
fp = os.path.join(os.path.split(__file__)[0], "%(realmainprogram)s")
try:
script = fp.read()
finally:
fp.close()
exec(script)
"""
#
...
...
Lib/profile.py
View file @
01688022
...
...
@@ -609,7 +609,12 @@ def main():
if
(
len
(
sys
.
argv
)
>
0
):
sys
.
path
.
insert
(
0
,
os
.
path
.
dirname
(
sys
.
argv
[
0
]))
run
(
'execfile(%r)'
%
(
sys
.
argv
[
0
],),
options
.
outfile
,
options
.
sort
)
fp
=
open
(
sys
.
argv
[
0
])
try
:
script
=
fp
.
read
()
finally
:
fp
.
close
()
run
(
'exec(%r)'
%
script
,
options
.
outfile
,
options
.
sort
)
else
:
parser
.
print_usage
()
return
parser
...
...
Lib/test/test_builtin.py
View file @
01688022
...
...
@@ -11,10 +11,6 @@ warnings.filterwarnings("ignore", "hex../oct.. of negative int",
warnings
.
filterwarnings
(
"ignore"
,
"integer argument expected"
,
DeprecationWarning
,
"unittest"
)
# count the number of test runs.
# used to skip running test_execfile() multiple times
numruns
=
0
class
Squares
:
def
__init__
(
self
,
max
):
...
...
@@ -399,57 +395,6 @@ class BuiltinTest(unittest.TestCase):
return
1
# used to be 'a' but that's no longer an error
self
.
assertRaises
(
TypeError
,
eval
,
'dir()'
,
globals
(),
C
())
# Done outside of the method test_z to get the correct scope
z
=
0
f
=
open
(
TESTFN
,
'w'
)
f
.
write
(
'z = z+1
\
n
'
)
f
.
write
(
'z = z*2
\
n
'
)
f
.
close
()
execfile
(
TESTFN
)
def
test_execfile
(
self
):
global
numruns
if
numruns
:
return
numruns
+=
1
globals
=
{
'a'
:
1
,
'b'
:
2
}
locals
=
{
'b'
:
200
,
'c'
:
300
}
self
.
assertEqual
(
self
.
__class__
.
z
,
2
)
globals
[
'z'
]
=
0
execfile
(
TESTFN
,
globals
)
self
.
assertEqual
(
globals
[
'z'
],
2
)
locals
[
'z'
]
=
0
execfile
(
TESTFN
,
globals
,
locals
)
self
.
assertEqual
(
locals
[
'z'
],
2
)
class
M
:
"Test mapping interface versus possible calls from execfile()."
def
__init__
(
self
):
self
.
z
=
10
def
__getitem__
(
self
,
key
):
if
key
==
'z'
:
return
self
.
z
raise
KeyError
def
__setitem__
(
self
,
key
,
value
):
if
key
==
'z'
:
self
.
z
=
value
return
raise
KeyError
locals
=
M
()
locals
[
'z'
]
=
0
execfile
(
TESTFN
,
globals
,
locals
)
self
.
assertEqual
(
locals
[
'z'
],
2
)
unlink
(
TESTFN
)
self
.
assertRaises
(
TypeError
,
execfile
)
self
.
assertRaises
(
TypeError
,
execfile
,
TESTFN
,
{},
())
import
os
self
.
assertRaises
(
IOError
,
execfile
,
os
.
curdir
)
self
.
assertRaises
(
IOError
,
execfile
,
"I_dont_exist"
)
def
test_exec
(
self
):
g
=
{}
exec
(
'z = 1'
,
g
)
...
...
Lib/test/test_multibytecodec.py
View file @
01688022
...
...
@@ -49,7 +49,7 @@ class Test_MultibyteCodec(unittest.TestCase):
try
:
for
enc
in
ALL_CJKENCODINGS
:
print
(
'# coding:'
,
enc
,
file
=
io
.
open
(
TESTFN
,
'w'
))
exec
file
(
TESTFN
)
exec
(
open
(
TESTFN
).
read
()
)
finally
:
test_support
.
unlink
(
TESTFN
)
...
...
Lib/test/test_pkg.py
View file @
01688022
...
...
@@ -63,7 +63,7 @@ def runtest(hier, code):
sys
.
path
.
insert
(
0
,
root
)
if
verbose
:
print
(
"sys.path ="
,
sys
.
path
)
try
:
exec
file
(
fname
,
globals
(),
{})
exec
(
open
(
fname
).
read
()
,
globals
(),
{})
except
:
traceback
.
print_exc
(
file
=
sys
.
stdout
)
finally
:
...
...
Lib/test/test_univnewlines.py
View file @
01688022
...
...
@@ -78,13 +78,6 @@ class TestGenericUnivNewlines(unittest.TestCase):
data
=
fp
.
readlines
()
self
.
assertEqual
(
data
,
DATA_SPLIT
[
1
:])
def
test_execfile
(
self
):
namespace
=
{}
execfile
(
test_support
.
TESTFN
,
namespace
)
func
=
namespace
[
'line3'
]
self
.
assertEqual
(
func
.
__code__
.
co_firstlineno
,
3
)
self
.
assertEqual
(
namespace
[
'line4'
],
FATX
)
class
TestNativeNewlines
(
TestGenericUnivNewlines
):
NEWLINE
=
None
...
...
Lib/trace.py
View file @
01688022
...
...
@@ -773,7 +773,12 @@ def main(argv=None):
ignoredirs
=
ignore_dirs
,
infile
=
counts_file
,
outfile
=
counts_file
)
try
:
t
.
run
(
'execfile(%r)'
%
(
progname
,))
fp
=
open
(
progname
)
try
:
script
=
fp
.
read
()
finally
:
fp
.
close
()
t
.
run
(
'exec(%r)'
%
(
script
,))
except
IOError
as
err
:
_err_exit
(
"Cannot run file %r because: %s"
%
(
sys
.
argv
[
0
],
err
))
except
SystemExit
:
...
...
Lib/user.py
View file @
01688022
...
...
@@ -12,7 +12,7 @@ that wishes to use the mechanism must execute the statement
import user
The user module looks for a file .pythonrc.py in the user's home
directory and if it can be opened
, execfile
()s it in its own global
directory and if it can be opened
and read, exec
()s it in its own global
namespace. Errors during this phase are not caught; that's up to the
program that imports the user module, if it wishes.
...
...
@@ -42,4 +42,4 @@ except IOError:
pass
else
:
f
.
close
()
exec
file
(
pythonrc
)
exec
(
open
(
pythonrc
).
read
()
)
Mac/Modules/ae/aescan.py
View file @
01688022
...
...
@@ -21,7 +21,7 @@ def main():
scanner
.
scan
()
scanner
.
close
()
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done Scanning and Generating, now doing 'import aesupport' ==="
import
aesupport
print
"=== Done 'import aesupport'. It's up to you to compile AEmodule.c ==="
...
...
Mac/Modules/ae/aesupport.py
View file @
01688022
...
...
@@ -213,8 +213,8 @@ module.addobject(aedescobject)
functions
=
[]
aedescmethods
=
[]
exec
file
(
'aegen.py'
)
##exec
file('aedatamodelgen.py'
)
exec
(
open
(
'aegen.py'
).
read
()
)
##exec
(open('aedatamodelgen.py').read()
)
# Manual generator
AutoDispose_body
=
"""
...
...
Mac/Modules/ah/ahscan.py
View file @
01688022
...
...
@@ -18,7 +18,7 @@ def main():
scanner
.
scan
()
scanner
.
close
()
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done scanning and generating, now importing the generated code... ==="
exec
"import "
+
SHORT
+
"support"
print
"=== Done. It's up to you to compile it now! ==="
...
...
Mac/Modules/ah/ahsupport.py
View file @
01688022
...
...
@@ -34,7 +34,7 @@ Function = OSErrFunctionGenerator
# Create and populate the lists
functions
=
[]
exec
file
(
INPUTFILE
)
exec
(
open
(
INPUTFILE
).
read
()
)
# add the populated lists to the generator groups
# (in a different wordl the scan program would generate this)
...
...
Mac/Modules/app/appscan.py
View file @
01688022
...
...
@@ -18,7 +18,7 @@ def main():
scanner
.
scan
()
scanner
.
close
()
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done scanning and generating, now importing the generated code... ==="
exec
"import "
+
SHORT
+
"support"
print
"=== Done. It's up to you to compile it now! ==="
...
...
Mac/Modules/app/appsupport.py
View file @
01688022
...
...
@@ -121,7 +121,7 @@ Function = OSErrWeakLinkFunctionGenerator
# Create and populate the lists
functions
=
[]
methods
=
[]
exec
file
(
INPUTFILE
)
exec
(
open
(
INPUTFILE
).
read
()
)
# add the populated lists to the generator groups
# (in a different wordl the scan program would generate this)
...
...
Mac/Modules/carbonevt/CarbonEvtscan.py
View file @
01688022
...
...
@@ -20,7 +20,7 @@ def main():
scanner
.
scan
()
scanner
.
close
()
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"--done scanning, importing--"
import
CarbonEvtsupport
print
"done"
...
...
Mac/Modules/carbonevt/CarbonEvtsupport.py
View file @
01688022
...
...
@@ -214,7 +214,7 @@ for typ in RefObjectTypes: ## go thru all ObjectTypes as defined in CarbonEvents
execstr
=
typ
+
'methods = []'
exec
execstr
exec
file
(
'CarbonEventsgen.py'
)
exec
(
open
(
'CarbonEventsgen.py'
).
read
()
)
...
...
Mac/Modules/cf/cfscan.py
View file @
01688022
...
...
@@ -45,7 +45,7 @@ def main():
scanner
.
gentypetest
(
SHORT
+
"typetest.py"
)
scanner
.
close
()
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done scanning and generating, now importing the generated code... ==="
exec
"import "
+
SHORT
+
"support"
print
"=== Done. It's up to you to compile it now! ==="
...
...
Mac/Modules/cf/cfsupport.py
View file @
01688022
...
...
@@ -529,7 +529,7 @@ CFMutableStringRef_methods = []
CFURLRef_methods
=
[]
# ADD _methods initializer here
exec
file
(
INPUTFILE
)
exec
(
open
(
INPUTFILE
).
read
()
)
# add the populated lists to the generator groups
...
...
Mac/Modules/cg/cgscan.py
View file @
01688022
...
...
@@ -23,7 +23,7 @@ def main():
scanner
.
gentypetest
(
SHORT
+
"typetest.py"
)
scanner
.
close
()
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done scanning and generating, now importing the generated code... ==="
exec
"import "
+
SHORT
+
"support"
print
"=== Done. It's up to you to compile it now! ==="
...
...
Mac/Modules/cg/cgsupport.py
View file @
01688022
...
...
@@ -145,7 +145,7 @@ Method = MethodGenerator
CGContextRef_methods
=
[]
# ADD _methods initializer here
exec
file
(
INPUTFILE
)
exec
(
open
(
INPUTFILE
).
read
()
)
# manual method, lives in Quickdraw.h
f
=
Method
(
void
,
'SyncCGContextOriginWithPort'
,
...
...
Mac/Modules/cm/cmscan.py
View file @
01688022
...
...
@@ -17,7 +17,7 @@ def main():
scanner
.
scan
()
scanner
.
close
()
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done scanning and generating, now importing the generated code... ==="
exec
"import "
+
SHORT
+
"support"
print
"=== Done. It's up to you to compile it now! ==="
...
...
Mac/Modules/cm/cmsupport.py
View file @
01688022
...
...
@@ -112,7 +112,7 @@ Method = OSErrWeakLinkMethodGenerator
functions
=
[]
c_methods
=
[]
ci_methods
=
[]
exec
file
(
INPUTFILE
)
exec
(
open
(
INPUTFILE
).
read
()
)
# add the populated lists to the generator groups
# (in a different wordl the scan program would generate this)
...
...
Mac/Modules/ctl/ctlscan.py
View file @
01688022
...
...
@@ -15,7 +15,7 @@ def main():
scanner
.
scan
()
scanner
.
close
()
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done scanning and generating, now doing 'import ctlsupport' ==="
import
ctlsupport
print
"=== Done. It's up to you to compile Ctlmodule.c ==="
...
...
Mac/Modules/ctl/ctlsupport.py
View file @
01688022
...
...
@@ -507,8 +507,8 @@ Method = OSErrWeakLinkMethodGenerator
# Create and populate the lists
functions
=
[]
methods
=
[]
exec
file
(
INPUTFILE
)
exec
file
(
'ctledit.py'
)
exec
(
open
(
INPUTFILE
).
read
()
)
exec
(
open
(
'ctledit.py'
).
read
()
)
# add the populated lists to the generator groups
for
f
in
functions
:
module
.
add
(
f
)
...
...
Mac/Modules/dlg/dlgscan.py
View file @
01688022
...
...
@@ -19,7 +19,7 @@ def main():
scanner
.
scan
()
scanner
.
close
()
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done scanning and generating, now importing the generated code... ==="
exec
"import "
+
SHORT
+
"support"
print
"=== Done. It's up to you to compile it now! ==="
...
...
Mac/Modules/dlg/dlgsupport.py
View file @
01688022
...
...
@@ -240,7 +240,7 @@ Method = OSErrWeakLinkMethodGenerator
# Create and populate the lists
functions
=
[]
methods
=
[]
exec
file
(
"dlggen.py"
)
exec
(
open
(
"dlggen.py"
).
read
()
)
# add the populated lists to the generator groups
for
f
in
functions
:
module
.
add
(
f
)
...
...
Mac/Modules/drag/dragscan.py
View file @
01688022
...
...
@@ -26,7 +26,7 @@ def main():
scanner
.
scan
()
scanner
.
close
()
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done scanning and generating, now doing 'import dragsupport' ==="
import
dragsupport
print
"=== Done. It's up to you to compile Dragmodule.c ==="
...
...
Mac/Modules/drag/dragsupport.py
View file @
01688022
...
...
@@ -216,7 +216,7 @@ Method = OSErrWeakLinkMethodGenerator
# Create and populate the lists
functions
=
[]
methods
=
[]
exec
file
(
INPUTFILE
)
exec
(
open
(
INPUTFILE
).
read
()
)
# add the populated lists to the generator groups
for
f
in
functions
:
module
.
add
(
f
)
...
...
Mac/Modules/evt/evtscan.py
View file @
01688022
...
...
@@ -18,7 +18,7 @@ def main():
scanner
.
scan
()
scanner
.
close
()
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done scanning and generating, now importing the generated code... ==="
exec
"import "
+
SHORT
+
"support"
print
"=== Done. It's up to you to compile it now! ==="
...
...
Mac/Modules/evt/evtsupport.py
View file @
01688022
...
...
@@ -50,7 +50,7 @@ Function = OSErrWeakLinkFunctionGenerator
# Create and populate the lists
functions
=
[]
exec
file
(
INPUTFILE
)
exec
(
open
(
INPUTFILE
).
read
()
)
# Move TickCount here, for convenience
f
=
Function
(
UInt32
,
'TickCount'
,
...
...
Mac/Modules/file/filescan.py
View file @
01688022
...
...
@@ -18,7 +18,7 @@ def main():
scanner
.
close
()
scanner
.
gentypetest
(
SHORT
+
"typetest.py"
)
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done scanning and generating, now importing the generated code... ==="
exec
"import "
+
SHORT
+
"support"
print
"=== Done. It's up to you to compile it now! ==="
...
...
Mac/Modules/file/filesupport.py
View file @
01688022
...
...
@@ -340,7 +340,7 @@ PyMac_INIT_TOOLBOX_OBJECT_CONVERT(FSSpec, PyMac_GetFSSpec);
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(FSRef, PyMac_GetFSRef);
"""
exec
file
(
string
.
lower
(
MODPREFIX
)
+
'typetest.py'
)
exec
(
open
(
string
.
lower
(
MODPREFIX
)
+
'typetest.py'
).
read
()
)
# Our object types:
class
FSCatalogInfoDefinition
(
PEP253Mixin
,
ObjectDefinition
):
...
...
@@ -806,7 +806,7 @@ functions = []
alias_methods
=
[]
fsref_methods
=
[]
fsspec_methods
=
[]
exec
file
(
INPUTFILE
)
exec
(
open
(
INPUTFILE
).
read
()
)
# Manual generators:
FSRefMakePath_body
=
"""
...
...
Mac/Modules/fm/fmscan.py
View file @
01688022
...
...
@@ -17,7 +17,7 @@ def main():
scanner
.
scan
()
scanner
.
close
()
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done scanning and generating, now importing the generated code... ==="
exec
"import "
+
SHORT
+
"support"
print
"=== Done. It's up to you to compile it now! ==="
...
...
Mac/Modules/fm/fmsupport.py
View file @
01688022
...
...
@@ -70,7 +70,7 @@ Function = OSErrWeakLinkFunctionGenerator
# Create and populate the lists
functions
=
[]
exec
file
(
INPUTFILE
)
exec
(
open
(
INPUTFILE
).
read
()
)
# add the populated lists to the generator groups
# (in a different wordl the scan program would generate this)
...
...
Mac/Modules/folder/folderscan.py
View file @
01688022
...
...
@@ -19,7 +19,7 @@ def main():
scanner
.
close
()
scanner
.
gentypetest
(
SHORT
+
"typetest.py"
)
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done scanning and generating, now importing the generated code... ==="
exec
"import "
+
SHORT
+
"support"
print
"=== Done. It's up to you to compile it now! ==="
...
...
Mac/Modules/folder/foldersupport.py
View file @
01688022
...
...
@@ -33,7 +33,7 @@ includestuff = includestuff + """
"""
exec
file
(
string
.
lower
(
MODPREFIX
)
+
'typetest.py'
)
exec
(
open
(
string
.
lower
(
MODPREFIX
)
+
'typetest.py'
).
read
()
)
# From here on it's basically all boiler plate...
...
...
@@ -45,7 +45,7 @@ Function = OSErrFunctionGenerator
# Create and populate the lists
functions
=
[]
exec
file
(
INPUTFILE
)
exec
(
open
(
INPUTFILE
).
read
()
)
# add the populated lists to the generator groups
# (in a different wordl the scan program would generate this)
...
...
Mac/Modules/help/helpscan.py
View file @
01688022
...
...
@@ -18,7 +18,7 @@ def main():
scanner
.
scan
()
scanner
.
close
()
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done scanning and generating, now importing the generated code... ==="
exec
"import "
+
SHORT
+
"support"
print
"=== Done. It's up to you to compile it now! ==="
...
...
Mac/Modules/help/helpsupport.py
View file @
01688022
...
...
@@ -66,7 +66,7 @@ Function = OSErrFunctionGenerator
# Create and populate the lists
functions
=
[]
##methods = []
exec
file
(
INPUTFILE
)
exec
(
open
(
INPUTFILE
).
read
()
)
# add the populated lists to the generator groups
# (in a different wordl the scan program would generate this)
...
...
Mac/Modules/ibcarbon/IBCarbonscan.py
View file @
01688022
...
...
@@ -18,7 +18,7 @@ def main():
scanner
.
scan
()
scanner
.
close
()
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"--done scanning, importing--"
import
IBCarbonsupport
print
"done"
...
...
Mac/Modules/ibcarbon/IBCarbonsupport.py
View file @
01688022
...
...
@@ -42,7 +42,7 @@ module.addobject(ibnibobject)
functions
=
[]
methods
=
[]
exec
file
(
'IBCarbongen.py'
)
exec
(
open
(
'IBCarbongen.py'
).
read
()
)
for
f
in
functions
:
module
.
add
(
f
)
for
m
in
methods
:
ibnibobject
.
add
(
m
)
...
...
Mac/Modules/icn/icnscan.py
View file @
01688022
...
...
@@ -18,7 +18,7 @@ def main():
scanner
.
scan
()
scanner
.
close
()
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done scanning and generating, now importing the generated code... ==="
exec
"import "
+
SHORT
+
"support"
print
"=== Done. It's up to you to compile it now! ==="
...
...
Mac/Modules/icn/icnsupport.py
View file @
01688022
...
...
@@ -78,7 +78,7 @@ Function = OSErrWeakLinkFunctionGenerator
# Create and populate the lists
functions
=
[]
##methods = []
exec
file
(
INPUTFILE
)
exec
(
open
(
INPUTFILE
).
read
()
)
# add the populated lists to the generator groups
# (in a different wordl the scan program would generate this)
...
...
Mac/Modules/launch/launchscan.py
View file @
01688022
...
...
@@ -19,7 +19,7 @@ def main():
scanner
.
close
()
scanner
.
gentypetest
(
SHORT
+
"typetest.py"
)
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done scanning and generating, now importing the generated code... ==="
exec
"import "
+
SHORT
+
"support"
print
"=== Done. It's up to you to compile it now! ==="
...
...
Mac/Modules/launch/launchsupport.py
View file @
01688022
...
...
@@ -75,7 +75,7 @@ LSItemInfoRecord_New(LSItemInfoRecord *it)
"""
# From here on it's basically all boiler plate...
exec
file
(
string
.
lower
(
MODPREFIX
)
+
'typetest.py'
)
exec
(
open
(
string
.
lower
(
MODPREFIX
)
+
'typetest.py'
).
read
()
)
# Create the generator groups and link them
module
=
MacModule
(
MODNAME
,
MODPREFIX
,
includestuff
,
finalstuff
,
initstuff
)
...
...
@@ -89,7 +89,7 @@ Function = OSErrFunctionGenerator
# Create and populate the lists
functions
=
[]
##methods = []
exec
file
(
INPUTFILE
)
exec
(
open
(
INPUTFILE
).
read
()
)
# add the populated lists to the generator groups
# (in a different wordl the scan program would generate this)
...
...
Mac/Modules/list/listscan.py
View file @
01688022
...
...
@@ -18,7 +18,7 @@ def main():
scanner
.
scan
()
scanner
.
close
()
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done scanning and generating, now importing the generated code... ==="
exec
"import "
+
SHORT
+
"support"
print
"=== Done. It's up to you to compile it now! ==="
...
...
Mac/Modules/list/listsupport.py
View file @
01688022
...
...
@@ -169,7 +169,7 @@ Method = ListMethodGenerator
# Create and populate the lists
functions
=
[]
methods
=
[]
exec
file
(
INPUTFILE
)
exec
(
open
(
INPUTFILE
).
read
()
)
# Function to convert any handle to a list and vv.
##f = Function(ListHandle, 'as_List', (Handle, 'h', InMode))
...
...
Mac/Modules/menu/menuscan.py
View file @
01688022
...
...
@@ -14,7 +14,7 @@ def main():
scanner
.
scan
()
scanner
.
close
()
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done scanning and generating, now doing 'import menusupport' ==="
import
menusupport
print
"=== Done. It's up to you to compile Menumodule.c ==="
...
...
Mac/Modules/menu/menusupport.py
View file @
01688022
...
...
@@ -96,8 +96,8 @@ Method = OSErrWeakLinkMethodGenerator
# Create and populate the lists
functions
=
[]
methods
=
[]
exec
file
(
INPUTFILE
)
exec
file
(
EXTRAFILE
)
exec
(
open
(
INPUTFILE
).
read
()
)
exec
(
open
(
EXTRAFILE
).
read
()
)
# add the populated lists to the generator groups
for
f
in
functions
:
module
.
add
(
f
)
...
...
Mac/Modules/mlte/mltescan.py
View file @
01688022
...
...
@@ -20,7 +20,7 @@ def main():
scanner
.
gentypetest
(
SHORT
+
"typetest.py"
)
scanner
.
close
()
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done scanning and generating, now importing the generated code... ==="
exec
"import "
+
SHORT
+
"support"
print
"=== Done. It's up to you to compile it now! ==="
...
...
Mac/Modules/mlte/mltesupport.py
View file @
01688022
...
...
@@ -128,7 +128,7 @@ OptRectPtr = OpaqueByValueType("Rect *", "OptRectPtr")
UniChar
=
Type
(
"UniChar"
,
"h"
)
# XXXX For now...
# ADD object type here
exec
file
(
"mltetypetest.py"
)
exec
(
open
(
"mltetypetest.py"
).
read
()
)
# Our (opaque) objects
...
...
@@ -166,7 +166,7 @@ TXNObject_methods = []
TXNFontMenuObject_methods
=
[]
# ADD _methods initializer here
exec
file
(
INPUTFILE
)
exec
(
open
(
INPUTFILE
).
read
()
)
# add the populated lists to the generator groups
...
...
Mac/Modules/osa/osascan.py
View file @
01688022
...
...
@@ -18,7 +18,7 @@ def main():
scanner
.
close
()
scanner
.
gentypetest
(
SHORT
+
"typetest.py"
)
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done scanning and generating, now importing the generated code... ==="
exec
"import "
+
SHORT
+
"support"
print
"=== Done. It's up to you to compile it now! ==="
...
...
Mac/Modules/osa/osasupport.py
View file @
01688022
...
...
@@ -88,12 +88,12 @@ Function = OSErrWeakLinkFunctionGenerator
Method
=
OSErrWeakLinkMethodGenerator
# Test which types we are still missing.
exec
file
(
string
.
lower
(
MODPREFIX
)
+
'typetest.py'
)
exec
(
open
(
string
.
lower
(
MODPREFIX
)
+
'typetest.py'
).
read
()
)
# Create and populate the lists
functions
=
[]
methods
=
[]
exec
file
(
INPUTFILE
)
exec
(
open
(
INPUTFILE
).
read
()
)
# add the populated lists to the generator groups
# (in a different wordl the scan program would generate this)
...
...
Mac/Modules/qd/qdscan.py
View file @
01688022
...
...
@@ -41,7 +41,7 @@ def main():
ofp
.
close
()
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done scanning and generating, now importing the generated code... ==="
import
qdsupport
print
"=== Done. It's up to you to compile it now! ==="
...
...
Mac/Modules/qd/qdsupport.py
View file @
01688022
...
...
@@ -269,8 +269,8 @@ functions = []
gr_methods
=
[]
bm_methods
=
[]
#methods = []
exec
file
(
INPUTFILE
)
exec
file
(
EXTRAFILE
)
exec
(
open
(
INPUTFILE
).
read
()
)
exec
(
open
(
EXTRAFILE
).
read
()
)
# add the populated lists to the generator groups
# (in a different wordl the scan program would generate this)
...
...
Mac/Modules/qdoffs/qdoffsscan.py
View file @
01688022
...
...
@@ -14,7 +14,7 @@ def main():
scanner
.
scan
()
scanner
.
close
()
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done scanning and generating, now importing the generated code... ==="
import
qdoffssupport
print
"=== Done. It's up to you to compile it now! ==="
...
...
Mac/Modules/qdoffs/qdoffssupport.py
View file @
01688022
...
...
@@ -86,7 +86,7 @@ Method = OSErrWeakLinkMethodGenerator
# Create and populate the lists
functions
=
[]
methods
=
[]
exec
file
(
INPUTFILE
)
exec
(
open
(
INPUTFILE
).
read
()
)
# A method to convert a GWorldPtr to a GrafPtr
f
=
Method
(
GrafPtr
,
'as_GrafPtr'
,
(
GWorldPtr
,
'p'
,
InMode
))
...
...
Mac/Modules/qt/qtscan.py
View file @
01688022
...
...
@@ -35,7 +35,7 @@ def main():
scanner
.
close
()
scanner
.
gentypetest
(
SHORT
+
"typetest.py"
)
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done scanning and generating, now importing the generated code... ==="
exec
"import "
+
SHORT
+
"support"
print
"=== Done. It's up to you to compile it now! ==="
...
...
Mac/Modules/qt/qtsupport.py
View file @
01688022
...
...
@@ -307,7 +307,7 @@ module.addobject(Movie_object)
module
.
addobject
(
SGOutput_object
)
# Test which types we are still missing.
exec
file
(
string
.
lower
(
MODPREFIX
)
+
'typetest.py'
)
exec
(
open
(
string
.
lower
(
MODPREFIX
)
+
'typetest.py'
).
read
()
)
# Create the generator classes used to populate the lists
Function
=
OSErrWeakLinkFunctionGenerator
...
...
@@ -323,7 +323,7 @@ Media_methods = []
Track_methods
=
[]
Movie_methods
=
[]
SGOutput_methods
=
[]
exec
file
(
INPUTFILE
)
exec
(
open
(
INPUTFILE
).
read
()
)
#
# Some functions from ImageCompression.h that we need:
...
...
Mac/Modules/res/resscan.py
View file @
01688022
...
...
@@ -20,7 +20,7 @@ def main():
scanner
.
scan
()
scanner
.
close
()
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done scanning and generating, now doing 'import ressupport' ==="
import
ressupport
print
"=== Done 'import ressupport'. It's up to you to compile Resmodule.c ==="
...
...
Mac/Modules/res/ressupport.py
View file @
01688022
...
...
@@ -211,8 +211,8 @@ module.addobject(resobject)
functions
=
[]
resmethods
=
[]
exec
file
(
'resgen.py'
)
exec
file
(
'resedit.py'
)
exec
(
open
(
'resgen.py'
).
read
()
)
exec
(
open
(
'resedit.py'
).
read
()
)
for
f
in
functions
:
module
.
add
(
f
)
for
f
in
resmethods
:
resobject
.
add
(
f
)
...
...
Mac/Modules/scrap/scrapscan.py
View file @
01688022
...
...
@@ -20,7 +20,7 @@ def main():
scanner
.
scan
()
scanner
.
close
()
## print "=== Testing definitions output code ==="
## exec
file(defsoutput
, {}, {})
## exec
(open(defsoutput).read()
, {}, {})
print
"=== Done scanning and generating, now importing the generated code... ==="
exec
"import "
+
SHORT
+
"support"
print
"=== Done. It's up to you to compile it now! ==="
...
...
Mac/Modules/scrap/scrapsupport.py
View file @
01688022
...
...
@@ -63,7 +63,7 @@ Method = OSErrMethodGenerator
# Create and populate the lists
functions
=
[]
methods
=
[]
exec
file
(
INPUTFILE
)
exec
(
open
(
INPUTFILE
).
read
()
)
# add the populated lists to the generator groups
# (in a different wordl the scan program would generate this)
...
...
Mac/Modules/snd/sndscan.py
View file @
01688022
...
...
@@ -17,7 +17,7 @@ def main():
scanner
.
scan
()
scanner
.
close
()
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done scanning and generating, now doing 'import sndsupport' ==="
import
sndsupport
print
"=== Done. It's up to you to compile Sndmodule.c ==="
...
...
Mac/Modules/snd/sndsupport.py
View file @
01688022
...
...
@@ -304,7 +304,7 @@ sndmethods = []
# populate the lists
exec
file
(
'sndgen.py'
)
exec
(
open
(
'sndgen.py'
).
read
()
)
# add the functions and methods to the module and object, respectively
...
...
Mac/Modules/te/tescan.py
View file @
01688022
...
...
@@ -18,7 +18,7 @@ def main():
scanner
.
scan
()
scanner
.
close
()
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done scanning and generating, now importing the generated code... ==="
exec
"import "
+
SHORT
+
"support"
print
"=== Done. It's up to you to compile it now! ==="
...
...
Mac/Modules/te/tesupport.py
View file @
01688022
...
...
@@ -198,7 +198,7 @@ Method = TEMethodGenerator
# Create and populate the lists
functions
=
[]
methods
=
[]
exec
file
(
INPUTFILE
)
exec
(
open
(
INPUTFILE
).
read
()
)
# Converter from/to handle
f
=
Function
(
TEHandle
,
'as_TE'
,
(
Handle
,
'h'
,
InMode
))
...
...
Mac/Modules/win/winscan.py
View file @
01688022
...
...
@@ -14,7 +14,7 @@ def main():
scanner
.
scan
()
scanner
.
close
()
print
"=== Testing definitions output code ==="
exec
file
(
defsoutput
,
{},
{})
exec
(
open
(
defsoutput
).
read
()
,
{},
{})
print
"=== Done scanning and generating, now importing the generated code... ==="
import
winsupport
print
"=== Done. It's up to you to compile it now! ==="
...
...
Mac/Modules/win/winsupport.py
View file @
01688022
...
...
@@ -191,7 +191,7 @@ Method = OSErrWeakLinkMethodGenerator
# Create and populate the lists
functions
=
[]
methods
=
[]
exec
file
(
INPUTFILE
)
exec
(
open
(
INPUTFILE
).
read
()
)
# Add manual routines for converting integer WindowPtr's (as returned by
# various event routines) and Dialog objects to a WindowObject.
...
...
@@ -211,8 +211,8 @@ functions.append(f)
# And add the routines that access the internal bits of a window struct. They
# are currently #defined in Windows.h, they will be real routines in Copland
# (at which time this exec
file
can go)
exec
file
(
EDITFILE
)
# (at which time this exec can go)
exec
(
open
(
EDITFILE
).
read
()
)
# add the populated lists to the generator groups
# (in a different wordl the scan program would generate this)
...
...
Misc/NEWS
View file @
01688022
...
...
@@ -152,7 +152,7 @@ Core and Builtins
backticks (ie, `x`), <>
- Removed these Python builtins:
apply(), callable(), coerce(), file(), reduce(), reload()
apply(), callable(), coerce(),
execfile(),
file(), reduce(), reload()
- Removed these Python methods:
{}.has_key
...
...
Misc/Vim/python.vim
View file @
01688022
...
...
@@ -66,10 +66,10 @@ if exists("python_highlight_builtins")
syn
keyword pythonBuiltin __import__ abs
all
any basestring bool
syn
keyword pythonBuiltin buffer callable chr classmethod cmp
syn
keyword pythonBuiltin complex copyright credits delattr dict
syn
keyword pythonBuiltin
dir
divmod enumerate eval exec
file
exit
file
syn
keyword pythonBuiltin
dir
divmod enumerate eval exec
exit
syn
keyword pythonBuiltin
filter
float frozenset getattr globals hasattr
syn
keyword pythonBuiltin hash help hex id int isinstance
syn
keyword pythonBuiltin issubclass iter len license list locals
long
map
syn
keyword pythonBuiltin issubclass iter len license list locals map
syn
keyword pythonBuiltin max min object oct open ord pow property quit
syn
keyword pythonBuiltin range reload repr reversed round
syn
keyword pythonBuiltin
set
setattr slice sorted staticmethod str sum
...
...
Misc/cheatsheet
View file @
01688022
...
...
@@ -282,11 +282,10 @@ None
Numeric types
Floats
, integers and long
integers.
Floats
and
integers.
Floats are implemented with C doubles.
Integers are implemented with C longs.
Long integers have unlimited size (only limit is system resources)
Integers have unlimited size (only limit is system resources)
Operators on all numeric types
...
...
@@ -294,7 +293,6 @@ Operators on all numeric types
Operation Result
abs(x) the absolute value of x
int(x) x converted to integer
long(x) x converted to long integer
float(x) x converted to floating point
-x x negated
+x x unchanged
...
...
@@ -306,7 +304,7 @@ x % y remainder of x / y
divmod(x, y) the tuple (x/y, x%y)
x ** y x to the power y (the same as pow(x, y))
Bit operators on integers
and long integers
Bit operators on integers
Bit operators
Operation >Result
...
...
@@ -948,9 +946,6 @@ enumerate(seq) Return a iterator giving: (0, seq[0]), (1, seq[1]), ...
eval(s[, globals[, Eval string s in (optional) globals, locals contexts.s must
locals]]) have no NUL's or newlines. s can also be acode object.
Example: x = 1; incr_x = eval('x + 1')
execfile(file[, Executes a file without creating a new module, unlike
globals[, locals]]) import.
file() Synonym for open().
filter(function, Constructs a list from those elements of sequence for which
sequence) function returns true. function takes one parameter.
float(x) Converts a number or a string to floating point.
...
...
@@ -977,9 +972,6 @@ len(obj) (sequence, dictionary, or instance of class implementing
list(sequence) Converts sequence into a list. If already a list,returns a
copy of it.
locals() Returns a dictionary containing current local variables.
Converts a number or a string to a long integer. Optional
long(x[, base]) base paramenter specifies base from which to convert string
values.
Applies function to every item of list and returns a listof
map(function, list, the results. If additional arguments are passed,function
...) must take that many arguments and it is givento function on
...
...
@@ -1167,7 +1159,7 @@ Operators
s^=o = __ixor__(s,o) s|=o = __ior__(s,o)
s<<=o = __ilshift__(s,o) s>>=o = __irshift__(s,o)
Conversions
int(s) = __int__(s)
long(s) = __long__(s)
int(s) = __int__(s)
float(s) = __float__(s) complex(s) = __complex__(s)
oct(s) = __oct__(s) hex(s) = __hex__(s)
Right-hand-side equivalents for all binary operators exist;
...
...
Misc/python-mode.el
View file @
01688022
...
...
@@ -380,7 +380,7 @@ support for features needed by `python-mode'.")
"bool"
"buffer"
"callable"
"chr"
"classmethod"
"cmp"
"compile"
"complex"
"copyright"
"delattr"
"dict"
"dir"
"divmod"
"enumerate"
"eval"
"ex
ecfile"
"ex
it"
"file"
"enumerate"
"eval"
"exit"
"file"
"filter"
"float"
"getattr"
"globals"
"hasattr"
"hash"
"hex"
"id"
"int"
"isinstance"
"issubclass"
"iter"
"len"
"license"
...
...
@@ -1262,7 +1262,7 @@ comment."
;; Python subprocess utilities and filters
(
defun
py-execute-file
(
proc
filename
)
"Send to Python interpreter process PROC \"exec
file('FILENAME'
)\".
"Send to Python interpreter process PROC \"exec
(open('FILENAME').read()
)\".
Make that process's buffer visible and force display. Also make
comint believe the user typed this string so that
`kill-output-from-shell' does The Right Thing."
...
...
@@ -1270,7 +1270,7 @@ comint believe the user typed this string so that
(
procbuf
(
process-buffer
proc
))
; (comint-scroll-to-bottom-on-output t)
(
msg
(
format
"## working on region in file %s...\n"
filename
))
(
cmd
(
format
"exec
file(r'%s'
)\n"
filename
)))
(
cmd
(
format
"exec
(open(r'%s').read()
)\n"
filename
)))
(
unwind-protect
(
save-excursion
(
set-buffer
procbuf
)
...
...
@@ -1606,7 +1606,7 @@ specify the region to execute, and optional third argument ASYNC, if
non-nil, specifies to run the command asynchronously in its own
buffer.
If the Python interpreter shell is running, the region is exec
file
()'d
If the Python interpreter shell is running, the region is exec()'d
in that shell. If you try to execute regions too quickly,
`python-mode' will queue them up and execute them one at a time when
it sees a `>>> ' prompt from Python. Each time this happens, the
...
...
@@ -1731,7 +1731,7 @@ subtleties, including the use of the optional ASYNC argument."
If the file has already been imported, then do reload instead to get
the latest version.
If the file's name does not end in \".py\", then do exec
file
instead.
If the file's name does not end in \".py\", then do exec instead.
If the current buffer is not visiting a file, do `py-execute-buffer'
instead.
...
...
@@ -1768,7 +1768,7 @@ This may be preferable to `\\[py-execute-buffer]' because:
(
file-name-nondirectory
file
))))
(
format
"if globals().has_key('%s'):\n reload(%s)\nelse:\n import %s\n"
f
f
f
))
(
format
"exec
file(r'%s'
)\n"
file
))
(
format
"exec
(open(r'%s')
)\n"
file
))
async
))
;; else
(
py-execute-buffer
async
))))
...
...
Objects/fileobject.c
View file @
01688022
...
...
@@ -317,7 +317,7 @@ Py_UniversalNewlineFgets(char *buf, int n, FILE *stream, PyObject *fobj)
** will cause a pause if we're reading from an
** interactive stream, but that is very unlikely
** unless we're doing something silly like
** exec
file("/dev/tty"
).
** exec
(open("/dev/tty").read()
).
*/
c
=
GETC
(
stream
);
if
(
c
!=
'\n'
)
...
...
Python/bltinmodule.c
View file @
01688022
...
...
@@ -641,107 +641,6 @@ The globals and locals are dictionaries, defaulting to the current\n\
globals and locals. If only globals is given, locals defaults to it."
);
static
PyObject
*
builtin_execfile
(
PyObject
*
self
,
PyObject
*
args
)
{
char
*
filename
;
PyObject
*
globals
=
Py_None
,
*
locals
=
Py_None
;
PyObject
*
res
;
FILE
*
fp
=
NULL
;
PyCompilerFlags
cf
;
int
exists
;
if
(
!
PyArg_ParseTuple
(
args
,
"s|O!O:execfile"
,
&
filename
,
&
PyDict_Type
,
&
globals
,
&
locals
))
return
NULL
;
if
(
locals
!=
Py_None
&&
!
PyMapping_Check
(
locals
))
{
PyErr_SetString
(
PyExc_TypeError
,
"locals must be a mapping"
);
return
NULL
;
}
if
(
globals
==
Py_None
)
{
globals
=
PyEval_GetGlobals
();
if
(
locals
==
Py_None
)
locals
=
PyEval_GetLocals
();
}
else
if
(
locals
==
Py_None
)
locals
=
globals
;
if
(
PyDict_GetItemString
(
globals
,
"__builtins__"
)
==
NULL
)
{
if
(
PyDict_SetItemString
(
globals
,
"__builtins__"
,
PyEval_GetBuiltins
())
!=
0
)
return
NULL
;
}
exists
=
0
;
/* Test for existence or directory. */
#if defined(PLAN9)
{
Dir
*
d
;
if
((
d
=
dirstat
(
filename
))
!=
nil
)
{
if
(
d
->
mode
&
DMDIR
)
werrstr
(
"is a directory"
);
else
exists
=
1
;
free
(
d
);
}
}
#elif defined(RISCOS)
if
(
object_exists
(
filename
))
{
if
(
isdir
(
filename
))
errno
=
EISDIR
;
else
exists
=
1
;
}
#else
/* standard Posix */
{
struct
stat
s
;
if
(
stat
(
filename
,
&
s
)
==
0
)
{
if
(
S_ISDIR
(
s
.
st_mode
))
# if defined(PYOS_OS2) && defined(PYCC_VACPP)
errno
=
EOS2ERR
;
# else
errno
=
EISDIR
;
# endif
else
exists
=
1
;
}
}
#endif
if
(
exists
)
{
Py_BEGIN_ALLOW_THREADS
fp
=
fopen
(
filename
,
"r"
PY_STDIOTEXTMODE
);
Py_END_ALLOW_THREADS
if
(
fp
==
NULL
)
{
exists
=
0
;
}
}
if
(
!
exists
)
{
PyErr_SetFromErrnoWithFilename
(
PyExc_IOError
,
filename
);
return
NULL
;
}
cf
.
cf_flags
=
0
;
if
(
PyEval_MergeCompilerFlags
(
&
cf
))
res
=
PyRun_FileExFlags
(
fp
,
filename
,
Py_file_input
,
globals
,
locals
,
1
,
&
cf
);
else
res
=
PyRun_FileEx
(
fp
,
filename
,
Py_file_input
,
globals
,
locals
,
1
);
return
res
;
}
PyDoc_STRVAR
(
execfile_doc
,
"execfile(filename[, globals[, locals]])
\n
\
\n
\
Read and execute a Python script from a file.
\n
\
The globals and locals are dictionaries, defaulting to the current
\n
\
globals and locals. If only globals is given, locals defaults to it."
);
static
PyObject
*
builtin_getattr
(
PyObject
*
self
,
PyObject
*
args
)
{
...
...
@@ -1737,7 +1636,6 @@ static PyMethodDef builtin_methods[] = {
{
"divmod"
,
builtin_divmod
,
METH_VARARGS
,
divmod_doc
},
{
"eval"
,
builtin_eval
,
METH_VARARGS
,
eval_doc
},
{
"exec"
,
builtin_exec
,
METH_VARARGS
,
exec_doc
},
{
"execfile"
,
builtin_execfile
,
METH_VARARGS
,
execfile_doc
},
{
"filter"
,
builtin_filter
,
METH_VARARGS
,
filter_doc
},
{
"getattr"
,
builtin_getattr
,
METH_VARARGS
,
getattr_doc
},
{
"globals"
,
(
PyCFunction
)
builtin_globals
,
METH_NOARGS
,
globals_doc
},
...
...
README
View file @
01688022
...
...
@@ -1101,7 +1101,7 @@ Modules/getpath.o.
--with(out)-universal-newlines: enable reading of text files with
foreign newline convention (default: enabled). In other words,
any of \r, \n or \r\n is acceptable as end-of-line character.
If enabled import
and execfile
will automatically accept any newline
If enabled import will automatically accept any newline
in files. Python code can open a file with open(file, 'U') to
read it in universal newline mode. THIS OPTION IS UNSUPPORTED.
...
...
Tools/scripts/hotshotmain.py
View file @
01688022
...
...
@@ -23,7 +23,12 @@ def run_hotshot(filename, profile, args):
prof
=
hotshot
.
Profile
(
profile
)
sys
.
path
.
insert
(
0
,
os
.
path
.
dirname
(
filename
))
sys
.
argv
=
[
filename
]
+
args
prof
.
run
(
"execfile(%r)"
%
filename
)
fp
=
open
(
filename
)
try
:
script
=
fp
.
read
()
finally
:
fp
.
close
()
prof
.
run
(
"exec(%r)"
%
script
)
prof
.
close
()
stats
=
hotshot
.
stats
.
load
(
profile
)
stats
.
sort_stats
(
"time"
,
"calls"
)
...
...
Tools/versioncheck/README
View file @
01688022
...
...
@@ -19,7 +19,7 @@ your distribution. In stead of a single URL you can also specify a list
of
URLs
.
Each
of
these
will
be
checked
in
order
until
one
is
available
,
this
is
handy
for
distributions
that
live
in
multiple
places
.
Put
the
primary
distribution
site
(
the
most
up
-
to
-
date
site
)
before
others
.
The
script
is
executed
with
execfile
(),
not
imported
,
and
the
current
The
script
is
read
and
executed
with
exec
(),
not
imported
,
and
the
current
directory
is
the
checkversion
directory
,
so
be
careful
with
globals
,
importing
,
etc
.
...
...
Tools/versioncheck/checkversions.py
View file @
01688022
...
...
@@ -26,7 +26,7 @@ def check1dir(dummy, dir, files):
if
CHECKNAME
in
files
:
fullname
=
os
.
path
.
join
(
dir
,
CHECKNAME
)
try
:
exec
file
(
fullname
)
exec
(
open
(
fullname
).
read
()
)
except
:
print
(
'** Exception in'
,
fullname
)
...
...
setup.py
View file @
01688022
...
...
@@ -1369,7 +1369,12 @@ class PyBuildExt(build_ext):
return
False
fficonfig
=
{}
execfile
(
ffi_configfile
,
globals
(),
fficonfig
)
fp
=
open
(
ffi_configfile
)
try
:
script
=
fp
.
read
()
finally
:
fp
.
close
()
exec
(
script
,
globals
(),
fficonfig
)
ffi_srcdir
=
os
.
path
.
join
(
fficonfig
[
'ffi_srcdir'
],
'src'
)
# Add .S (preprocessed assembly) to C compiler source extensions.
...
...
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