1. python_mirrors
  2. sandbox/nvawda


Antoine Pitrou  committed abd2adb Merge

Merge from 3.2

  • Participants
  • Parent commits 3d96c2d, 01292dd
  • Branches default

Comments (0)

Files changed (2)

File Doc/faq/extending.rst

View file
 How do I use Py_BuildValue() to create a tuple of arbitrary length?
-You can't.  Use ``t = PyTuple_New(n)`` instead, and fill it with objects using
-``PyTuple_SetItem(t, i, o)`` -- note that this "eats" a reference count of
-``o``, so you have to :c:func:`Py_INCREF` it.  Lists have similar functions
-``PyList_New(n)`` and ``PyList_SetItem(l, i, o)``.  Note that you *must* set all
-the tuple items to some value before you pass the tuple to Python code --
-``PyTuple_New(n)`` initializes them to NULL, which isn't a valid Python value.
+You can't.  Use :c:func:`PyTuple_Pack` instead.
 How do I call an object's method from C?
 just allow the standard traceback mechanism to work. Then, the output will go
 wherever your ``write()`` method sends it.
-The easiest way to do this is to use the StringIO class in the standard library.
+The easiest way to do this is to use the :class:`io.StringIO` class::
-Sample code and use for catching stdout:
+   >>> import io, sys
+   >>> sys.stdout = io.StringIO()
+   >>> print('foo')
+   >>> print('hello world!')
+   >>> sys.stderr.write(sys.stdout.getvalue())
+   foo
+   hello world!
-   >>> class StdoutCatcher:
+A custom object to do the same would look like this::
+   >>> import io, sys
+   >>> class StdoutCatcher(io.TextIOBase):
    ...     def __init__(self):
-   ...         self.data = ''
+   ...         self.data = []
    ...     def write(self, stuff):
-   ...         self.data = self.data + stuff
+   ...         self.data.append(stuff)
    >>> import sys
    >>> sys.stdout = StdoutCatcher()
    >>> print('foo')
    >>> print('hello world!')
-   >>> sys.stderr.write(sys.stdout.data)
+   >>> sys.stderr.write(''.join(sys.stdout.data))
    hello world!

File Doc/faq/general.rst

View file
 window systems, and is extensible in C or C++.  It is also usable as an
 extension language for applications that need a programmable interface.
 Finally, Python is portable: it runs on many Unix variants, on the Mac, and on
-PCs under MS-DOS, Windows, Windows NT, and OS/2.
+Windows 2000 and later.
 To find out more, start with :ref:`tutorial-index`.  The `Beginner's Guide to
 Python <http://wiki.python.org/moin/BeginnersGuide>`_ links to other
 If you want to discuss Python's use in education, you may be interested in
 joining `the edu-sig mailing list
-Upgrading Python
-What is this bsddb185 module my application keeps complaining about?
-.. XXX remove this question?
-Starting with Python2.3, the distribution includes the `PyBSDDB package
-<http://pybsddb.sf.net/>` as a replacement for the old bsddb module.  It
-includes functions which provide backward compatibility at the API level, but
-requires a newer version of the underlying `Berkeley DB
-<http://www.sleepycat.com>`_ library.  Files created with the older bsddb module
-can't be opened directly using the new module.
-Using your old version of Python and a pair of scripts which are part of Python
-2.3 (db2pickle.py and pickle2db.py, in the Tools/scripts directory) you can
-convert your old database files to the new format.  Using your old Python
-version, run the db2pickle.py script to convert it to a pickle, e.g.::
-   python2.2 <pathto>/db2pickley.py database.db database.pck
-Rename your database file::
-   mv database.db olddatabase.db
-Now convert the pickle file to a new format database::
-   python <pathto>/pickle2db.py database.db database.pck
-The precise commands you use will vary depending on the particulars of your
-installation.  For full details about operation of these two scripts check the
-doc string at the start of each one.