diff --git a/pkgs/development/python-modules/apache-airflow/default.nix b/pkgs/development/python-modules/apache-airflow/default.nix new file mode 100644 index 0000000000000..c15aac61b5c0a --- /dev/null +++ b/pkgs/development/python-modules/apache-airflow/default.nix @@ -0,0 +1,188 @@ +{ lib +, stdenv +, buildPythonPackage +, fetchPypi +, fetchFromGitHub +, fetchpatch +, alembic +, cached-property +, configparser +, colorlog +, croniter +, dill +, flask +, flask-appbuilder +, flask-admin +, flask-caching +, flask_login +, flask-swagger +, flask_wtf +, flask-bcrypt +, funcsigs +, future +, GitPython +, gunicorn +, iso8601 +, json-merge-patch +, jinja2 +, ldap3 +, lxml +, lazy-object-proxy +, markdown +, pandas +, pendulum +, psutil +, pygments +, python-daemon +, python-dateutil +, requests +, setproctitle +, snakebite +, sqlalchemy +, tabulate +, tenacity +, termcolor +, text-unidecode +, thrift +, tzlocal +, unicodecsv +, werkzeug +, zope_deprecation +, enum34 +, typing +, nose +, python +, isPy3k +}: + +buildPythonPackage rec { + pname = "apache-airflow"; + version = "1.10.5"; + disabled = (!isPy3k); + + src = fetchFromGitHub rec { + owner = "apache"; + repo = "airflow"; + rev = version; + sha256 = "14fmhfwx977c9jdb2kgm93i6acx43l45ggj30rb37r68pzpb6l6h"; + }; + + patches = [ + # Not yet accepted: https://github.com/apache/airflow/pull/6562 + (fetchpatch { + name = "avoid-warning-from-abc.collections"; + url = https://patch-diff.githubusercontent.com/raw/apache/airflow/pull/6562.patch; + sha256 = "0swpay1qlb7f9kgc56631s1qd9k82w4nw2ggvkm7jvxwf056k61z"; + }) + # Not yet accepted: https://github.com/apache/airflow/pull/6561 + (fetchpatch { + name = "pendulum2-compatibility"; + url = https://patch-diff.githubusercontent.com/raw/apache/airflow/pull/6561.patch; + sha256 = "17hw8qyd4zxvib9zwpbn32p99vmrdz294r31gnsbkkcl2y6h9knk"; + }) + ]; + + propagatedBuildInputs = [ + alembic + cached-property + colorlog + configparser + croniter + dill + flask + flask-admin + flask-appbuilder + flask-bcrypt + flask-caching + flask_login + flask-swagger + flask_wtf + funcsigs + future + GitPython + gunicorn + iso8601 + json-merge-patch + jinja2 + ldap3 + lxml + lazy-object-proxy + markdown + pandas + pendulum + psutil + pygments + python-daemon + python-dateutil + requests + setproctitle + sqlalchemy + tabulate + tenacity + termcolor + text-unidecode + thrift + tzlocal + unicodecsv + werkzeug + zope_deprecation + ]; + + checkInputs = [ + snakebite + nose + ]; + + postPatch = '' + + substituteInPlace setup.py \ + --replace "flask>=1.1.0, <2.0" "flask" \ + --replace "flask-caching>=1.3.3, <1.4.0" "flask-caching" \ + --replace "flask-appbuilder>=1.12.5, <2.0.0" "flask-appbuilder" \ + --replace "pendulum==1.4.4" "pendulum" \ + --replace "cached_property~=1.5" "cached_property" \ + --replace "dill>=0.2.2, <0.3" "dill" \ + --replace "configparser>=3.5.0, <3.6.0" "configparser" \ + --replace "jinja2>=2.7.3, <=2.10.0" "jinja2" \ + --replace "funcsigs==1.0.0" "funcsigs" \ + --replace "flask-swagger==0.2.13" "flask-swagger" \ + --replace "python-daemon>=2.1.1, <2.2" "python-daemon" \ + --replace "alembic>=0.9, <1.0" "alembic" \ + --replace "markdown>=2.5.2, <3.0" "markdown" \ + --replace "future>=0.16.0, <0.17" "future" \ + --replace "tenacity==4.12.0" "tenacity" \ + --replace "text-unidecode==1.2" "text-unidecode" \ + --replace "tzlocal>=1.4,<2.0.0" "tzlocal" \ + --replace "sqlalchemy~=1.3" "sqlalchemy" \ + --replace "werkzeug>=0.14.1, <0.15.0" "werkzeug" + + # dumb-init is only needed for CI and Docker, not relevant for NixOS. + substituteInPlace setup.py \ + --replace "'dumb-init>=1.2.2'," "" + + substituteInPlace tests/core.py \ + --replace "/bin/bash" "${stdenv.shell}" + ''; + + checkPhase = '' + export HOME=$(mktemp -d) + export AIRFLOW_HOME=$HOME + export AIRFLOW__CORE__UNIT_TEST_MODE=True + export AIRFLOW_DB="$HOME/airflow.db" + export PATH=$PATH:$out/bin + + airflow version + airflow initdb + airflow resetdb -y + nosetests tests.core.CoreTest + ## all tests + # nosetests --cover-package=airflow + ''; + + meta = with lib; { + description = "Programmatically author, schedule and monitor data pipelines"; + homepage = http://airflow.apache.org/; + license = licenses.asl20; + maintainers = [ maintainers.costrouc maintainers.ingenieroariel ]; + }; +} diff --git a/pkgs/development/python-modules/apispec/default.nix b/pkgs/development/python-modules/apispec/default.nix new file mode 100644 index 0000000000000..217a921a634eb --- /dev/null +++ b/pkgs/development/python-modules/apispec/default.nix @@ -0,0 +1,36 @@ +{ lib +, buildPythonPackage +, fetchPypi +, pyyaml +, prance +, marshmallow +, pytestCheckHook +, mock +, openapi-spec-validator +}: + +buildPythonPackage rec { + pname = "apispec"; + version = "3.1.0"; + + src = fetchPypi { + inherit pname version; + sha256 = "0rr32z9hbf8w4w1fs5gj2v0ixcq2vq7a3wssrlxagi5ii7ygap7y"; + }; + + checkInputs = [ + pyyaml + prance + openapi-spec-validator + marshmallow + mock + pytestCheckHook + ]; + + meta = with lib; { + description = "A pluggable API specification generator. Currently supports the OpenAPI Specification (f.k.a. the Swagger specification"; + homepage = https://github.com/marshmallow-code/apispec; + license = licenses.mit; + maintainers = [ maintainers.costrouc ]; + }; +} diff --git a/pkgs/development/python-modules/croniter/default.nix b/pkgs/development/python-modules/croniter/default.nix new file mode 100644 index 0000000000000..e262a7f164c8a --- /dev/null +++ b/pkgs/development/python-modules/croniter/default.nix @@ -0,0 +1,37 @@ +{ lib +, buildPythonPackage +, fetchPypi +, python-dateutil +, pytest +, pytz +}: + +buildPythonPackage rec { + pname = "croniter"; + version = "0.3.30"; + + src = fetchPypi { + inherit pname version; + sha256 = "538adeb3a7f7816c3cdec6db974c441620d764c25ff4ed0146ee7296b8a50590"; + }; + + propagatedBuildInputs = [ + python-dateutil + ]; + + checkInputs = [ + pytest + pytz + ]; + + checkPhase = '' + pytest src/croniter + ''; + + meta = with lib; { + description = "croniter provides iteration for datetime object with cron like format"; + homepage = http://github.com/kiorky/croniter; + license = licenses.mit; + maintainers = [ maintainers.costrouc ]; + }; +} diff --git a/pkgs/development/python-modules/flask-admin/default.nix b/pkgs/development/python-modules/flask-admin/default.nix new file mode 100644 index 0000000000000..3a2c1fe5e9b63 --- /dev/null +++ b/pkgs/development/python-modules/flask-admin/default.nix @@ -0,0 +1,71 @@ +{ lib +, buildPythonPackage +, fetchPypi +, nose +, pillow +, mongoengine +, pymongo +, wtf-peewee +, sqlalchemy +, sqlalchemy-citext +, flask-mongoengine +, flask_sqlalchemy +, flask-babelex +, shapely +, geoalchemy2 +, psycopg2 +, flask +, wtforms +, isPy27 +, enum34 +}: + +buildPythonPackage rec { + pname = "flask-admin"; + version = "1.5.3"; + + src = fetchPypi { + pname = "Flask-Admin"; + inherit version; + sha256 = "ca0be6ec11a6913b73f656c65c444ae5be416c57c75638dd3199376ce6bc7422"; + }; + + checkInputs = [ + nose + pillow + mongoengine + pymongo + wtf-peewee + sqlalchemy + sqlalchemy-citext + flask-mongoengine + flask_sqlalchemy + flask-babelex + shapely + geoalchemy2 + psycopg2 + ]; + + propagatedBuildInputs = [ + flask + wtforms + ] ++ lib.optionals isPy27 [ enum34 ]; + + checkPhase = '' + # disable tests that require mongodb, postresql + nosetests \ + -e "mongoengine" \ + -e "pymongo" \ + -e "test_form_upload" \ + -e "test_postgres" \ + -e "geoa" \ + flask_admin/tests + ''; + + meta = with lib; { + description = "Simple and extensible admin interface framework for Flask"; + homepage = https://github.com/flask-admin/flask-admin/; + license = licenses.bsd3; + maintainers = [ maintainers.costrouc ]; + }; +} diff --git a/pkgs/development/python-modules/flask-appbuilder/default.nix b/pkgs/development/python-modules/flask-appbuilder/default.nix new file mode 100644 index 0000000000000..46841f68d60fc --- /dev/null +++ b/pkgs/development/python-modules/flask-appbuilder/default.nix @@ -0,0 +1,80 @@ +{ lib +, buildPythonPackage +, fetchPypi +, nose +, apispec +, colorama +, click +, flask +, flask-babel +, flask_login +, flask-openid +, flask_sqlalchemy +, flask_wtf +, flask-jwt-extended +, jsonschema +, marshmallow +, marshmallow-enum +, marshmallow-sqlalchemy +, python-dateutil +, prison +, pyjwt +, pyyaml +, sqlalchemy-utils +}: + +buildPythonPackage rec { + pname = "flask-appbuilder"; + version = "2.1.6"; + + src = fetchPypi { + pname = "Flask-AppBuilder"; + inherit version; + sha256 = "a37d7d6a62407a2e0975af5305c795f2fb5c06ecc34e3cf64659d083b1b2dd5f"; + }; + + checkInputs = [ + nose + ]; + + propagatedBuildInputs = [ + apispec + colorama + click + flask + flask-babel + flask_login + flask-openid + flask_sqlalchemy + flask_wtf + flask-jwt-extended + jsonschema + marshmallow + marshmallow-enum + marshmallow-sqlalchemy + python-dateutil + prison + pyjwt + sqlalchemy-utils + pyyaml + ]; + + postPatch = '' + substituteInPlace setup.py \ + --replace "jsonschema>=3.0.1<4" "jsonschema" \ + --replace "marshmallow>=2.18.0,<2.20" "marshmallow" \ + --replace "PyJWT>=1.7.1" "PyJWT" \ + --replace "Flask-SQLAlchemy>=2.4,<3" "Flask-SQLAlchemy" \ + --replace "Flask-JWT-Extended>=3.18,<4" "Flask-JWT-Extended" + ''; + + # majority of tests require network access or mongo + doCheck = false; + + meta = with lib; { + description = "Simple and rapid application development framework, built on top of Flask"; + homepage = https://github.com/dpgaspar/flask-appbuilder/; + license = licenses.bsd3; + maintainers = [ maintainers.costrouc ]; + }; +} diff --git a/pkgs/development/python-modules/flask-babelex/default.nix b/pkgs/development/python-modules/flask-babelex/default.nix new file mode 100644 index 0000000000000..c5968be6b8fa4 --- /dev/null +++ b/pkgs/development/python-modules/flask-babelex/default.nix @@ -0,0 +1,47 @@ +{ lib +, buildPythonPackage +, fetchPypi +, flask +, Babel +, speaklater +, jinja2 +, pytest +}: + +buildPythonPackage rec { + pname = "flask-babelex"; + version = "0.9.3"; + + src = fetchPypi { + inherit version; + pname = "Flask-BabelEx"; + sha256 = "cf79cdedb5ce860166120136b0e059e9d97b8df07a3bc2411f6243de04b754b4"; + }; + + propagatedBuildInputs = [ + flask + Babel + speaklater + jinja2 + ]; + + checkInputs = [ + pytest + ]; + + checkPhase = '' + # Disabled 3 tests failing due to string representations of dates: + # Like "12. April 2010 um 15:46:00 MESZ" != 12. "April 2010 15:46:00 MESZ" + + pytest tests/tests.py -k "not test_init_app \ + and not test_custom_locale_selector \ + and not test_basics" + ''; + + meta = with lib; { + description = "Adds i18n/l10n support to Flask applications"; + homepage = http://github.com/mrjoes/flask-babelex; + license = licenses.bsd3; + maintainers = [ maintainers.costrouc ]; + }; +} diff --git a/pkgs/development/python-modules/flask-bcrypt/default.nix b/pkgs/development/python-modules/flask-bcrypt/default.nix new file mode 100644 index 0000000000000..dfcdad18f9c6b --- /dev/null +++ b/pkgs/development/python-modules/flask-bcrypt/default.nix @@ -0,0 +1,35 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, flask +, bcrypt +, python +}: + +buildPythonPackage rec { + pname = "flask-bcrypt"; + version = "0.7.1"; + + src = fetchFromGitHub { + owner = "maxcountryman"; + repo = pname; + rev = version; + sha256 = "0036gag3nj7fzib23lbbpwhlrn1s0kkrfwk5pd90y4cjcfqh8z9x"; + }; + + propagatedBuildInputs = [ + flask + bcrypt + ]; + + checkPhase = '' + ${python.interpreter} test_bcrypt.py + ''; + + meta = with lib; { + description = "Brcrypt hashing for Flask"; + homepage = https://github.com/maxcountryman/flask-bcrypt; + license = licenses.bsd3; + maintainers = [ maintainers.costrouc ]; + }; +} diff --git a/pkgs/development/python-modules/flask-mongoengine/default.nix b/pkgs/development/python-modules/flask-mongoengine/default.nix new file mode 100644 index 0000000000000..5e61a2415b7c1 --- /dev/null +++ b/pkgs/development/python-modules/flask-mongoengine/default.nix @@ -0,0 +1,47 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, flask +, flask_wtf +, mongoengine +, six +, nose +, rednose +, coverage +}: + +buildPythonPackage rec { + pname = "flask-mongoengine"; + version = "0.9.5"; + + src = fetchFromGitHub { + owner = "MongoEngine"; + repo = pname; + rev = "v${version}"; + sha256 = "05hfddf1dm594wnjyqhj0zmjfsf1kpmx1frjwhypgzx4hf62qcmr"; + }; + + propagatedBuildInputs = [ + flask + flask_wtf + mongoengine + six + ]; + + # they set test requirements to setup_requirements... + buildInputs = [ + nose + rednose + coverage + ]; + + # tests require working mongodb connection + doCheck = false; + + meta = with lib; { + description = "Flask-MongoEngine is a Flask extension that provides integration with MongoEngine and WTF model forms"; + homepage = https://github.com/mongoengine/flask-mongoengine; + license = licenses.bsd3; + maintainers = [ maintainers.costrouc ]; + }; +} diff --git a/pkgs/development/python-modules/flask-openid/default.nix b/pkgs/development/python-modules/flask-openid/default.nix new file mode 100644 index 0000000000000..ad5001636095b --- /dev/null +++ b/pkgs/development/python-modules/flask-openid/default.nix @@ -0,0 +1,34 @@ +{ lib +, buildPythonPackage +, fetchPypi +, flask +, python3-openid +, isPy3k +}: + +buildPythonPackage rec { + pname = "flask-openid"; + version = "1.2.5"; + disable = !isPy3k; + + src = fetchPypi { + pname = "Flask-OpenID"; + inherit version; + sha256 = "5a8ffe1c8c0ad1cc1f5030e1223ea27f8861ee0215a2a58a528cc61379e5ccab"; + }; + + propagatedBuildInputs = [ + flask + python3-openid + ]; + + # no tests for repo... + doCheck = false; + + meta = with lib; { + description = "OpenID support for Flask"; + homepage = http://github.com/mitsuhiko/flask-openid/; + license = licenses.bsd3; + maintainers = [ maintainers.costrouc ]; + }; +} diff --git a/pkgs/development/python-modules/json-merge-patch/default.nix b/pkgs/development/python-modules/json-merge-patch/default.nix new file mode 100644 index 0000000000000..b0bc2a835c412 --- /dev/null +++ b/pkgs/development/python-modules/json-merge-patch/default.nix @@ -0,0 +1,32 @@ +{ lib +, buildPythonPackage +, fetchPypi +, fetchpatch +}: + +buildPythonPackage rec { + pname = "json-merge-patch"; + version = "0.2"; + + src = fetchPypi { + inherit pname version; + sha256 = "09898b6d427c08754e2a97c709cf2dfd7e28bd10c5683a538914975eab778d39"; + }; + + patches = [ + # This prevented tests from running (was using a relative import) + # https://github.com/OpenDataServices/json-merge-patch/pull/1 + (fetchpatch { + name = "fully-qualified-json-merge-patch-import-on-tests"; + url = https://patch-diff.githubusercontent.com/raw/OpenDataServices/json-merge-patch/pull/1.patch; + sha256 = "1k6xsrxsmz03nwcqsf4gf0zsfnl2r20n83npic8z6bqlpl4lidl4"; + }) + ]; + + meta = with lib; { + description = "JSON Merge Patch library"; + homepage = https://github.com/open-contracting/json-merge-patch; + license = licenses.bsd3; + maintainers = [ maintainers.costrouc ]; + }; +} diff --git a/pkgs/development/python-modules/marshmallow-enum/default.nix b/pkgs/development/python-modules/marshmallow-enum/default.nix new file mode 100644 index 0000000000000..9d68e66c91ab4 --- /dev/null +++ b/pkgs/development/python-modules/marshmallow-enum/default.nix @@ -0,0 +1,42 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, marshmallow +, pytestCheckHook +, isPy27 +, enum34 +, pytest-flake8 +}: + +buildPythonPackage rec { + pname = "marshmallow-enum"; + version = "1.5.1"; + + src = fetchFromGitHub { + owner = "justanr"; + repo = "marshmallow_enum"; + rev = "v${version}"; + sha256 = "1ihrcmyfjabivg6hc44i59hnw5ijlg1byv3zs1rqxfynp8xr7398"; + }; + + propagatedBuildInputs = [ + marshmallow + ] ++ lib.optionals isPy27 [ enum34 ]; + + checkInputs = [ + pytestCheckHook + pytest-flake8 + ]; + + disabledTests = [ + "test_custom_error_in_deserialize_by_name" + "test_custom_error_in_deserialize_by_value" + ]; + + meta = with lib; { + description = "Enum field for Marshmallow"; + homepage = https://github.com/justanr/marshmallow_enum; + license = licenses.mit; + maintainers = [ maintainers.costrouc ]; + }; +} diff --git a/pkgs/development/python-modules/mongoengine/default.nix b/pkgs/development/python-modules/mongoengine/default.nix new file mode 100644 index 0000000000000..db20d9442ef10 --- /dev/null +++ b/pkgs/development/python-modules/mongoengine/default.nix @@ -0,0 +1,49 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, pymongo +, six +, blinker +, nose +, pillow +, coverage +}: + +buildPythonPackage rec { + pname = "mongoengine"; + version = "0.18.2"; + + src = fetchFromGitHub { + owner = "MongoEngine"; + repo = pname; + rev = "v${version}"; + sha256 = "0gx091h9rcykdj233srrl3dfc0ly52p6r4qc9ah6z0f694kmqj1v"; + }; + + propagatedBuildInputs = [ + pymongo + six + ]; + + checkInputs = [ + nose + pillow + coverage + blinker + ]; + + postPatch = '' + substituteInPlace setup.py \ + --replace "coverage==4.2" "coverage" + ''; + + # tests require mongodb running in background + doCheck = false; + + meta = with lib; { + description = "MongoEngine is a Python Object-Document Mapper for working with MongoDB"; + homepage = http://mongoengine.org/; + license = licenses.mit; + maintainers = [ maintainers.costrouc ]; + }; +} diff --git a/pkgs/development/python-modules/prance/default.nix b/pkgs/development/python-modules/prance/default.nix new file mode 100644 index 0000000000000..38133172ecf79 --- /dev/null +++ b/pkgs/development/python-modules/prance/default.nix @@ -0,0 +1,57 @@ +{ lib +, buildPythonPackage +, fetchPypi +, chardet +, pyyaml +, requests +, six +, semver +, pytest +, pytestcov +, pytestrunner +, sphinx +, openapi-spec-validator +}: + +buildPythonPackage rec { + pname = "prance"; + version = "0.15.0"; + + src = fetchPypi { + inherit pname version; + sha256 = "793f96dc8bba73bf4342f57b3570f5e0a94c30e60f0c802a2aaa302759dd8610"; + }; + + buildInputs = [ + pytestrunner + ]; + + propagatedBuildInputs = [ + chardet + pyyaml + requests + six + semver + ]; + + checkInputs = [ + pytest + pytestcov + openapi-spec-validator + ]; + + postPatch = '' + substituteInPlace setup.py \ + --replace "tests_require = dev_require," "tests_require = None," + ''; + + # many tests require network connection + doCheck = false; + + meta = with lib; { + description = "Resolving Swagger/OpenAPI 2.0 and 3.0.0 Parser"; + homepage = https://github.com/jfinkhaeuser/prance; + license = licenses.mit; + maintainers = [ maintainers.costrouc ]; + }; +} diff --git a/pkgs/development/python-modules/prison/default.nix b/pkgs/development/python-modules/prison/default.nix new file mode 100644 index 0000000000000..4993976b51df8 --- /dev/null +++ b/pkgs/development/python-modules/prison/default.nix @@ -0,0 +1,33 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, six +, nose +}: + +buildPythonPackage rec { + pname = "prison"; + version = "0.1.2"; + + src = fetchFromGitHub { + owner = "betodealmeida"; + repo = "python-rison"; + rev = version; + sha256 = "14vb468iznf9416z993bbqihywp9ibyslw5vp67wfr200zyxjwak"; + }; + + propagatedBuildInputs = [ + six + ]; + + checkInputs = [ + nose + ]; + + meta = with lib; { + description = "Rison encoder/decoder"; + homepage = https://github.com/betodealmeida/python-rison; + license = licenses.mit; + maintainers = [ maintainers.costrouc ]; + }; +} diff --git a/pkgs/development/python-modules/snakebite/default.nix b/pkgs/development/python-modules/snakebite/default.nix new file mode 100644 index 0000000000000..1d08570d72762 --- /dev/null +++ b/pkgs/development/python-modules/snakebite/default.nix @@ -0,0 +1,41 @@ +{ lib +, buildPythonPackage +, fetchPypi +, tox +, virtualenv +, protobuf +}: + +buildPythonPackage rec { + pname = "snakebite"; + version = "2.11.0"; + + src = fetchPypi { + inherit pname version; + sha256 = "085238b4944cb9c658ee62d5794de936ac3d0c337c504b2cc86424a205ae978a"; + }; + + checkInputs = [ + tox + virtualenv + ]; + + propagatedBuildInputs = [ + protobuf + ]; + + postPatch = '' + substituteInPlace setup.py \ + --replace "'argparse'" "" + ''; + + # tests require hadoop hdfs + doCheck = false; + + meta = with lib; { + description = "Pure Python HDFS client"; + homepage = http://github.com/spotify/snakebite; + license = licenses.asl20; + maintainers = [ maintainers.costrouc ]; + }; +} diff --git a/pkgs/development/python-modules/sqlalchemy-citext/default.nix b/pkgs/development/python-modules/sqlalchemy-citext/default.nix new file mode 100644 index 0000000000000..b91e338540431 --- /dev/null +++ b/pkgs/development/python-modules/sqlalchemy-citext/default.nix @@ -0,0 +1,31 @@ +{ lib +, buildPythonPackage +, fetchPypi +, sqlalchemy +, python +}: + +buildPythonPackage rec { + pname = "sqlalchemy-citext"; + version = "1.3-0"; + + src = fetchPypi { + inherit pname version; + sha256 = "7d7343037a35153d6f94c3c2f6baf391f88a57651c3bde5d6749d216859ae4c5"; + }; + + propagatedBuildInputs = [ + sqlalchemy + ]; + + checkPhase = '' + ${python.interpreter} tests/test_citext.py + ''; + + meta = with lib; { + description = "A sqlalchemy plugin that allows postgres use of CITEXT"; + homepage = https://github.com/mahmoudimus/sqlalchemy-citext; + license = licenses.mit; + maintainers = [ maintainers.costrouc ]; + }; +} diff --git a/pkgs/development/python-modules/wtf-peewee/default.nix b/pkgs/development/python-modules/wtf-peewee/default.nix new file mode 100644 index 0000000000000..a01aaa4631af2 --- /dev/null +++ b/pkgs/development/python-modules/wtf-peewee/default.nix @@ -0,0 +1,33 @@ +{ lib +, buildPythonPackage +, fetchPypi +, peewee +, wtforms +, python +}: + +buildPythonPackage rec { + pname = "wtf-peewee"; + version = "3.0.0"; + + src = fetchPypi { + inherit pname version; + sha256 = "acd05d136c8595da3327fcf9176fa85fdcec1f2aac51d235e46e6fc7a0871283"; + }; + + propagatedBuildInputs = [ + peewee + wtforms + ]; + + checkPhase = '' + ${python.interpreter} runtests.py + ''; + + meta = with lib; { + description = "WTForms integration for peewee models"; + homepage = https://github.com/coleifer/wtf-peewee/; + license = licenses.mit; + maintainers = [ maintainers.costrouc ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0be07adc109f2..c1af52046f320 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -559,6 +559,8 @@ in airfield = callPackage ../tools/networking/airfield { }; + apache-airflow = with python3.pkgs; toPythonApplication apache-airflow; + airsonic = callPackage ../servers/misc/airsonic { }; airspy = callPackage ../applications/radio/airspy { }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index f61ca230c0755..9c2159bab59ce 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1434,8 +1434,12 @@ in { antlr4-python3-runtime = callPackage ../development/python-modules/antlr4-python3-runtime { antlr4 = pkgs.antlr4; }; + apache-airflow = callPackage ../development/python-modules/apache-airflow { }; + apipkg = callPackage ../development/python-modules/apipkg {}; + apispec = callPackage ../development/python-modules/apispec {}; + appdirs = callPackage ../development/python-modules/appdirs { }; appleseed = disabledIf isPy3k @@ -1671,6 +1675,8 @@ in { crc16 = callPackage ../development/python-modules/crc16 { }; + croniter = callPackage ../development/python-modules/croniter { }; + csscompressor = callPackage ../development/python-modules/csscompressor {}; csvs-to-sqlite = callPackage ../development/python-modules/csvs-to-sqlite { }; @@ -1972,6 +1978,8 @@ in { jsonlines = callPackage ../development/python-modules/jsonlines { }; + json-merge-patch = callPackage ../development/python-modules/json-merge-patch { }; + jsonrpc-async = callPackage ../development/python-modules/jsonrpc-async { }; jsonrpc-base = callPackage ../development/python-modules/jsonrpc-base { }; @@ -3191,6 +3199,10 @@ in { flask = callPackage ../development/python-modules/flask { }; + flask-admin = callPackage ../development/python-modules/flask-admin { }; + + flask-appbuilder = callPackage ../development/python-modules/flask-appbuilder { }; + flask-api = callPackage ../development/python-modules/flask-api { }; flask_assets = callPackage ../development/python-modules/flask-assets { }; @@ -3199,6 +3211,10 @@ in { flask-babel = callPackage ../development/python-modules/flask-babel { }; + flask-babelex = callPackage ../development/python-modules/flask-babelex { }; + + flask-bcrypt = callPackage ../development/python-modules/flask-bcrypt { }; + flask-bootstrap = callPackage ../development/python-modules/flask-bootstrap { }; flask-caching = callPackage ../development/python-modules/flask-caching { }; @@ -3225,6 +3241,10 @@ in { flask_migrate = callPackage ../development/python-modules/flask-migrate { }; + flask-mongoengine = callPackage ../development/python-modules/flask-mongoengine { }; + + flask-openid = callPackage ../development/python-modules/flask-openid { }; + flask-paginate = callPackage ../development/python-modules/flask-paginate { }; flask_principal = callPackage ../development/python-modules/flask-principal { }; @@ -3251,6 +3271,8 @@ in { wtforms = callPackage ../development/python-modules/wtforms { }; + wtf-peewee = callPackage ../development/python-modules/wtf-peewee { }; + graph-tool = callPackage ../development/python-modules/graph-tool/2.x.x.nix { inherit (pkgs) pkgconfig; }; @@ -3822,6 +3844,8 @@ in { marshmallow = callPackage ../development/python-modules/marshmallow { }; + marshmallow-enum = callPackage ../development/python-modules/marshmallow-enum { }; + marshmallow-sqlalchemy = callPackage ../development/python-modules/marshmallow-sqlalchemy { }; manuel = callPackage ../development/python-modules/manuel { }; @@ -4415,6 +4439,8 @@ in { praw = if isPy3k then callPackage ../development/python-modules/praw { } else callPackage ../development/python-modules/praw/6.3.nix { }; + + prance = callPackage ../development/python-modules/prance { }; prawcore = callPackage ../development/python-modules/prawcore { }; @@ -4474,6 +4500,8 @@ in { mongodict = callPackage ../development/python-modules/mongodict { }; + mongoengine = callPackage ../development/python-modules/mongoengine { }; + repoze_who = callPackage ../development/python-modules/repoze_who { }; vobject = callPackage ../development/python-modules/vobject { }; @@ -5119,6 +5147,8 @@ in { sqlalchemy = callPackage ../development/python-modules/sqlalchemy { }; + sqlalchemy-citext = callPackage ../development/python-modules/sqlalchemy-citext { }; + sqlalchemy_migrate = callPackage ../development/python-modules/sqlalchemy-migrate { }; sqlalchemy-utils = callPackage ../development/python-modules/sqlalchemy-utils { }; @@ -5835,6 +5865,8 @@ in { toposort = callPackage ../development/python-modules/toposort { }; + snakebite = callPackage ../development/python-modules/snakebite { }; + snapperGUI = callPackage ../development/python-modules/snappergui { }; dm-sonnet = callPackage ../development/python-modules/dm-sonnet { }; @@ -6195,6 +6227,8 @@ in { preggy = callPackage ../development/python-modules/preggy { }; + prison = callPackage ../development/python-modules/prison { }; + pytoml = callPackage ../development/python-modules/pytoml { }; pypandoc = callPackage ../development/python-modules/pypandoc { };