mirror of
https://github.com/python/cpython.git
synced 2025-10-06 15:11:58 +00:00
Kill execfile(), use exec() instead
This commit is contained in:
parent
41eaedd361
commit
016880229a
98 changed files with 179 additions and 341 deletions
|
@ -99,7 +99,7 @@ for dir in os.curdir, os.environ['HOME']:
|
||||||
rcfile = os.path.join(dir, '.newslistrc.py')
|
rcfile = os.path.join(dir, '.newslistrc.py')
|
||||||
if os.path.exists(rcfile):
|
if os.path.exists(rcfile):
|
||||||
print(rcfile)
|
print(rcfile)
|
||||||
execfile(rcfile)
|
exec(open(rcfile).read())
|
||||||
break
|
break
|
||||||
|
|
||||||
from nntplib import NNTP
|
from nntplib import NNTP
|
||||||
|
|
|
@ -123,8 +123,9 @@ import tempfile
|
||||||
fp = tempfile.NamedTemporaryFile()
|
fp = tempfile.NamedTemporaryFile()
|
||||||
fp.write(program)
|
fp.write(program)
|
||||||
fp.flush()
|
fp.flush()
|
||||||
|
script = open(tfn).read()
|
||||||
if DFLAG:
|
if DFLAG:
|
||||||
import pdb
|
import pdb
|
||||||
pdb.run('execfile(%r)' % (tfn,))
|
pdb.run(script)
|
||||||
else:
|
else:
|
||||||
execfile(tfn)
|
exec(script)
|
||||||
|
|
2
Doc/dist/dist.tex
vendored
2
Doc/dist/dist.tex
vendored
|
@ -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
|
(passed as keyword args from \var{script} to \function{setup()}), or
|
||||||
the contents of the config files or command-line.
|
the contents of the config files or command-line.
|
||||||
|
|
||||||
\var{script_name} is a file that will be run with \function{execfile()}
|
\var{script_name} is a file that will be read and run with \function{exec()}
|
||||||
\code{sys.argv[0]} will be replaced with \var{script} for the duration of the
|
\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,
|
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
|
\code{sys.argv[1:]} will be replaced by \var{script_args} for the duration
|
||||||
|
|
|
@ -81,7 +81,7 @@ There are situations in which \code{from module import *} is just fine:
|
||||||
|
|
||||||
\end{itemize}
|
\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,
|
The word ``unadorned'' refers to the use without an explicit dictionary,
|
||||||
in which case those constructs evaluate code in the {\em current} environment.
|
in which case those constructs evaluate code in the {\em current} environment.
|
||||||
|
@ -97,7 +97,7 @@ Bad examples:
|
||||||
>>> def func(s, **kw):
|
>>> def func(s, **kw):
|
||||||
>>> for var, val in kw.items():
|
>>> for var, val in kw.items():
|
||||||
>>> exec("s.%s=val" % var) # invalid!
|
>>> exec("s.%s=val" % var) # invalid!
|
||||||
>>> execfile("handler.py")
|
>>> exec(open("handler.py").read())
|
||||||
>>> handle()
|
>>> handle()
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ Good examples:
|
||||||
>>> for var, val in kw.items():
|
>>> for var, val in kw.items():
|
||||||
>>> setattr(s, var, val)
|
>>> setattr(s, var, val)
|
||||||
>>> d={}
|
>>> d={}
|
||||||
>>> execfile("handle.py", d, d)
|
>>> exec(open("handler.py").read(), d, d)
|
||||||
>>> handle = d['handle']
|
>>> handle = d['handle']
|
||||||
>>> handle()
|
>>> handle()
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
|
@ -1828,7 +1828,7 @@ print doctest.testsource(a, "a.f")
|
||||||
via \function{\refmodule{pdb}.post_mortem()}, passing the traceback object
|
via \function{\refmodule{pdb}.post_mortem()}, passing the traceback object
|
||||||
from the unhandled exception. If \var{pm} is not specified, or is false,
|
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
|
the script is run under the debugger from the start, via passing an
|
||||||
appropriate \function{execfile()} call to \function{\refmodule{pdb}.run()}.
|
appropriate \function{exec()} call to \function{\refmodule{pdb}.run()}.
|
||||||
|
|
||||||
\versionadded{2.3}
|
\versionadded{2.3}
|
||||||
|
|
||||||
|
|
|
@ -260,7 +260,7 @@ Raised when an \keyword{assert} statement fails.
|
||||||
% XXXJH xref to these functions?
|
% XXXJH xref to these functions?
|
||||||
Raised when the parser encounters a syntax error. This may occur in
|
Raised when the parser encounters a syntax error. This may occur in
|
||||||
an \keyword{import} statement, in a call to the built-in functions
|
an \keyword{import} statement, in a call to the built-in functions
|
||||||
\function{exec()}, \function{execfile()}, \function{eval()} or
|
\function{exec()}, \function{eval()} or
|
||||||
\function{input()}, or when reading the initial script or standard
|
\function{input()}, or when reading the initial script or standard
|
||||||
input (also interactively).
|
input (also interactively).
|
||||||
|
|
||||||
|
|
|
@ -382,15 +382,13 @@ class C:
|
||||||
compiled passing \code{'eval'} as the \var{kind} argument.
|
compiled passing \code{'eval'} as the \var{kind} argument.
|
||||||
|
|
||||||
Hints: dynamic execution of statements is supported by the
|
Hints: dynamic execution of statements is supported by the
|
||||||
\function{exec()} function. Execution of statements from a file is
|
\function{exec()} function. The
|
||||||
supported by the \function{execfile()} function. The
|
|
||||||
\function{globals()} and \function{locals()} functions returns the
|
\function{globals()} and \function{locals()} functions returns the
|
||||||
current global and local dictionary, respectively, which may be
|
current global and local dictionary, respectively, which may be
|
||||||
useful to pass around for use by \function{eval()} or
|
useful to pass around for use by \function{eval()} or
|
||||||
\function{execfile()}.
|
\function{exec()}.
|
||||||
\end{funcdesc}
|
\end{funcdesc}
|
||||||
|
|
||||||
|
|
||||||
\begin{funcdesc}{exec}{object\optional{, globals\optional{, locals}}}
|
\begin{funcdesc}{exec}{object\optional{, globals\optional{, locals}}}
|
||||||
This function supports dynamic execution of Python code.
|
This function supports dynamic execution of Python code.
|
||||||
\var{object} must be either a string, an open file object, or
|
\var{object} must be either a string, an open file object, or
|
||||||
|
@ -425,31 +423,6 @@ class C:
|
||||||
argument to \function{exec()}.}
|
argument to \function{exec()}.}
|
||||||
\end{funcdesc}
|
\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}}}
|
\begin{funcdesc}{file}{filename\optional{, mode\optional{, bufsize}}}
|
||||||
Constructor function for the \class{file} type, described further
|
Constructor function for the \class{file} type, described further
|
||||||
in section~\ref{bltin-file-objects}, ``\ulink{File
|
in section~\ref{bltin-file-objects}, ``\ulink{File
|
||||||
|
|
|
@ -24,7 +24,7 @@ import user
|
||||||
|
|
||||||
The \module{user} module looks for a file \file{.pythonrc.py} in the user's
|
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
|
home directory and if it can be opened, executes it (using
|
||||||
\function{execfile()}\bifuncindex{execfile}) in its own (the
|
\function{exec()}\bifuncindex{exec}) in its own (the
|
||||||
module \module{user}'s) global namespace. Errors during this phase
|
module \module{user}'s) global namespace. Errors during this phase
|
||||||
are not caught; that's up to the program that imports the
|
are not caught; that's up to the program that imports the
|
||||||
\module{user} module, if it wishes. The home directory is assumed to
|
\module{user} module, if it wishes. The home directory is assumed to
|
||||||
|
|
|
@ -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
|
interpreter or specified on the interpreter command line the first
|
||||||
argument) is a code block. A script command (a command specified on
|
argument) is a code block. A script command (a command specified on
|
||||||
the interpreter command line with the `\strong{-c}' option) is a code
|
the interpreter command line with the `\strong{-c}' option) is a code
|
||||||
block. The file read by the built-in function \function{execfile()}
|
block. The string argument passed to the built-in functions
|
||||||
is a code block. The string argument passed to the built-in functions
|
|
||||||
\function{eval()} and \function{exec()} is a code block.
|
\function{eval()} and \function{exec()} is a code block.
|
||||||
The expression read and evaluated by the built-in function
|
The expression read and evaluated by the built-in function
|
||||||
\function{input()} is a code block.
|
\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
|
function and the function contains or is a nested block with free
|
||||||
variables, the compiler will raise a \exception{SyntaxError}.
|
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
|
and \function{input()} functions do not have access to the
|
||||||
full environment for resolving names. Names may be resolved in the
|
full environment for resolving names. Names may be resolved in the
|
||||||
local and global namespaces of the caller. Free variables are not
|
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
|
namespace.\footnote{This limitation occurs because the code that is
|
||||||
executed by these operations is not available at the time the
|
executed by these operations is not available at the time the
|
||||||
module is compiled.}
|
module is compiled.}
|
||||||
The \function{exec()}, \function{eval()} and \function{execfile()}
|
The \function{exec()} and \function{eval()}
|
||||||
functions have optional arguments to override
|
functions have optional arguments to override
|
||||||
the global and local namespace. If only one namespace is specified,
|
the global and local namespace. If only one namespace is specified,
|
||||||
it is used for both.
|
it is used for both.
|
||||||
|
|
|
@ -760,8 +760,8 @@ import __future__ [as name]
|
||||||
That is not a future statement; it's an ordinary import statement with
|
That is not a future statement; it's an ordinary import statement with
|
||||||
no special semantics or syntax restrictions.
|
no special semantics or syntax restrictions.
|
||||||
|
|
||||||
Code compiled by calls to the builtin functions \function{exec()},
|
Code compiled by calls to the builtin functions \function{exec()} and
|
||||||
\function{compile()} and \function{execfile()} that occur in a module
|
\function{compile()} that occur in a module
|
||||||
\module{M} containing a future statement will, by default, use the new
|
\module{M} containing a future statement will, by default, use the new
|
||||||
syntax or semantics associated with the future statement. This can,
|
syntax or semantics associated with the future statement. This can,
|
||||||
starting with Python 2.2 be controlled by optional arguments to
|
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,
|
does not affect the code block \emph{containing} the function call,
|
||||||
and code contained in such a string is unaffected by \keyword{global}
|
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
|
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{exec}
|
||||||
\bifuncindex{eval}
|
\bifuncindex{eval}
|
||||||
\bifuncindex{execfile}
|
|
||||||
\bifuncindex{compile}
|
\bifuncindex{compile}
|
||||||
|
|
||||||
|
|
|
@ -409,14 +409,14 @@ this file.
|
||||||
If you want to read an additional start-up file from the current
|
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
|
directory, you can program this in the global start-up file using code
|
||||||
like \samp{if os.path.isfile('.pythonrc.py'):
|
like \samp{if os.path.isfile('.pythonrc.py'):
|
||||||
execfile('.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:
|
script, you must do this explicitly in the script:
|
||||||
|
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
import os
|
import os
|
||||||
filename = os.environ.get('PYTHONSTARTUP')
|
filename = os.environ.get('PYTHONSTARTUP')
|
||||||
if filename and os.path.isfile(filename):
|
if filename and os.path.isfile(filename):
|
||||||
execfile(filename)
|
exec(open(filename).read())
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2736,14 +2736,14 @@ standard module \module{__builtin__}\refbimodindex{__builtin__}:
|
||||||
'__name__', 'abs', 'basestring', 'bool', 'buffer',
|
'__name__', 'abs', 'basestring', 'bool', 'buffer',
|
||||||
'chr', 'classmethod', 'cmp', 'compile',
|
'chr', 'classmethod', 'cmp', 'compile',
|
||||||
'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod',
|
'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod',
|
||||||
'enumerate', 'eval', 'execfile', 'exit', 'file', 'filter', 'float',
|
'enumerate', 'eval', 'exec', 'exit', 'filter', 'float',
|
||||||
'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex',
|
'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex',
|
||||||
'id', 'input', 'int', 'isinstance', 'issubclass', 'iter',
|
'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',
|
'object', 'oct', 'open', 'ord', 'pow', 'property', 'quit', 'range',
|
||||||
'repr', 'reversed', 'round', 'set',
|
'repr', 'reversed', 'round', 'set',
|
||||||
'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super',
|
'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super',
|
||||||
'tuple', 'type', 'unichr', 'unicode', 'vars', 'zip']
|
'tuple', 'type', 'vars', 'zip']
|
||||||
\end{verbatim}
|
\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
|
(Buglet: derivation of a class with the same name as the base class
|
||||||
makes use of private variables of the base class possible.)
|
makes use of private variables of the base class possible.)
|
||||||
|
|
||||||
Notice that code passed to \code{exec()}, \code{eval()} or
|
Notice that code passed to \code{exec()} or \code{eval()}
|
||||||
\code{execfile()} does not consider the classname of the invoking
|
does not consider the classname of the invoking
|
||||||
class to be the current class; this is similar to the effect of the
|
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{global} statement, the effect of which is likewise restricted to
|
||||||
code that is byte-compiled together. The same restriction applies to
|
code that is byte-compiled together. The same restriction applies to
|
||||||
|
|
|
@ -316,7 +316,7 @@ class CGIHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
|
||||||
sys.argv.append(decoded_query)
|
sys.argv.append(decoded_query)
|
||||||
sys.stdout = self.wfile
|
sys.stdout = self.wfile
|
||||||
sys.stdin = self.rfile
|
sys.stdin = self.rfile
|
||||||
execfile(scriptfile, {"__name__": "__main__"})
|
exec(open(scriptfile).read(), {"__name__": "__main__"})
|
||||||
finally:
|
finally:
|
||||||
sys.argv = save_argv
|
sys.argv = save_argv
|
||||||
sys.stdin = save_stdin
|
sys.stdin = save_stdin
|
||||||
|
|
|
@ -180,7 +180,12 @@ def main():
|
||||||
|
|
||||||
if (len(sys.argv) > 0):
|
if (len(sys.argv) > 0):
|
||||||
sys.path.insert(0, os.path.dirname(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:
|
else:
|
||||||
parser.print_usage()
|
parser.print_usage()
|
||||||
return parser
|
return parser
|
||||||
|
|
|
@ -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
|
keyword args from 'script' to 'setup()', or the contents of the
|
||||||
config files or command-line.
|
config files or command-line.
|
||||||
|
|
||||||
'script_name' is a file that will be run with 'execfile()';
|
'script_name' is a file that will be read and run with 'exec()';
|
||||||
'sys.argv[0]' will be replaced with 'script' for the duration of the
|
'sys.argv[0]' will be replaced with 'script' for the duration of the
|
||||||
call. 'script_args' is a list of strings; if supplied,
|
call. 'script_args' is a list of strings; if supplied,
|
||||||
'sys.argv[1:]' will be replaced by 'script_args' for the duration of
|
'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
|
sys.argv[0] = script_name
|
||||||
if script_args is not None:
|
if script_args is not None:
|
||||||
sys.argv[1:] = script_args
|
sys.argv[1:] = script_args
|
||||||
execfile(script_name, g, l)
|
exec(open(script_name).read(), g, l)
|
||||||
finally:
|
finally:
|
||||||
sys.argv = save_argv
|
sys.argv = save_argv
|
||||||
_setup_stop_after = None
|
_setup_stop_after = None
|
||||||
|
|
|
@ -2490,7 +2490,7 @@ def debug_script(src, pm=False, globs=None):
|
||||||
|
|
||||||
# Note that tempfile.NameTemporaryFile() cannot be used. As the
|
# Note that tempfile.NameTemporaryFile() cannot be used. As the
|
||||||
# docs say, a file so created cannot be opened by name a second time
|
# docs say, a file so created cannot be opened by name a second time
|
||||||
# on modern Windows boxes, and execfile() needs to open it.
|
# on modern Windows boxes, and exec() needs to open and read it.
|
||||||
srcfilename = tempfile.mktemp(".py", "doctestdebug")
|
srcfilename = tempfile.mktemp(".py", "doctestdebug")
|
||||||
f = open(srcfilename, 'w')
|
f = open(srcfilename, 'w')
|
||||||
f.write(src)
|
f.write(src)
|
||||||
|
@ -2504,14 +2504,17 @@ def debug_script(src, pm=False, globs=None):
|
||||||
|
|
||||||
if pm:
|
if pm:
|
||||||
try:
|
try:
|
||||||
execfile(srcfilename, globs, globs)
|
exec(open(srcfilename).read(), globs, globs)
|
||||||
except:
|
except:
|
||||||
print(sys.exc_info()[1])
|
print(sys.exc_info()[1])
|
||||||
pdb.post_mortem(sys.exc_info()[2])
|
pdb.post_mortem(sys.exc_info()[2])
|
||||||
else:
|
else:
|
||||||
# Note that %r is vital here. '%s' instead can, e.g., cause
|
fp = open(srcfilename)
|
||||||
# backslashes to get treated as metacharacters on Windows.
|
try:
|
||||||
pdb.run("execfile(%r)" % srcfilename, globs, globs)
|
script = fp.read()
|
||||||
|
finally:
|
||||||
|
fp.close()
|
||||||
|
pdb.run("exec(%r)" % script, globs, globs)
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
os.remove(srcfilename)
|
os.remove(srcfilename)
|
||||||
|
|
|
@ -1688,8 +1688,8 @@ class Tk(Misc, Wm):
|
||||||
_default_root = None
|
_default_root = None
|
||||||
def readprofile(self, baseName, className):
|
def readprofile(self, baseName, className):
|
||||||
"""Internal function. It reads BASENAME.tcl and CLASSNAME.tcl into
|
"""Internal function. It reads BASENAME.tcl and CLASSNAME.tcl into
|
||||||
the Tcl Interpreter and calls execfile on BASENAME.py and CLASSNAME.py if
|
the Tcl Interpreter and calls exec on the contents of BASENAME.py and
|
||||||
such a file exists in the home directory."""
|
CLASSNAME.py if such a file exists in the home directory."""
|
||||||
import os
|
import os
|
||||||
if 'HOME' in os.environ: home = os.environ['HOME']
|
if 'HOME' in os.environ: home = os.environ['HOME']
|
||||||
else: home = os.curdir
|
else: home = os.curdir
|
||||||
|
@ -1702,11 +1702,11 @@ class Tk(Misc, Wm):
|
||||||
if os.path.isfile(class_tcl):
|
if os.path.isfile(class_tcl):
|
||||||
self.tk.call('source', class_tcl)
|
self.tk.call('source', class_tcl)
|
||||||
if os.path.isfile(class_py):
|
if os.path.isfile(class_py):
|
||||||
execfile(class_py, dir)
|
exec(open(class_py).read(), dir)
|
||||||
if os.path.isfile(base_tcl):
|
if os.path.isfile(base_tcl):
|
||||||
self.tk.call('source', base_tcl)
|
self.tk.call('source', base_tcl)
|
||||||
if os.path.isfile(base_py):
|
if os.path.isfile(base_py):
|
||||||
execfile(base_py, dir)
|
exec(open(base_py).read(), dir)
|
||||||
def report_callback_exception(self, exc, val, tb):
|
def report_callback_exception(self, exc, val, tb):
|
||||||
"""Internal function. It reports exception on sys.stderr."""
|
"""Internal function. It reports exception on sys.stderr."""
|
||||||
import traceback, sys
|
import traceback, sys
|
||||||
|
|
|
@ -874,7 +874,7 @@ class Values:
|
||||||
|
|
||||||
def read_file(self, filename, mode="careful"):
|
def read_file(self, filename, mode="careful"):
|
||||||
vars = {}
|
vars = {}
|
||||||
execfile(filename, vars)
|
exec(open(filename).read(), vars)
|
||||||
self._update(vars, mode)
|
self._update(vars, mode)
|
||||||
|
|
||||||
def ensure_value(self, attr, value):
|
def ensure_value(self, attr, value):
|
||||||
|
|
|
@ -1164,7 +1164,12 @@ see no sign that the breakpoint was reached.
|
||||||
self._wait_for_mainpyfile = 1
|
self._wait_for_mainpyfile = 1
|
||||||
self.mainpyfile = self.canonic(filename)
|
self.mainpyfile = self.canonic(filename)
|
||||||
self._user_requested_quit = 0
|
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)
|
self.run(statement)
|
||||||
|
|
||||||
# Simplified interface
|
# Simplified interface
|
||||||
|
|
|
@ -41,7 +41,7 @@ if os.path.exists(__file__):
|
||||||
#
|
#
|
||||||
sys.argv[0] = __file__
|
sys.argv[0] = __file__
|
||||||
del argvemulator, os, sys, _dir
|
del argvemulator, os, sys, _dir
|
||||||
execfile(__file__)
|
exec(open(__file__).read())
|
||||||
else:
|
else:
|
||||||
__file__ = os.path.join(_dir, '__main__.pyc')
|
__file__ = os.path.join(_dir, '__main__.pyc')
|
||||||
if os.path.exists(__file__):
|
if os.path.exists(__file__):
|
||||||
|
|
|
@ -322,7 +322,12 @@ ARGV_EMULATOR = """\
|
||||||
import argvemulator, os
|
import argvemulator, os
|
||||||
|
|
||||||
argvemulator.ArgvCollector().mainloop()
|
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)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
|
@ -609,7 +609,12 @@ def main():
|
||||||
|
|
||||||
if (len(sys.argv) > 0):
|
if (len(sys.argv) > 0):
|
||||||
sys.path.insert(0, os.path.dirname(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:
|
else:
|
||||||
parser.print_usage()
|
parser.print_usage()
|
||||||
return parser
|
return parser
|
||||||
|
|
|
@ -11,10 +11,6 @@ warnings.filterwarnings("ignore", "hex../oct.. of negative int",
|
||||||
warnings.filterwarnings("ignore", "integer argument expected",
|
warnings.filterwarnings("ignore", "integer argument expected",
|
||||||
DeprecationWarning, "unittest")
|
DeprecationWarning, "unittest")
|
||||||
|
|
||||||
# count the number of test runs.
|
|
||||||
# used to skip running test_execfile() multiple times
|
|
||||||
numruns = 0
|
|
||||||
|
|
||||||
class Squares:
|
class Squares:
|
||||||
|
|
||||||
def __init__(self, max):
|
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
|
return 1 # used to be 'a' but that's no longer an error
|
||||||
self.assertRaises(TypeError, eval, 'dir()', globals(), C())
|
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):
|
def test_exec(self):
|
||||||
g = {}
|
g = {}
|
||||||
exec('z = 1', g)
|
exec('z = 1', g)
|
||||||
|
|
|
@ -49,7 +49,7 @@ class Test_MultibyteCodec(unittest.TestCase):
|
||||||
try:
|
try:
|
||||||
for enc in ALL_CJKENCODINGS:
|
for enc in ALL_CJKENCODINGS:
|
||||||
print('# coding:', enc, file=io.open(TESTFN, 'w'))
|
print('# coding:', enc, file=io.open(TESTFN, 'w'))
|
||||||
execfile(TESTFN)
|
exec(open(TESTFN).read())
|
||||||
finally:
|
finally:
|
||||||
test_support.unlink(TESTFN)
|
test_support.unlink(TESTFN)
|
||||||
|
|
||||||
|
|
|
@ -63,7 +63,7 @@ def runtest(hier, code):
|
||||||
sys.path.insert(0, root)
|
sys.path.insert(0, root)
|
||||||
if verbose: print("sys.path =", sys.path)
|
if verbose: print("sys.path =", sys.path)
|
||||||
try:
|
try:
|
||||||
execfile(fname, globals(), {})
|
exec(open(fname).read(), globals(), {})
|
||||||
except:
|
except:
|
||||||
traceback.print_exc(file=sys.stdout)
|
traceback.print_exc(file=sys.stdout)
|
||||||
finally:
|
finally:
|
||||||
|
|
|
@ -78,13 +78,6 @@ class TestGenericUnivNewlines(unittest.TestCase):
|
||||||
data = fp.readlines()
|
data = fp.readlines()
|
||||||
self.assertEqual(data, DATA_SPLIT[1:])
|
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):
|
class TestNativeNewlines(TestGenericUnivNewlines):
|
||||||
NEWLINE = None
|
NEWLINE = None
|
||||||
|
|
|
@ -773,7 +773,12 @@ def main(argv=None):
|
||||||
ignoredirs=ignore_dirs, infile=counts_file,
|
ignoredirs=ignore_dirs, infile=counts_file,
|
||||||
outfile=counts_file)
|
outfile=counts_file)
|
||||||
try:
|
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:
|
except IOError as err:
|
||||||
_err_exit("Cannot run file %r because: %s" % (sys.argv[0], err))
|
_err_exit("Cannot run file %r because: %s" % (sys.argv[0], err))
|
||||||
except SystemExit:
|
except SystemExit:
|
||||||
|
|
|
@ -12,7 +12,7 @@ that wishes to use the mechanism must execute the statement
|
||||||
import user
|
import user
|
||||||
|
|
||||||
The user module looks for a file .pythonrc.py in the user's home
|
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
|
namespace. Errors during this phase are not caught; that's up to the
|
||||||
program that imports the user module, if it wishes.
|
program that imports the user module, if it wishes.
|
||||||
|
|
||||||
|
@ -42,4 +42,4 @@ except IOError:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
f.close()
|
f.close()
|
||||||
execfile(pythonrc)
|
exec(open(pythonrc).read())
|
||||||
|
|
|
@ -21,7 +21,7 @@ def main():
|
||||||
scanner.scan()
|
scanner.scan()
|
||||||
scanner.close()
|
scanner.close()
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done Scanning and Generating, now doing 'import aesupport' ==="
|
print "=== Done Scanning and Generating, now doing 'import aesupport' ==="
|
||||||
import aesupport
|
import aesupport
|
||||||
print "=== Done 'import aesupport'. It's up to you to compile AEmodule.c ==="
|
print "=== Done 'import aesupport'. It's up to you to compile AEmodule.c ==="
|
||||||
|
|
|
@ -213,8 +213,8 @@ module.addobject(aedescobject)
|
||||||
functions = []
|
functions = []
|
||||||
aedescmethods = []
|
aedescmethods = []
|
||||||
|
|
||||||
execfile('aegen.py')
|
exec(open('aegen.py').read())
|
||||||
##execfile('aedatamodelgen.py')
|
##exec(open('aedatamodelgen.py').read())
|
||||||
|
|
||||||
# Manual generator
|
# Manual generator
|
||||||
AutoDispose_body = """
|
AutoDispose_body = """
|
||||||
|
|
|
@ -18,7 +18,7 @@ def main():
|
||||||
scanner.scan()
|
scanner.scan()
|
||||||
scanner.close()
|
scanner.close()
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now importing the generated code... ==="
|
print "=== Done scanning and generating, now importing the generated code... ==="
|
||||||
exec "import " + SHORT + "support"
|
exec "import " + SHORT + "support"
|
||||||
print "=== Done. It's up to you to compile it now! ==="
|
print "=== Done. It's up to you to compile it now! ==="
|
||||||
|
|
|
@ -34,7 +34,7 @@ Function = OSErrFunctionGenerator
|
||||||
|
|
||||||
# Create and populate the lists
|
# Create and populate the lists
|
||||||
functions = []
|
functions = []
|
||||||
execfile(INPUTFILE)
|
exec(open(INPUTFILE).read())
|
||||||
|
|
||||||
# add the populated lists to the generator groups
|
# add the populated lists to the generator groups
|
||||||
# (in a different wordl the scan program would generate this)
|
# (in a different wordl the scan program would generate this)
|
||||||
|
|
|
@ -18,7 +18,7 @@ def main():
|
||||||
scanner.scan()
|
scanner.scan()
|
||||||
scanner.close()
|
scanner.close()
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now importing the generated code... ==="
|
print "=== Done scanning and generating, now importing the generated code... ==="
|
||||||
exec "import " + SHORT + "support"
|
exec "import " + SHORT + "support"
|
||||||
print "=== Done. It's up to you to compile it now! ==="
|
print "=== Done. It's up to you to compile it now! ==="
|
||||||
|
|
|
@ -121,7 +121,7 @@ Function = OSErrWeakLinkFunctionGenerator
|
||||||
# Create and populate the lists
|
# Create and populate the lists
|
||||||
functions = []
|
functions = []
|
||||||
methods = []
|
methods = []
|
||||||
execfile(INPUTFILE)
|
exec(open(INPUTFILE).read())
|
||||||
|
|
||||||
# add the populated lists to the generator groups
|
# add the populated lists to the generator groups
|
||||||
# (in a different wordl the scan program would generate this)
|
# (in a different wordl the scan program would generate this)
|
||||||
|
|
|
@ -20,7 +20,7 @@ def main():
|
||||||
scanner.scan()
|
scanner.scan()
|
||||||
scanner.close()
|
scanner.close()
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "--done scanning, importing--"
|
print "--done scanning, importing--"
|
||||||
import CarbonEvtsupport
|
import CarbonEvtsupport
|
||||||
print "done"
|
print "done"
|
||||||
|
|
|
@ -214,7 +214,7 @@ for typ in RefObjectTypes: ## go thru all ObjectTypes as defined in CarbonEvents
|
||||||
execstr = typ + 'methods = []'
|
execstr = typ + 'methods = []'
|
||||||
exec execstr
|
exec execstr
|
||||||
|
|
||||||
execfile('CarbonEventsgen.py')
|
exec(open('CarbonEventsgen.py').read())
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ def main():
|
||||||
scanner.gentypetest(SHORT+"typetest.py")
|
scanner.gentypetest(SHORT+"typetest.py")
|
||||||
scanner.close()
|
scanner.close()
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now importing the generated code... ==="
|
print "=== Done scanning and generating, now importing the generated code... ==="
|
||||||
exec "import " + SHORT + "support"
|
exec "import " + SHORT + "support"
|
||||||
print "=== Done. It's up to you to compile it now! ==="
|
print "=== Done. It's up to you to compile it now! ==="
|
||||||
|
|
|
@ -529,7 +529,7 @@ CFMutableStringRef_methods = []
|
||||||
CFURLRef_methods = []
|
CFURLRef_methods = []
|
||||||
|
|
||||||
# ADD _methods initializer here
|
# ADD _methods initializer here
|
||||||
execfile(INPUTFILE)
|
exec(open(INPUTFILE).read())
|
||||||
|
|
||||||
|
|
||||||
# add the populated lists to the generator groups
|
# add the populated lists to the generator groups
|
||||||
|
|
|
@ -23,7 +23,7 @@ def main():
|
||||||
scanner.gentypetest(SHORT+"typetest.py")
|
scanner.gentypetest(SHORT+"typetest.py")
|
||||||
scanner.close()
|
scanner.close()
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now importing the generated code... ==="
|
print "=== Done scanning and generating, now importing the generated code... ==="
|
||||||
exec "import " + SHORT + "support"
|
exec "import " + SHORT + "support"
|
||||||
print "=== Done. It's up to you to compile it now! ==="
|
print "=== Done. It's up to you to compile it now! ==="
|
||||||
|
|
|
@ -145,7 +145,7 @@ Method = MethodGenerator
|
||||||
CGContextRef_methods = []
|
CGContextRef_methods = []
|
||||||
|
|
||||||
# ADD _methods initializer here
|
# ADD _methods initializer here
|
||||||
execfile(INPUTFILE)
|
exec(open(INPUTFILE).read())
|
||||||
|
|
||||||
# manual method, lives in Quickdraw.h
|
# manual method, lives in Quickdraw.h
|
||||||
f = Method(void, 'SyncCGContextOriginWithPort',
|
f = Method(void, 'SyncCGContextOriginWithPort',
|
||||||
|
|
|
@ -17,7 +17,7 @@ def main():
|
||||||
scanner.scan()
|
scanner.scan()
|
||||||
scanner.close()
|
scanner.close()
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now importing the generated code... ==="
|
print "=== Done scanning and generating, now importing the generated code... ==="
|
||||||
exec "import " + SHORT + "support"
|
exec "import " + SHORT + "support"
|
||||||
print "=== Done. It's up to you to compile it now! ==="
|
print "=== Done. It's up to you to compile it now! ==="
|
||||||
|
|
|
@ -112,7 +112,7 @@ Method = OSErrWeakLinkMethodGenerator
|
||||||
functions = []
|
functions = []
|
||||||
c_methods = []
|
c_methods = []
|
||||||
ci_methods = []
|
ci_methods = []
|
||||||
execfile(INPUTFILE)
|
exec(open(INPUTFILE).read())
|
||||||
|
|
||||||
# add the populated lists to the generator groups
|
# add the populated lists to the generator groups
|
||||||
# (in a different wordl the scan program would generate this)
|
# (in a different wordl the scan program would generate this)
|
||||||
|
|
|
@ -15,7 +15,7 @@ def main():
|
||||||
scanner.scan()
|
scanner.scan()
|
||||||
scanner.close()
|
scanner.close()
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now doing 'import ctlsupport' ==="
|
print "=== Done scanning and generating, now doing 'import ctlsupport' ==="
|
||||||
import ctlsupport
|
import ctlsupport
|
||||||
print "=== Done. It's up to you to compile Ctlmodule.c ==="
|
print "=== Done. It's up to you to compile Ctlmodule.c ==="
|
||||||
|
|
|
@ -507,8 +507,8 @@ Method = OSErrWeakLinkMethodGenerator
|
||||||
# Create and populate the lists
|
# Create and populate the lists
|
||||||
functions = []
|
functions = []
|
||||||
methods = []
|
methods = []
|
||||||
execfile(INPUTFILE)
|
exec(open(INPUTFILE).read())
|
||||||
execfile('ctledit.py')
|
exec(open('ctledit.py').read())
|
||||||
|
|
||||||
# add the populated lists to the generator groups
|
# add the populated lists to the generator groups
|
||||||
for f in functions: module.add(f)
|
for f in functions: module.add(f)
|
||||||
|
|
|
@ -19,7 +19,7 @@ def main():
|
||||||
scanner.scan()
|
scanner.scan()
|
||||||
scanner.close()
|
scanner.close()
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now importing the generated code... ==="
|
print "=== Done scanning and generating, now importing the generated code... ==="
|
||||||
exec "import " + SHORT + "support"
|
exec "import " + SHORT + "support"
|
||||||
print "=== Done. It's up to you to compile it now! ==="
|
print "=== Done. It's up to you to compile it now! ==="
|
||||||
|
|
|
@ -240,7 +240,7 @@ Method = OSErrWeakLinkMethodGenerator
|
||||||
# Create and populate the lists
|
# Create and populate the lists
|
||||||
functions = []
|
functions = []
|
||||||
methods = []
|
methods = []
|
||||||
execfile("dlggen.py")
|
exec(open("dlggen.py").read())
|
||||||
|
|
||||||
# add the populated lists to the generator groups
|
# add the populated lists to the generator groups
|
||||||
for f in functions: module.add(f)
|
for f in functions: module.add(f)
|
||||||
|
|
|
@ -26,7 +26,7 @@ def main():
|
||||||
scanner.scan()
|
scanner.scan()
|
||||||
scanner.close()
|
scanner.close()
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now doing 'import dragsupport' ==="
|
print "=== Done scanning and generating, now doing 'import dragsupport' ==="
|
||||||
import dragsupport
|
import dragsupport
|
||||||
print "=== Done. It's up to you to compile Dragmodule.c ==="
|
print "=== Done. It's up to you to compile Dragmodule.c ==="
|
||||||
|
|
|
@ -216,7 +216,7 @@ Method = OSErrWeakLinkMethodGenerator
|
||||||
# Create and populate the lists
|
# Create and populate the lists
|
||||||
functions = []
|
functions = []
|
||||||
methods = []
|
methods = []
|
||||||
execfile(INPUTFILE)
|
exec(open(INPUTFILE).read())
|
||||||
|
|
||||||
# add the populated lists to the generator groups
|
# add the populated lists to the generator groups
|
||||||
for f in functions: module.add(f)
|
for f in functions: module.add(f)
|
||||||
|
|
|
@ -18,7 +18,7 @@ def main():
|
||||||
scanner.scan()
|
scanner.scan()
|
||||||
scanner.close()
|
scanner.close()
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now importing the generated code... ==="
|
print "=== Done scanning and generating, now importing the generated code... ==="
|
||||||
exec "import " + SHORT + "support"
|
exec "import " + SHORT + "support"
|
||||||
print "=== Done. It's up to you to compile it now! ==="
|
print "=== Done. It's up to you to compile it now! ==="
|
||||||
|
|
|
@ -50,7 +50,7 @@ Function = OSErrWeakLinkFunctionGenerator
|
||||||
|
|
||||||
# Create and populate the lists
|
# Create and populate the lists
|
||||||
functions = []
|
functions = []
|
||||||
execfile(INPUTFILE)
|
exec(open(INPUTFILE).read())
|
||||||
|
|
||||||
# Move TickCount here, for convenience
|
# Move TickCount here, for convenience
|
||||||
f = Function(UInt32, 'TickCount',
|
f = Function(UInt32, 'TickCount',
|
||||||
|
|
|
@ -18,7 +18,7 @@ def main():
|
||||||
scanner.close()
|
scanner.close()
|
||||||
scanner.gentypetest(SHORT+"typetest.py")
|
scanner.gentypetest(SHORT+"typetest.py")
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now importing the generated code... ==="
|
print "=== Done scanning and generating, now importing the generated code... ==="
|
||||||
exec "import " + SHORT + "support"
|
exec "import " + SHORT + "support"
|
||||||
print "=== Done. It's up to you to compile it now! ==="
|
print "=== Done. It's up to you to compile it now! ==="
|
||||||
|
|
|
@ -340,7 +340,7 @@ PyMac_INIT_TOOLBOX_OBJECT_CONVERT(FSSpec, PyMac_GetFSSpec);
|
||||||
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(FSRef, PyMac_GetFSRef);
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(FSRef, PyMac_GetFSRef);
|
||||||
"""
|
"""
|
||||||
|
|
||||||
execfile(string.lower(MODPREFIX) + 'typetest.py')
|
exec(open(string.lower(MODPREFIX) + 'typetest.py').read())
|
||||||
|
|
||||||
# Our object types:
|
# Our object types:
|
||||||
class FSCatalogInfoDefinition(PEP253Mixin, ObjectDefinition):
|
class FSCatalogInfoDefinition(PEP253Mixin, ObjectDefinition):
|
||||||
|
@ -806,7 +806,7 @@ functions = []
|
||||||
alias_methods = []
|
alias_methods = []
|
||||||
fsref_methods = []
|
fsref_methods = []
|
||||||
fsspec_methods = []
|
fsspec_methods = []
|
||||||
execfile(INPUTFILE)
|
exec(open(INPUTFILE).read())
|
||||||
|
|
||||||
# Manual generators:
|
# Manual generators:
|
||||||
FSRefMakePath_body = """
|
FSRefMakePath_body = """
|
||||||
|
|
|
@ -17,7 +17,7 @@ def main():
|
||||||
scanner.scan()
|
scanner.scan()
|
||||||
scanner.close()
|
scanner.close()
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now importing the generated code... ==="
|
print "=== Done scanning and generating, now importing the generated code... ==="
|
||||||
exec "import " + SHORT + "support"
|
exec "import " + SHORT + "support"
|
||||||
print "=== Done. It's up to you to compile it now! ==="
|
print "=== Done. It's up to you to compile it now! ==="
|
||||||
|
|
|
@ -70,7 +70,7 @@ Function = OSErrWeakLinkFunctionGenerator
|
||||||
|
|
||||||
# Create and populate the lists
|
# Create and populate the lists
|
||||||
functions = []
|
functions = []
|
||||||
execfile(INPUTFILE)
|
exec(open(INPUTFILE).read())
|
||||||
|
|
||||||
# add the populated lists to the generator groups
|
# add the populated lists to the generator groups
|
||||||
# (in a different wordl the scan program would generate this)
|
# (in a different wordl the scan program would generate this)
|
||||||
|
|
|
@ -19,7 +19,7 @@ def main():
|
||||||
scanner.close()
|
scanner.close()
|
||||||
scanner.gentypetest(SHORT+"typetest.py")
|
scanner.gentypetest(SHORT+"typetest.py")
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now importing the generated code... ==="
|
print "=== Done scanning and generating, now importing the generated code... ==="
|
||||||
exec "import " + SHORT + "support"
|
exec "import " + SHORT + "support"
|
||||||
print "=== Done. It's up to you to compile it now! ==="
|
print "=== Done. It's up to you to compile it now! ==="
|
||||||
|
|
|
@ -33,7 +33,7 @@ includestuff = includestuff + """
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
execfile(string.lower(MODPREFIX) + 'typetest.py')
|
exec(open(string.lower(MODPREFIX) + 'typetest.py').read())
|
||||||
|
|
||||||
# From here on it's basically all boiler plate...
|
# From here on it's basically all boiler plate...
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ Function = OSErrFunctionGenerator
|
||||||
|
|
||||||
# Create and populate the lists
|
# Create and populate the lists
|
||||||
functions = []
|
functions = []
|
||||||
execfile(INPUTFILE)
|
exec(open(INPUTFILE).read())
|
||||||
|
|
||||||
# add the populated lists to the generator groups
|
# add the populated lists to the generator groups
|
||||||
# (in a different wordl the scan program would generate this)
|
# (in a different wordl the scan program would generate this)
|
||||||
|
|
|
@ -18,7 +18,7 @@ def main():
|
||||||
scanner.scan()
|
scanner.scan()
|
||||||
scanner.close()
|
scanner.close()
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now importing the generated code... ==="
|
print "=== Done scanning and generating, now importing the generated code... ==="
|
||||||
exec "import " + SHORT + "support"
|
exec "import " + SHORT + "support"
|
||||||
print "=== Done. It's up to you to compile it now! ==="
|
print "=== Done. It's up to you to compile it now! ==="
|
||||||
|
|
|
@ -66,7 +66,7 @@ Function = OSErrFunctionGenerator
|
||||||
# Create and populate the lists
|
# Create and populate the lists
|
||||||
functions = []
|
functions = []
|
||||||
##methods = []
|
##methods = []
|
||||||
execfile(INPUTFILE)
|
exec(open(INPUTFILE).read())
|
||||||
|
|
||||||
# add the populated lists to the generator groups
|
# add the populated lists to the generator groups
|
||||||
# (in a different wordl the scan program would generate this)
|
# (in a different wordl the scan program would generate this)
|
||||||
|
|
|
@ -18,7 +18,7 @@ def main():
|
||||||
scanner.scan()
|
scanner.scan()
|
||||||
scanner.close()
|
scanner.close()
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "--done scanning, importing--"
|
print "--done scanning, importing--"
|
||||||
import IBCarbonsupport
|
import IBCarbonsupport
|
||||||
print "done"
|
print "done"
|
||||||
|
|
|
@ -42,7 +42,7 @@ module.addobject(ibnibobject)
|
||||||
functions = []
|
functions = []
|
||||||
methods = []
|
methods = []
|
||||||
|
|
||||||
execfile('IBCarbongen.py')
|
exec(open('IBCarbongen.py').read())
|
||||||
|
|
||||||
for f in functions: module.add(f)
|
for f in functions: module.add(f)
|
||||||
for m in methods: ibnibobject.add(m)
|
for m in methods: ibnibobject.add(m)
|
||||||
|
|
|
@ -18,7 +18,7 @@ def main():
|
||||||
scanner.scan()
|
scanner.scan()
|
||||||
scanner.close()
|
scanner.close()
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now importing the generated code... ==="
|
print "=== Done scanning and generating, now importing the generated code... ==="
|
||||||
exec "import " + SHORT + "support"
|
exec "import " + SHORT + "support"
|
||||||
print "=== Done. It's up to you to compile it now! ==="
|
print "=== Done. It's up to you to compile it now! ==="
|
||||||
|
|
|
@ -78,7 +78,7 @@ Function = OSErrWeakLinkFunctionGenerator
|
||||||
# Create and populate the lists
|
# Create and populate the lists
|
||||||
functions = []
|
functions = []
|
||||||
##methods = []
|
##methods = []
|
||||||
execfile(INPUTFILE)
|
exec(open(INPUTFILE).read())
|
||||||
|
|
||||||
# add the populated lists to the generator groups
|
# add the populated lists to the generator groups
|
||||||
# (in a different wordl the scan program would generate this)
|
# (in a different wordl the scan program would generate this)
|
||||||
|
|
|
@ -19,7 +19,7 @@ def main():
|
||||||
scanner.close()
|
scanner.close()
|
||||||
scanner.gentypetest(SHORT+"typetest.py")
|
scanner.gentypetest(SHORT+"typetest.py")
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now importing the generated code... ==="
|
print "=== Done scanning and generating, now importing the generated code... ==="
|
||||||
exec "import " + SHORT + "support"
|
exec "import " + SHORT + "support"
|
||||||
print "=== Done. It's up to you to compile it now! ==="
|
print "=== Done. It's up to you to compile it now! ==="
|
||||||
|
|
|
@ -75,7 +75,7 @@ LSItemInfoRecord_New(LSItemInfoRecord *it)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# From here on it's basically all boiler plate...
|
# From here on it's basically all boiler plate...
|
||||||
execfile(string.lower(MODPREFIX) + 'typetest.py')
|
exec(open(string.lower(MODPREFIX) + 'typetest.py').read())
|
||||||
|
|
||||||
# Create the generator groups and link them
|
# Create the generator groups and link them
|
||||||
module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff)
|
module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff)
|
||||||
|
@ -89,7 +89,7 @@ Function = OSErrFunctionGenerator
|
||||||
# Create and populate the lists
|
# Create and populate the lists
|
||||||
functions = []
|
functions = []
|
||||||
##methods = []
|
##methods = []
|
||||||
execfile(INPUTFILE)
|
exec(open(INPUTFILE).read())
|
||||||
|
|
||||||
# add the populated lists to the generator groups
|
# add the populated lists to the generator groups
|
||||||
# (in a different wordl the scan program would generate this)
|
# (in a different wordl the scan program would generate this)
|
||||||
|
|
|
@ -18,7 +18,7 @@ def main():
|
||||||
scanner.scan()
|
scanner.scan()
|
||||||
scanner.close()
|
scanner.close()
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now importing the generated code... ==="
|
print "=== Done scanning and generating, now importing the generated code... ==="
|
||||||
exec "import " + SHORT + "support"
|
exec "import " + SHORT + "support"
|
||||||
print "=== Done. It's up to you to compile it now! ==="
|
print "=== Done. It's up to you to compile it now! ==="
|
||||||
|
|
|
@ -169,7 +169,7 @@ Method = ListMethodGenerator
|
||||||
# Create and populate the lists
|
# Create and populate the lists
|
||||||
functions = []
|
functions = []
|
||||||
methods = []
|
methods = []
|
||||||
execfile(INPUTFILE)
|
exec(open(INPUTFILE).read())
|
||||||
|
|
||||||
# Function to convert any handle to a list and vv.
|
# Function to convert any handle to a list and vv.
|
||||||
##f = Function(ListHandle, 'as_List', (Handle, 'h', InMode))
|
##f = Function(ListHandle, 'as_List', (Handle, 'h', InMode))
|
||||||
|
|
|
@ -14,7 +14,7 @@ def main():
|
||||||
scanner.scan()
|
scanner.scan()
|
||||||
scanner.close()
|
scanner.close()
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now doing 'import menusupport' ==="
|
print "=== Done scanning and generating, now doing 'import menusupport' ==="
|
||||||
import menusupport
|
import menusupport
|
||||||
print "=== Done. It's up to you to compile Menumodule.c ==="
|
print "=== Done. It's up to you to compile Menumodule.c ==="
|
||||||
|
|
|
@ -96,8 +96,8 @@ Method = OSErrWeakLinkMethodGenerator
|
||||||
# Create and populate the lists
|
# Create and populate the lists
|
||||||
functions = []
|
functions = []
|
||||||
methods = []
|
methods = []
|
||||||
execfile(INPUTFILE)
|
exec(open(INPUTFILE).read())
|
||||||
execfile(EXTRAFILE)
|
exec(open(EXTRAFILE).read())
|
||||||
|
|
||||||
# add the populated lists to the generator groups
|
# add the populated lists to the generator groups
|
||||||
for f in functions: module.add(f)
|
for f in functions: module.add(f)
|
||||||
|
|
|
@ -20,7 +20,7 @@ def main():
|
||||||
scanner.gentypetest(SHORT+"typetest.py")
|
scanner.gentypetest(SHORT+"typetest.py")
|
||||||
scanner.close()
|
scanner.close()
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now importing the generated code... ==="
|
print "=== Done scanning and generating, now importing the generated code... ==="
|
||||||
exec "import " + SHORT + "support"
|
exec "import " + SHORT + "support"
|
||||||
print "=== Done. It's up to you to compile it now! ==="
|
print "=== Done. It's up to you to compile it now! ==="
|
||||||
|
|
|
@ -128,7 +128,7 @@ OptRectPtr = OpaqueByValueType("Rect *", "OptRectPtr")
|
||||||
UniChar = Type("UniChar", "h") # XXXX For now...
|
UniChar = Type("UniChar", "h") # XXXX For now...
|
||||||
# ADD object type here
|
# ADD object type here
|
||||||
|
|
||||||
execfile("mltetypetest.py")
|
exec(open("mltetypetest.py").read())
|
||||||
|
|
||||||
# Our (opaque) objects
|
# Our (opaque) objects
|
||||||
|
|
||||||
|
@ -166,7 +166,7 @@ TXNObject_methods = []
|
||||||
TXNFontMenuObject_methods = []
|
TXNFontMenuObject_methods = []
|
||||||
|
|
||||||
# ADD _methods initializer here
|
# ADD _methods initializer here
|
||||||
execfile(INPUTFILE)
|
exec(open(INPUTFILE).read())
|
||||||
|
|
||||||
|
|
||||||
# add the populated lists to the generator groups
|
# add the populated lists to the generator groups
|
||||||
|
|
|
@ -18,7 +18,7 @@ def main():
|
||||||
scanner.close()
|
scanner.close()
|
||||||
scanner.gentypetest(SHORT+"typetest.py")
|
scanner.gentypetest(SHORT+"typetest.py")
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now importing the generated code... ==="
|
print "=== Done scanning and generating, now importing the generated code... ==="
|
||||||
exec "import " + SHORT + "support"
|
exec "import " + SHORT + "support"
|
||||||
print "=== Done. It's up to you to compile it now! ==="
|
print "=== Done. It's up to you to compile it now! ==="
|
||||||
|
|
|
@ -88,12 +88,12 @@ Function = OSErrWeakLinkFunctionGenerator
|
||||||
Method = OSErrWeakLinkMethodGenerator
|
Method = OSErrWeakLinkMethodGenerator
|
||||||
|
|
||||||
# Test which types we are still missing.
|
# Test which types we are still missing.
|
||||||
execfile(string.lower(MODPREFIX) + 'typetest.py')
|
exec(open(string.lower(MODPREFIX) + 'typetest.py').read())
|
||||||
|
|
||||||
# Create and populate the lists
|
# Create and populate the lists
|
||||||
functions = []
|
functions = []
|
||||||
methods = []
|
methods = []
|
||||||
execfile(INPUTFILE)
|
exec(open(INPUTFILE).read())
|
||||||
|
|
||||||
# add the populated lists to the generator groups
|
# add the populated lists to the generator groups
|
||||||
# (in a different wordl the scan program would generate this)
|
# (in a different wordl the scan program would generate this)
|
||||||
|
|
|
@ -41,7 +41,7 @@ def main():
|
||||||
ofp.close()
|
ofp.close()
|
||||||
|
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now importing the generated code... ==="
|
print "=== Done scanning and generating, now importing the generated code... ==="
|
||||||
import qdsupport
|
import qdsupport
|
||||||
print "=== Done. It's up to you to compile it now! ==="
|
print "=== Done. It's up to you to compile it now! ==="
|
||||||
|
|
|
@ -269,8 +269,8 @@ functions = []
|
||||||
gr_methods = []
|
gr_methods = []
|
||||||
bm_methods = []
|
bm_methods = []
|
||||||
#methods = []
|
#methods = []
|
||||||
execfile(INPUTFILE)
|
exec(open(INPUTFILE).read())
|
||||||
execfile(EXTRAFILE)
|
exec(open(EXTRAFILE).read())
|
||||||
|
|
||||||
# add the populated lists to the generator groups
|
# add the populated lists to the generator groups
|
||||||
# (in a different wordl the scan program would generate this)
|
# (in a different wordl the scan program would generate this)
|
||||||
|
|
|
@ -14,7 +14,7 @@ def main():
|
||||||
scanner.scan()
|
scanner.scan()
|
||||||
scanner.close()
|
scanner.close()
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now importing the generated code... ==="
|
print "=== Done scanning and generating, now importing the generated code... ==="
|
||||||
import qdoffssupport
|
import qdoffssupport
|
||||||
print "=== Done. It's up to you to compile it now! ==="
|
print "=== Done. It's up to you to compile it now! ==="
|
||||||
|
|
|
@ -86,7 +86,7 @@ Method = OSErrWeakLinkMethodGenerator
|
||||||
# Create and populate the lists
|
# Create and populate the lists
|
||||||
functions = []
|
functions = []
|
||||||
methods = []
|
methods = []
|
||||||
execfile(INPUTFILE)
|
exec(open(INPUTFILE).read())
|
||||||
|
|
||||||
# A method to convert a GWorldPtr to a GrafPtr
|
# A method to convert a GWorldPtr to a GrafPtr
|
||||||
f = Method(GrafPtr, 'as_GrafPtr', (GWorldPtr, 'p', InMode))
|
f = Method(GrafPtr, 'as_GrafPtr', (GWorldPtr, 'p', InMode))
|
||||||
|
|
|
@ -35,7 +35,7 @@ def main():
|
||||||
scanner.close()
|
scanner.close()
|
||||||
scanner.gentypetest(SHORT+"typetest.py")
|
scanner.gentypetest(SHORT+"typetest.py")
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now importing the generated code... ==="
|
print "=== Done scanning and generating, now importing the generated code... ==="
|
||||||
exec "import " + SHORT + "support"
|
exec "import " + SHORT + "support"
|
||||||
print "=== Done. It's up to you to compile it now! ==="
|
print "=== Done. It's up to you to compile it now! ==="
|
||||||
|
|
|
@ -307,7 +307,7 @@ module.addobject(Movie_object)
|
||||||
module.addobject(SGOutput_object)
|
module.addobject(SGOutput_object)
|
||||||
|
|
||||||
# Test which types we are still missing.
|
# Test which types we are still missing.
|
||||||
execfile(string.lower(MODPREFIX) + 'typetest.py')
|
exec(open(string.lower(MODPREFIX) + 'typetest.py').read())
|
||||||
|
|
||||||
# Create the generator classes used to populate the lists
|
# Create the generator classes used to populate the lists
|
||||||
Function = OSErrWeakLinkFunctionGenerator
|
Function = OSErrWeakLinkFunctionGenerator
|
||||||
|
@ -323,7 +323,7 @@ Media_methods = []
|
||||||
Track_methods = []
|
Track_methods = []
|
||||||
Movie_methods = []
|
Movie_methods = []
|
||||||
SGOutput_methods = []
|
SGOutput_methods = []
|
||||||
execfile(INPUTFILE)
|
exec(open(INPUTFILE).read())
|
||||||
|
|
||||||
#
|
#
|
||||||
# Some functions from ImageCompression.h that we need:
|
# Some functions from ImageCompression.h that we need:
|
||||||
|
|
|
@ -20,7 +20,7 @@ def main():
|
||||||
scanner.scan()
|
scanner.scan()
|
||||||
scanner.close()
|
scanner.close()
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now doing 'import ressupport' ==="
|
print "=== Done scanning and generating, now doing 'import ressupport' ==="
|
||||||
import ressupport
|
import ressupport
|
||||||
print "=== Done 'import ressupport'. It's up to you to compile Resmodule.c ==="
|
print "=== Done 'import ressupport'. It's up to you to compile Resmodule.c ==="
|
||||||
|
|
|
@ -211,8 +211,8 @@ module.addobject(resobject)
|
||||||
functions = []
|
functions = []
|
||||||
resmethods = []
|
resmethods = []
|
||||||
|
|
||||||
execfile('resgen.py')
|
exec(open('resgen.py').read())
|
||||||
execfile('resedit.py')
|
exec(open('resedit.py').read())
|
||||||
|
|
||||||
for f in functions: module.add(f)
|
for f in functions: module.add(f)
|
||||||
for f in resmethods: resobject.add(f)
|
for f in resmethods: resobject.add(f)
|
||||||
|
|
|
@ -20,7 +20,7 @@ def main():
|
||||||
scanner.scan()
|
scanner.scan()
|
||||||
scanner.close()
|
scanner.close()
|
||||||
## print "=== Testing definitions output code ==="
|
## print "=== Testing definitions output code ==="
|
||||||
## execfile(defsoutput, {}, {})
|
## exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now importing the generated code... ==="
|
print "=== Done scanning and generating, now importing the generated code... ==="
|
||||||
exec "import " + SHORT + "support"
|
exec "import " + SHORT + "support"
|
||||||
print "=== Done. It's up to you to compile it now! ==="
|
print "=== Done. It's up to you to compile it now! ==="
|
||||||
|
|
|
@ -63,7 +63,7 @@ Method = OSErrMethodGenerator
|
||||||
# Create and populate the lists
|
# Create and populate the lists
|
||||||
functions = []
|
functions = []
|
||||||
methods = []
|
methods = []
|
||||||
execfile(INPUTFILE)
|
exec(open(INPUTFILE).read())
|
||||||
|
|
||||||
# add the populated lists to the generator groups
|
# add the populated lists to the generator groups
|
||||||
# (in a different wordl the scan program would generate this)
|
# (in a different wordl the scan program would generate this)
|
||||||
|
|
|
@ -17,7 +17,7 @@ def main():
|
||||||
scanner.scan()
|
scanner.scan()
|
||||||
scanner.close()
|
scanner.close()
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now doing 'import sndsupport' ==="
|
print "=== Done scanning and generating, now doing 'import sndsupport' ==="
|
||||||
import sndsupport
|
import sndsupport
|
||||||
print "=== Done. It's up to you to compile Sndmodule.c ==="
|
print "=== Done. It's up to you to compile Sndmodule.c ==="
|
||||||
|
|
|
@ -304,7 +304,7 @@ sndmethods = []
|
||||||
|
|
||||||
# populate the lists
|
# populate the lists
|
||||||
|
|
||||||
execfile('sndgen.py')
|
exec(open('sndgen.py').read())
|
||||||
|
|
||||||
|
|
||||||
# add the functions and methods to the module and object, respectively
|
# add the functions and methods to the module and object, respectively
|
||||||
|
|
|
@ -18,7 +18,7 @@ def main():
|
||||||
scanner.scan()
|
scanner.scan()
|
||||||
scanner.close()
|
scanner.close()
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now importing the generated code... ==="
|
print "=== Done scanning and generating, now importing the generated code... ==="
|
||||||
exec "import " + SHORT + "support"
|
exec "import " + SHORT + "support"
|
||||||
print "=== Done. It's up to you to compile it now! ==="
|
print "=== Done. It's up to you to compile it now! ==="
|
||||||
|
|
|
@ -198,7 +198,7 @@ Method = TEMethodGenerator
|
||||||
# Create and populate the lists
|
# Create and populate the lists
|
||||||
functions = []
|
functions = []
|
||||||
methods = []
|
methods = []
|
||||||
execfile(INPUTFILE)
|
exec(open(INPUTFILE).read())
|
||||||
|
|
||||||
# Converter from/to handle
|
# Converter from/to handle
|
||||||
f = Function(TEHandle, 'as_TE', (Handle, 'h', InMode))
|
f = Function(TEHandle, 'as_TE', (Handle, 'h', InMode))
|
||||||
|
|
|
@ -14,7 +14,7 @@ def main():
|
||||||
scanner.scan()
|
scanner.scan()
|
||||||
scanner.close()
|
scanner.close()
|
||||||
print "=== Testing definitions output code ==="
|
print "=== Testing definitions output code ==="
|
||||||
execfile(defsoutput, {}, {})
|
exec(open(defsoutput).read(), {}, {})
|
||||||
print "=== Done scanning and generating, now importing the generated code... ==="
|
print "=== Done scanning and generating, now importing the generated code... ==="
|
||||||
import winsupport
|
import winsupport
|
||||||
print "=== Done. It's up to you to compile it now! ==="
|
print "=== Done. It's up to you to compile it now! ==="
|
||||||
|
|
|
@ -191,7 +191,7 @@ Method = OSErrWeakLinkMethodGenerator
|
||||||
# Create and populate the lists
|
# Create and populate the lists
|
||||||
functions = []
|
functions = []
|
||||||
methods = []
|
methods = []
|
||||||
execfile(INPUTFILE)
|
exec(open(INPUTFILE).read())
|
||||||
|
|
||||||
# Add manual routines for converting integer WindowPtr's (as returned by
|
# Add manual routines for converting integer WindowPtr's (as returned by
|
||||||
# various event routines) and Dialog objects to a WindowObject.
|
# 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
|
# 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
|
# are currently #defined in Windows.h, they will be real routines in Copland
|
||||||
# (at which time this execfile can go)
|
# (at which time this exec can go)
|
||||||
execfile(EDITFILE)
|
exec(open(EDITFILE).read())
|
||||||
|
|
||||||
# add the populated lists to the generator groups
|
# add the populated lists to the generator groups
|
||||||
# (in a different wordl the scan program would generate this)
|
# (in a different wordl the scan program would generate this)
|
||||||
|
|
|
@ -152,7 +152,7 @@ Core and Builtins
|
||||||
backticks (ie, `x`), <>
|
backticks (ie, `x`), <>
|
||||||
|
|
||||||
- Removed these Python builtins:
|
- Removed these Python builtins:
|
||||||
apply(), callable(), coerce(), file(), reduce(), reload()
|
apply(), callable(), coerce(), execfile(), file(), reduce(), reload()
|
||||||
|
|
||||||
- Removed these Python methods:
|
- Removed these Python methods:
|
||||||
{}.has_key
|
{}.has_key
|
||||||
|
|
|
@ -66,10 +66,10 @@ if exists("python_highlight_builtins")
|
||||||
syn keyword pythonBuiltin __import__ abs all any basestring bool
|
syn keyword pythonBuiltin __import__ abs all any basestring bool
|
||||||
syn keyword pythonBuiltin buffer callable chr classmethod cmp
|
syn keyword pythonBuiltin buffer callable chr classmethod cmp
|
||||||
syn keyword pythonBuiltin complex copyright credits delattr dict
|
syn keyword pythonBuiltin complex copyright credits delattr dict
|
||||||
syn keyword pythonBuiltin dir divmod enumerate eval execfile exit file
|
syn keyword pythonBuiltin dir divmod enumerate eval exec exit
|
||||||
syn keyword pythonBuiltin filter float frozenset getattr globals hasattr
|
syn keyword pythonBuiltin filter float frozenset getattr globals hasattr
|
||||||
syn keyword pythonBuiltin hash help hex id int isinstance
|
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 max min object oct open ord pow property quit
|
||||||
syn keyword pythonBuiltin range reload repr reversed round
|
syn keyword pythonBuiltin range reload repr reversed round
|
||||||
syn keyword pythonBuiltin set setattr slice sorted staticmethod str sum
|
syn keyword pythonBuiltin set setattr slice sorted staticmethod str sum
|
||||||
|
|
|
@ -282,11 +282,10 @@ None
|
||||||
|
|
||||||
Numeric types
|
Numeric types
|
||||||
|
|
||||||
Floats, integers and long integers.
|
Floats and integers.
|
||||||
|
|
||||||
Floats are implemented with C doubles.
|
Floats are implemented with C doubles.
|
||||||
Integers are implemented with C longs.
|
Integers have unlimited size (only limit is system resources)
|
||||||
Long integers have unlimited size (only limit is system resources)
|
|
||||||
|
|
||||||
Operators on all numeric types
|
Operators on all numeric types
|
||||||
|
|
||||||
|
@ -294,7 +293,6 @@ Operators on all numeric types
|
||||||
Operation Result
|
Operation Result
|
||||||
abs(x) the absolute value of x
|
abs(x) the absolute value of x
|
||||||
int(x) x converted to integer
|
int(x) x converted to integer
|
||||||
long(x) x converted to long integer
|
|
||||||
float(x) x converted to floating point
|
float(x) x converted to floating point
|
||||||
-x x negated
|
-x x negated
|
||||||
+x x unchanged
|
+x x unchanged
|
||||||
|
@ -306,7 +304,7 @@ x % y remainder of x / y
|
||||||
divmod(x, y) the tuple (x/y, x%y)
|
divmod(x, y) the tuple (x/y, x%y)
|
||||||
x ** y x to the power y (the same as pow(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
|
Bit operators
|
||||||
Operation >Result
|
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
|
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.
|
locals]]) have no NUL's or newlines. s can also be acode object.
|
||||||
Example: x = 1; incr_x = eval('x + 1')
|
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
|
filter(function, Constructs a list from those elements of sequence for which
|
||||||
sequence) function returns true. function takes one parameter.
|
sequence) function returns true. function takes one parameter.
|
||||||
float(x) Converts a number or a string to floating point.
|
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
|
list(sequence) Converts sequence into a list. If already a list,returns a
|
||||||
copy of it.
|
copy of it.
|
||||||
locals() Returns a dictionary containing current local variables.
|
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
|
Applies function to every item of list and returns a listof
|
||||||
map(function, list, the results. If additional arguments are passed,function
|
map(function, list, the results. If additional arguments are passed,function
|
||||||
...) must take that many arguments and it is givento function on
|
...) 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 = __ixor__(s,o) s|=o = __ior__(s,o)
|
||||||
s<<=o = __ilshift__(s,o) s>>=o = __irshift__(s,o)
|
s<<=o = __ilshift__(s,o) s>>=o = __irshift__(s,o)
|
||||||
Conversions
|
Conversions
|
||||||
int(s) = __int__(s) long(s) = __long__(s)
|
int(s) = __int__(s)
|
||||||
float(s) = __float__(s) complex(s) = __complex__(s)
|
float(s) = __float__(s) complex(s) = __complex__(s)
|
||||||
oct(s) = __oct__(s) hex(s) = __hex__(s)
|
oct(s) = __oct__(s) hex(s) = __hex__(s)
|
||||||
Right-hand-side equivalents for all binary operators exist;
|
Right-hand-side equivalents for all binary operators exist;
|
||||||
|
|
|
@ -380,7 +380,7 @@ support for features needed by `python-mode'.")
|
||||||
"bool" "buffer" "callable" "chr" "classmethod"
|
"bool" "buffer" "callable" "chr" "classmethod"
|
||||||
"cmp" "compile" "complex" "copyright"
|
"cmp" "compile" "complex" "copyright"
|
||||||
"delattr" "dict" "dir" "divmod"
|
"delattr" "dict" "dir" "divmod"
|
||||||
"enumerate" "eval" "execfile" "exit" "file"
|
"enumerate" "eval" "exit" "file"
|
||||||
"filter" "float" "getattr" "globals" "hasattr"
|
"filter" "float" "getattr" "globals" "hasattr"
|
||||||
"hash" "hex" "id" "int"
|
"hash" "hex" "id" "int"
|
||||||
"isinstance" "issubclass" "iter" "len" "license"
|
"isinstance" "issubclass" "iter" "len" "license"
|
||||||
|
@ -1262,7 +1262,7 @@ comment."
|
||||||
|
|
||||||
;; Python subprocess utilities and filters
|
;; Python subprocess utilities and filters
|
||||||
(defun py-execute-file (proc filename)
|
(defun py-execute-file (proc filename)
|
||||||
"Send to Python interpreter process PROC \"execfile('FILENAME')\".
|
"Send to Python interpreter process PROC \"exec(open('FILENAME').read())\".
|
||||||
Make that process's buffer visible and force display. Also make
|
Make that process's buffer visible and force display. Also make
|
||||||
comint believe the user typed this string so that
|
comint believe the user typed this string so that
|
||||||
`kill-output-from-shell' does The Right Thing."
|
`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))
|
(procbuf (process-buffer proc))
|
||||||
; (comint-scroll-to-bottom-on-output t)
|
; (comint-scroll-to-bottom-on-output t)
|
||||||
(msg (format "## working on region in file %s...\n" filename))
|
(msg (format "## working on region in file %s...\n" filename))
|
||||||
(cmd (format "execfile(r'%s')\n" filename)))
|
(cmd (format "exec(open(r'%s').read())\n" filename)))
|
||||||
(unwind-protect
|
(unwind-protect
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(set-buffer procbuf)
|
(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
|
non-nil, specifies to run the command asynchronously in its own
|
||||||
buffer.
|
buffer.
|
||||||
|
|
||||||
If the Python interpreter shell is running, the region is execfile()'d
|
If the Python interpreter shell is running, the region is exec()'d
|
||||||
in that shell. If you try to execute regions too quickly,
|
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
|
`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
|
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
|
If the file has already been imported, then do reload instead to get
|
||||||
the latest version.
|
the latest version.
|
||||||
|
|
||||||
If the file's name does not end in \".py\", then do execfile 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'
|
If the current buffer is not visiting a file, do `py-execute-buffer'
|
||||||
instead.
|
instead.
|
||||||
|
@ -1768,7 +1768,7 @@ This may be preferable to `\\[py-execute-buffer]' because:
|
||||||
(file-name-nondirectory file))))
|
(file-name-nondirectory file))))
|
||||||
(format "if globals().has_key('%s'):\n reload(%s)\nelse:\n import %s\n"
|
(format "if globals().has_key('%s'):\n reload(%s)\nelse:\n import %s\n"
|
||||||
f f f))
|
f f f))
|
||||||
(format "execfile(r'%s')\n" file))
|
(format "exec(open(r'%s'))\n" file))
|
||||||
async))
|
async))
|
||||||
;; else
|
;; else
|
||||||
(py-execute-buffer async))))
|
(py-execute-buffer async))))
|
||||||
|
|
|
@ -317,7 +317,7 @@ Py_UniversalNewlineFgets(char *buf, int n, FILE *stream, PyObject *fobj)
|
||||||
** will cause a pause if we're reading from an
|
** will cause a pause if we're reading from an
|
||||||
** interactive stream, but that is very unlikely
|
** interactive stream, but that is very unlikely
|
||||||
** unless we're doing something silly like
|
** unless we're doing something silly like
|
||||||
** execfile("/dev/tty").
|
** exec(open("/dev/tty").read()).
|
||||||
*/
|
*/
|
||||||
c = GETC(stream);
|
c = GETC(stream);
|
||||||
if ( c != '\n' )
|
if ( c != '\n' )
|
||||||
|
|
|
@ -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.");
|
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 *
|
static PyObject *
|
||||||
builtin_getattr(PyObject *self, PyObject *args)
|
builtin_getattr(PyObject *self, PyObject *args)
|
||||||
{
|
{
|
||||||
|
@ -1737,7 +1636,6 @@ static PyMethodDef builtin_methods[] = {
|
||||||
{"divmod", builtin_divmod, METH_VARARGS, divmod_doc},
|
{"divmod", builtin_divmod, METH_VARARGS, divmod_doc},
|
||||||
{"eval", builtin_eval, METH_VARARGS, eval_doc},
|
{"eval", builtin_eval, METH_VARARGS, eval_doc},
|
||||||
{"exec", builtin_exec, METH_VARARGS, exec_doc},
|
{"exec", builtin_exec, METH_VARARGS, exec_doc},
|
||||||
{"execfile", builtin_execfile, METH_VARARGS, execfile_doc},
|
|
||||||
{"filter", builtin_filter, METH_VARARGS, filter_doc},
|
{"filter", builtin_filter, METH_VARARGS, filter_doc},
|
||||||
{"getattr", builtin_getattr, METH_VARARGS, getattr_doc},
|
{"getattr", builtin_getattr, METH_VARARGS, getattr_doc},
|
||||||
{"globals", (PyCFunction)builtin_globals, METH_NOARGS, globals_doc},
|
{"globals", (PyCFunction)builtin_globals, METH_NOARGS, globals_doc},
|
||||||
|
|
2
README
2
README
|
@ -1101,7 +1101,7 @@ Modules/getpath.o.
|
||||||
--with(out)-universal-newlines: enable reading of text files with
|
--with(out)-universal-newlines: enable reading of text files with
|
||||||
foreign newline convention (default: enabled). In other words,
|
foreign newline convention (default: enabled). In other words,
|
||||||
any of \r, \n or \r\n is acceptable as end-of-line character.
|
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
|
in files. Python code can open a file with open(file, 'U') to
|
||||||
read it in universal newline mode. THIS OPTION IS UNSUPPORTED.
|
read it in universal newline mode. THIS OPTION IS UNSUPPORTED.
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,12 @@ def run_hotshot(filename, profile, args):
|
||||||
prof = hotshot.Profile(profile)
|
prof = hotshot.Profile(profile)
|
||||||
sys.path.insert(0, os.path.dirname(filename))
|
sys.path.insert(0, os.path.dirname(filename))
|
||||||
sys.argv = [filename] + args
|
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()
|
prof.close()
|
||||||
stats = hotshot.stats.load(profile)
|
stats = hotshot.stats.load(profile)
|
||||||
stats.sort_stats("time", "calls")
|
stats.sort_stats("time", "calls")
|
||||||
|
|
|
@ -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,
|
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
|
this is handy for distributions that live in multiple places. Put the
|
||||||
primary distribution site (the most up-to-date site) before others.
|
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,
|
directory is the checkversion directory, so be careful with globals,
|
||||||
importing, etc.
|
importing, etc.
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ def check1dir(dummy, dir, files):
|
||||||
if CHECKNAME in files:
|
if CHECKNAME in files:
|
||||||
fullname = os.path.join(dir, CHECKNAME)
|
fullname = os.path.join(dir, CHECKNAME)
|
||||||
try:
|
try:
|
||||||
execfile(fullname)
|
exec(open(fullname).read())
|
||||||
except:
|
except:
|
||||||
print('** Exception in', fullname)
|
print('** Exception in', fullname)
|
||||||
|
|
||||||
|
|
7
setup.py
7
setup.py
|
@ -1369,7 +1369,12 @@ class PyBuildExt(build_ext):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
fficonfig = {}
|
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')
|
ffi_srcdir = os.path.join(fficonfig['ffi_srcdir'], 'src')
|
||||||
|
|
||||||
# Add .S (preprocessed assembly) to C compiler source extensions.
|
# Add .S (preprocessed assembly) to C compiler source extensions.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue