python3Packages.adbc-driver-manager: init at 1.11.0 (#534632)

This commit is contained in:
Doron Behar
2026-07-05 10:31:52 +00:00
committed by GitHub
10 changed files with 559 additions and 36 deletions
+107
View File
@@ -0,0 +1,107 @@
{
lib,
stdenv,
fetchFromGitHub,
buildGoModule,
# nativeBuildInputs
cmake,
pkg-config,
# buildInputs
nanoarrow,
fmt,
gtest,
libpq,
sqlite,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "arrow-adbc";
version = "23";
__structuredAttrs = true;
strictDeps = true;
src = fetchFromGitHub {
owner = "apache";
repo = "arrow-adbc";
tag = "apache-arrow-adbc-${finalAttrs.version}";
fetchSubmodules = true;
hash = "sha256-33JUx4ZI+BHIZMvlCO43mjU34zShJZGQpAkqRrvgl2w=";
};
vendorHash = "sha256-uGxCTllRNtXkrl31d88TOK36X09ylo++gtorx0uFR8A=";
# We are building the C project
preConfigure = ''
cd c/
'';
# Upstream's build invoces a custom `go build` command to build one of the
# targets. We use buildGoModule's engineering to supply it the offline
# `goModules` path and other GO[A-Z] environment variables. Ideally, there
# should be setup hooks for the mechanisms of buildGoModule, that would make
# it easier.
modRoot = "../../go/adbc";
inherit (finalAttrs.finalPackage.passthru.bigquery-go-package) goModules;
preBuild =
(lib.pipe finalAttrs.finalPackage.passthru.bigquery-go-package.configurePhase [
# Make that this configure phase doesn't run our configure hooks.
(lib.replaceString "runHook preConfigure" "")
(lib.replaceString "runHook postConfigure" "")
])
# Return to original meson build directory.
+ ''
cd ../../c/build
'';
nativeBuildInputs = [
# NOTE that the meson build system has a bug that it puts a few shared
# objects in $out and not in $out/lib.
cmake
pkg-config
finalAttrs.finalPackage.passthru.bigquery-go-package.passthru.go
];
cmakeFlags = map (driver: lib.cmakeBool "ADBC_DRIVER_${driver}" true) [
"BIGQUERY"
"FLIGHTSQL"
"MANAGER"
"POSTGRESQL"
"SNOWFLAKE"
"SQLITE"
];
buildInputs = [
fmt
gtest
libpq
nanoarrow
sqlite
];
passthru = {
bigquery-go-package = buildGoModule (finalGoAttrs: {
inherit (finalAttrs)
pname
version
src
vendorHash
;
sourceRoot = "${finalAttrs.src.name}/go/adbc";
# This derivation is not really evaluated anyway, but it is used to
# update the vendorHash... TODO: Check that nix-update is capable of
# updating vendorHash automatically.
dontBuild = true;
dontInstall = true;
});
};
meta = {
description = "Database connectivity API standard and libraries for Apache Arrow";
homepage = "https://arrow.apache.org/adbc/";
changelog = "https://github.com/apache/arrow-adbc/blob/${finalAttrs.src.rev}/CHANGELOG.md";
license = lib.licenses.afl20;
maintainers = with lib.maintainers; [ doronbehar ];
platforms = lib.platforms.all;
};
})
+89
View File
@@ -0,0 +1,89 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchzip,
# nativeBuildInputs
meson,
ninja,
pkg-config,
# buildInputs
arrow-cpp,
gbenchmark,
gtest,
nlohmann_json,
zlib,
zstd,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "nanoarrow";
version = "0.8.0";
__structuredAttrs = true;
strictDeps = true;
src = fetchFromGitHub {
owner = "apache";
repo = "arrow-nanoarrow";
tag = "apache-arrow-nanoarrow-${finalAttrs.version}";
hash = "sha256-1iLbT1eeyZaoB75uYTgg4qns+C7b4DErqMwJ9nQPRls=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
];
buildInputs = [
arrow-cpp
gbenchmark
gtest
nlohmann_json
zlib
zstd
];
doCheck = true;
# Pre-populate the meson subproject with the flatcc source so meson doesn't try to download it.
# The wrap's patch_directory overlay (meson.build) must also be applied.
postPatch = ''
cp -r --no-preserve=mode ${finalAttrs.finalPackage.passthru.flatcc-src} ${finalAttrs.finalPackage.passthru.flatcc-src-dest}
cp subprojects/packagefiles/flatcc/meson.build ${finalAttrs.finalPackage.passthru.flatcc-src-dest}/
'';
mesonFlags = [
# Needed only on Darwin, because otherwise a metal-cpp dependency is
# required. It doesn't hurt to enable it for all platforms, so it'd be
# easier to spot if the option will disappear in the future for instance..
(lib.mesonOption "metal" "disabled")
];
passthru = {
# Nanoarrow requires a specific post-0.6.1 flatcc commit that adds `_with_size` API variants not
# present in the upstream 0.6.1 release.
flatcc-src = fetchFromGitHub {
owner = "dvidelabs";
repo = "flatcc";
rev = "fd3c4ae5cd39f0651eda6a3a1a374278070135d6";
hash = "sha256-8MqazKuwfFWVJ/yjT5fNrRzexFQ2ky4YTcZqOYjk9Qc=";
};
flatcc-src-dest = "subprojects/flatcc-${finalAttrs.finalPackage.passthru.flatcc-src.rev}";
};
outputs = [
"out"
"dev"
];
meta = {
description = "Helpers for Arrow C Data & Arrow C Stream interfaces";
homepage = "https://github.com/apache/arrow-nanoarrow";
changelog = "https://github.com/apache/arrow-nanoarrow/blob/${finalAttrs.src.rev}/CHANGELOG.md";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ doronbehar ];
platforms = lib.platforms.all;
};
})
@@ -0,0 +1,56 @@
{
lib,
stdenv,
buildPythonPackage,
fetchPypi,
# build-system
setuptools,
# dependencies
adbc-driver-manager,
importlib-resources,
arrow-adbc,
}:
buildPythonPackage (finalAttrs: {
pname = "adbc-driver-bigquery";
version = "1.11.0";
pyproject = true;
__structuredAttrs = true;
src = fetchPypi {
pname = "adbc_driver_bigquery";
inherit (finalAttrs) version;
hash = "sha256-N/wqkN/sH3Qbx0db31DHRMItBewTXQhYk0EXkSwGB34=";
};
build-system = [
setuptools
];
dependencies = [
adbc-driver-manager
importlib-resources
];
# Tests don't work - they require an unknown pytest fixture `bigquery_auth_type`
doCheck = false;
env.ADBC_BIGQUERY_LIBRARY = "libadbc_driver_bigquery${stdenv.hostPlatform.extensions.sharedLibrary}";
preBuild = ''
cp ${lib.getLib arrow-adbc}/lib/$ADBC_BIGQUERY_LIBRARY .
chmod u+w $ADBC_BIGQUERY_LIBRARY
'';
pythonImportsCheck = [
"adbc_driver_bigquery"
];
meta = {
description = "ADBC driver for working with BigQuery";
homepage = "https://pypi.org/project/adbc-driver-bigquery";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ doronbehar ];
};
})
@@ -0,0 +1,56 @@
{
lib,
stdenv,
buildPythonPackage,
fetchPypi,
# build-system
setuptools,
# dependencies
adbc-driver-manager,
importlib-resources,
arrow-adbc,
}:
buildPythonPackage (finalAttrs: {
pname = "adbc-driver-flightsql";
version = "1.11.0";
pyproject = true;
__structuredAttrs = true;
src = fetchPypi {
pname = "adbc_driver_flightsql";
inherit (finalAttrs) version;
hash = "sha256-dfcD7vGBLDky5fRkPF4htWkLI99+CeiLcn95UqpVnyo=";
};
build-system = [
setuptools
];
dependencies = [
adbc-driver-manager
importlib-resources
];
# Tests require several unknown pytest fixtures such as `dremio` & `test_dbapi`
doCheck = false;
env.ADBC_FLIGHTSQL_LIBRARY = "libadbc_driver_flightsql${stdenv.hostPlatform.extensions.sharedLibrary}";
preBuild = ''
cp ${lib.getLib arrow-adbc}/lib/$ADBC_FLIGHTSQL_LIBRARY .
chmod u+w $ADBC_FLIGHTSQL_LIBRARY
'';
pythonImportsCheck = [
"adbc_driver_flightsql"
];
meta = {
description = "ADBC driver for working with Apache Arrow Flight SQL";
homepage = "https://pypi.org/project/adbc-driver-flightsql";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ doronbehar ];
};
})
@@ -0,0 +1,48 @@
{
lib,
buildPythonPackage,
fetchPypi,
# build-system
cython,
setuptools,
# dependencies
typing-extensions,
}:
buildPythonPackage (finalAttrs: {
pname = "adbc-driver-manager";
version = "1.11.0";
pyproject = true;
__structuredAttrs = true;
src = fetchPypi {
pname = "adbc_driver_manager";
inherit (finalAttrs) version;
hash = "sha256-xkqqvrWBAQmrPSlhAI8bAU6fLYez30QWwqCApAI3r1A=";
};
build-system = [
cython
setuptools
];
dependencies = [
typing-extensions
];
# Tests create a circular dependency on adbc-driver-sqlite
doCheck = false;
pythonImportsCheck = [
"adbc_driver_manager"
];
meta = {
description = "A generic entrypoint for ADBC drivers";
homepage = "https://pypi.org/project/adbc-driver-manager";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ doronbehar ];
};
})
@@ -0,0 +1,56 @@
{
lib,
stdenv,
buildPythonPackage,
fetchPypi,
# build-system
setuptools,
# dependencies
adbc-driver-manager,
importlib-resources,
arrow-adbc,
}:
buildPythonPackage (finalAttrs: {
pname = "adbc-driver-postgresql";
version = "1.11.0";
pyproject = true;
__structuredAttrs = true;
src = fetchPypi {
pname = "adbc_driver_postgresql";
inherit (finalAttrs) version;
hash = "sha256-9WiLhkiseobYuJNAIxuzaGrF31buldHKC4ddrV1StIo=";
};
build-system = [
setuptools
];
dependencies = [
adbc-driver-manager
importlib-resources
];
# Tests require several unknown pytest fixture `postgres_uri`
doCheck = false;
env.ADBC_POSTGRESQL_LIBRARY = "libadbc_driver_postgresql${stdenv.hostPlatform.extensions.sharedLibrary}";
preBuild = ''
cp ${lib.getLib arrow-adbc}/lib/$ADBC_POSTGRESQL_LIBRARY .
chmod u+w $ADBC_POSTGRESQL_LIBRARY
'';
pythonImportsCheck = [
"adbc_driver_postgresql"
];
meta = {
description = "libpq-based ADBC driver for working with PostgreSQL";
homepage = "https://pypi.org/project/adbc-driver-postgresql";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ doronbehar ];
};
})
@@ -0,0 +1,56 @@
{
lib,
stdenv,
buildPythonPackage,
fetchPypi,
# build-system
setuptools,
# dependencies
adbc-driver-manager,
importlib-resources,
arrow-adbc,
}:
buildPythonPackage (finalAttrs: {
pname = "adbc-driver-snowflake";
version = "1.11.0";
pyproject = true;
__structuredAttrs = true;
src = fetchPypi {
pname = "adbc_driver_snowflake";
inherit (finalAttrs) version;
hash = "sha256-f85UrnVAxsY6rWzJ7CeVoFZHzBR8ivQcor1OlUVejq4=";
};
build-system = [
setuptools
];
dependencies = [
adbc-driver-manager
importlib-resources
];
# Tests don't work - they require an unknown pytest fixture `snowflake`
doCheck = false;
env.ADBC_SNOWFLAKE_LIBRARY = "libadbc_driver_snowflake${stdenv.hostPlatform.extensions.sharedLibrary}";
preBuild = ''
cp ${lib.getLib arrow-adbc}/lib/$ADBC_SNOWFLAKE_LIBRARY .
chmod u+w $ADBC_SNOWFLAKE_LIBRARY
'';
pythonImportsCheck = [
"adbc_driver_snowflake"
];
meta = {
description = "ADBC driver for working with Snowflake";
homepage = "https://pypi.org/project/adbc-driver-snowflake";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ doronbehar ];
};
})
@@ -0,0 +1,63 @@
{
lib,
stdenv,
buildPythonPackage,
fetchPypi,
# build-system
setuptools,
# dependencies
adbc-driver-manager,
importlib-resources,
arrow-adbc,
# tests
pytestCheckHook,
pandas,
pyarrow,
}:
buildPythonPackage (finalAttrs: {
pname = "adbc-driver-sqlite";
version = "1.11.0";
pyproject = true;
__structuredAttrs = true;
src = fetchPypi {
pname = "adbc_driver_sqlite";
inherit (finalAttrs) version;
hash = "sha256-pMa0liYQ981nzXVMQt104YosEfq+7JSIxVAdc65i3GI=";
};
build-system = [
setuptools
];
dependencies = [
adbc-driver-manager
importlib-resources
];
nativeCheckInputs = [
pytestCheckHook
pandas
pyarrow
];
env.ADBC_SQLITE_LIBRARY = "libadbc_driver_sqlite${stdenv.hostPlatform.extensions.sharedLibrary}";
preBuild = ''
cp ${lib.getLib arrow-adbc}/lib/$ADBC_SQLITE_LIBRARY .
chmod u+w $ADBC_SQLITE_LIBRARY
'';
pythonImportsCheck = [
"adbc_driver_sqlite"
];
meta = {
description = "ADBC driver for working with SQLite";
homepage = "https://pypi.org/project/adbc-driver-sqlite";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ doronbehar ];
};
})
@@ -1,7 +1,7 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
nanoarrow-c,
# build-system
cython,
@@ -18,39 +18,15 @@
pytestCheckHook,
}:
let
# Nanoarrow requires a specific post-0.6.1 flatcc commit that adds `_with_size` API variants not
# present in the upstream 0.6.1 release.
flatcc-src = fetchFromGitHub {
owner = "dvidelabs";
repo = "flatcc";
rev = "fd3c4ae5cd39f0651eda6a3a1a374278070135d6";
hash = "sha256-8MqazKuwfFWVJ/yjT5fNrRzexFQ2ky4YTcZqOYjk9Qc=";
};
in
buildPythonPackage (finalAttrs: {
pname = "nanoarrow";
version = "0.8.0";
inherit (nanoarrow-c)
pname
version
src
postPatch
;
pyproject = true;
src = fetchFromGitHub {
owner = "apache";
repo = "arrow-nanoarrow";
tag = "apache-arrow-nanoarrow-${finalAttrs.version}";
hash = "sha256-1iLbT1eeyZaoB75uYTgg4qns+C7b4DErqMwJ9nQPRls=";
};
# Pre-populate the meson subproject with the flatcc source so meson doesn't try to download it.
# The wrap's patch_directory overlay (meson.build) must also be applied.
postPatch =
let
flatcc-src-dest = "subprojects/flatcc-${flatcc-src.rev}";
in
''
cp -r --no-preserve=mode ${flatcc-src} ${flatcc-src-dest}
cp subprojects/packagefiles/flatcc/meson.build ${flatcc-src-dest}/
'';
sourceRoot = "${finalAttrs.src.name}/python";
build-system = [
@@ -79,11 +55,12 @@ buildPythonPackage (finalAttrs: {
pytestCheckHook
];
meta = {
meta = nanoarrow-c.meta // {
description = "Python bindings to the nanoarrow C library";
homepage = "https://github.com/apache/arrow-nanoarrow/tree/main/python";
changelog = "https://github.com/apache/arrow-nanoarrow/blob/${finalAttrs.src.tag}/CHANGELOG.md";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ GaetanLepage ];
maintainers = with lib.maintainers; [
GaetanLepage
doronbehar
];
};
})
+16 -1
View File
@@ -83,6 +83,18 @@ self: super: with self; {
adb-shell = callPackage ../development/python-modules/adb-shell { };
adbc-driver-bigquery = callPackage ../development/python-modules/adbc-driver-bigquery { };
adbc-driver-flightsql = callPackage ../development/python-modules/adbc-driver-flightsql { };
adbc-driver-manager = callPackage ../development/python-modules/adbc-driver-manager { };
adbc-driver-postgresql = callPackage ../development/python-modules/adbc-driver-postgresql { };
adbc-driver-snowflake = callPackage ../development/python-modules/adbc-driver-snowflake { };
adbc-driver-sqlite = callPackage ../development/python-modules/adbc-driver-sqlite { };
adblock = callPackage ../development/python-modules/adblock { };
adbutils = callPackage ../development/python-modules/adbutils { };
@@ -11381,7 +11393,10 @@ self: super: with self; {
nampa = callPackage ../development/python-modules/nampa { };
nanoarrow = callPackage ../development/python-modules/nanoarrow { zstd-c = pkgs.zstd; };
nanoarrow = callPackage ../development/python-modules/nanoarrow {
zstd-c = pkgs.zstd;
nanoarrow-c = pkgs.nanoarrow;
};
nanobind = callPackage ../development/python-modules/nanobind { };