| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 | 
							- import os
 
- from collections import UserDict
 
- from typing import Optional
 
- import pytest
 
- from _pytest.monkeypatch import MonkeyPatch
 
- from upstash_vector import Index
 
- # Mocking the Index class from upstash_vector
 
- class MockIndex:
 
-     def __init__(self, url="", token=""):
 
-         self.url = url
 
-         self.token = token
 
-         self.vectors = []
 
-     def upsert(self, vectors):
 
-         for vector in vectors:
 
-             vector.score = 0.5
 
-             self.vectors.append(vector)
 
-         return {"code": 0, "msg": "operation success", "affectedCount": len(vectors)}
 
-     def fetch(self, ids):
 
-         return [vector for vector in self.vectors if vector.id in ids]
 
-     def delete(self, ids):
 
-         self.vectors = [vector for vector in self.vectors if vector.id not in ids]
 
-         return {"code": 0, "msg": "Success"}
 
-     def query(
 
-         self,
 
-         vector: None,
 
-         top_k: int = 10,
 
-         include_vectors: bool = False,
 
-         include_metadata: bool = False,
 
-         filter: str = "",
 
-         data: Optional[str] = None,
 
-         namespace: str = "",
 
-         include_data: bool = False,
 
-     ):
 
-         # Simple mock query, in real scenario you would calculate similarity
 
-         mock_result = []
 
-         for vector_data in self.vectors:
 
-             mock_result.append(vector_data)
 
-         return mock_result[:top_k]
 
-     def reset(self):
 
-         self.vectors = []
 
-     def info(self):
 
-         return AttrDict({"dimension": 1024})
 
- class AttrDict(UserDict):
 
-     def __getattr__(self, item):
 
-         return self.get(item)
 
- MOCK = os.getenv("MOCK_SWITCH", "false").lower() == "true"
 
- @pytest.fixture
 
- def setup_upstashvector_mock(request, monkeypatch: MonkeyPatch):
 
-     if MOCK:
 
-         monkeypatch.setattr(Index, "__init__", MockIndex.__init__)
 
-         monkeypatch.setattr(Index, "upsert", MockIndex.upsert)
 
-         monkeypatch.setattr(Index, "fetch", MockIndex.fetch)
 
-         monkeypatch.setattr(Index, "delete", MockIndex.delete)
 
-         monkeypatch.setattr(Index, "query", MockIndex.query)
 
-         monkeypatch.setattr(Index, "reset", MockIndex.reset)
 
-         monkeypatch.setattr(Index, "info", MockIndex.info)
 
-     yield
 
-     if MOCK:
 
-         monkeypatch.undo()
 
 
  |