Skip to content

Releases: sanic-org/sanic

Version 21.6.0

27 Jun 20:07
8df80e2
Compare
Choose a tag to compare

Features

  • #2094 Add response.eof() method for closing a stream in a handler
  • #2097 Allow case-insensitive HTTP Upgrade header
  • #2104 Explicit usage of CIMultiDict getters
  • #2109 Consistent use of error loggers
  • #2114 New client_ip access of connection info instance
  • #2119 Alternatate classes on instantiation for Config and Sanic.ctx
  • #2133 Implement new version of AST router
    • Proper differentiation between alpha and string param types
    • Adds a slug param type, example: <foo:slug>
    • Deprecates <foo:string> in favor of <foo:str>
    • Deprecates <foo:number> in favor of <foo:float>
    • Adds a route.uri accessor
  • #2136 CLI improvements with new optional params
  • #2137 Add version_prefix to URL builders
  • #2140 Event autoregistration with EVENT_AUTOREGISTER
  • #2146, #2147 Require stricter names on Sanic() and Blueprint()
  • #2150 Infinitely reusable and nestable Blueprint and BlueprintGroup
  • #2154 Upgrade websockets dependency to min version
  • #2155 Allow for maximum header sizes to be increased: REQUEST_MAX_HEADER_SIZE
  • #2157 Allow app factory pattern in CLI
  • #2165 Change HTTP methods to enums
  • #2167 Allow auto-reloading on additional directories
  • #2168 Add simple HTTP server to CLI
  • #2170 Additional methods for attaching HTTPMethodView

Bugfixes

  • #2091 Fix UserWarning in ASGI mode for missing __slots__
  • #2099 Fix static request handler logging exception on 404
  • #2110 Fix request.args.pop removes parameters inconsistently
  • #2107 Fix type hinting for load_env
  • #2127 Make sure ASGI ws subprotocols is a list
  • #2128 Fix issue where Blueprint exception handlers do not consistently route to proper handler

Deprecations and Removals

  • #2156 Remove config value REQUEST_BUFFER_QUEUE_SIZE
  • #2170 CompositionView deprecated and marked for removal in 21.12
  • #2172 Deprecate StreamingHTTPResponse

Developer infrastructure

  • #2149 Remove Travis CI in favor of GitHub Actions

Improved Documentation

  • #2164 Fix typo in documentation
  • #2100 Remove documentation for non-existent arguments

Version 21.3.4

19 Apr 22:35
Compare
Choose a tag to compare

Bugfixes

#2117 Add sanic-routing==0.6 with RouteGroup and resolve:

  • #2116 Access logs not properly displaying body size
  • #2103 Request body not automatically loading
  • #2101 ASGI routes not extracting body
  • #2090 Edge case on router with overloading

Version 21.3.3

19 Apr 22:28
Compare
Choose a tag to compare

NO RELEASE

Version 21.3.2

23 Mar 00:33
Compare
Choose a tag to compare

Bugfixes

  • #2081 Disable response timeout on websocket connections
  • #2085 Make sure that blueprints with no slash is maintained when applied

Version 21.3.1

21 Mar 13:05
Compare
Choose a tag to compare

Bugfixes

  • #2076 Static files inside subfolders are not accessible (404)

Version 21.3.0

21 Mar 08:44
2586989
Compare
Choose a tag to compare

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_

Version 20.12.3

21 Mar 07:50
35c7625
Compare
Choose a tag to compare

Version 20.12.3

Bugfixes

  • #2021 Remove prefix from websocket handler name

Version 20.12.2

16 Feb 07:36
Compare
Choose a tag to compare

Dependencies

  • #2026 Fix uvloop to 0.14 because 0.15 drops Python 3.6 support
  • #2029 Remove old chardet requirement, add in hard multidict requirement

Version 19.12.5

16 Feb 07:11
Compare
Choose a tag to compare

Dependencies

  • #2025 Fix uvloop to 0.14 because 0.15 drops Python 3.6 support
  • #2027 Remove old chardet requirement, add in hard multidict requirement

Version 20.12.1

05 Jan 16:32
Compare
Choose a tag to compare

Features

  • #1993 Add disable app registry