bottle icon indicating copy to clipboard operation
bottle copied to clipboard

fix: cgi.FieldStorage not available in Python 3.13

Open defnull opened this issue 2 years ago • 9 comments

cgi.FieldStorage (used for multipart parsing) was deprecated in Python 3.11 and removed in 3.13. We now have to ship our own implementation (mostly a copy&paste from the multipart module)

defnull avatar Nov 29 '23 14:11 defnull

@defnull is there anyway one can help you to get this merged?

oz123 avatar Jan 02 '24 22:01 oz123

Tests do not actually pass yet and test coverage was lacking, so this should be considered a WIP for now and not ready to merge yet.

I had a local version that has better test coverage and kinda works, but was not pushed yet because I'm still not confident enough that this is a proper replacement. I'll push a working version now and would appreciate some testing (correctness and performance) and feedback.

defnull avatar Jan 03 '24 20:01 defnull

Github actions are kinda useless for testing legacy python versions. I'll have to somehow get those tests working locally. We still want to support 2.7 and 3.6+ with the master branch.

defnull avatar Jan 03 '24 20:01 defnull

May out of scope here, but why do you still keen on supporting legacy python versions on the master branch? Also, I can help with fixing GH workflows on those python versions, if this helps brings this forward (hint, I'll use asdf to install python2.7 - python3.7 on a plain ubuntu container).

oz123 avatar Jan 03 '24 20:01 oz123

May out of scope here, but why do you still keen on supporting legacy python versions on the master branch?

Yes you are right, that should not be a blocking issue for the next release.

The 0.12 branch supports versions down to 2.5 and 3.2. An impressive feat and really nice for development in legacy environments, but no longer feasible with modern versions in mind. The master/main branch which should have been released years ago as 0.13 already dropped 2.5 and 2.6, which leaves 2.7 and 3.2+. But supporting 3.2 in a new release makes no sense anymore.

Maybe we should just move on, prepare Bottle 1.0 with a Python 3.8+ requirement and call it a day. People that need support for EOL Python versions can still rely on Bottle 0.12

defnull avatar Jan 03 '24 22:01 defnull

Ping. Do you need help with finishing this PR? This is almost done...

oz123 avatar Jan 26 '24 07:01 oz123