Merge lp:~mitya57/ubuntu/saucy/python3.3/3.3.2-5ubuntu1 into lp:ubuntu/saucy/python3.3

Proposed by Dmitry Shachnev
Status: Merged
Merge reported by: Dmitry Shachnev
Merged at revision: not available
Proposed branch: lp:~mitya57/ubuntu/saucy/python3.3/3.3.2-5ubuntu1
Merge into: lp:ubuntu/saucy/python3.3
Diff against target: 42201 lines (+40575/-225)
42 files modified
debian/PVER-minimal.postinst.in (+7/-3)
debian/changelog (+29/-0)
debian/control (+7/-6)
debian/control.in (+7/-6)
debian/multiarch.h.in (+8/-8)
debian/patches/add-python-config-sh.diff (+2/-8)
debian/patches/atomic-pyc-rename.diff (+2/-3)
debian/patches/avoid-rpath.diff (+4/-5)
debian/patches/bdist-wininst-notfound.diff (+0/-2)
debian/patches/ctypes-arm.diff (+1/-3)
debian/patches/deb-locations.diff (+0/-4)
debian/patches/deb-setup.diff (+3/-5)
debian/patches/disable-sem-check.diff (+2/-4)
debian/patches/distutils-init.diff (+1/-3)
debian/patches/distutils-install-layout.diff (+0/-16)
debian/patches/distutils-link.diff (+1/-3)
debian/patches/distutils-sysconfig.diff (+2/-4)
debian/patches/enable-fpectl.diff (+1/-3)
debian/patches/ext-no-libpython-link.diff (+2/-2)
debian/patches/hg-updates.diff (+40409/-43)
debian/patches/hurd-disable-nonworking-constants.diff (+2/-6)
debian/patches/installed-testsuite.diff (+0/-13)
debian/patches/kfreebsd-testsuite.diff (+47/-0)
debian/patches/kfreebsd-xattrs.diff (+1/-1)
debian/patches/lib-argparse.diff (+0/-2)
debian/patches/libffi-shared.diff (+1/-3)
debian/patches/link-opt.diff (+2/-4)
debian/patches/link-timemodule.diff (+0/-2)
debian/patches/locale-module.diff (+0/-2)
debian/patches/lto-link-flags.diff (+5/-7)
debian/patches/multiarch.diff (+5/-17)
debian/patches/ncurses-configure.diff (+7/-7)
debian/patches/no-zip-on-sys.path.diff (+4/-6)
debian/patches/platform-lsbrelease.diff (+2/-4)
debian/patches/profiled-build.diff (+0/-4)
debian/patches/series.in (+1/-0)
debian/patches/setup-modules.diff (+0/-2)
debian/patches/site-locations.diff (+0/-2)
debian/patches/statvfs-f_flag-constants.diff (+1/-3)
debian/patches/test-sundry.diff (+1/-1)
debian/patches/tkinter-import.diff (+1/-3)
debian/rules (+7/-5)
To merge this branch: bzr merge lp:~mitya57/ubuntu/saucy/python3.3/3.3.2-5ubuntu1
Reviewer Review Type Date Requested Status
Matthias Klose Pending
Barry Warsaw Pending
Ubuntu branches Pending
Review via email: mp+186118@code.launchpad.net

Description of the change

* Merge with Debian unstable, remaining change:
  - Regenerate the control file.
* debian/patches/platform-lsbrelease.diff: fix indentaion, which
  caused this patch to not work properly. LP: #1220508.

To post a comment you must log in.
37. By Dmitry Shachnev

