cpython/Lib
Barry Warsaw 9522a218f7
bpo-32107 - Better merge of #4494 (#4576)
Improve UUID1 MAC address calculation and related tests.

There are two bits in the MAC address that are relevant to UUID1.  The first is the locally administered vs. universally administered bit (second least significant of the first octet).   Physical network interfaces such as ethernet ports and wireless adapters will always be universally administered, but some interfaces --such as the interface that MacBook Pros communicate with their Touch Bars-- are locally administered.  The former are guaranteed to be globally unique, while the latter are demonstrably *not* globally unique and are in fact the same on every MBP with a Touch Bar.  With this bit is set, the MAC is locally administered; with it unset it is universally administered.

The other bit is the multicast bit (least significant bit of the first octet).  When no other MAC address can be found, RFC 4122 mandates that a random 48-bit number be generated.  This randomly generated number *must* have the multicast bit set.

The improvements in uuid.py include:

* Preferentially return a universally administered MAC address, falling back to a locally administered address if none of the former can be found.
* Improve several coding style issues, such as adding explicit returns of None, using a more readable bitmask pattern, and assuming that the ultimate fallback, random MAC generation will not fail (and propagating any exception there instead of swallowing them).

Improvements in test_uuid.py include:

* Always testing the calculated MAC for universal administration, unless explicitly disabled (i.e. for the random case), or implicitly disabled due to running in the Travis environment.  Travis test machines have *no* universally administered MAC address at the time of this writing.
2017-11-27 14:40:10 -05:00
..
asyncio bpo-32066: Support pathlib.Path in create_unix_connection; sock arg should be optional (#4447) 2017-11-20 17:26:28 -05:00
collections bpo-28638: Optimize namedtuple() creation time by minimizing use of exec() (#3454) 2017-09-10 10:23:36 -07:00
concurrent bpo-21423: Add an initializer argument to {Process,Thread}PoolExecutor (#4241) 2017-11-04 11:05:49 +01:00
ctypes time.clock() now emits a DeprecationWarning (GH-4020) 2017-10-17 14:46:45 -07:00
curses Issue #13051: Fixed recursion errors in large or resized curses.textpad.Textbox. 2016-12-28 10:16:06 +02:00
dbm bpo-30144: Import collections ABC from collections.abc rather than collections. (#1263) 2017-04-24 09:05:00 +03:00
distutils bpo-19610: setup() now raises TypeError for invalid types (GH-4519) 2017-11-23 21:34:20 +03:00
email bpo-30349: Raise FutureWarning for nested sets and set operations (#1553) 2017-11-16 12:38:26 +02:00
encodings
ensurepip bpo-31351: Set return code in ensurepip when pip fails (GH-3626) 2017-09-21 20:07:45 +10:00
html bpo-30629: Remove second call of str.lower() in html.parser.parse_endtag. (#2099) 2017-06-16 21:15:25 -04:00
http bpo-31945: Configurable blocksize in HTTP(S)Connection (#4279) 2017-11-06 13:16:37 -08:00
idlelib bpo-32100: IDLE: Fix pathbrowser errors; improve tests. (#4484) 2017-11-22 19:05:25 -05:00
importlib bpo-21720: Restore the Python 2.7 logic in handling a fromlist. (#4118) 2017-10-26 10:41:59 +03:00
json bpo-24641: Improved error message for JSON unserializible keys. (#4364) 2017-11-25 17:38:20 +02:00
lib2to3 bpo-30143: 2to3 now generates a code that uses abstract collection classes (#1262) 2017-11-16 09:16:24 +02:00
logging bpo-30904: Removed duplicated Host: header. (#4465) 2017-11-19 18:36:17 +00:00
msilib Remove all mention of Windows IA-64 support (GH-3389) 2017-09-06 15:45:25 -07:00
multiprocessing bpo-31310: multiprocessing's semaphore tracker should be launched again if crashed (#3247) 2017-11-03 14:31:38 +01:00
pydoc_data Update NEWS and topics for 3.7.0a2 2017-10-16 23:41:55 -04:00
site-packages Issue #29283: Delete accidentally added Lib/site-packages/README 2017-01-30 13:55:49 +03:00
sqlite3 Remove unused var from CheckCancelOperation test (GH-4317) 2017-11-08 00:06:55 +03:00
test bpo-32107 - Better merge of #4494 (#4576) 2017-11-27 14:40:10 -05:00
tkinter bpo-27319, bpo-31508: Document deprecation in Treeview.selection(). (#3667) 2017-09-24 14:34:09 +03:00
turtledemo time.clock() now emits a DeprecationWarning (GH-4020) 2017-10-17 14:46:45 -07:00
unittest bpo-32071: Add unittest -k option (#4496) 2017-11-25 16:23:52 +01:00
urllib bpo-31325: Fix usage of namedtuple in RobotFileParser.parse() (#4529) 2017-11-23 15:40:26 -08:00
venv bpo-25351: avoid activate failure on strict shells (GH-3804) 2017-09-29 12:48:11 +01:00
wsgiref Remove tiny bit of deadcode from wsgiref.validate (#3996) 2017-10-31 00:07:36 -04:00
xml bpo-31776: Missing "raise from None" in Lib/xml/etree/ElementPath.py (#3978) 2017-10-16 11:24:22 +03:00
xmlrpc Replace KB unit with KiB (#4293) 2017-11-08 14:44:44 -08:00
__future__.py
__phello__.foo.py
_bootlocale.py Issue #28596: The preferred encoding is UTF-8 on Android. 2016-12-17 09:19:11 +01:00
_collections_abc.py bpo-29762: More use "raise from None". (#569) 2017-04-05 09:37:24 +03:00
_compat_pickle.py
_compression.py
_dummy_thread.py Restore dummy_threading and _dummy_thread, but deprecate them (bpo-31370) (#3648) 2017-09-18 22:04:20 +02:00
_markupbase.py
_osx_support.py Fix misplaced positional argument in OS X support library (#1134) 2017-04-14 15:28:55 +03:00
_pydecimal.py Trivial cleanups following bpo-31370 (#3649) 2017-09-18 23:50:44 +02:00
_pyio.py bpo-31976: Fix race condition when flushing a file is slow. (#4331) 2017-11-10 22:03:40 +01:00
_sitebuiltins.py
_strptime.py Closes bpo-31800: Support for colon when parsing time offsets (#4015) 2017-10-25 20:35:41 -04:00
_threading_local.py
_weakrefset.py bpo-30296 Remove unnecessary tuples, lists, sets, and dicts (#1489) 2017-05-18 07:35:54 -07:00
abc.py bpo-30463: Add an empty __slots__ to abc.ABC. 2017-06-06 22:34:57 +03:00
aifc.py bpo-31985: Deprecate openfp in aifc, sunau, and wave (#4344) 2017-11-10 11:38:25 -05:00
antigravity.py
argparse.py bpo-30152: Reduce the number of imports for argparse. (#1269) 2017-09-26 00:55:55 +03:00
ast.py bpo-29637: clean docstring only if not None (GH-267) 2017-02-24 15:44:19 +09:00
asynchat.py
asyncore.py bpo-29639: change test.support.HOST to "localhost" 2017-09-09 00:30:15 -07:00
base64.py Add Python version since deprecation in base64 methods. (#33) 2017-03-02 17:21:26 +03:00
bdb.py bpo-30211: bdb: add docstrings (#1350) 2017-05-16 18:28:02 -04:00
binhex.py
bisect.py Issue #28792: Remove aliases from _bisect 2016-11-24 23:31:59 +01:00
bz2.py bpo-31370: Remove support for threads-less builds (#3385) 2017-09-07 18:56:24 +02:00
calendar.py Closes bpo-28281: Remove year (1-9999) limits on the weekday() function. (#4109) 2017-10-26 15:34:11 -04:00
cgi.py bpo-29979: Rewrite cgi.parse_multipart to make it consistent with FieldStorage (#991) 2017-05-08 05:08:34 -07:00
cgitb.py
chunk.py bpo-29762: More use "raise from None". (#569) 2017-04-05 09:37:24 +03:00
cmd.py
code.py bpo-30166: Import command-line parsing modules only when needed. (#1293) 2017-05-04 08:17:47 +03:00
codecs.py bpo-29783: Replace codecs.open() with io.open() (#599) 2017-06-16 08:59:01 +02:00
codeop.py
colorsys.py
compileall.py
configparser.py bpo-31307: Make ConfigParser.read() accept bytes objects (GH-3420) 2017-11-02 15:47:04 +03:00
contextlib.py bpo-10049: Add a "no-op" (null) context manager to contextlib (GH-4464) 2017-11-23 10:23:28 +10:00
copy.py
copyreg.py bpo-31107: Fix copyreg mangled slot names calculation. (#2989) 2017-08-04 11:45:00 +03:00
cProfile.py bpo-21862: Add -m option to cProfile for profiling modules (#4297) 2017-11-08 11:50:56 +01:00
crypt.py bpo-31702: Allow to specify rounds for SHA-2 hashing in crypt.mksalt(). (#4110) 2017-11-16 13:22:51 +02:00
csv.py Issue #29405: Make total calculation in _guess_delimiter more accurate. 2017-02-06 10:50:09 +08:00
datetime.py bpo-31222: Make (datetime|date|time).replace return subclass type in Pure Python (#4176) 2017-11-09 13:34:29 -08:00
decimal.py
difflib.py bpo-29762: More use "raise from None". (#569) 2017-04-05 09:37:24 +03:00
dis.py bpo-31183: dis now handles coroutines & async generators (GH-3077) 2017-08-18 12:29:21 +10:00
doctest.py bpo-30166: Import command-line parsing modules only when needed. (#1293) 2017-05-04 08:17:47 +03:00
dummy_threading.py Restore dummy_threading and _dummy_thread, but deprecate them (bpo-31370) (#3648) 2017-09-18 22:04:20 +02:00
enum.py bpo-30152: Reduce the number of imports for argparse. (#1269) 2017-09-26 00:55:55 +03:00
filecmp.py
fileinput.py bpo-31281: Fix pathlib.Path incompatibility in fileinput (gh-3208) 2017-09-04 13:37:24 -04:00
fnmatch.py
formatter.py
fractions.py
ftplib.py bpo-31346: Use PROTOCOL_TLS_CLIENT/SERVER (#3058) 2017-09-15 20:27:30 +02:00
functools.py bpo-31581: Reduce the number of imports for functools (GH-3757) 2017-09-30 16:13:02 +09:00
genericpath.py
getopt.py
getpass.py getpass: update docstrings (#49) 2017-02-12 23:10:48 +01:00
gettext.py bpo-30152: Reduce the number of imports for argparse. (#1269) 2017-09-26 00:55:55 +03:00
glob.py
gzip.py Replace KB unit with KiB (#4293) 2017-11-08 14:44:44 -08:00
hashlib.py Fix miscellaneous typos (#4275) 2017-11-05 15:37:50 +02:00
heapq.py Improve clarity (and small speed-up) by using tuple unpacking (#3289) 2017-09-04 11:47:58 -07:00
hmac.py
imaplib.py bpo-30329: Catch Windows error 10022 on shutdown() (#1538) 2017-05-15 17:33:45 +02:00
imghdr.py
imp.py bpo-30645: don't append to an inner loop path in imp.load_package() (GH-2268) 2017-06-23 10:35:03 -07:00
inspect.py bpo-32018: Fix inspect.signature repr to follow PEP 8 (#4408) 2017-11-15 13:30:59 -05:00
io.py
ipaddress.py bpo-20825: Containment test for ip_network in ip_network. 2017-10-22 23:39:49 +02:00
keyword.py bpo-30406: Make async and await proper keywords (#1669) 2017-10-05 23:24:46 -04:00
linecache.py
locale.py bpo-30152: Reduce the number of imports for argparse. (#1269) 2017-09-26 00:55:55 +03:00
lzma.py
macpath.py bpo-9850: Deprecate the macpath module (#1540) 2017-05-15 11:01:21 +02:00
mailbox.py bpo-29762: More use "raise from None". (#569) 2017-04-05 09:37:24 +03:00
mailcap.py
mimetypes.py bpo-31867: Remove duplicates in default mimetypes. (#4388) 2017-11-17 12:10:19 +02:00
modulefinder.py Remove unused imports. 2016-12-16 20:00:15 +02:00
netrc.py bpo-28334: netrc() now uses expanduser() to find .netrc file (GH-4537) 2017-11-25 13:37:22 +03:00
nntplib.py bpo-29762: More use "raise from None". (#569) 2017-04-05 09:37:24 +03:00
ntpath.py Issue #29197: Removed deprecated function ntpath.splitunc(). 2017-01-13 20:55:05 +02:00
nturl2path.py bpo-29836: Remove nturl2path from test_sundry and amend the module docstring (GH-694) 2017-03-17 11:16:20 -07:00
numbers.py Fix miscellaneous typos (#4275) 2017-11-05 15:37:50 +02:00
opcode.py Issue #26110: Add LOAD_METHOD/CALL_METHOD opcodes. 2016-12-13 19:03:51 -05:00
operator.py
optparse.py
os.py bpo-30152: Reduce the number of imports for argparse. (#1269) 2017-09-26 00:55:55 +03:00
pathlib.py bpo-30152: Reduce the number of imports for argparse. (#1269) 2017-09-26 00:55:55 +03:00
pdb.py bpo-31389 Add an optional header argument to pdb.set_trace() (#3438) 2017-09-22 12:29:42 -04:00
pickle.py bpo-32037: Use the INT opcode for 32-bit integers in protocol 0 pickles. (#4407) 2017-11-16 09:44:43 +02:00
pickletools.py bpo-32037: Use the INT opcode for 32-bit integers in protocol 0 pickles. (#4407) 2017-11-16 09:44:43 +02:00
pipes.py
pkgutil.py bpo-24744: Raises error in pkgutil.walk_packages if path is str (#1926) 2017-06-13 13:11:14 -04:00
platform.py bpo-27593: Get SCM build info from git instead of hg. (#446) 2017-03-04 00:19:55 -05:00
plistlib.py bpo-31897: Convert unexpected errors when read bogus binary plists into InvalidFileException. (#4171) 2017-10-31 14:05:53 +02:00
poplib.py bpo-30329: Catch Windows error 10022 on shutdown() (#1538) 2017-05-15 17:33:45 +02:00
posixpath.py
pprint.py
profile.py time.clock() now emits a DeprecationWarning (GH-4020) 2017-10-17 14:46:45 -07:00
pstats.py bpo-30296 Remove unnecessary tuples, lists, sets, and dicts (#1489) 2017-05-18 07:35:54 -07:00
pty.py
py_compile.py
pyclbr.py bpo-6691: Pyclbr now reports nested classes and functions. (#2503) 2017-07-03 21:31:25 -04:00
pydoc.py bpo-30406: Make async and await proper keywords (#1669) 2017-10-05 23:24:46 -04:00
queue.py bpo-31370: Remove support for threads-less builds (#3385) 2017-09-07 18:56:24 +02:00
quopri.py
random.py bpo-31482: Missing bytes support for random.seed() version 1 (#3614) 2017-09-17 09:04:30 -07:00
re.py bpo-30349: Raise FutureWarning for nested sets and set operations (#1553) 2017-11-16 12:38:26 +02:00
reprlib.py bpo-31370: Remove support for threads-less builds (#3385) 2017-09-07 18:56:24 +02:00
rlcompleter.py
runpy.py
sched.py bpo-31370: Remove support for threads-less builds (#3385) 2017-09-07 18:56:24 +02:00
secrets.py Issue #29061: secrets.randbelow() would hang with a negative input 2016-12-29 22:54:25 -07:00
selectors.py bpo-30624 remaining bare except (#2108) 2017-06-12 14:43:40 +02:00
shelve.py bpo-30144: Import collections ABC from collections.abc rather than collections. (#1263) 2017-04-24 09:05:00 +03:00
shlex.py Fixed #29132: Updated shlex to work better with punctuation chars in POSIX mode. 2017-01-15 10:06:52 +00:00
shutil.py bpo-28564: Use os.scandir() in shutil.rmtree(). (#4085) 2017-11-04 14:16:35 +02:00
signal.py
site.py bpo-30804: fix macOS build with framework enabled. (#2516) 2017-06-30 19:38:02 +02:00
smtpd.py
smtplib.py bpo-30394: Fix a socket leak in smtplib.SMTP.__init__() (#1700) 2017-05-24 13:14:50 +08:00
sndhdr.py bpo-31985: Deprecate openfp in aifc, sunau, and wave (#4344) 2017-11-10 11:38:25 -05:00
socket.py bpo-31234, socket.create_connection(): Fix ref cycle (#3546) 2017-09-13 10:10:10 -07:00
socketserver.py bpo-31233: socketserver.ThreadingMixIn.server_close() (#3523) 2017-09-13 01:47:22 -07:00
sre_compile.py bpo-31690: Allow the inline flags "a", "L", and "u" to be used as group flags for RE. (#3885) 2017-10-24 23:31:42 +03:00
sre_constants.py bpo-31690: Allow the inline flags "a", "L", and "u" to be used as group flags for RE. (#3885) 2017-10-24 23:31:42 +03:00
sre_parse.py bpo-30349: Raise FutureWarning for nested sets and set operations (#1553) 2017-11-16 12:38:26 +02:00
ssl.py bpo-23033: Improve SSL Certificate handling (GH-937) 2017-11-26 14:31:27 -08:00
stat.py
statistics.py bpo-29919: Remove unused imports found by pyflakes (#137) 2017-03-27 16:05:26 +02:00
string.py bpo-31672 - Add one last minor clarification for idpattern (#4483) 2017-11-21 10:28:13 -05:00
stringprep.py
struct.py
subprocess.py bpo-32089: Fix warnings filters in dev mode (#4482) 2017-11-20 17:32:40 -08:00
sunau.py bpo-31985: Deprecate openfp in aifc, sunau, and wave (#4344) 2017-11-10 11:38:25 -05:00
symbol.py bpo-30406: Make async and await proper keywords (#1669) 2017-10-05 23:24:46 -04:00
symtable.py bpo-30296 Remove unnecessary tuples, lists, sets, and dicts (#1489) 2017-05-18 07:35:54 -07:00
sysconfig.py remove support for BSD/OS (closes bpo-31624) (#3812) 2017-09-28 22:44:27 -07:00
tabnanny.py bpo-30166: Import command-line parsing modules only when needed. (#1293) 2017-05-04 08:17:47 +03:00
tarfile.py Remove two legacy constants which hopefully have no consumers (#1087) 2017-04-11 22:41:42 -04:00
telnetlib.py bpo-30397: Add re.Pattern and re.Match. (#1646) 2017-10-04 20:09:49 +03:00
tempfile.py bpo-31370: Remove support for threads-less builds (#3385) 2017-09-07 18:56:24 +02:00
textwrap.py bpo-30620: Remove dead lines from textwrap.dedent (GH-2064) 2017-06-15 19:19:43 -07:00
this.py
threading.py bpo-31516: current_thread() should not return a dummy thread at shutdown (#3673) 2017-10-02 16:42:15 +02:00
timeit.py bpo-29661: fix contradiction in timeit.Timer.autorange's docstring (GH-331) 2017-02-28 11:06:07 +08:00
token.py bpo-25324: copy tok_name before changing it (#1608) 2017-05-31 16:00:21 +02:00
tokenize.py bpo-30406: Make async and await proper keywords (#1669) 2017-10-05 23:24:46 -04:00
trace.py bpo-31370: Remove support for threads-less builds (#3385) 2017-09-07 18:56:24 +02:00
traceback.py bpo-28603: Fix formatting tracebacks for unhashable exceptions (#4014) 2017-10-18 00:29:39 +03:00
tracemalloc.py bpo-30144: Import collections ABC from collections.abc rather than collections. (#1263) 2017-04-24 09:05:00 +03:00
tty.py
turtle.py Fix miscellaneous typos (#4275) 2017-11-05 15:37:50 +02:00
types.py bpo-30152: Reduce the number of imports for argparse. (#1269) 2017-09-26 00:55:55 +03:00
typing.py bpo-28556: typing.get_type_hints: better globalns for classes and modules (#3582) 2017-09-14 14:33:00 -04:00
uu.py bpo-30103: Allow Uuencode in Python using backtick as zero instead of space (#1326) 2017-05-03 11:16:21 +08:00
uuid.py bpo-32107 - Better merge of #4494 (#4576) 2017-11-27 14:40:10 -05:00
warnings.py bpo-27535: Fix memory leak with warnings ignore (#4489) 2017-11-27 16:57:07 +01:00
wave.py bpo-31985: Deprecate openfp in aifc, sunau, and wave (#4344) 2017-11-10 11:38:25 -05:00
weakref.py bpo-30152: Reduce the number of imports for argparse. (#1269) 2017-09-26 00:55:55 +03:00
webbrowser.py bpo-29645: Speed up importing the webbrowser module. (#484) 2017-03-08 17:15:54 +02:00
xdrlib.py
zipapp.py bpo-31638: Add compression support to zipapp (GH-3819) 2017-09-29 18:31:52 +01:00
zipfile.py bpo-31370: Remove support for threads-less builds (#3385) 2017-09-07 18:56:24 +02:00