diff options
-rw-r--r-- | Doc/library/multiprocessing.rst | 4 | ||||
-rw-r--r-- | Doc/library/pdb.rst | 65 | ||||
-rw-r--r-- | Doc/library/sys.rst | 53 | ||||
-rw-r--r-- | Lib/test/test_bytes.py | 2 | ||||
-rw-r--r-- | Lib/uuid.py | 4 | ||||
-rw-r--r-- | Misc/NEWS | 10 | ||||
-rw-r--r-- | PC/VC6/pythoncore.dsp | 4 | ||||
-rw-r--r-- | PC/VS7.1/pythoncore.vcproj | 3 | ||||
-rw-r--r-- | PC/VS8.0/pythoncore.vcproj | 8 | ||||
-rw-r--r-- | PC/os2vacpp/makefile | 5 | ||||
-rw-r--r-- | PC/os2vacpp/makefile.omk | 5 | ||||
-rw-r--r-- | PCbuild/pythoncore.vcproj | 8 | ||||
-rw-r--r-- | Python/pythonrun.c | 2 |
13 files changed, 69 insertions, 104 deletions
diff --git a/Doc/library/multiprocessing.rst b/Doc/library/multiprocessing.rst index 8ea561f217..b01699c628 100644 --- a/Doc/library/multiprocessing.rst +++ b/Doc/library/multiprocessing.rst @@ -872,7 +872,7 @@ inherited by child processes. Note that *lock* is a keyword only argument. - Note that an array of :data:`ctypes.c_char` has *value* and *rawvalue* + Note that an array of :data:`ctypes.c_char` has *value* and *raw* attributes which allow one to use it to store and retrieve strings. @@ -921,7 +921,7 @@ processes. :func:`Value` instead to make sure that access is automatically synchronized using a lock. - Note that an array of :data:`ctypes.c_char` has ``value`` and ``rawvalue`` + Note that an array of :data:`ctypes.c_char` has ``value`` and ``raw`` attributes which allow one to use it to store and retrieve strings -- see documentation for :mod:`ctypes`. diff --git a/Doc/library/pdb.rst b/Doc/library/pdb.rst index adbff79e35..2537983004 100644 --- a/Doc/library/pdb.rst +++ b/Doc/library/pdb.rst @@ -336,68 +336,3 @@ run [*args* ...] q(uit) Quit from the debugger. The program being executed is aborted. - - -.. _debugger-hooks: - -How It Works -============ - -Some changes were made to the interpreter: - -* ``sys.settrace(func)`` sets the global trace function - -* there can also a local trace function (see later) - -Trace functions have three arguments: *frame*, *event*, and *arg*. *frame* is -the current stack frame. *event* is a string: ``'call'``, ``'line'``, -``'return'``, ``'exception'``, ``'c_call'``, ``'c_return'``, or -``'c_exception'``. *arg* depends on the event type. - -The global trace function is invoked (with *event* set to ``'call'``) whenever a -new local scope is entered; it should return a reference to the local trace -function to be used that scope, or ``None`` if the scope shouldn't be traced. - -The local trace function should return a reference to itself (or to another -function for further tracing in that scope), or ``None`` to turn off tracing in -that scope. - -Instance methods are accepted (and very useful!) as trace functions. - -The events have the following meaning: - -``'call'`` - A function is called (or some other code block entered). The global trace - function is called; *arg* is ``None``; the return value specifies the local - trace function. - -``'line'`` - The interpreter is about to execute a new line of code (sometimes multiple line - events on one line exist). The local trace function is called; *arg* is - ``None``; the return value specifies the new local trace function. - -``'return'`` - A function (or other code block) is about to return. The local trace function - is called; *arg* is the value that will be returned. The trace function's - return value is ignored. - -``'exception'`` - An exception has occurred. The local trace function is called; *arg* is a - triple ``(exception, value, traceback)``; the return value specifies the new - local trace function. - -``'c_call'`` - A C function is about to be called. This may be an extension function or a - builtin. *arg* is the C function object. - -``'c_return'`` - A C function has returned. *arg* is ``None``. - -``'c_exception'`` - A C function has thrown an exception. *arg* is ``None``. - -Note that as an exception is propagated down the chain of callers, an -``'exception'`` event is generated at each level. - -For more information on code and frame objects, refer to :ref:`types`. - diff --git a/Doc/library/sys.rst b/Doc/library/sys.rst index 568b06df8c..e4dbf177eb 100644 --- a/Doc/library/sys.rst +++ b/Doc/library/sys.rst @@ -623,11 +623,60 @@ always available. single: debugger Set the system's trace function, which allows you to implement a Python - source code debugger in Python. See section :ref:`debugger-hooks` in the - chapter on the Python debugger. The function is thread-specific; for a + source code debugger in Python. The function is thread-specific; for a debugger to support multiple threads, it must be registered using :func:`settrace` for each thread being debugged. + Trace functions should have three arguments: *frame*, *event*, and + *arg*. *frame* is the current stack frame. *event* is a string: ``'call'``, + ``'line'``, ``'return'``, ``'exception'``, ``'c_call'``, ``'c_return'``, or + ``'c_exception'``. *arg* depends on the event type. + + The trace function is invoked (with *event* set to ``'call'``) whenever a new + local scope is entered; it should return a reference to a local trace + function to be used that scope, or ``None`` if the scope shouldn't be traced. + + The local trace function should return a reference to itself (or to another + function for further tracing in that scope), or ``None`` to turn off tracing + in that scope. + + The events have the following meaning: + + ``'call'`` + A function is called (or some other code block entered). The + global trace function is called; *arg* is ``None``; the return value + specifies the local trace function. + + ``'line'`` + The interpreter is about to execute a new line of code (sometimes multiple + line events on one line exist). The local trace function is called; *arg* + is ``None``; the return value specifies the new local trace function. + + ``'return'`` + A function (or other code block) is about to return. The local trace + function is called; *arg* is the value that will be returned. The trace + function's return value is ignored. + + ``'exception'`` + An exception has occurred. The local trace function is called; *arg* is a + tuple ``(exception, value, traceback)``; the return value specifies the + new local trace function. + + ``'c_call'`` + A C function is about to be called. This may be an extension function or + a builtin. *arg* is the C function object. + + ``'c_return'`` + A C function has returned. *arg* is ``None``. + + ``'c_exception'`` + A C function has thrown an exception. *arg* is ``None``. + + Note that as an exception is propagated down the chain of callers, an + ``'exception'`` event is generated at each level. + + For more information on code and frame objects, refer to :ref:`types`. + .. note:: The :func:`settrace` function is intended only for implementing debuggers, diff --git a/Lib/test/test_bytes.py b/Lib/test/test_bytes.py index 7b2a0bd063..24812a5bcd 100644 --- a/Lib/test/test_bytes.py +++ b/Lib/test/test_bytes.py @@ -742,7 +742,7 @@ class ByteArrayTest(BaseBytesTest): # Issue 4348. Make sure that operations that don't mutate the array # copy the bytes. b = bytearray(b'abc') - #self.assertFalse(b is b.replace(b'abc', b'cde', 0)) + self.assertFalse(b is b.replace(b'abc', b'cde', 0)) t = bytearray([i for i in range(256)]) x = bytearray(b'') diff --git a/Lib/uuid.py b/Lib/uuid.py index eaf7c8825f..d50550abc1 100644 --- a/Lib/uuid.py +++ b/Lib/uuid.py @@ -500,8 +500,8 @@ def uuid1(node=None, clock_seq=None): # When the system provides a version-1 UUID generator, use it (but don't # use UuidCreate here because its UUIDs don't conform to RFC 4122). - _buffer = ctypes.create_string_buffer(16) if _uuid_generate_time and node is clock_seq is None: + _buffer = ctypes.create_string_buffer(16) _uuid_generate_time(_buffer) return UUID(bytes=bytes_(_buffer.raw)) @@ -537,8 +537,8 @@ def uuid4(): """Generate a random UUID.""" # When the system provides a version-4 UUID generator, use it. - _buffer = ctypes.create_string_buffer(16) if _uuid_generate_random: + _buffer = ctypes.create_string_buffer(16) _uuid_generate_random(_buffer) return UUID(bytes=bytes_(_buffer.raw)) @@ -12,6 +12,13 @@ What's New in Python 3.0 final Core and Builtins ----------------- +- Issue #3996: On Windows, the PyOS_CheckStack function would cause the + interpreter to abort ("Fatal Python error: Could not reset the stack!") + instead of throwing a MemoryError. + +- Issue #4367: Python would segfault during compiling when the unicodedata + module couldn't be imported and \N escapes were present. + Library ------- @@ -48,6 +55,9 @@ Core and Builtins Library ------- +- Issue #4363: The uuid.uuid1() and uuid.uuid4() functions now work even if + the ctypes module is not present. + - FileIO's mode attribute now always includes ``"b"``. - Issue #3799: Fix dbm.dumb to accept strings as well as bytes for keys. String diff --git a/PC/VC6/pythoncore.dsp b/PC/VC6/pythoncore.dsp index a3ea6bdf5c..2b702ad877 100644 --- a/PC/VC6/pythoncore.dsp +++ b/PC/VC6/pythoncore.dsp @@ -723,10 +723,6 @@ SOURCE=..\..\Modules\xxsubtype.c # End Source File
# Begin Source File
-SOURCE=..\..\Modules\yuvconvert.c
-# End Source File
-# Begin Source File
-
SOURCE=..\..\Modules\zipimport.c
# End Source File
# Begin Source File
diff --git a/PC/VS7.1/pythoncore.vcproj b/PC/VS7.1/pythoncore.vcproj index 3c395b8fbc..9d2e4caa18 100644 --- a/PC/VS7.1/pythoncore.vcproj +++ b/PC/VS7.1/pythoncore.vcproj @@ -804,9 +804,6 @@ RelativePath="..\..\Modules\xxsubtype.c"> </File> <File - RelativePath="..\..\Modules\yuvconvert.c"> - </File> - <File RelativePath="..\..\Modules\zipimport.c"> </File> </Files> diff --git a/PC/VS8.0/pythoncore.vcproj b/PC/VS8.0/pythoncore.vcproj index 0e7c478557..f925c40021 100644 --- a/PC/VS8.0/pythoncore.vcproj +++ b/PC/VS8.0/pythoncore.vcproj @@ -1143,14 +1143,6 @@ > </File> <File - RelativePath="..\..\Modules\yuv.h" - > - </File> - <File - RelativePath="..\..\Modules\yuvconvert.c" - > - </File> - <File RelativePath="..\..\Modules\zipimport.c" > </File> diff --git a/PC/os2vacpp/makefile b/PC/os2vacpp/makefile index d47ff1f75a..5c110fedae 100644 --- a/PC/os2vacpp/makefile +++ b/PC/os2vacpp/makefile @@ -200,8 +200,7 @@ MODULES = \ $(PATHOBJ)\StropModule.obj \ $(PATHOBJ)\StructModule.obj \ $(PATHOBJ)\TimeModule.obj \ - $(PATHOBJ)\ThreadModule.obj \ - $(PATHOBJ)\YUVConvert.obj + $(PATHOBJ)\ThreadModule.obj # Standalone Parser Generator Program (Shares Some of Python's Modules) PGEN = \ @@ -894,8 +893,6 @@ xxmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\class $(PY_INCLUDE)\sliceobject.h $(PY_INCLUDE)\stringobject.h \ $(PY_INCLUDE)\sysmodule.h $(PY_INCLUDE)\traceback.h $(PY_INCLUDE)\tupleobject.h -yuvconvert.obj: $(PY_MODULES)\yuv.h - zlibmodule.obj: $(PY_INCLUDE)\abstract.h $(PY_INCLUDE)\ceval.h $(PY_INCLUDE)\classobject.h \ $(PY_INCLUDE)\cobject.h $(PY_INCLUDE)\complexobject.h pyconfig.h \ $(PY_INCLUDE)\dictobject.h $(PY_INCLUDE)\fileobject.h $(PY_INCLUDE)\floatobject.h \ diff --git a/PC/os2vacpp/makefile.omk b/PC/os2vacpp/makefile.omk index 4f7f478f4b..24361d64ac 100644 --- a/PC/os2vacpp/makefile.omk +++ b/PC/os2vacpp/makefile.omk @@ -161,8 +161,7 @@ MODULES = \ StropModule.obj \ StructModule.obj \ TimeModule.obj \ - ThreadModule.obj \ - YUVConvert.obj + ThreadModule.obj # Omitted Modules (and Description/Reason): # @@ -645,8 +644,6 @@ xxmodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \ pythonrun.h rangeobject.h sliceobject.h stringobject.h sysmodule.h \ traceback.h tupleobject.h -yuvconvert.obj: yuv.h - zlibmodule.obj: abstract.h ceval.h classobject.h cobject.h complexobject.h \ pyconfig.h dictobject.h fileobject.h floatobject.h funcobject.h \ import.h intobject.h intrcheck.h listobject.h longobject.h \ diff --git a/PCbuild/pythoncore.vcproj b/PCbuild/pythoncore.vcproj index 33bea7e812..4cc3f2ee74 100644 --- a/PCbuild/pythoncore.vcproj +++ b/PCbuild/pythoncore.vcproj @@ -1143,14 +1143,6 @@ > </File> <File - RelativePath="..\Modules\yuv.h" - > - </File> - <File - RelativePath="..\Modules\yuvconvert.c" - > - </File> - <File RelativePath="..\Modules\zipimport.c" > </File> diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 2e80e86952..04dabc5c78 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -2039,7 +2039,7 @@ PyOS_CheckStack(void) EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) { int errcode = _resetstkoflw(); - if (errcode) + if (errcode == 0) { Py_FatalError("Could not reset the stack!"); } |