mainsequence 4.3.28__tar.gz → 4.3.30__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.
Files changed (138) hide show
  1. {mainsequence-4.3.28/mainsequence.egg-info → mainsequence-4.3.30}/PKG-INFO +1 -1
  2. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/client/metatables/core.py +2 -1
  3. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/client/models_foundry.py +0 -5
  4. {mainsequence-4.3.28 → mainsequence-4.3.30/mainsequence.egg-info}/PKG-INFO +1 -1
  5. {mainsequence-4.3.28 → mainsequence-4.3.30}/pyproject.toml +1 -1
  6. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_dependency_extras.py +38 -0
  7. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_meta_tables_client_models.py +28 -0
  8. {mainsequence-4.3.28 → mainsequence-4.3.30}/LICENSE +0 -0
  9. {mainsequence-4.3.28 → mainsequence-4.3.30}/README.md +0 -0
  10. {mainsequence-4.3.28 → mainsequence-4.3.30}/agent_scaffold/AGENTS.md +0 -0
  11. {mainsequence-4.3.28 → mainsequence-4.3.30}/agent_scaffold/skills/a2a_communication/SKILL.md +0 -0
  12. {mainsequence-4.3.28 → mainsequence-4.3.30}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -0
  13. {mainsequence-4.3.28 → mainsequence-4.3.30}/agent_scaffold/skills/command_center/adapter_from_api/SKILL.md +0 -0
  14. {mainsequence-4.3.28 → mainsequence-4.3.30}/agent_scaffold/skills/command_center/api_mock_prototyping/SKILL.md +0 -0
  15. {mainsequence-4.3.28 → mainsequence-4.3.30}/agent_scaffold/skills/command_center/app_components/SKILL.md +0 -0
  16. {mainsequence-4.3.28 → mainsequence-4.3.30}/agent_scaffold/skills/command_center/connections/SKILL.md +0 -0
  17. {mainsequence-4.3.28 → mainsequence-4.3.30}/agent_scaffold/skills/command_center/workspace_analysis/SKILL.md +0 -0
  18. {mainsequence-4.3.28 → mainsequence-4.3.30}/agent_scaffold/skills/command_center/workspace_builder/SKILL.md +0 -0
  19. {mainsequence-4.3.28 → mainsequence-4.3.30}/agent_scaffold/skills/command_center/workspace_design/SKILL.md +0 -0
  20. {mainsequence-4.3.28 → mainsequence-4.3.30}/agent_scaffold/skills/dashboards/streamlit/SKILL.md +0 -0
  21. {mainsequence-4.3.28 → mainsequence-4.3.30}/agent_scaffold/skills/data_access/exploration/SKILL.md +0 -0
  22. {mainsequence-4.3.28 → mainsequence-4.3.30}/agent_scaffold/skills/data_publishing/data_nodes/SKILL.md +0 -0
  23. {mainsequence-4.3.28 → mainsequence-4.3.30}/agent_scaffold/skills/data_publishing/meta_table_migrations/SKILL.md +0 -0
  24. {mainsequence-4.3.28 → mainsequence-4.3.30}/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md +0 -0
  25. {mainsequence-4.3.28 → mainsequence-4.3.30}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +0 -0
  26. {mainsequence-4.3.28 → mainsequence-4.3.30}/agent_scaffold/skills/ms-markets/SKILL.md +0 -0
  27. {mainsequence-4.3.28 → mainsequence-4.3.30}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +0 -0
  28. {mainsequence-4.3.28 → mainsequence-4.3.30}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +0 -0
  29. {mainsequence-4.3.28 → mainsequence-4.3.30}/agent_scaffold/skills/project_builder/SKILL.md +0 -0
  30. {mainsequence-4.3.28 → mainsequence-4.3.30}/agent_scaffold/skills/project_to_agent/SKILL.md +0 -0
  31. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/__init__.py +0 -0
  32. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/__main__.py +0 -0
  33. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/bootstrap.py +0 -0
  34. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/cli/__init__.py +0 -0
  35. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/cli/api.py +0 -0
  36. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/cli/browser_auth.py +0 -0
  37. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/cli/cli.py +0 -0
  38. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/cli/config.py +0 -0
  39. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/cli/docker_utils.py +0 -0
  40. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/cli/doctor.py +0 -0
  41. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/cli/local_ops.py +0 -0
  42. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/cli/migrations.py +0 -0
  43. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/cli/model_filters.py +0 -0
  44. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/cli/project_status.py +0 -0
  45. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/cli/pydantic_cli.py +0 -0
  46. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/cli/sdk_utils.py +0 -0
  47. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/cli/ssh_utils.py +0 -0
  48. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/cli/ui.py +0 -0
  49. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/client/__init__.py +0 -0
  50. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/client/agent_runtime_models.py +0 -0
  51. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/client/base.py +0 -0
  52. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/client/client.py +0 -0
  53. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/client/command_center/__init__.py +0 -0
  54. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/client/command_center/app_component.py +0 -0
  55. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/client/command_center/connections.py +0 -0
  56. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/client/command_center/data_models.py +0 -0
  57. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/client/command_center/workspace.py +0 -0
  58. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/client/command_center/workspace_snapshot.py +0 -0
  59. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/client/compute_validation.py +0 -0
  60. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
  61. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
  62. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/client/data_sources_interfaces/local_paths.py +0 -0
  63. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/client/data_sources_interfaces/sqlite.py +0 -0
  64. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/client/dtype_codec.py +0 -0
  65. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/client/exceptions.py +0 -0
  66. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/client/fastapi/__init__.py +0 -0
  67. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/client/fastapi/auth.py +0 -0
  68. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/client/metatables/__init__.py +0 -0
  69. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/client/models_helpers.py +0 -0
  70. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/client/models_user.py +0 -0
  71. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/client/utils.py +0 -0
  72. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/defaults.py +0 -0
  73. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/instrumentation/__init__.py +0 -0
  74. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/instrumentation/utils.py +0 -0
  75. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/logconf.py +0 -0
  76. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/meta_tables/__init__.py +0 -0
  77. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/meta_tables/__main__.py +0 -0
  78. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/meta_tables/compiled_sql/__init__.py +0 -0
  79. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/meta_tables/compiled_sql/v1.py +0 -0
  80. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/meta_tables/data_nodes/__init__.py +0 -0
  81. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/meta_tables/data_nodes/build_operations.py +0 -0
  82. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/meta_tables/data_nodes/data_nodes.py +0 -0
  83. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/meta_tables/data_nodes/models.py +0 -0
  84. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/meta_tables/data_nodes/namespacing.py +0 -0
  85. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/meta_tables/data_nodes/persist_managers.py +0 -0
  86. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/meta_tables/data_nodes/run_operations.py +0 -0
  87. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/meta_tables/data_nodes/utils.py +0 -0
  88. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/meta_tables/future_registry.py +0 -0
  89. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/meta_tables/hashing.py +0 -0
  90. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/meta_tables/migrations/__init__.py +0 -0
  91. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/meta_tables/migrations/alembic.py +0 -0
  92. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/meta_tables/migrations/env.py +0 -0
  93. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/meta_tables/migrations/provider.py +0 -0
  94. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/meta_tables/migrations/registry.py +0 -0
  95. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/meta_tables/migrations/scaffold.py +0 -0
  96. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/meta_tables/migrations/templates/__init__.py +0 -0
  97. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/meta_tables/migrations/templates/env.py.mako +0 -0
  98. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/meta_tables/migrations/templates/script.py.mako +0 -0
  99. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/meta_tables/pydantic_metadata.py +0 -0
  100. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/meta_tables/schema_names.py +0 -0
  101. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/meta_tables/sqlalchemy_contracts.py +0 -0
  102. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence/runtime_flags.py +0 -0
  103. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence.egg-info/SOURCES.txt +0 -0
  104. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence.egg-info/dependency_links.txt +0 -0
  105. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence.egg-info/entry_points.txt +0 -0
  106. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence.egg-info/requires.txt +0 -0
  107. {mainsequence-4.3.28 → mainsequence-4.3.30}/mainsequence.egg-info/top_level.txt +0 -0
  108. {mainsequence-4.3.28 → mainsequence-4.3.30}/setup.cfg +0 -0
  109. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_auth_precedence.py +0 -0
  110. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_build_operations_hashing.py +0 -0
  111. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_cli.py +0 -0
  112. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_cli_browser_auth.py +0 -0
  113. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_cli_migrations.py +0 -0
  114. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_client.py +0 -0
  115. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_command_center_app_component_models.py +0 -0
  116. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_command_center_data_models.py +0 -0
  117. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_command_center_models.py +0 -0
  118. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_data_access_mixin_dimension_audit.py +0 -0
  119. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_data_node_storage_dimension_queries.py +0 -0
  120. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_data_node_update_flow.py +0 -0
  121. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_duckdb_interface_dimensions.py +0 -0
  122. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_filter_normalization.py +0 -0
  123. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_instrumentation.py +0 -0
  124. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_logconf.py +0 -0
  125. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_meta_table_migrations.py +0 -0
  126. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_meta_tables_sqlalchemy_contracts.py +0 -0
  127. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_models_user_request_bound_auth.py +0 -0
  128. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_pod_project_resolution.py +0 -0
  129. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_project_batch_jobs_from_file.py +0 -0
  130. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_run_configuration.py +0 -0
  131. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_schema_names.py +0 -0
  132. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_secret_client_model.py +0 -0
  133. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_source_table_configuration.py +0 -0
  134. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_sqlite_interface_dimensions.py +0 -0
  135. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_update_runner_uid_runtime.py +0 -0
  136. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_update_statistics.py +0 -0
  137. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_update_uid_guards.py +0 -0
  138. {mainsequence-4.3.28 → mainsequence-4.3.30}/tests/test_workspace_snapshot.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 4.3.28
