mirror of
https://github.com/python/cpython.git
synced 2025-01-19 06:54:52 +08:00
bpo-27200: fix configparser, copyreg and ctypes doctests (#240)
This commit is contained in:
parent
6a9122ce69
commit
b2a7c2f986
@ -42,6 +42,11 @@ can be customized by end users easily.
|
|||||||
be used for this purpose.
|
be used for this purpose.
|
||||||
|
|
||||||
|
|
||||||
|
.. testsetup::
|
||||||
|
|
||||||
|
import configparser
|
||||||
|
|
||||||
|
|
||||||
Quick Start
|
Quick Start
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
@ -95,7 +100,6 @@ back and explore the data it holds.
|
|||||||
|
|
||||||
.. doctest::
|
.. doctest::
|
||||||
|
|
||||||
>>> import configparser
|
|
||||||
>>> config = configparser.ConfigParser()
|
>>> config = configparser.ConfigParser()
|
||||||
>>> config.sections()
|
>>> config.sections()
|
||||||
[]
|
[]
|
||||||
@ -116,8 +120,8 @@ back and explore the data it holds.
|
|||||||
'no'
|
'no'
|
||||||
>>> topsecret['Port']
|
>>> topsecret['Port']
|
||||||
'50022'
|
'50022'
|
||||||
>>> for key in config['bitbucket.org']: print(key)
|
>>> for key in config['bitbucket.org']: # doctest: +SKIP
|
||||||
...
|
... print(key)
|
||||||
user
|
user
|
||||||
compressionlevel
|
compressionlevel
|
||||||
serveraliveinterval
|
serveraliveinterval
|
||||||
@ -469,9 +473,9 @@ the :meth:`__init__` options:
|
|||||||
... 'bar': 'y',
|
... 'bar': 'y',
|
||||||
... 'baz': 'z'}
|
... 'baz': 'z'}
|
||||||
... })
|
... })
|
||||||
>>> parser.sections()
|
>>> parser.sections() # doctest: +SKIP
|
||||||
['section3', 'section2', 'section1']
|
['section3', 'section2', 'section1']
|
||||||
>>> [option for option in parser['section3']]
|
>>> [option for option in parser['section3']] # doctest: +SKIP
|
||||||
['baz', 'foo', 'bar']
|
['baz', 'foo', 'bar']
|
||||||
|
|
||||||
In these operations you need to use an ordered dictionary as well:
|
In these operations you need to use an ordered dictionary as well:
|
||||||
@ -498,11 +502,11 @@ the :meth:`__init__` options:
|
|||||||
... ),
|
... ),
|
||||||
... ))
|
... ))
|
||||||
... )
|
... )
|
||||||
>>> parser.sections()
|
>>> parser.sections() # doctest: +SKIP
|
||||||
['s1', 's2']
|
['s1', 's2']
|
||||||
>>> [option for option in parser['s1']]
|
>>> [option for option in parser['s1']] # doctest: +SKIP
|
||||||
['1', '3', '5']
|
['1', '3', '5']
|
||||||
>>> [option for option in parser['s2'].values()]
|
>>> [option for option in parser['s2'].values()] # doctest: +SKIP
|
||||||
['b', 'd', 'f']
|
['b', 'd', 'f']
|
||||||
|
|
||||||
* *allow_no_value*, default value: ``False``
|
* *allow_no_value*, default value: ``False``
|
||||||
@ -597,11 +601,11 @@ the :meth:`__init__` options:
|
|||||||
... line #3
|
... line #3
|
||||||
... """)
|
... """)
|
||||||
>>> print(parser['hashes']['shebang'])
|
>>> print(parser['hashes']['shebang'])
|
||||||
|
<BLANKLINE>
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
>>> print(parser['hashes']['extensions'])
|
>>> print(parser['hashes']['extensions'])
|
||||||
|
<BLANKLINE>
|
||||||
enabled_extension
|
enabled_extension
|
||||||
another_extension
|
another_extension
|
||||||
yet_another_extension
|
yet_another_extension
|
||||||
@ -755,6 +759,7 @@ be overridden by subclasses or by attribute assignment.
|
|||||||
|
|
||||||
.. doctest::
|
.. doctest::
|
||||||
|
|
||||||
|
>>> import re
|
||||||
>>> config = """
|
>>> config = """
|
||||||
... [Section 1]
|
... [Section 1]
|
||||||
... option = value
|
... option = value
|
||||||
@ -762,11 +767,11 @@ be overridden by subclasses or by attribute assignment.
|
|||||||
... [ Section 2 ]
|
... [ Section 2 ]
|
||||||
... another = val
|
... another = val
|
||||||
... """
|
... """
|
||||||
>>> typical = ConfigParser()
|
>>> typical = configparser.ConfigParser()
|
||||||
>>> typical.read_string(config)
|
>>> typical.read_string(config)
|
||||||
>>> typical.sections()
|
>>> typical.sections()
|
||||||
['Section 1', ' Section 2 ']
|
['Section 1', ' Section 2 ']
|
||||||
>>> custom = ConfigParser()
|
>>> custom = configparser.ConfigParser()
|
||||||
>>> custom.SECTCRE = re.compile(r"\[ *(?P<header>[^]]+?) *\]")
|
>>> custom.SECTCRE = re.compile(r"\[ *(?P<header>[^]]+?) *\]")
|
||||||
>>> custom.read_string(config)
|
>>> custom.read_string(config)
|
||||||
>>> custom.sections()
|
>>> custom.sections()
|
||||||
|
@ -59,7 +59,7 @@ it will be used:
|
|||||||
...
|
...
|
||||||
>>> copyreg.pickle(C, pickle_c)
|
>>> copyreg.pickle(C, pickle_c)
|
||||||
>>> c = C(1)
|
>>> c = C(1)
|
||||||
>>> d = copy.copy(c)
|
>>> d = copy.copy(c) # doctest: +SKIP
|
||||||
pickling a C instance...
|
pickling a C instance...
|
||||||
>>> p = pickle.dumps(c)
|
>>> p = pickle.dumps(c) # doctest: +SKIP
|
||||||
pickling a C instance...
|
pickling a C instance...
|
||||||
|
@ -1406,8 +1406,10 @@ Instances of these classes have no public methods. Functions exported by the
|
|||||||
shared library can be accessed as attributes or by index. Please note that
|
shared library can be accessed as attributes or by index. Please note that
|
||||||
accessing the function through an attribute caches the result and therefore
|
accessing the function through an attribute caches the result and therefore
|
||||||
accessing it repeatedly returns the same object each time. On the other hand,
|
accessing it repeatedly returns the same object each time. On the other hand,
|
||||||
accessing it through an index returns a new object each time:
|
accessing it through an index returns a new object each time::
|
||||||
|
|
||||||
|
>>> from ctypes import CDLL
|
||||||
|
>>> libc = CDLL("libc.so.6") # On Linux
|
||||||
>>> libc.time == libc.time
|
>>> libc.time == libc.time
|
||||||
True
|
True
|
||||||
>>> libc['time'] == libc['time']
|
>>> libc['time'] == libc['time']
|
||||||
|
Loading…
Reference in New Issue
Block a user