{ lib, buildPythonPackage, fetchFromGitHub, pythonOlder, # build-system setuptools, # dependencies bidict, python-engineio, # optional-dependencies aiohttp, requests, websocket-client, # tests msgpack, pytestCheckHook, simple-websocket, uvicorn, }: buildPythonPackage rec { pname = "python-socketio"; version = "5.11.4"; pyproject = true; disabled = pythonOlder "3.6"; src = fetchFromGitHub { owner = "miguelgrinberg"; repo = "python-socketio"; rev = "refs/tags/v${version}"; hash = "sha256-iWe9IwUR+nq9SAmHzFZYUJpVOOEbc1ZdiMAjaBjQrVs="; }; nativeBuildInputs = [ setuptools ]; propagatedBuildInputs = [ bidict python-engineio ]; passthru.optional-dependencies = { client = [ requests websocket-client ]; asyncio_client = [ aiohttp ]; }; nativeCheckInputs = [ msgpack pytestCheckHook uvicorn simple-websocket ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies); pythonImportsCheck = [ "socketio" ]; meta = with lib; { description = "Python Socket.IO server and client"; longDescription = '' Socket.IO is a lightweight transport protocol that enables real-time bidirectional event-based communication between clients and a server. ''; homepage = "https://github.com/miguelgrinberg/python-socketio/"; changelog = "https://github.com/miguelgrinberg/python-socketio/blob/v${version}/CHANGES.md"; license = with licenses; [ mit ]; maintainers = with maintainers; [ mic92 ]; }; }