3
+ Version: 4.3.30
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License: MainSequence GmbH SDK License Agreement
@@ -488,7 +488,8 @@ class MetaTableOperationScope(BasePydanticModel):
488
488
  except Exception as exc:
489
489
  raise ValueError(
490
490
  "MetaTable compiled SQL scope requires data_source_uid or a "
491
- "configured project/session default data source."
491
+ "configured project/session default data source. "
492
+ f"Default data source resolution failed: {exc}"
492
493
  ) from exc
493
494
 
494
495
  uid = getattr(data_source, "uid", None) or getattr(data_source, "data_source_uid", None)
@@ -1071,8 +1071,3 @@ class Constant(ShareableObjectMixin, BasePydanticModel, BaseObjectOrm):
1071
1071
  new_constant = cls.create(name=k, value=v)
1072
1072
  created_constants.append(new_constant)
1073
1073
  return created_constants
1074
-
1075
-
1076
- from . import metatables as _models_metatables # noqa: E402
1077
-
1078
- _models_metatables.SessionDataSource.set_remote_db()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 4.3.28
3
+ Version: 4.3.30
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License: MainSequence GmbH SDK License Agreement
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mainsequence"
7
- version = "4.3.28"
7
+ version = "4.3.30"
8
8
  description = "Main Sequence SDK "
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -6,6 +6,16 @@ import pathlib
6
6
  import sys
