testing-cabal / traceback2

Backport of the Python stdlib traceback module
Other
5 stars 9 forks source link

Don't use "linecache2" for recent Python 3 versions #10

Closed htgoebel closed 7 years ago

htgoebel commented 7 years ago

traceback2 requires linecache2, but linecache2 is a backport (unfortunately it does not tell from which Python version, see https://github.com/testing-cabal/linecache2/issues/13). Please update the requirements file to conditionally require linecache2 only for older Python version.

Each additional package makes distribution maintainers life more complicated, since they have to maintain yet another package even if the distribution only includes Python 3.5 or even 3.6

Thanks.

rbtcollins commented 7 years ago

I see you've opened a bunch of bugs, so I'm just going to answer once here and link the other tickets to this one.

testtools uses unittest2 to be able to always depend on the latest features in unitest; unittest2 is a rolling backport - its not a backport from a specific version of unittest, its from CPython master, and is often ahead of releases of Python, and also from time to time behind - and we don't want to deal with version skew.

traceback is a dependency of unittest linecache is a dependency of traceback

The dependences as they are are correct, safe, and trivial to package. Unless you're offering to do the ongoing work of backporting and responding to bug reports that may arise from doing this differently, I'm not interested in making this more complicated.

With regard to package maintainer overheads:

avylove commented 4 years ago

This is incorrect. unittest2 is a backport of unittest for Python 2.6. While it was rolling for a few year, it hasn't been updated since June 2015. This seems to be running counterproductive to your goals.

rbtcollins commented 4 years ago

traceback2 and linecache2 would typically both be updated at once; I rather suspect that making the dependency conditional is just going to make the likelihood of bugs, where a backported change in traceback depends on a change in linecache that isn't present, much much higher.

I've added a bunch of folk to help maintain these projects and stepped back myself, but my inclination here, given that Python2 is now EOL, is to start removing the dependency on these backports as I think all the needed features are now able to be presumed to be present in all supported Pythons.

The std lib decomposition thing is still unlikely to happen, and the effort around running the backports while modest does require some folk with ongoing attention to it.