Skip to content

fix: handle pathlib.Path in get_pdf_name to avoid UnboundLocalError#349

Open
ChiragB254 wants to merge 1 commit into
VectifyAI:devfrom
ChiragB254:fix/get-pdf-name-pathlib-path
Open

fix: handle pathlib.Path in get_pdf_name to avoid UnboundLocalError#349
ChiragB254 wants to merge 1 commit into
VectifyAI:devfrom
ChiragB254:fix/get-pdf-name-pathlib-path

Conversation

@ChiragB254

Copy link
Copy Markdown

Summary

get_pdf_name() in pageindex/index/utils.py only handled str and BytesIO inputs. Passing a pathlib.Path — which is idiomatic Python and already imported in the same file — left pdf_name unbound and raised UnboundLocalError at the return statement, crashing JsonLogger.__init__ before any indexing begins.

Root cause

# before
def get_pdf_name(pdf_path):
    if isinstance(pdf_path, str):
        pdf_name = os.path.basename(pdf_path)
    elif isinstance(pdf_path, BytesIO):
        ...
    return pdf_name  # UnboundLocalError if pdf_path is a Path or anything else

Fix

# after
def get_pdf_name(pdf_path):
    if isinstance(pdf_path, (str, Path)):   # Path already imported at top of file
        pdf_name = os.path.basename(pdf_path)  # os.path.basename handles Path natively
    elif isinstance(pdf_path, BytesIO):
        ...
    else:
        pdf_name = 'Untitled'   # safe fallback for any unexpected type
    return pdf_name

os.path.basename handles pathlib.Path natively (Python 3.6+), so no extra conversion is needed.

Tests added (tests/test_get_pdf_name.py)

Test Trigger
test_get_pdf_name_str existing str path still works
test_get_pdf_name_pathlib_path previously raised UnboundLocalError
test_get_pdf_name_pathlib_relative relative Path also works
test_get_pdf_name_unknown_type_returns_untitled any other type returns safe fallback
tests/test_get_pdf_name.py::test_get_pdf_name_str                    PASSED
tests/test_get_pdf_name.py::test_get_pdf_name_pathlib_path           PASSED
tests/test_get_pdf_name.py::test_get_pdf_name_pathlib_relative       PASSED
tests/test_get_pdf_name.py::test_get_pdf_name_unknown_type_returns_untitled PASSED

get_pdf_name() only handled str and BytesIO; passing a pathlib.Path
left pdf_name unbound and raised UnboundLocalError on return.

- Extend the str branch to accept Path via isinstance(pdf_path, (str, Path))
  (os.path.basename handles Path natively, so no extra conversion needed)
- Add a safe else fallback returning 'Untitled' for any unrecognised type
- Add tests covering str, Path (absolute + relative), and unknown type
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant