summaryrefslogtreecommitdiff
path: root/pkgs/development/python-modules/apache-airflow
diff options
context:
space:
mode:
authorChris Ostrouchov <chris.ostrouchov@gmail.com>2019-07-18 09:18:26 -0400
committerAriel <ingenieroariel@gmail.com>2019-11-15 16:03:54 -0500
commitbe91c2aa1b189614d9ec779095842f1143ba3c08 (patch)
tree2013557f8a382f4f74d800144f9c0f86acccb584 /pkgs/development/python-modules/apache-airflow
parentpythonPackages.croniter: init at 0.3.30 (diff)
downloadnixpkgs-be91c2aa1b189614d9ec779095842f1143ba3c08.tar.gz
pythonPackages.apache-airflow: init at 1.10.3
Diffstat (limited to 'pkgs/development/python-modules/apache-airflow')
-rw-r--r--pkgs/development/python-modules/apache-airflow/default.nix167
1 files changed, 167 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 000000000000..a0f2673b1fcc
--- /dev/null
+++ b/pkgs/development/python-modules/apache-airflow/default.nix
@@ -0,0 +1,167 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, alembic
+, configparser
+, croniter
+, dill
+, flask
+, flask-appbuilder
+, flask-admin
+, flask-caching
+, flask_login
+, flask-swagger
+, flask_wtf
+, funcsigs
+, future
+, GitPython
+, gunicorn
+, iso8601
+, json-merge-patch
+, jinja2
+, lxml
+, markdown
+, pandas
+, pendulum
+, psutil
+, pygments
+, python-daemon
+, python-dateutil
+, requests
+, setproctitle
+, sqlalchemy
+, tabulate
+, tenacity
+, text-unidecode
+, thrift
+, tzlocal
+, unicodecsv
+, werkzeug
+, zope_deprecation
+, enum34
+, typing
+, nose
+, isPy27
+}:
+
+let # import error "from pendulum import Pendulum" due to 2.x
+ pendulum1 = pendulum.overrideAttrs (super: rec {
+ name = "pendulum-1.5.1";
+
+ src = fetchPypi {
+ pname = super.pname;
+ version = "1.5.1";
+ sha256 = "738878168eb26e5446da5d1f7b3312ae993a542061be8882099c00ef4866b1a2";
+ };
+
+ propagatedBuildInputs = super.propagatedBuildInputs ++ [ tzlocal ];
+ });
+
+ # 2.x has fstrings
+ flask-appbuilder1 = flask-appbuilder.overrideAttrs (super: rec {
+ name = "flask-appbuilder-1.13.0";
+
+ src = fetchPypi {
+ pname = "Flask-AppBuilder";
+ version = "1.13.0";
+ sha256 = "1bjcnklpycw62a02kilkdc48vk67sykvlp8l1bvqszkjxvvfhgvg";
+ };
+
+ buildPhase = ''
+ substituteInPlace setup.py \
+ --replace "prison==0.1.0" "prison"
+ '' + super.buildPhase;
+ });
+in
+buildPythonPackage rec {
+ pname = "apache-airflow";
+ version = "1.10.3";
+
+
+ src = fetchPypi {
+ inherit pname version;
+ sha256 = "73840fa3d2f3a523010ce685aa15714d01a4cf42bd6bd77716c4321f82bab140";
+ };
+
+ propagatedBuildInputs = [
+ alembic
+ configparser
+ croniter
+ dill
+ flask
+ flask-appbuilder1
+ flask-admin
+ flask-caching
+ flask_login
+ flask-swagger
+ flask_wtf
+ funcsigs
+ future
+ GitPython
+ gunicorn
+ iso8601
+ json-merge-patch
+ jinja2
+ lxml
+ markdown
+ pandas
+ pendulum1
+ psutil
+ pygments
+ python-daemon
+ python-dateutil
+ requests
+ setproctitle
+ sqlalchemy
+ tabulate
+ tenacity
+ text-unidecode
+ thrift
+ tzlocal
+ unicodecsv
+ werkzeug
+ zope_deprecation
+ ] ++ lib.optionals isPy27 [ enum34 typing ];
+
+ checkInputs = [
+ nose
+ ];
+
+ postPatch = ''
+ substituteInPlace setup.py \
+ --replace "flask-caching>=1.3.3, <1.4.0" "flask-caching" \
+ --replace "flask-appbuilder==1.12.3" "flask-appbuilder" \
+ --replace "pendulum==1.4.4" "pendulum" \
+ --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 "werkzeug>=0.14.1, <0.15.0" "werkzeug"
+ '';
+
+ checkPhase = ''
+ export HOME=$(mktemp -d)
+ export AIRFLOW_HOME=$HOME
+ export AIRFLOW__CORE__UNIT_TEST_MODE=True
+ export AIRFLOW_DB="$HOME/airflow.db"
+
+ $out/bin/airflow initdb
+ $out/bin/airflow resetdb
+ nosetests --cover-package=airflow
+ '';
+
+ # tests are extremely complex to run
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Programmatically author, schedule and monitor data pipelines";
+ homepage = http://airflow.apache.org/;
+ license = licenses.asl20;
+ maintainers = [ maintainers.costrouc ];
+ };
+}