# # spec file for package python-websockets # # Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via https://bugs.opensuse.org/ # %define skip_python2 1 %define skip_python36 1 %define skip_python38 1 %define skip_python39 1 %define skip_python311 1 %{?sle15_python_module_pythons} Name: python-websockets Version: 11.0.3 Release: 2.2 Summary: An implementation of the WebSocket Protocol (RFC 6455) License: BSD-3-Clause Group: Development/Languages/Python URL: https://github.com/aaugustin/websockets Source: https://github.com/aaugustin/websockets/archive/%{version}.tar.gz BuildRequires: %{python_module devel >= 3.7} BuildRequires: %{python_module pytest} BuildRequires: %{python_module setuptools} BuildRequires: fdupes BuildRequires: python-rpm-macros %python_subpackages %description WebSockets is a library for developing WebSocket servers_ and clients_ in Python. It implements RFC 6455 with a focus on correctness and simplicity. It passes the Autobahn Testsuite. Built on top of Python's asynchronous I/O support introduced in PEP 3156, it provides an API based on coroutines, making it easy to write highly concurrent applications. %prep %autosetup -p1 -n websockets-%{version} %build export CFLAGS="%{optflags}" %python_build %install %python_install %python_expand %fdupes %{buildroot}%{$python_sitearch} %check # Test execution speed depends on BS load and architecture, relax export WEBSOCKETS_TESTS_TIMEOUT_FACTOR=10 # Disable flaky tests gh#python-websockets/websockets#1322 %pytest_arch -v -k "not test_close_waits_for_close_frame" tests %files %{python_files} %license LICENSE %doc README.rst %{python_sitearch}/websockets %{python_sitearch}/websockets-%{version}-py*.egg-info %changelog * Wed May 24 2023 Daniel Garcia - Run tests with pytest - Disable flaky test gh#python-websockets/websockets#1322 * Sun May 14 2023 Dirk Müller - update to 11.0.3: * Fixed the :mod:`threading` implementation of servers on Windows. * Wed May 10 2023 Dirk Müller - update to 11.0.2: * Fixed a deadlock in the :mod:`threading` implementation when closing a connection without reading all messages. * Restored the C extension in the source distribution. * Backwards-incompatible changes * The Sans-I/O implementation was moved. * The ``connection`` module was renamed to ``protocol``. * The ``connection.Connection``, ``server.ServerConnection``, and ``client.ClientConnection`` classes were renamed to ``protocol.Protocol``, ``server.ServerProtocol``, and ``client.ClientProtocol``. * If you instantiate :class:`~server.ServerProtocol` or :class:`~client.ClientProtocol` directly, make sure you are using keyword arguments. * Closing a connection without an empty close frame is OK. * .. admonition:: websockets 10.0 introduces a implementation on top of :mod:`threading`. * It may be more convenient if you don't need to manage many connections and you're more comfortable with :mod:`threading` than :mod:`asyncio`. * It is particularly suited to client applications that establish only one connection. It may be used for servers handling few connections. * See :func:`~sync.client.connect` and :func:`~sync.server.serve` for details. * Added ``open_timeout`` to :func:`~server.serve`. * Made it possible to close a server without closing existing connections. * Added :attr:`~server.ServerProtocol.select_subprotocol` to customize negotiation of subprotocols in the Sans-I/O layer. * Added platform-independent wheels. * Improved error handling in :func:`~websockets.broadcast`. * Set ``server_hostname`` automatically on TLS connections when providing a ``sock`` argument to :func:`~sync.client.connect`. * Fri Apr 21 2023 Dirk Müller - add sle15_python_module_pythons (jsc#PED-68) * Thu Apr 13 2023 Matej Cepl - Make calling of %%{sle15modernpython} optional. * Wed Nov 9 2022 Yogalakshmi Arunachalam - Update to 10.4 New features * Validated compatibility with Python 3.11. * Added the latency property to protocols. * Changed ping to return the latency of the connection. * Supported overriding or removing the User-Agent header in clients and the Server header in servers. * Added deployment guides for more Platform as a Service providers. * Sat Sep 24 2022 Dirk Müller - update to 10.3: * Reduced noise in logs when :mod:`ssl` or :mod:`zlib` raise exceptions. * Made compression negotiation more lax for compatibility with Firefox. * Improved FAQ and quick start guide. * Fixed backwards-incompatibility in 10.1 for connection handlers created with * Avoided leaking open sockets when :func:`~client.connect` is canceled. * Fri Feb 4 2022 Dirk Müller - update to 10.1: * Made the second parameter of connection handlers optional. It will be deprecated in the next major release. The request path is available in the :attr:`~legacy.protocol.WebSocketCommonProtocol.path` attribute of the first argument. If you implemented the connection handler of a server as:: async def handler(request, path): ... You should replace it by:: async def handler(request): path = request.path # if handler() uses the path argument ... * Added ``python -m websockets --version``. * Reverted optimization of default compression settings for clients, mainly to avoid triggering bugs in poorly implemented servers like `AWS API Gateway`_. * Mirrored the entire :class:`~asyncio.Server` API in :class:`~server.WebSocketServer`. * Improved performance for large messages on ARM processors. * Documented how to auto-reload on code changes in development. * Avoided half-closing TCP connections that are already closed. * Sat Oct 30 2021 Ben Greiner - Reactivate python39 build, only disable testing. No need to break consuming packages -- gh#aaugustin/websockets#1051 * Fri Oct 29 2021 Matej Cepl - Update to 10.0: - Backwards-incompatible changes - websockets 10.0 requires Python ≥ 3.7. - The ``loop`` parameter is deprecated from all APIs. The ``loop`` parameter is also removed from `~server.WebSocketServer`. This should be transparent. - `~client.connect` times out after 10 seconds by default. You can adjust the timeout with the ``open_timeout`` parameter. Set it to `None` to disable the timeout entirely. - The ``legacy_recv`` option is deprecated. - The signature of `~exceptions.ConnectionClosed` changed. If you raise `~exceptions.ConnectionClosed` or a subclass, rather than catch them when websockets raises them, you must change your code. - A ``msg`` parameter was added to `~exceptions.InvalidURI`. If you raise `~exceptions.InvalidURI`, rather than catch it when websockets raises it, you must change your code. - New features - websockets 10.0 introduces a Sans-I/O API for easier integration in third-party libraries. - Added compatibility with Python 3.10. - Added `~websockets.broadcast` to send a message to many clients. - Added support for reconnecting automatically by using `~client.connect` as an asynchronous iterator. - Added ``open_timeout`` to :func:`~client.connect`. - Documented how to integrate with Django. - Documented how to deploy websockets in production, with several options. - Documented how to authenticate connections. - Documented how to broadcast messages to many connections. - Improvements - Improved logging. - Optimized default compression settings to reduce memory usage. - Optimized processing of client-to-server messages when the C extension isn't available. - Supported relative redirects in `~client.connect`. - Handled TCP connection drops during the opening handshake. - Made it easier to customize authentication with `~auth.BasicAuthWebSocketServerProtocol.check_credentials`. - Provided additional information in `~exceptions.ConnectionClosed` exceptions. - Clarified several exceptions or log messages. - Restructured documentation. - Improved API documentation. - Extended FAQ. - Bug fixes - Avoided a crash when receiving a ping while the connection is closing. - The test suite is temporarily broken on Python 3.9.7 (gh#aaugustin/websockets#1051). * Wed Aug 11 2021 Matej Cepl - Increase WEBSOCKETS_TESTS_TIMEOUT_FACTOR to 10 to make test_keepalive_ping_with_no_ping_timeout pass again. - Remove skip-test_keepalive_ping_with_no_ping_timeout.patch, of course. * Tue Aug 10 2021 Matej Cepl - Use %%pyunittest macro instead of doing it on our own. - Add skip-test_keepalive_ping_with_no_ping_timeout.patch for gh#aaugustin/websockets#1026. * Sun Jun 6 2021 Dirk Müller - update to 9.1: * *Version 9.1 fixes a security issue introduced in version 8.0.** * Restored compatibility of ``python -m websockets`` with Python < 3.9. * Restored compatibility with mypy. * Fixed issues with the packaging of the 9.0 release. * :class:`~datastructures.Headers` and :exc:`~datastructures.MultipleValuesError` were moved from ``websockets.http`` to :mod:`websockets.datastructures`. If you're using them, you should adjust the import path. * The ``client``, ``server``, ``protocol``, and ``auth`` modules were moved from the ``websockets`` package to ``websockets.legacy`` sub-package, as part of an upcoming refactoring. Despite the name, they're still fully supported. The refactoring should be a transparent upgrade for most uses when it's available. The legacy implementation will be preserved according to the `backwards-compatibility policy`_. * The ``framing``, ``handshake``, ``headers``, ``http``, and ``uri`` modules in the ``websockets`` package are deprecated. These modules provided low-level APIs for reuse by other WebSocket implementations, but that never happened. Keeping these APIs public makes it more difficult to improve websockets for no actual benefit. * Added compatibility with Python 3.9. * Added support for IRIs in addition to URIs. * Added close codes 1012, 1013, and 1014. * Raised an error when passing a :class:`dict` to * Sat Nov 28 2020 John Vandenberg - Remove Suggest python-asyncio, which is in Python 3 stdlib * Thu Feb 6 2020 Marketa Calabkova - update to 8.1 * Added compatibility with Python 3.8. - drop upstreamed patch python38-support.patch * Wed Oct 16 2019 Steve Kowalik - Add python38-support.patch from upstream that fixes build failures against Python 3.8. * Tue Aug 13 2019 Tomáš Chvátal - Update to 8.0.2: * Restored the ability to pass a socket with the sock parameter of :func:`~server.serve`. * Removed an incorrect assertion when a connection drops. * Mon Jul 22 2019 Tomáš Chvátal - Update to 8.0.1: * Version 8.0 drops compatibility with Python 3.4 and 3.5. * Various fixes * Tue Apr 16 2019 Tomáš Chvátal - Update to 7.0: * Various fixes * Repository layout changes * Mon Oct 1 2018 Tomáš Chvátal - Call the tests the same way as upstream to avoid import cycles * Mon Sep 24 2018 Tomáš Chvátal - Do make sure to error out on test failure. * Wed Aug 29 2018 tchvatal@suse.com - Version update to 6.0: * compatibility with python 3.6 * Wed Jun 27 2018 abergmann@suse.com - Update to version 5.0.1 * CVE-2018-1000518: Defend against zip bombs (boo#1099269). * Sat Oct 7 2017 stefan.bruens@rwth-aachen.de - Add WEBSOCKETS_TESTS_TIMEOUT_FACTOR=5, otherwise tests in several projects fail * Thu Sep 7 2017 toddrme2178@gmail.com - initial version