| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 07aec08 commit 04110fb
25 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -474,10 +474,29 @@ Miscellaneous opcodes. | |||
| 474 | 474 | Creates a new class object. TOS is the methods dictionary, TOS1 the tuple of | |
| 475 | 475 | the names of the base classes, and TOS2 the class name. | |
| 476 | 476 | ||
| 477 | + | ||
| 478 | + .. opcode:: WITH_CLEANUP () | ||
| 479 | + | ||
| 480 | + Cleans up the stack when a :keyword:`with` statement block exits. TOS is the | ||
| 481 | + context manager's :meth:`__exit__` bound method. Below that are 1--3 values | ||
| 482 | + indicating how/why the finally clause was entered: | ||
| 483 | + | ||
| 484 | + * SECOND = None | ||
| 485 | + * (SECOND, THIRD) = (WHY_{RETURN,CONTINUE}), retval | ||
| 486 | + * SECOND = WHY_\*; no retval below it | ||
| 487 | + * (SECOND, THIRD, FOURTH) = exc_info() | ||
| 488 | + | ||
| 489 | + In the last case, ``TOS(SECOND, THIRD, FOURTH)`` is called, otherwise | ||
| 490 | + ``TOS(None, None, None)``. | ||
| 491 | + | ||
| 492 | + In addition, if the stack represents an exception, *and* the function call | ||
| 493 | + returns a 'true' value, this information is "zapped", to prevent ``END_FINALLY`` | ||
| 494 | + from re-raising the exception. (But non-local gotos should still be resumed.) | ||
| 495 | + | ||
| 496 | + | ||
| 477 | 497 | All of the following opcodes expect arguments. An argument is two bytes, with | |
| 478 | 498 | the more significant byte last. | |
| 479 | 499 | ||
| 480 | - | ||
| 481 | 500 | .. opcode:: STORE_NAME (namei) | |
| 482 | 501 | ||
| 483 | 502 | Implements ``name = TOS``. *namei* is the index of *name* in the attribute | |
@@ -722,11 +741,10 @@ the more significant byte last. | |||
| 722 | 741 | ||
| 723 | 742 | .. opcode:: MAKE_CLOSURE (argc) | |
| 724 | 743 | ||
| 725 | - Creates a new function object, sets its *__closure__* slot, and pushes it on the | ||
| 726 | - stack. TOS is the code associated with the function. If the code object has N | ||
| 727 | - free variables, the next N items on the stack are the cells for these variables. | ||
| 728 | - The function also has *argc* default parameters, where are found before the | ||
| 729 | - cells. | ||
| 744 | + Creates a new function object, sets its *__closure__* slot, and pushes it on | ||
| 745 | + the stack. TOS is the code associated with the function, TOS1 the tuple | ||
| 746 | + containing cells for the closure's free variables. The function also has | ||
| 747 | + *argc* default parameters, which are found below the cells. | ||
| 730 | 748 | ||
| 731 | 749 | ||
| 732 | 750 | .. opcode:: BUILD_SLICE (argc) | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -69,11 +69,6 @@ Here's a complete but small example module:: | |||
| 69 | 69 | OverflowError: n too large | |
| 70 | 70 | """ | |
| 71 | 71 | ||
| 72 | - | ||
| 73 | - .. % allow LaTeX to break here. | ||
| 74 | - | ||
| 75 | - :: | ||
| 76 | - | ||
| 77 | 72 | import math | |
| 78 | 73 | if not n >= 0: | |
| 79 | 74 | raise ValueError("n must be >= 0") | |
@@ -88,12 +83,10 @@ Here's a complete but small example module:: | |||
| 88 | 83 | factor += 1 | |
| 89 | 84 | return result | |
| 90 | 85 | ||
| 91 | - def _test(): | ||
| 92 | - import doctest | ||
| 93 | - doctest.testmod() | ||
| 94 | 86 | ||
| 95 | 87 | if __name__ == "__main__": | |
| 96 | - _test() | ||
| 88 | + import doctest | ||
| 89 | + doctest.testmod() | ||
| 97 | 90 | ||
| 98 | 91 | If you run :file:`example.py` directly from the command line, :mod:`doctest` | |
| 99 | 92 | works its magic:: | |
@@ -131,12 +124,10 @@ And so on, eventually ending with:: | |||
| 131 | 124 | ... | |
| 132 | 125 | OverflowError: n too large | |
| 133 | 126 | ok | |
| 134 | - 1 items had no tests: | ||
| 135 | - __main__._test | ||
| 136 | 127 | 2 items passed all tests: | |
| 137 | 128 | 1 tests in __main__ | |
| 138 | 129 | 8 tests in __main__.factorial | |
| 139 | - 9 tests in 3 items. | ||
| 130 | + 9 tests in 2 items. | ||
| 140 | 131 | 9 passed and 0 failed. | |
| 141 | 132 | Test passed. | |
| 142 | 133 | $ | |
@@ -156,13 +147,10 @@ Simple Usage: Checking Examples in Docstrings | |||
| 156 | 147 | The simplest way to start using doctest (but not necessarily the way you'll | |
| 157 | 148 | continue to do it) is to end each module :mod:`M` with:: | |
| 158 | 149 | ||
| 159 | - def _test(): | ||
| 150 | + if __name__ == "__main__": | ||
| 160 | 151 | import doctest | |
| 161 | 152 | doctest.testmod() | |
| 162 | 153 | ||
| 163 | - if __name__ == "__main__": | ||
| 164 | - _test() | ||
| 165 | - | ||
| 166 | 154 | :mod:`doctest` then examines docstrings in module :mod:`M`. | |
| 167 | 155 | ||
| 168 | 156 | Running the module as a script causes the examples in the docstrings to get | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -22,63 +22,73 @@ This module provides an interface to the mechanisms used to implement the | |||
| 22 | 22 | ||
| 23 | 23 | .. function:: get_suffixes() | |
| 24 | 24 | ||
| 25 | - Return a list of triples, each describing a particular type of module. Each | ||
| 26 | - triple has the form ``(suffix, mode, type)``, where *suffix* is a string to be | ||
| 27 | - appended to the module name to form the filename to search for, *mode* is the | ||
| 28 | - mode string to pass to the built-in :func:`open` function to open the file (this | ||
| 29 | - can be ``'r'`` for text files or ``'rb'`` for binary files), and *type* is the | ||
| 30 | - file type, which has one of the values :const:`PY_SOURCE`, :const:`PY_COMPILED`, | ||
| 31 | - or :const:`C_EXTENSION`, described below. | ||
| 25 | + Return a list of 3-element tuples, each describing a particular type of | ||
| 26 | + module. Each triple has the form ``(suffix, mode, type)``, where *suffix* is | ||
| 27 | + a string to be appended to the module name to form the filename to search | ||
| 28 | + for, *mode* is the mode string to pass to the built-in :func:`open` function | ||
| 29 | + to open the file (this can be ``'r'`` for text files or ``'rb'`` for binary | ||
| 30 | + files), and *type* is the file type, which has one of the values | ||
| 31 | + :const:`PY_SOURCE`, :const:`PY_COMPILED`, or :const:`C_EXTENSION`, described | ||
| 32 | + below. | ||
| 32 | 33 | ||
| 33 | 34 | ||
| 34 | 35 | .. function:: find_module(name[, path]) | |
| 35 | 36 | ||
| 36 | - Try to find the module *name* on the search path *path*. If *path* is a list of | ||
| 37 | - directory names, each directory is searched for files with any of the suffixes | ||
| 38 | - returned by :func:`get_suffixes` above. Invalid names in the list are silently | ||
| 39 | - ignored (but all list items must be strings). If *path* is omitted or ``None``, | ||
| 40 | - the list of directory names given by ``sys.path`` is searched, but first it | ||
| 41 | - searches a few special places: it tries to find a built-in module with the given | ||
| 42 | - name (:const:`C_BUILTIN`), then a frozen module (:const:`PY_FROZEN`), and on | ||
| 43 | - some systems some other places are looked in as well (on the Mac, it looks for a | ||
| 44 | - resource (:const:`PY_RESOURCE`); on Windows, it looks in the registry which may | ||
| 45 | - point to a specific file). | ||
| 46 | - | ||
| 47 | - If search is successful, the return value is a triple ``(file, pathname, | ||
| 48 | - description)`` where *file* is an open file object positioned at the beginning, | ||
| 49 | - *pathname* is the pathname of the file found, and *description* is a triple as | ||
| 37 | + Try to find the module *name* on the search path *path*. If *path* is a list | ||
| 38 | + of directory names, each directory is searched for files with any of the | ||
| 39 | + suffixes returned by :func:`get_suffixes` above. Invalid names in the list | ||
| 40 | + are silently ignored (but all list items must be strings). If *path* is | ||
| 41 | + omitted or ``None``, the list of directory names given by ``sys.path`` is | ||
| 42 | + searched, but first it searches a few special places: it tries to find a | ||
| 43 | + built-in module with the given name (:const:`C_BUILTIN`), then a frozen | ||
| 44 | + module (:const:`PY_FROZEN`), and on some systems some other places are looked | ||
| 45 | + in as well (on the Mac, it looks for a resource (:const:`PY_RESOURCE`); on | ||
| 46 | + Windows, it looks in the registry which may point to a specific file). | ||
| 47 | + | ||
| 48 | + If search is successful, the return value is a 3-element tuple ``(file, | ||
| 49 | + pathname, description)``: | ||
| 50 | + | ||
| 51 | + *file* is an open file object positioned at the beginning, *pathname* is the | ||
| 52 | + pathname of the file found, and *description* is a 3-element tuple as | ||
| 50 | 53 | contained in the list returned by :func:`get_suffixes` describing the kind of | |
| 51 | - module found. If the module does not live in a file, the returned *file* is | ||
| 52 | - ``None``, *filename* is the empty string, and the *description* tuple contains | ||
| 53 | - empty strings for its suffix and mode; the module type is as indicate in | ||
| 54 | - parentheses above. If the search is unsuccessful, :exc:`ImportError` is raised. | ||
| 55 | - Other exceptions indicate problems with the arguments or environment. | ||
| 56 | - | ||
| 57 | - This function does not handle hierarchical module names (names containing dots). | ||
| 58 | - In order to find *P*.*M*, that is, submodule *M* of package *P*, use | ||
| 54 | + module found. | ||
| 55 | + | ||
| 56 | + If the module does not live in a file, the returned *file* is ``None``, | ||
| 57 | + *pathname* is the empty string, and the *description* tuple contains empty | ||
| 58 | + strings for its suffix and mode; the module type is indicated as given in | ||
| 59 | + parentheses above. If the search is unsuccessful, :exc:`ImportError` is | ||
| 60 | + raised. Other exceptions indicate problems with the arguments or | ||
| 61 | + environment. | ||
| 62 | + | ||
| 63 | + If the module is a package, *file* is ``None``, *pathname* is the package | ||
| 64 | + path and the last item in the *description* tuple is :const:`PKG_DIRECTORY`. | ||
| 65 | + | ||
| 66 | + This function does not handle hierarchical module names (names containing | ||
| 67 | + dots). In order to find *P*.*M*, that is, submodule *M* of package *P*, use | ||
| 59 | 68 | :func:`find_module` and :func:`load_module` to find and load package *P*, and | |
| 60 | 69 | then use :func:`find_module` with the *path* argument set to ``P.__path__``. | |
| 61 | 70 | When *P* itself has a dotted name, apply this recipe recursively. | |
| 62 | 71 | ||
| 63 | 72 | ||
| 64 | - .. function:: load_module(name, file, filename, description) | ||
| 73 | + .. function:: load_module(name, file, pathname, description) | ||
| 65 | 74 | ||
| 66 | 75 | Load a module that was previously found by :func:`find_module` (or by an | |
| 67 | 76 | otherwise conducted search yielding compatible results). This function does | |
| 68 | 77 | more than importing the module: if the module was already imported, it will | |
| 69 | - reload the module! The *name* argument indicates the full module name (including | ||
| 70 | - the package name, if this is a submodule of a package). The *file* argument is | ||
| 71 | - an open file, and *filename* is the corresponding file name; these can be | ||
| 72 | - ``None`` and ``''``, respectively, when the module is not being loaded from a | ||
| 73 | - file. The *description* argument is a tuple, as would be returned by | ||
| 74 | - :func:`get_suffixes`, describing what kind of module must be loaded. | ||
| 75 | - | ||
| 76 | - If the load is successful, the return value is the module object; otherwise, an | ||
| 77 | - exception (usually :exc:`ImportError`) is raised. | ||
| 78 | - | ||
| 79 | - **Important:** the caller is responsible for closing the *file* argument, if it | ||
| 80 | - was not ``None``, even when an exception is raised. This is best done using a | ||
| 81 | - :keyword:`try` ... :keyword:`finally` statement. | ||
| 78 | + reload the module! The *name* argument indicates the full | ||
| 79 | + module name (including the package name, if this is a submodule of a | ||
| 80 | + package). The *file* argument is an open file, and *pathname* is the | ||
| 81 | + corresponding file name; these can be ``None`` and ``''``, respectively, when | ||
| 82 | + the module is a package or not being loaded from a file. The *description* | ||
| 83 | + argument is a tuple, as would be returned by :func:`get_suffixes`, describing | ||
| 84 | + what kind of module must be loaded. | ||
| 85 | + | ||
| 86 | + If the load is successful, the return value is the module object; otherwise, | ||
| 87 | + an exception (usually :exc:`ImportError`) is raised. | ||
| 88 | + | ||
| 89 | + **Important:** the caller is responsible for closing the *file* argument, if | ||
| 90 | + it was not ``None``, even when an exception is raised. This is best done | ||
| 91 | + using a :keyword:`try` ... :keyword:`finally` statement. | ||
| 82 | 92 | ||
| 83 | 93 | ||
| 84 | 94 | .. function:: new_module(name) | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -393,12 +393,12 @@ Matching vs Searching | |||
| 393 | 393 | ||
| 394 | 394 | ||
| 395 | 395 | Python offers two different primitive operations based on regular expressions: | |
| 396 | - match and search. If you are accustomed to Perl's semantics, the search | ||
| 397 | - operation is what you're looking for. See the :func:`search` function and | ||
| 398 | - corresponding method of compiled regular expression objects. | ||
| 396 | + **match** checks for a match only at the beginning of the string, while | ||
| 397 | + **search** checks for a match anywhere in the string (this is what Perl does | ||
| 398 | + by default). | ||
| 399 | 399 | ||
| 400 | - Note that match may differ from search using a regular expression beginning with | ||
| 401 | - ``'^'``: ``'^'`` matches only at the start of the string, or in | ||
| 400 | + Note that match may differ from search even when using a regular expression | ||
| 401 | + beginning with ``'^'``: ``'^'`` matches only at the start of the string, or in | ||
| 402 | 402 | :const:`MULTILINE` mode also immediately following a newline. The "match" | |
| 403 | 403 | operation succeeds only if the pattern matches at the start of the string | |
| 404 | 404 | regardless of mode, or at the starting position given by the optional *pos* | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -197,7 +197,7 @@ The module :mod:`socket` exports the following constants and functions: | |||
| 197 | 197 | :func:`socket` function. *canonname* is a string representing the canonical name | |
| 198 | 198 | of the *host*. It can be a numeric IPv4/v6 address when :const:`AI_CANONNAME` is | |
| 199 | 199 | specified for a numeric *host*. *sockaddr* is a tuple describing a socket | |
| 200 | - address, as described above. See the source for the :mod:`httplib` and other | ||
| 200 | + address, as described above. See the source for :mod:`socket` and other | ||
| 201 | 201 | library modules for a typical usage of the function. | |
| 202 | 202 | ||
| 203 | 203 | .. versionadded:: 2.2 | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -440,9 +440,6 @@ A :class:`Cursor` instance has the following attributes and methods: | |||
| 440 | 440 | attribute, the database engine's own support for the determination of "rows | |
| 441 | 441 | affected"/"rows selected" is quirky. | |
| 442 | 442 | ||
| 443 | - For ``SELECT`` statements, :attr:`rowcount` is always None because we cannot | ||
| 444 | - determine the number of rows a query produced until all rows were fetched. | ||
| 445 | - | ||
| 446 | 443 | For ``DELETE`` statements, SQLite reports :attr:`rowcount` as 0 if you make a | |
| 447 | 444 | ``DELETE FROM table`` without any condition. | |
| 448 | 445 | ||
@@ -453,6 +450,9 @@ A :class:`Cursor` instance has the following attributes and methods: | |||
| 453 | 450 | case no executeXX() has been performed on the cursor or the rowcount of the last | |
| 454 | 451 | operation is not determinable by the interface". | |
| 455 | 452 | ||
| 453 | + This includes ``SELECT`` statements because we cannot determine the number of | ||
| 454 | + rows a query produced until all rows were fetched. | ||
| 455 | + | ||
| 456 | 456 | ||
| 457 | 457 | .. _sqlite3-types: | |
| 458 | 458 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -290,3 +290,8 @@ Compiled Struct objects support the following methods and attributes: | |||
| 290 | 290 | ||
| 291 | 291 | The format string used to construct this Struct object. | |
| 292 | 292 | ||
| 293 | + .. attribute:: Struct.size | ||
| 294 | + | ||
| 295 | + The calculated size of the struct (and hence of the string) corresponding | ||
| 296 | + to :attr:`format`. | ||
| 297 | + | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1544,11 +1544,11 @@ Super Binding | |||
| 1544 | 1544 | ``A.__dict__['m'].__get__(obj, A)``. | |
| 1545 | 1545 | ||
| 1546 | 1546 | For instance bindings, the precedence of descriptor invocation depends on the | |
| 1547 | - which descriptor methods are defined. Data descriptors define both | ||
| 1548 | - :meth:`__get__` and :meth:`__set__`. Non-data descriptors have just the | ||
| 1547 | + which descriptor methods are defined. Normally, data descriptors define both | ||
| 1548 | + :meth:`__get__` and :meth:`__set__`, while non-data descriptors have just the | ||
| 1549 | 1549 | :meth:`__get__` method. Data descriptors always override a redefinition in an | |
| 1550 | 1550 | instance dictionary. In contrast, non-data descriptors can be overridden by | |
| 1551 | - instances. | ||
| 1551 | + instances. [#]_ | ||
| 1552 | 1552 | ||
| 1553 | 1553 | Python methods (including :func:`staticmethod` and :func:`classmethod`) are | |
| 1554 | 1554 | implemented as non-data descriptors. Accordingly, instances can redefine and | |
@@ -1817,6 +1817,9 @@ objects. Immutable sequences methods should at most only define | |||
| 1817 | 1817 | ||
| 1818 | 1818 | .. deprecated:: 2.0 | |
| 1819 | 1819 | Support slice objects as parameters to the :meth:`__getitem__` method. | |
| 1820 | + (However, built-in types in CPython currently still implement | ||
| 1821 | + :meth:`__getslice__`. Therefore, you have to override it in derived | ||
| 1822 | + classes when implementing slicing.) | ||
| 1820 | 1823 | ||
| 1821 | 1824 | Called to implement evaluation of ``self[i:j]``. The returned object should be | |
| 1822 | 1825 | of the same type as *self*. Note that missing *i* or *j* in the slice | |
@@ -2112,6 +2115,13 @@ For more information on context managers, see :ref:`typecontextmanager`. | |||
| 2112 | 2115 | .. [#] This, and other statements, are only roughly true for instances of new-style | |
| 2113 | 2116 | classes. | |
| 2114 | 2117 | ||
| 2118 | + .. [#] A descriptor can define any combination of :meth:`__get__`, | ||
| 2119 | + :meth:`__set__` and :meth:`__delete__`. If it does not define :meth:`__get__`, | ||
| 2120 | + then accessing the attribute even on an instance will return the descriptor | ||
| 2121 | + object itself. If the descriptor defines :meth:`__set__` and/or | ||
| 2122 | + :meth:`__delete__`, it is a data descriptor; if it defines neither, it is a | ||
| 2123 | + non-data descriptor. | ||
| 2124 | + | ||
| 2115 | 2125 | .. [#] For operands of the same type, it is assumed that if the non-reflected method | |
| 2116 | 2126 | (such as :meth:`__add__`) fails the operation is not supported, which is why the | |
| 2117 | 2127 | reflected method is not called. | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -741,7 +741,7 @@ less tightly than unary operators on its right. The syntax is: | |||
| 741 | 741 | ||
| 742 | 742 | Thus, in an unparenthesized sequence of power and unary operators, the operators | |
| 743 | 743 | are evaluated from right to left (this does not constrain the evaluation order | |
| 744 | - for the operands). | ||
| 744 | + for the operands): ``-1**2`` results in ``-1``. | ||
| 745 | 745 | ||
| 746 | 746 | The power operator has the same semantics as the built-in :func:`pow` function, | |
| 747 | 747 | when called with two arguments: it yields its left argument raised to the power | |
@@ -959,12 +959,12 @@ Comparisons can be chained arbitrarily, e.g., ``x < y <= z`` is equivalent to | |||
| 959 | 959 | ``x < y and y <= z``, except that ``y`` is evaluated only once (but in both | |
| 960 | 960 | cases ``z`` is not evaluated at all when ``x < y`` is found to be false). | |
| 961 | 961 | ||
| 962 | - Formally, if *a*, *b*, *c*, ..., *y*, *z* are expressions and *opa*, *opb*, ..., | ||
| 963 | - *opy* are comparison operators, then *a opa b opb c* ...*y opy z* is equivalent | ||
| 964 | - to *a opa b* :keyword:`and` *b opb c* :keyword:`and` ... *y opy z*, except that | ||
| 965 | - each expression is evaluated at most once. | ||
| 962 | + Formally, if *a*, *b*, *c*, ..., *y*, *z* are expressions and *op1*, *op2*, ..., | ||
| 963 | + *opN* are comparison operators, then ``a op1 b op2 c ... y opN z`` is equivalent | ||
| 964 | + to ``a op1 b and b op2 c and ... y opN z``, except that each expression is | ||
| 965 | + evaluated at most once. | ||
| 966 | 966 | ||
| 967 | - Note that *a opa b opb c* doesn't imply any kind of comparison between *a* and | ||
| 967 | + Note that ``a op1 b op2 c`` doesn't imply any kind of comparison between *a* and | ||
| 968 | 968 | *c*, so that, e.g., ``x < y > z`` is perfectly legal (though perhaps not | |
| 969 | 969 | pretty). | |
| 970 | 970 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -11,9 +11,9 @@ | |||
| 11 | 11 | ||
| 12 | 12 | if __name__ == '__main__': | |
| 13 | 13 | ||
| 14 | - if sys.version_info[:3] < (2, 5, 0): | ||
| 14 | + if sys.version_info[:3] < (2, 5, 1): | ||
| 15 | 15 | print >>sys.stderr, """\ | |
| 16 | - Error: Sphinx needs to be executed with Python 2.5 or newer | ||
| 16 | + Error: Sphinx needs to be executed with Python 2.5.1 or newer | ||
| 17 | 17 | (If you run this from the Makefile, you can set the PYTHON variable | |
| 18 | 18 | to the path of an alternative interpreter executable, e.g., | |
| 19 | 19 | ``make html PYTHON=python2.5``). | |
| Back | FazBrowse Home | New Git URL |
0 commit comments