[Python-checkins] r69350 - in python/branches/py3k: Doc/c-api/exceptions.rst Doc/c-api/init.rst Doc/library/ctypes.rst Doc/library/optparse.rst Doc/library/threading.rst Doc/tools/sphinxext/download.html Doc/tools/sphinxext/pyspecific.py Doc/tutorial/floatingpoint.rst Doc/whatsnew/2.7.rst Lib/heapq.py Lib/test/test_hash.py Lib/test/test_os.py Lib/test/test_socket.py Lib/test/test_tcl.py Misc/NEWS Modules/socketmodule.c Python/compile.c

benjamin.peterson python-checkins at python.org
Fri Feb 6 03:40:08 CET 2009


Author: benjamin.peterson
Date: Fri Feb 6 03:40:07 2009
New Revision: 69350
Log:
Merged revisions 69129-69131,69139-69140,69143,69154-69159,69169,69288-69289,69293,69297-69301,69348 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/trunk
........
 r69129 | benjamin.peterson | 2009年01月30日 19:42:55 -0600 (2009年1月30日) | 1 line
 
 check the errno in bad fd cases
........
 r69130 | andrew.kuchling | 2009年01月30日 20:50:09 -0600 (2009年1月30日) | 1 line
 
 Add a section
........
 r69131 | andrew.kuchling | 2009年01月30日 21:26:02 -0600 (2009年1月30日) | 1 line
 
 Text edits and markup fixes
........
 r69139 | mark.dickinson | 2009年01月31日 10:44:04 -0600 (2009年1月31日) | 2 lines
 
 Add an extra test for long <-> float hash equivalence.
........
 r69140 | benjamin.peterson | 2009年01月31日 10:52:03 -0600 (2009年1月31日) | 1 line
 
 PyErr_BadInternalCall() raises a SystemError, not TypeError #5112
........
 r69143 | benjamin.peterson | 2009年01月31日 15:00:10 -0600 (2009年1月31日) | 1 line
 
 I believe the intention here was to avoid a global lookup
........
 r69154 | benjamin.peterson | 2009年01月31日 16:33:02 -0600 (2009年1月31日) | 1 line
 
 fix indentation in comment
........
 r69155 | david.goodger | 2009年01月31日 16:53:46 -0600 (2009年1月31日) | 1 line
 
 markup fix
........
 r69156 | gregory.p.smith | 2009年01月31日 16:57:30 -0600 (2009年1月31日) | 4 lines
 
 - Issue #5104: The socket module now raises OverflowError when 16-bit port and
 protocol numbers are supplied outside the allowed 0-65536 range on bind()
 and getservbyport().
........
 r69157 | benjamin.peterson | 2009年01月31日 17:43:25 -0600 (2009年1月31日) | 1 line
 
 add explanatory comment
........
 r69158 | benjamin.peterson | 2009年01月31日 17:54:38 -0600 (2009年1月31日) | 1 line
 
 more flags which only work for function blocks
........
 r69159 | gregory.p.smith | 2009年01月31日 18:16:01 -0600 (2009年1月31日) | 2 lines
 
 Update doc wording as suggested in issue4903.
........
 r69169 | guilherme.polo | 2009年01月31日 20:56:16 -0600 (2009年1月31日) | 3 lines
 
 Restore Tkinter.Tk._loadtk so this test doesn't fail for problems 
 related to ttk.
........
 r69288 | georg.brandl | 2009年02月05日 04:30:57 -0600 (2009年2月05日) | 1 line
 
 #5153: fix typo in example.
........
 r69289 | georg.brandl | 2009年02月05日 04:37:07 -0600 (2009年2月05日) | 1 line
 
 #5144: document that PySys_SetArgv prepends the script directory (or the empty string) to sys.path.
........
 r69293 | georg.brandl | 2009年02月05日 04:59:28 -0600 (2009年2月05日) | 1 line
 
 #5059: fix example.
........
 r69297 | georg.brandl | 2009年02月05日 05:32:18 -0600 (2009年2月05日) | 1 line
 
 #5015: document PythonHome API functions.
........
 r69298 | georg.brandl | 2009年02月05日 05:33:21 -0600 (2009年2月05日) | 1 line
 
 #4827: fix callback example.
