mirror of
https://github.com/ollama/ollama-python.git
synced 2026-05-01 11:48:17 +08:00
feat: add version API and expose package version
Adds: - ollama.__version__ for the installed package version - .version() method on Client and AsyncClient to fetch /api/version Includes tests. Closes #646
This commit is contained in:
parent
dbccf192ac
commit
dbf9e4405d
@ -1,4 +1,4 @@
|
||||
from ollama._client import AsyncClient, Client
|
||||
from ollama._client import AsyncClient, Client, __version__
|
||||
from ollama._types import (
|
||||
ChatResponse,
|
||||
EmbeddingsResponse,
|
||||
@ -23,6 +23,8 @@ __all__ = [
|
||||
'AsyncClient',
|
||||
'ChatResponse',
|
||||
'Client',
|
||||
'__version__',
|
||||
'version',
|
||||
'EmbedResponse',
|
||||
'EmbeddingsResponse',
|
||||
'GenerateResponse',
|
||||
@ -55,5 +57,6 @@ list = _client.list
|
||||
copy = _client.copy
|
||||
show = _client.show
|
||||
ps = _client.ps
|
||||
version = _client.version
|
||||
web_search = _client.web_search
|
||||
web_fetch = _client.web_fetch
|
||||
|
||||
@ -628,6 +628,16 @@ class Client(BaseClient):
|
||||
'GET',
|
||||
'/api/tags',
|
||||
)
|
||||
|
||||
def version(self) -> str:
|
||||
r = self._request_raw(
|
||||
'GET',
|
||||
'/api/version'
|
||||
)
|
||||
if r.status_code != 200:
|
||||
raise Exception(f"Request failed: {r.status_code}")
|
||||
|
||||
return r.json().get('version', '')
|
||||
|
||||
def delete(self, model: str) -> StatusResponse:
|
||||
r = self._request_raw(
|
||||
@ -1270,6 +1280,18 @@ class AsyncClient(BaseClient):
|
||||
'/api/tags',
|
||||
)
|
||||
|
||||
async def version(self) -> str:
|
||||
r = await self._request_raw(
|
||||
'GET',
|
||||
'/api/version',
|
||||
)
|
||||
|
||||
if r.status_code != 200:
|
||||
raise Exception(f"Request failed: {r.status_code}")
|
||||
|
||||
return r.json().get('version', '')
|
||||
|
||||
|
||||
async def delete(self, model: str) -> StatusResponse:
|
||||
r = await self._request_raw(
|
||||
'DELETE',
|
||||
|
||||
@ -5,7 +5,7 @@ import re
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
import ollama
|
||||
import pytest
|
||||
from httpx import Response as httpxResponse
|
||||
from pydantic import BaseModel
|
||||
@ -99,6 +99,50 @@ def test_client_chat_with_logprobs(httpserver: HTTPServer):
|
||||
assert response['logprobs'][0]['top_logprobs'][1]['token'] == 'Hi'
|
||||
|
||||
|
||||
def test_package_version():
|
||||
assert hasattr(ollama, '__version__')
|
||||
assert isinstance(ollama.__version__, str)
|
||||
assert ollama.__version__ != ''
|
||||
assert callable(ollama.version)
|
||||
assert hasattr(ollama, 'version')
|
||||
|
||||
|
||||
def test_client_version_missing_field(httpserver: HTTPServer):
|
||||
httpserver.expect_ordered_request(
|
||||
'/api/version',
|
||||
method='GET',
|
||||
).respond_with_json({})
|
||||
|
||||
client = Client(httpserver.url_for('/'))
|
||||
response = client.version()
|
||||
assert response == ''
|
||||
|
||||
|
||||
async def test_async_client_version(httpserver: HTTPServer):
|
||||
httpserver.expect_ordered_request(
|
||||
'/api/version',
|
||||
method='GET',
|
||||
).respond_with_json(
|
||||
{
|
||||
'version': '0.1.0',
|
||||
}
|
||||
)
|
||||
|
||||
client = AsyncClient(httpserver.url_for('/'))
|
||||
response = await client.version()
|
||||
assert response == '0.1.0'
|
||||
assert isinstance(response, str)
|
||||
|
||||
async def test_async_client_version_missing_field(httpserver: HTTPServer):
|
||||
httpserver.expect_ordered_request(
|
||||
'/api/version',
|
||||
method='GET',
|
||||
).respond_with_json({})
|
||||
|
||||
client = AsyncClient(httpserver.url_for('/'))
|
||||
response = await client.version()
|
||||
assert response == ''
|
||||
|
||||
def test_client_chat_stream(httpserver: HTTPServer):
|
||||
def stream_handler(_: Request):
|
||||
def generate():
|
||||
|
||||
Loading…
Reference in New Issue
Block a user