Skip to content

Commit 44a0ffe

Browse files
authored
VER: Release 0.36.0
2 parents d680daf + 268db3b commit 44a0ffe

File tree

12 files changed

+221
-181
lines changed

12 files changed

+221
-181
lines changed

CHANGELOG.md

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,31 @@
11
# Changelog
22

3+
## 0.36.0 - 2025-11-19
4+
5+
### Enhancements
6+
- Added support for using built-in range syntax for specifying date and datetime ranges
7+
in the historical API, e.g. `date!(2020-01-01)..=date!(2020-12-31)`
8+
- Changed `metadata().get_dataset_range()`, `metadata().list_schemas()`, and
9+
`metadata().list_unit_prices()` to accept any `impl AsRef<str>` as the dataset
10+
parameter
11+
- Upgraded DBN version to 0.44.0:
12+
- Added logic to set `code` when upgrading version 1 `SystemMsg` to newer versions
13+
- Added `Dataset::publishers()` method to retrieve all `Publisher` values for a
14+
dataset
15+
16+
### Breaking changes
17+
- Updated the minimum supported `tokio` version to 1.41, which was released one year ago
18+
- Made reference enums `Country`, `Currency`, and `EventSubType` non-exhaustive
19+
- Removed variants from `Country` and `Currency` that were not present in any data
20+
- Added more variants to `EventSubType`
21+
322
## 0.35.0 - 2025-10-22
423

524
### Enhancements
625
- Initial release with Reference API support
726
- Upgraded DBN version to 0.43.0:
827
- Added explicit `Unset` variant for `SystemCode` and `ErrorCode`
928
- Added `Default` implementation for `SystemCode` and `ErrorCode`
10-
1129
## 0.34.1 - 2025-09-30
1230

1331
### Enhancements

