memsql / memsql-python

This repository holds some python libraries and plugins designed to be used with MemSQL.
MIT License
62 stars 33 forks source link

Relax version constraints for some dependencies. #14

Closed jezdez closed 5 years ago

jezdez commented 5 years ago

Six, mysqlclient and python-dateutil are often depended on in other libaries, which means pinning their version in memsql-python is an issue during installation when using pip and effectively prevents your users to follow best practices to stay up-to-date with updates -- at least for minor releases.

Since six is very stable (maintained by Python core devs), dateutil has a very clear change history and mysqlient has received a number of fixes I suggest to:

What do you think?

PS: Any reason to still have Python 2.6 supported by this package?

carlsverre commented 5 years ago

While I am down with keeping things more up-to-date we need to be careful about updating third party dependencies (especially ones used in data conversions) since MemSQL != MySQL. For example one recent change made to the underlying mysqlclient library is that it now compiles using the mysql 8 libraries. Since MemSQL is not 100% protocol compatible with mysql 8, that change is too unsafe for this library.

I think that the only change we can reasonably accept without additional work/testing is relaxing the six dependency. We also need to make this library tested against MemSQL proper which has been difficult to do in the past (MemSQL asks for a lot of CPU/RAM which isn't provided by travis-ci).

Will add a roadmap item to take a look at these issues. If someone from the community decides to switching testing over to MemSQL then I would be a lot more open to upgrading.

As for eliminating Python 2 support - I would be open to it, as long as a branch was maintained for users who are still stuck on Python 2.

jezdez commented 5 years ago

While I am down with keeping things more up-to-date we need to be careful about updating third party dependencies (especially ones used in data conversions) since MemSQL != MySQL. For example one recent change made to the underlying mysqlclient library is that it now compiles using the mysql 8 libraries. Since MemSQL is not 100% protocol compatible with mysql 8, that change is too unsafe for this library.

Interesting, thanks for elaborating. I didn't know that particular side-effect.

I think that the only change we can reasonably accept without additional work/testing is relaxing the six dependency.

That makes sense, lemme open a separate PR for six only.

We also need to make this library tested against MemSQL proper which has been difficult to do in the past (MemSQL asks for a lot of CPU/RAM which isn't provided by travis-ci).

Hm, interesting. I wonder if using something like Circle CI, which provides 4GB of memory and 2vCPU per VM/container by default would suffice?

Will add a roadmap item to take a look at these issues. If someone from the community decides to switching testing over to MemSQL then I would be a lot more open to upgrading.

As for eliminating Python 2 support - I would be open to it, as long as a branch was maintained for users who are still stuck on Python 2.

For the record, I only asked for the status of 2.6, not Python 2 generally. Since 2.7 will most likely be supported by the big distros for a while, I would say it's okay to keep supporting it for a bit still.

jezdez commented 5 years ago

Closing in favor of #14.