diff --git a/.github/workflows/main_mental-health-app-api.yml b/.github/workflows/main_mental-health-app-api.yml deleted file mode 100644 index 229eb695..00000000 --- a/.github/workflows/main_mental-health-app-api.yml +++ /dev/null @@ -1,57 +0,0 @@ -# name: Deploy Backend Container - -on: - push: - branches: - - main - -jobs: - build: - runs-on: ubuntu-latest - defaults: - run: - working-directory: ./server - - steps: - - name: Checkout the Git Repository - uses: actions/checkout@v4 - - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: 3.11.9 - - - name: Install Poetry - run: | - curl -sSL https://install.python-poetry.org | python3 - - - - name: Configure Poetry - run: | - echo "$HOME/.local/bin" >> $GITHUB_PATH - poetry config virtualenvs.create false - - - name: Install dependencies with Poetry - run: | - poetry install - -# - name: Log in to Azure CLI -# uses: azure/login@v2 -# with: -# creds: ${{ secrets.AZURE_CREDENTIALS }} -# # Ensure AZURE_CREDENTIALS is set in your GitHub Secrets - -# - name: Build and Push Docker image -# run: | -# docker build --pull --rm -t mental-health-app:latest . -# docker tag mental-health-app:latest dgmlgmckl6olsb4registry.azurecr.io/mental-health-app:1.0.0 -# echo ${{ secrets.REGISTRY_PASSWORD }} | docker login dgmlgmckl6olsb4registry.azurecr.io -u ${{ secrets.REGISTRY_USERNAME }} --password-stdin -# docker push dgmlgmckl6olsb4registry.azurecr.io/mental-health-app:1.0.0 -# # Use REGISTRY_USERNAME and REGISTRY_PASSWORD secrets for Docker registry credentials - -# - name: Deploy to Azure Container Apps -# run: | -# az account set --subscription ${{ secrets.SUBSCRIPTION_ID }} -# az extension add --name containerapp --upgrade -# az containerapp env create --name mental-health-app-ctr-env-2 --resource-group mongo-devguide-rg --location "eastus" -# az containerapp up --name mental-health-app-ctr --image dgmlgmckl6olsb4registry.azurecr.io/mental-health-app:1.0.0 --resource-group mongo-devguide-rg --environment mental-health-app-ctr-env-2 --ingress external -# # Use SUBSCRIPTION_ID secret for Azure subscription ID diff --git a/.github/workflows/main_mental-health-app-web.yml b/.github/workflows/main_mental-health-app-web.yml deleted file mode 100644 index 073169ab..00000000 --- a/.github/workflows/main_mental-health-app-web.yml +++ /dev/null @@ -1,62 +0,0 @@ -name: Build and deploy Node.js app to Azure Web App - mental-health-app-web - -# Run the workflow on pushes to main branch -on: - push: - branches: - - main - workflow_dispatch: - -jobs: - build: - runs-on: ubuntu-latest - environment: - name: 'production' - defaults: - run: - working-directory: ./client/ - - steps: - - name: Checkout Git repository - uses: actions/checkout@v4 - - - name: Set up Node.js version - uses: actions/setup-node@v4 - with: - node-version: '20.x' - - - name: Install dependencies - run: npm install - - - name: Build distribution files - run: npm run build - env: - VITE_AXIOS_BASE_URL: ${{ vars.VITE_AXIOS_BASE_URL }} - - - name: Upload artifact for deploment job - uses: actions/upload-artifact@v4 - with: - name: node-app - path: ./client/dist/ - - deploy: - runs-on: ubuntu-latest - needs: build - environment: - name: 'production' - url: ${{ vars.WEB_APP_URL }} - - steps: - - name: Download artifact from build job - uses: actions/download-artifact@v4 - with: - name: node-app - - - name: 'Deploy to Azure Web App' - id: deploy-to-webapp - uses: azure/webapps-deploy@v2 - with: - app-name: mental-health-app-web - slot-name: 'Production' - publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }} - package: . \ No newline at end of file diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 7aa94dd9..00000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2024 DHRUMIL PATEL - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/client/index.html b/client/index.html index 264aba92..d3082522 100644 --- a/client/index.html +++ b/client/index.html @@ -9,7 +9,7 @@ name="description" content="This AI-Driven Mental Health Companion app provides mental health support through conversational AI, offering personalized advice, mood tracking, and mental health resources based on user inputs and interaction history. " /> - Earlent - Mental Health Companion + Mental Health Companion
diff --git a/client/package.json b/client/package.json index 6d84a223..750fec1b 100644 --- a/client/package.json +++ b/client/package.json @@ -1,7 +1,7 @@ { "name": "mental-health-app-client", "private": true, - "version": "1.1.2", + "version": "0.1.0", "type": "module", "scripts": { "dev": "vite --port 3000 ", diff --git a/client/src/Components/authComponent.jsx b/client/src/Components/authComponent.jsx index 733c9cf7..317587a7 100644 --- a/client/src/Components/authComponent.jsx +++ b/client/src/Components/authComponent.jsx @@ -1,6 +1,5 @@ import React, { useState, useContext } from 'react'; import axios from 'axios'; -import apiServerAxios from '../api/axios'; import { useNavigate } from 'react-router-dom'; import { UserContext } from './userContext'; import { Link } from 'react-router-dom'; @@ -106,7 +105,7 @@ function AuthComponent() { e.preventDefault(); setLoading(true); try { - const response = await apiServerAxios.post('/api/user/login', { username, password }); + const response = await axios.post('/api/user/login', { username, password }); if (response && response.data) { const userId = response.data.userId; localStorage.setItem('token', response.data.access_token); // Ensure this is correctly saving the token @@ -134,7 +133,7 @@ function AuthComponent() { e.preventDefault(); setLoading(true); try { - const response = await apiServerAxios.post('/api/user/signup', { + const response = await axios.post('/api/user/signup', { username, email, password, @@ -172,7 +171,7 @@ function AuthComponent() { e.preventDefault(); setLoading(true); try { - const response = await apiServerAxios.post('/api/user/anonymous_signin'); + const response = await axios.post('/api/user/anonymous_signin'); if (response && response.data) { const userId = null; localStorage.setItem('token', response.data.access_token); // Ensure this is correctly saving the token diff --git a/client/src/Components/chatComponent.jsx b/client/src/Components/chatComponent.jsx index 580f0bb9..707ad669 100644 --- a/client/src/Components/chatComponent.jsx +++ b/client/src/Components/chatComponent.jsx @@ -1,7 +1,6 @@ import React, { useState, useEffect, useContext, useCallback, useRef } from 'react'; import axios from 'axios'; -import apiServerAxios from '../api/axios'; -import { InputAdornment, IconButton, Box, Card, CardContent, Typography, TextField, Button, List, ListItem, ListItemAvatar, ListItemText, CircularProgress, Snackbar, Divider, Avatar, Tooltip } from '@mui/material'; +import { InputAdornment,Switch, IconButton, Box, Card, CardContent, Typography, TextField, Button, List, ListItem, ListItemAvatar, ListItemText, CircularProgress, Snackbar, Divider, Avatar, Tooltip } from '@mui/material'; import MuiAlert from '@mui/material/Alert'; import SendIcon from '@mui/icons-material/Send'; import MicIcon from '@mui/icons-material/Mic'; @@ -49,7 +48,7 @@ const ChatComponent = () => { event.preventDefault(); // Prevents the IconButton from triggering form submissions if used in forms setVoiceEnabled(!voiceEnabled); }; - + const speak = (text) => { if (!voiceEnabled || text === currentPlayingMessage) { @@ -79,7 +78,7 @@ const ChatComponent = () => { synth.speak(utterance); }; - if (synth.getVoices().length === 0) { + if (synth.getVoices().length === 0){ synth.onvoiceschanged = setVoiceAndSpeak; } else { setVoiceAndSpeak(); @@ -92,13 +91,15 @@ const ChatComponent = () => { setIsLoading(true); setIsFetchingMessage(true); try { - const response = await apiServerAxios.post(`/api/ai/mental_health/welcome/${userId}`, { + const response = await fetch(`/api/ai/mental_health/welcome/${userId}`, { + method: 'POST', headers: { - "Content-Type": "application/json" + 'Content-Type': 'application/json' } }); - if (response && response.data) { - const data = response.data + const data = await response.json(); + console.log(data); + if (response.ok) { setWelcomeMessage(data.message); if (voiceEnabled && data.message) { // Ensure voice is enabled and the message is not empty speak(data.message); @@ -133,10 +134,13 @@ const ChatComponent = () => { if (chatId === null) return; setIsLoading(true); try { - const response = await apiServerAxios.patch(`/api/ai/mental_health/finalize/${userId}/${chatId}`, { + const response = await fetch(`/api/ai/mental_health/finalize/${userId}/${chatId}`, { + method: 'POST', headers: { 'Content-Type': 'application/json' } }); - if (response) { + + const data = await response.json(); + if (response.ok) { setSnackbarMessage('Chat finalized successfully'); setSnackbarSeverity('success'); // Reset chat state to start a new chat @@ -165,19 +169,19 @@ const ChatComponent = () => { try { - const body = { + const body = JSON.stringify({ prompt: input, turn_id: turnId - }; - const response = await apiServerAxios.post(`/api/ai/mental_health/${userId}/${chatId}`, { - headers: { - "Content-Type": "application/json" - }, - ...body + }); + const response = await fetch(`/api/ai/mental_health/${userId}/${chatId}`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: body }); - const data = response.data; - if (response && data) { + const data = await response.json(); + console.log(data); + if (response.ok) { setMessages(prev => [...prev, { message: input, sender: 'user' }, { message: data, sender: 'agent' }]); // Speak the agent's message immediately after it's received and processed if (voiceEnabled && data) { // Ensure voice is enabled and the message is not empty @@ -277,11 +281,11 @@ const sendAudioToServer = (audioBlob) => { formData.append('audio', audioBlob); setIsLoading(true); - apiServerAxios.post('/api/ai/mental_health/voice-to-text', formData, { - headers: { - 'Content-Type': 'multipart/form-data' - } - }) + axios.post('/api/ai/mental_health/voice-to-text', formData, { + headers: { + 'Content-Type': 'multipart/form-data' + } + }) .then(response => { const { message } = response.data; setInput(message); diff --git a/client/src/Components/chatInterface.jsx b/client/src/Components/chatInterface.jsx index fc458e94..325c10d0 100644 --- a/client/src/Components/chatInterface.jsx +++ b/client/src/Components/chatInterface.jsx @@ -1,7 +1,6 @@ import React, { useState, useEffect, useContext,useCallback, useRef } from 'react'; import axios from 'axios'; -import apiServerAxios from '../api/axios'; -import { InputAdornment,IconButton,Box, Card, CardContent, Typography, TextField, Button, List, ListItem,ListItemAvatar, ListItemText, CircularProgress, Snackbar, Divider, Avatar, Tooltip } from '@mui/material'; +import { InputAdornment,IconButton,Box,Switch, Card, CardContent, Typography, TextField, Button, List, ListItem,ListItemAvatar, ListItemText, CircularProgress, Snackbar, Divider, Avatar, Tooltip } from '@mui/material'; import MuiAlert from '@mui/material/Alert'; import SendIcon from '@mui/icons-material/Send'; import MicIcon from '@mui/icons-material/Mic'; @@ -227,11 +226,10 @@ const sendAudioToServer = (audioBlob) => { formData.append('audio', audioBlob); setIsLoading(true); - apiServerAxios.post('/api/ai/mental_health/voice-to-text', formData, { - headers: { - 'Content-Type': 'multipart/form-data' - } - }) + axios.post('/api/ai/mental_health/voice-to-text', formData, { + headers: { + 'Content-Type': 'multipart/form-data' + } }) .then(response => { const { message } = response.data; diff --git a/client/src/Components/chatLogManager.jsx b/client/src/Components/chatLogManager.jsx index 95cd15bf..3cb9da32 100644 --- a/client/src/Components/chatLogManager.jsx +++ b/client/src/Components/chatLogManager.jsx @@ -1,6 +1,5 @@ import React, { useState } from 'react'; import axios from 'axios'; -import apiServerAxios from '../api/axios'; import { Button, Snackbar, Alert, Tooltip, Paper, Typography, CircularProgress, TextField, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle @@ -59,7 +58,7 @@ function ChatLogManager() { const endpoint = range ? '/api/user/download_chat_logs/range' : '/api/user/download_chat_logs'; const params = range ? { params: { start_date: startDate, end_date: endDate } } : {}; - const response = await apiServerAxios.get(endpoint, { + const response = await axios.get(endpoint, { ...params, headers: { 'Authorization': `Bearer ${localStorage.getItem('token')}` @@ -92,7 +91,7 @@ function ChatLogManager() { const endpoint = dialogRange ? '/api/user/delete_chat_logs/range' : '/api/user/delete_chat_logs'; const params = dialogRange ? { params: { start_date: startDate, end_date: endDate } } : {}; - const response = await apiServerAxios.delete(endpoint, { + const response = await axios.delete(endpoint, { ...params, headers: { 'Authorization': `Bearer ${localStorage.getItem('token')}` diff --git a/client/src/Components/checkInForm.jsx b/client/src/Components/checkInForm.jsx index e56513f3..0cf582b9 100644 --- a/client/src/Components/checkInForm.jsx +++ b/client/src/Components/checkInForm.jsx @@ -1,6 +1,5 @@ import React, { useState, useEffect } from 'react'; import axios from 'axios'; -import apiServerAxios from '../api/axios'; import PropTypes from 'prop-types'; import { useParams } from 'react-router-dom'; import { @@ -35,7 +34,7 @@ function CheckInForm({ userId, update }) { if (update && checkInId) { // Fetch existing check-in data setLoading(true); - apiServerAxios.get(`/api/check-in/${checkInId}`,{ + axios.get(`/api/check-in/${checkInId}`,{ headers: { 'Authorization': `Bearer ${token}` // Ensure the Authorization header is set } @@ -79,7 +78,7 @@ function CheckInForm({ userId, update }) { const data = { user_id: userId, check_in_time: checkInTime, frequency, notify }; console.log('Submitting:', data); try { - const response = await apiServerAxios[method](url, data, config); + const response = await axios[method](url, data, config); console.log('Success:', response.data.message); setSnackbar({ open: true, message: response.data.message, severity: 'success' }); // Optionally reset form or handle next steps diff --git a/client/src/Components/checkInsList.jsx b/client/src/Components/checkInsList.jsx index a26da391..78353985 100644 --- a/client/src/Components/checkInsList.jsx +++ b/client/src/Components/checkInsList.jsx @@ -1,6 +1,5 @@ import React, { useState, useEffect} from 'react'; import axios from 'axios'; -import apiServerAxios from '../api/axios'; import { useParams, useNavigate } from 'react-router-dom'; import { List, ListItemText, Typography, Card, Avatar, @@ -64,7 +63,7 @@ function CheckInsList() { setLoading(true); try { - const response = await apiServerAxios.get(`/api/check-in/all?user_id=${userId}`, { + const response = await axios.get(`/api/check-in/all?user_id=${userId}`, { headers: { 'Authorization': `Bearer ${token}` // Ensure the Authorization header is set } @@ -110,7 +109,7 @@ function CheckInsList() { const handleDeleteCheckIn = async () => { if (selectedCheckIn) { try { - await apiServerAxios.delete(`/api/check-in/${selectedCheckIn._id}`,{ + await axios.delete(`/api/check-in/${selectedCheckIn._id}`,{ headers: { 'Authorization': `Bearer ${token}` // Ensure the Authorization header is set } diff --git a/client/src/Components/moodLogging.jsx b/client/src/Components/moodLogging.jsx index 8091572c..d63df073 100644 --- a/client/src/Components/moodLogging.jsx +++ b/client/src/Components/moodLogging.jsx @@ -1,6 +1,5 @@ import React, { useState } from 'react'; import axios from 'axios'; -import apiServerAxios from '../api/axios'; import { Button } from '@mui/material'; import MoodIcon from '@mui/icons-material/Mood'; import SendIcon from '@mui/icons-material/Send'; @@ -22,7 +21,7 @@ function MoodLogging() { } try { - const response = await apiServerAxios.post('/api/user/log_mood', { mood, activities }, { + const response = await axios.post('/api/user/log_mood', { mood, activities }, { headers: { Authorization: `Bearer ${token}` } diff --git a/client/src/Components/moodLogs.jsx b/client/src/Components/moodLogs.jsx index 68d881c4..126d30b9 100644 --- a/client/src/Components/moodLogs.jsx +++ b/client/src/Components/moodLogs.jsx @@ -1,6 +1,5 @@ import React, { useState, useEffect } from 'react'; import axios from 'axios'; -import apiServerAxios from '../api/axios'; import '../Assets/Styles/MoodLogs.css'; import ListAltIcon from '@mui/icons-material/ListAlt'; // Icon for mood logs @@ -17,7 +16,7 @@ function MoodLogs() { } try { - const response = await apiServerAxios.get('/api/user/get_mood_logs', { + const response = await axios.get('/api/user/get_mood_logs', { headers: { Authorization: `Bearer ${token}` } diff --git a/client/src/Components/navBar.jsx b/client/src/Components/navBar.jsx index 934c1a22..e73ff82e 100644 --- a/client/src/Components/navBar.jsx +++ b/client/src/Components/navBar.jsx @@ -1,6 +1,5 @@ import React, {useContext, useState, useEffect} from 'react'; import axios from 'axios'; -import apiServerAxios from '../api/axios'; import { useNavigate } from 'react-router-dom'; import { AppBar, Toolbar, IconButton, Typography, Badge, Menu, MenuItem, Card, CardContent } from '@mui/material'; import MenuIcon from '@mui/icons-material/Menu'; @@ -35,7 +34,7 @@ function Navbar({ toggleSidebar }) { return; // Exit the function if no user ID is available } try { - const response = await apiServerAxios.get(`/api/check-in/missed?user_id=${userId}`, { + const response = await axios.get(`/api/check-in/missed?user_id=${userId}`, { headers: { 'Authorization': `Bearer ${token}` // Ensure the Authorization header is set } diff --git a/client/src/Components/userContext.jsx b/client/src/Components/userContext.jsx index 1ce624e9..c8e4780c 100644 --- a/client/src/Components/userContext.jsx +++ b/client/src/Components/userContext.jsx @@ -1,6 +1,5 @@ import React, { createContext, useState, useCallback,useEffect } from 'react'; import axios from 'axios'; -import apiServerAxios from '../api/axios'; import { useNavigate } from 'react-router-dom'; export const UserContext = createContext({ user: null }); @@ -52,7 +51,7 @@ export const UserProvider = ({ children }) => { console.error('No token available for logout'); return; // Exit the function if no token is available } - const response = await apiServerAxios.post('/api/user/logout', {}, { + const response = await axios.post('/api/user/logout', {}, { headers: { 'Authorization': `Bearer ${token}` } @@ -72,7 +71,7 @@ export const UserProvider = ({ children }) => { const changePassword = async (userId, currentPassword, newPassword) => { try { const token = localStorage.getItem('token'); - const response = await apiServerAxios.patch(`/api/user/change_password/${userId}`, { + const response = await axios.patch(`/api/user/change_password/${userId}`, { current_password: currentPassword, new_password: newPassword }, { diff --git a/client/src/Components/userProfile.jsx b/client/src/Components/userProfile.jsx index bd39b0d6..ddffb4d1 100644 --- a/client/src/Components/userProfile.jsx +++ b/client/src/Components/userProfile.jsx @@ -2,7 +2,6 @@ import React, { useState, useEffect } from 'react'; import { useParams } from 'react-router-dom'; import PasswordUpdateTab from './passwordUpdateTab'; import axios from 'axios'; -import apiServerAxios from '../api/axios'; import { TextField, Button, Container, Typography, Paper, CssBaseline, Snackbar, Alert, FormControl, InputLabel, Select, MenuItem,IconButton,Tabs,Tab,Box @@ -133,7 +132,7 @@ function UserProfile() { } const fetchData = async () => { try { - const response = await apiServerAxios.get(`/api/user/profile/${userId}`); + const response = await axios.get(`/api/user/profile/${userId}`); console.log("Fetched data:", response.data); const formattedData = { username: response.data.username || '', @@ -187,7 +186,7 @@ function UserProfile() { const handleSubmit = async (e) => { e.preventDefault(); try { - await apiServerAxios.patch(`/api/user/profile/${userId}`, user); + await axios.patch(`/api/user/profile/${userId}`, user); setMessage('Profile updated successfully!'); setSeverity('success'); } catch (error) { diff --git a/client/src/api/axios.js b/client/src/api/axios.js deleted file mode 100644 index 28e331ad..00000000 --- a/client/src/api/axios.js +++ /dev/null @@ -1,7 +0,0 @@ -import axios from 'axios'; - -const apiServerAxios = axios.create({ - baseURL: import.meta.env.VITE_AXIOS_BASE_URL, -}); - -export default apiServerAxios; \ No newline at end of file diff --git a/server/app.py b/server/app.py index 267700c6..f570477e 100644 --- a/server/app.py +++ b/server/app.py @@ -41,10 +41,9 @@ def run_app(): mail = Mail(app) jwt = JWTManager(app) cors_config = { - - r"*": { - "origins": ["https://mental-health-app-web.azurewebsites.net", "127.0.0.1"], - "methods": ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"], + r"/api/*": { + "origins": ["https://green-sand-04b157b0f.5.azurestaticapps.net"], + "methods": ["GET", "POST", "PUT", "DELETE", "OPTIONS"], "allow_headers": [ "Authorization", "Content-Type", diff --git a/server/instance/mydatabase.db b/server/instance/mydatabase.db index 00ce4e6a..9b4ae475 100644 Binary files a/server/instance/mydatabase.db and b/server/instance/mydatabase.db differ diff --git a/server/poetry.lock b/server/poetry.lock index b3700b58..deacdbf3 100644 --- a/server/poetry.lock +++ b/server/poetry.lock @@ -1031,21 +1031,18 @@ extended-testing = ["beautifulsoup4 (>=4.12.3,<5.0.0)", "lxml (>=4.9.3,<6.0)"] [[package]] name = "langsmith" -version = "0.1.82" +version = "0.1.81" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.82-py3-none-any.whl", hash = "sha256:9b3653e7d316036b0c60bf0bc3e280662d660f485a4ebd8e5c9d84f9831ae79c"}, - {file = "langsmith-0.1.82.tar.gz", hash = "sha256:c02e2bbc488c10c13b52c69d271eb40bd38da078d37b6ae7ae04a18bd48140be"}, + {file = "langsmith-0.1.81-py3-none-any.whl", hash = "sha256:3251d823225eef23ee541980b9d9e506367eabbb7f985a086b5d09e8f78ba7e9"}, + {file = "langsmith-0.1.81.tar.gz", hash = "sha256:585ef3a2251380bd2843a664c9a28da4a7d28432e3ee8bcebf291ffb8e1f0af0"}, ] [package.dependencies] orjson = ">=3.9.14,<4.0.0" -pydantic = [ - {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""}, - {version = ">=2.7.4,<3.0.0", markers = "python_full_version >= \"3.12.4\""}, -] +pydantic = ">=1,<3" requests = ">=2,<3" [[package]] @@ -1922,21 +1919,6 @@ files = [ {file = "sentinels-1.0.0.tar.gz", hash = "sha256:7be0704d7fe1925e397e92d18669ace2f619c92b5d4eb21a89f31e026f9ff4b1"}, ] -[[package]] -name = "setuptools" -version = "70.1.1" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "setuptools-70.1.1-py3-none-any.whl", hash = "sha256:a58a8fde0541dab0419750bcc521fbdf8585f6e5cb41909df3a472ef7b81ca95"}, - {file = "setuptools-70.1.1.tar.gz", hash = "sha256:937a48c7cdb7a21eb53cd7f9b59e525503aa8abaf3584c730dc5f7a5bec3a650"}, -] - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.10.0)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] - [[package]] name = "six" version = "1.16.0" @@ -2048,13 +2030,13 @@ sqlcipher = ["sqlcipher3_binary"] [[package]] name = "tenacity" -version = "8.4.2" +version = "8.4.1" description = "Retry code until it succeeds" optional = false python-versions = ">=3.8" files = [ - {file = "tenacity-8.4.2-py3-none-any.whl", hash = "sha256:9e6f7cf7da729125c7437222f8a522279751cdfbe6b67bfe64f75d3a348661b2"}, - {file = "tenacity-8.4.2.tar.gz", hash = "sha256:cd80a53a79336edba8489e767f729e4f391c896956b57140b5d7511a64bbd3ef"}, + {file = "tenacity-8.4.1-py3-none-any.whl", hash = "sha256:28522e692eda3e1b8f5e99c51464efcc0b9fc86933da92415168bc1c4e2308fa"}, + {file = "tenacity-8.4.1.tar.gz", hash = "sha256:54b1412b878ddf7e1f1577cd49527bad8cdef32421bd599beac0c6c3f10582fd"}, ] [package.extras] @@ -2299,4 +2281,4 @@ multidict = ">=4.0" [metadata] lock-version = "2.0" python-versions = "^3.11" -content-hash = "9cc1a2362f6005f533b837ddbe0eb181d9278ea37a9ac8ffb945258f72e1c98d" +content-hash = "df65d917646723c2f2f5c064f4668d14b148d26192fbc536b3b6b7be60da4998" diff --git a/server/pyproject.toml b/server/pyproject.toml index 6cdb48c8..788d1916 100644 --- a/server/pyproject.toml +++ b/server/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "earlent-server" -version = "1.1.2" +version = "1.1.0" description = "An application meant to help students and professionals with stress and anxiety." authors = ["Dhrumil Patel ", "Anthony Santana "] readme = "README.md" @@ -31,7 +31,6 @@ pywebpush = "^2.0.0" pytest = "^8.2.2" pytest-env = "^1.1.3" pytest-timeout = "^2.3.1" -setuptools = "^70.1.1" [tool.pytest.ini_options] env = [