-

25.5. IDLE

+

26.5. IDLE

Source code: Lib/idlelib/


-

IDLE is Python’s Integrated Development and Learning Environment.

+

IDLE is Python’s Integrated Development and Learning Environment.

IDLE has the following features:

    -
  • coded in 100% pure Python, using the tkinter GUI toolkit
  • +
  • coded in 100% pure Python, using the tkinter GUI toolkit
  • cross-platform: works mostly the same on Windows, Unix, and Mac OS X
  • Python shell window (interactive interpreter) with colorizing of code input, output, and error messages
  • @@ -111,24 +107,24 @@ of global and local namespaces
  • configuration, browsers, and other dialogs
-

25.5.2. Editing and navigation

-

In this section, ‘C’ refers to the Control key on Windows and Unix and -the Command key on Mac OSX.

+

26.5.2. Editing and navigation

+

In this section, ‘C’ refers to the Control key on Windows and Unix and +the Command key on Mac OSX.

    -
  • Backspace deletes to the left; Del deletes to the right

    +
  • Backspace deletes to the left; Del deletes to the right

  • -
  • C-Backspace delete word left; C-Del delete word to the right

    +
  • C-Backspace delete word left; C-Del delete word to the right

  • -
  • Arrow keys and Page Up/Page Down to move around

    +
  • Arrow keys and Page Up/Page Down to move around

  • -
  • C-LeftArrow and C-RightArrow moves by words

    +
  • C-LeftArrow and C-RightArrow moves by words

  • -
  • Home/End go to begin/end of line

    +
  • Home/End go to begin/end of line

  • -
  • C-Home/C-End go to begin/end of file

    +
  • C-Home/C-End go to begin/end of file

  • Some useful Emacs bindings are inherited from Tcl/Tk:

      -
    • C-a beginning of line
    • -
    • C-e end of line
    • -
    • C-k kill line (but doesn’t put it in clipboard)
    • -
    • C-l center window around the insertion point
    • -
    • C-b go backward one character without deleting (usually you can +
    • C-a beginning of line
    • +
    • C-e end of line
    • +
    • C-k kill line (but doesn’t put it in clipboard)
    • +
    • C-l center window around the insertion point
    • +
    • C-b go backward one character without deleting (usually you can also use the cursor key for this)
    • -
    • C-f go forward one character without deleting (usually you can +
    • C-f go forward one character without deleting (usually you can also use the cursor key for this)
    • -
    • C-p go up one line (usually you can also use the cursor key for +
    • C-p go up one line (usually you can also use the cursor key for this)
    • -
    • C-d delete next character
    • +
    • C-d delete next character
-

Standard keybindings (like C-c to copy and C-v to paste) +

Standard keybindings (like C-c to copy and C-v to paste) may work. Keybindings are selected in the Configure IDLE dialog.

-

25.5.2.1. Automatic indentation

+

26.5.2.1. Automatic indentation

After a block-opening statement, the next line is indented by 4 spaces (in the Python Shell window by one tab). After certain keywords (break, return etc.) -the next line is dedented. In leading indentation, Backspace deletes up -to 4 spaces if they are there. Tab inserts spaces (in the Python +the next line is dedented. In leading indentation, Backspace deletes up +to 4 spaces if they are there. Tab inserts spaces (in the Python Shell window one tab), number depends on Indent width. Currently, tabs are restricted to four spaces due to Tcl/Tk limitations.

See also the indent/dedent region commands in the edit menu.

-

25.5.2.2. Completions

+

26.5.2.2. Completions

Completions are supplied for functions, classes, and attributes of classes, both built-in and user-defined. Completions are also provided for filenames.

The AutoCompleteWindow (ACW) will open after a predefined delay (default is -two seconds) after a ‘.’ or (in a string) an os.sep is typed. If after one +two seconds) after a ‘.’ or (in a string) an os.sep is typed. If after one of those characters (plus zero or more other characters) a tab is typed the ACW will open immediately if a possible continuation is found.

If there is only one possible completion for the characters entered, a -Tab will supply that completion without opening the ACW.

-

‘Show Completions’ will force open a completions window, by default the -C-space will open a completions window. In an empty +Tab will supply that completion without opening the ACW.

+

‘Show Completions’ will force open a completions window, by default the +C-space will open a completions window. In an empty string, this will contain the files in the current directory. On a blank line, it will contain the built-in and user-defined functions and classes in the current namespaces, plus any modules imported. If some characters have been entered, the ACW will attempt to be more specific.

If a string of characters is typed, the ACW selection will jump to the -entry most closely matching those characters. Entering a tab will +entry most closely matching those characters. Entering a tab will cause the longest non-ambiguous match to be entered in the Editor window or -Shell. Two tab in a row will supply the current ACW selection, as +Shell. Two tab in a row will supply the current ACW selection, as will return or a double click. Cursor keys, Page Up/Down, mouse selection, and the scroll wheel all operate on the ACW.

-

“Hidden” attributes can be accessed by typing the beginning of hidden -name after a ‘.’, e.g. ‘_’. This allows access to modules with -__all__ set, or to class-private attributes.

-

Completions and the ‘Expand Word’ facility can save a lot of typing!

+

“Hidden” attributes can be accessed by typing the beginning of hidden +name after a ‘.’, e.g. ‘_’. This allows access to modules with +__all__ set, or to class-private attributes.

+

Completions and the ‘Expand Word’ facility can save a lot of typing!

Completions are currently limited to those in the namespaces. Names in -an Editor window which are not via __main__ and sys.modules will +an Editor window which are not via __main__ and sys.modules will not be found. Run the module once with your imports to correct this situation. Note that IDLE itself places quite a few modules in sys.modules, so much can be found by default, e.g. the re module.

-

If you don’t like the ACW popping up unbidden, simply make the delay +

If you don’t like the ACW popping up unbidden, simply make the delay longer or disable the extension.

-

25.5.2.3. Calltips

-

A calltip is shown when one types ( after the name of an accessible +

26.5.2.3. Calltips

+

A calltip is shown when one types ( after the name of an accessible function. A name expression may include dots and subscripts. A calltip remains until it is clicked, the cursor is moved out of the argument area, -or ) is typed. When the cursor is in the argument part of a definition, +or ) is typed. When the cursor is in the argument part of a definition, the menu or shortcut display a calltip.

A calltip consists of the function signature and the first line of the docstring. For builtins without an accessible signature, the calltip @@ -457,40 +454,40 @@ details may change.

The set of accessible functions depends on what modules have been imported into the user process, including those imported by Idle itself, and what definitions have been run, all since the last restart.

-

For example, restart the Shell and enter itertools.count(. A calltip +

For example, restart the Shell and enter itertools.count(. A calltip appears because Idle imports itertools into the user process for its own use. -(This could change.) Enter turtle.write( and nothing appears. Idle does +(This could change.) Enter turtle.write( and nothing appears. Idle does not import turtle. The menu or shortcut do nothing either. Enter -import turtle and then turtle.write( will work.

+import turtle and then turtle.write( will work.

In an editor, import statements have no effect until one runs the file. One might want to run a file after writing the import statements at the top, or immediately run an existing file before editing.

-

25.5.2.4. Python Shell window

+

26.5.2.4. Python Shell window

    -
  • C-c interrupts executing command

    +
  • C-c interrupts executing command

  • -
  • C-d sends end-of-file; closes window if typed at a >>> prompt

    +
  • C-d sends end-of-file; closes window if typed at a >>> prompt

  • -
  • Alt-/ (Expand word) is also useful to reduce typing

    +
  • Alt-/ (Expand word) is also useful to reduce typing

    Command history

      -
    • Alt-p retrieves previous command matching what you have typed. On -OS X use C-p.
    • -
    • Alt-n retrieves next. On OS X use C-n.
    • -
    • Return while on any previous command retrieves that command
    • +
    • Alt-p retrieves previous command matching what you have typed. On +OS X use C-p.
    • +
    • Alt-n retrieves next. On OS X use C-n.
    • +
    • Return while on any previous command retrieves that command
-

25.5.2.5. Text colors

+

26.5.2.5. Text colors

Idle defaults to black on white text, but colors text with special meanings. For the shell, these are shell output, shell error, user output, and user error. For Python code, at the shell prompt or in an editor, these are -keywords, builtin class and function names, names following class and -def, strings, and comments. For any text window, these are the cursor (when +keywords, builtin class and function names, names following class and +def, strings, and comments. For any text window, these are the cursor (when present), found text (when possible), and selected text.

Text coloring is done in the background, so uncolorized text is occasionally visible. To change the color scheme, use the Configure IDLE dialog @@ -499,22 +496,22 @@ text in popups and dialogs is not user-configurable.

-

25.5.3. Startup and code execution

-

Upon startup with the -s option, IDLE will execute the file referenced by -the environment variables IDLESTARTUP or PYTHONSTARTUP. -IDLE first checks for IDLESTARTUP; if IDLESTARTUP is present the file -referenced is run. If IDLESTARTUP is not present, IDLE checks for -PYTHONSTARTUP. Files referenced by these environment variables are +

26.5.3. Startup and code execution

+

Upon startup with the -s option, IDLE will execute the file referenced by +the environment variables IDLESTARTUP or PYTHONSTARTUP. +IDLE first checks for IDLESTARTUP; if IDLESTARTUP is present the file +referenced is run. If IDLESTARTUP is not present, IDLE checks for +PYTHONSTARTUP. Files referenced by these environment variables are convenient places to store functions that are used frequently from the IDLE shell, or for executing import statements to import common modules.

-

In addition, Tk also loads a startup file if it is present. Note that the -Tk file is loaded unconditionally. This additional file is .Idle.py and is -looked for in the user’s home directory. Statements in this file will be +

In addition, Tk also loads a startup file if it is present. Note that the +Tk file is loaded unconditionally. This additional file is .Idle.py and is +looked for in the user’s home directory. Statements in this file will be executed in the Tk namespace, so this file is not useful for importing -functions to be used from IDLE’s Python shell.

+functions to be used from IDLE’s Python shell.

-

25.5.3.1. Command line usage

-
idle.py [-c command] [-d] [-e] [-h] [-i] [-r file] [-s] [-t title] [-] [arg] ...
+

26.5.3.1. Command line usage

+
idle.py [-c command] [-d] [-e] [-h] [-i] [-r file] [-s] [-t title] [-] [arg] ...
 
 -c command  run command in the shell window
 -d          enable debugger and open shell window
@@ -529,21 +526,21 @@ functions to be used from IDLE’s Python shell.

If there are arguments:

    -
  • If -, -c, or r is used, all arguments are placed in -sys.argv[1:...] and sys.argv[0] is set to '', '-c', -or '-r'. No editor window is opened, even if that is the default +
  • If -, -c, or r is used, all arguments are placed in +sys.argv[1:...] and sys.argv[0] is set to '', '-c', +or '-r'. No editor window is opened, even if that is the default set in the Options dialog.
  • Otherwise, arguments are files opened for editing and -sys.argv reflects the arguments passed to IDLE itself.
  • +sys.argv reflects the arguments passed to IDLE itself.
-

25.5.3.2. Startup failure

+

26.5.3.2. Startup failure

IDLE uses a socket to communicate between the IDLE GUI process and the user code execution process. A connection must be established whenever the Shell starts or restarts. (The latter is indicated by a divider line that says -‘RESTART’). If the user process fails to connect to the GUI process, it -displays a Tk error box with a ‘cannot connect’ message that directs the +‘RESTART’). If the user process fails to connect to the GUI process, it +displays a Tk error box with a ‘cannot connect’ message that directs the user here. It then exits.

A common cause of failure is a user-written file with the same name as a standard library module, such as random.py and tkinter.py. When such a @@ -565,46 +562,46 @@ Manager to detect and stop one. Sometimes a restart initiated by a program crash or Keyboard Interrupt (control-C) may fail to connect. Dismissing the error box or Restart Shell on the Shell menu may fix a temporary problem.

When IDLE first starts, it attempts to read user configuration files in -~/.idlerc/ (~ is one’s home directory). If there is a problem, an error +~/.idlerc/ (~ is one’s home directory). If there is a problem, an error message should be displayed. Leaving aside random disk glitches, this can be prevented by never editing the files by hand, using the configuration dialog, under Options, instead Options. Once it happens, the solution may be to delete one or more of the configuration files.

If IDLE quits with no message, and it was not started from a console, try -starting from a console (python -m idlelib) and see if a message appears.

+starting from a console (python -m idlelib) and see if a message appears.

-

25.5.3.3. IDLE-console differences

+

26.5.3.3. IDLE-console differences

With rare exceptions, the result of executing Python code with IDLE is intended to be the same as executing the same code in a console window. However, the different interface and operation occasionally affect -visible results. For instance, sys.modules starts with more entries.

-

IDLE also replaces sys.stdin, sys.stdout, and sys.stderr with +visible results. For instance, sys.modules starts with more entries.

+

IDLE also replaces sys.stdin, sys.stdout, and sys.stderr with objects that get input from and send output to the Shell window. When Shell has the focus, it controls the keyboard and screen. This is normally transparent, but functions that directly access the keyboard -and screen will not work. If sys is reset with importlib.reload(sys), -IDLE’s changes are lost and things like input, raw_input, and -print will not work correctly.

-

With IDLE’s Shell, one enters, edits, and recalls complete statements. +and screen will not work. If sys is reset with importlib.reload(sys), +IDLE’s changes are lost and things like input, raw_input, and +print will not work correctly.

+

With IDLE’s Shell, one enters, edits, and recalls complete statements. Some consoles only work with a single physical line at a time. IDLE uses -exec to run each statement. As a result, '__builtins__' is always +exec to run each statement. As a result, '__builtins__' is always defined for each statement.

-

25.5.3.4. Developing tkinter applications

+

26.5.3.4. Developing tkinter applications

IDLE is intentionally different from standard Python in order to -facilitate development of tkinter programs. Enter import tkinter as tk; +facilitate development of tkinter programs. Enter import tkinter as tk; root = tk.Tk() in standard Python and nothing appears. Enter the same in IDLE and a tk window appears. In standard Python, one must also enter -root.update() to see the window. IDLE does the equivalent in the +root.update() to see the window. IDLE does the equivalent in the background, about 20 times a second, which is about every 50 milleseconds. -Next enter b = tk.Button(root, text='button'); b.pack(). Again, -nothing visibly changes in standard Python until one enters root.update().

-

Most tkinter programs run root.mainloop(), which usually does not +Next enter b = tk.Button(root, text='button'); b.pack(). Again, +nothing visibly changes in standard Python until one enters root.update().

+

Most tkinter programs run root.mainloop(), which usually does not return until the tk app is destroyed. If the program is run with -python -i or from an IDLE editor, a >>> shell prompt does not -appear until mainloop() returns, at which time there is nothing left +python -i or from an IDLE editor, a >>> shell prompt does not +appear until mainloop() returns, at which time there is nothing left to interact with.

When running a tkinter program from an IDLE editor, one can comment out the mainloop call. One then gets a shell prompt immediately and can @@ -612,7 +609,7 @@ interact with the live application. One just has to remember to re-enable the mainloop call when running in standard Python.

-

25.5.3.5. Running without a subprocess

+

26.5.3.5. Running without a subprocess

By default, IDLE executes user code in a separate subprocess via a socket, which uses the internal loopback interface. This connection is not externally visible and no data is sent to or received from the Internet. @@ -638,24 +635,24 @@ with the default subprocess if at all possible.

-

25.5.4. Help and preferences

+

26.5.4. Help and preferences

-

25.5.4.1. Additional help sources

-

IDLE includes a help menu entry called “Python Docs” that will open the +

26.5.4.1. Additional help sources

+

IDLE includes a help menu entry called “Python Docs” that will open the extensive sources of help, including tutorials, available at docs.python.org. Selected URLs can be added or removed from the help menu at any time using the Configure IDLE dialog. See the IDLE help option in the help menu of IDLE for more information.

-

25.5.4.2. Setting preferences

+

26.5.4.2. Setting preferences

The font preferences, highlighting, keys, and general preferences can be changed via Configure IDLE on the Option menu. Keys can be user defined; IDLE ships with four built-in key sets. In addition, a user can create a custom key set in the Configure IDLE dialog under the keys tab.

-

25.5.4.3. Extensions

+

26.5.4.3. Extensions

IDLE contains an extension facility. Preferences for extensions can be changed with the Extensions tab of the preferences dialog. See the beginning of config-extensions.def in the idlelib directory for further @@ -673,40 +670,40 @@ also used for testing.

Table Of Contents

    -
  • 25.5. IDLE
      -
    • 25.5.1. Menus
        -
      • 25.5.1.1. File menu (Shell and Editor)
      • -
      • 25.5.1.2. Edit menu (Shell and Editor)
      • -
      • 25.5.1.3. Format menu (Editor window only)
      • -
      • 25.5.1.4. Run menu (Editor window only)
      • -
      • 25.5.1.5. Shell menu (Shell window only)
      • -
      • 25.5.1.6. Debug menu (Shell window only)
      • -
      • 25.5.1.7. Options menu (Shell and Editor)
      • -
      • 25.5.1.8. Window menu (Shell and Editor)
      • -
      • 25.5.1.9. Help menu (Shell and Editor)
      • -
      • 25.5.1.10. Context Menus
      • +
      • 26.5. IDLE
          +
        • 26.5.1. Menus
        • -
        • 25.5.2. Editing and navigation
            -
          • 25.5.2.1. Automatic indentation
          • -
          • 25.5.2.2. Completions
          • -
          • 25.5.2.3. Calltips
          • -
          • 25.5.2.4. Python Shell window
          • -
          • 25.5.2.5. Text colors
          • +
          • 26.5.2. Editing and navigation
          • -
          • 25.5.3. Startup and code execution
              -
            • 25.5.3.1. Command line usage
            • -
            • 25.5.3.2. Startup failure
            • -
            • 25.5.3.3. IDLE-console differences
            • -
            • 25.5.3.4. Developing tkinter applications
            • -
            • 25.5.3.5. Running without a subprocess
            • +
            • 26.5.3. Startup and code execution
            • -
            • 25.5.4. Help and preferences @@ -715,16 +712,16 @@ also used for testing.

              Previous topic

              25.4. tkinter.scrolledtext — Scrolled Text Widget

              + title="previous chapter">26.4. tkinter.scrolledtext — Scrolled Text Widget

              Next topic

              25.6. Other Graphical User Interface Packages

              + title="next chapter">26.6. Other Graphical User Interface Packages

              This Page

              -- GitLab From 040d4a7b5899b9635c6997c5ecb91f8299f0b352 Mon Sep 17 00:00:00 2001 From: "Miss Islington (bot)" <31488909+miss-islington@users.noreply.github.com> Date: Sun, 10 Jun 2018 14:45:51 -0700 Subject: [PATCH 1420/1433] bpo-33748: fix tests altering sys.path and sys.modules (GH-7433) (GH-7603) (cherry picked from commit 4ab4695388fb9ec03a14d93e90ce50d832a920ec) Co-authored-by: Tal Einat --- Lib/unittest/test/test_discovery.py | 39 +++++++++++++++-------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/Lib/unittest/test/test_discovery.py b/Lib/unittest/test/test_discovery.py index 227b44a470..204043b493 100644 --- a/Lib/unittest/test/test_discovery.py +++ b/Lib/unittest/test/test_discovery.py @@ -4,10 +4,11 @@ import re import sys import types import pickle -import builtins from test import support +import test.test_importlib.util import unittest +import unittest.mock import unittest.test @@ -820,7 +821,6 @@ class TestDiscovery(unittest.TestCase): def test_discovery_from_dotted_namespace_packages(self): loader = unittest.TestLoader() - orig_import = __import__ package = types.ModuleType('package') package.__path__ = ['/a', '/b'] package.__spec__ = types.SimpleNamespace( @@ -832,11 +832,6 @@ class TestDiscovery(unittest.TestCase): sys.modules[packagename] = package return package - def cleanup(): - builtins.__import__ = orig_import - self.addCleanup(cleanup) - builtins.__import__ = _import - _find_tests_args = [] def _find_tests(start_dir, pattern, namespace=None): _find_tests_args.append((start_dir, pattern)) @@ -844,28 +839,34 @@ class TestDiscovery(unittest.TestCase): loader._find_tests = _find_tests loader.suiteClass = list - suite = loader.discover('package') + + with unittest.mock.patch('builtins.__import__', _import): + # Since loader.discover() can modify sys.path, restore it when done. + with support.DirsOnSysPath(): + # Make sure to remove 'package' from sys.modules when done. + with test.test_importlib.util.uncache('package'): + suite = loader.discover('package') + self.assertEqual(suite, ['/a/tests', '/b/tests']) def test_discovery_failed_discovery(self): loader = unittest.TestLoader() package = types.ModuleType('package') - orig_import = __import__ def _import(packagename, *args, **kwargs): sys.modules[packagename] = package return package - def cleanup(): - builtins.__import__ = orig_import - self.addCleanup(cleanup) - builtins.__import__ = _import - - with self.assertRaises(TypeError) as cm: - loader.discover('package') - self.assertEqual(str(cm.exception), - 'don\'t know how to discover from {!r}' - .format(package)) + with unittest.mock.patch('builtins.__import__', _import): + # Since loader.discover() can modify sys.path, restore it when done. + with support.DirsOnSysPath(): + # Make sure to remove 'package' from sys.modules when done. + with test.test_importlib.util.uncache('package'): + with self.assertRaises(TypeError) as cm: + loader.discover('package') + self.assertEqual(str(cm.exception), + 'don\'t know how to discover from {!r}' + .format(package)) if __name__ == '__main__': -- GitLab From 1d4089b5d208ae6f0bd256304fd77f04c0b4fd41 Mon Sep 17 00:00:00 2001 From: "Miss Islington (bot)" <31488909+miss-islington@users.noreply.github.com> Date: Sun, 10 Jun 2018 15:03:31 -0700 Subject: [PATCH 1421/1433] bpo-33812: Corrected astimezone for naive datetimes. (GH-7578) (GH-7601) A datetime object d is aware if d.tzinfo is not None and d.tzinfo.utcoffset(d) does not return None. If d.tzinfo is None, or if d.tzinfo is not None but d.tzinfo.utcoffset(d) returns None, d is naive. This commit ensures that instances with non-None d.tzinfo, but d.tzinfo.utcoffset(d) returning None are treated as naive. In addition, C acceleration code will raise TypeError if d.tzinfo.utcoffset(d) returns an object with the type other than timedelta. * Updated the documentation. Assume that the term "naive" is defined elsewhere and remove the not entirely correct clarification. Thanks, Tim. (cherry picked from commit 877b23202b7e7d4f57b58504fd0eb886e8c0b377) Co-authored-by: Alexander Belopolsky --- Doc/library/datetime.rst | 3 +-- Lib/datetime.py | 9 ++++--- Lib/test/datetimetester.py | 25 ++++++++++++------- .../2018-06-10-13-26-02.bpo-33812.frGAOr.rst | 2 ++ Modules/_datetimemodule.c | 11 ++++++++ 5 files changed, 36 insertions(+), 14 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2018-06-10-13-26-02.bpo-33812.frGAOr.rst diff --git a/Doc/library/datetime.rst b/Doc/library/datetime.rst index 98fe86eba8..06141d1c00 100644 --- a/Doc/library/datetime.rst +++ b/Doc/library/datetime.rst @@ -1027,8 +1027,7 @@ Instance methods: If provided, *tz* must be an instance of a :class:`tzinfo` subclass, and its :meth:`utcoffset` and :meth:`dst` methods must not return ``None``. If *self* - is naive (``self.tzinfo is None``), it is presumed to represent time in the - system timezone. + is naive, it is presumed to represent time in the system timezone. If called without arguments (or with ``tz=None``) the system local timezone is assumed for the target timezone. The ``.tzinfo`` attribute of the converted diff --git a/Lib/datetime.py b/Lib/datetime.py index 150664ea3b..b2b1457e37 100644 --- a/Lib/datetime.py +++ b/Lib/datetime.py @@ -1627,14 +1627,17 @@ class datetime(date): mytz = self.tzinfo if mytz is None: mytz = self._local_timezone() + myoffset = mytz.utcoffset(self) + else: + myoffset = mytz.utcoffset(self) + if myoffset is None: + mytz = self.replace(tzinfo=None)._local_timezone() + myoffset = mytz.utcoffset(self) if tz is mytz: return self # Convert self to UTC, and attach the new time zone object. - myoffset = mytz.utcoffset(self) - if myoffset is None: - raise ValueError("astimezone() requires an aware datetime") utc = (self - myoffset).replace(tzinfo=tz) # Convert from UTC to tz's local time. diff --git a/Lib/test/datetimetester.py b/Lib/test/datetimetester.py index 96120c337d..d3fa7530ed 100644 --- a/Lib/test/datetimetester.py +++ b/Lib/test/datetimetester.py @@ -2254,25 +2254,24 @@ class TestDateTime(TestDate): base = cls(2000, 2, 29) self.assertRaises(ValueError, base.replace, year=2001) + @support.run_with_tz('EDT4') def test_astimezone(self): - return # The rest is no longer applicable - # Pretty boring! The TZ test is more interesting here. astimezone() - # simply can't be applied to a naive object. dt = self.theclass.now() - f = FixedOffset(44, "") - self.assertRaises(ValueError, dt.astimezone) # naive + f = FixedOffset(44, "0044") + dt_utc = dt.replace(tzinfo=timezone(timedelta(hours=-4), 'EDT')) + self.assertEqual(dt.astimezone(), dt_utc) # naive self.assertRaises(TypeError, dt.astimezone, f, f) # too many args self.assertRaises(TypeError, dt.astimezone, dt) # arg wrong type - self.assertRaises(ValueError, dt.astimezone, f) # naive - self.assertRaises(ValueError, dt.astimezone, tz=f) # naive + dt_f = dt.replace(tzinfo=f) + timedelta(hours=4, minutes=44) + self.assertEqual(dt.astimezone(f), dt_f) # naive + self.assertEqual(dt.astimezone(tz=f), dt_f) # naive class Bogus(tzinfo): def utcoffset(self, dt): return None def dst(self, dt): return timedelta(0) bog = Bogus() self.assertRaises(ValueError, dt.astimezone, bog) # naive - self.assertRaises(ValueError, - dt.replace(tzinfo=bog).astimezone, f) + self.assertEqual(dt.replace(tzinfo=bog).astimezone(f), dt_f) class AlsoBogus(tzinfo): def utcoffset(self, dt): return timedelta(0) @@ -2280,6 +2279,14 @@ class TestDateTime(TestDate): alsobog = AlsoBogus() self.assertRaises(ValueError, dt.astimezone, alsobog) # also naive + class Broken(tzinfo): + def utcoffset(self, dt): return 1 + def dst(self, dt): return 1 + broken = Broken() + dt_broken = dt.replace(tzinfo=broken) + with self.assertRaises(TypeError): + dt_broken.astimezone() + def test_subclass_datetime(self): class C(self.theclass): diff --git a/Misc/NEWS.d/next/Library/2018-06-10-13-26-02.bpo-33812.frGAOr.rst b/Misc/NEWS.d/next/Library/2018-06-10-13-26-02.bpo-33812.frGAOr.rst new file mode 100644 index 0000000000..0dc3df6a79 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2018-06-10-13-26-02.bpo-33812.frGAOr.rst @@ -0,0 +1,2 @@ +Datetime instance d with non-None tzinfo, but with d.tzinfo.utcoffset(d) +returning None is now treated as naive by the astimezone() method. diff --git a/Modules/_datetimemodule.c b/Modules/_datetimemodule.c index 7403e958dc..148bd80190 100644 --- a/Modules/_datetimemodule.c +++ b/Modules/_datetimemodule.c @@ -5201,6 +5201,7 @@ datetime_astimezone(PyDateTime_DateTime *self, PyObject *args, PyObject *kw) return NULL; if (!HASTZINFO(self) || self->tzinfo == Py_None) { + naive: self_tzinfo = local_timezone_from_local(self); if (self_tzinfo == NULL) return NULL; @@ -5221,6 +5222,16 @@ datetime_astimezone(PyDateTime_DateTime *self, PyObject *args, PyObject *kw) Py_DECREF(self_tzinfo); if (offset == NULL) return NULL; + else if(offset == Py_None) { + Py_DECREF(offset); + goto naive; + } + else if (!PyDelta_Check(offset)) { + Py_DECREF(offset); + PyErr_Format(PyExc_TypeError, "utcoffset() returned %.200s," + " expected timedelta or None", Py_TYPE(offset)->tp_name); + return NULL; + } /* result = self - offset */ result = (PyDateTime_DateTime *)add_datetime_timedelta(self, (PyDateTime_Delta *)offset, -1); -- GitLab From 3e121581d008a780b8a9f1bcda5966cf0c06f6d5 Mon Sep 17 00:00:00 2001 From: "Miss Islington (bot)" <31488909+miss-islington@users.noreply.github.com> Date: Sun, 10 Jun 2018 18:23:41 -0700 Subject: [PATCH 1422/1433] bpo-30167: Prevent site.main() exception if PYTHONSTARTUP is set. (GH-6731) (GH-7607) Before Python 3.6, os.path.abspath(None) used to report an AttributeError which was properly caught inside site.abs_paths, making it ignore __main__, one of sys.modules, which has __file__ and __cached__ set to None. With 3.6, os.path.abspath(None) raises TypeError instead which site.abs_path was not expecting. This resulted in an uncaught exception if a user had PYTHONSTARTUP set and the application called site.main() which a number of third-party programs do. (cherry picked from commit 2487f30d5529948ace26559e274d7cac6abcd1a8) Co-authored-by: Steve Weber --- Lib/site.py | 4 ++-- Misc/ACKS | 1 + .../next/Library/2018-06-10-19-29-17.bpo-30167.G5EgC5.rst | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2018-06-10-19-29-17.bpo-30167.G5EgC5.rst diff --git a/Lib/site.py b/Lib/site.py index 0fc92009e1..1bd63ccf6a 100644 --- a/Lib/site.py +++ b/Lib/site.py @@ -104,11 +104,11 @@ def abs_paths(): continue # don't mess with a PEP 302-supplied __file__ try: m.__file__ = os.path.abspath(m.__file__) - except (AttributeError, OSError): + except (AttributeError, OSError, TypeError): pass try: m.__cached__ = os.path.abspath(m.__cached__) - except (AttributeError, OSError): + except (AttributeError, OSError, TypeError): pass diff --git a/Misc/ACKS b/Misc/ACKS index 8414b9140f..93e65a4bbf 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -1666,6 +1666,7 @@ David Watson Aaron Watters Henrik Weber Leon Weber +Steve Weber Corran Webster Glyn Webster Phil Webster diff --git a/Misc/NEWS.d/next/Library/2018-06-10-19-29-17.bpo-30167.G5EgC5.rst b/Misc/NEWS.d/next/Library/2018-06-10-19-29-17.bpo-30167.G5EgC5.rst new file mode 100644 index 0000000000..072a001ada --- /dev/null +++ b/Misc/NEWS.d/next/Library/2018-06-10-19-29-17.bpo-30167.G5EgC5.rst @@ -0,0 +1 @@ +Prevent site.main() exception if PYTHONSTARTUP is set. Patch by Steve Weber. -- GitLab From 52ecb8cac45677b041a66acca7f2bb3799d19437 Mon Sep 17 00:00:00 2001 From: "Miss Islington (bot)" <31488909+miss-islington@users.noreply.github.com> Date: Sun, 10 Jun 2018 22:07:49 -0700 Subject: [PATCH 1423/1433] pypi.python.org -> pypi.org (GH-7613) (GH-7615) (cherry picked from commit 9d6d06e8065d45f375f4a80e2d7e13b032da1f5b) Co-authored-by: Ned Deily --- Lib/unittest/mock.py | 2 +- Mac/BuildScript/resources/ReadMe.rtf | 4 ++-- Mac/BuildScript/resources/install_certificates.command | 2 +- Misc/python.man | 2 +- Tools/scripts/checkpip.py | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Lib/unittest/mock.py b/Lib/unittest/mock.py index 6be7bb4f06..86183adc19 100644 --- a/Lib/unittest/mock.py +++ b/Lib/unittest/mock.py @@ -2,7 +2,7 @@ # Test tools for mocking and patching. # Maintained by Michael Foord # Backport for other versions of Python available from -# http://pypi.python.org/pypi/mock +# https://pypi.org/project/mock __all__ = ( 'Mock', diff --git a/Mac/BuildScript/resources/ReadMe.rtf b/Mac/BuildScript/resources/ReadMe.rtf index e814659153..f541688489 100644 --- a/Mac/BuildScript/resources/ReadMe.rtf +++ b/Mac/BuildScript/resources/ReadMe.rtf @@ -1,4 +1,4 @@ -{\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf200 +{\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf400 {\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fmodern\fcharset0 CourierNewPSMT;} {\colortbl;\red255\green255\blue255;} {\*\expandedcolortbl;;} @@ -42,7 +42,7 @@ This variant of Python 3.6 now includes its own private copy of OpenSSL 1.0.2. \f1 /Applications/Python 3.6 \f0 to install a curated bundle of default root certificates from the third-party \f1 certifi -\f0 package ({\field{\*\fldinst{HYPERLINK "https://pypi.python.org/pypi/certifi"}}{\fldrslt https://pypi.python.org/pypi/certifi}}). If you choose to use +\f0 package ({\field{\*\fldinst{HYPERLINK "https://pypi.org/project/certifi/"}}{\fldrslt https://pypi.org/project/certifi/}}). If you choose to use \f1 certifi \f0 , you should consider subscribing to the{\field{\*\fldinst{HYPERLINK "https://certifi.io/en/latest/"}}{\fldrslt project's email update service}} to be notified when the certificate bundle is updated.\ \ diff --git a/Mac/BuildScript/resources/install_certificates.command b/Mac/BuildScript/resources/install_certificates.command index 1d2e2d878c..19b4adac07 100755 --- a/Mac/BuildScript/resources/install_certificates.command +++ b/Mac/BuildScript/resources/install_certificates.command @@ -6,7 +6,7 @@ # # sample script to install or update a set of default Root Certificates # for the ssl module. Uses the certificates provided by the certifi package: -# https://pypi.python.org/pypi/certifi +# https://pypi.org/project/certifi/ import os import os.path diff --git a/Misc/python.man b/Misc/python.man index ad3ea6a431..b2e9437e8d 100644 --- a/Misc/python.man +++ b/Misc/python.man @@ -445,7 +445,7 @@ Developer resources: https://devguide.python.org/ .br Downloads: https://www.python.org/downloads/ .br -Module repository: https://pypi.python.org/ +Module repository: https://pypi.org/ .br Newsgroups: comp.lang.python, comp.lang.python.announce .SH LICENSING diff --git a/Tools/scripts/checkpip.py b/Tools/scripts/checkpip.py index 8a64eda34a..a4a9ddfa6f 100755 --- a/Tools/scripts/checkpip.py +++ b/Tools/scripts/checkpip.py @@ -14,7 +14,7 @@ def main(): for project, version in ensurepip._PROJECTS: data = json.loads(urllib.request.urlopen( - "https://pypi.python.org/pypi/{}/json".format(project), + "https://pypi.org/pypi/{}/json".format(project), cadefault=True, ).read().decode("utf8")) upstream_version = data["info"]["version"] -- GitLab From 4836dc997386399e1850637983cb540169690e40 Mon Sep 17 00:00:00 2001 From: Ned Deily Date: Mon, 11 Jun 2018 01:29:28 -0400 Subject: [PATCH 1424/1433] more pypi.python.org -> pypi.org for 3.6 (GH-7616) --- Doc/distutils/setupscript.rst | 2 +- Doc/howto/pyporting.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Doc/distutils/setupscript.rst b/Doc/distutils/setupscript.rst index 38e0202e4a..21d569b65c 100644 --- a/Doc/distutils/setupscript.rst +++ b/Doc/distutils/setupscript.rst @@ -609,7 +609,7 @@ Notes: (4) These fields should not be used if your package is to be compatible with Python versions prior to 2.2.3 or 2.3. The list is available from the `PyPI website - `_. + `_. (5) The ``long_description`` field is used by PyPI when you are diff --git a/Doc/howto/pyporting.rst b/Doc/howto/pyporting.rst index 2a27041ab4..88b01779d2 100644 --- a/Doc/howto/pyporting.rst +++ b/Doc/howto/pyporting.rst @@ -432,7 +432,7 @@ to make sure everything functions as expected in both versions of Python. .. _coverage.py: https://pypi.org/project/coverage .. _Futurize: http://python-future.org/automatic_conversion.html .. _importlib: https://docs.python.org/3/library/importlib.html#module-importlib -.. _importlib2: https://pypi.python.org/pypi/importlib2 +.. _importlib2: https://pypi.org/project/importlib2 .. _Modernize: https://python-modernize.readthedocs.org/en/latest/ .. _mypy: http://mypy-lang.org/ .. _Porting to Python 3: http://python3porting.com/ -- GitLab From 1b5731e2761a9a1b7394b3a81ed267f94fde42ca Mon Sep 17 00:00:00 2001 From: Ned Deily Date: Mon, 11 Jun 2018 04:33:26 -0400 Subject: [PATCH 1425/1433] bpo-23404: Update/sync What's New files for 3.6/3.5/2.7 (GH-7622) --- Doc/whatsnew/2.7.rst | 187 ++++++++++++++++++++++++++++++++++++++++++- Doc/whatsnew/3.5.rst | 36 +++++++++ Doc/whatsnew/3.6.rst | 29 ++++--- 3 files changed, 233 insertions(+), 19 deletions(-) diff --git a/Doc/whatsnew/2.7.rst b/Doc/whatsnew/2.7.rst index 0f9529a1b4..fd59c1611f 100644 --- a/Doc/whatsnew/2.7.rst +++ b/Doc/whatsnew/2.7.rst @@ -1545,7 +1545,7 @@ changes, or look through the Subversion logs for all the details. *ciphers* argument that's a string listing the encryption algorithms to be allowed; the format of the string is described `in the OpenSSL documentation - `__. + `__. (Added by Antoine Pitrou; :issue:`8322`.) Another change makes the extension load all of OpenSSL's ciphers and @@ -1809,7 +1809,7 @@ wish to read the Tcl/Tk manual page describing the Ttk theme engine, available at https://www.tcl.tk/man/tcl8.5/TkCmd/ttk_intro.htm. Some screenshots of the Python/Ttk code in use are at -http://code.google.com/p/python-ttk/wiki/Screenshots. +https://code.google.com/archive/p/python-ttk/wikis/Screenshots.wiki. The :mod:`ttk` module was written by Guilherme Polo and added in :issue:`2983`. An alternate version called ``Tile.py``, written by @@ -1832,8 +1832,8 @@ https://pypi.org/project/unittest2. When used from the command line, the module can automatically discover tests. It's not as fancy as `py.test `__ or -`nose `__, but provides a simple way -to run tests kept within a set of package directories. For example, +`nose `__, but provides a +simple way to run tests kept within a set of package directories. For example, the following command will search the :file:`test/` subdirectory for any importable test files named ``test*.py``:: @@ -2367,6 +2367,18 @@ Port-Specific Changes: Mac OS X installation and a user-installed copy of the same version. (Changed by Ronald Oussoren; :issue:`4865`.) + .. versionchanged:: 2.7.13 + + As of 2.7.13, this change was removed. + ``/Library/Python/2.7/site-packages``, the site-packages directory + used by the Apple-supplied system Python 2.7 is no longer appended to + ``sys.path`` for user-installed Pythons such as from the python.org + installers. As of macOS 10.12, Apple changed how the system + site-packages directory is configured, which could cause installation + of pip components, like setuptools, to fail. Packages installed for + the system Python will no longer be shared with user-installed + Pythons. (:issue:`28440`) + Port-Specific Changes: FreeBSD ----------------------------------- @@ -2558,6 +2570,21 @@ exemption allowing new ``-3`` warnings to be added in any Python 2.7 maintenance release. +Two new environment variables for debug mode +-------------------------------------------- + +In debug mode, the ``[xxx refs]`` statistic is not written by default, the +:envvar:`PYTHONSHOWREFCOUNT` environment variable now must also be set. +(Contributed by Victor Stinner; :issue:`31733`.) + +When Python is compiled with ``COUNT_ALLOC`` defined, allocation counts are no +longer dumped by default anymore: the :envvar:`PYTHONSHOWALLOCCOUNT` environment +variable must now also be set. Moreover, allocation counts are now dumped into +stderr, rather than stdout. (Contributed by Victor Stinner; :issue:`31692`.) + +.. versionadded:: 2.7.15 + + PEP 434: IDLE Enhancement Exception for All Branches ---------------------------------------------------- @@ -2602,10 +2629,162 @@ with the first of those changes appearing in the Python 2.7.7 release. certificate store, the :class:`~ssl.SSLContext` class, and other features. (Contributed by Alex Gaynor and David Reid; :issue:`21308`.) + Refer to the "Version added: 2.7.9" notes in the module documentation for + specific details. + * :func:`os.urandom` was changed to cache a file descriptor to ``/dev/urandom`` instead of reopening ``/dev/urandom`` on every call. (Contributed by Alex Gaynor; :issue:`21305`.) +* :data:`hashlib.algorithms_guaranteed` and + :data:`hashlib.algorithms_available` were backported from Python 3 to make + it easier for Python 2 applications to select the strongest available hash + algorithm. (Contributed by Alex Gaynor in :issue:`21307`) + + +PEP 477: Backport ensurepip (PEP 453) to Python 2.7 +--------------------------------------------------- + +:pep:`477` approves the inclusion of the :pep:`453` ensurepip module and the +improved documentation that was enabled by it in the Python 2.7 maintenance +releases, appearing first in the Python 2.7.9 release. + + +Bootstrapping pip By Default +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The new :mod:`ensurepip` module (defined in :pep:`453`) provides a standard +cross-platform mechanism to bootstrap the pip installer into Python +installations. The version of ``pip`` included with Python 2.7.9 is ``pip`` +1.5.6, and future 2.7.x maintenance releases will update the bundled version to +the latest version of ``pip`` that is available at the time of creating the +release candidate. + +By default, the commands ``pip``, ``pipX`` and ``pipX.Y`` will be installed on +all platforms (where X.Y stands for the version of the Python installation), +along with the ``pip`` Python package and its dependencies. + +For CPython :ref:`source builds on POSIX systems `, +the ``make install`` and ``make altinstall`` commands do not bootstrap ``pip`` +by default. This behaviour can be controlled through configure options, and +overridden through Makefile options. + +On Windows and Mac OS X, the CPython installers now default to installing +``pip`` along with CPython itself (users may opt out of installing it +during the installation process). Window users will need to opt in to the +automatic ``PATH`` modifications to have ``pip`` available from the command +line by default, otherwise it can still be accessed through the Python +launcher for Windows as ``py -m pip``. + +As `discussed in the PEP`__, platform packagers may choose not to install +these commands by default, as long as, when invoked, they provide clear and +simple directions on how to install them on that platform (usually using +the system package manager). + +__ https://www.python.org/dev/peps/pep-0477/#disabling-ensurepip-by-downstream-distributors + + +Documentation Changes +~~~~~~~~~~~~~~~~~~~~~ + +As part of this change, the :ref:`installing-index` and +:ref:`distributing-index` sections of the documentation have been +completely redesigned as short getting started and FAQ documents. Most +packaging documentation has now been moved out to the Python Packaging +Authority maintained `Python Packaging User Guide +`__ and the documentation of the individual +projects. + +However, as this migration is currently still incomplete, the legacy +versions of those guides remaining available as :ref:`install-index` +and :ref:`distutils-index`. + +.. seealso:: + + :pep:`453` -- Explicit bootstrapping of pip in Python installations + PEP written by Donald Stufft and Nick Coghlan, implemented by + Donald Stufft, Nick Coghlan, Martin von Löwis and Ned Deily. + +PEP 476: Enabling certificate verification by default for stdlib http clients +----------------------------------------------------------------------------- + +:pep:`476` updated :mod:`httplib` and modules which use it, such as +:mod:`urllib2` and :mod:`xmlrpclib`, to now verify that the server +presents a certificate which is signed by a Certificate Authority in the +platform trust store and whose hostname matches the hostname being requested +by default, significantly improving security for many applications. This +change was made in the Python 2.7.9 release. + +For applications which require the old previous behavior, they can pass an +alternate context:: + + import urllib2 + import ssl + + # This disables all verification + context = ssl._create_unverified_context() + + # This allows using a specific certificate for the host, which doesn't need + # to be in the trust store + context = ssl.create_default_context(cafile="/path/to/file.crt") + + urllib2.urlopen("https://invalid-cert", context=context) + + +PEP 493: HTTPS verification migration tools for Python 2.7 +---------------------------------------------------------- + +:pep:`493` provides additional migration tools to support a more incremental +infrastructure upgrade process for environments containing applications and +services relying on the historically permissive processing of server +certificates when establishing client HTTPS connections. These additions were +made in the Python 2.7.12 release. + +These tools are intended for use in cases where affected applications and +services can't be modified to explicitly pass a more permissive SSL context +when establishing the connection. + +For applications and services which can't be modified at all, the new +``PYTHONHTTPSVERIFY`` environment variable may be set to ``0`` to revert an +entire Python process back to the default permissive behaviour of Python 2.7.8 +and earlier. + +For cases where the connection establishment code can't be modified, but the +overall application can be, the new :func:`ssl._https_verify_certificates` +function can be used to adjust the default behaviour at runtime. + + +New ``make regen-all`` build target +----------------------------------- + +To simplify cross-compilation, and to ensure that CPython can reliably be +compiled without requiring an existing version of Python to already be +available, the autotools-based build system no longer attempts to implicitly +recompile generated files based on file modification times. + +Instead, a new ``make regen-all`` command has been added to force regeneration +of these files when desired (e.g. after an initial version of Python has +already been built based on the pregenerated versions). + +More selective regeneration targets are also defined - see +:source:`Makefile.pre.in` for details. + +(Contributed by Victor Stinner in :issue:`23404`.) + +.. versionadded:: 2.7.14 + + +Removal of ``make touch`` build target +-------------------------------------- + +The ``make touch`` build target previously used to request implicit regeneration +of generated files by updating their modification times has been removed. + +It has been replaced by the new ``make regen-all`` target. + +(Contributed by Victor Stinner in :issue:`23404`.) + +.. versionchanged:: 2.7.14 .. ====================================================================== diff --git a/Doc/whatsnew/3.5.rst b/Doc/whatsnew/3.5.rst index 3e3329a84c..96f86e6c61 100644 --- a/Doc/whatsnew/3.5.rst +++ b/Doc/whatsnew/3.5.rst @@ -2536,3 +2536,39 @@ Changes in the C API :c:member:`tp_as_async` slot. Refer to :ref:`coro-objects` for new types, structures and functions. + +Notable changes in Python 3.5.4 +=============================== + +New ``make regen-all`` build target +----------------------------------- + +To simplify cross-compilation, and to ensure that CPython can reliably be +compiled without requiring an existing version of Python to already be +available, the autotools-based build system no longer attempts to implicitly +recompile generated files based on file modification times. + +Instead, a new ``make regen-all`` command has been added to force regeneration +of these files when desired (e.g. after an initial version of Python has +already been built based on the pregenerated versions). + +More selective regeneration targets are also defined - see +:source:`Makefile.pre.in` for details. + +(Contributed by Victor Stinner in :issue:`23404`.) + +.. versionadded:: 3.5.4 + + +Removal of ``make touch`` build target +-------------------------------------- + +The ``make touch`` build target previously used to request implicit regeneration +of generated files by updating their modification times has been removed. + +It has been replaced by the new ``make regen-all`` target. + +(Contributed by Victor Stinner in :issue:`23404`.) + +.. versionchanged:: 3.5.4 + diff --git a/Doc/whatsnew/3.6.rst b/Doc/whatsnew/3.6.rst index 42191e0964..8ffe7ef4c0 100644 --- a/Doc/whatsnew/3.6.rst +++ b/Doc/whatsnew/3.6.rst @@ -237,8 +237,8 @@ and the ``__annotations__`` attribute. and Guido van Rossum. Implemented by Ivan Levkivskyi. Tools that use or will use the new syntax: - `mypy `_, - `pytype `_, PyCharm, etc. + `mypy `_, + `pytype `_, PyCharm, etc. .. _whatsnew36-pep515: @@ -907,7 +907,7 @@ return value. cmath ----- -The new :const:`cmath.tau` (τ) constant has been added. +The new :const:`cmath.tau` (*τ*) constant has been added. (Contributed by Lisa Roach in :issue:`12345`, see :pep:`628` for details.) New constants: :const:`cmath.inf` and :const:`cmath.nan` to @@ -1016,11 +1016,6 @@ attribute defaults to ``['gztar']``. Although not anticipated, any code relying on the presence of ``default_format`` may need to be adapted. See :issue:`27819` for more details. -The ``upload`` command now longer tries to change CR end-of-line characters -to CRLF. This fixes a corruption issue with sdists that ended with a byte -equivalent to CR. -(Contributed by Bo Bayles in :issue:`32304`.) - email ----- @@ -1240,7 +1235,7 @@ be reopened. math ---- -The tau (τ) constant has been added to the :mod:`math` and :mod:`cmath` +The tau (*τ*) constant has been added to the :mod:`math` and :mod:`cmath` modules. (Contributed by Lisa Roach in :issue:`12345`, see :pep:`628` for details.) @@ -1609,7 +1604,7 @@ mark class variables. As introduced in :pep:`526`, a variable annotation wrapped in ClassVar indicates that a given attribute is intended to be used as a class variable and should not be set on instances of that class. (Contributed by Ivan Levkivskyi in `Github #280 -`_.) +`_.) A new :const:`~typing.TYPE_CHECKING` constant that is assumed to be ``True`` by the static type chekers, but is ``False`` at runtime. @@ -1894,11 +1889,6 @@ Build and C API Changes * The :c:func:`PyUnicode_FSConverter` and :c:func:`PyUnicode_FSDecoder` functions will now accept :term:`path-like objects `. -* The ``PyExc_RecursionErrorInst`` singleton that was part of the public API - has been removed as its members being never cleared may cause a segfault - during finalization of the interpreter. Contributed by Xavier de Gaye in - :issue:`22898` and :issue:`30697`. - Other Improvements ================== @@ -2393,6 +2383,15 @@ It has been replaced by the new ``make regen-all`` target. .. versionchanged:: 3.6.2 +Notable changes in Python 3.6.4 +=============================== + +The ``PyExc_RecursionErrorInst`` singleton that was part of the public API +has been removed as its members being never cleared may cause a segfault +during finalization of the interpreter. +(Contributed by Xavier de Gaye in :issue:`22898` and :issue:`30697`.) + + Notable changes in Python 3.6.5 =============================== -- GitLab From bbbc3d99dca41bc95a9402d702f6ab833d3003c7 Mon Sep 17 00:00:00 2001 From: "Miss Islington (bot)" <31488909+miss-islington@users.noreply.github.com> Date: Mon, 11 Jun 2018 09:11:52 -0700 Subject: [PATCH 1426/1433] bpo-30820: Remove incorrect docs for email.contentmanager.raw_data_manager (GH-7631) (#7634) The docs claimed that a list of EmailMessage objects could be passed to set_content(), but this was never implemented. (cherry picked from commit 2c071cebe67f517f191f4074757a79b0f597d886) Co-authored-by: Zackery Spytz --- Doc/library/email.contentmanager.rst | 9 --------- 1 file changed, 9 deletions(-) diff --git a/Doc/library/email.contentmanager.rst b/Doc/library/email.contentmanager.rst index f56836ae2d..e09c7c0e40 100644 --- a/Doc/library/email.contentmanager.rst +++ b/Doc/library/email.contentmanager.rst @@ -126,9 +126,6 @@ Currently the email package provides only one concrete content manager, set_content(msg, <'EmailMessage'>, cte=None, \ disposition=None, filename=None, cid=None, \ params=None, headers=None) - set_content(msg, <'list'>, subtype='mixed', \ - disposition=None, filename=None, cid=None, \ - params=None, headers=None) Add headers and payload to *msg*: @@ -144,12 +141,6 @@ Currently the email package provides only one concrete content manager, specified or ``rfc822`` if it is not. If *subtype* is ``partial``, raise an error (``bytes`` objects must be used to construct ``message/partial`` parts). - * For *<'list'>*, which should be a list of - :class:`~email.message.EmailMessage` objects, set the ``maintype`` - to ``multipart``, and the ``subtype`` to *subtype* if it is - specified, and ``mixed`` if it is not. If the message parts in - the *<'list'>* have :mailheader:`MIME-Version` headers, remove - them. If *charset* is provided (which is valid only for ``str``), encode the string to bytes using the specified character set. The default is -- GitLab From 860d8c4a5e0d7cd96dd23f3f7996c97693ae3d55 Mon Sep 17 00:00:00 2001 From: "Miss Islington (bot)" <31488909+miss-islington@users.noreply.github.com> Date: Mon, 11 Jun 2018 10:20:05 -0700 Subject: [PATCH 1427/1433] bpo-33831: Make htmlview run again (GH-7628) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 0e5f901508dea6437dc9ee89b434feca721d45be) Co-authored-by: Andrés Delfino --- Doc/make.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/make.bat b/Doc/make.bat index 0808e0cd09..cff85ceaba 100644 --- a/Doc/make.bat +++ b/Doc/make.bat @@ -156,7 +156,7 @@ cmd /C %this% html if EXIST "%BUILDDIR%\html\index.html" ( echo.Opening "%BUILDDIR%\html\index.html" in the default web browser... - start "%BUILDDIR%\html\index.html" + start "" "%BUILDDIR%\html\index.html" ) goto end -- GitLab From 0404d35f9dc89748949935a9178d28bedde9d8c8 Mon Sep 17 00:00:00 2001 From: "Miss Islington (bot)" <31488909+miss-islington@users.noreply.github.com> Date: Mon, 11 Jun 2018 11:39:43 -0700 Subject: [PATCH 1428/1433] bpo-33656: On Windows, add API call saying that tk scales for DPI (GH-7137) On Windows 8.1+ or 10, with DPI compatibility properties of the Python binary unchanged, and a monitor resolution greater than 96 DPI, this should make text and lines sharper. It should otherwise have no effect. Using a magnifier, I determined that the improvement comes from horizontal and lines being better lined up with the monitor pixels. I checked that this call causes no problem on any Windows buildbot, including the Win7 buildbots. Unlike most IDLE patches, this one can be easily reverted by users by removing a few lines, at the top of idlelib/pyshell.py. (cherry picked from commit 800415e3df69f494afe9f95a8563ce17609fe1da) Co-authored-by: Terry Jan Reedy --- Doc/whatsnew/3.6.rst | 6 ++++++ Lib/idlelib/NEWS.txt | 8 ++++++++ Lib/idlelib/configdialog.py | 7 ++++--- Lib/idlelib/pyshell.py | 8 ++++++++ .../next/IDLE/2018-06-10-17-59-36.bpo-33656.60ZqJS.rst | 4 ++++ 5 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 Misc/NEWS.d/next/IDLE/2018-06-10-17-59-36.bpo-33656.60ZqJS.rst diff --git a/Doc/whatsnew/3.6.rst b/Doc/whatsnew/3.6.rst index 8ffe7ef4c0..2c675a5fbb 100644 --- a/Doc/whatsnew/3.6.rst +++ b/Doc/whatsnew/3.6.rst @@ -1178,6 +1178,12 @@ colors for custom themes is added to Highlights tab of Settings dialog. (Contributed by Cheryl Sabella and Terry Jan Reedy in :issue:`33642`, :issue:`33768`, and :issue:`33679`) +On Windows, a new API call tells Windows that tk scales for DPI. On Windows +8.1+ or 10, with DPI compatibility properties of the Python binary +unchanged, and a monitor resolution greater than 96 DPI, this should +make text and lines sharper. It should otherwise have no effect. +(Contributed by Terry Jan Reedy in :issue:`33656`). + importlib --------- diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt index 33f0885c43..5d829b6d2a 100644 --- a/Lib/idlelib/NEWS.txt +++ b/Lib/idlelib/NEWS.txt @@ -3,6 +3,14 @@ Released on 2018-06-15? ====================================== +bpo-33656: On Windows, add API call saying that tk scales for DPI. +On Windows 8.1+ or 10, with DPI compatibility properties of the Python +binary unchanged, and a monitor resolution greater than 96 DPI, this +should make text and lines sharper. It should otherwise have no +effect. If perchance it make text worse on your monitor, you can +disable the ctypes.OleDLL call near the top of pyshell.py and report +the problem on python-list or idle-dev@python.org. + bpo-33768: Clicking on a context line moves that line to the top of the editor window. diff --git a/Lib/idlelib/configdialog.py b/Lib/idlelib/configdialog.py index 7df69d5c4d..75b917d0e1 100644 --- a/Lib/idlelib/configdialog.py +++ b/Lib/idlelib/configdialog.py @@ -373,11 +373,12 @@ class ConfigDialog(Toplevel): ).grid(row=row, column=1, sticky=W, padx=7) elif opt['type'] == 'int': Entry(entry_area, textvariable=var, validate='key', - validatecommand=(self.is_int, '%P') + validatecommand=(self.is_int, '%P'), width=10 ).grid(row=row, column=1, sticky=NSEW, padx=7) - else: - Entry(entry_area, textvariable=var + else: # type == 'str' + # Limit size to fit non-expanding space with larger font. + Entry(entry_area, textvariable=var, width=15 ).grid(row=row, column=1, sticky=NSEW, padx=7) return diff --git a/Lib/idlelib/pyshell.py b/Lib/idlelib/pyshell.py index ee1313161d..f39f15696e 100755 --- a/Lib/idlelib/pyshell.py +++ b/Lib/idlelib/pyshell.py @@ -8,6 +8,14 @@ except ImportError: print("** IDLE can't import Tkinter.\n" "Your Python may not be configured for Tk. **", file=sys.__stderr__) raise SystemExit(1) + +if sys.platform == 'win32': + import ctypes + try: + ctypes.OleDLL('shcore').SetProcessDpiAwareness(1) + except (AttributeError, OSError): + pass + import tkinter.messagebox as tkMessageBox if TkVersion < 8.5: root = Tk() # otherwise create root in main diff --git a/Misc/NEWS.d/next/IDLE/2018-06-10-17-59-36.bpo-33656.60ZqJS.rst b/Misc/NEWS.d/next/IDLE/2018-06-10-17-59-36.bpo-33656.60ZqJS.rst new file mode 100644 index 0000000000..e0c51b2c0f --- /dev/null +++ b/Misc/NEWS.d/next/IDLE/2018-06-10-17-59-36.bpo-33656.60ZqJS.rst @@ -0,0 +1,4 @@ +On Windows, add API call saying that tk scales for DPI. On Windows +8.1+ or 10, with DPI compatibility properties of the Python binary +unchanged, and a monitor resolution greater than 96 DPI, this should +make text and lines sharper. It should otherwise have no effect. -- GitLab From afa1ea5bfd18947aa732a1ea09220aefbed81e1c Mon Sep 17 00:00:00 2001 From: "Miss Islington (bot)" <31488909+miss-islington@users.noreply.github.com> Date: Mon, 11 Jun 2018 13:08:24 -0700 Subject: [PATCH 1429/1433] bpo-33656: Add enum name for argument of Windows call. (GH-7642) Change suggested by Eryk Sun in a comment on PR 7137 after it was merged. (cherry picked from commit fd88f319a4f40682b989b63f0b6378d69465fda4) Co-authored-by: Terry Jan Reedy --- Lib/idlelib/pyshell.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Lib/idlelib/pyshell.py b/Lib/idlelib/pyshell.py index f39f15696e..ddfb56acdb 100755 --- a/Lib/idlelib/pyshell.py +++ b/Lib/idlelib/pyshell.py @@ -9,10 +9,13 @@ except ImportError: "Your Python may not be configured for Tk. **", file=sys.__stderr__) raise SystemExit(1) +# Valid arguments for the ...Awareness call below are defined in the following. +# https://msdn.microsoft.com/en-us/library/windows/desktop/dn280512(v=vs.85).aspx if sys.platform == 'win32': import ctypes + PROCESS_SYSTEM_DPI_AWARE = 1 try: - ctypes.OleDLL('shcore').SetProcessDpiAwareness(1) + ctypes.OleDLL('shcore').SetProcessDpiAwareness(PROCESS_SYSTEM_DPI_AWARE) except (AttributeError, OSError): pass -- GitLab From 2023eafd9a0554823cab5adf5a1b116d7984db98 Mon Sep 17 00:00:00 2001 From: "Miss Islington (bot)" <31488909+miss-islington@users.noreply.github.com> Date: Mon, 11 Jun 2018 14:19:23 -0700 Subject: [PATCH 1430/1433] bpo-33656: Mention color in idlelib/NEWS.txt entry. (GH-7646) (cherry picked from commit 4b704f29f5a0b6f6d7bd67468ed004bd3a96855d) Co-authored-by: Terry Jan Reedy --- Lib/idlelib/NEWS.txt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt index 5d829b6d2a..ada8801d0d 100644 --- a/Lib/idlelib/NEWS.txt +++ b/Lib/idlelib/NEWS.txt @@ -6,10 +6,11 @@ Released on 2018-06-15? bpo-33656: On Windows, add API call saying that tk scales for DPI. On Windows 8.1+ or 10, with DPI compatibility properties of the Python binary unchanged, and a monitor resolution greater than 96 DPI, this -should make text and lines sharper. It should otherwise have no -effect. If perchance it make text worse on your monitor, you can -disable the ctypes.OleDLL call near the top of pyshell.py and report -the problem on python-list or idle-dev@python.org. +should make text and lines sharper and some colors brighter. +On other systems, it should have no effect. If you have a custom theme, +you may want to adjust a color or two. If perchance it make text worse +on your monitor, you can disable the ctypes.OleDLL call near the top of +pyshell.py and report the problem on python-list or idle-dev@python.org. bpo-33768: Clicking on a context line moves that line to the top of the editor window. -- GitLab From e25757408dc22561af9f9589c2c7e2a2fbb66ee4 Mon Sep 17 00:00:00 2001 From: Ned Deily Date: Mon, 11 Jun 2018 21:44:58 -0400 Subject: [PATCH 1431/1433] bpo-31432: Clarify ssl CERT_NONE/OPTIONAL/REQUIRED docs. (GH-3530) (GH-7652) The documentation for CERT_NONE, CERT_OPTIONAL, and CERT_REQUIRED were misleading and partly wrong. It fails to explain that OpenSSL behaves differently in client and server mode. Also OpenSSL does validate the cert chain everytime. With SSL_VERIFY_NONE a validation error is not fatal in client mode and does not request a client cert in server mode. Also discourage people from using CERT_OPTIONAL in client mode. --- Doc/library/ssl.rst | 38 ++++++++++++------- .../2017-09-13-07-14-59.bpo-31432.yAY4Z3.rst | 2 + 2 files changed, 27 insertions(+), 13 deletions(-) create mode 100644 Misc/NEWS.d/next/Documentation/2017-09-13-07-14-59.bpo-31432.yAY4Z3.rst diff --git a/Doc/library/ssl.rst b/Doc/library/ssl.rst index da7a86ae24..45418c7db1 100644 --- a/Doc/library/ssl.rst +++ b/Doc/library/ssl.rst @@ -536,20 +536,28 @@ Constants .. data:: CERT_NONE Possible value for :attr:`SSLContext.verify_mode`, or the ``cert_reqs`` - parameter to :func:`wrap_socket`. In this mode (the default), no - certificates will be required from the other side of the socket connection. - If a certificate is received from the other end, no attempt to validate it - is made. + parameter to :func:`wrap_socket`. Except for :const:`PROTOCOL_TLS_CLIENT`, + it is the default mode. With client-side sockets, just about any + cert is accepted. Validation errors, such as untrusted or expired cert, + are ignored and do not abort the TLS/SSL handshake. + + In server mode, no certificate is requested from the client, so the client + does not send any for client cert authentication. See the discussion of :ref:`ssl-security` below. .. data:: CERT_OPTIONAL Possible value for :attr:`SSLContext.verify_mode`, or the ``cert_reqs`` - parameter to :func:`wrap_socket`. In this mode no certificates will be - required from the other side of the socket connection; but if they - are provided, validation will be attempted and an :class:`SSLError` - will be raised on failure. + parameter to :func:`wrap_socket`. In client mode, :const:`CERT_OPTIONAL` + has the same meaning as :const:`CERT_REQUIRED`. It is recommended to + use :const:`CERT_REQUIRED` for client-side sockets instead. + + In server mode, a client certificate request is sent to the client. The + client may either ignore the request or send a certificate in order + perform TLS client cert authentication. If the client chooses to send + a certificate, it is verified. Any verification error immediately aborts + the TLS handshake. Use of this setting requires a valid set of CA certificates to be passed, either to :meth:`SSLContext.load_verify_locations` or as a @@ -561,6 +569,15 @@ Constants parameter to :func:`wrap_socket`. In this mode, certificates are required from the other side of the socket connection; an :class:`SSLError` will be raised if no certificate is provided, or if its validation fails. + This mode is **not** sufficient to verify a certificate in client mode as + it does not match hostnames. :attr:`~SSLContext.check_hostname` must be + enabled as well to verify the authenticity of a cert. + :const:`PROTOCOL_TLS_CLIENT` uses :const:`CERT_REQUIRED` and + enables :attr:`~SSLContext.check_hostname` by default. + + With server socket, this mode provides mandatory TLS client cert + authentication. A client certificate request is sent to the client and + the client must provide a valid and trusted certificate. Use of this setting requires a valid set of CA certificates to be passed, either to :meth:`SSLContext.load_verify_locations` or as a @@ -2272,11 +2289,6 @@ In server mode, if you want to authenticate your clients using the SSL layer (rather than using a higher-level authentication mechanism), you'll also have to specify :const:`CERT_REQUIRED` and similarly check the client certificate. - .. note:: - - In client mode, :const:`CERT_OPTIONAL` and :const:`CERT_REQUIRED` are - equivalent unless anonymous ciphers are enabled (they are disabled - by default). Protocol versions ''''''''''''''''' diff --git a/Misc/NEWS.d/next/Documentation/2017-09-13-07-14-59.bpo-31432.yAY4Z3.rst b/Misc/NEWS.d/next/Documentation/2017-09-13-07-14-59.bpo-31432.yAY4Z3.rst new file mode 100644 index 0000000000..18e5353b24 --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2017-09-13-07-14-59.bpo-31432.yAY4Z3.rst @@ -0,0 +1,2 @@ +Clarify meaning of CERT_NONE, CERT_OPTIONAL, and CERT_REQUIRED flags for +ssl.SSLContext.verify_mode. -- GitLab From 1015e38be4a52488a506ccb311ab7b23e46f9fa9 Mon Sep 17 00:00:00 2001 From: Ned Deily Date: Tue, 12 Jun 2018 00:24:03 -0400 Subject: [PATCH 1432/1433] 3.6.6rc1 --- Include/patchlevel.h | 8 +- Lib/pydoc_data/topics.py | 903 +++++++++--------- Misc/NEWS.d/3.6.6rc1.rst | 885 +++++++++++++++++ .../2018-04-30-17-36-46.bpo-33394._Vdi4t.rst | 2 - .../2018-05-10-21-10-01.bpo-33012.5Zfjac.rst | 2 - .../2018-05-15-12-44-50.bpo-33522.mJoNcA.rst | 2 - .../2018-05-28-11-40-22.bpo-33614.28e0sE.rst | 2 - .../2018-06-04-21-34-34.bpo-5755.65GmCj.rst | 3 - .../2018-01-09-17-03-54.bpo-32374.SwwLoz.rst | 2 - .../2017-10-02-21-02-14.bpo-21983.UoC319.rst | 2 - .../2017-12-12-14-02-28.bpo-32282.xFVMTn.rst | 2 - .../2018-03-18-13-56-14.bpo-33041.XwPhI2.rst | 1 - .../2018-04-02-09-32-40.bpo-33199.TPnxQu.rst | 2 - .../2018-04-03-00-30-25.bpo-29922.CdLuMl.rst | 2 - .../2018-04-05-22-20-44.bpo-33231.3Jmo0q.rst | 1 - .../2018-04-25-20-44-42.bpo-28055.f49kfC.rst | 1 - .../2018-05-02-08-36-03.bpo-33391.z4a7rb.rst | 1 - .../2018-05-14-11-00-00.bpo-31849.EmHaH4.rst | 1 - .../2018-05-23-20-46-14.bpo-33622.xPucO9.rst | 4 - .../2018-05-28-12-28-53.bpo-30654.9fDJye.rst | 2 - .../2018-06-06-23-24-40.bpo-33786.lBvT8z.rst | 1 - .../2017-09-13-07-14-59.bpo-31432.yAY4Z3.rst | 2 - .../2018-01-13-20-30-53.bpo-8243.s98r28.rst | 2 - .../2018-03-11-00-16-56.bpo-27428.B7A8FT.rst | 2 - .../2018-03-11-18-53-47.bpo-18802.JhAqH3.rst | 1 - .../2018-03-20-20-11-05.bpo-28247.-V-WS-.rst | 2 - .../2018-03-22-19-23-04.bpo-27212.wrE5KR.rst | 2 - .../2018-03-28-17-03-17.bpo-33126.5UGkNv.rst | 1 - .../2018-04-01-14-30-36.bpo-33195.dRS-XX.rst | 3 - .../2018-04-01-21-03-41.bpo-33201.aa8Lkl.rst | 1 - .../2018-04-20-14-09-36.bpo-33276.rA1z_3.rst | 1 - .../2018-04-29-04-02-18.bpo-33378.-anAHN.rst | 1 - .../2018-05-14-15-23-51.bpo-33421.3GU_QO.rst | 1 - .../2018-05-14-20-08-58.bpo-33503.Wvt0qg.rst | 1 - .../2018-02-12-08-08-45.bpo-32831.srDRvU.rst | 1 - .../2018-04-02-00-28-13.bpo-33204.NBsuIv.rst | 3 - .../2018-04-29-16-13-02.bpo-21474.bglg-F.rst | 3 - .../2018-05-15-17-01-10.bpo-29706.id4H5i.rst | 2 - .../2018-05-17-19-41-12.bpo-33564.XzHZJe.rst | 1 - .../2018-05-23-19-51-07.bpo-33628.sLlFLO.rst | 2 - .../2018-05-24-20-42-44.bpo-33642.J0VQbS.rst | 2 - .../2018-05-29-07-14-37.bpo-33679.MgX_Ui.rst | 3 - .../2018-06-03-09-13-28.bpo-33664.PZzQyL.rst | 5 - .../2018-06-03-20-12-57.bpo-33763.URiFlE.rst | 1 - .../2018-06-04-19-23-11.bpo-33768.I_2qpV.rst | 1 - .../2018-06-10-17-59-36.bpo-33656.60ZqJS.rst | 4 - .../2017-08-21-12-31-53.bpo-31238.Gg0LRH.rst | 3 - .../2017-09-29-16-40-38.bpo-16865.l-f6I_.rst | 1 - .../2017-10-18-19-05-17.bpo-31457.KlE6r8.rst | 2 - .../Library/2017-10-31.bpo-31908.g4xh8x.rst | 3 - .../2018-02-28-13-08-00.bpo-32844.u8tnAe.rst | 2 - .../2018-03-07-22-28-17.bpo-27683.572Rv4.rst | 3 - .../2018-03-12-00-27-56.bpo-33021.m19B9T.rst | 2 - .../2018-03-24-15-08-24.bpo-33127.olJmHv.rst | 1 - .../2018-03-25-13-18-16.bpo-33096.ofdbe7.rst | 4 - .../2018-04-02-20-44-54.bpo-32861.HeBjzN.rst | 3 - .../2018-04-03-10-37-13.bpo-33209.9sGWE_.rst | 1 - .../2018-04-04-23-41-30.bpo-33224.pyR0jB.rst | 2 - .../2018-04-05-11-09-45.bpo-33203.Hje9Py.rst | 3 - .../2018-04-10-20-57-14.bpo-33256.ndHkqu.rst | 1 - .../2018-04-11-20-29-19.bpo-33263.B56Hc1.rst | 1 - .../2018-04-18-19-12-25.bpo-33308.fW75xi.rst | 2 - .../2018-04-20-10-43-17.bpo-33131.L2E977.rst | 1 - .../2018-04-21-00-24-08.bpo-991266.h93TP_.rst | 1 - .../2018-04-23-13-21-39.bpo-33329.lQ-Eod.rst | 1 - .../2018-04-29-11-15-38.bpo-33383.g32YWn.rst | 2 - .../2018-04-29-23-56-20.bpo-33197.dgRLqr.rst | 2 - .../2018-05-05-09-53-05.bpo-33422.4FtQ0q.rst | 2 - .../2018-05-05-18-02-24.bpo-20087.lJrvXL.rst | 1 - .../2018-05-10-14-51-19.bpo-28556.y3zK6I.rst | 3 - .../2018-05-16-05-24-43.bpo-26819.taxbVT.rst | 2 - .../2018-05-16-09-30-27.bpo-33542.idNAcs.rst | 2 - .../2018-05-16-17-05-48.bpo-33548.xWslmx.rst | 1 - .../2018-05-22-13-05-12.bpo-30877.JZEGjI.rst | 3 - .../2018-05-23-00-26-27.bpo-11874.glK5iP.rst | 2 - .../2018-05-28-15-55-12.bpo-33469.hmXBpY.rst | 1 - .../2018-05-28-17-45-06.bpo-33672.GM_Xm_.rst | 1 - .../2018-05-28-18-40-26.bpo-31467.s4Fad3.rst | 2 - .../2018-05-28-22-49-59.bpo-33674.6LFFj7.rst | 4 - .../2018-05-29-12-51-18.bpo-32684.ZEIism.rst | 1 - .../2018-06-03-22-41-59.bpo-33767.2e82g3.rst | 3 - .../2018-06-08-17-34-16.bpo-30805.3qCWa0.rst | 1 - .../2018-06-10-13-26-02.bpo-33812.frGAOr.rst | 2 - .../2018-06-10-19-29-17.bpo-30167.G5EgC5.rst | 1 - .../2018-01-08-13-33-47.bpo-19417.2asoXy.rst | 1 - .../2018-05-26-16-01-40.bpo-33655.Frb4LA.rst | 2 - .../2017-09-26-10-11-21.bpo-31583.TM90_H.rst | 2 - .../2018-02-20-12-16-47.bpo-32885.dL5x7C.rst | 2 - .../2018-03-16-17-25-05.bpo-29673.m8QtaW.rst | 1 - .../2018-03-26-18-54-24.bpo-31920.u_WKsT.rst | 2 - .../2018-04-03-18-10-00.bpo-33189.QrXR00.rst | 2 - .../2018-04-13-11-39-28.bpo-33184.aEohx0.rst | 1 - .../2018-04-07-00-58-50.bpo-33184.rMTiqu.rst | 1 - README.rst | 4 +- 94 files changed, 1337 insertions(+), 631 deletions(-) create mode 100644 Misc/NEWS.d/3.6.6rc1.rst delete mode 100644 Misc/NEWS.d/next/Build/2018-04-30-17-36-46.bpo-33394._Vdi4t.rst delete mode 100644 Misc/NEWS.d/next/Build/2018-05-10-21-10-01.bpo-33012.5Zfjac.rst delete mode 100644 Misc/NEWS.d/next/Build/2018-05-15-12-44-50.bpo-33522.mJoNcA.rst delete mode 100644 Misc/NEWS.d/next/Build/2018-05-28-11-40-22.bpo-33614.28e0sE.rst delete mode 100644 Misc/NEWS.d/next/Build/2018-06-04-21-34-34.bpo-5755.65GmCj.rst delete mode 100644 Misc/NEWS.d/next/C API/2018-01-09-17-03-54.bpo-32374.SwwLoz.rst delete mode 100644 Misc/NEWS.d/next/Core and Builtins/2017-10-02-21-02-14.bpo-21983.UoC319.rst delete mode 100644 Misc/NEWS.d/next/Core and Builtins/2017-12-12-14-02-28.bpo-32282.xFVMTn.rst delete mode 100644 Misc/NEWS.d/next/Core and Builtins/2018-03-18-13-56-14.bpo-33041.XwPhI2.rst delete mode 100644 Misc/NEWS.d/next/Core and Builtins/2018-04-02-09-32-40.bpo-33199.TPnxQu.rst delete mode 100644 Misc/NEWS.d/next/Core and Builtins/2018-04-03-00-30-25.bpo-29922.CdLuMl.rst delete mode 100644 Misc/NEWS.d/next/Core and Builtins/2018-04-05-22-20-44.bpo-33231.3Jmo0q.rst delete mode 100644 Misc/NEWS.d/next/Core and Builtins/2018-04-25-20-44-42.bpo-28055.f49kfC.rst delete mode 100644 Misc/NEWS.d/next/Core and Builtins/2018-05-02-08-36-03.bpo-33391.z4a7rb.rst delete mode 100644 Misc/NEWS.d/next/Core and Builtins/2018-05-14-11-00-00.bpo-31849.EmHaH4.rst delete mode 100644 Misc/NEWS.d/next/Core and Builtins/2018-05-23-20-46-14.bpo-33622.xPucO9.rst delete mode 100644 Misc/NEWS.d/next/Core and Builtins/2018-05-28-12-28-53.bpo-30654.9fDJye.rst delete mode 100644 Misc/NEWS.d/next/Core and Builtins/2018-06-06-23-24-40.bpo-33786.lBvT8z.rst delete mode 100644 Misc/NEWS.d/next/Documentation/2017-09-13-07-14-59.bpo-31432.yAY4Z3.rst delete mode 100644 Misc/NEWS.d/next/Documentation/2018-01-13-20-30-53.bpo-8243.s98r28.rst delete mode 100644 Misc/NEWS.d/next/Documentation/2018-03-11-00-16-56.bpo-27428.B7A8FT.rst delete mode 100644 Misc/NEWS.d/next/Documentation/2018-03-11-18-53-47.bpo-18802.JhAqH3.rst delete mode 100644 Misc/NEWS.d/next/Documentation/2018-03-20-20-11-05.bpo-28247.-V-WS-.rst delete mode 100644 Misc/NEWS.d/next/Documentation/2018-03-22-19-23-04.bpo-27212.wrE5KR.rst delete mode 100644 Misc/NEWS.d/next/Documentation/2018-03-28-17-03-17.bpo-33126.5UGkNv.rst delete mode 100644 Misc/NEWS.d/next/Documentation/2018-04-01-14-30-36.bpo-33195.dRS-XX.rst delete mode 100644 Misc/NEWS.d/next/Documentation/2018-04-01-21-03-41.bpo-33201.aa8Lkl.rst delete mode 100644 Misc/NEWS.d/next/Documentation/2018-04-20-14-09-36.bpo-33276.rA1z_3.rst delete mode 100644 Misc/NEWS.d/next/Documentation/2018-04-29-04-02-18.bpo-33378.-anAHN.rst delete mode 100644 Misc/NEWS.d/next/Documentation/2018-05-14-15-23-51.bpo-33421.3GU_QO.rst delete mode 100644 Misc/NEWS.d/next/Documentation/2018-05-14-20-08-58.bpo-33503.Wvt0qg.rst delete mode 100644 Misc/NEWS.d/next/IDLE/2018-02-12-08-08-45.bpo-32831.srDRvU.rst delete mode 100644 Misc/NEWS.d/next/IDLE/2018-04-02-00-28-13.bpo-33204.NBsuIv.rst delete mode 100644 Misc/NEWS.d/next/IDLE/2018-04-29-16-13-02.bpo-21474.bglg-F.rst delete mode 100644 Misc/NEWS.d/next/IDLE/2018-05-15-17-01-10.bpo-29706.id4H5i.rst delete mode 100644 Misc/NEWS.d/next/IDLE/2018-05-17-19-41-12.bpo-33564.XzHZJe.rst delete mode 100644 Misc/NEWS.d/next/IDLE/2018-05-23-19-51-07.bpo-33628.sLlFLO.rst delete mode 100644 Misc/NEWS.d/next/IDLE/2018-05-24-20-42-44.bpo-33642.J0VQbS.rst delete mode 100644 Misc/NEWS.d/next/IDLE/2018-05-29-07-14-37.bpo-33679.MgX_Ui.rst delete mode 100644 Misc/NEWS.d/next/IDLE/2018-06-03-09-13-28.bpo-33664.PZzQyL.rst delete mode 100644 Misc/NEWS.d/next/IDLE/2018-06-03-20-12-57.bpo-33763.URiFlE.rst delete mode 100644 Misc/NEWS.d/next/IDLE/2018-06-04-19-23-11.bpo-33768.I_2qpV.rst delete mode 100644 Misc/NEWS.d/next/IDLE/2018-06-10-17-59-36.bpo-33656.60ZqJS.rst delete mode 100644 Misc/NEWS.d/next/Library/2017-08-21-12-31-53.bpo-31238.Gg0LRH.rst delete mode 100644 Misc/NEWS.d/next/Library/2017-09-29-16-40-38.bpo-16865.l-f6I_.rst delete mode 100644 Misc/NEWS.d/next/Library/2017-10-18-19-05-17.bpo-31457.KlE6r8.rst delete mode 100644 Misc/NEWS.d/next/Library/2017-10-31.bpo-31908.g4xh8x.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-02-28-13-08-00.bpo-32844.u8tnAe.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-03-07-22-28-17.bpo-27683.572Rv4.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-03-12-00-27-56.bpo-33021.m19B9T.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-03-24-15-08-24.bpo-33127.olJmHv.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-03-25-13-18-16.bpo-33096.ofdbe7.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-04-02-20-44-54.bpo-32861.HeBjzN.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-04-03-10-37-13.bpo-33209.9sGWE_.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-04-04-23-41-30.bpo-33224.pyR0jB.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-04-05-11-09-45.bpo-33203.Hje9Py.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-04-10-20-57-14.bpo-33256.ndHkqu.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-04-11-20-29-19.bpo-33263.B56Hc1.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-04-18-19-12-25.bpo-33308.fW75xi.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-04-20-10-43-17.bpo-33131.L2E977.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-04-21-00-24-08.bpo-991266.h93TP_.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-04-23-13-21-39.bpo-33329.lQ-Eod.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-04-29-11-15-38.bpo-33383.g32YWn.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-04-29-23-56-20.bpo-33197.dgRLqr.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-05-05-09-53-05.bpo-33422.4FtQ0q.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-05-05-18-02-24.bpo-20087.lJrvXL.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-05-10-14-51-19.bpo-28556.y3zK6I.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-05-16-05-24-43.bpo-26819.taxbVT.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-05-16-09-30-27.bpo-33542.idNAcs.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-05-16-17-05-48.bpo-33548.xWslmx.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-05-22-13-05-12.bpo-30877.JZEGjI.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-05-23-00-26-27.bpo-11874.glK5iP.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-05-28-15-55-12.bpo-33469.hmXBpY.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-05-28-17-45-06.bpo-33672.GM_Xm_.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-05-28-18-40-26.bpo-31467.s4Fad3.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-05-28-22-49-59.bpo-33674.6LFFj7.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-05-29-12-51-18.bpo-32684.ZEIism.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-06-03-22-41-59.bpo-33767.2e82g3.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-06-08-17-34-16.bpo-30805.3qCWa0.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-06-10-13-26-02.bpo-33812.frGAOr.rst delete mode 100644 Misc/NEWS.d/next/Library/2018-06-10-19-29-17.bpo-30167.G5EgC5.rst delete mode 100644 Misc/NEWS.d/next/Tests/2018-01-08-13-33-47.bpo-19417.2asoXy.rst delete mode 100644 Misc/NEWS.d/next/Tests/2018-05-26-16-01-40.bpo-33655.Frb4LA.rst delete mode 100644 Misc/NEWS.d/next/Tools-Demos/2017-09-26-10-11-21.bpo-31583.TM90_H.rst delete mode 100644 Misc/NEWS.d/next/Tools-Demos/2018-02-20-12-16-47.bpo-32885.dL5x7C.rst delete mode 100644 Misc/NEWS.d/next/Tools-Demos/2018-03-16-17-25-05.bpo-29673.m8QtaW.rst delete mode 100644 Misc/NEWS.d/next/Tools-Demos/2018-03-26-18-54-24.bpo-31920.u_WKsT.rst delete mode 100644 Misc/NEWS.d/next/Tools-Demos/2018-04-03-18-10-00.bpo-33189.QrXR00.rst delete mode 100644 Misc/NEWS.d/next/Windows/2018-04-13-11-39-28.bpo-33184.aEohx0.rst delete mode 100644 Misc/NEWS.d/next/macOS/2018-04-07-00-58-50.bpo-33184.rMTiqu.rst diff --git a/Include/patchlevel.h b/Include/patchlevel.h index 1c5881e587..8a94c2c0b4 100644 --- a/Include/patchlevel.h +++ b/Include/patchlevel.h @@ -18,12 +18,12 @@ /*--start constants--*/ #define PY_MAJOR_VERSION 3 #define PY_MINOR_VERSION 6 -#define PY_MICRO_VERSION 5 -#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL -#define PY_RELEASE_SERIAL 0 +#define PY_MICRO_VERSION 6 +#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_GAMMA +#define PY_RELEASE_SERIAL 1 /* Version as a string */ -#define PY_VERSION "3.6.5+" +#define PY_VERSION "3.6.6rc1" /*--end constants--*/ /* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2. diff --git a/Lib/pydoc_data/topics.py b/Lib/pydoc_data/topics.py index f37e672a68..0c307a1151 100644 --- a/Lib/pydoc_data/topics.py +++ b/Lib/pydoc_data/topics.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Autogenerated by Sphinx on Tue Mar 13 21:13:16 2018 +# Autogenerated by Sphinx on Tue Jun 12 00:16:23 2018 topics = {'assert': 'The "assert" statement\n' '**********************\n' '\n' @@ -106,7 +106,7 @@ topics = {'assert': 'The "assert" statement\n' ' corresponding targets.\n' '\n' ' * If the target list contains one target prefixed with an\n' - ' asterisk, called a "starred" target: The object must be ' + ' asterisk, called a “starred” target: The object must be ' 'an\n' ' iterable with at least as many items as there are targets ' 'in the\n' @@ -203,10 +203,10 @@ topics = {'assert': 'The "assert" statement\n' ' If the primary is a mutable sequence object (such as a ' 'list), the\n' ' subscript must yield an integer. If it is negative, the ' - "sequence's\n" + 'sequence’s\n' ' length is added to it. The resulting value must be a ' 'nonnegative\n' - " integer less than the sequence's length, and the sequence is " + ' integer less than the sequence’s length, and the sequence is ' 'asked\n' ' to assign the assigned object to its item with that index. ' 'If the\n' @@ -216,7 +216,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' ' If the primary is a mapping object (such as a dictionary), ' 'the\n' - " subscript must have a type compatible with the mapping's key " + ' subscript must have a type compatible with the mapping’s key ' 'type,\n' ' and the mapping is then asked to create a key/datum pair ' 'which maps\n' @@ -239,12 +239,12 @@ topics = {'assert': 'The "assert" statement\n' 'expressions are\n' ' evaluated, insofar they are present; defaults are zero and ' 'the\n' - " sequence's length. The bounds should evaluate to integers. " + ' sequence’s length. The bounds should evaluate to integers. ' 'If\n' - " either bound is negative, the sequence's length is added to " + ' either bound is negative, the sequence’s length is added to ' 'it. The\n' ' resulting bounds are clipped to lie between zero and the ' - "sequence's\n" + 'sequence’s\n' ' length, inclusive. Finally, the sequence object is asked to ' 'replace\n' ' the slice with the items of the assigned sequence. The ' @@ -265,7 +265,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' 'Although the definition of assignment implies that overlaps ' 'between\n' - "the left-hand side and the right-hand side are 'simultaneous' " + 'the left-hand side and the right-hand side are ‘simultaneous’ ' '(for\n' 'example "a, b = b, a" swaps two variables), overlaps *within* ' 'the\n' @@ -464,7 +464,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' 'All literals correspond to immutable data types, and hence ' 'the\n' - "object's identity is less important than its value. " + 'object’s identity is less important than its value. ' 'Multiple\n' 'evaluations of literals with the same value (either the ' 'same\n' @@ -600,11 +600,11 @@ topics = {'assert': 'The "assert" statement\n' '\n' 'Note: Setting module "__class__" only affects lookups ' 'made using the\n' - ' attribute access syntax -- directly accessing the ' + ' attribute access syntax – directly accessing the ' 'module globals\n' ' (whether by code within the module, or via a reference ' 'to the\n' - " module's globals dictionary) is unaffected.\n" + ' module’s globals dictionary) is unaffected.\n' '\n' 'Changed in version 3.5: "__class__" module attribute is ' 'now writable.\n' @@ -618,13 +618,12 @@ topics = {'assert': 'The "assert" statement\n' 'containing the method (a so-called *descriptor* class) ' 'appears in an\n' '*owner* class (the descriptor must be in either the ' - "owner's class\n" + 'owner’s class\n' 'dictionary or in the class dictionary for one of its ' 'parents). In the\n' - 'examples below, "the attribute" refers to the attribute ' + 'examples below, “the attribute” refers to the attribute ' 'whose name is\n' - "the key of the property in the owner class' " - '"__dict__".\n' + 'the key of the property in the owner class’ "__dict__".\n' '\n' 'object.__get__(self, instance, owner)\n' '\n' @@ -681,8 +680,8 @@ topics = {'assert': 'The "assert" statement\n' '====================\n' '\n' 'In general, a descriptor is an object attribute with ' - '"binding\n' - 'behavior", one whose attribute access has been ' + '“binding\n' + 'behavior”, one whose attribute access has been ' 'overridden by methods\n' 'in the descriptor protocol: "__get__()", "__set__()", ' 'and\n' @@ -692,7 +691,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' 'The default behavior for attribute access is to get, ' 'set, or delete\n' - "the attribute from an object's dictionary. For instance, " + 'the attribute from an object’s dictionary. For instance, ' '"a.x" has a\n' 'lookup chain starting with "a.__dict__[\'x\']", then\n' '"type(a).__dict__[\'x\']", and continuing through the ' @@ -747,7 +746,7 @@ topics = {'assert': 'The "assert" statement\n' 'does not define "__get__()", then accessing the ' 'attribute will return\n' 'the descriptor object itself unless there is a value in ' - "the object's\n" + 'the object’s\n' 'instance dictionary. If the descriptor defines ' '"__set__()" and/or\n' '"__delete__()", it is a data descriptor; if it defines ' @@ -868,7 +867,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' '* Nonempty *__slots__* does not work for classes derived ' 'from\n' - ' "variable-length" built-in types such as "int", ' + ' “variable-length” built-in types such as "int", ' '"bytes" and "tuple".\n' '\n' '* Any non-string iterable may be assigned to ' @@ -1011,7 +1010,7 @@ topics = {'assert': 'The "assert" statement\n' 'while\n' 'floor division of integers results in an integer; the result is ' 'that\n' - "of mathematical division with the 'floor' function applied to the\n" + 'of mathematical division with the ‘floor’ function applied to the\n' 'result. Division by zero raises the "ZeroDivisionError" ' 'exception.\n' '\n' @@ -1087,10 +1086,10 @@ topics = {'assert': 'The "assert" statement\n' '************\n' '\n' 'Code objects are used by the implementation to ' - 'represent "pseudo-\n' - 'compiled" executable Python code such as a function ' + 'represent “pseudo-\n' + 'compiled” executable Python code such as a function ' 'body. They differ\n' - "from function objects because they don't contain a " + 'from function objects because they don’t contain a ' 'reference to their\n' 'global execution environment. Code objects are ' 'returned by the built-\n' @@ -1121,7 +1120,7 @@ topics = {'assert': 'The "assert" statement\n' 'bltin-null-object': 'The Null Object\n' '***************\n' '\n' - "This object is returned by functions that don't " + 'This object is returned by functions that don’t ' 'explicitly return a\n' 'value. It supports no special operations. There is ' 'exactly one null\n' @@ -1134,7 +1133,7 @@ topics = {'assert': 'The "assert" statement\n' '************\n' '\n' 'Type objects represent the various object types. An ' - "object's type is\n" + 'object’s type is\n' 'accessed by the built-in function "type()". There are ' 'no special\n' 'operations on types. The standard module "types" ' @@ -1217,7 +1216,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' 'object.__call__(self[, args...])\n' '\n' - ' Called when the instance is "called" as a function; if ' + ' Called when the instance is “called” as a function; if ' 'this method\n' ' is defined, "x(arg1, arg2, ...)" is a shorthand for\n' ' "x.__call__(arg1, arg2, ...)".\n', @@ -1277,7 +1276,7 @@ topics = {'assert': 'The "assert" statement\n' 'values are calculated, once, when the function is defined; thus, a\n' 'mutable object such as a list or dictionary used as default value ' 'will\n' - "be shared by all calls that don't specify an argument value for " + 'be shared by all calls that don’t specify an argument value for ' 'the\n' 'corresponding slot; this should usually be avoided.) If there are ' 'any\n' @@ -1290,7 +1289,7 @@ topics = {'assert': 'The "assert" statement\n' '**CPython implementation detail:** An implementation may provide\n' 'built-in functions whose positional parameters do not have names, ' 'even\n' - "if they are 'named' for the purpose of documentation, and which\n" + 'if they are ‘named’ for the purpose of documentation, and which\n' 'therefore cannot be supplied by keyword. In CPython, this is the ' 'case\n' 'for functions implemented in C that use "PyArg_ParseTuple()" to ' @@ -1322,16 +1321,17 @@ topics = {'assert': 'The "assert" statement\n' 'must evaluate to an *iterable*. Elements from these iterables are\n' 'treated as if they were additional positional arguments. For the ' 'call\n' - '"f(x1, x2, *y, x3, x4)", if *y* evaluates to a sequence *y1*, ...,\n' - '*yM*, this is equivalent to a call with M+4 positional arguments ' - '*x1*,\n' - '*x2*, *y1*, ..., *yM*, *x3*, *x4*.\n' + '"f(x1, x2, *y, x3, x4)", if *y* evaluates to a sequence *y1*, …, ' + '*yM*,\n' + 'this is equivalent to a call with M+4 positional arguments *x1*, ' + '*x2*,\n' + '*y1*, …, *yM*, *x3*, *x4*.\n' '\n' 'A consequence of this is that although the "*expression" syntax ' 'may\n' 'appear *after* explicit keyword arguments, it is processed ' '*before*\n' - 'the keyword arguments (and any "**expression" arguments -- see ' + 'the keyword arguments (and any "**expression" arguments – see ' 'below).\n' 'So:\n' '\n' @@ -1378,7 +1378,7 @@ topics = {'assert': 'The "assert" statement\n' 'exception. How this value is computed depends on the type of the\n' 'callable object.\n' '\n' - 'If it is---\n' + 'If it is—\n' '\n' 'a user-defined function:\n' ' The code block for the function is executed, passing it the\n' @@ -1437,10 +1437,10 @@ topics = {'assert': 'The "assert" statement\n' ' class Foo(object):\n' ' pass\n' '\n' - "The class's suite is then executed in a new execution frame (see\n" + 'The class’s suite is then executed in a new execution frame (see\n' 'Naming and binding), using a newly created local namespace and the\n' 'original global namespace. (Usually, the suite contains mostly\n' - "function definitions.) When the class's suite finishes execution, " + 'function definitions.) When the class’s suite finishes execution, ' 'its\n' 'execution frame is discarded but its local namespace is saved. [4] ' 'A\n' @@ -1452,7 +1452,7 @@ topics = {'assert': 'The "assert" statement\n' 'namespace.\n' '\n' 'The order in which attributes are defined in the class body is\n' - 'preserved in the new class\'s "__dict__". Note that this is ' + 'preserved in the new class’s "__dict__". Note that this is ' 'reliable\n' 'only right after the class is created and only for classes that ' 'were\n' @@ -1476,13 +1476,13 @@ topics = {'assert': 'The "assert" statement\n' 'for\n' 'function decorators. The result is then bound to the class name.\n' '\n' - "**Programmer's note:** Variables defined in the class definition " + '**Programmer’s note:** Variables defined in the class definition ' 'are\n' 'class attributes; they are shared by instances. Instance ' 'attributes\n' 'can be set in a method with "self.name = value". Both class and\n' 'instance attributes are accessible through the notation ' - '""self.name"",\n' + '“"self.name"”,\n' 'and an instance attribute hides a class attribute with the same ' 'name\n' 'when accessed in this way. Class attributes can be used as ' @@ -1519,15 +1519,15 @@ topics = {'assert': 'The "assert" statement\n' 'y" is\n' 'found to be false).\n' '\n' - 'Formally, if *a*, *b*, *c*, ..., *y*, *z* are expressions and ' + 'Formally, if *a*, *b*, *c*, …, *y*, *z* are expressions and ' '*op1*,\n' - '*op2*, ..., *opN* are comparison operators, then "a op1 b op2 ' - 'c ... y\n' + '*op2*, …, *opN* are comparison operators, then "a op1 b op2 c ' + '... y\n' 'opN z" is equivalent to "a op1 b and b op2 c and ... y opN ' 'z", except\n' 'that each expression is evaluated at most once.\n' '\n' - 'Note that "a op1 b op2 c" doesn\'t imply any kind of ' + 'Note that "a op1 b op2 c" doesn’t imply any kind of ' 'comparison between\n' '*a* and *c*, so that, e.g., "x < y > z" is perfectly legal ' '(though\n' @@ -1548,7 +1548,7 @@ topics = {'assert': 'The "assert" statement\n' 'rather\n' 'abstract notion in Python: For example, there is no canonical ' 'access\n' - "method for an object's value. Also, there is no requirement " + 'method for an object’s value. Also, there is no requirement ' 'that the\n' 'value of an object should be constructed in a particular way, ' 'e.g.\n' @@ -1602,7 +1602,7 @@ topics = {'assert': 'The "assert" statement\n' 'most\n' 'important built-in types.\n' '\n' - '* Numbers of built-in numeric types (Numeric Types --- int, ' + '* Numbers of built-in numeric types (Numeric Types — int, ' 'float,\n' ' complex) and of the standard library types ' '"fractions.Fraction" and\n' @@ -1889,9 +1889,9 @@ topics = {'assert': 'The "assert" statement\n' 'compound\n' 'statements.\n' '\n' - "A compound statement consists of one or more 'clauses.' A " + 'A compound statement consists of one or more ‘clauses.’ A ' 'clause\n' - "consists of a header and a 'suite.' The clause headers of a\n" + 'consists of a header and a ‘suite.’ The clause headers of a\n' 'particular compound statement are all at the same indentation ' 'level.\n' 'Each clause header begins with a uniquely identifying keyword ' @@ -1899,12 +1899,12 @@ topics = {'assert': 'The "assert" statement\n' 'with a colon. A suite is a group of statements controlled by a\n' 'clause. A suite can be one or more semicolon-separated simple\n' 'statements on the same line as the header, following the ' - "header's\n" + 'header’s\n' 'colon, or it can be one or more indented statements on ' 'subsequent\n' 'lines. Only the latter form of a suite can contain nested ' 'compound\n' - "statements; the following is illegal, mostly because it wouldn't " + 'statements; the following is illegal, mostly because it wouldn’t ' 'be\n' 'clear to which "if" clause a following "else" clause would ' 'belong:\n' @@ -1941,7 +1941,7 @@ topics = {'assert': 'The "assert" statement\n' '"DEDENT". Also note that optional continuation clauses always ' 'begin\n' 'with a keyword that cannot start a statement, thus there are no\n' - 'ambiguities (the \'dangling "else"\' problem is solved in Python ' + 'ambiguities (the ‘dangling "else"’ problem is solved in Python ' 'by\n' 'requiring nested "if" statements to be indented).\n' '\n' @@ -1992,7 +1992,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' 'A "break" statement executed in the first suite terminates the ' 'loop\n' - 'without executing the "else" clause\'s suite. A "continue" ' + 'without executing the "else" clause’s suite. A "continue" ' 'statement\n' 'executed in the first suite skips the rest of the suite and goes ' 'back\n' @@ -2031,7 +2031,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' 'A "break" statement executed in the first suite terminates the ' 'loop\n' - 'without executing the "else" clause\'s suite. A "continue" ' + 'without executing the "else" clause’s suite. A "continue" ' 'statement\n' 'executed in the first suite skips the rest of the suite and ' 'continues\n' @@ -2058,7 +2058,7 @@ topics = {'assert': 'The "assert" statement\n' 'to at\n' 'all by the loop. Hint: the built-in function "range()" returns ' 'an\n' - "iterator of integers suitable to emulate the effect of Pascal's " + 'iterator of integers suitable to emulate the effect of Pascal’s ' '"for i\n' ':= a to b do"; e.g., "list(range(3))" returns the list "[0, 1, ' '2]".\n' @@ -2120,7 +2120,7 @@ topics = {'assert': 'The "assert" statement\n' 'expression\n' 'is evaluated, and the clause matches the exception if the ' 'resulting\n' - 'object is "compatible" with the exception. An object is ' + 'object is “compatible” with the exception. An object is ' 'compatible\n' 'with an exception if it is the class or a base class of the ' 'exception\n' @@ -2147,7 +2147,7 @@ topics = {'assert': 'The "assert" statement\n' 'assigned to\n' 'the target specified after the "as" keyword in that except ' 'clause, if\n' - "present, and the except clause's suite is executed. All except\n" + 'present, and the except clause’s suite is executed. All except\n' 'clauses must have an executable block. When the end of this ' 'block is\n' 'reached, execution continues normally after the entire try ' @@ -2183,7 +2183,7 @@ topics = {'assert': 'The "assert" statement\n' 'alive\n' 'until the next garbage collection occurs.\n' '\n' - "Before an except clause's suite is executed, details about the\n" + 'Before an except clause’s suite is executed, details about the\n' 'exception are stored in the "sys" module and can be accessed ' 'via\n' '"sys.exc_info()". "sys.exc_info()" returns a 3-tuple consisting ' @@ -2204,8 +2204,8 @@ topics = {'assert': 'The "assert" statement\n' 'are\n' 'not handled by the preceding "except" clauses.\n' '\n' - 'If "finally" is present, it specifies a \'cleanup\' handler. ' - 'The "try"\n' + 'If "finally" is present, it specifies a ‘cleanup’ handler. The ' + '"try"\n' 'clause is executed, including any "except" and "else" clauses. ' 'If an\n' 'exception occurs in any of the clauses and is not handled, the\n' @@ -2236,13 +2236,12 @@ topics = {'assert': 'The "assert" statement\n' '\n' 'When a "return", "break" or "continue" statement is executed in ' 'the\n' - '"try" suite of a "try"..."finally" statement, the "finally" ' - 'clause is\n' - 'also executed \'on the way out.\' A "continue" statement is ' + '"try" suite of a "try"…"finally" statement, the "finally" clause ' + 'is\n' + 'also executed ‘on the way out.’ A "continue" statement is ' 'illegal in\n' 'the "finally" clause. (The reason is a problem with the current\n' - 'implementation --- this restriction may be lifted in the ' - 'future).\n' + 'implementation — this restriction may be lifted in the future).\n' '\n' 'The return value of a function is determined by the last ' '"return"\n' @@ -2274,14 +2273,14 @@ topics = {'assert': 'The "assert" statement\n' 'with\n' 'methods defined by a context manager (see section With ' 'Statement\n' - 'Context Managers). This allows common ' - '"try"..."except"..."finally"\n' - 'usage patterns to be encapsulated for convenient reuse.\n' + 'Context Managers). This allows common "try"…"except"…"finally" ' + 'usage\n' + 'patterns to be encapsulated for convenient reuse.\n' '\n' ' with_stmt ::= "with" with_item ("," with_item)* ":" suite\n' ' with_item ::= expression ["as" target]\n' '\n' - 'The execution of the "with" statement with one "item" proceeds ' + 'The execution of the "with" statement with one “item” proceeds ' 'as\n' 'follows:\n' '\n' @@ -2289,9 +2288,9 @@ topics = {'assert': 'The "assert" statement\n' '"with_item")\n' ' is evaluated to obtain a context manager.\n' '\n' - '2. The context manager\'s "__exit__()" is loaded for later use.\n' + '2. The context manager’s "__exit__()" is loaded for later use.\n' '\n' - '3. The context manager\'s "__enter__()" method is invoked.\n' + '3. The context manager’s "__enter__()" method is invoked.\n' '\n' '4. If a target was included in the "with" statement, the return\n' ' value from "__enter__()" is assigned to it.\n' @@ -2308,8 +2307,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' '5. The suite is executed.\n' '\n' - '6. The context manager\'s "__exit__()" method is invoked. If ' - 'an\n' + '6. The context manager’s "__exit__()" method is invoked. If an\n' ' exception caused the suite to be exited, its type, value, ' 'and\n' ' traceback are passed as arguments to "__exit__()". Otherwise, ' @@ -2349,7 +2347,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' 'See also:\n' '\n' - ' **PEP 343** - The "with" statement\n' + ' **PEP 343** - The “with” statement\n' ' The specification, background, and examples for the Python ' '"with"\n' ' statement.\n' @@ -2418,25 +2416,24 @@ topics = {'assert': 'The "assert" statement\n' '"func".\n' '\n' 'When one or more *parameters* have the form *parameter* "="\n' - '*expression*, the function is said to have "default parameter ' - 'values."\n' + '*expression*, the function is said to have “default parameter ' + 'values.”\n' 'For a parameter with a default value, the corresponding ' '*argument* may\n' - "be omitted from a call, in which case the parameter's default " + 'be omitted from a call, in which case the parameter’s default ' 'value is\n' 'substituted. If a parameter has a default value, all following\n' - 'parameters up until the ""*"" must also have a default value --- ' - 'this\n' - 'is a syntactic restriction that is not expressed by the ' - 'grammar.\n' + 'parameters up until the “"*"” must also have a default value — ' + 'this is\n' + 'a syntactic restriction that is not expressed by the grammar.\n' '\n' '**Default parameter values are evaluated from left to right when ' 'the\n' 'function definition is executed.** This means that the ' 'expression is\n' 'evaluated once, when the function is defined, and that the same ' - '"pre-\n' - 'computed" value is used for each call. This is especially ' + '“pre-\n' + 'computed” value is used for each call. This is especially ' 'important\n' 'to understand when a default parameter is a mutable object, such ' 'as a\n' @@ -2462,26 +2459,26 @@ topics = {'assert': 'The "assert" statement\n' 'mentioned in\n' 'the parameter list, either from position arguments, from ' 'keyword\n' - 'arguments, or from default values. If the form ""*identifier"" ' + 'arguments, or from default values. If the form “"*identifier"” ' 'is\n' 'present, it is initialized to a tuple receiving any excess ' 'positional\n' 'parameters, defaulting to the empty tuple. If the form\n' - '""**identifier"" is present, it is initialized to a new ordered\n' + '“"**identifier"” is present, it is initialized to a new ordered\n' 'mapping receiving any excess keyword arguments, defaulting to a ' 'new\n' - 'empty mapping of the same type. Parameters after ""*"" or\n' - '""*identifier"" are keyword-only parameters and may only be ' + 'empty mapping of the same type. Parameters after “"*"” or\n' + '“"*identifier"” are keyword-only parameters and may only be ' 'passed\n' 'used keyword arguments.\n' '\n' - 'Parameters may have annotations of the form "": expression"" ' + 'Parameters may have annotations of the form “": expression"” ' 'following\n' 'the parameter name. Any parameter may have an annotation even ' 'those\n' 'of the form "*identifier" or "**identifier". Functions may ' 'have\n' - '"return" annotation of the form ""-> expression"" after the ' + '“return” annotation of the form “"-> expression"” after the ' 'parameter\n' 'list. These annotations can be any valid Python expression and ' 'are\n' @@ -2491,7 +2488,7 @@ topics = {'assert': 'The "assert" statement\n' 'code.\n' 'The presence of annotations does not change the semantics of a\n' 'function. The annotation values are available as values of a\n' - "dictionary keyed by the parameters' names in the " + 'dictionary keyed by the parameters’ names in the ' '"__annotations__"\n' 'attribute of the function object.\n' '\n' @@ -2502,16 +2499,16 @@ topics = {'assert': 'The "assert" statement\n' 'lambda\n' 'expression is merely a shorthand for a simplified function ' 'definition;\n' - 'a function defined in a ""def"" statement can be passed around ' + 'a function defined in a “"def"” statement can be passed around ' 'or\n' 'assigned to another name just like a function defined by a ' 'lambda\n' - 'expression. The ""def"" form is actually more powerful since ' + 'expression. The “"def"” form is actually more powerful since ' 'it\n' 'allows the execution of multiple statements and annotations.\n' '\n' - "**Programmer's note:** Functions are first-class objects. A " - '""def""\n' + '**Programmer’s note:** Functions are first-class objects. A ' + '“"def"”\n' 'statement executed inside a function definition defines a local\n' 'function that can be returned or passed around. Free variables ' 'used\n' @@ -2555,12 +2552,12 @@ topics = {'assert': 'The "assert" statement\n' ' class Foo(object):\n' ' pass\n' '\n' - "The class's suite is then executed in a new execution frame " + 'The class’s suite is then executed in a new execution frame ' '(see\n' 'Naming and binding), using a newly created local namespace and ' 'the\n' 'original global namespace. (Usually, the suite contains mostly\n' - "function definitions.) When the class's suite finishes " + 'function definitions.) When the class’s suite finishes ' 'execution, its\n' 'execution frame is discarded but its local namespace is saved. ' '[4] A\n' @@ -2573,7 +2570,7 @@ topics = {'assert': 'The "assert" statement\n' 'namespace.\n' '\n' 'The order in which attributes are defined in the class body is\n' - 'preserved in the new class\'s "__dict__". Note that this is ' + 'preserved in the new class’s "__dict__". Note that this is ' 'reliable\n' 'only right after the class is created and only for classes that ' 'were\n' @@ -2598,14 +2595,14 @@ topics = {'assert': 'The "assert" statement\n' 'function decorators. The result is then bound to the class ' 'name.\n' '\n' - "**Programmer's note:** Variables defined in the class definition " + '**Programmer’s note:** Variables defined in the class definition ' 'are\n' 'class attributes; they are shared by instances. Instance ' 'attributes\n' 'can be set in a method with "self.name = value". Both class ' 'and\n' 'instance attributes are accessible through the notation ' - '""self.name"",\n' + '“"self.name"”,\n' 'and an instance attribute hides a class attribute with the same ' 'name\n' 'when accessed in this way. Class attributes can be used as ' @@ -2741,20 +2738,19 @@ topics = {'assert': 'The "assert" statement\n' ' exception. That new exception causes the old one to be ' 'lost.\n' '\n' - '[2] Currently, control "flows off the end" except in the case ' + '[2] Currently, control “flows off the end” except in the case ' 'of\n' ' an exception or the execution of a "return", "continue", or\n' ' "break" statement.\n' '\n' '[3] A string literal appearing as the first statement in the\n' - ' function body is transformed into the function\'s "__doc__"\n' - " attribute and therefore the function's *docstring*.\n" + ' function body is transformed into the function’s "__doc__"\n' + ' attribute and therefore the function’s *docstring*.\n' '\n' '[4] A string literal appearing as the first statement in the ' 'class\n' - ' body is transformed into the namespace\'s "__doc__" item ' - 'and\n' - " therefore the class's *docstring*.\n", + ' body is transformed into the namespace’s "__doc__" item and\n' + ' therefore the class’s *docstring*.\n', 'context-managers': 'With Statement Context Managers\n' '*******************************\n' '\n' @@ -2784,7 +2780,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' ' Enter the runtime context related to this object. The ' '"with"\n' - " statement will bind this method's return value to the " + ' statement will bind this method’s return value to the ' 'target(s)\n' ' specified in the "as" clause of the statement, if ' 'any.\n' @@ -2809,11 +2805,11 @@ topics = {'assert': 'The "assert" statement\n' '\n' ' Note that "__exit__()" methods should not reraise the ' 'passed-in\n' - " exception; this is the caller's responsibility.\n" + ' exception; this is the caller’s responsibility.\n' '\n' 'See also:\n' '\n' - ' **PEP 343** - The "with" statement\n' + ' **PEP 343** - The “with” statement\n' ' The specification, background, and examples for the ' 'Python "with"\n' ' statement.\n', @@ -2839,7 +2835,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' 'When a description of an arithmetic operator below uses the ' 'phrase\n' - '"the numeric arguments are converted to a common type," this ' + '“the numeric arguments are converted to a common type,” this ' 'means\n' 'that the operator implementation for built-in types works as ' 'follows:\n' @@ -2857,7 +2853,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' 'Some additional rules apply for certain operators (e.g., a ' 'string as a\n' - "left argument to the '%' operator). Extensions must define " + 'left argument to the ‘%’ operator). Extensions must define ' 'their own\n' 'conversion behavior.\n', 'customization': 'Basic customization\n' @@ -2881,7 +2877,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' ' Typical implementations create a new instance of the ' 'class by\n' - ' invoking the superclass\'s "__new__()" method using\n' + ' invoking the superclass’s "__new__()" method using\n' ' "super().__new__(cls[, ...])" with appropriate arguments ' 'and then\n' ' modifying the newly-created instance as necessary before ' @@ -2890,7 +2886,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' ' If "__new__()" returns an instance of *cls*, then the ' 'new\n' - ' instance\'s "__init__()" method will be invoked like\n' + ' instance’s "__init__()" method will be invoked like\n' ' "__init__(self[, ...])", where *self* is the new ' 'instance and the\n' ' remaining arguments are the same as were passed to ' @@ -2898,7 +2894,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' ' If "__new__()" does not return an instance of *cls*, ' 'then the new\n' - ' instance\'s "__init__()" method will not be invoked.\n' + ' instance’s "__init__()" method will not be invoked.\n' '\n' ' "__new__()" is intended mainly to allow subclasses of ' 'immutable\n' @@ -2916,7 +2912,7 @@ topics = {'assert': 'The "assert" statement\n' 'those\n' ' passed to the class constructor expression. If a base ' 'class has an\n' - ' "__init__()" method, the derived class\'s "__init__()" ' + ' "__init__()" method, the derived class’s "__init__()" ' 'method, if\n' ' any, must explicitly call it to ensure proper ' 'initialization of the\n' @@ -2937,7 +2933,7 @@ topics = {'assert': 'The "assert" statement\n' 'is also\n' ' called a finalizer or (improperly) a destructor. If a ' 'base class\n' - ' has a "__del__()" method, the derived class\'s ' + ' has a "__del__()" method, the derived class’s ' '"__del__()" method,\n' ' if any, must explicitly call it to ensure proper ' 'deletion of the\n' @@ -2958,11 +2954,11 @@ topics = {'assert': 'The "assert" statement\n' 'for\n' ' objects that still exist when the interpreter exits.\n' '\n' - ' Note: "del x" doesn\'t directly call "x.__del__()" --- ' - 'the former\n' + ' Note: "del x" doesn’t directly call "x.__del__()" — the ' + 'former\n' ' decrements the reference count for "x" by one, and the ' 'latter is\n' - ' only called when "x"\'s reference count reaches zero.\n' + ' only called when "x"’s reference count reaches zero.\n' '\n' ' **CPython implementation detail:** It is possible for a ' 'reference\n' @@ -2974,7 +2970,7 @@ topics = {'assert': 'The "assert" statement\n' 'reference\n' ' cycles is when an exception has been caught in a local ' 'variable.\n' - " The frame's locals then reference the exception, which " + ' The frame’s locals then reference the exception, which ' 'references\n' ' its own traceback, which references the locals of all ' 'frames caught\n' @@ -3021,7 +3017,7 @@ topics = {'assert': 'The "assert" statement\n' 'object.__repr__(self)\n' '\n' ' Called by the "repr()" built-in function to compute the ' - '"official"\n' + '“official”\n' ' string representation of an object. If at all possible, ' 'this\n' ' should look like a valid Python expression that could be ' @@ -3035,7 +3031,7 @@ topics = {'assert': 'The "assert" statement\n' ' value must be a string object. If a class defines ' '"__repr__()" but\n' ' not "__str__()", then "__repr__()" is also used when an ' - '"informal"\n' + '“informal”\n' ' string representation of instances of that class is ' 'required.\n' '\n' @@ -3047,7 +3043,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' ' Called by "str(object)" and the built-in functions ' '"format()" and\n' - ' "print()" to compute the "informal" or nicely printable ' + ' "print()" to compute the “informal” or nicely printable ' 'string\n' ' representation of an object. The return value must be a ' 'string\n' @@ -3075,7 +3071,7 @@ topics = {'assert': 'The "assert" statement\n' 'extension,\n' ' evaluation of formatted string literals and the ' '"str.format()"\n' - ' method, to produce a "formatted" string representation ' + ' method, to produce a “formatted” string representation ' 'of an\n' ' object. The "format_spec" argument is a string that ' 'contains a\n' @@ -3106,7 +3102,7 @@ topics = {'assert': 'The "assert" statement\n' 'object.__gt__(self, other)\n' 'object.__ge__(self, other)\n' '\n' - ' These are the so-called "rich comparison" methods. The\n' + ' These are the so-called “rich comparison” methods. The\n' ' correspondence between operator symbols and method names ' 'is as\n' ' follows: "x>> import pdb\n' @@ -3356,11 +3352,11 @@ topics = {'assert': 'The "assert" statement\n' 'post-\n' 'mortem debugging (or after normal exit of the program), pdb ' 'will\n' - "restart the program. Automatic restarting preserves pdb's state " + 'restart the program. Automatic restarting preserves pdb’s state ' '(such\n' 'as breakpoints) and in most cases is more useful than quitting ' 'the\n' - "debugger upon program's exit.\n" + 'debugger upon program’s exit.\n' '\n' 'New in version 3.2: "pdb.py" now accepts a "-c" option that ' 'executes\n' @@ -3539,7 +3535,7 @@ topics = {'assert': 'The "assert" statement\n' 'the last command was a "list" command, the next 11 lines are ' 'listed.\n' '\n' - "Commands that the debugger doesn't recognize are assumed to be " + 'Commands that the debugger doesn’t recognize are assumed to be ' 'Python\n' 'statements and are executed in the context of the program being\n' 'debugged. Python statements can also be prefixed with an ' @@ -3550,7 +3546,7 @@ topics = {'assert': 'The "assert" statement\n' 'function.\n' 'When an exception occurs in such a statement, the exception name ' 'is\n' - "printed but the debugger's state is not changed.\n" + 'printed but the debugger’s state is not changed.\n' '\n' 'The debugger supports aliases. Aliases can have parameters ' 'which\n' @@ -3567,7 +3563,7 @@ topics = {'assert': 'The "assert" statement\n' 'first\n' '";;" pair, even if it is in the middle of a quoted string.\n' '\n' - 'If a file ".pdbrc" exists in the user\'s home directory or in ' + 'If a file ".pdbrc" exists in the user’s home directory or in ' 'the\n' 'current directory, it is read in and executed as if it had been ' 'typed\n' @@ -3623,7 +3619,7 @@ topics = {'assert': 'The "assert" statement\n' 'prefixed\n' ' with a filename and a colon, to specify a breakpoint in ' 'another\n' - " file (probably one that hasn't been loaded yet). The file " + ' file (probably one that hasn’t been loaded yet). The file ' 'is\n' ' searched on "sys.path". Note that each breakpoint is ' 'assigned a\n' @@ -3731,7 +3727,7 @@ topics = {'assert': 'The "assert" statement\n' 'which\n' ' list to execute.\n' '\n' - " If you use the 'silent' command in the command list, the " + ' If you use the ‘silent’ command in the command list, the ' 'usual\n' ' message about stopping at a breakpoint is not printed. This ' 'may be\n' @@ -3790,13 +3786,13 @@ topics = {'assert': 'The "assert" statement\n' 'the\n' ' bottom-most frame. This lets you jump back and execute code ' 'again,\n' - " or jump forward to skip code that you don't want to run.\n" + ' or jump forward to skip code that you don’t want to run.\n' '\n' - ' It should be noted that not all jumps are allowed -- for ' - 'instance\n' - ' it is not possible to jump into the middle of a "for" loop or ' - 'out\n' - ' of a "finally" clause.\n' + ' It should be noted that not all jumps are allowed – for ' + 'instance it\n' + ' is not possible to jump into the middle of a "for" loop or ' + 'out of a\n' + ' "finally" clause.\n' '\n' 'l(ist) [first[, last]]\n' '\n' @@ -3839,8 +3835,8 @@ topics = {'assert': 'The "assert" statement\n' ' value.\n' '\n' ' Note: "print()" can also be used, but is not a debugger ' - 'command\n' - ' --- this executes the Python "print()" function.\n' + 'command —\n' + ' this executes the Python "print()" function.\n' '\n' 'pp expression\n' '\n' @@ -4010,7 +4006,7 @@ topics = {'assert': 'The "assert" statement\n' 'dictionary:\n' 'each key object is used as a key into the dictionary to store the\n' 'corresponding datum. This means that you can specify the same key\n' - "multiple times in the key/datum list, and the final dictionary's " + 'multiple times in the key/datum list, and the final dictionary’s ' 'value\n' 'for that key will be the last one given.\n' '\n' @@ -4024,7 +4020,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' 'A dict comprehension, in contrast to list and set comprehensions,\n' 'needs two expressions separated with a colon followed by the usual\n' - '"for" and "if" clauses. When the comprehension is run, the ' + '“for” and “if” clauses. When the comprehension is run, the ' 'resulting\n' 'key and value elements are inserted in the new dictionary in the ' 'order\n' @@ -4098,7 +4094,7 @@ topics = {'assert': 'The "assert" statement\n' 'error (such as division by zero). A Python program can also\n' 'explicitly raise an exception with the "raise" statement. ' 'Exception\n' - 'handlers are specified with the "try" ... "except" statement. ' + 'handlers are specified with the "try" … "except" statement. ' 'The\n' '"finally" clause of such a statement can be used to specify ' 'cleanup\n' @@ -4106,7 +4102,7 @@ topics = {'assert': 'The "assert" statement\n' 'whether an\n' 'exception occurred or not in the preceding code.\n' '\n' - 'Python uses the "termination" model of error handling: an ' + 'Python uses the “termination” model of error handling: an ' 'exception\n' 'handler can find out what happened and continue execution at ' 'an outer\n' @@ -4174,7 +4170,7 @@ topics = {'assert': 'The "assert" statement\n' 'argument to the interpreter) is a code block. A script command ' '(a\n' 'command specified on the interpreter command line with the ' - "'**-c**'\n" + '‘**-c**’\n' 'option) is a code block. The string argument passed to the ' 'built-in\n' 'functions "eval()" and "exec()" is a code block.\n' @@ -4183,7 +4179,7 @@ topics = {'assert': 'The "assert" statement\n' 'contains\n' 'some administrative information (used for debugging) and ' 'determines\n' - "where and how execution continues after the code block's " + 'where and how execution continues after the code block’s ' 'execution has\n' 'completed.\n' '\n' @@ -4258,7 +4254,7 @@ topics = {'assert': 'The "assert" statement\n' 'nearest\n' 'enclosing scope. The set of all such scopes visible to a code ' 'block\n' - "is called the block's *environment*.\n" + 'is called the block’s *environment*.\n' '\n' 'When a name is not found at all, a "NameError" exception is ' 'raised. If\n' @@ -4336,7 +4332,7 @@ topics = {'assert': 'The "assert" statement\n' 'the class. The scope of names defined in a class block is ' 'limited to\n' 'the class block; it does not extend to the code blocks of ' - 'methods --\n' + 'methods –\n' 'this includes comprehensions and generator expressions since ' 'they are\n' 'implemented using a function scope. This means that the ' @@ -4364,7 +4360,7 @@ topics = {'assert': 'The "assert" statement\n' 'global\n' 'namespace; this should be a dictionary or a module (in the ' 'latter case\n' - "the module's dictionary is used). By default, when in the " + 'the module’s dictionary is used). By default, when in the ' '"__main__"\n' 'module, "__builtins__" is the built-in module "builtins"; when ' 'in any\n' @@ -4419,7 +4415,7 @@ topics = {'assert': 'The "assert" statement\n' 'error (such as division by zero). A Python program can also\n' 'explicitly raise an exception with the "raise" statement. ' 'Exception\n' - 'handlers are specified with the "try" ... "except" statement. ' + 'handlers are specified with the "try" … "except" statement. ' 'The\n' '"finally" clause of such a statement can be used to specify ' 'cleanup\n' @@ -4427,7 +4423,7 @@ topics = {'assert': 'The "assert" statement\n' 'whether an\n' 'exception occurred or not in the preceding code.\n' '\n' - 'Python uses the "termination" model of error handling: an ' + 'Python uses the “termination” model of error handling: an ' 'exception\n' 'handler can find out what happened and continue execution at an ' 'outer\n' @@ -4507,7 +4503,7 @@ topics = {'assert': 'The "assert" statement\n' '(a.k.a. a\n' '*singleton*); it is optional in all other cases. A single ' 'expression\n' - "without a trailing comma doesn't create a tuple, but rather " + 'without a trailing comma doesn’t create a tuple, but rather ' 'yields the\n' 'value of that expression. (To create an empty tuple, use an ' 'empty pair\n' @@ -4568,8 +4564,7 @@ topics = {'assert': 'The "assert" statement\n' 'terminates.\n' '\n' 'A "break" statement executed in the first suite terminates the loop\n' - 'without executing the "else" clause\'s suite. A "continue" ' - 'statement\n' + 'without executing the "else" clause’s suite. A "continue" statement\n' 'executed in the first suite skips the rest of the suite and ' 'continues\n' 'with the next item, or with the "else" clause if there is no next\n' @@ -4591,7 +4586,7 @@ topics = {'assert': 'The "assert" statement\n' 'Names in the target list are not deleted when the loop is finished,\n' 'but if the sequence is empty, they will not have been assigned to at\n' 'all by the loop. Hint: the built-in function "range()" returns an\n' - 'iterator of integers suitable to emulate the effect of Pascal\'s "for ' + 'iterator of integers suitable to emulate the effect of Pascal’s "for ' 'i\n' ':= a to b do"; e.g., "list(range(3))" returns the list "[0, 1, 2]".\n' '\n' @@ -4627,7 +4622,7 @@ topics = {'assert': 'The "assert" statement\n' 'are\n' 'differences.\n' '\n' - 'Format strings contain "replacement fields" surrounded by ' + 'Format strings contain “replacement fields” surrounded by ' 'curly braces\n' '"{}". Anything that is not contained in braces is ' 'considered literal\n' @@ -4670,29 +4665,27 @@ topics = {'assert': 'The "assert" statement\n' '\n' 'The *field_name* itself begins with an *arg_name* that is ' 'either a\n' - "number or a keyword. If it's a number, it refers to a " + 'number or a keyword. If it’s a number, it refers to a ' 'positional\n' - "argument, and if it's a keyword, it refers to a named " + 'argument, and if it’s a keyword, it refers to a named ' 'keyword\n' 'argument. If the numerical arg_names in a format string ' 'are 0, 1, 2,\n' - '... in sequence, they can all be omitted (not just some) ' - 'and the\n' - 'numbers 0, 1, 2, ... will be automatically inserted in that ' - 'order.\n' - 'Because *arg_name* is not quote-delimited, it is not ' - 'possible to\n' - 'specify arbitrary dictionary keys (e.g., the strings ' - '"\'10\'" or\n' - '"\':-]\'") within a format string. The *arg_name* can be ' - 'followed by any\n' - 'number of index or attribute expressions. An expression of ' - 'the form\n' - '"\'.name\'" selects the named attribute using "getattr()", ' - 'while an\n' - 'expression of the form "\'[index]\'" does an index lookup ' - 'using\n' - '"__getitem__()".\n' + '… in sequence, they can all be omitted (not just some) and ' + 'the numbers\n' + '0, 1, 2, … will be automatically inserted in that order. ' + 'Because\n' + '*arg_name* is not quote-delimited, it is not possible to ' + 'specify\n' + 'arbitrary dictionary keys (e.g., the strings "\'10\'" or ' + '"\':-]\'") within\n' + 'a format string. The *arg_name* can be followed by any ' + 'number of index\n' + 'or attribute expressions. An expression of the form ' + '"\'.name\'" selects\n' + 'the named attribute using "getattr()", while an expression ' + 'of the form\n' + '"\'[index]\'" does an index lookup using "__getitem__()".\n' '\n' 'Changed in version 3.1: The positional argument specifiers ' 'can be\n' @@ -4747,7 +4740,7 @@ topics = {'assert': 'The "assert" statement\n' 'alignment,\n' 'padding, decimal precision and so on. Each value type can ' 'define its\n' - 'own "formatting mini-language" or interpretation of the ' + 'own “formatting mini-language” or interpretation of the ' '*format_spec*.\n' '\n' 'Most built-in types support a common formatting ' @@ -4773,7 +4766,7 @@ topics = {'assert': 'The "assert" statement\n' 'Format Specification Mini-Language\n' '==================================\n' '\n' - '"Format specifications" are used within replacement fields ' + '“Format specifications” are used within replacement fields ' 'contained\n' 'within a format string to define how individual values are ' 'presented\n' @@ -4815,13 +4808,13 @@ topics = {'assert': 'The "assert" statement\n' 'character that can be any character and defaults to a space ' 'if\n' 'omitted. It is not possible to use a literal curly brace ' - '(""{"" or\n' - '""}"") as the *fill* character in a formatted string ' + '(“"{"” or\n' + '“"}"”) as the *fill* character in a formatted string ' 'literal or when\n' 'using the "str.format()" method. However, it is possible ' 'to insert a\n' 'curly brace with a nested replacement field. This ' - "limitation doesn't\n" + 'limitation doesn’t\n' 'affect the "format()" function.\n' '\n' 'The meaning of the various alignment options is as ' @@ -4850,10 +4843,10 @@ topics = {'assert': 'The "assert" statement\n' 'the sign (if any) |\n' ' | | but before the digits. This is used for ' 'printing fields |\n' - " | | in the form '+000000120'. This alignment " + ' | | in the form ‘+000000120’. This alignment ' 'option is only |\n' ' | | valid for numeric types. It becomes the ' - "default when '0' |\n" + 'default when ‘0’ |\n' ' | | immediately precedes the field ' 'width. |\n' ' ' @@ -4902,7 +4895,7 @@ topics = {'assert': 'The "assert" statement\n' ' ' '+-----------+------------------------------------------------------------+\n' '\n' - 'The "\'#\'" option causes the "alternate form" to be used ' + 'The "\'#\'" option causes the “alternate form” to be used ' 'for the\n' 'conversion. The alternate form is defined differently for ' 'different\n' @@ -5071,7 +5064,7 @@ topics = {'assert': 'The "assert" statement\n' '+===========+============================================================+\n' ' | "\'e\'" | Exponent notation. Prints the number in ' 'scientific |\n' - " | | notation using the letter 'e' to indicate " + ' | | notation using the letter ‘e’ to indicate ' 'the exponent. |\n' ' | | The default precision is ' '"6". |\n' @@ -5079,7 +5072,7 @@ topics = {'assert': 'The "assert" statement\n' '+-----------+------------------------------------------------------------+\n' ' | "\'E\'" | Exponent notation. Same as "\'e\'" ' 'except it uses an upper |\n' - " | | case 'E' as the separator " + ' | | case ‘E’ as the separator ' 'character. |\n' ' ' '+-----------+------------------------------------------------------------+\n' @@ -5216,7 +5209,7 @@ topics = {'assert': 'The "assert" statement\n' "{longitude}'.format(**coord)\n" " 'Coordinates: 37.24N, -115.81W'\n" '\n' - "Accessing arguments' attributes:\n" + 'Accessing arguments’ attributes:\n' '\n' ' >>> c = 3-5j\n' " >>> ('The complex number {0} is formed from the real " @@ -5234,7 +5227,7 @@ topics = {'assert': 'The "assert" statement\n' ' >>> str(Point(4, 2))\n' " 'Point(4, 2)'\n" '\n' - "Accessing arguments' items:\n" + 'Accessing arguments’ items:\n' '\n' ' >>> coord = (3, 5)\n' " >>> 'X: {0[0]}; Y: {0[1]}'.format(coord)\n" @@ -5396,25 +5389,24 @@ topics = {'assert': 'The "assert" statement\n' '"func".\n' '\n' 'When one or more *parameters* have the form *parameter* "="\n' - '*expression*, the function is said to have "default parameter ' - 'values."\n' + '*expression*, the function is said to have “default parameter ' + 'values.”\n' 'For a parameter with a default value, the corresponding ' '*argument* may\n' - "be omitted from a call, in which case the parameter's default " + 'be omitted from a call, in which case the parameter’s default ' 'value is\n' 'substituted. If a parameter has a default value, all following\n' - 'parameters up until the ""*"" must also have a default value --- ' - 'this\n' - 'is a syntactic restriction that is not expressed by the ' - 'grammar.\n' + 'parameters up until the “"*"” must also have a default value — ' + 'this is\n' + 'a syntactic restriction that is not expressed by the grammar.\n' '\n' '**Default parameter values are evaluated from left to right when ' 'the\n' 'function definition is executed.** This means that the ' 'expression is\n' 'evaluated once, when the function is defined, and that the same ' - '"pre-\n' - 'computed" value is used for each call. This is especially ' + '“pre-\n' + 'computed” value is used for each call. This is especially ' 'important\n' 'to understand when a default parameter is a mutable object, such ' 'as a\n' @@ -5440,26 +5432,26 @@ topics = {'assert': 'The "assert" statement\n' 'mentioned in\n' 'the parameter list, either from position arguments, from ' 'keyword\n' - 'arguments, or from default values. If the form ""*identifier"" ' + 'arguments, or from default values. If the form “"*identifier"” ' 'is\n' 'present, it is initialized to a tuple receiving any excess ' 'positional\n' 'parameters, defaulting to the empty tuple. If the form\n' - '""**identifier"" is present, it is initialized to a new ordered\n' + '“"**identifier"” is present, it is initialized to a new ordered\n' 'mapping receiving any excess keyword arguments, defaulting to a ' 'new\n' - 'empty mapping of the same type. Parameters after ""*"" or\n' - '""*identifier"" are keyword-only parameters and may only be ' + 'empty mapping of the same type. Parameters after “"*"” or\n' + '“"*identifier"” are keyword-only parameters and may only be ' 'passed\n' 'used keyword arguments.\n' '\n' - 'Parameters may have annotations of the form "": expression"" ' + 'Parameters may have annotations of the form “": expression"” ' 'following\n' 'the parameter name. Any parameter may have an annotation even ' 'those\n' 'of the form "*identifier" or "**identifier". Functions may ' 'have\n' - '"return" annotation of the form ""-> expression"" after the ' + '“return” annotation of the form “"-> expression"” after the ' 'parameter\n' 'list. These annotations can be any valid Python expression and ' 'are\n' @@ -5469,7 +5461,7 @@ topics = {'assert': 'The "assert" statement\n' 'code.\n' 'The presence of annotations does not change the semantics of a\n' 'function. The annotation values are available as values of a\n' - "dictionary keyed by the parameters' names in the " + 'dictionary keyed by the parameters’ names in the ' '"__annotations__"\n' 'attribute of the function object.\n' '\n' @@ -5480,16 +5472,16 @@ topics = {'assert': 'The "assert" statement\n' 'lambda\n' 'expression is merely a shorthand for a simplified function ' 'definition;\n' - 'a function defined in a ""def"" statement can be passed around ' + 'a function defined in a “"def"” statement can be passed around ' 'or\n' 'assigned to another name just like a function defined by a ' 'lambda\n' - 'expression. The ""def"" form is actually more powerful since ' + 'expression. The “"def"” form is actually more powerful since ' 'it\n' 'allows the execution of multiple statements and annotations.\n' '\n' - "**Programmer's note:** Functions are first-class objects. A " - '""def""\n' + '**Programmer’s note:** Functions are first-class objects. A ' + '“"def"”\n' 'statement executed inside a function definition defines a local\n' 'function that can be returned or passed around. Free variables ' 'used\n' @@ -5533,8 +5525,7 @@ topics = {'assert': 'The "assert" statement\n' 'change\n' 'the meaning of the program.\n' '\n' - '**Programmer\'s note:** "global" is a directive to the parser. ' - 'It\n' + '**Programmer’s note:** "global" is a directive to the parser. It\n' 'applies only to code parsed at the same time as the "global"\n' 'statement. In particular, a "global" statement contained in a ' 'string\n' @@ -5591,7 +5582,7 @@ topics = {'assert': 'The "assert" statement\n' 'within the\n' ' context of a class definition, are re-written to use a ' 'mangled form\n' - ' to help avoid name clashes between "private" attributes of ' + ' to help avoid name clashes between “private” attributes of ' 'base and\n' ' derived classes. See section Identifiers (Names).\n', 'identifiers': 'Identifiers and keywords\n' @@ -5739,7 +5730,7 @@ topics = {'assert': 'The "assert" statement\n' 'within the\n' ' context of a class definition, are re-written to use a ' 'mangled form\n' - ' to help avoid name clashes between "private" attributes of ' + ' to help avoid name clashes between “private” attributes of ' 'base and\n' ' derived classes. See section Identifiers (Names).\n', 'if': 'The "if" statement\n' @@ -5820,7 +5811,7 @@ topics = {'assert': 'The "assert" statement\n' 'either\n' 'that the module could not be located, *or* that an error occurred\n' 'while initializing the module, which includes execution of the\n' - "module's code.\n" + 'module’s code.\n' '\n' 'If the requested module is retrieved successfully, it will be ' 'made\n' @@ -5831,7 +5822,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' '* If no other name is specified, and the module being imported is ' 'a\n' - " top level module, the module's name is bound in the local " + ' top level module, the module’s name is bound in the local ' 'namespace\n' ' as a reference to the imported module\n' '\n' @@ -5884,7 +5875,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' 'The *public names* defined by a module are determined by checking ' 'the\n' - 'module\'s namespace for a variable named "__all__"; if defined, it ' + 'module’s namespace for a variable named "__all__"; if defined, it ' 'must\n' 'be a sequence of strings which are names defined or imported by ' 'that\n' @@ -5892,7 +5883,7 @@ topics = {'assert': 'The "assert" statement\n' 'and\n' 'are required to exist. If "__all__" is not defined, the set of ' 'public\n' - "names includes all names found in the module's namespace which do " + 'names includes all names found in the module’s namespace which do ' 'not\n' 'begin with an underscore character ("\'_\'"). "__all__" should ' 'contain\n' @@ -5902,8 +5893,7 @@ topics = {'assert': 'The "assert" statement\n' 'were\n' 'imported and used within the module).\n' '\n' - 'The wild card form of import --- "from module import *" --- is ' - 'only\n' + 'The wild card form of import — "from module import *" — is only\n' 'allowed at the module level. Attempting to use it in class or\n' 'function definitions will raise a "SyntaxError".\n' '\n' @@ -6011,7 +6001,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' ' import __future__ [as name]\n' '\n' - "That is not a future statement; it's an ordinary import statement " + 'That is not a future statement; it’s an ordinary import statement ' 'with\n' 'no special semantics or syntax restrictions.\n' '\n' @@ -6022,8 +6012,7 @@ topics = {'assert': 'The "assert" statement\n' 'the\n' 'future statement. This can be controlled by optional arguments ' 'to\n' - '"compile()" --- see the documentation of that function for ' - 'details.\n' + '"compile()" — see the documentation of that function for details.\n' '\n' 'A future statement typed at an interactive interpreter prompt ' 'will\n' @@ -6130,13 +6119,13 @@ topics = {'assert': 'The "assert" statement\n' '\n' 'Lambda expressions (sometimes called lambda forms) are used to ' 'create\n' - 'anonymous functions. The expression "lambda arguments: ' + 'anonymous functions. The expression "lambda parameters: ' 'expression"\n' 'yields a function object. The unnamed object behaves like a ' 'function\n' 'object defined with:\n' '\n' - ' def (arguments):\n' + ' def (parameters):\n' ' return expression\n' '\n' 'See section Function definitions for the syntax of parameter ' @@ -6229,7 +6218,7 @@ topics = {'assert': 'The "assert" statement\n' 'nearest\n' 'enclosing scope. The set of all such scopes visible to a code ' 'block\n' - "is called the block's *environment*.\n" + 'is called the block’s *environment*.\n' '\n' 'When a name is not found at all, a "NameError" exception is ' 'raised. If\n' @@ -6303,7 +6292,7 @@ topics = {'assert': 'The "assert" statement\n' 'the class. The scope of names defined in a class block is limited ' 'to\n' 'the class block; it does not extend to the code blocks of methods ' - '--\n' + '–\n' 'this includes comprehensions and generator expressions since they ' 'are\n' 'implemented using a function scope. This means that the ' @@ -6330,7 +6319,7 @@ topics = {'assert': 'The "assert" statement\n' 'global\n' 'namespace; this should be a dictionary or a module (in the latter ' 'case\n' - "the module's dictionary is used). By default, when in the " + 'the module’s dictionary is used). By default, when in the ' '"__main__"\n' 'module, "__builtins__" is the built-in module "builtins"; when in ' 'any\n' @@ -6406,7 +6395,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' 'Note that numeric literals do not include a sign; a phrase like ' '"-1"\n' - 'is actually an expression composed of the unary operator \'"-"\' ' + 'is actually an expression composed of the unary operator ‘"-"‘ ' 'and the\n' 'literal "1".\n', 'numeric-types': 'Emulating numeric types\n' @@ -6496,15 +6485,15 @@ topics = {'assert': 'The "assert" statement\n' '"__rpow__()" (the\n' ' coercion rules would become too complicated).\n' '\n' - " Note: If the right operand's type is a subclass of the " + ' Note: If the right operand’s type is a subclass of the ' 'left\n' - " operand's type and that subclass provides the " + ' operand’s type and that subclass provides the ' 'reflected method\n' ' for the operation, this method will be called before ' 'the left\n' - " operand's non-reflected method. This behavior allows " + ' operand’s non-reflected method. This behavior allows ' 'subclasses\n' - " to override their ancestors' operations.\n" + ' to override their ancestors’ operations.\n' '\n' 'object.__iadd__(self, other)\n' 'object.__isub__(self, other)\n' @@ -6542,7 +6531,7 @@ topics = {'assert': 'The "assert" statement\n' 'certain\n' ' situations, augmented assignment can result in ' 'unexpected errors\n' - " (see Why does a_tuple[i] += ['item'] raise an exception " + ' (see Why does a_tuple[i] += [‘item’] raise an exception ' 'when the\n' ' addition works?), but this behavior is in fact part of ' 'the data\n' @@ -6604,18 +6593,18 @@ topics = {'assert': 'The "assert" statement\n' 'objects': 'Objects, values and types\n' '*************************\n' '\n' - "*Objects* are Python's abstraction for data. All data in a " + '*Objects* are Python’s abstraction for data. All data in a ' 'Python\n' 'program is represented by objects or by relations between ' 'objects. (In\n' - 'a sense, and in conformance to Von Neumann\'s model of a "stored\n' - 'program computer," code is also represented by objects.)\n' + 'a sense, and in conformance to Von Neumann’s model of a “stored\n' + 'program computer,” code is also represented by objects.)\n' '\n' - "Every object has an identity, a type and a value. An object's\n" + 'Every object has an identity, a type and a value. An object’s\n' '*identity* never changes once it has been created; you may think ' 'of it\n' - 'as the object\'s address in memory. The \'"is"\' operator ' - 'compares the\n' + 'as the object’s address in memory. The ‘"is"’ operator compares ' + 'the\n' 'identity of two objects; the "id()" function returns an integer\n' 'representing its identity.\n' '\n' @@ -6623,14 +6612,14 @@ topics = {'assert': 'The "assert" statement\n' 'memory\n' 'address where "x" is stored.\n' '\n' - "An object's type determines the operations that the object " + 'An object’s type determines the operations that the object ' 'supports\n' - '(e.g., "does it have a length?") and also defines the possible ' + '(e.g., “does it have a length?”) and also defines the possible ' 'values\n' 'for objects of that type. The "type()" function returns an ' - "object's\n" + 'object’s\n' 'type (which is an object itself). Like its identity, an ' - "object's\n" + 'object’s\n' '*type* is also unchangeable. [1]\n' '\n' 'The *value* of some objects can change. Objects whose value can\n' @@ -6639,14 +6628,14 @@ topics = {'assert': 'The "assert" statement\n' 'once they are created are called *immutable*. (The value of an\n' 'immutable container object that contains a reference to a ' 'mutable\n' - "object can change when the latter's value is changed; however " + 'object can change when the latter’s value is changed; however ' 'the\n' 'container is still considered immutable, because the collection ' 'of\n' 'objects it contains cannot be changed. So, immutability is not\n' 'strictly the same as having an unchangeable value, it is more ' 'subtle.)\n' - "An object's mutability is determined by its type; for instance,\n" + 'An object’s mutability is determined by its type; for instance,\n' 'numbers, strings and tuples are immutable, while dictionaries ' 'and\n' 'lists are mutable.\n' @@ -6654,9 +6643,9 @@ topics = {'assert': 'The "assert" statement\n' 'Objects are never explicitly destroyed; however, when they ' 'become\n' 'unreachable they may be garbage-collected. An implementation is\n' - 'allowed to postpone garbage collection or omit it altogether --- ' - 'it is\n' - 'a matter of implementation quality how garbage collection is\n' + 'allowed to postpone garbage collection or omit it altogether — it ' + 'is a\n' + 'matter of implementation quality how garbage collection is\n' 'implemented, as long as no objects are collected that are still\n' 'reachable.\n' '\n' @@ -6676,13 +6665,14 @@ topics = {'assert': 'The "assert" statement\n' '(so\n' 'you should always close files explicitly).\n' '\n' - "Note that the use of the implementation's tracing or debugging\n" + 'Note that the use of the implementation’s tracing or debugging\n' 'facilities may keep objects alive that would normally be ' 'collectable.\n' - 'Also note that catching an exception with a \'"try"..."except"\'\n' - 'statement may keep objects alive.\n' + 'Also note that catching an exception with a ‘"try"…"except"’ ' + 'statement\n' + 'may keep objects alive.\n' '\n' - 'Some objects contain references to "external" resources such as ' + 'Some objects contain references to “external” resources such as ' 'open\n' 'files or windows. It is understood that these resources are ' 'freed\n' @@ -6693,14 +6683,13 @@ topics = {'assert': 'The "assert" statement\n' 'release the external resource, usually a "close()" method. ' 'Programs\n' 'are strongly recommended to explicitly close such objects. The\n' - '\'"try"..."finally"\' statement and the \'"with"\' statement ' - 'provide\n' + '‘"try"…"finally"’ statement and the ‘"with"’ statement provide\n' 'convenient ways to do this.\n' '\n' 'Some objects contain references to other objects; these are ' 'called\n' '*containers*. Examples of containers are tuples, lists and\n' - "dictionaries. The references are part of a container's value. " + 'dictionaries. The references are part of a container’s value. ' 'In\n' 'most cases, when we talk about the value of a container, we imply ' 'the\n' @@ -6757,7 +6746,7 @@ topics = {'assert': 'The "assert" statement\n' '| "lambda" | ' 'Lambda expression |\n' '+-------------------------------------------------+---------------------------------------+\n' - '| "if" -- "else" | ' + '| "if" – "else" | ' 'Conditional expression |\n' '+-------------------------------------------------+---------------------------------------+\n' '| "or" | ' @@ -6840,7 +6829,7 @@ topics = {'assert': 'The "assert" statement\n' 'application.\n' '\n' '[2] If x is very close to an exact integer multiple of ' - "y, it's\n" + 'y, it’s\n' ' possible for "x//y" to be one larger than ' '"(x-x%y)//y" due to\n' ' rounding. In such cases, Python returns the latter ' @@ -6851,8 +6840,8 @@ topics = {'assert': 'The "assert" statement\n' '\n' '[3] The Unicode standard distinguishes between *code ' 'points* (e.g.\n' - ' U+0041) and *abstract characters* (e.g. "LATIN ' - 'CAPITAL LETTER A").\n' + ' U+0041) and *abstract characters* (e.g. “LATIN ' + 'CAPITAL LETTER A”).\n' ' While most abstract characters in Unicode are only ' 'represented\n' ' using one code point, there is a number of abstract ' @@ -6860,8 +6849,8 @@ topics = {'assert': 'The "assert" statement\n' ' that can in addition be represented using a sequence ' 'of more than\n' ' one code point. For example, the abstract character ' - '"LATIN\n' - ' CAPITAL LETTER C WITH CEDILLA" can be represented as ' + '“LATIN\n' + ' CAPITAL LETTER C WITH CEDILLA” can be represented as ' 'a single\n' ' *precomposed character* at code position U+00C7, or ' 'as a sequence\n' @@ -6877,9 +6866,9 @@ topics = {'assert': 'The "assert" statement\n' 'to humans. For\n' ' example, ""\\u00C7" == "\\u0043\\u0327"" is "False", ' 'even though both\n' - ' strings represent the same abstract character "LATIN ' + ' strings represent the same abstract character “LATIN ' 'CAPITAL\n' - ' LETTER C WITH CEDILLA".\n' + ' LETTER C WITH CEDILLA”.\n' '\n' ' To compare strings at the level of abstract ' 'characters (that is,\n' @@ -6909,10 +6898,11 @@ topics = {'assert': 'The "assert" statement\n' '\n' ' pass_stmt ::= "pass"\n' '\n' - '"pass" is a null operation --- when it is executed, nothing ' - 'happens.\n' - 'It is useful as a placeholder when a statement is required\n' - 'syntactically, but no code needs to be executed, for example:\n' + '"pass" is a null operation — when it is executed, nothing happens. ' + 'It\n' + 'is useful as a placeholder when a statement is required ' + 'syntactically,\n' + 'but no code needs to be executed, for example:\n' '\n' ' def f(arg): pass # a function that does nothing (yet)\n' '\n' @@ -6968,7 +6958,7 @@ topics = {'assert': 'The "assert" statement\n' '"BaseException". If it is a class, the exception instance will be\n' 'obtained when needed by instantiating the class with no arguments.\n' '\n' - "The *type* of the exception is the exception instance's class, the\n" + 'The *type* of the exception is the exception instance’s class, the\n' '*value* is the instance itself.\n' '\n' 'A traceback object is normally created automatically when an ' @@ -7014,7 +7004,7 @@ topics = {'assert': 'The "assert" statement\n' 'inside\n' 'an exception handler or a "finally" clause: the previous exception ' 'is\n' - 'then attached as the new exception\'s "__context__" attribute:\n' + 'then attached as the new exception’s "__context__" attribute:\n' '\n' ' >>> try:\n' ' ... print(1 / 0)\n' @@ -7114,7 +7104,7 @@ topics = {'assert': 'The "assert" statement\n' '"clear()",\n' '"setdefault()", "pop()", "popitem()", "copy()", and ' '"update()"\n' - "behaving similar to those for Python's standard dictionary " + 'behaving similar to those for Python’s standard dictionary ' 'objects.\n' 'The "collections" module provides a "MutableMapping" ' 'abstract base\n' @@ -7140,7 +7130,7 @@ topics = {'assert': 'The "assert" statement\n' 'the\n' '"__contains__()" method to allow efficient use of the "in" ' 'operator;\n' - 'for mappings, "in" should search the mapping\'s keys; for ' + 'for mappings, "in" should search the mapping’s keys; for ' 'sequences, it\n' 'should search through the values. It is further ' 'recommended that both\n' @@ -7158,7 +7148,7 @@ topics = {'assert': 'The "assert" statement\n' 'Should return\n' ' the length of the object, an integer ">=" 0. Also, an ' 'object that\n' - ' doesn\'t define a "__bool__()" method and whose ' + ' doesn’t define a "__bool__()" method and whose ' '"__len__()" method\n' ' returns zero is considered to be false in a Boolean ' 'context.\n' @@ -7315,7 +7305,7 @@ topics = {'assert': 'The "assert" statement\n' 'values or\n' ' the key-item pairs.\n' '\n' - ' For objects that don\'t define "__contains__()", the ' + ' For objects that don’t define "__contains__()", the ' 'membership test\n' ' first tries iteration via "__iter__()", then the old ' 'sequence\n' @@ -7409,7 +7399,7 @@ topics = {'assert': 'The "assert" statement\n' 'object.__dict__\n' '\n' ' A dictionary or other mapping object used to store an ' - "object's\n" + 'object’s\n' ' (writable) attributes.\n' '\n' 'instance.__class__\n' @@ -7469,15 +7459,15 @@ topics = {'assert': 'The "assert" statement\n' 'to\n' ' "[1.0, 2.0]", and similarly for tuples.\n' '\n' - "[3] They must have since the parser can't tell the type of " + '[3] They must have since the parser can’t tell the type of ' 'the\n' ' operands.\n' '\n' '[4] Cased characters are those with general category ' 'property\n' - ' being one of "Lu" (Letter, uppercase), "Ll" (Letter, ' + ' being one of “Lu” (Letter, uppercase), “Ll” (Letter, ' 'lowercase),\n' - ' or "Lt" (Letter, titlecase).\n' + ' or “Lt” (Letter, titlecase).\n' '\n' '[5] To format only a tuple you should therefore provide a\n' ' singleton tuple whose only element is the tuple to be ' @@ -7489,7 +7479,7 @@ topics = {'assert': 'The "assert" statement\n' 'special\n' 'syntax (such as arithmetic operations or subscripting and ' 'slicing) by\n' - "defining methods with special names. This is Python's " + 'defining methods with special names. This is Python’s ' 'approach to\n' '*operator overloading*, allowing classes to define their own ' 'behavior\n' @@ -7523,7 +7513,7 @@ topics = {'assert': 'The "assert" statement\n' 'elements, but\n' 'extracting a slice may not make sense. (One example of this ' 'is the\n' - '"NodeList" interface in the W3C\'s Document Object Model.)\n' + '"NodeList" interface in the W3C’s Document Object Model.)\n' '\n' '\n' 'Basic customization\n' @@ -7547,7 +7537,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' ' Typical implementations create a new instance of the ' 'class by\n' - ' invoking the superclass\'s "__new__()" method using\n' + ' invoking the superclass’s "__new__()" method using\n' ' "super().__new__(cls[, ...])" with appropriate arguments ' 'and then\n' ' modifying the newly-created instance as necessary before ' @@ -7556,7 +7546,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' ' If "__new__()" returns an instance of *cls*, then the ' 'new\n' - ' instance\'s "__init__()" method will be invoked like\n' + ' instance’s "__init__()" method will be invoked like\n' ' "__init__(self[, ...])", where *self* is the new instance ' 'and the\n' ' remaining arguments are the same as were passed to ' @@ -7564,7 +7554,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' ' If "__new__()" does not return an instance of *cls*, then ' 'the new\n' - ' instance\'s "__init__()" method will not be invoked.\n' + ' instance’s "__init__()" method will not be invoked.\n' '\n' ' "__new__()" is intended mainly to allow subclasses of ' 'immutable\n' @@ -7582,7 +7572,7 @@ topics = {'assert': 'The "assert" statement\n' 'those\n' ' passed to the class constructor expression. If a base ' 'class has an\n' - ' "__init__()" method, the derived class\'s "__init__()" ' + ' "__init__()" method, the derived class’s "__init__()" ' 'method, if\n' ' any, must explicitly call it to ensure proper ' 'initialization of the\n' @@ -7603,8 +7593,8 @@ topics = {'assert': 'The "assert" statement\n' 'is also\n' ' called a finalizer or (improperly) a destructor. If a ' 'base class\n' - ' has a "__del__()" method, the derived class\'s ' - '"__del__()" method,\n' + ' has a "__del__()" method, the derived class’s "__del__()" ' + 'method,\n' ' if any, must explicitly call it to ensure proper deletion ' 'of the\n' ' base class part of the instance.\n' @@ -7624,11 +7614,11 @@ topics = {'assert': 'The "assert" statement\n' 'for\n' ' objects that still exist when the interpreter exits.\n' '\n' - ' Note: "del x" doesn\'t directly call "x.__del__()" --- ' - 'the former\n' + ' Note: "del x" doesn’t directly call "x.__del__()" — the ' + 'former\n' ' decrements the reference count for "x" by one, and the ' 'latter is\n' - ' only called when "x"\'s reference count reaches zero.\n' + ' only called when "x"’s reference count reaches zero.\n' '\n' ' **CPython implementation detail:** It is possible for a ' 'reference\n' @@ -7640,7 +7630,7 @@ topics = {'assert': 'The "assert" statement\n' 'reference\n' ' cycles is when an exception has been caught in a local ' 'variable.\n' - " The frame's locals then reference the exception, which " + ' The frame’s locals then reference the exception, which ' 'references\n' ' its own traceback, which references the locals of all ' 'frames caught\n' @@ -7686,7 +7676,7 @@ topics = {'assert': 'The "assert" statement\n' 'object.__repr__(self)\n' '\n' ' Called by the "repr()" built-in function to compute the ' - '"official"\n' + '“official”\n' ' string representation of an object. If at all possible, ' 'this\n' ' should look like a valid Python expression that could be ' @@ -7700,7 +7690,7 @@ topics = {'assert': 'The "assert" statement\n' ' value must be a string object. If a class defines ' '"__repr__()" but\n' ' not "__str__()", then "__repr__()" is also used when an ' - '"informal"\n' + '“informal”\n' ' string representation of instances of that class is ' 'required.\n' '\n' @@ -7712,7 +7702,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' ' Called by "str(object)" and the built-in functions ' '"format()" and\n' - ' "print()" to compute the "informal" or nicely printable ' + ' "print()" to compute the “informal” or nicely printable ' 'string\n' ' representation of an object. The return value must be a ' 'string\n' @@ -7740,7 +7730,7 @@ topics = {'assert': 'The "assert" statement\n' 'extension,\n' ' evaluation of formatted string literals and the ' '"str.format()"\n' - ' method, to produce a "formatted" string representation of ' + ' method, to produce a “formatted” string representation of ' 'an\n' ' object. The "format_spec" argument is a string that ' 'contains a\n' @@ -7771,7 +7761,7 @@ topics = {'assert': 'The "assert" statement\n' 'object.__gt__(self, other)\n' 'object.__ge__(self, other)\n' '\n' - ' These are the so-called "rich comparison" methods. The\n' + ' These are the so-called “rich comparison” methods. The\n' ' correspondence between operator symbols and method names ' 'is as\n' ' follows: "x=" 0. Also, an ' 'object that\n' - ' doesn\'t define a "__bool__()" method and whose ' + ' doesn’t define a "__bool__()" method and whose ' '"__len__()" method\n' ' returns zero is considered to be false in a Boolean ' 'context.\n' @@ -8977,7 +8967,7 @@ topics = {'assert': 'The "assert" statement\n' 'values or\n' ' the key-item pairs.\n' '\n' - ' For objects that don\'t define "__contains__()", the ' + ' For objects that don’t define "__contains__()", the ' 'membership test\n' ' first tries iteration via "__iter__()", then the old ' 'sequence\n' @@ -9073,15 +9063,15 @@ topics = {'assert': 'The "assert" statement\n' '"__rpow__()" (the\n' ' coercion rules would become too complicated).\n' '\n' - " Note: If the right operand's type is a subclass of the " + ' Note: If the right operand’s type is a subclass of the ' 'left\n' - " operand's type and that subclass provides the reflected " + ' operand’s type and that subclass provides the reflected ' 'method\n' ' for the operation, this method will be called before ' 'the left\n' - " operand's non-reflected method. This behavior allows " + ' operand’s non-reflected method. This behavior allows ' 'subclasses\n' - " to override their ancestors' operations.\n" + ' to override their ancestors’ operations.\n' '\n' 'object.__iadd__(self, other)\n' 'object.__isub__(self, other)\n' @@ -9119,7 +9109,7 @@ topics = {'assert': 'The "assert" statement\n' 'certain\n' ' situations, augmented assignment can result in unexpected ' 'errors\n' - " (see Why does a_tuple[i] += ['item'] raise an exception " + ' (see Why does a_tuple[i] += [‘item’] raise an exception ' 'when the\n' ' addition works?), but this behavior is in fact part of ' 'the data\n' @@ -9209,7 +9199,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' ' Enter the runtime context related to this object. The ' '"with"\n' - " statement will bind this method's return value to the " + ' statement will bind this method’s return value to the ' 'target(s)\n' ' specified in the "as" clause of the statement, if any.\n' '\n' @@ -9233,11 +9223,11 @@ topics = {'assert': 'The "assert" statement\n' '\n' ' Note that "__exit__()" methods should not reraise the ' 'passed-in\n' - " exception; this is the caller's responsibility.\n" + ' exception; this is the caller’s responsibility.\n' '\n' 'See also:\n' '\n' - ' **PEP 343** - The "with" statement\n' + ' **PEP 343** - The “with” statement\n' ' The specification, background, and examples for the ' 'Python "with"\n' ' statement.\n' @@ -9248,9 +9238,9 @@ topics = {'assert': 'The "assert" statement\n' '\n' 'For custom classes, implicit invocations of special methods ' 'are only\n' - "guaranteed to work correctly if defined on an object's type, " + 'guaranteed to work correctly if defined on an object’s type, ' 'not in\n' - "the object's instance dictionary. That behaviour is the " + 'the object’s instance dictionary. That behaviour is the ' 'reason why\n' 'the following code raises an exception:\n' '\n' @@ -9284,7 +9274,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' 'Incorrectly attempting to invoke an unbound method of a ' 'class in this\n' - "way is sometimes referred to as 'metaclass confusion', and " + 'way is sometimes referred to as ‘metaclass confusion’, and ' 'is avoided\n' 'by bypassing the instance when looking up special methods:\n' '\n' @@ -9297,7 +9287,7 @@ topics = {'assert': 'The "assert" statement\n' 'interest of\n' 'correctness, implicit special method lookup generally also ' 'bypasses\n' - 'the "__getattribute__()" method even of the object\'s ' + 'the "__getattribute__()" method even of the object’s ' 'metaclass:\n' '\n' ' >>> class Meta(type):\n' @@ -9577,11 +9567,11 @@ topics = {'assert': 'The "assert" statement\n' 'Alphabetic\n' ' characters are those characters defined in the Unicode ' 'character\n' - ' database as "Letter", i.e., those with general category ' + ' database as “Letter”, i.e., those with general category ' 'property\n' - ' being one of "Lm", "Lt", "Lu", "Ll", or "Lo". Note ' + ' being one of “Lm”, “Lt”, “Lu”, “Ll”, or “Lo”. Note ' 'that this is\n' - ' different from the "Alphabetic" property defined in the ' + ' different from the “Alphabetic” property defined in the ' 'Unicode\n' ' Standard.\n' '\n' @@ -9595,7 +9585,7 @@ topics = {'assert': 'The "assert" statement\n' 'in base 10,\n' ' e.g. U+0660, ARABIC-INDIC DIGIT ZERO. Formally a ' 'decimal character\n' - ' is a character in the Unicode General Category "Nd".\n' + ' is a character in the Unicode General Category “Nd”.\n' '\n' 'str.isdigit()\n' '\n' @@ -9654,7 +9644,7 @@ topics = {'assert': 'The "assert" statement\n' 'characters are\n' ' those characters defined in the Unicode character ' 'database as\n' - ' "Other" or "Separator", excepting the ASCII space ' + ' “Other” or “Separator”, excepting the ASCII space ' '(0x20) which is\n' ' considered printable. (Note that printable characters ' 'in this\n' @@ -9672,9 +9662,9 @@ topics = {'assert': 'The "assert" statement\n' 'Whitespace\n' ' characters are those characters defined in the Unicode ' 'character\n' - ' database as "Other" or "Separator" and those with ' + ' database as “Other” or “Separator” and those with ' 'bidirectional\n' - ' property being one of "WS", "B", or "S".\n' + ' property being one of “WS”, “B”, or “S”.\n' '\n' 'str.istitle()\n' '\n' @@ -10132,9 +10122,9 @@ topics = {'assert': 'The "assert" statement\n' '"str.upper().isupper()" might be\n' ' "False" if "s" contains uncased characters or if the ' 'Unicode\n' - ' category of the resulting character(s) is not "Lu" ' + ' category of the resulting character(s) is not “Lu” ' '(Letter,\n' - ' uppercase), but e.g. "Lt" (Letter, titlecase).\n' + ' uppercase), but e.g. “Lt” (Letter, titlecase).\n' '\n' ' The uppercasing algorithm used is described in section ' '3.13 of the\n' @@ -10229,9 +10219,9 @@ topics = {'assert': 'The "assert" statement\n' 'literals,\n' '"\'\\U\'" and "\'\\u\'" escapes in raw strings are not treated ' 'specially.\n' - "Given that Python 2.x's raw unicode literals behave differently " + 'Given that Python 2.x’s raw unicode literals behave differently ' 'than\n' - 'Python 3.x\'s the "\'ur\'" syntax is not supported.\n' + 'Python 3.x’s the "\'ur\'" syntax is not supported.\n' '\n' 'New in version 3.3: The "\'rb\'" prefix of raw bytes literals has ' 'been\n' @@ -10255,7 +10245,7 @@ topics = {'assert': 'The "assert" statement\n' 'In triple-quoted literals, unescaped newlines and quotes are ' 'allowed\n' '(and are retained), except that three unescaped quotes in a row\n' - 'terminate the literal. (A "quote" is the character used to open ' + 'terminate the literal. (A “quote” is the character used to open ' 'the\n' 'literal, i.e. either "\'" or """.)\n' '\n' @@ -10434,13 +10424,13 @@ topics = {'assert': 'The "assert" statement\n' 'item whose\n' 'index is that value (counting from zero). Since the support ' 'for\n' - "negative indices and slicing occurs in the object's " + 'negative indices and slicing occurs in the object’s ' '"__getitem__()"\n' 'method, subclasses overriding this method will need to ' 'explicitly add\n' 'that support.\n' '\n' - "A string's items are characters. A character is not a " + 'A string’s items are characters. A character is not a ' 'separate data\n' 'type but a string of exactly one character.\n', 'truth': 'Truth Value Testing\n' @@ -10497,7 +10487,7 @@ topics = {'assert': 'The "assert" statement\n' 'less except clause, if present, must be last; it matches any\n' 'exception. For an except clause with an expression, that expression\n' 'is evaluated, and the clause matches the exception if the resulting\n' - 'object is "compatible" with the exception. An object is compatible\n' + 'object is “compatible” with the exception. An object is compatible\n' 'with an exception if it is the class or a base class of the ' 'exception\n' 'object or a tuple containing an item compatible with the exception.\n' @@ -10519,7 +10509,7 @@ topics = {'assert': 'The "assert" statement\n' 'When a matching except clause is found, the exception is assigned to\n' 'the target specified after the "as" keyword in that except clause, ' 'if\n' - "present, and the except clause's suite is executed. All except\n" + 'present, and the except clause’s suite is executed. All except\n' 'clauses must have an executable block. When the end of this block ' 'is\n' 'reached, execution continues normally after the entire try ' @@ -10549,7 +10539,7 @@ topics = {'assert': 'The "assert" statement\n' 'cycle with the stack frame, keeping all locals in that frame alive\n' 'until the next garbage collection occurs.\n' '\n' - "Before an except clause's suite is executed, details about the\n" + 'Before an except clause’s suite is executed, details about the\n' 'exception are stored in the "sys" module and can be accessed via\n' '"sys.exc_info()". "sys.exc_info()" returns a 3-tuple consisting of ' 'the\n' @@ -10563,7 +10553,7 @@ topics = {'assert': 'The "assert" statement\n' 'the end of the "try" clause. [2] Exceptions in the "else" clause are\n' 'not handled by the preceding "except" clauses.\n' '\n' - 'If "finally" is present, it specifies a \'cleanup\' handler. The ' + 'If "finally" is present, it specifies a ‘cleanup’ handler. The ' '"try"\n' 'clause is executed, including any "except" and "else" clauses. If ' 'an\n' @@ -10591,12 +10581,10 @@ topics = {'assert': 'The "assert" statement\n' 'execution of the "finally" clause.\n' '\n' 'When a "return", "break" or "continue" statement is executed in the\n' - '"try" suite of a "try"..."finally" statement, the "finally" clause ' - 'is\n' - 'also executed \'on the way out.\' A "continue" statement is illegal ' - 'in\n' + '"try" suite of a "try"…"finally" statement, the "finally" clause is\n' + 'also executed ‘on the way out.’ A "continue" statement is illegal in\n' 'the "finally" clause. (The reason is a problem with the current\n' - 'implementation --- this restriction may be lifted in the future).\n' + 'implementation — this restriction may be lifted in the future).\n' '\n' 'The return value of a function is determined by the last "return"\n' 'statement executed. Since the "finally" clause always executes, a\n' @@ -10631,7 +10619,7 @@ topics = {'assert': 'The "assert" statement\n' 'will often be provided via the standard library instead.\n' '\n' 'Some of the type descriptions below contain a paragraph listing\n' - "'special attributes.' These are attributes that provide access to " + '‘special attributes.’ These are attributes that provide access to ' 'the\n' 'implementation and are not intended for general use. Their ' 'definition\n' @@ -10644,7 +10632,7 @@ topics = {'assert': 'The "assert" statement\n' 'It\n' ' is used to signify the absence of a value in many situations, ' 'e.g.,\n' - " it is returned from functions that don't explicitly return\n" + ' it is returned from functions that don’t explicitly return\n' ' anything. Its truth value is false.\n' '\n' 'NotImplemented\n' @@ -10695,7 +10683,7 @@ topics = {'assert': 'The "assert" statement\n' 'shift\n' ' and mask operations, a binary representation is assumed, ' 'and\n' - " negative numbers are represented in a variant of 2's\n" + ' negative numbers are represented in a variant of 2’s\n' ' complement which gives the illusion of an infinite string ' 'of\n' ' sign bits extending to the left.\n' @@ -10749,7 +10737,7 @@ topics = {'assert': 'The "assert" statement\n' 'items\n' ' of a sequence. When the length of a sequence is *n*, the index ' 'set\n' - ' contains the numbers 0, 1, ..., *n*-1. Item *i* of sequence *a* ' + ' contains the numbers 0, 1, …, *n*-1. Item *i* of sequence *a* ' 'is\n' ' selected by "a[i]".\n' '\n' @@ -10759,8 +10747,8 @@ topics = {'assert': 'The "assert" statement\n' 'implies\n' ' that the index set is renumbered so that it starts at 0.\n' '\n' - ' Some sequences also support "extended slicing" with a third ' - '"step"\n' + ' Some sequences also support “extended slicing” with a third ' + '“step”\n' ' parameter: "a[i:j:k]" selects all items of *a* with index *x* ' 'where\n' ' "x = i + n*k", *n* ">=" "0" and *i* "<=" *x* "<" *j*.\n' @@ -10785,7 +10773,7 @@ topics = {'assert': 'The "assert" statement\n' 'code\n' ' points. All the code points in the range "U+0000 - ' 'U+10FFFF"\n' - " can be represented in a string. Python doesn't have a " + ' can be represented in a string. Python doesn’t have a ' '"char"\n' ' type; instead, every code point in the string is ' 'represented\n' @@ -10804,7 +10792,7 @@ topics = {'assert': 'The "assert" statement\n' ' The items of a tuple are arbitrary Python objects. Tuples ' 'of\n' ' two or more items are formed by comma-separated lists of\n' - " expressions. A tuple of one item (a 'singleton') can be\n" + ' expressions. A tuple of one item (a ‘singleton’) can be\n' ' formed by affixing a comma to an expression (an expression ' 'by\n' ' itself does not create a tuple, since parentheses must be\n' @@ -10910,7 +10898,7 @@ topics = {'assert': 'The "assert" statement\n' 'object\n' ' identity, the reason being that the efficient implementation ' 'of\n' - " dictionaries requires a key's hash value to remain constant.\n" + ' dictionaries requires a key’s hash value to remain constant.\n' ' Numeric types used for keys obey the normal rules for ' 'numeric\n' ' comparison: if two numbers compare equal (e.g., "1" and ' @@ -10935,7 +10923,7 @@ topics = {'assert': 'The "assert" statement\n' ' definition (see section Function definitions). It should be\n' ' called with an argument list containing the same number of ' 'items\n' - " as the function's formal parameter list.\n" + ' as the function’s formal parameter list.\n' '\n' ' Special attributes:\n' '\n' @@ -10945,8 +10933,8 @@ topics = {'assert': 'The "assert" statement\n' '| |\n' ' ' '+===========================+=================================+=============+\n' - ' | "__doc__" | The function\'s ' - 'documentation | Writable |\n' + ' | "__doc__" | The function’s documentation ' + '| Writable |\n' ' | | string, or "None" if ' '| |\n' ' | | unavailable; not inherited by ' @@ -10955,12 +10943,12 @@ topics = {'assert': 'The "assert" statement\n' '| |\n' ' ' '+---------------------------+---------------------------------+-------------+\n' - ' | "__name__" | The function\'s ' - 'name | Writable |\n' + ' | "__name__" | The function’s name ' + '| Writable |\n' ' ' '+---------------------------+---------------------------------+-------------+\n' - ' | "__qualname__" | The function\'s *qualified ' - 'name* | Writable |\n' + ' | "__qualname__" | The function’s *qualified name* ' + '| Writable |\n' ' | | New in version 3.3. ' '| |\n' ' ' @@ -10993,9 +10981,9 @@ topics = {'assert': 'The "assert" statement\n' '+---------------------------+---------------------------------+-------------+\n' ' | "__globals__" | A reference to the dictionary ' '| Read-only |\n' - " | | that holds the function's " + ' | | that holds the function’s ' '| |\n' - ' | | global variables --- the global ' + ' | | global variables — the global ' '| |\n' ' | | namespace of the module in ' '| |\n' @@ -11013,7 +11001,7 @@ topics = {'assert': 'The "assert" statement\n' '| Read-only |\n' ' | | contain bindings for the ' '| |\n' - " | | function's free variables. " + ' | | function’s free variables. ' '| |\n' ' ' '+---------------------------+---------------------------------+-------------+\n' @@ -11036,7 +11024,7 @@ topics = {'assert': 'The "assert" statement\n' ' ' '+---------------------------+---------------------------------+-------------+\n' '\n' - ' Most of the attributes labelled "Writable" check the type of ' + ' Most of the attributes labelled “Writable” check the type of ' 'the\n' ' assigned value.\n' '\n' @@ -11052,7 +11040,7 @@ topics = {'assert': 'The "assert" statement\n' ' attributes on built-in functions may be supported in the\n' ' future.*\n' '\n' - " Additional information about a function's definition can be\n" + ' Additional information about a function’s definition can be\n' ' retrieved from its code object; see the description of ' 'internal\n' ' types below.\n' @@ -11065,7 +11053,7 @@ topics = {'assert': 'The "assert" statement\n' ' Special read-only attributes: "__self__" is the class ' 'instance\n' ' object, "__func__" is the function object; "__doc__" is the\n' - ' method\'s documentation (same as "__func__.__doc__"); ' + ' method’s documentation (same as "__func__.__doc__"); ' '"__name__"\n' ' is the method name (same as "__func__.__name__"); ' '"__module__"\n' @@ -11089,7 +11077,7 @@ topics = {'assert': 'The "assert" statement\n' 'instances,\n' ' its "__self__" attribute is the instance, and the method ' 'object\n' - ' is said to be bound. The new method\'s "__func__" attribute ' + ' is said to be bound. The new method’s "__func__" attribute ' 'is\n' ' the original function object.\n' '\n' @@ -11122,7 +11110,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' ' When an instance method object is derived from a class ' 'method\n' - ' object, the "class instance" stored in "__self__" will ' + ' object, the “class instance” stored in "__self__" will ' 'actually\n' ' be the class itself, so that calling either "x.f(1)" or ' '"C.f(1)"\n' @@ -11155,7 +11143,7 @@ topics = {'assert': 'The "assert" statement\n' 'object\n' ' which can be used to execute the body of the function: ' 'calling\n' - ' the iterator\'s "iterator.__next__()" method will cause the\n' + ' the iterator’s "iterator.__next__()" method will cause the\n' ' function to execute until it provides a value using the ' '"yield"\n' ' statement. When the function executes a "return" statement ' @@ -11184,7 +11172,7 @@ topics = {'assert': 'The "assert" statement\n' 'for"\n' ' statement to execute the body of the function.\n' '\n' - ' Calling the asynchronous iterator\'s "aiterator.__anext__()"\n' + ' Calling the asynchronous iterator’s "aiterator.__anext__()"\n' ' method will return an *awaitable* which when awaited will\n' ' execute until it provides a value using the "yield" ' 'expression.\n' @@ -11203,9 +11191,9 @@ topics = {'assert': 'The "assert" statement\n' 'of\n' ' the arguments are determined by the C function. Special ' 'read-\n' - ' only attributes: "__doc__" is the function\'s documentation\n' + ' only attributes: "__doc__" is the function’s documentation\n' ' string, or "None" if unavailable; "__name__" is the ' - "function's\n" + 'function’s\n' ' name; "__self__" is set to "None" (but see the next item);\n' ' "__module__" is the name of the module the function was ' 'defined\n' @@ -11248,16 +11236,16 @@ topics = {'assert': 'The "assert" statement\n' ' translated to lookups in this dictionary, e.g., "m.x" is ' 'equivalent\n' ' to "m.__dict__["x"]". A module object does not contain the code\n' - " object used to initialize the module (since it isn't needed " + ' object used to initialize the module (since it isn’t needed ' 'once\n' ' the initialization is done).\n' '\n' - " Attribute assignment updates the module's namespace dictionary,\n" + ' Attribute assignment updates the module’s namespace dictionary,\n' ' e.g., "m.x = 1" is equivalent to "m.__dict__["x"] = 1".\n' '\n' - ' Predefined (writable) attributes: "__name__" is the module\'s ' + ' Predefined (writable) attributes: "__name__" is the module’s ' 'name;\n' - ' "__doc__" is the module\'s documentation string, or "None" if\n' + ' "__doc__" is the module’s documentation string, or "None" if\n' ' unavailable; "__annotations__" (optional) is a dictionary\n' ' containing *variable annotations* collected during module body\n' ' execution; "__file__" is the pathname of the file from which ' @@ -11270,7 +11258,7 @@ topics = {'assert': 'The "assert" statement\n' 'is\n' ' the pathname of the shared library file.\n' '\n' - ' Special read-only attribute: "__dict__" is the module\'s ' + ' Special read-only attribute: "__dict__" is the module’s ' 'namespace\n' ' as a dictionary object.\n' '\n' @@ -11299,7 +11287,7 @@ topics = {'assert': 'The "assert" statement\n' ' classes. This search of the base classes uses the C3 method\n' ' resolution order which behaves correctly even in the presence ' 'of\n' - " 'diamond' inheritance structures where there are multiple\n" + ' ‘diamond’ inheritance structures where there are multiple\n' ' inheritance paths leading back to a common ancestor. Additional\n' ' details on the C3 MRO used by Python can be found in the\n' ' documentation accompanying the 2.3 release at\n' @@ -11308,7 +11296,7 @@ topics = {'assert': 'The "assert" statement\n' ' When a class attribute reference (for class "C", say) would ' 'yield a\n' ' class method object, it is transformed into an instance method\n' - ' object whose "__self__" attributes is "C". When it would yield ' + ' object whose "__self__" attribute is "C". When it would yield ' 'a\n' ' static method object, it is transformed into the object wrapped ' 'by\n' @@ -11318,7 +11306,7 @@ topics = {'assert': 'The "assert" statement\n' 'differ\n' ' from those actually contained in its "__dict__".\n' '\n' - " Class attribute assignments update the class's dictionary, " + ' Class attribute assignments update the class’s dictionary, ' 'never\n' ' the dictionary of a base class.\n' '\n' @@ -11330,11 +11318,11 @@ topics = {'assert': 'The "assert" statement\n' 'is\n' ' the module name in which the class was defined; "__dict__" is ' 'the\n' - ' dictionary containing the class\'s namespace; "__bases__" is a ' + ' dictionary containing the class’s namespace; "__bases__" is a ' 'tuple\n' ' containing the base classes, in the order of their occurrence ' 'in\n' - ' the base class list; "__doc__" is the class\'s documentation ' + ' the base class list; "__doc__" is the class’s documentation ' 'string,\n' ' or "None" if undefined; "__annotations__" (optional) is a\n' ' dictionary containing *variable annotations* collected during ' @@ -11347,7 +11335,7 @@ topics = {'assert': 'The "assert" statement\n' ' A class instance has a namespace implemented as a dictionary ' 'which\n' ' is the first place in which attribute references are searched.\n' - " When an attribute is not found there, and the instance's class " + ' When an attribute is not found there, and the instance’s class ' 'has\n' ' an attribute by that name, the search continues with the class\n' ' attributes. If a class attribute is found that is a ' @@ -11356,17 +11344,17 @@ topics = {'assert': 'The "assert" statement\n' 'object\n' ' whose "__self__" attribute is the instance. Static method and\n' ' class method objects are also transformed; see above under\n' - ' "Classes". See section Implementing Descriptors for another way ' + ' “Classes”. See section Implementing Descriptors for another way ' 'in\n' ' which attributes of a class retrieved via its instances may ' 'differ\n' - ' from the objects actually stored in the class\'s "__dict__". If ' + ' from the objects actually stored in the class’s "__dict__". If ' 'no\n' - " class attribute is found, and the object's class has a\n" + ' class attribute is found, and the object’s class has a\n' ' "__getattr__()" method, that is called to satisfy the lookup.\n' '\n' - " Attribute assignments and deletions update the instance's\n" - " dictionary, never a class's dictionary. If the class has a\n" + ' Attribute assignments and deletions update the instance’s\n' + ' dictionary, never a class’s dictionary. If the class has a\n' ' "__setattr__()" or "__delattr__()" method, this is called ' 'instead\n' ' of updating the instance dictionary directly.\n' @@ -11377,7 +11365,7 @@ topics = {'assert': 'The "assert" statement\n' ' Special method names.\n' '\n' ' Special attributes: "__dict__" is the attribute dictionary;\n' - ' "__class__" is the instance\'s class.\n' + ' "__class__" is the instance’s class.\n' '\n' 'I/O objects (also known as file objects)\n' ' A *file object* represents an open file. Various shortcuts are\n' @@ -11389,7 +11377,7 @@ topics = {'assert': 'The "assert" statement\n' ' provided by extension modules).\n' '\n' ' The objects "sys.stdin", "sys.stdout" and "sys.stderr" are\n' - " initialized to file objects corresponding to the interpreter's\n" + ' initialized to file objects corresponding to the interpreter’s\n' ' standard input, output and error streams; they are all open in ' 'text\n' ' mode and therefore follow the interface defined by the\n' @@ -11407,7 +11395,7 @@ topics = {'assert': 'The "assert" statement\n' ' or *bytecode*. The difference between a code object and a\n' ' function object is that the function object contains an ' 'explicit\n' - " reference to the function's globals (the module in which it " + ' reference to the function’s globals (the module in which it ' 'was\n' ' defined), while a code object contains no context; also the\n' ' default argument values are stored in the function object, ' @@ -11499,7 +11487,7 @@ topics = {'assert': 'The "assert" statement\n' 'is\n' ' used by the debugger); "f_lineno" is the current line number ' 'of\n' - ' the frame --- writing to this from within a trace function ' + ' the frame — writing to this from within a trace function ' 'jumps\n' ' to the given line (only for the bottom-most frame). A ' 'debugger\n' @@ -11616,7 +11604,7 @@ topics = {'assert': 'The "assert" statement\n' ' is retrieved from classes and class instances. The behaviour ' 'of\n' ' class method objects upon such retrieval is described above,\n' - ' under "User-defined methods". Class method objects are ' + ' under “User-defined methods”. Class method objects are ' 'created\n' ' by the built-in "classmethod()" constructor.\n', 'typesfunctions': 'Functions\n' @@ -11636,8 +11624,8 @@ topics = {'assert': 'The "assert" statement\n' 'different object types.\n' '\n' 'See Function definitions for more information.\n', - 'typesmapping': 'Mapping Types --- "dict"\n' - '************************\n' + 'typesmapping': 'Mapping Types — "dict"\n' + '**********************\n' '\n' 'A *mapping* object maps *hashable* values to arbitrary ' 'objects.\n' @@ -11648,7 +11636,7 @@ topics = {'assert': 'The "assert" statement\n' 'in "list", "set", and "tuple" classes, and the "collections" ' 'module.)\n' '\n' - "A dictionary's keys are *almost* arbitrary values. Values " + 'A dictionary’s keys are *almost* arbitrary values. Values ' 'that are\n' 'not *hashable*, that is, values containing lists, ' 'dictionaries or\n' @@ -11824,13 +11812,13 @@ topics = {'assert': 'The "assert" statement\n' '\n' ' items()\n' '\n' - ' Return a new view of the dictionary\'s items ("(key, ' + ' Return a new view of the dictionary’s items ("(key, ' 'value)"\n' ' pairs). See the documentation of view objects.\n' '\n' ' keys()\n' '\n' - " Return a new view of the dictionary's keys. See the\n" + ' Return a new view of the dictionary’s keys. See the\n' ' documentation of view objects.\n' '\n' ' pop(key[, default])\n' @@ -11878,14 +11866,14 @@ topics = {'assert': 'The "assert" statement\n' '\n' ' values()\n' '\n' - " Return a new view of the dictionary's values. See " + ' Return a new view of the dictionary’s values. See ' 'the\n' ' documentation of view objects.\n' '\n' ' Dictionaries compare equal if and only if they have the ' 'same "(key,\n' - ' value)" pairs. Order comparisons (\'<\', \'<=\', \'>=\', ' - "'>') raise\n" + ' value)" pairs. Order comparisons (‘<’, ‘<=’, ‘>=’, ‘>’) ' + 'raise\n' ' "TypeError".\n' '\n' 'See also: "types.MappingProxyType" can be used to create a ' @@ -11899,7 +11887,7 @@ topics = {'assert': 'The "assert" statement\n' 'The objects returned by "dict.keys()", "dict.values()" and\n' '"dict.items()" are *view objects*. They provide a dynamic ' 'view on the\n' - "dictionary's entries, which means that when the dictionary " + 'dictionary’s entries, which means that when the dictionary ' 'changes,\n' 'the view reflects these changes.\n' '\n' @@ -11921,7 +11909,7 @@ topics = {'assert': 'The "assert" statement\n' 'which is\n' ' non-random, varies across Python implementations, and ' 'depends on\n' - " the dictionary's history of insertions and deletions. If " + ' the dictionary’s history of insertions and deletions. If ' 'keys,\n' ' values and items views are iterated over with no ' 'intervening\n' @@ -11941,7 +11929,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' 'x in dictview\n' '\n' - ' Return "True" if *x* is in the underlying dictionary\'s ' + ' Return "True" if *x* is in the underlying dictionary’s ' 'keys, values\n' ' or items (in the latter case, *x* should be a "(key, ' 'value)"\n' @@ -12056,7 +12044,7 @@ topics = {'assert': 'The "assert" statement\n' 'The only special operation on a module is attribute access: ' '"m.name",\n' 'where *m* is a module and *name* accesses a name defined in ' - "*m*'s\n" + '*m*’s\n' 'symbol table. Module attributes can be assigned to. (Note ' 'that the\n' '"import" statement is not, strictly speaking, an operation ' @@ -12069,14 +12057,14 @@ topics = {'assert': 'The "assert" statement\n' '\n' 'A special attribute of every module is "__dict__". This is ' 'the\n' - "dictionary containing the module's symbol table. Modifying " + 'dictionary containing the module’s symbol table. Modifying ' 'this\n' - "dictionary will actually change the module's symbol table, " + 'dictionary will actually change the module’s symbol table, ' 'but direct\n' 'assignment to the "__dict__" attribute is not possible (you ' 'can write\n' '"m.__dict__[\'a\'] = 1", which defines "m.a" to be "1", but ' - "you can't\n" + 'you can’t\n' 'write "m.__dict__ = {}"). Modifying "__dict__" directly is ' 'not\n' 'recommended.\n' @@ -12087,8 +12075,8 @@ topics = {'assert': 'The "assert" statement\n' 'written as\n' '"".\n', - 'typesseq': 'Sequence Types --- "list", "tuple", "range"\n' - '*******************************************\n' + 'typesseq': 'Sequence Types — "list", "tuple", "range"\n' + '*****************************************\n' '\n' 'There are three basic sequence types: lists, tuples, and range\n' 'objects. Additional sequence types tailored for processing of ' @@ -12262,7 +12250,7 @@ topics = {'assert': 'The "assert" statement\n' '*j* are\n' ' reduced to "len(s) - 1" if they are greater. If *i* or *j* ' 'are\n' - ' omitted or "None", they become "end" values (which end ' + ' omitted or "None", they become “end” values (which end ' 'depends on\n' ' the sign of *k*). Note, *k* cannot be zero. If *k* is ' '"None", it\n' @@ -12293,7 +12281,7 @@ topics = {'assert': 'The "assert" statement\n' 'documentation\n' '\n' '7. Some sequence types (such as "range") only support item\n' - " sequences that follow specific patterns, and hence don't " + ' sequences that follow specific patterns, and hence don’t ' 'support\n' ' sequence concatenation or repetition.\n' '\n' @@ -12450,7 +12438,7 @@ topics = {'assert': 'The "assert" statement\n' ' sequence.\n' '\n' '5. "clear()" and "copy()" are included for consistency with the\n' - " interfaces of mutable containers that don't support slicing\n" + ' interfaces of mutable containers that don’t support slicing\n' ' operations (such as "dict" and "set")\n' '\n' ' New in version 3.3: "clear()" and "copy()" methods.\n' @@ -12490,7 +12478,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' ' The constructor builds a list whose items are the same and in ' 'the\n' - " same order as *iterable*'s items. *iterable* may be either " + ' same order as *iterable*’s items. *iterable* may be either ' 'a\n' ' sequence, a container that supports iteration, or an ' 'iterator\n' @@ -12557,8 +12545,8 @@ topics = {'assert': 'The "assert" statement\n' 'is\n' ' stable if it guarantees not to change the relative order ' 'of\n' - ' elements that compare equal --- this is helpful for ' - 'sorting in\n' + ' elements that compare equal — this is helpful for sorting ' + 'in\n' ' multiple passes (for example, sort by department, then by ' 'salary\n' ' grade).\n' @@ -12604,7 +12592,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' ' The constructor builds a tuple whose items are the same and ' 'in the\n' - " same order as *iterable*'s items. *iterable* may be either " + ' same order as *iterable*’s items. *iterable* may be either ' 'a\n' ' sequence, a container that supports iteration, or an ' 'iterator\n' @@ -12733,7 +12721,7 @@ topics = {'assert': 'The "assert" statement\n' 'Range objects implement the "collections.abc.Sequence" ABC, and\n' 'provide features such as containment tests, element index ' 'lookup,\n' - 'slicing and support for negative indices (see Sequence Types --- ' + 'slicing and support for negative indices (see Sequence Types — ' 'list,\n' 'tuple, range):\n' '\n' @@ -12771,7 +12759,7 @@ topics = {'assert': 'The "assert" statement\n' 'constant\n' 'time instead of iterating through all items.\n' '\n' - "Changed in version 3.3: Define '==' and '!=' to compare range " + 'Changed in version 3.3: Define ‘==’ and ‘!=’ to compare range ' 'objects\n' 'based on the sequence of values they define (instead of ' 'comparing\n' @@ -12910,7 +12898,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' '5. "clear()" and "copy()" are included for consistency ' 'with the\n' - " interfaces of mutable containers that don't support " + ' interfaces of mutable containers that don’t support ' 'slicing\n' ' operations (such as "dict" and "set")\n' '\n' @@ -12965,7 +12953,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' 'A "break" statement executed in the first suite terminates the ' 'loop\n' - 'without executing the "else" clause\'s suite. A "continue" ' + 'without executing the "else" clause’s suite. A "continue" ' 'statement\n' 'executed in the first suite skips the rest of the suite and goes ' 'back\n' @@ -12975,21 +12963,22 @@ topics = {'assert': 'The "assert" statement\n' '\n' 'The "with" statement is used to wrap the execution of a block with\n' 'methods defined by a context manager (see section With Statement\n' - 'Context Managers). This allows common "try"..."except"..."finally"\n' - 'usage patterns to be encapsulated for convenient reuse.\n' + 'Context Managers). This allows common "try"…"except"…"finally" ' + 'usage\n' + 'patterns to be encapsulated for convenient reuse.\n' '\n' ' with_stmt ::= "with" with_item ("," with_item)* ":" suite\n' ' with_item ::= expression ["as" target]\n' '\n' - 'The execution of the "with" statement with one "item" proceeds as\n' + 'The execution of the "with" statement with one “item” proceeds as\n' 'follows:\n' '\n' '1. The context expression (the expression given in the "with_item")\n' ' is evaluated to obtain a context manager.\n' '\n' - '2. The context manager\'s "__exit__()" is loaded for later use.\n' + '2. The context manager’s "__exit__()" is loaded for later use.\n' '\n' - '3. The context manager\'s "__enter__()" method is invoked.\n' + '3. The context manager’s "__enter__()" method is invoked.\n' '\n' '4. If a target was included in the "with" statement, the return\n' ' value from "__enter__()" is assigned to it.\n' @@ -13003,7 +12992,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' '5. The suite is executed.\n' '\n' - '6. The context manager\'s "__exit__()" method is invoked. If an\n' + '6. The context manager’s "__exit__()" method is invoked. If an\n' ' exception caused the suite to be exited, its type, value, and\n' ' traceback are passed as arguments to "__exit__()". Otherwise, ' 'three\n' @@ -13039,7 +13028,7 @@ topics = {'assert': 'The "assert" statement\n' '\n' 'See also:\n' '\n' - ' **PEP 343** - The "with" statement\n' + ' **PEP 343** - The “with” statement\n' ' The specification, background, and examples for the Python ' '"with"\n' ' statement.\n', diff --git a/Misc/NEWS.d/3.6.6rc1.rst b/Misc/NEWS.d/3.6.6rc1.rst new file mode 100644 index 0000000000..bc21a34b1f --- /dev/null +++ b/Misc/NEWS.d/3.6.6rc1.rst @@ -0,0 +1,885 @@ +.. bpo: 33786 +.. date: 2018-06-06-23-24-40 +.. nonce: lBvT8z +.. release date: 2018-06-11 +.. section: Core and Builtins + +Fix asynchronous generators to handle GeneratorExit in athrow() correctly + +.. + +.. bpo: 30654 +.. date: 2018-05-28-12-28-53 +.. nonce: 9fDJye +.. section: Core and Builtins + +Fixed reset of the SIGINT handler to SIG_DFL on interpreter shutdown even +when there was a custom handler set previously. Patch by Philipp Kerling. + +.. + +.. bpo: 33622 +.. date: 2018-05-23-20-46-14 +.. nonce: xPucO9 +.. section: Core and Builtins + +Fixed a leak when the garbage collector fails to add an object with the +``__del__`` method or referenced by it into the :data:`gc.garbage` list. +:c:func:`PyGC_Collect` can now be called when an exception is set and +preserves it. + +.. + +.. bpo: 31849 +.. date: 2018-05-14-11-00-00 +.. nonce: EmHaH4 +.. section: Core and Builtins + +Fix signed/unsigned comparison warning in pyhash.c. + +.. + +.. bpo: 33391 +.. date: 2018-05-02-08-36-03 +.. nonce: z4a7rb +.. section: Core and Builtins + +Fix a leak in set_symmetric_difference(). + +.. + +.. bpo: 28055 +.. date: 2018-04-25-20-44-42 +.. nonce: f49kfC +.. section: Core and Builtins + +Fix unaligned accesses in siphash24(). Patch by Rolf Eike Beer. + +.. + +.. bpo: 33231 +.. date: 2018-04-05-22-20-44 +.. nonce: 3Jmo0q +.. section: Core and Builtins + +Fix potential memory leak in ``normalizestring()``. + +.. + +.. bpo: 29922 +.. date: 2018-04-03-00-30-25 +.. nonce: CdLuMl +.. section: Core and Builtins + +Improved error messages in 'async with' when ``__aenter__()`` or +``__aexit__()`` return non-awaitable object. + +.. + +.. bpo: 33199 +.. date: 2018-04-02-09-32-40 +.. nonce: TPnxQu +.. section: Core and Builtins + +Fix ``ma_version_tag`` in dict implementation is uninitialized when copying +from key-sharing dict. + +.. + +.. bpo: 33041 +.. date: 2018-03-18-13-56-14 +.. nonce: XwPhI2 +.. section: Core and Builtins + +Fixed jumping when the function contains an ``async for`` loop. + +.. + +.. bpo: 32282 +.. date: 2017-12-12-14-02-28 +.. nonce: xFVMTn +.. section: Core and Builtins + +Fix an unnecessary ifdef in the include of VersionHelpers.h in socketmodule +on Windows. + +.. + +.. bpo: 21983 +.. date: 2017-10-02-21-02-14 +.. nonce: UoC319 +.. section: Core and Builtins + +Fix a crash in `ctypes.cast()` in case the type argument is a ctypes +structured data type. Patch by Eryk Sun and Oren Milman. + +.. + +.. bpo: 30167 +.. date: 2018-06-10-19-29-17 +.. nonce: G5EgC5 +.. section: Library + +Prevent site.main() exception if PYTHONSTARTUP is set. Patch by Steve Weber. + +.. + +.. bpo: 33812 +.. date: 2018-06-10-13-26-02 +.. nonce: frGAOr +.. section: Library + +Datetime instance d with non-None tzinfo, but with d.tzinfo.utcoffset(d) +returning None is now treated as naive by the astimezone() method. + +.. + +.. bpo: 30805 +.. date: 2018-06-08-17-34-16 +.. nonce: 3qCWa0 +.. section: Library + +Avoid race condition with debug logging + +.. + +.. bpo: 33767 +.. date: 2018-06-03-22-41-59 +.. nonce: 2e82g3 +.. section: Library + +The concatenation (``+``) and repetition (``*``) sequence operations now +raise :exc:`TypeError` instead of :exc:`SystemError` when performed on +:class:`mmap.mmap` objects. Patch by Zackery Spytz. + +.. + +.. bpo: 32684 +.. date: 2018-05-29-12-51-18 +.. nonce: ZEIism +.. section: Library + +Fix gather to propagate cancellation of itself even with return_exceptions. + +.. + +.. bpo: 33674 +.. date: 2018-05-28-22-49-59 +.. nonce: 6LFFj7 +.. section: Library + +Fix a race condition in SSLProtocol.connection_made() of asyncio.sslproto: +start immediately the handshake instead of using call_soon(). Previously, +data_received() could be called before the handshake started, causing the +handshake to hang or fail. + +.. + +.. bpo: 31467 +.. date: 2018-05-28-18-40-26 +.. nonce: s4Fad3 +.. section: Library + +Fixed bug where calling write_eof() on a _SelectorSocketTransport after it's +already closed raises AttributeError. + +.. + +.. bpo: 33672 +.. date: 2018-05-28-17-45-06 +.. nonce: GM_Xm_ +.. section: Library + +Fix Task.__repr__ crash with Cython's bogus coroutines + +.. + +.. bpo: 33469 +.. date: 2018-05-28-15-55-12 +.. nonce: hmXBpY +.. section: Library + +Fix RuntimeError after closing loop that used run_in_executor + +.. + +.. bpo: 11874 +.. date: 2018-05-23-00-26-27 +.. nonce: glK5iP +.. section: Library + +Use a better regex when breaking usage into wrappable parts. Avoids bogus +assertion errors from custom metavar strings. + +.. + +.. bpo: 30877 +.. date: 2018-05-22-13-05-12 +.. nonce: JZEGjI +.. section: Library + +Fixed a bug in the Python implementation of the JSON decoder that prevented +the cache of parsed strings from clearing after finishing the decoding. +Based on patch by c-fos. + +.. + +.. bpo: 33548 +.. date: 2018-05-16-17-05-48 +.. nonce: xWslmx +.. section: Library + +tempfile._candidate_tempdir_list should consider common TEMP locations + +.. + +.. bpo: 33542 +.. date: 2018-05-16-09-30-27 +.. nonce: idNAcs +.. section: Library + +Prevent ``uuid.get_node`` from using a DUID instead of a MAC on Windows. +Patch by Zvi Effron + +.. + +.. bpo: 26819 +.. date: 2018-05-16-05-24-43 +.. nonce: taxbVT +.. section: Library + +Fix race condition with `ReadTransport.resume_reading` in Windows proactor +event loop. + +.. + +.. bpo: 28556 +.. date: 2018-05-10-14-51-19 +.. nonce: y3zK6I +.. section: Library + +Minor fixes in typing module: add annotations to ``NamedTuple.__new__``, +pass ``*args`` and ``**kwds`` in ``Generic.__new__``. Original PRs by +Paulius Šarka and Chad Dombrova. + +.. + +.. bpo: 20087 +.. date: 2018-05-05-18-02-24 +.. nonce: lJrvXL +.. section: Library + +Updated alias mapping with glibc 2.27 supported locales. + +.. + +.. bpo: 33422 +.. date: 2018-05-05-09-53-05 +.. nonce: 4FtQ0q +.. section: Library + +Fix trailing quotation marks getting deleted when looking up byte/string +literals on pydoc. Patch by Andrés Delfino. + +.. + +.. bpo: 33197 +.. date: 2018-04-29-23-56-20 +.. nonce: dgRLqr +.. section: Library + +Update error message when constructing invalid inspect.Parameters Patch by +Dong-hee Na. + +.. + +.. bpo: 33383 +.. date: 2018-04-29-11-15-38 +.. nonce: g32YWn +.. section: Library + +Fixed crash in the get() method of the :mod:`dbm.ndbm` database object when +it is called with a single argument. + +.. + +.. bpo: 33329 +.. date: 2018-04-23-13-21-39 +.. nonce: lQ-Eod +.. section: Library + +Fix multiprocessing regression on newer glibcs + +.. + +.. bpo: 991266 +.. date: 2018-04-21-00-24-08 +.. nonce: h93TP_ +.. section: Library + +Fix quoting of the ``Comment`` attribute of +:class:`http.cookies.SimpleCookie`. + +.. + +.. bpo: 33131 +.. date: 2018-04-20-10-43-17 +.. nonce: L2E977 +.. section: Library + +Upgrade bundled version of pip to 10.0.1. + +.. + +.. bpo: 33308 +.. date: 2018-04-18-19-12-25 +.. nonce: fW75xi +.. section: Library + +Fixed a crash in the :mod:`parser` module when converting an ST object to a +tree of tuples or lists with ``line_info=False`` and ``col_info=True``. + +.. + +.. bpo: 33263 +.. date: 2018-04-11-20-29-19 +.. nonce: B56Hc1 +.. section: Library + +Fix FD leak in `_SelectorSocketTransport` Patch by Vlad Starostin. + +.. + +.. bpo: 33256 +.. date: 2018-04-10-20-57-14 +.. nonce: ndHkqu +.. section: Library + +Fix display of ```` call in the html produced by ``cgitb.html()``. +Patch by Stéphane Blondon. + +.. + +.. bpo: 33203 +.. date: 2018-04-05-11-09-45 +.. nonce: Hje9Py +.. section: Library + +``random.Random.choice()`` now raises ``IndexError`` for empty sequences +consistently even when called from subclasses without a ``getrandbits()`` +implementation. + +.. + +.. bpo: 33224 +.. date: 2018-04-04-23-41-30 +.. nonce: pyR0jB +.. section: Library + +Update difflib.mdiff() for PEP 479. Convert an uncaught StopIteration in a +generator into a return-statement. + +.. + +.. bpo: 33209 +.. date: 2018-04-03-10-37-13 +.. nonce: 9sGWE_ +.. section: Library + +End framing at the end of C implementation of :func:`pickle.Pickler.dump`. + +.. + +.. bpo: 32861 +.. date: 2018-04-02-20-44-54 +.. nonce: HeBjzN +.. section: Library + +The urllib.robotparser's ``__str__`` representation now includes wildcard +entries and the "Crawl-delay" and "Request-rate" fields. Patch by Michael +Lazar. + +.. + +.. bpo: 33096 +.. date: 2018-03-25-13-18-16 +.. nonce: ofdbe7 +.. section: Library + +Allow ttk.Treeview.insert to insert iid that has a false boolean value. Note +iid=0 and iid=False would be same. Patch by Garvit Khatri. + +.. + +.. bpo: 33127 +.. date: 2018-03-24-15-08-24 +.. nonce: olJmHv +.. section: Library + +The ssl module now compiles with LibreSSL 2.7.1. + +.. + +.. bpo: 33021 +.. date: 2018-03-12-00-27-56 +.. nonce: m19B9T +.. section: Library + +Release the GIL during fstat() calls, avoiding hang of all threads when +calling mmap.mmap(), os.urandom(), and random.seed(). Patch by Nir Soffer. + +.. + +.. bpo: 27683 +.. date: 2018-03-07-22-28-17 +.. nonce: 572Rv4 +.. section: Library + +Fix a regression in :mod:`ipaddress` that result of :meth:`hosts` is empty +when the network is constructed by a tuple containing an integer mask and +only 1 bit left for addresses. + +.. + +.. bpo: 32844 +.. date: 2018-02-28-13-08-00 +.. nonce: u8tnAe +.. section: Library + +Fix wrong redirection of a low descriptor (0 or 1) to stderr in subprocess +if another low descriptor is closed. + +.. + +.. bpo: 31908 +.. date: 2017-10-31 +.. nonce: g4xh8x +.. section: Library + +Fix output of cover files for ``trace`` module command-line tool. Previously +emitted cover files only when ``--missing`` option was used. Patch by +Michael Selik. + +.. + +.. bpo: 31457 +.. date: 2017-10-18-19-05-17 +.. nonce: KlE6r8 +.. section: Library + +If nested log adapters are used, the inner ``process()`` methods are no +longer omitted. + +.. + +.. bpo: 16865 +.. date: 2017-09-29-16-40-38 +.. nonce: l-f6I_ +.. section: Library + +Support arrays >=2GiB in :mod:`ctypes`. Patch by Segev Finer. + +.. + +.. bpo: 31238 +.. date: 2017-08-21-12-31-53 +.. nonce: Gg0LRH +.. section: Library + +pydoc: the stop() method of the private ServerThread class now waits until +DocServer.serve_until_quit() completes and then explicitly sets its +docserver attribute to None to break a reference cycle. + +.. + +.. bpo: 33503 +.. date: 2018-05-14-20-08-58 +.. nonce: Wvt0qg +.. section: Documentation + +Fix broken pypi link + +.. + +.. bpo: 33421 +.. date: 2018-05-14-15-23-51 +.. nonce: 3GU_QO +.. section: Documentation + +Add missing documentation for ``typing.AsyncContextManager``. + +.. + +.. bpo: 33378 +.. date: 2018-04-29-04-02-18 +.. nonce: -anAHN +.. section: Documentation + +Add Korean language switcher for https://docs.python.org/3/ + +.. + +.. bpo: 33276 +.. date: 2018-04-20-14-09-36 +.. nonce: rA1z_3 +.. section: Documentation + +Clarify that the ``__path__`` attribute on modules cannot be just any value. + +.. + +.. bpo: 33201 +.. date: 2018-04-01-21-03-41 +.. nonce: aa8Lkl +.. section: Documentation + +Modernize documentation for writing C extension types. + +.. + +.. bpo: 33195 +.. date: 2018-04-01-14-30-36 +.. nonce: dRS-XX +.. section: Documentation + +Deprecate ``Py_UNICODE`` usage in ``c-api/arg`` document. ``Py_UNICODE`` +related APIs are deprecated since Python 3.3, but it is missed in the +document. + +.. + +.. bpo: 33126 +.. date: 2018-03-28-17-03-17 +.. nonce: 5UGkNv +.. section: Documentation + +Document PyBuffer_ToContiguous(). + +.. + +.. bpo: 27212 +.. date: 2018-03-22-19-23-04 +.. nonce: wrE5KR +.. section: Documentation + +Modify documentation for the :func:`islice` recipe to consume initial values +up to the start index. + +.. + +.. bpo: 28247 +.. date: 2018-03-20-20-11-05 +.. nonce: -V-WS- +.. section: Documentation + +Update :mod:`zipapp` documentation to describe how to make standalone +applications. + +.. + +.. bpo: 18802 +.. date: 2018-03-11-18-53-47 +.. nonce: JhAqH3 +.. section: Documentation + +Documentation changes for ipaddress. Patch by Jon Foster and Berker Peksag. + +.. + +.. bpo: 27428 +.. date: 2018-03-11-00-16-56 +.. nonce: B7A8FT +.. section: Documentation + +Update documentation to clarify that ``WindowsRegistryFinder`` implements +``MetaPathFinder``. (Patch by Himanshu Lakhara) + +.. + +.. bpo: 8243 +.. date: 2018-01-13-20-30-53 +.. nonce: s98r28 +.. section: Documentation + +Add a note about curses.addch and curses.addstr exception behavior when +writing outside a window, or pad. + +.. + +.. bpo: 31432 +.. date: 2017-09-13-07-14-59 +.. nonce: yAY4Z3 +.. section: Documentation + +Clarify meaning of CERT_NONE, CERT_OPTIONAL, and CERT_REQUIRED flags for +ssl.SSLContext.verify_mode. + +.. + +.. bpo: 33655 +.. date: 2018-05-26-16-01-40 +.. nonce: Frb4LA +.. section: Tests + +Ignore test_posix_fallocate failures on BSD platforms that might be due to +running on ZFS. + +.. + +.. bpo: 19417 +.. date: 2018-01-08-13-33-47 +.. nonce: 2asoXy +.. section: Tests + +Add test_bdb.py. + +.. + +.. bpo: 5755 +.. date: 2018-06-04-21-34-34 +.. nonce: 65GmCj +.. section: Build + +Move ``-Wstrict-prototypes`` option to ``CFLAGS_NODIST`` from ``OPT``. This +option emitted annoying warnings when building extension modules written in +C++. + +.. + +.. bpo: 33614 +.. date: 2018-05-28-11-40-22 +.. nonce: 28e0sE +.. section: Build + +Ensures module definition files for the stable ABI on Windows are correctly +regenerated. + +.. + +.. bpo: 33522 +.. date: 2018-05-15-12-44-50 +.. nonce: mJoNcA +.. section: Build + +Enable CI builds on Visual Studio Team Services at +https://python.visualstudio.com/cpython + +.. + +.. bpo: 33012 +.. date: 2018-05-10-21-10-01 +.. nonce: 5Zfjac +.. section: Build + +Add ``-Wno-cast-function-type`` for gcc 8 for silencing warnings about +function casts like casting to PyCFunction in method definition lists. + +.. + +.. bpo: 33394 +.. date: 2018-04-30-17-36-46 +.. nonce: _Vdi4t +.. section: Build + +Enable the verbose build for extension modules, when GNU make is passed +macros on the command line. + +.. + +.. bpo: 33184 +.. date: 2018-04-13-11-39-28 +.. nonce: aEohx0 +.. section: Windows + +Update Windows installer to OpenSSL 1.0.2o. + +.. + +.. bpo: 33184 +.. date: 2018-04-07-00-58-50 +.. nonce: rMTiqu +.. section: macOS + +Update macOS installer build to use OpenSSL 1.0.2o. + +.. + +.. bpo: 33656 +.. date: 2018-06-10-17-59-36 +.. nonce: 60ZqJS +.. section: IDLE + +On Windows, add API call saying that tk scales for DPI. On Windows 8.1+ or +10, with DPI compatibility properties of the Python binary unchanged, and a +monitor resolution greater than 96 DPI, this should make text and lines +sharper. It should otherwise have no effect. + +.. + +.. bpo: 33768 +.. date: 2018-06-04-19-23-11 +.. nonce: I_2qpV +.. section: IDLE + +Clicking on a context line moves that line to the top of the editor window. + +.. + +.. bpo: 33763 +.. date: 2018-06-03-20-12-57 +.. nonce: URiFlE +.. section: IDLE + +IDLE: Use read-only text widget for code context instead of label widget. + +.. + +.. bpo: 33664 +.. date: 2018-06-03-09-13-28 +.. nonce: PZzQyL +.. section: IDLE + +Scroll IDLE editor text by lines. Previously, the mouse wheel and scrollbar +slider moved text by a fixed number of pixels, resulting in partial lines at +the top of the editor box. The change also applies to the shell and grep +output windows, but not to read-only text views. + +.. + +.. bpo: 33679 +.. date: 2018-05-29-07-14-37 +.. nonce: MgX_Ui +.. section: IDLE + +Enable theme-specific color configuration for Code Context. Use the +Highlights tab to see the setting for built-in themes or add settings to +custom themes. + +.. + +.. bpo: 33642 +.. date: 2018-05-24-20-42-44 +.. nonce: J0VQbS +.. section: IDLE + +Display up to maxlines non-blank lines for Code Context. If there is no +current context, show a single blank line. + +.. + +.. bpo: 33628 +.. date: 2018-05-23-19-51-07 +.. nonce: sLlFLO +.. section: IDLE + +IDLE: Cleanup codecontext.py and its test. + +.. + +.. bpo: 33564 +.. date: 2018-05-17-19-41-12 +.. nonce: XzHZJe +.. section: IDLE + +IDLE's code context now recognizes async as a block opener. + +.. + +.. bpo: 29706 +.. date: 2018-05-15-17-01-10 +.. nonce: id4H5i +.. section: IDLE + +IDLE now colors async and await as keywords in 3.6. They become full +keywords in 3.7. + +.. + +.. bpo: 21474 +.. date: 2018-04-29-16-13-02 +.. nonce: bglg-F +.. section: IDLE + +Update word/identifier definition from ascii to unicode. In text and entry +boxes, this affects selection by double-click, movement left/right by +control-left/right, and deletion left/right by control-BACKSPACE/DEL. + +.. + +.. bpo: 33204 +.. date: 2018-04-02-00-28-13 +.. nonce: NBsuIv +.. section: IDLE + +IDLE: consistently color invalid string prefixes. A 'u' string prefix cannot +be paired with either 'r' or 'f'. Consistently color as much of the prefix, +starting at the right, as is valid. Revise and extend colorizer test. + +.. + +.. bpo: 32831 +.. date: 2018-02-12-08-08-45 +.. nonce: srDRvU +.. section: IDLE + +Add docstrings and tests for codecontext. + +.. + +.. bpo: 33189 +.. date: 2018-04-03-18-10-00 +.. nonce: QrXR00 +.. section: Tools/Demos + +:program:`pygettext.py` now recognizes only literal strings as docstrings +and translatable strings, and rejects bytes literals and f-string +expressions. + +.. + +.. bpo: 31920 +.. date: 2018-03-26-18-54-24 +.. nonce: u_WKsT +.. section: Tools/Demos + +Fixed handling directories as arguments in the ``pygettext`` script. Based +on patch by Oleg Krasnikov. + +.. + +.. bpo: 29673 +.. date: 2018-03-16-17-25-05 +.. nonce: m8QtaW +.. section: Tools/Demos + +Fix pystackv and pystack gdbinit macros. + +.. + +.. bpo: 32885 +.. date: 2018-02-20-12-16-47 +.. nonce: dL5x7C +.. section: Tools/Demos + +Add an ``-n`` flag for ``Tools/scripts/pathfix.py`` to disbale automatic +backup creation (files with ``~`` suffix). + +.. + +.. bpo: 31583 +.. date: 2017-09-26-10-11-21 +.. nonce: TM90_H +.. section: Tools/Demos + +Fix 2to3 for using with --add-suffix option but without --output-dir option +for relative path to files in current directory. + +.. + +.. bpo: 32374 +.. date: 2018-01-09-17-03-54 +.. nonce: SwwLoz +.. section: C API + +Document that m_traverse for multi-phase initialized modules can be called +with m_state=NULL, and add a sanity check diff --git a/Misc/NEWS.d/next/Build/2018-04-30-17-36-46.bpo-33394._Vdi4t.rst b/Misc/NEWS.d/next/Build/2018-04-30-17-36-46.bpo-33394._Vdi4t.rst deleted file mode 100644 index b25fbb02c4..0000000000 --- a/Misc/NEWS.d/next/Build/2018-04-30-17-36-46.bpo-33394._Vdi4t.rst +++ /dev/null @@ -1,2 +0,0 @@ -Enable the verbose build for extension modules, when GNU make is passed -macros on the command line. diff --git a/Misc/NEWS.d/next/Build/2018-05-10-21-10-01.bpo-33012.5Zfjac.rst b/Misc/NEWS.d/next/Build/2018-05-10-21-10-01.bpo-33012.5Zfjac.rst deleted file mode 100644 index ecaa5c6117..0000000000 --- a/Misc/NEWS.d/next/Build/2018-05-10-21-10-01.bpo-33012.5Zfjac.rst +++ /dev/null @@ -1,2 +0,0 @@ -Add ``-Wno-cast-function-type`` for gcc 8 for silencing warnings about -function casts like casting to PyCFunction in method definition lists. diff --git a/Misc/NEWS.d/next/Build/2018-05-15-12-44-50.bpo-33522.mJoNcA.rst b/Misc/NEWS.d/next/Build/2018-05-15-12-44-50.bpo-33522.mJoNcA.rst deleted file mode 100644 index f44862f0c4..0000000000 --- a/Misc/NEWS.d/next/Build/2018-05-15-12-44-50.bpo-33522.mJoNcA.rst +++ /dev/null @@ -1,2 +0,0 @@ -Enable CI builds on Visual Studio Team Services at -https://python.visualstudio.com/cpython diff --git a/Misc/NEWS.d/next/Build/2018-05-28-11-40-22.bpo-33614.28e0sE.rst b/Misc/NEWS.d/next/Build/2018-05-28-11-40-22.bpo-33614.28e0sE.rst deleted file mode 100644 index 9091c282ad..0000000000 --- a/Misc/NEWS.d/next/Build/2018-05-28-11-40-22.bpo-33614.28e0sE.rst +++ /dev/null @@ -1,2 +0,0 @@ -Ensures module definition files for the stable ABI on Windows are correctly -regenerated. diff --git a/Misc/NEWS.d/next/Build/2018-06-04-21-34-34.bpo-5755.65GmCj.rst b/Misc/NEWS.d/next/Build/2018-06-04-21-34-34.bpo-5755.65GmCj.rst deleted file mode 100644 index 8bcad4418b..0000000000 --- a/Misc/NEWS.d/next/Build/2018-06-04-21-34-34.bpo-5755.65GmCj.rst +++ /dev/null @@ -1,3 +0,0 @@ -Move ``-Wstrict-prototypes`` option to ``CFLAGS_NODIST`` from ``OPT``. This -option emitted annoying warnings when building extension modules written in -C++. diff --git a/Misc/NEWS.d/next/C API/2018-01-09-17-03-54.bpo-32374.SwwLoz.rst b/Misc/NEWS.d/next/C API/2018-01-09-17-03-54.bpo-32374.SwwLoz.rst deleted file mode 100644 index f9cf6d6b99..0000000000 --- a/Misc/NEWS.d/next/C API/2018-01-09-17-03-54.bpo-32374.SwwLoz.rst +++ /dev/null @@ -1,2 +0,0 @@ -Document that m_traverse for multi-phase initialized modules can be called -with m_state=NULL, and add a sanity check diff --git a/Misc/NEWS.d/next/Core and Builtins/2017-10-02-21-02-14.bpo-21983.UoC319.rst b/Misc/NEWS.d/next/Core and Builtins/2017-10-02-21-02-14.bpo-21983.UoC319.rst deleted file mode 100644 index 88a0368507..0000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2017-10-02-21-02-14.bpo-21983.UoC319.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix a crash in `ctypes.cast()` in case the type argument is a ctypes -structured data type. Patch by Eryk Sun and Oren Milman. diff --git a/Misc/NEWS.d/next/Core and Builtins/2017-12-12-14-02-28.bpo-32282.xFVMTn.rst b/Misc/NEWS.d/next/Core and Builtins/2017-12-12-14-02-28.bpo-32282.xFVMTn.rst deleted file mode 100644 index 1c833c5439..0000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2017-12-12-14-02-28.bpo-32282.xFVMTn.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix an unnecessary ifdef in the include of VersionHelpers.h in socketmodule -on Windows. diff --git a/Misc/NEWS.d/next/Core and Builtins/2018-03-18-13-56-14.bpo-33041.XwPhI2.rst b/Misc/NEWS.d/next/Core and Builtins/2018-03-18-13-56-14.bpo-33041.XwPhI2.rst deleted file mode 100644 index 97b5e2ef1e..0000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2018-03-18-13-56-14.bpo-33041.XwPhI2.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed jumping when the function contains an ``async for`` loop. diff --git a/Misc/NEWS.d/next/Core and Builtins/2018-04-02-09-32-40.bpo-33199.TPnxQu.rst b/Misc/NEWS.d/next/Core and Builtins/2018-04-02-09-32-40.bpo-33199.TPnxQu.rst deleted file mode 100644 index 22abf8d000..0000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2018-04-02-09-32-40.bpo-33199.TPnxQu.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix ``ma_version_tag`` in dict implementation is uninitialized when copying -from key-sharing dict. diff --git a/Misc/NEWS.d/next/Core and Builtins/2018-04-03-00-30-25.bpo-29922.CdLuMl.rst b/Misc/NEWS.d/next/Core and Builtins/2018-04-03-00-30-25.bpo-29922.CdLuMl.rst deleted file mode 100644 index d8c144e59d..0000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2018-04-03-00-30-25.bpo-29922.CdLuMl.rst +++ /dev/null @@ -1,2 +0,0 @@ -Improved error messages in 'async with' when ``__aenter__()`` or -``__aexit__()`` return non-awaitable object. diff --git a/Misc/NEWS.d/next/Core and Builtins/2018-04-05-22-20-44.bpo-33231.3Jmo0q.rst b/Misc/NEWS.d/next/Core and Builtins/2018-04-05-22-20-44.bpo-33231.3Jmo0q.rst deleted file mode 100644 index de54fbb526..0000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2018-04-05-22-20-44.bpo-33231.3Jmo0q.rst +++ /dev/null @@ -1 +0,0 @@ -Fix potential memory leak in ``normalizestring()``. diff --git a/Misc/NEWS.d/next/Core and Builtins/2018-04-25-20-44-42.bpo-28055.f49kfC.rst b/Misc/NEWS.d/next/Core and Builtins/2018-04-25-20-44-42.bpo-28055.f49kfC.rst deleted file mode 100644 index c7d849906f..0000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2018-04-25-20-44-42.bpo-28055.f49kfC.rst +++ /dev/null @@ -1 +0,0 @@ -Fix unaligned accesses in siphash24(). Patch by Rolf Eike Beer. diff --git a/Misc/NEWS.d/next/Core and Builtins/2018-05-02-08-36-03.bpo-33391.z4a7rb.rst b/Misc/NEWS.d/next/Core and Builtins/2018-05-02-08-36-03.bpo-33391.z4a7rb.rst deleted file mode 100644 index ab17aa408c..0000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2018-05-02-08-36-03.bpo-33391.z4a7rb.rst +++ /dev/null @@ -1 +0,0 @@ -Fix a leak in set_symmetric_difference(). diff --git a/Misc/NEWS.d/next/Core and Builtins/2018-05-14-11-00-00.bpo-31849.EmHaH4.rst b/Misc/NEWS.d/next/Core and Builtins/2018-05-14-11-00-00.bpo-31849.EmHaH4.rst deleted file mode 100644 index 876a3cf0aa..0000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2018-05-14-11-00-00.bpo-31849.EmHaH4.rst +++ /dev/null @@ -1 +0,0 @@ -Fix signed/unsigned comparison warning in pyhash.c. diff --git a/Misc/NEWS.d/next/Core and Builtins/2018-05-23-20-46-14.bpo-33622.xPucO9.rst b/Misc/NEWS.d/next/Core and Builtins/2018-05-23-20-46-14.bpo-33622.xPucO9.rst deleted file mode 100644 index e589b45032..0000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2018-05-23-20-46-14.bpo-33622.xPucO9.rst +++ /dev/null @@ -1,4 +0,0 @@ -Fixed a leak when the garbage collector fails to add an object with the -``__del__`` method or referenced by it into the :data:`gc.garbage` list. -:c:func:`PyGC_Collect` can now be called when an exception is set and -preserves it. diff --git a/Misc/NEWS.d/next/Core and Builtins/2018-05-28-12-28-53.bpo-30654.9fDJye.rst b/Misc/NEWS.d/next/Core and Builtins/2018-05-28-12-28-53.bpo-30654.9fDJye.rst deleted file mode 100644 index 01c27daa8f..0000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2018-05-28-12-28-53.bpo-30654.9fDJye.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fixed reset of the SIGINT handler to SIG_DFL on interpreter shutdown even -when there was a custom handler set previously. Patch by Philipp Kerling. diff --git a/Misc/NEWS.d/next/Core and Builtins/2018-06-06-23-24-40.bpo-33786.lBvT8z.rst b/Misc/NEWS.d/next/Core and Builtins/2018-06-06-23-24-40.bpo-33786.lBvT8z.rst deleted file mode 100644 index 57deefe339..0000000000 --- a/Misc/NEWS.d/next/Core and Builtins/2018-06-06-23-24-40.bpo-33786.lBvT8z.rst +++ /dev/null @@ -1 +0,0 @@ -Fix asynchronous generators to handle GeneratorExit in athrow() correctly diff --git a/Misc/NEWS.d/next/Documentation/2017-09-13-07-14-59.bpo-31432.yAY4Z3.rst b/Misc/NEWS.d/next/Documentation/2017-09-13-07-14-59.bpo-31432.yAY4Z3.rst deleted file mode 100644 index 18e5353b24..0000000000 --- a/Misc/NEWS.d/next/Documentation/2017-09-13-07-14-59.bpo-31432.yAY4Z3.rst +++ /dev/null @@ -1,2 +0,0 @@ -Clarify meaning of CERT_NONE, CERT_OPTIONAL, and CERT_REQUIRED flags for -ssl.SSLContext.verify_mode. diff --git a/Misc/NEWS.d/next/Documentation/2018-01-13-20-30-53.bpo-8243.s98r28.rst b/Misc/NEWS.d/next/Documentation/2018-01-13-20-30-53.bpo-8243.s98r28.rst deleted file mode 100644 index a3520d05c0..0000000000 --- a/Misc/NEWS.d/next/Documentation/2018-01-13-20-30-53.bpo-8243.s98r28.rst +++ /dev/null @@ -1,2 +0,0 @@ -Add a note about curses.addch and curses.addstr exception behavior when -writing outside a window, or pad. diff --git a/Misc/NEWS.d/next/Documentation/2018-03-11-00-16-56.bpo-27428.B7A8FT.rst b/Misc/NEWS.d/next/Documentation/2018-03-11-00-16-56.bpo-27428.B7A8FT.rst deleted file mode 100644 index c9ac8e22df..0000000000 --- a/Misc/NEWS.d/next/Documentation/2018-03-11-00-16-56.bpo-27428.B7A8FT.rst +++ /dev/null @@ -1,2 +0,0 @@ -Update documentation to clarify that ``WindowsRegistryFinder`` implements -``MetaPathFinder``. (Patch by Himanshu Lakhara) diff --git a/Misc/NEWS.d/next/Documentation/2018-03-11-18-53-47.bpo-18802.JhAqH3.rst b/Misc/NEWS.d/next/Documentation/2018-03-11-18-53-47.bpo-18802.JhAqH3.rst deleted file mode 100644 index cb9cc2599a..0000000000 --- a/Misc/NEWS.d/next/Documentation/2018-03-11-18-53-47.bpo-18802.JhAqH3.rst +++ /dev/null @@ -1 +0,0 @@ -Documentation changes for ipaddress. Patch by Jon Foster and Berker Peksag. diff --git a/Misc/NEWS.d/next/Documentation/2018-03-20-20-11-05.bpo-28247.-V-WS-.rst b/Misc/NEWS.d/next/Documentation/2018-03-20-20-11-05.bpo-28247.-V-WS-.rst deleted file mode 100644 index 28a802136f..0000000000 --- a/Misc/NEWS.d/next/Documentation/2018-03-20-20-11-05.bpo-28247.-V-WS-.rst +++ /dev/null @@ -1,2 +0,0 @@ -Update :mod:`zipapp` documentation to describe how to make standalone -applications. diff --git a/Misc/NEWS.d/next/Documentation/2018-03-22-19-23-04.bpo-27212.wrE5KR.rst b/Misc/NEWS.d/next/Documentation/2018-03-22-19-23-04.bpo-27212.wrE5KR.rst deleted file mode 100644 index 5910d2c173..0000000000 --- a/Misc/NEWS.d/next/Documentation/2018-03-22-19-23-04.bpo-27212.wrE5KR.rst +++ /dev/null @@ -1,2 +0,0 @@ -Modify documentation for the :func:`islice` recipe to consume initial values -up to the start index. diff --git a/Misc/NEWS.d/next/Documentation/2018-03-28-17-03-17.bpo-33126.5UGkNv.rst b/Misc/NEWS.d/next/Documentation/2018-03-28-17-03-17.bpo-33126.5UGkNv.rst deleted file mode 100644 index 1219790e79..0000000000 --- a/Misc/NEWS.d/next/Documentation/2018-03-28-17-03-17.bpo-33126.5UGkNv.rst +++ /dev/null @@ -1 +0,0 @@ -Document PyBuffer_ToContiguous(). diff --git a/Misc/NEWS.d/next/Documentation/2018-04-01-14-30-36.bpo-33195.dRS-XX.rst b/Misc/NEWS.d/next/Documentation/2018-04-01-14-30-36.bpo-33195.dRS-XX.rst deleted file mode 100644 index 6884640325..0000000000 --- a/Misc/NEWS.d/next/Documentation/2018-04-01-14-30-36.bpo-33195.dRS-XX.rst +++ /dev/null @@ -1,3 +0,0 @@ -Deprecate ``Py_UNICODE`` usage in ``c-api/arg`` document. ``Py_UNICODE`` -related APIs are deprecated since Python 3.3, but it is missed in the -document. diff --git a/Misc/NEWS.d/next/Documentation/2018-04-01-21-03-41.bpo-33201.aa8Lkl.rst b/Misc/NEWS.d/next/Documentation/2018-04-01-21-03-41.bpo-33201.aa8Lkl.rst deleted file mode 100644 index bdee48ba03..0000000000 --- a/Misc/NEWS.d/next/Documentation/2018-04-01-21-03-41.bpo-33201.aa8Lkl.rst +++ /dev/null @@ -1 +0,0 @@ -Modernize documentation for writing C extension types. diff --git a/Misc/NEWS.d/next/Documentation/2018-04-20-14-09-36.bpo-33276.rA1z_3.rst b/Misc/NEWS.d/next/Documentation/2018-04-20-14-09-36.bpo-33276.rA1z_3.rst deleted file mode 100644 index 0da58a0ce4..0000000000 --- a/Misc/NEWS.d/next/Documentation/2018-04-20-14-09-36.bpo-33276.rA1z_3.rst +++ /dev/null @@ -1 +0,0 @@ -Clarify that the ``__path__`` attribute on modules cannot be just any value. diff --git a/Misc/NEWS.d/next/Documentation/2018-04-29-04-02-18.bpo-33378.-anAHN.rst b/Misc/NEWS.d/next/Documentation/2018-04-29-04-02-18.bpo-33378.-anAHN.rst deleted file mode 100644 index 43214d10b7..0000000000 --- a/Misc/NEWS.d/next/Documentation/2018-04-29-04-02-18.bpo-33378.-anAHN.rst +++ /dev/null @@ -1 +0,0 @@ -Add Korean language switcher for https://docs.python.org/3/ diff --git a/Misc/NEWS.d/next/Documentation/2018-05-14-15-23-51.bpo-33421.3GU_QO.rst b/Misc/NEWS.d/next/Documentation/2018-05-14-15-23-51.bpo-33421.3GU_QO.rst deleted file mode 100644 index 75694b7be1..0000000000 --- a/Misc/NEWS.d/next/Documentation/2018-05-14-15-23-51.bpo-33421.3GU_QO.rst +++ /dev/null @@ -1 +0,0 @@ -Add missing documentation for ``typing.AsyncContextManager``. diff --git a/Misc/NEWS.d/next/Documentation/2018-05-14-20-08-58.bpo-33503.Wvt0qg.rst b/Misc/NEWS.d/next/Documentation/2018-05-14-20-08-58.bpo-33503.Wvt0qg.rst deleted file mode 100644 index 27025c31a0..0000000000 --- a/Misc/NEWS.d/next/Documentation/2018-05-14-20-08-58.bpo-33503.Wvt0qg.rst +++ /dev/null @@ -1 +0,0 @@ -Fix broken pypi link diff --git a/Misc/NEWS.d/next/IDLE/2018-02-12-08-08-45.bpo-32831.srDRvU.rst b/Misc/NEWS.d/next/IDLE/2018-02-12-08-08-45.bpo-32831.srDRvU.rst deleted file mode 100644 index 583e341f94..0000000000 --- a/Misc/NEWS.d/next/IDLE/2018-02-12-08-08-45.bpo-32831.srDRvU.rst +++ /dev/null @@ -1 +0,0 @@ -Add docstrings and tests for codecontext. diff --git a/Misc/NEWS.d/next/IDLE/2018-04-02-00-28-13.bpo-33204.NBsuIv.rst b/Misc/NEWS.d/next/IDLE/2018-04-02-00-28-13.bpo-33204.NBsuIv.rst deleted file mode 100644 index 3ae937bab9..0000000000 --- a/Misc/NEWS.d/next/IDLE/2018-04-02-00-28-13.bpo-33204.NBsuIv.rst +++ /dev/null @@ -1,3 +0,0 @@ -IDLE: consistently color invalid string prefixes. A 'u' string prefix cannot -be paired with either 'r' or 'f'. Consistently color as much of the prefix, -starting at the right, as is valid. Revise and extend colorizer test. diff --git a/Misc/NEWS.d/next/IDLE/2018-04-29-16-13-02.bpo-21474.bglg-F.rst b/Misc/NEWS.d/next/IDLE/2018-04-29-16-13-02.bpo-21474.bglg-F.rst deleted file mode 100644 index caf640b73b..0000000000 --- a/Misc/NEWS.d/next/IDLE/2018-04-29-16-13-02.bpo-21474.bglg-F.rst +++ /dev/null @@ -1,3 +0,0 @@ -Update word/identifier definition from ascii to unicode. In text and entry -boxes, this affects selection by double-click, movement left/right by -control-left/right, and deletion left/right by control-BACKSPACE/DEL. diff --git a/Misc/NEWS.d/next/IDLE/2018-05-15-17-01-10.bpo-29706.id4H5i.rst b/Misc/NEWS.d/next/IDLE/2018-05-15-17-01-10.bpo-29706.id4H5i.rst deleted file mode 100644 index b25a878b15..0000000000 --- a/Misc/NEWS.d/next/IDLE/2018-05-15-17-01-10.bpo-29706.id4H5i.rst +++ /dev/null @@ -1,2 +0,0 @@ -IDLE now colors async and await as keywords in 3.6. They become full -keywords in 3.7. diff --git a/Misc/NEWS.d/next/IDLE/2018-05-17-19-41-12.bpo-33564.XzHZJe.rst b/Misc/NEWS.d/next/IDLE/2018-05-17-19-41-12.bpo-33564.XzHZJe.rst deleted file mode 100644 index df828485f6..0000000000 --- a/Misc/NEWS.d/next/IDLE/2018-05-17-19-41-12.bpo-33564.XzHZJe.rst +++ /dev/null @@ -1 +0,0 @@ -IDLE's code context now recognizes async as a block opener. diff --git a/Misc/NEWS.d/next/IDLE/2018-05-23-19-51-07.bpo-33628.sLlFLO.rst b/Misc/NEWS.d/next/IDLE/2018-05-23-19-51-07.bpo-33628.sLlFLO.rst deleted file mode 100644 index f0b13a21c3..0000000000 --- a/Misc/NEWS.d/next/IDLE/2018-05-23-19-51-07.bpo-33628.sLlFLO.rst +++ /dev/null @@ -1,2 +0,0 @@ -IDLE: Cleanup codecontext.py and its test. - diff --git a/Misc/NEWS.d/next/IDLE/2018-05-24-20-42-44.bpo-33642.J0VQbS.rst b/Misc/NEWS.d/next/IDLE/2018-05-24-20-42-44.bpo-33642.J0VQbS.rst deleted file mode 100644 index b1d0763a8a..0000000000 --- a/Misc/NEWS.d/next/IDLE/2018-05-24-20-42-44.bpo-33642.J0VQbS.rst +++ /dev/null @@ -1,2 +0,0 @@ -Display up to maxlines non-blank lines for Code Context. -If there is no current context, show a single blank line. diff --git a/Misc/NEWS.d/next/IDLE/2018-05-29-07-14-37.bpo-33679.MgX_Ui.rst b/Misc/NEWS.d/next/IDLE/2018-05-29-07-14-37.bpo-33679.MgX_Ui.rst deleted file mode 100644 index 2d52fa8649..0000000000 --- a/Misc/NEWS.d/next/IDLE/2018-05-29-07-14-37.bpo-33679.MgX_Ui.rst +++ /dev/null @@ -1,3 +0,0 @@ -Enable theme-specific color configuration for Code Context. -Use the Highlights tab to see the setting for built-in themes -or add settings to custom themes. diff --git a/Misc/NEWS.d/next/IDLE/2018-06-03-09-13-28.bpo-33664.PZzQyL.rst b/Misc/NEWS.d/next/IDLE/2018-06-03-09-13-28.bpo-33664.PZzQyL.rst deleted file mode 100644 index 48f602f641..0000000000 --- a/Misc/NEWS.d/next/IDLE/2018-06-03-09-13-28.bpo-33664.PZzQyL.rst +++ /dev/null @@ -1,5 +0,0 @@ -Scroll IDLE editor text by lines. -Previously, the mouse wheel and scrollbar slider moved text by a fixed -number of pixels, resulting in partial lines at the top of the editor -box. The change also applies to the shell and grep output windows, -but not to read-only text views. diff --git a/Misc/NEWS.d/next/IDLE/2018-06-03-20-12-57.bpo-33763.URiFlE.rst b/Misc/NEWS.d/next/IDLE/2018-06-03-20-12-57.bpo-33763.URiFlE.rst deleted file mode 100644 index 187ef650cb..0000000000 --- a/Misc/NEWS.d/next/IDLE/2018-06-03-20-12-57.bpo-33763.URiFlE.rst +++ /dev/null @@ -1 +0,0 @@ -IDLE: Use read-only text widget for code context instead of label widget. diff --git a/Misc/NEWS.d/next/IDLE/2018-06-04-19-23-11.bpo-33768.I_2qpV.rst b/Misc/NEWS.d/next/IDLE/2018-06-04-19-23-11.bpo-33768.I_2qpV.rst deleted file mode 100644 index 689aede15a..0000000000 --- a/Misc/NEWS.d/next/IDLE/2018-06-04-19-23-11.bpo-33768.I_2qpV.rst +++ /dev/null @@ -1 +0,0 @@ -Clicking on a context line moves that line to the top of the editor window. diff --git a/Misc/NEWS.d/next/IDLE/2018-06-10-17-59-36.bpo-33656.60ZqJS.rst b/Misc/NEWS.d/next/IDLE/2018-06-10-17-59-36.bpo-33656.60ZqJS.rst deleted file mode 100644 index e0c51b2c0f..0000000000 --- a/Misc/NEWS.d/next/IDLE/2018-06-10-17-59-36.bpo-33656.60ZqJS.rst +++ /dev/null @@ -1,4 +0,0 @@ -On Windows, add API call saying that tk scales for DPI. On Windows -8.1+ or 10, with DPI compatibility properties of the Python binary -unchanged, and a monitor resolution greater than 96 DPI, this should -make text and lines sharper. It should otherwise have no effect. diff --git a/Misc/NEWS.d/next/Library/2017-08-21-12-31-53.bpo-31238.Gg0LRH.rst b/Misc/NEWS.d/next/Library/2017-08-21-12-31-53.bpo-31238.Gg0LRH.rst deleted file mode 100644 index 3e1cd13010..0000000000 --- a/Misc/NEWS.d/next/Library/2017-08-21-12-31-53.bpo-31238.Gg0LRH.rst +++ /dev/null @@ -1,3 +0,0 @@ -pydoc: the stop() method of the private ServerThread class now waits until -DocServer.serve_until_quit() completes and then explicitly sets its -docserver attribute to None to break a reference cycle. diff --git a/Misc/NEWS.d/next/Library/2017-09-29-16-40-38.bpo-16865.l-f6I_.rst b/Misc/NEWS.d/next/Library/2017-09-29-16-40-38.bpo-16865.l-f6I_.rst deleted file mode 100644 index afaff736bf..0000000000 --- a/Misc/NEWS.d/next/Library/2017-09-29-16-40-38.bpo-16865.l-f6I_.rst +++ /dev/null @@ -1 +0,0 @@ -Support arrays >=2GiB in :mod:`ctypes`. Patch by Segev Finer. diff --git a/Misc/NEWS.d/next/Library/2017-10-18-19-05-17.bpo-31457.KlE6r8.rst b/Misc/NEWS.d/next/Library/2017-10-18-19-05-17.bpo-31457.KlE6r8.rst deleted file mode 100644 index 49463c4fd1..0000000000 --- a/Misc/NEWS.d/next/Library/2017-10-18-19-05-17.bpo-31457.KlE6r8.rst +++ /dev/null @@ -1,2 +0,0 @@ -If nested log adapters are used, the inner ``process()`` methods are no -longer omitted. diff --git a/Misc/NEWS.d/next/Library/2017-10-31.bpo-31908.g4xh8x.rst b/Misc/NEWS.d/next/Library/2017-10-31.bpo-31908.g4xh8x.rst deleted file mode 100644 index 700bc69076..0000000000 --- a/Misc/NEWS.d/next/Library/2017-10-31.bpo-31908.g4xh8x.rst +++ /dev/null @@ -1,3 +0,0 @@ -Fix output of cover files for ``trace`` module command-line tool. -Previously emitted cover files only when ``--missing`` option was used. -Patch by Michael Selik. \ No newline at end of file diff --git a/Misc/NEWS.d/next/Library/2018-02-28-13-08-00.bpo-32844.u8tnAe.rst b/Misc/NEWS.d/next/Library/2018-02-28-13-08-00.bpo-32844.u8tnAe.rst deleted file mode 100644 index 67412fe5ba..0000000000 --- a/Misc/NEWS.d/next/Library/2018-02-28-13-08-00.bpo-32844.u8tnAe.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix wrong redirection of a low descriptor (0 or 1) to stderr in subprocess -if another low descriptor is closed. diff --git a/Misc/NEWS.d/next/Library/2018-03-07-22-28-17.bpo-27683.572Rv4.rst b/Misc/NEWS.d/next/Library/2018-03-07-22-28-17.bpo-27683.572Rv4.rst deleted file mode 100644 index 4e6dfa8e97..0000000000 --- a/Misc/NEWS.d/next/Library/2018-03-07-22-28-17.bpo-27683.572Rv4.rst +++ /dev/null @@ -1,3 +0,0 @@ -Fix a regression in :mod:`ipaddress` that result of :meth:`hosts` -is empty when the network is constructed by a tuple containing an -integer mask and only 1 bit left for addresses. diff --git a/Misc/NEWS.d/next/Library/2018-03-12-00-27-56.bpo-33021.m19B9T.rst b/Misc/NEWS.d/next/Library/2018-03-12-00-27-56.bpo-33021.m19B9T.rst deleted file mode 100644 index 50dfafe600..0000000000 --- a/Misc/NEWS.d/next/Library/2018-03-12-00-27-56.bpo-33021.m19B9T.rst +++ /dev/null @@ -1,2 +0,0 @@ -Release the GIL during fstat() calls, avoiding hang of all threads when -calling mmap.mmap(), os.urandom(), and random.seed(). Patch by Nir Soffer. diff --git a/Misc/NEWS.d/next/Library/2018-03-24-15-08-24.bpo-33127.olJmHv.rst b/Misc/NEWS.d/next/Library/2018-03-24-15-08-24.bpo-33127.olJmHv.rst deleted file mode 100644 index 635aabbde0..0000000000 --- a/Misc/NEWS.d/next/Library/2018-03-24-15-08-24.bpo-33127.olJmHv.rst +++ /dev/null @@ -1 +0,0 @@ -The ssl module now compiles with LibreSSL 2.7.1. diff --git a/Misc/NEWS.d/next/Library/2018-03-25-13-18-16.bpo-33096.ofdbe7.rst b/Misc/NEWS.d/next/Library/2018-03-25-13-18-16.bpo-33096.ofdbe7.rst deleted file mode 100644 index c55ea20b33..0000000000 --- a/Misc/NEWS.d/next/Library/2018-03-25-13-18-16.bpo-33096.ofdbe7.rst +++ /dev/null @@ -1,4 +0,0 @@ -Allow ttk.Treeview.insert to insert iid that has a false boolean value. -Note iid=0 and iid=False would be same. -Patch by Garvit Khatri. - diff --git a/Misc/NEWS.d/next/Library/2018-04-02-20-44-54.bpo-32861.HeBjzN.rst b/Misc/NEWS.d/next/Library/2018-04-02-20-44-54.bpo-32861.HeBjzN.rst deleted file mode 100644 index 13defbb03c..0000000000 --- a/Misc/NEWS.d/next/Library/2018-04-02-20-44-54.bpo-32861.HeBjzN.rst +++ /dev/null @@ -1,3 +0,0 @@ -The urllib.robotparser's ``__str__`` representation now includes wildcard -entries and the "Crawl-delay" and "Request-rate" fields. Patch by -Michael Lazar. diff --git a/Misc/NEWS.d/next/Library/2018-04-03-10-37-13.bpo-33209.9sGWE_.rst b/Misc/NEWS.d/next/Library/2018-04-03-10-37-13.bpo-33209.9sGWE_.rst deleted file mode 100644 index d98b1e174e..0000000000 --- a/Misc/NEWS.d/next/Library/2018-04-03-10-37-13.bpo-33209.9sGWE_.rst +++ /dev/null @@ -1 +0,0 @@ -End framing at the end of C implementation of :func:`pickle.Pickler.dump`. diff --git a/Misc/NEWS.d/next/Library/2018-04-04-23-41-30.bpo-33224.pyR0jB.rst b/Misc/NEWS.d/next/Library/2018-04-04-23-41-30.bpo-33224.pyR0jB.rst deleted file mode 100644 index 87ff100da4..0000000000 --- a/Misc/NEWS.d/next/Library/2018-04-04-23-41-30.bpo-33224.pyR0jB.rst +++ /dev/null @@ -1,2 +0,0 @@ -Update difflib.mdiff() for PEP 479. Convert an uncaught StopIteration in a -generator into a return-statement. diff --git a/Misc/NEWS.d/next/Library/2018-04-05-11-09-45.bpo-33203.Hje9Py.rst b/Misc/NEWS.d/next/Library/2018-04-05-11-09-45.bpo-33203.Hje9Py.rst deleted file mode 100644 index ab6d17b5d1..0000000000 --- a/Misc/NEWS.d/next/Library/2018-04-05-11-09-45.bpo-33203.Hje9Py.rst +++ /dev/null @@ -1,3 +0,0 @@ -``random.Random.choice()`` now raises ``IndexError`` for empty sequences -consistently even when called from subclasses without a ``getrandbits()`` -implementation. diff --git a/Misc/NEWS.d/next/Library/2018-04-10-20-57-14.bpo-33256.ndHkqu.rst b/Misc/NEWS.d/next/Library/2018-04-10-20-57-14.bpo-33256.ndHkqu.rst deleted file mode 100644 index a0605c04b4..0000000000 --- a/Misc/NEWS.d/next/Library/2018-04-10-20-57-14.bpo-33256.ndHkqu.rst +++ /dev/null @@ -1 +0,0 @@ -Fix display of ```` call in the html produced by ``cgitb.html()``. Patch by Stéphane Blondon. diff --git a/Misc/NEWS.d/next/Library/2018-04-11-20-29-19.bpo-33263.B56Hc1.rst b/Misc/NEWS.d/next/Library/2018-04-11-20-29-19.bpo-33263.B56Hc1.rst deleted file mode 100644 index 77994f6a59..0000000000 --- a/Misc/NEWS.d/next/Library/2018-04-11-20-29-19.bpo-33263.B56Hc1.rst +++ /dev/null @@ -1 +0,0 @@ -Fix FD leak in `_SelectorSocketTransport` Patch by Vlad Starostin. diff --git a/Misc/NEWS.d/next/Library/2018-04-18-19-12-25.bpo-33308.fW75xi.rst b/Misc/NEWS.d/next/Library/2018-04-18-19-12-25.bpo-33308.fW75xi.rst deleted file mode 100644 index 586004a3c6..0000000000 --- a/Misc/NEWS.d/next/Library/2018-04-18-19-12-25.bpo-33308.fW75xi.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fixed a crash in the :mod:`parser` module when converting an ST object to a -tree of tuples or lists with ``line_info=False`` and ``col_info=True``. diff --git a/Misc/NEWS.d/next/Library/2018-04-20-10-43-17.bpo-33131.L2E977.rst b/Misc/NEWS.d/next/Library/2018-04-20-10-43-17.bpo-33131.L2E977.rst deleted file mode 100644 index 875c6ac5f7..0000000000 --- a/Misc/NEWS.d/next/Library/2018-04-20-10-43-17.bpo-33131.L2E977.rst +++ /dev/null @@ -1 +0,0 @@ -Upgrade bundled version of pip to 10.0.1. diff --git a/Misc/NEWS.d/next/Library/2018-04-21-00-24-08.bpo-991266.h93TP_.rst b/Misc/NEWS.d/next/Library/2018-04-21-00-24-08.bpo-991266.h93TP_.rst deleted file mode 100644 index 3af6c27cf2..0000000000 --- a/Misc/NEWS.d/next/Library/2018-04-21-00-24-08.bpo-991266.h93TP_.rst +++ /dev/null @@ -1 +0,0 @@ -Fix quoting of the ``Comment`` attribute of :class:`http.cookies.SimpleCookie`. diff --git a/Misc/NEWS.d/next/Library/2018-04-23-13-21-39.bpo-33329.lQ-Eod.rst b/Misc/NEWS.d/next/Library/2018-04-23-13-21-39.bpo-33329.lQ-Eod.rst deleted file mode 100644 index d1a4e56d04..0000000000 --- a/Misc/NEWS.d/next/Library/2018-04-23-13-21-39.bpo-33329.lQ-Eod.rst +++ /dev/null @@ -1 +0,0 @@ -Fix multiprocessing regression on newer glibcs diff --git a/Misc/NEWS.d/next/Library/2018-04-29-11-15-38.bpo-33383.g32YWn.rst b/Misc/NEWS.d/next/Library/2018-04-29-11-15-38.bpo-33383.g32YWn.rst deleted file mode 100644 index 7b65baac97..0000000000 --- a/Misc/NEWS.d/next/Library/2018-04-29-11-15-38.bpo-33383.g32YWn.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fixed crash in the get() method of the :mod:`dbm.ndbm` database object when -it is called with a single argument. diff --git a/Misc/NEWS.d/next/Library/2018-04-29-23-56-20.bpo-33197.dgRLqr.rst b/Misc/NEWS.d/next/Library/2018-04-29-23-56-20.bpo-33197.dgRLqr.rst deleted file mode 100644 index 1bbb44b2fc..0000000000 --- a/Misc/NEWS.d/next/Library/2018-04-29-23-56-20.bpo-33197.dgRLqr.rst +++ /dev/null @@ -1,2 +0,0 @@ -Update error message when constructing invalid inspect.Parameters -Patch by Dong-hee Na. diff --git a/Misc/NEWS.d/next/Library/2018-05-05-09-53-05.bpo-33422.4FtQ0q.rst b/Misc/NEWS.d/next/Library/2018-05-05-09-53-05.bpo-33422.4FtQ0q.rst deleted file mode 100644 index 0d284d508f..0000000000 --- a/Misc/NEWS.d/next/Library/2018-05-05-09-53-05.bpo-33422.4FtQ0q.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix trailing quotation marks getting deleted when looking up byte/string -literals on pydoc. Patch by Andrés Delfino. diff --git a/Misc/NEWS.d/next/Library/2018-05-05-18-02-24.bpo-20087.lJrvXL.rst b/Misc/NEWS.d/next/Library/2018-05-05-18-02-24.bpo-20087.lJrvXL.rst deleted file mode 100644 index 2342cb7819..0000000000 --- a/Misc/NEWS.d/next/Library/2018-05-05-18-02-24.bpo-20087.lJrvXL.rst +++ /dev/null @@ -1 +0,0 @@ -Updated alias mapping with glibc 2.27 supported locales. diff --git a/Misc/NEWS.d/next/Library/2018-05-10-14-51-19.bpo-28556.y3zK6I.rst b/Misc/NEWS.d/next/Library/2018-05-10-14-51-19.bpo-28556.y3zK6I.rst deleted file mode 100644 index 8ed4658211..0000000000 --- a/Misc/NEWS.d/next/Library/2018-05-10-14-51-19.bpo-28556.y3zK6I.rst +++ /dev/null @@ -1,3 +0,0 @@ -Minor fixes in typing module: add annotations to ``NamedTuple.__new__``, -pass ``*args`` and ``**kwds`` in ``Generic.__new__``. Original PRs by -Paulius Šarka and Chad Dombrova. diff --git a/Misc/NEWS.d/next/Library/2018-05-16-05-24-43.bpo-26819.taxbVT.rst b/Misc/NEWS.d/next/Library/2018-05-16-05-24-43.bpo-26819.taxbVT.rst deleted file mode 100644 index d407a58003..0000000000 --- a/Misc/NEWS.d/next/Library/2018-05-16-05-24-43.bpo-26819.taxbVT.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix race condition with `ReadTransport.resume_reading` in Windows proactor -event loop. diff --git a/Misc/NEWS.d/next/Library/2018-05-16-09-30-27.bpo-33542.idNAcs.rst b/Misc/NEWS.d/next/Library/2018-05-16-09-30-27.bpo-33542.idNAcs.rst deleted file mode 100644 index 16ba799131..0000000000 --- a/Misc/NEWS.d/next/Library/2018-05-16-09-30-27.bpo-33542.idNAcs.rst +++ /dev/null @@ -1,2 +0,0 @@ -Prevent ``uuid.get_node`` from using a DUID instead of a MAC on Windows. -Patch by Zvi Effron diff --git a/Misc/NEWS.d/next/Library/2018-05-16-17-05-48.bpo-33548.xWslmx.rst b/Misc/NEWS.d/next/Library/2018-05-16-17-05-48.bpo-33548.xWslmx.rst deleted file mode 100644 index 65585c1529..0000000000 --- a/Misc/NEWS.d/next/Library/2018-05-16-17-05-48.bpo-33548.xWslmx.rst +++ /dev/null @@ -1 +0,0 @@ -tempfile._candidate_tempdir_list should consider common TEMP locations diff --git a/Misc/NEWS.d/next/Library/2018-05-22-13-05-12.bpo-30877.JZEGjI.rst b/Misc/NEWS.d/next/Library/2018-05-22-13-05-12.bpo-30877.JZEGjI.rst deleted file mode 100644 index 4be0fae4ec..0000000000 --- a/Misc/NEWS.d/next/Library/2018-05-22-13-05-12.bpo-30877.JZEGjI.rst +++ /dev/null @@ -1,3 +0,0 @@ -Fixed a bug in the Python implementation of the JSON decoder that prevented -the cache of parsed strings from clearing after finishing the decoding. -Based on patch by c-fos. diff --git a/Misc/NEWS.d/next/Library/2018-05-23-00-26-27.bpo-11874.glK5iP.rst b/Misc/NEWS.d/next/Library/2018-05-23-00-26-27.bpo-11874.glK5iP.rst deleted file mode 100644 index 6c75f142c4..0000000000 --- a/Misc/NEWS.d/next/Library/2018-05-23-00-26-27.bpo-11874.glK5iP.rst +++ /dev/null @@ -1,2 +0,0 @@ -Use a better regex when breaking usage into wrappable parts. Avoids bogus -assertion errors from custom metavar strings. diff --git a/Misc/NEWS.d/next/Library/2018-05-28-15-55-12.bpo-33469.hmXBpY.rst b/Misc/NEWS.d/next/Library/2018-05-28-15-55-12.bpo-33469.hmXBpY.rst deleted file mode 100644 index cc1b2e436f..0000000000 --- a/Misc/NEWS.d/next/Library/2018-05-28-15-55-12.bpo-33469.hmXBpY.rst +++ /dev/null @@ -1 +0,0 @@ -Fix RuntimeError after closing loop that used run_in_executor diff --git a/Misc/NEWS.d/next/Library/2018-05-28-17-45-06.bpo-33672.GM_Xm_.rst b/Misc/NEWS.d/next/Library/2018-05-28-17-45-06.bpo-33672.GM_Xm_.rst deleted file mode 100644 index 36373c0286..0000000000 --- a/Misc/NEWS.d/next/Library/2018-05-28-17-45-06.bpo-33672.GM_Xm_.rst +++ /dev/null @@ -1 +0,0 @@ -Fix Task.__repr__ crash with Cython's bogus coroutines diff --git a/Misc/NEWS.d/next/Library/2018-05-28-18-40-26.bpo-31467.s4Fad3.rst b/Misc/NEWS.d/next/Library/2018-05-28-18-40-26.bpo-31467.s4Fad3.rst deleted file mode 100644 index 61cc8baa1c..0000000000 --- a/Misc/NEWS.d/next/Library/2018-05-28-18-40-26.bpo-31467.s4Fad3.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fixed bug where calling write_eof() on a _SelectorSocketTransport after it's -already closed raises AttributeError. diff --git a/Misc/NEWS.d/next/Library/2018-05-28-22-49-59.bpo-33674.6LFFj7.rst b/Misc/NEWS.d/next/Library/2018-05-28-22-49-59.bpo-33674.6LFFj7.rst deleted file mode 100644 index 1e9868073f..0000000000 --- a/Misc/NEWS.d/next/Library/2018-05-28-22-49-59.bpo-33674.6LFFj7.rst +++ /dev/null @@ -1,4 +0,0 @@ -Fix a race condition in SSLProtocol.connection_made() of asyncio.sslproto: -start immediately the handshake instead of using call_soon(). Previously, -data_received() could be called before the handshake started, causing the -handshake to hang or fail. diff --git a/Misc/NEWS.d/next/Library/2018-05-29-12-51-18.bpo-32684.ZEIism.rst b/Misc/NEWS.d/next/Library/2018-05-29-12-51-18.bpo-32684.ZEIism.rst deleted file mode 100644 index b360bbcf79..0000000000 --- a/Misc/NEWS.d/next/Library/2018-05-29-12-51-18.bpo-32684.ZEIism.rst +++ /dev/null @@ -1 +0,0 @@ -Fix gather to propagate cancellation of itself even with return_exceptions. diff --git a/Misc/NEWS.d/next/Library/2018-06-03-22-41-59.bpo-33767.2e82g3.rst b/Misc/NEWS.d/next/Library/2018-06-03-22-41-59.bpo-33767.2e82g3.rst deleted file mode 100644 index 3483301890..0000000000 --- a/Misc/NEWS.d/next/Library/2018-06-03-22-41-59.bpo-33767.2e82g3.rst +++ /dev/null @@ -1,3 +0,0 @@ -The concatenation (``+``) and repetition (``*``) sequence operations now -raise :exc:`TypeError` instead of :exc:`SystemError` when performed on -:class:`mmap.mmap` objects. Patch by Zackery Spytz. diff --git a/Misc/NEWS.d/next/Library/2018-06-08-17-34-16.bpo-30805.3qCWa0.rst b/Misc/NEWS.d/next/Library/2018-06-08-17-34-16.bpo-30805.3qCWa0.rst deleted file mode 100644 index e1ba576753..0000000000 --- a/Misc/NEWS.d/next/Library/2018-06-08-17-34-16.bpo-30805.3qCWa0.rst +++ /dev/null @@ -1 +0,0 @@ -Avoid race condition with debug logging diff --git a/Misc/NEWS.d/next/Library/2018-06-10-13-26-02.bpo-33812.frGAOr.rst b/Misc/NEWS.d/next/Library/2018-06-10-13-26-02.bpo-33812.frGAOr.rst deleted file mode 100644 index 0dc3df6a79..0000000000 --- a/Misc/NEWS.d/next/Library/2018-06-10-13-26-02.bpo-33812.frGAOr.rst +++ /dev/null @@ -1,2 +0,0 @@ -Datetime instance d with non-None tzinfo, but with d.tzinfo.utcoffset(d) -returning None is now treated as naive by the astimezone() method. diff --git a/Misc/NEWS.d/next/Library/2018-06-10-19-29-17.bpo-30167.G5EgC5.rst b/Misc/NEWS.d/next/Library/2018-06-10-19-29-17.bpo-30167.G5EgC5.rst deleted file mode 100644 index 072a001ada..0000000000 --- a/Misc/NEWS.d/next/Library/2018-06-10-19-29-17.bpo-30167.G5EgC5.rst +++ /dev/null @@ -1 +0,0 @@ -Prevent site.main() exception if PYTHONSTARTUP is set. Patch by Steve Weber. diff --git a/Misc/NEWS.d/next/Tests/2018-01-08-13-33-47.bpo-19417.2asoXy.rst b/Misc/NEWS.d/next/Tests/2018-01-08-13-33-47.bpo-19417.2asoXy.rst deleted file mode 100644 index 739352fcdd..0000000000 --- a/Misc/NEWS.d/next/Tests/2018-01-08-13-33-47.bpo-19417.2asoXy.rst +++ /dev/null @@ -1 +0,0 @@ -Add test_bdb.py. diff --git a/Misc/NEWS.d/next/Tests/2018-05-26-16-01-40.bpo-33655.Frb4LA.rst b/Misc/NEWS.d/next/Tests/2018-05-26-16-01-40.bpo-33655.Frb4LA.rst deleted file mode 100644 index 7ed2ea2323..0000000000 --- a/Misc/NEWS.d/next/Tests/2018-05-26-16-01-40.bpo-33655.Frb4LA.rst +++ /dev/null @@ -1,2 +0,0 @@ -Ignore test_posix_fallocate failures on BSD platforms that might be due to -running on ZFS. diff --git a/Misc/NEWS.d/next/Tools-Demos/2017-09-26-10-11-21.bpo-31583.TM90_H.rst b/Misc/NEWS.d/next/Tools-Demos/2017-09-26-10-11-21.bpo-31583.TM90_H.rst deleted file mode 100644 index 472f61c512..0000000000 --- a/Misc/NEWS.d/next/Tools-Demos/2017-09-26-10-11-21.bpo-31583.TM90_H.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix 2to3 for using with --add-suffix option but without --output-dir -option for relative path to files in current directory. diff --git a/Misc/NEWS.d/next/Tools-Demos/2018-02-20-12-16-47.bpo-32885.dL5x7C.rst b/Misc/NEWS.d/next/Tools-Demos/2018-02-20-12-16-47.bpo-32885.dL5x7C.rst deleted file mode 100644 index e003e1d84f..0000000000 --- a/Misc/NEWS.d/next/Tools-Demos/2018-02-20-12-16-47.bpo-32885.dL5x7C.rst +++ /dev/null @@ -1,2 +0,0 @@ -Add an ``-n`` flag for ``Tools/scripts/pathfix.py`` to disbale automatic -backup creation (files with ``~`` suffix). diff --git a/Misc/NEWS.d/next/Tools-Demos/2018-03-16-17-25-05.bpo-29673.m8QtaW.rst b/Misc/NEWS.d/next/Tools-Demos/2018-03-16-17-25-05.bpo-29673.m8QtaW.rst deleted file mode 100644 index 3d515b3ee4..0000000000 --- a/Misc/NEWS.d/next/Tools-Demos/2018-03-16-17-25-05.bpo-29673.m8QtaW.rst +++ /dev/null @@ -1 +0,0 @@ -Fix pystackv and pystack gdbinit macros. diff --git a/Misc/NEWS.d/next/Tools-Demos/2018-03-26-18-54-24.bpo-31920.u_WKsT.rst b/Misc/NEWS.d/next/Tools-Demos/2018-03-26-18-54-24.bpo-31920.u_WKsT.rst deleted file mode 100644 index 39c694b072..0000000000 --- a/Misc/NEWS.d/next/Tools-Demos/2018-03-26-18-54-24.bpo-31920.u_WKsT.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fixed handling directories as arguments in the ``pygettext`` script. Based -on patch by Oleg Krasnikov. diff --git a/Misc/NEWS.d/next/Tools-Demos/2018-04-03-18-10-00.bpo-33189.QrXR00.rst b/Misc/NEWS.d/next/Tools-Demos/2018-04-03-18-10-00.bpo-33189.QrXR00.rst deleted file mode 100644 index 4d4137240e..0000000000 --- a/Misc/NEWS.d/next/Tools-Demos/2018-04-03-18-10-00.bpo-33189.QrXR00.rst +++ /dev/null @@ -1,2 +0,0 @@ -:program:`pygettext.py` now recognizes only literal strings as docstrings -and translatable strings, and rejects bytes literals and f-string expressions. diff --git a/Misc/NEWS.d/next/Windows/2018-04-13-11-39-28.bpo-33184.aEohx0.rst b/Misc/NEWS.d/next/Windows/2018-04-13-11-39-28.bpo-33184.aEohx0.rst deleted file mode 100644 index e754155610..0000000000 --- a/Misc/NEWS.d/next/Windows/2018-04-13-11-39-28.bpo-33184.aEohx0.rst +++ /dev/null @@ -1 +0,0 @@ -Update Windows installer to OpenSSL 1.0.2o. diff --git a/Misc/NEWS.d/next/macOS/2018-04-07-00-58-50.bpo-33184.rMTiqu.rst b/Misc/NEWS.d/next/macOS/2018-04-07-00-58-50.bpo-33184.rMTiqu.rst deleted file mode 100644 index 9840dc9372..0000000000 --- a/Misc/NEWS.d/next/macOS/2018-04-07-00-58-50.bpo-33184.rMTiqu.rst +++ /dev/null @@ -1 +0,0 @@ -Update macOS installer build to use OpenSSL 1.0.2o. diff --git a/README.rst b/README.rst index 035fa786f7..ec1323db93 100644 --- a/README.rst +++ b/README.rst @@ -1,5 +1,5 @@ -This is Python version 3.6.5+ -============================= +This is Python version 3.6.6 candidate 1 +======================================== .. image:: https://travis-ci.org/python/cpython.svg?branch=3.6 :alt: CPython build status on Travis CI -- GitLab From 4cf1f54eb764f856fda5a394d8598c0c90d69d77 Mon Sep 17 00:00:00 2001 From: Ned Deily Date: Tue, 26 Jun 2018 19:36:31 -0400 Subject: [PATCH 1433/1433] 3.6.6 final --- Doc/tools/static/switchers.js | 2 +- Doc/tools/templates/indexsidebar.html | 4 ++-- Include/patchlevel.h | 6 +++--- Mac/BuildScript/resources/ReadMe.rtf | 24 ++++++++++++++++-------- Mac/BuildScript/resources/Welcome.rtf | 7 +++++-- Misc/NEWS.d/3.6.6.rst | 8 ++++++++ README.rst | 4 ++-- 7 files changed, 37 insertions(+), 18 deletions(-) create mode 100644 Misc/NEWS.d/3.6.6.rst diff --git a/Doc/tools/static/switchers.js b/Doc/tools/static/switchers.js index 3dea08e523..d885ff2bbf 100644 --- a/Doc/tools/static/switchers.js +++ b/Doc/tools/static/switchers.js @@ -11,7 +11,7 @@ var all_versions = { '3.8': 'dev (3.8)', - '3.7': 'pre (3.7)', + '3.7': '3.7', '3.6': '3.6', '3.5': '3.5', '2.7': '2.7', diff --git a/Doc/tools/templates/indexsidebar.html b/Doc/tools/templates/indexsidebar.html index 20e66e0c26..3131050b03 100644 --- a/Doc/tools/templates/indexsidebar.html +++ b/Doc/tools/templates/indexsidebar.html @@ -3,8 +3,8 @@

              {% trans %}Docs for other versions{% endtrans %}

              diff --git a/Include/patchlevel.h b/Include/patchlevel.h index 8a94c2c0b4..f20d080f5b 100644 --- a/Include/patchlevel.h +++ b/Include/patchlevel.h @@ -19,11 +19,11 @@ #define PY_MAJOR_VERSION 3 #define PY_MINOR_VERSION 6 #define PY_MICRO_VERSION 6 -#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_GAMMA -#define PY_RELEASE_SERIAL 1 +#define PY_RELEASE_LEVEL PY_RELEASE_LEVEL_FINAL +#define PY_RELEASE_SERIAL 0 /* Version as a string */ -#define PY_VERSION "3.6.6rc1" +#define PY_VERSION "3.6.6" /*--end constants--*/ /* Version as a single 4-byte hex number, e.g. 0x010502B2 == 1.5.2b2. diff --git a/Mac/BuildScript/resources/ReadMe.rtf b/Mac/BuildScript/resources/ReadMe.rtf index f541688489..e8deea1b54 100644 --- a/Mac/BuildScript/resources/ReadMe.rtf +++ b/Mac/BuildScript/resources/ReadMe.rtf @@ -9,13 +9,10 @@ \ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0 -\b \cf0 \ul \ulc0 Which installer variant should I use? [CHANGED in 3.6.5] +\b \cf0 \ul \ulc0 Which installer variant should I use? [CHANGED in 3.6.6] \b0 \ulnone \ \ -\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0 - -\b \cf0 **NEW** -\b0 With Python 3.6.5, the python.org website now provides two installer variants for download: one that installs a +With Python 3.6.5, the python.org website now provides two installer variants for download: one that installs a \i 64-bit-only \i0 Python capable of running on \i macOS 10.9 (Mavericks) @@ -26,9 +23,14 @@ \i0 or later. (This ReadMe was installed with the \i $MACOSX_DEPLOYMENT_TARGET \i0 variant.) Previous Python 3.6.x releases only provided the 10.6 or later installer. If you are running on macOS 10.9 or later and if you have no need for compatibility with older systems, use the 10.9 variant. Use the 10.6 variant if you are running on macOS 10.6 through 10.8, if you need to maintain compatibility with previous 3.6.x releases, or if you want to produce standalone applications that can run on systems from 10.6. The Pythons installed by these installers are built with private copies of some third-party libraries not included with or newer than those in macOS itself. The list of these libraries varies by installer variant and is included at the end of the License.rtf file.\ +\ +\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0 + +\b \cf0 CHANGED in 3.6.6: +\b0 the 10.9+ 64-bit-only installer variant is now the default download. The 10.6+ variant is available from the $FULL_VERSION release page.\ \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0 -\b \cf0 \ul \ulc0 \ +\b \cf0 \ul \ Certificate verification and OpenSSL\ \b0 \ulnone \ @@ -56,13 +58,19 @@ The bundled \ The 10.9+ installer variant comes with its own private version of Tcl/Tk 8.6. It does not use system-supplied or third-party supplied versions of Tcl/Tk.\ \ -For the 10.6+ variant, you continue to need to install a newer third-party version of the +For the 10.6+ variant in 3.6.6, you continue to need to install a newer third-party version of the \i Tcl/Tk \i0 8.5 (not 8.6) frameworks to use IDLE or other programs that use the Tkinter graphical user interface toolkit. Visit {\field{\*\fldinst{HYPERLINK "https://www.python.org/download/mac/tcltk/"}}{\fldrslt https://www.python.org/download/mac/tcltk/}} for current information about supported and recommended versions of \i Tcl/Tk \i0 for this version of Python and of macOS.\ +\ +\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0 -\b \ul \ +\b \cf0 NOTE: +\b0 As of the next 3.6.x release, 3.6.7, the 10.6+ variant will also include Tcl/Tk 8.6.\ +\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0 + +\b \cf0 \ul \ Other changes\ \b0 \ulnone \ diff --git a/Mac/BuildScript/resources/Welcome.rtf b/Mac/BuildScript/resources/Welcome.rtf index cac9626693..22a794a5a5 100644 --- a/Mac/BuildScript/resources/Welcome.rtf +++ b/Mac/BuildScript/resources/Welcome.rtf @@ -1,4 +1,4 @@ -{\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf200 +{\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf400 \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} {\*\expandedcolortbl;;} @@ -21,4 +21,7 @@ \b NEW in 3.6.5: \b0 two installer variants (10.9+ 64-bit-only, 10.6+ 64-/32-bit), built-in Tcl/Tk 8.6 support in the 10.9+ variant (no additional third-party downloads!)\ -} \ No newline at end of file +\ + +\b CHANGED in 3.6.6: +\b0 the 10.9+ 64-bit-only installer variant is now the default download} \ No newline at end of file diff --git a/Misc/NEWS.d/3.6.6.rst b/Misc/NEWS.d/3.6.6.rst new file mode 100644 index 0000000000..da9f64703d --- /dev/null +++ b/Misc/NEWS.d/3.6.6.rst @@ -0,0 +1,8 @@ +.. bpo: 0 +.. date: 2018-06-27 +.. no changes: True +.. nonce: IWyX1H +.. release date: 2018-06-27 +.. section: Library + +There were no new changes in version 3.6.6. diff --git a/README.rst b/README.rst index ec1323db93..1dab9c80bc 100644 --- a/README.rst +++ b/README.rst @@ -1,5 +1,5 @@ -This is Python version 3.6.6 candidate 1 -======================================== +This is Python version 3.6.6 +============================ .. image:: https://travis-ci.org/python/cpython.svg?branch=3.6 :alt: CPython build status on Travis CI -- GitLab