2024-12-13 12:35:16 +01:00
|
|
|
-------------------------------------------------------------------
|
|
|
|
Mon Mar 25 20:19:46 UTC 2024 - Dan Čermák <dcermak@suse.com>
|
|
|
|
|
|
|
|
- New upstream release 0.29.0
|
|
|
|
|
|
|
|
* Cooperative signal handling (#1600) 19/03/24
|
|
|
|
* Revert raise `ClientDisconnected` on HTTP (#2276) 19/03/24
|
|
|
|
|
|
|
|
- Add patch:
|
|
|
|
* 0001-Stop-using-deprecated-app-shortcut-in-httpx.AsyncCli.patch
|
|
|
|
upstream fix for the testsuite with httpx 0.27
|
|
|
|
|
|
|
|
- Remove pointless Suggests:
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
Sun Mar 17 10:11:10 UTC 2024 - Dirk Müller <dmueller@suse.com>
|
|
|
|
|
|
|
|
- update to 0.28.0:
|
|
|
|
* Raise `ClientDisconnected` on `send()` when client
|
|
|
|
disconnected (#2220) 12/02/24
|
|
|
|
* Except `AttributeError` on `sys.stdin.fileno()` for Windows
|
|
|
|
IIS10 (#1947) 29/02/24
|
|
|
|
* Use `X-Forwarded-Proto` for WebSockets scheme when the proxy
|
|
|
|
provides it (#2258) 01/03/24
|
|
|
|
* Fix spurious LocalProtocolError errors when processing
|
|
|
|
pipelined requests (#2243) 10/02/24
|
|
|
|
* Fix nav overrides for newer version of Mkdocs Material
|
|
|
|
(#2233) 26/01/24
|
|
|
|
* Raise `ClientDisconnect(IOError)` on `send()` when client
|
|
|
|
disconnected (#2218) 19/01/24
|
|
|
|
* Bump ASGI WebSocket spec version to 2.4 (#2221) 20/01/24
|
|
|
|
* Update `--root-path` to include the root path prefix in the
|
|
|
|
full ASGI `path` as per the ASGI spec (#2213) 16/01/24
|
|
|
|
* Use `__future__.annotations` on some internal modules (#2199)
|
|
|
|
16/01/24
|
|
|
|
|
2024-05-03 23:25:27 +02:00
|
|
|
-------------------------------------------------------------------
|
|
|
|
Tue Jan 30 12:43:20 UTC 2024 - Daniel Garcia <daniel.garcia@suse.com>
|
|
|
|
|
|
|
|
- Disable flacky test in s390x with current python-websockets,
|
|
|
|
bsc#1217022
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
Sun Jan 14 10:55:54 UTC 2024 - Dirk Müller <dmueller@suse.com>
|
|
|
|
|
|
|
|
- update to 0.25.0:
|
|
|
|
* Support the WebSocket Denial Response ASGI extension (#1916)
|
|
|
|
* Allow explicit hidden file paths on `--reload-include`
|
|
|
|
* Properly annotate `uvicorn.run()`
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
Sun Nov 26 10:43:29 UTC 2023 - Dirk Müller <dmueller@suse.com>
|
|
|
|
|
|
|
|
- update to 0.24.0.post1:
|
|
|
|
* Revert mkdocs-material from 9.1.21 to 9.2.6 (#2148) 05/11/23
|
|
|
|
* Support Python 3.12 (#2145) 04/11/23
|
|
|
|
* Allow setting `app` via environment variable `UVICORN_APP`
|
|
|
|
(#2106) 21/09/23
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
Tue Sep 26 14:13:34 UTC 2023 - Dirk Müller <dmueller@suse.com>
|
|
|
|
|
|
|
|
- update to 0.23.2:
|
|
|
|
* Maintain the same behavior of `websockets` from 10.4 on 11.0
|
|
|
|
* Add `typing_extensions` for Python 3.10 and lower (#2053)
|
|
|
|
* Add `--ws-max-queue` parameter WebSockets (#2033) 10/07/23
|
|
|
|
* Drop support for Python 3.7 (#1996) 19/06/23
|
|
|
|
* Remove `asgiref` as typing dependency (#1999) 08/06/23
|
|
|
|
* Set `scope["scheme"]` to `ws` or `wss` instead of `http` or
|
|
|
|
`https` on `ProxyHeadersMiddleware` for WebSockets (#2043)
|
|
|
|
12/07/23
|
|
|
|
* Raise `ImportError` on circular import (#2040) 09/07/23
|
|
|
|
* Use `logger.getEffectiveLevel()` instead of `logger.level` to
|
|
|
|
check if log level is `TRACE` (#1966) 01/06/23
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
Thu Jun 22 15:25:56 UTC 2023 - Dirk Müller <dmueller@suse.com>
|
|
|
|
|
|
|
|
- limit to newer python versions, older are no longer needed
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
Fri May 12 08:24:05 UTC 2023 - daniel.garcia@suse.com
|
|
|
|
|
|
|
|
- Add fix-websocket-tests.patch gh#encode/uvicorn#1929
|
|
|
|
- Update to version 0.22.0:
|
|
|
|
* Version 0.22.0 (#1957)
|
|
|
|
* Remove unused events (#1956)
|
|
|
|
* remove a few mypy excludes (#1954)
|
|
|
|
* Add `--timeout-graceful-shutdown` parameter (#1950)
|
|
|
|
* Fix typo in setup.cfg (#1953)
|
|
|
|
* Update `scripts/check` (#1952)
|
|
|
|
* Add `WatchFilesReload` pause method (#1930)
|
|
|
|
* Create PULL_REQUEST_TEMPLATE.md (#1946)
|
|
|
|
* Handle `SIGBREAK` for Windows (#1909)
|
|
|
|
* Fix shutdown event on Windows in reloader (#1584)
|
|
|
|
* Handle missing trustme/cryptography gracefully in the test suite (#1940)
|
|
|
|
* Add type hints to test_auto_detection.py (#1937)
|
|
|
|
* Fix watchgod deprecation warning (#1938)
|
|
|
|
* Upgrade and fix Black (#1926)
|
|
|
|
* Use ruff instead of flake8, autoflake and isort (#1925)
|
|
|
|
* Upgrade MyPy and fix issues (#1931)
|
|
|
|
* Pin websockets to <11.0 (#1928)
|
|
|
|
* Bump coverage from 7.1.0 to 7.2.2 (#1920)
|
|
|
|
* Fix instructions so they work in zsh as well as Bash (#1915)
|
|
|
|
* [`Docs`] : Hypercorn supports HTTP/3 (#1913)
|
|
|
|
* Version 0.21.1 (#1904)
|
|
|
|
* Reset lifespan state on each request (#1903)
|
|
|
|
* Version 0.21.0 (#1892)
|
|
|
|
* Improve discoverability when `--port=0` is used (#1890)
|
|
|
|
* Fix mypy on test_websockets (#1889)
|
|
|
|
* Add type annotation on `test_websockets.py` (#1880)
|
|
|
|
* Introduce lifespan state (#1818)
|
|
|
|
* Bump build from 0.9.0 to 0.10.0 (#1882)
|
|
|
|
* Bump pytest from 7.2.0 to 7.2.1 (#1883)
|
|
|
|
* Bump a2wsgi from 1.6.0 to 1.7.0 (#1886)
|
|
|
|
* Add type annotation on `test_logging.py` (#1881)
|
|
|
|
* fix: typo (#1871)
|
|
|
|
* Bump cryptography from 38.0.3 to 39.0.1 (#1865)
|
|
|
|
* Improve import time (#1846)
|
|
|
|
* Bump coverage from 6.5.0 to 7.1.0 (#1856)
|
|
|
|
* Bump twine from 4.0.1 to 4.0.2 (#1857)
|
|
|
|
* Bump types-pyyaml from 6.0.12.2 to 6.0.12.3 (#1858)
|
|
|
|
* Move a2wsgi to the explicit optionals section in the requirements (#1849)
|
|
|
|
* Replace current WSGIMiddleware implementation by a2wsgi one (#1825)
|
|
|
|
* Send code 1012 on shutdown for websockets (#1816)
|
|
|
|
* Change default `--app-dir` from from "." (dot) to "" (empty string). (#1835)
|
|
|
|
* Bump types-pyyaml from 6.0.12.1 to 6.0.12.2 (#1827)
|
|
|
|
* Bump pytest from 7.1.3 to 7.2.0 (#1830)
|
|
|
|
* Fix cli_usage tool on systems without an activated virtualenv (#1823)
|
|
|
|
* Fix ASGI application on the documentation (#1821)
|
|
|
|
* Delete setup.py (#1822)
|
|
|
|
* tests: test to start server with invalid host (#1813)
|
|
|
|
* Use unused TCP ports on the test suite (#1804)
|
|
|
|
* Use `surrogateescape` to encode headers on `websockets` implementation (#1005)
|
|
|
|
* Update hypercorn link on the README (#1800)
|
|
|
|
* Fix one example in REAME (#1794)
|
|
|
|
* Replace `files` by `exclude` on mypy configuration (#1793)
|
|
|
|
* Bump mypy from 0.982 to 0.991 (#1789)
|
|
|
|
* Bump mkdocs from 1.4.0 to 1.4.2 (#1787)
|
|
|
|
* Bump build from 0.8.0 to 0.9.0 (#1791)
|
|
|
|
* Fix warning on reload failure (#1784)
|
|
|
|
* Allow headers to be sent as iterables (#1782)
|
|
|
|
* Add test to make sure we send connection close when client sends it (#1776)
|
|
|
|
* Replace `AF_UNIX` by `AF_INET` on subprocess test (#1775)
|
|
|
|
* Replace uvicorn files by uvicorn folder on mypy settings (#1771)
|
|
|
|
* Add type annotation to `wsproto_impl.py` (#1754)
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
Fri Apr 21 12:38:24 UTC 2023 - Dirk Müller <dmueller@suse.com>
|
|
|
|
|
|
|
|
- add sle15_python_module_pythons (jsc#PED-68)
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
Thu Apr 13 22:45:45 UTC 2023 - Matej Cepl <mcepl@suse.com>
|
|
|
|
|
|
|
|
- Make calling of %{sle15modernpython} optional.
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
Thu Mar 16 08:13:19 UTC 2023 - Dirk Müller <dmueller@suse.com>
|
|
|
|
|
|
|
|
- skip optional uvloop test dependency for SLE15
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
Thu Feb 16 15:27:53 UTC 2023 - Torsten Gruner <simmphonie@opensuse.org>
|
|
|
|
|
|
|
|
- Update to version 0.20.0:
|
|
|
|
* Check if handshake is completed before sending frame on `wsproto` shutdown (#1737)
|
|
|
|
* Add default headers to WebSockets implementations (#1606 & #1747) 28/10/22
|
|
|
|
* Warn user when `reload` and `workers` flag are used together (#1731) 31/10/22
|
|
|
|
* Use correct `WebSocket` error codes on `close` (#1753) 20/11/22
|
|
|
|
* Send disconnect event on connection lost for `wsproto` (#996) 29/10/22
|
|
|
|
* Add `SIGQUIT` handler to `UvicornWorker` (#1710) 01/11/22
|
|
|
|
* Fix crash on exist with "--uds" if socket doesn't exist (#1725) 27/10/22
|
|
|
|
* Annotate `CONFIG_KWARGS` in `UvicornWorker` class (#1746) 31/10/22
|
|
|
|
* Remove conditional on `RemoteProtocolError.event_hint` on `wsproto` (#1486) 31/10/22
|
|
|
|
* Remove unused `handle_no_connect` on `wsproto` implementation (#1759) 17/11/22
|
|
|
|
- version 0.19.0
|
|
|
|
* Support Python 3.11 (#1652) 16/09/22
|
|
|
|
* Bump minimal `httptools` version to `0.5.0` (#1645) 13/09/22
|
|
|
|
* Ignore HTTP/2 upgrade and optionally ignore WebSocket upgrade (#1661) 19/10/22
|
|
|
|
* Add `py.typed` to comply with PEP 561 (#1687) 07/10/22
|
|
|
|
* Set `propagate` to `False` on "uvicorn" logger (#1288) 08/10/22
|
|
|
|
* USR1 signal is now handled correctly on `UvicornWorker`. (#1565) 26/08/22
|
|
|
|
* Use path with query string on `WebSockets` logs (#1385) 11/09/22
|
|
|
|
* Fix behavior on which "Date" headers were not updated on the same connection (#1706) 19/10/22
|
|
|
|
* Remove the `--debug` flag (#1640) 14/09/22
|
|
|
|
* Remove the `DebugMiddleware` (#1697) 07/10/22
|
|
|
|
- version 0.18.3
|
|
|
|
* Remove cyclic references on HTTP implementations. (#1604) 24/08/22
|
|
|
|
* `reload_delay` default changed from `None` to `0.25` on `uvicorn.run()` and `Config`.
|
|
|
|
`None` is not an acceptable value anymore. (#1545) 02/07/22
|
|
|
|
- Remove upstreamed patch uvicorn-pr1537-no-watchgod-tests.patch
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
Fri Aug 5 09:51:32 UTC 2022 - Dominique Leuenberger <dimstar@opensuse.org>
|
|
|
|
|
|
|
|
- Fix URL to 1537.patch: add ".patch" to the gh Pr to reference the
|
|
|
|
raw patch, not the gh webui.
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
Tue Jul 19 20:59:25 UTC 2022 - Ben Greiner <code@bnavigator.de>
|
|
|
|
|
|
|
|
- Disable testing with watchfiles
|
|
|
|
* We don't want it in Ring1-MinimalX
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
Mon Jul 18 20:17:15 UTC 2022 - Ben Greiner <code@bnavigator.de>
|
|
|
|
|
|
|
|
- Update to version 0.18.2
|
|
|
|
* Add default `log_config` on `uvicorn.run()` (#1541)
|
|
|
|
* Revert `logging` file name modification (#1543)
|
|
|
|
- Release 0.18.1
|
|
|
|
* Use `DEFAULT_MAX_INCOMPLETE_EVENT_SIZE` as default to
|
|
|
|
`h11_max_incomplete_event_size` on the CLI (#1534)
|
|
|
|
- Release 0.18.0
|
|
|
|
* The `reload` flag prioritizes `watchfiles` instead of the
|
|
|
|
deprecated `watchgod` (#1437)
|
|
|
|
* Annotate `uvicorn.run()` function (#1423)
|
|
|
|
* Allow configuring `max_incomplete_event_size` for `h11`
|
|
|
|
implementation (#1514)
|
|
|
|
* Remove `asgiref` dependency (#1532)
|
|
|
|
* Turn `raw_path` into bytes on both websockets implementations
|
|
|
|
(#1487)
|
|
|
|
* Revert log exception traceback in case of invalid HTTP request
|
|
|
|
(#1518)
|
|
|
|
* Set `asyncio.WindowsSelectorEventLoopPolicy()` when using
|
|
|
|
multiple workers to avoid "WinError 87" (#1454)
|
|
|
|
- Release 0.17.5
|
|
|
|
* Fix case where url is fragmented in httptools protocol (#1263)
|
|
|
|
2/16/22
|
|
|
|
* Fix WSGI middleware not to explode quadratically in the case of
|
|
|
|
a larger body (#1329)
|
|
|
|
* Send HTTP 400 response for invalid request (#1352)
|
|
|
|
- Release 0.17.4
|
|
|
|
* Replace `create_server` by `create_unix_server` (#1362)
|
|
|
|
- Release 0.17.3
|
|
|
|
* Drop wsproto version checking. (#1359)
|
|
|
|
- Release 0.17.2
|
|
|
|
* Revert #1332. While trying to solve the memory leak, it
|
|
|
|
introduced an issue (#1345) when the server receives big chunks
|
|
|
|
of data using the `httptools` implementation. (#1354)
|
|
|
|
* Revert stream interface changes. This was introduced on 0.14.0,
|
|
|
|
and caused an issue (#1226), which caused a memory leak when
|
|
|
|
sending TCP pings. (#1355)
|
|
|
|
* Fix wsproto version check expression (#1342)
|
|
|
|
- Release 0.17.1
|
|
|
|
* Move all data handling logic to protocol and ensure connection
|
|
|
|
is closed. (#1332)
|
|
|
|
* Change `spec_version` field from "2.1" to "2.3", as Uvicorn is
|
|
|
|
compliant with that version of the ASGI specifications. (#1337)
|
|
|
|
- Add uvicorn-pr1537-no-watchgod-tests.patch gh#encode/uvicorn#1537
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
Tue Feb 1 05:38:09 UTC 2022 - Steve Kowalik <steven.kowalik@suse.com>
|
|
|
|
|
|
|
|
- Add missing Requires on python-asgiref.
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
Mon Jan 24 09:51:06 UTC 2022 - kkaempf@suse.com
|
|
|
|
|
|
|
|
- Update to version 0.17.0:
|
|
|
|
* Release 0.17.0 (#1322)
|
|
|
|
* Fix reload process behavior when exception is raised (#1313)
|
|
|
|
* Fix version that supports Python 3.6 on the README (#1316)
|
|
|
|
* Add missing http version on websockets scope (#1309)
|
|
|
|
* Remove Python 3.6 (#1261)
|
|
|
|
* Support `extra_headers` for WS `accept` message (#1293)
|
|
|
|
* Allow configurable websocket per-message-deflate setting (#1300)
|
|
|
|
* Remove root_path from logs (#1294)
|
|
|
|
|
|
|
|
- Update to version 0.16.0:
|
|
|
|
* Version 0.16.0 (#1270)
|
|
|
|
* Allow app-dir parameter on the run() function (#1271)
|
|
|
|
|
|
|
|
- Update to version 0.15.0:
|
|
|
|
* Added
|
|
|
|
- Change reload to be configurable with glob patterns. Currently
|
|
|
|
only .py files are watched, which is different from the previous
|
|
|
|
default behavior. (#820) 08/08/21
|
|
|
|
- Add Python 3.10-rc.1 support. Now the server uses asyncio.run
|
|
|
|
which will: start a fresh asyncio event loop, on shutdown cancel any
|
|
|
|
background tasks rather than aborting them, aexit any remaining async
|
|
|
|
generators, and shutdown the default ThreadPoolExecutor. (#1070) 30/07/21
|
|
|
|
- Exit with status 3 when worker starts failed (#1077) 22/06/21
|
|
|
|
- Add option to set websocket ping interval and timeout (#1048) 09/06/21
|
|
|
|
- Adapt bind_socket to make it usable with multiple processes (#1009) 21/06/21
|
|
|
|
- Add existence check to the reload directory(ies) (#1089) 21/06/21
|
|
|
|
- Add missing trace log for websocket protocols (#1083) 19/06/21
|
|
|
|
- Support disabling default Server and Date headers (#818) 11/06/21
|
|
|
|
* Changed
|
|
|
|
- Add PEP440 compliant version of click (#1099) 29/06/21
|
|
|
|
- Bump asgiref to 3.4.0 (#1100) 29/06/21
|
|
|
|
* Fixed
|
|
|
|
- When receiving a SIGTERM supervisors now terminate their
|
|
|
|
processes before joining them (#1069) 30/07/21
|
|
|
|
- Fix the need of httptools on minimal installation (#1135) 30/07/21
|
|
|
|
- Fix ping parameters annotation in Config class (#1127) 19/07/21
|
|
|
|
|
|
|
|
- Update to version 0.14.0:
|
|
|
|
* Added
|
|
|
|
- Defaults ws max_size on server to 16MB (#995) 5/29/21
|
|
|
|
- Improve user feedback if no ws library installed (#926 and
|
|
|
|
#1023) 2/27/21
|
|
|
|
- Support 'reason' field in 'websocket.close' messages (#957) 2/24/21
|
|
|
|
- Implemented lifespan.shutdown.failed (#755) 2/25/21
|
|
|
|
* Changed
|
|
|
|
- Upgraded websockets requirements (#1065) 6/1/21
|
|
|
|
- Switch to asyncio streams API (#869) 5/29/21
|
|
|
|
- Update httptools from 0.1.* to 0.2.* (#1024) 5/28/21
|
|
|
|
- Allow Click 8.0, refs #1016 (#1042) 5/23/21
|
|
|
|
- Add search for a trusted host in ProxyHeadersMiddleware (#591) 3/13/21
|
|
|
|
- Up wsproto to 1.0.0 (#892) 2/25/21
|
|
|
|
* Fixed
|
|
|
|
- Force reload_dirs to be a list (#978) 6/1/21
|
|
|
|
- Fix gunicorn worker not running if extras not installed (#901) 5/28/21
|
|
|
|
- Fix socket port 0 (#975) 3/5/21
|
|
|
|
- Prevent garbage collection of main lifespan task (#972) 3/4/21
|
|
|
|
|
|
|
|
- Update to version 0.13.0:
|
|
|
|
* Add --factory flag to support factory-style application imports.
|
|
|
|
(#875) 2020-12-07 50fc0d1
|
|
|
|
* Skip installation of signal handlers when not in the main thread.
|
|
|
|
Allows using Server in multithreaded contexts without having to
|
|
|
|
override .install_signal_handlers(). (#871) 2020-12-07 ce2ef45
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
Fri Sep 17 07:04:38 UTC 2021 - Dominique Leuenberger <dimstar@opensuse.org>
|
|
|
|
|
|
|
|
- Do not build for python 3.6: the required dependency uvloop does
|
|
|
|
no longer support Python 3.6 since version 0.16.
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
Sun Nov 29 09:56:12 UTC 2020 - John Vandenberg <jayvdb@gmail.com>
|
|
|
|
|
|
|
|
- Skip three tests due to minor change introduced in wsproto 1.0.0
|
|
|
|
- Add some missing minimum versions to Requires and BuildRequires
|
|
|
|
- Update to v0.12.3
|
|
|
|
* Fix race condition that leads Quart to hang
|
|
|
|
* Use latin1 when decoding X-Forwarded-* headers
|
|
|
|
* Rework IPv6 support
|
|
|
|
* Cancel old keepalive-trigger before setting new one
|
|
|
|
- from v0.12.2
|
|
|
|
* Adding ability to decrypt ssl key file
|
|
|
|
* Support .yml log config files
|
|
|
|
* Added python 3.9 support
|
|
|
|
* Fixes watchgod with common prefixes
|
|
|
|
* Fix reload with ipv6 host
|
|
|
|
* Added cli support for headers containing colon
|
|
|
|
* Sharing socket across workers on windows
|
|
|
|
* Note the need to configure trusted "ips" when using unix sockets
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
Tue Oct 13 09:42:02 UTC 2020 - Jan Engelhardt <jengelh@inai.de>
|
|
|
|
|
|
|
|
- Trim marketing wording from descriptions.
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
Sun Oct 11 14:58:51 UTC 2020 - John Vandenberg <jayvdb@gmail.com>
|
|
|
|
|
|
|
|
- Update to v0.12.1
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
Sat Jul 25 18:38:16 UTC 2020 - John Vandenberg <jayvdb@gmail.com>
|
|
|
|
|
|
|
|
- Update to v0.11.6
|
|
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
|
|
Tue Oct 8 09:08:25 AM UTC 2019 - John Vandenberg <jayvdb@gmail.com>
|
|
|
|
|
|
|
|
- Initial spec for v0.9.0
|