chore: replace semver dependency with packaging (#1311)

Fixes #1296 per title. See
https://github.com/lancedb/lancedb/pull/1298#discussion_r1603931457 Cc
@wjones127

---------

Co-authored-by: Will Jones <willjones127@gmail.com>
This commit is contained in:
Philip Meier
2024-05-28 19:05:16 +02:00
committed by GitHub
parent db712b0f99
commit 1ad1c0820d
8 changed files with 14 additions and 15 deletions

View File

@@ -74,7 +74,7 @@ class BedRockText(TextEmbeddingFunction):
profile_name: Union[str, None] = None
role_session_name: str = "lancedb-embeddings"
if PYDANTIC_VERSION < (2, 0): # Pydantic 1.x compat
if PYDANTIC_VERSION.major < 2: # Pydantic 1.x compat
class Config:
keep_untouched = (cached_property,)

View File

@@ -90,7 +90,7 @@ class GeminiText(TextEmbeddingFunction):
query_task_type: str = "retrieval_query"
source_task_type: str = "retrieval_document"
if PYDANTIC_VERSION < (2, 0): # Pydantic 1.x compat
if PYDANTIC_VERSION.major < 2: # Pydantic 1.x compat
class Config:
keep_untouched = (cached_property,)

View File

@@ -40,7 +40,7 @@ class ImageBindEmbeddings(EmbeddingFunction):
device: str = "cpu"
normalize: bool = False
if PYDANTIC_VERSION < (2, 0): # Pydantic 1.x compat
if PYDANTIC_VERSION.major < 2: # Pydantic 1.x compat
class Config:
keep_untouched = (cached_property,)

View File

@@ -54,7 +54,7 @@ class TransformersEmbeddingFunction(EmbeddingFunction):
self._tokenizer = transformers.AutoTokenizer.from_pretrained(self.name)
self._model = transformers.AutoModel.from_pretrained(self.name)
if PYDANTIC_VERSION < (2, 0): # Pydantic 1.x compat
if PYDANTIC_VERSION.major < 2: # Pydantic 1.x compat
class Config:
keep_untouched = (cached_property,)

View File

@@ -35,13 +35,13 @@ from typing import (
import numpy as np
import pyarrow as pa
import pydantic
import semver
from packaging.version import Version
PYDANTIC_VERSION = semver.parse_version_info(pydantic.__version__)
PYDANTIC_VERSION = Version(pydantic.__version__)
try:
from pydantic_core import CoreSchema, core_schema
except ImportError:
if PYDANTIC_VERSION >= (2,):
if PYDANTIC_VERSION.major >= 2:
raise
if TYPE_CHECKING:
@@ -144,7 +144,7 @@ def Vector(
raise TypeError("A list of numbers or numpy.ndarray is needed")
return cls(v)
if PYDANTIC_VERSION < (2, 0):
if PYDANTIC_VERSION.major < 2:
@classmethod
def __modify_schema__(cls, field_schema: Dict[str, Any]):

View File

@@ -1,5 +1,5 @@
import os
import semver
from packaging.version import Version
from functools import cached_property
from typing import Union
@@ -44,9 +44,8 @@ class CohereReranker(Reranker):
def _client(self):
cohere = attempt_import_or_raise("cohere")
# ensure version is at least 0.5.0
if (
hasattr(cohere, "__version__")
and semver.compare(cohere.__version__, "5.0.0") < 0
if hasattr(cohere, "__version__") and Version(cohere.__version__) < Version(
"0.5.0"
):
raise ValueError(
f"cohere version must be at least 0.5.0, found {cohere.__version__}"

View File

@@ -178,7 +178,7 @@ def test_fixed_size_list_field():
li: List[int]
data = TestModel(vec=list(range(16)), li=[1, 2, 3])
if PYDANTIC_VERSION >= (2,):
if PYDANTIC_VERSION.major >= 2:
assert json.loads(data.model_dump_json()) == {
"vec": list(range(16)),
"li": [1, 2, 3],
@@ -197,7 +197,7 @@ def test_fixed_size_list_field():
]
)
if PYDANTIC_VERSION >= (2,):
if PYDANTIC_VERSION.major >= 2:
json_schema = TestModel.model_json_schema()
else:
json_schema = TestModel.schema()