mammoth-cli 2.2.22__tar.gz → 2.2.23__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/PKG-INFO +1 -1
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/__init__.py +1 -1
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/dataset.py +69 -2
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/view_ops.py +25 -1
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/errors/envelope.py +2 -0
- mammoth_cli-2.2.23/mammoth_cli/services/sql_check.py +87 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/pyproject.toml +1 -1
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/.gitignore +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/LICENSE +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/README.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/__main__.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/app.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/about-mammoth.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities-misc.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/calc.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-qa.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-style.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-template.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/data-app.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/link.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/log.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view-transform.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/database-import.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/end-to-end.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/need-action.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/scheduling.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/report-checklist.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/__init__.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/activity.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/addon.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/agent.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/ai.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/annotation.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/auth.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/automation.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/batch.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/billing.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/browse.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/calc.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/capability.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/client_app.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/completion.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/config.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/connector.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/context.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/dashboard.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/data_app.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/doctor.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/external_key.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/file.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/folder.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/job.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/link.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/notification.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/parameter.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/project.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/registry.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/report.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/schedule.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/schema.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/skill.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/snippet.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/support.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/template.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/trash.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/upgrade.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/user.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/view.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/view_profile.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/webhook.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/workflow.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/commands/workspace.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/context/__init__.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/context/credentials.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/context/endpoint.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/context/profiles.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/context/resolver.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/contracts/__init__.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/contracts/auth.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/embed.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/errors/__init__.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/manifest/__init__.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/manifest/loader.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/messages/__init__.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/output/__init__.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/output/envelope.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/output/normalize.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/output/policy.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/output/progress.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/output/render.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/py.typed +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/runtime/__init__.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/runtime/confirm.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/runtime/dataset_health.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/runtime/dryrun.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/runtime/dryrun_targets.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/runtime/embedded.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/runtime/executor.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/runtime/input_loader.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/runtime/intent_only.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/runtime/invocation.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/runtime/new_data.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/runtime/options.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/runtime/parents.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/runtime/runlog.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/runtime/session.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/runtime/state.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/runtime/strict.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/runtime/updates.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/runtime/validate.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/runtime/verify.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/__init__.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/argspec.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/board_values.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/coerce.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/command_contract.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/conditional_format.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/conditions.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/dashboard_filters.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/dashboard_pages.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/dashboard_review.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/data_profile.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/data_quality.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/dispatch.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/factory.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/input_fields.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/listing.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/local_time.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/mapping.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/openapi_types.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/positionals.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/protocol.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/read_queries.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/sdk_service.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/stored_stats.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/testing.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/text_dates.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/type_system.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/services/write_impact.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/skills/__init__.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/skills/installer.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/skills/steering.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/testing.py +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/activity.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/addon.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/agent.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/ai.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/annotation.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/auth.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/automation.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/batch.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/billing.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/browse.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/calc.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/capability.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/client-app.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/completion.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/config.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/connector.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/context.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/dashboard.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/data-app.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/dataset.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/doctor.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/external-key.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/file.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/folder.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/job.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/link.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/log.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/notification.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/parameter.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/project.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/report.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/schedule.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/schema.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/skill.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/snippet.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/support.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/template.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/trash.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/upgrade.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/user.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/version.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/view.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/webhook.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/workflow.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/commands/workspace.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/edits-target.source.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/openapi-operations.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/schema-v1.json +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/sdk-catalog.source.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/manifests/sdk-methods.yaml +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/openapi/metadata.json +0 -0
- {mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/spec/openapi/openapi.json +0 -0
|
@@ -810,6 +810,8 @@ def dataset_create(invocation: Invocation) -> HandlerResult:
|
|
|
810
810
|
assert document is not None
|
|
811
811
|
_forward_optional(document, kwargs, ("folder_resource_id",))
|
|
812
812
|
with open_service(invocation) as (service, auth):
|
|
813
|
+
if invocation.dry_run:
|
|
814
|
+
_predict_final_name(invocation, service, dataset_spec, project_id)
|
|
813
815
|
data = service.call(_symbol(invocation), **kwargs)
|
|
814
816
|
# ``datasets.create`` returns a bare job handle and never waits. Block on
|
|
815
817
|
# it here (honoring ``--job-timeout``) so the command reports a finished
|
|
@@ -845,6 +847,71 @@ def _created_dataset(handle: Any, settled: Any) -> dict[str, Any]:
|
|
|
845
847
|
return result
|
|
846
848
|
|
|
847
849
|
|
|
850
|
+
#: Pages (of 100) read to predict a final name; past it the answer is "a suffix may be added".
|
|
851
|
+
_NAME_PROBE_PAGES = 20
|
|
852
|
+
|
|
853
|
+
|
|
854
|
+
def _requested_name(dataset_spec: object) -> str | None:
|
|
855
|
+
"""The name the caller asked for: ``ds_name`` (clone, cloud) or ``name`` (sketch)."""
|
|
856
|
+
if not isinstance(dataset_spec, dict):
|
|
857
|
+
return None
|
|
858
|
+
for key in ("ds_name", "name"):
|
|
859
|
+
if isinstance(dataset_spec.get(key), str) and dataset_spec[key]:
|
|
860
|
+
return str(dataset_spec[key])
|
|
861
|
+
return None
|
|
862
|
+
|
|
863
|
+
|
|
864
|
+
def _project_dataset_names(service: _SdkCaller, project_id: int) -> tuple[set[str], bool]:
|
|
865
|
+
"""Every dataset name in the project and whether all of them were read."""
|
|
866
|
+
names: set[str] = set()
|
|
867
|
+
for page in range(_NAME_PROBE_PAGES):
|
|
868
|
+
data = service.call(
|
|
869
|
+
"mammoth.api.datasets.DatasetsAPI.list",
|
|
870
|
+
project_id=project_id,
|
|
871
|
+
limit=100,
|
|
872
|
+
offset=page * 100,
|
|
873
|
+
)
|
|
874
|
+
rows = data.get("datasets", []) if isinstance(data, dict) else []
|
|
875
|
+
names.update(r["name"] for r in rows if isinstance(r, dict) and "name" in r)
|
|
876
|
+
if len(rows) < 100:
|
|
877
|
+
return names, True
|
|
878
|
+
return names, False
|
|
879
|
+
|
|
880
|
+
|
|
881
|
+
def _name_impact(requested: str, names: set[str], complete: bool) -> dict[str, Any]:
|
|
882
|
+
"""The dry-run prediction for ``requested`` against the project's dataset ``names``."""
|
|
883
|
+
if requested not in names:
|
|
884
|
+
free: dict[str, Any] = {"requested_name": requested, "name_taken": False}
|
|
885
|
+
if complete:
|
|
886
|
+
return {**free, "final_name": requested}
|
|
887
|
+
return {**free, "note": "Not all datasets were read; a numeric suffix is added if taken."}
|
|
888
|
+
impact: dict[str, Any] = {"requested_name": requested, "name_taken": True}
|
|
889
|
+
if not complete:
|
|
890
|
+
impact["note"] = f"'{requested}' is taken; a numeric suffix will be added to the name."
|
|
891
|
+
return impact
|
|
892
|
+
suffix = next(i for i in range(2, len(names) + 3) if f"{requested} {i}" not in names)
|
|
893
|
+
impact["final_name"] = f"{requested} {suffix}"
|
|
894
|
+
impact["note"] = (
|
|
895
|
+
f"'{requested}' is taken; the dataset will be named '{impact['final_name']}'. "
|
|
896
|
+
"Ask the user whether to use a different name."
|
|
897
|
+
)
|
|
898
|
+
return impact
|
|
899
|
+
|
|
900
|
+
|
|
901
|
+
def _predict_final_name(
|
|
902
|
+
invocation: Invocation, service: _SdkCaller, dataset_spec: object, project_id: int
|
|
903
|
+
) -> None:
|
|
904
|
+
"""Dry run: say whether the requested name is taken and what the server will name it.
|
|
905
|
+
|
|
906
|
+
The server (``Datasource.get_unique_name``) tries ``name``, ``name 2``, ``name 3``...
|
|
907
|
+
against the project's live dataset names, so the answer is computed the same way.
|
|
908
|
+
"""
|
|
909
|
+
requested = _requested_name(dataset_spec)
|
|
910
|
+
if requested is not None:
|
|
911
|
+
names, complete = _project_dataset_names(service, project_id)
|
|
912
|
+
object.__setattr__(invocation, "predicted_impact", _name_impact(requested, names, complete))
|
|
913
|
+
|
|
914
|
+
|
|
848
915
|
def _add_final_name(
|
|
849
916
|
service: _SdkCaller, result: dict[str, Any], dataset_spec: object, project_id: int
|
|
850
917
|
) -> None:
|
|
@@ -873,8 +940,8 @@ def _add_final_name(
|
|
|
873
940
|
if not isinstance(name, str):
|
|
874
941
|
return
|
|
875
942
|
result["name"] = name
|
|
876
|
-
requested =
|
|
877
|
-
if
|
|
943
|
+
requested = _requested_name(dataset_spec)
|
|
944
|
+
if requested is not None and requested != name:
|
|
878
945
|
result["requested_name"] = requested
|
|
879
946
|
result["note"] = f"The name '{requested}' was taken, so the dataset is named '{name}'."
|
|
880
947
|
|
|
@@ -61,6 +61,7 @@ from mammoth_cli.runtime.session import open_service, resolved_project
|
|
|
61
61
|
from mammoth_cli.services.command_contract import bind_command_inputs
|
|
62
62
|
from mammoth_cli.services.conditions import CONDITION_KWARG
|
|
63
63
|
from mammoth_cli.services.input_fields import TASK_COUNT_FIELD
|
|
64
|
+
from mammoth_cli.services.sql_check import check_sql_binds
|
|
64
65
|
from mammoth_cli.services.write_impact import (
|
|
65
66
|
ImpactRead,
|
|
66
67
|
Measure,
|
|
@@ -923,7 +924,30 @@ def view_transform_add_sql(invocation: Invocation) -> HandlerResult:
|
|
|
923
924
|
_require_field(document, "query")
|
|
924
925
|
assert document is not None
|
|
925
926
|
kwargs = _bind_transform_inputs(invocation, document)
|
|
926
|
-
return _dispatch_view(
|
|
927
|
+
return _dispatch_view(
|
|
928
|
+
invocation, view_id, "add_sql", prepare=_sql_binding_check(invocation, view_id), **kwargs
|
|
929
|
+
)
|
|
930
|
+
|
|
931
|
+
|
|
932
|
+
def _sql_binding_check(
|
|
933
|
+
invocation: Invocation, view_id: int
|
|
934
|
+
) -> Callable[[Any, int, dict[str, Any]], Any]:
|
|
935
|
+
"""A ``prepare`` hook: a dry run fails with ``would_fail`` when the SQL names a column
|
|
936
|
+
the step cannot bind (see :mod:`mammoth_cli.services.sql_check`). A real run is unchanged."""
|
|
937
|
+
|
|
938
|
+
def check(service: Any, dataset_id: int, kwargs: dict[str, Any]) -> Any:
|
|
939
|
+
if invocation.dry_run:
|
|
940
|
+
view = service.call(
|
|
941
|
+
_DATAVIEW_GET_SYMBOL,
|
|
942
|
+
dataset_id=dataset_id,
|
|
943
|
+
dataview_id=view_id,
|
|
944
|
+
project_id=resolved_project(invocation),
|
|
945
|
+
)
|
|
946
|
+
if isinstance(view, dict):
|
|
947
|
+
check_sql_binds(str(kwargs.get("query", "")), view)
|
|
948
|
+
return None
|
|
949
|
+
|
|
950
|
+
return check
|
|
927
951
|
|
|
928
952
|
|
|
929
953
|
def view_transform_ai(invocation: Invocation) -> HandlerResult:
|
|
@@ -56,6 +56,7 @@ CODE_JOB_FAILED = "job_failed"
|
|
|
56
56
|
CODE_INTERRUPTED = "interrupted"
|
|
57
57
|
CODE_UNSUPPORTED_CONTRACT = "unsupported_contract"
|
|
58
58
|
CODE_NO_OP = "no_op"
|
|
59
|
+
CODE_WOULD_FAIL = "would_fail"
|
|
59
60
|
|
|
60
61
|
# User-safe, one-line summaries shown to the customer instead of the model-facing
|
|
61
62
|
# ``message``/``hint``. Plain language only: no command names, ids, field names
|
|
@@ -173,6 +174,7 @@ ERROR_SUMMARIES: dict[str, str] = {
|
|
|
173
174
|
"upgrade_failed": "The update didn't complete.",
|
|
174
175
|
"usage_error": _S_BAD_REQUEST,
|
|
175
176
|
"view_in_draft": "This view is still a draft and can't be used yet.",
|
|
177
|
+
"would_fail": "This step would fail when it runs, so it was not added.",
|
|
176
178
|
}
|
|
177
179
|
|
|
178
180
|
#: Shown for a code with no entry (a runtime backstop only; the exhaustiveness
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"""Check a SQL step's column names against what it will bind to, before it is added.
|
|
2
|
+
|
|
3
|
+
``FROM "view:<id>"`` binds to the names the pipeline produced (the ``metadata`` of the
|
|
4
|
+
view's latest data), not to a display-only rename (``display_properties.COLUMN_NAMES``),
|
|
5
|
+
which ``view get`` shows. A query naming the renamed column is accepted by the CLI and
|
|
6
|
+
fails in the backend's DuckDB with a Binder Error, so a dry run says so first.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
import re
|
|
12
|
+
from collections.abc import Mapping
|
|
13
|
+
|
|
14
|
+
from mammoth_cli.errors.envelope import CODE_WOULD_FAIL, EXIT_USAGE, CliError
|
|
15
|
+
|
|
16
|
+
_STRING = re.compile(r"'(?:[^']|'')*'")
|
|
17
|
+
_QUOTED = re.compile(r'"((?:[^"]|"")+)"')
|
|
18
|
+
_ALIAS = re.compile(r'\bAS\s+("(?:[^"]|"")+"|\w+)|("(?:[^"]|"")+"|\w+)\s+AS\s*\(', re.IGNORECASE)
|
|
19
|
+
_TABLE = re.compile(r'\b(?:FROM|JOIN)\s+("(?:[^"]|"")+")', re.IGNORECASE)
|
|
20
|
+
_VIEW_REF = re.compile(r"view:\d+")
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def _unquote(name: str) -> str:
|
|
24
|
+
return name[1:-1].replace('""', '"') if name.startswith('"') else name
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _declared(query: str) -> set[str]:
|
|
28
|
+
"""Names the query itself introduces (aliases, CTEs) or reads as a table."""
|
|
29
|
+
aliases = {_unquote(a or b) for a, b in _ALIAS.findall(query)}
|
|
30
|
+
tables = {_unquote(t) for t in _TABLE.findall(query)}
|
|
31
|
+
return {name.casefold() for name in aliases | tables}
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def _identifiers(query: str, renamed: Mapping[str, str]) -> list[str]:
|
|
35
|
+
"""Quoted identifiers, plus any bare word that is a renamed column's new name."""
|
|
36
|
+
found = [m for m in _QUOTED.findall(query) if not _VIEW_REF.fullmatch(m)]
|
|
37
|
+
words = {w.casefold() for w in re.findall(r"\w+", _QUOTED.sub(" ", query))}
|
|
38
|
+
found += [new for new in renamed if new.casefold() in words]
|
|
39
|
+
return list(dict.fromkeys(name.replace('""', '"') for name in found))
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def _renames(view: Mapping[str, object]) -> dict[str, str]:
|
|
43
|
+
"""``{new name: pipeline name}`` for each display-only rename of the view."""
|
|
44
|
+
display = view.get("display_properties")
|
|
45
|
+
names = display.get("COLUMN_NAMES") if isinstance(display, dict) else None
|
|
46
|
+
metadata = view.get("metadata")
|
|
47
|
+
if not isinstance(names, dict) or not isinstance(metadata, list):
|
|
48
|
+
return {}
|
|
49
|
+
by_internal = {c.get("internal_name"): c.get("display_name") for c in metadata}
|
|
50
|
+
return {new: by_internal[i] for i, new in names.items() if by_internal.get(i)}
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def check_sql_binds(query: str, view: Mapping[str, object]) -> None:
|
|
54
|
+
"""Raise ``would_fail`` when ``query`` names a column the step cannot bind.
|
|
55
|
+
|
|
56
|
+
Args:
|
|
57
|
+
query: The step's SQL.
|
|
58
|
+
view: The raw ``dataview get`` record (its ``metadata`` is the bindable schema).
|
|
59
|
+
|
|
60
|
+
Raises:
|
|
61
|
+
CliError: ``would_fail``, with the unknown name and the candidate columns.
|
|
62
|
+
"""
|
|
63
|
+
metadata = view.get("metadata")
|
|
64
|
+
rows = metadata if isinstance(metadata, list) else []
|
|
65
|
+
columns = [
|
|
66
|
+
str(c["display_name"]) for c in rows if isinstance(c, dict) and c.get("display_name")
|
|
67
|
+
]
|
|
68
|
+
if not columns:
|
|
69
|
+
return
|
|
70
|
+
renamed = _renames(view)
|
|
71
|
+
text = _STRING.sub("''", query)
|
|
72
|
+
known = {c.casefold() for c in columns} | _declared(text)
|
|
73
|
+
for name in _identifiers(text, renamed):
|
|
74
|
+
if name.casefold() not in known:
|
|
75
|
+
raise _unbound(name, columns, renamed.get(name))
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def _unbound(name: str, columns: list[str], was: str | None) -> CliError:
|
|
79
|
+
hint = f'Use "{was}": "{name}" is only a display name for it.' if was else None
|
|
80
|
+
return CliError(
|
|
81
|
+
code=CODE_WOULD_FAIL,
|
|
82
|
+
message=f'Referenced column "{name}" not found. Candidate bindings: '
|
|
83
|
+
+ ", ".join(f'"{c}"' for c in columns),
|
|
84
|
+
exit_status=EXIT_USAGE,
|
|
85
|
+
hint=hint or "Use one of the candidate columns; nothing was added.",
|
|
86
|
+
details={"unknown_column": name, "candidate_columns": columns},
|
|
87
|
+
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mammoth_cli-2.2.22 → mammoth_cli-2.2.23}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|