........
 r69299 | georg.brandl | 2009年02月05日 05:35:28 -0600 (2009年2月05日) | 1 line
 
 #4820: use correct module for ctypes.util.
........
 r69300 | georg.brandl | 2009年02月05日 05:38:23 -0600 (2009年2月05日) | 1 line
 
 #4563: disable alpha and roman lists, fixes wrong formatting of contributor list.
........
 r69301 | georg.brandl | 2009年02月05日 05:40:35 -0600 (2009年2月05日) | 1 line
 
 #5031: fix Thread.daemon property docs.
........
 r69348 | benjamin.peterson | 2009年02月05日 19:47:31 -0600 (2009年2月05日) | 1 line
 
 fix download link
........
Modified:
 python/branches/py3k/ (props changed)
 python/branches/py3k/Doc/c-api/exceptions.rst
 python/branches/py3k/Doc/c-api/init.rst
 python/branches/py3k/Doc/library/ctypes.rst
 python/branches/py3k/Doc/library/optparse.rst
 python/branches/py3k/Doc/library/threading.rst
 python/branches/py3k/Doc/tools/sphinxext/download.html
 python/branches/py3k/Doc/tools/sphinxext/pyspecific.py
 python/branches/py3k/Doc/tutorial/floatingpoint.rst
 python/branches/py3k/Doc/whatsnew/2.7.rst
 python/branches/py3k/Lib/heapq.py
 python/branches/py3k/Lib/test/test_hash.py
 python/branches/py3k/Lib/test/test_os.py
 python/branches/py3k/Lib/test/test_socket.py
 python/branches/py3k/Lib/test/test_tcl.py
 python/branches/py3k/Misc/NEWS
 python/branches/py3k/Modules/socketmodule.c
 python/branches/py3k/Python/compile.c
Modified: python/branches/py3k/Doc/c-api/exceptions.rst
==============================================================================
--- python/branches/py3k/Doc/c-api/exceptions.rst	(original)
+++ python/branches/py3k/Doc/c-api/exceptions.rst	Fri Feb 6 03:40:07 2009
@@ -280,9 +280,10 @@
 
 .. cfunction:: void PyErr_BadInternalCall()
 
- This is a shorthand for ``PyErr_SetString(PyExc_TypeError, message)``, where
- *message* indicates that an internal operation (e.g. a Python/C API function)
- was invoked with an illegal argument. It is mostly for internal use.
+ This is a shorthand for ``PyErr_SetString(PyExc_SystemError, message)``,
+ where *message* indicates that an internal operation (e.g. a Python/C API
+ function) was invoked with an illegal argument. It is mostly for internal
+ use.
 
 
 .. cfunction:: int PyErr_WarnEx(PyObject *category, char *message, int stacklevel)
Modified: python/branches/py3k/Doc/c-api/init.rst
==============================================================================
--- python/branches/py3k/Doc/c-api/init.rst	(original)
+++ python/branches/py3k/Doc/c-api/init.rst	Fri Feb 6 03:40:07 2009
@@ -350,18 +350,36 @@
 single: Py_FatalError()
 single: argv (in module sys)
 
- Set ``sys.argv`` based on *argc* and *argv*. These parameters are similar to
- those passed to the program's :cfunc:`main` function with the difference that
- the first entry should refer to the script file to be executed rather than the
- executable hosting the Python interpreter. If there isn't a script that will be
- run, the first entry in *argv* can be an empty string. If this function fails
- to initialize ``sys.argv``, a fatal condition is signalled using
- :cfunc:`Py_FatalError`.
+ Set :data:`sys.argv` based on *argc* and *argv*. These parameters are
+ similar to those passed to the program's :cfunc:`main` function with the
+ difference that the first entry should refer to the script file to be
+ executed rather than the executable hosting the Python interpreter. If there
+ isn't a script that will be run, the first entry in *argv* can be an empty
+ string. If this function fails to initialize :data:`sys.argv`, a fatal
+ condition is signalled using :cfunc:`Py_FatalError`.
+
+ This function also prepends the executed script's path to :data:`sys.path`.
+ If no script is executed (in the case of calling ``python -c`` or just the
+ interactive interpreter), the empty string is used instead.
 
 .. XXX impl. doesn't seem consistent in allowing 0/NULL for the params;
 check w/ Guido.
 
 
