[package]
name = "api_gemini"
version = "0.7.1"
edition = "2021"
rust-version.workspace = true
authors = [
"Kostiantyn Mysnyk <wandalen@obox.systems>",
]
license = "MIT"
readme = "readme.md"
documentation = "https://docs.rs/api_gemini"
repository = "https://github.com/Wandalen/api_llm/tree/master/api/gemini"
homepage = "https://github.com/Wandalen/api_llm/tree/master/api/gemini"
description = """
Gemini's API for accessing large language models (LLMs).
"""
categories = [ "algorithms", "development-tools" ]
keywords = [ "fundamental", "general-purpose" ]
[lints.rust]
rust_2018_idioms = { level = "warn", priority = -1 }
future_incompatible = { level = "warn", priority = -1 }
missing_docs = "warn"
missing_debug_implementations = "warn"
unsafe-code = "deny"
[lints.clippy]
undocumented_unsafe_blocks = "deny"
std_instead_of_core = "allow"
doc_include_without_cfg = "warn"
single_call_fn = "allow"
inline_always = "allow"
module_name_repetitions = "allow"
absolute_paths = "allow"
wildcard_imports = "allow"
std_instead_of_alloc = "allow"
items_after_statements = "allow"
cast_precision_loss = "allow"
pub_use = "allow"
question_mark_used = "allow"
implicit_return = "allow"
arbitrary_source_item_ordering = "allow"
[package.metadata.docs.rs]
features = [ "full" ]
all-features = false
[features]
default = [ "full" ]
full = [ "enabled", "integration", "diagnostics_curl", "logging", "streaming", "websocket_streaming", "streaming_control", "chat", "retry", "circuit_breaker", "rate_limiting", "failover", "health_checks", "builder_patterns", "caching", "dynamic_configuration", "batch_operations", "compression", "enterprise_quota", "model_comparison", "request_templates", "buffered_streaming" ]
enabled = [
"dep:mod_interface",
"dep:error_tools",
"dep:workspace_tools",
"dep:former",
"dep:rand",
"dep:uuid",
"dep:regex",
"dep:serde",
"dep:serde_with",
"dep:serde_json",
"dep:base64",
"dep:secrecy",
"dep:urlencoding",
"dep:futures-core",
"dep:futures-util",
"dep:futures",
"dep:async-stream",
"dep:backoff",
"dep:tokio",
"dep:tokio-stream",
"dep:bytes",
"dep:reqwest",
"dep:tracing",
]
integration = []
diagnostics_curl = []
logging = [ "dep:tracing-subscriber" ]
streaming = []
websocket_streaming = [ "dep:tokio-tungstenite" ]
streaming_control = []
chat = []
retry = []
circuit_breaker = []
rate_limiting = []
failover = []
health_checks = []
builder_patterns = []
caching = []
stress = []
performance = []
dynamic_configuration = [ "notify", "async-trait" ]
batch_operations = []
compression = [ "flate2", "brotli", "async-compression" ]
model_comparison = []
request_templates = []
buffered_streaming = []
enterprise_quota = [ "parking_lot", "chrono" ]
[dependencies]
mod_interface = { workspace = true, optional = true }
error_tools = { workspace = true, optional = true }
workspace_tools = { workspace = true, features = [ "secrets" ], optional = true }
former = { workspace = true, optional = true }
rand = { workspace = true, optional = true }
uuid = { workspace = true, features = ["v4"], optional = true }
regex = { workspace = true, optional = true }
serde = { workspace = true, features = ["derive"], optional = true }
serde_with = { workspace = true, optional = true }
serde_json = { workspace = true, optional = true }
base64 = { workspace = true, optional = true }
secrecy = { workspace = true, features = ["serde"], optional = true }
urlencoding = { workspace = true, optional = true }
futures-core = { workspace = true, optional = true }
futures-util = { workspace = true, optional = true }
futures = { workspace = true, optional = true }
async-stream = { workspace = true, optional = true }
backoff = { workspace = true, features = [ "tokio" ], optional = true }
tokio = { workspace = true, features = [ "macros", "sync", "time", "rt-multi-thread" ], optional = true }
tokio-stream = { workspace = true, optional = true }
bytes = { workspace = true, optional = true }
reqwest = { workspace = true, features = [
"json",
"query",
"stream",
"multipart",
"rustls",
], default-features = false, optional = true }
tracing = { workspace = true, optional = true }
tracing-subscriber = { workspace = true, features = [ "env-filter", "fmt" ], optional = true }
tokio-tungstenite = { workspace = true, features = [ "rustls-tls-webpki-roots" ], optional = true }
notify = { workspace = true, optional = true, features = [ "macos_fsevent" ] }
async-trait = { workspace = true, optional = true }
flate2 = { workspace = true, optional = true }
brotli = { workspace = true, optional = true }
async-compression = { workspace = true, optional = true, features = [ "tokio", "gzip", "deflate", "brotli" ] }
parking_lot = { workspace = true, optional = true }
chrono = { workspace = true, optional = true }
[dev-dependencies]
criterion = { workspace = true }
reqwest = { workspace = true, default-features = false }
tokio-stream = { workspace = true }
[[bench]]
name = "client_overhead"
harness = false
[[bench]]
name = "retry_logic_overhead"
harness = false
[[bench]]
name = "circuit_breaker_overhead"
harness = false
[[bench]]
name = "rate_limiting_overhead"
harness = false
[[bench]]
name = "streaming_overhead"
harness = false