mainsequence 4.4.2__tar.gz → 4.4.3__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-4.4.2/mainsequence.egg-info → mainsequence-4.4.3}/PKG-INFO +1 -1
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/migrations/__init__.py +0 -2
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/sqlalchemy_contracts.py +4 -44
- {mainsequence-4.4.2 → mainsequence-4.4.3/mainsequence.egg-info}/PKG-INFO +1 -1
- {mainsequence-4.4.2 → mainsequence-4.4.3}/pyproject.toml +1 -1
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_meta_tables_sqlalchemy_contracts.py +12 -7
- {mainsequence-4.4.2 → mainsequence-4.4.3}/LICENSE +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/README.md +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/agent_scaffold/AGENTS.md +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/agent_scaffold/skills/a2a_communication/SKILL.md +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/agent_scaffold/skills/command_center/adapter_from_api/SKILL.md +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/agent_scaffold/skills/command_center/api_mock_prototyping/SKILL.md +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/agent_scaffold/skills/command_center/app_components/SKILL.md +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/agent_scaffold/skills/command_center/connections/SKILL.md +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/agent_scaffold/skills/command_center/workspace_analysis/SKILL.md +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/agent_scaffold/skills/command_center/workspace_builder/SKILL.md +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/agent_scaffold/skills/command_center/workspace_design/SKILL.md +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/agent_scaffold/skills/dashboards/streamlit/SKILL.md +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/agent_scaffold/skills/data_access/exploration/SKILL.md +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/agent_scaffold/skills/data_publishing/data_nodes/SKILL.md +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/agent_scaffold/skills/data_publishing/meta_table_migrations/SKILL.md +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/agent_scaffold/skills/ms-markets/SKILL.md +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/agent_scaffold/skills/project_builder/SKILL.md +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/agent_scaffold/skills/project_to_agent/SKILL.md +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/__init__.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/__main__.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/bootstrap.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/cli/__init__.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/cli/api.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/cli/browser_auth.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/cli/cli.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/cli/config.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/cli/docker_utils.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/cli/doctor.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/cli/local_ops.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/cli/migrations.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/cli/model_filters.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/cli/project_status.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/cli/pydantic_cli.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/cli/sdk_utils.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/cli/ssh_utils.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/cli/ui.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/__init__.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/agent_runtime_models.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/base.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/client.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/command_center/__init__.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/command_center/app_component.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/command_center/connections.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/command_center/data_models.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/command_center/workspace.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/command_center/workspace_snapshot.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/compute_validation.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/data_sources_interfaces/local_paths.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/data_sources_interfaces/sqlite.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/dtype_codec.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/exceptions.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/fastapi/__init__.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/fastapi/auth.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/metatables/__init__.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/metatables/core.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/models_foundry.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/models_helpers.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/models_user.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/utils.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/defaults.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/instrumentation/__init__.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/instrumentation/utils.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/logconf.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/__init__.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/__main__.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/compiled_sql/__init__.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/compiled_sql/v1.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/data_nodes/__init__.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/data_nodes/build_operations.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/data_nodes/data_nodes.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/data_nodes/models.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/data_nodes/namespacing.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/data_nodes/persist_managers.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/data_nodes/run_operations.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/data_nodes/utils.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/future_registry.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/hashing.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/migrations/alembic.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/migrations/env.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/migrations/provider.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/migrations/registry.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/migrations/scaffold.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/migrations/templates/__init__.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/migrations/templates/env.py.mako +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/migrations/templates/script.py.mako +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/pydantic_metadata.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/schema_names.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/runtime_flags.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence.egg-info/SOURCES.txt +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence.egg-info/dependency_links.txt +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence.egg-info/entry_points.txt +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence.egg-info/requires.txt +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence.egg-info/top_level.txt +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/setup.cfg +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_auth_precedence.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_build_operations_hashing.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_cli.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_cli_browser_auth.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_cli_migrations.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_client.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_command_center_app_component_models.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_command_center_data_models.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_command_center_models.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_data_access_mixin_dimension_audit.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_data_node_storage_dimension_queries.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_data_node_update_flow.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_dependency_extras.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_duckdb_interface_dimensions.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_filter_normalization.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_instrumentation.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_logconf.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_meta_table_migrations.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_meta_tables_client_models.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_models_user_request_bound_auth.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_pod_project_resolution.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_project_batch_jobs_from_file.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_run_configuration.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_schema_names.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_secret_client_model.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_source_table_configuration.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_sqlite_interface_dimensions.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_update_runner_uid_runtime.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_update_statistics.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_update_uid_guards.py +0 -0
- {mainsequence-4.4.2 → mainsequence-4.4.3}/tests/test_workspace_snapshot.py +0 -0
|
@@ -452,7 +452,6 @@ class AlembicMetaTableMigration:
|
|
|
452
452
|
request = model.build_registration_request(
|
|
453
453
|
data_source_uid=data_source_uid,
|
|
454
454
|
provisioning={"create_table": create_table, "if_not_exists": True},
|
|
455
|
-
enforce_storage_hash_name=False,
|
|
456
455
|
)
|
|
457
456
|
request.schema_management = schema_management
|
|
458
457
|
meta_table_cls = _metatable_resource_class_for_model(model)
|
|
@@ -624,7 +623,6 @@ class AlembicMetaTableMigration:
|
|
|
624
623
|
request = model.build_registration_request(
|
|
625
624
|
data_source_uid=data_source_uid,
|
|
626
625
|
identifier=table_name,
|
|
627
|
-
enforce_storage_hash_name=False,
|
|
628
626
|
)
|
|
629
627
|
|
|
630
628
|
resource_cls = _metatable_resource_class_for_model(model)
|
|
@@ -90,15 +90,11 @@ def _configured_storage_hash_for_model(
|
|
|
90
90
|
*,
|
|
91
91
|
namespace: str | None = None,
|
|
92
92
|
schema: str | None = None,
|
|
93
|
-
hash_namespace: str | None = None,
|
|
94
|
-
extra_hash_components: Mapping[str, Any] | None = None,
|
|
95
93
|
) -> str:
|
|
96
94
|
return compute_metatable_contract_hash(
|
|
97
95
|
model_or_table,
|
|
98
96
|
namespace=namespace,
|
|
99
97
|
schema=schema,
|
|
100
|
-
hash_namespace=hash_namespace,
|
|
101
|
-
extra_components=extra_hash_components,
|
|
102
98
|
)
|
|
103
99
|
|
|
104
100
|
|
|
@@ -122,11 +118,9 @@ def compute_metatable_contract_hash(
|
|
|
122
118
|
resolved_schema = _resolve_schema(table, schema=schema)
|
|
123
119
|
resolved_namespace = _resolve_namespace(model_or_table, namespace=namespace)
|
|
124
120
|
resolved_hash_namespace = _resolve_hash_namespace(
|
|
125
|
-
model_or_table,
|
|
126
121
|
hash_namespace=hash_namespace,
|
|
127
122
|
)
|
|
128
123
|
resolved_extra_hash_components = _resolve_extra_hash_components(
|
|
129
|
-
model_or_table,
|
|
130
124
|
extra_hash_components=extra_components,
|
|
131
125
|
)
|
|
132
126
|
table_storage_identity = _configured_table_storage_identity(model_or_table, table=table)
|
|
@@ -164,9 +158,8 @@ def _time_index_mapper_args(cls: type[Any]) -> dict[str, list[Any]]:
|
|
|
164
158
|
class PlatformManagedMetaTable:
|
|
165
159
|
"""SQLAlchemy declarative base mixin for platform-managed MetaTables.
|
|
166
160
|
|
|
167
|
-
The class
|
|
168
|
-
|
|
169
|
-
request, and registers the MetaTable through TS Manager. Binding records the
|
|
161
|
+
The class builds the platform registration request from SQLAlchemy table
|
|
162
|
+
metadata and registers the MetaTable through TS Manager. Binding records the
|
|
170
163
|
returned MetaTable UID and storage metadata while preserving the authored
|
|
171
164
|
SQLAlchemy table name.
|
|
172
165
|
"""
|
|
@@ -180,8 +173,6 @@ class PlatformManagedMetaTable:
|
|
|
180
173
|
__metatable_provisioning__: ClassVar[Mapping[str, Any] | None] = None
|
|
181
174
|
__metatable_protect_from_deletion__: ClassVar[bool | None] = None
|
|
182
175
|
__metatable_introspect__: ClassVar[bool | None] = None
|
|
183
|
-
__metatable_hash_namespace__: ClassVar[str | None] = None
|
|
184
|
-
__metatable_extra_hash_components__: ClassVar[Mapping[str, Any] | None] = None
|
|
185
176
|
|
|
186
177
|
@classmethod
|
|
187
178
|
def __table_cls__(cls, *args: Any, **kwargs: Any) -> Any:
|
|
@@ -217,9 +208,6 @@ class PlatformManagedMetaTable:
|
|
|
217
208
|
protect_from_deletion: bool | None = None,
|
|
218
209
|
provisioning: Mapping[str, Any] | None = None,
|
|
219
210
|
introspect: bool | None = None,
|
|
220
|
-
hash_namespace: str | None = None,
|
|
221
|
-
extra_hash_components: Mapping[str, Any] | None = None,
|
|
222
|
-
enforce_storage_hash_name: bool = True,
|
|
223
211
|
) -> MetaTableRegistrationRequest:
|
|
224
212
|
resolved_data_source_uid = _resolve_model_data_source_uid(
|
|
225
213
|
cls,
|
|
@@ -236,9 +224,6 @@ class PlatformManagedMetaTable:
|
|
|
236
224
|
protect_from_deletion=protect_from_deletion,
|
|
237
225
|
provisioning=provisioning,
|
|
238
226
|
introspect=introspect,
|
|
239
|
-
hash_namespace=hash_namespace,
|
|
240
|
-
extra_hash_components=extra_hash_components,
|
|
241
|
-
enforce_storage_hash_name=enforce_storage_hash_name,
|
|
242
227
|
)
|
|
243
228
|
|
|
244
229
|
@classmethod
|
|
@@ -300,10 +285,6 @@ class PlatformManagedMetaTable:
|
|
|
300
285
|
)
|
|
301
286
|
return _coerce_optional_uid(data_source_uid)
|
|
302
287
|
|
|
303
|
-
@classmethod
|
|
304
|
-
def get_storage_hash(cls) -> str:
|
|
305
|
-
return compute_metatable_contract_hash(cls)
|
|
306
|
-
|
|
307
288
|
@classmethod
|
|
308
289
|
def get_physical_table_name(cls) -> str | None:
|
|
309
290
|
physical_table_name = getattr(cls, "__metatable_physical_table_name__", None)
|
|
@@ -385,9 +366,6 @@ class PlatformTimeIndexMetaTable(PlatformManagedMetaTable):
|
|
|
385
366
|
labels: Sequence[str] | None = None,
|
|
386
367
|
protect_from_deletion: bool | None = None,
|
|
387
368
|
provisioning: Mapping[str, Any] | None = None,
|
|
388
|
-
hash_namespace: str | None = None,
|
|
389
|
-
extra_hash_components: Mapping[str, Any] | None = None,
|
|
390
|
-
enforce_storage_hash_name: bool = True,
|
|
391
369
|
time_index_name: str | None = None,
|
|
392
370
|
index_names: Sequence[str] | None = None,
|
|
393
371
|
storage_layout: Mapping[str, Any] | None = None,
|
|
@@ -406,9 +384,6 @@ class PlatformTimeIndexMetaTable(PlatformManagedMetaTable):
|
|
|
406
384
|
labels=labels,
|
|
407
385
|
protect_from_deletion=protect_from_deletion,
|
|
408
386
|
provisioning=provisioning,
|
|
409
|
-
hash_namespace=hash_namespace,
|
|
410
|
-
extra_hash_components=extra_hash_components,
|
|
411
|
-
enforce_storage_hash_name=enforce_storage_hash_name,
|
|
412
387
|
time_index_name=time_index_name,
|
|
413
388
|
index_names=index_names,
|
|
414
389
|
storage_layout=storage_layout,
|
|
@@ -502,9 +477,6 @@ def time_indexed_registration_request_from_sqlalchemy_model(
|
|
|
502
477
|
protect_from_deletion: bool | None = None,
|
|
503
478
|
provisioning: Mapping[str, Any] | None = None,
|
|
504
479
|
schema: str | None = None,
|
|
505
|
-
hash_namespace: str | None = None,
|
|
506
|
-
extra_hash_components: Mapping[str, Any] | None = None,
|
|
507
|
-
enforce_storage_hash_name: bool = True,
|
|
508
480
|
time_index_name: str | None = None,
|
|
509
481
|
index_names: Sequence[str] | None = None,
|
|
510
482
|
storage_layout: Mapping[str, Any] | None = None,
|
|
@@ -612,9 +584,6 @@ def platform_managed_registration_request_from_sqlalchemy_model(
|
|
|
612
584
|
provisioning: Mapping[str, Any] | None = None,
|
|
613
585
|
introspect: bool | None = None,
|
|
614
586
|
schema: str | None = None,
|
|
615
|
-
hash_namespace: str | None = None,
|
|
616
|
-
extra_hash_components: Mapping[str, Any] | None = None,
|
|
617
|
-
enforce_storage_hash_name: bool = True,
|
|
618
587
|
) -> MetaTableRegistrationRequest:
|
|
619
588
|
table = _resolve_table(model_or_table)
|
|
620
589
|
resolved_schema = _resolve_schema(table, schema=schema)
|
|
@@ -667,8 +636,6 @@ def external_registered_registration_request_from_sqlalchemy_model(
|
|
|
667
636
|
protect_from_deletion: bool = False,
|
|
668
637
|
introspect: bool = True,
|
|
669
638
|
schema: str | None = None,
|
|
670
|
-
hash_namespace: str | None = None,
|
|
671
|
-
extra_hash_components: Mapping[str, Any] | None = None,
|
|
672
639
|
) -> MetaTableRegistrationRequest:
|
|
673
640
|
table = _resolve_table(model_or_table)
|
|
674
641
|
resolved_schema = _resolve_schema(table, schema=schema)
|
|
@@ -1059,24 +1026,17 @@ def _resolve_bool_metadata(
|
|
|
1059
1026
|
return bool(resolved_value)
|
|
1060
1027
|
|
|
1061
1028
|
|
|
1062
|
-
def _resolve_hash_namespace(
|
|
1029
|
+
def _resolve_hash_namespace(*, hash_namespace: str | None) -> str | None:
|
|
1063
1030
|
if hash_namespace is not None:
|
|
1064
1031
|
return hash_namespace
|
|
1065
|
-
|
|
1066
|
-
if resolved_hash_namespace in (None, ""):
|
|
1067
|
-
return None
|
|
1068
|
-
return str(resolved_hash_namespace)
|
|
1032
|
+
return None
|
|
1069
1033
|
|
|
1070
1034
|
|
|
1071
1035
|
def _resolve_extra_hash_components(
|
|
1072
|
-
model_or_table: Any,
|
|
1073
1036
|
*,
|
|
1074
1037
|
extra_hash_components: Mapping[str, Any] | None,
|
|
1075
1038
|
) -> dict[str, Any] | None:
|
|
1076
1039
|
resolved: dict[str, Any] = {}
|
|
1077
|
-
class_components = getattr(model_or_table, "__metatable_extra_hash_components__", None)
|
|
1078
|
-
if isinstance(class_components, Mapping):
|
|
1079
|
-
resolved.update(dict(class_components))
|
|
1080
1040
|
if isinstance(extra_hash_components, Mapping):
|
|
1081
1041
|
resolved.update(dict(extra_hash_components))
|
|
1082
1042
|
return resolved or None
|
|
@@ -1108,7 +1108,6 @@ def test_platform_managed_omits_foreign_key_contracts():
|
|
|
1108
1108
|
|
|
1109
1109
|
request = Asset.build_registration_request(
|
|
1110
1110
|
data_source_uid="dddddddd-dddd-4ddd-8ddd-dddddddddddd",
|
|
1111
|
-
enforce_storage_hash_name=False,
|
|
1112
1111
|
)
|
|
1113
1112
|
|
|
1114
1113
|
assert not hasattr(request.table_contract, "foreign_keys")
|
|
@@ -1184,7 +1183,6 @@ def test_platform_managed_metatable_register_delegates_to_meta_table_register(mo
|
|
|
1184
1183
|
assert Account.get_meta_table() is registered
|
|
1185
1184
|
assert Account.get_meta_table_uid() == "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa"
|
|
1186
1185
|
assert Account.get_data_source_uid() == "dddddddd-dddd-4ddd-8ddd-dddddddddddd"
|
|
1187
|
-
assert Account.get_storage_hash() == _configured_storage_hash(Account)
|
|
1188
1186
|
assert Account.get_physical_table_name() == "example_assets__account"
|
|
1189
1187
|
assert Account.__table__.name == "example_assets__account"
|
|
1190
1188
|
assert captured["timeout"] == 15
|
|
@@ -1508,7 +1506,6 @@ def test_time_index_meta_table_register_posts_to_dynamic_table_endpoint(monkeypa
|
|
|
1508
1506
|
assert AccountHoldings.get_meta_table() is registered
|
|
1509
1507
|
assert AccountHoldings.get_time_index_meta_table() is registered
|
|
1510
1508
|
assert AccountHoldings.get_meta_table_uid() == "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa"
|
|
1511
|
-
assert AccountHoldings.get_storage_hash() == _configured_storage_hash(AccountHoldings)
|
|
1512
1509
|
assert AccountHoldings.get_physical_table_name() == "example_assets__account_holdings"
|
|
1513
1510
|
assert AccountHoldings.__table__.name == "example_assets__account_holdings"
|
|
1514
1511
|
assert captured["r_type"] == "POST"
|
|
@@ -1675,7 +1672,7 @@ def test_ensure_registered_storage_table_reports_duplicate_matches(monkeypatch):
|
|
|
1675
1672
|
assert "bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb" in message
|
|
1676
1673
|
|
|
1677
1674
|
|
|
1678
|
-
def
|
|
1675
|
+
def test_contract_hash_extra_components_are_explicit_utility_inputs():
|
|
1679
1676
|
columns_a = [
|
|
1680
1677
|
FakeColumn("time_index", DateTime(timezone=True), nullable=False),
|
|
1681
1678
|
FakeColumn("random_number", String(255), nullable=False),
|
|
@@ -1698,12 +1695,20 @@ def test_time_index_storage_name_hash_component_separates_identical_table_shapes
|
|
|
1698
1695
|
namespace="mainsequence.examples",
|
|
1699
1696
|
identifier="daily_random_addition_project",
|
|
1700
1697
|
)
|
|
1701
|
-
RandomNumber.__metatable_extra_hash_components__ = {"storage_name": "daily_random_number"}
|
|
1702
|
-
RandomAddition.__metatable_extra_hash_components__ = {"storage_name": "daily_random_addition"}
|
|
1703
1698
|
|
|
1704
1699
|
random_number_storage_hash = _configured_storage_hash(RandomNumber)
|
|
1705
1700
|
random_addition_storage_hash = _configured_storage_hash(RandomAddition)
|
|
1706
1701
|
assert random_number_storage_hash != random_addition_storage_hash
|
|
1702
|
+
assert (
|
|
1703
|
+
sqlalchemy_contracts.compute_metatable_contract_hash(
|
|
1704
|
+
RandomNumber,
|
|
1705
|
+
extra_components={"storage_name": "daily_random_number"},
|
|
1706
|
+
)
|
|
1707
|
+
!= sqlalchemy_contracts.compute_metatable_contract_hash(
|
|
1708
|
+
RandomNumber,
|
|
1709
|
+
extra_components={"storage_name": "daily_random_addition"},
|
|
1710
|
+
)
|
|
1711
|
+
)
|
|
1707
1712
|
|
|
1708
1713
|
request = time_indexed_registration_request_from_sqlalchemy_model(
|
|
1709
1714
|
RandomNumber,
|
|
@@ -1901,7 +1906,7 @@ def test_platform_managed_register_preserves_authored_sqlalchemy_table_name(
|
|
|
1901
1906
|
|
|
1902
1907
|
_assert_omits_storage_hash(captured["request"])
|
|
1903
1908
|
assert captured["request"].table_contract.physical.table_name == "example_assets__account"
|
|
1904
|
-
assert Account
|
|
1909
|
+
assert _configured_storage_hash(Account) == storage_hash
|
|
1905
1910
|
assert Account.get_physical_table_name() == "example_assets__account"
|
|
1906
1911
|
assert Account.__table__.name == "example_assets__account"
|
|
1907
1912
|
assert Account.__table__.schema is None
|
|
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-4.4.2 → mainsequence-4.4.3}/agent_scaffold/skills/command_center/connections/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-4.4.2 → mainsequence-4.4.3}/agent_scaffold/skills/dashboards/streamlit/SKILL.md
RENAMED
|
File without changes
|
{mainsequence-4.4.2 → mainsequence-4.4.3}/agent_scaffold/skills/data_access/exploration/SKILL.md
RENAMED
|
File without changes
|
{mainsequence-4.4.2 → mainsequence-4.4.3}/agent_scaffold/skills/data_publishing/data_nodes/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
{mainsequence-4.4.2 → mainsequence-4.4.3}/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md
RENAMED
|
File without changes
|
{mainsequence-4.4.2 → mainsequence-4.4.3}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.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
|
{mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/command_center/app_component.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/command_center/workspace_snapshot.py
RENAMED
|
File without changes
|
|
File without changes
|
{mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/data_sources_interfaces/__init__.py
RENAMED
|
File without changes
|
{mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/data_sources_interfaces/duckdb.py
RENAMED
|
File without changes
|
{mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/data_sources_interfaces/local_paths.py
RENAMED
|
File without changes
|
{mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/client/data_sources_interfaces/sqlite.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
|
|
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-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/data_nodes/build_operations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/data_nodes/namespacing.py
RENAMED
|
File without changes
|
{mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/data_nodes/persist_managers.py
RENAMED
|
File without changes
|
{mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/data_nodes/run_operations.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
|
{mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/migrations/templates/__init__.py
RENAMED
|
File without changes
|
{mainsequence-4.4.2 → mainsequence-4.4.3}/mainsequence/meta_tables/migrations/templates/env.py.mako
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
|