diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b4be6d..faca416 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 0.50.0 - 2026-02-24 + +### Enhancements +- Added `SkippedRecordsAfterSlowReading` to the `ErrorCode` enum for gateway errors + originating from slow client catch-up + ## 0.49.0 - 2026-02-17 ### Enhancements diff --git a/Cargo.lock b/Cargo.lock index 8046ab3..13eb909 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -246,7 +246,7 @@ dependencies = [ [[package]] name = "databento-dbn" -version = "0.49.0" +version = "0.50.0" dependencies = [ "dbn", "pyo3", @@ -258,7 +258,7 @@ dependencies = [ [[package]] name = "dbn" -version = "0.49.0" +version = "0.50.0" dependencies = [ "async-compression", "csv", @@ -281,7 +281,7 @@ dependencies = [ [[package]] name = "dbn-c" -version = "0.49.0" +version = "0.50.0" dependencies = [ "anyhow", "cbindgen", @@ -291,7 +291,7 @@ dependencies = [ [[package]] name = "dbn-cli" -version = "0.49.0" +version = "0.50.0" dependencies = [ "anyhow", "assert_cmd", @@ -307,7 +307,7 @@ dependencies = [ [[package]] name = "dbn-macros" -version = "0.49.0" +version = "0.50.0" dependencies = [ "csv", "dbn", diff --git a/Cargo.toml b/Cargo.toml index 8e34e3e..09f6b9b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,7 @@ resolver = "2" [workspace.package] authors = ["Databento "] edition = "2021" -version = "0.49.0" +version = "0.50.0" documentation = "https://databento.com/docs" repository = "https://github.com/databento/dbn" license = "Apache-2.0" diff --git a/python/pyproject.toml b/python/pyproject.toml index 5d11e94..a21b3f9 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "databento-dbn" -version = "0.49.0" +version = "0.50.0" description = "Python bindings for encoding and decoding Databento Binary Encoding (DBN)" readme = "README.md" requires-python = ">=3.10" diff --git a/python/python/databento_dbn/_lib.pyi b/python/python/databento_dbn/_lib.pyi index 70c19d3..04265ca 100644 --- a/python/python/databento_dbn/_lib.pyi +++ b/python/python/databento_dbn/_lib.pyi @@ -1145,6 +1145,8 @@ class ErrorCode(Enum): There was an issue with a subscription request (other than symbol resolution). INTERNAL_ERROR An error occurred in the gateway. + SKIPPED_RECORDS_AFTER_SLOW_READING + A slow client was detected and records were skipped by the gateway to allow catching up. UNSET No error code was specified or this record was upgraded from a version 1 struct where the code field didn't exist. @@ -1156,6 +1158,7 @@ class ErrorCode(Enum): SYMBOL_RESOLUTION_FAILED: int INVALID_SUBSCRIPTION: int INTERNAL_ERROR: int + SKIPPED_RECORDS_AFTER_SLOW_READING: int UNSET: int def __init__(self, value: int) -> None: ... diff --git a/rust/dbn-cli/Cargo.toml b/rust/dbn-cli/Cargo.toml index f8f51d2..dcbe4cc 100644 --- a/rust/dbn-cli/Cargo.toml +++ b/rust/dbn-cli/Cargo.toml @@ -16,7 +16,7 @@ name = "dbn" path = "src/main.rs" [dependencies] -dbn = { path = "../dbn", version = "=0.49.0", default-features = false } +dbn = { path = "../dbn", version = "=0.50.0", default-features = false } anyhow.workspace = true clap = { version = "4.5", features = ["derive", "wrap_help"] } diff --git a/rust/dbn/Cargo.toml b/rust/dbn/Cargo.toml index f9d1b65..fa89f14 100644 --- a/rust/dbn/Cargo.toml +++ b/rust/dbn/Cargo.toml @@ -25,7 +25,7 @@ serde = ["dep:serde", "time/parsing", "time/serde"] trivial_copy = [] [dependencies] -dbn-macros = { version = "=0.49.0", path = "../dbn-macros" } +dbn-macros = { version = "=0.50.0", path = "../dbn-macros" } async-compression = { version = "0.4.37", features = ["tokio", "zstd"], optional = true } csv = { workspace = true } diff --git a/rust/dbn/src/enums.rs b/rust/dbn/src/enums.rs index 1bc1252..6106921 100644 --- a/rust/dbn/src/enums.rs +++ b/rust/dbn/src/enums.rs @@ -1429,6 +1429,9 @@ pub enum ErrorCode { /// An error occurred in the gateway. #[pyo3(name = "INTERNAL_ERROR")] InternalError = 6, + /// A slow client was detected and records were skipped by the gateway to allow catching up. + #[pyo3(name = "SKIPPED_RECORDS_AFTER_SLOW_READING")] + SkippedRecordsAfterSlowReading = 7, /// No error code was specified or this record was upgraded from a version 1 struct where the code field didn't exist. #[default] #[pyo3(name = "UNSET")] @@ -1446,6 +1449,7 @@ impl std::str::FromStr for ErrorCode { "symbol_resolution_failed" => Ok(Self::SymbolResolutionFailed), "invalid_subscription" => Ok(Self::InvalidSubscription), "internal_error" => Ok(Self::InternalError), + "skipped_records_after_slow_reading" => Ok(Self::SkippedRecordsAfterSlowReading), "unset" => Ok(Self::Unset), _ => Err(crate::Error::conversion::(s.to_owned())), } @@ -1468,6 +1472,7 @@ impl ErrorCode { Self::SymbolResolutionFailed => "symbol_resolution_failed", Self::InvalidSubscription => "invalid_subscription", Self::InternalError => "internal_error", + Self::SkippedRecordsAfterSlowReading => "skipped_records_after_slow_reading", Self::Unset => "unset", } } diff --git a/rust/dbn/src/python/enums.rs b/rust/dbn/src/python/enums.rs index 5a881fb..101fe10 100644 --- a/rust/dbn/src/python/enums.rs +++ b/rust/dbn/src/python/enums.rs @@ -1379,6 +1379,7 @@ impl ErrorCode { Self::SymbolResolutionFailed => "SYMBOL_RESOLUTION_FAILED", Self::InvalidSubscription => "INVALID_SUBSCRIPTION", Self::InternalError => "INTERNAL_ERROR", + Self::SkippedRecordsAfterSlowReading => "SKIPPED_RECORDS_AFTER_SLOW_READING", Self::Unset => "UNSET", } }