diff options
author | Frederik Rietdijk <freddyrietdijk@fridh.nl> | 2019-12-30 18:09:22 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-12-30 18:09:22 +0100 |
commit | 5a3cbd01f78db54f6f5bc46cd00b4a30005d3c5b (patch) | |
tree | 60410e4024a49a821f15ece8e8ec64cbdf22e7b1 /pkgs/development | |
parent | 31fffc6a698940535ef06f52f0363705b231afdc (diff) | |
parent | 708d34a5c5a420b8b539e5d400c2848f49438bbf (diff) | |
download | nixlib-5a3cbd01f78db54f6f5bc46cd00b4a30005d3c5b.tar nixlib-5a3cbd01f78db54f6f5bc46cd00b4a30005d3c5b.tar.gz nixlib-5a3cbd01f78db54f6f5bc46cd00b4a30005d3c5b.tar.bz2 nixlib-5a3cbd01f78db54f6f5bc46cd00b4a30005d3c5b.tar.lz nixlib-5a3cbd01f78db54f6f5bc46cd00b4a30005d3c5b.tar.xz nixlib-5a3cbd01f78db54f6f5bc46cd00b4a30005d3c5b.tar.zst nixlib-5a3cbd01f78db54f6f5bc46cd00b4a30005d3c5b.zip |
Merge pull request #76652 from costrouc/python-httpx-init
Packaging several async python web libraries / databases connectors
Diffstat (limited to 'pkgs/development')
14 files changed, 502 insertions, 52 deletions
diff --git a/pkgs/development/python-modules/aiocontextvars/default.nix b/pkgs/development/python-modules/aiocontextvars/default.nix new file mode 100644 index 000000000000..38fdf14164eb --- /dev/null +++ b/pkgs/development/python-modules/aiocontextvars/default.nix @@ -0,0 +1,48 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, pytestrunner +, pytest +, pytest-asyncio +, contextvars +, sqlalchemy +, isPy27 +, pythonOlder +}: + +buildPythonPackage rec { + pname = "aiocontextvars"; + version = "0.2.2"; + disabled = isPy27; + + src = fetchFromGitHub { + owner = "fantix"; + repo = pname; + rev = "v${version}"; + sha256 = "0a2gmrm9csiknc8n3si67sgzffkydplh9d7ga1k87ygk2aj22mmk"; + }; + + buildInputs = [ + pytestrunner + ]; + + checkInputs = [ + pytest + pytest-asyncio + ]; + + propagatedBuildInputs = [ + sqlalchemy + ] ++ lib.optionals (pythonOlder "3.7") [ contextvars ]; + + checkPhase = '' + pytest + ''; + + meta = with lib; { + description = "Asyncio support for PEP-567 contextvars backport"; + homepage = https://github.com/fantix/aiocontextvars; + license = licenses.bsd3; + maintainers = [ maintainers.costrouc ]; + }; +} diff --git a/pkgs/development/python-modules/aiomysql/default.nix b/pkgs/development/python-modules/aiomysql/default.nix new file mode 100644 index 000000000000..891e9f216ce8 --- /dev/null +++ b/pkgs/development/python-modules/aiomysql/default.nix @@ -0,0 +1,47 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, pymysql +, pytest +, isPy27 +}: + +buildPythonPackage rec { + pname = "aiomysql"; + version = "0.0.20"; + disabled = isPy27; + + src = fetchFromGitHub { + owner = "aio-libs"; + repo = pname; + rev = "v${version}"; + sha256 = "1mxih81zc2k64briirpp5wz4f72l8v05avfyfibaq9fr6lcbih9b"; + }; + + propagatedBuildInputs = [ + pymysql + ]; + + checkInputs = [ + pytest + ]; + + postPatch = '' + substituteInPlace setup.py \ + --replace "PyMySQL>=0.9,<=0.9.2" "PyMySQL" + ''; + + checkPhase = '' + pytest + ''; + + # tests require mysql database + doCheck = false; + + meta = with lib; { + description = "MySQL driver for asyncio"; + homepage = https://github.com/aio-libs/aiomysql; + license = licenses.mit; + maintainers = [ maintainers.costrouc ]; + }; +} diff --git a/pkgs/development/python-modules/aiosqlite/default.nix b/pkgs/development/python-modules/aiosqlite/default.nix new file mode 100644 index 000000000000..1032485e9801 --- /dev/null +++ b/pkgs/development/python-modules/aiosqlite/default.nix @@ -0,0 +1,36 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, setuptools +, aiounittest +, isPy27 +, pytest +}: + +buildPythonPackage rec { + pname = "aiosqlite"; + version = "0.11.0"; + disabled = isPy27; + + src = fetchFromGitHub { + owner = "jreese"; + repo = pname; + rev = "v${version}"; + sha256 = "0pmkp4iy738yv2sl08kvhd0ma6wjqbmfnwid72gvg4zqsr1hnn0z"; + }; + + buildInputs = [ + setuptools + ]; + + checkInputs = [ + aiounittest + ]; + + meta = with lib; { + description = "Asyncio bridge to the standard sqlite3 module"; + homepage = https://github.com/jreese/aiosqlite; + license = licenses.mit; + maintainers = [ maintainers.costrouc ]; + }; +} diff --git a/pkgs/development/python-modules/aiounittest/default.nix b/pkgs/development/python-modules/aiounittest/default.nix new file mode 100644 index 000000000000..743600a0d3b0 --- /dev/null +++ b/pkgs/development/python-modules/aiounittest/default.nix @@ -0,0 +1,36 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, nose +, coverage +, isPy27 +}: + +buildPythonPackage rec { + pname = "aiounittest"; + version = "1.3.1"; + disabled = isPy27; + + src = fetchFromGitHub { + owner = "kwarunek"; + repo = pname; + rev = version; + sha256 = "0mlic2q49cb0vv62mixy4i4x8c91qb6jlji7khiamcxcg676nasl"; + }; + + checkInputs = [ + nose + coverage + ]; + + checkPhase = '' + nosetests + ''; + + meta = with lib; { + description = "Test asyncio code more easily"; + homepage = https://github.com/kwarunek/aiounittest; + license = licenses.mit; + maintainers = [ maintainers.costrouc ]; + }; +} diff --git a/pkgs/development/python-modules/databases/default.nix b/pkgs/development/python-modules/databases/default.nix new file mode 100644 index 000000000000..e4129ed9bbf3 --- /dev/null +++ b/pkgs/development/python-modules/databases/default.nix @@ -0,0 +1,49 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, sqlalchemy +, aiocontextvars +, isPy27 +, pytest +, asyncpg +, aiomysql +, aiosqlite +}: + +buildPythonPackage rec { + pname = "databases"; + version = "0.2.6"; + disabled = isPy27; + + src = fetchFromGitHub { + owner = "encode"; + repo = pname; + rev = version; + sha256 = "0cdb4vln4zdmqbbcj7711b81b2l64jg1miihqcg8gpi35v404h2q"; + }; + + propagatedBuildInputs = [ + sqlalchemy + aiocontextvars + ]; + + checkInputs = [ + pytest + asyncpg + aiomysql + aiosqlite + ]; + + # big chunk to tests depend on existing posgresql and mysql databases + # some tests are better than no tests + checkPhase = '' + pytest --ignore=tests/test_integration.py --ignore=tests/test_databases.py + ''; + + meta = with lib; { + description = "Async database support for Python"; + homepage = https://github.com/encode/databases; + license = licenses.bsd3; + maintainers = [ maintainers.costrouc ]; + }; +} diff --git a/pkgs/development/python-modules/fastapi/default.nix b/pkgs/development/python-modules/fastapi/default.nix index c90b64dca811..75edf5dc424c 100644 --- a/pkgs/development/python-modules/fastapi/default.nix +++ b/pkgs/development/python-modules/fastapi/default.nix @@ -1,22 +1,28 @@ { lib , buildPythonPackage -, fetchPypi +, fetchFromGitHub , uvicorn , starlette , pydantic -, python , isPy3k -, which +, pytest +, pytestcov +, pyjwt +, passlib +, aiosqlite }: buildPythonPackage rec { pname = "fastapi"; - version = "0.42.0"; + version = "0.45.0"; + format = "flit"; disabled = !isPy3k; - src = fetchPypi { - inherit pname version; - sha256 = "48cb522c1c993e238bfe272fbb18049cbd4bf5b9d6c0d4a4fa113cc790e8196c"; + src = fetchFromGitHub { + owner = "tiangolo"; + repo = "fastapi"; + rev = version; + sha256 = "1qwh382ny6qa3zi64micdq4j7dc64zv4rfd8g91j0digd4rhs6i1"; }; propagatedBuildInputs = [ @@ -25,10 +31,24 @@ buildPythonPackage rec { pydantic ]; - patches = [ ./setup.py.patch ]; + checkInputs = [ + pytest + pytestcov + pyjwt + passlib + aiosqlite + ]; + + # starlette pinning kept in place due to 0.12.9 being a hard + # dependency luckily fastapi is currently the only dependent on + # starlette. Please remove pinning when possible + postPatch = '' + substituteInPlace pyproject.toml \ + --replace "pydantic >=0.32.2,<=0.32.2" "pydantic" + ''; checkPhase = '' - ${python.interpreter} -c "from fastapi import FastAPI; app = FastAPI()" + pytest --ignore=tests/test_default_response_class.py ''; meta = with lib; { diff --git a/pkgs/development/python-modules/fastapi/setup.py.patch b/pkgs/development/python-modules/fastapi/setup.py.patch deleted file mode 100644 index 43661343d744..000000000000 --- a/pkgs/development/python-modules/fastapi/setup.py.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/setup.py b/setup.py -index ccc3d2b..77ce446 100644 ---- a/setup.py -+++ b/setup.py -@@ -10,7 +10,7 @@ package_data = \ - {'': ['*']} - - install_requires = \ --['starlette >=0.11.1,<=0.12.0', 'pydantic >=0.30,<=0.30.0'] -+['starlette >=0.11.1', 'pydantic >=0.30'] - - extras_require = \ - {'all': ['requests', diff --git a/pkgs/development/python-modules/hstspreload/default.nix b/pkgs/development/python-modules/hstspreload/default.nix new file mode 100644 index 000000000000..a276bd33b592 --- /dev/null +++ b/pkgs/development/python-modules/hstspreload/default.nix @@ -0,0 +1,28 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, isPy27 +}: + +buildPythonPackage rec { + pname = "hstspreload"; + version = "2019.12.25"; + disabled = isPy27; + + src = fetchFromGitHub { + owner = "sethmlarson"; + repo = pname; + rev = version; + sha256 = "1aa7jccwldxw3s0z668qqb0i0plsark1q3jvkmqkyp645w5bfilk"; + }; + + # tests require network connection + doCheck = false; + + meta = with lib; { + description = "Chromium HSTS Preload list as a Python package and updated daily"; + homepage = https://github.com/sethmlarson/hstspreload; + license = licenses.bsd3; + maintainers = [ maintainers.costrouc ]; + }; +} diff --git a/pkgs/development/python-modules/httpx/default.nix b/pkgs/development/python-modules/httpx/default.nix new file mode 100644 index 000000000000..04a0592d7506 --- /dev/null +++ b/pkgs/development/python-modules/httpx/default.nix @@ -0,0 +1,68 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, certifi +, hstspreload +, chardet +, h11 +, h2 +, idna +, rfc3986 +, sniffio +, isPy27 +, pytest +, pytestcov +, trustme +, uvicorn +, trio +, brotli +}: + +buildPythonPackage rec { + pname = "httpx"; + version = "0.9.5"; + disabled = isPy27; + + src = fetchFromGitHub { + owner = "encode"; + repo = pname; + rev = version; + sha256 = "140z2j7b5hlcxvfb433hqv5b8irqa88hpq33lzr9m992djbhj2hb"; + }; + + propagatedBuildInputs = [ + certifi + hstspreload + chardet + h11 + h2 + idna + rfc3986 + sniffio + ]; + + checkInputs = [ + pytest + pytestcov + trustme + uvicorn + trio + brotli + ]; + + postPatch = '' + substituteInPlace setup.py \ + --replace "h11==0.8.*" "h11" + ''; + + checkPhase = '' + PYTHONPATH=.:$PYTHONPATH pytest + ''; + + meta = with lib; { + description = "The next generation HTTP client"; + homepage = https://github.com/encode/httpx; + license = licenses.bsd3; + maintainers = [ maintainers.costrouc ]; + }; +} diff --git a/pkgs/development/python-modules/orm/default.nix b/pkgs/development/python-modules/orm/default.nix new file mode 100644 index 000000000000..c2f6bc4fc570 --- /dev/null +++ b/pkgs/development/python-modules/orm/default.nix @@ -0,0 +1,43 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, databases +, typesystem +, aiosqlite +, pytest +, pytestcov +}: + +buildPythonPackage rec { + pname = "orm"; + version = "0.1.5"; + + src = fetchFromGitHub { + owner = "encode"; + repo = "orm"; + rev = version; + sha256 = "1g70cr0559iyqfzidwh6n2qq6d4dcnrr4sg0jkn1s4qzka828mj7"; + }; + + propagatedBuildInputs = [ + databases + typesystem + ]; + + checkInputs = [ + aiosqlite + pytest + pytestcov + ]; + + checkPhase = '' + PYTHONPATH=$PYTHONPATH:. pytest + ''; + + meta = with lib; { + description = "An async ORM"; + homepage = https://github.com/encode/orm; + license = licenses.bsd3; + maintainers = [ maintainers.costrouc ]; + }; +} diff --git a/pkgs/development/python-modules/pydantic/default.nix b/pkgs/development/python-modules/pydantic/default.nix index 3e8e5086eadd..088c6636fdca 100644 --- a/pkgs/development/python-modules/pydantic/default.nix +++ b/pkgs/development/python-modules/pydantic/default.nix @@ -1,21 +1,25 @@ { lib , buildPythonPackage -, fetchPypi +, fetchFromGitHub , ujson , email_validator , typing-extensions , python , isPy3k +, pytest +, pytestcov }: buildPythonPackage rec { pname = "pydantic"; - version = "1.0"; + version = "1.3"; disabled = !isPy3k; - src = fetchPypi { - inherit pname version; - sha256 = "bf474cebe007701806f5f8b076fb8508116606e5c721734bb855bfec4185263c"; + src = fetchFromGitHub { + owner = "samuelcolvin"; + repo = pname; + rev = "v${version}"; + sha256 = "0s85nzlsyj97j54zsgv569hkzv617z0vqsifsxkkyiimgbvnx7g8"; }; propagatedBuildInputs = [ @@ -24,22 +28,13 @@ buildPythonPackage rec { typing-extensions ]; - checkPhase = '' - ${python.interpreter} -c """ -from datetime import datetime -from typing import List -from pydantic import BaseModel - -class User(BaseModel): - id: int - name = 'John Doe' - signup_ts: datetime = None - friends: List[int] = [] + checkInputs = [ + pytest + pytestcov + ]; -external_data = {'id': '123', 'signup_ts': '2017-06-01 12:22', 'friends': [1, '2', b'3']} -user = User(**external_data) -assert user.id is "123" -""" + checkPhase = '' + pytest ''; meta = with lib; { diff --git a/pkgs/development/python-modules/python-multipart/default.nix b/pkgs/development/python-modules/python-multipart/default.nix new file mode 100644 index 000000000000..e3e75d886043 --- /dev/null +++ b/pkgs/development/python-modules/python-multipart/default.nix @@ -0,0 +1,41 @@ +{ lib +, buildPythonPackage +, fetchPypi +, pytest +, pytestcov +, mock +, pyyaml +, six +}: + +buildPythonPackage rec { + pname = "python-multipart"; + version = "0.0.5"; + + src = fetchPypi { + inherit pname version; + sha256 = "f7bb5f611fc600d15fa47b3974c8aa16e93724513b49b5f95c81e6624c83fa43"; + }; + + checkInputs = [ + pytest + pytestcov + mock + pyyaml + ]; + + propagatedBuildInputs = [ + six + ]; + + checkPhase = '' + pytest + ''; + + meta = with lib; { + description = "A streaming multipart parser for Python"; + homepage = https://github.com/andrew-d/python-multipart; + license = licenses.asl20; + maintainers = [ maintainers.costrouc ]; + }; +} diff --git a/pkgs/development/python-modules/starlette/default.nix b/pkgs/development/python-modules/starlette/default.nix index 6580a87b2fee..9fd1d56ea1aa 100644 --- a/pkgs/development/python-modules/starlette/default.nix +++ b/pkgs/development/python-modules/starlette/default.nix @@ -1,7 +1,7 @@ { lib , stdenv , buildPythonPackage -, fetchPypi +, fetchFromGitHub , aiofiles , graphene , itsdangerous @@ -9,21 +9,25 @@ , pyyaml , requests , ujson +, python-multipart , pytest -, python , uvicorn , isPy27 , darwin +, databases +, aiosqlite }: buildPythonPackage rec { pname = "starlette"; - version = "0.12.13"; + version = "0.12.9"; disabled = isPy27; - src = fetchPypi { - inherit pname version; - sha256 = "9597bc28e3c4659107c1c4a45ec32dc45e947d78fe56230222be673b2c36454a"; + src = fetchFromGitHub { + owner = "encode"; + repo = "starlette"; + rev = version; + sha256 = "0w44s8ynzy8w8dgm755c8jina9i4dd87vqkcv7jc1kwkg384w9i5"; }; propagatedBuildInputs = [ @@ -35,13 +39,17 @@ buildPythonPackage rec { requests ujson uvicorn + python-multipart + databases ] ++ stdenv.lib.optional stdenv.isDarwin [ darwin.apple_sdk.frameworks.ApplicationServices ]; + checkInputs = [ + pytest + aiosqlite + ]; + checkPhase = '' - ${python.interpreter} -c """ -from starlette.applications import Starlette -app = Starlette(debug=True) -""" + pytest --ignore=tests/test_graphql.py ''; meta = with lib; { diff --git a/pkgs/development/python-modules/typesystem/default.nix b/pkgs/development/python-modules/typesystem/default.nix new file mode 100644 index 000000000000..8a66d6cbcc9f --- /dev/null +++ b/pkgs/development/python-modules/typesystem/default.nix @@ -0,0 +1,44 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, isPy27 +, pytest +, pytestcov +, jinja2 +, pyyaml +}: + +buildPythonPackage rec { + pname = "typesystem"; + version = "0.2.4"; + disabled = isPy27; + + src = fetchFromGitHub { + owner = "encode"; + repo = pname; + rev = version; + sha256 = "1k0jwcky17zwaz2vx4x2zbsnp270g4mgn7kx5bpl8jgx76qmsnba"; + }; + + propagatedBuildInputs = [ + jinja2 + pyyaml + ]; + + checkInputs = [ + pytest + pytestcov + ]; + + # for some reason jinja2 not picking up forms directory (1% of tests) + checkPhase = '' + pytest --ignore=tests/test_forms.py + ''; + + meta = with lib; { + description = "A type system library for Python"; + homepage = https://github.com/encode/typesystem; + license = licenses.bsd3; + maintainers = [ maintainers.costrouc ]; + }; +} |