bpo-27200: fix configparser, copyreg and ctypes doctests (#240)

This commit is contained in:
Marco Buttu 2017-03-02 12:02:43 +01:00 committed by Berker Peksag
parent 6a9122ce69
commit b2a7c2f986
3 changed files with 22 additions and 15 deletions

View File

@ -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()

View File

@ -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...

View File

@ -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']