Browse Source

bpo-39481: PEP 585 for difflib, filecmp, fileinput (#19422)

pull/14908/merge
Ethan Smith 6 years ago
committed by GitHub
parent
commit
e3ec44d692
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      Lib/difflib.py
  2. 4
      Lib/filecmp.py
  3. 3
      Lib/fileinput.py
  4. 6
      Lib/test/test_genericalias.py

4
Lib/difflib.py

@ -32,6 +32,7 @@ __all__ = ['get_close_matches', 'ndiff', 'restore', 'SequenceMatcher',
from heapq import nlargest as _nlargest
from collections import namedtuple as _namedtuple
from types import GenericAlias
Match = _namedtuple('Match', 'a b size')
@ -685,6 +686,9 @@ class SequenceMatcher:
# shorter sequence
return _calculate_ratio(min(la, lb), la + lb)
__class_getitem__ = classmethod(GenericAlias)
def get_close_matches(word, possibilities, n=3, cutoff=0.6):
"""Use SequenceMatcher to return list of the best "good enough" matches.

4
Lib/filecmp.py

@ -13,6 +13,7 @@ Functions:
import os
import stat
from itertools import filterfalse
from types import GenericAlias
__all__ = ['clear_cache', 'cmp', 'dircmp', 'cmpfiles', 'DEFAULT_IGNORES']
@ -247,6 +248,9 @@ class dircmp:
self.methodmap[attr](self)
return getattr(self, attr)
__class_getitem__ = classmethod(GenericAlias)
def cmpfiles(a, b, common, shallow=True):
"""Compare common files in two directories.

3
Lib/fileinput.py

@ -73,6 +73,7 @@ XXX Possible additions:
"""
import sys, os
from types import GenericAlias
__all__ = ["input", "close", "nextfile", "filename", "lineno", "filelineno",
"fileno", "isfirstline", "isstdin", "FileInput", "hook_compressed",
@ -391,6 +392,8 @@ class FileInput:
def isstdin(self):
return self._isstdin
__class_getitem__ = classmethod(GenericAlias)
def hook_compressed(filename, mode):
ext = os.path.splitext(filename)[1]

6
Lib/test/test_genericalias.py

@ -7,6 +7,9 @@ from collections import (
)
from collections.abc import *
from contextlib import AbstractContextManager, AbstractAsyncContextManager
from difflib import SequenceMatcher
from filecmp import dircmp
from fileinput import FileInput
from mmap import mmap
from ipaddress import IPv4Network, IPv4Interface, IPv6Network, IPv6Interface
from itertools import chain
@ -25,6 +28,9 @@ class BaseTest(unittest.TestCase):
for t in (type, tuple, list, dict, set, frozenset, enumerate,
mmap,
defaultdict, deque,
SequenceMatcher,
dircmp,
FileInput,
OrderedDict, Counter, UserDict, UserList,
Pattern, Match,
AbstractContextManager, AbstractAsyncContextManager,

Loading…
Cancel
Save