CaliDog / certstream-python

Python library for connecting to CertStream
MIT License
425 stars 72 forks source link

Loosen the version constraint of websocket-client to avoid dependency conflicts #26

Closed NeolithEra closed 4 years ago

NeolithEra commented 5 years ago

Hi, certstream locked the version constraint of websocket-client as websocket-client==0.48.0, which leads to a troubling scenario that its direct downstream project ['certstreammonitor','analyst-arsenal', 'bucket-stream','bounty-monitor'] has to lock websocket-client.

Could you please loosen the version constraint of websocket-client? Benefit of this is that users using both of ['certstreammonitor','analyst-arsenal', 'bucket-stream','bounty-monitor'] and websocket-client can upgrade their third party libraries in a timely manner to reduce technical debts.

Solution

The dependency trees of your project and affected downstream projects are shown as follows. Taking the version constraints of upstream and downstream projects into comprehensive consideration, you can

  1. Loosen websocket-client==0.48.0 to be websocket-client>=0.48.0.
  2. Loosen websocket-client==0.48.0 to be *_websocket-client==_**.
  3. Try to add an upper bound for websocket-client’ version constraint, according to your compatibility.

@Fitblip Please let me know your choice. I can submit a PR to fix this issue.

Thanks for your attention. Best, Neolith

NeolithEra commented 5 years ago

Dependency tree-----

certstream-1.10
| +-termcolor(version range:*)
| +-websocket-client(version range:==0.48.0)
| | +-six(version range:*)

Direct downstream project:

