mainsequence 4.3.6__tar.gz → 4.3.8__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.3.6/mainsequence.egg-info → mainsequence-4.3.8}/PKG-INFO +1 -1
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/metatables/core.py +10 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/meta_tables/migrations.py +27 -1
- {mainsequence-4.3.6 → mainsequence-4.3.8/mainsequence.egg-info}/PKG-INFO +1 -1
- {mainsequence-4.3.6 → mainsequence-4.3.8}/pyproject.toml +1 -1
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_meta_table_migrations.py +24 -12
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_meta_tables_client_models.py +29 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/LICENSE +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/README.md +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/agent_scaffold/AGENTS.md +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/agent_scaffold/skills/a2a_communication/SKILL.md +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/agent_scaffold/skills/command_center/adapter_from_api/SKILL.md +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/agent_scaffold/skills/command_center/api_mock_prototyping/SKILL.md +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/agent_scaffold/skills/command_center/app_components/SKILL.md +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/agent_scaffold/skills/command_center/connections/SKILL.md +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/agent_scaffold/skills/command_center/workspace_analysis/SKILL.md +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/agent_scaffold/skills/command_center/workspace_builder/SKILL.md +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/agent_scaffold/skills/command_center/workspace_design/SKILL.md +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/agent_scaffold/skills/dashboards/streamlit/SKILL.md +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/agent_scaffold/skills/data_access/exploration/SKILL.md +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/agent_scaffold/skills/data_publishing/data_nodes/SKILL.md +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/agent_scaffold/skills/ms-markets/SKILL.md +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/agent_scaffold/skills/project_builder/SKILL.md +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/agent_scaffold/skills/project_to_agent/SKILL.md +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/__init__.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/__main__.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/bootstrap.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/cli/__init__.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/cli/api.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/cli/browser_auth.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/cli/cli.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/cli/config.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/cli/docker_utils.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/cli/doctor.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/cli/local_ops.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/cli/migrations.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/cli/model_filters.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/cli/project_status.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/cli/pydantic_cli.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/cli/sdk_utils.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/cli/ssh_utils.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/cli/ui.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/__init__.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/agent_runtime_models.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/base.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/client.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/command_center/__init__.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/command_center/app_component.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/command_center/connections.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/command_center/data_models.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/command_center/workspace.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/command_center/workspace_snapshot.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/compute_validation.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/data_sources_interfaces/local_paths.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/data_sources_interfaces/sqlite.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/dtype_codec.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/exceptions.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/fastapi/__init__.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/fastapi/auth.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/metatables/__init__.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/models_foundry.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/models_helpers.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/models_user.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/utils.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/defaults.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/instrumentation/__init__.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/instrumentation/utils.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/logconf.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/meta_tables/__init__.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/meta_tables/__main__.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/meta_tables/compiled_sql/__init__.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/meta_tables/compiled_sql/v1.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/meta_tables/data_nodes/__init__.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/meta_tables/data_nodes/build_operations.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/meta_tables/data_nodes/data_nodes.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/meta_tables/data_nodes/models.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/meta_tables/data_nodes/namespacing.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/meta_tables/data_nodes/persist_managers.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/meta_tables/data_nodes/run_operations.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/meta_tables/data_nodes/utils.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/meta_tables/future_registry.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/meta_tables/hashing.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/meta_tables/pydantic_metadata.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/meta_tables/schema_names.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/meta_tables/sqlalchemy_contracts.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/runtime_flags.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence.egg-info/SOURCES.txt +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence.egg-info/dependency_links.txt +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence.egg-info/entry_points.txt +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence.egg-info/requires.txt +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence.egg-info/top_level.txt +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/setup.cfg +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_auth_precedence.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_build_operations_hashing.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_cli.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_cli_browser_auth.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_cli_migrations.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_client.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_command_center_app_component_models.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_command_center_data_models.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_command_center_models.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_data_access_mixin_dimension_audit.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_data_node_storage_dimension_queries.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_data_node_update_flow.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_dependency_extras.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_duckdb_interface_dimensions.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_filter_normalization.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_instrumentation.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_logconf.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_meta_tables_sqlalchemy_contracts.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_models_user_request_bound_auth.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_pod_project_resolution.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_project_batch_jobs_from_file.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_run_configuration.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_schema_names.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_secret_client_model.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_source_table_configuration.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_sqlite_interface_dimensions.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_update_runner_uid_runtime.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_update_statistics.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_update_uid_guards.py +0 -0
- {mainsequence-4.3.6 → mainsequence-4.3.8}/tests/test_workspace_snapshot.py +0 -0
|
@@ -3023,6 +3023,11 @@ class TimeIndexMetaTable(MetaTable):
|
|
|
3023
3023
|
default=False, description="Whether the data source is open for everyone"
|
|
3024
3024
|
)
|
|
3025
3025
|
source_class_name: str | None = None
|
|
3026
|
+
cadence: str | None = Field(
|
|
3027
|
+
None,
|
|
3028
|
+
max_length=32,
|
|
3029
|
+
description="Optional declared cadence for the time-indexed table.",
|
|
3030
|
+
)
|
|
3026
3031
|
time_indexed_profile: TimeIndexedProfile | None = None
|
|
3027
3032
|
table_index_names: dict | None = None
|
|
3028
3033
|
|
|
@@ -3033,6 +3038,11 @@ class TimeIndexMetaTable(MetaTable):
|
|
|
3033
3038
|
_drop_indices: bool = False # for direct incertion we can pass this values
|
|
3034
3039
|
_rebuild_indices: bool = False # for direct incertion we can pass this values
|
|
3035
3040
|
|
|
3041
|
+
@field_validator("cadence")
|
|
3042
|
+
@classmethod
|
|
3043
|
+
def _normalize_cadence(cls, value: str | None) -> str | None:
|
|
3044
|
+
return _normalize_time_indexed_cadence(value)
|
|
3045
|
+
|
|
3036
3046
|
def _time_indexed_dynamic_contract(self) -> dict[str, Any]:
|
|
3037
3047
|
return _dynamic_table_contract_fragment(self.table_contract)
|
|
3038
3048
|
|
|
@@ -930,7 +930,9 @@ def _collection_create_row_from_registration_request(
|
|
|
930
930
|
"alembic_revision": alembic_revision,
|
|
931
931
|
"physical_table_name": str(physical_table_name),
|
|
932
932
|
"protect_from_deletion": bool(getattr(request, "protect_from_deletion", False)),
|
|
933
|
-
"table_contract":
|
|
933
|
+
"table_contract": _collection_create_table_contract_payload(
|
|
934
|
+
request.table_contract
|
|
935
|
+
),
|
|
934
936
|
}
|
|
935
937
|
time_index_name = getattr(request, "time_index_name", None)
|
|
936
938
|
if time_index_name not in (None, ""):
|
|
@@ -944,6 +946,30 @@ def _collection_create_row_from_registration_request(
|
|
|
944
946
|
return row
|
|
945
947
|
|
|
946
948
|
|
|
949
|
+
def _collection_create_table_contract_payload(table_contract: Any) -> dict[str, Any]:
|
|
950
|
+
if isinstance(table_contract, MetaTableContract):
|
|
951
|
+
payload = table_contract.model_dump(mode="json", exclude_none=True)
|
|
952
|
+
elif hasattr(table_contract, "model_dump"):
|
|
953
|
+
payload = table_contract.model_dump(mode="json", exclude_none=True)
|
|
954
|
+
elif isinstance(table_contract, Mapping):
|
|
955
|
+
payload = dict(table_contract)
|
|
956
|
+
else:
|
|
957
|
+
raise TypeError("Alembic MetaTable collection-create requires table_contract.")
|
|
958
|
+
|
|
959
|
+
physical = payload.get("physical")
|
|
960
|
+
if hasattr(physical, "model_dump"):
|
|
961
|
+
physical_payload = physical.model_dump(mode="json", exclude_none=True)
|
|
962
|
+
elif isinstance(physical, Mapping):
|
|
963
|
+
physical_payload = dict(physical)
|
|
964
|
+
else:
|
|
965
|
+
physical_payload = None
|
|
966
|
+
if physical_payload is not None:
|
|
967
|
+
for schema_key in ("schema", "schema_", "table_schema", "schema_name"):
|
|
968
|
+
physical_payload.pop(schema_key, None)
|
|
969
|
+
payload["physical"] = physical_payload
|
|
970
|
+
return payload
|
|
971
|
+
|
|
972
|
+
|
|
947
973
|
def _request_contract_physical_table_name(request: Any) -> str | None:
|
|
948
974
|
table_contract = getattr(request, "table_contract", None)
|
|
949
975
|
if isinstance(table_contract, MetaTableContract):
|
|
@@ -853,10 +853,12 @@ def test_prepare_for_alembic_preserves_authored_table_names(monkeypatch):
|
|
|
853
853
|
assert all(table["management_mode"] == "platform_managed" for table in rows)
|
|
854
854
|
assert all("schema_management" not in table for table in rows)
|
|
855
855
|
assert all(table["protect_from_deletion"] is False for table in rows)
|
|
856
|
-
assert not
|
|
857
|
-
assert not
|
|
858
|
-
assert not
|
|
859
|
-
assert not
|
|
856
|
+
assert "indexes" not in rows[0]["table_contract"]
|
|
857
|
+
assert "indexes" not in rows[1]["table_contract"]
|
|
858
|
+
assert "foreign_keys" not in rows[0]["table_contract"]
|
|
859
|
+
assert "foreign_keys" not in rows[1]["table_contract"]
|
|
860
|
+
assert "schema" not in rows[0]["table_contract"]["physical"]
|
|
861
|
+
assert "schema" not in rows[1]["table_contract"]["physical"]
|
|
860
862
|
|
|
861
863
|
response_tables = []
|
|
862
864
|
for table in rows:
|
|
@@ -909,12 +911,20 @@ def test_prepare_for_alembic_preserves_authored_table_names(monkeypatch):
|
|
|
909
911
|
]
|
|
910
912
|
assert Account.__table__.name == "example_assets__account"
|
|
911
913
|
assert Asset.__table__.name == "example_assets__asset"
|
|
912
|
-
assert
|
|
913
|
-
|
|
914
|
+
assert (
|
|
915
|
+
reserved_payloads[0]["table_contract"]["physical"]["table_name"]
|
|
916
|
+
== "example_assets__account"
|
|
917
|
+
)
|
|
918
|
+
assert (
|
|
919
|
+
reserved_payloads[1]["table_contract"]["physical"]["table_name"]
|
|
920
|
+
== "example_assets__asset"
|
|
921
|
+
)
|
|
914
922
|
assert "backend" not in str(next(iter(Asset.__table__.indexes)).name)
|
|
915
923
|
assert next(iter(Asset.__table__.foreign_key_constraints)).name == "asset_account_uid_fkey"
|
|
916
|
-
assert not
|
|
917
|
-
assert not
|
|
924
|
+
assert "indexes" not in reserved_payloads[1]["table_contract"]
|
|
925
|
+
assert "foreign_keys" not in reserved_payloads[1]["table_contract"]
|
|
926
|
+
assert "schema" not in reserved_payloads[0]["table_contract"]["physical"]
|
|
927
|
+
assert "schema" not in reserved_payloads[1]["table_contract"]["physical"]
|
|
918
928
|
assert "schema_management" not in reserved_payloads[0]
|
|
919
929
|
assert reserved_payloads[0]["protect_from_deletion"] is False
|
|
920
930
|
|
|
@@ -958,8 +968,9 @@ def test_prepare_for_alembic_does_not_resolve_foreign_key_targets(monkeypatch):
|
|
|
958
968
|
assert rows[0]["migration_namespace"] == "markets"
|
|
959
969
|
assert rows[0]["migration_provider_key"] == "sample:markets"
|
|
960
970
|
assert rows[0]["is_alembic_managed"] is True
|
|
961
|
-
assert not
|
|
962
|
-
assert not
|
|
971
|
+
assert "indexes" not in rows[0]["table_contract"]
|
|
972
|
+
assert "foreign_keys" not in rows[0]["table_contract"]
|
|
973
|
+
assert "schema" not in rows[0]["table_contract"]["physical"]
|
|
963
974
|
assert "schema_management" not in rows[0]
|
|
964
975
|
return [
|
|
965
976
|
_reserved_metatable(
|
|
@@ -1194,8 +1205,9 @@ def test_prepare_for_alembic_reserves_existing_table_name_with_provider_identity
|
|
|
1194
1205
|
assert all(table["migration_namespace"] == "markets" for table in rows)
|
|
1195
1206
|
assert all(table["migration_provider_key"] == "sample:markets" for table in rows)
|
|
1196
1207
|
assert all(table["is_alembic_managed"] is True for table in rows)
|
|
1197
|
-
assert not
|
|
1198
|
-
assert not
|
|
1208
|
+
assert "indexes" not in rows[0]["table_contract"]
|
|
1209
|
+
assert "foreign_keys" not in rows[0]["table_contract"]
|
|
1210
|
+
assert "schema" not in rows[0]["table_contract"]["physical"]
|
|
1199
1211
|
assert all("schema_management" not in table for table in rows)
|
|
1200
1212
|
return [
|
|
1201
1213
|
_reserved_metatable(
|
|
@@ -201,6 +201,35 @@ def test_time_index_meta_table_bulk_create_posts_raw_collection_payload(monkeypa
|
|
|
201
201
|
assert captured["payload"]["json"] == [row]
|
|
202
202
|
|
|
203
203
|
|
|
204
|
+
def test_time_index_meta_table_accepts_backend_top_level_cadence():
|
|
205
|
+
table = meta_table_models.TimeIndexMetaTable(
|
|
206
|
+
**_meta_table_response(
|
|
207
|
+
cadence="1D",
|
|
208
|
+
time_indexed_profile={
|
|
209
|
+
"time_index_name": "time_index",
|
|
210
|
+
"cadence": "1D",
|
|
211
|
+
"index_names": ["time_index"],
|
|
212
|
+
},
|
|
213
|
+
)
|
|
214
|
+
)
|
|
215
|
+
|
|
216
|
+
assert table.cadence == "1d"
|
|
217
|
+
assert table.time_indexed_profile is not None
|
|
218
|
+
assert table.time_indexed_profile.cadence == "1d"
|
|
219
|
+
|
|
220
|
+
table_with_null_cadence = meta_table_models.TimeIndexMetaTable(
|
|
221
|
+
**_meta_table_response(
|
|
222
|
+
cadence=None,
|
|
223
|
+
time_indexed_profile={
|
|
224
|
+
"time_index_name": "time_index",
|
|
225
|
+
"index_names": ["time_index"],
|
|
226
|
+
},
|
|
227
|
+
)
|
|
228
|
+
)
|
|
229
|
+
|
|
230
|
+
assert table_with_null_cadence.cadence is None
|
|
231
|
+
|
|
232
|
+
|
|
204
233
|
def test_metatable_accepts_projection_relation_fields():
|
|
205
234
|
meta_table = meta_table_models.MetaTable(
|
|
206
235
|
**_meta_table_response(
|
|
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.3.6 → mainsequence-4.3.8}/agent_scaffold/skills/command_center/connections/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-4.3.6 → mainsequence-4.3.8}/agent_scaffold/skills/dashboards/streamlit/SKILL.md
RENAMED
|
File without changes
|
{mainsequence-4.3.6 → mainsequence-4.3.8}/agent_scaffold/skills/data_access/exploration/SKILL.md
RENAMED
|
File without changes
|
{mainsequence-4.3.6 → mainsequence-4.3.8}/agent_scaffold/skills/data_publishing/data_nodes/SKILL.md
RENAMED
|
File without changes
|
{mainsequence-4.3.6 → mainsequence-4.3.8}/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md
RENAMED
|
File without changes
|
{mainsequence-4.3.6 → mainsequence-4.3.8}/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.3.6 → mainsequence-4.3.8}/mainsequence/client/command_center/app_component.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/command_center/workspace_snapshot.py
RENAMED
|
File without changes
|
|
File without changes
|
{mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/data_sources_interfaces/__init__.py
RENAMED
|
File without changes
|
{mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/data_sources_interfaces/duckdb.py
RENAMED
|
File without changes
|
{mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/client/data_sources_interfaces/local_paths.py
RENAMED
|
File without changes
|
{mainsequence-4.3.6 → mainsequence-4.3.8}/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
|
{mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/meta_tables/data_nodes/build_operations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/meta_tables/data_nodes/namespacing.py
RENAMED
|
File without changes
|
{mainsequence-4.3.6 → mainsequence-4.3.8}/mainsequence/meta_tables/data_nodes/persist_managers.py
RENAMED
|
File without changes
|
{mainsequence-4.3.6 → mainsequence-4.3.8}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|