Cargo.toml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
name = "databento"
33
authors = ["Databento <[email protected]>"]
4-
version = "0.35.0"
4+
version = "0.36.0"
55
edition = "2021"
66
repository = "https://github.com/databento/databento-rs"
77
description = "Official Databento client library"
@@ -32,7 +32,7 @@ historical = [
3232
live = ["tokio/net"]
3333

3434
[dependencies]
35-
dbn = { version = "0.43.0", features = ["async", "serde"] }
35+
dbn = { version = "0.44.0", features = ["async", "serde"] }
3636

3737
async-compression = { version = "0.4", features = ["tokio", "zstd"], optional = true }
3838
# Async stream trait
@@ -46,19 +46,19 @@ serde_json = { version = "1.0", optional = true }
4646
sha2 = "0.10"
4747
thiserror = "2.0"
4848
time = { version = ">=0.3.35", features = ["macros", "parsing", "serde-human-readable"] }
49-
tokio = { version = ">=1.38", features = ["io-util", "macros"] }
49+
tokio = { version = ">=1.41", features = ["io-util", "macros"] }
5050
# Stream utils
5151
tokio-util = { version = "0.7", features = ["io"], optional = true }
5252
tracing = "0.1"
53-
typed-builder = "0.22"
53+
typed-builder = "0.23"
5454
zstd = { version = "0.13", optional = true }
5555

5656
[dev-dependencies]
5757
anyhow = "1.0.100"
5858
async-compression = { version = "0.4", features = ["tokio", "zstd"] }
59-
clap = { version = "4.5.48", features = ["derive"] }
59+
clap = { version = "4.5.51", features = ["derive"] }
6060
rstest = "0.26.1"
6161
tempfile = "3.23.0"
62-
tokio = { version = "1.47", features = ["full"] }
62+
tokio = { version = "1.48", features = ["full"] }
6363
tracing-subscriber = "0.3.20"
6464
wiremock = "0.6"

README.md

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,7 @@ async fn main() -> Result<(), Box<dyn Error>> {
5757
.get_range(
5858
&GetRangeParams::builder()
5959
.dataset(Dataset::GlbxMdp3)
60-
.date_time_range((
61-
datetime!(2022-06-10 14:30 UTC),
62-
datetime!(2022-06-10 14:40 UTC),
63-
))
60+
.date_time_range(datetime!(2022-06-10 14:30 UTC)..datetime!(2022-06-10 14:40 UTC))
6461
.symbols("ES.FUT")
6562
.stype_in(SType::Parent)
6663
.schema(Schema::Trades)

examples/historical.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,7 @@ async fn main() -> Result<(), Box<dyn Error>> {
1919
.get_range(
2020
&GetRangeParams::builder()
2121
.dataset(Dataset::GlbxMdp3)
22-
.date_time_range((
23-
datetime!(2022-06-10 14:30 UTC),
24-
datetime!(2022-06-10 14:40 UTC),
25-
))
22+
.date_time_range(datetime!(2022-06-10 14:30 UTC)..datetime!(2022-06-10 14:40 UTC))
2623
.symbols("ES.FUT")
2724
.stype_in(SType::Parent)
2825
.schema(Schema::Trades)

examples/split_symbols.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ async fn fetch_symbols_to_parent(metadata: &Metadata) -> anyhow::Result<HashMap<
8282
&GetRangeParams::builder()
8383
.dataset(metadata.dataset.clone())
8484
.schema(Schema::Definition)
85-
.date_time_range((metadata.start(), end))
85+
.date_time_range(metadata.start()..end)
8686
.symbols(Vec::from(chunk))
8787
.build(),
8888
)

src/historical.rs

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@ pub mod metadata;
66
pub mod symbology;
77
pub mod timeseries;
88

9-
use std::num::NonZeroU64;
9+
use std::{
10+
num::NonZeroU64,
11+
ops::{Range, RangeInclusive},
12+
};
1013

1114
pub use client::*;
1215
use serde::Deserialize;
@@ -57,6 +60,24 @@ pub struct DateTimeRange {
5760
pub end: time::OffsetDateTime,
5861
}
5962

63+
impl From<Range<time::Date>> for DateRange {
64+
fn from(range: Range<time::Date>) -> Self {
65+
Self {
66+
start: range.start,
67+
end: range.end,
68+
}
69+
}
70+
}
71+
72+
impl From<RangeInclusive<time::Date>> for DateRange {
73+
fn from(range: RangeInclusive<time::Date>) -> Self {
74+
Self {
75+
start: *range.start(),
76+
end: range.end().next_day().unwrap(),
77+
}
78+
}
79+
}
80+
6081
impl From<(time::Date, time::Date)> for DateRange {
6182
fn from(value: (time::Date, time::Date)) -> Self {
6283
Self {
@@ -75,6 +96,36 @@ impl From<(time::Date, time::Duration)> for DateRange {
7596
}
7697
}
7798

99+
impl From<Range<time::Date>> for DateTimeRange {
100+
fn from(range: Range<time::Date>) -> Self {
101+
Self::from(DateRange::from(range))
102+
}
103+
}
104+
105+
impl From<RangeInclusive<time::Date>> for DateTimeRange {
106+
fn from(range: RangeInclusive<time::Date>) -> Self {
107+
Self::from(DateRange::from(range))
108+
}
109+
}
110+
111+
impl From<Range<time::OffsetDateTime>> for DateTimeRange {
112+
fn from(range: Range<time::OffsetDateTime>) -> Self {
113+
Self {
114+
start: range.start,
115+
end: range.end,
116+
}
117+
}
118+
}
119+
120+
impl From<RangeInclusive<time::OffsetDateTime>> for DateTimeRange {
121+
fn from(range: RangeInclusive<time::OffsetDateTime>) -> Self {
122+
Self {
123+
start: *range.start(),
124+
end: *range.end() + time::Duration::NANOSECOND,
125+
}
126+
}
127+
}
128+
78129
impl From<(time::Date, time::Duration)> for DateTimeRange {
79130
fn from(value: (time::Date, time::Duration)) -> Self {
80131
Self::from(DateRange::from(value))
@@ -266,6 +317,14 @@ mod tests {
266317
DateRange::from(date),
267318
DateRange::from((date!(2025 - 03 - 27), date!(2025 - 03 - 28)))
268319
);
320+
assert_eq!(
321+
DateRange::from(date),
322+
DateRange::from(date!(2025 - 03 - 27)..date!(2025 - 03 - 28))
323+
);
324+
assert_eq!(
325+
DateRange::from(date),
326+
DateRange::from(date!(2025 - 03 - 27)..=date!(2025 - 03 - 27))
327+
);
269328
assert_eq!(
270329
DateTimeRange::from(date),
271330
DateTimeRange::from((

src/historical/batch.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -751,7 +751,7 @@ mod tests {
751751
.dataset(dbn::Dataset::XnasItch)
752752
.schema(SCHEMA)
753753
.symbols("TSLA")
754-
.date_time_range((START, END))
754+
.date_time_range(START..END)
755755
.build(),
756756
)
757757
.await?;

src/historical/metadata.rs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,10 @@ impl MetadataClient<'_> {
5353
/// # Errors
5454
/// This function returns an error when it fails to communicate with the Databento API
5555
/// or the API indicates there's an issue with the request.
56-
pub async fn list_schemas(&mut self, dataset: &str) -> crate::Result<Vec<Schema>> {
56+
pub async fn list_schemas(&mut self, dataset: impl AsRef<str>) -> crate::Result<Vec<Schema>> {
5757
let resp = self
5858
.get("list_schemas")?
59-
.query(&[("dataset", dataset)])
59+
.query(&[("dataset", dataset.as_ref())])
6060
.send()
6161
.await?;
6262
handle_response(resp).await
@@ -86,11 +86,11 @@ impl MetadataClient<'_> {
8686
/// or the API indicates there's an issue with the request.
8787
pub async fn list_unit_prices(
8888
&mut self,
89-
dataset: &str,
89+
dataset: impl AsRef<str>,
9090
) -> crate::Result<Vec<UnitPricesForMode>> {
9191
let builder = self
9292
.get("list_unit_prices")?
93-
.query(&[("dataset", &dataset)]);
93+
.query(&[("dataset", &dataset.as_ref())]);
9494
let resp = builder.send().await?;
9595
handle_response(resp).await
9696
}
@@ -123,10 +123,13 @@ impl MetadataClient<'_> {
123123
/// # Errors
124124
/// This function returns an error when it fails to communicate with the Databento API
125125
/// or the API indicates there's an issue with the request.
126-
pub async fn get_dataset_range(&mut self, dataset: &str) -> crate::Result<DatasetRange> {
126+
pub async fn get_dataset_range(
127+
&mut self,
128+
dataset: impl AsRef<str>,
129+
) -> crate::Result<DatasetRange> {
127130
let resp = self
128131
.get("get_dataset_range")?
129-
.query(&[("dataset", dataset)])
132+
.query(&[("dataset", dataset.as_ref())])
130133
.send()
131134
.await?;
132135
handle_response(resp).await

src/historical/symbology.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ mod tests {
250250
.dataset(dbn::Dataset::GlbxMdp3)
251251
.symbols(vec!["ES.c.0", "ES.d.0"])
252252
.stype_in(SType::Continuous)
253-
.date_range((date!(2023 - 06 - 14), date!(2023 - 06 - 17)))
253+
.date_range(date!(2023 - 06 - 14)..date!(2023 - 06 - 17))
254254
.build(),
255255
)
256256
.await

src/historical/timeseries.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ mod tests {
341341
.dataset(dbn::Dataset::XnasItch)
342342
.schema(SCHEMA)
343343
.symbols(vec!["SPOT", "AAPL"])
344-
.date_time_range((START, END))
344+
.date_time_range(START..END)
345345
.build(),
346346
)
347347
.await
@@ -399,7 +399,7 @@ mod tests {
399399
.schema(SCHEMA)
400400
.symbols(vec!["BRN.FUT"])
401401
.stype_in(SType::Parent)
402-
.date_time_range((START, END))
402+
.date_time_range(START..END)
403403
.path(path.clone())
404404
.build(),
405405
)

0 commit comments

Comments
 (0)