mammoth-cli 2.0.78__tar.gz → 2.0.80__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.78 → mammoth_cli-2.0.80}/PKG-INFO +1 -1
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/__init__.py +1 -1
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +18 -18
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/services/data_quality.py +90 -3
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/services/sdk_service.py +51 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/pyproject.toml +1 -1
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/.gitignore +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/LICENSE +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/README.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/__main__.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/app.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/about-mammoth.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities-misc.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/calc.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-qa.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/data-app.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/log.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view-transform.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/end-to-end.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/need-action.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/scheduling.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/report-checklist.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/__init__.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/activity.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/addon.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/agent.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/ai.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/annotation.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/auth.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/automation.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/batch.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/billing.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/browse.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/calc.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/capability.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/client_app.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/completion.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/config.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/connector.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/context.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/dashboard.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/data_app.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/dataset.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/doctor.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/external_key.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/file.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/folder.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/job.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/notification.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/parameter.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/project.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/registry.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/report.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/schedule.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/schema.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/skill.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/snippet.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/support.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/template.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/trash.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/upgrade.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/user.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/view.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/view_ops.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/webhook.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/workflow.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/commands/workspace.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/context/__init__.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/context/credentials.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/context/endpoint.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/context/profiles.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/context/resolver.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/contracts/__init__.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/contracts/auth.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/embed.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/errors/__init__.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/errors/envelope.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/manifest/__init__.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/manifest/loader.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/messages/__init__.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/output/__init__.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/output/envelope.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/output/normalize.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/output/policy.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/output/progress.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/output/render.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/py.typed +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/runtime/__init__.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/runtime/confirm.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/runtime/dryrun.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/runtime/embedded.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/runtime/executor.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/runtime/input_loader.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/runtime/invocation.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/runtime/options.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/runtime/parents.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/runtime/runlog.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/runtime/session.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/runtime/state.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/runtime/strict.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/runtime/updates.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/runtime/validate.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/runtime/verify.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/services/__init__.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/services/argspec.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/services/coerce.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/services/command_contract.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/services/conditions.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/services/dashboard_pages.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/services/dashboard_review.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/services/dispatch.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/services/factory.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/services/input_fields.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/services/mapping.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/services/openapi_types.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/services/positionals.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/services/protocol.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/services/testing.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/services/type_system.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/skills/__init__.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/skills/installer.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/skills/steering.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/testing.py +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/activity.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/addon.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/agent.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/ai.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/annotation.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/auth.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/automation.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/batch.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/billing.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/browse.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/calc.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/capability.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/client-app.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/completion.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/config.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/connector.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/context.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/dashboard.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/data-app.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/dataset.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/doctor.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/external-key.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/file.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/folder.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/job.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/log.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/notification.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/parameter.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/project.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/report.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/schedule.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/schema.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/skill.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/snippet.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/support.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/template.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/trash.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/upgrade.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/user.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/version.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/view.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/webhook.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/workflow.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/commands/workspace.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/openapi-operations.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/schema-v1.json +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/sdk-catalog.source.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/manifests/sdk-methods.yaml +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/openapi/metadata.json +0 -0
- {mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/spec/openapi/openapi.json +0 -0
|
@@ -42,12 +42,16 @@ never read one from a file/env var, never run `auth login`
|
|
|
42
42
|
yourself. If any envelope carries `meta.update_available`, run its `command`
|
|
43
43
|
before the next step.
|
|
44
44
|
|
|
45
|
+
In a shell: piped stdout is compact JSON and prompts are off; in a session
|
|
46
|
+
that is not piped, `export MAMMOTH_OUTPUT=json MAMMOTH_NO_INPUT=1` once.
|
|
47
|
+
`project ensure` saves the active project (`--project`, `MAMMOTH_PROFILE`
|
|
48
|
+
and `MAMMOTH_PROJECT` override it). `mammoth skill show --input '{"file":
|
|
49
|
+
"references/recipes/transforms.md"}'` prints any file of this skill;
|
|
50
|
+
`mammoth skill agents-md install` writes a steering block into a
|
|
51
|
+
repository's AGENTS.md so later sessions start here.
|
|
52
|
+
|
|
45
53
|
## Defaults you do not repeat
|
|
46
54
|
|
|
47
|
-
- Piped stdout is compact JSON and prompts are off. Only in a session that
|
|
48
|
-
is not piped, `export MAMMOTH_OUTPUT=json MAMMOTH_NO_INPUT=1` once.
|
|
49
|
-
- `project ensure` saves the active project; `--project` only overrides it.
|
|
50
|
-
`MAMMOTH_PROFILE` / `MAMMOTH_PROJECT` also work as session defaults.
|
|
51
55
|
- The CLI remembers which dataset owns each view from any read (`view list
|
|
52
56
|
DATASET_ID`, `view get VIEW_ID`, an upload). After that, no `dataset_id`
|
|
53
57
|
on transforms, exports or deletes. If a command asks for the parent
|
|
@@ -96,10 +100,10 @@ with the command tried.
|
|
|
96
100
|
Users often upload related files without saying how they relate ("make a
|
|
97
101
|
dashboard from t_a and t_b"). Work it out from the data before building:
|
|
98
102
|
|
|
99
|
-
1. Upload every file
|
|
100
|
-
made of it (`view_id`, column
|
|
101
|
-
|
|
102
|
-
|
|
103
|
+
1. Upload every file, or find the ones already uploaded. An upload result
|
|
104
|
+
carries a `view` preview of what Mammoth made of it (`view_id`, column
|
|
105
|
+
types, sample rows, `column_warnings`, `before_dashboard`). What Mammoth
|
|
106
|
+
made of the files is what counts, not the raw files. Run `view data get VIEW_ID` per view;
|
|
103
107
|
warnings list numbers/dates stored as text, and blanks, each with its fix.
|
|
104
108
|
2. Find the keys. A column in one view whose values appear in a column of
|
|
105
109
|
the other (`customer_id` and `id`, `order_ref` and `order_no`) is a
|
|
@@ -114,8 +118,8 @@ dashboard from t_a and t_b"). Work it out from the data before building:
|
|
|
114
118
|
is a miss.
|
|
115
119
|
5. `view transform join` the lookup view into the main view (`LEFT`). The
|
|
116
120
|
result's `join_check` gives `match_rate`, `unmatched_rows` and
|
|
117
|
-
`unmatched_keys`; put them in your report
|
|
118
|
-
|
|
121
|
+
`unmatched_keys`; put them in your report. When the result's
|
|
122
|
+
`verify.needs_user` is set, stop and tell the user before building on it.
|
|
119
123
|
6. If the data has money, add it before you make the dashboard: `revenue`
|
|
120
124
|
(`math`, `qty * price`, `new_column`), the `fix` in `before_dashboard`.
|
|
121
125
|
A dashboard sees only the columns the view had when it was made.
|
|
@@ -134,9 +138,6 @@ your report. If no column links the files, ask before you combine them.
|
|
|
134
138
|
|
|
135
139
|
- Ids are positionals; request fields are one `--input '{...}'` document;
|
|
136
140
|
no per-field flags (`project create NAME`, not `--name`).
|
|
137
|
-
- `mammoth skill show --input '{"file": "references/recipes/transforms.md"}'`
|
|
138
|
-
prints any file of this skill; `mammoth skill agents-md install` writes a
|
|
139
|
-
steering block into a repository's AGENTS.md so later sessions start here.
|
|
140
141
|
- `COMMAND --help` lists input fields; `schema find WORDS` inlines
|
|
141
142
|
`accepted_fields`/`agent_example` for top matches, else `mammoth schema
|
|
142
143
|
get COMMAND_ID` (`--input '{"full": true}'` for the schema); `schema
|
|
@@ -161,11 +162,10 @@ your report. If no column links the files, ask before you combine them.
|
|
|
161
162
|
|
|
162
163
|
## Verify before you report
|
|
163
164
|
|
|
164
|
-
- A success envelope proves the call
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
before the change.
|
|
165
|
+
- A success envelope proves the call; the write's `state` (the data,
|
|
166
|
+
object or job status read back after it settled) shows the outcome.
|
|
167
|
+
Check it against your plan: rows the change should and should not have
|
|
168
|
+
touched. `unreadable` or a partial sample: read it with `view data get`.
|
|
169
169
|
- A uniform result (every amount 0, every region "Unknown", most join rows
|
|
170
170
|
unmatched) means the previous step went wrong; stop and re-inspect it.
|
|
171
171
|
- `column_warnings` on a data read and `join_check` on a join are findings,
|
|
@@ -11,6 +11,7 @@ from __future__ import annotations
|
|
|
11
11
|
|
|
12
12
|
import json
|
|
13
13
|
import re
|
|
14
|
+
from collections import Counter
|
|
14
15
|
from collections.abc import Iterable, Mapping
|
|
15
16
|
from datetime import datetime
|
|
16
17
|
from typing import Any
|
|
@@ -20,8 +21,14 @@ _MOSTLY = 0.8
|
|
|
20
21
|
#: Fewer non-blank values than this are too few to call a pattern.
|
|
21
22
|
_MIN_VALUES = 3
|
|
22
23
|
_MAX_EXAMPLES = 3
|
|
24
|
+
#: Most groups of variant spellings to name in one warning.
|
|
25
|
+
_MAX_VARIANT_GROUPS = 5
|
|
23
26
|
|
|
24
27
|
_NUMBER = re.compile(r"^[-+]?[$€£]?\s*\d[\d,]*(\.\d+)?\s*%?$|^[-+]?[$€£]?\s*\.\d+\s*%?$")
|
|
28
|
+
#: Punctuation is normalised to a space, not dropped, so "Pepsi,Cola" and
|
|
29
|
+
#: "Pepsi Cola" collapse the same way as "Pepsi Cola" itself.
|
|
30
|
+
_PUNCTUATION = re.compile(r"[^\w\s]", re.UNICODE)
|
|
31
|
+
_WHITESPACE = re.compile(r"\s+")
|
|
25
32
|
_DATE_FORMATS = (
|
|
26
33
|
"%Y-%m-%d",
|
|
27
34
|
"%Y/%m/%d",
|
|
@@ -61,6 +68,82 @@ def _convert_hint(view_id: int | None, column: str, to: str) -> str:
|
|
|
61
68
|
return f"mammoth view transform convert-type {target} --input '{spec}'"
|
|
62
69
|
|
|
63
70
|
|
|
71
|
+
def _bulk_replace_hint(view_id: int | None, column: str, mapping: list[dict[str, Any]]) -> str:
|
|
72
|
+
target = str(view_id) if view_id is not None else "VIEW_ID"
|
|
73
|
+
spec = json.dumps({"columns": [column], "mapping": mapping})
|
|
74
|
+
return f"mammoth view transform bulk-replace {target} --input '{spec}'"
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def _spelling_key(text: str) -> str:
|
|
78
|
+
"""Case-, whitespace- and punctuation-insensitive grouping key.
|
|
79
|
+
|
|
80
|
+
Punctuation is replaced with a space (not dropped) before whitespace is
|
|
81
|
+
collapsed, so inner punctuation ("Pepsi, Co.") normalises the same way
|
|
82
|
+
as a plain space ("Pepsi Co"). This is normalisation, not fuzzy
|
|
83
|
+
matching: different words ("pepsi cola") get a different key than
|
|
84
|
+
("pepsi") and are never grouped.
|
|
85
|
+
"""
|
|
86
|
+
despaced = _WHITESPACE.sub(" ", _PUNCTUATION.sub(" ", text))
|
|
87
|
+
return despaced.strip().lower()
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def _variant_spelling_groups(texts: list[str]) -> list[tuple[str, list[str]]]:
|
|
91
|
+
"""Group distinct values that share a spelling key, keys sorted for stable output.
|
|
92
|
+
|
|
93
|
+
Only keys with more than one distinct raw value are a "group" worth
|
|
94
|
+
reporting; a single spelling of a value is not a finding.
|
|
95
|
+
"""
|
|
96
|
+
by_key: dict[str, list[str]] = {}
|
|
97
|
+
for text in dict.fromkeys(texts): # distinct values, first-seen order
|
|
98
|
+
key = _spelling_key(text)
|
|
99
|
+
if not key:
|
|
100
|
+
continue
|
|
101
|
+
by_key.setdefault(key, []).append(text)
|
|
102
|
+
groups = [(key, values) for key, values in by_key.items() if len(values) > 1]
|
|
103
|
+
return sorted(groups, key=lambda item: item[0])
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
def _most_used_spelling(values: list[str], counts: Counter[str]) -> str:
|
|
107
|
+
"""The group's most frequent real spelling (first seen on a tie), trimmed.
|
|
108
|
+
|
|
109
|
+
Never a synthesised form such as ``str.title()``, which would rewrite
|
|
110
|
+
"McDonald's" as "Mcdonald'S".
|
|
111
|
+
"""
|
|
112
|
+
return max(values, key=lambda value: counts[value]).strip()
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
def _variant_spellings_warning(
|
|
116
|
+
column: str,
|
|
117
|
+
texts: list[str],
|
|
118
|
+
view_id: int | None,
|
|
119
|
+
checked: int,
|
|
120
|
+
) -> dict[str, Any] | None:
|
|
121
|
+
groups = _variant_spelling_groups(texts)
|
|
122
|
+
if not groups:
|
|
123
|
+
return None
|
|
124
|
+
shown = groups[:_MAX_VARIANT_GROUPS]
|
|
125
|
+
counts = Counter(texts)
|
|
126
|
+
canonical = {key: _most_used_spelling(values, counts) for key, values in shown}
|
|
127
|
+
mapping = [{"search": sorted(values), "replace": canonical[key]} for key, values in shown]
|
|
128
|
+
examples = "; ".join(
|
|
129
|
+
"{" + ", ".join(repr(v) for v in sorted(values)) + "}" + f" -> {canonical[key]!r}"
|
|
130
|
+
for key, values in shown
|
|
131
|
+
)
|
|
132
|
+
detail = (
|
|
133
|
+
f"{len(groups)} group(s) of values in this TEXT column differ only in case, "
|
|
134
|
+
f"whitespace or punctuation and will be counted separately unless unified: {examples}."
|
|
135
|
+
)
|
|
136
|
+
if len(groups) > _MAX_VARIANT_GROUPS:
|
|
137
|
+
detail += f" ({len(groups) - _MAX_VARIANT_GROUPS} more not shown)."
|
|
138
|
+
return {
|
|
139
|
+
"column": column,
|
|
140
|
+
"issue": "variant_spellings",
|
|
141
|
+
"detail": detail,
|
|
142
|
+
"fix": _bulk_replace_hint(view_id, column, mapping),
|
|
143
|
+
"rows_checked": checked,
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
|
|
64
147
|
def _duplicate_rows_warning(
|
|
65
148
|
rows: list[Mapping[str, Any]],
|
|
66
149
|
view_id: int | None,
|
|
@@ -111,9 +194,10 @@ def column_warnings(
|
|
|
111
194
|
Returns:
|
|
112
195
|
One record per finding: ``column``, ``issue``
|
|
113
196
|
(``numbers_stored_as_text``, ``dates_stored_as_text``,
|
|
114
|
-
``blank_values`` or the table-level
|
|
115
|
-
and, where one command fixes it,
|
|
116
|
-
given (``rows_checked`` on each
|
|
197
|
+
``variant_spellings``, ``blank_values`` or the table-level
|
|
198
|
+
``duplicate_rows``), ``detail`` and, where one command fixes it,
|
|
199
|
+
``fix``. Counts are over the rows given (``rows_checked`` on each
|
|
200
|
+
record).
|
|
117
201
|
"""
|
|
118
202
|
materialised = [row for row in rows if isinstance(row, Mapping)]
|
|
119
203
|
if not materialised:
|
|
@@ -166,6 +250,9 @@ def column_warnings(
|
|
|
166
250
|
}
|
|
167
251
|
)
|
|
168
252
|
break
|
|
253
|
+
variant_warning = _variant_spellings_warning(column, texts, view_id, checked)
|
|
254
|
+
if variant_warning is not None:
|
|
255
|
+
warnings.append(variant_warning)
|
|
169
256
|
if blanks:
|
|
170
257
|
warnings.append(
|
|
171
258
|
{
|
|
@@ -489,6 +489,7 @@ class SdkMammothService:
|
|
|
489
489
|
local_columns = getattr(view, "columns", {}) or {}
|
|
490
490
|
local_internal = {value for value in local_columns.values() if isinstance(value, str)}
|
|
491
491
|
local_display = set(local_columns)
|
|
492
|
+
local_types = getattr(view, "column_types", {}) or {}
|
|
492
493
|
|
|
493
494
|
def check(value: Any, *, scope: str, columns: dict[str, str], display: set[str]) -> None:
|
|
494
495
|
internal = {item for item in columns.values() if isinstance(item, str)}
|
|
@@ -583,6 +584,8 @@ class SdkMammothService:
|
|
|
583
584
|
columns=local_columns,
|
|
584
585
|
display=local_display,
|
|
585
586
|
)
|
|
587
|
+
if not spec.get("value_is_column") and "value" in spec:
|
|
588
|
+
SdkMammothService._coerce_numeric_condition_value(spec, local_types)
|
|
586
589
|
if spec.get("value_is_column") and "value" in spec:
|
|
587
590
|
check(
|
|
588
591
|
spec["value"],
|
|
@@ -639,6 +642,54 @@ class SdkMammothService:
|
|
|
639
642
|
display=foreign_display,
|
|
640
643
|
)
|
|
641
644
|
|
|
645
|
+
@staticmethod
|
|
646
|
+
def _coerce_numeric_condition_value(spec: dict[str, Any], column_types: dict[str, str]) -> None:
|
|
647
|
+
"""Convert a numeric-string condition value against a NUMERIC column.
|
|
648
|
+
|
|
649
|
+
The backend accepts a filter/set-values/pivot condition whose value is
|
|
650
|
+
a string even when the column is NUMERIC, then puts the whole pipeline
|
|
651
|
+
into ref_error (7003 "type mismatch") on the next read. The CLI already
|
|
652
|
+
knows the column's type, so it converts what it can and fails locally,
|
|
653
|
+
before any request, for what it can't. DATE columns are left as is.
|
|
654
|
+
"""
|
|
655
|
+
column = spec.get("column")
|
|
656
|
+
if not isinstance(column, str) or column_types.get(column) != "NUMERIC":
|
|
657
|
+
return
|
|
658
|
+
|
|
659
|
+
def convert(item: Any) -> Any:
|
|
660
|
+
if not isinstance(item, str):
|
|
661
|
+
return item
|
|
662
|
+
try:
|
|
663
|
+
return int(item)
|
|
664
|
+
except ValueError:
|
|
665
|
+
pass
|
|
666
|
+
try:
|
|
667
|
+
number = float(item)
|
|
668
|
+
except ValueError:
|
|
669
|
+
raise SdkMammothService._condition_value_type_error(
|
|
670
|
+
column, "NUMERIC", item
|
|
671
|
+
) from None
|
|
672
|
+
return int(number) if number.is_integer() else number
|
|
673
|
+
|
|
674
|
+
value = spec["value"]
|
|
675
|
+
spec["value"] = (
|
|
676
|
+
[convert(item) for item in value] if isinstance(value, list) else convert(value)
|
|
677
|
+
)
|
|
678
|
+
|
|
679
|
+
@staticmethod
|
|
680
|
+
def _condition_value_type_error(column: str, column_type: str, value: str) -> CliError:
|
|
681
|
+
"""Build a stable pre-mutation condition-value type error."""
|
|
682
|
+
return CliError(
|
|
683
|
+
code="invalid_condition_value",
|
|
684
|
+
message=(
|
|
685
|
+
f"Condition value {value!r} for column '{column}' ({column_type}) "
|
|
686
|
+
"is not a valid number."
|
|
687
|
+
),
|
|
688
|
+
exit_status=EXIT_USAGE,
|
|
689
|
+
hint="Use a numeric value for a NUMERIC column.",
|
|
690
|
+
details={"column": column, "column_type": column_type, "value": value},
|
|
691
|
+
)
|
|
692
|
+
|
|
642
693
|
@staticmethod
|
|
643
694
|
def column_input_error(
|
|
644
695
|
reference: str,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mammoth_cli-2.0.78 → mammoth_cli-2.0.80}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|