github sanic-org/sanic v21.3.0
Version 21.3.0

Release Notes

Features

  • #1876 Unified streaming server
  • #2005 New Request.id property
  • #2008 Allow Pathlib Path objects to be passed to app.static() helper
  • #2010 #2031 New startup-optimized router
  • #2018 #2064 Listeners for main server process
  • #2032 Add raw header info to request object
  • #2042 #2060 #2061 Introduce Signals API
  • #2043 Add __str__ and __repr__ to Sanic and Blueprint
  • #2047 Enable versioning and strict slash on BlueprintGroup
  • #2053 Make get_app name argument optional
  • #2055 JSON encoder change via app
  • #2063 App and connection level context objects

Bugfixes and issues resolved

  • Resolve #1420 url_for where strict_slashes are on for a path ending in /
  • Resolve #1525 Routing is incorrect with some special characters
  • Resolve #1653 ASGI headers in body
  • Resolve #1722 Using curl in chunk mode
  • Resolve #1730 Extra content in ASGI streaming response
  • Resolve #1749 Restore broken middleware edge cases
  • Resolve #1785 #1804 Synchronous error handlers
  • Resolve #1790 Protocol errors did not support async error handlers #1790
  • Resolve #1824 Timeout on specific methods
  • Resolve #1875 Response timeout error from all routes after returning several timeouts from a specific route
  • Resolve #1988 Handling of safe methods with body
  • #2001 Raise ValueError when cookie max-age is not an integer

Deprecations and Removals

  • #2007
    • Config using from_envvar
    • Config using from_pyfile
    • Config using from_object
  • #2009 Remove Sanic test client to its own package
  • #2036 #2037 Drop Python 3.6 support
  • Request.endpoint deprecated in favor of Request.name
  • handler type name prefixes removed (static, websocket, etc)

Developer infrastructure

  • #1995 Create FUNDING.yml
  • #2013 Add codeql to CI pipeline
  • #2038 Codecov configuration updates
  • #2049 Updated setup.py to use find_packages

Improved Documentation

  • #1218 Documentation for sanic.log.* is missing
  • #1608 Add documentation on calver and LTS
  • #1731 Support mounting application elsewhere than at root path
  • #2006 Upgraded type annotations and improved docstrings and API documentation
  • #2052 Fix some examples and docs

Miscellaneous

  • Request.route property
  • Better websocket subprotocols support
  • Resolve bug with middleware in Blueprint Group when passed callable
  • Moves common logic between Blueprint and Sanic into mixins
  • Route naming changed to be more consistent
    • request endpoint is the route name
    • route names are fully namespaced
  • Some new convenience decorators:
    • @app.main_process_start
    • @app.main_process_stop
    • @app.before_server_start
    • @app.after_server_start
    • @app.before_server_stop
    • @app.after_server_stop
    • @app.on_request
    • @app.on_response
  • Fixes Allow header that did not include HEAD
  • Using "name" keyword in url_for for a "static" route where name does not exist
  • Cannot have multiple app.static() without using the named param
  • Using "filename" keyword in url_for on a file route
  • unquote in route def (not automatic)
  • routes_all is tuples
  • Handler arguments are kwarg only
  • request.match_info is now a cached (and not computed) property
  • Unknown static file mimetype is sent as application/octet-stream
  • _host keyword in url_for
  • Add charset default to utf-8 for text and js content types if not specified
  • Version for a route can be str, float, or int
  • Route has ctx property
  • App has routes_static, routes_dynamic, routes_regex
  • #2044 Code cleanup and refactoring
  • #2072 Remove BaseSanic metaclass
  • #2074 Performance adjustments in handle_request_
latest releases: v21.6.2, v21.6.1, v21.6.0...
6 months ago