diff options
Diffstat (limited to 'pkgs/development/python-modules/apache-airflow/default.nix')
-rw-r--r-- | pkgs/development/python-modules/apache-airflow/default.nix | 188 |
1 files changed, 188 insertions, 0 deletions
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 00000000000..c15aac61b5c --- /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 ]; + }; +} |