Merge pull request #99521 from mweinelt/irc-stuff

python3Packages.{irctokens,ircstates,ircrobots}: init
This commit is contained in:
Martin Weinelt 2020-10-30 22:41:05 +01:00 committed by GitHub
commit 5a22c6f167
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 296 additions and 0 deletions

View File

@ -0,0 +1,58 @@
{ lib
, buildPythonPackage
, fetchFromGitHub
, pythonOlder
, idna
, sniffio
, typing-extensions
, curio
, hypothesis
, pytestCheckHook
, trio
, trustme
, uvloop
}:
buildPythonPackage rec {
pname = "anyio";
version = "2.0.2";
format = "pyproject";
disabled = pythonOlder "3.7";
src = fetchFromGitHub {
owner = "agronholm";
repo = pname;
rev = version;
sha256 = "06nazfrm2sclp3lpgsn9wl8vmqxvx36s3gr2gnqz3zhjpf3glkxv";
};
propagatedBuildInputs = [
idna
sniffio
] ++ lib.optionals (pythonOlder "3.8") [
typing-extensions
];
checkInputs = [
curio
hypothesis
pytestCheckHook
trio
trustme
uvloop
];
pytestFlagsArray = [
# lots of DNS lookups
"--ignore=tests/test_sockets.py"
];
pythonImportsCheck = [ "anyio" ];
meta = with lib; {
description = "High level compatibility layer for multiple asynchronous event loop implementations on Python";
homepage = "https://github.com/agronholm/anyio";
license = licenses.mit;
maintainers = with maintainers; [ hexa ];
};
}

View File

@ -0,0 +1,44 @@
{ lib
, buildPythonPackage
, fetchPypi
, fetchpatch
, pythonOlder
, pytestCheckHook
, pytest-asyncio
, pytest-mock
}:
buildPythonPackage rec {
pname = "async_stagger";
version = "0.3.0";
disabled = pythonOlder "3.6";
src = fetchPypi {
inherit pname version;
sha256 = "007l54fbk2dfzv3vmqz98m1i37mzxkkva5r4fiwq2pg8nb61fy0w";
};
patches = [
(fetchpatch {
# Fix test failures on Python 3.8
# https://github.com/twisteroidambassador/async_stagger/issues/4
url = "https://github.com/twisteroidambassador/async_stagger/commit/736ab20ff9c172628d911f1e6f72420399ec9631.patch";
sha256 = "1ygqd9n56sj83lvgmv6nrx3m0sp3646s5k7z697qx43xslixj731";
})
];
checkInputs = [
pytestCheckHook
pytest-asyncio
pytest-mock
];
pythonImportsCheck = [ "async_stagger" ];
meta = with lib; {
description = "Happy Eyeballs connection algorithm and underlying scheduling logic in asyncio";
homepage = "https://github.com/twisteroidambassador/async_stagger";
license = licenses.mit;
maintainers = with maintainers; [ hexa ];
};
}

View File

@ -0,0 +1,34 @@
{ lib
, buildPythonPackage
, fetchFromGitHub
, pythonOlder
, pytestCheckHook
, pytest-asyncio
}:
buildPythonPackage rec {
pname = "asyncio-throttle";
version = "1.0.1";
disabled = pythonOlder "3.6";
src = fetchFromGitHub {
owner = "hallazzang";
repo = pname;
rev = "v${version}";
sha256 = "0raqnrnp42cn1c7whbm7ajbgaczx33k6hbxsj30nh998pqxhh4sj";
};
checkInputs = [
pytest-asyncio
pytestCheckHook
];
pythonImportsCheck = [ "asyncio_throttle" ];
meta = with lib; {
description = "Simple, easy-to-use throttler for asyncio";
homepage = "https://github.com/hallazzang/asyncio-throttle";
license = licenses.mit;
maintainers = with maintainers; [ hexa ];
};
}

View File

@ -0,0 +1,52 @@
{ lib
, buildPythonPackage
, fetchFromGitHub
, pythonOlder
, anyio
, asyncio-throttle
, dataclasses
, ircstates
, async_stagger
, async-timeout
, python
}:
buildPythonPackage rec {
pname = "ircrobots";
version = "0.3.3";
disabled = pythonOlder "3.6";
src = fetchFromGitHub {
owner = "jesopo";
repo = pname;
rev = "v${version}";
sha256 = "0ykn6ch7aazv2cx13q2gr94arh6f96d8hwjwnrcjai3i3x4q2pkq";
};
patches = [
./relax-dependencies.patch
];
propagatedBuildInputs = [
anyio
asyncio-throttle
ircstates
async_stagger
async-timeout
] ++ lib.optionals (pythonOlder "3.7") [
dataclasses
];
checkPhase = ''
${python.interpreter} -m unittest test
'';
pythonImportsCheck = [ "ircrobots" ];
meta = with lib; {
description = "Asynchronous bare-bones IRC bot framework for python3";
license = licenses.mit;
homepage = "https://github.com/jesopo/ircrobots";
maintainers = with maintainers; [ hexa ];
};
}

