Kaydet (Commit) b2a7c2f9 authored tarafından Marco Buttu's avatar Marco Buttu Kaydeden (comit) Berker Peksag

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

üst 6a9122ce
...@@ -42,6 +42,11 @@ can be customized by end users easily. ...@@ -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. ...@@ -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. ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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. ...@@ -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. ...@@ -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: ...@@ -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 ...@@ -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']
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment