usage-cli 0.34.3__tar.gz → 0.34.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.
- {usage_cli-0.34.3/usage_cli.egg-info → usage_cli-0.34.4}/PKG-INFO +1 -1
- {usage_cli-0.34.3 → usage_cli-0.34.4}/loaders/muse_quota_probe.py +2 -1
- {usage_cli-0.34.3 → usage_cli-0.34.4}/pyproject.toml +1 -1
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_muse_quota_probe.py +9 -1
- {usage_cli-0.34.3 → usage_cli-0.34.4/usage_cli.egg-info}/PKG-INFO +1 -1
- {usage_cli-0.34.3 → usage_cli-0.34.4}/LICENSE +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/README.md +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/THIRD_PARTY_NOTICES.md +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/adapters/__init__.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/adapters/agy.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/adapters/claude.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/adapters/codex.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/adapters/grok.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/adapters/muse.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/adapters/rate_limits.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/adapters/registry.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/adapters/types.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/analyzer/__init__.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/analyzer/aggregator.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/analyzer/blocks.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/analyzer/diagnoser.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/analyzer/diagnosis_snapshot.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/analyzer/dispatch_ledger.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/analyzer/history_persist.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/analyzer/insights.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/analyzer/ledger_backfill.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/analyzer/persona_loader.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/analyzer/reporter.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/analyzer/subscription.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/analyzer/usage_snapshot.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/i18n.json +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/installer/__init__.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/installer/claude_pane.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/installer/codex_hook_trust.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/installer/login_item.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/installer/session_hooks.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/installer/setup_hook.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/installer/statusline_settings.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/loaders/__init__.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/loaders/_shared_cache_file.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/loaders/agy_disk_cache.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/loaders/agy_loader.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/loaders/agy_quota_probe.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/loaders/cache_quarantine.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/loaders/chromium_cache.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/loaders/claude_desktop.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/loaders/claude_paths.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/loaders/claude_usage.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/loaders/codex_disk_cache.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/loaders/codex_events.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/loaders/codex_fork_replay.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/loaders/codex_loader.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/loaders/codex_paths.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/loaders/disk_cache_common.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/loaders/disk_cache_lifecycle.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/loaders/grok_loader.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/loaders/grok_quota_probe.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/loaders/history_disk_cache.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/loaders/history_loader.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/loaders/jsonl_limits.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/loaders/jsonl_utils.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/loaders/muse_loader.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/main.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/menubar/__init__.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/menubar/actions.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/menubar/agy.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/menubar/app.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/menubar/chrome.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/menubar/fsevents_watch.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/menubar/grok.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/menubar/manual_refresh.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/menubar/menu.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/menubar/muse.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/menubar/new_badge.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/menubar/notify.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/menubar/popover.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/menubar/prefs.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/menubar/refresh.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/menubar/state.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/menubar/title.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/menubar/update.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/menubar/whats_new.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/panels/__init__.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/panels/base.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/panels/catalog.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/panels/dynamic_height.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/panels/panel_scale.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/panels/panel_window.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/panels/panel_window_state.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/panels/payload.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/panels/web_panel.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/panels/window_drag.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/quota/__init__.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/quota/agy_window_keeper.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/quota/burn_rate.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/quota/codex_window_keeper.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/quota/keeper_outcome.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/quota/notifications.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/quota/quota_snapshot.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/quota/status_payload.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/quota/usage_rate.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/quota/window_keeper.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/setup.cfg +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/setup_app.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_adapters_claude.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_adapters_codex.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_adapters_rate_limits.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_aggregator.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_agy_adapter.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_agy_disk_cache.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_agy_loader.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_agy_quota_probe.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_agy_window_keeper.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_analyzer_blocks.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_analyzer_pipeline.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_app_version.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_burn_rate.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_cache_quarantine.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_check_upstream.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_chromium_cache.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_claude_desktop.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_claude_pane.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_claude_paths.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_codex_consistency.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_codex_hook_trust.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_codex_loader.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_codex_window_keeper.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_compact_cards.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_desktop_fresh_cache.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_desktop_quota_display.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_desktop_quota_review.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_diagnoser.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_disk_cache_shards.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_dispatch_ledger.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_doctor.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_dynamic_height.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_fsevents_watch.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_grok_loader.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_grok_quota_probe.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_history_loader.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_history_persist.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_hook_scripts_are_standalone.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_html_report_snapshot.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_i18n_format_fallback.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_i18n_key_parity.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_i18n_packaged_path.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_insights.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_jsonl_utils.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_keeper_menu.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_keeper_outcome.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_ledger_backfill.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_login_item.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_main.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_manual_refresh.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_menubar.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_menubar_agy.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_menubar_grok.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_menubar_muse.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_menubar_notify.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_menubar_prefs.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_menubar_state.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_menubar_update.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_muse_coverage.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_muse_loader.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_muse_review_regressions.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_new_badge.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_packaged_resources.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_packaging.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_panel_footer_layout.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_panel_scale.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_panel_window_state.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_panels.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_panels_lazy_import.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_persona_loader.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_pricing.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_project_resolver.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_quota_aware.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_quota_label.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_report_cold_read.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_report_daily_chart.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_report_filter_js.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_report_share_mask.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_reporter_build_data.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_service_status.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_session_resume.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_setup_app.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_setup_hook.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_setup_hook_coexistence.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_setup_hook_resume.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_setup_hook_terse.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_subprocess_utils.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_subscription.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_taskbar_menu.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_taskbar_obstacles.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_time_utils.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_tui.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_tui_sprite.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_ui_tables.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_update_checker.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_update_gate.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_update_release_notes.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_usage_cli.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_usage_client.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_usage_diagnosis_snapshot.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_usage_dir_sweeper.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_usage_lang.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_usage_logging.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_usage_notifications.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_usage_rate.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_usage_snapshot.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_usage_snapshot_replay.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_usage_statusline.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_usage_statusline_agy.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_usage_statusline_forwarder.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_usage_statusline_grok.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_usage_terse_mode.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_usage_terse_reminder.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_web_panel_payload.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_whats_new.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_wheel_packaging.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_win_login_item.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_window_keeper.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_windows_manifest.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tests/test_wintray.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tui/__init__.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tui/app.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/tui/sprite.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/ui/__init__.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/ui/html_report.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/ui/report_charts.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/ui/report_daily_chart.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/ui/report_filter.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/ui/report_ledger.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/ui/report_scripts.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/ui/report_styles.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/ui/tables.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/updates/__init__.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/updates/checker.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/updates/gate.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/updates/release_notes.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/updates/whats_new.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_app/__init__.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_app/cli.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_app/doctor.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_cli.egg-info/SOURCES.txt +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_cli.egg-info/dependency_links.txt +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_cli.egg-info/entry_points.txt +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_cli.egg-info/requires.txt +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_cli.egg-info/top_level.txt +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_common/__init__.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_common/app_version.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_common/i18n.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_common/prefs.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_common/pricing.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_common/project_resolver.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_common/service_status.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_common/subprocess_utils.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_common/time_utils.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_common/usage_dir_sweeper.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_common/usage_lang.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_common/usage_logging.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_hooks/__init__.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_hooks/usage_quota_aware.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_hooks/usage_session_resume.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_hooks/usage_statusline.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_hooks/usage_statusline_agy.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_hooks/usage_statusline_forwarder.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_hooks/usage_statusline_grok.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_hooks/usage_terse_mode.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/usage_hooks/usage_terse_reminder.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/wintray/__init__.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/wintray/app.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/wintray/login_item.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/wintray/menu.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/wintray/prefs.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/wintray/quota_label.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/wintray/taskbar_menu.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/wintray/taskbar_obstacles.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/wintray/taskbar_overlay.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/wintray/watch.py +0 -0
- {usage_cli-0.34.3 → usage_cli-0.34.4}/wintray/whats_new.py +0 -0
|
@@ -76,7 +76,8 @@ def validate_muse_cache(payload: object) -> MuseQuotaResult | None:
|
|
|
76
76
|
if not isinstance(window, dict):
|
|
77
77
|
return None
|
|
78
78
|
used, reset = window.get("used_percent"), window.get("resets_at")
|
|
79
|
-
|
|
79
|
+
# An exhausted window reports past 100 (e.g. 104); the row clamps it for display.
|
|
80
|
+
if not _number(used) or not _number(reset) or used < 0:
|
|
80
81
|
return None
|
|
81
82
|
windows.append(MuseQuotaWindow(used_percent=float(used), resets_at=float(reset)))
|
|
82
83
|
return MuseQuotaResult(
|
|
@@ -60,13 +60,21 @@ def test_read_missing_corrupt_and_good_cache() -> None:
|
|
|
60
60
|
assert probe.read_cache() == quota()
|
|
61
61
|
|
|
62
62
|
|
|
63
|
-
@pytest.mark.parametrize("value", [True, None, "25", -1,
|
|
63
|
+
@pytest.mark.parametrize("value", [True, None, "25", -1, float("nan"), float("inf"), 10**400])
|
|
64
64
|
def test_invalid_percent_rejected(value: object) -> None:
|
|
65
65
|
raw = event()
|
|
66
66
|
raw["payload"]["allowance"]["window"]["used_percent"] = value
|
|
67
67
|
assert probe.parse_muse_allowance(json.dumps(raw), 1000) is None
|
|
68
68
|
|
|
69
69
|
|
|
70
|
+
@pytest.mark.parametrize("value", [100, 104, 105, 250])
|
|
71
|
+
def test_exhausted_window_past_100_is_kept(value: int) -> None:
|
|
72
|
+
raw = event()
|
|
73
|
+
raw["payload"]["allowance"]["window"]["used_percent"] = value
|
|
74
|
+
result = probe.parse_muse_allowance(json.dumps(raw), 1000)
|
|
75
|
+
assert result is not None and result["window"]["used_percent"] == value
|
|
76
|
+
|
|
77
|
+
|
|
70
78
|
def test_missing_weekly_is_rejected() -> None:
|
|
71
79
|
raw = event()
|
|
72
80
|
del raw["payload"]["allowance"]["weekly"]
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|