summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Doc/library/multiprocessing.rst4
-rw-r--r--Doc/library/pdb.rst65
-rw-r--r--Doc/library/sys.rst53
-rw-r--r--Lib/test/test_bytes.py2
-rw-r--r--Lib/uuid.py4
-rw-r--r--Misc/NEWS10
-rw-r--r--PC/VC6/pythoncore.dsp4
-rw-r--r--PC/VS7.1/pythoncore.vcproj3
-rw-r--r--PC/VS8.0/pythoncore.vcproj8
-rw-r--r--PC/os2vacpp/makefile5
-rw-r--r--PC/os2vacpp/makefile.omk5
-rw-r--r--PCbuild/pythoncore.vcproj8
-rw-r--r--Python/pythonrun.c2
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))
diff --git a/Misc/NEWS b/Misc/NEWS
index 4e797b211d..36cfe4163b 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -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!");
}