[package]
name = "api_gemini"
version = "0.5.0"
edition = "2021"
authors = [
"Kostiantyn Wandalen <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"
missing_inline_in_public_items = "allow"
must_use_candidate = "allow"
return_self_not_must_use = "allow"
double_must_use = "allow"
missing_errors_doc = "allow"
uninlined_format_args = "allow"
new_without_default = "allow"
unused_self = "allow"
needless_borrows_for_generic_args = "allow"
manual_map = "allow"
unnecessary_map_or = "allow"
manual_range_contains = "allow"
await_holding_lock = "allow"
derivable_impls = "allow"
redundant_closure = "allow"
type_complexity = "allow"
clone_on_copy = "allow"
drain_collect = "allow"
extend_with_drain = "allow"
let_unit_value = "allow"
unused_unit = "allow"
collapsible_if = "allow"
manual_clamp = "allow"
too_many_arguments = "allow"
assertions_on_constants = "allow"
nonminimal_bool = "allow"
useless_vec = "allow"
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 = []
integration = []
diagnostics_curl = []
logging = []
streaming = []
websocket_streaming = []
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 }
error_tools = { workspace = true }
workspace_tools = { workspace = true, features = [ "secrets" ] }
former = { workspace = true }
rand = { workspace = true }
uuid = { workspace = true, features = ["v4"] }
regex = { workspace = true }
serde = { workspace = true, features = ["derive"] }
serde_with = { workspace = true }
serde_json = { workspace = true }
serde_yaml = { workspace = true }
base64 = { workspace = true }
secrecy = { workspace = true, features = ["serde"] }
urlencoding = { workspace = true }
futures-core = { workspace = true }
futures-util = { workspace = true }
futures = { workspace = true }
async-stream = { workspace = true }
backoff = { workspace = true, features = [ "tokio" ] }
tokio = { workspace = true, features = [ "macros", "sync", "time", "rt-multi-thread" ] }
tokio-stream = { workspace = true }
bytes = { workspace = true }
reqwest = { workspace = true, features = [
"json",
"stream",
"multipart",
"rustls-tls",
], default-features = false }
tracing = { workspace = true }
tracing-subscriber = { workspace = true, features = [ "env-filter", "fmt" ] }
tokio-tungstenite = { workspace = true, features = [ "native-tls" ] }
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 = "0.5"
[[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