Skip to content

Commit b7e82ca

Browse files
FledgeXurgaudin
authored andcommitted
Add printVersions() and getVersions().
1 parent d972b4a commit b7e82ca

4 files changed

Lines changed: 58 additions & 3 deletions

File tree

libzim/libzim.pyx

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1243,6 +1243,37 @@ suggestion_public_objects = [
12431243
]
12441244
suggestion = create_module(suggestion_module_name, suggestion_module_doc, suggestion_public_objects)
12451245

1246+
version_module_doc = """libzim version module
1247+
- Get versions of libzim.
1248+
- Print version of libzim.
1249+
1250+
Usage:
1251+
versions = Version.get_versions()
1252+
Version.print_version()"""
1253+
version_public_objects = [
1254+
Version,
1255+
]
1256+
version_module_name = f"{__name__}.version"
1257+
version = create_module(version_module_name, version_module_doc, version_public_objects)
1258+
1259+
cdef class Version:
1260+
__module__ = version_module_name
1261+
@staticmethod
1262+
def get_versions() -> [(string, string)]:
1263+
return zim.getVersions()
1264+
1265+
@staticmethod
1266+
def print_version(out: Union[sys.stdout, sys.stderr] = sys.stdout):
1267+
versions = Version.get_versions()
1268+
for i, version in enumerate(versions):
1269+
output = ""
1270+
if i > 0:
1271+
output += "+ "
1272+
output += version[0].decode("utf-8")
1273+
output += " "
1274+
output += version[1].decode("utf-8")
1275+
print(output, file=out)
1276+
12461277

12471278

12481279
class ModuleLoader(importlib.abc.Loader):
@@ -1253,7 +1284,8 @@ class ModuleLoader(importlib.abc.Loader):
12531284
'libzim.writer': writer,
12541285
'libzim.reader': reader,
12551286
'libzim.search': search,
1256-
'libzim.suggestion': suggestion
1287+
'libzim.suggestion': suggestion,
1288+
'libzim.version': version
12571289
}.get(spec.name, None)
12581290

12591291
@staticmethod
@@ -1272,5 +1304,5 @@ class ModuleFinder(importlib.abc.MetaPathFinder):
12721304
# register finder for our submodules
12731305
sys.meta_path.insert(0, ModuleFinder())
12741306

1275-
__all__ = ["writer", "reader", "search", "suggestion"]
1307+
__all__ = ["writer", "reader", "search", "suggestion", "version"]
12761308

libzim/zim.pxd

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ from libc.stdint cimport uint32_t, uint64_t
2222
from libcpp cimport bool
2323
from libcpp.map cimport map
2424
from libcpp.memory cimport shared_ptr
25+
from libcpp.pair cimport pair
2526
from libcpp.set cimport set
2627
from libcpp.string cimport string
2728
from libcpp.vector cimport vector
@@ -218,3 +219,6 @@ cdef extern from "libwrapper.h" namespace "wrapper":
218219
SuggestionIterator begin()
219220
SuggestionIterator end()
220221
int size()
222+
223+
cdef extern from "zim/version.h" namespace "zim":
224+
cdef vector[pair[string, string]] getVersions()

tests/test_libzim_reader.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,6 @@ def test_reader_archive(all_zims, filename, filesize, new_ns, mutlipart, zim_uui
358358
def test_reader_metadata(
359359
all_zims, filename, metadata_keys, test_metadata, test_metadata_value
360360
):
361-
362361
zim = Archive(all_zims / filename)
363362

364363
# make sure metadata_keys is empty

tests/test_libzim_version.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import sys
2+
3+
from libzim.version import Version
4+
5+
6+
def test_get_verions():
7+
versions = Version.get_versions()
8+
assert len(versions) != 0
9+
10+
11+
def test_print_verion_with_stdout(capfd):
12+
Version.print_version()
13+
stdout, stderr = capfd.readouterr()
14+
assert len(stdout) != 0
15+
16+
17+
def test_print_verion_with_stderr(capfd):
18+
Version.print_version(sys.stderr)
19+
stdout, stderr = capfd.readouterr()
20+
assert len(stderr) != 0

0 commit comments

Comments
 (0)