From 7dfbcd2e5a12a75daf9bcceffa9eb2763ac0654a Mon Sep 17 00:00:00 2001 From: Debanjum Singh Solanky Date: Fri, 12 Jan 2024 01:32:46 +0530 Subject: [PATCH] Handle subscribe renew date, langchain, pydantic & logger.warn warnings - Ensure langchain less than 0.2.0 is used, to prevent breaking ChatOpenAI, PyMuPDF usage due to their deprecation after 0.2.0 - Set subscription renewal date to a timezone aware datetime - Use logger.warning instead of logger.warn as latter is deprecated - Use `model_dump' not deprecated dict to get all configured content_types --- pyproject.toml | 2 +- src/khoj/configure.py | 5 ++++- src/khoj/routers/api_config.py | 2 +- src/khoj/routers/auth.py | 2 +- src/khoj/routers/subscription.py | 2 +- tests/helpers.py | 4 +++- 6 files changed, 11 insertions(+), 6 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 693415d4..caf3e410 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -55,7 +55,7 @@ dependencies = [ "torch == 2.0.1", "uvicorn == 0.17.6", "aiohttp ~= 3.9.0", - "langchain >= 0.0.331", + "langchain <= 0.2.0", "requests >= 2.26.0", "bs4 >= 0.0.1", "anyio == 3.7.1", diff --git a/src/khoj/configure.py b/src/khoj/configure.py index a67b1e3a..786eccb3 100644 --- a/src/khoj/configure.py +++ b/src/khoj/configure.py @@ -1,12 +1,14 @@ import json import logging import os +from datetime import datetime from enum import Enum from typing import Optional import openai import requests import schedule +from django.utils.timezone import make_aware from starlette.authentication import ( AuthCredentials, AuthenticationBackend, @@ -59,7 +61,8 @@ class UserAuthenticationBackend(AuthenticationBackend): email="default@example.com", password="default", ) - Subscription.objects.create(user=default_user, type="standard", renewal_date="2100-04-01") + renewal_date = make_aware(datetime.strptime("2100-04-01", "%Y-%m-%d")) + Subscription.objects.create(user=default_user, type="standard", renewal_date=renewal_date) async def authenticate(self, request: HTTPConnection): current_user = request.session.get("user") diff --git a/src/khoj/routers/api_config.py b/src/khoj/routers/api_config.py index f7e4575e..fb53b638 100644 --- a/src/khoj/routers/api_config.py +++ b/src/khoj/routers/api_config.py @@ -349,7 +349,7 @@ def get_config_types( configured_content_types = list(enabled_file_types) if state.config and state.config.content_type: - for ctype in state.config.content_type.dict(exclude_none=True): + for ctype in state.config.content_type.model_dump(exclude_none=True): configured_content_types.append(ctype) return [ diff --git a/src/khoj/routers/auth.py b/src/khoj/routers/auth.py index c7296316..02cd073d 100644 --- a/src/khoj/routers/auth.py +++ b/src/khoj/routers/auth.py @@ -26,7 +26,7 @@ logger = logging.getLogger(__name__) auth_router = APIRouter() if not state.anonymous_mode and not (os.environ.get("GOOGLE_CLIENT_ID") and os.environ.get("GOOGLE_CLIENT_SECRET")): - logger.warn( + logger.warning( "🚨 Use --anonymous-mode flag to disable Google OAuth or set GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET environment variables to enable it" ) else: diff --git a/src/khoj/routers/subscription.py b/src/khoj/routers/subscription.py index 580fb225..c4542c1c 100644 --- a/src/khoj/routers/subscription.py +++ b/src/khoj/routers/subscription.py @@ -37,7 +37,7 @@ async def subscribe(request: Request): "customer.subscription.updated", "customer.subscription.deleted", }: - logger.warn(f"Unhandled Stripe event type: {event['type']}") + logger.warning(f"Unhandled Stripe event type: {event['type']}") return {"success": False} # Retrieve the customer's details diff --git a/tests/helpers.py b/tests/helpers.py index cc0f1ed3..321e08cf 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -1,6 +1,8 @@ import os +from datetime import datetime import factory +from django.utils.timezone import make_aware from khoj.database.models import ( ChatModelOptions, @@ -90,4 +92,4 @@ class SubscriptionFactory(factory.django.DjangoModelFactory): user = factory.SubFactory(UserFactory) type = "standard" is_recurring = False - renewal_date = "2100-04-01" + renewal_date = make_aware(datetime.strptime("2100-04-01", "%Y-%m-%d"))