View File

@ -0,0 +1,14 @@
diff --git a/requirements.txt b/requirements.txt
index 87a2d31..4e0efb1 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,6 +1,6 @@
-anyio ==1.3.0
+anyio
asyncio-throttle ==1.0.1
-dataclasses ==0.6
-ircstates ==0.11.2
+dataclasses; python_version < "3.7"
+ircstates >=0.11.2
async_stagger ==0.3.0
async_timeout ==3.0.1

View File

@ -0,0 +1,48 @@
{ lib
, buildPythonPackage
, fetchFromGitHub
, fetchpatch
, pythonOlder
, irctokens
, pendulum
, python
}:
buildPythonPackage rec {
pname = "ircstates";
version = "0.11.3";
disabled = pythonOlder "3.6"; # f-strings
src = fetchFromGitHub {
owner = "jesopo";
repo = pname;
rev = "v${version}";
sha256 = "1v8r6ma8gzvn5ym3xx9qlb0rc4l67pxr3z8njzk1ffxn1x3mxd3i";
};
patches = [
(fetchpatch {
name = "relax-pendulum-version.patch";
url = "https://github.com/jesopo/ircstates/commit/f51f1b689e592020d1c91ccab6c03927aadb9f94.patch";
sha256 = "0qbp3b9hlqbbx7b474q1mcgnzzzwcm4g89x26iqgmlgxzmv3y5xp";
})
];
propagatedBuildInputs = [
irctokens
pendulum
];
checkPhase = ''
${python.interpreter} -m unittest test
'';
pythonImportsCheck = [ "ircstates" ];
meta = with lib; {
description = "sans-I/O IRC session state parsing library";
license = licenses.mit;
homepage = "https://github.com/jesopo/ircstates";
maintainers = with maintainers; [ hexa ];
};
}

View File

@ -0,0 +1,34 @@
{ lib
, buildPythonPackage
, fetchFromGitHub
, pythonOlder
, pyyaml
, python
}:
buildPythonPackage rec {
pname = "irctokens";
version = "2.0.0";
disabled = pythonOlder "3.6"; # f-strings
src = fetchFromGitHub {
owner = "jesopo";
repo = pname;
rev = "v${version}";
sha256 = "0kpxn5paailm4xpdlnzxrhjrfgvvg5pp327wd8kl41a0wbqkj4zb";
};
checkInputs = [ pyyaml ];
checkPhase = ''
${python.interpreter} -m unittest test
'';
pythonImportsCheck = [ "irctokens" ];
meta = with lib; {
description = "RFC1459 and IRCv3 protocol tokeniser library for python3";
license = licenses.mit;
homepage = "https://github.com/jesopo/irctokens";
maintainers = with maintainers; [ hexa ];
};
}

View File

@ -322,6 +322,8 @@ in {
antlr4-python3-runtime = callPackage ../development/python-modules/antlr4-python3-runtime { antlr4 = pkgs.antlr4; };
anyio = callPackage ../development/python-modules/anyio { };
anyjson = callPackage ../development/python-modules/anyjson { };
anytree = callPackage ../development/python-modules/anytree { inherit (pkgs) graphviz; };
@ -426,10 +428,14 @@ in {
async_generator = callPackage ../development/python-modules/async_generator { };
asyncio-throttle = callPackage ../development/python-modules/asyncio-throttle { };
asyncpg = callPackage ../development/python-modules/asyncpg { };
asyncssh = callPackage ../development/python-modules/asyncssh { };
async_stagger = callPackage ../development/python-modules/async_stagger { };
asynctest = callPackage ../development/python-modules/asynctest { };
async-timeout = callPackage ../development/python-modules/async_timeout { };
@ -2985,6 +2991,12 @@ in {
irc = callPackage ../development/python-modules/irc { };
ircrobots = callPackage ../development/python-modules/ircrobots { };
ircstates = callPackage ../development/python-modules/ircstates { };
irctokens = callPackage ../development/python-modules/irctokens { };
isbnlib = callPackage ../development/python-modules/isbnlib { };
islpy = callPackage ../development/python-modules/islpy { };