avian2 / jsonmerge

Merge a series of JSON documents.
MIT License
214 stars 25 forks source link

Update dependency to admit for jsonschema 3.0.1 #38

Closed ViktorHaag closed 5 years ago

ViktorHaag commented 5 years ago

The tests run clean with both Python 3.7 and Python 2.7 using jsonschema-3.0.1 and these packages in a virtual env:

attrs==19.1.0
coverage==4.5.2
functools32==3.2.3.post2 (py27 only)
jsonmerge==1.5.2
jsonschema==3.0.1
pyrsistent==0.14.11
six==1.12.0

Please consider moving the requirements forward to accommodate for jsonschema 3.0.1.

avian2 commented 5 years ago

What requirements? There's already no dependency on jsonschema version since #34 was closed.

ViktorHaag commented 5 years ago

I have to admit, I'm also stumped where the requirements come from; is it perhaps because the release package currently on PyPi was built with requirements that the current HEAD in source doesn't have?j

(Please note, the example below shows me removing jsonschema 3.0.1, which I had force-installed despite pip's warning about dependencies...)

/usr/local/src :  pip3 uninstall jsonmerge jsonschema
Uninstalling jsonmerge-1.5.2:
  Would remove:
    /usr/local/lib/python3.7/site-packages/jsonmerge-1.5.2.dist-info/*
    /usr/local/lib/python3.7/site-packages/jsonmerge/*
Proceed (y/n)? y
  Successfully uninstalled jsonmerge-1.5.2
Uninstalling jsonschema-3.0.1:
  Would remove:
    /usr/local/bin/jsonschema
    /usr/local/lib/python3.7/site-packages/jsonschema-3.0.1.dist-info/*
    /usr/local/lib/python3.7/site-packages/jsonschema/*
Proceed (y/n)? y
  Successfully uninstalled jsonschema-3.0.1

/usr/local/src :  pip3 install jsonmerge
Collecting jsonmerge
Collecting jsonschema<3.0.0 (from jsonmerge)
  Using cached https://files.pythonhosted.org/packages/77/de/47e35a97b2b05c2fadbec67d44cfcdcd09b8086951b331d82de90d2912da/jsonschema-2.6.0-py2.py3-none-any.whl
Installing collected packages: jsonschema, jsonmerge
Successfully installed jsonmerge-1.5.2 jsonschema-2.6.0

Hmmm -- maybe this is a caching issue? ... No, I'm not sure it is:

/usr/local/src :  pip3 uninstall jsonmerge jsonschema
Uninstalling jsonmerge-1.5.2:
  Would remove:
    /usr/local/lib/python3.7/site-packages/jsonmerge-1.5.2.dist-info/*
    /usr/local/lib/python3.7/site-packages/jsonmerge/*
Proceed (y/n)? y
  Successfully uninstalled jsonmerge-1.5.2
Uninstalling jsonschema-2.6.0:
  Would remove:
    /usr/local/bin/jsonschema
    /usr/local/lib/python3.7/site-packages/jsonschema-2.6.0.dist-info/*
    /usr/local/lib/python3.7/site-packages/jsonschema/*
Proceed (y/n)? y
  Successfully uninstalled jsonschema-2.6.0

/usr/local/src :  pip3.7 install --no-cache-dir jsonmerge
Collecting jsonmerge
  Downloading https://files.pythonhosted.org/packages/e5/d8/f06bd65469b25010ff4b924fbd09a8f2a849325cbce947f56516858df17e/jsonmerge-1.5.2.tar.gz
Collecting jsonschema<3.0.0 (from jsonmerge)
  Downloading https://files.pythonhosted.org/packages/77/de/47e35a97b2b05c2fadbec67d44cfcdcd09b8086951b331d82de90d2912da/jsonschema-2.6.0-py2.py3-none-any.whl
Installing collected packages: jsonschema, jsonmerge
  Running setup.py install for jsonmerge ... done
Successfully installed jsonmerge-1.5.2 jsonschema-2.6.0
ViktorHaag commented 5 years ago

Yep, I've determined that's the case. Grabbing the release tarball from pypi and looking inside for the setup.py file we see:

    install_requires = [ 'jsonschema<3.0.0' ],

and in the jsonmerge.egg-info/requires.txt file:

jsonschema<3.0.0

Probably just need to roll another release?

terrisgit commented 5 years ago

..possibly change it to < 3.1.0 ?

ViktorHaag commented 5 years ago

@terrisgit -- it looks like the current state of the jsonmerge code has an unpinned dependency on the jsonschema package.

I think the intention was to have an unpinned dependency but this was not picked up in the released package on PyPi?

Pinning or not pinning is something the maintainer(s) can certainly decide on; whichever way that goes, I'd kind of like a new release put on PyPi that unblocks the dependency pinning on an older version of jsonschema. I'd be happy to help, but I think the only people who can tag and build and release a new version of this package are the maintainers...

dcecile commented 5 years ago

According to Git, it looks like the most recent dependency on the jsonschema version was...

This matches pip install jsonmerge==1.5.2 jsonschema==3.0.1 ("jsonmerge 1.5.2 has requirement jsonschema<3.0.0, but you'll have jsonschema 3.0.1 which is incompatible"), and can be seen downloading the package directly from PyPi:

curl -s https://files.pythonhosted.org/packages/e5/d8/f06bd65469b25010ff4b924fbd09a8f2a849325cbce947f56516858df17e/jsonmerge-1.5.2.tar.gz | tar xOvf - jsonmerge-1.5.2/setup.py
# vim:ts=4 sw=4 expandtab softtabstop=4

from setuptools import setup

setup(name='jsonmerge',
    version='1.5.2',
    description='Merge a series of JSON documents.',
    license='MIT',
    long_description=open("README.rst").read(),
    author='Tomaz Solc',
    author_email='tomaz.solc@tablix.org',
    packages = [ 'jsonmerge' ],
    install_requires = [ 'jsonschema<3.0.0' ],
    test_suite = 'tests',
    classifiers = [
        "License :: OSI Approved :: MIT License",
        "Programming Language :: Python",
        "Programming Language :: Python :: 2",
        "Programming Language :: Python :: 3",
        "Intended Audience :: Developers",
    ],
)

There are 6 commits in master since the 1.5.2 release. Would it be okay to release a 1.5.3?

terrisgit commented 5 years ago

Who are you asking?

avian2 commented 5 years ago

Dear all,

jsonmerge 1.6.0 is now on PyPI. This release removes the dependency on jsonschema<=3.0.0.

Please understand that the contents of the GitHub repository might contain work that has not been released to PyPI yet. This is not something specific to jsonmerge. I prefer releases on PyPI to be well tested and stable. I have limited time to work on jsonmerge and hence don't release to PyPI very often.

If you need some feature that has not been released to PyPI yet, it's easy to install jsonmerge from source, as README shows. pip can also install a package directly from GitHub with something like:

pip install git+https://github.com/avian2/jsonmerge@master
ViktorHaag commented 5 years ago

Thanks very much for your effort with this package, @avian2 -- it's much appreciated.