yoghurt 0.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,31 @@
1
+ # Byte-compiled / optimized files
2
+ __pycache__/
3
+
4
+ # Test and coverage output
5
+ .pytest_cache/
6
+ .coverage
7
+ coverage.xml
8
+ junit*.xml
9
+ htmlcov/
10
+
11
+ # Virtual environments and uv cache
12
+ .venv/
13
+ .uv-cache/
14
+
15
+ # Tool caches
16
+ .ruff_cache/
17
+ .tox/
18
+ .mypy_cache/
19
+ node_modules/
20
+
21
+ # Editors
22
+ .vscode/
23
+
24
+ # Local session/cache material
25
+ yahoo-session.json
26
+ .playwright-cli
27
+ .playwright-mcp
28
+ docs/MISSING_ENDPOINTS.md
29
+ docs/plans/
30
+ .worktrees/
31
+ output/
@@ -0,0 +1,75 @@
1
+ # AGENTS.md
2
+
3
+ ## Project
4
+ Yoghurt exposes Yahoo Finance HTTP endpoints as an LLM-friendly CLI that prints the raw JSON Yahoo returns.
5
+
6
+ ## Stack
7
+ Python 3.10+, uv, httpx, argparse, pytest, pytest-httpx, ruff, pyright, tox, hatchling.
8
+
9
+ ## Commands
10
+ - Install/sync: `uv sync --all-groups`
11
+ - Run CLI: `uv run yoghurt --help`
12
+ - Test single: `uv run pytest path/to/test_file.py`
13
+ - Test all: `uv run pytest`
14
+ - Lint: `uv run ruff check .`
15
+ - Format: `uv run ruff format .`
16
+ - Type check: `uv run pyright`
17
+ - Spell check: `npm run spell` or `make spell`
18
+ - Spell changed files: `npm run spell:changed` or `make spell-changed`
19
+ - Full check: `uv run tox`
20
+
21
+ ## Architecture
22
+ - `src/yoghurt/client.py` -> Yahoo HTTP session, cookies, crumbs, retries, raw response retrieval.
23
+ - `src/yoghurt/session_cache.py` -> persisted Yahoo cookie/crumb cache for one-shot CLI reuse.
24
+ - `src/yoghurt/commands.py` -> command metadata used to build CLI commands, validation, and help.
25
+ - `src/yoghurt/params.py` -> CLI parameter coercion and validation helpers.
26
+ - `src/yoghurt/cli.py` -> argparse command tree and stdout/stderr behavior.
27
+ - `tests/` -> pytest tests mirroring `src/yoghurt/`.
28
+
29
+ ## Rules
30
+ - IMPORTANT: `--help` is the primary product surface; keep it complete, adaptive, and generated from command metadata where practical.
31
+ - Do not add `describe`, `endpoints`, `params`, or other discovery commands; discovery belongs under `yoghurt --help` and `yoghurt <endpoint> --help`.
32
+ - Print Yahoo response bodies to stdout exactly as returned; do not model, reshape, pretty-print, or interpret endpoint JSON.
33
+ - Keep Yahoo endpoint knowledge in metadata and validation only; do not create response classes.
34
+ - Use `uv run python` for Python scripts; never use bare `python` or `python3`.
35
+ - Never log or print Yahoo cookies, crumbs, or full session-cache contents.
36
+ - Keep runtime dependencies narrow; do not add TUI, ORM, web framework, or rich formatting libraries.
37
+
38
+ ## Help text
39
+ When adding or editing a CLI command:
40
+ 1. **Summary**: active verb, ≤68 chars (over wraps two-line in top-level help). `Fetch` (data), `List` (catalog), `Run` (saved query), `Query` (DSL), `Show` (symbol-free), `Discover` (curated). Pair sibling commands with the same verb.
41
+ 2. **Description**: describe response content, not yoghurt mechanics. Forbidden phrasings: `Calls Yahoo`, `writes to stdout`, `response-model mapping`. The root parser already covers output behavior. Do not paraphrase the summary.
42
+ 3. **Notes**: real clarifications only — Yahoo quirks (typos, 500s, paywalled empties), switch-behavior surprises, instrument-type dependencies. Drop live-probe diary entries and redundant restatements.
43
+ 4. **Order in `COMMANDS` tuple by importance**: daily-driver → discovery → symbol-bound analysis → market-wide state → schema introspection → `raw`. The DSL parsers (`visualization`, `screener`) slot inside the loop after `screener-predefined` in `cli.py`. Never append to the end.
44
+ 5. **Param boilerplate is shared** (`--lang`, `--region`, `--formatted` use exact strings — copy them). Run `pytest -k help` before and after. Pinned-string assertions guard things like `INSIDER_TRANSACTION`, `snake_case`, `Module availability depends on instrument type`. Negative guards (`Calls Yahoo`, `Output:`) forbid implementation leak — do not reintroduce.
45
+
46
+ ## Workflow
47
+ - Make minimal changes and avoid unrelated refactors.
48
+ - When adding a command or parameter, update validation, adaptive help, and tests in the same change.
49
+ - Prefer focused unit tests with mocked HTTP; mark live Yahoo tests as integration.
50
+ - Before considering code changes done, run `uv run tox`. It is the expected bundled verification for formatting, lint, type check, tests, and spelling.
51
+ - For command or parameter changes, also run the app against Yahoo after `tox`:
52
+ - `uv run yoghurt <command> --help`
53
+ - `uv run yoghurt <command> <minimal required parameters>`
54
+ - `uv run yoghurt <command> <parameters with each supported date/time format when dates are involved>`
55
+ - `uv run yoghurt <command> <parameters with meaningful modules, types, field lists, booleans, or other values that could affect Yahoo's raw output>`
56
+ - When a command has open-ended value lists such as `modules`, `types`, or `fields`, test representative variations and an all-known-values request when practical.
57
+ - When a parameter has a default, test both omission and explicit override if the default affects the request sent to Yahoo.
58
+ - Ask before making architectural changes that affect the CLI grammar or session-cache behavior.
59
+
60
+ ## Yahoo API state probes
61
+ - When checking the current quote-page API surface with browser tooling or live Yahoo calls, use a mixed symbol set so endpoint behavior is not inferred from US mega-cap equities only.
62
+ - Baseline probe symbols:
63
+ - US stocks, high profile and smaller: `AAPL`, `MSFT`, `OKLO`
64
+ - ETFs: `SPY`, `QQQ`, `VT`
65
+ - Futures and commodities: `ES=F`, `CL=F`
66
+ - Forex: `EURUSD=X`
67
+ - Indices: `^GSPC`, `^DJI`, `^IXIC`
68
+ - Crypto: `BTC-USD`
69
+ - Foreign listings: `RY.TO`, `0700.HK`, `7203.T`, `SHEL.L`
70
+ - Add targeted probes when an endpoint is symbol-sensitive, but keep this baseline for broad API-surface discovery and for checking whether an observed endpoint applies across asset classes.
71
+
72
+ ## Out of scope
73
+ - Mapping Yahoo JSON into Python domain models.
74
+ - Separate documentation/discovery subcommands.
75
+ - Secrets, API keys, or checked-in session-cache files.
yoghurt-0.1.1/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Jocelyn Legault
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
yoghurt-0.1.1/PKG-INFO ADDED
@@ -0,0 +1,460 @@
1
+ Metadata-Version: 2.4
2
+ Name: yoghurt
3
+ Version: 0.1.1
4
+ Summary: LLM-friendly CLI for raw Yahoo Finance endpoint JSON.
5
+ Project-URL: Homepage, https://github.com/joce/yoghurt
6
+ Project-URL: Repository, https://github.com/joce/yoghurt
7
+ Project-URL: Issues, https://github.com/joce/yoghurt/issues
8
+ Author-email: Jocelyn Legault <jocelynlegault@gmail.com>
9
+ License-Expression: MIT
10
+ License-File: LICENSE
11
+ Keywords: cli,finance,llm-tools,quotes,screener,stock-market,yahoo-finance
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Environment :: Console
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Intended Audience :: Financial and Insurance Industry
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3 :: Only
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Programming Language :: Python :: 3.14
24
+ Classifier: Topic :: Office/Business :: Financial
25
+ Classifier: Topic :: Utilities
26
+ Requires-Python: <4.0,>=3.10
27
+ Requires-Dist: httpx<1.0,>=0.28
28
+ Requires-Dist: typing-extensions>=4.13; python_version < '3.12'
29
+ Description-Content-Type: text/markdown
30
+
31
+ # Yoghurt
32
+
33
+ [![CI](https://github.com/joce/yoghurt/actions/workflows/ci.yml/badge.svg)](https://github.com/joce/yoghurt/actions/workflows/ci.yml)
34
+ [![Coverage](https://codecov.io/gh/joce/yoghurt/graph/badge.svg)](https://codecov.io/gh/joce/yoghurt)
35
+ [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
36
+ [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
37
+ [![GitHub License](https://img.shields.io/github/license/joce/yoghurt)](https://github.com/joce/yoghurt/blob/main/LICENSE)
38
+
39
+ Yahoo!-Originated Graphs, Histories, Updates, Returns & Tickers.
40
+
41
+ Yoghurt brings Yahoo Finance's HTTP endpoints to the command line. It is built
42
+ for scripts, agents, and quick terminal work that needs the JSON returned by
43
+ Yahoo's finance endpoints.
44
+
45
+ The project stays deliberately close to the source. It does not reshape Yahoo
46
+ responses, define finance domain models, or add a discovery API beyond CLI
47
+ help.
48
+
49
+ ## Features
50
+
51
+ - Raw Yahoo Finance JSON on stdout, with no pretty-printing or interpretation.
52
+ - Endpoint-specific commands for common Yahoo Finance data.
53
+ - A SQL-flavored DSL (`screener`, `visualization`) for ad-hoc filters and
54
+ cross-entity queries against Yahoo's data-platform endpoints.
55
+ - Generated help that includes examples, parameters, field references, modules,
56
+ or types when Yoghurt knows them.
57
+ - Reusable Yahoo session cache for faster one-shot CLI calls.
58
+ - A `raw` command for Yahoo query paths that do not have dedicated metadata yet.
59
+
60
+ ## Install From Source
61
+
62
+ Yoghurt is currently intended to run from a local checkout. It is a Python 3.10+
63
+ project managed with [uv](https://docs.astral.sh/uv/).
64
+
65
+ ```powershell
66
+ uv sync --all-groups
67
+ ```
68
+
69
+ Run the CLI from the repository:
70
+
71
+ ```powershell
72
+ uv run yoghurt --help
73
+ ```
74
+
75
+ Or install it as a package from a local checkout:
76
+
77
+ ```powershell
78
+ uv tool install .
79
+ yoghurt --help
80
+ ```
81
+
82
+ ## Quick Start
83
+
84
+ Fetch quotes for a few symbols:
85
+
86
+ ```powershell
87
+ uv run yoghurt quote AAPL,MSFT,NVDA
88
+ ```
89
+
90
+ Request specific quote fields:
91
+
92
+ ```powershell
93
+ uv run yoghurt quote AAPL,MSFT --fields symbol,longName,companyLogoUrl,regularMarketPrice,overnightMarketPrice
94
+ ```
95
+
96
+ See [QUOTE_FIELDS.md](src/yoghurt/docs/QUOTE_FIELDS.md) for the full quote field reference and
97
+ best-effort meanings.
98
+
99
+ Fetch selected quote summary modules:
100
+
101
+ ```powershell
102
+ uv run yoghurt quote-summary ^GSPC --modules price,summaryDetail,pageViews,financialsTemplate
103
+ ```
104
+
105
+ See [QUOTE_SUMMARY_MODULES.md](src/yoghurt/docs/QUOTE_SUMMARY_MODULES.md) for the researched
106
+ quote-summary module list and descriptions.
107
+
108
+ Fetch quote-type metadata using Yahoo's path-symbol endpoint:
109
+
110
+ ```powershell
111
+ uv run yoghurt quote-type ^GSPC
112
+ ```
113
+
114
+ Fetch chart data for a recent window:
115
+
116
+ ```powershell
117
+ uv run yoghurt chart AAPL
118
+ ```
119
+
120
+ Fetch quote-page sparkline data:
121
+
122
+ ```powershell
123
+ uv run yoghurt spark AAPL,MSFT
124
+ ```
125
+
126
+ Quote-page probes have observed `1d` and `24h` spark ranges; pass values such
127
+ as `--range 24h` through when Yahoo supports them.
128
+
129
+ Fetch recommended symbols for a quote page:
130
+
131
+ ```powershell
132
+ uv run yoghurt recommendations-by-symbol AAPL
133
+ ```
134
+
135
+ Fetch Yahoo calendar events:
136
+
137
+ ```powershell
138
+ uv run yoghurt calendar-events AAPL
139
+ uv run yoghurt calendar-events AAPL --modules ipoEvents
140
+ uv run yoghurt calendar-events AAPL --modules secReports
141
+ uv run yoghurt calendar-events AAPL --modules economicEvents --include-all-economic-events
142
+ ```
143
+
144
+ Confirmed `--modules` values for `calendar-events`:
145
+
146
+ | Module | Returns |
147
+ | --- | --- |
148
+ | `earnings` | Upcoming and recent earnings dates and EPS estimates (default). |
149
+ | `economicEvents` | Macro economic calendar events (CPI, Fed decisions, employment reports, etc.). |
150
+ | `ipoEvents` | Upcoming and recent IPO events. |
151
+ | `secReports` | Recent SEC filing events (10-K, 10-Q, 8-K, etc.). |
152
+
153
+ Fetch sector data:
154
+
155
+ ```powershell
156
+ uv run yoghurt sector technology
157
+ uv run yoghurt sector financial-services --with-returns
158
+ ```
159
+
160
+ Confirmed sector slugs: `technology`, `financial-services`, `consumer-cyclical`,
161
+ `communication-services`, `healthcare`, `industrials`, `consumer-defensive`,
162
+ `energy`, `basic-materials`, `real-estate`, `utilities`.
163
+
164
+ Run a predefined Yahoo screener:
165
+
166
+ ```powershell
167
+ uv run yoghurt screener-predefined MOST_ACTIVES
168
+ uv run yoghurt screener-predefined DAY_GAINERS_CRYPTOCURRENCIES
169
+ uv run yoghurt screener-predefined TOP_OPTIONS_OPEN_INTEREST
170
+ ```
171
+
172
+ Confirmed predefined screener IDs:
173
+
174
+ **Equities — movers and volume**
175
+ `MOST_ACTIVES`, `MOST_ACTIVE_PENNY_STOCKS`, `UNUSUAL_VOLUME_STOCKS`,
176
+ `DAY_GAINERS`, `DAY_LOSERS`, `MOST_SHORTED_STOCKS`
177
+
178
+ **Equities — size and price**
179
+ `SMALL_CAP_STOCKS`, `LARGE_CAP_STOCKS`, `MOST_EXPENSIVE_STOCKS`,
180
+ `HIGHEST_BETA_STOCKS`, `PINK_SHEET_STOCKS`, `SMALL_CAP_GAINERS`
181
+
182
+ **Equities — technical signals**
183
+ `RECENT_52_WEEK_HIGHS`, `RECENT_52_WEEK_LOWS`,
184
+ `BULLISH_STOCKS_RIGHT_NOW`, `BEARISH_STOCKS_RIGHT_NOW`
185
+
186
+ **Equities — analyst and value**
187
+ `ANALYST_STRONG_BUY_STOCKS`, `MORNINGSTAR_FIVE_STAR_STOCKS`,
188
+ `UNDERVALUED_GROWTH_STOCKS`, `UNDERVALUED_LARGE_CAPS`,
189
+ `UNDERVALUED_WIDE_MOAT_STOCKS`, `GROWTH_TECHNOLOGY_STOCKS`,
190
+ `AGGRESSIVE_SMALL_CAPS`, `HIGHEST_DIVIDEND_STOCKS`
191
+
192
+ **Equities — institutional**
193
+ `MOST_INSTITUTIONALLY_BOUGHT_LARGE_CAP_STOCKS`,
194
+ `MOST_INSTITUTIONALLY_HELD_LARGE_CAP_STOCKS`,
195
+ `TOP_STOCKS_OWNED_BY_CATHIE_WOOD`
196
+
197
+ **Funds and ETFs**
198
+ `TOP_MUTUAL_FUNDS`, `SOLID_LARGE_GROWTH_FUNDS`, `SOLID_MIDCAP_GROWTH_FUNDS`,
199
+ `CONSERVATIVE_FOREIGN_FUNDS`, `HIGH_YIELD_BOND`, `LARGE_BLEND_ETFS`,
200
+ `TECHNOLOGY_ETFS`, `PORTFOLIO_ANCHORS`
201
+
202
+ **Crypto**
203
+ `MOST_ACTIVES_CRYPTOCURRENCIES`, `DAY_GAINERS_CRYPTOCURRENCIES`,
204
+ `DAY_LOSERS_CRYPTOCURRENCIES`
205
+
206
+ **Private companies**
207
+ `52_WEEK_GAINERS_PRIVATE_COMPANY`, `RECENTLY_FUNDED_PRIVATE_COMPANY`
208
+
209
+ **Options**
210
+ `DAY_GAINERS_OPTIONS`, `DAY_LOSERS_OPTIONS`,
211
+ `TOP_OPTIONS_OPEN_INTEREST`, `TOP_OPTIONS_IMPLIED_VOLATALITY` *(Yahoo typo)*
212
+
213
+ Fetch an option chain using Yahoo's default expiration:
214
+
215
+ ```powershell
216
+ uv run yoghurt options AAPL
217
+ ```
218
+
219
+ Fetch current market session status and trading hours:
220
+
221
+ ```powershell
222
+ uv run yoghurt market-time
223
+ ```
224
+
225
+ Fetch analyst intelligence for a symbol (put/call ratio, news summary, price
226
+ targets, and ratings):
227
+
228
+ ```powershell
229
+ uv run yoghurt analyst AAPL
230
+ ```
231
+
232
+ Run a custom screener or cross-entity query with the SQL-flavored DSL:
233
+
234
+ ```powershell
235
+ uv run yoghurt screener --query "
236
+ SELECT ticker, intradaymarketcap, sector, peratio.lasttwelvemonths
237
+ FROM EQUITY
238
+ WHERE region = 'us'
239
+ AND sector = 'Technology'
240
+ AND intradaymarketcap >= 10e9
241
+ ORDER BY intradaymarketcap DESC
242
+ LIMIT 25"
243
+
244
+ uv run yoghurt visualization --query "
245
+ SELECT ticker, transactiondate, shares
246
+ FROM INSIDER_TRANSACTION
247
+ WHERE ticker = 'AAPL'
248
+ ORDER BY transactiondate DESC
249
+ LIMIT 50"
250
+ ```
251
+
252
+ List the fields, types, and operators available for a given asset class or
253
+ entity (e.g. for use in a `screener` or `visualization` query):
254
+
255
+ ```powershell
256
+ uv run yoghurt screener-instrument-fields equity
257
+ uv run yoghurt screener-instrument-fields insider_transaction
258
+ ```
259
+
260
+ See [QUERY_DSL.md](src/yoghurt/docs/QUERY_DSL.md) for the full DSL reference: grammar,
261
+ operators, entity routing, body shape, premium-locked entities, and more
262
+ examples.
263
+
264
+ Pass through a Yahoo query path directly:
265
+
266
+ ```powershell
267
+ uv run yoghurt raw /v7/finance/quote --param symbols=AAPL,MSFT --param formatted=true
268
+ ```
269
+
270
+ ## Commands
271
+
272
+ Use root help to see the command list:
273
+
274
+ ```powershell
275
+ uv run yoghurt --help
276
+ ```
277
+
278
+ Current commands, grouped roughly by how often they're reached for:
279
+
280
+ **Daily-driver fetches**
281
+
282
+ | Command | Yahoo data |
283
+ | --- | --- |
284
+ | `quote` | Fetch quotes for one or more symbols. |
285
+ | `chart` | Fetch historical OHLC chart data for a symbol. |
286
+ | `options` | Fetch the option chain for a symbol. |
287
+ | `quote-summary` | Fetch quoteSummary modules for a symbol. |
288
+ | `quote-type` | Fetch instrument classification metadata for a symbol. |
289
+ | `spark` | Fetch sparkline price series for one or more symbols. |
290
+
291
+ **Discovery (find symbols, build custom queries)**
292
+
293
+ | Command | Yahoo data |
294
+ | --- | --- |
295
+ | `screener-predefined` | Run one or more of Yahoo's predefined screeners. |
296
+ | `visualization` | Query any Yahoo data-platform entity via a SQL-flavored DSL. |
297
+ | `screener` | Query any Yahoo asset class via a SQL-flavored DSL. |
298
+ | `screener-discover` | Discover investment ideas from Yahoo screener modules. |
299
+
300
+ **Symbol-bound analysis**
301
+
302
+ | Command | Yahoo data |
303
+ | --- | --- |
304
+ | `timeseries` | Fetch fundamentals timeseries for a symbol. |
305
+ | `calendar-events` | Fetch earnings, IPO, economic, and SEC filing events for a symbol. |
306
+ | `analyst` | Fetch analyst intelligence for a symbol. |
307
+ | `ratings-top` | Fetch top analyst rating buckets for a symbol. |
308
+ | `recommendations-by-symbol` | Fetch related-symbol recommendations for a symbol. |
309
+ | `price-insights` | Fetch AI-generated price insights for one or more symbols. |
310
+ | `insights` | Fetch research reports and insights for one or more symbols. |
311
+
312
+ **Market-wide state**
313
+
314
+ | Command | Yahoo data |
315
+ | --- | --- |
316
+ | `trending` | List trending tickers for a region. |
317
+ | `sector` | Fetch sector overview, performance, top holdings, and industries. |
318
+ | `market-summary` | Fetch global market summary: indices, futures, forex, crypto. |
319
+ | `market-info` | Fetch commodity and currency market data. |
320
+ | `market-time` | Show current market hours and session status. |
321
+
322
+ **Schema introspection**
323
+
324
+ | Command | Yahoo data |
325
+ | --- | --- |
326
+ | `screener-instrument-fields` | List every field available for a Yahoo data-platform entity. |
327
+ | `timeseries-fields` | List available fundamentals timeseries field names for a type. |
328
+
329
+ **Escape hatch**
330
+
331
+ | Command | Yahoo data |
332
+ | --- | --- |
333
+ | `raw` | Send raw parameters to any Yahoo query path. |
334
+
335
+ Each endpoint has its own adaptive help:
336
+
337
+ ```powershell
338
+ uv run yoghurt quote --help
339
+ uv run yoghurt quote-summary --help
340
+ uv run yoghurt calendar-events --help
341
+ uv run yoghurt timeseries --help
342
+ ```
343
+
344
+ Endpoint help is the primary documentation surface. It shows Yahoo's target
345
+ endpoint, accepted parameters, defaults, examples, and common open-ended values
346
+ where available.
347
+
348
+ ### Chart
349
+
350
+ The `chart` command calls Yahoo's `/v8/finance/chart/{symbol}` endpoint without
351
+ requesting a crumb:
352
+
353
+ ```powershell
354
+ uv run yoghurt chart AAPL
355
+ ```
356
+
357
+ When period arguments are omitted, Yoghurt uses a recent quote-page-shaped
358
+ window: `period1` defaults to three days before execution time, `period2`
359
+ defaults to execution time, `--interval` defaults to `1m`, and `--events`
360
+ defaults to `div,split,earn`. User-provided events are comma-separated; Yoghurt
361
+ packs them for Yahoo internally. Extended-hours data is opt-in with
362
+ `--include-pre-post`.
363
+
364
+ ### Timeseries
365
+
366
+ The `timeseries` command can also run with only a ticker:
367
+
368
+ ```powershell
369
+ uv run yoghurt timeseries AAPL
370
+ ```
371
+
372
+ Its default type list matches the Yahoo quote/analysis page request for
373
+ earnings-release, analyst-rating, and economic-event timeseries data. When
374
+ period arguments are omitted, Yoghurt uses a recent quote-page-style window:
375
+ `period1` defaults to three days before execution time and `period2` defaults
376
+ to execution time.
377
+
378
+ See [TIMESERIES_TYPES.md](src/yoghurt/docs/TIMESERIES_TYPES.md) for the observed `--type`
379
+ reference with descriptions.
380
+
381
+ ## Dates and Booleans
382
+
383
+ Date and datetime parameters accept:
384
+
385
+ - Unix timestamps, such as `1510876800`.
386
+ - Date-only values, such as `2017-11-17`.
387
+ - ISO datetime values.
388
+
389
+ Date-only values are converted at UTC midnight before they are sent to Yahoo.
390
+ For endpoints with `period1` and `period2`, documented defaults let ticker-only
391
+ requests run, `period2` defaults to the current Unix timestamp when omitted, and
392
+ Yoghurt rejects windows where `period2` is not greater than `period1`. Supplying
393
+ `period2` without `period1` is also rejected.
394
+
395
+ Boolean parameters accept common true and false forms such as `true`, `false`,
396
+ `1`, `0`, `yes`, and `no`.
397
+
398
+ ## Session Cache
399
+
400
+ Most Yahoo endpoints require a cookie and crumb. Yoghurt establishes that session
401
+ state automatically and caches it for reuse across CLI calls.
402
+
403
+ Useful global options:
404
+
405
+ ```powershell
406
+ uv run yoghurt --refresh-session quote AAPL
407
+ uv run yoghurt --no-session-cache quote AAPL
408
+ uv run yoghurt --session-cache C:\tmp\yoghurt-session.json quote AAPL
409
+ ```
410
+
411
+ Yoghurt never prints cookies, crumbs, or full session-cache contents.
412
+
413
+ ## Output Contract
414
+
415
+ Yoghurt writes the Yahoo response body to stdout exactly as returned. This makes
416
+ it easy to pipe into tools that expect JSON:
417
+
418
+ ```powershell
419
+ uv run yoghurt quote AAPL | jq .
420
+ ```
421
+
422
+ Diagnostics and errors are written to stderr.
423
+
424
+ ## Development
425
+
426
+ Install development dependencies:
427
+
428
+ ```powershell
429
+ uv sync --all-groups
430
+ ```
431
+
432
+ Run the test suite:
433
+
434
+ ```powershell
435
+ uv run pytest
436
+ ```
437
+
438
+ Run checks locally:
439
+
440
+ ```powershell
441
+ uv run black --check .
442
+ uv run ruff format --check --diff .
443
+ uv run ruff check .
444
+ uv run pyright
445
+ uv run pytest -n auto
446
+ ```
447
+
448
+ Run the full project check, including Python checks and spelling:
449
+
450
+ ```powershell
451
+ uv run tox
452
+ ```
453
+
454
+ When adding or changing command metadata, update validation, adaptive help, and
455
+ tests together. Then verify the relevant command against Yahoo with its help,
456
+ minimal required parameters, and representative optional parameters.
457
+
458
+ ## License
459
+
460
+ Yoghurt is released under the MIT License. See [LICENSE](LICENSE).