# test_embedding_service.py

python 14 hours, 7 minutes ago
# test_embedding_service.py import unittest from unittest.mock import Mock, patch from embedding_service import EmbeddingService, split_list from modelclasses.populate_embedding_data import PopulateEmbeddingData import pandas as pd import datetime class TestEmbeddingService(unittest.TestCase): def setUp(self): # Mock configuration and external dependencies config = { "email": {"embeddings-task-recipients": ["test@example.com"]} } self.embeddings_util = Mock() self.pg_service = Mock() self.audit_service = Mock() self.config_service = Mock() self.oracle_service = Mock() self.email_service = Mock() # Initialize EmbeddingService with mocked dependencies self.embedding_service = EmbeddingService( config, self.embeddings_util, self.pg_service, self.audit_service, self.config_service, self.oracle_service, self.email_service ) def test_split_list(self): # Test split_list function with various cases input_list = ["str1", "str2", "str3", "str4"] expected_result = [["str1", "str2"], ["str3", "str4"]] result = split_list(input_list, 2) self.assertEqual(result, expected_result) # Edge case: splitting into larger sublists than the input list size result = split_list(input_list, 5) self.assertEqual(result, [input_list]) def test_executor_with_texts(self): # Test `executor` with an embedding_data that includes texts embedding_data = PopulateEmbeddingData( namespace="CALL_CENTER", model="textembedding-gecko@003", texts=["text1", "text2"] ) trace_id = "12345" with patch.object(self.embedding_service, 'process_texts_for_embedding') as mock_process_texts: self.embedding_service.executor(embedding_data) mock_process_texts.assert_called_once_with(embedding_data, trace_id) def test_executor_without_texts(self): # Test `executor` when no texts are provided and query execution is triggered embedding_data = PopulateEmbeddingData(namespace="CALL_CENTER", model="textembedding-gecko@003") trace_id = "12345" # Mock config service response for query lists query_dicts = [{ "IS_ACTIVE": "Y", "NAME": "dimension1", "QUERY": "SELECT * FROM SOME_TABLE" }] self.config_service.get_config_clob.return_value = str(query_dicts) # Mock oracle query result self.oracle_service.execute_select_query.return_value = '[["result1"], ["result2"]]' with patch.object(self.embedding_service, 'process_texts_for_embedding') as mock_process_texts: self.embedding_service.executor(embedding_data) mock_process_texts.assert_called() def test_process_texts_for_embedding(self): # Test process_texts_for_embedding with sample data embedding_data = PopulateEmbeddingData( namespace="CALL_CENTER", model="textembedding-gecko@003", texts=["text1", "text2", "text2"] ) trace_id = "12345" with patch.object(self.embedding_service, 'get_embedding_and_store') as mock_get_embedding_and_store: self.embedding_service.process_texts_for_embedding(embedding_data, trace_id) # Verify audit entry update was called self.audit_service.update_audit_entry.assert_called_once_with(trace_id, ['STATUS'], ["'Processing'"]) # Verify get_embedding_and_store is called with deduplicated texts expected_split_list = [["text1", "text2"]] mock_get_embedding_and_store.assert_called_once_with(embedding_data, trace_id, expected_split_list) def test_get_embedding_and_store(self): # Test get_embedding_and_store with mock data and verify DB interactions embedding_data = PopulateEmbeddingData( namespace="CALL_CENTER", model="textembedding-gecko@003", texts=["text1", "text2"] ) trace_id = "12345" split_list_of_strings = [["text1"], ["text2"]] self.config_service.get_config_value.return_value = "test_model" # Mock database query results to simulate existing embeddings self.pg_service.execute_select_query.side_effect = [None, '[["text1"]]'] # Mock embeddings utility response self.embeddings_util.get_embeddings.return_value = pd.DataFrame({ "Data": ["text2"], "Embedding": [[0.1, 0.2]] }) # Execute function with patch("embedding_service.logger") as mock_logger: self.embedding_service.get_embedding_and_store(embedding_data, trace_id, split_list_of_strings) # Verify that `insert_data` was called with the expected values for newly embedded texts expected_embeddings = ( ("text2", [0.1, 0.2], "CALL_CENTER", "test_model", datetime.datetime.now()) ) self.pg_service.insert_data.assert_called_once_with( "INSERT INTO text_embeddings_lookup VALUES %s", expected_embeddings ) # Ensure the email summary includes the correct counts body = f''' <p>Total Intents processed : {len(embedding_data.texts)}</p> <p>Already Embedded and present in DB: 1</p> <p>Newly Embedded Intents: 1</p> ''' self.email_service.send_mail.assert_called_once_with( self.embedding_service.recipients, 'Get Embeddings Task finished', body, None )
8
Posted By
Python Script to create AWS beanstalk
#!/usr/bin/python
  
import boto
python aws beanstalk
sandeep sandeep
List all files and folders using python os mo
import os

def list_files_folders(path):
python python-os
kishore_kumar
Get current environment variables in python
import os
env = os.environ

python python-os
kishore_kumar
Get os details using python os
import os
print os.uname()
# Don't use os.system('uname -a'), its j
python python-os
kishore_kumar
Get stats ( lines, words, char count ) of fil
def file_stats(path):
    f = open(path, 'r')
    lines = f.readlines()
python
kishore_kumar
Use map function in python
def get_double(num):
    return num * 2

python
kishore_kumar
Python sample codes for beginners
print "Welcome to python"
python
gaya38 gaya38
Python program for even number checking
a=input("Enter a value:")
if (a%2==0):
    print "The given number is even numb
python
gaya38 gaya38
Python program for prime number check
a=input("Enter a value:")
k=0
b=(a/2)+1
python
gaya38 gaya38
Pass command line arguments in python
import sys
x=len(sys.argv)
a=[]
python
gaya38 gaya38
Python program for the largest number in an a
a = [1,43,98,5]#Dummy data
for l in range(len(a)-1):
        if (a[l]>a[l+1]):
python
gaya38 gaya38
print list of even numbers within a range
n=100
a=[10,20,30,40,50]
b=[60,70,80,90]
python
gaya38 gaya38
generate fibonacci series in python
n=input("Enter the constraint to print n
m=input("Enter the maximum value to prin
a=0
python
gaya38 gaya38
Generate Random number within the range in py
import random
print random.uniform(10,500)
python
gaya38 gaya38
Shuffle list elements in python
import random;
z = [1,90,4,2]
z = random.shuffle(z)
python
gaya38 gaya38
use python requests to get contents of url (
import requests

req = requests.get("https://httpbin.org/
python python-requests
kishore_kumar
how to iterate or get values in python dictio
sample_dict = { "number": 1, "fruits": [

for key in sample_dict:
python
kishore_kumar
create matrix and multiply using numpy in pyt
import numpy as np

matrix = [[1,2,3], [4,5,6], [7,8,9]]
python numpy
kishore_kumar
generate random numbers matrix with numpy pyt
import numpy as np

random_arr = np.random.randint(1,50,9)
python numpy
kishore_kumar
Find min , max and mean for numpy arrays
import numpy as np

random_arr = np.random.randint(1,50,9)
python numpy
kishore_kumar