Compare commits
	
		
			15 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 35c76253bf | ||
|   | 8d86c3c598 | ||
|   | 97635111af | ||
|   | 7f3fe40cd4 | ||
|   | ea34bcd849 | ||
|   | 05f758583b | ||
|   | 760c74a293 | ||
|   | 9def46beb8 | ||
|   | 04be8e95a5 | ||
|   | 78ced20fc7 | ||
|   | c3003413d3 | ||
|   | fe3fdc5d83 | ||
|   | b66fb6f9e8 | ||
|   | bf6175fb20 | ||
|   | 58ca887be4 | 
							
								
								
									
										12
									
								
								.github/FUNDING.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								.github/FUNDING.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| # These are supported funding model platforms | ||||
|  | ||||
| github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] | ||||
| patreon: # Replace with a single Patreon username | ||||
| open_collective: sanic-org # Replace with a single Open Collective username | ||||
| ko_fi: # Replace with a single Ko-fi username | ||||
| tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel | ||||
| community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry | ||||
| liberapay: # Replace with a single Liberapay username | ||||
| issuehunt: # Replace with a single IssueHunt username | ||||
| otechie: # Replace with a single Otechie username | ||||
| custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] | ||||
							
								
								
									
										201
									
								
								CHANGELOG.rst
									
									
									
									
									
								
							
							
						
						
									
										201
									
								
								CHANGELOG.rst
									
									
									
									
									
								
							| @@ -1,9 +1,96 @@ | ||||
