quantrs2-device 0.2.1

Quantum device connectors for the QuantRS2 framework
Documentation
[package]
name = "quantrs2-device"
version.workspace = true
authors.workspace = true
edition.workspace = true
rust-version.workspace = true
repository.workspace = true
license.workspace = true
keywords = ["quantum", "computing", "device", "hardware", "connectivity"]
categories = ["science", "simulation", "hardware-support"]
description = "Quantum device connectors for the QuantRS2 framework"
readme = "README.md"

[dependencies]
scirs2-fft = { workspace = true }
quantrs2-core.workspace = true
quantrs2-circuit.workspace = true
# num-complex.workspace = true  # REMOVED: Use scirs2_core::complex (SciRS2 POLICY)
thiserror.workspace = true
petgraph.workspace = true
fastrand.workspace = true
# rand.workspace = true  # REMOVED: Use scirs2_core::random (SciRS2 POLICY)
# rand_distr.workspace = true  # REMOVED: Use scirs2_core::random (SciRS2 POLICY)
oxicode.workspace = true
serde.workspace = true
serde_json.workspace = true
# ndarray.workspace = true  # REMOVED: Use scirs2_core::ndarray (SciRS2 POLICY)
# rayon.workspace = true  # REMOVED: Use scirs2_core::parallel_ops (SciRS2 POLICY)
num_cpus.workspace = true

# SciRS2 dependencies (SCIRS2 POLICY)
scirs2-core.workspace = true
scirs2-autograd.workspace = true
scirs2-stats.workspace = true
scirs2-metrics.workspace = true
scirs2-graph = { workspace = true, optional = true }
scirs2-linalg = { workspace = true, optional = true }
scirs2-optimize = { workspace = true, optional = true }

# For device connectivity
reqwest = { workspace = true, features = ["json"], optional = true }
tokio = { workspace = true, features = ["rt", "rt-multi-thread", "macros", "sync", "time"], optional = true }
futures = { workspace = true, optional = true }
broadcast = "0.1"
chrono = { workspace = true, optional = true }
async-trait = { workspace = true, optional = true }
uuid = { workspace = true, optional = true }
url = { version = "2.5.8", features = ["serde"] }

# For AWS authentication
hmac = { workspace = true, optional = true }
sha2 = { workspace = true, optional = true }
hex = { workspace = true, optional = true }
bytemuck = { workspace = true, features = ["derive"], optional = true }

# For quantum security features
aes-gcm = { version = "0.11.0", optional = true }
x25519-dalek = { version = "2.0.1", optional = true }

[dev-dependencies]
tokio-test = "0.4"
criterion.workspace = true

[features]
default = ["scheduling", "scirs2", "security"]
# Private, internal-only switch: selects the async (`async-trait`) variants of
# the `QuantumDevice`/`CircuitExecutor` traits (and every impl of them) instead
# of the sync fallback variants. Every cloud/hardware backend feature that
# implements these traits asynchronously must enable it, so that each backend
# feature compiles standalone (e.g. `--features photonic` alone) instead of
# only working when combined with `ibm`. Not meant to be enabled directly by
# downstream users.
_async_device = []
ibm = ["dep:reqwest", "dep:tokio", "dep:chrono", "dep:async-trait", "_async_device"]
azure = ["dep:reqwest", "dep:tokio", "dep:chrono", "dep:async-trait", "_async_device"]
aws = [
    "dep:reqwest",
    "dep:tokio",
    "dep:chrono",
    "dep:async-trait",
    "dep:hmac",
    "dep:sha2",
    "dep:hex",
    "dep:bytemuck",
    "_async_device"
]
neutral_atom = ["dep:reqwest", "dep:tokio", "dep:chrono", "dep:async-trait", "dep:uuid", "dep:futures", "_async_device"]
photonic = ["dep:reqwest", "dep:tokio", "dep:chrono", "dep:async-trait", "_async_device"]
scheduling = ["dep:tokio", "dep:async-trait", "dep:uuid", "dep:futures"]
scirs2 = ["dep:scirs2-graph", "dep:scirs2-linalg", "dep:scirs2-optimize"]
security = ["dep:aes-gcm", "dep:x25519-dalek", "dep:sha2", "dep:chrono"]
# All network-dependent features
cloud-backends = ["ibm", "azure", "aws", "neutral_atom", "photonic"]

[package.metadata.docs.rs]
all-features = false
features = ["scheduling", "scirs2", "security", "neutral_atom"]
rustdoc-args = ["--cfg", "docsrs"]

[lints]
workspace = true