[package]
name = "data-modelling-core"
version = "2.0.9"
edition = "2024"
authors = ["Mark Olliver"]
license = "MIT"
description = "Core SDK library for model operations across platforms"
repository = "https://github.com/OffeneDatenmodellierung/data-modelling-sdk"
[lib]
name = "data_modelling_core"
crate-type = ["rlib"]
[dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
serde_yaml = "0.9"
anyhow = "1.0"
thiserror = "2.0"
async-trait = "0.1"
tokio = { version = "1", features = ["fs", "rt-multi-thread"], optional = true }
uuid = { version = "1.0", features = ["v4", "v5", "serde"] }
chrono = { version = "0.4", features = ["serde"] }
reqwest = { version = "0.12", features = ["json", "native-tls", "cookies", "blocking"], default-features = false, optional = true }
urlencoding = { version = "2.1", optional = true }
sqlparser = "0.60"
regex = "1"
once_cell = "1.19"
datafusion = { version = "45", default-features = false, features = [], optional = true }
petgraph = "0.6"
yaml-rust = "0.4"
quick-xml = { version = "0.36", features = ["serialize"], optional = true }
tracing = "0.1"
base64 = "0.22"
image = { version = "0.24", optional = true }
imageproc = { version = "0.23", optional = true }
git2 = { version = "0.19", optional = true }
duckdb = { version = "1.4", optional = true, features = ["bundled"] }
tokio-postgres = { version = "0.7", optional = true }
deadpool-postgres = { version = "0.14", optional = true }
toml = { version = "0.8", optional = true }
sha2 = { version = "0.10", optional = true }
glob = { version = "0.3", optional = true }
rayon = { version = "1.10", optional = true }
indicatif = { version = "0.17", optional = true }
aws-config = { version = "1.5", optional = true }
aws-sdk-s3 = { version = "1.65", optional = true }
aws-credential-types = { version = "1.2", optional = true }
iceberg = { version = "0.7", optional = true }
iceberg-catalog-rest = { version = "0.7", optional = true }
iceberg-catalog-glue = { version = "0.7", optional = true }
arrow = { version = "55", optional = true }
parquet = { version = "55", optional = true, features = ["async"] }
wasm-bindgen = { version = "0.2", optional = true }
wasm-bindgen-futures = { version = "0.4", optional = true }
web-sys = { version = "0.3", optional = true, features = ["IdbDatabase", "IdbFactory", "IdbObjectStore", "IdbRequest", "IdbTransaction", "IdbTransactionMode", "IdbOpenDbRequest", "IdbVersionChangeEvent", "Window", "Storage", "console"] }
js-sys = { version = "0.3", optional = true }
zip = { version = "2.2", optional = true, default-features = false, features = ["deflate"] }
llama-cpp-2 = { version = "0.1", optional = true }
[dependencies.jsonschema]
version = "0.38.1"
optional = true
default-features = false
[features]
default = ["api-backend"]
api-backend = ["reqwest", "urlencoding"]
native-fs = ["tokio"]
png-export = ["image", "imageproc"]
databricks-dialect = ["datafusion"]
git = ["git2"]
schema-validation = ["jsonschema"]
odps-validation = ["schema-validation"]
bpmn = ["quick-xml"]
dmn = ["quick-xml"]
openapi = []
wasm = ["wasm-bindgen", "wasm-bindgen-futures", "web-sys", "js-sys"]
database = ["toml", "sha2"]
duckdb-backend = ["database", "duckdb", "native-fs"]
postgres-backend = ["database", "tokio-postgres", "deadpool-postgres", "native-fs"]
staging = ["duckdb-backend", "glob", "sha2", "rayon", "indicatif"]
staging-postgres = ["postgres-backend", "glob", "sha2", "rayon", "indicatif"]
s3 = ["staging", "aws-config", "aws-sdk-s3", "aws-credential-types"]
databricks = ["staging", "reqwest", "urlencoding"]
iceberg = ["dep:iceberg", "iceberg-catalog-rest", "tokio", "arrow", "parquet"]
iceberg-glue = ["iceberg", "iceberg-catalog-glue"]
inference = []
llm = ["tokio", "zip"]
llm-online = ["llm", "reqwest"]
llm-offline = ["llm", "llama-cpp-2"]
mapping = ["inference"]
pipeline = ["staging", "inference", "mapping"]
[dev-dependencies]
tempfile = "3"
tokio = { version = "1", features = ["full"] }
criterion = { version = "0.5", features = ["html_reports"] }
[[bench]]
name = "inference_bench"
harness = false
required-features = ["inference"]
[[bench]]
name = "import_bench"
harness = false
[[bench]]
name = "staging_benchmark"
harness = false
required-features = ["staging"]