openzim / python-libzim

Libzim binding for Python: read/write ZIM files in Python
https://pypi.org/project/libzim/
GNU General Public License v3.0
62 stars 22 forks source link

Question: relation of this repo to https://github.com/openzim/python-scraperlib #112

Closed tim-moody closed 3 years ago

tim-moody commented 3 years ago

The two repos seem similar in that both wrap libzim for python. What is the relationship between them?

kelson42 commented 3 years ago

@tim-moody I believe the respective READMEs are clear about respective duties. The scraperlib proposes high level primitives needed and in common for our Python scrapers and the python-libzim is only the binding for the libzim. The scraperlib depends on the pylibzim.

rgaudin commented 3 years ago

@tim-moody, when writing pylibzim, we decided to make it a simple wrapper around the C++ libzim. API is as close as can be (although a bit limited compared to native) with close to zero additional feature. That's a design choice that we intend to keep.

scraperlib, as its name suggest is a python toolbox for writing scrapers. It extends pylibzim to our scrapers usecase so that it's maintained only once. As it's intended for scrapers, we don't extend the libzim reader for instance.

tim-moody commented 3 years ago

The scraperlib depends on the pylibzim.

@kelson42 That is the relationship I was looking for. The README mentions a dependency on libzim, but not on pylibzim, which made me think they were independent, but I couldn't find a compile step for scraperlib.

@rgaudin since the compile of python-libzim for libzim 7 currently fails, does that mean that python-scraperlib does not currently support libzim 7? To be clear, Is it that scraperlib automatically installs pylibzim, which installs the libzim shared object?

rgaudin commented 3 years ago

Well libzim is the name of the python package for what we call pylibzim so it's more clear. From a python standpoint libzim it is.

Each scraperlib version has a dependency to a specific pylibzim version (range, we use semantic versioning). scraperlib master is using pylibzim7. I you wante to taste it, there are wheels for linux/macOS at http://tmp.kiwix.org/wheels/. Use at your own risks as it's unreleased build :)