# -*- coding: utf-8 -*-
-# Autogenerated by Sphinx on Tue Jan 30 18:36:07 2018
+# Autogenerated by Sphinx on Tue Feb 27 19:39:14 2018
topics = {'assert': 'The "assert" statement\n'
'**********************\n'
'\n'
'\n'
'object.__getattr__(self, name)\n'
'\n'
- ' Called when an attribute lookup has not found the '
- 'attribute in the\n'
- ' usual places (i.e. it is not an instance attribute '
- 'nor is it found\n'
- ' in the class tree for "self"). "name" is the '
- 'attribute name. This\n'
- ' method should return the (computed) attribute value '
- 'or raise an\n'
- ' "AttributeError" exception.\n'
+ ' Called when the default attribute access fails with '
+ 'an\n'
+ ' "AttributeError" (either "__getattribute__()" raises '
+ 'an\n'
+ ' "AttributeError" because *name* is not an instance '
+ 'attribute or an\n'
+ ' attribute in the class tree for "self"; or '
+ '"__get__()" of a *name*\n'
+ ' property raises "AttributeError"). This method '
+ 'should either\n'
+ ' return the (computed) attribute value or raise an '
+ '"AttributeError"\n'
+ ' exception.\n'
'\n'
' Note that if the attribute is found through the '
'normal mechanism,\n'
'conversion] [":" format_spec] "}"\n'
' field_name ::= arg_name ("." attribute_name | '
'"[" element_index "]")*\n'
- ' arg_name ::= [identifier | integer]\n'
+ ' arg_name ::= [identifier | digit+]\n'
' attribute_name ::= identifier\n'
- ' element_index ::= integer | index_string\n'
+ ' element_index ::= digit+ | index_string\n'
' index_string ::= <any source character except '
'"]"> +\n'
' conversion ::= "r" | "s" | "a"\n'
' fill ::= <any character>\n'
' align ::= "<" | ">" | "=" | "^"\n'
' sign ::= "+" | "-" | " "\n'
- ' width ::= integer\n'
+ ' width ::= digit+\n'
' grouping_option ::= "_" | ","\n'
- ' precision ::= integer\n'
+ ' precision ::= digit+\n'
' type ::= "b" | "c" | "d" | "e" | "E" | "f" | '
'"F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"\n'
'\n'
'\n'
'object.__getattr__(self, name)\n'
'\n'
- ' Called when an attribute lookup has not found the '
- 'attribute in the\n'
- ' usual places (i.e. it is not an instance attribute nor is '
- 'it found\n'
- ' in the class tree for "self"). "name" is the attribute '
- 'name. This\n'
- ' method should return the (computed) attribute value or '
- 'raise an\n'
- ' "AttributeError" exception.\n'
+ ' Called when the default attribute access fails with an\n'
+ ' "AttributeError" (either "__getattribute__()" raises an\n'
+ ' "AttributeError" because *name* is not an instance '
+ 'attribute or an\n'
+ ' attribute in the class tree for "self"; or "__get__()" of '
+ 'a *name*\n'
+ ' property raises "AttributeError"). This method should '
+ 'either\n'
+ ' return the (computed) attribute value or raise an '
+ '"AttributeError"\n'
+ ' exception.\n'
'\n'
' Note that if the attribute is found through the normal '
'mechanism,\n'
'\n'
' Frame objects\n'
' Frame objects represent execution frames. They may occur in\n'
- ' traceback objects (see below).\n'
+ ' traceback objects (see below), and are also passed to '
+ 'registered\n'
+ ' trace functions.\n'
'\n'
' Special read-only attributes: "f_back" is to the previous '
'stack\n'
' New in version 3.4.\n'
'\n'
' Traceback objects\n'
- ' Traceback objects represent a stack trace of an exception. '
- 'A\n'
- ' traceback object is created when an exception occurs. When '
+ ' Traceback objects represent a stack trace of an '
+ 'exception. A\n'
+ ' traceback object is implicitly created when an exception\n'
+ ' occurs, and may also be explicitly created by calling\n'
+ ' "types.TracebackType".\n'
+ '\n'
+ ' For implicitly created tracebacks, when the search for an\n'
+ ' exception handler unwinds the execution stack, at each\n'
+ ' unwound level a traceback object is inserted in front of '
'the\n'
- ' search for an exception handler unwinds the execution stack, '
- 'at\n'
- ' each unwound level a traceback object is inserted in front '
- 'of\n'
- ' the current traceback. When an exception handler is '
- 'entered,\n'
- ' the stack trace is made available to the program. (See '
- 'section\n'
- ' The try statement.) It is accessible as the third item of '
+ ' current traceback. When an exception handler is entered, '
'the\n'
- ' tuple returned by "sys.exc_info()". When the program contains '
- 'no\n'
- ' suitable handler, the stack trace is written (nicely '
- 'formatted)\n'
- ' to the standard error stream; if the interpreter is '
- 'interactive,\n'
- ' it is also made available to the user as '
- '"sys.last_traceback".\n'
- '\n'
- ' Special read-only attributes: "tb_next" is the next level in '
+ ' stack trace is made available to the program. (See '
+ 'section\n'
+ ' The try statement.) It is accessible as the third item of '
'the\n'
- ' stack trace (towards the frame where the exception occurred), '
- 'or\n'
- ' "None" if there is no next level; "tb_frame" points to the\n'
- ' execution frame of the current level; "tb_lineno" gives the '
- 'line\n'
- ' number where the exception occurred; "tb_lasti" indicates '
+ ' tuple returned by "sys.exc_info()", and as the\n'
+ ' "__traceback__" attribute of the caught exception.\n'
+ '\n'
+ ' When the program contains no suitable handler, the stack\n'
+ ' trace is written (nicely formatted) to the standard error\n'
+ ' stream; if the interpreter is interactive, it is also '
+ 'made\n'
+ ' available to the user as "sys.last_traceback".\n'
+ '\n'
+ ' For explicitly created tracebacks, it is up to the creator '
+ 'of\n'
+ ' the traceback to determine how the "tb_next" attributes\n'
+ ' should be linked to form a full stack trace.\n'
+ '\n'
+ ' Special read-only attributes: "tb_frame" points to the\n'
+ ' execution frame of the current level; "tb_lineno" gives '
'the\n'
- ' precise instruction. The line number and last instruction '
+ ' line number where the exception occurred; "tb_lasti"\n'
+ ' indicates the precise instruction. The line number and '
+ 'last\n'
+ ' instruction in the traceback may differ from the line '
+ 'number\n'
+ ' of its frame object if the exception occurred in a "try"\n'
+ ' statement with no matching except clause or with a '
+ 'finally\n'
+ ' clause.\n'
+ '\n'
+ ' Special writable attribute: "tb_next" is the next level '
'in\n'
- ' the traceback may differ from the line number of its frame\n'
- ' object if the exception occurred in a "try" statement with '
- 'no\n'
- ' matching except clause or with a finally clause.\n'
+ ' the stack trace (towards the frame where the exception\n'
+ ' occurred), or "None" if there is no next level.\n'
+ '\n'
+ ' Changed in version 3.7: Traceback objects can now be '
+ 'explicitly\n'
+ ' instantiated from Python code, and the "tb_next" attribute '
+ 'of\n'
+ ' existing instances can be updated.\n'
'\n'
' Slice objects\n'
' Slice objects are used to represent slices for '
--- /dev/null
+.. bpo: 28414
+.. date: 2017-08-06-14-43-45
+.. nonce: mzZ6vD
+.. release date: 2018-02-27
+.. section: Security
+
+The ssl module now allows users to perform their own IDN en/decoding when
+using SNI.
+
+..
+
+.. bpo: 32889
+.. date: 2018-02-20-21-53-48
+.. nonce: J6eWy5
+.. section: Core and Builtins
+
+Update Valgrind suppression list to account for the rename of
+``Py_ADDRESS_IN_RANG`` to ``address_in_range``.
+
+..
+
+.. bpo: 31356
+.. date: 2018-02-02-08-50-46
+.. nonce: MNwUOQ
+.. section: Core and Builtins
+
+Remove the new API added in bpo-31356 (gc.ensure_disabled() context
+manager).
+
+..
+
+.. bpo: 32305
+.. date: 2018-02-01-10-56-41
+.. nonce: dkU9Qa
+.. section: Core and Builtins
+
+For namespace packages, ensure that both ``__file__`` and
+``__spec__.origin`` are set to None.
+
+..
+
+.. bpo: 32303
+.. date: 2018-02-01-10-16-28
+.. nonce: VsvhSl
+.. section: Core and Builtins
+
+Make sure ``__spec__.loader`` matches ``__loader__`` for namespace packages.
+
+..
+
+.. bpo: 32711
+.. date: 2018-01-29-14-36-37
+.. nonce: 8hQFJP
+.. section: Core and Builtins
+
+Fix the warning messages for Python/ast_unparse.c. Patch by Stéphane Wirtel
+
+..
+
+.. bpo: 32583
+.. date: 2018-01-26-21-20-21
+.. nonce: Fh3fau
+.. section: Core and Builtins
+
+Fix possible crashing in builtin Unicode decoders caused by write out-of-
+bound errors when using customized decode error handlers.
+
+..
+
+.. bpo: 32960
+.. date: 2018-02-26-20-04-40
+.. nonce: 48r0Ml
+.. section: Library
+
+For dataclasses, disallow inheriting frozen from non-frozen classes, and
+also disallow inheriting non-frozen from frozen classes. This restriction
+will be relaxed at a future date.
+
+..
+
+.. bpo: 32713
+.. date: 2018-02-26-13-16-36
+.. nonce: 55yegW
+.. section: Library
+
+Fixed tarfile.itn handling of out-of-bounds float values. Patch by Joffrey
+Fuhrer.
+
+..
+
+.. bpo: 32951
+.. date: 2018-02-25-18-22-01
+.. nonce: gHrCXq
+.. section: Library
+
+Direct instantiation of SSLSocket and SSLObject objects is now prohibited.
+The constructors were never documented, tested, or designed as public
+constructors. Users were suppose to use ssl.wrap_socket() or SSLContext.
+
+..
+
+.. bpo: 32929
+.. date: 2018-02-25-13-47-48
+.. nonce: X2gTDH
+.. section: Library
+
+Remove the tri-state parameter "hash", and add the boolean "unsafe_hash". If
+unsafe_hash is True, add a __hash__ function, but if a __hash__ exists,
+raise TypeError. If unsafe_hash is False, add a __hash__ based on the
+values of eq= and frozen=. The unsafe_hash=False behavior is the same as
+the old hash=None behavior. unsafe_hash=False is the default, just as
+hash=None used to be.
+
+..
+
+.. bpo: 32947
+.. date: 2018-02-25-13-06-21
+.. nonce: mqStVW
+.. section: Library
+
+Add OP_ENABLE_MIDDLEBOX_COMPAT and test workaround for TLSv1.3 for future
+compatibility with OpenSSL 1.1.1.
+
+..
+
+.. bpo: 30622
+.. date: 2018-02-24-21-40-42
+.. nonce: dQjxSe
+.. section: Library
+
+The ssl module now detects missing NPN support in LibreSSL.
+
+..
+
+.. bpo: 32922
+.. date: 2018-02-23-19-12-04
+.. nonce: u-xe0B
+.. section: Library
+
+dbm.open() now encodes filename with the filesystem encoding rather than
+default encoding.
+
+..
+
+.. bpo: 32859
+.. date: 2018-02-19-17-46-31
+.. nonce: kAT-Xp
+.. section: Library
+
+In ``os.dup2``, don't check every call whether the ``dup3`` syscall exists
+or not.
+
+..
+
+.. bpo: 32556
+.. date: 2018-02-19-14-27-51
+.. nonce: CsRsgr
+.. section: Library
+
+nt._getfinalpathname, nt._getvolumepathname and nt._getdiskusage now
+correctly convert from bytes.
+
+..
+
+.. bpo: 25988
+.. date: 2018-02-18-13-04-59
+.. nonce: ACidKC
+.. section: Library
+
+Emit a :exc:`DeprecationWarning` when using or importing an ABC directly
+from :mod:`collections` rather than from :mod:`collections.abc`.
+
+..
+
+.. bpo: 21060
+.. date: 2018-02-17-19-20-19
+.. nonce: S1Z-x6
+.. section: Library
+
+Rewrite confusing message from setup.py upload from "No dist file created in
+earlier command" to the more helpful "Must create and upload files in one
+command".
+
+..
+
+.. bpo: 32852
+.. date: 2018-02-15-12-04-29
+.. nonce: HDqIxM
+.. section: Library
+
+Make sure sys.argv remains as a list when running trace.
+
+..
+
+.. bpo: 31333
+.. date: 2018-02-15-08-18-52
+.. nonce: 4fF-gM
+.. section: Library
+
+``_abc`` module is added. It is a speedup module with C implementations for
+various functions and methods in ``abc``. Creating an ABC subclass and
+calling ``isinstance`` or ``issubclass`` with an ABC subclass are up to 1.5x
+faster. In addition, this makes Python start-up up to 10% faster.
+
+Note that the new implementation hides internal registry and caches,
+previously accessible via private attributes ``_abc_registry``,
+``_abc_cache``, and ``_abc_negative_cache``. There are three debugging
+helper methods that can be used instead ``_dump_registry``,
+``_abc_registry_clear``, and ``_abc_caches_clear``.
+
+..
+
+.. bpo: 32841
+.. date: 2018-02-14-00-21-24
+.. nonce: bvHDOc
+.. section: Library
+
+Fixed `asyncio.Condition` issue which silently ignored cancellation after
+notifying and cancelling a conditional lock. Patch by Bar Harel.
+
+..
+
+.. bpo: 32819
+.. date: 2018-02-11-15-54-41
+.. nonce: ZTRX2Q
+.. section: Library
+
+ssl.match_hostname() has been simplified and no longer depends on re and
+ipaddress module for wildcard and IP addresses. Error reporting for invalid
+wildcards has been improved.
+
+..
+
+.. bpo: 32394
+.. date: 2018-02-10-13-51-56
+.. nonce: dFM9SI
+.. section: Library
+
+socket: Remove TCP_FASTOPEN,TCP_KEEPCNT,TCP_KEEPIDLE,TCP_KEEPINTVL flags on
+older version Windows during run-time.
+
+..
+
+.. bpo: 31787
+.. date: 2018-02-09-21-41-56
+.. nonce: owSZ2t
+.. section: Library
+
+Fixed refleaks of ``__init__()`` methods in various modules. (Contributed by
+Oren Milman)
+
+..
+
+.. bpo: 30157
+.. date: 2018-02-09-14-44-43
+.. nonce: lEiiAK
+.. section: Library
+
+Fixed guessing quote and delimiter in csv.Sniffer.sniff() when only the last
+field is quoted. Patch by Jake Davis.
+
+..
+
+.. bpo: 32792
+.. date: 2018-02-08-00-47-07
+.. nonce: NtyDb4
+.. section: Library
+
+collections.ChainMap() preserves the order of the underlying mappings.
+
+..
+
+.. bpo: 32775
+.. date: 2018-02-07-19-12-10
+.. nonce: -T77_c
+.. section: Library
+
+:func:`fnmatch.translate()` no longer produces patterns which contain set
+operations. Sets starting with '[' or containing '--', '&&', '~~' or '||'
+will be interpreted differently in regular expressions in future versions.
+Currently they emit warnings. fnmatch.translate() now avoids producing
+patterns containing such sets by accident.
+
+..
+
+.. bpo: 32622
+.. date: 2018-02-06-17-58-15
+.. nonce: AE0Jz7
+.. section: Library
+
+Implement native fast sendfile for Windows proactor event loop.
+
+..
+
+.. bpo: 32777
+.. date: 2018-02-05-21-28-28
+.. nonce: C-wIXF
+.. section: Library
+
+Fix a rare but potential pre-exec child process deadlock in subprocess on
+POSIX systems when marking file descriptors inheritable on exec in the child
+process. This bug appears to have been introduced in 3.4.
+
+..
+
+.. bpo: 32647
+.. date: 2018-02-05-13-31-42
+.. nonce: ktmfR_
+.. section: Library
+
+The ctypes module used to depend on indirect linking for dlopen. The shared
+extension is now explicitly linked against libdl on platforms with dl.
+
+..
+
+.. bpo: 32741
+.. date: 2018-02-01-17-54-08
+.. nonce: KUvOPL
+.. section: Library
+
+Implement ``asyncio.TimerHandle.when()`` method.
+
+..
+
+.. bpo: 32691
+.. date: 2018-02-01-15-53-35
+.. nonce: VLWVTq
+.. section: Library
+
+Use mod_spec.parent when running modules with pdb
+
+..
+
+.. bpo: 32734
+.. date: 2018-02-01-01-34-47
+.. nonce: gCV9AD
+.. section: Library
+
+Fixed ``asyncio.Lock()`` safety issue which allowed acquiring and locking
+the same lock multiple times, without it being free. Patch by Bar Harel.
+
+..
+
+.. bpo: 32727
+.. date: 2018-01-30-17-46-18
+.. nonce: aHVsRC
+.. section: Library
+
+Do not include name field in SMTP envelope from address. Patch by Stéphane
+Wirtel
+
+..
+
+.. bpo: 31453
+.. date: 2018-01-21-15-01-50
+.. nonce: cZiZBe
+.. section: Library
+
+Add TLSVersion constants and SSLContext.maximum_version / minimum_version
+attributes. The new API wraps OpenSSL 1.1
+https://www.openssl.org/docs/man1.1.0/ssl/SSL_CTX_set_min_proto_version.html
+feature.
+
+..
+
+.. bpo: 24334
+.. date: 2018-01-20-23-17-25
+.. nonce: GZuQLv
+.. section: Library
+
+Internal implementation details of ssl module were cleaned up. The SSLSocket
+has one less layer of indirection. Owner and session information are now
+handled by the SSLSocket and SSLObject constructor. Channel binding
+implementation has been simplified.
+
+..
+
+.. bpo: 31848
+.. date: 2018-01-18-23-34-17
+.. nonce: M2cldy
+.. section: Library
+
+Fix the error handling in Aifc_read.initfp() when the SSND chunk is not
+found. Patch by Zackery Spytz.
+
+..
+
+.. bpo: 32585
+.. date: 2018-01-18-13-09-00
+.. nonce: qpeijr
+.. section: Library
+
+Add Ttk spinbox widget to tkinter.ttk. Patch by Alan D Moore.
+
+..
+
+.. bpo: 32221
+.. date: 2017-12-06-10-10-10
+.. nonce: ideco_
+.. section: Library
+
+Various functions returning tuple containig IPv6 addresses now omit
+``%scope`` part since the same information is already encoded in *scopeid*
+tuple item. Especially this speeds up :func:`socket.recvfrom` when it
+receives multicast packet since useless resolving of network interface name
+is omitted.
+
+..
+
+.. bpo: 30693
+.. date: 2017-11-27-15-09-49
+.. nonce: yC4mJ8
+.. section: Library
+
+The TarFile class now recurses directories in a reproducible way.
+
+..
+
+.. bpo: 30693
+.. date: 2017-11-27-15-09-49
+.. nonce: yC4mJ7
+.. section: Library
+
+The ZipFile class now recurses directories in a reproducible way.
+
+..
+
+.. bpo: 28124
+.. date: 2018-02-25-16-33-35
+.. nonce: _uzkgq
+.. section: Documentation
+
+The ssl module function ssl.wrap_socket() has been de-emphasized and
+deprecated in favor of the more secure and efficient
+SSLContext.wrap_socket() method.
+
+..
+
+.. bpo: 17232
+.. date: 2018-02-23-12-48-03
+.. nonce: tmuTKL
+.. section: Documentation
+
+Clarify docs for -O and -OO. Patch by Terry Reedy.
+
+..
+
+.. bpo: 32436
+.. date: 2018-02-14-11-10-41
+.. nonce: TTJ2jb
+.. section: Documentation
+
+Add documentation for the contextvars module (PEP 567).
+
+..
+
+.. bpo: 32800
+.. date: 2018-02-10-15-16-04
+.. nonce: FyrqCk
+.. section: Documentation
+
+Update link to w3c doc for xml default namespaces.
+
+..
+
+.. bpo: 11015
+.. date: 2018-02-10-12-48-38
+.. nonce: -gUf34
+.. section: Documentation
+
+Update :mod:`test.support` documentation.
+
+..
+
+.. bpo: 8722
+.. date: 2018-02-03-06-11-37
+.. nonce: MPyVyj
+.. section: Documentation
+
+Document :meth:`__getattr__` behavior when property :meth:`get` method
+raises :exc:`AttributeError`.
+
+..
+
+.. bpo: 32614
+.. date: 2018-02-02-07-41-57
+.. nonce: LSqzGw
+.. section: Documentation
+
+Modify RE examples in documentation to use raw strings to prevent
+:exc:`DeprecationWarning` and add text to REGEX HOWTO to highlight the
+deprecation.
+
+..
+
+.. bpo: 31972
+.. date: 2018-01-25-14-23-12
+.. nonce: w1m_8r
+.. section: Documentation
+
+Improve docstrings for `pathlib.PurePath` subclasses.
+
+..
+
+.. bpo: 31809
+.. date: 2017-10-18-18-07-45
+.. nonce: KlQrkE
+.. section: Tests
+
+Add tests to verify connection with secp ECDH curves.
+
+..
+
+.. bpo: 32898
+.. date: 2018-02-21-12-46-00
+.. nonce: M15bZh
+.. section: Build
+
+Fix the python debug build when using COUNT_ALLOCS.
+
+..
+
+.. bpo: 32901
+.. date: 2018-02-23-00-47-13
+.. nonce: mGKz5_
+.. section: Windows
+
+Update Tcl and Tk versions to 8.6.8
+
+..
+
+.. bpo: 31966
+.. date: 2018-02-19-13-54-42
+.. nonce: _Q3HPb
+.. section: Windows
+
+Fixed WindowsConsoleIO.write() for writing empty data.
+
+..
+
+.. bpo: 32409
+.. date: 2018-02-19-10-00-57
+.. nonce: nocuDg
+.. section: Windows
+
+Ensures activate.bat can handle Unicode contents.
+
+..
+
+.. bpo: 32457
+.. date: 2018-02-19-08-54-06
+.. nonce: vVP0Iz
+.. section: Windows
+
+Improves handling of denormalized executable path when launching Python.
+
+..
+
+.. bpo: 32370
+.. date: 2018-02-10-15-38-19
+.. nonce: kcKuct
+.. section: Windows
+
+Use the correct encoding for ipconfig output in the uuid module. Patch by
+Segev Finer.
+
+..
+
+.. bpo: 29248
+.. date: 2018-02-07-17-50-48
+.. nonce: Xzwj-6
+.. section: Windows
+
+Fix :func:`os.readlink` on Windows, which was mistakenly treating the
+``PrintNameOffset`` field of the reparse data buffer as a number of
+characters instead of bytes. Patch by Craig Holmquist and SSE4.
+
+..
+
+.. bpo: 32901
+.. date: 2018-02-27-17-33-15
+.. nonce: hQu0w3
+.. section: macOS
+
+Update macOS 10.9+ installer to Tcl/Tk 8.6.8.
+
+..
+
+.. bpo: 32916
+.. date: 2018-02-23-07-32-36
+.. nonce: 4MsQ5F
+.. section: IDLE
+
+Change ``str`` to ``code`` in pyparse.
+
+..
+
+.. bpo: 32905
+.. date: 2018-02-22-00-09-27
+.. nonce: VlXj0x
+.. section: IDLE
+
+Remove unused code in pyparse module.
+
+..
+
+.. bpo: 32874
+.. date: 2018-02-19-10-56-41
+.. nonce: 6pZ9Gv
+.. section: IDLE
+
+Add tests for pyparse.
+
+..
+
+.. bpo: 32837
+.. date: 2018-02-12-17-22-48
+.. nonce: -33QPl
+.. section: IDLE
+
+Using the system and place-dependent default encoding for open() is a bad
+idea for IDLE's system and location-independent files.
+
+..
+
+.. bpo: 32826
+.. date: 2018-02-12-11-05-22
+.. nonce: IxNZrk
+.. section: IDLE
+
+Add "encoding=utf-8" to open() in IDLE's test_help_about. GUI test
+test_file_buttons() only looks at initial ascii-only lines, but failed on
+systems where open() defaults to 'ascii' because readline() internally reads
+and decodes far enough ahead to encounter a non-ascii character in
+CREDITS.txt.
+
+..
+
+.. bpo: 32765
+.. date: 2018-02-04-17-52-54
+.. nonce: qm0eCu
+.. section: IDLE
+
+Update configdialog General tab docstring to add new widgets to the widget
+list.
+
+..
+
+.. bpo: 32222
+.. date: 2017-12-07-20-51-20
+.. nonce: hPBcGT
+.. section: Tools/Demos
+
+Fix pygettext not extracting docstrings for functions with type annotated
+arguments. Patch by Toby Harradine.