copilot-session-usage 0.9.3__tar.gz → 0.9.4__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.
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/PKG-INFO +1 -1
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/src/copilot_session_usage/data/models-and-pricing.lock +3 -3
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/src/copilot_session_usage/data/models-and-pricing.yml +0 -76
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/tests/test_core.py +23 -10
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.editorconfig +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.gitattributes +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.github/changes/requests/skill-breakdown/01-request.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.github/guidelines/git-commit-message.guideline.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.github/guidelines/knowledge-base.guidelines.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.github/pull_request_template.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.github/skills/consolidate-knowledge-base/SKILL.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.github/skills/gh-commit-changes/SKILL.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.github/skills/gh-create-pull-request/SKILL.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.github/skills/gh-release-notes/SKILL.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.github/skills/gh-release-notes/scripts/generate_release_notes.py +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.github/skills/record-finding/README.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.github/skills/record-finding/SKILL.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.github/workflows/ci.yml +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.github/workflows/publish.yml +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.github/workflows/refresh-pricing.yml +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.github/workflows/release-notes.yml +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.github/workflows/release.yml +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.gitignore +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.readthedocs.yaml +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/AGENTS.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/CHANGELOG.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/CONSTITUTION.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/CONTRIBUTING.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/LICENSE +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/README.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/articles/presentation.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/internal/automated_release_proces.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/_static/changelog.js +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/_static/custom.css +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/changelog.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/conf.py +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/explanation/how-cost-estimation-works.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/explanation/index.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/how-to/add-commit-trailer.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/how-to/analyze-specific-session.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/how-to/batch-and-spending.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/how-to/copilot-cli-provider.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/how-to/export-json.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/how-to/index.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/how-to/wsl2.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/index.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/installation.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/reference/api.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/reference/cli.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/reference/index.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/reference/pricing.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/tutorials/getting-started.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/tutorials/index.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/guidelines.yml +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/justfile +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/_schema/Base.schema.yaml +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/_schema/Concept.schema.yaml +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/_schema/Experiment.schema.yaml +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/_schema/Finding.schema.yaml +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/_schema/Hypothesis.schema.yaml +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/_schema/Outcome.schema.yaml +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/_schema/Playbook.schema.yaml +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/_schema/Principle.schema.yaml +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/_schema/Reference.schema.yaml +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/_schema/Structure.schema.yaml +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/concepts/copilot-cli.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/concepts/index.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/concepts/overview.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/concepts/session-cost-analysis.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/concepts/threshold-based-pricing.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/experiments/index.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/experiments/verify-subagent-cost-attribution.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/findings/2026.07.02-00.00-subagent-logs-runsubagent-prefix.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/findings/2026.07.02-22.00-title-generation-not-counted-as-model-turn.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/findings/2026.07.02-23.00-cache-write-approximation.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/findings/2026.07.13-14.27-release-notes-overreported-maintainer-changes.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/findings/2026.07.24-15.01-actions-token-cannot-create-pr.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/findings/2026.08.05-16.24-utility-models-appear-in-logs-but-are-not-billed.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/findings/2026.10.07-17.30-cli-billed-nanoaiu-and-cache-write.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/findings/2026.10.07-request-billing-and-cache-write.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/findings/index.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/guides/automation-scripts.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/guides/cost-optimization.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/guides/index.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/guides/wsl2-setup.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/ideas/index.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/ideas/multi-session-efficiency-analytics.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/index.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/log.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/principles/findings-are-immutable.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/principles/index.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/reference/debug-log-format.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/reference/index.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/reference/pricing-formats.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/structures/cache-cost-approximation.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/structures/index.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/structures/knowledge-base-information-types.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/structures/session-discovery-algorithm.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/structures/subagent-cost-tracking.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/structures/vscode-copilot-extension.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/pyproject.toml +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/scripts/refresh_pricing.py +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/skills/copilot-session-usage/SKILL.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/skills/copilot-session-usage/references/span-analysis-template.md +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/src/copilot_session_usage/__init__.py +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/src/copilot_session_usage/_internal/__init__.py +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/src/copilot_session_usage/_internal/copilot_cli.py +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/src/copilot_session_usage/_internal/core.py +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/src/copilot_session_usage/_internal/git.py +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/src/copilot_session_usage/_internal/vscode.py +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/src/copilot_session_usage/api.py +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/src/copilot_session_usage/cli.py +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/src/copilot_session_usage/data/__init__.py +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/src/copilot_session_usage/data/custom-models-pricing.yml +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/tests/conftest.py +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/tests/test_api.py +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/tests/test_cli.py +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/tests/test_copilot_cli.py +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/tests/test_coverage_gaps.py +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/tests/test_generate_release_notes.py +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/tests/test_git.py +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/tests/test_pricing_runtime.py +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/tests/test_release_notes.py +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/tests/test_rendering.py +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/tests/test_vscode.py +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/tests/test_vscode_platform.py +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/uv.lock +0 -0
- {copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/uv.toml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: copilot-session-usage
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.4
|
|
4
4
|
Summary: Usage and cost analytics for GitHub Copilot and Copilot-CLI session logs
|
|
5
5
|
Project-URL: Homepage, https://github.com/gsemet/copilot-session-usage
|
|
6
6
|
Project-URL: Documentation, https://copilot-session-usage.readthedocs.io/en/stable/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"_captured": "2026-10-
|
|
2
|
+
"_captured": "2026-10-24T07:19:50.423455+00:00",
|
|
3
3
|
"_source": "https://raw.githubusercontent.com/github/docs/main/data/tables/copilot/models-and-pricing.yml",
|
|
4
4
|
"_yaml_path": "/home/runner/work/copilot-session-usage/copilot-session-usage/src/copilot_session_usage/data/models-and-pricing.yml",
|
|
5
|
-
"model_count":
|
|
6
|
-
"checksum": "
|
|
5
|
+
"model_count": 39,
|
|
6
|
+
"checksum": "2d756a85aa519212"
|
|
7
7
|
}
|
|
@@ -21,17 +21,6 @@
|
|
|
21
21
|
# - notes: Optional notes about the model.
|
|
22
22
|
|
|
23
23
|
# OpenAI
|
|
24
|
-
- model: 'GPT-5 mini'
|
|
25
|
-
provider: openai
|
|
26
|
-
release_status: GA
|
|
27
|
-
category: Lightweight
|
|
28
|
-
threshold: Not applicable
|
|
29
|
-
tier: Default
|
|
30
|
-
input: $0.25
|
|
31
|
-
cached_input: $0.025
|
|
32
|
-
output: $2.00
|
|
33
|
-
cache_write: Not applicable
|
|
34
|
-
|
|
35
24
|
- model: GPT-5.3-Codex
|
|
36
25
|
provider: openai
|
|
37
26
|
release_status: GA
|
|
@@ -43,39 +32,6 @@
|
|
|
43
32
|
output: $14.00
|
|
44
33
|
cache_write: Not applicable
|
|
45
34
|
|
|
46
|
-
- model: 'GPT-5.4'
|
|
47
|
-
provider: openai
|
|
48
|
-
release_status: GA
|
|
49
|
-
category: Versatile
|
|
50
|
-
threshold: '≤ 272K'
|
|
51
|
-
tier: Default
|
|
52
|
-
input: $2.50
|
|
53
|
-
cached_input: $0.25
|
|
54
|
-
output: $15.00
|
|
55
|
-
cache_write: Not applicable
|
|
56
|
-
|
|
57
|
-
- model: GPT-5.4
|
|
58
|
-
provider: openai
|
|
59
|
-
release_status: GA
|
|
60
|
-
category: Versatile
|
|
61
|
-
threshold: '> 272K'
|
|
62
|
-
tier: Long context
|
|
63
|
-
input: $5.00
|
|
64
|
-
cached_input: $0.50
|
|
65
|
-
output: $22.50
|
|
66
|
-
cache_write: Not applicable
|
|
67
|
-
|
|
68
|
-
- model: GPT-5.4 mini
|
|
69
|
-
provider: openai
|
|
70
|
-
release_status: GA
|
|
71
|
-
category: Lightweight
|
|
72
|
-
threshold: Not applicable
|
|
73
|
-
tier: Default
|
|
74
|
-
input: $0.75
|
|
75
|
-
cached_input: $0.075
|
|
76
|
-
output: $4.50
|
|
77
|
-
cache_write: Not applicable
|
|
78
|
-
|
|
79
35
|
- model: GPT-5.4 nano
|
|
80
36
|
provider: openai
|
|
81
37
|
release_status: GA
|
|
@@ -87,28 +43,6 @@
|
|
|
87
43
|
output: $1.25
|
|
88
44
|
cache_write: Not applicable
|
|
89
45
|
|
|
90
|
-
- model: GPT-5.5
|
|
91
|
-
provider: openai
|
|
92
|
-
release_status: GA
|
|
93
|
-
category: Powerful
|
|
94
|
-
threshold: '≤ 272K'
|
|
95
|
-
tier: Default
|
|
96
|
-
input: $5.00
|
|
97
|
-
cached_input: $0.50
|
|
98
|
-
output: $30.00
|
|
99
|
-
cache_write: Not applicable
|
|
100
|
-
|
|
101
|
-
- model: GPT-5.5
|
|
102
|
-
provider: openai
|
|
103
|
-
release_status: GA
|
|
104
|
-
category: Powerful
|
|
105
|
-
threshold: '> 272K'
|
|
106
|
-
tier: 'Long context'
|
|
107
|
-
input: $10.00
|
|
108
|
-
cached_input: $1.00
|
|
109
|
-
output: $45.00
|
|
110
|
-
cache_write: Not applicable
|
|
111
|
-
|
|
112
46
|
- model: GPT-5.6 Luna
|
|
113
47
|
provider: openai
|
|
114
48
|
release_status: GA
|
|
@@ -386,16 +320,6 @@
|
|
|
386
320
|
cache_write: $12.50
|
|
387
321
|
|
|
388
322
|
# Google
|
|
389
|
-
- model: 'Gemini 3.7 Flash[^gemini-flash-promo]'
|
|
390
|
-
provider: google
|
|
391
|
-
release_status: GA
|
|
392
|
-
category: Versatile
|
|
393
|
-
threshold: 'Not applicable'
|
|
394
|
-
tier: 'Default'
|
|
395
|
-
input: $0.75
|
|
396
|
-
cached_input: $0.075
|
|
397
|
-
output: $3.75
|
|
398
|
-
|
|
399
323
|
- model: 'Gemini 3.8 Flash[^gemini-flash-promo]'
|
|
400
324
|
provider: google
|
|
401
325
|
release_status: GA
|
|
@@ -111,8 +111,29 @@ def test_get_model_rates_prefix_match():
|
|
|
111
111
|
assert rates["input_per_m"] == 0.08
|
|
112
112
|
|
|
113
113
|
|
|
114
|
+
def _gpt_54_row(model, threshold, tier, input_, cached, output):
|
|
115
|
+
return {
|
|
116
|
+
"model": model,
|
|
117
|
+
"threshold": threshold,
|
|
118
|
+
"tier": tier,
|
|
119
|
+
"input": input_,
|
|
120
|
+
"cached_input": cached,
|
|
121
|
+
"output": output,
|
|
122
|
+
"cache_write": "Not applicable",
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
GPT_54_ROWS = [
|
|
127
|
+
_gpt_54_row("GPT-5.4", "≤ 272K", "Default", "$2.50", "$0.25", "$15.00"),
|
|
128
|
+
_gpt_54_row("GPT-5.4", "> 272K", "Long context", "$5.00", "$0.50", "$22.50"),
|
|
129
|
+
]
|
|
130
|
+
|
|
131
|
+
|
|
114
132
|
def test_versioned_model_uses_most_specific_pricing():
|
|
115
|
-
|
|
133
|
+
rows = GPT_54_ROWS + [
|
|
134
|
+
_gpt_54_row("GPT-5.4 mini", "Not applicable", "Default", "$0.75", "$0.075", "$4.50")
|
|
135
|
+
]
|
|
136
|
+
pricing = core._build_pricing_from_yaml(rows, "test")
|
|
116
137
|
rates = core._get_model_rates("gpt-5.4-mini-2026-10-01", 100_000, pricing)
|
|
117
138
|
assert rates == pricing["models"]["gpt-5.4-mini"][0]
|
|
118
139
|
|
|
@@ -315,15 +336,7 @@ def test_threshold_aware_pricing_exact_boundary():
|
|
|
315
336
|
],
|
|
316
337
|
)
|
|
317
338
|
def test_threshold_aware_pricing_is_order_independent(reverse, upper, lower, boundary):
|
|
318
|
-
|
|
319
|
-
assert text is not None
|
|
320
|
-
rows = [
|
|
321
|
-
row
|
|
322
|
-
for row in core._parse_pricing_entries(text, "test")
|
|
323
|
-
if core._normalize_model_name(row.get("model", "")) == "gpt-5.4"
|
|
324
|
-
]
|
|
325
|
-
assert len(rows) == 2
|
|
326
|
-
rows = [{**rows[0], "threshold": upper}, {**rows[1], "threshold": lower}]
|
|
339
|
+
rows = [{**GPT_54_ROWS[0], "threshold": upper}, {**GPT_54_ROWS[1], "threshold": lower}]
|
|
327
340
|
pricing = core._build_pricing_from_yaml(list(reversed(rows)) if reverse else rows, "test")
|
|
328
341
|
pricing["models"]["gpt-5.4"].reverse()
|
|
329
342
|
for tokens in [0, boundary - 1, boundary, boundary + 1, 500_000]:
|
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.github/ISSUE_TEMPLATE/bug_report.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.github/pull_request_template.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.github/skills/gh-release-notes/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.github/skills/record-finding/README.md
RENAMED
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.github/skills/record-finding/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.github/workflows/refresh-pricing.yml
RENAMED
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/.github/workflows/release-notes.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/_static/changelog.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/explanation/index.md
RENAMED
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/how-to/add-commit-trailer.md
RENAMED
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/how-to/batch-and-spending.md
RENAMED
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/how-to/export-json.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/reference/pricing.md
RENAMED
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/docs/source/tutorials/getting-started.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/_schema/Base.schema.yaml
RENAMED
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/_schema/Concept.schema.yaml
RENAMED
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/_schema/Experiment.schema.yaml
RENAMED
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/_schema/Finding.schema.yaml
RENAMED
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/_schema/Hypothesis.schema.yaml
RENAMED
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/_schema/Outcome.schema.yaml
RENAMED
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/_schema/Playbook.schema.yaml
RENAMED
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/_schema/Principle.schema.yaml
RENAMED
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/_schema/Reference.schema.yaml
RENAMED
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/_schema/Structure.schema.yaml
RENAMED
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/concepts/copilot-cli.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/guides/automation-scripts.md
RENAMED
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/guides/cost-optimization.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/reference/debug-log-format.md
RENAMED
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/knowledge/reference/pricing-formats.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/skills/copilot-session-usage/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/src/copilot_session_usage/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/src/copilot_session_usage/api.py
RENAMED
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/src/copilot_session_usage/cli.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{copilot_session_usage-0.9.3 → copilot_session_usage-0.9.4}/tests/test_generate_release_notes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|