Skip to content

Commit 1c5b0ec

Browse files
authored
Improve server version handling (#77)
* add missing packaging package * improve version handling * improve version handling #2 * fix incorrect InvalidVersionError use
1 parent 3c9be53 commit 1c5b0ec

File tree

2 files changed

+55
-3
lines changed

2 files changed

+55
-3
lines changed

tests/client_test.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
# mypy: ignore-errors
22

33
import pytest
4+
from packaging.version import Version
45
from pytest_httpx import HTTPXMock
56

67
from tests.conftest import API_BASE_URL, mock_healthcheck, undo_mock_healthcheck
78
from zep_python import APIError
8-
from zep_python.zep_client import ZepClient, concat_url
9+
from zep_python.zep_client import ZepClient, concat_url, parse_version_string
910

1011
_ = mock_healthcheck, undo_mock_healthcheck
1112

@@ -54,3 +55,28 @@ def test_concat_url():
5455
concat_url("https://server.com/zep/", "v1/api")
5556
== "https://server.com/zep/v1/api"
5657
)
58+
59+
60+
def test_parse_version_string_with_dash():
61+
assert parse_version_string("1.2.3-456") == Version("1.2.3")
62+
63+
64+
def test_parse_version_string_with_dash_and_empty_prefix():
65+
assert parse_version_string("-456") == Version("0.0.0")
66+
67+
68+
def test_parse_version_string_with_dash_and_empty_prefix():
69+
assert parse_version_string("abc") == Version("0.0.0")
70+
71+
72+
def test_parse_version_string_without_dash():
73+
assert parse_version_string("1.2.3") == Version("0.0.0")
74+
75+
76+
def test_parse_version_string_empty():
77+
assert parse_version_string("") == Version("0.0.0")
78+
79+
80+
def test_parse_version_string_none():
81+
with pytest.raises(TypeError):
82+
parse_version_string(None)

zep_python/zep_client.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from urllib.parse import urljoin
77

88
import httpx
9-
from packaging.version import Version
9+
from packaging.version import InvalidVersion, Version
1010

1111
from zep_python.document.client import DocumentClient
1212
from zep_python.exceptions import APIError
@@ -117,7 +117,8 @@ def _healthcheck(self, base_url: str) -> None:
117117
if zep_server_version_str:
118118
if "dev" in zep_server_version_str:
119119
return
120-
zep_server_version = Version(zep_server_version_str.split("-")[0])
120+
121+
zep_server_version = parse_version_string(zep_server_version_str)
121122
else:
122123
zep_server_version = Version("0.0.0")
123124

@@ -268,3 +269,28 @@ def deprecated_warning(func: Callable[..., Any]) -> Callable[..., Any]:
268269
stacklevel=3,
269270
)
270271
return func
272+
273+
274+
def parse_version_string(version_string: str) -> Version:
275+
"""
276+
Parse a string into a Version object.
277+
278+
Parameters
279+
----------
280+
version_string : str
281+
The version string to parse.
282+
283+
Returns
284+
-------
285+
Version
286+
The parsed version.
287+
"""
288+
289+
try:
290+
if "-" in version_string:
291+
version_str = version_string.split("-")[0]
292+
return Version(version_str if version_str else "0.0.0")
293+
except InvalidVersion:
294+
return Version("0.0.0")
295+
296+
return Version("0.0.0")

0 commit comments

Comments
 (0)