mainsequence 8.1.20.dev7__tar.gz → 8.1.20.dev8__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.
- {mainsequence-8.1.20.dev7/mainsequence.egg-info → mainsequence-8.1.20.dev8}/PKG-INFO +1 -1
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/cli/cli.py +6 -2
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/client/metatables/core.py +13 -30
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8/mainsequence.egg-info}/PKG-INFO +1 -1
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/pyproject.toml +1 -1
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_cli.py +34 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_filter_normalization.py +3 -3
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/LICENSE +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/MANIFEST.in +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/README.md +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/agent_scaffold/AGENTS.md +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/agent_scaffold/skills/a2a_sdk_execution/SKILL.md +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/agent_scaffold/skills/data_access/exploration/SKILL.md +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/agent_scaffold/skills/data_publishing/meta_table_migrations/SKILL.md +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/agent_scaffold/skills/data_publishing/time_index_table_updates/SKILL.md +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/agent_scaffold/skills/maintenance/code_repository_maintenance/SKILL.md +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/agent_scaffold/skills/sdk_code_repository_execution/SKILL.md +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/__init__.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/__main__.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/bootstrap.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/cli/__init__.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/cli/api.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/cli/browser_auth.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/cli/code_repository_status.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/cli/config.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/cli/docker_utils.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/cli/doctor.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/cli/local_ops.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/cli/migrations.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/cli/model_filters.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/cli/pydantic_cli.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/cli/sdk_utils.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/cli/ssh_utils.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/cli/ui.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/client/__init__.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/client/agent_runtime_models.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/client/base.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/client/client.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/client/compute_validation.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/client/data_sources_interfaces/local_paths.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/client/data_sources_interfaces/sqlite.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/client/dtype_codec.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/client/exceptions.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/client/github_issues.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/client/metatables/__init__.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/client/models_foundry.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/client/models_helpers.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/client/models_user.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/client/observability.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/client/utils.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/code_repository_context.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/code_repository_skills.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/defaults.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/instrumentation/__init__.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/instrumentation/utils.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/logconf.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/__init__.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/__main__.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/compiled_sql/__init__.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/compiled_sql/v1.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/future_registry.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/hashing.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/migrations/__init__.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/migrations/alembic.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/migrations/env.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/migrations/provider.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/migrations/registry.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/migrations/scaffold.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/migrations/templates/__init__.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/migrations/templates/env.py.mako +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/migrations/templates/script.py.mako +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/pydantic_metadata.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/schema_names.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/sqlalchemy_contracts.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/time_index_table_refs.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/time_index_table_updates/__init__.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/time_index_table_updates/configuration.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/time_index_table_updates/dependencies.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/time_index_table_updates/managers.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/time_index_table_updates/namespacing.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/time_index_table_updates/runner.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/time_index_table_updates/updaters.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/time_index_table_updates/utils.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/repository_identity_security.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/runtime_flags.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/scaffold_skills.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence.egg-info/SOURCES.txt +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence.egg-info/dependency_links.txt +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence.egg-info/entry_points.txt +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence.egg-info/requires.txt +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence.egg-info/top_level.txt +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/setup.cfg +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/fixtures/time_index_table_update_hash_v2_golden.json +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_auth_precedence.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_canonical_api_route_contract.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_cli_browser_auth.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_cli_migrations.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_client.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_code_repository_batch_jobs_from_file.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_code_repository_branch_contract.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_code_repository_documentation_contract.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_code_repository_runtime_context.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_code_repository_skills.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_dependency_extras.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_dev_release_version.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_duckdb_interface_dimensions.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_environment_resource_context.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_environment_response_contracts.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_github_issues_client.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_instrumentation.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_local_ops.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_logconf.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_meta_table_migrations.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_meta_tables_client_models.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_meta_tables_sqlalchemy_contracts.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_models_user_request_bound_auth.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_notification_uid_contract.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_observability_client.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_pod_project_resolution.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_scaffold_skills.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_schema_names.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_secret_client_model.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_source_table_configuration.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_sqlite_interface_dimensions.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_ssh_utils.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_time_index_table_access_dimension_audit.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_time_index_table_dimension_queries.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_time_index_table_update_configuration.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_time_index_table_update_configuration_client.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_time_index_table_update_flow.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_time_index_table_update_hard_cut.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_tolerant_response_reading.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_update_runner_uid_runtime.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_update_statistics.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_update_uid_guards.py +0 -0
|
@@ -5912,7 +5912,9 @@ def _meta_table_run_query_impl(
|
|
|
5912
5912
|
try:
|
|
5913
5913
|
payload = run_meta_table_query(meta_table_uid, sql, timeout=timeout)
|
|
5914
5914
|
except ApiError as e:
|
|
5915
|
-
|
|
5915
|
+
# The api layer already names the operation in the message; prefixing again
|
|
5916
|
+
# produces "MetaTable query failed: MetaTable query failed: ...".
|
|
5917
|
+
error(str(e))
|
|
5916
5918
|
raise typer.Exit(1) from e
|
|
5917
5919
|
|
|
5918
5920
|
ok = bool(payload.get("ok"))
|
|
@@ -5941,7 +5943,9 @@ def _time_index_table_run_query_impl(
|
|
|
5941
5943
|
try:
|
|
5942
5944
|
payload = run_time_index_table_query(table_uid, sql, timeout=timeout)
|
|
5943
5945
|
except ApiError as e:
|
|
5944
|
-
|
|
5946
|
+
# The api layer already names the operation in the message; prefixing again
|
|
5947
|
+
# produces "Time-index table query failed: Time-index table query failed: ...".
|
|
5948
|
+
error(str(e))
|
|
5945
5949
|
raise typer.Exit(1) from e
|
|
5946
5950
|
|
|
5947
5951
|
ok = bool(payload.get("ok"))
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/client/metatables/core.py
RENAMED
|
@@ -1904,35 +1904,18 @@ class MetaTable(
|
|
|
1904
1904
|
|
|
1905
1905
|
cls = type(self)
|
|
1906
1906
|
url = f"{cls.get_object_url().rstrip('/')}/{self._public_uid()}/run-query/"
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
|
|
1913
|
-
|
|
1914
|
-
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
)
|
|
1920
|
-
finally:
|
|
1921
|
-
if old_content_type is None:
|
|
1922
|
-
session.headers.pop("Content-Type", None)
|
|
1923
|
-
else:
|
|
1924
|
-
session.headers["Content-Type"] = old_content_type
|
|
1925
|
-
error_payload = {"data": sql}
|
|
1926
|
-
else:
|
|
1927
|
-
response = make_request(
|
|
1928
|
-
s=cls.build_session(),
|
|
1929
|
-
loaders=cls.LOADERS,
|
|
1930
|
-
r_type="POST",
|
|
1931
|
-
url=url,
|
|
1932
|
-
payload={"json": sql},
|
|
1933
|
-
time_out=timeout,
|
|
1934
|
-
)
|
|
1935
|
-
error_payload = {"json": sql}
|
|
1907
|
+
# The backend reads the request body as the raw SQL string and parses it with
|
|
1908
|
+
# DRF's JSON parser, for every MetaTable endpoint. Sending a JSON string is the
|
|
1909
|
+
# only transport it accepts; a text/plain body is rejected with HTTP 415.
|
|
1910
|
+
payload = {"json": sql}
|
|
1911
|
+
response = make_request(
|
|
1912
|
+
s=cls.build_session(),
|
|
1913
|
+
loaders=cls.LOADERS,
|
|
1914
|
+
r_type="POST",
|
|
1915
|
+
url=url,
|
|
1916
|
+
payload=payload,
|
|
1917
|
+
time_out=timeout,
|
|
1918
|
+
)
|
|
1936
1919
|
|
|
1937
1920
|
try:
|
|
1938
1921
|
data = response.json()
|
|
@@ -1942,7 +1925,7 @@ class MetaTable(
|
|
|
1942
1925
|
if isinstance(data, dict) and "ok" in data:
|
|
1943
1926
|
return data
|
|
1944
1927
|
|
|
1945
|
-
raise_for_response(response, payload=
|
|
1928
|
+
raise_for_response(response, payload=payload)
|
|
1946
1929
|
return response.json()
|
|
1947
1930
|
|
|
1948
1931
|
@classmethod
|
|
@@ -8197,6 +8197,40 @@ def test_time_index_table_run_query(cli_mod, runner, monkeypatch):
|
|
|
8197
8197
|
assert '"value": 1' in result.output
|
|
8198
8198
|
|
|
8199
8199
|
|
|
8200
|
+
def test_time_index_table_run_query_error_is_not_double_prefixed(cli_mod, runner, monkeypatch):
|
|
8201
|
+
"""The api layer already names the operation; the CLI must not prefix it again."""
|
|
8202
|
+
monkeypatch.setattr(cli_mod, "_require_login", lambda: {"username": "u"})
|
|
8203
|
+
|
|
8204
|
+
def _run_query(storage_uid, sql, *, timeout=None):
|
|
8205
|
+
raise cli_mod.ApiError(
|
|
8206
|
+
"Time-index table query failed: 415 POST "
|
|
8207
|
+
"http://127.0.0.1:8000/api/v1/time-index-meta-tables/abc/run-query/: "
|
|
8208
|
+
'Unsupported media type "text/plain" in request.'
|
|
8209
|
+
)
|
|
8210
|
+
|
|
8211
|
+
monkeypatch.setattr(cli_mod, "run_time_index_table_query", _run_query)
|
|
8212
|
+
|
|
8213
|
+
result = runner.invoke(
|
|
8214
|
+
cli_mod.app,
|
|
8215
|
+
["time-index-table", "run_query", "abc", "SELECT 1 AS value"],
|
|
8216
|
+
)
|
|
8217
|
+
assert result.exit_code == 1
|
|
8218
|
+
assert result.output.count("Time-index table query failed:") == 1
|
|
8219
|
+
|
|
8220
|
+
|
|
8221
|
+
def test_meta_table_run_query_error_is_not_double_prefixed(cli_mod, runner, monkeypatch):
|
|
8222
|
+
monkeypatch.setattr(cli_mod, "_require_login", lambda: {"username": "u"})
|
|
8223
|
+
|
|
8224
|
+
def _run_query(meta_table_uid, sql, *, timeout=None):
|
|
8225
|
+
raise cli_mod.ApiError("MetaTable query failed: boom")
|
|
8226
|
+
|
|
8227
|
+
monkeypatch.setattr(cli_mod, "run_meta_table_query", _run_query)
|
|
8228
|
+
|
|
8229
|
+
result = runner.invoke(cli_mod.app, ["meta-table", "run_query", "abc", "SELECT 1"])
|
|
8230
|
+
assert result.exit_code == 1
|
|
8231
|
+
assert result.output.count("MetaTable query failed:") == 1
|
|
8232
|
+
|
|
8233
|
+
|
|
8200
8234
|
def test_meta_table_run_query(cli_mod, runner, monkeypatch):
|
|
8201
8235
|
captured = {}
|
|
8202
8236
|
monkeypatch.setattr(cli_mod, "_require_login", lambda: {"username": "u"})
|
|
@@ -803,7 +803,7 @@ def test_output_table_delete_after_date_accepts_index_coordinates(monkeypatch):
|
|
|
803
803
|
}
|
|
804
804
|
|
|
805
805
|
|
|
806
|
-
def
|
|
806
|
+
def test_output_table_run_query_posts_json_sql(monkeypatch):
|
|
807
807
|
from mainsequence.client import metatables as models_metatables
|
|
808
808
|
|
|
809
809
|
captured = {}
|
|
@@ -858,10 +858,10 @@ def test_output_table_run_query_posts_plain_text_sql(monkeypatch):
|
|
|
858
858
|
assert result["ok"] is True
|
|
859
859
|
assert result["dynamic_table_id"] == 714
|
|
860
860
|
assert captured == {
|
|
861
|
-
"headers": {"Content-Type": "
|
|
861
|
+
"headers": {"Content-Type": "application/json"},
|
|
862
862
|
"r_type": "POST",
|
|
863
863
|
"url": f"{models_metatables.TimeIndexMetaTable.get_object_url()}/714/run-query/",
|
|
864
|
-
"payload": {"
|
|
864
|
+
"payload": {"json": "SELECT * FROM my_table LIMIT 100"},
|
|
865
865
|
"timeout": 30,
|
|
866
866
|
}
|
|
867
867
|
assert session.headers == {"Content-Type": "application/json"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/cli/code_repository_status.py
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
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/client/agent_runtime_models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/client/compute_validation.py
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
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/client/metatables/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/code_repository_context.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/code_repository_skills.py
RENAMED
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/instrumentation/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/compiled_sql/v1.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/future_registry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/migrations/alembic.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/migrations/env.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/pydantic_metadata.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/meta_tables/schema_names.py
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
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence/repository_identity_security.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/mainsequence.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_canonical_api_route_contract.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_code_repository_branch_contract.py
RENAMED
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_code_repository_runtime_context.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_duckdb_interface_dimensions.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_environment_resource_context.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_environment_response_contracts.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_meta_tables_client_models.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_meta_tables_sqlalchemy_contracts.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_models_user_request_bound_auth.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_notification_uid_contract.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_source_table_configuration.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_sqlite_interface_dimensions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_time_index_table_update_flow.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_time_index_table_update_hard_cut.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_tolerant_response_reading.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev8}/tests/test_update_runner_uid_runtime.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|