Spaces:
Running
Running
updating test_supabase, updating dockerfile and requirements.txt
Browse files- Dockerfile +1 -2
- requirements.txt +1 -0
- tests/test_supabase.py +66 -26
Dockerfile
CHANGED
@@ -10,9 +10,8 @@ RUN apt-get update && apt-get install -y git
|
|
10 |
# Create a writable cache directory for Hugging Face
|
11 |
RUN mkdir -p /app/.cache/huggingface/hub && chmod -R 777 /app/.cache
|
12 |
|
13 |
-
#
|
14 |
RUN pip install --upgrade pip
|
15 |
-
RUN pip install git+https://github.com/supabase/supabase-py.git
|
16 |
|
17 |
# Copy dependencies
|
18 |
COPY requirements.txt .
|
|
|
10 |
# Create a writable cache directory for Hugging Face
|
11 |
RUN mkdir -p /app/.cache/huggingface/hub && chmod -R 777 /app/.cache
|
12 |
|
13 |
+
# Upgrade pip
|
14 |
RUN pip install --upgrade pip
|
|
|
15 |
|
16 |
# Copy dependencies
|
17 |
COPY requirements.txt .
|
requirements.txt
CHANGED
@@ -12,4 +12,5 @@ numpy==1.26.3
|
|
12 |
pytest==7.4.3
|
13 |
pytest-asyncio==0.21.1
|
14 |
httpx==0.25.2
|
|
|
15 |
configparser>=6.0.0
|
|
|
12 |
pytest==7.4.3
|
13 |
pytest-asyncio==0.21.1
|
14 |
httpx==0.25.2
|
15 |
+
supabase==2.13.0
|
16 |
configparser>=6.0.0
|
tests/test_supabase.py
CHANGED
@@ -1,5 +1,6 @@
|
|
1 |
import configparser
|
2 |
-
|
|
|
3 |
|
4 |
# Read the properties file
|
5 |
config = configparser.ConfigParser()
|
@@ -13,18 +14,65 @@ SUPABASE_KEY = config.get('DEFAULT', 'SUPABASE_KEY')
|
|
13 |
supabase = AsyncClient(SUPABASE_URL, SUPABASE_KEY)
|
14 |
|
15 |
# Test data to insert and update
|
16 |
-
test_url = "https://
|
17 |
-
test_headline = "
|
18 |
-
test_content = "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
|
20 |
# 1. Insert data into the 'article_analysis' table
|
21 |
-
def insert_data():
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
try:
|
23 |
-
|
|
|
|
|
24 |
'url': test_url,
|
|
|
25 |
'headline': test_headline,
|
26 |
'content': test_content,
|
27 |
-
'sentiment': 'Neutral',
|
28 |
'bias': 'Neutral',
|
29 |
'bias_score': 0.0,
|
30 |
'bias_percentage': 0.0,
|
@@ -39,29 +87,16 @@ def insert_data():
|
|
39 |
'evidence_analysis': {'evidence_based_score': 80.0}
|
40 |
}
|
41 |
}
|
42 |
-
}).execute()
|
43 |
-
print("Data inserted successfully")
|
44 |
-
print(f"Response data: {response.data}")
|
45 |
-
except Exception as e:
|
46 |
-
print(f"Error inserting data: {str(e)}")
|
47 |
-
|
48 |
-
# 2. Update data (e.g., changing the sentiment)
|
49 |
-
def update_data():
|
50 |
-
try:
|
51 |
-
updated_sentiment = "Positive"
|
52 |
-
response = supabase.table('article_analysis').upsert({
|
53 |
-
'url': test_url,
|
54 |
-
'sentiment': updated_sentiment # Update only the sentiment field
|
55 |
-
}).execute()
|
56 |
print("Data updated successfully")
|
57 |
print(f"Response data: {response.data}")
|
58 |
except Exception as e:
|
59 |
print(f"Error updating data: {str(e)}")
|
60 |
|
61 |
# 3. Retrieve data by URL
|
62 |
-
def retrieve_data():
|
63 |
try:
|
64 |
-
result = supabase.table('article_analysis').select('*').eq('url', test_url).execute()
|
65 |
if result.data:
|
66 |
print(f"Retrieved data: {result.data}")
|
67 |
else:
|
@@ -70,6 +105,11 @@ def retrieve_data():
|
|
70 |
print(f"Error retrieving data: {str(e)}")
|
71 |
|
72 |
# Run the tests: Insert, Update, and Retrieve data
|
73 |
-
|
74 |
-
|
75 |
-
|
|
|
|
|
|
|
|
|
|
|
|
1 |
import configparser
|
2 |
+
import asyncio
|
3 |
+
from supabase import AsyncClient
|
4 |
|
5 |
# Read the properties file
|
6 |
config = configparser.ConfigParser()
|
|
|
14 |
supabase = AsyncClient(SUPABASE_URL, SUPABASE_KEY)
|
15 |
|
16 |
# Test data to insert and update
|
17 |
+
test_url = "https://apnews.com/article/trump-air-force-one-boeing-plane-355ed87b00d7d82a061297f68c4ed89b"
|
18 |
+
test_headline = "Trump says he’s considering buying used planes to serve as Air Force One amid Boeing delays"
|
19 |
+
test_content = "WASHINGTON (AP) — President Donald Trump said Wednesday he is considering buying used Boeing aircraft — perhaps from an overseas seller — to use as Air Force One when he’s aboard, as he fumes over the U.S. plane-maker’s delays in producing two specially modified ones for presidential use."
|
20 |
+
|
21 |
+
# Full test data with all fields
|
22 |
+
test_data = {
|
23 |
+
"url": test_url,
|
24 |
+
"headline": test_headline,
|
25 |
+
"content": test_content,
|
26 |
+
"sentiment": "Neutral",
|
27 |
+
"bias": "Strongly Left",
|
28 |
+
"bias_score": -1.0,
|
29 |
+
"bias_percentage": 100.0,
|
30 |
+
"flagged_phrases": [],
|
31 |
+
"media_score": {
|
32 |
+
"media_unmasked_score": 49.6,
|
33 |
+
"rating": "Misleading",
|
34 |
+
"details": {
|
35 |
+
"headline_analysis": {
|
36 |
+
"headline_vs_content_score": 38.5,
|
37 |
+
"contradictory_phrases": []
|
38 |
+
},
|
39 |
+
"sentiment_analysis": {
|
40 |
+
"sentiment": "Neutral",
|
41 |
+
"manipulation_score": 0.0,
|
42 |
+
"flagged_phrases": []
|
43 |
+
},
|
44 |
+
"bias_analysis": {
|
45 |
+
"bias": "Strongly Left",
|
46 |
+
"bias_score": -1.0,
|
47 |
+
"bias_percentage": 100.0
|
48 |
+
},
|
49 |
+
"evidence_analysis": {
|
50 |
+
"evidence_based_score": 60.0
|
51 |
+
}
|
52 |
+
}
|
53 |
+
}
|
54 |
+
}
|
55 |
|
56 |
# 1. Insert data into the 'article_analysis' table
|
57 |
+
async def insert_data():
|
58 |
+
try:
|
59 |
+
# Use upsert with conflict on the 'url' field
|
60 |
+
response = await supabase.table('article_analysis').upsert(test_data, on_conflict=['url']).execute()
|
61 |
+
print("Data inserted or updated successfully")
|
62 |
+
print(f"Response data: {response.data}")
|
63 |
+
except Exception as e:
|
64 |
+
print(f"Error inserting or updating data: {str(e)}")
|
65 |
+
|
66 |
+
# 2. Update data (e.g., changing the sentiment)
|
67 |
+
async def update_data():
|
68 |
try:
|
69 |
+
updated_sentiment = "Positive"
|
70 |
+
# Ensure that we are not leaving any required fields as null
|
71 |
+
response = await supabase.table('article_analysis').upsert({
|
72 |
'url': test_url,
|
73 |
+
'sentiment': updated_sentiment,
|
74 |
'headline': test_headline,
|
75 |
'content': test_content,
|
|
|
76 |
'bias': 'Neutral',
|
77 |
'bias_score': 0.0,
|
78 |
'bias_percentage': 0.0,
|
|
|
87 |
'evidence_analysis': {'evidence_based_score': 80.0}
|
88 |
}
|
89 |
}
|
90 |
+
}, on_conflict=['url']).execute() # Use on_conflict to handle the conflict by updating the existing URL row
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
91 |
print("Data updated successfully")
|
92 |
print(f"Response data: {response.data}")
|
93 |
except Exception as e:
|
94 |
print(f"Error updating data: {str(e)}")
|
95 |
|
96 |
# 3. Retrieve data by URL
|
97 |
+
async def retrieve_data():
|
98 |
try:
|
99 |
+
result = await supabase.table('article_analysis').select('*').eq('url', test_url).execute()
|
100 |
if result.data:
|
101 |
print(f"Retrieved data: {result.data}")
|
102 |
else:
|
|
|
105 |
print(f"Error retrieving data: {str(e)}")
|
106 |
|
107 |
# Run the tests: Insert, Update, and Retrieve data
|
108 |
+
async def run_tests():
|
109 |
+
await insert_data()
|
110 |
+
await update_data()
|
111 |
+
await retrieve_data()
|
112 |
+
|
113 |
+
# Execute the async function using asyncio
|
114 |
+
if __name__ == "__main__":
|
115 |
+
asyncio.run(run_tests())
|