diff --git a/repo2docker/utils.py b/repo2docker/utils.py index 9c2769e1d..05ba1e535 100644 --- a/repo2docker/utils.py +++ b/repo2docker/utils.py @@ -8,7 +8,7 @@ from functools import partial from shutil import copy2, copystat -import chardet +import charset_normalizer from traitlets import Integer, TraitError @@ -94,21 +94,13 @@ def chdir(path): def open_guess_encoding(path): """ Open a file in text mode, specifying its encoding, - that we guess using chardet. + that we guess using charset_normalizer. """ - detector = chardet.universaldetector.UniversalDetector() with open(path, "rb") as f: - for line in f.readlines(): - detector.feed(line) - if detector.done: - break - detector.close() + detector = charset_normalizer.from_fp(f) - file = open(path, encoding=detector.result["encoding"]) - try: + with open(path, encoding=detector.best().encoding) as file: yield file - finally: - file.close() def validate_and_generate_port_mapping(port_mappings): diff --git a/setup.py b/setup.py index d629d2e23..754dc59b4 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ def get_identifier(json): name="jupyter-repo2docker", version=versioneer.get_version(), install_requires=[ - "chardet", + "charset-normalizer", "docker!=5.0.0", "entrypoints", "escapism",