mammoth-cli 2.0.37__tar.gz → 2.0.38__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.0.37 → mammoth_cli-2.0.38}/PKG-INFO +2 -2
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/__init__.py +1 -1
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +26 -2
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/about-mammoth.md +22 -11
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities.md +1 -1
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +2 -2
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +20 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/registry.py +2 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/schema.py +16 -4
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/view.py +25 -1
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/view_ops.py +34 -3
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/services/input_fields.py +3 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/pyproject.toml +2 -2
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/view.yaml +82 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/sdk-catalog.source.yaml +14 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/sdk-methods.yaml +24 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/.gitignore +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/LICENSE +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/README.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/__main__.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/app.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities-misc.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/data-app.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/log.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/end-to-end.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/need-action.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/report-checklist.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/__init__.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/activity.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/addon.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/agent.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/ai.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/annotation.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/auth.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/automation.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/batch.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/billing.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/browse.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/capability.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/client_app.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/completion.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/config.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/connector.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/context.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/dashboard.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/data_app.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/dataset.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/doctor.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/external_key.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/file.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/folder.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/job.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/notification.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/parameter.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/project.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/report.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/schedule.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/skill.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/snippet.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/support.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/template.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/trash.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/upgrade.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/user.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/webhook.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/workflow.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/commands/workspace.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/context/__init__.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/context/credentials.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/context/endpoint.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/context/profiles.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/context/resolver.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/contracts/__init__.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/contracts/auth.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/errors/__init__.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/errors/envelope.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/manifest/__init__.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/manifest/loader.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/messages/__init__.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/output/__init__.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/output/envelope.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/output/normalize.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/output/policy.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/output/progress.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/output/render.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/py.typed +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/runtime/__init__.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/runtime/confirm.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/runtime/dryrun.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/runtime/executor.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/runtime/input_loader.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/runtime/invocation.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/runtime/options.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/runtime/parents.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/runtime/runlog.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/runtime/session.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/runtime/strict.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/runtime/updates.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/runtime/validate.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/services/__init__.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/services/argspec.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/services/coerce.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/services/command_contract.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/services/conditions.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/services/dispatch.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/services/factory.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/services/mapping.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/services/openapi_types.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/services/positionals.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/services/protocol.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/services/sdk_service.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/services/testing.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/services/type_system.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/skills/__init__.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/skills/installer.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/skills/steering.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/mammoth_cli/testing.py +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/activity.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/addon.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/agent.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/ai.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/annotation.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/auth.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/automation.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/batch.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/billing.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/browse.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/capability.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/client-app.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/completion.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/config.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/connector.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/context.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/dashboard.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/data-app.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/dataset.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/doctor.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/external-key.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/file.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/folder.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/job.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/log.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/notification.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/parameter.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/project.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/report.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/schedule.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/schema.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/skill.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/snippet.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/support.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/template.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/trash.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/upgrade.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/user.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/version.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/webhook.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/workflow.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/commands/workspace.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/openapi-operations.yaml +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/manifests/schema-v1.json +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/openapi/metadata.json +0 -0
- {mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/spec/openapi/openapi.json +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mammoth-cli
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.38
|
|
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.8,>=0.7.
|
|
20
|
+
Requires-Dist: mammoth-io<0.8,>=0.7.17
|
|
21
21
|
Requires-Dist: platformdirs<5,>=4.10
|
|
22
22
|
Requires-Dist: pydantic<3,>=2.13
|
|
23
23
|
Requires-Dist: pyyaml<7,>=6
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: mammoth-cli
|
|
3
|
-
version: 2.0.
|
|
3
|
+
version: 2.0.38
|
|
4
4
|
description: "Use Mammoth Analytics from a terminal: install or authenticate the CLI, discover its live command contract, and safely manage projects, data, views, pipelines (join, merge, pivot, filter, clean), dashboards, exports, and handoffs."
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -76,17 +76,41 @@ mammoth view transform --help # every data transformation
|
|
|
76
76
|
| Blanks to a constant, or to the previous row's value | `view transform set-values` (`IS_EMPTY`), `view transform fill-missing` |
|
|
77
77
|
| Clean text | `view transform text`, `replace`, `bulk-replace` |
|
|
78
78
|
| Change a column's type | `view transform convert-type` |
|
|
79
|
+
| Rename a column, sort the rows (view settings, not tasks) | `view transform rename-columns`, `view transform sort` |
|
|
79
80
|
| Rank, running total, previous row | `view transform window` |
|
|
80
81
|
| A dashboard | `dashboard create-blank` ([dashboards](references/recipes/dashboards.md)) |
|
|
81
82
|
| Deliver the rows | `view export csv`, `view export postgres` (and other destinations), `view export dataset` |
|
|
82
83
|
|
|
83
84
|
A search with no full match returns `suggestions` and a `hint`. Before you
|
|
84
85
|
conclude the CLI cannot do something the web app does, check
|
|
85
|
-
`view transform --help` and "
|
|
86
|
+
`view transform --help` and "View settings, and what has no command" in
|
|
86
87
|
[about Mammoth](references/about-mammoth.md). Do not switch to the web app
|
|
87
88
|
in a browser, or compute the result locally, for work the CLI covers;
|
|
88
89
|
report a real gap with the command you tried.
|
|
89
90
|
|
|
91
|
+
## Several files, one deliverable
|
|
92
|
+
|
|
93
|
+
Users often upload related files without saying how they relate ("make a
|
|
94
|
+
dashboard from t_a and t_b"). Work it out from the data before you build:
|
|
95
|
+
|
|
96
|
+
1. Read every view first: `view get VIEW_ID` (columns, types, row count) and
|
|
97
|
+
`view data get VIEW_ID --input '{"limit": 20}'`.
|
|
98
|
+
2. Find the keys. A column in one view whose values appear in a column of
|
|
99
|
+
the other (`customer_id` and `id`, `order_ref` and `order_no`) is a
|
|
100
|
+
foreign key; the view with many rows per key is the main one.
|
|
101
|
+
3. Make the keys match before the join: same type (`convert-type`), same
|
|
102
|
+
case and padding (`text`), no blanks (`set-values`, `filter`).
|
|
103
|
+
4. Fix what the deliverable needs: numbers stored as text (`convert-type`
|
|
104
|
+
to `NUMERIC`), dates stored as text (`convert-type` to `DATE`), blanks.
|
|
105
|
+
5. `view transform join` the lookup view into the main view (`LEFT`), then
|
|
106
|
+
read back and check the match rate
|
|
107
|
+
([worked example](references/recipes/end-to-end.md), step 5).
|
|
108
|
+
6. Build the dashboard from the joined view
|
|
109
|
+
([dashboards](references/recipes/dashboards.md)).
|
|
110
|
+
|
|
111
|
+
Say what you inferred (which columns you joined on, what you converted) in
|
|
112
|
+
your report. If no column links the files, ask before you combine them.
|
|
113
|
+
|
|
90
114
|
## Calling a command
|
|
91
115
|
|
|
92
116
|
- Ids are positionals; request fields are one `--input '{...}'` document;
|
|
@@ -100,6 +100,8 @@ Checkpoint Alert are the `view data-check` and `view checkpoint` families.
|
|
|
100
100
|
| Shift a date by an interval | Add / Subtract Date Values | `increment-date` |
|
|
101
101
|
| Add an empty column | Add Column | `add-column` |
|
|
102
102
|
| Copy a column under a new name | Copy Columns | `copy-columns` |
|
|
103
|
+
| Rename a column | Rename (column header) | `rename-columns` (a view setting, not a task) |
|
|
104
|
+
| Sort the rows | Sort (grid) | `sort` (a view setting, not a task) |
|
|
103
105
|
| Remove columns | Remove Column | `delete-columns` |
|
|
104
106
|
| Add columns from another view by matching keys | Join | `join` (`INNER`, `LEFT`, `RIGHT`, `OUTER`) |
|
|
105
107
|
| Bring one value per key from another view | Lookup | `lookup` |
|
|
@@ -117,15 +119,24 @@ value per key into one new column. Before either, confirm the key columns
|
|
|
117
119
|
in both views have the same type and values; recipes/transforms.md has the
|
|
118
120
|
read-back.
|
|
119
121
|
|
|
120
|
-
##
|
|
122
|
+
## View settings, and what has no command
|
|
123
|
+
|
|
124
|
+
Two commands change how the view shows its rows, not the rows. They add no
|
|
125
|
+
pipeline task, like their web counterparts (a column-header rename, a grid
|
|
126
|
+
sort):
|
|
127
|
+
|
|
128
|
+
- **Rename a column:** `view transform rename-columns` with `{"renames":
|
|
129
|
+
{"cust_id": "Customer ID"}}`. The column keeps its internal name, so
|
|
130
|
+
earlier tasks keep working; later commands, data reads, exports and
|
|
131
|
+
dashboards use the new name. To name a column you create, use its
|
|
132
|
+
`new_column` or `as_name` field instead.
|
|
133
|
+
- **Sort the rows:** `view transform sort` with `{"order_by": [["Revenue",
|
|
134
|
+
"DESC"]]}` (up to three columns; `[]` clears it). Data reads and exports
|
|
135
|
+
return rows in this order. To keep only the top N rows, use `limit-rows`
|
|
136
|
+
with `order_by`; for a rank column, `window` (`RANK`, `ROW_NUMBER`).
|
|
137
|
+
|
|
138
|
+
No command:
|
|
121
139
|
|
|
122
|
-
- **Rename a column.** The web app's rename is a display change, not a
|
|
123
|
-
task; the CLI has no rename command. Name new columns when you create them
|
|
124
|
-
(`new_column`, `as_name`); for an existing column, `copy-columns` under
|
|
125
|
-
the new name.
|
|
126
|
-
- **Sort.** There is no sort task, and the CLI has no sort command. For
|
|
127
|
-
"top N by X" use `limit-rows` with `order_by`; for a rank column use
|
|
128
|
-
`window` (`RANK`, `ROW_NUMBER`).
|
|
129
140
|
- **Union or append two views.** There is no union task. Upload a file into
|
|
130
141
|
an existing dataset with `append_to_ds_id`, or send a view's rows into an
|
|
131
142
|
existing dataset with `view export dataset` (`target_ds_id` and
|
|
@@ -139,6 +150,6 @@ Both call the same API. Do not switch to the web app in a browser for a
|
|
|
139
150
|
task the CLI covers. Before you conclude that the CLI cannot do something,
|
|
140
151
|
run `mammoth view transform --help`, search in plain words (`mammoth schema
|
|
141
152
|
find "merge two datasets"` finds `join`; a search with no full match lists
|
|
142
|
-
`suggestions`), and read
|
|
143
|
-
the gap with the command you tried; do not
|
|
144
|
-
by computing the result locally.
|
|
153
|
+
`suggestions`), and read "View settings, and what has no command" above.
|
|
154
|
+
If it is still missing, report the gap with the command you tried; do not
|
|
155
|
+
work around it in the browser or by computing the result locally.
|
|
@@ -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 556 commands. 455 of them bind one of the 528 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, 2 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.
|
|
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 556; 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
|
|
|
@@ -43,7 +43,7 @@ Load only the applicable domain file:
|
|
|
43
43
|
- [upgrade](commands/upgrade.md) — 1 published commands
|
|
44
44
|
- [user](commands/user.md) — 8 published commands
|
|
45
45
|
- [version](commands/version.md) — 1 published commands
|
|
46
|
-
- [view](commands/view.md) —
|
|
46
|
+
- [view](commands/view.md) — 118 published commands
|
|
47
47
|
- [webhook](commands/webhook.md) — 7 published commands
|
|
48
48
|
- [workflow](commands/workflow.md) — 16 published commands
|
|
49
49
|
- [workspace](commands/workspace.md) — 20 published commands
|
|
@@ -1034,6 +1034,16 @@ Result: `ViewTransformPivotResult`; mutation `reversible_pipeline`, confirmation
|
|
|
1034
1034
|
|
|
1035
1035
|
Status on release: ran once on CLI 2.0.18 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
1036
1036
|
|
|
1037
|
+
### `view.transform.rename-columns`
|
|
1038
|
+
|
|
1039
|
+
Run: `mammoth view transform rename-columns`. Exact input fields: `mammoth schema get view.transform.rename-columns`.
|
|
1040
|
+
|
|
1041
|
+
Example: `mammoth view transform rename-columns 123 --input '{"renames": {"cust_id": "Customer ID"}, "dataset_id": 456}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
1042
|
+
|
|
1043
|
+
Result: `ViewTransformRenameColumnsResult`; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`.
|
|
1044
|
+
|
|
1045
|
+
Status on release: untried; it submits through `view.task.add`, but this transform was not among those run.
|
|
1046
|
+
|
|
1037
1047
|
### `view.transform.replace`
|
|
1038
1048
|
|
|
1039
1049
|
Run: `mammoth view transform replace`. Exact input fields: `mammoth schema get view.transform.replace`.
|
|
@@ -1064,6 +1074,16 @@ Result: `ViewTransformSmallLargeResult`; mutation `reversible_pipeline`, confirm
|
|
|
1064
1074
|
|
|
1065
1075
|
Status on release: untried; it submits through `view.task.add`, but this transform was not among those run.
|
|
1066
1076
|
|
|
1077
|
+
### `view.transform.sort`
|
|
1078
|
+
|
|
1079
|
+
Run: `mammoth view transform sort`. Exact input fields: `mammoth schema get view.transform.sort`.
|
|
1080
|
+
|
|
1081
|
+
Example: `mammoth view transform sort 123 --input '{"order_by": [["Revenue", "DESC"]], "dataset_id": 456}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
1082
|
+
|
|
1083
|
+
Result: `ViewTransformSortResult`; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`.
|
|
1084
|
+
|
|
1085
|
+
Status on release: untried; it submits through `view.task.add`, but this transform was not among those run.
|
|
1086
|
+
|
|
1067
1087
|
### `view.transform.split`
|
|
1068
1088
|
|
|
1069
1089
|
Run: `mammoth view transform split`. Exact input fields: `mammoth schema get view.transform.split`.
|
|
@@ -684,9 +684,11 @@ HANDLERS: dict[str, Handler] = {
|
|
|
684
684
|
"view.transform.lookup": view_ops_cmd.view_transform_lookup,
|
|
685
685
|
"view.transform.math": view_ops_cmd.view_transform_math,
|
|
686
686
|
"view.transform.pivot": view_ops_cmd.view_transform_pivot,
|
|
687
|
+
"view.transform.rename-columns": view_ops_cmd.view_transform_rename_columns,
|
|
687
688
|
"view.transform.replace": view_ops_cmd.view_transform_replace,
|
|
688
689
|
"view.transform.set-values": view_ops_cmd.view_transform_set_values,
|
|
689
690
|
"view.transform.small-large": view_ops_cmd.view_transform_small_large,
|
|
691
|
+
"view.transform.sort": view_ops_cmd.view_transform_sort,
|
|
690
692
|
"view.transform.split": view_ops_cmd.view_transform_split,
|
|
691
693
|
"view.transform.substring": view_ops_cmd.view_transform_substring,
|
|
692
694
|
"view.transform.text": view_ops_cmd.view_transform_text,
|
|
@@ -89,11 +89,11 @@ _COMMAND_DISCOVERY_PURPOSES = {
|
|
|
89
89
|
"view.transform.convert-type": (
|
|
90
90
|
"convert type cast numeric number text date column parse to number to date"
|
|
91
91
|
),
|
|
92
|
-
"view.transform.copy-columns": "copy duplicate
|
|
92
|
+
"view.transform.copy-columns": "copy duplicate column into a new column",
|
|
93
93
|
"view.transform.crosstab": (
|
|
94
94
|
"crosstab cross tab pivot table matrix rows by columns summary into a new dataset"
|
|
95
95
|
),
|
|
96
|
-
"view.transform.date-diff": "date difference days between two date columns age duration",
|
|
96
|
+
"view.transform.date-diff": "date dates difference days between two date columns age duration",
|
|
97
97
|
"view.transform.delete-columns": "delete drop remove columns",
|
|
98
98
|
"view.transform.discard-duplicates": (
|
|
99
99
|
"duplicate duplicates dedup dedupe deduplicate remove repeated rows unique distinct"
|
|
@@ -117,7 +117,7 @@ _COMMAND_DISCOVERY_PURPOSES = {
|
|
|
117
117
|
"second view views dataset datasets table tables vlookup"
|
|
118
118
|
),
|
|
119
119
|
"view.transform.json-extract": "json extract parse nested fields keys into columns",
|
|
120
|
-
"view.transform.limit-rows": "limit top bottom first last n rows
|
|
120
|
+
"view.transform.limit-rows": "limit top bottom first last n rows head",
|
|
121
121
|
"view.transform.lookup": (
|
|
122
122
|
"lookup look up vlookup reference table map code to name enrich one value "
|
|
123
123
|
"from another view dataset"
|
|
@@ -130,12 +130,19 @@ _COMMAND_DISCOVERY_PURPOSES = {
|
|
|
130
130
|
"pivot group by aggregate aggregation sum count average summary summarize "
|
|
131
131
|
"summarise per region total"
|
|
132
132
|
),
|
|
133
|
+
"view.transform.rename-columns": (
|
|
134
|
+
"rename column columns header headers relabel change column name names title"
|
|
135
|
+
),
|
|
133
136
|
"view.transform.replace": "find replace substitute text value in columns",
|
|
134
137
|
"view.transform.set-values": (
|
|
135
138
|
"set values assign overwrite blank empty default where condition label "
|
|
136
139
|
"category bucket flag if then conditional value"
|
|
137
140
|
),
|
|
138
141
|
"view.transform.small-large": "nth smallest largest value across columns",
|
|
142
|
+
"view.transform.sort": (
|
|
143
|
+
"sort sorting order rows by column ascending descending asc desc arrange "
|
|
144
|
+
"highest lowest newest oldest latest earliest date dates alphabetical"
|
|
145
|
+
),
|
|
139
146
|
"view.transform.split": "split column by delimiter separator into columns",
|
|
140
147
|
"view.transform.substring": "substring left right characters regex pattern extract part text",
|
|
141
148
|
"view.transform.text": (
|
|
@@ -404,7 +411,12 @@ def _tokens(value: str) -> frozenset[str]:
|
|
|
404
411
|
|
|
405
412
|
|
|
406
413
|
def _query_tokens(query: str) -> tuple[str, ...]:
|
|
407
|
-
|
|
414
|
+
# Bare numbers ("top 10") are values, not intent words.
|
|
415
|
+
return tuple(
|
|
416
|
+
token
|
|
417
|
+
for token in _tokens(query)
|
|
418
|
+
if token not in _DISCOVERY_STOPWORDS and not token.isdigit()
|
|
419
|
+
)
|
|
408
420
|
|
|
409
421
|
|
|
410
422
|
def _token_aliases(token: str) -> frozenset[str]:
|
|
@@ -252,10 +252,33 @@ BRIEF_VIEW_FIELDS: tuple[str, ...] = (
|
|
|
252
252
|
)
|
|
253
253
|
|
|
254
254
|
|
|
255
|
+
def apply_column_renames(record: Any) -> Any:
|
|
256
|
+
"""Show renamed columns under their new names in a dataview record.
|
|
257
|
+
|
|
258
|
+
A rename (``view transform rename-columns`` or the web grid) is stored in
|
|
259
|
+
``display_properties.COLUMN_NAMES`` as ``{internal_name: name}``; the
|
|
260
|
+
server's ``metadata`` keeps the name the pipeline produced. Every CLI
|
|
261
|
+
output uses the name the user sees, so the rename wins.
|
|
262
|
+
"""
|
|
263
|
+
if not isinstance(record, dict):
|
|
264
|
+
return record
|
|
265
|
+
display = record.get("display_properties")
|
|
266
|
+
renames = display.get("COLUMN_NAMES") if isinstance(display, dict) else None
|
|
267
|
+
metadata = record.get(_METADATA_KEY)
|
|
268
|
+
if not isinstance(renames, dict) or not renames or not isinstance(metadata, list):
|
|
269
|
+
return record
|
|
270
|
+
columns = []
|
|
271
|
+
for column in metadata:
|
|
272
|
+
new_name = renames.get(column.get(_INTERNAL_NAME_KEY)) if isinstance(column, dict) else None
|
|
273
|
+
columns.append({**column, _DISPLAY_NAME_KEY: new_name} if new_name else column)
|
|
274
|
+
return {**record, _METADATA_KEY: columns}
|
|
275
|
+
|
|
276
|
+
|
|
255
277
|
def brief_view_record(record: Any) -> Any:
|
|
256
|
-
"""Keep only :data:`BRIEF_VIEW_FIELDS` of a dataview record."""
|
|
278
|
+
"""Keep only :data:`BRIEF_VIEW_FIELDS` of a dataview record, renames applied."""
|
|
257
279
|
if not isinstance(record, dict):
|
|
258
280
|
return record
|
|
281
|
+
record = apply_column_renames(record)
|
|
259
282
|
return {key: record[key] for key in BRIEF_VIEW_FIELDS if key in record}
|
|
260
283
|
|
|
261
284
|
|
|
@@ -369,6 +392,7 @@ def _dataview_metadata(
|
|
|
369
392
|
)
|
|
370
393
|
except Exception: # noqa: BLE001 -- labels are a presentation nicety, never fatal
|
|
371
394
|
return []
|
|
395
|
+
info = apply_column_renames(info)
|
|
372
396
|
metadata = info.get(_METADATA_KEY) if isinstance(info, dict) else None
|
|
373
397
|
if not isinstance(metadata, list):
|
|
374
398
|
return []
|
|
@@ -24,6 +24,7 @@ from typing import Any
|
|
|
24
24
|
from mammoth_cli.commands.view import (
|
|
25
25
|
BRIEF_VIEW_FIELDS,
|
|
26
26
|
_require_discovery_allowed,
|
|
27
|
+
apply_column_renames,
|
|
27
28
|
brief_view_record,
|
|
28
29
|
)
|
|
29
30
|
from mammoth_cli.context import profiles
|
|
@@ -478,20 +479,28 @@ def view_get(invocation: Invocation) -> HandlerResult:
|
|
|
478
479
|
kwargs: dict[str, Any] = {
|
|
479
480
|
"dataset_id": dataset_id,
|
|
480
481
|
"dataview_id": view_id,
|
|
481
|
-
# Server-side projection; the brief set
|
|
482
|
+
# Server-side projection; the brief set (plus the display
|
|
483
|
+
# properties that carry column renames) unless the caller asks.
|
|
482
484
|
"fields": document.get("fields")
|
|
483
|
-
or ",".join(
|
|
485
|
+
or ",".join(
|
|
486
|
+
[key for key in BRIEF_VIEW_FIELDS if key != "dataset_id"] + ["display_properties"]
|
|
487
|
+
),
|
|
484
488
|
}
|
|
485
489
|
with open_service(invocation) as (service, auth):
|
|
486
490
|
data = service.call("mammoth.api.dataviews.DataviewsAPI.get", **kwargs)
|
|
487
491
|
parents.remember(_profile_name(invocation), auth.workspace_id, {view_id: dataset_id})
|
|
492
|
+
data = apply_column_renames(data) if document.get("fields") else brief_view_record(data)
|
|
488
493
|
return data, _meta(invocation, auth.workspace_id)
|
|
489
494
|
context: dict[str, Any] = {"view_id": view_id}
|
|
490
495
|
if dataset_id is not None:
|
|
491
496
|
context["dataset_id"] = dataset_id
|
|
492
497
|
# The generated contract predates the optional parent context; preserve
|
|
493
498
|
# its declared fields, then add the validated SDK parent explicitly.
|
|
494
|
-
|
|
499
|
+
# ``fields`` projects the exact-parent route only; the discovery route
|
|
500
|
+
# returns the full record, trimmed below unless ``fields`` was asked for.
|
|
501
|
+
binding_document = {
|
|
502
|
+
key: value for key, value in document.items() if key not in ("dataset_id", "fields")
|
|
503
|
+
}
|
|
495
504
|
kwargs = bind_command_inputs(invocation.command_id, binding_document, view_id=view_id)
|
|
496
505
|
if dataset_id is not None:
|
|
497
506
|
kwargs["dataset_id"] = dataset_id
|
|
@@ -503,6 +512,8 @@ def view_get(invocation: Invocation) -> HandlerResult:
|
|
|
503
512
|
# The discovery path returns the standard record; trim it to the same
|
|
504
513
|
# brief shape the exact path asks the server for.
|
|
505
514
|
payload = brief_view_record(payload)
|
|
515
|
+
else:
|
|
516
|
+
payload = apply_column_renames(payload)
|
|
506
517
|
return payload, _meta(invocation, auth.workspace_id)
|
|
507
518
|
|
|
508
519
|
|
|
@@ -794,6 +805,26 @@ def view_transform_limit_rows(invocation: Invocation) -> HandlerResult:
|
|
|
794
805
|
return _dispatch_view(invocation, view_id, "limit_rows", **kwargs)
|
|
795
806
|
|
|
796
807
|
|
|
808
|
+
def view_transform_rename_columns(invocation: Invocation) -> HandlerResult:
|
|
809
|
+
"""Rename columns (a view display setting, not a task). ``renames`` is required."""
|
|
810
|
+
view_id = _view_id(invocation)
|
|
811
|
+
document = invocation.load_input()
|
|
812
|
+
_require_field(document, "renames")
|
|
813
|
+
assert document is not None
|
|
814
|
+
kwargs = _bind_transform_inputs(invocation, document)
|
|
815
|
+
return _dispatch_view(invocation, view_id, "rename_columns", **kwargs)
|
|
816
|
+
|
|
817
|
+
|
|
818
|
+
def view_transform_sort(invocation: Invocation) -> HandlerResult:
|
|
819
|
+
"""Set the view's row order (a display setting, not a task). ``order_by`` is required."""
|
|
820
|
+
view_id = _view_id(invocation)
|
|
821
|
+
document = invocation.load_input()
|
|
822
|
+
_require_field(document, "order_by")
|
|
823
|
+
assert document is not None
|
|
824
|
+
kwargs = _bind_transform_inputs(invocation, document)
|
|
825
|
+
return _dispatch_view(invocation, view_id, "sort_rows", **kwargs)
|
|
826
|
+
|
|
827
|
+
|
|
797
828
|
def view_transform_lookup(invocation: Invocation) -> HandlerResult:
|
|
798
829
|
"""Look up values from another view. ``source``/``lookup_view_id``/``key``/
|
|
799
830
|
``value`` required."""
|
|
@@ -48,6 +48,9 @@ _EXAMPLE_INPUT_HINTS: dict[str, dict[str, Any]] = {
|
|
|
48
48
|
"existing_column": "Status",
|
|
49
49
|
"condition": {"column": "Status", "operator": "IS_EMPTY"},
|
|
50
50
|
},
|
|
51
|
+
# View display settings: real column names read better than sample keys.
|
|
52
|
+
"view.transform.rename-columns": {"renames": {"cust_id": "Customer ID"}},
|
|
53
|
+
"view.transform.sort": {"order_by": [["Revenue", "DESC"]]},
|
|
51
54
|
# The backend requires integer resource ids ("resource_ids must be
|
|
52
55
|
# comma-separated integers"); the SDK annotation is a plain list[str].
|
|
53
56
|
"project.resource-dependencies": {"resource_ids": [456]},
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "mammoth-cli"
|
|
3
|
-
version = "2.0.
|
|
3
|
+
version = "2.0.38"
|
|
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.7.
|
|
10
|
+
"mammoth-io (>=0.7.17,<0.8)",
|
|
11
11
|
"typer (>=0.27,<0.28)",
|
|
12
12
|
"rich (>=15,<16)",
|
|
13
13
|
"platformdirs (>=4.10,<5)",
|
|
@@ -4543,6 +4543,47 @@ commands:
|
|
|
4543
4543
|
must be a display name that does not already exist on the view (4DTVW018 SAME_DISPLAY_NAME_CANNOT_BE_REUSED):
|
|
4544
4544
|
aggregate a joined column under a new name.'
|
|
4545
4545
|
reviewed_by: primary
|
|
4546
|
+
- command_id: view.transform.rename-columns
|
|
4547
|
+
command_path: view transform rename-columns
|
|
4548
|
+
disposition: command
|
|
4549
|
+
alias_of: null
|
|
4550
|
+
operation_ids:
|
|
4551
|
+
- Patch
|
|
4552
|
+
positionals:
|
|
4553
|
+
- name: view_id
|
|
4554
|
+
type: int
|
|
4555
|
+
required: true
|
|
4556
|
+
metavar: VIEW_ID
|
|
4557
|
+
falls_back_to_field: null
|
|
4558
|
+
help: ID of the view to act on.
|
|
4559
|
+
options: []
|
|
4560
|
+
sdk_symbol: mammoth._mixins._column_ops.ColumnOpsMixin.rename_columns
|
|
4561
|
+
sdk_conversion: Call mammoth._mixins._column_ops.ColumnOpsMixin.rename_columns with validated request
|
|
4562
|
+
fields.
|
|
4563
|
+
request_model: ViewTransformRenameColumnsRequest
|
|
4564
|
+
result_model: ViewTransformRenameColumnsResult
|
|
4565
|
+
mutation_class: benign_mutation
|
|
4566
|
+
confirmation: none
|
|
4567
|
+
wait_policy: not_async
|
|
4568
|
+
pagination_policy: none
|
|
4569
|
+
acceptance_evidence: live_disposable_project
|
|
4570
|
+
live_test: LT-VIEW-TRANSFORM-RENAME-COLUMNS
|
|
4571
|
+
live_exemption_reason: null
|
|
4572
|
+
contract_fixture: null
|
|
4573
|
+
required_fixture_guard: null
|
|
4574
|
+
secret_fields: []
|
|
4575
|
+
human_example: mammoth view transform rename-columns VIEW_ID --help
|
|
4576
|
+
agent_example: 'mammoth view transform rename-columns 123 --input ''{"renames": {"cust_id": "Customer ID"}, "dataset_id": 456}'''
|
|
4577
|
+
unit_tests:
|
|
4578
|
+
- UT-VIEW-TRANSFORM-RENAME-COLUMNS
|
|
4579
|
+
contract_tests:
|
|
4580
|
+
- CT-VIEW-TRANSFORM-RENAME-COLUMNS-HUMAN
|
|
4581
|
+
- CT-VIEW-TRANSFORM-RENAME-COLUMNS-JSON
|
|
4582
|
+
- CT-VIEW-TRANSFORM-RENAME-COLUMNS-ERROR
|
|
4583
|
+
draft_test: null
|
|
4584
|
+
undo_test: null
|
|
4585
|
+
known_restrictions: 'A view display setting (the web grid''s column rename), not a pipeline task: it changes no data and adds no task.'
|
|
4586
|
+
reviewed_by: primary
|
|
4546
4587
|
- command_id: view.transform.replace
|
|
4547
4588
|
command_path: view transform replace
|
|
4548
4589
|
disposition: command
|
|
@@ -4666,6 +4707,47 @@ commands:
|
|
|
4666
4707
|
undo_test: LT-VIEW-TRANSFORM-SMALL-LARGE-UNDO
|
|
4667
4708
|
known_restrictions: null
|
|
4668
4709
|
reviewed_by: primary
|
|
4710
|
+
- command_id: view.transform.sort
|
|
4711
|
+
command_path: view transform sort
|
|
4712
|
+
disposition: command
|
|
4713
|
+
alias_of: null
|
|
4714
|
+
operation_ids:
|
|
4715
|
+
- Patch
|
|
4716
|
+
positionals:
|
|
4717
|
+
- name: view_id
|
|
4718
|
+
type: int
|
|
4719
|
+
required: true
|
|
4720
|
+
metavar: VIEW_ID
|
|
4721
|
+
falls_back_to_field: null
|
|
4722
|
+
help: ID of the view to act on.
|
|
4723
|
+
options: []
|
|
4724
|
+
sdk_symbol: mammoth._mixins._row_ops.RowOpsMixin.sort_rows
|
|
4725
|
+
sdk_conversion: Call mammoth._mixins._row_ops.RowOpsMixin.sort_rows with validated request
|
|
4726
|
+
fields.
|
|
4727
|
+
request_model: ViewTransformSortRequest
|
|
4728
|
+
result_model: ViewTransformSortResult
|
|
4729
|
+
mutation_class: benign_mutation
|
|
4730
|
+
confirmation: none
|
|
4731
|
+
wait_policy: not_async
|
|
4732
|
+
pagination_policy: none
|
|
4733
|
+
acceptance_evidence: live_disposable_project
|
|
4734
|
+
live_test: LT-VIEW-TRANSFORM-SORT
|
|
4735
|
+
live_exemption_reason: null
|
|
4736
|
+
contract_fixture: null
|
|
4737
|
+
required_fixture_guard: null
|
|
4738
|
+
secret_fields: []
|
|
4739
|
+
human_example: mammoth view transform sort VIEW_ID --help
|
|
4740
|
+
agent_example: 'mammoth view transform sort 123 --input ''{"order_by": [["Revenue", "DESC"]], "dataset_id": 456}'''
|
|
4741
|
+
unit_tests:
|
|
4742
|
+
- UT-VIEW-TRANSFORM-SORT
|
|
4743
|
+
contract_tests:
|
|
4744
|
+
- CT-VIEW-TRANSFORM-SORT-HUMAN
|
|
4745
|
+
- CT-VIEW-TRANSFORM-SORT-JSON
|
|
4746
|
+
- CT-VIEW-TRANSFORM-SORT-ERROR
|
|
4747
|
+
draft_test: null
|
|
4748
|
+
undo_test: null
|
|
4749
|
+
known_restrictions: 'A view display setting (the web grid''s sort), not a pipeline task: data reads and exports return rows in this order. At most three columns.'
|
|
4750
|
+
reviewed_by: primary
|
|
4669
4751
|
- command_id: view.transform.split
|
|
4670
4752
|
command_path: view transform split
|
|
4671
4753
|
disposition: command
|
|
@@ -106,6 +106,13 @@ sdk_methods:
|
|
|
106
106
|
pagination_policy: null
|
|
107
107
|
openapi_operation_ids: []
|
|
108
108
|
notes: Standard transformation policy; task deletion restores columns only when the task ID is stable.
|
|
109
|
+
- sdk_symbol: mammoth._mixins._column_ops.ColumnOpsMixin.rename_columns
|
|
110
|
+
canonical_command: view.transform.rename-columns
|
|
111
|
+
alias_of: null
|
|
112
|
+
mutation_class: benign_mutation
|
|
113
|
+
wait_policy: not_async
|
|
114
|
+
pagination_policy: null
|
|
115
|
+
openapi_operation_ids: []
|
|
109
116
|
- sdk_symbol: mammoth._mixins._date_ops.DateOpsMixin.date_diff
|
|
110
117
|
canonical_command: view.transform.date-diff
|
|
111
118
|
alias_of: null
|
|
@@ -193,6 +200,13 @@ sdk_methods:
|
|
|
193
200
|
wait_policy: always_wait
|
|
194
201
|
pagination_policy: null
|
|
195
202
|
openapi_operation_ids: []
|
|
203
|
+
- sdk_symbol: mammoth._mixins._row_ops.RowOpsMixin.sort_rows
|
|
204
|
+
canonical_command: view.transform.sort
|
|
205
|
+
alias_of: null
|
|
206
|
+
mutation_class: benign_mutation
|
|
207
|
+
wait_policy: not_async
|
|
208
|
+
pagination_policy: null
|
|
209
|
+
openapi_operation_ids: []
|
|
196
210
|
- sdk_symbol: mammoth._mixins._row_ops.RowOpsMixin.unnest
|
|
197
211
|
canonical_command: view.transform.unnest
|
|
198
212
|
alias_of: null
|
|
@@ -170,6 +170,18 @@ methods:
|
|
|
170
170
|
pagination_policy: null
|
|
171
171
|
secret_fields: []
|
|
172
172
|
reviewed_by: primary
|
|
173
|
+
- sdk_symbol: mammoth._mixins._column_ops.ColumnOpsMixin.rename_columns
|
|
174
|
+
implementation_origin: mammoth._mixins._column_ops.ColumnOpsMixin.rename_columns
|
|
175
|
+
signature: 'rename_columns(self, renames: ''dict[str, str]'') -> ''dict[str, Any]'''
|
|
176
|
+
openapi_operation_ids: []
|
|
177
|
+
canonical_command: view.transform.rename-columns
|
|
178
|
+
alias_of: null
|
|
179
|
+
no_command_reason: null
|
|
180
|
+
mutation_class: benign_mutation
|
|
181
|
+
wait_policy: not_async
|
|
182
|
+
pagination_policy: null
|
|
183
|
+
secret_fields: []
|
|
184
|
+
reviewed_by: primary
|
|
173
185
|
- sdk_symbol: mammoth._mixins._date_ops.DateOpsMixin.date_diff
|
|
174
186
|
implementation_origin: mammoth._mixins._date_ops.DateOpsMixin.date_diff
|
|
175
187
|
signature: 'date_diff(self, component: ''DateDiffUnit'', start: ''str'', end: ''str'', new_column: ''str | None'' = None, existing_column: ''str | None'' = None) -> ''dict[str, Any]'''
|
|
@@ -314,6 +326,18 @@ methods:
|
|
|
314
326
|
pagination_policy: null
|
|
315
327
|
secret_fields: []
|
|
316
328
|
reviewed_by: primary
|
|
329
|
+
- sdk_symbol: mammoth._mixins._row_ops.RowOpsMixin.sort_rows
|
|
330
|
+
implementation_origin: mammoth._mixins._row_ops.RowOpsMixin.sort_rows
|
|
331
|
+
signature: 'sort_rows(self, order_by: ''list[list[str | SortDirection]]'') -> ''dict[str, Any]'''
|
|
332
|
+
openapi_operation_ids: []
|
|
333
|
+
canonical_command: view.transform.sort
|
|
334
|
+
alias_of: null
|
|
335
|
+
no_command_reason: null
|
|
336
|
+
mutation_class: benign_mutation
|
|
337
|
+
wait_policy: not_async
|
|
338
|
+
pagination_policy: null
|
|
339
|
+
secret_fields: []
|
|
340
|
+
reviewed_by: primary
|
|
317
341
|
- sdk_symbol: mammoth._mixins._row_ops.RowOpsMixin.unnest
|
|
318
342
|
implementation_origin: mammoth._mixins._row_ops.RowOpsMixin.unnest
|
|
319
343
|
signature: 'unnest(self, columns: ''list[str]'', label_column: ''str'' = ''Label'', value_column: ''str'' = ''Value'', value_type: ''str | None'' = None) -> ''dict[str, Any]'''
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mammoth_cli-2.0.37 → mammoth_cli-2.0.38}/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
|