Issue #19936: Added executable bits or shebang lines to Python scripts which
requires them. Disable executable bits and shebang lines in test and
benchmark files in order to prevent using a random system python, and in
source files of modules which don't provide command line interface. Fixed
shebang line to use python3 executable in the unittestgui script.
diff --git a/Lib/difflib.py b/Lib/difflib.py
index fe94cc4..f0bfcc5 100644
--- a/Lib/difflib.py
+++ b/Lib/difflib.py
@@ -1,5 +1,3 @@
-#! /usr/bin/env python3
-
"""
Module difflib -- helpers for computing deltas between objects.
diff --git a/Lib/http/cookies.py b/Lib/http/cookies.py
index dc3c74a..24da5f4 100644
--- a/Lib/http/cookies.py
+++ b/Lib/http/cookies.py
@@ -1,6 +1,3 @@
-#!/usr/bin/env python3
-#
-
####
# Copyright 2000 by Timothy O'Malley <timo@alum.mit.edu>
#
diff --git a/Lib/lib2to3/tests/data/different_encoding.py b/Lib/lib2to3/tests/data/different_encoding.py
old mode 100644
new mode 100755
diff --git a/Lib/lib2to3/tests/data/false_encoding.py b/Lib/lib2to3/tests/data/false_encoding.py
old mode 100644
new mode 100755
diff --git a/Lib/mailbox.py b/Lib/mailbox.py
index d59dae8..3b64c2e 100644
--- a/Lib/mailbox.py
+++ b/Lib/mailbox.py
@@ -1,5 +1,3 @@
-#! /usr/bin/env python3
-
"""Read/write support for Maildir, mbox, MH, Babyl, and MMDF mailboxes."""
# Notes for authors of new mailbox subclasses:
diff --git a/Lib/smtplib.py b/Lib/smtplib.py
old mode 100644
new mode 100755
diff --git a/Lib/tarfile.py b/Lib/tarfile.py
old mode 100644
new mode 100755
diff --git a/Lib/test/crashers/recursive_call.py b/Lib/test/crashers/recursive_call.py
old mode 100644
new mode 100755
diff --git a/Lib/test/curses_tests.py b/Lib/test/curses_tests.py
old mode 100644
new mode 100755
diff --git a/Lib/test/multibytecodec_support.py b/Lib/test/multibytecodec_support.py
index 2400323..14fea3e 100644
--- a/Lib/test/multibytecodec_support.py
+++ b/Lib/test/multibytecodec_support.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python3
#
# multibytecodec_support.py
# Common Unittest Routines for CJK codecs
diff --git a/Lib/test/test___future__.py b/Lib/test/test___future__.py
index 9ae4ce4..6f73c7f 100644
--- a/Lib/test/test___future__.py
+++ b/Lib/test/test___future__.py
@@ -1,4 +1,3 @@
-#! /usr/bin/env python3
import unittest
from test import support
import __future__
diff --git a/Lib/test/test_array.py b/Lib/test/test_array.py
old mode 100755
new mode 100644
index e1362b2..d68284f
--- a/Lib/test/test_array.py
+++ b/Lib/test/test_array.py
@@ -1,4 +1,3 @@
-#! /usr/bin/env python3
"""Test the arraymodule.
Roger E. Masse
"""
diff --git a/Lib/test/test_binhex.py b/Lib/test/test_binhex.py
old mode 100755
new mode 100644
index a807bca..9d4c85a
--- a/Lib/test/test_binhex.py
+++ b/Lib/test/test_binhex.py
@@ -1,4 +1,3 @@
-#! /usr/bin/env python3
"""Test script for the binhex C module
Uses the mechanism of the python binhex module
diff --git a/Lib/test/test_bz2.py b/Lib/test/test_bz2.py
index 961053d..c8c9351 100644
--- a/Lib/test/test_bz2.py
+++ b/Lib/test/test_bz2.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python3
from test import support
from test.support import TESTFN, bigmemtest, _4G
diff --git a/Lib/test/test_cmd.py b/Lib/test/test_cmd.py
index 6618535..e9a0211 100644
--- a/Lib/test/test_cmd.py
+++ b/Lib/test/test_cmd.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python3
"""
Test script for the 'cmd' module
Original by Michael Schneider
diff --git a/Lib/test/test_codecencodings_cn.py b/Lib/test/test_codecencodings_cn.py
index b08c5fc..60e69eb 100644
--- a/Lib/test/test_codecencodings_cn.py
+++ b/Lib/test/test_codecencodings_cn.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python3
#
# test_codecencodings_cn.py
# Codec encoding tests for PRC encodings.
diff --git a/Lib/test/test_codecencodings_hk.py b/Lib/test/test_codecencodings_hk.py
index 31363f4..25c05b6 100644
--- a/Lib/test/test_codecencodings_hk.py
+++ b/Lib/test/test_codecencodings_hk.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python3
#
# test_codecencodings_hk.py
# Codec encoding tests for HongKong encodings.
diff --git a/Lib/test/test_codecencodings_iso2022.py b/Lib/test/test_codecencodings_iso2022.py
index e4b2f30..8776864 100644
--- a/Lib/test/test_codecencodings_iso2022.py
+++ b/Lib/test/test_codecencodings_iso2022.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env python
-#
# Codec encoding tests for ISO 2022 encodings.
from test import support
diff --git a/Lib/test/test_codecencodings_jp.py b/Lib/test/test_codecencodings_jp.py
index 30c9e19..4091948 100644
--- a/Lib/test/test_codecencodings_jp.py
+++ b/Lib/test/test_codecencodings_jp.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python3
#
# test_codecencodings_jp.py
# Codec encoding tests for Japanese encodings.
diff --git a/Lib/test/test_codecencodings_kr.py b/Lib/test/test_codecencodings_kr.py
index 4dd6049..cd7696a 100644
--- a/Lib/test/test_codecencodings_kr.py
+++ b/Lib/test/test_codecencodings_kr.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python3
#
# test_codecencodings_kr.py
# Codec encoding tests for ROK encodings.
diff --git a/Lib/test/test_codecencodings_tw.py b/Lib/test/test_codecencodings_tw.py
index 96245b7..ea6e1c1 100644
--- a/Lib/test/test_codecencodings_tw.py
+++ b/Lib/test/test_codecencodings_tw.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python3
#
# test_codecencodings_tw.py
# Codec encoding tests for ROC encodings.
diff --git a/Lib/test/test_codecmaps_cn.py b/Lib/test/test_codecmaps_cn.py
index 1a761cf..76632a2 100644
--- a/Lib/test/test_codecmaps_cn.py
+++ b/Lib/test/test_codecmaps_cn.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python3
#
# test_codecmaps_cn.py
# Codec mapping tests for PRC encodings
diff --git a/Lib/test/test_codecmaps_hk.py b/Lib/test/test_codecmaps_hk.py
index 5f4e7c7..278ae2f 100644
--- a/Lib/test/test_codecmaps_hk.py
+++ b/Lib/test/test_codecmaps_hk.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python3
#
# test_codecmaps_hk.py
# Codec mapping tests for HongKong encodings
diff --git a/Lib/test/test_codecmaps_jp.py b/Lib/test/test_codecmaps_jp.py
index 1fdbf63..fa93f12 100644
--- a/Lib/test/test_codecmaps_jp.py
+++ b/Lib/test/test_codecmaps_jp.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python3
#
# test_codecmaps_jp.py
# Codec mapping tests for Japanese encodings
diff --git a/Lib/test/test_codecmaps_kr.py b/Lib/test/test_codecmaps_kr.py
index 0356402..e0bf716 100644
--- a/Lib/test/test_codecmaps_kr.py
+++ b/Lib/test/test_codecmaps_kr.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python3
#
# test_codecmaps_kr.py
# Codec mapping tests for ROK encodings
diff --git a/Lib/test/test_codecmaps_tw.py b/Lib/test/test_codecmaps_tw.py
index 44467e3..4d27080 100644
--- a/Lib/test/test_codecmaps_tw.py
+++ b/Lib/test/test_codecmaps_tw.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python3
#
# test_codecmaps_tw.py
# Codec mapping tests for ROC encodings
diff --git a/Lib/test/test_dbm.py b/Lib/test/test_dbm.py
index 243a0af..d11d924 100644
--- a/Lib/test/test_dbm.py
+++ b/Lib/test/test_dbm.py
@@ -1,4 +1,3 @@
-#! /usr/bin/env python3
"""Test script for the dbm.open function based on testdumbdbm.py"""
import os
diff --git a/Lib/test/test_dbm_dumb.py b/Lib/test/test_dbm_dumb.py
index 208bc4c..4f03ae7 100644
--- a/Lib/test/test_dbm_dumb.py
+++ b/Lib/test/test_dbm_dumb.py
@@ -1,4 +1,3 @@
-#! /usr/bin/env python3
"""Test script for the dumbdbm module
Original by Roger E. Masse
"""
diff --git a/Lib/test/test_eof.py b/Lib/test/test_eof.py
index fb4ac9a..52e7932 100644
--- a/Lib/test/test_eof.py
+++ b/Lib/test/test_eof.py
@@ -1,4 +1,3 @@
-#! /usr/bin/env python3
"""test script for a few new invalid token catches"""
import unittest
diff --git a/Lib/test/test_errno.py b/Lib/test/test_errno.py
old mode 100755
new mode 100644
index f414a87..058dcb9
--- a/Lib/test/test_errno.py
+++ b/Lib/test/test_errno.py
@@ -1,4 +1,3 @@
-#! /usr/bin/env python3
"""Test the errno module
Roger E. Masse
"""
diff --git a/Lib/test/test_gzip.py b/Lib/test/test_gzip.py
index 5eac921..c94d54e 100755
--- a/Lib/test/test_gzip.py
+++ b/Lib/test/test_gzip.py
@@ -1,4 +1,3 @@
-#! /usr/bin/env python3
"""Test script for the gzip module.
"""
diff --git a/Lib/test/test_keywordonlyarg.py b/Lib/test/test_keywordonlyarg.py
index 0503a7f..6c2ff00 100644
--- a/Lib/test/test_keywordonlyarg.py
+++ b/Lib/test/test_keywordonlyarg.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env python3
-
"""Unit tests for the keyword only argument specified in PEP 3102."""
__author__ = "Jiwon Seo"
diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py
index 814f68c..f34172a 100644
--- a/Lib/test/test_logging.py
+++ b/Lib/test/test_logging.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env python
-#
# Copyright 2001-2013 by Vinay Sajip. All Rights Reserved.
#
# Permission to use, copy, modify, and distribute this software and its
diff --git a/Lib/test/test_marshal.py b/Lib/test/test_marshal.py
index af7a959..0b14137 100644
--- a/Lib/test/test_marshal.py
+++ b/Lib/test/test_marshal.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env python3
-
from test import support
import array
import io
diff --git a/Lib/test/test_multibytecodec.py b/Lib/test/test_multibytecodec.py
index feb7bd5..6889184 100644
--- a/Lib/test/test_multibytecodec.py
+++ b/Lib/test/test_multibytecodec.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python3
#
# test_multibytecodec.py
# Unit test for multibytecodec itself
diff --git a/Lib/test/test_multiprocessing.py b/Lib/test/test_multiprocessing.py
index d20a576..aa66db4 100644
--- a/Lib/test/test_multiprocessing.py
+++ b/Lib/test/test_multiprocessing.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env python3
-
#
# Unit tests for the multiprocessing package
#
diff --git a/Lib/test/test_popen.py b/Lib/test/test_popen.py
index accf187..225e41f 100644
--- a/Lib/test/test_popen.py
+++ b/Lib/test/test_popen.py
@@ -1,4 +1,3 @@
-#! /usr/bin/env python3
"""Basic tests for os.popen()
Particularly useful for platforms that fake popen.
diff --git a/Lib/test/test_random.py b/Lib/test/test_random.py
index d363a6a..a475207 100644
--- a/Lib/test/test_random.py
+++ b/Lib/test/test_random.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env python3
-
import unittest
import random
import time
diff --git a/Lib/test/test_sched.py b/Lib/test/test_sched.py
index 070886d..79fa7d3 100644
--- a/Lib/test/test_sched.py
+++ b/Lib/test/test_sched.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env python
-
import queue
import sched
import time
diff --git a/Lib/test/test_smtpnet.py b/Lib/test/test_smtpnet.py
index 86224ef..e97cf36 100644
--- a/Lib/test/test_smtpnet.py
+++ b/Lib/test/test_smtpnet.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env python3
-
import unittest
from test import support
import smtplib
diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py
index ce3c16c..d6e8389 100644
--- a/Lib/test/test_socket.py
+++ b/Lib/test/test_socket.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env python3
-
import unittest
from test import support
from unittest.case import _ExpectedFailure
diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py
index 4edb1a8..5913044 100644
--- a/Lib/test/test_support.py
+++ b/Lib/test/test_support.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env python
-
import importlib
import shutil
import sys
diff --git a/Lib/test/test_tcl.py b/Lib/test/test_tcl.py
index 5a2b69a..ad17ee9 100644
--- a/Lib/test/test_tcl.py
+++ b/Lib/test/test_tcl.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env python3
-
import unittest
import sys
import os
diff --git a/Lib/test/test_urllib2_localnet.py b/Lib/test/test_urllib2_localnet.py
index 9112e50..31c638f 100644
--- a/Lib/test/test_urllib2_localnet.py
+++ b/Lib/test/test_urllib2_localnet.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env python3
-
import os
import email
import urllib.parse
diff --git a/Lib/test/test_urllib2net.py b/Lib/test/test_urllib2net.py
index 7f3c93a..a4c1622 100644
--- a/Lib/test/test_urllib2net.py
+++ b/Lib/test/test_urllib2net.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env python3
-
import unittest
from test import support
from test.test_urllib2 import sanepathname2url
diff --git a/Lib/test/test_urllibnet.py b/Lib/test/test_urllibnet.py
index 9aa16b4..4e0b7bd 100644
--- a/Lib/test/test_urllibnet.py
+++ b/Lib/test/test_urllibnet.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env python3
-
import unittest
from test import support
diff --git a/Lib/test/test_urlparse.py b/Lib/test/test_urlparse.py
old mode 100755
new mode 100644
index 378a427..9d695da
--- a/Lib/test/test_urlparse.py
+++ b/Lib/test/test_urlparse.py
@@ -1,5 +1,3 @@
-#! /usr/bin/env python3
-
from test import support
import unittest
import urllib.parse
diff --git a/Lib/test/test_userstring.py b/Lib/test/test_userstring.py
old mode 100755
new mode 100644
index 71fcac2..34c629c
--- a/Lib/test/test_userstring.py
+++ b/Lib/test/test_userstring.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python3
# UserString is a wrapper around the native builtin string type.
# UserString instances should behave similar to builtin string objects.
diff --git a/Lib/test/test_with.py b/Lib/test/test_with.py
index e8cc8c0..7068a80 100644
--- a/Lib/test/test_with.py
+++ b/Lib/test/test_with.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env python3
-
"""Unit tests for the with statement specified in PEP 343."""
diff --git a/Lib/test/test_xmlrpc_net.py b/Lib/test/test_xmlrpc_net.py
index 4c6f1ec..77f66ea 100644
--- a/Lib/test/test_xmlrpc_net.py
+++ b/Lib/test/test_xmlrpc_net.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env python3
-
import collections.abc
import errno
import socket
diff --git a/Lib/timeit.py b/Lib/timeit.py
old mode 100644
new mode 100755
diff --git a/Lib/token.py b/Lib/token.py
old mode 100755
new mode 100644
diff --git a/Lib/trace.py b/Lib/trace.py
old mode 100644
new mode 100755
diff --git a/Lib/turtledemo/bytedesign.py b/Lib/turtledemo/bytedesign.py
old mode 100644
new mode 100755
diff --git a/Lib/turtledemo/clock.py b/Lib/turtledemo/clock.py
old mode 100644
new mode 100755
diff --git a/Lib/turtledemo/forest.py b/Lib/turtledemo/forest.py
old mode 100644
new mode 100755
diff --git a/Lib/turtledemo/fractalcurves.py b/Lib/turtledemo/fractalcurves.py
old mode 100644
new mode 100755
diff --git a/Lib/turtledemo/lindenmayer.py b/Lib/turtledemo/lindenmayer.py
old mode 100644
new mode 100755
diff --git a/Lib/turtledemo/minimal_hanoi.py b/Lib/turtledemo/minimal_hanoi.py
old mode 100644
new mode 100755
diff --git a/Lib/turtledemo/paint.py b/Lib/turtledemo/paint.py
old mode 100644
new mode 100755
diff --git a/Lib/turtledemo/peace.py b/Lib/turtledemo/peace.py
old mode 100644
new mode 100755
diff --git a/Lib/turtledemo/penrose.py b/Lib/turtledemo/penrose.py
old mode 100644
new mode 100755
diff --git a/Lib/turtledemo/planet_and_moon.py b/Lib/turtledemo/planet_and_moon.py
old mode 100644
new mode 100755
diff --git a/Lib/turtledemo/tree.py b/Lib/turtledemo/tree.py
old mode 100644
new mode 100755
diff --git a/Lib/turtledemo/two_canvases.py b/Lib/turtledemo/two_canvases.py
old mode 100644
new mode 100755
diff --git a/Lib/turtledemo/yinyang.py b/Lib/turtledemo/yinyang.py
old mode 100644
new mode 100755
diff --git a/Lib/webbrowser.py b/Lib/webbrowser.py
old mode 100644
new mode 100755
diff --git a/Mac/Tools/bundlebuilder.py b/Mac/Tools/bundlebuilder.py
old mode 100644
new mode 100755
diff --git a/Misc/NEWS b/Misc/NEWS
index ed9eafb..a5e8482 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -334,6 +334,12 @@
Tools/Demos
-----------
+- Issue #19936: Added executable bits or shebang lines to Python scripts which
+ requires them. Disable executable bits and shebang lines in test and
+ benchmark files in order to prevent using a random system python, and in
+ source files of modules which don't provide command line interface. Fixed
+ shebang line to use python3 executable in the unittestgui script.
+
- Issue #18960: 2to3 and the findnocoding.py script now ignore the source
encoding declaration on the second line if the first line contains anything
except a comment.
diff --git a/Modules/_ctypes/libffi/generate-ios-source-and-headers.py b/Modules/_ctypes/libffi/generate-ios-source-and-headers.py
old mode 100644
new mode 100755
diff --git a/Modules/_ctypes/libffi/generate-osx-source-and-headers.py b/Modules/_ctypes/libffi/generate-osx-source-and-headers.py
old mode 100644
new mode 100755
diff --git a/Modules/_decimal/tests/bench.py b/Modules/_decimal/tests/bench.py
old mode 100644
new mode 100755
diff --git a/Modules/_decimal/tests/deccheck.py b/Modules/_decimal/tests/deccheck.py
old mode 100644
new mode 100755
diff --git a/Objects/typeslots.py b/Objects/typeslots.py
old mode 100644
new mode 100755
diff --git a/Tools/gdb/libpython.py b/Tools/gdb/libpython.py
old mode 100644
new mode 100755
diff --git a/Tools/i18n/makelocalealias.py b/Tools/i18n/makelocalealias.py
old mode 100644
new mode 100755
diff --git a/Tools/pybench/Setup.py b/Tools/pybench/Setup.py
old mode 100644
new mode 100755
diff --git a/Tools/pybench/clockres.py b/Tools/pybench/clockres.py
old mode 100644
new mode 100755
diff --git a/Tools/pybench/systimes.py b/Tools/pybench/systimes.py
old mode 100644
new mode 100755
diff --git a/Tools/scripts/run_tests.py b/Tools/scripts/run_tests.py
old mode 100755
new mode 100644
diff --git a/Tools/ssl/make_ssl_data.py b/Tools/ssl/make_ssl_data.py
old mode 100644
new mode 100755
diff --git a/Tools/stringbench/stringbench.py b/Tools/stringbench/stringbench.py
old mode 100755
new mode 100644
diff --git a/Tools/unicode/comparecodecs.py b/Tools/unicode/comparecodecs.py
old mode 100644
new mode 100755
diff --git a/Tools/unittestgui/unittestgui.py b/Tools/unittestgui/unittestgui.py
old mode 100644
new mode 100755
index 09a20e2..c3b5fa4
--- a/Tools/unittestgui/unittestgui.py
+++ b/Tools/unittestgui/unittestgui.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
"""
GUI framework and application for use with Python unit testing framework.
Execute tests written using the framework provided by the 'unittest' module.