certstreammonitor-master
| +-apprise(version range:*)
| | +-click(version range:>=5.0)
| | +-decorator(version range:*)
| | +-markdown(version range:*)
| | | +-setuptools(version range:>=36)
| | +-pyyaml(version range:*)
| | +-requests(version range:*)
| | | +-certifi(version range:>=2017.4.17)
| | | +-chardet(version range:<3.1.0,>=3.0.2)
| | | +-idna(version range:>=2.5,<2.9)
| | | +-urllib3(version range:<1.26,>=1.21.1)
| | +-requests-oauthlib(version range:*)
| | +-six(version range:*)
| +-certstream(version range:==1.10)
| | +-termcolor(version range:*)
| | +-websocket-client(version range:==0.48.0)
| | | +-six(version range:*)
| +-hues(version range:*)
| +-ipwhois(version range:*)
| | +-dnspython(version range:*)
| | +-ipaddr;python-version(version range:<3.3)
| +-pysocks(version range:*)
| +-requests(version range:*)
| | +-certifi(version range:>=2017.4.17)
| | +-chardet(version range:<3.1.0,>=3.0.2)
| | +-idna(version range:>=2.5,<2.9)
| | +-urllib3(version range:<1.26,>=1.21.1)
| +-websocket-client(version range:==0.48.0)
| | +-six(version range:*)
analyst-arsenal-1.7
| +-certifi(version range:>=2017.4.17)
| +-certstream(version range:==1.10)
| | +-termcolor(version range:*)
| | +-websocket-client(version range:==0.48.0)
| | | +-six(version range:*)
| +-chardet(version range:<3.1.0,>=3.0.2)
| +-entropy(version range:==0.10)
| +-idna(version range:>=2.5,<2.9)
| +-pysocks(version range:>=1.5.6)
| +-python-levenshtein(version range:==0.12.0)
| | +-setuptools(version range:*)
| +-pyyaml(version range:==3.13)
| +-requests(version range:*)
| | +-certifi(version range:>=2017.4.17)
| | +-chardet(version range:<3.1.0,>=3.0.2)
| | +-idna(version range:>=2.5,<2.9)
| | +-urllib3(version range:<1.26,>=1.21.1)
| +-termcolor(version range:==1.1.0)
| +-tld(version range:==0.7.9)
| | +-six(version range:>=1.9)
| +-tqdm(version range:==4.19.4)
| +-urllib3(version range:>=1.21.1,<1.25)
| +-websocket-client(version range:==0.48.0)
| | +-six(version range:*)
bounty-monitor-master
| +-asn1crypto(version range:==0.24.0)
| +-astroid(version range:==1.6.0)
| +-backports-functools-lru-cache(version range:==1.4)
| +-beautifulsoup4(version range:==4.6.0)
| +-bs4(version range:==0.0.1)
| | +-beautifulsoup4(version range:*)
| +-certifi(version range:==2017.11.5)
| +-certstream(version range:==1.8)
| | +-termcolor(version range:*)
| | +-websocket-client(version range:*)
| | | +-six(version range:*)
| +-cffi(version range:==1.11.2)
| +-chardet(version range:==3.0.4)
| +-colorama(version range:==0.3.9)
| +-configparser(version range:==3.5.0)
| +-cryptography(version range:==2.3)
| +-enum34(version range:==1.1.6)
| +-idna(version range:==2.6)
| +-ipaddress(version range:==1.0.19)
| +-isort(version range:==4.2.15)
| +-lazy-object-proxy(version range:==1.3.1)
| +-mccabe(version range:==0.6.1)
| +-pycparser(version range:==2.18)
| +-pyjwt(version range:==1.5.3)
| +-pylint(version range:==1.8.1)
| +-requests(version range:==2.20.0)
| | +-certifi(version range:>=2017.4.17)
| | +-chardet(version range:<3.1.0,>=3.0.2)
| | +-idna(version range:>=2.5,<2.8)
| | +-urllib3(version range:>=1.21.1,<1.25)
| +-singledispatch(version range:==3.4.0.3)
| | +-six(version range:*)
| +-six(version range:==1.11.0)
| +-termcolor(version range:==1.1.0)
| +-tld(version range:==0.7.9)
| | +-six(version range:>=1.9)
| +-tqdm(version range:==4.19.5)
| +-urllib3(version range:==1.24.2)
| +-websocket-client(version range:==0.45.0)
| | +-six(version range:*)
| +-wrapt(version range:==1.10.11)
bucket-stream-master
| +-boto3(version range:==1.4.8)
| +-botocore(version range:==1.8.2)
| | +-docutils(version range:>=0.10)
| | +-jmespath(version range:<1.0.0,>=0.7.1)
| | +-python-dateutil(version range:>=2.1,<3.0.0)
| +-certifi(version range:==2017.11.5)
| +-certstream(version range:==1.8)
| | +-termcolor(version range:*)
| | +-websocket-client(version range:*)
| | | +-six(version range:*)
| +-chardet(version range:==3.0.4)
| +-docutils(version range:==0.14)
| +-idna(version range:==2.6)
| +-jmespath(version range:==0.9.3)
| +-multidict(version range:==3.3.2)
| +-pipdeptree(version range:==0.10.1)
| | +-pip(version range:>=6.0.0)
| +-pyaml(version range:==17.10.0)
| | +-pyyaml(version range:*)
| +-python-dateutil(version range:==2.6.1)
| | +-six(version range:*)
| | +-six(version range:>=1.5)
| +-pyyaml(version range:==3.12)
| +-requests(version range:==2.18.4)
| | +-certifi(version range:>=2017.4.17)
| | +-chardet(version range:<3.1.0,>=3.0.2)
| | +-idna(version range:<2.7,>=2.5)
| | +-urllib3(version range:<1.23,>=1.21.1)
| +-requests-file(version range:==1.4.2)
| | +-requests(version range:>=1.0.0)
| | | +-certifi(version range:>=2017.4.17)
| | | +-chardet(version range:<3.1.0,>=3.0.2)
| | | +-idna(version range:<2.7,>=2.5)
| | | +-urllib3(version range:<1.23,>=1.21.1)
| | +-six(version range:*)
| +-s3transfer(version range:==0.1.11)
| | +-botocore(version range:>=1.3.0,<2.0.0)
| +-six(version range:==1.11.0)
| +-termcolor(version range:==1.1.0)
| +-tldextract(version range:==2.2.0)
| | +-idna(version range:*)
| | +-requests(version range:>=2.1.0)
| | | +-certifi(version range:>=2017.4.17)
| | | +-chardet(version range:<3.1.0,>=3.0.2)
| | | +-idna(version range:<2.7,>=2.5)
| | | +-urllib3(version range:<1.23,>=1.21.1)
| | +-requests-file(version range:>=1.4)
| | | +-requests(version range:>=1.0.0)
| | | | +-certifi(version range:>=2017.4.17)
| | | | +-chardet(version range:<3.1.0,>=3.0.2)
| | | | +-idna(version range:<2.7,>=2.5)
| | | | +-urllib3(version range:<1.23,>=1.21.1)
| | | +-six(version range:*)
| | +-setuptools(version range:*)
| +-urllib3(version range:==1.22)
| +-websocket-client(version range:==0.44.0)
| | +-six(version range:*)
Fitblip commented 4 years ago

Hi @NeolithEra - sorry for the delay.

Interesting, I'll update this to use a >=. Thanks for the info!

Fitblip commented 4 years ago

Fixed with https://github.com/CaliDog/certstream-python/commit/601fadcaab599444a5497cc7ba5c4be6a92bb9e7#diff-b4ef698db8ca845e5845c4618278f29aR1!