Skip to content

Commit 8008f86

Browse files
Improvements (#252)
* More detailed version output. Delete only service keys from views * add support for 'optimizeTopK' * Adjusting db.version test * Adding CHANGELOG entry and "introduced in" comment --------- Co-authored-by: Alex Petenchea <alex.petenchea@gmail.com>
1 parent 0c0adb9 commit 8008f86

File tree

4 files changed

+18
-6
lines changed

4 files changed

+18
-6
lines changed

CHANGELOG.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
main
22
----
33

4-
* Adding peak_memory_usage as a new property of AQL queries, available since ArangoDB 3.11.
4+
* The db.version() now has a new optional parameter "details" that can be used to return additional information about
5+
the server version. The default is still false, so the old behavior is preserved.
6+
7+
* Added peak_memory_usage as a new property of AQL queries, available since ArangoDB 3.11.
58

69
* The explain method of AQL queries includes the "stats" field in the returned object. Note that the REST API returns
710
it separately from the "plan" field, but for now we have to merge them together to ensure backward compatibility.

arango/database.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -300,21 +300,25 @@ def response_handler(resp: Response) -> Any:
300300

301301
return self._execute(request, response_handler)
302302

303-
def version(self) -> Result[str]:
303+
def version(self, details: bool = False) -> Result[Any]:
304304
"""Return ArangoDB server version.
305-
305+
:param details: Return more detailed version output
306+
:type details: bool | None
306307
:return: Server version.
307308
:rtype: str
308309
:raise arango.exceptions.ServerVersionError: If retrieval fails.
309310
"""
310311
request = Request(
311-
method="get", endpoint="/_api/version", params={"details": False}
312+
method="get", endpoint="/_api/version", params={"details": details}
312313
)
313314

314-
def response_handler(resp: Response) -> str:
315+
def response_handler(resp: Response) -> Any:
315316
if not resp.is_success:
316317
raise ServerVersionError(resp, request)
317-
return str(resp.body["version"])
318+
if not details:
319+
return str(resp.body["version"])
320+
else:
321+
return resp.body
318322

319323
return self._execute(request, response_handler)
320324

arango/formatter.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -902,6 +902,10 @@ def format_view(body: Json) -> Json:
902902
if "indexes" in body:
903903
result["indexes"] = body["indexes"]
904904

905+
# Introduced in 3.12 EE
906+
if "optimizeTopK" in body:
907+
result["optimizeTopK"] = body["optimizeTopK"]
908+
905909
return verify_format(body, result)
906910

907911

tests/test_database.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ def test_database_misc_methods(sys_db, db, bad_db):
6868

6969
# Test get server version
7070
assert isinstance(db.version(), str)
71+
assert isinstance(db.version(details=True), dict)
7172

7273
# Test get server version with bad database
7374
with assert_raises(ServerVersionError) as err:

0 commit comments

Comments
 (0)