| Version 20.12.0 | ||||
| =============== | ||||
|  | ||||
| Features | ||||
| ******** | ||||
|  | ||||
|   * | ||||
|     `#1945 <https://github.com/huge-success/sanic/pull/1945>`_ | ||||
|     Static route more verbose if file not found | ||||
|  | ||||
|   * | ||||
|     `#1954 <https://github.com/huge-success/sanic/pull/1954>`_ | ||||
|     Fix static routes registration on a blueprint | ||||
|  | ||||
|   * | ||||
|     `#1961 <https://github.com/huge-success/sanic/pull/1961>`_ | ||||
|     Add Python 3.9 support | ||||
|  | ||||
|   * | ||||
|     `#1962 <https://github.com/huge-success/sanic/pull/1962>`_ | ||||
|     Sanic CLI upgrade | ||||
|  | ||||
|   * | ||||
|     `#1967 <https://github.com/huge-success/sanic/pull/1967>`_ | ||||
|     Update aiofile version requirements | ||||
|  | ||||
|   * | ||||
|     `#1969 <https://github.com/huge-success/sanic/pull/1969>`_ | ||||
|     Update multidict version requirements | ||||
|  | ||||
|   * | ||||
|     `#1970 <https://github.com/huge-success/sanic/pull/1970>`_ | ||||
|     Add py.typed file | ||||
|  | ||||
|   * | ||||
|     `#1972 <https://github.com/huge-success/sanic/pull/1972>`_ | ||||
|     Speed optimization in request handler | ||||
|  | ||||
|   * | ||||
|     `#1979 <https://github.com/huge-success/sanic/pull/1979>`_ | ||||
|     Add app registry and Sanic class level app retrieval | ||||
|  | ||||
| Bugfixes | ||||
| ******** | ||||
|  | ||||
|   * | ||||
|     `#1965 <https://github.com/huge-success/sanic/pull/1965>`_ | ||||
|     Fix Chunked Transport-Encoding in ASGI streaming response | ||||
|  | ||||
| Deprecations and Removals | ||||
| ************************* | ||||
|  | ||||
|   * | ||||
|     `#1981 <https://github.com/huge-success/sanic/pull/1981>`_ | ||||
|     Cleanup and remove deprecated code | ||||
|  | ||||
| Developer infrastructure | ||||
| ************************ | ||||
|  | ||||
|   * | ||||
|     `#1956 <https://github.com/huge-success/sanic/pull/1956>`_ | ||||
|     Fix load module test | ||||
|  | ||||
|   * | ||||
|     `#1973 <https://github.com/huge-success/sanic/pull/1973>`_ | ||||
|     Transition Travis from .org to .com | ||||
|  | ||||
|   * | ||||
|     `#1986 <https://github.com/huge-success/sanic/pull/1986>`_ | ||||
|     Update tox requirements | ||||
|  | ||||
| Improved Documentation | ||||
| ********************** | ||||
|  | ||||
|   * | ||||
|     `#1951 <https://github.com/huge-success/sanic/pull/1951>`_ | ||||
|     Documentation improvements | ||||
|  | ||||
|   * | ||||
|     `#1983 <https://github.com/huge-success/sanic/pull/1983>`_ | ||||
|     Remove duplicate contents in testing.rst | ||||
|  | ||||
|   * | ||||
|     `#1984 <https://github.com/huge-success/sanic/pull/1984>`_ | ||||
|     Fix typo in routing.rst | ||||
|  | ||||
|  | ||||
| Version 20.9.1 | ||||
| =============== | ||||
|  | ||||
| Bugfixes | ||||
| ******** | ||||
|    | ||||
|  | ||||
|   * | ||||
|     `#1954 <https://github.com/huge-success/sanic/pull/1954>`_ | ||||
|     Fix static route registration on blueprints | ||||
| @@ -17,7 +104,7 @@ Version 19.12.3 | ||||
|  | ||||
| Bugfixes | ||||
| ******** | ||||
|    | ||||
|  | ||||
|   * | ||||
|     `#1959 <https://github.com/huge-success/sanic/pull/1959>`_ | ||||
|     Removes duplicate headers in ASGI streaming body | ||||
| @@ -37,27 +124,27 @@ Features | ||||
|   * | ||||
|     `#1894 <https://github.com/huge-success/sanic/pull/1894>`_ | ||||
|     Automatically set ``test_mode`` flag on app instance | ||||
|    | ||||
|  | ||||
|   * | ||||
|     `#1903 <https://github.com/huge-success/sanic/pull/1903>`_  | ||||
|     `#1903 <https://github.com/huge-success/sanic/pull/1903>`_ | ||||
|     Add new unified method for updating app values | ||||
|    | ||||
|  | ||||
|   * | ||||
|     `#1906 <https://github.com/huge-success/sanic/pull/1906>`_, | ||||
|     `#1909 <https://github.com/huge-success/sanic/pull/1909>`_ | ||||
|     Adds WEBSOCKET_PING_TIMEOUT and WEBSOCKET_PING_INTERVAL configuration values | ||||
|    | ||||
|  | ||||
|   * | ||||
|     `#1935 <https://github.com/huge-success/sanic/pull/1935>`_ | ||||
|     httpx version dependency updated, it is slated for removal as a dependency in v20.12 | ||||
|  | ||||
|   * | ||||
|     `#1937 <https://github.com/huge-success/sanic/pull/1937>`_  | ||||
|     `#1937 <https://github.com/huge-success/sanic/pull/1937>`_ | ||||
|     Added auto, text, and json fallback error handlers (in v21.3, the default will change form html to auto) | ||||
|  | ||||
| Bugfixes | ||||
| ******** | ||||
|    | ||||
|  | ||||
|   * | ||||
|     `#1897 <https://github.com/huge-success/sanic/pull/1897>`_ | ||||
|     Resolves exception from unread bytes in stream | ||||
| @@ -98,7 +185,7 @@ Version 20.6.3 | ||||
|  | ||||
| Bugfixes | ||||
| ******** | ||||
|    | ||||
|  | ||||
|   * | ||||
|     `#1884 <https://github.com/huge-success/sanic/pull/1884>`_ | ||||
|     Revert change to multiprocessing mode | ||||
| @@ -109,7 +196,7 @@ Version 20.6.2 | ||||
|  | ||||
| Features | ||||
| ******** | ||||
|    | ||||
|  | ||||
|   * | ||||
|     `#1641 <https://github.com/huge-success/sanic/pull/1641>`_ | ||||
|     Socket binding implemented properly for IPv6 and UNIX sockets | ||||
| @@ -120,7 +207,7 @@ Version 20.6.1 | ||||
|  | ||||
| Features | ||||
| ******** | ||||
|    | ||||
|  | ||||
|   * | ||||
|     `#1760 <https://github.com/huge-success/sanic/pull/1760>`_ | ||||
|     Add version parameter to websocket routes | ||||
| @@ -131,7 +218,7 @@ Features | ||||
|  | ||||
|   * | ||||
|     `#1880 <https://github.com/huge-success/sanic/pull/1880>`_ | ||||
|     Add handler names for websockets for url_for usage  | ||||
|     Add handler names for websockets for url_for usage | ||||
|  | ||||
| Bugfixes | ||||
| ******** | ||||
| @@ -151,7 +238,7 @@ Bugfixes | ||||
|   * | ||||
|     `#1848 <https://github.com/huge-success/sanic/pull/1848>`_ | ||||
|     Reverse named_response_middlware execution order, to match normal response middleware execution order | ||||
|    | ||||
|  | ||||
|   * | ||||
|     `#1853 <https://github.com/huge-success/sanic/pull/1853>`_ | ||||
|     Fix pickle error when attempting to pickle an application which contains websocket routes | ||||
| @@ -203,28 +290,28 @@ Version 20.3.0 | ||||
| Features | ||||
| ******** | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1762 <https://github.com/huge-success/sanic/pull/1762>`_ | ||||
|     Add ``srv.start_serving()`` and ``srv.serve_forever()`` to ``AsyncioServer`` | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1767 <https://github.com/huge-success/sanic/pull/1767>`_ | ||||
|     Make Sanic usable on ``hypercorn -k trio myweb.app`` | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1768 <https://github.com/huge-success/sanic/pull/1768>`_ | ||||
|     No tracebacks on normal errors and prettier error pages | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1769 <https://github.com/huge-success/sanic/pull/1769>`_ | ||||
|     Code cleanup in file responses | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1793 <https://github.com/huge-success/sanic/pull/1793>`_ and | ||||
|     `#1819 <https://github.com/huge-success/sanic/pull/1819>`_  | ||||
|     `#1819 <https://github.com/huge-success/sanic/pull/1819>`_ | ||||
|     Upgrade ``str.format()`` to f-strings | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1798 <https://github.com/huge-success/sanic/pull/1798>`_ | ||||
|     Allow multiple workers on MacOS with Python 3.8 | ||||
|  | ||||
| @@ -235,19 +322,19 @@ Features | ||||
| Bugfixes | ||||
| ******** | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1748 <https://github.com/huge-success/sanic/pull/1748>`_ | ||||
|     Remove loop argument in ``asyncio.Event`` in Python 3.8 | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1764 <https://github.com/huge-success/sanic/pull/1764>`_ | ||||
|     Allow route decorators to stack up again | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1789 <https://github.com/huge-success/sanic/pull/1789>`_ | ||||
|     Fix tests using hosts yielding incorrect ``url_for`` | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1808 <https://github.com/huge-success/sanic/pull/1808>`_ | ||||
|      Fix Ctrl+C and tests on Windows | ||||
|  | ||||
| @@ -261,7 +348,7 @@ Deprecations and Removals | ||||
|   * | ||||
|     `#1801 <https://github.com/huge-success/sanic/pull/1801>`_ | ||||
|     Complete deprecation from `#1666 <https://github.com/huge-success/sanic/pull/1666>`_ of dictionary context on ``request`` objects. | ||||
|      | ||||
|  | ||||
|   * | ||||
|     `#1807 <https://github.com/huge-success/sanic/pull/1807>`_ | ||||
|     Remove server config args that can be read directly from app | ||||
| @@ -284,22 +371,22 @@ Dependencies | ||||
| Developer infrastructure | ||||
| ************************ | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1833 <https://github.com/huge-success/sanic/pull/1833>`_ | ||||
|     Resolve broken documentation builds | ||||
|  | ||||
| Improved Documentation | ||||
| ********************** | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1755 <https://github.com/huge-success/sanic/pull/1755>`_ | ||||
|     Usage of ``response.empty()`` | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1778 <https://github.com/huge-success/sanic/pull/1778>`_ | ||||
|     Update README | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1783 <https://github.com/huge-success/sanic/pull/1783>`_ | ||||
|     Fix typo | ||||
|  | ||||
| @@ -326,7 +413,7 @@ Improved Documentation | ||||
|   * | ||||
|     `#1834 <https://github.com/huge-success/sanic/pull/1834>`_ | ||||
|     Order of listeners | ||||
|      | ||||
|  | ||||
|  | ||||
| Version 19.12.0 | ||||
| =============== | ||||
| @@ -392,16 +479,16 @@ Version 19.6.2 | ||||
| Features | ||||
| ******** | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1562 <https://github.com/huge-success/sanic/pull/1562>`_ | ||||
|     Remove ``aiohttp`` dependency and create new ``SanicTestClient`` based upon | ||||
|     `requests-async <https://github.com/encode/requests-async>`_ | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1475 <https://github.com/huge-success/sanic/pull/1475>`_ | ||||
|     Added ASGI support (Beta) | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1436 <https://github.com/huge-success/sanic/pull/1436>`_ | ||||
|     Add Configure support from object string | ||||
|  | ||||
| @@ -409,19 +496,19 @@ Features | ||||
| Bugfixes | ||||
| ******** | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1587 <https://github.com/huge-success/sanic/pull/1587>`_ | ||||
|     Add missing handle for Expect header. | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1560 <https://github.com/huge-success/sanic/pull/1560>`_ | ||||
|     Allow to disable Transfer-Encoding: chunked. | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1558 <https://github.com/huge-success/sanic/pull/1558>`_ | ||||
|     Fix graceful shutdown. | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1594 <https://github.com/huge-success/sanic/pull/1594>`_ | ||||
|     Strict Slashes behavior fix | ||||
|  | ||||
| @@ -432,11 +519,11 @@ Deprecations and Removals | ||||
|     `#1544 <https://github.com/huge-success/sanic/pull/1544>`_ | ||||
|     Drop dependency on distutil | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1562 <https://github.com/huge-success/sanic/pull/1562>`_ | ||||
|     Drop support for Python 3.5 | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1568 <https://github.com/huge-success/sanic/pull/1568>`_ | ||||
|     Deprecate route removal. | ||||
|  | ||||
| @@ -453,39 +540,39 @@ Version 19.3 | ||||
| Features | ||||
| ******** | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1497 <https://github.com/huge-success/sanic/pull/1497>`_ | ||||
|     Add support for zero-length and RFC 5987 encoded filename for | ||||
|     multipart/form-data requests. | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1484 <https://github.com/huge-success/sanic/pull/1484>`_ | ||||
|     The type of ``expires`` attribute of ``sanic.cookies.Cookie`` is now | ||||
|     enforced to be of type ``datetime``. | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1482 <https://github.com/huge-success/sanic/pull/1482>`_ | ||||
|     Add support for the ``stream`` parameter of ``sanic.Sanic.add_route()`` | ||||
|     available to ``sanic.Blueprint.add_route()``. | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1481 <https://github.com/huge-success/sanic/pull/1481>`_ | ||||
|     Accept negative values for route parameters with type ``int`` or ``number``. | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1476 <https://github.com/huge-success/sanic/pull/1476>`_ | ||||
|     Deprecated the use of ``sanic.request.Request.raw_args`` - it has a | ||||
|     fundamental flaw in which is drops repeated query string parameters. | ||||
|     Added ``sanic.request.Request.query_args`` as a replacement for the | ||||
|     original use-case. | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1472 <https://github.com/huge-success/sanic/pull/1472>`_ | ||||
|     Remove an unwanted ``None`` check in Request class ``repr`` implementation. | ||||
|     This changes the default ``repr`` of a Request from ``<Request>`` to | ||||
|     ``<Request: None />`` | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1470 <https://github.com/huge-success/sanic/pull/1470>`_ | ||||
|     Added 2 new parameters to ``sanic.app.Sanic.create_server``\ : | ||||
|  | ||||
| @@ -496,21 +583,21 @@ Features | ||||
|  | ||||
|     This is a breaking change. | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1499 <https://github.com/huge-success/sanic/pull/1499>`_ | ||||
|     Added a set of test cases that test and benchmark route resolution. | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1457 <https://github.com/huge-success/sanic/pull/1457>`_ | ||||
|     The type of the ``"max-age"`` value in a ``sanic.cookies.Cookie`` is now | ||||
|     enforced to be an integer. Non-integer values are replaced with ``0``. | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1445 <https://github.com/huge-success/sanic/pull/1445>`_ | ||||
|     Added the ``endpoint`` attribute to an incoming ``request``\ , containing the | ||||
|     name of the handler function. | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1423 <https://github.com/huge-success/sanic/pull/1423>`_ | ||||
|     Improved request streaming. ``request.stream`` is now a bounded-size buffer | ||||
|     instead of an unbounded queue. Callers must now call | ||||
| @@ -523,7 +610,7 @@ Bugfixes | ||||
| ******** | ||||
|  | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1502 <https://github.com/huge-success/sanic/pull/1502>`_ | ||||
|     Sanic was prefetching ``time.time()`` and updating it once per second to | ||||
|     avoid excessive ``time.time()`` calls. The implementation was observed to | ||||
| @@ -531,25 +618,25 @@ Bugfixes | ||||
|     to negligible, so this has been removed. Fixes | ||||
|     `#1500 <https://github.com/huge-success/sanic/pull/1500>`_ | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1501 <https://github.com/huge-success/sanic/pull/1501>`_ | ||||
|     Fix a bug in the auto-reloader when the process was launched as a module | ||||
|     i.e. ``python -m init0.mod1`` where the sanic server is started | ||||
|     in ``init0/mod1.py`` with ``debug`` enabled and imports another module in | ||||
|     ``init0``. | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1376 <https://github.com/huge-success/sanic/pull/1376>`_ | ||||
|     Allow sanic test client to bind to a random port by specifying | ||||
|     ``port=None`` when constructing a ``SanicTestClient`` | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1399 <https://github.com/huge-success/sanic/pull/1399>`_ | ||||
|     Added the ability to specify middleware on a blueprint group, so that all | ||||
|     routes produced from the blueprints in the group have the middleware | ||||
|     applied. | ||||
|  | ||||
|   *  | ||||
|   * | ||||
|     `#1442 <https://github.com/huge-success/sanic/pull/1442>`_ | ||||
|     Allow the the use the ``SANIC_ACCESS_LOG`` environment variable to | ||||
|     enable/disable the access log when not explicitly passed to ``app.run()``. | ||||
| @@ -591,7 +678,7 @@ Version 18.12 | ||||
| 18.12.0 | ||||
| ******* | ||||
|  | ||||
| *  | ||||
| * | ||||
|   Changes: | ||||
|  | ||||
|  | ||||
| @@ -609,7 +696,7 @@ Version 18.12 | ||||
|   * Deprecate Handler.log | ||||
|   * Pinned httptools requirement to version 0.0.10+ | ||||
|  | ||||
| *  | ||||
| * | ||||
|   Fixes: | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -1 +1 @@ | ||||
| __version__ = "20.9.1" | ||||
| __version__ = "20.12.3" | ||||
|   | ||||
							
								
								
									
										30
									
								
								sanic/app.py
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								sanic/app.py
									
									
									
									
									
								
							| @@ -12,6 +12,7 @@ from ssl import Purpose, SSLContext, create_default_context | ||||
