tlsfuzzer / python-ecdsa

pure-python ECDSA signature/verification and ECDH key agreement
Other
914 stars 315 forks source link

RFE: please remove using `six` module #304

Closed kloczek closed 2 years ago

kloczek commented 2 years ago

I think that ~2.5 yeaes after python 2.x has been EOSed it is time to start removing use six module.

[tkloczko@devel-g2v python-ecdsa-python-ecdsa-0.18.0]$ grep -rw six
.github/workflows/ci.yml:          - name: py2.7 with old six
.github/workflows/ci.yml:          wget https://files.pythonhosted.org/packages/65/26/32b8464df2a97e6dd1b656ed26b2c194606c16fe163c695a992b36c11cdf/six-1.13.0-py2.py3-none-any.whl
.github/workflows/ci.yml:          pip install pycparser-2.18.tar.gz importlib-1.0.4.zip Counter-1.0.0.tar.gz tox-2.9.1-py2.py3-none-any.whl inflect-0.3.0-py2.py3-none-any.whl pyOpenSSL-17.5.0-py2.py3-none-any.whl cffi-1.13.2.tar.gz idna-2.7-py2.py3-none-any.whl unittest2-1.1.0-py2.py3-none-any.whl hypothesis-2.0.0.tar.gz coverage-4.5.4.tar.gz mock-2.0.0-py2.py3-none-any.whl virtualenv-15.2.0-py2.py3-none-any.whl py-1.4.34-py2.py3-none-any.whl six-1.13.0-py2.py3-none-any.whl pluggy-0.5.2-py2.py3-none-any.whl cryptography-2.1.4.tar.gz docopt-0.6.2.tar.gz requests-2.19.1-py2.py3-none-any.whl traceback2-1.4.0-py2.py3-none-any.whl funcsigs-1.0.2-py2.py3-none-any.whl pbr-5.5.1-py2.py3-none-any.whl asn1crypto-1.4.0-py2.py3-none-any.whl enum34-1.1.10-py2-none-any.whl ipaddress-1.0.23-py2.py3-none-any.whl chardet-3.0.4-py2.py3-none-any.whl urllib3-1.23-py2.py3-none-any.whl certifi-2020.12.5-py2.py3-none-any.whl linecache2-1.0.0-py2.py3-none-any.whl ordereddict-1.1.tar.gz pytest-3.2.5-py2.py3-none-any.whl git+https://github.com/tomato42/coveralls-python.git@add-py26#egg=coveralls
.travis.yml:          - pip install six
NEWS:expected minimum version of `six` module (1.9.0) is now specified explicitly
NEWS:Remove the obsolete `six.py` file from wheel
NEWS:Stopped bundling `six`
README.md:This library uses only Python and the 'six' package. It is compatible with
docs/requirements.txt:six
docs/source/quickstart.rst:The library has just one mandatory dependency: ``six``.
docs/source/quickstart.rst:install ``six`` too.
setup.py:    install_requires=["six>=1.9.0"],
speed.py:import six
speed.py:    S1 = "import six; from ecdsa import SigningKey, %s" % curve
speed.py:    S3 = "msg = six.b('msg')"
speed.py:    sig = ecdsa.SigningKey.generate(c).sign(six.b("msg"))
src/ecdsa/__init__.pye:# while we don't use six in this file, we did bundle it for a long time, so
src/ecdsa/__init__.pye:import six
src/ecdsa/__init__.pye:    "six",
src/ecdsa/__init__.pye:    six.b(""),
src/ecdsa/__init__.py:# while we don't use six in this file, we did bundle it for a long time, so
src/ecdsa/__init__.py:import six
src/ecdsa/__init__.py:    "six",
src/ecdsa/__init__.py:    six.b(""),
src/ecdsa/_compat.pye:from six import integer_types
src/ecdsa/_compat.py:from six import integer_types
src/ecdsa/curves.pye:from six import PY2
src/ecdsa/curves.py:from six import PY2
src/ecdsa/der.pye:from six import int2byte, b, text_type
src/ecdsa/der.py:from six import int2byte, b, text_type
src/ecdsa/ecdsa.pye:from six import int2byte, b
src/ecdsa/ecdsa.py:from six import int2byte, b
src/ecdsa/ellipticcurve.pye:from six import python_2_unicode_compatible
src/ecdsa/ellipticcurve.py:from six import python_2_unicode_compatible
src/ecdsa/keys.pye:from six import PY2, b
src/ecdsa/keys.py:from six import PY2, b
src/ecdsa/numbertheory.pye:from six import integer_types, PY2
src/ecdsa/numbertheory.pye:from six.moves import reduce
src/ecdsa/numbertheory.py:from six import integer_types, PY2
src/ecdsa/numbertheory.py:from six.moves import reduce
src/ecdsa/test_der.pye:from six import b
src/ecdsa/test_der.py:from six import b
src/ecdsa/test_pyecdsa.pye:from six import b, print_, binary_type
src/ecdsa/test_pyecdsa.py:from six import b, print_, binary_type
src/ecdsa/util.pye:from six import PY2, int2byte, b, next
src/ecdsa/util.py:from six import PY2, int2byte, b, next
src/ecdsa.egg-info/PKG-INFO:This library uses only Python and the 'six' package. It is compatible with
src/ecdsa.egg-info/requires.txt:six>=1.9.0
tox.ini:# six==1.9.0 comes from setup.py install_requires
tox.ini:     py27_old_six: six==1.9.0
tox.ini:     six
tomato42 commented 2 years ago

As I mentioned in https://github.com/tlsfuzzer/python-ecdsa/discussions/300, six is here because we support Python 2.6. Just because upstream stopped the support of a particular version doesn't mean it's not supported.

kloczek commented 2 years ago

Is it not easier to keep python 2.x supporto on separated branch and have clean code on master?

tomato42 commented 2 years ago

Since when maintaining two projects is easier than maintaining one project?

I'm maintaining and extending this project essentially alone. If I have no problem maintaining compatibility with old versions, why you're telling me to drop support for them?

Maybe I have some good reasons for keeping python2 compatibility in the first place? For example because after almost 10 years since the instrumental project was abandoned, there is still no support for measuring conditional coverage with coveragepy?

kloczek commented 2 years ago

Maybe you don't knoiw but every VCS allows easy plly commits between branches?