This commit is contained in:
Anas Khan 2026-09-16 00:25:38 -07:00 committed by GitHub
commit 3adec5aa69
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 30 additions and 1 deletions

View file

@ -75,7 +75,7 @@ def process_audio_file(audio_file: FileTypes) -> ProcessedAudioFile:
file_path: Final = str(audio_file)
with open(file_path, "rb") as f:
file_content = f.read()
filename = file_path.split("/")[-1]
filename = os.path.basename(file_path)
elif isinstance(audio_file, tuple):
# Tuple format: (filename, content, content_type) or (filename, content)
if len(audio_file) >= 2:

View file

@ -69,6 +69,35 @@ class TestProcessAudioFile:
with pytest.raises(ValueError, match="does not accept bare str inputs"):
process_audio_file("/etc/passwd")
def test_process_windows_pathlib_input_basename(self):
"""A Windows path must yield only the basename, not the full drive path.
On Windows, str(Path('C:/dir/name.mp3')) is 'C:\\dir\\name.mp3', which
contains no '/'. Deriving the filename with str.split('/')[-1] would send
the entire path (drive letter and backslashes) to the provider as the
multipart file name. os.path is patched to ntpath here to reproduce
Windows semantics on any host.
"""
import ntpath
from pathlib import PureWindowsPath
windows_path = PureWindowsPath("C:/Users/me/audio recording.mp3")
test_content = b"test audio content"
with (
patch("litellm.litellm_core_utils.audio_utils.utils.os.path", ntpath),
patch(
"litellm.litellm_core_utils.audio_utils.utils.open",
mock_open(read_data=test_content),
create=True,
),
):
result = process_audio_file(windows_path)
assert result.file_content == test_content
assert result.filename == "audio recording.mp3"
assert result.content_type == "audio/mpeg"
def test_process_tuple_input_with_bytes(self):
"""Test processing tuple input with bytes content"""
filename = "test.wav"