Skip to content
This repository was archived by the owner on Feb 13, 2025. It is now read-only.

Commit 9e35d93

Browse files
author
Anselm Kruis
committed
merge branch 3.5
2 parents fa700f6 + e471ab3 commit 9e35d93

File tree

225 files changed

+5252
-2885
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

225 files changed

+5252
-2885
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111
*.rej
1212
*.swp
1313
*~
14+
*.gc??
15+
*.profclang?
16+
*.profraw
1417
.gdb_history
1518
Doc/build/
1619
Doc/venv/

.hgignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ libpython*.so*
5050
*.pyd
5151
*.cover
5252
*~
53+
*.gc??
54+
*.profclang?
55+
*.profraw
5356
Lib/distutils/command/*.pdb
5457
Lib/lib2to3/*.pickle
5558
Lib/test/data/*

Doc/c-api/buffer.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -133,15 +133,15 @@ a buffer, see :c:func:`PyObject_GetBuffer`.
133133
called on non-NULL :c:member:`~Py_buffer.format` values.
134134

135135
Important exception: If a consumer requests a buffer without the
136-
:c:macro:`PyBUF_FORMAT` flag, :c:member:`~Py_Buffer.format` will
136+
:c:macro:`PyBUF_FORMAT` flag, :c:member:`~Py_buffer.format` will
137137
be set to *NULL*, but :c:member:`~Py_buffer.itemsize` still has
138138
the value for the original format.
139139

140-
If :c:member:`~Py_Buffer.shape` is present, the equality
140+
If :c:member:`~Py_buffer.shape` is present, the equality
141141
``product(shape) * itemsize == len`` still holds and the consumer
142142
can use :c:member:`~Py_buffer.itemsize` to navigate the buffer.
143143

144-
If :c:member:`~Py_Buffer.shape` is *NULL* as a result of a :c:macro:`PyBUF_SIMPLE`
144+
If :c:member:`~Py_buffer.shape` is *NULL* as a result of a :c:macro:`PyBUF_SIMPLE`
145145
or a :c:macro:`PyBUF_WRITABLE` request, the consumer must disregard
146146
:c:member:`~Py_buffer.itemsize` and assume ``itemsize == 1``.
147147

@@ -156,7 +156,7 @@ a buffer, see :c:func:`PyObject_GetBuffer`.
156156
.. c:member:: int ndim
157157
158158
The number of dimensions the memory represents as an n-dimensional array.
159-
If it is 0, :c:member:`~Py_Buffer.buf` points to a single item representing
159+
If it is 0, :c:member:`~Py_buffer.buf` points to a single item representing
160160
a scalar. In this case, :c:member:`~Py_buffer.shape`, :c:member:`~Py_buffer.strides`
161161
and :c:member:`~Py_buffer.suboffsets` MUST be *NULL*.
162162

Doc/c-api/typeobj.rst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ type objects) *must* have the :attr:`ob_size` field.
9494
This field is not inherited by subtypes.
9595

9696

97-
.. c:member:: char* PyTypeObject.tp_name
97+
.. c:member:: const char* PyTypeObject.tp_name
9898
9999
Pointer to a NUL-terminated string containing the name of the type. For types
100100
that are accessible as module globals, the string should be the full module
@@ -372,7 +372,7 @@ type objects) *must* have the :attr:`ob_size` field.
372372
inherited individually.
373373

374374

375-
.. c:member:: long PyTypeObject.tp_flags
375+
.. c:member:: unsigned long PyTypeObject.tp_flags
376376
377377
This field is a bit mask of various flags. Some flags indicate variant
378378
semantics for certain situations; others are used to indicate that certain
@@ -472,7 +472,7 @@ type objects) *must* have the :attr:`ob_size` field.
472472
.. versionadded:: 3.4
473473

474474

475-
.. c:member:: char* PyTypeObject.tp_doc
475+
.. c:member:: const char* PyTypeObject.tp_doc
476476
477477
An optional pointer to a NUL-terminated C string giving the docstring for this
478478
type object. This is exposed as the :attr:`__doc__` attribute on the type and
@@ -619,7 +619,7 @@ type objects) *must* have the :attr:`ob_size` field.
619619
+----------------+------------+
620620

621621

622-
.. c:member:: long PyTypeObject.tp_weaklistoffset
622+
.. c:member:: Py_ssize_t PyTypeObject.tp_weaklistoffset
623623
624624
If the instances of this type are weakly referenceable, this field is greater
625625
than zero and contains the offset in the instance structure of the weak
@@ -786,7 +786,7 @@ type objects) *must* have the :attr:`ob_size` field.
786786
.. XXX explain.
787787
788788
789-
.. c:member:: long PyTypeObject.tp_dictoffset
789+
.. c:member:: Py_ssize_t PyTypeObject.tp_dictoffset
790790
791791
If the instances of this type have a dictionary containing instance variables,
792792
this field is non-zero and contains the offset in the instances of the type of

Doc/distutils/apiref.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -521,7 +521,7 @@ This module provides the following functions.
521521

522522
.. method:: CCompiler.library_option(lib)
523523

524-
Return the compiler option to add *dir* to the list of libraries linked into the
524+
Return the compiler option to add *lib* to the list of libraries linked into the
525525
shared library or executable.
526526

527527

Doc/extending/newtypes.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -893,20 +893,20 @@ fields in the right order! It's often easiest to find an example that includes
893893
all the fields you need (even if they're initialized to ``0``) and then change
894894
the values to suit your new type. ::
895895

896-
char *tp_name; /* For printing */
896+
const char *tp_name; /* For printing */
897897

898898
The name of the type - as mentioned in the last section, this will appear in
899899
various places, almost entirely for diagnostic purposes. Try to choose something
900900
that will be helpful in such a situation! ::
901901

902-
int tp_basicsize, tp_itemsize; /* For allocation */
902+
Py_ssize_t tp_basicsize, tp_itemsize; /* For allocation */
903903

904904
These fields tell the runtime how much memory to allocate when new objects of
905905
this type are created. Python has some built-in support for variable length
906906
structures (think: strings, lists) which is where the :c:member:`~PyTypeObject.tp_itemsize` field
907907
comes in. This will be dealt with later. ::
908908

909-
char *tp_doc;
909+
const char *tp_doc;
910910

911911
Here you can put a string (or its address) that you want returned when the
912912
Python script references ``obj.__doc__`` to retrieve the doc string.

Doc/extending/windows.rst

Lines changed: 3 additions & 143 deletions
Original file line numberDiff line numberDiff line change
@@ -37,149 +37,9 @@ There are two approaches to building extension modules on Windows, just as there
3737
are on Unix: use the :mod:`distutils` package to control the build process, or
3838
do things manually. The distutils approach works well for most extensions;
3939
documentation on using :mod:`distutils` to build and package extension modules
40-
is available in :ref:`distutils-index`. This section describes the manual
41-
approach to building Python extensions written in C or C++.
42-
43-
To build extensions using these instructions, you need to have a copy of the
44-
Python sources of the same version as your installed Python. You will need
45-
Microsoft Visual C++ "Developer Studio"; project files are supplied for VC++
46-
version 7.1, but you can use older versions of VC++. Notice that you should use
47-
the same version of VC++that was used to build Python itself. The example files
48-
described here are distributed with the Python sources in the
49-
:file:`PC\\example_nt\\` directory.
50-
51-
#. **Copy the example files** --- The :file:`example_nt` directory is a
52-
subdirectory of the :file:`PC` directory, in order to keep all the PC-specific
53-
files under the same directory in the source distribution. However, the
54-
:file:`example_nt` directory can't actually be used from this location. You
55-
first need to copy or move it up one level, so that :file:`example_nt` is a
56-
sibling of the :file:`PC` and :file:`Include` directories. Do all your work
57-
from within this new location.
58-
59-
#. **Open the project** --- From VC++, use the :menuselection:`File --> Open
60-
Solution` dialog (not :menuselection:`File --> Open`!). Navigate to and select
61-
the file :file:`example.sln`, in the *copy* of the :file:`example_nt` directory
62-
you made above. Click Open.
63-
64-
#. **Build the example DLL** --- In order to check that everything is set up
65-
right, try building:
66-
67-
#. Select a configuration. This step is optional. Choose
68-
:menuselection:`Build --> Configuration Manager --> Active Solution Configuration`
69-
and select either :guilabel:`Release` or :guilabel:`Debug`. If you skip this
70-
step, VC++ will use the Debug configuration by default.
71-
72-
#. Build the DLL. Choose :menuselection:`Build --> Build Solution`. This
73-
creates all intermediate and result files in a subdirectory called either
74-
:file:`Debug` or :file:`Release`, depending on which configuration you selected
75-
in the preceding step.
76-
77-
#. **Testing the debug-mode DLL** --- Once the Debug build has succeeded, bring
78-
up a DOS box, and change to the :file:`example_nt\\Debug` directory. You should
79-
now be able to repeat the following session (``C>`` is the DOS prompt, ``>>>``
80-
is the Python prompt; note that build information and various debug output from
81-
Python may not match this screen dump exactly)::
82-
83-
C>..\..\PCbuild\python_d
84-
Adding parser accelerators ...
85-
Done.
86-
Python 2.2 (#28, Dec 19 2001, 23:26:37) [MSC 32 bit (Intel)] on win32
87-
Type "copyright", "credits" or "license" for more information.
88-
>>> import example
89-
[4897 refs]
90-
>>> example.foo()
91-
Hello, world
92-
[4903 refs]
93-
>>>
94-
95-
Congratulations! You've successfully built your first Python extension module.
96-
97-
#. **Creating your own project** --- Choose a name and create a directory for
98-
it. Copy your C sources into it. Note that the module source file name does
99-
not necessarily have to match the module name, but the name of the
100-
initialization function should match the module name --- you can only import a
101-
module :mod:`spam` if its initialization function is called :c:func:`PyInit_spam`,
102-
(see :ref:`building`, or use the minimal :file:`Modules/xxmodule.c` as a guide).
103-
By convention, it lives in a file called :file:`spam.c` or :file:`spammodule.c`.
104-
The output file should be called :file:`spam.pyd` (in Release mode) or
105-
:file:`spam_d.pyd` (in Debug mode). The extension :file:`.pyd` was chosen
106-
to avoid confusion with a system library :file:`spam.dll` to which your module
107-
could be a Python interface.
108-
109-
Now your options are:
110-
111-
#. Copy :file:`example.sln` and :file:`example.vcproj`, rename them to
112-
:file:`spam.\*`, and edit them by hand, or
113-
114-
#. Create a brand new project; instructions are below.
115-
116-
In either case, copy :file:`example_nt\\example.def` to :file:`spam\\spam.def`,
117-
and edit the new :file:`spam.def` so its second line contains the string
118-
'``initspam``'. If you created a new project yourself, add the file
119-
:file:`spam.def` to the project now. (This is an annoying little file with only
120-
two lines. An alternative approach is to forget about the :file:`.def` file,
121-
and add the option :option:`/export:initspam` somewhere to the Link settings, by
122-
manually editing the setting in Project Properties dialog).
123-
124-
#. **Creating a brand new project** --- Use the :menuselection:`File --> New
125-
--> Project` dialog to create a new Project Workspace. Select :guilabel:`Visual
126-
C++ Projects/Win32/ Win32 Project`, enter the name (``spam``), and make sure the
127-
Location is set to parent of the :file:`spam` directory you have created (which
128-
should be a direct subdirectory of the Python build tree, a sibling of
129-
:file:`Include` and :file:`PC`). Select Win32 as the platform (in my version,
130-
this is the only choice). Make sure the Create new workspace radio button is
131-
selected. Click OK.
132-
133-
You should now create the file :file:`spam.def` as instructed in the previous
134-
section. Add the source files to the project, using :menuselection:`Project -->
135-
Add Existing Item`. Set the pattern to ``*.*`` and select both :file:`spam.c`
136-
and :file:`spam.def` and click OK. (Inserting them one by one is fine too.)
137-
138-
Now open the :menuselection:`Project --> spam properties` dialog. You only need
139-
to change a few settings. Make sure :guilabel:`All Configurations` is selected
140-
from the :guilabel:`Settings for:` dropdown list. Select the C/C++ tab. Choose
141-
the General category in the popup menu at the top. Type the following text in
142-
the entry box labeled :guilabel:`Additional Include Directories`::
143-
144-
..\Include,..\PC
145-
146-
Then, choose the General category in the Linker tab, and enter ::
147-
148-
..\PCbuild
149-
150-
in the text box labelled :guilabel:`Additional library Directories`.
151-
152-
Now you need to add some mode-specific settings:
153-
154-
Select :guilabel:`Release` in the :guilabel:`Configuration` dropdown list.
155-
Choose the :guilabel:`Link` tab, choose the :guilabel:`Input` category, and
156-
append ``pythonXY.lib`` to the list in the :guilabel:`Additional Dependencies`
157-
box.
158-
159-
Select :guilabel:`Debug` in the :guilabel:`Configuration` dropdown list, and
160-
append ``pythonXY_d.lib`` to the list in the :guilabel:`Additional Dependencies`
161-
box. Then click the C/C++ tab, select :guilabel:`Code Generation`, and select
162-
:guilabel:`Multi-threaded Debug DLL` from the :guilabel:`Runtime library`
163-
dropdown list.
164-
165-
Select :guilabel:`Release` again from the :guilabel:`Configuration` dropdown
166-
list. Select :guilabel:`Multi-threaded DLL` from the :guilabel:`Runtime
167-
library` dropdown list.
168-
169-
If your module creates a new type, you may have trouble with this line::
170-
171-
PyVarObject_HEAD_INIT(&PyType_Type, 0)
172-
173-
Static type object initializers in extension modules may cause
174-
compiles to fail with an error message like "initializer not a
175-
constant". This shows up when building DLL under MSVC. Change it to::
176-
177-
PyVarObject_HEAD_INIT(NULL, 0)
178-
179-
and add the following to the module initialization function::
180-
181-
if (PyType_Ready(&MyObject_Type) < 0)
182-
return NULL;
40+
is available in :ref:`distutils-index`. If you find you really need to do
41+
things manually, it may be instructive to study the project file for the
42+
:source:`winsound <PCbuild/winsound.vcxproj>` standard library module.
18343

18444

18545
.. _dynamic-linking:

Doc/faq/extending.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ complete example using the GNU readline library (you may want to ignore
348348
{
349349
line = readline (prompt);
350350

351-
if (NULL == line) /* CTRL-D pressed */
351+
if (NULL == line) /* Ctrl-D pressed */
352352
{
353353
done = 1;
354354
}

Doc/faq/programming.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1164,6 +1164,8 @@ analogue of lisp car is ``lisp_list[0]`` and the analogue of cdr is
11641164
usually a lot slower than using Python lists.
11651165

11661166

1167+
.. _faq-multidimensional-list:
1168+
11671169
How do I create a multidimensional list?
11681170
----------------------------------------
11691171

Doc/faq/windows.rst

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -81,14 +81,14 @@ by entering a few expressions of your choice and seeing the results::
8181
'HelloHelloHello'
8282

8383
Many people use the interactive mode as a convenient yet highly programmable
84-
calculator. When you want to end your interactive Python session, hold the Ctrl
85-
key down while you enter a Z, then hit the "Enter" key to get back to your
84+
calculator. When you want to end your interactive Python session, hold the :kbd:`Ctrl`
85+
key down while you enter a :kbd:`Z`, then hit the ":kbd:`Enter`" key to get back to your
8686
Windows command prompt.
8787

8888
You may also find that you have a Start-menu entry such as :menuselection:`Start
8989
--> Programs --> Python 3.3 --> Python (command line)` that results in you
9090
seeing the ``>>>`` prompt in a new window. If so, the window will disappear
91-
after you enter the Ctrl-Z character; Windows is running a single "python"
91+
after you enter the :kbd:`Ctrl-Z` character; Windows is running a single "python"
9292
command in the window, and closes it when you terminate the interpreter.
9393

9494
If the ``python`` command, instead of displaying the interpreter prompt ``>>>``,
@@ -131,8 +131,8 @@ you should make sure that entering the command ::
131131

132132
c:\Python33\python
133133

134-
starts up the interpreter as above (and don't forget you'll need a "CTRL-Z" and
135-
an "Enter" to get out of it). Once you have verified the directory, you can
134+
starts up the interpreter as above (and don't forget you'll need a ":kbd:`Ctrl-Z`" and
135+
an ":kbd:`Enter`" to get out of it). Once you have verified the directory, you can
136136
add it to the system path to make it easier to start Python by just running
137137
the ``python`` command. This is currently an option in the installer as of
138138
CPython 3.3.
@@ -327,7 +327,7 @@ Prior to Python 2.7 and 3.2, to terminate a process, you can use :mod:`ctypes`::
327327
return (0 != kernel32.TerminateProcess(handle, 0))
328328

329329
In 2.7 and 3.2, :func:`os.kill` is implemented similar to the above function,
330-
with the additional feature of being able to send CTRL+C and CTRL+BREAK
330+
with the additional feature of being able to send :kbd:`Ctrl+C` and :kbd:`Ctrl+Break`
331331
to console subprocesses which are designed to handle those signals. See
332332
:func:`os.kill` for further details.
333333

Doc/howto/urllib2.rst

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ Explorer [#]_. ::
174174
import urllib.request
175175

176176
url = 'http://www.someserver.com/cgi-bin/register.cgi'
177-
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
177+
user_agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64)'
178178
values = {'name' : 'Michael Foord',
179179
'location' : 'Northampton',
180180
'language' : 'Python' }
@@ -572,8 +572,7 @@ Footnotes
572572

573573
This document was reviewed and revised by John Lee.
574574

575-
.. [#] Like Google for example. The *proper* way to use google from a program
576-
is to use `PyGoogle <http://pygoogle.sourceforge.net>`_ of course.
575+
.. [#] Google for example.
577576
.. [#] Browser sniffing is a very bad practise for website design - building
578577
sites using web standards is much more sensible. Unfortunately a lot of
579578
sites still send different versions to different browsers.

0 commit comments

Comments
 (0)