+.. cfunction:: void Py_SetPythonHome(char *home)
+
+ Set the default "home" directory, that is, the location of the standard
+ Python libraries. The libraries are searched in
+ :file:`{home}/lib/python{version}` and :file:`{home}/lib/python{version}`.
+
+
+.. cfunction:: char* Py_GetPythonHome()
+
+ Return the default "home", that is, the value set by a previous call to
+ :cfunc:`Py_SetPythonHome`, or the value of the :envvar:`PYTHONHOME`
+ environment variable if it is set.
+
+
 .. _threads:
 
 Thread State and the Global Interpreter Lock
Modified: python/branches/py3k/Doc/library/ctypes.rst
==============================================================================
--- python/branches/py3k/Doc/library/ctypes.rst	(original)
+++ python/branches/py3k/Doc/library/ctypes.rst	Fri Feb 6 03:40:07 2009
@@ -1272,6 +1272,7 @@
 
 
 .. data:: find_library(name)
+ :module: ctypes.util
 :noindex:
 
 Try to find a library and return a pathname. *name* is the library name without
Modified: python/branches/py3k/Doc/library/optparse.rst
==============================================================================
--- python/branches/py3k/Doc/library/optparse.rst	(original)
+++ python/branches/py3k/Doc/library/optparse.rst	Fri Feb 6 03:40:07 2009
@@ -1506,7 +1506,7 @@
 records that the option was seen::
 
 def record_foo_seen(option, opt_str, value, parser):
- parser.saw_foo = True
+ parser.values.saw_foo = True
 
 parser.add_option("--foo", action="callback", callback=record_foo_seen)
 
@@ -1646,7 +1646,7 @@
 value.append(arg)
 
 del parser.rargs[:len(value)]
