Files
nixpkgs/pkgs/development/python-modules/flask-admin/default.nix
T
2025-12-11 08:20:27 +01:00

161 lines
3.4 KiB
Nix

{
buildPythonPackage,
fetchFromGitHub,
flit-core,
lib,
pythonOlder,
# dependencies
flask,
jinja2,
markupsafe,
werkzeug,
wtforms,
typing-extensions,
# optional dependencies
# sqlalchemy
flask-sqlalchemy,
sqlalchemy,
# sqlalchemy-with-utils
arrow,
colour,
email-validator,
sqlalchemy-citext,
sqlalchemy-utils,
# geoalchemy
geoalchemy2,
shapely,
# pymongo
pymongo,
# mongoengine
mongoengine,
# peewee
peewee,
wtf-peewee,
# s3
boto3,
# azure-blob-storage
azure-storage-blob,
# images
pillow,
# export
tablib,
# rediscli
redis,
# translation
flask-babel,
# checks
beautifulsoup4,
moto,
psycopg2,
pytestCheckHook,
}:
buildPythonPackage rec {
pname = "flask-admin";
version = "2.0.2";
pyproject = true;
disabled = pythonOlder "3.10";
src = fetchFromGitHub {
owner = "flask-admin";
repo = "flask-admin";
tag = "v${version}";
hash = "sha256-HjK+ddMtT8QJ/KSFj9v28jflf2f6M+Gx1rJjCdWUUFM=";
};
build-system = [ flit-core ];
dependencies = [
flask
jinja2
markupsafe
werkzeug
wtforms
]
++ lib.optionals (pythonOlder "3.11") [
typing-extensions
];
optional-dependencies = {
sqlalchemy = [
flask-sqlalchemy
sqlalchemy
];
sqlalchemy-with-utils = optional-dependencies.sqlalchemy ++ [
arrow
colour
email-validator
sqlalchemy-citext
sqlalchemy-utils
];
geoalchemy = optional-dependencies.sqlalchemy ++ [
geoalchemy2
shapely
];
pymongo = [ pymongo ];
mongoengine = [ mongoengine ];
peewee = [
peewee
wtf-peewee
];
s3 = [ boto3 ];
azure-blob-storage = [ azure-storage-blob ];
images = [ pillow ];
export = [ tablib ];
rediscli = [ redis ];
translation = [ flask-babel ];
all = lib.flatten [
optional-dependencies.sqlalchemy
optional-dependencies.sqlalchemy-with-utils
optional-dependencies.geoalchemy
optional-dependencies.pymongo
optional-dependencies.mongoengine
optional-dependencies.peewee
optional-dependencies.s3
optional-dependencies.azure-blob-storage
optional-dependencies.images
optional-dependencies.export
optional-dependencies.rediscli
optional-dependencies.translation
];
};
nativeCheckInputs = [
beautifulsoup4
moto
psycopg2
pytestCheckHook
]
++ lib.flatten [
optional-dependencies.sqlalchemy-with-utils
optional-dependencies.mongoengine
optional-dependencies.peewee
optional-dependencies.images
optional-dependencies.export
optional-dependencies.translation
flask.optional-dependencies.async
];
disabledTestPaths = [
# requires database
"flask_admin/tests/geoa/test_basic.py"
"flask_admin/tests/pymongo/test_basic.py"
"flask_admin/tests/mongoengine/test_basic.py"
"flask_admin/tests/peeweemodel/test_basic.py"
"flask_admin/tests/sqla/test_postgres.py"
# requires internet
"flask_admin/tests/fileadmin/test_fileadmin_azure.py"
];
pythonImportsCheck = [ "flask_admin" ];
meta = {
description = "Admin interface framework for Flask";
homepage = "https://github.com/flask-admin/flask-admin/";
changelog = "https://github.com/flask-admin/flask-admin/releases/tag/v${version}";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ nickcao ];
};
}