mirror of https://github.com/python/cpython
Merged revisions 84249,84264,84326-84327,84407,84476,84480-84482,84484,84530-84531,84553,84619,84684,84915-84916 via svnmerge from
svn+ssh://svn.python.org/python/branches/py3k ........ r84249 | georg.brandl | 2010-08-22 01:20:01 +0200 (So, 22 Aug 2010) | 1 line Remove usage of rexec in tkinter demo. ........ r84264 | georg.brandl | 2010-08-22 22:23:38 +0200 (So, 22 Aug 2010) | 1 line #9649: fix default value description. ........ r84326 | georg.brandl | 2010-08-26 16:30:15 +0200 (Do, 26 Aug 2010) | 1 line #9689: add links from overview to in-depth class API descriptions. ........ r84327 | georg.brandl | 2010-08-26 16:30:56 +0200 (Do, 26 Aug 2010) | 1 line #9681: typo. ........ r84407 | georg.brandl | 2010-09-01 23:02:50 +0200 (Mi, 01 Sep 2010) | 1 line #9677: fix link. ........ r84476 | georg.brandl | 2010-09-04 00:14:52 +0200 (Sa, 04 Sep 2010) | 1 line Use tabs consistently. ........ r84480 | georg.brandl | 2010-09-04 00:33:27 +0200 (Sa, 04 Sep 2010) | 1 line More inclusive title. ........ r84481 | georg.brandl | 2010-09-04 00:36:22 +0200 (Sa, 04 Sep 2010) | 1 line #9767: doctest run over json docs. ........ r84482 | georg.brandl | 2010-09-04 00:40:02 +0200 (Sa, 04 Sep 2010) | 1 line #9760: clarify what context expression is. ........ r84484 | georg.brandl | 2010-09-04 00:49:27 +0200 (Sa, 04 Sep 2010) | 1 line Fix missing word. ........ r84530 | georg.brandl | 2010-09-05 19:07:12 +0200 (So, 05 Sep 2010) | 1 line #9747: fix copy-paste error in getresgid() doc. ........ r84531 | georg.brandl | 2010-09-05 19:09:18 +0200 (So, 05 Sep 2010) | 1 line #9776: fix some spacing. ........ r84553 | georg.brandl | 2010-09-06 08:49:07 +0200 (Mo, 06 Sep 2010) | 1 line #9780: both { and } are not valid fill characters. ........ r84619 | georg.brandl | 2010-09-08 12:43:45 +0200 (Mi, 08 Sep 2010) | 1 line Add Lukasz. ........ r84684 | georg.brandl | 2010-09-10 22:43:53 +0200 (Fr, 10 Sep 2010) | 1 line release() is probably not the most important method ........ r84915 | georg.brandl | 2010-09-20 08:27:02 +0200 (Mo, 20 Sep 2010) | 1 line Fix typo. ........ r84916 | georg.brandl | 2010-09-20 08:29:01 +0200 (Mo, 20 Sep 2010) | 1 line Mention % as string formatting. ........
This commit is contained in:
parent
23b4f927d5
commit
57a5e3f0e2
|
@ -4,7 +4,6 @@ import os
|
|||
import re
|
||||
import sys
|
||||
import cgi
|
||||
import rexec
|
||||
from xml.parsers import expat
|
||||
|
||||
LEFT, CENTER, RIGHT = "LEFT", "CENTER", "RIGHT"
|
||||
|
@ -33,16 +32,16 @@ class Sheet:
|
|||
|
||||
def __init__(self):
|
||||
self.cells = {} # {(x, y): cell, ...}
|
||||
self.rexec = rexec.RExec()
|
||||
m = self.rexec.add_module('__main__')
|
||||
m.cell = self.cellvalue
|
||||
m.cells = self.multicellvalue
|
||||
m.sum = sum
|
||||
self.ns = dict(
|
||||
cell = self.cellvalue,
|
||||
cells = self.multicellvalue,
|
||||
sum = sum,
|
||||
)
|
||||
|
||||
def cellvalue(self, x, y):
|
||||
cell = self.getcell(x, y)
|
||||
if hasattr(cell, 'recalc'):
|
||||
return cell.recalc(self.rexec)
|
||||
return cell.recalc(self.ns)
|
||||
else:
|
||||
return cell
|
||||
|
||||
|
@ -144,7 +143,7 @@ class Sheet:
|
|||
self.reset()
|
||||
for cell in self.cells.values():
|
||||
if hasattr(cell, 'recalc'):
|
||||
cell.recalc(self.rexec)
|
||||
cell.recalc(self.ns)
|
||||
|
||||
def display(self):
|
||||
maxx, maxy = self.getsize()
|
||||
|
@ -164,7 +163,7 @@ class Sheet:
|
|||
if x <= 0 or y <= 0:
|
||||
continue
|
||||
if hasattr(cell, 'recalc'):
|
||||
cell.recalc(self.rexec)
|
||||
cell.recalc(self.ns)
|
||||
if hasattr(cell, 'format'):
|
||||
text, alignment = cell.format()
|
||||
assert isinstance(text, str)
|
||||
|
@ -317,7 +316,7 @@ class BaseCell:
|
|||
Subclasses may but needn't provide the following APIs:
|
||||
|
||||
cell.reset() -- prepare for recalculation
|
||||
cell.recalc(rexec) -> value -- recalculate formula
|
||||
cell.recalc(ns) -> value -- recalculate formula
|
||||
cell.format() -> (value, alignment) -- return formatted value
|
||||
cell.xml() -> string -- return XML
|
||||
"""
|
||||
|
@ -331,7 +330,7 @@ class NumericCell(BaseCell):
|
|||
self.fmt = fmt
|
||||
self.alignment = alignment
|
||||
|
||||
def recalc(self, rexec):
|
||||
def recalc(self, ns):
|
||||
return self.value
|
||||
|
||||
def format(self):
|
||||
|
@ -372,7 +371,7 @@ class StringCell(BaseCell):
|
|||
self.fmt = fmt
|
||||
self.alignment = alignment
|
||||
|
||||
def recalc(self, rexec):
|
||||
def recalc(self, ns):
|
||||
return self.text
|
||||
|
||||
def format(self):
|
||||
|
@ -398,13 +397,11 @@ class FormulaCell(BaseCell):
|
|||
def reset(self):
|
||||
self.value = None
|
||||
|
||||
def recalc(self, rexec):
|
||||
def recalc(self, ns):
|
||||
if self.value is None:
|
||||
try:
|
||||
# A hack to evaluate expressions using true division
|
||||
rexec.r_exec("from __future__ import division\n" +
|
||||
"__value__ = eval(%s)" % repr(self.translated))
|
||||
self.value = rexec.r_eval("__value__")
|
||||
self.value = eval(self.translated, ns)
|
||||
except:
|
||||
exc = sys.exc_info()[0]
|
||||
if hasattr(exc, "__name__"):
|
||||
|
|
|
@ -128,7 +128,7 @@ latex_documents = [
|
|||
('tutorial/index', 'tutorial.tex',
|
||||
'Python Tutorial', _stdauthor, 'manual'),
|
||||
('using/index', 'using.tex',
|
||||
'Python Setup', _stdauthor, 'manual'),
|
||||
'Python Setup and Usage', _stdauthor, 'manual'),
|
||||
('whatsnew/' + version, 'whatsnew.tex',
|
||||
'What\'s New in Python', 'A. M. Kuchling', 'howto'),
|
||||
]
|
||||
|
|
|
@ -82,12 +82,12 @@ Extending :class:`JSONEncoder`::
|
|||
... return [obj.real, obj.imag]
|
||||
... return json.JSONEncoder.default(self, obj)
|
||||
...
|
||||
>>> dumps(2 + 1j, cls=ComplexEncoder)
|
||||
>>> json.dumps(2 + 1j, cls=ComplexEncoder)
|
||||
'[2.0, 1.0]'
|
||||
>>> ComplexEncoder().encode(2 + 1j)
|
||||
'[2.0, 1.0]'
|
||||
>>> list(ComplexEncoder().iterencode(2 + 1j))
|
||||
['[', '2.0', ', ', '1.0', ']']
|
||||
['[2.0', ', 1.0', ']']
|
||||
|
||||
|
||||
.. highlight:: none
|
||||
|
@ -339,7 +339,7 @@ Encoders and decoders
|
|||
encoders and decoders. Otherwise, it will be a :exc:`ValueError` to encode
|
||||
such floats.
|
||||
|
||||
If *sort_keys* is ``True`` (the default), then the output of dictionaries
|
||||
If *sort_keys* is ``True`` (default ``False``), then the output of dictionaries
|
||||
will be sorted by key; this is useful for regression tests to ensure that
|
||||
JSON serializations can be compared on a day-to-day basis.
|
||||
|
||||
|
@ -373,7 +373,7 @@ Encoders and decoders
|
|||
pass
|
||||
else:
|
||||
return list(iterable)
|
||||
return JSONEncoder.default(self, o)
|
||||
return json.JSONEncoder.default(self, o)
|
||||
|
||||
|
||||
.. method:: encode(o)
|
||||
|
@ -381,7 +381,7 @@ Encoders and decoders
|
|||
Return a JSON string representation of a Python data structure, *o*. For
|
||||
example::
|
||||
|
||||
>>> JSONEncoder().encode({"foo": ["bar", "baz"]})
|
||||
>>> json.JSONEncoder().encode({"foo": ["bar", "baz"]})
|
||||
'{"foo": ["bar", "baz"]}'
|
||||
|
||||
|
||||
|
@ -390,5 +390,5 @@ Encoders and decoders
|
|||
Encode the given object, *o*, and yield each string representation as
|
||||
available. For example::
|
||||
|
||||
for chunk in JSONEncoder().iterencode(bigobject):
|
||||
for chunk in json.JSONEncoder().iterencode(bigobject):
|
||||
mysocket.write(chunk)
|
||||
|
|
|
@ -2210,8 +2210,8 @@ Synchronization types like locks, conditions and queues:
|
|||
.. literalinclude:: ../includes/mp_synchronize.py
|
||||
|
||||
|
||||
An showing how to use queues to feed tasks to a collection of worker process and
|
||||
collect the results:
|
||||
An example showing how to use queues to feed tasks to a collection of worker
|
||||
process and collect the results:
|
||||
|
||||
.. literalinclude:: ../includes/mp_workers.py
|
||||
|
||||
|
|
|
@ -299,11 +299,11 @@ The general form of a *standard format specifier* is:
|
|||
precision: `integer`
|
||||
type: "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
|
||||
|
||||
The *fill* character can be any character other than '}' (which signifies the
|
||||
end of the field). The presence of a fill character is signaled by the *next*
|
||||
character, which must be one of the alignment options. If the second character
|
||||
of *format_spec* is not a valid alignment option, then it is assumed that both
|
||||
the fill character and the alignment option are absent.
|
||||
The *fill* character can be any character other than '{' or '}'. The presence
|
||||
of a fill character is signaled by the character following it, which must be
|
||||
one of the alignment options. If the second character of *format_spec* is not
|
||||
a valid alignment option, then it is assumed that both the fill character and
|
||||
the alignment option are absent.
|
||||
|
||||
The meaning of the various alignment options is as follows:
|
||||
|
||||
|
|
|
@ -275,7 +275,7 @@ Exceptions
|
|||
Exceptions raised in the child process, before the new program has started to
|
||||
execute, will be re-raised in the parent. Additionally, the exception object
|
||||
will have one extra attribute called :attr:`child_traceback`, which is a string
|
||||
containing traceback information from the childs point of view.
|
||||
containing traceback information from the child's point of view.
|
||||
|
||||
The most common exception raised is :exc:`OSError`. This occurs, for example,
|
||||
when trying to execute a non-existent file. Applications should prepare for
|
||||
|
|
|
@ -33,6 +33,8 @@ This module defines the following functions and objects:
|
|||
variable allows one or more threads to wait until they are notified by another
|
||||
thread.
|
||||
|
||||
See :ref:`condition-objects`.
|
||||
|
||||
|
||||
.. function:: current_thread()
|
||||
|
||||
|
@ -58,6 +60,8 @@ This module defines the following functions and objects:
|
|||
with the :meth:`clear` method. The :meth:`wait` method blocks until the flag
|
||||
is true.
|
||||
|
||||
See :ref:`event-objects`.
|
||||
|
||||
|
||||
.. class:: local
|
||||
|
||||
|
@ -80,6 +84,8 @@ This module defines the following functions and objects:
|
|||
acquired it, subsequent attempts to acquire it block, until it is released; any
|
||||
thread may release it.
|
||||
|
||||
See :ref:`lock-objects`.
|
||||
|
||||
|
||||
.. function:: RLock()
|
||||
|
||||
|
@ -88,6 +94,8 @@ This module defines the following functions and objects:
|
|||
reentrant lock, the same thread may acquire it again without blocking; the
|
||||
thread must release it once for each time it has acquired it.
|
||||
|
||||
See :ref:`rlock-objects`.
|
||||
|
||||
|
||||
.. function:: Semaphore(value=1)
|
||||
:noindex:
|
||||
|
@ -98,6 +106,8 @@ This module defines the following functions and objects:
|
|||
if necessary until it can return without making the counter negative. If not
|
||||
given, *value* defaults to 1.
|
||||
|
||||
See :ref:`semaphore-objects`.
|
||||
|
||||
|
||||
.. function:: BoundedSemaphore(value=1)
|
||||
|
||||
|
@ -109,15 +119,21 @@ This module defines the following functions and objects:
|
|||
|
||||
|
||||
.. class:: Thread
|
||||
:noindex:
|
||||
|
||||
A class that represents a thread of control. This class can be safely
|
||||
subclassed in a limited fashion.
|
||||
|
||||
See :ref:`thread-objects`.
|
||||
|
||||
|
||||
.. class:: Timer
|
||||
:noindex:
|
||||
|
||||
A thread that executes a function after a specified interval has passed.
|
||||
|
||||
See :ref:`timer-objects`.
|
||||
|
||||
|
||||
.. function:: settrace(func)
|
||||
|
||||
|
|
|
@ -350,7 +350,8 @@ usage patterns to be encapsulated for convenient reuse.
|
|||
|
||||
The execution of the :keyword:`with` statement with one "item" proceeds as follows:
|
||||
|
||||
#. The context expression is evaluated to obtain a context manager.
|
||||
#. The context expression (the expression given in the :token:`with_item`) is
|
||||
evaluated to obtain a context manager.
|
||||
|
||||
#. The context manager's :meth:`__enter__` method is invoked.
|
||||
|
||||
|
|
|
@ -1297,6 +1297,7 @@ groups from right to left).
|
|||
| ``+``, ``-`` | Addition and subtraction |
|
||||
+-----------------------------------------------+-------------------------------------+
|
||||
| ``*``, ``/``, ``//``, ``%`` | Multiplication, division, remainder |
|
||||
| | [#]_ |
|
||||
+-----------------------------------------------+-------------------------------------+
|
||||
| ``+x``, ``-x``, ``~x`` | Positive, negative, bitwise NOT |
|
||||
+-----------------------------------------------+-------------------------------------+
|
||||
|
@ -1339,5 +1340,7 @@ groups from right to left).
|
|||
the :keyword:`is` operator, like those involving comparisons between instance
|
||||
methods, or constants. Check their documentation for more info.
|
||||
|
||||
.. [#] The ``%`` is also used for string formatting; the same precedence applies.
|
||||
|
||||
.. [#] The power operator ``**`` binds less tightly than an arithmetic or
|
||||
bitwise unary operator on its right, that is, ``2**-1`` is ``0.5``.
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<span class="linkdescr">keep this under your pillow</span></p>
|
||||
<p class="biglink"><a class="biglink" href="{{ pathto("reference/index") }}">Language Reference</a><br/>
|
||||
<span class="linkdescr">describes syntax and language elements</span></p>
|
||||
<p class="biglink"><a class="biglink" href="{{ pathto("using/index") }}">Python Setup</a><br/>
|
||||
<p class="biglink"><a class="biglink" href="{{ pathto("using/index") }}">Python Setup and Usage</a><br/>
|
||||
<span class="linkdescr">how to use Python on different platforms</span></p>
|
||||
<p class="biglink"><a class="biglink" href="{{ pathto("howto/index") }}">Python HOWTOs</a><br/>
|
||||
<span class="linkdescr">in-depth documents on specific topics</span></p>
|
||||
|
|
|
@ -371,7 +371,7 @@ with no duplicate elements. Basic uses include membership testing and
|
|||
eliminating duplicate entries. Set objects also support mathematical operations
|
||||
like union, intersection, difference, and symmetric difference.
|
||||
|
||||
Curly braces or the :func:`set` function can be use to create sets. Note: To
|
||||
Curly braces or the :func:`set` function can be used to create sets. Note: To
|
||||
create an empty set you have to use ``set()``, not ``{}``; the latter creates an
|
||||
empty dictionary, a data structure that we discuss in the next section.
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
.. _using-index:
|
||||
|
||||
################
|
||||
Python Setup
|
||||
################
|
||||
##########################
|
||||
Python Setup and Usage
|
||||
##########################
|
||||
|
||||
|
||||
This part of the documentation is devoted to general information on the setup
|
||||
|
|
|
@ -36,7 +36,7 @@ AR= @AR@
|
|||
RANLIB= @RANLIB@
|
||||
SVNVERSION= @SVNVERSION@
|
||||
|
||||
GNULD= @GNULD@
|
||||
GNULD= @GNULD@
|
||||
|
||||
# Shell used by make (some versions default to the login shell, which is bad)
|
||||
SHELL= /bin/sh
|
||||
|
|
|
@ -20,6 +20,25 @@ for details. When the agreement is signed, please note it in this log.
|
|||
Permissions History
|
||||
-------------------
|
||||
|
||||
- Lukasz Langa was given commit access on Sep 08 2010 by GFB,
|
||||
at suggestion of Antoine Pitrou, for general bug fixing.
|
||||
|
||||
- Daniel Stutzbach was given commit access on Aug 22 2010 by MvL,
|
||||
for general bug fixing.
|
||||
|
||||
- Ask Solem was given commit access on Aug 17 2010 by MvL,
|
||||
on recommendation by Jesse Noller, for work on the multiprocessing
|
||||
library.
|
||||
|
||||
- George Boutsioukis was given commit access on Aug 10 2010
|
||||
by MvL, for work on 2to3.
|
||||
|
||||
- Éric Araujo was given commit access on Aug 10 2010 by BAC,
|
||||
at suggestion of Tarek Ziadé.
|
||||
|
||||
- Terry Reedy was given commit access on Aug 04 2010 by MvL,
|
||||
at suggestion of Nick Coghlan.
|
||||
|
||||
- Brian Quinlan was given commit access on Jul 26 2010 by GFB,
|
||||
for work related to PEP 3148.
|
||||
|
||||
|
|
|
@ -82,10 +82,10 @@ PyDoc_STRVAR(fcntl_doc,
|
|||
Perform the requested operation on file descriptor fd. The operation\n\
|
||||
is defined by op and is operating system dependent. These constants are\n\
|
||||
available from the fcntl module. The argument arg is optional, and\n\
|
||||
defaults to 0; it may be an int or a string. If arg is given as a string,\n\
|
||||
defaults to 0; it may be an int or a string. If arg is given as a string,\n\
|
||||
the return value of fcntl is a string of that length, containing the\n\
|
||||
resulting value put in the arg buffer by the operating system.The length\n\
|
||||
of the arg string is not allowed to exceed 1024 bytes. If the arg given\n\
|
||||
resulting value put in the arg buffer by the operating system. The length\n\
|
||||
of the arg string is not allowed to exceed 1024 bytes. If the arg given\n\
|
||||
is an integer or if none is specified, the result value is an integer\n\
|
||||
corresponding to the return value of the fcntl call in the C code.");
|
||||
|
||||
|
|
Loading…
Reference in New Issue