diff --git a/README.md b/README.md index e7a33226..7a58948e 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,11 @@ Repo for [mergin](https://public.cloudmergin.com/) client and basic utils. ## Development -Python 3.6+ required. Install dependencies: - +Python 3.6+ required. Create `mergin/deps` folder where [geodiff](https://github.com/lutraconsulting/geodiff) lib is supposed to be and install dependencies: + + mkdir -p mergin/deps pipenv install --dev --three + pipenv run pip install -r <(pipenv lock -r | grep pygeodiff) --target mergin/deps For using mergin client with its dependencies packaged locally run: @@ -13,7 +15,7 @@ For using mergin client with its dependencies packaged locally run: python3 setup.py sdist bdist_wheel mkdir -p mergin/deps pip wheel -r mergin_client.egg-info/requires.txt -w mergin/deps - + unzip mergin/deps/pygeodiff-*.whl -d mergin/deps ## Tests For running test do: diff --git a/mergin/client.py b/mergin/client.py index d4e0d9e7..869cc4e9 100644 --- a/mergin/client.py +++ b/mergin/client.py @@ -20,7 +20,6 @@ try: import dateutil.parser from dateutil.tz import tzlocal - import pygeodiff except ImportError: # this is to import all dependencies shipped with package (e.g. to use in qgis-plugin) deps_dir = os.path.join(this_dir, 'deps') @@ -31,7 +30,11 @@ import dateutil.parser from dateutil.tz import tzlocal - import pygeodiff + +try: + from .deps import pygeodiff +except ImportError: + os.environ['GEODIFF_ENABLED'] = 'False' CHUNK_SIZE = 100 * 1024 * 1024 # there is an upper limit for chunk size on server, ideally should be requested from there once implemented @@ -60,7 +63,15 @@ def __init__(self, directory): if not os.path.exists(self.dir): raise InvalidProject('Project directory does not exist') - self.geodiff = pygeodiff.GeoDiff() if os.environ.get('GEODIFF_ENABLED', 'True').lower() == 'true' else None + # make sure we can load correct pygeodiff + if os.environ.get('GEODIFF_ENABLED', 'True').lower() == 'true': + try: + self.geodiff = pygeodiff.GeoDiff() + except pygeodiff.geodifflib.GeoDiffLibVersionError: + self.geodiff = None + else: + self.geodiff = None + self.meta_dir = os.path.join(self.dir, '.mergin') if not os.path.exists(self.meta_dir): os.mkdir(self.meta_dir)