openai/openai-python

Public

mirrored from https://github.com/openai/openai-pythonAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
custom-code-from-generated-20260521

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

tests/test_extract_files.py

91lines · modeblame

08b8179aDavid Schnurr2 years ago1from __future__ import annotations
2
3from typing import Sequence
4
5import pytest
6
400f749astainless-app[bot]2 months ago7from openai._types import FileTypes, ArrayFormat
08b8179aDavid Schnurr2 years ago8from openai._utils import extract_files
9
10
11def test_removes_files_from_input() -> None:
12query = {"foo": "bar"}
13assert extract_files(query, paths=[]) == []
14assert query == {"foo": "bar"}
15
16query2 = {"foo": b"Bar", "hello": "world"}
17assert extract_files(query2, paths=[["foo"]]) == [("foo", b"Bar")]
18assert query2 == {"hello": "world"}
19
20query3 = {"foo": {"foo": {"bar": b"Bar"}}, "hello": "world"}
21assert extract_files(query3, paths=[["foo", "foo", "bar"]]) == [("foo[foo][bar]", b"Bar")]
22assert query3 == {"foo": {"foo": {}}, "hello": "world"}
23
24query4 = {"foo": {"bar": b"Bar", "baz": "foo"}, "hello": "world"}
25assert extract_files(query4, paths=[["foo", "bar"]]) == [("foo[bar]", b"Bar")]
26assert query4 == {"hello": "world", "foo": {"baz": "foo"}}
27
28
29def test_multiple_files() -> None:
30query = {"documents": [{"file": b"My first file"}, {"file": b"My second file"}]}
31assert extract_files(query, paths=[["documents", "<array>", "file"]]) == [
32("documents[][file]", b"My first file"),
33("documents[][file]", b"My second file"),
34]
35assert query == {"documents": [{}, {}]}
36
37
2956eeefstainless-app[bot]2 months ago38def test_top_level_file_array() -> None:
39query = {"files": [b"file one", b"file two"], "title": "hello"}
400f749astainless-app[bot]2 months ago40assert extract_files(query, paths=[["files", "<array>"]]) == [("files[]", b"file one"), ("files[]", b"file two")]
2956eeefstainless-app[bot]2 months ago41assert query == {"title": "hello"}
42
43
08b8179aDavid Schnurr2 years ago44@pytest.mark.parametrize(
45"query,paths,expected",
46[
47[
48{"foo": {"bar": "baz"}},
49[["foo", "<array>", "bar"]],
50[],
51],
52[
53{"foo": ["bar", "baz"]},
54[["foo", "bar"]],
55[],
56],
57[
58{"foo": {"bar": "baz"}},
59[["foo", "foo"]],
60[],
61],
62],
86b263f1Stainless Bot2 years ago63ids=["dict expecting array", "array expecting dict", "unknown keys"],
08b8179aDavid Schnurr2 years ago64)
65def test_ignores_incorrect_paths(
66query: dict[str, object],
67paths: Sequence[Sequence[str]],
68expected: list[tuple[str, FileTypes]],
69) -> None:
70assert extract_files(query, paths=paths) == expected
400f749astainless-app[bot]2 months ago71
72
73@pytest.mark.parametrize(
74"array_format,expected_top_level,expected_nested",
75[
76("brackets", [("files[]", b"a"), ("files[]", b"b")], [("items[][file]", b"a"), ("items[][file]", b"b")]),
77("repeat", [("files", b"a"), ("files", b"b")], [("items[file]", b"a"), ("items[file]", b"b")]),
78("comma", [("files", b"a"), ("files", b"b")], [("items[file]", b"a"), ("items[file]", b"b")]),
79("indices", [("files[0]", b"a"), ("files[1]", b"b")], [("items[0][file]", b"a"), ("items[1][file]", b"b")]),
80],
81)
82def test_array_format_controls_file_field_names(
83array_format: ArrayFormat,
84expected_top_level: list[tuple[str, FileTypes]],
85expected_nested: list[tuple[str, FileTypes]],
86) -> None:
87top_level = {"files": [b"a", b"b"]}
88assert extract_files(top_level, paths=[["files", "<array>"]], array_format=array_format) == expected_top_level
89
90nested = {"items": [{"file": b"a"}, {"file": b"b"}]}
91assert extract_files(nested, paths=[["items", "<array>", "file"]], array_format=array_format) == expected_nested