From b94d9effaf9eb98741ea3e3512766de449b31eb9 Mon Sep 17 00:00:00 2001 From: Giannis Kitsos Kalyvianakis <72870935+GiannisKitsos@users.noreply.github.com> Date: Mon, 11 Apr 2022 10:16:30 +0300 Subject: [PATCH] extract extension based on file's content (#2330) * extract extension based on file's content * Add python-magic dependency * fix the _estimate_extension function and lowercase the file extensions * check if the FileTypeClassifier can be imported * add test and new file types * fix typing * import Optional * revert Optional and make sure a string is always returned * fix test so that it skips markdown files * Emulate Code & Docs action * Generate schemas * Tidy up test code & extensioness files * Improve error messages * Revert schema changes * Emulate black and docs CI again --- haystack/nodes/file_classifier/__init__.py | 6 +++- haystack/nodes/file_classifier/file_type.py | 29 ++++++++++++++++---- setup.cfg | 1 + test/samples/extensionless_files/docx_file | Bin 0 -> 11899 bytes test/samples/extensionless_files/gif_file | Bin 0 -> 64 bytes test/samples/extensionless_files/html_file | 2 ++ test/samples/extensionless_files/jpg_file | Bin 0 -> 6427 bytes test/samples/extensionless_files/mp3_file | Bin 0 -> 2342 bytes test/samples/extensionless_files/odt_file | Bin 0 -> 8277 bytes test/samples/extensionless_files/pdf_file | Bin 0 -> 1117 bytes test/samples/extensionless_files/png_file | Bin 0 -> 4747 bytes test/samples/extensionless_files/pptx_file | Bin 0 -> 32936 bytes test/samples/extensionless_files/txt_file | 1 + test/samples/extensionless_files/wav_file | Bin 0 -> 17718 bytes test/samples/extensionless_files/zip_file | Bin 0 -> 238 bytes test/test_filetype_classifier.py | 26 +++++++++++++++++- 16 files changed, 58 insertions(+), 7 deletions(-) create mode 100644 test/samples/extensionless_files/docx_file create mode 100644 test/samples/extensionless_files/gif_file create mode 100644 test/samples/extensionless_files/html_file create mode 100644 test/samples/extensionless_files/jpg_file create mode 100644 test/samples/extensionless_files/mp3_file create mode 100644 test/samples/extensionless_files/odt_file create mode 100644 test/samples/extensionless_files/pdf_file create mode 100644 test/samples/extensionless_files/png_file create mode 100644 test/samples/extensionless_files/pptx_file create mode 100644 test/samples/extensionless_files/txt_file create mode 100644 test/samples/extensionless_files/wav_file create mode 100644 test/samples/extensionless_files/zip_file diff --git a/haystack/nodes/file_classifier/__init__.py b/haystack/nodes/file_classifier/__init__.py index 4246a80e1..e742d104d 100644 --- a/haystack/nodes/file_classifier/__init__.py +++ b/haystack/nodes/file_classifier/__init__.py @@ -1 +1,5 @@ -from haystack.nodes.file_classifier.file_type import FileTypeClassifier +from haystack.utils.import_utils import safe_import + +FileTypeClassifier = safe_import( + "haystack.nodes.file_classifier.file_type", "FileTypeClassifier", "preprocessing" +) # Has optional dependencies diff --git a/haystack/nodes/file_classifier/file_type.py b/haystack/nodes/file_classifier/file_type.py index 78b3b87f6..9db1145f0 100644 --- a/haystack/nodes/file_classifier/file_type.py +++ b/haystack/nodes/file_classifier/file_type.py @@ -1,6 +1,8 @@ +import mimetypes from multiprocessing.sharedctypes import Value from typing import List, Union from pathlib import Path +import magic from haystack.nodes.base import BaseComponent @@ -28,12 +30,24 @@ class FileTypeClassifier(BaseComponent): if len(supported_types) > 10: raise ValueError("supported_types can't have more than 10 values.") if len(set(supported_types)) != len(supported_types): - raise ValueError("supported_types can't contain duplicate values.") + duplicates = supported_types + for item in set(supported_types): + duplicates.remove(item) + raise ValueError(f"supported_types can't contain duplicate values ({duplicates}).") super().__init__() self.supported_types = supported_types + def _estimate_extension(self, file_path: Path) -> str: + """ + Return the extension found based on the contents of the given file + + :param file_path: the path to extract the extension from + """ + extension = magic.from_file(str(file_path), mime=True) + return mimetypes.guess_extension(extension) or "" + def _get_extension(self, file_paths: List[Path]) -> str: """ Return the extension found in the given list of files. @@ -41,12 +55,17 @@ class FileTypeClassifier(BaseComponent): If this is not true, it throws an exception. :param file_paths: the paths to extract the extension from - :return: a set of strings with all the extensions (without duplicates) + :return: a set of strings with all the extensions (without duplicates), the extension will be guessed if the file has none """ - extension = file_paths[0].suffix + extension = file_paths[0].suffix.lower() + if extension == "": + extension = self._estimate_extension(file_paths[0]) for path in file_paths: - if path.suffix != extension: + path_suffix = path.suffix.lower() + if path_suffix == "": + path_suffix = self._estimate_extension(path) + if path_suffix != extension: raise ValueError(f"Multiple file types are not allowed at once.") return extension.lstrip(".") @@ -68,7 +87,7 @@ class FileTypeClassifier(BaseComponent): index = self.supported_types.index(extension) + 1 except ValueError: raise ValueError( - f"Files of type '{extension}' are not supported. " + f"Files of type '{extension}' ({paths[0]}) are not supported. " f"The supported types are: {self.supported_types}. " "Consider using the 'supported_types' parameter to " "change the types accepted by this node." diff --git a/setup.cfg b/setup.cfg index f2e897c07..398231124 100644 --- a/setup.cfg +++ b/setup.cfg @@ -159,6 +159,7 @@ crawler = preprocessing = beautifulsoup4 markdown + python-magic # Depends on libmagic: https://pypi.org/project/python-magic/ ocr = pytesseract==0.3.7 pillow diff --git a/test/samples/extensionless_files/docx_file b/test/samples/extensionless_files/docx_file new file mode 100644 index 0000000000000000000000000000000000000000..05e64e82f34fd9794319124f9c6c9c02e8bfd3f5 GIT binary patch literal 11899 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 KHIL@!-Twd@?=$HD literal 0 HcmV?d00001 diff --git a/test/samples/extensionless_files/gif_file b/test/samples/extensionless_files/gif_file new file mode 100644 index 0000000000000000000000000000000000000000..8cf3628fdbf1e910c59b29f729b17f2d63a3d99e GIT binary patch literal 64 zcmZ?wbhEHbWMp7uXkcUjg8%>jEB+I7E=o--Nlj5G&n(GMaQE~LU{L(Y!pH?wr2|p~ NQqI7{ +sample \ No newline at end of file diff --git a/test/samples/extensionless_files/jpg_file b/test/samples/extensionless_files/jpg_file new file mode 100644 index 0000000000000000000000000000000000000000..f478491eab5ee36eb57d8ccd3c11cb681253b98f GIT binary patch literal 6427 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 ZfZs-FHAM`}tH-V*e_&+LnV`D5`ah36hK~RM literal 0 HcmV?d00001 diff --git a/test/samples/extensionless_files/pdf_file b/test/samples/extensionless_files/pdf_file new file mode 100644 index 0000000000000000000000000000000000000000..ff7a0d6e7595ee90e1f09210243aac9d9937683b GIT binary patch literal 1117 zcmah|&u-H&80U!m6uwm3K*LV#I1Q>QHAyo~46RCw1nYJPsn-QcTqO?bxFPWvNL;ue z?F7=eaO(@~zzcBVHTax%UDO?jl-U0H_kF+bUs{7O+P9tv)LMRB{#sryzaSe^tX{uC zoenvY`BYzE21rbzY^G&FqFJJ4C{s0&-7YG1A(MA#@tNJQ(eB?zBRZfrjD8UbkqNK`sV~)o_<6RuCE?mA(>CscCa&2$S9Z%cg$rCIh!yL=-i@WgOW()8XH!O z$e>W^Q0g&(bjV09^jXu$x-%MG&LtTnQ}Zb#IN-(siDjv(B9$dJ0x@|mCt2dF#hAiT zST=S&`-~hEs+vPthGbMEc{w*8(n}HyNhsfEsf-VNa)@Dj)AHm538ZzZYczbPG)La=UuKcM&x)d^Iobm zm5*1h$jetJIIm{2)rW%Xqa>g1%6$LDaIaa<_MQI#+OJj7iTY7QspC@W+LQ_pRt~FU z&fU5{lPZ8%!S$7!nnAv;fRKYE|P2}3-dD$vkww`Bvwje(_t9@Oj94!tPrZ4I(cJ1K)Q- aD`dXQSYT$O)JdW1QoGDUtycdyLjM5b{wS3I literal 0 HcmV?d00001 diff --git a/test/samples/extensionless_files/png_file b/test/samples/extensionless_files/png_file new file mode 100644 index 0000000000000000000000000000000000000000..a1016c371b20aab34ff00ca6e9fec4626dfbc947 GIT binary patch literal 4747 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 E0Me20-T(jq literal 0 HcmV?d00001 diff --git a/test/samples/extensionless_files/pptx_file b/test/samples/extensionless_files/pptx_file new file mode 100644 index 0000000000000000000000000000000000000000..dfad289cd67d9fc76647cd2d21757a12d8201ad1 GIT binary patch literal 32936 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