[workspace.package]
version = "0.11.1"
license-file = "../LICENSE"
readme = "../README.md"
homepage = "https://opendp.org/"
repository = "https://github.com/opendp/opendp"
authors = ["The OpenDP Project <info@opendp.org>"]
edition = "2021"
rust-version = "1.64.0"
[workspace]
members = [".", "opendp_derive", "opendp_tooling"]
[workspace.dependencies]
syn = { version = "1.0", features = ["full", "parsing"] }
quote = { version = "1.0" }
proc-macro2 = { version = "1.0" }
[package]
name = "opendp"
description = "A library of differential privacy algorithms for the statistical analysis of sensitive private data."
build = "build/main.rs"
version.workspace = true
license-file.workspace = true
readme.workspace = true
homepage.workspace = true
repository.workspace = true
authors.workspace = true
edition.workspace = true
rust-version.workspace = true
exclude = ["windows/*"]
[dependencies]
opendp_derive = { path = "opendp_derive", version = "0.11.1" }
rand = "0.7.3"
num = "0.3.1"
thiserror = "1.0.24"
statrs = "0.13.0"
dashu = { version = "0.4.0", features = ["num-traits_v02"] }
openssl = { version = "0.10.64", features = ["vendored"], optional = true }
opendp_tooling = { path = "opendp_tooling", optional = true, version = "0.11.1" }
readonly = "0.2"
bitvec = "1.0"
polars = { version = "=0.41.3", features = [
"lazy",
"csv",
"dtype-struct",
"dtype-array",
"parquet",
"serde-lazy",
"streaming",
"round_series",
"rank",
"polars-ops",
"abs",
"meta",
"cutqcut"
], optional = true }
polars-plan = { version = "=0.41.3", features = [
"ffi_plugin",
], optional = true }
polars-arrow = { version = "=0.41.3", optional = true }
pyo3 = { version = "0.21.2", features = ["abi3-py39", "extension-module"], optional = true }
pyo3-polars = { version = "=0.15.0", features = ["derive"], optional = true }
serde = { version = "1.0", optional = true }
serde-pickle = { version = "1.1", optional = true }
ciborium = { version = "0.2.1", optional = true }
lazy_static = { version = "1.4.0", optional = true }
vega_lite_4 = { version = "0.6.0", optional = true }
[build-dependencies]
opendp_tooling = { path = "opendp_tooling", optional = true, version = "0.11.1" }
syn = { workspace = true, optional = true }
proc-macro2 = { workspace = true, optional = true }
cbindgen = { version = "0.20.0", optional = true }
[features]
default = ["partials", "use-openssl"]
floating-point = []
contrib = []
honest-but-curious = []
untrusted = ["floating-point", "contrib", "honest-but-curious"]
polars = [
"dep:polars",
"polars-plan",
"polars-arrow",
"pyo3",
"pyo3-polars",
"serde",
"serde-pickle",
"ciborium",
]
use-openssl = ["openssl"]
test-plot = ["vega_lite_4"]
ffi = ["lazy_static", "cbindgen"]
derive = ["opendp_tooling", "opendp_derive/full", "syn", "proc-macro2"]
bindings-python = ["bindings"]
bindings = ["ffi", "derive"]
partials = ["derive", "opendp_derive/partials"]
[lib]
crate-type = ["rlib", "cdylib", "staticlib"]
[package.metadata.docs.rs]
features = ["derive", "untrusted", "ffi"]
rustdoc-args = [
"--html-in-header", "katex.html",
"--document-private-items"
]