2025-07-24 13:55:40 +02:00

137 lines
2.5 KiB
Nix

{
lib,
buildPythonPackage,
fetchFromGitHub,
# build-system
setuptools,
# dependencies
agate,
click,
daff,
dbt-adapters,
dbt-common,
dbt-extractor,
dbt-semantic-interfaces,
jinja2,
logbook,
mashumaro,
networkx,
packaging,
pathspec,
protobuf,
pydantic,
pydantic-settings,
pytz,
pyyaml,
requests,
snowplow-tracker,
sqlparse,
typing-extensions,
# passthru
callPackage,
}:
buildPythonPackage rec {
pname = "dbt-core";
version = "1.10.0b2";
pyproject = true;
src = fetchFromGitHub {
owner = "dbt-labs";
repo = "dbt-core";
tag = "v${version}";
hash = "sha256-MTrdpbPqdakFDmLKRFJ23u9hLgGhZ5T+r4om9HPBjkw=";
};
postPatch = ''
substituteInPlace dbt/utils/artifact_upload.py \
--replace-fail \
"from pydantic import BaseSettings" \
"from pydantic_settings import BaseSettings"
'';
sourceRoot = "${src.name}/core";
pythonRelaxDeps = [
"agate"
"click"
"dbt-common"
"dbt-semantic-interfaces"
"logbook"
"mashumaro"
"networkx"
"pathspec"
"protobuf"
"pydantic"
"urllib3"
];
build-system = [
setuptools
];
dependencies = [
agate
click
daff
dbt-adapters
dbt-common
dbt-extractor
dbt-semantic-interfaces
jinja2
logbook
mashumaro
networkx
packaging
pathspec
protobuf
pydantic
pydantic-settings
pytz
pyyaml
requests
snowplow-tracker
sqlparse
typing-extensions
]
++ mashumaro.optional-dependencies.msgpack;
# tests exist for the dbt tool but not for this package specifically
doCheck = false;
passthru = {
withAdapters = callPackage ./with-adapters.nix { };
};
meta = {
description = "Enables data analysts and engineers to transform their data using the same practices that software engineers use to build applications";
longDescription = ''
The dbt tool needs adapters to data sources in order to work. The available
adapters are:
dbt-bigquery
dbt-postgres
dbt-redshift
dbt-snowflake
An example of building this package with a few adapters:
dbt.withAdapters (adapters: [
adapters.dbt-bigquery
adapters.dbt-postgres
])
'';
homepage = "https://github.com/dbt-labs/dbt-core";
changelog = "https://github.com/dbt-labs/dbt-core/blob/${src.tag}/CHANGELOG.md";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [
mausch
tjni
];
mainProgram = "dbt";
};
}