7
7
  import types
8
8
 
9
+ import pytest
10
+
11
+
12
+ def _snapshot_mainsequence_modules() -> dict[str, types.ModuleType]:
13
+ return {
14
+ name: module
15
+ for name, module in sys.modules.items()
16
+ if name == "mainsequence" or name.startswith("mainsequence.")
17
+ }
18
+
9
19
 
10
20
  def _reset_mainsequence_modules() -> None:
11
21
  for name in tuple(sys.modules):
@@ -13,6 +23,14 @@ def _reset_mainsequence_modules() -> None:
13
23
  sys.modules.pop(name, None)
14
24
 
15
25
 
26
+ @pytest.fixture(autouse=True)
27
+ def _restore_mainsequence_modules_after_import_test():
28
+ snapshot = _snapshot_mainsequence_modules()
29
+ yield
30
+ _reset_mainsequence_modules()
31
+ sys.modules.update(snapshot)
32
+
33
+
16
34
  def _seed_mainsequence_packages() -> None:
17
35
  repo_root = pathlib.Path(__file__).resolve().parents[1]
18
36
  pkg_root = repo_root / "mainsequence"
@@ -52,6 +70,26 @@ def test_core_client_import_does_not_require_duckdb(monkeypatch):
52
70
  assert not hasattr(foundry_module, "DynamicTableDataSource")
53
71
 
54
72
 
73
+ def test_models_foundry_import_does_not_resolve_session_data_source(monkeypatch):
74
+ _reset_mainsequence_modules()
75
+ _seed_mainsequence_packages()
76
+
77
+ metatables_module = importlib.import_module("mainsequence.client.metatables")
78
+
79
+ def _fail_import_time_resolution():
80
+ raise AssertionError("models_foundry import must not resolve SessionDataSource")
81
+
82
+ monkeypatch.setattr(
83
+ metatables_module.SessionDataSource,
84
+ "set_remote_db",
85
+ _fail_import_time_resolution,
86
+ )
87
+
88
+ foundry_module = importlib.import_module("mainsequence.client.models_foundry")
89
+
90
+ assert hasattr(foundry_module, "Project")
91
+
92
+
55
93
  def test_duckdb_helper_points_to_local_data_extra(monkeypatch):
56
94
  _reset_mainsequence_modules()
57
95
  _seed_mainsequence_packages()
@@ -956,6 +956,34 @@ def test_compiled_sql_v1_scope_resolves_session_data_source(monkeypatch):
956
956
  )
957
957
 
958
958
 
959
+ def test_compiled_sql_v1_scope_preserves_session_data_source_auth_failure(monkeypatch):
960
+ def _raise_auth_failure():
961
+ raise RuntimeError(
962
+ "Could not resolve the local project default data source because SDK "
963
+ "authentication/authorization failed."
964
+ )
965
+
966
+ monkeypatch.setattr(meta_table_models, "get_session_data_source", _raise_auth_failure)
967
+
968
+ with pytest.raises(ValidationError) as exc_info:
969
+ build_operation(
970
+ operation="select",
971
+ sql="SELECT asset.symbol FROM public.asset AS asset",
972
+ scope={
973
+ "tables": [
974
+ {
975
+ "metaTableUid": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa",
976
+ "alias": "asset",
977
+ }
978
+ ]
979
+ },
980
+ )
981
+
982
+ message = str(exc_info.value)
983
+ assert "Default data source resolution failed" in message
984
+ assert "SDK authentication/authorization failed" in message
985
+
986
+
959
987
  def test_compiled_sql_v1_serializes_typed_temporal_parameters():
960
988
  operation = build_operation(
961
989
  operation="select",
File without changes
File without changes
File without changes