From 50246effffc39ef58990bb2830c54c31738477b3 Mon Sep 17 00:00:00 2001 From: Sahil D Shah Date: Thu, 12 Jun 2025 17:45:05 -0400 Subject: [PATCH 1/2] Add Github Actions Python workflow --- .github/workflows/python-app.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/python-app.yml diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml new file mode 100644 index 00000000..dcb7a4bb --- /dev/null +++ b/.github/workflows/python-app.yml @@ -0,0 +1,29 @@ +# This workflow will install Python dependencies, run tests and lint with a single version of Python +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python + +name: Python application + +on: + push: + branches: [ "listOfMed" ] + pull_request: + branches: [ "listOfMed" ] + +permissions: + contents: read + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.x' + - name: Install the code linting and formatting tool Ruff + run: pipx install ruff + - name: Lint code with Ruff + run: ruff check --output-format=github --target-version=py39 From 4ab75531b8ed58c0286f53388c47918559d19d5a Mon Sep 17 00:00:00 2001 From: Sahil D Shah Date: Mon, 16 Jun 2025 16:30:17 -0400 Subject: [PATCH 2/2] Clean up unused imports and duplicate definitions across API modules --- server/api/admin.py | 4 +--- server/api/models.py | 1 - server/api/models/__init__.py | 2 +- server/api/models/model_embeddings.py | 1 - server/api/models/model_medRule.py | 1 - server/api/tests.py | 1 - server/api/views/ai_promptStorage/serializers.py | 1 - server/api/views/ai_promptStorage/views.py | 6 ++---- server/api/views/ai_settings/urls.py | 3 +-- server/api/views/conversations/views.py | 8 +------- server/api/views/embeddings/embeddingsView.py | 1 - server/api/views/feedback/urls.py | 1 - server/api/views/feedback/views.py | 8 -------- server/api/views/listMeds/views.py | 5 +---- server/api/views/medRules/views.py | 1 - server/api/views/uploadFile/views.py | 2 -- 16 files changed, 7 insertions(+), 39 deletions(-) diff --git a/server/api/admin.py b/server/api/admin.py index 930e86a4..5b92d838 100644 --- a/server/api/admin.py +++ b/server/api/admin.py @@ -4,8 +4,6 @@ from .models.authUser import UserAccount from .views.ai_settings.models import AI_Settings from .views.ai_promptStorage.models import AI_PromptStorage -from .views.ai_settings.models import AI_Settings -from .views.ai_promptStorage.models import AI_PromptStorage from .models.model_embeddings import Embeddings from .views.feedback.models import Feedback from .models.model_medRule import MedRule @@ -24,7 +22,7 @@ class MedicationAdmin(admin.ModelAdmin): @admin.register(Medication) -class MedicationAdmin(admin.ModelAdmin): +class MedicationAdmin(admin.ModelAdmin): # noqa: F811 list_display = ['name', 'benefits', 'risks'] diff --git a/server/api/models.py b/server/api/models.py index 71a83623..35e0d648 100644 --- a/server/api/models.py +++ b/server/api/models.py @@ -1,3 +1,2 @@ -from django.db import models # Create your models here. diff --git a/server/api/models/__init__.py b/server/api/models/__init__.py index 9f00b1ee..2b73b64a 100644 --- a/server/api/models/__init__.py +++ b/server/api/models/__init__.py @@ -1 +1 @@ -from .authUser import UserAccount +from .authUser import UserAccount # noqa: F401 diff --git a/server/api/models/model_embeddings.py b/server/api/models/model_embeddings.py index 2a1d4032..ed61f2fb 100644 --- a/server/api/models/model_embeddings.py +++ b/server/api/models/model_embeddings.py @@ -1,5 +1,4 @@ from django.db import models -from django.conf import settings from pgvector.django import VectorField import uuid from ..views.uploadFile.models import UploadFile diff --git a/server/api/models/model_medRule.py b/server/api/models/model_medRule.py index 9212330e..46712c38 100644 --- a/server/api/models/model_medRule.py +++ b/server/api/models/model_medRule.py @@ -1,6 +1,5 @@ from django.db import models from ..views.listMeds.models import Medication -from django.db.models import CASCADE from ..models.model_embeddings import Embeddings diff --git a/server/api/tests.py b/server/api/tests.py index f6eac93b..baf59b4e 100644 --- a/server/api/tests.py +++ b/server/api/tests.py @@ -1,4 +1,3 @@ -from django.test import TestCase import unittest from .services.tools.tools import validate_tool_inputs, execute_tool diff --git a/server/api/views/ai_promptStorage/serializers.py b/server/api/views/ai_promptStorage/serializers.py index ebbd2d4b..0358f8a5 100644 --- a/server/api/views/ai_promptStorage/serializers.py +++ b/server/api/views/ai_promptStorage/serializers.py @@ -1,6 +1,5 @@ from rest_framework import serializers from .models import AI_PromptStorage -from django.conf import settings class AI_PromptStorageSerializer(serializers.ModelSerializer): diff --git a/server/api/views/ai_promptStorage/views.py b/server/api/views/ai_promptStorage/views.py index e49c21c1..7354feb3 100644 --- a/server/api/views/ai_promptStorage/views.py +++ b/server/api/views/ai_promptStorage/views.py @@ -1,17 +1,15 @@ from rest_framework import status -from rest_framework.decorators import api_view, permission_classes -from rest_framework.permissions import IsAuthenticated +from rest_framework.decorators import api_view from rest_framework.response import Response from .models import AI_PromptStorage from .serializers import AI_PromptStorageSerializer -from django.views.decorators.csrf import csrf_exempt @api_view(['POST']) # @permission_classes([IsAuthenticated]) def store_prompt(request): print(request.user) - data = request.data.copy() + data = request.data.copy() # noqa: F841 print(request.user) serializer = AI_PromptStorageSerializer( data=request.data, context={'request': request}) diff --git a/server/api/views/ai_settings/urls.py b/server/api/views/ai_settings/urls.py index abe3c990..2266ed6e 100644 --- a/server/api/views/ai_settings/urls.py +++ b/server/api/views/ai_settings/urls.py @@ -1,5 +1,4 @@ -from django.urls import path, include -from rest_framework.routers import DefaultRouter +from django.urls import path from api.views.ai_settings import views urlpatterns = [ diff --git a/server/api/views/conversations/views.py b/server/api/views/conversations/views.py index ffe60e65..d46f8222 100644 --- a/server/api/views/conversations/views.py +++ b/server/api/views/conversations/views.py @@ -1,6 +1,4 @@ -from rest_framework.views import APIView from rest_framework.response import Response -from rest_framework.decorators import api_view from rest_framework import viewsets, status from rest_framework.decorators import action from rest_framework.permissions import IsAuthenticated @@ -14,14 +12,10 @@ import os import json import logging -from api.views.ai_settings.models import AI_Settings -from api.views.ai_promptStorage.models import AI_PromptStorage from django.views.decorators.csrf import csrf_exempt -from django.db import transaction, connection from .models import Conversation, Message -from .serializers import ConversationSerializer, MessageSerializer +from .serializers import ConversationSerializer from ...services.tools.tools import tools, execute_tool -from ...services.tools.database import get_database_info @csrf_exempt diff --git a/server/api/views/embeddings/embeddingsView.py b/server/api/views/embeddings/embeddingsView.py index 550caaa3..9469bb09 100644 --- a/server/api/views/embeddings/embeddingsView.py +++ b/server/api/views/embeddings/embeddingsView.py @@ -3,7 +3,6 @@ from rest_framework.response import Response from rest_framework import status from django.http import StreamingHttpResponse -import os from ...services.embedding_services import get_closest_embeddings from ...services.conversions_services import convert_uuids from ...services.openai_services import openAIServices diff --git a/server/api/views/feedback/urls.py b/server/api/views/feedback/urls.py index 41925665..2c0eab29 100644 --- a/server/api/views/feedback/urls.py +++ b/server/api/views/feedback/urls.py @@ -1,5 +1,4 @@ from django.urls import path -from api.views.feedback import views from .views import FeedbackView urlpatterns = [ diff --git a/server/api/views/feedback/views.py b/server/api/views/feedback/views.py index cf39c9bf..dcbef992 100644 --- a/server/api/views/feedback/views.py +++ b/server/api/views/feedback/views.py @@ -1,18 +1,10 @@ from rest_framework.views import APIView from rest_framework.response import Response -from rest_framework.decorators import api_view from rest_framework import status -from django.http import JsonResponse, HttpRequest -from django import forms -import requests -import json -import os -from .models import Feedback from .serializers import FeedbackSerializer # XXX: remove csrf_exempt usage before production -from django.views.decorators.csrf import csrf_exempt class FeedbackView(APIView): diff --git a/server/api/views/listMeds/views.py b/server/api/views/listMeds/views.py index 5a19dfa2..0e7fe584 100644 --- a/server/api/views/listMeds/views.py +++ b/server/api/views/listMeds/views.py @@ -1,11 +1,8 @@ from rest_framework import status -from rest_framework.decorators import api_view from rest_framework.response import Response from rest_framework.views import APIView from .models import Diagnosis, Medication, Suggestion -from .serializers import DiagnosisSerializer, MedicationSerializer, SuggestionSerializer -import json -from django.views.decorators.csrf import csrf_exempt +from .serializers import MedicationSerializer # Constants for medication inclusion and exclusion MEDS_INCLUDE = {'suicideHistory': ['Lithium']} MED_EXCLUDE = { diff --git a/server/api/views/medRules/views.py b/server/api/views/medRules/views.py index f8ff39e1..2fae140b 100644 --- a/server/api/views/medRules/views.py +++ b/server/api/views/medRules/views.py @@ -7,7 +7,6 @@ from ...models.model_medRule import MedRule from .serializers import MedRuleSerializer # You'll need to create this from ..listMeds.models import Medication -from ..listMeds.serializers import MedicationSerializer from ..uploadFile.models import UploadFile from ...models.model_embeddings import Embeddings diff --git a/server/api/views/uploadFile/views.py b/server/api/views/uploadFile/views.py index 89b68f17..fb843324 100644 --- a/server/api/views/uploadFile/views.py +++ b/server/api/views/uploadFile/views.py @@ -7,8 +7,6 @@ from django.views.decorators.csrf import csrf_exempt import pdfplumber from .models import UploadFile # Import your UploadFile model -from django.core.files.base import ContentFile -import os from .serializers import UploadFileSerializer from django.http import HttpResponse from ...services.sentencetTransformer_model import TransformerModel