mammoth-cli 2.2.70__tar.gz → 2.2.72__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.
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/PKG-INFO +6 -5
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/README.md +4 -3
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/__init__.py +1 -1
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/auth.py +3 -7
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/upgrade.py +25 -10
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/context/oauth.py +32 -30
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/errors/envelope.py +0 -1
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/runtime/updates.py +33 -12
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/pyproject.toml +2 -2
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/.gitignore +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/LICENSE +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/__main__.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/app.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/about-mammoth.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities-misc.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/calc.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-qa.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-style.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-template.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/data-app.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/link.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/log.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/resolve.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/token.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view-transform.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/build-an-agent.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/database-import.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/end-to-end.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/file-import.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/need-action.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/scheduling.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/report-checklist.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/__init__.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/_lazy.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/activity.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/addon.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/agent.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/ai.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/annotation.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/automation.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/batch.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/billing.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/browse.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/calc.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/capability.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/client_app.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/completion.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/config.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/connector.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/context.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/dashboard.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/data_app.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/dataset.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/doctor.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/external_key.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/file.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/folder.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/help_summaries.json +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/job.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/link.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/notification.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/parameter.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/project.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/registry.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/report.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/resolve.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/schedule.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/schema.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/skill.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/snippet.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/support.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/template.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/trash.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/user.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/view.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/view_ops.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/view_profile.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/webhook.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/workflow.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/commands/workspace.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/context/__init__.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/context/credentials.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/context/endpoint.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/context/keyring_backend.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/context/profiles.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/context/resolver.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/contracts/__init__.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/contracts/auth.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/embed.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/errors/__init__.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/manifest/__init__.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/manifest/loader.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/messages/__init__.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/output/__init__.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/output/envelope.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/output/normalize.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/output/policy.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/output/progress.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/output/render.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/py.typed +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/runtime/__init__.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/runtime/confirm.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/runtime/dataset_health.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/runtime/dryrun.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/runtime/dryrun_targets.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/runtime/embedded.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/runtime/executor.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/runtime/input_loader.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/runtime/intent_only.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/runtime/invocation.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/runtime/locked_files.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/runtime/new_data.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/runtime/opens.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/runtime/options.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/runtime/parents.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/runtime/runlog.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/runtime/session.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/runtime/state.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/runtime/strict.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/runtime/validate.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/runtime/verify.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/__init__.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/append_blank_columns.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/argspec.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/board_values.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/coerce.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/command_contract.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/conditional_format.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/conditions.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/dashboard_filters.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/dashboard_pages.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/dashboard_review.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/data_profile.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/data_quality.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/dispatch.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/explore_cards.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/factory.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/folder_ids.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/input_fields.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/job_outcome.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/listing.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/local_time.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/mapping.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/openapi_types.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/positionals.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/protocol.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/read_queries.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/sdk_service.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/sql_check.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/stored_stats.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/testing.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/text_dates.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/type_system.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/view_analysis.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/view_variants.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/services/write_impact.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/skills/__init__.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/skills/installer.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/skills/steering.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/testing.py +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/activity.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/addon.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/agent.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/ai.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/annotation.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/auth.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/automation.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/batch.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/billing.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/browse.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/calc.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/capability.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/client-app.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/completion.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/config.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/connector.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/context.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/dashboard.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/data-app.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/dataset.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/doctor.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/external-key.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/file.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/folder.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/job.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/link.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/log.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/notification.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/parameter.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/project.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/report.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/resolve.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/schedule.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/schema.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/skill.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/snippet.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/support.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/template.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/token.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/trash.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/upgrade.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/user.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/version.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/view.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/webhook.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/workflow.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/commands/workspace.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/edits-target.source.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/openapi-operations.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/schema-v1.json +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/sdk-catalog.source.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/manifests/sdk-methods.yaml +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/openapi/metadata.json +0 -0
- {mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/spec/openapi/openapi.json +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mammoth-cli
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.72
|
|
4
4
|
Summary: Command-line interface for the Mammoth Analytics platform
|
|
5
5
|
Project-URL: homepage, https://mammoth.io
|
|
6
6
|
Project-URL: repository, https://github.com/EdgeMetric/mammothsdk
|
|
@@ -17,7 +17,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
|
17
17
|
Requires-Python: <3.15,>=3.12
|
|
18
18
|
Requires-Dist: jsonschema>=4.20
|
|
19
19
|
Requires-Dist: keyring<26,>=25.7
|
|
20
|
-
Requires-Dist: mammoth-io<0.9,>=0.8.
|
|
20
|
+
Requires-Dist: mammoth-io<0.9,>=0.8.33
|
|
21
21
|
Requires-Dist: platformdirs<5,>=4.10
|
|
22
22
|
Requires-Dist: pydantic<3,>=2.12.5
|
|
23
23
|
Requires-Dist: pyyaml<7,>=6
|
|
@@ -242,10 +242,11 @@ mammoth skill install --input '{"agents": ["codex"], "scope": "project"}'
|
|
|
242
242
|
Use `mammoth skill update` after a CLI upgrade. It refreshes copies owned by the
|
|
243
243
|
installer and reports modified copies instead of silently replacing them.
|
|
244
244
|
|
|
245
|
-
The CLI checks PyPI for a newer release at most once
|
|
245
|
+
The CLI checks PyPI for a newer release at most once an hour, after a command
|
|
246
246
|
has finished: every JSON envelope carries `meta.update_available` and human
|
|
247
|
-
output adds one stderr line.
|
|
248
|
-
|
|
247
|
+
output adds one stderr line. In a terminal it also upgrades itself before the
|
|
248
|
+
next command; set `MAMMOTH_AUTO_UPGRADE=0` to stop that, or
|
|
249
|
+
`MAMMOTH_NO_UPDATE_CHECK=1` to turn the check off (see
|
|
249
250
|
[Upgrade](https://github.com/EdgeMetric/mammothsdk/blob/main/mammoth-cli/docs/upgrade.md)).
|
|
250
251
|
|
|
251
252
|
## What you can do
|
|
@@ -214,10 +214,11 @@ mammoth skill install --input '{"agents": ["codex"], "scope": "project"}'
|
|
|
214
214
|
Use `mammoth skill update` after a CLI upgrade. It refreshes copies owned by the
|
|
215
215
|
installer and reports modified copies instead of silently replacing them.
|
|
216
216
|
|
|
217
|
-
The CLI checks PyPI for a newer release at most once
|
|
217
|
+
The CLI checks PyPI for a newer release at most once an hour, after a command
|
|
218
218
|
has finished: every JSON envelope carries `meta.update_available` and human
|
|
219
|
-
output adds one stderr line.
|
|
220
|
-
|
|
219
|
+
output adds one stderr line. In a terminal it also upgrades itself before the
|
|
220
|
+
next command; set `MAMMOTH_AUTO_UPGRADE=0` to stop that, or
|
|
221
|
+
`MAMMOTH_NO_UPDATE_CHECK=1` to turn the check off (see
|
|
221
222
|
[Upgrade](https://github.com/EdgeMetric/mammothsdk/blob/main/mammoth-cli/docs/upgrade.md)).
|
|
222
223
|
|
|
223
224
|
## What you can do
|
|
@@ -23,7 +23,7 @@ import typer
|
|
|
23
23
|
from pydantic import ValidationError
|
|
24
24
|
|
|
25
25
|
from mammoth_cli.context import credentials, oauth, profiles, resolver
|
|
26
|
-
from mammoth_cli.context.endpoint import
|
|
26
|
+
from mammoth_cli.context.endpoint import resolve_base_url
|
|
27
27
|
from mammoth_cli.context.resolver import ResolvedAuth, resolve_auth
|
|
28
28
|
from mammoth_cli.contracts.auth import LoginRequest
|
|
29
29
|
from mammoth_cli.errors.envelope import (
|
|
@@ -306,13 +306,9 @@ def _choose_method(
|
|
|
306
306
|
return method
|
|
307
307
|
if invocation.input_file is not None or blockers:
|
|
308
308
|
return "token"
|
|
309
|
-
available = oauth.has_client_id(server_prefix)
|
|
310
|
-
prefix = server_prefix if server_prefix is not None else DEFAULT_SERVER_PREFIX
|
|
311
|
-
browser_note = "recommended" if available else f"(not yet available on {prefix})"
|
|
312
|
-
device_note = "no browser on this machine" if available else browser_note
|
|
313
309
|
typer.echo("How do you want to sign in?", err=True)
|
|
314
|
-
typer.echo(
|
|
315
|
-
typer.echo(
|
|
310
|
+
typer.echo(" 1) Browser (OAuth) recommended", err=True)
|
|
311
|
+
typer.echo(" 2) Device code no browser on this machine", err=True)
|
|
316
312
|
typer.echo(" 3) Paste an API token for CI and scripts", err=True)
|
|
317
313
|
if sys.stdin.isatty():
|
|
318
314
|
return _choose_by_keypress()
|
|
@@ -278,6 +278,22 @@ def run_upgrade(command: list[str]) -> subprocess.CompletedProcess[str]:
|
|
|
278
278
|
) from exc
|
|
279
279
|
|
|
280
280
|
|
|
281
|
+
def installed_version() -> str | None:
|
|
282
|
+
"""The version a fresh interpreter reports, i.e. what the upgrade really installed."""
|
|
283
|
+
try:
|
|
284
|
+
result = subprocess.run( # noqa: S603 - fixed argv, no shell
|
|
285
|
+
[sys.executable, "-m", "mammoth_cli", "--version"],
|
|
286
|
+
capture_output=True,
|
|
287
|
+
text=True,
|
|
288
|
+
timeout=30,
|
|
289
|
+
check=False,
|
|
290
|
+
)
|
|
291
|
+
except (OSError, subprocess.SubprocessError):
|
|
292
|
+
return None
|
|
293
|
+
output = result.stdout.strip().splitlines()
|
|
294
|
+
return output[-1].strip() if result.returncode == 0 and output else None
|
|
295
|
+
|
|
296
|
+
|
|
281
297
|
def _envelope(
|
|
282
298
|
*,
|
|
283
299
|
manager: str,
|
|
@@ -379,17 +395,16 @@ def perform(invocation: Invocation, *, check: bool, target_version: str | None)
|
|
|
379
395
|
},
|
|
380
396
|
hint=f"Run it manually to see full output: {' '.join(command)}",
|
|
381
397
|
)
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
command=command,
|
|
390
|
-
),
|
|
391
|
-
{},
|
|
398
|
+
envelope = _envelope(
|
|
399
|
+
manager=manager,
|
|
400
|
+
current=current,
|
|
401
|
+
latest=latest,
|
|
402
|
+
target=target_version,
|
|
403
|
+
action=ACTION_UPGRADED,
|
|
404
|
+
command=command,
|
|
392
405
|
)
|
|
406
|
+
envelope["installed_version"] = installed_version()
|
|
407
|
+
return envelope, {}
|
|
393
408
|
|
|
394
409
|
|
|
395
410
|
def upgrade_command(
|
|
@@ -20,6 +20,7 @@ from __future__ import annotations
|
|
|
20
20
|
|
|
21
21
|
import base64
|
|
22
22
|
import contextlib
|
|
23
|
+
import functools
|
|
23
24
|
import hashlib
|
|
24
25
|
import html
|
|
25
26
|
import http.server
|
|
@@ -34,18 +35,14 @@ from dataclasses import dataclass
|
|
|
34
35
|
|
|
35
36
|
from mammoth_cli.context import credentials
|
|
36
37
|
from mammoth_cli.context.credentials import OAuthSession
|
|
37
|
-
from mammoth_cli.context.endpoint import DEFAULT_SERVER_PREFIX
|
|
38
|
+
from mammoth_cli.context.endpoint import DEFAULT_SERVER_PREFIX, resolve_base_url
|
|
38
39
|
from mammoth_cli.context.profiles import config_dir
|
|
39
|
-
from mammoth_cli.errors.envelope import EXIT_AUTH,
|
|
40
|
+
from mammoth_cli.errors.envelope import EXIT_AUTH, CliError
|
|
40
41
|
|
|
41
|
-
#: The first-party CLI's OAuth client id
|
|
42
|
-
#: server
|
|
43
|
-
#:
|
|
44
|
-
|
|
45
|
-
"challenger": "oc_aea5c2ce829da3f8",
|
|
46
|
-
"koyal": "oc_f2566336e235795c",
|
|
47
|
-
"app": "oc_b559f85cfb4de34c",
|
|
48
|
-
}
|
|
42
|
+
#: The first-party CLI's OAuth client id: the same in every environment. The
|
|
43
|
+
#: server publishes it in its OAuth metadata (see :func:`published_client_id`);
|
|
44
|
+
#: this is the id used when it publishes nothing.
|
|
45
|
+
BUILTIN_CLIENT_ID = "mammoth-cli"
|
|
49
46
|
|
|
50
47
|
#: Refresh when the access token has less than this long to live.
|
|
51
48
|
REFRESH_MARGIN_SECONDS = 120
|
|
@@ -55,7 +52,6 @@ _LOCK_POLL_SECONDS = 0.1
|
|
|
55
52
|
_LOCK_WAIT_SECONDS = 60.0
|
|
56
53
|
|
|
57
54
|
CODE_LOGIN_EXPIRED = "login_expired"
|
|
58
|
-
CODE_OAUTH_UNAVAILABLE = "oauth_unavailable"
|
|
59
55
|
CODE_OAUTH_LOGIN_FAILED = "oauth_login_failed"
|
|
60
56
|
CODE_DEVICE_LOGIN_EXPIRED = "device_login_expired"
|
|
61
57
|
|
|
@@ -78,30 +74,36 @@ def login_expired_error() -> CliError:
|
|
|
78
74
|
)
|
|
79
75
|
|
|
80
76
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
return (
|
|
84
|
-
server_prefix if server_prefix is not None else DEFAULT_SERVER_PREFIX
|
|
85
|
-
) in OAUTH_CLIENT_IDS
|
|
77
|
+
#: The metadata field carrying the CLI's client id on servers that publish it.
|
|
78
|
+
METADATA_CLIENT_ID_FIELD = "mammoth_cli_client_id"
|
|
86
79
|
|
|
87
80
|
|
|
88
|
-
|
|
89
|
-
|
|
81
|
+
@functools.cache
|
|
82
|
+
def published_client_id(prefix: str) -> str | None:
|
|
83
|
+
"""The client id the server publishes in its OAuth metadata, or None.
|
|
90
84
|
|
|
91
|
-
|
|
92
|
-
|
|
85
|
+
One GET per environment per process. None when the field is absent, the
|
|
86
|
+
server cannot be reached, or it answers anything but metadata: the caller
|
|
87
|
+
then uses :data:`BUILTIN_CLIENT_ID`.
|
|
93
88
|
"""
|
|
94
|
-
|
|
89
|
+
from mammoth import oauth as sdk_oauth
|
|
90
|
+
|
|
95
91
|
try:
|
|
96
|
-
|
|
97
|
-
except
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
92
|
+
status, body = sdk_oauth.metadata_request(resolve_base_url(prefix))
|
|
93
|
+
except CliError:
|
|
94
|
+
return None
|
|
95
|
+
except sdk_oauth.OAuthTransportError:
|
|
96
|
+
return None
|
|
97
|
+
if status != 200:
|
|
98
|
+
return None
|
|
99
|
+
value = body.get(METADATA_CLIENT_ID_FIELD) if isinstance(body, dict) else None
|
|
100
|
+
return value if isinstance(value, str) and value else None
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def client_id_for(server_prefix: str | None) -> str:
|
|
104
|
+
"""Return the CLI's OAuth client id: the published one, else the built-in one."""
|
|
105
|
+
prefix = server_prefix if server_prefix is not None else DEFAULT_SERVER_PREFIX
|
|
106
|
+
return published_client_id(prefix) or BUILTIN_CLIENT_ID
|
|
105
107
|
|
|
106
108
|
|
|
107
109
|
# --- PKCE ---------------------------------------------------------------------
|
|
@@ -161,7 +161,6 @@ ERROR_SUMMARIES: dict[str, str] = {
|
|
|
161
161
|
"not_authenticated": _S_SIGN_IN,
|
|
162
162
|
"not_implemented": _S_UNAVAILABLE,
|
|
163
163
|
"oauth_login_failed": "The browser sign-in didn't complete.",
|
|
164
|
-
"oauth_unavailable": "Browser sign-in isn't available on this server.",
|
|
165
164
|
"oauth_grant_revoke_failed": "The server did not revoke this sign-in grant.",
|
|
166
165
|
"outcome_unknown": "It isn't clear whether this step went through. Check before trying again.",
|
|
167
166
|
"pipeline_changed": "The pipeline was changed by someone else while this step ran.",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
"""
|
|
1
|
+
"""Hourly update check, and the automatic upgrade (on by default).
|
|
2
2
|
|
|
3
3
|
The CLI never blocks a command on the network for this. A command reads the
|
|
4
4
|
cached answer (``update-check.json`` in the platform state directory, next to
|
|
5
|
-
the run log's ``logs/``) and, when that answer is older than
|
|
5
|
+
the run log's ``logs/``) and, when that answer is older than an hour, refreshes
|
|
6
6
|
it *after* its own output has been written, with a short timeout and every
|
|
7
7
|
failure swallowed. The hint therefore appears from the next command on.
|
|
8
8
|
|
|
@@ -12,11 +12,13 @@ What a caller sees:
|
|
|
12
12
|
``{"current", "latest", "command"}`` when a newer release is on PyPI.
|
|
13
13
|
* one line on stderr in human output modes (never in ``json``/``ndjson``).
|
|
14
14
|
* ``MAMMOTH_NO_UPDATE_CHECK=1`` disables the check and the hint entirely.
|
|
15
|
-
*
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
* The upgrade runs before the command, once per detected release, through the
|
|
16
|
+
same manager detection as ``mammoth upgrade``; the running command still
|
|
17
|
+
completes on the version that started it. ``MAMMOTH_AUTO_UPGRADE=0`` (or
|
|
18
|
+
``false``/``no``/``off``) turns it off. Unless ``MAMMOTH_AUTO_UPGRADE`` is
|
|
19
|
+
set to an on value (``1``), it also stays off when stdout is not a terminal
|
|
20
|
+
or ``CI`` is set, because pinned environments (locks, CI, scripts) must
|
|
21
|
+
never change underneath a task.
|
|
20
22
|
|
|
21
23
|
``MAMMOTH_UPDATE_CACHE`` overrides the cache file path (tests and sandboxes).
|
|
22
24
|
"""
|
|
@@ -41,7 +43,7 @@ AUTO_UPGRADE_ENV = "MAMMOTH_AUTO_UPGRADE"
|
|
|
41
43
|
CACHE_ENV = "MAMMOTH_UPDATE_CACHE"
|
|
42
44
|
|
|
43
45
|
#: How long a cached PyPI answer is trusted.
|
|
44
|
-
CACHE_TTL = _dt.timedelta(hours=
|
|
46
|
+
CACHE_TTL = _dt.timedelta(hours=1)
|
|
45
47
|
#: The background refresh must not hold a finished command hostage.
|
|
46
48
|
REFRESH_TIMEOUT_SECONDS = 3.0
|
|
47
49
|
#: Commands that manage the install themselves; no hint, no auto-upgrade.
|
|
@@ -55,6 +57,7 @@ _NO_NOTICE = frozenset({"upgrade"})
|
|
|
55
57
|
UPGRADE_COMMAND = "mammoth upgrade --yes"
|
|
56
58
|
|
|
57
59
|
_TRUTHY = frozenset({"1", "true", "yes", "on"})
|
|
60
|
+
_FALSY = frozenset({"0", "false", "no", "off"})
|
|
58
61
|
|
|
59
62
|
|
|
60
63
|
def _flag(name: str) -> bool:
|
|
@@ -66,8 +69,23 @@ def enabled() -> bool:
|
|
|
66
69
|
return not _flag(DISABLE_ENV) and not embedded.active()
|
|
67
70
|
|
|
68
71
|
|
|
72
|
+
def _interactive_session() -> bool:
|
|
73
|
+
"""A terminal on stdout and no ``CI`` variable: a person is running this."""
|
|
74
|
+
return sys.stdout.isatty() and not (os.environ.get("CI") or "").strip()
|
|
75
|
+
|
|
76
|
+
|
|
69
77
|
def auto_upgrade_enabled() -> bool:
|
|
70
|
-
|
|
78
|
+
"""On by default for interactive sessions; ``MAMMOTH_AUTO_UPGRADE`` overrides.
|
|
79
|
+
|
|
80
|
+
``0``/``false``/``no``/``off`` turns it off; ``1``/``true``/``yes``/``on``
|
|
81
|
+
forces it on even without a terminal or inside CI.
|
|
82
|
+
"""
|
|
83
|
+
if not enabled():
|
|
84
|
+
return False
|
|
85
|
+
setting = (os.environ.get(AUTO_UPGRADE_ENV) or "").strip().lower()
|
|
86
|
+
if setting in _FALSY:
|
|
87
|
+
return False
|
|
88
|
+
return setting in _TRUTHY or _interactive_session()
|
|
71
89
|
|
|
72
90
|
|
|
73
91
|
def cache_path() -> Path:
|
|
@@ -153,10 +171,13 @@ def available_update(command_id: str | None = None) -> dict[str, Any] | None:
|
|
|
153
171
|
|
|
154
172
|
|
|
155
173
|
def hint_line(update: dict[str, Any]) -> str:
|
|
156
|
-
|
|
174
|
+
line = (
|
|
157
175
|
f"mammoth-cli {update['latest']} is available (you have {update['current']}); "
|
|
158
176
|
f"run: {update['command']}"
|
|
159
177
|
)
|
|
178
|
+
if auto_upgrade_enabled():
|
|
179
|
+
line += f" (auto-upgrade is on; turn it off with {AUTO_UPGRADE_ENV}=0)"
|
|
180
|
+
return line
|
|
160
181
|
|
|
161
182
|
|
|
162
183
|
def _fetch_latest() -> str | None:
|
|
@@ -206,7 +227,7 @@ def refresh_in_background(command_id: str | None = None) -> None:
|
|
|
206
227
|
"""Refresh a stale cache in a detached process, so the command exits at once.
|
|
207
228
|
|
|
208
229
|
:func:`refresh_if_stale` asks PyPI with a 3 s timeout; run inline it keeps
|
|
209
|
-
the finished command alive for up to that long once
|
|
230
|
+
the finished command alive for up to that long once an hour. The cache is
|
|
210
231
|
stamped first so concurrent commands do not each spawn a check; the child
|
|
211
232
|
(``python -m mammoth_cli.runtime.updates``) writes the answer.
|
|
212
233
|
"""
|
|
@@ -241,7 +262,7 @@ def emit_hint(update: dict[str, Any] | None, *, output: str) -> None:
|
|
|
241
262
|
|
|
242
263
|
|
|
243
264
|
def auto_upgrade(command_id: str, run_log: Any = None) -> dict[str, Any] | None:
|
|
244
|
-
"""Upgrade in place when
|
|
265
|
+
"""Upgrade in place when auto-upgrade is enabled and a release is cached.
|
|
245
266
|
|
|
246
267
|
Returns a record of what happened (also written to ``run_log`` when
|
|
247
268
|
given), or ``None`` when nothing was attempted. The current process keeps
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "mammoth-cli"
|
|
3
|
-
version = "2.2.
|
|
3
|
+
version = "2.2.72"
|
|
4
4
|
description = "Command-line interface for the Mammoth Analytics platform"
|
|
5
5
|
authors = [{name = "Mammoth Analytics", email = "support@mammoth.io"}]
|
|
6
6
|
readme = "README.md"
|
|
7
7
|
license = "LicenseRef-Proprietary"
|
|
8
8
|
requires-python = ">=3.12,<3.15"
|
|
9
9
|
dependencies = [
|
|
10
|
-
"mammoth-io (>=0.8.
|
|
10
|
+
"mammoth-io (>=0.8.33,<0.9)",
|
|
11
11
|
"typer (>=0.27,<0.28)",
|
|
12
12
|
"rich (>=15,<16)",
|
|
13
13
|
"platformdirs (>=4.10,<5)",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.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
|
|
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
|
{mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/input.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mammoth_cli-2.2.70 → mammoth_cli-2.2.72}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.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
|