diff --git a/src/markitdown/__main__.py b/src/markitdown/__main__.py index fa68a0d..353be84 100644 --- a/src/markitdown/__main__.py +++ b/src/markitdown/__main__.py @@ -3,7 +3,6 @@ # SPDX-License-Identifier: MIT import argparse import sys -import shutil from textwrap import dedent from .__about__ import __version__ from ._markitdown import MarkItDown, DocumentConverterResult @@ -75,8 +74,6 @@ def main(): parser.add_argument("filename", nargs="?") args = parser.parse_args() - which_exiftool = shutil.which("exiftool") - if args.use_docintel: if args.endpoint is None: raise ValueError( @@ -84,11 +81,9 @@ def main(): ) elif args.filename is None: raise ValueError("Filename is required when using Document Intelligence.") - markitdown = MarkItDown( - exiftool_path=which_exiftool, docintel_endpoint=args.endpoint - ) + markitdown = MarkItDown(docintel_endpoint=args.endpoint) else: - markitdown = MarkItDown(exiftool_path=which_exiftool) + markitdown = MarkItDown() if args.filename is None: result = markitdown.convert_stream(sys.stdin.buffer) diff --git a/src/markitdown/_markitdown.py b/src/markitdown/_markitdown.py index 71e7a8e..adeebfc 100644 --- a/src/markitdown/_markitdown.py +++ b/src/markitdown/_markitdown.py @@ -967,18 +967,6 @@ class MediaConverter(DocumentConverter): def _get_metadata(self, local_path, exiftool_path=None): if not exiftool_path: - which_exiftool = shutil.which("exiftool") - if which_exiftool: - warn( - f"""Implicit discovery of 'exiftool' is disabled. If you would like to continue to use exiftool in MarkItDown, please set the exiftool_path parameter in the MarkItDown consructor. E.g., - - md = MarkItDown(exiftool_path="{which_exiftool}") - -This warning will be removed in future releases. -""", - DeprecationWarning, - ) - return None else: try: @@ -1499,34 +1487,25 @@ class MarkItDown: if exiftool_path is None: exiftool_path = os.environ.get("EXIFTOOL_PATH") - # Handle deprecation notices - ############################# - if mlm_client is not None: - if llm_client is None: - warn( - "'mlm_client' is deprecated, and was renamed 'llm_client'.", - DeprecationWarning, - ) - llm_client = mlm_client - mlm_client = None - else: - raise ValueError( - "'mlm_client' is deprecated, and was renamed 'llm_client'. Do not use both at the same time. Just use 'llm_client' instead." - ) - - if mlm_model is not None: - if llm_model is None: - warn( - "'mlm_model' is deprecated, and was renamed 'llm_model'.", - DeprecationWarning, - ) - llm_model = mlm_model - mlm_model = None - else: - raise ValueError( - "'mlm_model' is deprecated, and was renamed 'llm_model'. Do not use both at the same time. Just use 'llm_model' instead." - ) - ############################# + # Still none? Check well-known paths + if exiftool_path is None: + candidate = shutil.which("exiftool") + if candidate: + candidate = os.path.abspath(candidate) + if any( + d == os.path.dirname(candidate) + for d in [ + "/usr/bin", + "/usr/local/bin", + "/opt", + "/opt/bin", + "/opt/local/bin", + "/opt/homebrew/bin" "C:\\Windows\\System32", + "C:\\Program Files", + "C:\\Program Files (x86)", + ] + ): + exiftool_path = candidate self._llm_client = llm_client self._llm_model = llm_model diff --git a/tests/test_markitdown.py b/tests/test_markitdown.py index 689d6f3..820e1c7 100644 --- a/tests/test_markitdown.py +++ b/tests/test_markitdown.py @@ -6,8 +6,6 @@ import shutil import pytest import requests -from warnings import catch_warnings, resetwarnings - from markitdown import MarkItDown skip_remote = ( @@ -277,18 +275,6 @@ def test_markitdown_local() -> None: reason="do not run if exiftool is not installed", ) def test_markitdown_exiftool() -> None: - # Test the automatic discovery of exiftool throws a warning - # and is disabled - try: - with catch_warnings(record=True) as w: - markitdown = MarkItDown() - result = markitdown.convert(os.path.join(TEST_FILES_DIR, "test.jpg")) - assert len(w) == 1 - assert w[0].category is DeprecationWarning - assert result.text_content.strip() == "" - finally: - resetwarnings() - # Test explicitly setting the location of exiftool which_exiftool = shutil.which("exiftool") markitdown = MarkItDown(exiftool_path=which_exiftool) @@ -306,40 +292,6 @@ def test_markitdown_exiftool() -> None: assert target in result.text_content -def test_markitdown_deprecation() -> None: - try: - with catch_warnings(record=True) as w: - test_client = object() - markitdown = MarkItDown(mlm_client=test_client) - assert len(w) == 1 - assert w[0].category is DeprecationWarning - assert markitdown._llm_client == test_client - finally: - resetwarnings() - - try: - with catch_warnings(record=True) as w: - markitdown = MarkItDown(mlm_model="gpt-4o") - assert len(w) == 1 - assert w[0].category is DeprecationWarning - assert markitdown._llm_model == "gpt-4o" - finally: - resetwarnings() - - try: - test_client = object() - markitdown = MarkItDown(mlm_client=test_client, llm_client=test_client) - assert False - except ValueError: - pass - - try: - markitdown = MarkItDown(mlm_model="gpt-4o", llm_model="gpt-4o") - assert False - except ValueError: - pass - - @pytest.mark.skipif( skip_llm, reason="do not run llm tests without a key", @@ -364,5 +316,4 @@ if __name__ == "__main__": # test_markitdown_remote() # test_markitdown_local() test_markitdown_exiftool() - # test_markitdown_deprecation() # test_markitdown_llm()