d/control: Revert Multi-Arch headers change

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'debian/PVER-minimal.postinst.in'
2--- debian/PVER-minimal.postinst.in 2013-06-05 12:28:37 +0000
3+++ debian/PVER-minimal.postinst.in 2013-09-17 18:06:34 +0000
4@@ -35,9 +35,13 @@
5 # only available before removal of the packaging package
6 rm -f /etc/@PVER@/sysconfig.cfg
7
8- ls -L /usr/lib/@PVER@/sitecustomize.py >/dev/null 2>&1 \
9- || filt='| fgrep -v sitecustomize.py'
10- files=$(dpkg -L lib@PVER@-minimal | sed -n '/^\/usr\/lib\/@PVER@\/.*\.py$/p' $filt)
11+ if ls -L /usr/lib/@PVER@/sitecustomize.py >/dev/null 2>&1; then
12+ filt='cat'
13+ else
14+ filt='fgrep -v sitecustomize.py'
15+ fi
16+ files=$(dpkg -L lib@PVER@-minimal \
17+ | sed -n '/^\/usr\/lib\/@PVER@\/.*\.py$/p' | $filt)
18 if [ -n "$files" ]; then
19 @PVER@ -E -S /usr/lib/@PVER@/py_compile.py $files
20 if grep -sq '^byte-compile[^#]*optimize' /etc/python/debian_config; then
21
22=== modified file 'debian/changelog'
23--- debian/changelog 2013-06-05 12:28:37 +0000
24+++ debian/changelog 2013-09-17 18:06:34 +0000
25@@ -1,3 +1,32 @@
26+python3.3 (3.3.2-5ubuntu1) UNRELEASED; urgency=low
27+
28+ * Merge with Debian unstable, remaining change:
29+ - Regenerate the control file.
30+ * debian/patches/platform-lsbrelease.diff: fix indentaion, which
31+ caused this patch to not work properly. LP: #1220508.
32+
33+ -- Dmitry Shachnev <mitya57@ubuntu.com> Tue, 17 Sep 2013 21:00:31 +0400
34+
35+python3.3 (3.3.2-5) unstable; urgency=low
36+
37+ * Update to 20130803 from the 3.3 branch.
38+ - Fix fcntl test case on KFreeBSD (Petr Salinger).
39+ * Disable some socket tests on KFreeBSD (Petr Salinger).
40+ * Fix multiarch include header for sparc64. Closes: #714802.
41+ * Update package descriptions (Filipus Klutiero). Closes: #715801.
42+
43+ -- Matthias Klose <doko@debian.org> Sun, 04 Aug 2013 17:38:35 +0200
44+
45+python3.3 (3.3.2-4) unstable; urgency=low
46+
47+ * Update to 20130612 from the 3.3 branch.
48+ * Refresh patches.
49+ * Don't run consistency check for cross builds.
50+ * Really skip byte compile of non-existing sitecustomize.py.
51+ * Fix the multiarch header file for mips64 (YunQiang Su). Closes: #710374.
52+
53+ -- Matthias Klose <doko@debian.org> Wed, 12 Jun 2013 22:55:02 +0200
54+
55 python3.3 (3.3.2-3ubuntu1) saucy; urgency=low
56
57 * Merge with Debian; remaining changes:
58
59=== modified file 'debian/control'
60--- debian/control 2013-06-05 12:28:37 +0000
61+++ debian/control 2013-09-17 18:06:34 +0000
62@@ -14,6 +14,7 @@
63 libsqlite3-dev, libffi-dev (>= 3.0.5),
64 libgpm2 [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64],
65 mime-support, netbase, bzip2, python3:any,
66+ gcc (>= 4:4.8) [amd64 armel armhf i386 x32 kfreebsd-any hurd-any],
67 xvfb, xauth
68 Build-Depends-Indep: python-sphinx
69 Standards-Version: 3.9.4
70@@ -28,7 +29,7 @@
71 Depends: python3.3-minimal (= ${binary:Version}), libpython3.3-stdlib (= ${binary:Version}), mime-support, ${shlibs:Depends}, ${misc:Depends}
72 Suggests: python3.3-doc, binutils
73 Description: Interactive high-level object-oriented language (version 3.3)
74- Version 3.3 of the high-level, interactive object oriented language,
75+ Python is a high-level, interactive, object-oriented language. Its 3.3 version
76 includes an extensive class library with lots of goodies for
77 network programming, system administration, sounds and graphics.
78
79@@ -40,13 +41,13 @@
80 Depends: libpython3.3-minimal (= ${binary:Version}), mime-support, ${shlibs:Depends}, ${misc:Depends}
81 Provides: python3.3-cjkcodecs, python3.3-ctypes, python3.3-elementtree, python3.3-celementtree, python3.3-wsgiref, python3.3-gdbm, python3.3-profiler, python3.3-lzma
82 Replaces: python3.3 (<< 3.3.1~rc1-2~)
83-Description: Interactive high-level object-oriented language (version 3.3)
84- Version 3.3 of the high-level, interactive object oriented language,
85+Description: Interactive high-level object-oriented language (standard library, version 3.3)
86+ Python is a high-level, interactive, object-oriented language. Its 3.3 version
87 includes an extensive class library with lots of goodies for
88 network programming, system administration, sounds and graphics.
89 .
90- This package contains the standard library. It is normally not
91- used on it's own, but as a dependency of python3.3.
92+ This package contains Python 3.3's standard library. It is normally not
93+ used on its own, but as a dependency of python3.3.
94
95 Package: python3.3-minimal
96 Architecture: any
97@@ -87,7 +88,7 @@
98 Depends: libpython3.3-stdlib (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
99 Replaces: python3.3 (<< 3.0~rc1)
100 Description: Shared Python runtime library (version 3.3)
101- Version 3.3 of the high-level, interactive object oriented language,
102+ Python is a high-level, interactive, object-oriented language. Its 3.3 version
103 includes an extensive class library with lots of goodies for
104 network programming, system administration, sounds and graphics.
105 .
106
107=== modified file 'debian/control.in'
108--- debian/control.in 2013-06-05 12:28:37 +0000
109+++ debian/control.in 2013-09-17 18:06:34 +0000
110@@ -13,6 +13,7 @@
111 libsqlite3-dev, libffi-dev (>= 3.0.5),
112 libgpm2 [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64],
113 mime-support, netbase, bzip2, python3@bd_qual@,
114+ gcc (>= 4:4.8) [amd64 armel armhf i386 x32 kfreebsd-any hurd-any],
115 xvfb, xauth
116 Build-Depends-Indep: python-sphinx
117 Standards-Version: 3.9.4
118@@ -27,7 +28,7 @@
119 Depends: @PVER@-minimal (= ${binary:Version}), lib@PVER@-stdlib (= ${binary:Version}), mime-support, ${shlibs:Depends}, ${misc:Depends}
120 Suggests: @PVER@-doc, binutils
121 Description: Interactive high-level object-oriented language (version @VER@)
122- Version @VER@ of the high-level, interactive object oriented language,
123+ Python is a high-level, interactive, object-oriented language. Its @VER@ version
124 includes an extensive class library with lots of goodies for
125 network programming, system administration, sounds and graphics.
126
127@@ -39,13 +40,13 @@
128 Depends: lib@PVER@-minimal (= ${binary:Version}), mime-support, ${shlibs:Depends}, ${misc:Depends}
129 Provides: python@VER@-cjkcodecs, python@VER@-ctypes, python@VER@-elementtree, python@VER@-celementtree, python@VER@-wsgiref, @PVER@-gdbm, @PVER@-profiler, @PVER@-lzma
130 Replaces: @PVER@ (<< 3.3.1~rc1-2~)
131-Description: Interactive high-level object-oriented language (version @VER@)
132- Version @VER@ of the high-level, interactive object oriented language,
133+Description: Interactive high-level object-oriented language (standard library, version @VER@)
134+ Python is a high-level, interactive, object-oriented language. Its @VER@ version
135 includes an extensive class library with lots of goodies for
136 network programming, system administration, sounds and graphics.
137 .
138- This package contains the standard library. It is normally not
139- used on it's own, but as a dependency of @PVER@.
140+ This package contains Python @VER@'s standard library. It is normally not
141+ used on its own, but as a dependency of python@VER@.
142
143 Package: @PVER@-minimal
144 Architecture: any
145@@ -86,7 +87,7 @@
146 Depends: lib@PVER@-stdlib (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
147 Replaces: @PVER@ (<< 3.0~rc1)
148 Description: Shared Python runtime library (version @VER@)
149- Version @VER@ of the high-level, interactive object oriented language,
150+ Python is a high-level, interactive, object-oriented language. Its @VER@ version
151 includes an extensive class library with lots of goodies for
152 network programming, system administration, sounds and graphics.
153 .
154
155=== modified file 'debian/multiarch.h.in'
156--- debian/multiarch.h.in 2013-06-05 12:28:37 +0000
157+++ debian/multiarch.h.in 2013-09-17 18:06:34 +0000
158@@ -20,21 +20,21 @@
159 # elif defined(__m68k__) && !defined(__mcoldfire__)
160 # include <m68k-linux-gnu/@subdir@/@header@>
161 # elif defined(__mips_hard_float) && defined(_MIPSEL)
162-# if defined(_ABIO32)
163+# if _MIPS_SIM == _ABIO32
164 # include <mipsel-linux-gnu/@subdir@/@header@>
165-# elif defined(_ABIN32)
166+# elif _MIPS_SIM == _ABIN32
167 # include <mips64el-linux-gnuabin32/@subdir@/@header@>
168-# elif defined(_ABI64)
169+# elif _MIPS_SIM == _ABI64
170 # include <mips64el-linux-gnuabi64/@subdir@/@header@>
171 # else
172 # error unknown multiarch location for @header@
173 # endif
174 # elif defined(__mips_hard_float)
175-# if defined(_ABIO32)
176+# if _MIPS_SIM == _ABIO32
177 # include <mips-linux-gnu/@subdir@/@header@>
178-# elif defined(_ABIN32)
179+# elif _MIPS_SIM == _ABIN32
180 # include <mips64-linux-gnuabin32/@subdir@/@header@>
181-# elif defined(_ABI64)
182+# elif _MIPS_SIM == _ABI64
183 # include <mips64-linux-gnuabi64/@subdir@/@header@>
184 # else
185 # error unknown multiarch location for @header@
186@@ -51,10 +51,10 @@
187 # include <s390-linux-gnu/@subdir@/@header@>
188 # elif defined(__sh__) && defined(__LITTLE_ENDIAN__)
189 # include <sh4-linux-gnu/@subdir@/@header@>
190+# elif defined(__sparc64__)
191+# include <sparc64-linux-gnu/@subdir@/@header@>
192 # elif defined(__sparc__)
193 # include <sparc-linux-gnu/@subdir@/@header@>
194-# elif defined(__sparc64__)
195-# include <sparc64-linux-gnu/@subdir@/@header@>
196 # else
197 # error unknown multiarch location for @header@
198 # endif
199
200=== modified file 'debian/patches/add-python-config-sh.diff'
201--- debian/patches/add-python-config-sh.diff 2013-06-05 12:28:37 +0000
202+++ debian/patches/add-python-config-sh.diff 2013-09-17 18:06:34 +0000
203@@ -1,8 +1,6 @@
204-Index: b/Makefile.pre.in
205-===================================================================
206 --- a/Makefile.pre.in
207 +++ b/Makefile.pre.in
208-@@ -1161,6 +1161,8 @@
209+@@ -1175,6 +1175,8 @@
210 # Substitution happens here, as the completely-expanded BINDIR
211 # is not available in configure
212 sed -e "s,@EXENAME@,$(BINDIR)/python$(LDVERSION)$(EXE)," < $(srcdir)/Misc/python-config.in >python-config
213@@ -11,7 +9,7 @@
214
215 # Install the include files
216 INCLDIRSTOMAKE=$(INCLUDEDIR) $(CONFINCLUDEDIR) $(INCLUDEPY) $(CONFINCLUDEPY)
217-@@ -1219,6 +1221,7 @@
218+@@ -1233,6 +1235,7 @@
219 $(INSTALL_SCRIPT) $(srcdir)/Modules/makesetup $(DESTDIR)$(LIBPL)/makesetup
220 $(INSTALL_SCRIPT) $(srcdir)/install-sh $(DESTDIR)$(LIBPL)/install-sh
221 $(INSTALL_SCRIPT) python-config $(DESTDIR)$(BINDIR)/python$(LDVERSION)-config
222@@ -19,8 +17,6 @@
223 rm python-config
224 @if [ -s Modules/python.exp -a \
225 "`echo $(MACHDEP) | sed 's/^\(...\).*/\1/'`" = "aix" ]; then \
226-Index: b/Misc/python-config.sh.in
227-===================================================================
228 --- /dev/null
229 +++ b/Misc/python-config.sh.in
230 @@ -0,0 +1,107 @@
231@@ -131,8 +127,6 @@
232 + ;;
233 +esac
234 +done
235-Index: b/configure.ac
236-===================================================================
237 --- a/configure.ac
238 +++ b/configure.ac
239 @@ -917,6 +917,7 @@
240
241=== modified file 'debian/patches/atomic-pyc-rename.diff'
242--- debian/patches/atomic-pyc-rename.diff 2013-06-05 12:28:37 +0000
243+++ debian/patches/atomic-pyc-rename.diff 2013-09-17 18:06:34 +0000
244@@ -1,6 +1,5 @@
245-diff -r 6ab88d6527f1 Lib/py_compile.py
246---- a/Lib/py_compile.py Tue May 21 11:44:41 2013 -0400
247-+++ b/Lib/py_compile.py Tue May 21 14:43:25 2013 -0400
248+--- a/Lib/py_compile.py
249++++ b/Lib/py_compile.py
250 @@ -138,14 +138,25 @@
251 except OSError as error:
252 if error.errno != errno.EEXIST:
253
254=== modified file 'debian/patches/avoid-rpath.diff'
255--- debian/patches/avoid-rpath.diff 2012-08-26 23:15:00 +0000
256+++ debian/patches/avoid-rpath.diff 2013-09-17 18:06:34 +0000
257@@ -1,9 +1,8 @@
258 # DP: avoid runtime library path for some extension modules.
259
260-diff -r 12a56a349af2 setup.py
261---- a/setup.py Sat Jun 30 19:28:16 2012 +0200
262-+++ b/setup.py Sun Jul 01 10:25:14 2012 +0200
263-@@ -957,6 +957,15 @@
264+--- a/setup.py
265++++ b/setup.py
266+@@ -1011,6 +1011,15 @@
267 print("bsddb lib dir:", dblib_dir, " inc dir:", db_incdir)
268 db_incs = [db_incdir]
269 dblibs = [dblib]
270@@ -19,7 +18,7 @@
271 else:
272 if db_setup_debug: print("db: no appropriate library found")
273 db_incs = None
274-@@ -1065,6 +1074,9 @@
275+@@ -1121,6 +1130,9 @@
276 # can end up with a bad search path order.
277 if sqlite_incdir not in self.compiler.include_dirs:
278 include_dirs.append(sqlite_incdir)
279
280=== modified file 'debian/patches/bdist-wininst-notfound.diff'
281--- debian/patches/bdist-wininst-notfound.diff 2012-06-21 16:04:00 +0000
282+++ debian/patches/bdist-wininst-notfound.diff 2013-09-17 18:06:34 +0000
283@@ -1,8 +1,6 @@
284 # DP: suggest installation of the pythonX.Y-dev package, if bdist_wininst
285 # DP: cannot find the wininst-* files.
286
287-Index: b/Lib/distutils/command/bdist_wininst.py
288-===================================================================
289 --- a/Lib/distutils/command/bdist_wininst.py
290 +++ b/Lib/distutils/command/bdist_wininst.py
291 @@ -342,7 +342,10 @@
292
293=== modified file 'debian/patches/ctypes-arm.diff'
294--- debian/patches/ctypes-arm.diff 2012-07-13 00:43:42 +0000
295+++ debian/patches/ctypes-arm.diff 2013-09-17 18:06:34 +0000
296@@ -1,8 +1,6 @@
297-Index: b/Lib/ctypes/util.py
298-===================================================================
299 --- a/Lib/ctypes/util.py
300 +++ b/Lib/ctypes/util.py
301-@@ -170,16 +170,27 @@
302+@@ -199,16 +199,27 @@
303
304 def _findSoname_ldconfig(name):
305 import struct
306
307=== modified file 'debian/patches/deb-locations.diff'
308--- debian/patches/deb-locations.diff 2012-06-21 16:04:00 +0000
309+++ debian/patches/deb-locations.diff 2013-09-17 18:06:34 +0000
310@@ -1,7 +1,5 @@
311 # DP: adjust locations of directories to debian policy
312
313-Index: b/Lib/pydoc.py
314-===================================================================
315 --- a/Lib/pydoc.py
316 +++ b/Lib/pydoc.py
317 @@ -27,6 +27,10 @@
318@@ -15,8 +13,6 @@
319 http://docs.python.org/X.Y/library/
320
321 This can be overridden by setting the PYTHONDOCS environment variable
322-Index: b/Misc/python.man
323-===================================================================
324 --- a/Misc/python.man
325 +++ b/Misc/python.man
326 @@ -305,7 +305,7 @@
327
328=== modified file 'debian/patches/deb-setup.diff'
329--- debian/patches/deb-setup.diff 2012-08-28 19:47:58 +0000
330+++ debian/patches/deb-setup.diff 2013-09-17 18:06:34 +0000
331@@ -1,10 +1,8 @@
332 # DP: Don't include /usr/local/include and /usr/local/lib as gcc search paths
333
334-Index: b/setup.py
335-===================================================================
336 --- a/setup.py
337 +++ b/setup.py
338-@@ -248,8 +248,10 @@
339+@@ -238,8 +238,10 @@
340 # unfortunately, distutils doesn't let us provide separate C and C++
341 # compilers
342 if compiler is not None:
343@@ -16,8 +14,8 @@
344 + args['compiler_so'] = compiler + ' ' + ccshared + ' ' + cppflags + ' ' + cflags
345 self.compiler.set_executables(**args)
346
347- # Not only do we write the builddir cookie, but we manually install
348-@@ -455,12 +457,7 @@
349+ build_ext.build_extensions(self)
350+@@ -435,12 +437,7 @@
351 os.unlink(tmpfile)
352
353 def detect_modules(self):
354
355=== modified file 'debian/patches/disable-sem-check.diff'
356--- debian/patches/disable-sem-check.diff 2012-06-21 16:04:00 +0000
357+++ debian/patches/disable-sem-check.diff 2013-09-17 18:06:34 +0000
358@@ -1,10 +1,8 @@
359 # DP: Assume working semaphores, don't rely on running kernel for the check.
360
361-Index: b/configure.ac
362-===================================================================
363 --- a/configure.ac
364 +++ b/configure.ac
365-@@ -3595,8 +3595,13 @@
366+@@ -3798,8 +3798,13 @@
367 AC_MSG_RESULT($ac_cv_posix_semaphores_enabled)
368 if test $ac_cv_posix_semaphores_enabled = no
369 then
370@@ -20,7 +18,7 @@
371 fi
372
373 # Multiprocessing check for broken sem_getvalue
374-@@ -3631,8 +3636,13 @@
375+@@ -3834,8 +3839,13 @@
376 AC_MSG_RESULT($ac_cv_broken_sem_getvalue)
377 if test $ac_cv_broken_sem_getvalue = yes
378 then
379
380=== modified file 'debian/patches/distutils-init.diff'
381--- debian/patches/distutils-init.diff 2012-08-13 11:05:00 +0000
382+++ debian/patches/distutils-init.diff 2013-09-17 18:06:34 +0000
383@@ -1,10 +1,8 @@
384 # DP: Use _sysconfigdata.py in distutils to initialize distutils
385
386-Index: b/Lib/distutils/sysconfig.py
387-===================================================================
388 --- a/Lib/distutils/sysconfig.py
389 +++ b/Lib/distutils/sysconfig.py
390-@@ -442,49 +442,11 @@
391+@@ -454,49 +454,11 @@
392
393 def _init_posix():
394 """Initialize the module as appropriate for POSIX systems."""
395
396=== modified file 'debian/patches/distutils-install-layout.diff'
397--- debian/patches/distutils-install-layout.diff 2013-03-26 10:45:37 +0000
398+++ debian/patches/distutils-install-layout.diff 2013-09-17 18:06:34 +0000
399@@ -2,8 +2,6 @@
400 # DP: - installs into $prefix/dist-packages instead of $prefix/site-packages.
401 # DP: - doesn't encode the python version into the egg name.
402
403-Index: b/Lib/distutils/command/install_egg_info.py
404-===================================================================
405 --- a/Lib/distutils/command/install_egg_info.py
406 +++ b/Lib/distutils/command/install_egg_info.py
407 @@ -14,18 +14,38 @@
408@@ -50,8 +48,6 @@
409 self.target = os.path.join(self.install_dir, basename)
410 self.outputs = [self.target]
411
412-Index: b/Lib/distutils/command/install.py
413-===================================================================
414 --- a/Lib/distutils/command/install.py
415 +++ b/Lib/distutils/command/install.py
416 @@ -50,6 +50,20 @@
417@@ -137,8 +133,6 @@
418
419 def finalize_other(self):
420 """Finalizes options for non-posix platforms"""
421-Index: b/Lib/distutils/sysconfig.py
422-===================================================================
423 --- a/Lib/distutils/sysconfig.py
424 +++ b/Lib/distutils/sysconfig.py
425 @@ -136,6 +136,7 @@
426@@ -158,8 +152,6 @@
427 else:
428 return os.path.join(libpython, "site-packages")
429 elif os.name == "nt":
430-Index: b/Lib/site.py
431-===================================================================
432 --- a/Lib/site.py
433 +++ b/Lib/site.py
434 @@ -285,6 +285,13 @@
435@@ -176,8 +168,6 @@
436 return known_paths
437
438 def getsitepackages(prefixes=None):
439-Index: b/Lib/test/test_site.py
440-===================================================================
441 --- a/Lib/test/test_site.py
442 +++ b/Lib/test/test_site.py
443 @@ -239,12 +239,20 @@
444@@ -205,8 +195,6 @@
445 else:
446 # other platforms
447 self.assertEqual(len(dirs), 2)
448-Index: b/Lib/distutils/tests/test_bdist_dumb.py
449-===================================================================
450 --- a/Lib/distutils/tests/test_bdist_dumb.py
451 +++ b/Lib/distutils/tests/test_bdist_dumb.py
452 @@ -88,7 +88,7 @@
453@@ -218,8 +206,6 @@
454 if not sys.dont_write_bytecode:
455 wanted.append('foo.%s.pyc' % imp.get_tag())
456 self.assertEqual(contents, sorted(wanted))
457-Index: b/Lib/distutils/tests/test_install.py
458-===================================================================
459 --- a/Lib/distutils/tests/test_install.py
460 +++ b/Lib/distutils/tests/test_install.py
461 @@ -194,7 +194,7 @@
462@@ -240,8 +226,6 @@
463 self.assertEqual(found, expected)
464
465 def test_debug_mode(self):
466-Index: b/Lib/pydoc.py
467-===================================================================
468 --- a/Lib/pydoc.py
469 +++ b/Lib/pydoc.py
470 @@ -383,6 +383,7 @@
471
472=== modified file 'debian/patches/distutils-link.diff'
473--- debian/patches/distutils-link.diff 2012-06-21 16:04:00 +0000
474+++ debian/patches/distutils-link.diff 2013-09-17 18:06:34 +0000
475@@ -1,10 +1,8 @@
476 # DP: Don't add standard library dirs to library_dirs and runtime_library_dirs.
477
478-Index: b/Lib/distutils/unixccompiler.py
479-===================================================================
480 --- a/Lib/distutils/unixccompiler.py
481 +++ b/Lib/distutils/unixccompiler.py
482-@@ -211,6 +211,13 @@
483+@@ -153,6 +153,13 @@
484 runtime_library_dirs)
485 libraries, library_dirs, runtime_library_dirs = fixed_args
486
487
488=== modified file 'debian/patches/distutils-sysconfig.diff'
489--- debian/patches/distutils-sysconfig.diff 2013-03-26 10:45:37 +0000
490+++ debian/patches/distutils-sysconfig.diff 2013-09-17 18:06:34 +0000
491@@ -2,8 +2,6 @@
492 # DP: the python build, when CFLAGS, CPPFLAGS, LDSHARED) are not set
493 # DP: in the environment.
494
495-Index: b/Lib/distutils/sysconfig.py
496-===================================================================
497 --- a/Lib/distutils/sysconfig.py
498 +++ b/Lib/distutils/sysconfig.py
499 @@ -194,9 +194,11 @@
500@@ -18,9 +16,9 @@
501 + 'CCSHARED', 'LDSHARED', 'SHLIB_SUFFIX', 'AR', 'ARFLAGS',
502 + 'CONFIGURE_CPPFLAGS', 'CONFIGURE_CFLAGS', 'CONFIGURE_LDFLAGS')
503
504- newcc = None
505 if 'CC' in os.environ:
506-@@ -211,13 +213,22 @@
507+ newcc = os.environ['CC']
508+@@ -217,13 +219,22 @@
509 cpp = cc + " -E" # not always
510 if 'LDFLAGS' in os.environ:
511 ldshared = ldshared + ' ' + os.environ['LDFLAGS']
512
513=== modified file 'debian/patches/enable-fpectl.diff'
514--- debian/patches/enable-fpectl.diff 2012-06-21 16:04:00 +0000
515+++ debian/patches/enable-fpectl.diff 2013-09-17 18:06:34 +0000
516@@ -1,10 +1,8 @@
517 # DP: Enable the build of the fpectl module.
518
519-Index: b/setup.py
520-===================================================================
521 --- a/setup.py
522 +++ b/setup.py
523-@@ -1211,6 +1211,9 @@
524+@@ -1292,6 +1292,9 @@
525 else:
526 missing.append('_curses_panel')
527
528
529=== modified file 'debian/patches/ext-no-libpython-link.diff'
530--- debian/patches/ext-no-libpython-link.diff 2012-11-28 13:47:16 +0000
531+++ debian/patches/ext-no-libpython-link.diff 2013-09-17 18:06:34 +0000
532@@ -2,7 +2,7 @@
533
534 --- a/Lib/distutils/command/build_ext.py
535 +++ b/Lib/distutils/command/build_ext.py
536-@@ -243,7 +243,7 @@
537+@@ -250,7 +250,7 @@
538 # for extensions under Linux or Solaris with a shared Python library,
539 # Python's library directory must be appended to library_dirs
540 sysconfig.get_config_var('Py_ENABLE_SHARED')
541@@ -11,7 +11,7 @@
542 and sysconfig.get_config_var('Py_ENABLE_SHARED')):
543 if sys.executable.startswith(os.path.join(sys.exec_prefix, "bin")):
544 # building third party extensions
545-@@ -753,7 +753,7 @@
546+@@ -760,7 +760,7 @@
547 return ext.libraries
548 else:
549 from distutils import sysconfig
550
551=== modified file 'debian/patches/hg-updates.diff'
552--- debian/patches/hg-updates.diff 2013-06-05 12:28:37 +0000
553+++ debian/patches/hg-updates.diff 2013-09-17 18:06:34 +0000
554@@ -1,7 +1,1257 @@
555-# DP: hg updates of the 3.3 release branch (until 2013-05-27, 83934:e57c8a90b2df).
556+# DP: hg updates of the 3.3 release branch (until 2013-08-03, 84986:c503cea0e8c2).
557
558 # hg diff -r v3.3.2 | filterdiff --exclude=.hgignore --exclude=.hgeol --exclude=.hgtags --remove-timestamps
559
560+diff -r d047928ae3f6 Doc/c-api/allocation.rst
561+--- a/Doc/c-api/allocation.rst
562++++ b/Doc/c-api/allocation.rst
563+@@ -32,7 +32,7 @@
564+ Allocate a new Python object using the C structure type *TYPE* and the
565+ Python type object *type*. Fields not defined by the Python object header
566+ are not initialized; the object's reference count will be one. The size of
567+- the memory allocation is determined from the :attr:`tp_basicsize` field of
568++ the memory allocation is determined from the :c:member:`~PyTypeObject.tp_basicsize` field of
569+ the type object.
570+
571+
572+@@ -41,7 +41,7 @@
573+ Allocate a new Python object using the C structure type *TYPE* and the
574+ Python type object *type*. Fields not defined by the Python object header
575+ are not initialized. The allocated memory allows for the *TYPE* structure
576+- plus *size* fields of the size given by the :attr:`tp_itemsize` field of
577++ plus *size* fields of the size given by the :c:member:`~PyTypeObject.tp_itemsize` field of
578+ *type*. This is useful for implementing objects like tuples, which are
579+ able to determine their size at construction time. Embedding the array of
580+ fields into the same allocation decreases the number of allocations,
581+@@ -52,7 +52,7 @@
582+
583+ Releases memory allocated to an object using :c:func:`PyObject_New` or
584+ :c:func:`PyObject_NewVar`. This is normally called from the
585+- :attr:`tp_dealloc` handler specified in the object's type. The fields of
586++ :c:member:`~PyTypeObject.tp_dealloc` handler specified in the object's type. The fields of
587+ the object should not be accessed after this call as the memory is no
588+ longer a valid Python object.
589+
590+diff -r d047928ae3f6 Doc/c-api/exceptions.rst
591+--- a/Doc/c-api/exceptions.rst
592++++ b/Doc/c-api/exceptions.rst
593+@@ -607,28 +607,28 @@
594+ Ends a :c:func:`Py_EnterRecursiveCall`. Must be called once for each
595+ *successful* invocation of :c:func:`Py_EnterRecursiveCall`.
596+
597+-Properly implementing :attr:`tp_repr` for container types requires
598++Properly implementing :c:member:`~PyTypeObject.tp_repr` for container types requires
599+ special recursion handling. In addition to protecting the stack,
600+-:attr:`tp_repr` also needs to track objects to prevent cycles. The
601++:c:member:`~PyTypeObject.tp_repr` also needs to track objects to prevent cycles. The
602+ following two functions facilitate this functionality. Effectively,
603+ these are the C equivalent to :func:`reprlib.recursive_repr`.
604+
605+ .. c:function:: int Py_ReprEnter(PyObject *object)
606+
607+- Called at the beginning of the :attr:`tp_repr` implementation to
608++ Called at the beginning of the :c:member:`~PyTypeObject.tp_repr` implementation to
609+ detect cycles.
610+
611+ If the object has already been processed, the function returns a
612+- positive integer. In that case the :attr:`tp_repr` implementation
613++ positive integer. In that case the :c:member:`~PyTypeObject.tp_repr` implementation
614+ should return a string object indicating a cycle. As examples,
615+ :class:`dict` objects return ``{...}`` and :class:`list` objects
616+ return ``[...]``.
617+
618+ The function will return a negative integer if the recursion limit
619+- is reached. In that case the :attr:`tp_repr` implementation should
620++ is reached. In that case the :c:member:`~PyTypeObject.tp_repr` implementation should
621+ typically return ``NULL``.
622+
623+- Otherwise, the function returns zero and the :attr:`tp_repr`
624++ Otherwise, the function returns zero and the :c:member:`~PyTypeObject.tp_repr`
625+ implementation can continue normally.
626+
627+ .. c:function:: void Py_ReprLeave(PyObject *object)
628+diff -r d047928ae3f6 Doc/c-api/gcsupport.rst
629+--- a/Doc/c-api/gcsupport.rst
630++++ b/Doc/c-api/gcsupport.rst
631+@@ -12,10 +12,10 @@
632+ or strings), do not need to provide any explicit support for garbage
633+ collection.
634+
635+-To create a container type, the :attr:`tp_flags` field of the type object must
636++To create a container type, the :c:member:`~PyTypeObject.tp_flags` field of the type object must
637+ include the :const:`Py_TPFLAGS_HAVE_GC` and provide an implementation of the
638+-:attr:`tp_traverse` handler. If instances of the type are mutable, a
639+-:attr:`tp_clear` implementation must also be provided.
640++:c:member:`~PyTypeObject.tp_traverse` handler. If instances of the type are mutable, a
641++:c:member:`~PyTypeObject.tp_clear` implementation must also be provided.
642+
643+
644+ .. data:: Py_TPFLAGS_HAVE_GC
645+@@ -57,7 +57,7 @@
646+ Adds the object *op* to the set of container objects tracked by the
647+ collector. The collector can run at unexpected times so objects must be
648+ valid while being tracked. This should be called once all the fields
649+- followed by the :attr:`tp_traverse` handler become valid, usually near the
650++ followed by the :c:member:`~PyTypeObject.tp_traverse` handler become valid, usually near the
651+ end of the constructor.
652+
653+
654+@@ -86,8 +86,8 @@
655+ Remove the object *op* from the set of container objects tracked by the
656+ collector. Note that :c:func:`PyObject_GC_Track` can be called again on
657+ this object to add it back to the set of tracked objects. The deallocator
658+- (:attr:`tp_dealloc` handler) should call this for the object before any of
659+- the fields used by the :attr:`tp_traverse` handler become invalid.
660++ (:c:member:`~PyTypeObject.tp_dealloc` handler) should call this for the object before any of
661++ the fields used by the :c:member:`~PyTypeObject.tp_traverse` handler become invalid.
662+
663+
664+ .. c:function:: void _PyObject_GC_UNTRACK(PyObject *op)
665+@@ -95,19 +95,19 @@
666+ A macro version of :c:func:`PyObject_GC_UnTrack`. It should not be used for
667+ extension modules.
668+
669+-The :attr:`tp_traverse` handler accepts a function parameter of this type:
670++The :c:member:`~PyTypeObject.tp_traverse` handler accepts a function parameter of this type:
671+
672+
673+ .. c:type:: int (*visitproc)(PyObject *object, void *arg)
674+
675+- Type of the visitor function passed to the :attr:`tp_traverse` handler.
676++ Type of the visitor function passed to the :c:member:`~PyTypeObject.tp_traverse` handler.
677+ The function should be called with an object to traverse as *object* and
678+- the third parameter to the :attr:`tp_traverse` handler as *arg*. The
679++ the third parameter to the :c:member:`~PyTypeObject.tp_traverse` handler as *arg*. The
680+ Python core uses several visitor functions to implement cyclic garbage
681+ detection; it's not expected that users will need to write their own
682+ visitor functions.
683+
684+-The :attr:`tp_traverse` handler must have the following type:
685++The :c:member:`~PyTypeObject.tp_traverse` handler must have the following type:
686+
687+
688+ .. c:type:: int (*traverseproc)(PyObject *self, visitproc visit, void *arg)
689+@@ -119,15 +119,15 @@
690+ object argument. If *visit* returns a non-zero value that value should be
691+ returned immediately.
692+
693+-To simplify writing :attr:`tp_traverse` handlers, a :c:func:`Py_VISIT` macro is
694+-provided. In order to use this macro, the :attr:`tp_traverse` implementation
695++To simplify writing :c:member:`~PyTypeObject.tp_traverse` handlers, a :c:func:`Py_VISIT` macro is
696++provided. In order to use this macro, the :c:member:`~PyTypeObject.tp_traverse` implementation
697+ must name its arguments exactly *visit* and *arg*:
698+
699+
700+ .. c:function:: void Py_VISIT(PyObject *o)
701+
702+ Call the *visit* callback, with arguments *o* and *arg*. If *visit* returns
703+- a non-zero value, then return it. Using this macro, :attr:`tp_traverse`
704++ a non-zero value, then return it. Using this macro, :c:member:`~PyTypeObject.tp_traverse`
705+ handlers look like::
706+
707+ static int
708+@@ -138,7 +138,7 @@
709+ return 0;
710+ }
711+
712+-The :attr:`tp_clear` handler must be of the :c:type:`inquiry` type, or *NULL*
713++The :c:member:`~PyTypeObject.tp_clear` handler must be of the :c:type:`inquiry` type, or *NULL*
714+ if the object is immutable.
715+
716+
717+diff -r d047928ae3f6 Doc/c-api/type.rst
718+--- a/Doc/c-api/type.rst
719++++ b/Doc/c-api/type.rst
720+@@ -37,10 +37,10 @@
721+
722+ .. c:function:: long PyType_GetFlags(PyTypeObject* type)
723+
724+- Return the :attr:`tp_flags` member of *type*. This function is primarily
725++ Return the :c:member:`~PyTypeObject.tp_flags` member of *type*. This function is primarily
726+ meant for use with `Py_LIMITED_API`; the individual flag bits are
727+ guaranteed to be stable across Python releases, but access to
728+- :attr:`tp_flags` itself is not part of the limited API.
729++ :c:member:`~PyTypeObject.tp_flags` itself is not part of the limited API.
730+
731+ .. versionadded:: 3.2
732+
733+@@ -70,14 +70,14 @@
734+
735+ .. c:function:: PyObject* PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)
736+
737+- Generic handler for the :attr:`tp_alloc` slot of a type object. Use
738++ Generic handler for the :c:member:`~PyTypeObject.tp_alloc` slot of a type object. Use
739+ Python's default memory allocation mechanism to allocate a new instance and
740+ initialize all its contents to *NULL*.
741+
742+ .. c:function:: PyObject* PyType_GenericNew(PyTypeObject *type, PyObject *args, PyObject *kwds)
743+
744+- Generic handler for the :attr:`tp_new` slot of a type object. Create a
745+- new instance using the type's :attr:`tp_alloc` slot.
746++ Generic handler for the :c:member:`~PyTypeObject.tp_new` slot of a type object. Create a
747++ new instance using the type's :c:member:`~PyTypeObject.tp_alloc` slot.
748+
749+ .. c:function:: int PyType_Ready(PyTypeObject *type)
750+
751+diff -r d047928ae3f6 Doc/c-api/typeobj.rst
752+--- a/Doc/c-api/typeobj.rst
753++++ b/Doc/c-api/typeobj.rst
754+@@ -35,7 +35,7 @@
755+ The type object structure extends the :c:type:`PyVarObject` structure. The
756+ :attr:`ob_size` field is used for dynamic types (created by :func:`type_new`,
757+ usually called from a class statement). Note that :c:data:`PyType_Type` (the
758+-metatype) initializes :attr:`tp_itemsize`, which means that its instances (i.e.
759++metatype) initializes :c:member:`~PyTypeObject.tp_itemsize`, which means that its instances (i.e.
760+ type objects) *must* have the :attr:`ob_size` field.
761+
762+
763+@@ -102,7 +102,7 @@
764+ should be just the type name. If the module is a submodule of a package, the
765+ full package name is part of the full module name. For example, a type named
766+ :class:`T` defined in module :mod:`M` in subpackage :mod:`Q` in package :mod:`P`
767+- should have the :attr:`tp_name` initializer ``"P.Q.M.T"``.
768++ should have the :c:member:`~PyTypeObject.tp_name` initializer ``"P.Q.M.T"``.
769+
770+ For dynamically allocated type objects, this should just be the type name, and
771+ the module name explicitly stored in the type dict as the value for key
772+@@ -113,7 +113,7 @@
773+ attribute, and everything after the last dot is made accessible as the
774+ :attr:`__name__` attribute.
775+
776+- If no dot is present, the entire :attr:`tp_name` field is made accessible as the
777++ If no dot is present, the entire :c:member:`~PyTypeObject.tp_name` field is made accessible as the
778+ :attr:`__name__` attribute, and the :attr:`__module__` attribute is undefined
779+ (unless explicitly set in the dictionary, as explained above). This means your
780+ type will be impossible to pickle.
781+@@ -127,13 +127,13 @@
782+ These fields allow calculating the size in bytes of instances of the type.
783+
784+ There are two kinds of types: types with fixed-length instances have a zero
785+- :attr:`tp_itemsize` field, types with variable-length instances have a non-zero
786+- :attr:`tp_itemsize` field. For a type with fixed-length instances, all
787+- instances have the same size, given in :attr:`tp_basicsize`.
788++ :c:member:`~PyTypeObject.tp_itemsize` field, types with variable-length instances have a non-zero
789++ :c:member:`~PyTypeObject.tp_itemsize` field. For a type with fixed-length instances, all
790++ instances have the same size, given in :c:member:`~PyTypeObject.tp_basicsize`.
791+
792+ For a type with variable-length instances, the instances must have an
793+- :attr:`ob_size` field, and the instance size is :attr:`tp_basicsize` plus N
794+- times :attr:`tp_itemsize`, where N is the "length" of the object. The value of
795++ :attr:`ob_size` field, and the instance size is :c:member:`~PyTypeObject.tp_basicsize` plus N
796++ times :c:member:`~PyTypeObject.tp_itemsize`, where N is the "length" of the object. The value of
797+ N is typically stored in the instance's :attr:`ob_size` field. There are
798+ exceptions: for example, ints use a negative :attr:`ob_size` to indicate a
799+ negative number, and N is ``abs(ob_size)`` there. Also, the presence of an
800+@@ -146,20 +146,20 @@
801+ :c:macro:`PyObject_HEAD` or :c:macro:`PyObject_VAR_HEAD` (whichever is used to
802+ declare the instance struct) and this in turn includes the :attr:`_ob_prev` and
803+ :attr:`_ob_next` fields if they are present. This means that the only correct
804+- way to get an initializer for the :attr:`tp_basicsize` is to use the
805++ way to get an initializer for the :c:member:`~PyTypeObject.tp_basicsize` is to use the
806+ ``sizeof`` operator on the struct used to declare the instance layout.
807+ The basic size does not include the GC header size.
808+
809+ These fields are inherited separately by subtypes. If the base type has a
810+- non-zero :attr:`tp_itemsize`, it is generally not safe to set
811+- :attr:`tp_itemsize` to a different non-zero value in a subtype (though this
812++ non-zero :c:member:`~PyTypeObject.tp_itemsize`, it is generally not safe to set
813++ :c:member:`~PyTypeObject.tp_itemsize` to a different non-zero value in a subtype (though this
814+ depends on the implementation of the base type).
815+
816+ A note about alignment: if the variable items require a particular alignment,
817+- this should be taken care of by the value of :attr:`tp_basicsize`. Example:
818+- suppose a type implements an array of ``double``. :attr:`tp_itemsize` is
819++ this should be taken care of by the value of :c:member:`~PyTypeObject.tp_basicsize`. Example:
820++ suppose a type implements an array of ``double``. :c:member:`~PyTypeObject.tp_itemsize` is
821+ ``sizeof(double)``. It is the programmer's responsibility that
822+- :attr:`tp_basicsize` is a multiple of ``sizeof(double)`` (assuming this is the
823++ :c:member:`~PyTypeObject.tp_basicsize` is a multiple of ``sizeof(double)`` (assuming this is the
824+ alignment requirement for ``double``).
825+
826+
827+@@ -175,10 +175,10 @@
828+ destructor function should free all references which the instance owns, free all
829+ memory buffers owned by the instance (using the freeing function corresponding
830+ to the allocation function used to allocate the buffer), and finally (as its
831+- last action) call the type's :attr:`tp_free` function. If the type is not
832++ last action) call the type's :c:member:`~PyTypeObject.tp_free` function. If the type is not
833+ subtypable (doesn't have the :const:`Py_TPFLAGS_BASETYPE` flag bit set), it is
834+ permissible to call the object deallocator directly instead of via
835+- :attr:`tp_free`. The object deallocator should be the one used to allocate the
836++ :c:member:`~PyTypeObject.tp_free`. The object deallocator should be the one used to allocate the
837+ instance; this is normally :c:func:`PyObject_Del` if the instance was allocated
838+ using :c:func:`PyObject_New` or :c:func:`PyObject_VarNew`, or
839+ :c:func:`PyObject_GC_Del` if the instance was allocated using
840+@@ -193,25 +193,25 @@
841+
842+ The print function is only called when the instance is printed to a *real* file;
843+ when it is printed to a pseudo-file (like a :class:`StringIO` instance), the
844+- instance's :attr:`tp_repr` or :attr:`tp_str` function is called to convert it to
845+- a string. These are also called when the type's :attr:`tp_print` field is
846+- *NULL*. A type should never implement :attr:`tp_print` in a way that produces
847+- different output than :attr:`tp_repr` or :attr:`tp_str` would.
848++ instance's :c:member:`~PyTypeObject.tp_repr` or :c:member:`~PyTypeObject.tp_str` function is called to convert it to
849++ a string. These are also called when the type's :c:member:`~PyTypeObject.tp_print` field is
850++ *NULL*. A type should never implement :c:member:`~PyTypeObject.tp_print` in a way that produces
851++ different output than :c:member:`~PyTypeObject.tp_repr` or :c:member:`~PyTypeObject.tp_str` would.
852+
853+ The print function is called with the same signature as :c:func:`PyObject_Print`:
854+ ``int tp_print(PyObject *self, FILE *file, int flags)``. The *self* argument is
855+ the instance to be printed. The *file* argument is the stdio file to which it
856+ is to be printed. The *flags* argument is composed of flag bits. The only flag
857+ bit currently defined is :const:`Py_PRINT_RAW`. When the :const:`Py_PRINT_RAW`
858+- flag bit is set, the instance should be printed the same way as :attr:`tp_str`
859++ flag bit is set, the instance should be printed the same way as :c:member:`~PyTypeObject.tp_str`
860+ would format it; when the :const:`Py_PRINT_RAW` flag bit is clear, the instance
861+- should be printed the same was as :attr:`tp_repr` would format it. It should
862++ should be printed the same was as :c:member:`~PyTypeObject.tp_repr` would format it. It should
863+ return ``-1`` and set an exception condition when an error occurred during the
864+ comparison.
865+
866+- It is possible that the :attr:`tp_print` field will be deprecated. In any case,
867+- it is recommended not to define :attr:`tp_print`, but instead to rely on
868+- :attr:`tp_repr` and :attr:`tp_str` for printing.
869++ It is possible that the :c:member:`~PyTypeObject.tp_print` field will be deprecated. In any case,
870++ it is recommended not to define :c:member:`~PyTypeObject.tp_print`, but instead to rely on
871++ :c:member:`~PyTypeObject.tp_repr` and :c:member:`~PyTypeObject.tp_str` for printing.
872+
873+ This field is inherited by subtypes.
874+
875+@@ -221,13 +221,13 @@
876+ An optional pointer to the get-attribute-string function.
877+
878+ This field is deprecated. When it is defined, it should point to a function
879+- that acts the same as the :attr:`tp_getattro` function, but taking a C string
880++ that acts the same as the :c:member:`~PyTypeObject.tp_getattro` function, but taking a C string
881+ instead of a Python string object to give the attribute name. The signature is
882+ the same as for :c:func:`PyObject_GetAttrString`.
883+
884+- This field is inherited by subtypes together with :attr:`tp_getattro`: a subtype
885+- inherits both :attr:`tp_getattr` and :attr:`tp_getattro` from its base type when
886+- the subtype's :attr:`tp_getattr` and :attr:`tp_getattro` are both *NULL*.
887++ This field is inherited by subtypes together with :c:member:`~PyTypeObject.tp_getattro`: a subtype
888++ inherits both :c:member:`~PyTypeObject.tp_getattr` and :c:member:`~PyTypeObject.tp_getattro` from its base type when
889++ the subtype's :c:member:`~PyTypeObject.tp_getattr` and :c:member:`~PyTypeObject.tp_getattro` are both *NULL*.
890+
891+
892+ .. c:member:: setattrfunc PyTypeObject.tp_setattr
893+@@ -235,13 +235,13 @@
894+ An optional pointer to the set-attribute-string function.
895+
896+ This field is deprecated. When it is defined, it should point to a function
897+- that acts the same as the :attr:`tp_setattro` function, but taking a C string
898++ that acts the same as the :c:member:`~PyTypeObject.tp_setattro` function, but taking a C string
899+ instead of a Python string object to give the attribute name. The signature is
900+ the same as for :c:func:`PyObject_SetAttrString`.
901+
902+- This field is inherited by subtypes together with :attr:`tp_setattro`: a subtype
903+- inherits both :attr:`tp_setattr` and :attr:`tp_setattro` from its base type when
904+- the subtype's :attr:`tp_setattr` and :attr:`tp_setattro` are both *NULL*.
905++ This field is inherited by subtypes together with :c:member:`~PyTypeObject.tp_setattro`: a subtype
906++ inherits both :c:member:`~PyTypeObject.tp_setattr` and :c:member:`~PyTypeObject.tp_setattro` from its base type when
907++ the subtype's :c:member:`~PyTypeObject.tp_setattr` and :c:member:`~PyTypeObject.tp_setattro` are both *NULL*.
908+
909+
910+ .. c:member:: void* PyTypeObject.tp_reserved
911+@@ -275,7 +275,7 @@
912+ objects which implement the number protocol. These fields are documented in
913+ :ref:`number-structs`.
914+
915+- The :attr:`tp_as_number` field is not inherited, but the contained fields are
916++ The :c:member:`~PyTypeObject.tp_as_number` field is not inherited, but the contained fields are
917+ inherited individually.
918+
919+
920+@@ -285,7 +285,7 @@
921+ objects which implement the sequence protocol. These fields are documented
922+ in :ref:`sequence-structs`.
923+
924+- The :attr:`tp_as_sequence` field is not inherited, but the contained fields
925++ The :c:member:`~PyTypeObject.tp_as_sequence` field is not inherited, but the contained fields
926+ are inherited individually.
927+
928+
929+@@ -295,7 +295,7 @@
930+ objects which implement the mapping protocol. These fields are documented in
931+ :ref:`mapping-structs`.
932+
933+- The :attr:`tp_as_mapping` field is not inherited, but the contained fields
934++ The :c:member:`~PyTypeObject.tp_as_mapping` field is not inherited, but the contained fields
935+ are inherited individually.
936+
937+
938+@@ -323,9 +323,9 @@
939+ object raises :exc:`TypeError`.
940+
941+ This field is inherited by subtypes together with
942+- :attr:`tp_richcompare`: a subtype inherits both of
943+- :attr:`tp_richcompare` and :attr:`tp_hash`, when the subtype's
944+- :attr:`tp_richcompare` and :attr:`tp_hash` are both *NULL*.
945++ :c:member:`~PyTypeObject.tp_richcompare`: a subtype inherits both of
946++ :c:member:`~PyTypeObject.tp_richcompare` and :c:member:`~PyTypeObject.tp_hash`, when the subtype's
947++ :c:member:`~PyTypeObject.tp_richcompare` and :c:member:`~PyTypeObject.tp_hash` are both *NULL*.
948+
949+
950+ .. c:member:: ternaryfunc PyTypeObject.tp_call
951+@@ -363,9 +363,9 @@
952+ convenient to set this field to :c:func:`PyObject_GenericGetAttr`, which
953+ implements the normal way of looking for object attributes.
954+
955+- This field is inherited by subtypes together with :attr:`tp_getattr`: a subtype
956+- inherits both :attr:`tp_getattr` and :attr:`tp_getattro` from its base type when
957+- the subtype's :attr:`tp_getattr` and :attr:`tp_getattro` are both *NULL*.
958++ This field is inherited by subtypes together with :c:member:`~PyTypeObject.tp_getattr`: a subtype
959++ inherits both :c:member:`~PyTypeObject.tp_getattr` and :c:member:`~PyTypeObject.tp_getattro` from its base type when
960++ the subtype's :c:member:`~PyTypeObject.tp_getattr` and :c:member:`~PyTypeObject.tp_getattro` are both *NULL*.
961+
962+
963+ .. c:member:: setattrofunc PyTypeObject.tp_setattro
964+@@ -376,9 +376,9 @@
965+ convenient to set this field to :c:func:`PyObject_GenericSetAttr`, which
966+ implements the normal way of setting object attributes.
967+
968+- This field is inherited by subtypes together with :attr:`tp_setattr`: a subtype
969+- inherits both :attr:`tp_setattr` and :attr:`tp_setattro` from its base type when
970+- the subtype's :attr:`tp_setattr` and :attr:`tp_setattro` are both *NULL*.
971++ This field is inherited by subtypes together with :c:member:`~PyTypeObject.tp_setattr`: a subtype
972++ inherits both :c:member:`~PyTypeObject.tp_setattr` and :c:member:`~PyTypeObject.tp_setattro` from its base type when
973++ the subtype's :c:member:`~PyTypeObject.tp_setattr` and :c:member:`~PyTypeObject.tp_setattro` are both *NULL*.
974+
975+
976+ .. c:member:: PyBufferProcs* PyTypeObject.tp_as_buffer
977+@@ -387,7 +387,7 @@
978+ which implement the buffer interface. These fields are documented in
979+ :ref:`buffer-structs`.
980+
981+- The :attr:`tp_as_buffer` field is not inherited, but the contained fields are
982++ The :c:member:`~PyTypeObject.tp_as_buffer` field is not inherited, but the contained fields are
983+ inherited individually.
984+
985+
986+@@ -396,8 +396,8 @@
987+ This field is a bit mask of various flags. Some flags indicate variant
988+ semantics for certain situations; others are used to indicate that certain
989+ fields in the type object (or in the extension structures referenced via
990+- :attr:`tp_as_number`, :attr:`tp_as_sequence`, :attr:`tp_as_mapping`, and
991+- :attr:`tp_as_buffer`) that were historically not always present are valid; if
992++ :c:member:`~PyTypeObject.tp_as_number`, :c:member:`~PyTypeObject.tp_as_sequence`, :c:member:`~PyTypeObject.tp_as_mapping`, and
993++ :c:member:`~PyTypeObject.tp_as_buffer`) that were historically not always present are valid; if
994+ such a flag bit is clear, the type fields it guards must not be accessed and
995+ must be considered to have a zero or *NULL* value instead.
996+
997+@@ -407,13 +407,13 @@
998+ inherited if the extension structure is inherited, i.e. the base type's value of
999+ the flag bit is copied into the subtype together with a pointer to the extension
1000+ structure. The :const:`Py_TPFLAGS_HAVE_GC` flag bit is inherited together with
1001+- the :attr:`tp_traverse` and :attr:`tp_clear` fields, i.e. if the
1002++ the :c:member:`~PyTypeObject.tp_traverse` and :c:member:`~PyTypeObject.tp_clear` fields, i.e. if the
1003+ :const:`Py_TPFLAGS_HAVE_GC` flag bit is clear in the subtype and the
1004+- :attr:`tp_traverse` and :attr:`tp_clear` fields in the subtype exist and have
1005++ :c:member:`~PyTypeObject.tp_traverse` and :c:member:`~PyTypeObject.tp_clear` fields in the subtype exist and have
1006+ *NULL* values.
1007+
1008+ The following bit masks are currently defined; these can be ORed together using
1009+- the ``|`` operator to form the value of the :attr:`tp_flags` field. The macro
1010++ the ``|`` operator to form the value of the :c:member:`~PyTypeObject.tp_flags` field. The macro
1011+ :c:func:`PyType_HasFeature` takes a type and a flags value, *tp* and *f*, and
1012+ checks whether ``tp->tp_flags & f`` is non-zero.
1013+
1014+@@ -453,7 +453,7 @@
1015+ is set, instances must be created using :c:func:`PyObject_GC_New` and
1016+ destroyed using :c:func:`PyObject_GC_Del`. More information in section
1017+ :ref:`supporting-cycle-detection`. This bit also implies that the
1018+- GC-related fields :attr:`tp_traverse` and :attr:`tp_clear` are present in
1019++ GC-related fields :c:member:`~PyTypeObject.tp_traverse` and :c:member:`~PyTypeObject.tp_clear` are present in
1020+ the type object.
1021+
1022+
1023+@@ -481,8 +481,8 @@
1024+ about Python's garbage collection scheme can be found in section
1025+ :ref:`supporting-cycle-detection`.
1026+
1027+- The :attr:`tp_traverse` pointer is used by the garbage collector to detect
1028+- reference cycles. A typical implementation of a :attr:`tp_traverse` function
1029++ The :c:member:`~PyTypeObject.tp_traverse` pointer is used by the garbage collector to detect
1030++ reference cycles. A typical implementation of a :c:member:`~PyTypeObject.tp_traverse` function
1031+ simply calls :c:func:`Py_VISIT` on each of the instance's members that are Python
1032+ objects. For example, this is function :c:func:`local_traverse` from the
1033+ :mod:`_thread` extension module::
1034+@@ -508,9 +508,9 @@
1035+ :c:func:`local_traverse` to have these specific names; don't name them just
1036+ anything.
1037+
1038+- This field is inherited by subtypes together with :attr:`tp_clear` and the
1039+- :const:`Py_TPFLAGS_HAVE_GC` flag bit: the flag bit, :attr:`tp_traverse`, and
1040+- :attr:`tp_clear` are all inherited from the base type if they are all zero in
1041++ This field is inherited by subtypes together with :c:member:`~PyTypeObject.tp_clear` and the
1042++ :const:`Py_TPFLAGS_HAVE_GC` flag bit: the flag bit, :c:member:`~PyTypeObject.tp_traverse`, and
1043++ :c:member:`~PyTypeObject.tp_clear` are all inherited from the base type if they are all zero in
1044+ the subtype.
1045+
1046+
1047+@@ -519,17 +519,17 @@
1048+ An optional pointer to a clear function for the garbage collector. This is only
1049+ used if the :const:`Py_TPFLAGS_HAVE_GC` flag bit is set.
1050+
1051+- The :attr:`tp_clear` member function is used to break reference cycles in cyclic
1052+- garbage detected by the garbage collector. Taken together, all :attr:`tp_clear`
1053++ The :c:member:`~PyTypeObject.tp_clear` member function is used to break reference cycles in cyclic
1054++ garbage detected by the garbage collector. Taken together, all :c:member:`~PyTypeObject.tp_clear`
1055+ functions in the system must combine to break all reference cycles. This is
1056+- subtle, and if in any doubt supply a :attr:`tp_clear` function. For example,
1057+- the tuple type does not implement a :attr:`tp_clear` function, because it's
1058++ subtle, and if in any doubt supply a :c:member:`~PyTypeObject.tp_clear` function. For example,
1059++ the tuple type does not implement a :c:member:`~PyTypeObject.tp_clear` function, because it's
1060+ possible to prove that no reference cycle can be composed entirely of tuples.
1061+- Therefore the :attr:`tp_clear` functions of other types must be sufficient to
1062++ Therefore the :c:member:`~PyTypeObject.tp_clear` functions of other types must be sufficient to
1063+ break any cycle containing a tuple. This isn't immediately obvious, and there's
1064+- rarely a good reason to avoid implementing :attr:`tp_clear`.
1065++ rarely a good reason to avoid implementing :c:member:`~PyTypeObject.tp_clear`.
1066+
1067+- Implementations of :attr:`tp_clear` should drop the instance's references to
1068++ Implementations of :c:member:`~PyTypeObject.tp_clear` should drop the instance's references to
1069+ those of its members that may be Python objects, and set its pointers to those
1070+ members to *NULL*, as in the following example::
1071+
1072+@@ -554,18 +554,18 @@
1073+ so that *self* knows the contained object can no longer be used. The
1074+ :c:func:`Py_CLEAR` macro performs the operations in a safe order.
1075+
1076+- Because the goal of :attr:`tp_clear` functions is to break reference cycles,
1077++ Because the goal of :c:member:`~PyTypeObject.tp_clear` functions is to break reference cycles,
1078+ it's not necessary to clear contained objects like Python strings or Python
1079+ integers, which can't participate in reference cycles. On the other hand, it may
1080+ be convenient to clear all contained Python objects, and write the type's
1081+- :attr:`tp_dealloc` function to invoke :attr:`tp_clear`.
1082++ :c:member:`~PyTypeObject.tp_dealloc` function to invoke :c:member:`~PyTypeObject.tp_clear`.
1083+
1084+ More information about Python's garbage collection scheme can be found in
1085+ section :ref:`supporting-cycle-detection`.
1086+
1087+- This field is inherited by subtypes together with :attr:`tp_traverse` and the
1088+- :const:`Py_TPFLAGS_HAVE_GC` flag bit: the flag bit, :attr:`tp_traverse`, and
1089+- :attr:`tp_clear` are all inherited from the base type if they are all zero in
1090++ This field is inherited by subtypes together with :c:member:`~PyTypeObject.tp_traverse` and the
1091++ :const:`Py_TPFLAGS_HAVE_GC` flag bit: the flag bit, :c:member:`~PyTypeObject.tp_traverse`, and
1092++ :c:member:`~PyTypeObject.tp_clear` are all inherited from the base type if they are all zero in
1093+ the subtype.
1094+
1095+
1096+@@ -585,13 +585,13 @@
1097+ comparisons makes sense (e.g. ``==`` and ``!=``, but not ``<`` and
1098+ friends), directly raise :exc:`TypeError` in the rich comparison function.
1099+
1100+- This field is inherited by subtypes together with :attr:`tp_hash`:
1101+- a subtype inherits :attr:`tp_richcompare` and :attr:`tp_hash` when
1102+- the subtype's :attr:`tp_richcompare` and :attr:`tp_hash` are both
1103++ This field is inherited by subtypes together with :c:member:`~PyTypeObject.tp_hash`:
1104++ a subtype inherits :c:member:`~PyTypeObject.tp_richcompare` and :c:member:`~PyTypeObject.tp_hash` when
1105++ the subtype's :c:member:`~PyTypeObject.tp_richcompare` and :c:member:`~PyTypeObject.tp_hash` are both
1106+ *NULL*.
1107+
1108+ The following constants are defined to be used as the third argument for
1109+- :attr:`tp_richcompare` and for :c:func:`PyObject_RichCompare`:
1110++ :c:member:`~PyTypeObject.tp_richcompare` and for :c:func:`PyObject_RichCompare`:
1111+
1112+ +----------------+------------+
1113+ | Constant | Comparison |
1114+@@ -619,26 +619,26 @@
1115+ instance structure needs to include a field of type :c:type:`PyObject\*` which is
1116+ initialized to *NULL*.
1117+
1118+- Do not confuse this field with :attr:`tp_weaklist`; that is the list head for
1119++ Do not confuse this field with :c:member:`~PyTypeObject.tp_weaklist`; that is the list head for
1120+ weak references to the type object itself.
1121+
1122+ This field is inherited by subtypes, but see the rules listed below. A subtype
1123+ may override this offset; this means that the subtype uses a different weak
1124+ reference list head than the base type. Since the list head is always found via
1125+- :attr:`tp_weaklistoffset`, this should not be a problem.
1126++ :c:member:`~PyTypeObject.tp_weaklistoffset`, this should not be a problem.
1127+
1128+ When a type defined by a class statement has no :attr:`__slots__` declaration,
1129+ and none of its base types are weakly referenceable, the type is made weakly
1130+ referenceable by adding a weak reference list head slot to the instance layout
1131+- and setting the :attr:`tp_weaklistoffset` of that slot's offset.
1132++ and setting the :c:member:`~PyTypeObject.tp_weaklistoffset` of that slot's offset.
1133+
1134+ When a type's :attr:`__slots__` declaration contains a slot named
1135+ :attr:`__weakref__`, that slot becomes the weak reference list head for
1136+ instances of the type, and the slot's offset is stored in the type's
1137+- :attr:`tp_weaklistoffset`.
1138++ :c:member:`~PyTypeObject.tp_weaklistoffset`.
1139+
1140+ When a type's :attr:`__slots__` declaration does not contain a slot named
1141+- :attr:`__weakref__`, the type inherits its :attr:`tp_weaklistoffset` from its
1142++ :attr:`__weakref__`, the type inherits its :c:member:`~PyTypeObject.tp_weaklistoffset` from its
1143+ base type.
1144+
1145+ .. c:member:: getiterfunc PyTypeObject.tp_iter
1146+@@ -660,7 +660,7 @@
1147+ *NULL* too. Its presence signals that the instances of this type are
1148+ iterators.
1149+
1150+- Iterator types should also define the :attr:`tp_iter` function, and that
1151++ Iterator types should also define the :c:member:`~PyTypeObject.tp_iter` function, and that
1152+ function should return the iterator instance itself (not a new iterator
1153+ instance).
1154+
1155+@@ -675,7 +675,7 @@
1156+ structures, declaring regular methods of this type.
1157+
1158+ For each entry in the array, an entry is added to the type's dictionary (see
1159+- :attr:`tp_dict` below) containing a method descriptor.
1160++ :c:member:`~PyTypeObject.tp_dict` below) containing a method descriptor.
1161+
1162+ This field is not inherited by subtypes (methods are inherited through a
1163+ different mechanism).
1164+@@ -688,7 +688,7 @@
1165+ this type.
1166+
1167+ For each entry in the array, an entry is added to the type's dictionary (see
1168+- :attr:`tp_dict` below) containing a member descriptor.
1169++ :c:member:`~PyTypeObject.tp_dict` below) containing a member descriptor.
1170+
1171+ This field is not inherited by subtypes (members are inherited through a
1172+ different mechanism).
1173+@@ -700,7 +700,7 @@
1174+ structures, declaring computed attributes of instances of this type.
1175+
1176+ For each entry in the array, an entry is added to the type's dictionary (see
1177+- :attr:`tp_dict` below) containing a getset descriptor.
1178++ :c:member:`~PyTypeObject.tp_dict` below) containing a getset descriptor.
1179+
1180+ This field is not inherited by subtypes (computed attributes are inherited
1181+ through a different mechanism).
1182+@@ -748,7 +748,7 @@
1183+ .. warning::
1184+
1185+ It is not safe to use :c:func:`PyDict_SetItem` on or otherwise modify
1186+- :attr:`tp_dict` with the dictionary C-API.
1187++ :c:member:`~PyTypeObject.tp_dict` with the dictionary C-API.
1188+
1189+
1190+ .. c:member:: descrgetfunc PyTypeObject.tp_descr_get
1191+@@ -784,7 +784,7 @@
1192+ the instance variable dictionary; this offset is used by
1193+ :c:func:`PyObject_GenericGetAttr`.
1194+
1195+- Do not confuse this field with :attr:`tp_dict`; that is the dictionary for
1196++ Do not confuse this field with :c:member:`~PyTypeObject.tp_dict`; that is the dictionary for
1197+ attributes of the type object itself.
1198+
1199+ If the value of this field is greater than zero, it specifies the offset from
1200+@@ -793,20 +793,20 @@
1201+ offset is more expensive to use, and should only be used when the instance
1202+ structure contains a variable-length part. This is used for example to add an
1203+ instance variable dictionary to subtypes of :class:`str` or :class:`tuple`. Note
1204+- that the :attr:`tp_basicsize` field should account for the dictionary added to
1205++ that the :c:member:`~PyTypeObject.tp_basicsize` field should account for the dictionary added to
1206+ the end in that case, even though the dictionary is not included in the basic
1207+ object layout. On a system with a pointer size of 4 bytes,
1208+- :attr:`tp_dictoffset` should be set to ``-4`` to indicate that the dictionary is
1209++ :c:member:`~PyTypeObject.tp_dictoffset` should be set to ``-4`` to indicate that the dictionary is
1210+ at the very end of the structure.
1211+
1212+ The real dictionary offset in an instance can be computed from a negative
1213+- :attr:`tp_dictoffset` as follows::
1214++ :c:member:`~PyTypeObject.tp_dictoffset` as follows::
1215+
1216+ dictoffset = tp_basicsize + abs(ob_size)*tp_itemsize + tp_dictoffset
1217+ if dictoffset is not aligned on sizeof(void*):
1218+ round up to sizeof(void*)
1219+
1220+- where :attr:`tp_basicsize`, :attr:`tp_itemsize` and :attr:`tp_dictoffset` are
1221++ where :c:member:`~PyTypeObject.tp_basicsize`, :c:member:`~PyTypeObject.tp_itemsize` and :c:member:`~PyTypeObject.tp_dictoffset` are
1222+ taken from the type object, and :attr:`ob_size` is taken from the instance. The
1223+ absolute value is taken because ints use the sign of :attr:`ob_size` to
1224+ store the sign of the number. (There's never a need to do this calculation
1225+@@ -815,15 +815,15 @@
1226+ This field is inherited by subtypes, but see the rules listed below. A subtype
1227+ may override this offset; this means that the subtype instances store the
1228+ dictionary at a difference offset than the base type. Since the dictionary is
1229+- always found via :attr:`tp_dictoffset`, this should not be a problem.
1230++ always found via :c:member:`~PyTypeObject.tp_dictoffset`, this should not be a problem.
1231+
1232+ When a type defined by a class statement has no :attr:`__slots__` declaration,
1233+ and none of its base types has an instance variable dictionary, a dictionary
1234+- slot is added to the instance layout and the :attr:`tp_dictoffset` is set to
1235++ slot is added to the instance layout and the :c:member:`~PyTypeObject.tp_dictoffset` is set to
1236+ that slot's offset.
1237+
1238+ When a type defined by a class statement has a :attr:`__slots__` declaration,
1239+- the type inherits its :attr:`tp_dictoffset` from its base type.
1240++ the type inherits its :c:member:`~PyTypeObject.tp_dictoffset` from its base type.
1241+
1242+ (Adding a slot named :attr:`__dict__` to the :attr:`__slots__` declaration does
1243+ not have the expected effect, it just causes confusion. Maybe this should be
1244+@@ -847,12 +847,12 @@
1245+ arguments represent positional and keyword arguments of the call to
1246+ :meth:`__init__`.
1247+
1248+- The :attr:`tp_init` function, if not *NULL*, is called when an instance is
1249+- created normally by calling its type, after the type's :attr:`tp_new` function
1250+- has returned an instance of the type. If the :attr:`tp_new` function returns an
1251++ The :c:member:`~PyTypeObject.tp_init` function, if not *NULL*, is called when an instance is
1252++ created normally by calling its type, after the type's :c:member:`~PyTypeObject.tp_new` function
1253++ has returned an instance of the type. If the :c:member:`~PyTypeObject.tp_new` function returns an
1254+ instance of some other type that is not a subtype of the original type, no
1255+- :attr:`tp_init` function is called; if :attr:`tp_new` returns an instance of a
1256+- subtype of the original type, the subtype's :attr:`tp_init` is called.
1257++ :c:member:`~PyTypeObject.tp_init` function is called; if :c:member:`~PyTypeObject.tp_new` returns an instance of a
1258++ subtype of the original type, the subtype's :c:member:`~PyTypeObject.tp_init` is called.
1259+
1260+ This field is inherited by subtypes.
1261+
1262+@@ -869,14 +869,14 @@
1263+ initialization. It should return a pointer to a block of memory of adequate
1264+ length for the instance, suitably aligned, and initialized to zeros, but with
1265+ :attr:`ob_refcnt` set to ``1`` and :attr:`ob_type` set to the type argument. If
1266+- the type's :attr:`tp_itemsize` is non-zero, the object's :attr:`ob_size` field
1267++ the type's :c:member:`~PyTypeObject.tp_itemsize` is non-zero, the object's :attr:`ob_size` field
1268+ should be initialized to *nitems* and the length of the allocated memory block
1269+ should be ``tp_basicsize + nitems*tp_itemsize``, rounded up to a multiple of
1270+ ``sizeof(void*)``; otherwise, *nitems* is not used and the length of the block
1271+- should be :attr:`tp_basicsize`.
1272++ should be :c:member:`~PyTypeObject.tp_basicsize`.
1273+
1274+ Do not use this function to do any other instance initialization, not even to
1275+- allocate additional memory; that should be done by :attr:`tp_new`.
1276++ allocate additional memory; that should be done by :c:member:`~PyTypeObject.tp_new`.
1277+
1278+ This field is inherited by static subtypes, but not by dynamic subtypes
1279+ (subtypes created by a class statement); in the latter, this field is always set
1280+@@ -898,20 +898,20 @@
1281+
1282+ The subtype argument is the type of the object being created; the *args* and
1283+ *kwds* arguments represent positional and keyword arguments of the call to the
1284+- type. Note that subtype doesn't have to equal the type whose :attr:`tp_new`
1285++ type. Note that subtype doesn't have to equal the type whose :c:member:`~PyTypeObject.tp_new`
1286+ function is called; it may be a subtype of that type (but not an unrelated
1287+ type).
1288+
1289+- The :attr:`tp_new` function should call ``subtype->tp_alloc(subtype, nitems)``
1290++ The :c:member:`~PyTypeObject.tp_new` function should call ``subtype->tp_alloc(subtype, nitems)``
1291+ to allocate space for the object, and then do only as much further
1292+ initialization as is absolutely necessary. Initialization that can safely be
1293+- ignored or repeated should be placed in the :attr:`tp_init` handler. A good
1294++ ignored or repeated should be placed in the :c:member:`~PyTypeObject.tp_init` handler. A good
1295+ rule of thumb is that for immutable types, all initialization should take place
1296+- in :attr:`tp_new`, while for mutable types, most initialization should be
1297+- deferred to :attr:`tp_init`.
1298++ in :c:member:`~PyTypeObject.tp_new`, while for mutable types, most initialization should be
1299++ deferred to :c:member:`~PyTypeObject.tp_init`.
1300+
1301+ This field is inherited by subtypes, except it is not inherited by static types
1302+- whose :attr:`tp_base` is *NULL* or ``&PyBaseObject_Type``.
1303++ whose :c:member:`~PyTypeObject.tp_base` is *NULL* or ``&PyBaseObject_Type``.
1304+
1305+
1306+ .. c:member:: destructor PyTypeObject.tp_free
1307+@@ -935,7 +935,7 @@
1308+
1309+ The garbage collector needs to know whether a particular object is collectible
1310+ or not. Normally, it is sufficient to look at the object's type's
1311+- :attr:`tp_flags` field, and check the :const:`Py_TPFLAGS_HAVE_GC` flag bit. But
1312++ :c:member:`~PyTypeObject.tp_flags` field, and check the :const:`Py_TPFLAGS_HAVE_GC` flag bit. But
1313+ some types have a mixture of statically and dynamically allocated instances, and
1314+ the statically allocated instances are not collectible. Such types should
1315+ define this function; it should return ``1`` for a collectible instance, and
1316+@@ -1006,7 +1006,7 @@
1317+
1318+ .. c:member:: PyTypeObject* PyTypeObject.tp_next
1319+
1320+- Pointer to the next type object with a non-zero :attr:`tp_allocs` field.
1321++ Pointer to the next type object with a non-zero :c:member:`~PyTypeObject.tp_allocs` field.
1322+
1323+ Also, note that, in a garbage collected Python, tp_dealloc may be called from
1324+ any Python thread, not just the thread which created the object (if the object
1325+@@ -1145,13 +1145,13 @@
1326+
1327+ This function is used by :c:func:`PySequence_Concat` and has the same
1328+ signature. It is also used by the ``+`` operator, after trying the numeric
1329+- addition via the :attr:`tp_as_number.nb_add` slot.
1330++ addition via the :c:member:`~PyTypeObject.tp_as_number.nb_add` slot.
1331+
1332+ .. c:member:: ssizeargfunc PySequenceMethods.sq_repeat
1333+
1334+ This function is used by :c:func:`PySequence_Repeat` and has the same
1335+ signature. It is also used by the ``*`` operator, after trying numeric
1336+- multiplication via the :attr:`tp_as_number.nb_mul` slot.
1337++ multiplication via the :c:member:`~PyTypeObject.tp_as_number.nb_mul` slot.
1338+
1339+ .. c:member:: ssizeargfunc PySequenceMethods.sq_item
1340+
1341+diff -r d047928ae3f6 Doc/data/refcounts.dat
1342+--- a/Doc/data/refcounts.dat
1343++++ b/Doc/data/refcounts.dat
1344+@@ -210,7 +210,7 @@
1345+
1346+ PyDict_DelItemString:int:::
1347+ PyDict_DelItemString:PyObject*:p:0:
1348+-PyDict_DelItemString:char*:key::
1349++PyDict_DelItemString:const char*:key::
1350+
1351+ PyDict_GetItem:PyObject*::0:0
1352+ PyDict_GetItem:PyObject*:p:0:
1353+@@ -218,7 +218,7 @@
1354+
1355+ PyDict_GetItemString:PyObject*::0:
1356+ PyDict_GetItemString:PyObject*:p:0:
1357+-PyDict_GetItemString:char*:key::
1358++PyDict_GetItemString:const char*:key::
1359+
1360+ PyDict_Items:PyObject*::+1:
1361+ PyDict_Items:PyObject*:p:0:
1362+@@ -244,7 +244,7 @@
1363+
1364+ PyDict_SetItemString:int:::
1365+ PyDict_SetItemString:PyObject*:p:0:
1366+-PyDict_SetItemString:char*:key::
1367++PyDict_SetItemString:const char*:key::
1368+ PyDict_SetItemString:PyObject*:val:+1:
1369+
1370+ PyDict_Size:int:::
1371+@@ -277,13 +277,13 @@
1372+ PyErr_GivenExceptionMatches:PyObject*:exc:0:
1373+
1374+ PyErr_NewException:PyObject*::+1:
1375+-PyErr_NewException:char*:name::
1376++PyErr_NewException:const char*:name::
1377+ PyErr_NewException:PyObject*:base:0:
1378+ PyErr_NewException:PyObject*:dict:0:
1379+
1380+ PyErr_NewExceptionWithDoc:PyObject*::+1:
1381+-PyErr_NewExceptionWithDoc:char*:name::
1382+-PyErr_NewExceptionWithDoc:char*:doc::
1383++PyErr_NewExceptionWithDoc:const char*:name::
1384++PyErr_NewExceptionWithDoc:const char*:doc::
1385+ PyErr_NewExceptionWithDoc:PyObject*:base:0:
1386+ PyErr_NewExceptionWithDoc:PyObject*:dict:0:
1387+
1388+@@ -310,21 +310,21 @@
1389+ PyErr_SetExcFromWindowsErrWithFilename:PyObject*::null:
1390+ PyErr_SetExcFromWindowsErrWithFilename:PyObject*:type:0:
1391+ PyErr_SetExcFromWindowsErrWithFilename:int:ierr::
1392+-PyErr_SetExcFromWindowsErrWithFilename:char*:filename::
1393++PyErr_SetExcFromWindowsErrWithFilename:const char*:filename::
1394+
1395+ PyErr_SetFromErrno:PyObject*::null:
1396+ PyErr_SetFromErrno:PyObject*:type:0:
1397+
1398+ PyErr_SetFromErrnoWithFilename:PyObject*::null:
1399+ PyErr_SetFromErrnoWithFilename:PyObject*:type:0:
1400+-PyErr_SetFromErrnoWithFilename:char*:filename::
1401++PyErr_SetFromErrnoWithFilename:const char*:filename::
1402+
1403+ PyErr_SetFromWindowsErr:PyObject*::null:
1404+ PyErr_SetFromWindowsErr:int:ierr::
1405+
1406+ PyErr_SetFromWindowsErrWithFilename:PyObject*::null:
1407+ PyErr_SetFromWindowsErrWithFilename:int:ierr::
1408+-PyErr_SetFromWindowsErrWithFilename:char*:filename::
1409++PyErr_SetFromWindowsErrWithFilename:const char*:filename::
1410+
1411+ PyErr_SetInterrupt:void:::
1412+
1413+@@ -337,11 +337,11 @@
1414+
1415+ PyErr_SetString:void:::
1416+ PyErr_SetString:PyObject*:type:+1:
1417+-PyErr_SetString:char*:message::
1418++PyErr_SetString:const char*:message::
1419+
1420+ PyErr_Format:PyObject*::null:
1421+ PyErr_Format:PyObject*:exception:+1:
1422+-PyErr_Format:char*:format::
1423++PyErr_Format:const char*:format::
1424+ PyErr_Format::...::
1425+
1426+ PyErr_WarnEx:int:::
1427+@@ -386,22 +386,22 @@
1428+
1429+ PyFile_FromFile:PyObject*::+1:
1430+ PyFile_FromFile:FILE*:fp::
1431+-PyFile_FromFile:char*:name::
1432+-PyFile_FromFile:char*:mode::
1433++PyFile_FromFile:const char*:name::
1434++PyFile_FromFile:const char*:mode::
1435+ PyFile_FromFile:int(*:close)::
1436+
1437+ PyFile_FromFileEx:PyObject*::+1:
1438+ PyFile_FromFileEx:FILE*:fp::
1439+-PyFile_FromFileEx:char*:name::
1440+-PyFile_FromFileEx:char*:mode::
1441++PyFile_FromFileEx:const char*:name::
1442++PyFile_FromFileEx:const char*:mode::
1443+ PyFile_FromFileEx:int(*:close)::
1444+ PyFile_FromFileEx:int:buffering::
1445+-PyFile_FromFileEx:char*:encoding::
1446+-PyFile_FromFileEx:char*:newline::
1447++PyFile_FromFileEx:const char*:encoding::
1448++PyFile_FromFileEx:const char*:newline::
1449+
1450+ PyFile_FromString:PyObject*::+1:
1451+-PyFile_FromString:char*:name::
1452+-PyFile_FromString:char*:mode::
1453++PyFile_FromString:const char*:name::
1454++PyFile_FromString:const char*:mode::
1455+
1456+ PyFile_GetLine:PyObject*::+1:
1457+ PyFile_GetLine:PyObject*:p::
1458+@@ -482,23 +482,23 @@
1459+ PyGen_New:PyFrameObject*:frame:0:
1460+
1461+ Py_InitModule:PyObject*::0:
1462+-Py_InitModule:char*:name::
1463++Py_InitModule:const char*:name::
1464+ Py_InitModule:PyMethodDef[]:methods::
1465+
1466+ Py_InitModule3:PyObject*::0:
1467+-Py_InitModule3:char*:name::
1468++Py_InitModule3:const char*:name::
1469+ Py_InitModule3:PyMethodDef[]:methods::
1470+-Py_InitModule3:char*:doc::
1471++Py_InitModule3:const char*:doc::
1472+
1473+ Py_InitModule4:PyObject*::0:
1474+-Py_InitModule4:char*:name::
1475++Py_InitModule4:const char*:name::
1476+ Py_InitModule4:PyMethodDef[]:methods::
1477+-Py_InitModule4:char*:doc::
1478++Py_InitModule4:const char*:doc::
1479+ Py_InitModule4:PyObject*:self::
1480+ Py_InitModule4:int:apiver::usually provided by Py_InitModule or Py_InitModule3
1481+
1482+ PyImport_AddModule:PyObject*::0:reference borrowed from sys.modules
1483+-PyImport_AddModule:char*:name::
1484++PyImport_AddModule:const char*:name::
1485+
1486+ PyImport_Cleanup:void:::
1487+
1488+@@ -522,16 +522,16 @@
1489+ PyImport_ImportFrozenModule:char*:::
1490+
1491+ PyImport_ImportModule:PyObject*::+1:
1492+-PyImport_ImportModule:char*:name::
1493++PyImport_ImportModule:const char*:name::
1494+
1495+ PyImport_ImportModuleEx:PyObject*::+1:
1496+-PyImport_ImportModuleEx:char*:name::
1497++PyImport_ImportModuleEx:const char*:name::
1498+ PyImport_ImportModuleEx:PyObject*:globals:0:???
1499+ PyImport_ImportModuleEx:PyObject*:locals:0:???
1500+ PyImport_ImportModuleEx:PyObject*:fromlist:0:???
1501+
1502+ PyImport_ImportModuleLevel:PyObject*::+1:
1503+-PyImport_ImportModuleLevel:char*:name::
1504++PyImport_ImportModuleLevel:const char*:name::
1505+ PyImport_ImportModuleLevel:PyObject*:globals:0:???
1506+ PyImport_ImportModuleLevel:PyObject*:locals:0:???
1507+ PyImport_ImportModuleLevel:PyObject*:fromlist:0:???
1508+@@ -692,7 +692,7 @@
1509+
1510+ PyMapping_DelItemString:int:::
1511+ PyMapping_DelItemString:PyObject*:o:0:
1512+-PyMapping_DelItemString:char*:key::
1513++PyMapping_DelItemString:const char*:key::
1514+
1515+ PyMapping_GetItemString:PyObject*::+1:
1516+ PyMapping_GetItemString:PyObject*:o:0:
1517+@@ -762,10 +762,10 @@
1518+ PyModule_GetDict:PyObject*::0:
1519+ PyModule_GetDict::PyObject* module:0:
1520+
1521+-PyModule_GetFilename:char*:::
1522++PyModule_GetFilename:const char*:::
1523+ PyModule_GetFilename:PyObject*:module:0:
1524+
1525+-PyModule_GetName:char*:::
1526++PyModule_GetName:const char*:::
1527+ PyModule_GetName:PyObject*:module:0:
1528+
1529+ PyModule_New:PyObject*::+1:
1530+@@ -927,7 +927,7 @@
1531+
1532+ PyObject_CallMethodObjArgs:PyObject*::+1:
1533+ PyObject_CallMethodObjArgs:PyObject*:o:0:
1534+-PyObject_CallMethodObjArgs:char*:name::
1535++PyObject_CallMethodObjArgs:PyObject*:name:0:
1536+ PyObject_CallMethodObjArgs::...::
1537+
1538+ PyObject_CallObject:PyObject*::+1:
1539+@@ -949,7 +949,7 @@
1540+
1541+ PyObject_DelAttrString:int:::
1542+ PyObject_DelAttrString:PyObject*:o:0:
1543+-PyObject_DelAttrString:char*:attr_name::
1544++PyObject_DelAttrString:const char*:attr_name::
1545+
1546+ PyObject_DelItem:int:::
1547+ PyObject_DelItem:PyObject*:o:0:
1548+@@ -964,7 +964,7 @@
1549+
1550+ PyObject_GetAttrString:PyObject*::+1:
1551+ PyObject_GetAttrString:PyObject*:o:0:
1552+-PyObject_GetAttrString:char*:attr_name::
1553++PyObject_GetAttrString:const char*:attr_name::
1554+
1555+ PyObject_GetItem:PyObject*::+1:
1556+ PyObject_GetItem:PyObject*:o:0:
1557+@@ -979,7 +979,7 @@
1558+
1559+ PyObject_HasAttrString:int:::
1560+ PyObject_HasAttrString:PyObject*:o:0:
1561+-PyObject_HasAttrString:char*:attr_name:0:
1562++PyObject_HasAttrString:const char*:attr_name:0:
1563+
1564+ PyObject_Hash:int:::
1565+ PyObject_Hash:PyObject*:o:0:
1566+@@ -1029,7 +1029,7 @@
1567+
1568+ PyObject_SetAttrString:int:::
1569+ PyObject_SetAttrString:PyObject*:o:0:
1570+-PyObject_SetAttrString:char*:attr_name::
1571++PyObject_SetAttrString:const char*:attr_name::
1572+ PyObject_SetAttrString:PyObject*:v:+1:
1573+
1574+ PyObject_SetItem:int:::
1575+@@ -1048,27 +1048,27 @@
1576+
1577+ PyParser_SimpleParseFile:struct _node*:::
1578+ PyParser_SimpleParseFile:FILE*:fp::
1579+-PyParser_SimpleParseFile:char*:filename::
1580++PyParser_SimpleParseFile:const char*:filename::
1581+ PyParser_SimpleParseFile:int:start::
1582+
1583+ PyParser_SimpleParseString:struct _node*:::
1584+-PyParser_SimpleParseString:char*:str::
1585++PyParser_SimpleParseString:const char*:str::
1586+ PyParser_SimpleParseString:int:start::
1587+
1588+ PyRun_AnyFile:int:::
1589+ PyRun_AnyFile:FILE*:fp::
1590+-PyRun_AnyFile:char*:filename::
1591++PyRun_AnyFile:const char*:filename::
1592+
1593+ PyRun_File:PyObject*::+1:??? -- same as eval_code2()
1594+ PyRun_File:FILE*:fp::
1595+-PyRun_File:char*:filename::
1596++PyRun_File:const char*:filename::
1597+ PyRun_File:int:start::
1598+ PyRun_File:PyObject*:globals:0:
1599+ PyRun_File:PyObject*:locals:0:
1600+
1601+ PyRun_FileEx:PyObject*::+1:??? -- same as eval_code2()
1602+ PyRun_FileEx:FILE*:fp::
1603+-PyRun_FileEx:char*:filename::
1604++PyRun_FileEx:const char*:filename::
1605+ PyRun_FileEx:int:start::
1606+ PyRun_FileEx:PyObject*:globals:0:
1607+ PyRun_FileEx:PyObject*:locals:0:
1608+@@ -1076,7 +1076,7 @@
1609+
1610+ PyRun_FileFlags:PyObject*::+1:??? -- same as eval_code2()
1611+ PyRun_FileFlags:FILE*:fp::
1612+-PyRun_FileFlags:char*:filename::
1613++PyRun_FileFlags:const char*:filename::
1614+ PyRun_FileFlags:int:start::
1615+ PyRun_FileFlags:PyObject*:globals:0:
1616+ PyRun_FileFlags:PyObject*:locals:0:
1617+@@ -1084,7 +1084,7 @@
1618+
1619+ PyRun_FileExFlags:PyObject*::+1:??? -- same as eval_code2()
1620+ PyRun_FileExFlags:FILE*:fp::
1621+-PyRun_FileExFlags:char*:filename::
1622++PyRun_FileExFlags:const char*:filename::
1623+ PyRun_FileExFlags:int:start::
1624+ PyRun_FileExFlags:PyObject*:globals:0:
1625+ PyRun_FileExFlags:PyObject*:locals:0:
1626+@@ -1093,27 +1093,27 @@
1627+
1628+ PyRun_InteractiveLoop:int:::
1629+ PyRun_InteractiveLoop:FILE*:fp::
1630+-PyRun_InteractiveLoop:char*:filename::
1631++PyRun_InteractiveLoop:const char*:filename::
1632+
1633+ PyRun_InteractiveOne:int:::
1634+ PyRun_InteractiveOne:FILE*:fp::
1635+-PyRun_InteractiveOne:char*:filename::
1636++PyRun_InteractiveOne:const char*:filename::
1637+
1638+ PyRun_SimpleFile:int:::
1639+ PyRun_SimpleFile:FILE*:fp::
1640+-PyRun_SimpleFile:char*:filename::
1641++PyRun_SimpleFile:const char*:filename::
1642+
1643+ PyRun_SimpleString:int:::
1644+-PyRun_SimpleString:char*:command::
1645++PyRun_SimpleString:const char*:command::
1646+
1647+ PyRun_String:PyObject*::+1:??? -- same as eval_code2()
1648+-PyRun_String:char*:str::
1649++PyRun_String:const char*:str::
1650+ PyRun_String:int:start::
1651+ PyRun_String:PyObject*:globals:0:
1652+ PyRun_String:PyObject*:locals:0:
1653+
1654+ PyRun_StringFlags:PyObject*::+1:??? -- same as eval_code2()
1655+-PyRun_StringFlags:char*:str::
1656++PyRun_StringFlags:const char*:str::
1657+ PyRun_StringFlags:int:start::
1658+ PyRun_StringFlags:PyObject*:globals:0:
1659+ PyRun_StringFlags:PyObject*:locals:0:
1660+@@ -1229,7 +1229,7 @@
1661+ PySlice_New:PyObject*:stop:0:
1662+ PySlice_New:PyObject*:step:0:
1663+
1664+-PyString_AS_STRING:char*:::
1665++PyString_AS_STRING:const char*:::
1666+ PyString_AS_STRING:PyObject*:string:0:
1667+
1668+ PyString_AsDecodedObject:PyObject*::+1:
1669+@@ -1242,7 +1242,7 @@
1670+ PyString_AsEncodedObject:const char*:encoding::
1671+ PyString_AsEncodedObject:const char*:errors::
1672+
1673+-PyString_AsString:char*:::
1674++PyString_AsString:const char*:::
1675+ PyString_AsString:PyObject*:string:0:
1676+
1677+ PyString_AsStringAndSize:int:::
1678+@@ -1310,13 +1310,13 @@
1679+ PyString_AsEncodedString:const char*:errors::
1680+
1681+ PySys_AddWarnOption:void:::
1682+-PySys_AddWarnOption:char*:s::
1683++PySys_AddWarnOption:const char*:s::
1684+
1685+ PySys_AddXOption:void:::
1686+ PySys_AddXOption:const wchar_t*:s::
1687+
1688+ PySys_GetObject:PyObject*::0:
1689+-PySys_GetObject:char*:name::
1690++PySys_GetObject:const char*:name::
1691+
1692+ PySys_GetXOptions:PyObject*::0:
1693+
1694+@@ -1325,16 +1325,16 @@
1695+ PySys_SetArgv:char**:argv::
1696+
1697+ PySys_SetObject:int:::
1698+-PySys_SetObject:char*:name::
1699++PySys_SetObject:const char*:name::
1700+ PySys_SetObject:PyObject*:v:+1:
1701+
1702+ PySys_ResetWarnOptions:void:::
1703+
1704+ PySys_WriteStdout:void:::
1705+-PySys_WriteStdout:char*:format::
1706++PySys_WriteStdout:const char*:format::
1707+
1708+ PySys_WriteStderr:void:::
1709+-PySys_WriteStderr:char*:format::
1710++PySys_WriteStderr:const char*:format::
1711+
1712+ PyThreadState_Clear:void:::
1713+ PyThreadState_Clear:PyThreadState*:tstate::
1714+@@ -1714,16 +1714,16 @@
1715+ Py_AtExit:void (*)():func::
1716+
1717+ Py_BuildValue:PyObject*::+1:
1718+-Py_BuildValue:char*:format::
1719++Py_BuildValue:const char*:format::
1720+
1721+ Py_CompileString:PyObject*::+1:
1722+-Py_CompileString:char*:str::
1723+-Py_CompileString:char*:filename::
1724++Py_CompileString:const char*:str::
1725++Py_CompileString:const char*:filename::
1726+ Py_CompileString:int:start::
1727+
1728+ Py_CompileStringFlags:PyObject*::+1:
1729+-Py_CompileStringFlags:char*:str::
1730+-Py_CompileStringFlags:char*:filename::
1731++Py_CompileStringFlags:const char*:str::
1732++Py_CompileStringFlags:const char*:filename::
1733+ Py_CompileStringFlags:int:start::
1734+ Py_CompileStringFlags:PyCompilerFlags*:flags::
1735+
1736+@@ -1737,33 +1737,33 @@
1737+ Py_Exit:int:status::
1738+
1739+ Py_FatalError:void:::
1740+-Py_FatalError:char*:message::
1741++Py_FatalError:const char*:message::
1742+
1743+ Py_FdIsInteractive:int:::
1744+ Py_FdIsInteractive:FILE*:fp::
1745+-Py_FdIsInteractive:char*:filename::
1746++Py_FdIsInteractive:const char*:filename::
1747+
1748+ Py_Finalize:void:::
1749+
1750+-Py_GetBuildInfoconst:char*:::
1751++Py_GetBuildInfoconst:const char*:::
1752+
1753+-Py_GetCompilerconst:char*:::
1754++Py_GetCompilerconst:const char*:::
1755+
1756+-Py_GetCopyrightconst:char*:::
1757++Py_GetCopyrightconst:const char*:::
1758+
1759+-Py_GetExecPrefix:char*:::
1760++Py_GetExecPrefix:const char*:::
1761+
1762+-Py_GetPath:char*:::
1763++Py_GetPath:const char*:::
1764+
1765+-Py_GetPlatformconst:char*:::
1766++Py_GetPlatformconst:const char*:::
1767+
1768+-Py_GetPrefix:char*:::
1769++Py_GetPrefix:const char*:::
1770+
1771+-Py_GetProgramFullPath:char*:::
1772++Py_GetProgramFullPath:const char*:::
1773+
1774+-Py_GetProgramName:char*:::
1775++Py_GetProgramName:const char*:::
1776+
1777+-Py_GetVersionconst:char*:::
1778++Py_GetVersionconst:const char*:::
1779+
1780+ Py_INCREF:void:::
1781+ Py_INCREF:PyObject*:o:+1:
1782+@@ -1775,7 +1775,7 @@
1783+ Py_NewInterpreter:PyThreadState*:::
1784+
1785+ Py_SetProgramName:void:::
1786+-Py_SetProgramName:char*:name::
1787++Py_SetProgramName:const char*:name::
1788+
1789+ Py_XDECREF:void:::
1790+ Py_XDECREF:PyObject*:o:-1:if o is not NULL
1791+@@ -1784,14 +1784,14 @@
1792+ Py_XINCREF:PyObject*:o:+1:if o is not NULL
1793+
1794+ _PyImport_FindExtension:PyObject*::0:??? see PyImport_AddModule
1795+-_PyImport_FindExtension:char*:::
1796+-_PyImport_FindExtension:char*:::
1797++_PyImport_FindExtension:const char*:::
1798++_PyImport_FindExtension:const char*:::
1799+
1800+ _PyImport_Fini:void:::
1801+
1802+ _PyImport_FixupExtension:PyObject*:::???
1803+-_PyImport_FixupExtension:char*:::
1804+-_PyImport_FixupExtension:char*:::
1805++_PyImport_FixupExtension:const char*:::
1806++_PyImport_FixupExtension:const char*:::
1807+
1808+ _PyImport_Init:void:::
1809+
1810 diff -r d047928ae3f6 Doc/extending/embedding.rst
1811 --- a/Doc/extending/embedding.rst
1812 +++ b/Doc/extending/embedding.rst
1813@@ -24,10 +1274,456 @@
1814
1815 .. note::
1816 To avoid confusion between several Python installations (and especially
1817+@@ -307,11 +307,13 @@
1818+ to find its location) and compilation
1819+ options. In this case, the :mod:`sysconfig` module is a useful tool to
1820+ programmatically extract the configuration values that you will want to
1821+-combine together:
1822++combine together. For example:
1823+
1824+ .. code-block:: python
1825+
1826+ >>> import sysconfig
1827++ >>> sysconfig.get_config_var('LIBS')
1828++ '-lpthread -ldl -lutil'
1829+ >>> sysconfig.get_config_var('LINKFORSHARED')
1830+ '-Xlinker -export-dynamic'
1831+
1832+diff -r d047928ae3f6 Doc/extending/newtypes.rst
1833+--- a/Doc/extending/newtypes.rst
1834++++ b/Doc/extending/newtypes.rst
1835+@@ -135,11 +135,11 @@
1836+ .. note::
1837+
1838+ If you want your type to be subclassable from Python, and your type has the same
1839+- :attr:`tp_basicsize` as its base type, you may have problems with multiple
1840++ :c:member:`~PyTypeObject.tp_basicsize` as its base type, you may have problems with multiple
1841+ inheritance. A Python subclass of your type will have to list your type first
1842+ in its :attr:`__bases__`, or else it will not be able to call your type's
1843+ :meth:`__new__` method without getting an error. You can avoid this problem by
1844+- ensuring that your type has a larger value for :attr:`tp_basicsize` than its
1845++ ensuring that your type has a larger value for :c:member:`~PyTypeObject.tp_basicsize` than its
1846+ base type does. Most of the time, this will be true anyway, because either your
1847+ base type will be :class:`object`, or else you will be adding data members to
1848+ your base type, and therefore increasing its size.
1849+@@ -159,7 +159,7 @@
1850+ All types should include this constant in their flags. It enables all of the
1851+ members defined by the current version of Python.
1852+
1853+-We provide a doc string for the type in :attr:`tp_doc`. ::
1854++We provide a doc string for the type in :c:member:`~PyTypeObject.tp_doc`. ::
1855+
1856+ "Noddy objects", /* tp_doc */
1857+
1858+@@ -168,12 +168,12 @@
1859+ the module. We'll expand this example later to have more interesting behavior.
1860+
1861+ For now, all we want to be able to do is to create new :class:`Noddy` objects.
1862+-To enable object creation, we have to provide a :attr:`tp_new` implementation.
1863++To enable object creation, we have to provide a :c:member:`~PyTypeObject.tp_new` implementation.
1864+ In this case, we can just use the default implementation provided by the API
1865+ function :c:func:`PyType_GenericNew`. We'd like to just assign this to the
1866+-:attr:`tp_new` slot, but we can't, for portability sake, On some platforms or
1867++:c:member:`~PyTypeObject.tp_new` slot, but we can't, for portability sake, On some platforms or
1868+ compilers, we can't statically initialize a structure member with a function
1869+-defined in another C module, so, instead, we'll assign the :attr:`tp_new` slot
1870++defined in another C module, so, instead, we'll assign the :c:member:`~PyTypeObject.tp_new` slot
1871+ in the module initialization function just before calling
1872+ :c:func:`PyType_Ready`::
1873+
1874+@@ -268,13 +268,13 @@
1875+ Py_TYPE(self)->tp_free((PyObject*)self);
1876+ }
1877+
1878+-which is assigned to the :attr:`tp_dealloc` member::
1879++which is assigned to the :c:member:`~PyTypeObject.tp_dealloc` member::
1880+
1881+ (destructor)Noddy_dealloc, /*tp_dealloc*/
1882+
1883+ This method decrements the reference counts of the two Python attributes. We use
1884+ :c:func:`Py_XDECREF` here because the :attr:`first` and :attr:`last` members
1885+-could be *NULL*. It then calls the :attr:`tp_free` member of the object's type
1886++could be *NULL*. It then calls the :c:member:`~PyTypeObject.tp_free` member of the object's type
1887+ to free the object's memory. Note that the object's type might not be
1888+ :class:`NoddyType`, because the object may be an instance of a subclass.
1889+
1890+@@ -306,7 +306,7 @@
1891+ return (PyObject *)self;
1892+ }
1893+
1894+-and install it in the :attr:`tp_new` member::
1895++and install it in the :c:member:`~PyTypeObject.tp_new` member::
1896+
1897+ Noddy_new, /* tp_new */
1898+
1899+@@ -326,17 +326,17 @@
1900+ created. New methods always accept positional and keyword arguments, but they
1901+ often ignore the arguments, leaving the argument handling to initializer
1902+ methods. Note that if the type supports subclassing, the type passed may not be
1903+-the type being defined. The new method calls the :attr:`tp_alloc` slot to
1904+-allocate memory. We don't fill the :attr:`tp_alloc` slot ourselves. Rather
1905++the type being defined. The new method calls the :c:member:`~PyTypeObject.tp_alloc` slot to
1906++allocate memory. We don't fill the :c:member:`~PyTypeObject.tp_alloc` slot ourselves. Rather
1907+ :c:func:`PyType_Ready` fills it for us by inheriting it from our base class,
1908+ which is :class:`object` by default. Most types use the default allocation.
1909+
1910+ .. note::
1911+
1912+- If you are creating a co-operative :attr:`tp_new` (one that calls a base type's
1913+- :attr:`tp_new` or :meth:`__new__`), you must *not* try to determine what method
1914++ If you are creating a co-operative :c:member:`~PyTypeObject.tp_new` (one that calls a base type's
1915++ :c:member:`~PyTypeObject.tp_new` or :meth:`__new__`), you must *not* try to determine what method
1916+ to call using method resolution order at runtime. Always statically determine
1917+- what type you are going to call, and call its :attr:`tp_new` directly, or via
1918++ what type you are going to call, and call its :c:member:`~PyTypeObject.tp_new` directly, or via
1919+ ``type->tp_base->tp_new``. If you do not do this, Python subclasses of your
1920+ type that also inherit from other Python-defined classes may not work correctly.
1921+ (Specifically, you may not be able to create instances of such subclasses
1922+@@ -373,11 +373,11 @@
1923+ return 0;
1924+ }
1925+
1926+-by filling the :attr:`tp_init` slot. ::
1927++by filling the :c:member:`~PyTypeObject.tp_init` slot. ::
1928+
1929+ (initproc)Noddy_init, /* tp_init */
1930+
1931+-The :attr:`tp_init` slot is exposed in Python as the :meth:`__init__` method. It
1932++The :c:member:`~PyTypeObject.tp_init` slot is exposed in Python as the :meth:`__init__` method. It
1933+ is used to initialize an object after it's created. Unlike the new method, we
1934+ can't guarantee that the initializer is called. The initializer isn't called
1935+ when unpickling objects and it can be overridden. Our initializer accepts
1936+@@ -407,7 +407,7 @@
1937+ * when we know that deallocation of the object [#]_ will not cause any calls
1938+ back into our type's code
1939+
1940+-* when decrementing a reference count in a :attr:`tp_dealloc` handler when
1941++* when decrementing a reference count in a :c:member:`~PyTypeObject.tp_dealloc` handler when
1942+ garbage-collections is not supported [#]_
1943+
1944+ We want to expose our instance variables as attributes. There are a
1945+@@ -423,7 +423,7 @@
1946+ {NULL} /* Sentinel */
1947+ };
1948+
1949+-and put the definitions in the :attr:`tp_members` slot::
1950++and put the definitions in the :c:member:`~PyTypeObject.tp_members` slot::
1951+
1952+ Noddy_members, /* tp_members */
1953+
1954+@@ -483,7 +483,7 @@
1955+ {NULL} /* Sentinel */
1956+ };
1957+
1958+-and assign them to the :attr:`tp_methods` slot::
1959++and assign them to the :c:member:`~PyTypeObject.tp_methods` slot::
1960+
1961+ Noddy_methods, /* tp_methods */
1962+
1963+@@ -578,7 +578,7 @@
1964+ {NULL} /* Sentinel */
1965+ };
1966+
1967+-and register it in the :attr:`tp_getset` slot::
1968++and register it in the :c:member:`~PyTypeObject.tp_getset` slot::
1969+
1970+ Noddy_getseters, /* tp_getset */
1971+
1972+@@ -595,7 +595,7 @@
1973+ {NULL} /* Sentinel */
1974+ };
1975+
1976+-We also need to update the :attr:`tp_init` handler to only allow strings [#]_ to
1977++We also need to update the :c:member:`~PyTypeObject.tp_init` handler to only allow strings [#]_ to
1978+ be passed::
1979+
1980+ static int
1981+@@ -713,7 +713,7 @@
1982+
1983+ .. note::
1984+
1985+- Note that the :attr:`tp_traverse` implementation must name its arguments exactly
1986++ Note that the :c:member:`~PyTypeObject.tp_traverse` implementation must name its arguments exactly
1987+ *visit* and *arg* in order to use :c:func:`Py_VISIT`. This is to encourage
1988+ uniformity across these boring implementations.
1989+
1990+@@ -750,7 +750,7 @@
1991+ reference count drops to zero, we might cause code to run that calls back into
1992+ the object. In addition, because we now support garbage collection, we also
1993+ have to worry about code being run that triggers garbage collection. If garbage
1994+-collection is run, our :attr:`tp_traverse` handler could get called. We can't
1995++collection is run, our :c:member:`~PyTypeObject.tp_traverse` handler could get called. We can't
1996+ take a chance of having :c:func:`Noddy_traverse` called when a member's reference
1997+ count has dropped to zero and its value hasn't been set to *NULL*.
1998+
1999+@@ -770,8 +770,8 @@
2000+
2001+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC, /* tp_flags */
2002+
2003+-That's pretty much it. If we had written custom :attr:`tp_alloc` or
2004+-:attr:`tp_free` slots, we'd need to modify them for cyclic-garbage collection.
2005++That's pretty much it. If we had written custom :c:member:`~PyTypeObject.tp_alloc` or
2006++:c:member:`~PyTypeObject.tp_free` slots, we'd need to modify them for cyclic-garbage collection.
2007+ Most extensions will use the versions automatically provided.
2008+
2009+
2010+@@ -830,8 +830,8 @@
2011+
2012+ This pattern is important when writing a type with custom :attr:`new` and
2013+ :attr:`dealloc` methods. The :attr:`new` method should not actually create the
2014+-memory for the object with :attr:`tp_alloc`, that will be handled by the base
2015+-class when calling its :attr:`tp_new`.
2016++memory for the object with :c:member:`~PyTypeObject.tp_alloc`, that will be handled by the base
2017++class when calling its :c:member:`~PyTypeObject.tp_new`.
2018+
2019+ When filling out the :c:func:`PyTypeObject` for the :class:`Shoddy` type, you see
2020+ a slot for :c:func:`tp_base`. Due to cross platform compiler issues, you can't
2021+@@ -857,8 +857,8 @@
2022+ }
2023+
2024+ Before calling :c:func:`PyType_Ready`, the type structure must have the
2025+-:attr:`tp_base` slot filled in. When we are deriving a new type, it is not
2026+-necessary to fill out the :attr:`tp_alloc` slot with :c:func:`PyType_GenericNew`
2027++:c:member:`~PyTypeObject.tp_base` slot filled in. When we are deriving a new type, it is not
2028++necessary to fill out the :c:member:`~PyTypeObject.tp_alloc` slot with :c:func:`PyType_GenericNew`
2029+ -- the allocate function from the base type will be inherited.
2030+
2031+ After that, calling :c:func:`PyType_Ready` and adding the type object to the
2032+@@ -901,7 +901,7 @@
2033+
2034+ These fields tell the runtime how much memory to allocate when new objects of
2035+ this type are created. Python has some built-in support for variable length
2036+-structures (think: strings, lists) which is where the :attr:`tp_itemsize` field
2037++structures (think: strings, lists) which is where the :c:member:`~PyTypeObject.tp_itemsize` field
2038+ comes in. This will be dealt with later. ::
2039+
2040+ char *tp_doc;
2041+@@ -962,10 +962,9 @@
2042+
2043+ if (self->my_callback != NULL) {
2044+ PyObject *err_type, *err_value, *err_traceback;
2045+- int have_error = PyErr_Occurred() ? 1 : 0;
2046+
2047+- if (have_error)
2048+- PyErr_Fetch(&err_type, &err_value, &err_traceback);
2049++ /* This saves the current exception state */
2050++ PyErr_Fetch(&err_type, &err_value, &err_traceback);
2051+
2052+ cbresult = PyObject_CallObject(self->my_callback, NULL);
2053+ if (cbresult == NULL)
2054+@@ -973,8 +972,8 @@
2055+ else
2056+ Py_DECREF(cbresult);
2057+
2058+- if (have_error)
2059+- PyErr_Restore(err_type, err_value, err_traceback);
2060++ /* This restores the saved exception state */
2061++ PyErr_Restore(err_type, err_value, err_traceback);
2062+
2063+ Py_DECREF(self->my_callback);
2064+ }
2065+@@ -998,7 +997,7 @@
2066+ reprfunc tp_repr;
2067+ reprfunc tp_str;
2068+
2069+-The :attr:`tp_repr` handler should return a string object containing a
2070++The :c:member:`~PyTypeObject.tp_repr` handler should return a string object containing a
2071+ representation of the instance for which it is called. Here is a simple
2072+ example::
2073+
2074+@@ -1009,15 +1008,15 @@
2075+ obj->obj_UnderlyingDatatypePtr->size);
2076+ }
2077+
2078+-If no :attr:`tp_repr` handler is specified, the interpreter will supply a
2079+-representation that uses the type's :attr:`tp_name` and a uniquely-identifying
2080++If no :c:member:`~PyTypeObject.tp_repr` handler is specified, the interpreter will supply a
2081++representation that uses the type's :c:member:`~PyTypeObject.tp_name` and a uniquely-identifying
2082+ value for the object.
2083+
2084+-The :attr:`tp_str` handler is to :func:`str` what the :attr:`tp_repr` handler
2085++The :c:member:`~PyTypeObject.tp_str` handler is to :func:`str` what the :c:member:`~PyTypeObject.tp_repr` handler
2086+ described above is to :func:`repr`; that is, it is called when Python code calls
2087+ :func:`str` on an instance of your object. Its implementation is very similar
2088+-to the :attr:`tp_repr` function, but the resulting string is intended for human
2089+-consumption. If :attr:`tp_str` is not specified, the :attr:`tp_repr` handler is
2090++to the :c:member:`~PyTypeObject.tp_repr` function, but the resulting string is intended for human
2091++consumption. If :c:member:`~PyTypeObject.tp_str` is not specified, the :c:member:`~PyTypeObject.tp_repr` handler is
2092+ used instead.
2093+
2094+ Here is a simple example::
2095+@@ -1082,7 +1081,7 @@
2096+ type object. Each descriptor controls access to one attribute of the instance
2097+ object. Each of the tables is optional; if all three are *NULL*, instances of
2098+ the type will only have attributes that are inherited from their base type, and
2099+-should leave the :attr:`tp_getattro` and :attr:`tp_setattro` fields *NULL* as
2100++should leave the :c:member:`~PyTypeObject.tp_getattro` and :c:member:`~PyTypeObject.tp_setattro` fields *NULL* as
2101+ well, allowing the base type to handle attributes.
2102+
2103+ The tables are declared as three fields of the type object::
2104+@@ -1091,7 +1090,7 @@
2105+ struct PyMemberDef *tp_members;
2106+ struct PyGetSetDef *tp_getset;
2107+
2108+-If :attr:`tp_methods` is not *NULL*, it must refer to an array of
2109++If :c:member:`~PyTypeObject.tp_methods` is not *NULL*, it must refer to an array of
2110+ :c:type:`PyMethodDef` structures. Each entry in the table is an instance of this
2111+ structure::
2112+
2113+@@ -1147,13 +1146,13 @@
2114+ single: WRITE_RESTRICTED
2115+ single: RESTRICTED
2116+
2117+-An interesting advantage of using the :attr:`tp_members` table to build
2118++An interesting advantage of using the :c:member:`~PyTypeObject.tp_members` table to build
2119+ descriptors that are used at runtime is that any attribute defined this way can
2120+ have an associated doc string simply by providing the text in the table. An
2121+ application can use the introspection API to retrieve the descriptor from the
2122+ class object, and get the doc string using its :attr:`__doc__` attribute.
2123+
2124+-As with the :attr:`tp_methods` table, a sentinel entry with a :attr:`name` value
2125++As with the :c:member:`~PyTypeObject.tp_methods` table, a sentinel entry with a :attr:`name` value
2126+ of *NULL* is required.
2127+
2128+ .. XXX Descriptors need to be explained in more detail somewhere, but not here.
2129+@@ -1177,7 +1176,7 @@
2130+ called, so that if you do need to extend their functionality, you'll understand
2131+ what needs to be done.
2132+
2133+-The :attr:`tp_getattr` handler is called when the object requires an attribute
2134++The :c:member:`~PyTypeObject.tp_getattr` handler is called when the object requires an attribute
2135+ look-up. It is called in the same situations where the :meth:`__getattr__`
2136+ method of a class would be called.
2137+
2138+@@ -1197,11 +1196,11 @@
2139+ return NULL;
2140+ }
2141+
2142+-The :attr:`tp_setattr` handler is called when the :meth:`__setattr__` or
2143++The :c:member:`~PyTypeObject.tp_setattr` handler is called when the :meth:`__setattr__` or
2144+ :meth:`__delattr__` method of a class instance would be called. When an
2145+ attribute should be deleted, the third parameter will be *NULL*. Here is an
2146+ example that simply raises an exception; if this were really all you wanted, the
2147+-:attr:`tp_setattr` handler should be set to *NULL*. ::
2148++:c:member:`~PyTypeObject.tp_setattr` handler should be set to *NULL*. ::
2149+
2150+ static int
2151+ newdatatype_setattr(newdatatypeobject *obj, char *name, PyObject *v)
2152+@@ -1217,7 +1216,7 @@
2153+
2154+ richcmpfunc tp_richcompare;
2155+
2156+-The :attr:`tp_richcompare` handler is called when comparisons are needed. It is
2157++The :c:member:`~PyTypeObject.tp_richcompare` handler is called when comparisons are needed. It is
2158+ analogous to the :ref:`rich comparison methods <richcmpfuncs>`, like
2159+ :meth:`__lt__`, and also called by :c:func:`PyObject_RichCompare` and
2160+ :c:func:`PyObject_RichCompareBool`.
2161+@@ -1308,7 +1307,7 @@
2162+
2163+ This function is called when an instance of your data type is "called", for
2164+ example, if ``obj1`` is an instance of your data type and the Python script
2165+-contains ``obj1('hello')``, the :attr:`tp_call` handler is invoked.
2166++contains ``obj1('hello')``, the :c:member:`~PyTypeObject.tp_call` handler is invoked.
2167+
2168+ This function takes three arguments:
2169+
2170+@@ -1395,7 +1394,7 @@
2171+ For an object to be weakly referencable, the extension must include a
2172+ :c:type:`PyObject\*` field in the instance structure for the use of the weak
2173+ reference mechanism; it must be initialized to *NULL* by the object's
2174+-constructor. It must also set the :attr:`tp_weaklistoffset` field of the
2175++constructor. It must also set the :c:member:`~PyTypeObject.tp_weaklistoffset` field of the
2176+ corresponding type object to the offset of the field. For example, the instance
2177+ type is defined with the following structure::
2178+
2179+@@ -1481,7 +1480,7 @@
2180+ .. [#] This is true when we know that the object is a basic type, like a string or a
2181+ float.
2182+
2183+-.. [#] We relied on this in the :attr:`tp_dealloc` handler in this example, because our
2184++.. [#] We relied on this in the :c:member:`~PyTypeObject.tp_dealloc` handler in this example, because our
2185+ type doesn't support garbage collection. Even if a type supports garbage
2186+ collection, there are calls that can be made to "untrack" the object from
2187+ garbage collection, however, these calls are advanced and not covered here.
2188 diff -r d047928ae3f6 Doc/faq/programming.rst
2189 --- a/Doc/faq/programming.rst
2190 +++ b/Doc/faq/programming.rst
2191-@@ -1103,6 +1103,92 @@
2192+@@ -214,9 +214,9 @@
2193+ Assume you use a for loop to define a few different lambdas (or even plain
2194+ functions), e.g.::
2195+
2196+- squares = []
2197+- for x in range(5):
2198+- squares.append(lambda: x**2)
2199++ >>> squares = []
2200++ >>> for x in range(5):
2201++ ... squares.append(lambda: x**2)
2202+
2203+ This gives you a list that contains 5 lambdas that calculate ``x**2``. You
2204+ might expect that, when called, they would return, respectively, ``0``, ``1``,
2205+@@ -241,9 +241,9 @@
2206+ In order to avoid this, you need to save the values in variables local to the
2207+ lambdas, so that they don't rely on the value of the global ``x``::
2208+
2209+- squares = []
2210+- for x in range(5):
2211+- squares.append(lambda n=x: n**2)
2212++ >>> squares = []
2213++ >>> for x in range(5):
2214++ ... squares.append(lambda n=x: n**2)
2215+
2216+ Here, ``n=x`` creates a new variable ``n`` local to the lambda and computed
2217+ when the lambda is defined so that it has the same value that ``x`` had at
2218+@@ -592,11 +592,11 @@
2219+ Since the comma is not an operator, but a separator between expressions the
2220+ above is evaluated as if you had entered::
2221+
2222+- >>> ("a" in "b"), "a"
2223++ ("a" in "b"), "a"
2224+
2225+ not::
2226+
2227+- >>> "a" in ("b", "a")
2228++ "a" in ("b", "a")
2229+
2230+ The same is true of the various assignment operators (``=``, ``+=`` etc). They
2231+ are not truly operators but syntactic delimiters in assignment statements.
2232+@@ -744,6 +744,7 @@
2233+ unicode data, try using a :class:`io.StringIO` object or the :mod:`array`
2234+ module::
2235+
2236++ >>> import io
2237+ >>> s = "Hello, world"
2238+ >>> sio = io.StringIO(s)
2239+ >>> sio.getvalue()
2240+@@ -761,7 +762,7 @@
2241+ array('u', 'Hello, world')
2242+ >>> a[0] = 'y'
2243+ >>> print(a)
2244+- array('u', 'yello world')
2245++ array('u', 'yello, world')
2246+ >>> a.tounicode()
2247+ 'yello, world'
2248+
2249+@@ -1060,7 +1061,7 @@
2250+
2251+ You probably tried to make a multidimensional array like this::
2252+
2253+- A = [[None] * 2] * 3
2254++ >>> A = [[None] * 2] * 3
2255+
2256+ This looks correct if you print it::
2257+
2258+@@ -1092,7 +1093,7 @@
2259+ A = [[None] * w for i in range(h)]
2260+
2261+ Or, you can use an extension that provides a matrix datatype; `Numeric Python
2262+-<http://numpy.scipy.org/>`_ is the best known.
2263++<http://www.numpy.org/>`_ is the best known.
2264+
2265+
2266+ How do I apply a method to a sequence of objects?
2267+@@ -1103,6 +1104,92 @@
2268 result = [obj.method() for obj in mylist]
2269
2270
2271@@ -120,10 +1816,586 @@
2272 Dictionaries
2273 ============
2274
2275+@@ -1529,13 +1616,13 @@
2276+ (permissions, free space, etc...) to write the compiled module back to the
2277+ directory.
2278+
2279+-Running Python on a top level script is not considered an import and no ``.pyc``
2280+-will be created. For example, if you have a top-level module ``abc.py`` that
2281+-imports another module ``xyz.py``, when you run abc, ``xyz.pyc`` will be created
2282+-since xyz is imported, but no ``abc.pyc`` file will be created since ``abc.py``
2283+-isn't being imported.
2284++Running Python on a top level script is not considered an import and no
2285++``.pyc`` will be created. For example, if you have a top-level module
2286++``foo.py`` that imports another module ``xyz.py``, when you run ``foo``,
2287++``xyz.pyc`` will be created since ``xyz`` is imported, but no ``foo.pyc`` file
2288++will be created since ``foo.py`` isn't being imported.
2289+
2290+-If you need to create abc.pyc -- that is, to create a .pyc file for a module
2291++If you need to create ``foo.pyc`` -- that is, to create a ``.pyc`` file for a module
2292+ that is not imported -- you can, using the :mod:`py_compile` and
2293+ :mod:`compileall` modules.
2294+
2295+@@ -1543,9 +1630,9 @@
2296+ the ``compile()`` function in that module interactively::
2297+
2298+ >>> import py_compile
2299+- >>> py_compile.compile('abc.py')
2300++ >>> py_compile.compile('foo.py') # doctest: +SKIP
2301+
2302+-This will write the ``.pyc`` to the same location as ``abc.py`` (or you can
2303++This will write the ``.pyc`` to the same location as ``foo.py`` (or you can
2304+ override that with the optional parameter ``cfile``).
2305+
2306+ You can also automatically compile all files in a directory or directories using
2307+diff -r d047928ae3f6 Doc/howto/argparse.rst
2308+--- a/Doc/howto/argparse.rst
2309++++ b/Doc/howto/argparse.rst
2310+@@ -468,7 +468,7 @@
2311+ print(answer)
2312+
2313+ We have introduced another action, "count",
2314+-to count the number of occurences of a specific optional arguments:
2315++to count the number of occurrences of a specific optional arguments:
2316+
2317+ .. code-block:: sh
2318+
2319+diff -r d047928ae3f6 Doc/howto/logging-cookbook.rst
2320+--- a/Doc/howto/logging-cookbook.rst
2321++++ b/Doc/howto/logging-cookbook.rst
2322+@@ -524,69 +524,31 @@
2323+ the keys of the dict-like object. If you need a different method, e.g. if you
2324+ want to prepend or append the contextual information to the message string,
2325+ you just need to subclass :class:`LoggerAdapter` and override :meth:`process`
2326+-to do what you need. Here's an example script which uses this class, which
2327+-also illustrates what dict-like behaviour is needed from an arbitrary
2328+-'dict-like' object for use in the constructor::
2329++to do what you need. Here is a simple example::
2330+
2331+- import logging
2332++ class CustomAdapter(logging.LoggerAdapter):
2333++ """
2334++ This example adapter expects the passed in dict-like object to have a
2335++ 'connid' key, whose value in brackets is prepended to the log message.
2336++ """
2337++ def process(self, msg, kwargs):
2338++ return '[%s] %s' % (self.extra['connid'], msg), kwargs
2339+
2340+- class ConnInfo:
2341+- """
2342+- An example class which shows how an arbitrary class can be used as
2343+- the 'extra' context information repository passed to a LoggerAdapter.
2344+- """
2345++which you can use like this::
2346+
2347+- def __getitem__(self, name):
2348+- """
2349+- To allow this instance to look like a dict.
2350+- """
2351+- from random import choice
2352+- if name == 'ip':
2353+- result = choice(['127.0.0.1', '192.168.0.1'])
2354+- elif name == 'user':
2355+- result = choice(['jim', 'fred', 'sheila'])
2356+- else:
2357+- result = self.__dict__.get(name, '?')
2358+- return result
2359++ logger = logging.getLogger(__name__)
2360++ adapter = CustomAdapter(logger, {'connid': some_conn_id})
2361+
2362+- def __iter__(self):
2363+- """
2364+- To allow iteration over keys, which will be merged into
2365+- the LogRecord dict before formatting and output.
2366+- """
2367+- keys = ['ip', 'user']
2368+- keys.extend(self.__dict__.keys())
2369+- return keys.__iter__()
2370++Then any events that you log to the adapter will have the value of
2371++``some_conn_id`` prepended to the log messages.
2372+
2373+- if __name__ == '__main__':
2374+- from random import choice
2375+- levels = (logging.DEBUG, logging.INFO, logging.WARNING, logging.ERROR, logging.CRITICAL)
2376+- a1 = logging.LoggerAdapter(logging.getLogger('a.b.c'),
2377+- { 'ip' : '123.231.231.123', 'user' : 'sheila' })
2378+- logging.basicConfig(level=logging.DEBUG,
2379+- format='%(asctime)-15s %(name)-5s %(levelname)-8s IP: %(ip)-15s User: %(user)-8s %(message)s')
2380+- a1.debug('A debug message')
2381+- a1.info('An info message with %s', 'some parameters')
2382+- a2 = logging.LoggerAdapter(logging.getLogger('d.e.f'), ConnInfo())
2383+- for x in range(10):
2384+- lvl = choice(levels)
2385+- lvlname = logging.getLevelName(lvl)
2386+- a2.log(lvl, 'A message at %s level with %d %s', lvlname, 2, 'parameters')
2387++Using objects other than dicts to pass contextual information
2388++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2389+
2390+-When this script is run, the output should look something like this::
2391+-
2392+- 2008-01-18 14:49:54,023 a.b.c DEBUG IP: 123.231.231.123 User: sheila A debug message
2393+- 2008-01-18 14:49:54,023 a.b.c INFO IP: 123.231.231.123 User: sheila An info message with some parameters
2394+- 2008-01-18 14:49:54,023 d.e.f CRITICAL IP: 192.168.0.1 User: jim A message at CRITICAL level with 2 parameters
2395+- 2008-01-18 14:49:54,033 d.e.f INFO IP: 192.168.0.1 User: jim A message at INFO level with 2 parameters
2396+- 2008-01-18 14:49:54,033 d.e.f WARNING IP: 192.168.0.1 User: sheila A message at WARNING level with 2 parameters
2397+- 2008-01-18 14:49:54,033 d.e.f ERROR IP: 127.0.0.1 User: fred A message at ERROR level with 2 parameters
2398+- 2008-01-18 14:49:54,033 d.e.f ERROR IP: 127.0.0.1 User: sheila A message at ERROR level with 2 parameters
2399+- 2008-01-18 14:49:54,033 d.e.f WARNING IP: 192.168.0.1 User: sheila A message at WARNING level with 2 parameters
2400+- 2008-01-18 14:49:54,033 d.e.f WARNING IP: 192.168.0.1 User: jim A message at WARNING level with 2 parameters
2401+- 2008-01-18 14:49:54,033 d.e.f INFO IP: 192.168.0.1 User: fred A message at INFO level with 2 parameters
2402+- 2008-01-18 14:49:54,033 d.e.f WARNING IP: 192.168.0.1 User: sheila A message at WARNING level with 2 parameters
2403+- 2008-01-18 14:49:54,033 d.e.f WARNING IP: 127.0.0.1 User: jim A message at WARNING level with 2 parameters
2404++You don't need to pass an actual dict to a :class:`LoggerAdapter` - you could
2405++pass an instance of a class which implements ``__getitem__`` and ``__iter__`` so
2406++that it looks like a dict to logging. This would be useful if you want to
2407++generate values dynamically (whereas the values in a dict would be constant).
2408+
2409+
2410+ .. _filters-contextual:
2411+diff -r d047928ae3f6 Doc/howto/sockets.rst
2412+--- a/Doc/howto/sockets.rst
2413++++ b/Doc/howto/sockets.rst
2414+@@ -19,12 +19,6 @@
2415+ Sockets
2416+ =======
2417+
2418+-Sockets are used nearly everywhere, but are one of the most severely
2419+-misunderstood technologies around. This is a 10,000 foot overview of sockets.
2420+-It's not really a tutorial - you'll still have work to do in getting things
2421+-working. It doesn't cover the fine points (and there are a lot of them), but I
2422+-hope it will give you enough background to begin using them decently.
2423+-
2424+ I'm only going to talk about INET (i.e. IPv4) sockets, but they account for at least 99% of
2425+ the sockets in use. And I'll only talk about STREAM (i.e. TCP) sockets - unless you really
2426+ know what you're doing (in which case this HOWTO isn't for you!), you'll get
2427+diff -r d047928ae3f6 Doc/howto/unicode.rst
2428+--- a/Doc/howto/unicode.rst
2429++++ b/Doc/howto/unicode.rst
2430+@@ -28,15 +28,15 @@
2431+ as 'naïve' and 'café', and some publications have house styles which require
2432+ spellings such as 'coöperate'.)
2433+
2434+-For a while people just wrote programs that didn't display accents. I remember
2435+-looking at Apple ][ BASIC programs, published in French-language publications in
2436+-the mid-1980s, that had lines like these::
2437++For a while people just wrote programs that didn't display accents.
2438++In the mid-1980s an Apple II BASIC program written by a French speaker
2439++might have lines like these::
2440+
2441+ PRINT "FICHIER EST COMPLETE."
2442+ PRINT "CARACTERE NON ACCEPTE."
2443+
2444+-Those messages should contain accents, and they just look wrong to someone who
2445+-can read French.
2446++Those messages should contain accents (completé, caractère, accepté),
2447++and they just look wrong to someone who can read French.
2448+
2449+ In the 1980s, almost all personal computers were 8-bit, meaning that bytes could
2450+ hold values ranging from 0 to 255. ASCII codes only went up to 127, so some
2451+@@ -69,9 +69,12 @@
2452+ originally separate efforts, but the specifications were merged with the 1.1
2453+ revision of Unicode.
2454+
2455+-(This discussion of Unicode's history is highly simplified. I don't think the
2456+-average Python programmer needs to worry about the historical details; consult
2457+-the Unicode consortium site listed in the References for more information.)
2458++(This discussion of Unicode's history is highly simplified. The
2459++precise historical details aren't necessary for understanding how to
2460++use Unicode effectively, but if you're curious, consult the Unicode
2461++consortium site listed in the References or
2462++the `Wikipedia entry for Unicode <http://en.wikipedia.org/wiki/Unicode#History>`_
2463++for more information.)
2464+
2465+
2466+ Definitions
2467+@@ -216,10 +219,8 @@
2468+
2469+ Another `good introductory article <http://www.joelonsoftware.com/articles/Unicode.html>`_
2470+ was written by Joel Spolsky.
2471+-If this introduction didn't make things clear to you, you should try reading this
2472+-alternate article before continuing.
2473+-
2474+-.. Jason Orendorff XXX http://www.jorendorff.com/articles/unicode/ is broken
2475++If this introduction didn't make things clear to you, you should try
2476++reading this alternate article before continuing.
2477+
2478+ Wikipedia entries are often helpful; see the entries for "`character encoding
2479+ <http://en.wikipedia.org/wiki/Character_encoding>`_" and `UTF-8
2480+@@ -239,8 +240,31 @@
2481+ characters, meaning any string created using ``"unicode rocks!"``, ``'unicode
2482+ rocks!'``, or the triple-quoted string syntax is stored as Unicode.
2483+
2484+-To insert a non-ASCII Unicode character, e.g., any letters with
2485+-accents, one can use escape sequences in their string literals as such::
2486++The default encoding for Python source code is UTF-8, so you can simply
2487++include a Unicode character in a string literal::
2488++
2489++ try:
2490++ with open('/tmp/input.txt', 'r') as f:
2491++ ...
2492++ except IOError:
2493++ # 'File not found' error message.
2494++ print("Fichier non trouvé")
2495++
2496++You can use a different encoding from UTF-8 by putting a specially-formatted
2497++comment as the first or second line of the source code::
2498++
2499++ # -*- coding: <encoding name> -*-
2500++
2501++Side note: Python 3 also supports using Unicode characters in identifiers::
2502++
2503++ répertoire = "/tmp/records.log"
2504++ with open(répertoire, "w") as f:
2505++ f.write("test\n")
2506++
2507++If you can't enter a particular character in your editor or want to
2508++keep the source code ASCII-only for some reason, you can also use
2509++escape sequences in string literals. (Depending on your system,
2510++you may see the actual capital-delta glyph instead of a \u escape.) ::
2511+
2512+ >>> "\N{GREEK CAPITAL LETTER DELTA}" # Using the character name
2513+ '\u0394'
2514+@@ -251,7 +275,7 @@
2515+
2516+ In addition, one can create a string using the :func:`~bytes.decode` method of
2517+ :class:`bytes`. This method takes an *encoding* argument, such as ``UTF-8``,
2518+-and optionally, an *errors* argument.
2519++and optionally an *errors* argument.
2520+
2521+ The *errors* argument specifies the response when the input string can't be
2522+ converted according to the encoding's rules. Legal values for this argument are
2523+@@ -295,11 +319,15 @@
2524+
2525+ The opposite method of :meth:`bytes.decode` is :meth:`str.encode`,
2526+ which returns a :class:`bytes` representation of the Unicode string, encoded in the
2527+-requested *encoding*. The *errors* parameter is the same as the parameter of
2528+-the :meth:`~bytes.decode` method, with one additional possibility; as well as
2529+-``'strict'``, ``'ignore'``, and ``'replace'`` (which in this case inserts a
2530+-question mark instead of the unencodable character), you can also pass
2531+-``'xmlcharrefreplace'`` which uses XML's character references.
2532++requested *encoding*.
2533++
2534++The *errors* parameter is the same as the parameter of the
2535++:meth:`~bytes.decode` method but supports a few more possible handlers. As well as
2536++``'strict'``, ``'ignore'``, and ``'replace'`` (which in this case
2537++inserts a question mark instead of the unencodable character), there is
2538++also ``'xmlcharrefreplace'`` (inserts an XML character reference) and
2539++``backslashreplace`` (inserts a ``\uNNNN`` escape sequence).
2540++
2541+ The following example shows the different results::
2542+
2543+ >>> u = chr(40960) + 'abcd' + chr(1972)
2544+@@ -316,16 +344,15 @@
2545+ b'?abcd?'
2546+ >>> u.encode('ascii', 'xmlcharrefreplace')
2547+ b'&#40960;abcd&#1972;'
2548++ >>> u.encode('ascii', 'backslashreplace')
2549++ b'\\ua000abcd\\u07b4'
2550+
2551+-.. XXX mention the surrogate* error handlers
2552+-
2553+-The low-level routines for registering and accessing the available encodings are
2554+-found in the :mod:`codecs` module. However, the encoding and decoding functions
2555+-returned by this module are usually more low-level than is comfortable, so I'm
2556+-not going to describe the :mod:`codecs` module here. If you need to implement a
2557+-completely new encoding, you'll need to learn about the :mod:`codecs` module
2558+-interfaces, but implementing encodings is a specialized task that also won't be
2559+-covered here. Consult the Python documentation to learn more about this module.
2560++The low-level routines for registering and accessing the available
2561++encodings are found in the :mod:`codecs` module. Implementing new
2562++encodings also requires understanding the :mod:`codecs` module.
2563++However, the encoding and decoding functions returned by this module
2564++are usually more low-level than is comfortable, and writing new encodings
2565++is a specialized task, so the module won't be covered in this HOWTO.
2566+
2567+
2568+ Unicode Literals in Python Source Code
2569+@@ -415,12 +442,50 @@
2570+ from the above output, ``'Ll'`` means 'Letter, lowercase', ``'No'`` means
2571+ "Number, other", ``'Mn'`` is "Mark, nonspacing", and ``'So'`` is "Symbol,
2572+ other". See
2573+-<http://www.unicode.org/reports/tr44/#General_Category_Values> for a
2574++`the General Category Values section of the Unicode Character Database documentation <http://www.unicode.org/reports/tr44/#General_Category_Values>`_ for a
2575+ list of category codes.
2576+
2577++
2578++Unicode Regular Expressions
2579++---------------------------
2580++
2581++The regular expressions supported by the :mod:`re` module can be provided
2582++either as bytes or strings. Some of the special character sequences such as
2583++``\d`` and ``\w`` have different meanings depending on whether
2584++the pattern is supplied as bytes or a string. For example,
2585++``\d`` will match the characters ``[0-9]`` in bytes but
2586++in strings will match any character that's in the ``'Nd'`` category.
2587++
2588++The string in this example has the number 57 written in both Thai and
2589++Arabic numerals::
2590++
2591++ import re
2592++ p = re.compile('\d+')
2593++
2594++ s = "Over \u0e55\u0e57 57 flavours"
2595++ m = p.search(s)
2596++ print(repr(m.group()))
2597++
2598++When executed, ``\d+`` will match the Thai numerals and print them
2599++out. If you supply the :const:`re.ASCII` flag to
2600++:func:`~re.compile`, ``\d+`` will match the substring "57" instead.
2601++
2602++Similarly, ``\w`` matches a wide variety of Unicode characters but
2603++only ``[a-zA-Z0-9_]`` in bytes or if :const:`re.ASCII` is supplied,
2604++and ``\s`` will match either Unicode whitespace characters or
2605++``[ \t\n\r\f\v]``.
2606++
2607++
2608+ References
2609+ ----------
2610+
2611++.. comment should these be mentioned earlier, e.g. at the start of the "introduction to Unicode" first section?
2612++
2613++Some good alternative discussions of Python's Unicode support are:
2614++
2615++* `Processing Text Files in Python 3 <http://python-notes.curiousefficiency.org/en/latest/python3/text_file_processing.html>`_, by Nick Coghlan.
2616++* `Pragmatic Unicode <http://nedbatchelder.com/text/unipain.html>`_, a PyCon 2012 presentation by Ned Batchelder.
2617++
2618+ The :class:`str` type is described in the Python library reference at
2619+ :ref:`textseq`.
2620+
2621+@@ -428,12 +493,10 @@
2622+
2623+ The documentation for the :mod:`codecs` module.
2624+
2625+-Marc-André Lemburg gave a presentation at EuroPython 2002 titled "Python and
2626+-Unicode". A PDF version of his slides is available at
2627+-<http://downloads.egenix.com/python/Unicode-EPC2002-Talk.pdf>, and is an
2628+-excellent overview of the design of Python's Unicode features (based on Python
2629+-2, where the Unicode string type is called ``unicode`` and literals start with
2630+-``u``).
2631++Marc-André Lemburg gave `a presentation titled "Python and Unicode" (PDF slides) <http://downloads.egenix.com/python/Unicode-EPC2002-Talk.pdf>`_ at
2632++EuroPython 2002. The slides are an excellent overview of the design
2633++of Python 2's Unicode features (where the Unicode string type is
2634++called ``unicode`` and literals start with ``u``).
2635+
2636+
2637+ Reading and Writing Unicode Data
2638+@@ -512,7 +575,7 @@
2639+ Windows, Python uses the name "mbcs" to refer to whatever the currently
2640+ configured encoding is. On Unix systems, there will only be a filesystem
2641+ encoding if you've set the ``LANG`` or ``LC_CTYPE`` environment variables; if
2642+-you haven't, the default encoding is ASCII.
2643++you haven't, the default encoding is UTF-8.
2644+
2645+ The :func:`sys.getfilesystemencoding` function returns the encoding to use on
2646+ your current system, in case you want to do the encoding manually, but there's
2647+@@ -527,13 +590,13 @@
2648+ Functions in the :mod:`os` module such as :func:`os.stat` will also accept Unicode
2649+ filenames.
2650+
2651+-Function :func:`os.listdir`, which returns filenames, raises an issue: should it return
2652++The :func:`os.listdir` function returns filenames and raises an issue: should it return
2653+ the Unicode version of filenames, or should it return bytes containing
2654+ the encoded versions? :func:`os.listdir` will do both, depending on whether you
2655+ provided the directory path as bytes or a Unicode string. If you pass a
2656+ Unicode string as the path, filenames will be decoded using the filesystem's
2657+ encoding and a list of Unicode strings will be returned, while passing a byte
2658+-path will return the bytes versions of the filenames. For example,
2659++path will return the filenames as bytes. For example,
2660+ assuming the default filesystem encoding is UTF-8, running the following
2661+ program::
2662+
2663+@@ -548,13 +611,13 @@
2664+ will produce the following output::
2665+
2666+ amk:~$ python t.py
2667+- [b'.svn', b'filename\xe4\x94\x80abc', ...]
2668+- ['.svn', 'filename\u4500abc', ...]
2669++ [b'filename\xe4\x94\x80abc', ...]
2670++ ['filename\u4500abc', ...]
2671+
2672+ The first list contains UTF-8-encoded filenames, and the second list contains
2673+ the Unicode versions.
2674+
2675+-Note that in most occasions, the Unicode APIs should be used. The bytes APIs
2676++Note that on most occasions, the Unicode APIs should be used. The bytes APIs
2677+ should only be used on systems where undecodable file names can be present,
2678+ i.e. Unix systems.
2679+
2680+@@ -585,65 +648,69 @@
2681+ clever way to hide malicious text in the encoded bytestream.
2682+
2683+
2684++Converting Between File Encodings
2685++'''''''''''''''''''''''''''''''''
2686++
2687++The :class:`~codecs.StreamRecoder` class can transparently convert between
2688++encodings, taking a stream that returns data in encoding #1
2689++and behaving like a stream returning data in encoding #2.
2690++
2691++For example, if you have an input file *f* that's in Latin-1, you
2692++can wrap it with a :class:`StreamRecoder` to return bytes encoded in UTF-8::
2693++
2694++ new_f = codecs.StreamRecoder(f,
2695++ # en/decoder: used by read() to encode its results and
2696++ # by write() to decode its input.
2697++ codecs.getencoder('utf-8'), codecs.getdecoder('utf-8'),
2698++
2699++ # reader/writer: used to read and write to the stream.
2700++ codecs.getreader('latin-1'), codecs.getwriter('latin-1') )
2701++
2702++
2703++Files in an Unknown Encoding
2704++''''''''''''''''''''''''''''
2705++
2706++What can you do if you need to make a change to a file, but don't know
2707++the file's encoding? If you know the encoding is ASCII-compatible and
2708++only want to examine or modify the ASCII parts, you can open the file
2709++with the ``surrogateescape`` error handler::
2710++
2711++ with open(fname, 'r', encoding="ascii", errors="surrogateescape") as f:
2712++ data = f.read()
2713++
2714++ # make changes to the string 'data'
2715++
2716++ with open(fname + '.new', 'w',
2717++ encoding="ascii", errors="surrogateescape") as f:
2718++ f.write(data)
2719++
2720++The ``surrogateescape`` error handler will decode any non-ASCII bytes
2721++as code points in the Unicode Private Use Area ranging from U+DC80 to
2722++U+DCFF. These private code points will then be turned back into the
2723++same bytes when the ``surrogateescape`` error handler is used when
2724++encoding the data and writing it back out.
2725++
2726++
2727+ References
2728+ ----------
2729+
2730+-The PDF slides for Marc-André Lemburg's presentation "Writing Unicode-aware
2731+-Applications in Python" are available at
2732+-<http://downloads.egenix.com/python/LSM2005-Developing-Unicode-aware-applications-in-Python.pdf>
2733+-and discuss questions of character encodings as well as how to internationalize
2734++One section of `Mastering Python 3 Input/Output <http://pyvideo.org/video/289/pycon-2010--mastering-python-3-i-o>`_, a PyCon 2010 talk by David Beazley, discusses text processing and binary data handling.
2735++
2736++The `PDF slides for Marc-André Lemburg's presentation "Writing Unicode-aware Applications in Python" <http://downloads.egenix.com/python/LSM2005-Developing-Unicode-aware-applications-in-Python.pdf>`_
2737++discuss questions of character encodings as well as how to internationalize
2738+ and localize an application. These slides cover Python 2.x only.
2739+
2740++`The Guts of Unicode in Python <http://pyvideo.org/video/1768/the-guts-of-unicode-in-python>`_ is a PyCon 2013 talk by Benjamin Peterson that discusses the internal Unicode representation in Python 3.3.
2741++
2742+
2743+ Acknowledgements
2744+ ================
2745+
2746+-Thanks to the following people who have noted errors or offered suggestions on
2747+-this article: Nicholas Bastin, Marius Gedminas, Kent Johnson, Ken Krugler,
2748+-Marc-André Lemburg, Martin von Löwis, Chad Whitacre.
2749++The initial draft of this document was written by Andrew Kuchling.
2750++It has since been revised further by Alexander Belopolsky, Georg Brandl,
2751++Andrew Kuchling, and Ezio Melotti.
2752+
2753+-.. comment
2754+- Revision History
2755+-
2756+- Version 1.0: posted August 5 2005.
2757+-
2758+- Version 1.01: posted August 7 2005. Corrects factual and markup errors; adds
2759+- several links.
2760+-
2761+- Version 1.02: posted August 16 2005. Corrects factual errors.
2762+-
2763+- Version 1.1: Feb-Nov 2008. Updates the document with respect to Python 3 changes.
2764+-
2765+- Version 1.11: posted June 20 2010. Notes that Python 3.x is not covered,
2766+- and that the HOWTO only covers 2.x.
2767+-
2768+-.. comment Describe Python 3.x support (new section? new document?)
2769+-.. comment Describe use of codecs.StreamRecoder and StreamReaderWriter
2770+-
2771+-.. comment
2772+- Original outline:
2773+-
2774+- - [ ] Unicode introduction
2775+- - [ ] ASCII
2776+- - [ ] Terms
2777+- - [ ] Character
2778+- - [ ] Code point
2779+- - [ ] Encodings
2780+- - [ ] Common encodings: ASCII, Latin-1, UTF-8
2781+- - [ ] Unicode Python type
2782+- - [ ] Writing unicode literals
2783+- - [ ] Obscurity: -U switch
2784+- - [ ] Built-ins
2785+- - [ ] unichr()
2786+- - [ ] ord()
2787+- - [ ] unicode() constructor
2788+- - [ ] Unicode type
2789+- - [ ] encode(), decode() methods
2790+- - [ ] Unicodedata module for character properties
2791+- - [ ] I/O
2792+- - [ ] Reading/writing Unicode data into files
2793+- - [ ] Byte-order marks
2794+- - [ ] Unicode filenames
2795+- - [ ] Writing Unicode programs
2796+- - [ ] Do everything in Unicode
2797+- - [ ] Declaring source code encodings (PEP 263)
2798++Thanks to the following people who have noted errors or offered
2799++suggestions on this article: Éric Araujo, Nicholas Bastin, Nick
2800++Coghlan, Marius Gedminas, Kent Johnson, Ken Krugler, Marc-André
2801++Lemburg, Martin von Löwis, Terry J. Reedy, Chad Whitacre.
2802+diff -r d047928ae3f6 Doc/library/array.rst
2803+--- a/Doc/library/array.rst
2804++++ b/Doc/library/array.rst
2805+@@ -271,9 +271,7 @@
2806+ Packing and unpacking of External Data Representation (XDR) data as used in some
2807+ remote procedure call systems.
2808+
2809+- `The Numerical Python Manual <http://numpy.sourceforge.net/numdoc/HTML/numdoc.htm>`_
2810++ `The Numerical Python Documentation <http://docs.scipy.org/doc/>`_
2811+ The Numeric Python extension (NumPy) defines another array type; see
2812+- http://numpy.sourceforge.net/ for further information about Numerical Python.
2813+- (A PDF version of the NumPy manual is available at
2814+- http://numpy.sourceforge.net/numdoc/numdoc.pdf).
2815++ http://www.numpy.org/ for further information about Numerical Python.
2816+
2817+diff -r d047928ae3f6 Doc/library/base64.rst
2818+--- a/Doc/library/base64.rst
2819++++ b/Doc/library/base64.rst
2820+@@ -103,7 +103,7 @@
2821+ digit 0 is always mapped to the letter O). For security purposes the default is
2822+ ``None``, so that 0 and 1 are not allowed in the input.
2823+
2824+- The decoded byte string is returned. A :exc:`TypeError` is raised if *s* were
2825++ The decoded byte string is returned. A :exc:`binascii.Error` is raised if *s* were
2826+ incorrectly padded or if there are non-alphabet characters present in the
2827+ string.
2828+
2829 diff -r d047928ae3f6 Doc/library/codecs.rst
2830 --- a/Doc/library/codecs.rst
2831 +++ b/Doc/library/codecs.rst
2832-@@ -1142,7 +1142,19 @@
2833+@@ -78,7 +78,11 @@
2834+ reference (for encoding only)
2835+ * ``'backslashreplace'``: replace with backslashed escape sequences (for
2836+ encoding only)
2837+- * ``'surrogateescape'``: replace with surrogate U+DCxx, see :pep:`383`
2838++ * ``'surrogateescape'``: on decoding, replace with code points in the Unicode
2839++ Private Use Area ranging from U+DC80 to U+DCFF. These private code
2840++ points will then be turned back into the same bytes when the
2841++ ``surrogateescape`` error handler is used when encoding the data.
2842++ (See :pep:`383` for more.)
2843+
2844+ as well as any other error handling name defined via :func:`register_error`.
2845+
2846+@@ -690,7 +694,7 @@
2847+ Read one line from the input stream and return the decoded data.
2848+
2849+ *size*, if given, is passed as size argument to the stream's
2850+- :meth:`readline` method.
2851++ :meth:`read` method.
2852+
2853+ If *keepends* is false line-endings will be stripped from the lines
2854+ returned.
2855+@@ -1142,7 +1146,19 @@
2856 | utf_8_sig | | all languages |
2857 +-----------------+--------------------------------+--------------------------------+
2858
2859@@ -144,7 +2416,7 @@
2860
2861 .. tabularcolumns:: |l|p{0.3\linewidth}|p{0.3\linewidth}|
2862
2863-@@ -1186,37 +1198,45 @@
2864+@@ -1186,37 +1202,45 @@
2865 | | | .. deprecated:: 3.3 |
2866 +--------------------+---------+---------------------------+
2867
2868@@ -218,7 +2490,7 @@
2869
2870 .. tabularcolumns:: |l|L|
2871
2872-@@ -1228,7 +1248,7 @@
2873+@@ -1228,7 +1252,7 @@
2874 +--------------------+---------------------------+
2875
2876 .. versionadded:: 3.2
2877@@ -227,6 +2499,18 @@
2878
2879
2880 :mod:`encodings.idna` --- Internationalized Domain Names in Applications
2881+diff -r d047928ae3f6 Doc/library/configparser.rst
2882+--- a/Doc/library/configparser.rst
2883++++ b/Doc/library/configparser.rst
2884+@@ -539,7 +539,7 @@
2885+ * *delimiters*, default value: ``('=', ':')``
2886+
2887+ Delimiters are substrings that delimit keys from values within a section. The
2888+- first occurence of a delimiting substring on a line is considered a delimiter.
2889++ first occurrence of a delimiting substring on a line is considered a delimiter.
2890+ This means values (but not keys) can contain the delimiters.
2891+
2892+ See also the *space_around_delimiters* argument to
2893 diff -r d047928ae3f6 Doc/library/ctypes.rst
2894 --- a/Doc/library/ctypes.rst
2895 +++ b/Doc/library/ctypes.rst
2896@@ -239,6 +2523,305 @@
2897 module instead of using :func:`find_library` to locate the library at runtime.
2898
2899
2900+diff -r d047928ae3f6 Doc/library/difflib.rst
2901+--- a/Doc/library/difflib.rst
2902++++ b/Doc/library/difflib.rst
2903+@@ -752,7 +752,7 @@
2904+ # we're passing these as arguments to the diff function
2905+ fromdate = time.ctime(os.stat(fromfile).st_mtime)
2906+ todate = time.ctime(os.stat(tofile).st_mtime)
2907+- with open(fromlines) as fromf, open(tofile) as tof:
2908++ with open(fromfile) as fromf, open(tofile) as tof:
2909+ fromlines, tolines = list(fromf), list(tof)
2910+
2911+ if options.u:
2912+diff -r d047928ae3f6 Doc/library/email.iterators.rst
2913+--- a/Doc/library/email.iterators.rst
2914++++ b/Doc/library/email.iterators.rst
2915+@@ -33,14 +33,22 @@
2916+ Thus, by default :func:`typed_subpart_iterator` returns each subpart that has a
2917+ MIME type of :mimetype:`text/\*`.
2918+
2919++
2920+ The following function has been added as a useful debugging tool. It should
2921+ *not* be considered part of the supported public interface for the package.
2922+
2923+-
2924+ .. function:: _structure(msg, fp=None, level=0, include_default=False)
2925+
2926+ Prints an indented representation of the content types of the message object
2927+- structure. For example::
2928++ structure. For example:
2929++
2930++ .. testsetup::
2931++
2932++ >>> import email
2933++ >>> from email.iterators import _structure
2934++ >>> somefile = open('Lib/test/test_email/data/msg_02.txt')
2935++
2936++ .. doctest::
2937+
2938+ >>> msg = email.message_from_file(somefile)
2939+ >>> _structure(msg)
2940+@@ -60,6 +68,10 @@
2941+ text/plain
2942+ text/plain
2943+
2944++ .. testsetup::
2945++
2946++ >>> somefile.close()
2947++
2948+ Optional *fp* is a file-like object to print the output to. It must be
2949+ suitable for Python's :func:`print` function. *level* is used internally.
2950+ *include_default*, if true, prints the default type as well.
2951+diff -r d047928ae3f6 Doc/library/email.message.rst
2952+--- a/Doc/library/email.message.rst
2953++++ b/Doc/library/email.message.rst
2954+@@ -513,16 +513,25 @@
2955+ iterator in a ``for`` loop; each iteration returns the next subpart.
2956+
2957+ Here's an example that prints the MIME type of every part of a multipart
2958+- message structure::
2959++ message structure:
2960+
2961+- >>> for part in msg.walk():
2962+- ... print(part.get_content_type())
2963+- multipart/report
2964+- text/plain
2965+- message/delivery-status
2966+- text/plain
2967+- text/plain
2968+- message/rfc822
2969++ .. testsetup::
2970++
2971++ >>> from email import message_from_binary_file
2972++ >>> with open('Lib/test/test_email/data/msg_16.txt', 'rb') as f:
2973++ ... msg = message_from_binary_file(f)
2974++
2975++ .. doctest::
2976++
2977++ >>> for part in msg.walk():
2978++ ... print(part.get_content_type())
2979++ multipart/report
2980++ text/plain
2981++ message/delivery-status
2982++ text/plain
2983++ text/plain
2984++ message/rfc822
2985++ text/plain
2986+
2987+ :class:`Message` objects can also optionally contain two instance attributes,
2988+ which can be used when generating the plain text of a MIME message.
2989+diff -r d047928ae3f6 Doc/library/email.policy.rst
2990+--- a/Doc/library/email.policy.rst
2991++++ b/Doc/library/email.policy.rst
2992+@@ -56,19 +56,42 @@
2993+ attributes values changed.
2994+
2995+ As an example, the following code could be used to read an email message from a
2996+-file on disk and pass it to the system ``sendmail`` program on a Unix system::
2997++file on disk and pass it to the system ``sendmail`` program on a Unix system:
2998+
2999+- >>> from email import msg_from_binary_file
3000++.. testsetup::
3001++
3002++ >>> from unittest import mock
3003++ >>> mocker = mock.patch('subprocess.Popen')
3004++ >>> m = mocker.start()
3005++ >>> proc = mock.MagicMock()
3006++ >>> m.return_value = proc
3007++ >>> proc.stdin.close.return_value = None
3008++ >>> mymsg = open('mymsg.txt', 'w')
3009++ >>> mymsg.write('To: abc@xyz.com\n\n')
3010++ 17
3011++ >>> mymsg.flush()
3012++
3013++.. doctest::
3014++
3015++ >>> from email import message_from_binary_file
3016+ >>> from email.generator import BytesGenerator
3017++ >>> from email import policy
3018+ >>> from subprocess import Popen, PIPE
3019+- >>> with open('mymsg.txt', 'b') as f:
3020+- ... msg = msg_from_binary_file(f)
3021+- >>> p = Popen(['sendmail', msg['To'][0].address], stdin=PIPE)
3022++ >>> with open('mymsg.txt', 'rb') as f:
3023++ ... msg = message_from_binary_file(f, policy=policy.default)
3024++ >>> p = Popen(['sendmail', msg['To'].addresses[0]], stdin=PIPE)
3025+ >>> g = BytesGenerator(p.stdin, policy=msg.policy.clone(linesep='\r\n'))
3026+ >>> g.flatten(msg)
3027+ >>> p.stdin.close()
3028+ >>> rc = p.wait()
3029+
3030++.. testsetup::
3031++
3032++ >>> mymsg.close()
3033++ >>> mocker.stop()
3034++ >>> import os
3035++ >>> os.remove('mymsg.txt')
3036++
3037+ Here we are telling :class:`~email.generator.BytesGenerator` to use the RFC
3038+ correct line separator characters when creating the binary string to feed into
3039+ ``sendmail's`` ``stdin``, where the default policy would use ``\n`` line
3040+@@ -82,22 +105,22 @@
3041+
3042+ >>> import os
3043+ >>> with open('converted.txt', 'wb') as f:
3044+- ... f.write(msg.as_string(policy=msg.policy.clone(linesep=os.linesep))
3045++ ... f.write(msg.as_string(policy=msg.policy.clone(linesep=os.linesep)))
3046+
3047+ Policy objects can also be combined using the addition operator, producing a
3048+ policy object whose settings are a combination of the non-default values of the
3049+ summed objects::
3050+
3051+- >>> compat_SMTP = email.policy.clone(linesep='\r\n')
3052+- >>> compat_strict = email.policy.clone(raise_on_defect=True)
3053++ >>> compat_SMTP = policy.compat32.clone(linesep='\r\n')
3054++ >>> compat_strict = policy.compat32.clone(raise_on_defect=True)
3055+ >>> compat_strict_SMTP = compat_SMTP + compat_strict
3056+
3057+ This operation is not commutative; that is, the order in which the objects are
3058+ added matters. To illustrate::
3059+
3060+- >>> policy100 = compat32.clone(max_line_length=100)
3061+- >>> policy80 = compat32.clone(max_line_length=80)
3062+- >>> apolicy = policy100 + Policy80
3063++ >>> policy100 = policy.compat32.clone(max_line_length=100)
3064++ >>> policy80 = policy.compat32.clone(max_line_length=80)
3065++ >>> apolicy = policy100 + policy80
3066+ >>> apolicy.max_line_length
3067+ 80
3068+ >>> apolicy = policy80 + policy100
3069+diff -r d047928ae3f6 Doc/library/functions.rst
3070+--- a/Doc/library/functions.rst
3071++++ b/Doc/library/functions.rst
3072+@@ -583,11 +583,16 @@
3073+
3074+ .. function:: hash(object)
3075+
3076+- Return the hash value of the object (if it has one). Hash values are integers.
3077+- They are used to quickly compare dictionary keys during a dictionary lookup.
3078+- Numeric values that compare equal have the same hash value (even if they are of
3079+- different types, as is the case for 1 and 1.0).
3080++ Return the hash value of the object (if it has one). Hash values are
3081++ integers. They are used to quickly compare dictionary keys during a
3082++ dictionary lookup. Numeric values that compare equal have the same hash
3083++ value (even if they are of different types, as is the case for 1 and 1.0).
3084+
3085++ .. note::
3086++
3087++ For object's with custom :meth:`__hash__` methods, note that :func:`hash`
3088++ truncates the return value based on the bit width of the host machine.
3089++ See :meth:`__hash__` for details.
3090+
3091+ .. function:: help([object])
3092+
3093+@@ -895,16 +900,36 @@
3094+ the list of supported encodings.
3095+
3096+ *errors* is an optional string that specifies how encoding and decoding
3097+- errors are to be handled--this cannot be used in binary mode. Pass
3098+- ``'strict'`` to raise a :exc:`ValueError` exception if there is an encoding
3099+- error (the default of ``None`` has the same effect), or pass ``'ignore'`` to
3100+- ignore errors. (Note that ignoring encoding errors can lead to data loss.)
3101+- ``'replace'`` causes a replacement marker (such as ``'?'``) to be inserted
3102+- where there is malformed data. When writing, ``'xmlcharrefreplace'``
3103+- (replace with the appropriate XML character reference) or
3104+- ``'backslashreplace'`` (replace with backslashed escape sequences) can be
3105+- used. Any other error handling name that has been registered with
3106+- :func:`codecs.register_error` is also valid.
3107++ errors are to be handled--this cannot be used in binary mode.
3108++ A variety of standard error handlers are available, though any
3109++ error handling name that has been registered with
3110++ :func:`codecs.register_error` is also valid. The standard names
3111++ are:
3112++
3113++ * ``'strict'`` to raise a :exc:`ValueError` exception if there is
3114++ an encoding error. The default value of ``None`` has the same
3115++ effect.
3116++
3117++ * ``'ignore'`` ignores errors. Note that ignoring encoding errors
3118++ can lead to data loss.
3119++
3120++ * ``'replace'`` causes a replacement marker (such as ``'?'``) to be inserted
3121++ where there is malformed data.
3122++
3123++ * ``'surrogateescape'`` will represent any incorrect bytes as code
3124++ points in the Unicode Private Use Area ranging from U+DC80 to
3125++ U+DCFF. These private code points will then be turned back into
3126++ the same bytes when the ``surrogateescape`` error handler is used
3127++ when writing data. This is useful for processing files in an
3128++ unknown encoding.
3129++
3130++ * ``'xmlcharrefreplace'`` is only supported when writing to a file.
3131++ Characters not supported by the encoding are replaced with the
3132++ appropriate XML character reference ``&#nnn;``.
3133++
3134++ * ``'backslashreplace'`` (also only supported when writing)
3135++ replaces unsupported characters with Python's backslashed escape
3136++ sequences.
3137+
3138+ .. index::
3139+ single: universal newlines; open() built-in function
3140+@@ -1355,14 +1380,18 @@
3141+
3142+ .. function:: vars([object])
3143+
3144+- Without an argument, act like :func:`locals`.
3145++ Return the :attr:`__dict__` attribute for a module, class, instance,
3146++ or any other object with a :attr:`__dict__` attribute.
3147+
3148+- With a module, class or class instance object as argument (or anything else that
3149+- has a :attr:`__dict__` attribute), return that attribute.
3150++ Objects such as modules and instances have an updateable :attr:`__dict__`
3151++ attribute; however, other objects may have write restrictions on their
3152++ :attr:`__dict__` attributes (for example, classes use a
3153++ dictproxy to prevent direct dictionary updates).
3154+
3155+- .. note::
3156+- The returned dictionary should not be modified:
3157+- the effects on the corresponding symbol table are undefined. [#]_
3158++ Without an argument, :func:`vars` acts like :func:`locals`. Note, the
3159++ locals dictionary is only useful for reads since updates to the locals
3160++ dictionary are ignored.
3161++
3162+
3163+ .. function:: zip(*iterables)
3164+
3165+@@ -1481,7 +1510,3 @@
3166+ .. [#] Note that the parser only accepts the Unix-style end of line convention.
3167+ If you are reading the code from a file, make sure to use newline conversion
3168+ mode to convert Windows or Mac-style newlines.
3169+-
3170+-.. [#] In the current implementation, local variable bindings cannot normally be
3171+- affected this way, but variables retrieved from other scopes (such as modules)
3172+- can be. This may change.
3173+diff -r d047928ae3f6 Doc/library/gc.rst
3174+--- a/Doc/library/gc.rst
3175++++ b/Doc/library/gc.rst
3176+@@ -121,8 +121,8 @@
3177+
3178+ Return a list of objects directly referred to by any of the arguments. The
3179+ referents returned are those objects visited by the arguments' C-level
3180+- :attr:`tp_traverse` methods (if any), and may not be all objects actually
3181+- directly reachable. :attr:`tp_traverse` methods are supported only by objects
3182++ :c:member:`~PyTypeObject.tp_traverse` methods (if any), and may not be all objects actually
3183++ directly reachable. :c:member:`~PyTypeObject.tp_traverse` methods are supported only by objects
3184+ that support garbage collection, and are only required to visit objects that may
3185+ be involved in a cycle. So, for example, if an integer is directly reachable
3186+ from an argument, that integer object may or may not appear in the result list.
3187+diff -r d047928ae3f6 Doc/library/heapq.rst
3188+--- a/Doc/library/heapq.rst
3189++++ b/Doc/library/heapq.rst
3190+@@ -246,7 +246,7 @@
3191+ the sort is going on, provided that the inserted items are not "better" than the
3192+ last 0'th element you extracted. This is especially useful in simulation
3193+ contexts, where the tree holds all incoming events, and the "win" condition
3194+-means the smallest scheduled time. When an event schedule other events for
3195++means the smallest scheduled time. When an event schedules other events for
3196+ execution, they are scheduled into the future, so they can easily go into the
3197+ heap. So, a heap is a good structure for implementing schedulers (this is what
3198+ I used for my MIDI sequencer :-).
3199 diff -r d047928ae3f6 Doc/library/http.cookiejar.rst
3200 --- a/Doc/library/http.cookiejar.rst
3201 +++ b/Doc/library/http.cookiejar.rst
3202@@ -279,6 +2862,32 @@
3203
3204 .. method:: CookieJar.set_policy(policy)
3205
3206+diff -r d047928ae3f6 Doc/library/idle.rst
3207+--- a/Doc/library/idle.rst
3208++++ b/Doc/library/idle.rst
3209+@@ -33,8 +33,8 @@
3210+ File menu
3211+ ^^^^^^^^^
3212+
3213+-New window
3214+- create a new editing window
3215++New file
3216++ create a new file editing window
3217+
3218+ Open...
3219+ open an existing file
3220+diff -r d047928ae3f6 Doc/library/imp.rst
3221+--- a/Doc/library/imp.rst
3222++++ b/Doc/library/imp.rst
3223+@@ -158,7 +158,7 @@
3224+ cache = {}
3225+
3226+ It is legal though generally not very useful to reload built-in or dynamically
3227+- loaded modules, except for :mod:`sys`, :mod:`__main__` and :mod:`__builtin__`.
3228++ loaded modules, except for :mod:`sys`, :mod:`__main__` and :mod:`builtins`.
3229+ In many cases, however, extension modules are not designed to be initialized
3230+ more than once, and may fail in arbitrary ways when reloaded.
3231+
3232 diff -r d047928ae3f6 Doc/library/importlib.rst
3233 --- a/Doc/library/importlib.rst
3234 +++ b/Doc/library/importlib.rst
3235@@ -314,6 +2923,322 @@
3236 :data:`sys.path_importer_cache`, then :data:`sys.path_hooks` is
3237 searched for a finder for the path entry and, if found, is stored in
3238 :data:`sys.path_importer_cache` along with being queried about the
3239+@@ -692,6 +697,8 @@
3240+
3241+ The *loader_details* argument is a variable number of 2-item tuples each
3242+ containing a loader and a sequence of file suffixes the loader recognizes.
3243++ The loaders are expected to be callables which accept two arguments of
3244++ the module's name and the path to the file found.
3245+
3246+ The finder will cache the directory contents as necessary, making stat calls
3247+ for each module search to verify the cache is not outdated. Because cache
3248+@@ -709,7 +716,7 @@
3249+
3250+ The path the finder will search in.
3251+
3252+- .. method:: find_module(fullname)
3253++ .. method:: find_loader(fullname)
3254+
3255+ Attempt to find the loader to handle *fullname* within :attr:`path`.
3256+
3257+diff -r d047928ae3f6 Doc/library/itertools.rst
3258+--- a/Doc/library/itertools.rst
3259++++ b/Doc/library/itertools.rst
3260+@@ -278,7 +278,7 @@
3261+
3262+ .. function:: count(start=0, step=1)
3263+
3264+- Make an iterator that returns evenly spaced values starting with *n*. Often
3265++ Make an iterator that returns evenly spaced values starting with number *start*. Often
3266+ used as an argument to :func:`map` to generate consecutive data points.
3267+ Also, used with :func:`zip` to add sequence numbers. Equivalent to::
3268+
3269+@@ -762,7 +762,7 @@
3270+ """ Call a function repeatedly until an exception is raised.
3271+
3272+ Converts a call-until-exception interface to an iterator interface.
3273+- Like __builtin__.iter(func, sentinel) but uses an exception instead
3274++ Like builtins.iter(func, sentinel) but uses an exception instead
3275+ of a sentinel to end the loop.
3276+
3277+ Examples:
3278+diff -r d047928ae3f6 Doc/library/multiprocessing.rst
3279+--- a/Doc/library/multiprocessing.rst
3280++++ b/Doc/library/multiprocessing.rst
3281+@@ -284,6 +284,9 @@
3282+ print(result.get(timeout=1)) # prints "100" unless your computer is *very* slow
3283+ print(pool.map(f, range(10))) # prints "[0, 1, 4,..., 81]"
3284+
3285++Note that the methods of a pool should only ever be used by the
3286++process which created it.
3287++
3288+
3289+ Reference
3290+ ---------
3291+@@ -443,7 +446,7 @@
3292+ cause other processes to deadlock.
3293+
3294+ Note that the :meth:`start`, :meth:`join`, :meth:`is_alive`,
3295+- :meth:`terminate` and :attr:`exit_code` methods should only be called by
3296++ :meth:`terminate` and :attr:`exitcode` methods should only be called by
3297+ the process that created the process object.
3298+
3299+ Example usage of some of the methods of :class:`Process`:
3300+@@ -515,6 +518,24 @@
3301+ the :mod:`multiprocessing` namespace so you need to import them from
3302+ :mod:`queue`.
3303+
3304++.. note::
3305++
3306++ When an object is put on a queue, the object is pickled and a
3307++ background thread later flushes the pickled data to an underlying
3308++ pipe. This has some consequences which are a little surprising,
3309++ but should not cause any practical difficulties -- if they really
3310++ bother you then you can instead use a queue created with a
3311++ :ref:`manager <multiprocessing-managers>`.
3312++
3313++ (1) After putting an object on an empty queue there may be an
3314++ infinitesimal delay before the queue's :meth:`~Queue.empty`
3315++ method returns :const:`False` and :meth:`~Queue.get_nowait` can
3316++ return without raising :exc:`Queue.Empty`.
3317++
3318++ (2) If multiple processes are enqueuing objects, it is possible for
3319++ the objects to be received at the other end out-of-order.
3320++ However, objects enqueued by the same process will always be in
3321++ the expected order with respect to each other.
3322+
3323+ .. warning::
3324+
3325+@@ -638,6 +659,13 @@
3326+ the background thread from being joined automatically when the process
3327+ exits -- see :meth:`join_thread`.
3328+
3329++ A better name for this method might be
3330++ ``allow_exit_without_flush()``. It is likely to cause enqueued
3331++ data to lost, and you almost certainly will not need to use it.
3332++ It is really only there if you need the current process to exit
3333++ immediately without waiting to flush enqueued data to the
3334++ underlying pipe, and you don't care about lost data.
3335++
3336+
3337+ .. class:: SimpleQueue()
3338+
3339+@@ -1647,6 +1675,9 @@
3340+ *initializer* is not ``None`` then each worker process will call
3341+ ``initializer(*initargs)`` when it starts.
3342+
3343++ Note that the methods of the pool object should only be called by
3344++ the process which created the pool.
3345++
3346+ .. versionadded:: 3.2
3347+ *maxtasksperchild* is the number of tasks a worker process can complete
3348+ before it will exit and be replaced with a fresh worker process, to enable
3349+diff -r d047928ae3f6 Doc/library/os.path.rst
3350+--- a/Doc/library/os.path.rst
3351++++ b/Doc/library/os.path.rst
3352+@@ -234,8 +234,10 @@
3353+
3354+ .. function:: relpath(path, start=None)
3355+
3356+- Return a relative filepath to *path* either from the current directory or from
3357+- an optional *start* point.
3358++ Return a relative filepath to *path* either from the current directory or
3359++ from an optional *start* directory. This is a path computation: the
3360++ filesystem is not accessed to confirm the existence or nature of *path* or
3361++ *start*.
3362+
3363+ *start* defaults to :attr:`os.curdir`.
3364+
3365+diff -r d047928ae3f6 Doc/library/os.rst
3366+--- a/Doc/library/os.rst
3367++++ b/Doc/library/os.rst
3368+@@ -2023,9 +2023,10 @@
3369+ Create a symbolic link pointing to *source* named *link_name*.
3370+
3371+ On Windows, a symlink represents either a file or a directory, and does not
3372+- morph to the target dynamically. If *target_is_directory* is set to ``True``,
3373+- the symlink will be created as a directory symlink, otherwise as a file symlink
3374+- (the default). On non-Window platforms, *target_is_directory* is ignored.
3375++ morph to the target dynamically. If the target is present, the type of the
3376++ symlink will be created to match. Otherwise, the symlink will be created
3377++ as a directory if *target_is_directory* is ``True`` or a file symlink (the
3378++ default) otherwise. On non-Window platforms, *target_is_directory* is ignored.
3379+
3380+ Symbolic link support was introduced in Windows 6.0 (Vista). :func:`symlink`
3381+ will raise a :exc:`NotImplementedError` on Windows versions earlier than 6.0.
3382+@@ -2041,6 +2042,7 @@
3383+ to the administrator level. Either obtaining the privilege or running your
3384+ application as an administrator are ways to successfully create symlinks.
3385+
3386++
3387+ :exc:`OSError` is raised when the function is called by an unprivileged
3388+ user.
3389+
3390+diff -r d047928ae3f6 Doc/library/smtplib.rst
3391+--- a/Doc/library/smtplib.rst
3392++++ b/Doc/library/smtplib.rst
3393+@@ -24,17 +24,20 @@
3394+
3395+ A :class:`SMTP` instance encapsulates an SMTP connection. It has methods
3396+ that support a full repertoire of SMTP and ESMTP operations. If the optional
3397+- host and port parameters are given, the SMTP :meth:`connect` method is called
3398+- with those parameters during initialization. If the :meth:`connect` call
3399+- returns anything other than a success code, an :exc:`SMTPConnectError` is
3400+- raised. The optional *timeout* parameter specifies a timeout in seconds for
3401+- blocking operations like the connection attempt (if not specified, the
3402+- global default timeout setting will be used). The optional source_address
3403+- parameter allows to bind to some specific source address in a machine with
3404+- multiple network interfaces, and/or to some specific source TCP port. It
3405+- takes a 2-tuple (host, port), for the socket to bind to as its source
3406+- address before connecting. If omitted (or if host or port are ``''`` and/or
3407+- 0 respectively) the OS default behavior will be used.
3408++ host and port parameters are given, the SMTP :meth:`connect` method is
3409++ called with those parameters during initialization. If specified,
3410++ *local_hostname* is used as the FQDN of the local host in the HELO/EHLO
3411++ command. Otherwise, the local hostname is found using
3412++ :func:`socket.getfqdn`. If the :meth:`connect` call returns anything other
3413++ than a success code, an :exc:`SMTPConnectError` is raised. The optional
3414++ *timeout* parameter specifies a timeout in seconds for blocking operations
3415++ like the connection attempt (if not specified, the global default timeout
3416++ setting will be used). The optional source_address parameter allows to bind
3417++ to some specific source address in a machine with multiple network
3418++ interfaces, and/or to some specific source TCP port. It takes a 2-tuple
3419++ (host, port), for the socket to bind to as its source address before
3420++ connecting. If omitted (or if host or port are ``''`` and/or 0 respectively)
3421++ the OS default behavior will be used.
3422+
3423+ For normal use, you should only require the initialization/connect,
3424+ :meth:`sendmail`, and :meth:`~smtplib.quit` methods.
3425+@@ -57,17 +60,21 @@
3426+ .. versionchanged:: 3.3
3427+ source_address argument was added.
3428+
3429+-.. class:: SMTP_SSL(host='', port=0, local_hostname=None, keyfile=None, certfile=None[, timeout], context=None, source_address=None)
3430++.. class:: SMTP_SSL(host='', port=0, local_hostname=None, keyfile=None, \
3431++ certfile=None [, timeout], context=None, \
3432++ source_address=None)
3433+
3434+ A :class:`SMTP_SSL` instance behaves exactly the same as instances of
3435+ :class:`SMTP`. :class:`SMTP_SSL` should be used for situations where SSL is
3436+ required from the beginning of the connection and using :meth:`starttls` is
3437+ not appropriate. If *host* is not specified, the local host is used. If
3438+- *port* is zero, the standard SMTP-over-SSL port (465) is used. *keyfile*
3439+- and *certfile* are also optional, and can contain a PEM formatted private key
3440+- and certificate chain file for the SSL connection. *context* also optional, can contain
3441+- a SSLContext, and is an alternative to keyfile and certfile; If it is specified both
3442+- keyfile and certfile must be None. The optional *timeout*
3443++ *port* is zero, the standard SMTP-over-SSL port (465) is used. The optional
3444++ arguments *local_hostname* and *source_address* have the same meaning as
3445++ they do in the :class:`SMTP` class. *keyfile* and *certfile* are also
3446++ optional, and can contain a PEM formatted private key and certificate chain
3447++ file for the SSL connection. *context* also optional, can contain a
3448++ SSLContext, and is an alternative to keyfile and certfile; If it is
3449++ specified both keyfile and certfile must be None. The optional *timeout*
3450+ parameter specifies a timeout in seconds for blocking operations like the
3451+ connection attempt (if not specified, the global default timeout setting
3452+ will be used). The optional source_address parameter allows to bind to some
3453+@@ -90,12 +97,12 @@
3454+ standard SMTP client. It's common to use Unix sockets for LMTP, so our
3455+ :meth:`connect` method must support that as well as a regular host:port
3456+ server. The optional arguments local_hostname and source_address have the
3457+- same meaning as that of SMTP client. To specify a Unix socket, you must use
3458+- an absolute path for *host*, starting with a '/'.
3459++ same meaning as they do in the :class:`SMTP` class. To specify a Unix
3460++ socket, you must use an absolute path for *host*, starting with a '/'.
3461+
3462+- Authentication is supported, using the regular SMTP mechanism. When using a Unix
3463+- socket, LMTP generally don't support or require any authentication, but your
3464+- mileage might vary.
3465++ Authentication is supported, using the regular SMTP mechanism. When using a
3466++ Unix socket, LMTP generally don't support or require any authentication, but
3467++ your mileage might vary.
3468+
3469+
3470+ A nice selection of exceptions is defined as well:
3471+diff -r d047928ae3f6 Doc/library/ssl.rst
3472+--- a/Doc/library/ssl.rst
3473++++ b/Doc/library/ssl.rst
3474+@@ -773,7 +773,7 @@
3475+
3476+ .. method:: SSLContext.set_npn_protocols(protocols)
3477+
3478+- Specify which protocols the socket should avertise during the SSL/TLS
3479++ Specify which protocols the socket should advertise during the SSL/TLS
3480+ handshake. It should be a list of strings, like ``['http/1.1', 'spdy/2']``,
3481+ ordered by preference. The selection of a protocol will happen during the
3482+ handshake, and will play out according to the `NPN draft specification
3483+diff -r d047928ae3f6 Doc/library/stdtypes.rst
3484+--- a/Doc/library/stdtypes.rst
3485++++ b/Doc/library/stdtypes.rst
3486+@@ -751,7 +751,7 @@
3487+ iterators for those iteration types. (An example of an object supporting
3488+ multiple forms of iteration would be a tree structure which supports both
3489+ breadth-first and depth-first traversal.) This method corresponds to the
3490+- :attr:`tp_iter` slot of the type structure for Python objects in the Python/C
3491++ :c:member:`~PyTypeObject.tp_iter` slot of the type structure for Python objects in the Python/C
3492+ API.
3493+
3494+ The iterator objects themselves are required to support the following two
3495+@@ -762,7 +762,7 @@
3496+
3497+ Return the iterator object itself. This is required to allow both containers
3498+ and iterators to be used with the :keyword:`for` and :keyword:`in` statements.
3499+- This method corresponds to the :attr:`tp_iter` slot of the type structure for
3500++ This method corresponds to the :c:member:`~PyTypeObject.tp_iter` slot of the type structure for
3501+ Python objects in the Python/C API.
3502+
3503+
3504+@@ -770,7 +770,7 @@
3505+
3506+ Return the next item from the container. If there are no further items, raise
3507+ the :exc:`StopIteration` exception. This method corresponds to the
3508+- :attr:`tp_iternext` slot of the type structure for Python objects in the
3509++ :c:member:`~PyTypeObject.tp_iternext` slot of the type structure for Python objects in the
3510+ Python/C API.
3511+
3512+ Python defines several iterator objects to support iteration over general and
3513+@@ -871,11 +871,11 @@
3514+ +--------------------------+--------------------------------+----------+
3515+ | ``max(s)`` | largest item of *s* | |
3516+ +--------------------------+--------------------------------+----------+
3517+-| ``s.index(x[, i[, j]])`` | index of the first occurence | \(8) |
3518++| ``s.index(x[, i[, j]])`` | index of the first occurrence | \(8) |
3519+ | | of *x* in *s* (at or after | |
3520+ | | index *i* and before index *j*)| |
3521+ +--------------------------+--------------------------------+----------+
3522+-| ``s.count(x)`` | total number of occurences of | |
3523++| ``s.count(x)`` | total number of occurrences of | |
3524+ | | *x* in *s* | |
3525+ +--------------------------+--------------------------------+----------+
3526+
3527+diff -r d047928ae3f6 Doc/library/subprocess.rst
3528+--- a/Doc/library/subprocess.rst
3529++++ b/Doc/library/subprocess.rst
3530+@@ -290,8 +290,12 @@
3531+ .. index::
3532+ single: universal newlines; subprocess module
3533+
3534+- If *universal_newlines* is ``True``, the file objects *stdin*, *stdout* and
3535+- *stderr* will be opened as text streams in :term:`universal newlines` mode
3536++ If *universal_newlines* is ``False`` the file objects *stdin*, *stdout* and
3537++ *stderr* will be opened as binary streams, and no line ending conversion is
3538++ done.
3539++
3540++ If *universal_newlines* is ``True``, these file objects
3541++ will be opened as text streams in :term:`universal newlines` mode
3542+ using the encoding returned by :func:`locale.getpreferredencoding(False)
3543+ <locale.getpreferredencoding>`. For *stdin*, line ending characters
3544+ ``'\n'`` in the input will be converted to the default line separator
3545+@@ -537,7 +541,8 @@
3546+
3547+ If *universal_newlines* is ``True``, the file objects *stdin*, *stdout*
3548+ and *stderr* are opened as text streams in universal newlines mode, as
3549+- described above in :ref:`frequently-used-arguments`.
3550++ described above in :ref:`frequently-used-arguments`, otherwise they are
3551++ opened as binary streams.
3552+
3553+ If given, *startupinfo* will be a :class:`STARTUPINFO` object, which is
3554+ passed to the underlying ``CreateProcess`` function.
3555 diff -r d047928ae3f6 Doc/library/sys.rst
3556 --- a/Doc/library/sys.rst
3557 +++ b/Doc/library/sys.rst
3558@@ -326,6 +3251,90 @@
3559
3560
3561 .. data:: path
3562+diff -r d047928ae3f6 Doc/library/test.rst
3563+--- a/Doc/library/test.rst
3564++++ b/Doc/library/test.rst
3565+@@ -362,31 +362,65 @@
3566+ New optional arguments *filters* and *quiet*.
3567+
3568+
3569+-.. function:: captured_stdout()
3570++.. function:: captured_stdin()
3571++ captured_stdout()
3572++ captured_stderr()
3573+
3574+- A context manager that runs the :keyword:`with` statement body using a
3575+- :class:`io.StringIO` object as sys.stdout. That object can be retrieved
3576+- using the ``as`` clause of the :keyword:`with` statement.
3577++ A context managers that temporarily replaces the named stream with
3578++ :class:`io.StringIO` object.
3579+
3580+- Example use::
3581++ Example use with output streams::
3582+
3583+- with captured_stdout() as s:
3584++ with captured_stdout() as stdout, captured_stderr() as stderr:
3585+ print("hello")
3586+- assert s.getvalue() == "hello\n"
3587++ print("error", file=sys.stderr)
3588++ assert stdout.getvalue() == "hello\n"
3589++ assert stderr.getvalue() == "error\n"
3590+
3591++ Example use with input stream::
3592+
3593+-.. function:: temp_cwd(name='tempcwd', quiet=False, path=None)
3594++ with captured_stdin() as stdin:
3595++ stdin.write('hello\n')
3596++ stdin.seek(0)
3597++ # call test code that consumes from sys.stdin
3598++ captured = input()
3599++ self.assertEqual(captured, "hello")
3600++
3601++
3602++.. function:: temp_dir(path=None, quiet=False)
3603++
3604++ A context manager that creates a temporary directory at *path* and
3605++ yields the directory.
3606++
3607++ If *path* is None, the temporary directory is created using
3608++ :func:`tempfile.mkdtemp`. If *quiet* is ``False``, the context manager
3609++ raises an exception on error. Otherwise, if *path* is specified and
3610++ cannot be created, only a warning is issued.
3611++
3612++
3613++.. function:: change_cwd(path, quiet=False)
3614+
3615+ A context manager that temporarily changes the current working
3616+- directory (CWD).
3617++ directory to *path* and yields the directory.
3618+
3619+- An existing path may be provided as *path*, in which case this function
3620+- makes no changes to the file system.
3621++ If *quiet* is ``False``, the context manager raises an exception
3622++ on error. Otherwise, it issues only a warning and keeps the current
3623++ working directory the same.
3624+
3625+- Otherwise, the new CWD is created in the current directory and it's named
3626+- *name*. If *quiet* is ``False`` and it's not possible to create or
3627+- change the CWD, an error is raised. If it's ``True``, only a warning
3628+- is raised and the original CWD is used.
3629++
3630++.. function:: temp_cwd(name='tempcwd', quiet=False)
3631++
3632++ A context manager that temporarily creates a new directory and
3633++ changes the current working directory (CWD).
3634++
3635++ The context manager creates a temporary directory in the current
3636++ directory with name *name* before temporarily changing the current
3637++ working directory. If *name* is None, the temporary directory is
3638++ created using :func:`tempfile.mkdtemp`.
3639++
3640++ If *quiet* is ``False`` and it is not possible to create or change
3641++ the CWD, an error is raised. Otherwise, only a warning is raised
3642++ and the original CWD is used.
3643+
3644+
3645+ .. function:: temp_umask(umask)
3646 diff -r d047928ae3f6 Doc/library/unittest.mock.rst
3647 --- a/Doc/library/unittest.mock.rst
3648 +++ b/Doc/library/unittest.mock.rst
3649@@ -338,6 +3347,48 @@
3650
3651 An example of a mock that raises an exception (to test exception
3652 handling of an API):
3653+diff -r d047928ae3f6 Doc/library/unittest.rst
3654+--- a/Doc/library/unittest.rst
3655++++ b/Doc/library/unittest.rst
3656+@@ -873,7 +873,7 @@
3657+ a regular expression object or a string containing a regular expression
3658+ suitable for use by :func:`re.search`. Examples::
3659+
3660+- self.assertRaisesRegex(ValueError, 'invalid literal for.*XYZ$',
3661++ self.assertRaisesRegex(ValueError, "invalid literal for.*XYZ'$",
3662+ int, 'XYZ')
3663+
3664+ or::
3665+@@ -897,25 +897,25 @@
3666+ Test that a warning is triggered when *callable* is called with any
3667+ positional or keyword arguments that are also passed to
3668+ :meth:`assertWarns`. The test passes if *warning* is triggered and
3669+- fails if it isn't. Also, any unexpected exception is an error.
3670++ fails if it isn't. Any exception is an error.
3671+ To catch any of a group of warnings, a tuple containing the warning
3672+ classes may be passed as *warnings*.
3673+
3674+ If only the *warning* and possibly the *msg* arguments are given,
3675+- returns a context manager so that the code under test can be written
3676++ return a context manager so that the code under test can be written
3677+ inline rather than as a function::
3678+
3679+ with self.assertWarns(SomeWarning):
3680+ do_something()
3681+
3682+- When used as a context manager, :meth:`assertRaises` accepts the
3683++ When used as a context manager, :meth:`assertWarns` accepts the
3684+ additional keyword argument *msg*.
3685+
3686+ The context manager will store the caught warning object in its
3687+ :attr:`warning` attribute, and the source line which triggered the
3688+ warnings in the :attr:`filename` and :attr:`lineno` attributes.
3689+ This can be useful if the intention is to perform additional checks
3690+- on the exception raised::
3691++ on the warning caught::
3692+
3693+ with self.assertWarns(SomeWarning) as cm:
3694+ do_something()
3695 diff -r d047928ae3f6 Doc/library/urllib.request.rst
3696 --- a/Doc/library/urllib.request.rst
3697 +++ b/Doc/library/urllib.request.rst
3698@@ -350,6 +3401,234 @@
3699
3700 Open the URL *url*, which can be either a string or a
3701 :class:`Request` object.
3702+diff -r d047928ae3f6 Doc/library/venv.rst
3703+--- a/Doc/library/venv.rst
3704++++ b/Doc/library/venv.rst
3705+@@ -11,7 +11,7 @@
3706+
3707+ .. versionadded:: 3.3
3708+
3709+-**Source code:** :source:`Lib/venv.py`
3710++**Source code:** :source:`Lib/venv`
3711+
3712+ --------------
3713+
3714+@@ -125,11 +125,13 @@
3715+ :meth:`create_configuration`, :meth:`setup_python`,
3716+ :meth:`setup_scripts` and :meth:`post_setup` can be overridden.
3717+
3718+- .. method:: create_directories(env_dir)
3719++ .. method:: ensure_directories(env_dir)
3720+
3721+ Creates the environment directory and all necessary directories, and
3722+ returns a context object. This is just a holder for attributes (such as
3723+- paths), for use by the other methods.
3724++ paths), for use by the other methods. The directories are allowed to
3725++ exist already, as long as either ``clear`` or ``upgrade`` were
3726++ specified to allow operating on an existing environment directory.
3727+
3728+ .. method:: create_configuration(context)
3729+
3730+@@ -138,7 +140,10 @@
3731+ .. method:: setup_python(context)
3732+
3733+ Creates a copy of the Python executable (and, under Windows, DLLs) in
3734+- the environment.
3735++ the environment. On a POSIX system, if a specific executable
3736++ ``python3.x`` was used, symlinks to ``python`` and ``python3`` will be
3737++ created pointing to that executable, unless files with those names
3738++ already exist.
3739+
3740+ .. method:: setup_scripts(context)
3741+
3742+@@ -175,6 +180,8 @@
3743+ * ``__VENV_PYTHON__`` is replaced with the absolute path of the
3744+ environment's executable.
3745+
3746++ The directories are allowed to exist (for when an existing environment
3747++ is being upgraded).
3748+
3749+ There is also a module-level convenience function:
3750+
3751+@@ -187,7 +194,7 @@
3752+ --------------------------------------
3753+
3754+ The following script shows how to extend :class:`EnvBuilder` by implementing a
3755+-subclass which installs Distribute and pip into a created venv::
3756++subclass which installs setuptools and pip into a created venv::
3757+
3758+ import os
3759+ import os.path
3760+@@ -198,16 +205,16 @@
3761+ from urllib.request import urlretrieve
3762+ import venv
3763+
3764+- class DistributeEnvBuilder(venv.EnvBuilder):
3765++ class ExtendedEnvBuilder(venv.EnvBuilder):
3766+ """
3767+- This builder installs Distribute and pip so that you can pip or
3768++ This builder installs setuptools and pip so that you can pip or
3769+ easy_install other packages into the created environment.
3770+
3771+- :param nodist: If True, Distribute is not installed into the created
3772+- environment.
3773++ :param nodist: If True, setuptools and pip are not installed into the
3774++ created environment.
3775+ :param nopip: If True, pip is not installed into the created
3776+ environment.
3777+- :param progress: If Distribute or pip are installed, the progress of the
3778++ :param progress: If setuptools or pip are installed, the progress of the
3779+ installation can be monitored by passing a progress
3780+ callable. If specified, it is called with two
3781+ arguments: a string indicating some progress, and a
3782+@@ -237,9 +244,11 @@
3783+ :param context: The information for the environment creation request
3784+ being processed.
3785+ """
3786++ os.environ['VIRTUAL_ENV'] = context.env_dir
3787+ if not self.nodist:
3788+- self.install_distribute(context)
3789+- if not self.nopip:
3790++ self.install_setuptools(context)
3791++ # Can't install pip without setuptools
3792++ if not self.nopip and not self.nodist:
3793+ self.install_pip(context)
3794+
3795+ def reader(self, stream, context):
3796+@@ -260,6 +269,7 @@
3797+ else:
3798+ sys.stderr.write(s.decode('utf-8'))
3799+ sys.stderr.flush()
3800++ stream.close()
3801+
3802+ def install_script(self, context, name, url):
3803+ _, _, path, _, _, _ = urlparse(url)
3804+@@ -269,10 +279,14 @@
3805+ # Download script into the env's binaries folder
3806+ urlretrieve(url, distpath)
3807+ progress = self.progress
3808++ if self.verbose:
3809++ term = '\n'
3810++ else:
3811++ term = ''
3812+ if progress is not None:
3813+- progress('Installing %s' %name, 'main')
3814++ progress('Installing %s ...%s' % (name, term), 'main')
3815+ else:
3816+- sys.stderr.write('Installing %s ' % name)
3817++ sys.stderr.write('Installing %s ...%s' % (name, term))
3818+ sys.stderr.flush()
3819+ # Install in the env
3820+ args = [context.env_exe, fn]
3821+@@ -291,17 +305,17 @@
3822+ # Clean up - no longer needed
3823+ os.unlink(distpath)
3824+
3825+- def install_distribute(self, context):
3826++ def install_setuptools(self, context):
3827+ """
3828+- Install Distribute in the environment.
3829++ Install setuptools in the environment.
3830+
3831+ :param context: The information for the environment creation request
3832+ being processed.
3833+ """
3834+- url = 'http://python-distribute.org/distribute_setup.py'
3835+- self.install_script(context, 'distribute', url)
3836+- # clear up the distribute archive which gets downloaded
3837+- pred = lambda o: o.startswith('distribute-') and o.endswith('.tar.gz')
3838++ url = 'https://bitbucket.org/pypa/setuptools/downloads/ez_setup.py'
3839++ self.install_script(context, 'setuptools', url)
3840++ # clear up the setuptools archive which gets downloaded
3841++ pred = lambda o: o.startswith('setuptools-') and o.endswith('.tar.gz')
3842+ files = filter(pred, os.listdir(context.bin_path))
3843+ for f in files:
3844+ f = os.path.join(context.bin_path, f)
3845+@@ -336,10 +350,10 @@
3846+ 'directories.')
3847+ parser.add_argument('dirs', metavar='ENV_DIR', nargs='+',
3848+ help='A directory to create the environment in.')
3849+- parser.add_argument('--no-distribute', default=False,
3850++ parser.add_argument('--no-setuptools', default=False,
3851+ action='store_true', dest='nodist',
3852+- help="Don't install Distribute in the virtual "
3853+- "environment.")
3854++ help="Don't install setuptools or pip in the "
3855++ "virtual environment.")
3856+ parser.add_argument('--no-pip', default=False,
3857+ action='store_true', dest='nopip',
3858+ help="Don't install pip in the virtual "
3859+@@ -370,11 +384,11 @@
3860+ parser.add_argument('--verbose', default=False, action='store_true',
3861+ dest='verbose', help='Display the output '
3862+ 'from the scripts which '
3863+- 'install Distribute and pip.')
3864++ 'install setuptools and pip.')
3865+ options = parser.parse_args(args)
3866+ if options.upgrade and options.clear:
3867+ raise ValueError('you cannot supply --upgrade and --clear together.')
3868+- builder = DistributeEnvBuilder(system_site_packages=options.system_site,
3869++ builder = ExtendedEnvBuilder(system_site_packages=options.system_site,
3870+ clear=options.clear,
3871+ symlinks=options.symlinks,
3872+ upgrade=options.upgrade,
3873+@@ -393,5 +407,6 @@
3874+ print('Error: %s' % e, file=sys.stderr)
3875+ sys.exit(rc)
3876+
3877++
3878+ This script is also available for download `online
3879+ <https://gist.github.com/4673395>`_.
3880+diff -r d047928ae3f6 Doc/library/xmlrpc.client.rst
3881+--- a/Doc/library/xmlrpc.client.rst
3882++++ b/Doc/library/xmlrpc.client.rst
3883+@@ -435,7 +435,7 @@
3884+ is a :term:`generator`; iterating over this generator yields the individual
3885+ results.
3886+
3887+-A usage example of this class follows. The server code ::
3888++A usage example of this class follows. The server code::
3889+
3890+ from xmlrpc.server import SimpleXMLRPCServer
3891+
3892+@@ -449,7 +449,7 @@
3893+ return x*y
3894+
3895+ def divide(x, y):
3896+- return x/y
3897++ return x // y
3898+
3899+ # A simple server with simple arithmetic functions
3900+ server = SimpleXMLRPCServer(("localhost", 8000))
3901+diff -r d047928ae3f6 Doc/reference/datamodel.rst
3902+--- a/Doc/reference/datamodel.rst
3903++++ b/Doc/reference/datamodel.rst
3904+@@ -1264,10 +1264,21 @@
3905+
3906+ Called by built-in function :func:`hash` and for operations on members of
3907+ hashed collections including :class:`set`, :class:`frozenset`, and
3908+- :class:`dict`. :meth:`__hash__` should return an integer. The only required
3909+- property is that objects which compare equal have the same hash value; it is
3910+- advised to somehow mix together (e.g. using exclusive or) the hash values for
3911+- the components of the object that also play a part in comparison of objects.
3912++ :class:`dict`. :meth:`__hash__` should return an integer. The only
3913++ required property is that objects which compare equal have the same hash
3914++ value; it is advised to somehow mix together (e.g. using exclusive or) the
3915++ hash values for the components of the object that also play a part in
3916++ comparison of objects.
3917++
3918++ .. note::
3919++
3920++ :func:`hash` truncates the value returned from an object's custom
3921++ :meth:`__hash__` method to the size of a :c:type:`Py_ssize_t`. This is
3922++ typically 8 bytes on 64-bit builds and 4 bytes on 32-bit builds. If an
3923++ object's :meth:`__hash__` must interoperate on builds of different bit
3924++ sizes, be sure to check the width on all supported builds. An easy way
3925++ to do this is with
3926++ ``python -c "import sys; print(sys.hash_info.width)"``
3927+
3928+ If a class does not define an :meth:`__eq__` method it should not define a
3929+ :meth:`__hash__` operation either; if it defines :meth:`__eq__` but not
3930 diff -r d047928ae3f6 Doc/reference/import.rst
3931 --- a/Doc/reference/import.rst
3932 +++ b/Doc/reference/import.rst
3933@@ -380,6 +3659,33 @@
3934 More information can be found in the :ref:`old-string-formatting` section.
3935
3936
3937+@@ -326,9 +322,11 @@
3938+ >>> f.write(s)
3939+ 18
3940+
3941+-``f.tell()`` returns an integer giving the file object's current position in the
3942+-file, measured in bytes from the beginning of the file. To change the file
3943+-object's position, use ``f.seek(offset, from_what)``. The position is computed
3944++``f.tell()`` returns an integer giving the file object's current position in the file
3945++represented as number of bytes from the beginning of the file when in `binary mode` and
3946++an opaque number when in `text mode`.
3947++
3948++To change the file object's position, use ``f.seek(offset, from_what)``. The position is computed
3949+ from adding *offset* to a reference point; the reference point is selected by
3950+ the *from_what* argument. A *from_what* value of 0 measures from the beginning
3951+ of the file, 1 uses the current file position, and 2 uses the end of the file as
3952+@@ -349,7 +347,10 @@
3953+
3954+ In text files (those opened without a ``b`` in the mode string), only seeks
3955+ relative to the beginning of the file are allowed (the exception being seeking
3956+-to the very file end with ``seek(0, 2)``).
3957++to the very file end with ``seek(0, 2)``) and the only valid *offset* values are
3958++those returned from the ``f.tell()``, or zero. Any other *offset* value produces
3959++undefined behaviour.
3960++
3961+
3962+ When you're done with a file, call ``f.close()`` to close it and free up any
3963+ system resources taken up by the open file. After calling ``f.close()``,
3964 diff -r d047928ae3f6 Doc/tutorial/introduction.rst
3965 --- a/Doc/tutorial/introduction.rst
3966 +++ b/Doc/tutorial/introduction.rst
3967@@ -763,7 +4069,7 @@
3968 +
3969 + >>> word[0:2] # characters from position 0 (included) to 2 (excluded)
3970 + 'Py'
3971-+ >>> word[2:5] # characters from position 2 (included) to 4 (excluded)
3972++ >>> word[2:5] # characters from position 2 (included) to 5 (excluded)
3973 + 'tho'
3974 +
3975 +Note how the start is always included, and the end always excluded. This
3976@@ -1118,9 +4424,9 @@
3977 + >>> x = [a, n]
3978 + >>> x
3979 + [['a', 'b', 'c'], [1, 2, 3]]
3980-+ >>> p[0]
3981++ >>> x[0]
3982 + ['a', 'b', 'c']
3983-+ >>> p[0][1]
3984++ >>> x[0][1]
3985 + 'b'
3986
3987 .. _tut-firststeps:
3988@@ -1141,6 +4447,701 @@
3989 + same meaning with both single (``'...'``) and double (``"..."``) quotes.
3990 + The only difference between the two is that within single quotes you don't
3991 + need to escape ``"`` (but you have to escape ``\'``) and vice versa.
3992+diff -r d047928ae3f6 Doc/using/cmdline.rst
3993+--- a/Doc/using/cmdline.rst
3994++++ b/Doc/using/cmdline.rst
3995+@@ -269,8 +269,8 @@
3996+
3997+ .. cmdoption:: -u
3998+
3999+- Force the binary layer of the stdin, stdout and stderr streams (which is
4000+- available as their ``buffer`` attribute) to be unbuffered. The text I/O
4001++ Force the binary layer of the stdout and stderr streams (which is
4002++ available as their ``buffer`` attribute) to be unbuffered. The text I/O
4003+ layer will still be line-buffered if writing to the console, or
4004+ block-buffered if redirected to a non-interactive file.
4005+
4006+@@ -562,6 +562,8 @@
4007+ Python traceback. This is equivalent to :option:`-X` ``faulthandler``
4008+ option.
4009+
4010++ .. versionadded:: 3.3
4011++
4012+
4013+ Debug-mode variables
4014+ ~~~~~~~~~~~~~~~~~~~~
4015+diff -r d047928ae3f6 Doc/whatsnew/2.2.rst
4016+--- a/Doc/whatsnew/2.2.rst
4017++++ b/Doc/whatsnew/2.2.rst
4018+@@ -450,9 +450,9 @@
4019+ Python classes can define an :meth:`__iter__` method, which should create and
4020+ return a new iterator for the object; if the object is its own iterator, this
4021+ method can just return ``self``. In particular, iterators will usually be their
4022+-own iterators. Extension types implemented in C can implement a :attr:`tp_iter`
4023++own iterators. Extension types implemented in C can implement a :c:member:`~PyTypeObject.tp_iter`
4024+ function in order to return an iterator, and extension types that want to behave
4025+-as iterators can define a :attr:`tp_iternext` function.
4026++as iterators can define a :c:member:`~PyTypeObject.tp_iternext` function.
4027+
4028+ So, after all this, what do iterators actually do? They have one required
4029+ method, :meth:`next`, which takes no arguments and returns the next value. When
4030+@@ -478,7 +478,7 @@
4031+ In 2.2, Python's :keyword:`for` statement no longer expects a sequence; it
4032+ expects something for which :func:`iter` will return an iterator. For backward
4033+ compatibility and convenience, an iterator is automatically constructed for
4034+-sequences that don't implement :meth:`__iter__` or a :attr:`tp_iter` slot, so
4035++sequences that don't implement :meth:`__iter__` or a :c:member:`~PyTypeObject.tp_iter` slot, so
4036+ ``for i in [1,2,3]`` will still work. Wherever the Python interpreter loops
4037+ over a sequence, it's been changed to use the iterator protocol. This means you
4038+ can do things like this::
4039+diff -r d047928ae3f6 Include/Python-ast.h
4040+--- a/Include/Python-ast.h
4041++++ b/Include/Python-ast.h
4042+@@ -42,25 +42,25 @@
4043+ enum _mod_kind {Module_kind=1, Interactive_kind=2, Expression_kind=3,
4044+ Suite_kind=4};
4045+ struct _mod {
4046+- enum _mod_kind kind;
4047+- union {
4048+- struct {
4049+- asdl_seq *body;
4050+- } Module;
4051+-
4052+- struct {
4053+- asdl_seq *body;
4054+- } Interactive;
4055+-
4056+- struct {
4057+- expr_ty body;
4058+- } Expression;
4059+-
4060+- struct {
4061+- asdl_seq *body;
4062+- } Suite;
4063+-
4064+- } v;
4065++ enum _mod_kind kind;
4066++ union {
4067++ struct {
4068++ asdl_seq *body;
4069++ } Module;
4070++
4071++ struct {
4072++ asdl_seq *body;
4073++ } Interactive;
4074++
4075++ struct {
4076++ expr_ty body;
4077++ } Expression;
4078++
4079++ struct {
4080++ asdl_seq *body;
4081++ } Suite;
4082++
4083++ } v;
4084+ };
4085+
4086+ enum _stmt_kind {FunctionDef_kind=1, ClassDef_kind=2, Return_kind=3,
4087+@@ -70,111 +70,111 @@
4088+ ImportFrom_kind=15, Global_kind=16, Nonlocal_kind=17,
4089+ Expr_kind=18, Pass_kind=19, Break_kind=20, Continue_kind=21};
4090+ struct _stmt {
4091+- enum _stmt_kind kind;
4092+- union {
4093+- struct {
4094+- identifier name;
4095+- arguments_ty args;
4096+- asdl_seq *body;
4097+- asdl_seq *decorator_list;
4098+- expr_ty returns;
4099+- } FunctionDef;
4100+-
4101+- struct {
4102+- identifier name;
4103+- asdl_seq *bases;
4104+- asdl_seq *keywords;
4105+- expr_ty starargs;
4106+- expr_ty kwargs;
4107+- asdl_seq *body;
4108+- asdl_seq *decorator_list;
4109+- } ClassDef;
4110+-
4111+- struct {
4112+- expr_ty value;
4113+- } Return;
4114+-
4115+- struct {
4116+- asdl_seq *targets;
4117+- } Delete;
4118+-
4119+- struct {
4120+- asdl_seq *targets;
4121+- expr_ty value;
4122+- } Assign;
4123+-
4124+- struct {
4125+- expr_ty target;
4126+- operator_ty op;
4127+- expr_ty value;
4128+- } AugAssign;
4129+-
4130+- struct {
4131+- expr_ty target;
4132+- expr_ty iter;
4133+- asdl_seq *body;
4134+- asdl_seq *orelse;
4135+- } For;
4136+-
4137+- struct {
4138+- expr_ty test;
4139+- asdl_seq *body;
4140+- asdl_seq *orelse;
4141+- } While;
4142+-
4143+- struct {
4144+- expr_ty test;
4145+- asdl_seq *body;
4146+- asdl_seq *orelse;
4147+- } If;
4148+-
4149+- struct {
4150+- asdl_seq *items;
4151+- asdl_seq *body;
4152+- } With;
4153+-
4154+- struct {
4155+- expr_ty exc;
4156+- expr_ty cause;
4157+- } Raise;
4158+-
4159+- struct {
4160+- asdl_seq *body;
4161+- asdl_seq *handlers;
4162+- asdl_seq *orelse;
4163+- asdl_seq *finalbody;
4164+- } Try;
4165+-
4166+- struct {
4167+- expr_ty test;
4168+- expr_ty msg;
4169+- } Assert;
4170+-
4171+- struct {
4172+- asdl_seq *names;
4173+- } Import;
4174+-
4175+- struct {
4176+- identifier module;
4177+- asdl_seq *names;
4178+- int level;
4179+- } ImportFrom;
4180+-
4181+- struct {
4182+- asdl_seq *names;
4183+- } Global;
4184+-
4185+- struct {
4186+- asdl_seq *names;
4187+- } Nonlocal;
4188+-
4189+- struct {
4190+- expr_ty value;
4191+- } Expr;
4192+-
4193+- } v;
4194+- int lineno;
4195+- int col_offset;
4196++ enum _stmt_kind kind;
4197++ union {
4198++ struct {
4199++ identifier name;
4200++ arguments_ty args;
4201++ asdl_seq *body;
4202++ asdl_seq *decorator_list;
4203++ expr_ty returns;
4204++ } FunctionDef;
4205++
4206++ struct {
4207++ identifier name;
4208++ asdl_seq *bases;
4209++ asdl_seq *keywords;
4210++ expr_ty starargs;
4211++ expr_ty kwargs;
4212++ asdl_seq *body;
4213++ asdl_seq *decorator_list;
4214++ } ClassDef;
4215++
4216++ struct {
4217++ expr_ty value;
4218++ } Return;
4219++
4220++ struct {
4221++ asdl_seq *targets;
4222++ } Delete;
4223++
4224++ struct {
4225++ asdl_seq *targets;
4226++ expr_ty value;
4227++ } Assign;
4228++
4229++ struct {
4230++ expr_ty target;
4231++ operator_ty op;
4232++ expr_ty value;
4233++ } AugAssign;
4234++
4235++ struct {
4236++ expr_ty target;
4237++ expr_ty iter;
4238++ asdl_seq *body;
4239++ asdl_seq *orelse;
4240++ } For;
4241++
4242++ struct {
4243++ expr_ty test;
4244++ asdl_seq *body;
4245++ asdl_seq *orelse;
4246++ } While;
4247++
4248++ struct {
4249++ expr_ty test;
4250++ asdl_seq *body;
4251++ asdl_seq *orelse;
4252++ } If;
4253++
4254++ struct {
4255++ asdl_seq *items;
4256++ asdl_seq *body;
4257++ } With;
4258++
4259++ struct {
4260++ expr_ty exc;
4261++ expr_ty cause;
4262++ } Raise;
4263++
4264++ struct {
4265++ asdl_seq *body;
4266++ asdl_seq *handlers;
4267++ asdl_seq *orelse;
4268++ asdl_seq *finalbody;
4269++ } Try;
4270++
4271++ struct {
4272++ expr_ty test;
4273++ expr_ty msg;
4274++ } Assert;
4275++
4276++ struct {
4277++ asdl_seq *names;
4278++ } Import;
4279++
4280++ struct {
4281++ identifier module;
4282++ asdl_seq *names;
4283++ int level;
4284++ } ImportFrom;
4285++
4286++ struct {
4287++ asdl_seq *names;
4288++ } Global;
4289++
4290++ struct {
4291++ asdl_seq *names;
4292++ } Nonlocal;
4293++
4294++ struct {
4295++ expr_ty value;
4296++ } Expr;
4297++
4298++ } v;
4299++ int lineno;
4300++ int col_offset;
4301+ };
4302+
4303+ enum _expr_kind {BoolOp_kind=1, BinOp_kind=2, UnaryOp_kind=3, Lambda_kind=4,
4304+@@ -185,207 +185,207 @@
4305+ Ellipsis_kind=19, Attribute_kind=20, Subscript_kind=21,
4306+ Starred_kind=22, Name_kind=23, List_kind=24, Tuple_kind=25};
4307+ struct _expr {
4308+- enum _expr_kind kind;
4309+- union {
4310+- struct {
4311+- boolop_ty op;
4312+- asdl_seq *values;
4313+- } BoolOp;
4314+-
4315+- struct {
4316+- expr_ty left;
4317+- operator_ty op;
4318+- expr_ty right;
4319+- } BinOp;
4320+-
4321+- struct {
4322+- unaryop_ty op;
4323+- expr_ty operand;
4324+- } UnaryOp;
4325+-
4326+- struct {
4327+- arguments_ty args;
4328+- expr_ty body;
4329+- } Lambda;
4330+-
4331+- struct {
4332+- expr_ty test;
4333+- expr_ty body;
4334+- expr_ty orelse;
4335+- } IfExp;
4336+-
4337+- struct {
4338+- asdl_seq *keys;
4339+- asdl_seq *values;
4340+- } Dict;
4341+-
4342+- struct {
4343+- asdl_seq *elts;
4344+- } Set;
4345+-
4346+- struct {
4347+- expr_ty elt;
4348+- asdl_seq *generators;
4349+- } ListComp;
4350+-
4351+- struct {
4352+- expr_ty elt;
4353+- asdl_seq *generators;
4354+- } SetComp;
4355+-
4356+- struct {
4357+- expr_ty key;
4358+- expr_ty value;
4359+- asdl_seq *generators;
4360+- } DictComp;
4361+-
4362+- struct {
4363+- expr_ty elt;
4364+- asdl_seq *generators;
4365+- } GeneratorExp;
4366+-
4367+- struct {
4368+- expr_ty value;
4369+- } Yield;
4370+-
4371+- struct {
4372+- expr_ty value;
4373+- } YieldFrom;
4374+-
4375+- struct {
4376+- expr_ty left;
4377+- asdl_int_seq *ops;
4378+- asdl_seq *comparators;
4379+- } Compare;
4380+-
4381+- struct {
4382+- expr_ty func;
4383+- asdl_seq *args;
4384+- asdl_seq *keywords;
4385+- expr_ty starargs;
4386+- expr_ty kwargs;
4387+- } Call;
4388+-
4389+- struct {
4390+- object n;
4391+- } Num;
4392+-
4393+- struct {
4394+- string s;
4395+- } Str;
4396+-
4397+- struct {
4398+- bytes s;
4399+- } Bytes;
4400+-
4401+- struct {
4402+- expr_ty value;
4403+- identifier attr;
4404+- expr_context_ty ctx;
4405+- } Attribute;
4406+-
4407+- struct {
4408+- expr_ty value;
4409+- slice_ty slice;
4410+- expr_context_ty ctx;
4411+- } Subscript;
4412+-
4413+- struct {
4414+- expr_ty value;
4415+- expr_context_ty ctx;
4416+- } Starred;
4417+-
4418+- struct {
4419+- identifier id;
4420+- expr_context_ty ctx;
4421+- } Name;
4422+-
4423+- struct {
4424+- asdl_seq *elts;
4425+- expr_context_ty ctx;
4426+- } List;
4427+-
4428+- struct {
4429+- asdl_seq *elts;
4430+- expr_context_ty ctx;
4431+- } Tuple;
4432+-
4433+- } v;
4434+- int lineno;
4435+- int col_offset;
4436++ enum _expr_kind kind;
4437++ union {
4438++ struct {
4439++ boolop_ty op;
4440++ asdl_seq *values;
4441++ } BoolOp;
4442++
4443++ struct {
4444++ expr_ty left;
4445++ operator_ty op;
4446++ expr_ty right;
4447++ } BinOp;
4448++
4449++ struct {
4450++ unaryop_ty op;
4451++ expr_ty operand;
4452++ } UnaryOp;
4453++
4454++ struct {
4455++ arguments_ty args;
4456++ expr_ty body;
4457++ } Lambda;
4458++
4459++ struct {
4460++ expr_ty test;
4461++ expr_ty body;
4462++ expr_ty orelse;
4463++ } IfExp;
4464++
4465++ struct {
4466++ asdl_seq *keys;
4467++ asdl_seq *values;
4468++ } Dict;
4469++
4470++ struct {
4471++ asdl_seq *elts;
4472++ } Set;
4473++
4474++ struct {
4475++ expr_ty elt;
4476++ asdl_seq *generators;
4477++ } ListComp;
4478++
4479++ struct {
4480++ expr_ty elt;
4481++ asdl_seq *generators;
4482++ } SetComp;
4483++
4484++ struct {
4485++ expr_ty key;
4486++ expr_ty value;
4487++ asdl_seq *generators;
4488++ } DictComp;
4489++
4490++ struct {
4491++ expr_ty elt;
4492++ asdl_seq *generators;
4493++ } GeneratorExp;
4494++
4495++ struct {
4496++ expr_ty value;
4497++ } Yield;
4498++
4499++ struct {
4500++ expr_ty value;
4501++ } YieldFrom;
4502++
4503++ struct {
4504++ expr_ty left;
4505++ asdl_int_seq *ops;
4506++ asdl_seq *comparators;
4507++ } Compare;
4508++
4509++ struct {
4510++ expr_ty func;
4511++ asdl_seq *args;
4512++ asdl_seq *keywords;
4513++ expr_ty starargs;
4514++ expr_ty kwargs;
4515++ } Call;
4516++
4517++ struct {
4518++ object n;
4519++ } Num;
4520++
4521++ struct {
4522++ string s;
4523++ } Str;
4524++
4525++ struct {
4526++ bytes s;
4527++ } Bytes;
4528++
4529++ struct {
4530++ expr_ty value;
4531++ identifier attr;
4532++ expr_context_ty ctx;
4533++ } Attribute;
4534++
4535++ struct {
4536++ expr_ty value;
4537++ slice_ty slice;
4538++ expr_context_ty ctx;
4539++ } Subscript;
4540++
4541++ struct {
4542++ expr_ty value;
4543++ expr_context_ty ctx;
4544++ } Starred;
4545++
4546++ struct {
4547++ identifier id;
4548++ expr_context_ty ctx;
4549++ } Name;
4550++
4551++ struct {
4552++ asdl_seq *elts;
4553++ expr_context_ty ctx;
4554++ } List;
4555++
4556++ struct {
4557++ asdl_seq *elts;
4558++ expr_context_ty ctx;
4559++ } Tuple;
4560++
4561++ } v;
4562++ int lineno;
4563++ int col_offset;
4564+ };
4565+
4566+ enum _slice_kind {Slice_kind=1, ExtSlice_kind=2, Index_kind=3};
4567+ struct _slice {
4568+- enum _slice_kind kind;
4569+- union {
4570+- struct {
4571+- expr_ty lower;
4572+- expr_ty upper;
4573+- expr_ty step;
4574+- } Slice;
4575+-
4576+- struct {
4577+- asdl_seq *dims;
4578+- } ExtSlice;
4579+-
4580+- struct {
4581+- expr_ty value;
4582+- } Index;
4583+-
4584+- } v;
4585++ enum _slice_kind kind;
4586++ union {
4587++ struct {
4588++ expr_ty lower;
4589++ expr_ty upper;
4590++ expr_ty step;
4591++ } Slice;
4592++
4593++ struct {
4594++ asdl_seq *dims;
4595++ } ExtSlice;
4596++
4597++ struct {
4598++ expr_ty value;
4599++ } Index;
4600++
4601++ } v;
4602+ };
4603+
4604+ struct _comprehension {
4605+- expr_ty target;
4606+- expr_ty iter;
4607+- asdl_seq *ifs;
4608++ expr_ty target;
4609++ expr_ty iter;
4610++ asdl_seq *ifs;
4611+ };
4612+
4613+ enum _excepthandler_kind {ExceptHandler_kind=1};
4614+ struct _excepthandler {
4615+- enum _excepthandler_kind kind;
4616+- union {
4617+- struct {
4618+- expr_ty type;
4619+- identifier name;
4620+- asdl_seq *body;
4621+- } ExceptHandler;
4622+-
4623+- } v;
4624+- int lineno;
4625+- int col_offset;
4626++ enum _excepthandler_kind kind;
4627++ union {
4628++ struct {
4629++ expr_ty type;
4630++ identifier name;
4631++ asdl_seq *body;
4632++ } ExceptHandler;
4633++
4634++ } v;
4635++ int lineno;
4636++ int col_offset;
4637+ };
4638+
4639+ struct _arguments {
4640+- asdl_seq *args;
4641+- identifier vararg;
4642+- expr_ty varargannotation;
4643+- asdl_seq *kwonlyargs;
4644+- identifier kwarg;
4645+- expr_ty kwargannotation;
4646+- asdl_seq *defaults;
4647+- asdl_seq *kw_defaults;
4648++ asdl_seq *args;
4649++ identifier vararg;
4650++ expr_ty varargannotation;
4651++ asdl_seq *kwonlyargs;
4652++ identifier kwarg;
4653++ expr_ty kwargannotation;
4654++ asdl_seq *defaults;
4655++ asdl_seq *kw_defaults;
4656+ };
4657+
4658+ struct _arg {
4659+- identifier arg;
4660+- expr_ty annotation;
4661++ identifier arg;
4662++ expr_ty annotation;
4663+ };
4664+
4665+ struct _keyword {
4666+- identifier arg;
4667+- expr_ty value;
4668++ identifier arg;
4669++ expr_ty value;
4670+ };
4671+
4672+ struct _alias {
4673+- identifier name;
4674+- identifier asname;
4675++ identifier name;
4676++ identifier asname;
4677+ };
4678+
4679+ struct _withitem {
4680+- expr_ty context_expr;
4681+- expr_ty optional_vars;
4682++ expr_ty context_expr;
4683++ expr_ty optional_vars;
4684+ };
4685+
4686+
4687 diff -r d047928ae3f6 Include/patchlevel.h
4688 --- a/Include/patchlevel.h
4689 +++ b/Include/patchlevel.h
4690@@ -1175,6 +5176,18 @@
4691 /* always add new stuff to the end! */
4692 };
4693
4694+diff -r d047928ae3f6 Include/pymacro.h
4695+--- a/Include/pymacro.h
4696++++ b/Include/pymacro.h
4697+@@ -33,7 +33,7 @@
4698+
4699+ Requires at GCC 3.1+ */
4700+ #if (defined(__GNUC__) && !defined(__STRICT_ANSI__) && \
4701+- ((__GNUC__ == 3) && (__GNU_MINOR__ >= 1)) || (__GNUC__ >= 4))
4702++ (((__GNUC__ == 3) && (__GNU_MINOR__ >= 1)) || (__GNUC__ >= 4)))
4703+ /* Two gcc extensions.
4704+ &a[0] degrades to a pointer: a different type from an array */
4705+ #define Py_ARRAY_LENGTH(array) \
4706 diff -r d047928ae3f6 Lib/base64.py
4707 --- a/Lib/base64.py
4708 +++ b/Lib/base64.py
4709@@ -1207,6 +5220,61 @@
4710
4711
4712 def b32decode(s, casefold=False, map01=None):
4713+@@ -245,7 +245,7 @@
4714+ for c in s:
4715+ val = _b32rev.get(c)
4716+ if val is None:
4717+- raise TypeError('Non-base32 digit found')
4718++ raise binascii.Error('Non-base32 digit found')
4719+ acc += _b32rev[c] << shift
4720+ shift -= 5
4721+ if shift < 0:
4722+diff -r d047928ae3f6 Lib/cgi.py
4723+--- a/Lib/cgi.py
4724++++ b/Lib/cgi.py
4725+@@ -699,7 +699,7 @@
4726+ self.encoding, self.errors)
4727+ self.bytes_read += part.bytes_read
4728+ self.list.append(part)
4729+- if self.bytes_read >= self.length:
4730++ if part.done or self.bytes_read >= self.length > 0:
4731+ break
4732+ self.skip_lines()
4733+
4734+@@ -786,6 +786,9 @@
4735+ if not line:
4736+ self.done = -1
4737+ break
4738++ if delim == b"\r":
4739++ line = delim + line
4740++ delim = b""
4741+ if line.startswith(b"--") and last_line_lfend:
4742+ strippedline = line.rstrip()
4743+ if strippedline == next_boundary:
4744+@@ -802,6 +805,12 @@
4745+ delim = b"\n"
4746+ line = line[:-1]
4747+ last_line_lfend = True
4748++ elif line.endswith(b"\r"):
4749++ # We may interrupt \r\n sequences if they span the 2**16
4750++ # byte boundary
4751++ delim = b"\r"
4752++ line = line[:-1]
4753++ last_line_lfend = False
4754+ else:
4755+ delim = b""
4756+ last_line_lfend = False
4757+diff -r d047928ae3f6 Lib/codecs.py
4758+--- a/Lib/codecs.py
4759++++ b/Lib/codecs.py
4760+@@ -105,6 +105,7 @@
4761+ Python will use the official U+FFFD REPLACEMENT
4762+ CHARACTER for the builtin Unicode codecs on
4763+ decoding and '?' on encoding.
4764++ 'surrogateescape' - replace with private codepoints U+DCnn.
4765+ 'xmlcharrefreplace' - Replace with the appropriate XML
4766+ character reference (only for encoding).
4767+ 'backslashreplace' - Replace with backslashed escape sequences
4768 diff -r d047928ae3f6 Lib/collections/__init__.py
4769 --- a/Lib/collections/__init__.py
4770 +++ b/Lib/collections/__init__.py
4771@@ -1279,6 +5347,42 @@
4772 result = namespace[typename]
4773 result._source = class_definition
4774 if verbose:
4775+diff -r d047928ae3f6 Lib/configparser.py
4776+--- a/Lib/configparser.py
4777++++ b/Lib/configparser.py
4778+@@ -191,7 +191,7 @@
4779+ def __init__(self, section, source=None, lineno=None):
4780+ msg = [repr(section), " already exists"]
4781+ if source is not None:
4782+- message = ["While reading from ", source]
4783++ message = ["While reading from ", repr(source)]
4784+ if lineno is not None:
4785+ message.append(" [line {0:2d}]".format(lineno))
4786+ message.append(": section ")
4787+@@ -217,7 +217,7 @@
4788+ msg = [repr(option), " in section ", repr(section),
4789+ " already exists"]
4790+ if source is not None:
4791+- message = ["While reading from ", source]
4792++ message = ["While reading from ", repr(source)]
4793+ if lineno is not None:
4794+ message.append(" [line {0:2d}]".format(lineno))
4795+ message.append(": option ")
4796+diff -r d047928ae3f6 Lib/csv.py
4797+--- a/Lib/csv.py
4798++++ b/Lib/csv.py
4799+@@ -264,8 +264,9 @@
4800+
4801+ # if we see an extra quote between delimiters, we've got a
4802+ # double quoted format
4803+- dq_regexp = re.compile(r"((%(delim)s)|^)\W*%(quote)s[^%(delim)s\n]*%(quote)s[^%(delim)s\n]*%(quote)s\W*((%(delim)s)|$)" % \
4804+- {'delim':delim, 'quote':quotechar}, re.MULTILINE)
4805++ dq_regexp = re.compile(
4806++ r"((%(delim)s)|^)\W*%(quote)s[^%(delim)s\n]*%(quote)s[^%(delim)s\n]*%(quote)s\W*((%(delim)s)|$)" % \
4807++ {'delim':re.escape(delim), 'quote':quotechar}, re.MULTILINE)
4808+
4809+
4810+
4811 diff -r d047928ae3f6 Lib/ctypes/util.py
4812 --- a/Lib/ctypes/util.py
4813 +++ b/Lib/ctypes/util.py
4814@@ -1291,9 +5395,340 @@
4815 try:
4816 f = os.popen(cmd)
4817 try:
4818+diff -r d047928ae3f6 Lib/dbm/__init__.py
4819+--- a/Lib/dbm/__init__.py
4820++++ b/Lib/dbm/__init__.py
4821+@@ -44,6 +44,11 @@
4822+
4823+ error = (error, IOError)
4824+
4825++try:
4826++ from dbm import ndbm
4827++except ImportError:
4828++ ndbm = None
4829++
4830+
4831+ def open(file, flag='r', mode=0o666):
4832+ """Open or create database at path given by *file*.
4833+diff -r d047928ae3f6 Lib/decimal.py
4834+--- a/Lib/decimal.py
4835++++ b/Lib/decimal.py
4836+@@ -6140,7 +6140,7 @@
4837+ (?:\.(?P<precision>0|(?!0)\d+))?
4838+ (?P<type>[eEfFgGn%])?
4839+ \Z
4840+-""", re.VERBOSE)
4841++""", re.VERBOSE|re.DOTALL)
4842+
4843+ del re
4844+
4845+diff -r d047928ae3f6 Lib/distutils/sysconfig.py
4846+--- a/Lib/distutils/sysconfig.py
4847++++ b/Lib/distutils/sysconfig.py
4848+@@ -195,9 +195,15 @@
4849+ get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS',
4850+ 'CCSHARED', 'LDSHARED', 'SHLIB_SUFFIX', 'AR', 'ARFLAGS')
4851+
4852+- newcc = None
4853+ if 'CC' in os.environ:
4854+- cc = os.environ['CC']
4855++ newcc = os.environ['CC']
4856++ if (sys.platform == 'darwin'
4857++ and 'LDSHARED' not in os.environ
4858++ and ldshared.startswith(cc)):
4859++ # On OS X, if CC is overridden, use that as the default
4860++ # command for LDSHARED as well
4861++ ldshared = newcc + ldshared[len(cc):]
4862++ cc = newcc
4863+ if 'CXX' in os.environ:
4864+ cxx = os.environ['CXX']
4865+ if 'LDSHARED' in os.environ:
4866+diff -r d047928ae3f6 Lib/distutils/tests/test_unixccompiler.py
4867+--- a/Lib/distutils/tests/test_unixccompiler.py
4868++++ b/Lib/distutils/tests/test_unixccompiler.py
4869+@@ -1,7 +1,8 @@
4870+ """Tests for distutils.unixccompiler."""
4871++import os
4872+ import sys
4873+ import unittest
4874+-from test.support import run_unittest
4875++from test.support import EnvironmentVarGuard, run_unittest
4876+
4877+ from distutils import sysconfig
4878+ from distutils.unixccompiler import UnixCCompiler
4879+@@ -94,7 +95,6 @@
4880+ sysconfig.get_config_var = gcv
4881+ self.assertEqual(self.cc.rpath_foo(), '-Wl,--enable-new-dtags,-R/foo')
4882+
4883+-
4884+ # non-GCC GNULD
4885+ sys.platform = 'bar'
4886+ def gcv(v):
4887+@@ -115,6 +115,38 @@
4888+ sysconfig.get_config_var = gcv
4889+ self.assertEqual(self.cc.rpath_foo(), '-R/foo')
4890+
4891++ @unittest.skipUnless(sys.platform == 'darwin', 'test only relevant for OS X')
4892++ def test_osx_cc_overrides_ldshared(self):
4893++ # Issue #18080:
4894++ # ensure that setting CC env variable also changes default linker
4895++ def gcv(v):
4896++ if v == 'LDSHARED':
4897++ return 'gcc-4.2 -bundle -undefined dynamic_lookup '
4898++ return 'gcc-4.2'
4899++ sysconfig.get_config_var = gcv
4900++ with EnvironmentVarGuard() as env:
4901++ env['CC'] = 'my_cc'
4902++ del env['LDSHARED']
4903++ sysconfig.customize_compiler(self.cc)
4904++ self.assertEqual(self.cc.linker_so[0], 'my_cc')
4905++
4906++ @unittest.skipUnless(sys.platform == 'darwin', 'test only relevant for OS X')
4907++ def test_osx_explict_ldshared(self):
4908++ # Issue #18080:
4909++ # ensure that setting CC env variable does not change
4910++ # explicit LDSHARED setting for linker
4911++ def gcv(v):
4912++ if v == 'LDSHARED':
4913++ return 'gcc-4.2 -bundle -undefined dynamic_lookup '
4914++ return 'gcc-4.2'
4915++ sysconfig.get_config_var = gcv
4916++ with EnvironmentVarGuard() as env:
4917++ env['CC'] = 'my_cc'
4918++ env['LDSHARED'] = 'my_ld -bundle -dynamic'
4919++ sysconfig.customize_compiler(self.cc)
4920++ self.assertEqual(self.cc.linker_so[0], 'my_ld')
4921++
4922++
4923+ def test_suite():
4924+ return unittest.makeSuite(UnixCCompilerTestCase)
4925+
4926+diff -r d047928ae3f6 Lib/email/_header_value_parser.py
4927+--- a/Lib/email/_header_value_parser.py
4928++++ b/Lib/email/_header_value_parser.py
4929+@@ -69,6 +69,7 @@
4930+
4931+ import re
4932+ import urllib # For urllib.parse.unquote
4933++from string import hexdigits
4934+ from collections import namedtuple, OrderedDict
4935+ from email import _encoded_words as _ew
4936+ from email import errors
4937+@@ -392,10 +393,6 @@
4938+ token_type = 'unstructured'
4939+
4940+ def _fold(self, folded):
4941+- if any(x.token_type=='encoded-word' for x in self):
4942+- return self._fold_encoded(folded)
4943+- # Here we can have either a pure ASCII string that may or may not
4944+- # have surrogateescape encoded bytes, or a unicode string.
4945+ last_ew = None
4946+ for part in self.parts:
4947+ tstr = str(part)
4948+@@ -1389,35 +1386,6 @@
4949+ pos = pos + 1
4950+ return ''.join(vchars), ''.join([fragment[pos:]] + remainder), had_qp
4951+
4952+-def _decode_ew_run(value):
4953+- """ Decode a run of RFC2047 encoded words.
4954+-
4955+- _decode_ew_run(value) -> (text, value, defects)
4956+-
4957+- Scans the supplied value for a run of tokens that look like they are RFC
4958+- 2047 encoded words, decodes those words into text according to RFC 2047
4959+- rules (whitespace between encoded words is discarded), and returns the text
4960+- and the remaining value (including any leading whitespace on the remaining
4961+- value), as well as a list of any defects encountered while decoding. The
4962+- input value may not have any leading whitespace.
4963+-
4964+- """
4965+- res = []
4966+- defects = []
4967+- last_ws = ''
4968+- while value:
4969+- try:
4970+- tok, ws, value = _wsp_splitter(value, 1)
4971+- except ValueError:
4972+- tok, ws, value = value, '', ''
4973+- if not (tok.startswith('=?') and tok.endswith('?=')):
4974+- return ''.join(res), last_ws + tok + ws + value, defects
4975+- text, charset, lang, new_defects = _ew.decode(tok)
4976+- res.append(text)
4977+- defects.extend(new_defects)
4978+- last_ws = ws
4979+- return ''.join(res), last_ws, defects
4980+-
4981+ def get_fws(value):
4982+ """FWS = 1*WSP
4983+
4984+@@ -1443,7 +1411,8 @@
4985+ raise errors.HeaderParseError(
4986+ "expected encoded word but found {}".format(value))
4987+ remstr = ''.join(remainder)
4988+- if remstr[:2].isdigit():
4989++ if len(remstr) > 1 and remstr[0] in hexdigits and remstr[1] in hexdigits:
4990++ # The ? after the CTE was followed by an encoded word escape (=XX).
4991+ rest, *remainder = remstr.split('?=', 1)
4992+ tok = tok + '?=' + rest
4993+ if len(tok.split()) > 1:
4994+@@ -1491,8 +1460,8 @@
4995+
4996+ """
4997+ # XXX: but what about bare CR and LF? They might signal the start or
4998+- # end of an encoded word. YAGNI for now, since out current parsers
4999+- # will never send us strings with bard CR or LF.
5000++ # end of an encoded word. YAGNI for now, since our current parsers
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches