diff --git a/renovate.json b/renovate.json index bbbbfe7..22b9288 100644 --- a/renovate.json +++ b/renovate.json @@ -15,6 +15,12 @@ "matchPackageNames": ["redis"], "allowedVersions": "<6.0.0" }, + { + "groupName": "ignore recent markitdown versions", + "matchManagers": ["pep621"], + "matchPackageNames": ["markitdown"], + "allowedVersions": "==0.0.2" + }, { "enabled": false, "groupName": "ignored js dependencies", diff --git a/src/backend/chat/llm_configuration.py b/src/backend/chat/llm_configuration.py index f50e85b..820fd68 100644 --- a/src/backend/chat/llm_configuration.py +++ b/src/backend/chat/llm_configuration.py @@ -18,7 +18,7 @@ from pydantic_ai.profiles import JsonSchemaTransformer def _get_setting_or_env_or_value(value: str) -> Any: """Get the value from environment variable, Django settings, or return the value as is.""" - from django.conf import settings # pylint: disable=import-outside-toplevel + from django.conf import settings # pylint: disable=import-outside-toplevel # noqa: PLC0415 if value.startswith("environ."): env_var = value.split("environ.")[1] diff --git a/src/backend/chat/tests/views/chat/conversations/test_conversation.py b/src/backend/chat/tests/views/chat/conversations/test_conversation.py index e94cc3c..47b2ff1 100644 --- a/src/backend/chat/tests/views/chat/conversations/test_conversation.py +++ b/src/backend/chat/tests/views/chat/conversations/test_conversation.py @@ -203,7 +203,7 @@ def test_post_conversation_data_protocol(api_client, mock_openai_stream, mock_uu { "finish_reason": "stop", "kind": "response", - "model_name": None, + "model_name": "test-model", "parts": [{"content": "Hello there", "id": None, "part_kind": "text"}], "provider_details": {"finish_reason": "stop"}, "provider_name": "openai", @@ -327,7 +327,7 @@ def test_post_conversation_text_protocol(api_client, mock_openai_stream, mock_uu { "finish_reason": "stop", "kind": "response", - "model_name": None, + "model_name": "test-model", "parts": [{"content": "Hello there", "id": None, "part_kind": "text"}], "provider_details": {"finish_reason": "stop"}, "provider_name": "openai", @@ -534,7 +534,7 @@ def test_post_conversation_with_image(api_client, mock_openai_stream_image, mock { "finish_reason": "stop", "kind": "response", - "model_name": None, + "model_name": "test-model", "parts": [{"content": "I see a cat in the picture.", "id": None, "part_kind": "text"}], "provider_details": {"finish_reason": "stop"}, "provider_name": "openai", @@ -697,7 +697,7 @@ def test_post_conversation_tool_call(api_client, mock_openai_stream_tool, mock_u { "finish_reason": "tool_call", "kind": "response", - "model_name": None, + "model_name": "test-model", "parts": [ { "args": '{"location":"Paris", "unit":"celsius"}', @@ -738,7 +738,7 @@ def test_post_conversation_tool_call(api_client, mock_openai_stream_tool, mock_u { "finish_reason": "stop", "kind": "response", - "model_name": None, + "model_name": "test-model", "parts": [ {"content": "The current weather in Paris is nice", "id": None, "part_kind": "text"} ], @@ -904,7 +904,7 @@ def test_post_conversation_tool_call_fails( { "finish_reason": "tool_call", "kind": "response", - "model_name": None, + "model_name": "test-model", "parts": [ { "args": '{"location":"Paris", "unit":"celsius"}', @@ -944,7 +944,7 @@ def test_post_conversation_tool_call_fails( { "finish_reason": "stop", "kind": "response", - "model_name": None, + "model_name": "test-model", "parts": [ {"content": "I cannot give you an answer to that.", "id": None, "part_kind": "text"} ], diff --git a/src/backend/chat/tests/views/chat/conversations/test_conversation_with_document_search_rag.py b/src/backend/chat/tests/views/chat/conversations/test_conversation_with_document_search_rag.py index 053ad97..63cc79c 100644 --- a/src/backend/chat/tests/views/chat/conversations/test_conversation_with_document_search_rag.py +++ b/src/backend/chat/tests/views/chat/conversations/test_conversation_with_document_search_rag.py @@ -452,7 +452,7 @@ def test_post_conversation_with_document_upload( # noqa:PLR0913 # pylint: disa assert chat_conversation.pydantic_messages[1] == { "finish_reason": "stop", "kind": "response", - "model_name": None, + "model_name": "test-model", "parts": [ { "content": "From the document, I can see that it says 'Hello PDF'.", diff --git a/src/backend/chat/tests/views/chat/conversations/test_conversation_with_history.py b/src/backend/chat/tests/views/chat/conversations/test_conversation_with_history.py index 4cc824f..fabbfe8 100644 --- a/src/backend/chat/tests/views/chat/conversations/test_conversation_with_history.py +++ b/src/backend/chat/tests/views/chat/conversations/test_conversation_with_history.py @@ -1359,7 +1359,7 @@ def test_post_conversation_with_existing_tool_history( assert history_conversation_with_tool.pydantic_messages[9] == { "finish_reason": "tool_call", "kind": "response", - "model_name": None, + "model_name": "test-model", "parts": [ { "args": '{"location":"Paris", "unit":"celsius"}', @@ -1402,7 +1402,7 @@ def test_post_conversation_with_existing_tool_history( assert history_conversation_with_tool.pydantic_messages[11] == { "finish_reason": "stop", "kind": "response", - "model_name": None, + "model_name": "test-model", "parts": [ {"content": "The current weather in Paris is nice", "id": None, "part_kind": "text"} ], diff --git a/src/backend/chat/tests/views/chat/conversations/test_conversation_with_web_search_rag.py b/src/backend/chat/tests/views/chat/conversations/test_conversation_with_web_search_rag.py index d50deaf..e78ecf6 100644 --- a/src/backend/chat/tests/views/chat/conversations/test_conversation_with_web_search_rag.py +++ b/src/backend/chat/tests/views/chat/conversations/test_conversation_with_web_search_rag.py @@ -422,7 +422,7 @@ def test_conversation_with_forced_web_search_no_history( assert chat_conversation.pydantic_messages[1] == { "finish_reason": "stop", "kind": "response", - "model_name": None, + "model_name": "test-model", "parts": [ { "content": "Based on the web search results, I can tell you that " diff --git a/src/backend/core/factories.py b/src/backend/core/factories.py index b175bb3..a96428a 100644 --- a/src/backend/core/factories.py +++ b/src/backend/core/factories.py @@ -1,4 +1,3 @@ -# ruff: noqa: S311 """ Core application factories """ diff --git a/src/backend/pyproject.toml b/src/backend/pyproject.toml index b4871af..0428e41 100644 --- a/src/backend/pyproject.toml +++ b/src/backend/pyproject.toml @@ -26,43 +26,43 @@ readme = "README.md" requires-python = ">=3.12" dependencies = [ "deprecated", - "beautifulsoup4==4.13.4", - "boto3==1.39.0", + "beautifulsoup4==4.13.5", + "boto3==1.40.38", "Brotli==1.1.0", "django-configurations==2.5.1", - "django-cors-headers==4.7.0", + "django-cors-headers==4.9.0", "django-countries==7.6.1", "django-filter==25.1", - "django-lasuite[all]==0.0.9", + "django-lasuite[all]==0.0.14", "django-parler==2.3", "django-pydantic-field==0.3.13", - "django-redis==5.4.0", + "django-redis==6.0.0", "django-storages[s3]==1.14.6", "django-timezone-field>=5.1", "django==5.2.6", - "djangorestframework==3.16.0", + "djangorestframework==3.16.1", "drf_spectacular==0.28.0", "dockerflow==2024.4.2", - "easy_thumbnails==2.10", + "easy_thumbnails==2.10.1", "factory_boy==3.3.3", "gunicorn==23.0.0", - "jsonschema==4.24.0", - "langfuse==3.3.4", - "lxml==5.4.0", - "markdown==3.8", + "jsonschema==4.25.1", + "langfuse==3.5.0", + "lxml==6.0.2", + "markdown==3.9", "markitdown==0.0.2", "mozilla-django-oidc==4.0.1", - "nested-multipart-parser==1.5.0", - "posthog==6.4.1", - "pydantic==2.11.7", - "pydantic-ai-slim[openai,mistral,mcp,evals,logfire]==1.0.8", - "psycopg[binary]==3.2.9", + "nested-multipart-parser==1.6.0", + "posthog==6.7.6", + "pydantic==2.11.9", + "pydantic-ai-slim[openai,mistral,mcp,evals,logfire]==1.0.10", + "psycopg[binary]==3.2.10", "PyJWT==2.10.1", "python-magic==0.4.27", "redis<6.0.0", - "requests==2.32.4", - "sentry-sdk==2.30.0", - "whitenoise==6.9.0", + "requests==2.32.5", + "sentry-sdk==2.38.0", + "whitenoise==6.11.0", ] [project.urls] @@ -75,24 +75,24 @@ dependencies = [ dev = [ "django-extensions==4.1", "django-test-migrations==1.5.0", - "drf-spectacular-sidecar==2025.6.1", - "freezegun==1.5.2", + "drf-spectacular-sidecar==2025.9.1", + "freezegun==1.5.5", "ipdb==0.13.13", - "ipython==9.3.0", - "pyfakefs==5.8.0", + "ipython==9.5.0", + "pyfakefs==5.9.3", "pylint-django==2.6.1", - "pylint==3.3.7", + "pylint==3.3.8", "pylint-pydantic==0.3.5", - "pytest-asyncio==1.1.0", - "pytest-cov==6.2.1", + "pytest-asyncio==1.2.0", + "pytest-cov==7.0.0", "pytest-django==4.11.1", - "pytest==8.4.0", + "pytest==8.4.2", "pytest-icdiff==0.9", - "pytest-xdist==3.7.0", - "responses==0.25.7", + "pytest-xdist==3.8.0", + "responses==0.25.8", "respx==0.22.0", - "ruff==0.11.13", - "types-requests==2.32.4.20250611", + "ruff==0.13.1", + "types-requests==2.32.4.20250913", ] [tool.setuptools]