mammoth-cli 2.2.75__tar.gz → 2.2.77__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.75 → mammoth_cli-2.2.77}/PKG-INFO +2 -2
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/__init__.py +1 -1
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/app.py +24 -1
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities.md +1 -1
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +3 -3
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +50 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +20 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +1 -1
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +36 -9
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +6 -2
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +5 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/capability.py +2 -42
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/dashboard.py +51 -10
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/dataset.py +253 -1
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/help_summaries.json +106 -99
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/registry.py +7 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/schema.py +89 -8
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/view.py +165 -45
- mammoth_cli-2.2.77/mammoth_cli/commands/view_drivers.py +351 -0
- mammoth_cli-2.2.77/mammoth_cli/commands/view_forecast.py +335 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/view_profile.py +10 -2
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/board_values.py +38 -1
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/command_contract.py +30 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/dashboard_review.py +27 -4
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/data_profile.py +43 -0
- mammoth_cli-2.2.77/mammoth_cli/services/period_analysis.py +293 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/positionals.py +56 -0
- mammoth_cli-2.2.77/mammoth_cli/services/schema_diff.py +117 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/pyproject.toml +2 -2
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/dataset.yaml +230 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/view.yaml +131 -1
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/workflow.yaml +2 -2
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/edits-target.source.yaml +2 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/sdk-catalog.source.yaml +2 -2
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/sdk-methods.yaml +48 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/.gitignore +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/LICENSE +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/README.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/__main__.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/about-mammoth.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities-misc.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/calc.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/collection.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-qa.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-style.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-template.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/data-app.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/link.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/log.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/resolve.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/token.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view-transform.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/build-an-agent.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/database-import.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/end-to-end.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/file-import.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/need-action.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/rest-api-import.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/scheduling.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/report-checklist.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/__init__.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/_lazy.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/activity.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/addon.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/agent.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/ai.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/annotation.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/auth.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/automation.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/batch.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/billing.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/browse.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/calc.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/client_app.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/completion.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/config.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/connector.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/context.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/data_app.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/doctor.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/external_key.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/file.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/folder.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/job.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/link.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/notification.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/parameter.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/project.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/report.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/resolve.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/schedule.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/skill.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/snippet.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/support.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/template.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/trash.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/upgrade.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/user.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/view_explore.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/view_ops.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/webhook.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/workflow.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/workspace.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/context/__init__.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/context/credentials.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/context/endpoint.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/context/keyring_backend.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/context/oauth.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/context/profiles.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/context/resolver.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/contracts/__init__.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/contracts/auth.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/embed.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/errors/__init__.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/errors/envelope.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/manifest/__init__.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/manifest/loader.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/messages/__init__.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/output/__init__.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/output/envelope.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/output/normalize.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/output/policy.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/output/progress.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/output/render.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/py.typed +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/__init__.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/confirm.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/dataset_health.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/dryrun.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/dryrun_targets.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/embedded.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/executor.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/input_loader.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/intent_only.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/invocation.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/locked_files.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/new_data.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/opens.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/options.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/parents.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/runlog.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/session.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/state.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/strict.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/updates.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/validate.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/verify.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/__init__.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/append_blank_columns.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/argspec.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/coerce.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/conditional_format.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/conditions.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/dashboard_filters.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/dashboard_pages.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/data_quality.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/dispatch.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/explore_card_edit.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/explore_cards.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/explore_to_figure.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/explore_to_image.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/factory.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/folder_ids.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/input_fields.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/job_outcome.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/listing.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/local_time.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/mapping.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/openapi_types.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/protocol.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/read_queries.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/sdk_service.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/sql_check.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/stored_stats.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/testing.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/text_dates.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/type_system.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/view_analysis.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/view_variants.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/write_impact.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/skills/__init__.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/skills/installer.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/skills/steering.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/testing.py +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/activity.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/addon.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/agent.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/ai.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/annotation.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/auth.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/automation.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/batch.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/billing.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/browse.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/calc.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/capability.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/client-app.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/collection.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/completion.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/config.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/connector.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/context.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/dashboard.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/data-app.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/doctor.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/external-key.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/file.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/folder.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/job.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/link.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/log.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/notification.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/parameter.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/project.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/report.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/resolve.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/schedule.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/schema.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/skill.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/snippet.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/support.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/template.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/token.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/trash.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/upgrade.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/user.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/version.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/webhook.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/workspace.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/openapi-operations.yaml +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/schema-v1.json +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/openapi/metadata.json +0 -0
- {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/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.77
|
|
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
|
|
@@ -18,7 +18,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
|
18
18
|
Requires-Python: <3.15,>=3.12
|
|
19
19
|
Requires-Dist: jsonschema>=4.20
|
|
20
20
|
Requires-Dist: keyring<26,>=25.7
|
|
21
|
-
Requires-Dist: mammoth-io<0.9,>=0.8.
|
|
21
|
+
Requires-Dist: mammoth-io<0.9,>=0.8.41
|
|
22
22
|
Requires-Dist: platformdirs<5,>=4.10
|
|
23
23
|
Requires-Dist: pydantic<3,>=2.12.5
|
|
24
24
|
Requires-Dist: pyyaml<7,>=6
|
|
@@ -14,6 +14,7 @@ positionals and options are added per family as each handler is implemented.
|
|
|
14
14
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
|
+
import importlib
|
|
17
18
|
import inspect
|
|
18
19
|
import json
|
|
19
20
|
import re
|
|
@@ -202,6 +203,7 @@ _SUBGROUP_DESCRIPTIONS = {
|
|
|
202
203
|
"dashboard video": "Export a dashboard as a video.",
|
|
203
204
|
"data-app user": "List and remove the users of a data app.",
|
|
204
205
|
"dataset broken-rows": "List and resolve rows that failed to load.",
|
|
206
|
+
"dataset definition": "List, save and remove what terms mean for a dataset.",
|
|
205
207
|
"dataset file-settings": "Read, update and undo a dataset's file settings.",
|
|
206
208
|
"dataset interpretation": "Preview and confirm how a file is interpreted.",
|
|
207
209
|
"parameter group": "Create, list, update, reorder and delete parameter groups.",
|
|
@@ -1178,7 +1180,8 @@ def _dry_run(handler: Handler, invocation: Invocation) -> tuple[Any, dict[str, A
|
|
|
1178
1180
|
|
|
1179
1181
|
|
|
1180
1182
|
#: One-line help for commands that share the generic ``generated_dashboard`` handler, whose
|
|
1181
|
-
#: docstring describes the dispatch, not the command.
|
|
1183
|
+
#: docstring describes the dispatch, not the command. A command listed here overrides
|
|
1184
|
+
#: the SDK method summary :func:`_sdk_method_summary` gives every other generated command.
|
|
1182
1185
|
_GENERATED_SUMMARIES = {
|
|
1183
1186
|
"auth.connected-apps.list": "List the apps connected to your account; each id is a grant id.",
|
|
1184
1187
|
"auth.connected-apps.revoke": (
|
|
@@ -1246,6 +1249,24 @@ _GENERATED_SUMMARIES = {
|
|
|
1246
1249
|
}
|
|
1247
1250
|
|
|
1248
1251
|
|
|
1252
|
+
def _sdk_method_summary(command_id: str) -> str:
|
|
1253
|
+
"""First docstring line of the SDK method a generated command calls.
|
|
1254
|
+
|
|
1255
|
+
The generic ``generated_dashboard`` handler's own docstring describes the
|
|
1256
|
+
dispatch, so these commands take their help from the SDK method instead.
|
|
1257
|
+
Raises when the manifest has no such method or it has no docstring.
|
|
1258
|
+
"""
|
|
1259
|
+
record = command_by_id(command_id)
|
|
1260
|
+
if record is None:
|
|
1261
|
+
raise LookupError(f"{command_id}: no manifest record")
|
|
1262
|
+
module_name, class_name, method_name = str(record["sdk_symbol"]).rsplit(".", 2)
|
|
1263
|
+
method = getattr(getattr(importlib.import_module(module_name), class_name), method_name)
|
|
1264
|
+
doc = inspect.getdoc(method)
|
|
1265
|
+
if not doc:
|
|
1266
|
+
raise LookupError(f"{command_id}: {record['sdk_symbol']} has no docstring")
|
|
1267
|
+
return doc.splitlines()[0].strip().replace("``", "'")
|
|
1268
|
+
|
|
1269
|
+
|
|
1249
1270
|
def live_command_summary(command_id: str) -> str | None:
|
|
1250
1271
|
"""The backing handler's docstring first line, the lead of a command's help.
|
|
1251
1272
|
|
|
@@ -1255,6 +1276,8 @@ def live_command_summary(command_id: str) -> str | None:
|
|
|
1255
1276
|
if command_id in _GENERATED_SUMMARIES:
|
|
1256
1277
|
return _GENERATED_SUMMARIES[command_id]
|
|
1257
1278
|
handler = HANDLERS.get(command_id) or BESPOKE.get(command_id)
|
|
1279
|
+
if getattr(handler, "__name__", None) == "generated_dashboard":
|
|
1280
|
+
return _sdk_method_summary(command_id)
|
|
1258
1281
|
doc = inspect.getdoc(handler) if handler is not None else None
|
|
1259
1282
|
if not doc:
|
|
1260
1283
|
return None
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# What is proven on release
|
|
2
2
|
|
|
3
3
|
Generated from `docs/release-capability-matrix.json`; do not edit by hand.
|
|
4
|
-
The CLI publishes
|
|
4
|
+
The CLI publishes 747 commands. 516 of them bind one of the 545 API operations in the matrix; the remainder are local commands (`schema`, `auth`, `doctor`, `log`, ...) or typed variants that share an operation (`view transform *` commands submit through `view.task.add`, except `rename-columns` and `sort`, which set view display properties through `view.update`). 262 bound commands ran once successfully on release, 1 are not supported there, and the rest are untried. Untried is not broken: discover the contract with `mammoth schema get COMMAND_ID`, run it, and treat the structured error envelope as the answer. Use an untried command normally: confirm a write with the user first, check its result with a read afterwards, and never refuse a command only because it is untried.
|
|
5
5
|
|
|
6
6
|
Status meanings:
|
|
7
7
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Published CLI command catalog
|
|
2
2
|
|
|
3
|
-
This generated catalog is a lookup table for every command in the published CLI manifest, currently
|
|
3
|
+
This generated catalog is a lookup table for every command in the published CLI manifest, currently 747; each entry carries its release status line. It is a command-contract index, not an assertion that every backend/OpenAPI operation has a CLI binding. For an exact local CLI contract, run `mammoth schema get COMMAND_ID`; `mammoth capability list` is an API-binding inventory and can omit typed/local CLI routes. For focused workflows, read the [recipes index](recipes/index.md). Sensitive structured input must come from a private file or pipe; never put secrets in literal argv.
|
|
4
4
|
|
|
5
5
|
Load only the applicable domain file:
|
|
6
6
|
|
|
@@ -27,7 +27,7 @@ Load only the applicable domain file:
|
|
|
27
27
|
- [dashboard-style](commands/dashboard-style.md) — 10 published commands
|
|
28
28
|
- [dashboard](commands/dashboard.md) — 108 published commands
|
|
29
29
|
- [data-app](commands/data-app.md) — 12 published commands
|
|
30
|
-
- [dataset](commands/dataset.md) —
|
|
30
|
+
- [dataset](commands/dataset.md) — 27 published commands
|
|
31
31
|
- [doctor](commands/doctor.md) — 1 published commands
|
|
32
32
|
- [external-key](commands/external-key.md) — 4 published commands
|
|
33
33
|
- [file](commands/file.md) — 11 published commands
|
|
@@ -52,7 +52,7 @@ Load only the applicable domain file:
|
|
|
52
52
|
- [user](commands/user.md) — 8 published commands
|
|
53
53
|
- [version](commands/version.md) — 1 published commands
|
|
54
54
|
- [view-transform](commands/view-transform.md) — 34 published commands
|
|
55
|
-
- [view](commands/view.md) —
|
|
55
|
+
- [view](commands/view.md) — 103 published commands
|
|
56
56
|
- [webhook](commands/webhook.md) — 7 published commands
|
|
57
57
|
- [workflow](commands/workflow.md) — 20 published commands
|
|
58
58
|
- [workspace](commands/workspace.md) — 31 published commands
|
|
@@ -52,6 +52,16 @@ Execution is unavailable for the current contract and returns `unsupported_contr
|
|
|
52
52
|
|
|
53
53
|
Known restriction: BLOCKED[B07 DATASET_PATCH_UNTYPED]; reserved, not registered.
|
|
54
54
|
|
|
55
|
+
### `dataset.column-stats`
|
|
56
|
+
|
|
57
|
+
Run: `mammoth dataset column-stats`. Exact input fields: `mammoth schema get dataset.column-stats`.
|
|
58
|
+
|
|
59
|
+
Example: `mammoth dataset column-stats`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
60
|
+
|
|
61
|
+
Result: `DatasetColumnStatsResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
|
|
62
|
+
|
|
63
|
+
Status on release: untried; no live run recorded.
|
|
64
|
+
|
|
55
65
|
### `dataset.create`
|
|
56
66
|
|
|
57
67
|
Run: `mammoth dataset create`. Exact input fields: `mammoth schema get dataset.create`.
|
|
@@ -82,6 +92,36 @@ Result: `DatasetDataResult`; mutation `read`, confirmation `none`, wait policy `
|
|
|
82
92
|
|
|
83
93
|
Status on release: ran once on CLI 1.1.10 — Bounded retained-resource read with published CLI 1.1.10 and explicit timeout=30,poll_interval=1 returned 100 rows and five headers for dataset 28. No Full claim: retained ETL-owned resource and no option/error/lifecycle matrix beyond this read.
|
|
84
94
|
|
|
95
|
+
### `dataset.definition.add`
|
|
96
|
+
|
|
97
|
+
Run: `mammoth dataset definition add`. Exact input fields: `mammoth schema get dataset.definition.add`.
|
|
98
|
+
|
|
99
|
+
Example: `mammoth dataset definition add 123 --input '{"term": "late", "definition": "delivered more than 5 days after shipped_date"}'`. Illustrative only: append `--yes --confirm <EXACT_TARGET>` after observing the target.
|
|
100
|
+
|
|
101
|
+
Result: `DatasetDefinitionAddResult`; mutation `benign_mutation`, confirmation `confirm_target`, wait policy `not_async`.
|
|
102
|
+
|
|
103
|
+
Status on release: untried; no live run recorded.
|
|
104
|
+
|
|
105
|
+
### `dataset.definition.list`
|
|
106
|
+
|
|
107
|
+
Run: `mammoth dataset definition list`. Exact input fields: `mammoth schema get dataset.definition.list`.
|
|
108
|
+
|
|
109
|
+
Example: `mammoth dataset definition list 123`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
110
|
+
|
|
111
|
+
Result: `DatasetDefinitionListResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
|
|
112
|
+
|
|
113
|
+
Status on release: untried; no live run recorded.
|
|
114
|
+
|
|
115
|
+
### `dataset.definition.remove`
|
|
116
|
+
|
|
117
|
+
Run: `mammoth dataset definition remove`. Exact input fields: `mammoth schema get dataset.definition.remove`.
|
|
118
|
+
|
|
119
|
+
Example: `mammoth dataset definition remove 123 a1b2c3d4`. Illustrative only: append `--yes` after observing an owned target.
|
|
120
|
+
|
|
121
|
+
Result: `DatasetDefinitionRemoveResult`; mutation `benign_mutation`, confirmation `prompt_or_yes`, wait policy `not_async`.
|
|
122
|
+
|
|
123
|
+
Status on release: untried; no live run recorded.
|
|
124
|
+
|
|
85
125
|
### `dataset.delete`
|
|
86
126
|
|
|
87
127
|
Run: `mammoth dataset delete`. Exact input fields: `mammoth schema get dataset.delete`.
|
|
@@ -192,6 +232,16 @@ Result: `DatasetRestoreResult`; mutation `benign_mutation`, confirmation `none`,
|
|
|
192
232
|
|
|
193
233
|
Status on release: ran once on CLI 2.0.14 — write sweep 2026-09-18: exit 0 on release with CLI 2.0.14. job 312 restore_datasource -> status success. dataset list --project 21 confirms dataset 49 (name 'stores.csv 2') is back and visible alongside 48. Single invocation only.
|
|
194
234
|
|
|
235
|
+
### `dataset.schema-diff`
|
|
236
|
+
|
|
237
|
+
Run: `mammoth dataset schema-diff`. Exact input fields: `mammoth schema get dataset.schema-diff`.
|
|
238
|
+
|
|
239
|
+
Example: `mammoth dataset schema-diff 10 11`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
240
|
+
|
|
241
|
+
Result: `DatasetSchemaDiffResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
|
|
242
|
+
|
|
243
|
+
Status on release: untried; no live run recorded.
|
|
244
|
+
|
|
195
245
|
### `dataset.search`
|
|
196
246
|
|
|
197
247
|
Run: `mammoth dataset search`. Exact input fields: `mammoth schema get dataset.search`.
|
|
@@ -252,6 +252,16 @@ Result: `ViewDataCompareResult`; mutation `read`, confirmation `none`, wait poli
|
|
|
252
252
|
|
|
253
253
|
Status on release: untried; no live run recorded.
|
|
254
254
|
|
|
255
|
+
### `view.data.drivers`
|
|
256
|
+
|
|
257
|
+
Run: `mammoth view data drivers`. Exact input fields: `mammoth schema get view.data.drivers`.
|
|
258
|
+
|
|
259
|
+
Example: `mammoth view data drivers 123 --input '{"measure": {"column": "revenue", "function": "SUM"}, "date_column": "sale_date", "compare": ["2026-07", "2026-08"], "by": ["store", "category"]}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
260
|
+
|
|
261
|
+
Result: `ViewDataDriversResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
|
|
262
|
+
|
|
263
|
+
Status on release: untried; no live run recorded.
|
|
264
|
+
|
|
255
265
|
### `view.data.explore`
|
|
256
266
|
|
|
257
267
|
Run: `mammoth view data explore`. Exact input fields: `mammoth schema get view.data.explore`.
|
|
@@ -262,6 +272,16 @@ Result: `ViewDataExploreResult`; mutation `read`, confirmation `none`, wait poli
|
|
|
262
272
|
|
|
263
273
|
Status on release: untried; no live run recorded.
|
|
264
274
|
|
|
275
|
+
### `view.data.forecast`
|
|
276
|
+
|
|
277
|
+
Run: `mammoth view data forecast`. Exact input fields: `mammoth schema get view.data.forecast`.
|
|
278
|
+
|
|
279
|
+
Example: `mammoth view data forecast 123 --input '{"measure": {"column": "revenue", "function": "SUM"}, "date_column": "sale_date", "unit": "month", "periods": 2}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
280
|
+
|
|
281
|
+
Result: `ViewDataForecastResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
|
|
282
|
+
|
|
283
|
+
Status on release: untried; no live run recorded.
|
|
284
|
+
|
|
265
285
|
### `view.data.get`
|
|
266
286
|
|
|
267
287
|
Run: `mammoth view data get`. Exact input fields: `mammoth schema get view.data.get`.
|
|
@@ -66,7 +66,7 @@ Status on release: untried; no live run recorded.
|
|
|
66
66
|
|
|
67
67
|
Run: `mammoth workflow canvas`. Exact input fields: `mammoth schema get workflow.canvas`.
|
|
68
68
|
|
|
69
|
-
Example: `mammoth workflow canvas 12 --input '{"canvas_state": {"proposed_changes": [{"op": "add_view", "dataset_id": 415, "name": "Urgent tickets", "ref": "urgent"}, {"op": "send_to_new_dataset", "dataset_id": 415, "view_ref": "urgent", "name": "Urgent tickets by team"}]}}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
69
|
+
Example: `mammoth workflow canvas 12 --input '{"canvas_state": {"proposed_changes": [{"op": "add_view", "dataset_id": 415, "name": "Urgent tickets", "ref": "urgent"}, {"op": "add_step", "view_ref": "urgent", "transform": "filter", "params": {"condition": {"column": "Priority", "operator": "EQ", "value": "Urgent"}}, "label": "Keep urgent tickets"}, {"op": "send_to_new_dataset", "dataset_id": 415, "view_ref": "urgent", "name": "Urgent tickets by team"}]}}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
70
70
|
|
|
71
71
|
Result: `WorkflowCanvasResult`; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`.
|
|
72
72
|
|
|
@@ -44,6 +44,18 @@ returns the project's datasets whose name, column names or sampled column
|
|
|
44
44
|
values contain TERM, each with the matched column and value. `dataset find`
|
|
45
45
|
and `browse` search match names only. A `browse` search hit carries `dataset_id` or `view_id`: use those,
|
|
46
46
|
never the tree `id`.
|
|
47
|
+
To check missing values or blanks across a project's datasets, run
|
|
48
|
+
`dataset column-stats` once instead of profiling each view: it returns every
|
|
49
|
+
dataset's columns with their blank count and share, type and distinct count,
|
|
50
|
+
from stats stored at the last load or pipeline run.
|
|
51
|
+
When the user states what a term means for a dataset ("late means delivered
|
|
52
|
+
more than 5 days after shipped_date"), save it with
|
|
53
|
+
`dataset definition add DATASET_ID --input '{"term": "...", "definition": "..."}'`,
|
|
54
|
+
written in the dataset's real column names. A definition is shared by
|
|
55
|
+
everyone's chats on that dataset, so the save needs
|
|
56
|
+
`--yes --confirm DATASET_ID`, and a definition for an existing term replaces
|
|
57
|
+
it. Do not save one for a one-off question. `dataset definition list` and
|
|
58
|
+
`dataset definition remove DATASET_ID DEFINITION_ID` read and drop them.
|
|
47
59
|
|
|
48
60
|
```bash
|
|
49
61
|
mammoth capability find "transform"
|
|
@@ -130,16 +142,19 @@ NAME --input '{"seed_datasource_id": ROOT_DATASET_ID}'`, which returns its
|
|
|
130
142
|
record id. `workflow cleanup` deletes the project's orphaned skeleton
|
|
131
143
|
("ghost") workflows (destructive; needs `--yes`).
|
|
132
144
|
|
|
133
|
-
To only *suggest* a workflow
|
|
145
|
+
To only *suggest* changes to a workflow for the user to review, use `workflow
|
|
134
146
|
canvas WORKFLOW_ID --input '{"canvas_state": {"proposed_changes": [...]}}'`.
|
|
135
|
-
Nothing is built until the user presses Save on the Workflows canvas
|
|
136
|
-
them the changes are waiting there.
|
|
137
|
-
`
|
|
138
|
-
`send_to_dataset`, `join
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
147
|
+
Nothing is built until the user presses Save on the Workflows canvas, which
|
|
148
|
+
builds every change in flow order; tell them the changes are waiting there.
|
|
149
|
+
Changes are `add_view`, `rename_view`, `trash_view`, `rename_dataset`,
|
|
150
|
+
`trash_dataset`, `send_to_new_dataset`, `send_to_dataset`, `join`, `export`,
|
|
151
|
+
and, for the steps inside a view, `add_step`, `update_step` and `remove_step`
|
|
152
|
+
(fields per op: `schema get workflow.canvas`). A later change in the same call
|
|
153
|
+
can point at an earlier one: give the earlier change a `ref`, then use
|
|
154
|
+
`view_ref`, `dataset_ref` or `target_dataset_ref` instead of an id. Propose the
|
|
155
|
+
filters, calculations and other tasks a view needs as `add_step` changes in the
|
|
156
|
+
same call (`transform` is a `view transform` kind, `params` its `--input`),
|
|
157
|
+
never as `view` commands run afterwards.
|
|
143
158
|
|
|
144
159
|
Draft mode is server-side batching for view pipeline edits. Enter, inspect
|
|
145
160
|
status, submit, and verify pipeline state; discard only with the required
|
|
@@ -158,6 +173,18 @@ applied.
|
|
|
158
173
|
put a card on a dashboard, say it to `dashboard chat edit`. Figures
|
|
159
174
|
from `explore` and `view data aggregate` are rounded for display (2
|
|
160
175
|
decimals; 4 below 1); `view data compare` keeps full precision.
|
|
176
|
+
- "Why did revenue drop from July to August", "what drove the change": one
|
|
177
|
+
`view data drivers VIEW_ID` call, not a series of aggregates. It returns
|
|
178
|
+
each period's total and row count, the change, whether it came from volume
|
|
179
|
+
or value per row, and per `by` column the groups that moved most with their
|
|
180
|
+
signed `share_of_change`; `partial_period` names a period the data does not
|
|
181
|
+
cover to its end.
|
|
182
|
+
- "Forecast", "what will revenue be in October": `view data forecast
|
|
183
|
+
VIEW_ID` (a linear trend over the complete months, quarters or weeks, with a
|
|
184
|
+
95% range; seasonal only with two full cycles). A last period the data does
|
|
185
|
+
not cover to its end is left out and reported as `excluded_partial`, and it
|
|
186
|
+
is the first period forecast: for October with data ending mid-September,
|
|
187
|
+
pass `periods` 2. Never scale a partial period up by its days.
|
|
161
188
|
- "Who changed X": `activity list` (a change list of time, user, action and a
|
|
162
189
|
`path` naming the dataset and view). Filter with `resource_id` in the log's
|
|
163
190
|
typed form, `dataview_<id>` or `datasource_<id>` (a bare number matches
|
|
@@ -103,8 +103,9 @@ mammoth view transform math VIEW_ID --project PROJECT_ID \
|
|
|
103
103
|
revenue. Say how many there are in your report.
|
|
104
104
|
- A generate or edit result may carry `deliverable_check`: `money_not_shown`
|
|
105
105
|
(with the `math` command in `fix`), `unit_price_summed`,
|
|
106
|
-
`columns_not_on_dashboard` (view columns added after the dashboard was made)
|
|
107
|
-
|
|
106
|
+
`columns_not_on_dashboard` (view columns added after the dashboard was made),
|
|
107
|
+
`count_titled_as_rate` (a card or tile counts rows, but its title reads as a
|
|
108
|
+
rate) and one `blank_values` entry for each column on the board that has blanks.
|
|
108
109
|
Fix each warning (add the column, then ask again in words), or say in your
|
|
109
110
|
report why you kept it.
|
|
110
111
|
|
|
@@ -168,6 +169,9 @@ the user to use Download PDF in the app; never retry with `{"data": {}}`.
|
|
|
168
169
|
not publish: `was_published` stays false until you also run
|
|
169
170
|
`dashboard action DASHBOARD_ID --input '{"action":"publish-presentation"}'`.
|
|
170
171
|
`share` returns `data: null`; read the url slug back with `dashboard get`.
|
|
172
|
+
`dashboard action` with `publish-data` on a board that was never published
|
|
173
|
+
publishes the presentation instead and says so. `share` and `action` print the
|
|
174
|
+
deliverable check in their confirmation text.
|
|
171
175
|
Only then do `dashboard published canvas URL`, `published data URL`,
|
|
172
176
|
`job-by-url URL JOB_ID` and the other `/dashboards/url/...` routes answer;
|
|
173
177
|
before that they return 404 `DASHBOARD_NOT_FOUND`. Legacy widget routes
|
|
@@ -81,6 +81,11 @@ mammoth view transform math VIEW_ID --project PROJECT_ID \
|
|
|
81
81
|
--input '{"dataset_id":DATASET_ID,"expression":"GDP / Population","new_column":"GDP per capita"}'
|
|
82
82
|
```
|
|
83
83
|
|
|
84
|
+
A TEXT column that writes numbers with a decimal comma (`1.234,5`) converts with
|
|
85
|
+
`"decimal_separator":","` on its `conversions` entry (`thousands_separator`
|
|
86
|
+
defaults to the other mark). `view data profile` lists such a column under
|
|
87
|
+
`summary.mixed_number_format` when its values mix notations.
|
|
88
|
+
|
|
84
89
|
In a math `expression`, write a multi-word display name bare (`Quantity * Unit
|
|
85
90
|
Price`) or quoted (`Quantity * \"Unit Price\"` inside the JSON string).
|
|
86
91
|
|
|
@@ -10,6 +10,7 @@ from __future__ import annotations
|
|
|
10
10
|
import re
|
|
11
11
|
from typing import Any
|
|
12
12
|
|
|
13
|
+
from mammoth_cli.commands.schema import command_scope
|
|
13
14
|
from mammoth_cli.manifest.loader import command_by_id, load_operations
|
|
14
15
|
from mammoth_cli.services.command_contract import resolve_command_contract
|
|
15
16
|
|
|
@@ -85,48 +86,7 @@ def _contract_fields(command: dict[str, Any]) -> dict[str, Any]:
|
|
|
85
86
|
"""
|
|
86
87
|
command_id = str(command.get("command_id", ""))
|
|
87
88
|
resolved = resolve_command_contract(command_id) if command_id else None
|
|
88
|
-
|
|
89
|
-
family = path.split()[0] if path else ""
|
|
90
|
-
if family in {
|
|
91
|
-
"project",
|
|
92
|
-
"dataset",
|
|
93
|
-
"file",
|
|
94
|
-
"folder",
|
|
95
|
-
"view",
|
|
96
|
-
"batch",
|
|
97
|
-
"annotation",
|
|
98
|
-
"dashboard",
|
|
99
|
-
"automation",
|
|
100
|
-
"schedule",
|
|
101
|
-
"snippet",
|
|
102
|
-
"template",
|
|
103
|
-
"workflow",
|
|
104
|
-
}:
|
|
105
|
-
scope = "project"
|
|
106
|
-
elif family in {
|
|
107
|
-
"workspace",
|
|
108
|
-
"user",
|
|
109
|
-
"support",
|
|
110
|
-
"billing",
|
|
111
|
-
"connector",
|
|
112
|
-
"client-app",
|
|
113
|
-
"external-key",
|
|
114
|
-
}:
|
|
115
|
-
scope = "workspace"
|
|
116
|
-
elif family in {
|
|
117
|
-
"auth",
|
|
118
|
-
"config",
|
|
119
|
-
"context",
|
|
120
|
-
"completion",
|
|
121
|
-
"doctor",
|
|
122
|
-
"schema",
|
|
123
|
-
"capability",
|
|
124
|
-
"skill",
|
|
125
|
-
"version",
|
|
126
|
-
}:
|
|
127
|
-
scope = "local"
|
|
128
|
-
else:
|
|
129
|
-
scope = "profile"
|
|
89
|
+
scope = command_scope(command)
|
|
130
90
|
# Keep capability discovery aligned with the resolved command contract
|
|
131
91
|
# consumed by runtime admission and binding. The manifest fallback is for
|
|
132
92
|
# genuinely local/bespoke records without a resolvable SDK signature.
|
|
@@ -576,16 +576,30 @@ def dashboard_action(invocation: Invocation) -> HandlerResult:
|
|
|
576
576
|
dashboard_id = _require_int_positional(invocation, "dashboard id")
|
|
577
577
|
document = _bound_document(invocation)
|
|
578
578
|
action = _require_field(document, "action")
|
|
579
|
-
enforce_confirmation(
|
|
580
|
-
invocation,
|
|
581
|
-
policy=POLICY_YES_ALWAYS,
|
|
582
|
-
action=f"apply an action to dashboard {dashboard_id}",
|
|
583
|
-
)
|
|
584
579
|
kwargs: dict[str, Any] = {"dashboard_id": dashboard_id, "action": action}
|
|
585
580
|
assert document is not None
|
|
586
581
|
_forward_optional(document, kwargs, ("params_enabled", "params_view_id"))
|
|
587
582
|
with open_service(invocation) as (service, auth):
|
|
583
|
+
published = _was_published(service, dashboard_id)
|
|
584
|
+
enforce_confirmation(
|
|
585
|
+
invocation,
|
|
586
|
+
policy=POLICY_YES_ALWAYS,
|
|
587
|
+
action=f"apply an action to dashboard {dashboard_id}"
|
|
588
|
+
+ _board_findings(invocation, service, auth, dashboard_id),
|
|
589
|
+
)
|
|
590
|
+
first_publish = action == "publish-data" and not published
|
|
591
|
+
if first_publish:
|
|
592
|
+
kwargs["action"] = "publish-presentation"
|
|
588
593
|
data = service.call(_symbol(invocation), **kwargs)
|
|
594
|
+
if first_publish:
|
|
595
|
+
data = {
|
|
596
|
+
"action": "publish-presentation",
|
|
597
|
+
"note": (
|
|
598
|
+
"The board was never published, so publish-data was refused by the "
|
|
599
|
+
"server; the presentation was published instead."
|
|
600
|
+
),
|
|
601
|
+
"response": data,
|
|
602
|
+
}
|
|
589
603
|
return data, _meta(invocation, auth.workspace_id)
|
|
590
604
|
|
|
591
605
|
|
|
@@ -594,19 +608,45 @@ def dashboard_share(invocation: Invocation) -> HandlerResult:
|
|
|
594
608
|
dashboard_id = _require_int_positional(invocation, "dashboard id")
|
|
595
609
|
document = _bound_document(invocation)
|
|
596
610
|
type_of_auth = _require_field(document, "type_of_auth")
|
|
597
|
-
enforce_confirmation(
|
|
598
|
-
invocation,
|
|
599
|
-
policy=POLICY_YES_ALWAYS,
|
|
600
|
-
action=f"share dashboard {dashboard_id}",
|
|
601
|
-
)
|
|
602
611
|
kwargs: dict[str, Any] = {"dashboard_id": dashboard_id, "type_of_auth": type_of_auth}
|
|
603
612
|
assert document is not None
|
|
604
613
|
_forward_optional(document, kwargs, ("users",))
|
|
605
614
|
with open_service(invocation) as (service, auth):
|
|
615
|
+
unpublished = (
|
|
616
|
+
" (not published yet: sharing alone does not publish it; run dashboard action "
|
|
617
|
+
'with {"action":"publish-presentation"} to publish)'
|
|
618
|
+
if not _was_published(service, dashboard_id)
|
|
619
|
+
else ""
|
|
620
|
+
)
|
|
621
|
+
enforce_confirmation(
|
|
622
|
+
invocation,
|
|
623
|
+
policy=POLICY_YES_ALWAYS,
|
|
624
|
+
action=f"share dashboard {dashboard_id}{unpublished}"
|
|
625
|
+
+ _board_findings(invocation, service, auth, dashboard_id),
|
|
626
|
+
)
|
|
606
627
|
data = service.call(_symbol(invocation), **kwargs)
|
|
607
628
|
return data, _meta(invocation, auth.workspace_id)
|
|
608
629
|
|
|
609
630
|
|
|
631
|
+
def _was_published(service: Any, dashboard_id: int) -> bool:
|
|
632
|
+
"""Whether the board was ever published; ``dashboard get`` carries ``was_published``."""
|
|
633
|
+
board = _dump_model(service.call(_DASHBOARD_GET, dashboard_id=dashboard_id))
|
|
634
|
+
return bool(board.get("was_published")) if isinstance(board, dict) else False
|
|
635
|
+
|
|
636
|
+
|
|
637
|
+
def _board_findings(invocation: Invocation, service: Any, auth: Any, dashboard_id: int) -> str:
|
|
638
|
+
"""The deliverable check's findings as confirmation text; empty when clean or unreadable."""
|
|
639
|
+
try:
|
|
640
|
+
warnings = _deliverable_warnings(invocation, service, auth, dashboard_id)
|
|
641
|
+
except Exception: # noqa: BLE001 -- advice must never block the confirmation
|
|
642
|
+
return ""
|
|
643
|
+
if not warnings:
|
|
644
|
+
return ""
|
|
645
|
+
return " -- deliverable check: " + "; ".join(
|
|
646
|
+
f"{warning['issue']}: {warning['detail']}" for warning in warnings
|
|
647
|
+
)
|
|
648
|
+
|
|
649
|
+
|
|
610
650
|
def _figure_page_kwargs(page: Any) -> dict[str, Any]:
|
|
611
651
|
"""Map the endpoint's ``page`` ({"id"} or {"new_title"}) onto the SDK's page arguments."""
|
|
612
652
|
if not isinstance(page, dict) or set(page) not in ({"id"}, {"new_title"}):
|
|
@@ -923,6 +963,7 @@ def _deliverable_warnings(
|
|
|
923
963
|
)
|
|
924
964
|
|
|
925
965
|
|
|
966
|
+
_DASHBOARD_GET = "mammoth.api.dashboards.DashboardsAPI.get"
|
|
926
967
|
_CANVAS_SAVE = "mammoth.api.dashboards.DashboardsAPI.canvas_save"
|
|
927
968
|
_FILTER_KEYS = ("field", "control", "label", "default")
|
|
928
969
|
|