Upgrade the SDK
Mostly Right 3.0 removes the old daily-summary names, adds one market-data grammar across Kalshi and Polymarket, and changes satellite routing in Europe, Africa, and the Indian Ocean. Update both runtimes together and verify the returned sources and fields before deployment.
Install 3.0
Section titled “Install 3.0”pip install --upgrade mostlyrightmdpnpm add mostlyright@latestThe Python distribution is mostlyrightmd; the import remains mostlyright.
Replace the daily-summary names
Section titled “Replace the daily-summary names”| Before 3.0 | 3.0 |
|---|---|
Python weather.climate(...) | weather.daily_summaries(...) |
TypeScript climate(...) from @mostlyrightmd/weather/climate | dailySummaries(...) from @mostlyrightmd/weather/daily-summaries |
Python weather.label.cli(...) | weather.label.daily_summary(...) |
training_table(label="cli") | training_table(label="daily_summary") |
Python weather.climate_gaps(...) | weather.daily_summary_gaps(...) |
TypeScript climateGaps(...) | dailySummaryGaps(...) |
The old names have no compatibility aliases. Schema ids, source values such as
cli.archive, and daily_summary_* row fields do not change.
Move market-data calls
Section titled “Move market-data calls”Python now exposes series, events, markets, market, candles, trades,
and orderbook directly under mostlyright.markets.kalshi and
mostlyright.markets.polymarket. Polymarket has no series tier and raises
VenueCapabilityError for that verb.
TypeScript uses the same verbs in camel case from
@mostlyrightmd/markets/market-data:
import { kalshiCandles, polymarketTrades,} from "@mostlyrightmd/markets/market-data";Replace old economy_trades.candles() and /trades examples with the venue
verbs. Deep Kalshi windows now switch to the historical tier after a live-tier
404 instead of returning a placeholder empty frame.
Review satellite routing
Section titled “Review satellite routing”weather.satellite() now accepts either a station or lat and lon. Station
resolution uses the full 6,419-station catalog.
Europe, Africa, and the Indian Ocean now route to Meteosat. Without EUMETSAT
credentials, the call raises MeteosatCredentialsRequiredError. Pass
satellite="viirs-n20" explicitly if you need the former VIIRS behavior. Do
not let the selected source depend silently on whether a credential happens to
be present.
Verify a 3.0 upgrade
Section titled “Verify a 3.0 upgrade”- Replace the removed daily-summary imports and functions.
- Update market-data imports and check price units. Canonical prices now use probabilities from 0 to 1.
- Confirm satellite requests return the intended
sourcein every deployment region. - Re-run representative historical windows and compare row counts, fields, nulls, and sources.
- Deploy Python and TypeScript 3.0 together when your application shares their row schemas.
Upgrading from 1.x to 2.0
Section titled “Upgrading from 1.x to 2.0”Version 2.0 was also a hard naming break. Apply this map before the 3.0 changes above.
Replace removed calls
Section titled “Replace removed calls”| 1.x | 2.0 |
|---|---|
weather.obs(...) | weather.observations(...) |
weather.pairs(...) | weather.training_table(...) |
research(...), dataset(...) | the relevant domain’s training_table(...) |
econ | economy |
economy.history(...) | economy.series(...) |
root align / spine | mostlyright.experimental.align / mostlyright.experimental.spine |
TypeScript dataset(...), research(...), pairs(...) | trainingTable(...) |
Python
Section titled “Python”from datetime import datefrom mostlyright import weather
df = weather.training_table( "KNYC", date(2025, 1, 6), date(2025, 1, 9),)Per-report weather history now uses weather.observations(). Economic data lives
under from mostlyright import economy.
TypeScript
Section titled “TypeScript”import { trainingTable } from "mostlyright";
const { rows } = await trainingTable( "KNYC", "2025-01-06", "2025-01-09",);Use the domain namespaces for lower-level reads, including
weather.observations() and weather.latest().
Update column names
Section titled “Update column names”Version 2.0 renames the main training-table prefixes:
| 1.x | 2.0 |
|---|---|
date | local_standard_date |
cli_* | daily_summary_* |
obs_* | observed_* |
Python and TypeScript use the same snake_case vocabulary. Verify the exact fields returned by the package version you deploy before freezing a model contract.
Rebuild feature engineering
Section titled “Rebuild feature engineering”The SDK no longer ships transforms, preprocessing, or the old feature flags.
Apply lags, rolling windows, clipping, and other feature engineering after the
training table is returned, using pandas, Polars, or your own TypeScript code.
Verify the 2.0 migration
Section titled “Verify the 2.0 migration”- Pin both SDK versions in your lockfiles.
- Re-run representative historical windows.
- Compare row counts, dates, labels, and null handling.
- Confirm live calls raise or return exactly as your application expects.
- Retrain any model whose input columns changed.