mirror of
https://github.com/python/cpython.git
synced 2025-07-23 11:15:24 +00:00
Merged revisions 69803-69805,69840,69901,69905,69907,69924,69927,69987 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r69803 | georg.brandl | 2009-02-20 01:48:21 -0600 (Fri, 20 Feb 2009) | 1 line #5327: fix a broken link by joining it. ........ r69804 | georg.brandl | 2009-02-20 02:22:21 -0600 (Fri, 20 Feb 2009) | 1 line At least separate imports from other statements. ........ r69805 | georg.brandl | 2009-02-20 02:45:47 -0600 (Fri, 20 Feb 2009) | 2 lines Fix punctuation. ........ r69840 | georg.brandl | 2009-02-21 13:09:40 -0600 (Sat, 21 Feb 2009) | 1 line #5338, #5339: two types in the API manual. ........ r69901 | georg.brandl | 2009-02-23 05:24:46 -0600 (Mon, 23 Feb 2009) | 2 lines #5349: C++ pure virtuals can also have an implementation. ........ r69905 | georg.brandl | 2009-02-23 09:51:27 -0600 (Mon, 23 Feb 2009) | 2 lines #5352: str.count() counts non-overlapping instances. ........ r69907 | georg.brandl | 2009-02-23 12:33:48 -0600 (Mon, 23 Feb 2009) | 1 line Fix grammar. ........ r69924 | benjamin.peterson | 2009-02-23 20:45:35 -0600 (Mon, 23 Feb 2009) | 1 line update README on running tests ........ r69927 | neil.schemenauer | 2009-02-23 22:23:25 -0600 (Mon, 23 Feb 2009) | 1 line Fix call to os.waitpid, it does not take keyword args. ........ r69987 | benjamin.peterson | 2009-02-25 18:30:11 -0600 (Wed, 25 Feb 2009) | 1 line fix str.format()'s first arg #5371 ........
This commit is contained in:
parent
40ce6cc066
commit
ad3d5c2235
12 changed files with 55 additions and 23 deletions
|
@ -187,7 +187,7 @@ caller is said to receive a *new* reference. When no ownership is transferred,
|
||||||
the caller is said to *borrow* the reference. Nothing needs to be done for a
|
the caller is said to *borrow* the reference. Nothing needs to be done for a
|
||||||
borrowed reference.
|
borrowed reference.
|
||||||
|
|
||||||
Conversely, when a calling function passes it a reference to an object, there
|
Conversely, when a calling function passes in a reference to an object, there
|
||||||
are two possibilities: the function *steals* a reference to the object, or it
|
are two possibilities: the function *steals* a reference to the object, or it
|
||||||
does not. *Stealing a reference* means that when you pass a reference to a
|
does not. *Stealing a reference* means that when you pass a reference to a
|
||||||
function, that function assumes that it now owns that reference, and you are not
|
function, that function assumes that it now owns that reference, and you are not
|
||||||
|
|
|
@ -16,7 +16,7 @@ parameter. The available start symbols are :const:`Py_eval_input`,
|
||||||
:const:`Py_file_input`, and :const:`Py_single_input`. These are described
|
:const:`Py_file_input`, and :const:`Py_single_input`. These are described
|
||||||
following the functions which accept them as parameters.
|
following the functions which accept them as parameters.
|
||||||
|
|
||||||
Note also that several of these functions take :ctype:`FILE\*` parameters. On
|
Note also that several of these functions take :ctype:`FILE\*` parameters. One
|
||||||
particular issue which needs to be handled carefully is that the :ctype:`FILE`
|
particular issue which needs to be handled carefully is that the :ctype:`FILE`
|
||||||
structure for different C libraries can be different and incompatible. Under
|
structure for different C libraries can be different and incompatible. Under
|
||||||
Windows (at least), it is possible for dynamically linked extensions to actually
|
Windows (at least), it is possible for dynamically linked extensions to actually
|
||||||
|
|
|
@ -99,7 +99,8 @@ simple CGI program::
|
||||||
# -*- coding: UTF-8 -*-
|
# -*- coding: UTF-8 -*-
|
||||||
|
|
||||||
# enable debugging
|
# enable debugging
|
||||||
import cgitb; cgitb.enable()
|
import cgitb
|
||||||
|
cgitb.enable()
|
||||||
|
|
||||||
print("Content-Type: text/plain;charset=utf-8")
|
print("Content-Type: text/plain;charset=utf-8")
|
||||||
print()
|
print()
|
||||||
|
|
|
@ -38,9 +38,9 @@ It can be converted to Python 3.x code via 2to3 on the command line::
|
||||||
$ 2to3 example.py
|
$ 2to3 example.py
|
||||||
|
|
||||||
A diff against the original source file is printed. 2to3 can also write the
|
A diff against the original source file is printed. 2to3 can also write the
|
||||||
needed modifications right back to the source file. (Of course, a backup of the
|
needed modifications right back to the source file. (A backup of the original
|
||||||
original is also be made unless :option:`-n` is also given.) Writing the
|
file is made unless :option:`-n` is also given.) Writing the changes back is
|
||||||
changes back is enabled with the :option:`-w` flag::
|
enabled with the :option:`-w` flag::
|
||||||
|
|
||||||
$ 2to3 -w example.py
|
$ 2to3 -w example.py
|
||||||
|
|
||||||
|
|
|
@ -150,7 +150,7 @@ It also provides the following decorators:
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
Unlike C++'s pure virtual functions, or Java abstract methods, these abstract
|
Unlike Java abstract methods, these abstract
|
||||||
methods may have an implementation. This implementation can be
|
methods may have an implementation. This implementation can be
|
||||||
called via the :func:`super` mechanism from the class that
|
called via the :func:`super` mechanism from the class that
|
||||||
overrides it. This could be useful as an end-point for a
|
overrides it. This could be useful as an end-point for a
|
||||||
|
|
|
@ -65,16 +65,18 @@ Using the cgi module
|
||||||
|
|
||||||
Begin by writing ``import cgi``.
|
Begin by writing ``import cgi``.
|
||||||
|
|
||||||
When you write a new script, consider adding the line::
|
When you write a new script, consider adding these lines::
|
||||||
|
|
||||||
import cgitb; cgitb.enable()
|
import cgitb
|
||||||
|
cgitb.enable()
|
||||||
|
|
||||||
This activates a special exception handler that will display detailed reports in
|
This activates a special exception handler that will display detailed reports in
|
||||||
the Web browser if any errors occur. If you'd rather not show the guts of your
|
the Web browser if any errors occur. If you'd rather not show the guts of your
|
||||||
program to users of your script, you can have the reports saved to files
|
program to users of your script, you can have the reports saved to files
|
||||||
instead, with a line like this::
|
instead, with code like this::
|
||||||
|
|
||||||
import cgitb; cgitb.enable(display=0, logdir="/tmp")
|
import cgitb
|
||||||
|
cgitb.enable(display=0, logdir="/tmp")
|
||||||
|
|
||||||
It's very helpful to use this feature during script development. The reports
|
It's very helpful to use this feature during script development. The reports
|
||||||
produced by :mod:`cgitb` provide information that can save you a lot of time in
|
produced by :mod:`cgitb` provide information that can save you a lot of time in
|
||||||
|
@ -445,9 +447,10 @@ discarded altogether.
|
||||||
|
|
||||||
Fortunately, once you have managed to get your script to execute *some* code,
|
Fortunately, once you have managed to get your script to execute *some* code,
|
||||||
you can easily send tracebacks to the Web browser using the :mod:`cgitb` module.
|
you can easily send tracebacks to the Web browser using the :mod:`cgitb` module.
|
||||||
If you haven't done so already, just add the line::
|
If you haven't done so already, just add the lines::
|
||||||
|
|
||||||
import cgitb; cgitb.enable()
|
import cgitb
|
||||||
|
cgitb.enable()
|
||||||
|
|
||||||
to the top of your script. Then try running it again; when a problem occurs,
|
to the top of your script. Then try running it again; when a problem occurs,
|
||||||
you should see a detailed report that will likely make apparent the cause of the
|
you should see a detailed report that will likely make apparent the cause of the
|
||||||
|
|
|
@ -24,9 +24,10 @@ as well as the values of the arguments and local variables to currently running
|
||||||
functions, to help you debug the problem. Optionally, you can save this
|
functions, to help you debug the problem. Optionally, you can save this
|
||||||
information to a file instead of sending it to the browser.
|
information to a file instead of sending it to the browser.
|
||||||
|
|
||||||
To enable this feature, simply add one line to the top of your CGI script::
|
To enable this feature, simply add this to the top of your CGI script::
|
||||||
|
|
||||||
import cgitb; cgitb.enable()
|
import cgitb
|
||||||
|
cgitb.enable()
|
||||||
|
|
||||||
The options to the :func:`enable` function control whether the report is
|
The options to the :func:`enable` function control whether the report is
|
||||||
displayed in the browser and whether the report is logged to a file for later
|
displayed in the browser and whether the report is logged to a file for later
|
||||||
|
|
|
@ -793,9 +793,9 @@ functions based on regular expressions.
|
||||||
|
|
||||||
.. method:: str.count(sub[, start[, end]])
|
.. method:: str.count(sub[, start[, end]])
|
||||||
|
|
||||||
Return the number of occurrences of substring *sub* in the range [*start*,
|
Return the number of non-overlapping occurrences of substring *sub* in the
|
||||||
*end*]. Optional arguments *start* and *end* are interpreted as in slice
|
range [*start*, *end*]. Optional arguments *start* and *end* are
|
||||||
notation.
|
interpreted as in slice notation.
|
||||||
|
|
||||||
|
|
||||||
.. method:: str.encode([encoding[, errors]])
|
.. method:: str.encode([encoding[, errors]])
|
||||||
|
@ -835,7 +835,7 @@ functions based on regular expressions.
|
||||||
found.
|
found.
|
||||||
|
|
||||||
|
|
||||||
.. method:: str.format(format_string, *args, **kwargs)
|
.. method:: str.format(*args, **kwargs)
|
||||||
|
|
||||||
Perform a string formatting operation. The *format_string* argument can
|
Perform a string formatting operation. The *format_string* argument can
|
||||||
contain literal text or replacement fields delimited by braces ``{}``. Each
|
contain literal text or replacement fields delimited by braces ``{}``. Each
|
||||||
|
|
|
@ -529,5 +529,5 @@ This is an example of counting the maximum depth of an XML file::
|
||||||
.. [#] The encoding string included in XML output should conform to the
|
.. [#] The encoding string included in XML output should conform to the
|
||||||
appropriate standards. For example, "UTF-8" is valid, but "UTF8" is
|
appropriate standards. For example, "UTF-8" is valid, but "UTF8" is
|
||||||
not. See http://www.w3.org/TR/2006/REC-xml11-20060816/#NT-EncodingDecl
|
not. See http://www.w3.org/TR/2006/REC-xml11-20060816/#NT-EncodingDecl
|
||||||
and http://www.iana.org/assignments/character-sets .
|
and http://www.iana.org/assignments/character-sets.
|
||||||
|
|
||||||
|
|
|
@ -1761,8 +1761,8 @@ ElementTree 1.2.6. The :mod:`cElementTree` accelerator module is also
|
||||||
included.
|
included.
|
||||||
|
|
||||||
The rest of this section will provide a brief overview of using ElementTree.
|
The rest of this section will provide a brief overview of using ElementTree.
|
||||||
Full documentation for ElementTree is available at http://effbot.org/zone
|
Full documentation for ElementTree is available at
|
||||||
/element-index.htm.
|
http://effbot.org/zone/element-index.htm.
|
||||||
|
|
||||||
ElementTree represents an XML document as a tree of element nodes. The text
|
ElementTree represents an XML document as a tree of element nodes. The text
|
||||||
content of the document is stored as the :attr:`.text` and :attr:`.tail`
|
content of the document is stored as the :attr:`.text` and :attr:`.tail`
|
||||||
|
|
|
@ -487,7 +487,7 @@ class ForkingMixIn:
|
||||||
# libraries that expect to be able to wait for their own
|
# libraries that expect to be able to wait for their own
|
||||||
# children.
|
# children.
|
||||||
try:
|
try:
|
||||||
pid, status = os.waitpid(0, options=0)
|
pid, status = os.waitpid(0, 0)
|
||||||
except os.error:
|
except os.error:
|
||||||
pid = None
|
pid = None
|
||||||
if pid not in self.active_children: continue
|
if pid not in self.active_children: continue
|
||||||
|
|
27
README
27
README
|
@ -88,6 +88,33 @@ needs to be changed, such as optional warnings when deprecated features are
|
||||||
used, and backported versions of certain key Python 3.x features.
|
used, and backported versions of certain key Python 3.x features.
|
||||||
|
|
||||||
|
|
||||||
|
Testing
|
||||||
|
-------
|
||||||
|
|
||||||
|
To test the interpreter, type "make test" in the top-level directory.
|
||||||
|
This runs the test set twice (once with no compiled files, once with
|
||||||
|
the compiled files left by the previous test run). The test set
|
||||||
|
produces some output. You can generally ignore the messages about
|
||||||
|
skipped tests due to optional features which can't be imported.
|
||||||
|
If a message is printed about a failed test or a traceback or core
|
||||||
|
dump is produced, something is wrong. On some Linux systems (those
|
||||||
|
that are not yet using glibc 6), test_strftime fails due to a
|
||||||
|
non-standard implementation of strftime() in the C library. Please
|
||||||
|
ignore this, or upgrade to glibc version 6.
|
||||||
|
|
||||||
|
By default, tests are prevented from overusing resources like disk space and
|
||||||
|
memory. To enable these tests, run "make testall".
|
||||||
|
|
||||||
|
IMPORTANT: If the tests fail and you decide to mail a bug report,
|
||||||
|
*don't* include the output of "make test". It is useless. Run the
|
||||||
|
failing test manually, as follows:
|
||||||
|
|
||||||
|
./python Lib/test/regrtest.py -v test_whatever
|
||||||
|
|
||||||
|
(substituting the top of the source tree for '.' if you built in a
|
||||||
|
different directory). This runs the test in verbose mode.
|
||||||
|
|
||||||
|
|
||||||
Installing multiple versions
|
Installing multiple versions
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue