115 lines
3.6 KiB
Nix
115 lines
3.6 KiB
Nix
{ lib
|
|
, fetchFromGitHub
|
|
, fetchPypi
|
|
, python3
|
|
}:
|
|
|
|
let
|
|
python = python3.override {
|
|
packageOverrides = pySelf: pySuper: {
|
|
connexion = pySuper.connexion.overridePythonAttrs (o: rec {
|
|
version = "2.14.2";
|
|
src = fetchFromGitHub {
|
|
owner = "spec-first";
|
|
repo = "connexion";
|
|
rev = "refs/tags/${version}";
|
|
hash = "sha256-1v1xCHY3ZnZG/Vu9wN/it7rLKC/StoDefoMNs+hMjIs=";
|
|
};
|
|
nativeBuildInputs = with pySelf; [
|
|
setuptools
|
|
pythonRelaxDepsHook
|
|
];
|
|
pythonRelaxDeps = [
|
|
"werkzeug"
|
|
];
|
|
propagatedBuildInputs = with pySelf; [
|
|
aiohttp
|
|
aiohttp-jinja2
|
|
aiohttp-swagger
|
|
clickclick
|
|
flask
|
|
inflection
|
|
jsonschema
|
|
openapi-spec-validator
|
|
packaging
|
|
pyyaml
|
|
requests
|
|
swagger-ui-bundle
|
|
];
|
|
nativeCheckInputs = with pySelf; [
|
|
aiohttp-remotes
|
|
decorator
|
|
pytest-aiohttp
|
|
pytestCheckHook
|
|
testfixtures
|
|
];
|
|
disabledTests = [
|
|
"test_app"
|
|
"test_openapi_yaml_behind_proxy"
|
|
"test_swagger_ui"
|
|
];
|
|
});
|
|
flask = pySuper.flask.overridePythonAttrs (o: rec {
|
|
version = "2.2.5";
|
|
src = fetchPypi {
|
|
pname = "Flask";
|
|
inherit version;
|
|
hash = "sha256-7e6bCn/yZiG9WowQ/0hK4oc3okENmbC7mmhQx/uXeqA=";
|
|
};
|
|
nativeBuildInputs = (o.nativeBuildInputs or []) ++ [
|
|
pySelf.setuptools
|
|
];
|
|
});
|
|
# flask-appbuilder doesn't work with sqlalchemy 2.x, flask-appbuilder 3.x
|
|
# https://github.com/dpgaspar/Flask-AppBuilder/issues/2038
|
|
flask-appbuilder = pySuper.flask-appbuilder.overridePythonAttrs (o: {
|
|
meta.broken = false;
|
|
});
|
|
# a knock-on effect from overriding the sqlalchemy version
|
|
flask-sqlalchemy = pySuper.flask-sqlalchemy.overridePythonAttrs (o: {
|
|
src = fetchPypi {
|
|
pname = "Flask-SQLAlchemy";
|
|
version = "2.5.1";
|
|
hash = "sha256-K9pEtD58rLFdTgX/PMH4vJeTbMRkYjQkECv8LDXpWRI=";
|
|
};
|
|
format = "setuptools";
|
|
});
|
|
httpcore = pySuper.httpcore.overridePythonAttrs (o: rec {
|
|
# nullify upstream's pytest flags which cause
|
|
# "TLS/SSL connection has been closed (EOF)"
|
|
# with pytest-httpbin 1.x
|
|
preCheck = ''
|
|
substituteInPlace pyproject.toml \
|
|
--replace '[tool.pytest.ini_options]' '[tool.notpytest.ini_options]'
|
|
'';
|
|
});
|
|
pytest-httpbin = pySuper.pytest-httpbin.overridePythonAttrs (o: rec {
|
|
version = "1.0.2";
|
|
src = fetchFromGitHub {
|
|
owner = "kevin1024";
|
|
repo = "pytest-httpbin";
|
|
rev = "refs/tags/v${version}";
|
|
hash = "sha256-S4ThQx4H3UlKhunJo35esPClZiEn7gX/Qwo4kE1QMTI=";
|
|
};
|
|
});
|
|
# apache-airflow doesn't work with sqlalchemy 2.x
|
|
# https://github.com/apache/airflow/issues/28723
|
|
sqlalchemy = pySuper.sqlalchemy_1_4;
|
|
|
|
apache-airflow = pySelf.callPackage ./python-package.nix { };
|
|
};
|
|
};
|
|
in
|
|
# See note in ./python-package.nix for
|
|
# instructions on manually testing the web UI
|
|
with python.pkgs; (toPythonApplication apache-airflow).overrideAttrs (previousAttrs: {
|
|
# Provide access to airflow's modified python package set
|
|
# for the cases where external scripts need to import
|
|
# airflow modules, though *caveat emptor* because many of
|
|
# these packages will not be built by hydra and many will
|
|
# not work at all due to the unexpected version overrides
|
|
# here.
|
|
passthru = (previousAttrs.passthru or { }) // {
|
|
pythonPackages = python.pkgs;
|
|
};
|
|
})
|