diff --git a/.mailmap b/.mailmap index 206df6cb..ea71b9c6 100644 --- a/.mailmap +++ b/.mailmap @@ -3,3 +3,4 @@ James Braza Michael Skarlinski mskarlin <12701035+mskarlin@users.noreply.github.com> Ryan-Rhys Griffiths Siddharth Narayanan +Ludovico Mitchener ludomitch diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 4479abb6..6af91ba6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -47,6 +47,7 @@ repos: - id: codespell additional_dependencies: [".[toml]"] exclude_types: [jupyter] + exclude: '.*\.b64$' - repo: https://github.com/pappasam/toml-sort rev: v0.24.2 hooks: diff --git a/src/aviary/message.py b/src/aviary/message.py index 62923b9a..4afc45d2 100644 --- a/src/aviary/message.py +++ b/src/aviary/message.py @@ -6,7 +6,7 @@ from pydantic import BaseModel, Field, field_validator, model_validator -from aviary.utils import check_if_valid_base64, encode_image_to_base64 +from aviary.utils import encode_image_to_base64, validate_base64_image if TYPE_CHECKING: from logging import LogRecord @@ -147,7 +147,7 @@ def create_message( { "type": "image_url", "image_url": { - "url": check_if_valid_base64(image) + "url": validate_base64_image(image) # If image is a string, assume it's already a base64 encoded image if isinstance(image, str) else encode_image_to_base64(image) diff --git a/src/aviary/utils.py b/src/aviary/utils.py index c4ecf38c..075bff51 100644 --- a/src/aviary/utils.py +++ b/src/aviary/utils.py @@ -70,10 +70,12 @@ def encode_image_to_base64(img: "np.ndarray") -> str: ) -def check_if_valid_base64(image: str) -> str: - """Check if the input string is a valid base64 encoded image.""" +def validate_base64_image(image: str) -> str: + """Validate if the input string is a valid base64 encoded image and if it is, return the image.""" try: - base64.b64decode(image) + # Support for inclusion of the data:image/ url prefix + test_image = image.split(",")[1] if image.startswith("data:image/") else image + base64.b64decode(test_image) except Exception as err: raise ValueError("Invalid base64 encoded image") from err return image diff --git a/tests/fixtures/test_images/sample_image1.b64 b/tests/fixtures/test_images/sample_jpeg_image.b64 similarity index 100% rename from tests/fixtures/test_images/sample_image1.b64 rename to tests/fixtures/test_images/sample_jpeg_image.b64 diff --git a/tests/fixtures/test_images/sample_png_image.b64 b/tests/fixtures/test_images/sample_png_image.b64 new file mode 100644 index 00000000..15c4b918 --- /dev/null +++ b/tests/fixtures/test_images/sample_png_image.b64 @@ -0,0 +1 @@ +data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAksAAAHHCAYAAACvJxw8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAACu10lEQVR4nOydeXwU9f3/X7P3bpLNfUIg4ZBDuQRFqFWL4RDvqlVrS0HFqqVqsfYr/VUUL6q11qNU6o2tVuvdKiIRpSgiKIrIKVe4cp+b7Gbv+f0x+5ndJclmk8zxmdnP8/HgoZmdnfnMez/z+bw/7+vD8TzPg8FgMBgMBoPRLQa1G8BgMBgMBoNBM0xZYjAYDAaDwUgAU5YYDAaDwWAwEsCUJQaDwWAwGIwEMGWJwWAwGAwGIwFMWWIwGAwGg8FIAFOWGAwGg8FgMBLAlCUGg8FgMBiMBDBlicFgMBgMBiMBTFliMChm/fr14DgO69evV7spcfzjH//A6NGjYTabkZWVpXZzJEcPz3fOOefgnHPOUbsZDIYuYMoSg6ECL774IjiOE//ZbDacdNJJWLRoEerq6iS5x+rVq3HPPfdIcq1Y9uzZg/nz52P48OF45pln8PTTT/d47j333BP3nA6HA0OGDMGFF16IF154AT6fr9/toOH59IjH48E999xDnYLOYKiJSe0GMBipzL333ovy8nJ4vV589tlneOqpp7B69Wrs2LEDDodjQNdevXo1VqxYIblCsX79eoTDYTz++OMYMWJEUt956qmnkJ6eDp/Ph+PHj+PDDz/Etddei8ceewzvvfceSktL+9wOmp5PT3g8HixbtgwAmGWKwYjAlCUGQ0XOO+88TJkyBQBw/fXXIzc3F48++ijeffddXH311Sq3rnvq6+sBoE/uqcsvvxx5eXni30uXLsXLL7+MefPm4YorrsAXX3whdTP7TbLPx/M8vF4v7Ha7Aq1iMBhqwtxwDAZFzJgxAwBw6NChhOe9/vrrmDx5Mux2O/Ly8vCzn/0Mx48fFz+fP38+VqxYAQBxbrDe+Nvf/oaTTz4ZVqsVJSUl+NWvfoXW1lbx87KyMtx9990AgPz8fHAc12/LzjXXXIPrr78emzdvRmVlpXj8008/xRVXXIEhQ4bAarWitLQUv/nNb9DZ2Zn08z3yyCOYPn06cnNzYbfbMXnyZLzxxhu9tinR85WVleGCCy7Ahx9+iClTpsBut+Pvf/87AODgwYO44oorkJOTA4fDgTPOOAPvv/9+3LVJ/Nm///1vLFu2DIMGDUJGRgYuv/xytLW1wefz4bbbbkNBQQHS09OxYMGCpN2UTz/9NIYPHw673Y7TTz8dn376aZdz/H4/li5dismTJyMzMxNpaWn44Q9/iE8++UQ8p6qqCvn5+QCAZcuWiXIlMti+fTvmz5+PYcOGwWazoaioCNdeey2ampqSaqfX68U999yDk046CTabDcXFxfjxj3+MAwcOiOe8+uqrmDx5MjIyMuB0OjFu3Dg8/vjjAICvvvoKHMdh1apVXa794YcfguM4vPfee0m1hcHoC8yyxGBQBJk0cnNzezznxRdfxIIFC3Daaadh+fLlqKurw+OPP46NGzfim2++QVZWFn75y1+iuroalZWV+Mc//pHUve+55x4sW7YMFRUVuOmmm7B371489dRT+PLLL7Fx40aYzWY89thjeOmll/D222+LrrXx48f3+3l//vOf4+mnn8batWsxc+ZMAIIi6PF4cNNNNyE3NxdbtmzBk08+iWPHjuH1118HgF6f7/HHH8dFF12Ea665Bn6/H6+++iquuOIKvPfeezj//PN7bE9vz7d3715cffXV+OUvf4mFCxdi1KhRqKurw/Tp0+HxeHDLLbcgNzcXq1atwkUXXYQ33ngDl156adw9li9fDrvdjjvvvBP79+/Hk08+CbPZDIPBgJaWFtxzzz344osv8OKLL6K8vBxLly5NKMPnnnsOv/zlLzF9+nTcdtttOHjwIC666CLk5OTEuTddLheeffZZXH311Vi4cCHa29vx3HPPYfbs2diyZQsmTpyI/Px8PPXUU7jppptw6aWX4sc//jEAiDKorKzEwYMHsWDBAhQVFWHnzp14+umnsXPnTnzxxRcJFfJQKIQLLrgA69atw1VXXYVbb70V7e3tqKysxI4dOzB8+HBUVlbi6quvxrnnnouHHnoIALB7925s3LgRt956K6ZMmYJhw4bh3//+N37xi1/EXf+1115DdnY2Zs+enVBeDEa/4BkMhuK88MILPAD+o48+4hsaGvijR4/yr776Kp+bm8vb7Xb+2LFjPM/z/CeffMID4D/55BOe53ne7/fzBQUF/CmnnMJ3dnaK13vvvfd4APzSpUvFY7/61a/4ZF/x+vp63mKx8LNmzeJDoZB4/K9//SsPgH/++efFY3fffTcPgG9oaOj1ur2d29LSwgPgL730UvGYx+Ppct7y5ct5juP4w4cPJ/V8J17D7/fzp5xyCj9jxox+t3no0KE8AH7NmjVxx2+77TYeAP/pp5+Kx9rb2/ny8nK+rKxMlCf5LU855RTe7/eL51599dU8x3H8eeedF3fdadOm8UOHDk3YVtIfJk6cyPt8PvH4008/zQPgzz77bPFYMBiMO4fnBfkXFhby1157rXisoaGBB8DffffdXe7X3W/zr3/9iwfAb9iwIWFbn3/+eR4A/+ijj3b5LBwO8zzP87feeivvdDr5YDDY43WWLFnCm81mvrm5WTzm8/n4rKysuOdgMKSEueEYDBWpqKhAfn4+SktLcdVVVyE9PR1vv/02Bg0a1O35X331Ferr63HzzTfDZrOJx88//3yMHj26i+snWT766CP4/X7cdtttMBiiw8LChQvhdDr7fd3eSE9PBwC0t7eLx2JjgNxuNxobGzF9+nTwPI9vvvkmqevGXqOlpQVtbW344Q9/iK+//npA7S0vL+9iuVi9ejVOP/10nHnmmeKx9PR03HDDDaiqqsKuXbvizp83bx7MZrP499SpU8HzPK699tq486ZOnYqjR48iGAz22B7SH2688UZYLBbx+Pz585GZmRl3rtFoFM8Jh8Nobm5GMBjElClTkpZLrFy9Xi8aGxtxxhlnAECv13jzzTeRl5eHX//6110+IxaprKwsuN3uOLfsiVx55ZUIBAJ46623xGNr165Fa2srrrzyyqSeg8HoK0xZYjBUZMWKFaisrMQnn3yCXbt24eDBgwndCIcPHwYAjBo1qstno0ePFj/vKz1d12KxYNiwYf2+bm90dHQAADIyMsRjR44cwfz585GTk4P09HTk5+fj7LPPBgC0tbUldd333nsPZ5xxBmw2G3JyckT3UrLf74ny8vIuxw4fPtzt7zFmzBjx81iGDBkS9zdRak7MCMzMzEQ4HE7YZnLtkSNHxh03m80YNmxYl/NXrVqF8ePHw2azITc3F/n5+Xj//feTlktzczNuvfVWFBYWwm63Iz8/X5RJb9c4cOAARo0aBZOp5+iPm2++GSeddBLOO+88DB48GNdeey3WrFkTd86ECRMwevRovPbaa+Kx1157DXl5eWLMH4MhNSxmicFQkdNPP13MhktFduzYAQBiin4o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 diff --git a/tests/test_messages.py b/tests/test_messages.py index 6e787238..b6ca5ce9 100644 --- a/tests/test_messages.py +++ b/tests/test_messages.py @@ -136,7 +136,7 @@ def test_dump(self, message: Message, expected: dict) -> None: ( [ np.zeros((32, 32, 3), dtype=np.uint8), # red square - load_base64_image("sample_image1.b64"), + load_base64_image("sample_jpeg_image.b64"), ], "What color are these squares? List each color.", None, @@ -151,7 +151,14 @@ def test_dump(self, message: Message, expected: dict) -> None: ), # Case 4: A string should be converted to a base64 encoded image ( - load_base64_image("sample_image1.b64"), + load_base64_image("sample_jpeg_image.b64"), + "What color is this square?", + None, + 2, # 1 image + 1 text + ), + # Case 5: A PNG image should be converted to a base64 encoded image + ( + load_base64_image("sample_png_image.b64"), "What color is this square?", None, 2, # 1 image + 1 text