| from traceback import format_exc | ||||
| from typing import Any, Dict, Optional, Type, Union | ||||
| from urllib.parse import urlencode, urlunparse | ||||
| from warnings import warn | ||||
|  | ||||
| from sanic import reloader_helpers | ||||
| from sanic.asgi import ASGIApp | ||||
| @@ -50,6 +51,7 @@ class Sanic: | ||||
|         strict_slashes=False, | ||||
|         log_config=None, | ||||
|         configure_logging=True, | ||||
|         register=None, | ||||
|     ): | ||||
|  | ||||
|         # Get name from previous stack frame | ||||
| @@ -88,7 +90,11 @@ class Sanic: | ||||
|         # Register alternative method names | ||||
|         self.go_fast = self.run | ||||
|  | ||||
|         self.__class__.register_app(self) | ||||
|         if register is not None: | ||||
|             self.config.REGISTER = register | ||||
|  | ||||
|         if self.config.REGISTER: | ||||
|             self.__class__.register_app(self) | ||||
|  | ||||
|     @property | ||||
|     def loop(self): | ||||
| @@ -489,9 +495,7 @@ class Sanic: | ||||
|             websocket_handler = partial( | ||||
|                 self._websocket_handler, handler, subprotocols=subprotocols | ||||
|             ) | ||||
|             websocket_handler.__name__ = ( | ||||
|                 "websocket_handler_" + handler.__name__ | ||||
|             ) | ||||
|             websocket_handler.__name__ = handler.__name__ | ||||
|             routes.extend( | ||||
|                 self.router.add( | ||||
|                     uri=uri, | ||||
| @@ -742,6 +746,24 @@ class Sanic: | ||||
|             kw.update(name=view_name) | ||||
|  | ||||
|         uri, route = self.router.find_route_by_view_name(view_name, **kw) | ||||
|  | ||||
|         # TODO(laggardkernel): this fix should be removed in v21.3. | ||||
|         # Try again without the unnecessary prefix "websocket_handler_", | ||||
|         # which was added by accident on non-blueprint handlers. GH-2021 | ||||
|         if not (uri and route) and view_name.startswith("websocket_handler_"): | ||||
|             view_name = view_name[18:] | ||||
|             uri, route = self.router.find_route_by_view_name(view_name, **kw) | ||||
|             if uri and route: | ||||
|                 warn( | ||||
|                     "The bug of adding unnecessary `websocket_handler_` " | ||||
|                     "prefix in param `view_name` for non-blueprint handlers " | ||||
|                     "is fixed. This backward support will be removed in " | ||||
|                     "v21.3. Please update `Sanic.url_for()` callings in your " | ||||
|                     "code soon.", | ||||
|                     DeprecationWarning, | ||||
|                     stacklevel=2, | ||||
|                 ) | ||||
|  | ||||
|         if not (uri and route): | ||||
|             raise URLBuildError( | ||||
|                 f"Endpoint with name `{view_name}` was not found" | ||||
|   | ||||
| @@ -40,6 +40,7 @@ DEFAULT_CONFIG = { | ||||
|     "PROXIES_COUNT": None, | ||||
|     "FORWARDED_FOR_HEADER": "X-Forwarded-For", | ||||
|     "FALLBACK_ERROR_FORMAT": "html", | ||||
|     "REGISTER": True, | ||||
| } | ||||
|  | ||||
|  | ||||
|   | ||||
							
								
								
									
										5
									
								
								setup.py
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								setup.py
									
									
									
									
									
								
							| @@ -57,7 +57,8 @@ setup_kwargs = { | ||||
|     "author": "Sanic Community", | ||||
|     "author_email": "admhpkns@gmail.com", | ||||
|     "description": ( | ||||
|         "A web server and web framework that's written to go fast. Build fast. Run fast." | ||||
|         "A web server and web framework that's written to go fast. " | ||||
|         "Build fast. Run fast." | ||||
|     ), | ||||
|     "long_description": long_description, | ||||
|     "packages": ["sanic"], | ||||
| @@ -80,7 +81,7 @@ env_dependency = ( | ||||
|     '; sys_platform != "win32" ' 'and implementation_name == "cpython"' | ||||
| ) | ||||
| ujson = "ujson>=1.35" + env_dependency | ||||
| uvloop = "uvloop>=0.5.3" + env_dependency | ||||
| uvloop = "uvloop>=0.5.3,<0.15.0" + env_dependency | ||||
|  | ||||
| requirements = [ | ||||
|     "httptools>=0.0.10", | ||||
|   | ||||
| @@ -3,6 +3,7 @@ import logging | ||||
| import sys | ||||
|  | ||||
| from inspect import isawaitable | ||||
| from os import environ | ||||
| from unittest.mock import patch | ||||
|  | ||||
| import pytest | ||||
| @@ -290,6 +291,7 @@ def test_app_registry_name_reuse(): | ||||
|     with pytest.raises(SanicException): | ||||
|         Sanic("test") | ||||
|     Sanic.test_mode = True | ||||
|     Sanic("test") | ||||
|  | ||||
|  | ||||
| def test_app_registry_retrieval(): | ||||
| @@ -306,3 +308,17 @@ def test_get_app_does_not_exist_force_create(): | ||||
|     assert isinstance( | ||||
|         Sanic.get_app("does-not-exist", force_create=True), Sanic | ||||
|     ) | ||||
|  | ||||
|  | ||||
| def test_app_no_registry(): | ||||
|     Sanic("no-register", register=False) | ||||
|     with pytest.raises(SanicException): | ||||
|         Sanic.get_app("no-register") | ||||
|  | ||||
|  | ||||
| def test_app_no_registry_env(): | ||||
|     environ["SANIC_REGISTER"] = "False" | ||||
|     Sanic("no-register") | ||||
|     with pytest.raises(SanicException): | ||||
|         Sanic.get_app("no-register") | ||||
|     del environ["SANIC_REGISTER"] | ||||
|   | ||||
| @@ -348,3 +348,13 @@ def test_methodview_naming(methodview_app): | ||||
|  | ||||
|     assert viewone_url == "/view_one" | ||||
|     assert viewtwo_url == "/view_two" | ||||
|  | ||||
|  | ||||
| def test_url_for_with_websocket_handlers(app): | ||||
|     # Test for a specific bugfix in GH-2021 | ||||
|     @app.websocket("/ws") | ||||
|     async def my_handler(request, ws): | ||||
|         pass | ||||
|  | ||||
|     assert app.url_for("my_handler") == "/ws" | ||||
|     assert app.url_for("websocket_handler_my_handler") == "/ws" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user