- setattr(parser.values, option.dest, value))
+ setattr(parser.values, option.dest, value)
 
 [...]
 parser.add_option("-c", "--callback", dest="vararg_attr",
Modified: python/branches/py3k/Doc/library/threading.rst
==============================================================================
--- python/branches/py3k/Doc/library/threading.rst	(original)
+++ python/branches/py3k/Doc/library/threading.rst	Fri Feb 6 03:40:07 2009
@@ -198,7 +198,7 @@
 A thread can be flagged as a "daemon thread". The significance of this flag is
 that the entire Python program exits when only daemon threads are left. The
 initial value is inherited from the creating thread. The flag can be set
-through the :attr:`daemon` attribute.
+through the :attr:`daemon` property.
 
 There is a "main thread" object; this corresponds to the initial thread of
 control in the Python program. It is not a daemon thread.
@@ -312,10 +312,11 @@
 
 .. attribute:: Thread.daemon
 
- The thread's daemon flag. This must be set before :meth:`start` is called,
- otherwise :exc:`RuntimeError` is raised.
-
- The initial value is inherited from the creating thread.
+ A boolean value indicating whether this thread is a daemon thread (True) or
+ not (False). This must be set before :meth:`start` is called, otherwise
+ :exc:`RuntimeError` is raised. Its initial value is inherited from the
+ creating thread; the main thread is not a daemon thread and therefore all
+ threads created in the main thread default to :attr:`daemon` = ``False``.
 
 The entire Python program exits when no alive non-daemon threads are left.
 
Modified: python/branches/py3k/Doc/tools/sphinxext/download.html
==============================================================================
--- python/branches/py3k/Doc/tools/sphinxext/download.html	(original)
+++ python/branches/py3k/Doc/tools/sphinxext/download.html	Fri Feb 6 03:40:07 2009
@@ -31,7 +31,7 @@
 <td><a href="{{ dlbase }}/python-{{ release }}-docs-html.tar.bz2">Download</a> (ca. 4 MB)</td>
 </tr>
 <tr><td>Plain Text</td>
- <td><a href="{{ dlbase }}/python-{{ release }}-text.zip">Download</a> (ca. 2 MB)</td>
+ <td><a href="{{ dlbase }}/python-{{ release }}-docs-text.zip">Download</a> (ca. 2 MB)</td>
 <td><a href="{{ dlbase }}/python-{{ release }}-docs-text.tar.bz2">Download</a> (ca. 1.5 MB)</td>
 </tr>
 </table>
Modified: python/branches/py3k/Doc/tools/sphinxext/pyspecific.py
==============================================================================
--- python/branches/py3k/Doc/tools/sphinxext/pyspecific.py	(original)
+++ python/branches/py3k/Doc/tools/sphinxext/pyspecific.py	Fri Feb 6 03:40:07 2009
@@ -13,6 +13,14 @@
 
 from docutils import nodes, utils
 
+# monkey-patch reST parser to disable alphabetic and roman enumerated lists
+from docutils.parsers.rst.states import Body
+Body.enum.converters['loweralpha'] = \
+ Body.enum.converters['upperalpha'] = \
+ Body.enum.converters['lowerroman'] = \
+ Body.enum.converters['upperroman'] = lambda x: None
+
+
 def issue_role(typ, rawtext, text, lineno, inliner, options={}, content=[]):
 issue = utils.unescape(text)
 text = 'issue ' + issue
Modified: python/branches/py3k/Doc/tutorial/floatingpoint.rst
==============================================================================
--- python/branches/py3k/Doc/tutorial/floatingpoint.rst	(original)
+++ python/branches/py3k/Doc/tutorial/floatingpoint.rst	Fri Feb 6 03:40:07 2009
@@ -200,7 +200,7 @@
 machines today (November 2000) use IEEE-754 floating point arithmetic, and
 almost all platforms map Python floats to IEEE-754 "double precision". 754
 doubles contain 53 bits of precision, so on input the computer strives to
-convert 0.1 to the closest fraction it can of the form *J*/2\*\**N* where *J* is
+convert 0.1 to the closest fraction it can of the form *J*/2**\ *N* where *J* is
 an integer containing exactly 53 bits. Rewriting ::
 
 1 / 10 ~= J / (2**N)
Modified: python/branches/py3k/Doc/whatsnew/2.7.rst
==============================================================================
--- python/branches/py3k/Doc/whatsnew/2.7.rst	(original)
+++ python/branches/py3k/Doc/whatsnew/2.7.rst	Fri Feb 6 03:40:07 2009
@@ -197,6 +197,23 @@
 .. ======================================================================
 .. whole new modules get described in subsections here
 
+ttk: Themed Widgets for Tk
+--------------------------
+
+Tcl/Tk 8.5 includes a set of themed widgets that re-implement basic Tk
+widgets but have a more customizable appearance and can therefore more
+closely resemble the native platform's widgets. This widget
+set was originally called Tile, but was renamed to Ttk (for "themed Tk")
+on being added to Tcl/Tck release 8.5.
+
+XXX write a brief discussion and an example here.
+
+The :mod:`ttk` module was written by Guilherme Polo and added in
+:issue:`2983`. An alternate version called ``Tile.py``, written by
+Martin Franklin and maintained by Kevin Walzer, was proposed for
+inclusion in :issue:`2618`, but the authors argued that Guilherme
+Polo's work was more comprehensive.
+
 .. ======================================================================
 
 
Modified: python/branches/py3k/Lib/heapq.py
==============================================================================
--- python/branches/py3k/Lib/heapq.py	(original)
+++ python/branches/py3k/Lib/heapq.py	Fri Feb 6 03:40:07 2009
@@ -195,7 +195,7 @@
 heapify(result)
 _heappushpop = heappushpop
 for elem in it:
- heappushpop(result, elem)
+ _heappushpop(result, elem)
 result.sort(reverse=True)
 return result
 
Modified: python/branches/py3k/Lib/test/test_hash.py
==============================================================================
--- python/branches/py3k/Lib/test/test_hash.py	(original)
+++ python/branches/py3k/Lib/test/test_hash.py	Fri Feb 6 03:40:07 2009
@@ -33,6 +33,7 @@
 # for 64-bit platforms
 self.same_hash(int(2**31), float(2**31))
 self.same_hash(int(-2**63), float(-2**63))
+ self.same_hash(long(2**63), float(2**63))
 
 def test_coerced_floats(self):
 self.same_hash(int(1.23e300), float(1.23e300))
Modified: python/branches/py3k/Lib/test/test_os.py
==============================================================================
--- python/branches/py3k/Lib/test/test_os.py	(original)
+++ python/branches/py3k/Lib/test/test_os.py	Fri Feb 6 03:40:07 2009
@@ -3,6 +3,7 @@
 # portable than they had been thought to be.
 
 import os
+import errno
 import unittest
 import warnings
 import sys
@@ -277,7 +278,6 @@
 result = os.statvfs(self.fname)
 except OSError as e:
 # On AtheOS, glibc always returns ENOSYS
- import errno
 if e.errno == errno.ENOSYS:
 return
 
@@ -601,7 +601,13 @@
 locals()["test_"+f] = get_single(f)
 
 def check(self, f, *args):
- self.assertRaises(OSError, f, support.make_bad_fd(), *args)
+ try:
+ f(support.make_bad_fd(), *args)
+ except OSError as e:
+ self.assertEqual(e.errno, errno.EBADF)
+ else:
+ self.fail("%r didn't raise a OSError with a bad file descriptor"
+ % f)
 
 def test_isatty(self):
 if hasattr(os, "isatty"):
Modified: python/branches/py3k/Lib/test/test_socket.py
==============================================================================
--- python/branches/py3k/Lib/test/test_socket.py	(original)
+++ python/branches/py3k/Lib/test/test_socket.py	Fri Feb 6 03:40:07 2009
@@ -366,6 +366,9 @@
 eq(socket.getservbyport(port, 'tcp'), service)
 if udpport is not None:
 eq(socket.getservbyport(udpport, 'udp'), service)
+ # Make sure getservbyport does not accept out of range ports.
+ self.assertRaises(OverflowError, socket.getservbyport, -1)
+ self.assertRaises(OverflowError, socket.getservbyport, 65536)
 
 def testDefaultTimeout(self):
 # Testing default timeout
@@ -466,15 +469,23 @@
 
 # XXX The following don't test module-level functionality...
 
- def testSockName(self):
- # Testing getsockname(). Use a temporary socket to elicit an unused
- # ephemeral port that we can use later in the test.
+ def _get_unused_port(self, bind_address='0.0.0.0'):
+ """Use a temporary socket to elicit an unused ephemeral port.
+
+ Args:
+ bind_address: Hostname or IP address to search for a port on.
+
+ Returns: A most likely to be unused port.
+ """
 tempsock = socket.socket()
- tempsock.bind(("0.0.0.0", 0))
- (host, port) = tempsock.getsockname()
+ tempsock.bind((bind_address, 0))
+ host, port = tempsock.getsockname()
 tempsock.close()
- del tempsock
+ return port
 
+ def testSockName(self):
+ # Testing getsockname()
+ port = self._get_unused_port()
 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 sock.bind(("0.0.0.0", port))
 name = sock.getsockname()
@@ -514,6 +525,19 @@
 self.assertEqual(sock.proto, 0)
 sock.close()
 
+ def test_getsockaddrarg(self):
+ host = '0.0.0.0'
+ port = self._get_unused_port(bind_address=host)
+ big_port = port + 65536
+ neg_port = port - 65536
+ sock = socket.socket()
+ try:
+ self.assertRaises(OverflowError, sock.bind, (host, big_port))
+ self.assertRaises(OverflowError, sock.bind, (host, neg_port))
+ sock.bind((host, port))
+ finally:
+ sock.close()
+
 def test_sock_ioctl(self):
 if os.name != "nt":
 return
Modified: python/branches/py3k/Lib/test/test_tcl.py
==============================================================================
--- python/branches/py3k/Lib/test/test_tcl.py	(original)
+++ python/branches/py3k/Lib/test/test_tcl.py	Fri Feb 6 03:40:07 2009
@@ -4,9 +4,15 @@
 import os
 import _tkinter
 from test import support
-from tkinter import Tcl
+from tkinter import Tk, Tcl
 from _tkinter import TclError
 
+# Restore Tkinter.Tk._loadtk that may have been overridden by ttk.
+# If this is not done then this test may fail for reasons related
+# to ttk only (like failing to load the tile package).
+from ttk import __loadtk__
+Tk._loadtk = __loadtk__
+
 
 class TkinterTest(unittest.TestCase):
 
Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS	(original)
+++ python/branches/py3k/Misc/NEWS	Fri Feb 6 03:40:07 2009
@@ -382,6 +382,10 @@
 - Issue #4861: ctypes.util.find_library(): Robustify. Fix library detection on
 biarch systems. Try to rely on ldconfig only, without using objdump and gcc.
 
+- Issue #5104: The socket module now raises OverflowError when 16-bit port and
+ protocol numbers are supplied outside the allowed 0-65536 range on bind()
+ and getservbyport().
+
 Tools/Demos
 -----------
 
Modified: python/branches/py3k/Modules/socketmodule.c
==============================================================================
--- python/branches/py3k/Modules/socketmodule.c	(original)
+++ python/branches/py3k/Modules/socketmodule.c	Fri Feb 6 03:40:07 2009
@@ -1223,6 +1223,12 @@
 PyMem_Free(host);
 if (result < 0)
 			return 0;
+		if (port < 0 || port > 0xffff) {
+			PyErr_SetString(
+				PyExc_OverflowError,
+				"getsockaddrarg: port must be 0-65535.");
+			return 0;
+		}
 		addr->sin_family = AF_INET;
 		addr->sin_port = htons((short)port);
 		*len_ret = sizeof *addr;
@@ -1255,6 +1261,12 @@
 PyMem_Free(host);
 if (result < 0)
 			return 0;
+		if (port < 0 || port > 0xffff) {
+			PyErr_SetString(
+				PyExc_OverflowError,
+				"getsockaddrarg: port must be 0-65535.");
+			return 0;
+		}
 		addr->sin6_family = s->sock_family;
 		addr->sin6_port = htons((short)port);
 		addr->sin6_flowinfo = flowinfo;
@@ -1381,6 +1393,12 @@
 				 "Hardware address must be 8 bytes or less");
 		 return 0;
 		}
