9 ms·
Flask 2.0.0 has been merged into master
- chirau 5y agoIn case anyone is interested in the major changes in 2.0.x: https://flask.palletsprojects.com/en/master/changes/ https://flask.palletsprojects.com/en/master/changes/
- viraptor 5y agoAt the very bottom: "Add type hinting." I love that this happens to larger libraries now. It doesn't need to be 100% complete, but it will still improve many devs' lives. I hope it will become the default for new projects and major updates.
- anonymouse008 5y agoHow Steve Wozniak wrote anything by paper, much less BASIC for the Apple I, is beyond me... He and his kind are in a different reality
- HDMI_Cable 5y agoWriting code by hand isn't too bad, especially with a good language like LISP. I don't think it requires too much extra effort, just more attention and care as to not make syntax mistakes. With near-instant compile times and auto-linting, we sort of lose the ability to auto-vet code before inputting it.
- StreamBright 5y agoI think it is a bit deep than that. I love LISP to death but I would never trade a ML language for LISP for writing code that goes into production.
- coldtea 5y agoMany people put Lisp into production, even in very demanding environments, just fine...
- StreamBright 5y agoI never doubted that.
- viraptor 5y agoThe scope is much more limited in his case. When the problem space is super narrow and the base language is your whole environment, writing correct code in a big batch is not that hard. On the other hand, dealing with flask and basically the whole stack of everything web at the same time is a different kind of challenge.
- Erlangen 5y ago> Warning: This is the development version. The latest stable version is Version 1.1.x. I couldn't find a way to close the top banner. So I clicked around and found out this page had a bug. In the bottom right corner there is button to select the version of flask. 1. click v2.0.x, works fine 2. click v1.1.x, 404 page not found 3. click v2.0.x again, 404 page not found
- lettergram 5y agoHonestly, I thought flask was mostly just in maintenance mode. Glad to see it progress!
- rastapasta42 5y agoNo point in iterating once you reach perfection.
- viraptor 5y agoDefinitely not perfection. But yes, we shouldn't see "complete project" as a bad thing.
- nerdbaggy 5y agoI have moved most of my stuff to FastAPI. It’s so much more enjoyable than flask. https://fastapi.tiangolo.com/ https://fastapi.tiangolo.com/
- dheera 5y agoI've moved most of my Flask projects to Express and NodeJS. Flask was just a PITA to deploy properly in a way that it could handle lots of concurrent connections without a massive memory footprint, and async in Python is a mess. The JS ecosystem has on the other hand moved to async and Promises as the standand/default way to implement things, which makes things much easier. Express middleware is also just easier to write than Flask middleware.
- crazypython 5y ago> Flask was just a PITA to deploy properly in a way that it could handle lots of concurrent connections without a massive memory footprint, and async in Python is a mess. That makes me concerned. Does anyone here know if FastAPI is better? How many concurrent connections could your Express app handle at once?
- kortex 5y agoYes. Night and day. I haven't got too deep into it, but FastApi allows writing async def right out of the box, super easy to set up. Uvicorn is stupid fast and easily configurable. There is also fledgeling asgi (async wsgi) support iirc.
- 1_player 5y ago> The JS ecosystem has on the other hand moved to async and Promises as the standand/default way to implement things, which makes things much easier. Weird, none of the issues in my career as a full stack dev ever have been due to a lack of async primitives. There are much more elegant ways of doing concurrency than Promises and coloured (async vs regular) functions, if that's the issue.
- postpawl 5y ago
- liquidise 5y ago> Drop support for Python 2 Python 3 released on '08. Flask debuted a couple of years later in 2010, on Python 2. 11.5 years later Python 2 is nearly in the rearview. The history of the Python 3 release is surely an impressive one. On a more related note, props to devs/contributors for this release. My experience with Flask was pop-up projects and never mission critical, but i always found it a joy to use and quite intuitive.
- rastapasta42 5y agoYou would be surprised by the amount of mission-critical code which runs on Flask. Flask is a great library which gets out of your way - I find it a joy to use compared to Django. Although there are some dark sides, particularly with how Flask interacts with Werkzeug during exceptions when you need CORS (for example, we can't overwrite exception page's Access-Control-Allow-Origin headers with @app.after_request since these headers are set by Werkzeug and can't be overwritten in Flask). This prevents us from levering Flask's default except handler in certain environments which require custom headers for exception handling page.
- Nicholas_C 5y ago> Flask is a great library which gets out of your way - I find it a joy to use compared to Django. Agreed. I found Flask after being really annoyed with learning Django. Flask + Heroku is an awesome combo for the hobbyist like myself.
- mvolfik 5y agoHow are these set in werkzeug? Sound like you would be using the werkzeug dev server then... But this works for me: @app.errorhandler(ApplicationError) def handle(e): resp = e.args[0] resp.headers["Access-Control-Allow-Origin"] = "..." resp.status_code = 500 return resp @app.route("/err") def err(): raise ApplicationError(jsonify({"reason": "test"}))
- rastapasta42 5y ago
- rastapasta42 5y agoI am disappointed this release does not introduce any functionality similar to the Flask-Classful project. I find built-in MethodViews very limited and unable to capture context. Furthermore, MethodViews force you to artificially split endpoints between multiple classes when functionality better belongs in a single class. https://flask-classful.teracy.org/#using-custom-routes https://flask-classful.teracy.org/#using-custom-routes
- whalesalad 5y agoThis is huge. (Serious!) https://github.com/pallets/flask/pull/3907 https://github.com/pallets/flask/pull/3907 Add route decorators for common HTTP methods. For example, @app.post("/login") is a shortcut for @app.route("/login", methods=["POST"]).
- rastapasta42 5y ago> This is huge. I consider this to be a minor syntactic sugar.
- whalesalad 5y agoConsidering it’s a very common touch point as a flask developer it’s great to see.
- kstrauser 5y agoIt’s not rocking my world, but I know which one I’d rather grep for (especially if the methods kwarg got pushed down to another line due to formatting).
- deleted 5y ago[deleted]
- systemvoltage 5y ago> Add route decorators for common HTTP methods. For example, @app.post("/login") is a shortcut for @app.route("/login", methods=["POST"]). #3907 Why? By default, it’s GET if you don’t specify a method. But now with this change, for special routes such as “/login” it’s POST. IMO these kinds of things make for “gotcha” moments. Just keep defaults simple without special exceptions.
- Hasnep 5y agoI think you've misread the change, it's nothing to do with login being a special case, it's about moving the HTTP method from the methods argument to the function name.
- systemvoltage 5y agoYes I did. Thanks!
- zild3d 5y ago"common HTTP methods" meaning GET, POST, PUT, PATCH, DELETE not "/login", etc (those would be routes)