Skip to content

chore: prepare crates for the first crates.io release - #1

Merged
nfnt merged 4 commits into
mainfrom
nfnt/prepare-crates-publish
Oct 22, 2026
Merged

nfnt merged 4 commits into
mainfrom
nfnt/prepare-crates-publish

Conversation

@nfnt

@nfnt nfnt commented Oct 22, 2026

Copy link
Copy Markdown
Owner

Summary

Gets candle-timestral and datafusion-forecast ready for their first release on crates.io.

  • Packaging: drop publish = false; add rust-version, keywords, categories and docs.rs metadata; ship LICENSE in both packages; exclude golden fixtures and scripts from candle-timestral; make README links absolute.
  • CI: also check docs, a build without default features, cargo package and the MSRV.
  • Release workflow: pushing a vX.Y.Z tag on main publishes both crates via crates.io trusted publishing and creates the GitHub Release with git-cliff notes. Both crates share one version from [workspace.package], and the workflow checks it against the tag.
  • Narrower public API: internal candle-timestral modules are now private, with their public items re-exported at the crate root. Growable types are #[non_exhaustive], and ForecastOptions, TimestralForecaster and ForecastRequest get builders.
  • Checkpoint loading: from_pretrained is renamed to TimestralForecaster::from_hub (Hub repo ids only, behind the hub feature). from_dir loads local checkpoints. loading, load_model and Config::validate are now crate-private.

Test plan

  • CI passes (tests, docs, no-default-features build, cargo package, MSRV)
  • Before tagging, set up trusted publishing for both crates on crates.io

🤖 Generated with Claude Code

nfnt and others added 4 commits October 22, 2026 14:35
Drop `publish = false`, add rust-version, keywords, categories and docs.rs
metadata, ship LICENSE in both packages, exclude the golden fixtures and
scripts from candle-timestral, and make README links absolute. CI now also
checks docs, a build without default features, `cargo package` and the MSRV.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pushing a `vX.Y.Z` tag on main publishes both crates via crates.io trusted
publishing and creates (or fills in) the GitHub Release with notes generated
by git-cliff from Conventional Commits. Both crates take one shared version
from `[workspace.package]`; the workflow checks that it and the
`candle-timestral` requirement match the tag.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Make the internal modules of candle-timestral private, keeping their public
items re-exported at the crate root, and restrict architecture helpers to the
crate. Mark public enums and structs that are likely to grow as
`#[non_exhaustive]`, with builders for `ForecastOptions`,
`TimestralForecaster` and `ForecastRequest` instead of struct literals and
public fields. `TimestralForecaster` and `TimestralModel` implement `Debug`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rename `from_pretrained` to `from_hub`, matching the `hub` feature, and only
accept Hub repo ids; `from_dir` loads a local checkpoint directory. Both
examples use `from_hub` and require the `hub` feature. This makes
`loading::resolve_checkpoint` unnecessary, so make the `loading` module,
`load_model` and `Config::validate` crate-private. `Config::from_file` stays
public to build a `TimestralModel` over weights from a custom `VarBuilder`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@nfnt
nfnt merged commit b387f1e into main Oct 22, 2026
3 checks passed
@nfnt
nfnt deleted the nfnt/prepare-crates-publish branch October 22, 2026 16:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant