metergraph-core 0.8.7__tar.gz → 0.8.9__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.
Files changed (25) hide show
  1. {metergraph_core-0.8.7/src/metergraph_core.egg-info → metergraph_core-0.8.9}/PKG-INFO +11 -5
  2. {metergraph_core-0.8.7 → metergraph_core-0.8.9}/README.md +10 -4
  3. {metergraph_core-0.8.7 → metergraph_core-0.8.9}/pyproject.toml +1 -1
  4. {metergraph_core-0.8.7 → metergraph_core-0.8.9}/src/metergraph_core/catalog.py +3 -0
  5. {metergraph_core-0.8.7 → metergraph_core-0.8.9}/src/metergraph_core/data/prices.yaml +82 -2
  6. {metergraph_core-0.8.7 → metergraph_core-0.8.9}/src/metergraph_core/data/sources.yaml +17 -5
  7. {metergraph_core-0.8.7 → metergraph_core-0.8.9/src/metergraph_core.egg-info}/PKG-INFO +11 -5
  8. {metergraph_core-0.8.7 → metergraph_core-0.8.9}/MANIFEST.in +0 -0
  9. {metergraph_core-0.8.7 → metergraph_core-0.8.9}/setup.cfg +0 -0
  10. {metergraph_core-0.8.7 → metergraph_core-0.8.9}/src/metergraph_core/__init__.py +0 -0
  11. {metergraph_core-0.8.7 → metergraph_core-0.8.9}/src/metergraph_core/billing.py +0 -0
  12. {metergraph_core-0.8.7 → metergraph_core-0.8.9}/src/metergraph_core/calls.py +0 -0
  13. {metergraph_core-0.8.7 → metergraph_core-0.8.9}/src/metergraph_core/catalog_delta.py +0 -0
  14. {metergraph_core-0.8.7 → metergraph_core-0.8.9}/src/metergraph_core/data/models.yaml +0 -0
  15. {metergraph_core-0.8.7 → metergraph_core-0.8.9}/src/metergraph_core/extractors.py +0 -0
  16. {metergraph_core-0.8.7 → metergraph_core-0.8.9}/src/metergraph_core/loader.py +0 -0
  17. {metergraph_core-0.8.7 → metergraph_core-0.8.9}/src/metergraph_core/models.py +0 -0
  18. {metergraph_core-0.8.7 → metergraph_core-0.8.9}/src/metergraph_core/refresh.py +0 -0
  19. {metergraph_core-0.8.7 → metergraph_core-0.8.9}/src/metergraph_core/responses.py +0 -0
  20. {metergraph_core-0.8.7 → metergraph_core-0.8.9}/src/metergraph_core/retrieval.py +0 -0
  21. {metergraph_core-0.8.7 → metergraph_core-0.8.9}/src/metergraph_core/sources.py +0 -0
  22. {metergraph_core-0.8.7 → metergraph_core-0.8.9}/src/metergraph_core.egg-info/SOURCES.txt +0 -0
  23. {metergraph_core-0.8.7 → metergraph_core-0.8.9}/src/metergraph_core.egg-info/dependency_links.txt +0 -0
  24. {metergraph_core-0.8.7 → metergraph_core-0.8.9}/src/metergraph_core.egg-info/requires.txt +0 -0
  25. {metergraph_core-0.8.7 → metergraph_core-0.8.9}/src/metergraph_core.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: metergraph-core
3
- Version: 0.8.7
3
+ Version: 0.8.9
4
4
  Summary: Open, effective-dated LLM pricing catalog and deterministic cost calculator for popular models across major providers and gateways, including OpenAI, Anthropic, Google Gemini, AWS Bedrock, OpenRouter, Vercel AI Gateway, and more.
5
5
  Author: Metergraph
6
6
  License-Expression: Apache-2.0
@@ -436,14 +436,19 @@ for source in load_source_registry().sources:
436
436
 
437
437
  Seeding a source does not make it low-risk. Low-risk means a proven official
438
438
  parser whose live structural fingerprint has been reviewed and recorded.
439
- Anthropic, Google (Gemini API) and xAI start low-risk; each may change
440
- existing rates, in its allowed dimensions, on existing rows.
439
+ Anthropic and xAI start low-risk; each may change existing rates, in its
440
+ allowed dimensions, on existing rows.
441
441
 
442
442
  OpenAI is reviewed discovery only. Its official parser still reads the live
443
443
  rows, but the live pricing data no longer exposes the rendered column header
444
444
  needed to verify the parser's positional columns, so its rows are evidence for
445
445
  review, never automated changes.
446
446
 
447
+ Google (Gemini API) is reviewed discovery only. The registry points at the
448
+ pricing page's current home, so the allowlisted fetch needs no redirect, and
449
+ its official parser's reading of that page and a fingerprint need review
450
+ before it can propose changes again.
451
+
447
452
  Every other source is reviewed discovery only. It is read with a generic
448
453
  parser, `html-tables` for any page's tables or `gpu-license-prose` for GPU or
449
454
  license pricing stated in prose, which records normalized evidence and never
@@ -514,8 +519,9 @@ price on one canonical entry instead of a conflicting second `add_model`.
514
519
 
515
520
  The fetch-capable scripts read `<source-id>.*` files from `--content-dir` instead
516
521
  of fetching. The
517
- tests use one synthetic fixture per low-risk source, plus OpenAI's, in
518
- `tests/fixtures/sources/`, reproducing only the structure its parser reads;
522
+ tests use one synthetic fixture per low-risk source, plus OpenAI's and
523
+ Google's, in `tests/fixtures/sources/`, reproducing only the structure its
524
+ parser reads;
519
525
  the generic discovery parsers are tested on small inline synthetic pages.
520
526
 
521
527
  ## Provider review and contributions
@@ -406,14 +406,19 @@ for source in load_source_registry().sources:
406
406
 
407
407
  Seeding a source does not make it low-risk. Low-risk means a proven official
408
408
  parser whose live structural fingerprint has been reviewed and recorded.
409
- Anthropic, Google (Gemini API) and xAI start low-risk; each may change
410
- existing rates, in its allowed dimensions, on existing rows.
409
+ Anthropic and xAI start low-risk; each may change existing rates, in its
410
+ allowed dimensions, on existing rows.
411
411
 
412
412
  OpenAI is reviewed discovery only. Its official parser still reads the live
413
413
  rows, but the live pricing data no longer exposes the rendered column header
414
414
  needed to verify the parser's positional columns, so its rows are evidence for
415
415
  review, never automated changes.
416
416
 
417
+ Google (Gemini API) is reviewed discovery only. The registry points at the
418
+ pricing page's current home, so the allowlisted fetch needs no redirect, and
419
+ its official parser's reading of that page and a fingerprint need review
420
+ before it can propose changes again.
421
+
417
422
  Every other source is reviewed discovery only. It is read with a generic
418
423
  parser, `html-tables` for any page's tables or `gpu-license-prose` for GPU or
419
424
  license pricing stated in prose, which records normalized evidence and never
@@ -484,8 +489,9 @@ price on one canonical entry instead of a conflicting second `add_model`.
484
489
 
485
490
  The fetch-capable scripts read `<source-id>.*` files from `--content-dir` instead
486
491
  of fetching. The
487
- tests use one synthetic fixture per low-risk source, plus OpenAI's, in
488
- `tests/fixtures/sources/`, reproducing only the structure its parser reads;
492
+ tests use one synthetic fixture per low-risk source, plus OpenAI's and
493
+ Google's, in `tests/fixtures/sources/`, reproducing only the structure its
494
+ parser reads;
489
495
  the generic discovery parsers are tested on small inline synthetic pages.
490
496
 
491
497
  ## Provider review and contributions
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "metergraph-core"
3
- version = "0.8.7"
3
+ version = "0.8.9"
4
4
  description = "Open, effective-dated LLM pricing catalog and deterministic cost calculator for popular models across major providers and gateways, including OpenAI, Anthropic, Google Gemini, AWS Bedrock, OpenRouter, Vercel AI Gateway, and more."
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -32,6 +32,9 @@ _DIRECT_CHANNEL_BY_PROVIDER = {
32
32
  "google": "google-api",
33
33
  "vercel": "vercel-ai-gateway",
34
34
  "openrouter": "openrouter-api",
35
+ # Captured Tencent API traffic is assumed to use TokenHub; review this
36
+ # mapping before adding TokenHub rates for Tencent's own models.
37
+ "tencent": "tencent-tokenhub-api",
35
38
  "vertex-ai": "google-vertex-ai",
36
39
  "fireworks": "fireworks-api",
37
40
  "bedrock": "aws-bedrock",
@@ -6,9 +6,9 @@
6
6
  #
7
7
  # Community updates welcome: add an alias or price entry with its provider
8
8
  # source_url and open a PR. CI validates structure and date overlaps.
9
- version: "2026-11-02.1"
9
+ version: "2026-11-04"
10
10
  currency: USD
11
- pricing_verified_at: "2026-11-02"
11
+ pricing_verified_at: "2026-11-04"
12
12
  models:
13
13
  - canonical_id: openai/gpt-6-sol
14
14
  publisher: openai
@@ -3830,10 +3830,24 @@ models:
3830
3830
  - channel: moonshot-api
3831
3831
  region: global
3832
3832
  effective_from: "2026-10-07"
3833
+ effective_to: "2026-11-03"
3833
3834
  input_per_mtok: 0.95
3834
3835
  output_per_mtok: 4.00
3835
3836
  cache_read_per_mtok: 0.19
3836
3837
  source_url: https://platform.kimi.ai/docs/pricing/chat
3838
+ # Batch input/output use Kimi's 60% rule. K2.7 Code has no cache-write
3839
+ # rate because it does not support cache writes. No batch cache-read rate
3840
+ # is verified, so the catalog uses the standard $0.19/MTok fallback for hits.
3841
+ - channel: moonshot-api
3842
+ region: global
3843
+ effective_from: "2026-11-03"
3844
+ input_per_mtok: 0.95
3845
+ output_per_mtok: 4.00
3846
+ cache_read_per_mtok: 0.19
3847
+ batch_input_per_mtok: 0.57
3848
+ batch_output_per_mtok: 2.40
3849
+ rules: {input_includes_cache_read: true}
3850
+ source_url: https://platform.kimi.ai/docs/pricing/batch
3837
3851
  - channel: openrouter-api
3838
3852
  region: global
3839
3853
  effective_from: "2026-10-20"
@@ -3843,6 +3857,32 @@ models:
3843
3857
  rules:
3844
3858
  varies_by_provider: true
3845
3859
  source_url: https://openrouter.ai/api/v1/models
3860
+ - canonical_id: moonshotai/kimi-k2.8-preview
3861
+ publisher: moonshotai
3862
+ aliases:
3863
+ # This subscription ID follows Kimi Code's backing model; end the alias
3864
+ # when Kimi switches it to another model.
3865
+ - provider: moonshotai
3866
+ alias: kimi-for-coding
3867
+ channel: kimi-code-subscription
3868
+ effective_from: "2026-09-11"
3869
+ source_url: https://www.kimi.com/code/docs/en/kimi-code/whats-new.html
3870
+ - provider: tencent
3871
+ alias: kimi-k2.8-preview
3872
+ channel: tencent-tokenhub-api
3873
+ effective_from: "2026-11-02"
3874
+ source_url: https://intl.cloud.tencent.com/document/product/1300/80635
3875
+ prices:
3876
+ # First verified TokenHub rate, not its launch date. Add a separate
3877
+ # earlier row if historical rates are later verified.
3878
+ - channel: tencent-tokenhub-api
3879
+ region: global
3880
+ effective_from: "2026-11-02"
3881
+ input_per_mtok: 1.00
3882
+ output_per_mtok: 4.00
3883
+ cache_read_per_mtok: 0.25
3884
+ rules: {input_includes_cache_read: true}
3885
+ source_url: https://intl.cloud.tencent.com/document/product/1300/78937
3846
3886
  - canonical_id: moonshotai/kimi-k3-fast
3847
3887
  publisher: moonshotai
3848
3888
  aliases:
@@ -12500,6 +12540,46 @@ models:
12500
12540
  cache_read_per_mtok: 0.50
12501
12541
  source_url: https://developers.openai.com/api/docs/pricing
12502
12542
 
12543
+ - canonical_id: openai/gpt-6-rosalind
12544
+ publisher: openai
12545
+ aliases:
12546
+ - {provider: openai, alias: gpt-6-rosalind, channel: openai-api}
12547
+ - {provider: litellm, alias: gpt-6-rosalind, channel: openai-api}
12548
+ - {provider: unknown, alias: gpt-6-rosalind, channel: openai-api}
12549
+ - {provider: openai, alias: openai/gpt-6-rosalind, channel: openai-api}
12550
+ prices:
12551
+ # First verified rate, not a launch date.
12552
+ # The 5m field holds OpenAI's 30-minute cache write; its 12-hour tier
12553
+ # has no field.
12554
+ - channel: openai-api
12555
+ region: global
12556
+ effective_from: "2026-11-04"
12557
+ input_per_mtok: 15.00
12558
+ output_per_mtok: 75.00
12559
+ cache_read_per_mtok: 1.50
12560
+ cache_write_5m_per_mtok: 18.75
12561
+ rules:
12562
+ input_includes_cache_read: true
12563
+ long_context: {threshold: 272000, input_multiplier: 2, output_multiplier: 1.5}
12564
+ source_url: https://developers.openai.com/api/docs/pricing
12565
+
12566
+ - canonical_id: openai/gpt-6-astra-law
12567
+ publisher: openai
12568
+ aliases:
12569
+ - {provider: openai, alias: gpt-6-astra-law, channel: openai-api}
12570
+ - {provider: litellm, alias: gpt-6-astra-law, channel: openai-api}
12571
+ - {provider: unknown, alias: gpt-6-astra-law, channel: openai-api}
12572
+ - {provider: openai, alias: openai/gpt-6-astra-law, channel: openai-api}
12573
+ prices:
12574
+ # First verified rate, not a launch date.
12575
+ - channel: openai-api
12576
+ region: global
12577
+ effective_from: "2026-11-04"
12578
+ input_per_mtok: 10.00
12579
+ output_per_mtok: 50.00
12580
+ cache_read_per_mtok: 1.00
12581
+ source_url: https://developers.openai.com/api/docs/pricing
12582
+
12503
12583
  - canonical_id: openai/chat-latest
12504
12584
  publisher: openai
12505
12585
  aliases:
@@ -66,17 +66,19 @@ sources:
66
66
  eligible: true
67
67
  dimensions: [input_per_mtok, output_per_mtok, cache_write_5m_per_mtok, cache_read_per_mtok]
68
68
 
69
+ # The current destination of the Gemini API pricing page
70
+ # (ai.google.dev/gemini-api/docs/pricing redirects here), so the allowlisted
71
+ # fetch needs no redirect. Reviewed discovery only until the google parser's
72
+ # reading of this page and a fingerprint are reviewed.
69
73
  - id: google-api-pricing
70
74
  provider: google
71
75
  channel: google-api
72
76
  catalog_channel: true
73
- url: https://ai.google.dev/gemini-api/docs/pricing
77
+ url: https://aistudio.google.com/docs/pricing
74
78
  parser: google
75
79
  dimensions: [input_per_mtok, output_per_mtok, cache_read_per_mtok]
76
- fingerprint: sha256:ce07b6f065f5dfd21a9f14a005c30de1f5802e3ba118dc1dbe088a124c84adbd
77
- low_risk:
78
- eligible: true
79
- dimensions: [input_per_mtok, output_per_mtok, cache_read_per_mtok]
80
+ fingerprint: null
81
+ low_risk: {eligible: false, dimensions: []}
80
82
 
81
83
  - id: deepseek-api-pricing
82
84
  provider: deepseek
@@ -162,6 +164,16 @@ sources:
162
164
  fingerprint: null
163
165
  low_risk: {eligible: false, dimensions: []}
164
166
 
167
+ - id: tencent-tokenhub-kimi-k28-pricing
168
+ provider: tencent
169
+ channel: tencent-tokenhub-api
170
+ catalog_channel: true
171
+ url: https://intl.cloud.tencent.com/document/product/1300/78937
172
+ parser: html-tables
173
+ dimensions: [input_per_mtok, output_per_mtok, cache_read_per_mtok]
174
+ fingerprint: null
175
+ low_risk: {eligible: false, dimensions: []}
176
+
165
177
  # Gemini and partner models on Vertex AI. Prices vary by model, context
166
178
  # length, tier and processing mode; reviewed discovery only. The URL is the
167
179
  # current destination of Google's Vertex AI generative pricing page
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: metergraph-core
3
- Version: 0.8.7
3
+ Version: 0.8.9
4
4
  Summary: Open, effective-dated LLM pricing catalog and deterministic cost calculator for popular models across major providers and gateways, including OpenAI, Anthropic, Google Gemini, AWS Bedrock, OpenRouter, Vercel AI Gateway, and more.
5
5
  Author: Metergraph
6
6
  License-Expression: Apache-2.0
@@ -436,14 +436,19 @@ for source in load_source_registry().sources:
436
436
 
437
437
  Seeding a source does not make it low-risk. Low-risk means a proven official
438
438
  parser whose live structural fingerprint has been reviewed and recorded.
439
- Anthropic, Google (Gemini API) and xAI start low-risk; each may change
440
- existing rates, in its allowed dimensions, on existing rows.
439
+ Anthropic and xAI start low-risk; each may change existing rates, in its
440
+ allowed dimensions, on existing rows.
441
441
 
442
442
  OpenAI is reviewed discovery only. Its official parser still reads the live
443
443
  rows, but the live pricing data no longer exposes the rendered column header
444
444
  needed to verify the parser's positional columns, so its rows are evidence for
445
445
  review, never automated changes.
446
446
 
447
+ Google (Gemini API) is reviewed discovery only. The registry points at the
448
+ pricing page's current home, so the allowlisted fetch needs no redirect, and
449
+ its official parser's reading of that page and a fingerprint need review
450
+ before it can propose changes again.
451
+
447
452
  Every other source is reviewed discovery only. It is read with a generic
448
453
  parser, `html-tables` for any page's tables or `gpu-license-prose` for GPU or
449
454
  license pricing stated in prose, which records normalized evidence and never
@@ -514,8 +519,9 @@ price on one canonical entry instead of a conflicting second `add_model`.
514
519
 
515
520
  The fetch-capable scripts read `<source-id>.*` files from `--content-dir` instead
516
521
  of fetching. The
517
- tests use one synthetic fixture per low-risk source, plus OpenAI's, in
518
- `tests/fixtures/sources/`, reproducing only the structure its parser reads;
522
+ tests use one synthetic fixture per low-risk source, plus OpenAI's and
523
+ Google's, in `tests/fixtures/sources/`, reproducing only the structure its
524
+ parser reads;
519
525
  the generic discovery parsers are tested on small inline synthetic pages.
520
526
 
521
527
  ## Provider review and contributions