+		if (protoNumber < 0 || protoNumber > 0xffff) {
+			PyErr_SetString(
+				PyExc_OverflowError,
+				"getsockaddrarg: protoNumber must be 0-65535.");
+			return 0;
+		}
 		addr = (struct sockaddr_ll*)addr_ret;
 		addr->sll_family = AF_PACKET;
 		addr->sll_protocol = htons((short)protoNumber);
@@ -3271,13 +3289,19 @@
 static PyObject *
 socket_getservbyport(PyObject *self, PyObject *args)
 {
-	unsigned short port;
+	int port;
 	char *proto=NULL;
 	struct servent *sp;
-	if (!PyArg_ParseTuple(args, "H|s:getservbyport", &port, &proto))
+	if (!PyArg_ParseTuple(args, "i|s:getservbyport", &port, &proto))
+		return NULL;
+	if (port < 0 || port > 0xffff) {
+		PyErr_SetString(
+			PyExc_OverflowError,
+			"getservbyport: port must be 0-65535.");
 		return NULL;
+	}
 	Py_BEGIN_ALLOW_THREADS
-	sp = getservbyport(htons(port), proto);
+	sp = getservbyport(htons((short)port), proto);
 	Py_END_ALLOW_THREADS
 	if (sp == NULL) {
 		PyErr_SetString(socket_error, "port/proto not found");
Modified: python/branches/py3k/Python/compile.c
==============================================================================
--- python/branches/py3k/Python/compile.c	(original)
+++ python/branches/py3k/Python/compile.c	Fri Feb 6 03:40:07 2009
@@ -4006,6 +4006,8 @@
 		return NULL;
 	while (PyDict_Next(dict, &pos, &k, &v)) {
 		i = PyLong_AS_LONG(v);
+		/* The keys of the dictionary are tuples. (see compiler_add_o)
+		 The object we want is always first, though. */
 		k = PyTuple_GET_ITEM(k, 0);
 		Py_INCREF(k);
 		assert((i - offset) < size);
@@ -4029,13 +4031,11 @@
 			flags |= CO_NESTED;
 		if (ste->ste_generator)
 			flags |= CO_GENERATOR;
+		if (ste->ste_varargs)
+			flags |= CO_VARARGS;
+		if (ste->ste_varkeywords)
+			flags |= CO_VARKEYWORDS;
 	}
-	if (ste->ste_varargs)
-		flags |= CO_VARARGS;
-	if (ste->ste_varkeywords)
-		flags |= CO_VARKEYWORDS;
-	if (ste->ste_generator)
-		flags |= CO_GENERATOR;
 
 	/* (Only) inherit compilerflags in PyCF_MASK */
 	flags |= (c->c_flags->cf_flags & PyCF_MASK);


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /