mainsequence 6.0.43__tar.gz → 6.0.44__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 (129) hide show
  1. {mainsequence-6.0.43/mainsequence.egg-info → mainsequence-6.0.44}/PKG-INFO +1 -1
  2. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/client/models_helpers.py +8 -0
  3. {mainsequence-6.0.43 → mainsequence-6.0.44/mainsequence.egg-info}/PKG-INFO +1 -1
  4. {mainsequence-6.0.43 → mainsequence-6.0.44}/pyproject.toml +1 -1
  5. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_cli.py +9 -0
  6. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_filter_normalization.py +6 -0
  7. {mainsequence-6.0.43 → mainsequence-6.0.44}/LICENSE +0 -0
  8. {mainsequence-6.0.43 → mainsequence-6.0.44}/README.md +0 -0
  9. {mainsequence-6.0.43 → mainsequence-6.0.44}/agent_scaffold/AGENTS.md +0 -0
  10. {mainsequence-6.0.43 → mainsequence-6.0.44}/agent_scaffold/skills/a2a_sdk_execution/SKILL.md +0 -0
  11. {mainsequence-6.0.43 → mainsequence-6.0.44}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -0
  12. {mainsequence-6.0.43 → mainsequence-6.0.44}/agent_scaffold/skills/data_access/exploration/SKILL.md +0 -0
  13. {mainsequence-6.0.43 → mainsequence-6.0.44}/agent_scaffold/skills/data_publishing/data_nodes/SKILL.md +0 -0
  14. {mainsequence-6.0.43 → mainsequence-6.0.44}/agent_scaffold/skills/data_publishing/meta_table_migrations/SKILL.md +0 -0
  15. {mainsequence-6.0.43 → mainsequence-6.0.44}/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md +0 -0
  16. {mainsequence-6.0.43 → mainsequence-6.0.44}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +0 -0
  17. {mainsequence-6.0.43 → mainsequence-6.0.44}/agent_scaffold/skills/maintenance/project-maintenance/SKILL.md +0 -0
  18. {mainsequence-6.0.43 → mainsequence-6.0.44}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +0 -0
  19. {mainsequence-6.0.43 → mainsequence-6.0.44}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +0 -0
  20. {mainsequence-6.0.43 → mainsequence-6.0.44}/agent_scaffold/skills/sdk_project_execution/SKILL.md +0 -0
  21. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/__init__.py +0 -0
  22. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/__main__.py +0 -0
  23. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/bootstrap.py +0 -0
  24. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/cli/__init__.py +0 -0
  25. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/cli/api.py +0 -0
  26. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/cli/browser_auth.py +0 -0
  27. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/cli/cli.py +0 -0
  28. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/cli/config.py +0 -0
  29. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/cli/docker_utils.py +0 -0
  30. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/cli/doctor.py +0 -0
  31. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/cli/local_ops.py +0 -0
  32. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/cli/migrations.py +0 -0
  33. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/cli/model_filters.py +0 -0
  34. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/cli/project_status.py +0 -0
  35. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/cli/pydantic_cli.py +0 -0
  36. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/cli/sdk_utils.py +0 -0
  37. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/cli/ssh_utils.py +0 -0
  38. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/cli/ui.py +0 -0
  39. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/client/__init__.py +0 -0
  40. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/client/agent_runtime_models.py +0 -0
  41. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/client/base.py +0 -0
  42. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/client/client.py +0 -0
  43. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/client/compute_validation.py +0 -0
  44. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
  45. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
  46. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/client/data_sources_interfaces/local_paths.py +0 -0
  47. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/client/data_sources_interfaces/sqlite.py +0 -0
  48. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/client/dtype_codec.py +0 -0
  49. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/client/exceptions.py +0 -0
  50. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/client/metatables/__init__.py +0 -0
  51. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/client/metatables/core.py +0 -0
  52. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/client/models_foundry.py +0 -0
  53. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/client/models_user.py +0 -0
  54. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/client/utils.py +0 -0
  55. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/defaults.py +0 -0
  56. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/instrumentation/__init__.py +0 -0
  57. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/instrumentation/utils.py +0 -0
  58. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/logconf.py +0 -0
  59. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/meta_tables/__init__.py +0 -0
  60. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/meta_tables/__main__.py +0 -0
  61. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/meta_tables/compiled_sql/__init__.py +0 -0
  62. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/meta_tables/compiled_sql/v1.py +0 -0
  63. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/meta_tables/data_nodes/__init__.py +0 -0
  64. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/meta_tables/data_nodes/build_operations.py +0 -0
  65. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/meta_tables/data_nodes/data_nodes.py +0 -0
  66. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/meta_tables/data_nodes/models.py +0 -0
  67. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/meta_tables/data_nodes/namespacing.py +0 -0
  68. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/meta_tables/data_nodes/persist_managers.py +0 -0
  69. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/meta_tables/data_nodes/run_operations.py +0 -0
  70. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/meta_tables/data_nodes/utils.py +0 -0
  71. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/meta_tables/future_registry.py +0 -0
  72. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/meta_tables/hashing.py +0 -0
  73. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/meta_tables/migrations/__init__.py +0 -0
  74. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/meta_tables/migrations/alembic.py +0 -0
  75. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/meta_tables/migrations/env.py +0 -0
  76. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/meta_tables/migrations/provider.py +0 -0
  77. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/meta_tables/migrations/registry.py +0 -0
  78. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/meta_tables/migrations/scaffold.py +0 -0
  79. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/meta_tables/migrations/templates/__init__.py +0 -0
  80. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/meta_tables/migrations/templates/env.py.mako +0 -0
  81. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/meta_tables/migrations/templates/script.py.mako +0 -0
  82. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/meta_tables/pydantic_metadata.py +0 -0
  83. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/meta_tables/schema_names.py +0 -0
  84. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/meta_tables/sqlalchemy_contracts.py +0 -0
  85. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/project_context.py +0 -0
  86. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/project_skills.py +0 -0
  87. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/runtime_flags.py +0 -0
  88. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence/scaffold_skills.py +0 -0
  89. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence.egg-info/SOURCES.txt +0 -0
  90. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence.egg-info/dependency_links.txt +0 -0
  91. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence.egg-info/entry_points.txt +0 -0
  92. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence.egg-info/requires.txt +0 -0
  93. {mainsequence-6.0.43 → mainsequence-6.0.44}/mainsequence.egg-info/top_level.txt +0 -0
  94. {mainsequence-6.0.43 → mainsequence-6.0.44}/setup.cfg +0 -0
  95. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_auth_precedence.py +0 -0
  96. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_build_operations_hashing.py +0 -0
  97. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_canonical_api_route_contract.py +0 -0
  98. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_cli_browser_auth.py +0 -0
  99. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_cli_migrations.py +0 -0
  100. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_client.py +0 -0
  101. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_data_access_mixin_dimension_audit.py +0 -0
  102. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_data_node_storage_dimension_queries.py +0 -0
  103. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_data_node_update_flow.py +0 -0
  104. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_dependency_extras.py +0 -0
  105. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_duckdb_interface_dimensions.py +0 -0
  106. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_environment_resource_context.py +0 -0
  107. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_instrumentation.py +0 -0
  108. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_local_ops.py +0 -0
  109. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_logconf.py +0 -0
  110. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_meta_table_migrations.py +0 -0
  111. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_meta_tables_client_models.py +0 -0
  112. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_meta_tables_sqlalchemy_contracts.py +0 -0
  113. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_models_user_request_bound_auth.py +0 -0
  114. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_notification_uid_contract.py +0 -0
  115. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_pod_project_resolution.py +0 -0
  116. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_project_batch_jobs_from_file.py +0 -0
  117. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_project_branch_contract.py +0 -0
  118. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_project_runtime_context.py +0 -0
  119. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_project_skills.py +0 -0
  120. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_run_configuration.py +0 -0
  121. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_scaffold_skills.py +0 -0
  122. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_schema_names.py +0 -0
  123. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_secret_client_model.py +0 -0
  124. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_source_table_configuration.py +0 -0
  125. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_sqlite_interface_dimensions.py +0 -0
  126. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_ssh_utils.py +0 -0
  127. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_update_runner_uid_runtime.py +0 -0
  128. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_update_statistics.py +0 -0
  129. {mainsequence-6.0.43 → mainsequence-6.0.44}/tests/test_update_uid_guards.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 6.0.43
3
+ Version: 6.0.44
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License-Expression: LicenseRef-MainSequence-Proprietary
@@ -760,6 +760,14 @@ class JobRun(BaseObjectOrm, BasePydanticModel):
760
760
  description="Read-only repository branch name associated with the run, or null for an unscoped run.",
761
761
  examples=["main"],
762
762
  )
763
+ organization_project_environment_uid: str = Field(
764
+ ...,
765
+ description=(
766
+ "Read-only public UID of the Organization Environment resolved from the "
767
+ "JobRun's owning project branch."
768
+ ),
769
+ examples=["58218213-5e4e-43de-a5bd-6757f4e1c8f6"],
770
+ )
763
771
 
764
772
  execution_start: datetime.datetime | None = Field(
765
773
  default=None,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 6.0.43
3
+ Version: 6.0.44
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License-Expression: LicenseRef-MainSequence-Proprietary
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mainsequence"
7
- version = "6.0.43"
7
+ version = "6.0.44"
8
8
  description = "Main Sequence SDK "
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13"
@@ -5803,6 +5803,9 @@ def test_get_project_job_run_logs_uses_client_model(cli_mod, monkeypatch):
5803
5803
  "project_name": "market-data-service",
5804
5804
  "project_branch_uid": "5a28020a-0f1b-47ee-aab8-334286234bea",
5805
5805
  "project_branch_name": "main",
5806
+ "organization_project_environment_uid": (
5807
+ "58218213-5e4e-43de-a5bd-6757f4e1c8f6"
5808
+ ),
5806
5809
  "status": "RUNNING",
5807
5810
  "runtime_image_uid": "6cfdb152-923e-45b9-a150-c4541c68b0d1",
5808
5811
  "runtime_image_digest": "sha256:" + "b" * 64,
@@ -5811,6 +5814,9 @@ def test_get_project_job_run_logs_uses_client_model(cli_mod, monkeypatch):
5811
5814
 
5812
5815
  def get_logs(self, *, timeout=None):
5813
5816
  captured["get_logs_timeout"] = timeout
5817
+ captured["organization_project_environment_uid"] = (
5818
+ self.organization_project_environment_uid
5819
+ )
5814
5820
  return {
5815
5821
  "job_run_uid": self.uid,
5816
5822
  "status": self.status,
@@ -5829,6 +5835,9 @@ def test_get_project_job_run_logs_uses_client_model(cli_mod, monkeypatch):
5829
5835
  out = api_mod.get_project_job_run_logs("4c1d77c8-8a42-42b8-a9c1-06be9a336e5d")
5830
5836
  assert captured["job_run_uid_arg"] == "4c1d77c8-8a42-42b8-a9c1-06be9a336e5d"
5831
5837
  assert captured["get_logs_timeout"] is None
5838
+ assert captured["organization_project_environment_uid"] == (
5839
+ "58218213-5e4e-43de-a5bd-6757f4e1c8f6"
5840
+ )
5832
5841
  assert captured["jwt"] == ("acc", "ref")
5833
5842
  assert out == {
5834
5843
  "job_run_uid": "4c1d77c8-8a42-42b8-a9c1-06be9a336e5d",
@@ -180,6 +180,7 @@ def test_job_run_status_uses_status_detail_endpoint(monkeypatch):
180
180
  project_name=None,
181
181
  project_branch_uid=None,
182
182
  project_branch_name=None,
183
+ organization_project_environment_uid=ENVIRONMENT_UID,
183
184
  runtime_image_uid="6cfdb152-923e-45b9-a150-c4541c68b0d1",
184
185
  runtime_image_digest="sha256:" + "b" * 64,
185
186
  )
@@ -271,6 +272,7 @@ def test_job_run_deserializes_uid_payload_without_id():
271
272
  project_name="market-data-service",
272
273
  project_branch_uid="5a28020a-0f1b-47ee-aab8-334286234bea",
273
274
  project_branch_name="main",
275
+ organization_project_environment_uid=ENVIRONMENT_UID,
274
276
  status="RUNNING",
275
277
  cpu_request="1",
276
278
  cpu_limit="2",
@@ -286,6 +288,7 @@ def test_job_run_deserializes_uid_payload_without_id():
286
288
  dumped = job_run.model_dump()
287
289
  assert dumped["uid"] == "4c1d77c8-8a42-42b8-a9c1-06be9a336e5d"
288
290
  assert dumped["job_uid"] == "ab6a5d50-8a3e-4f0d-a9bb-7e84180bd50e"
291
+ assert dumped["organization_project_environment_uid"] == ENVIRONMENT_UID
289
292
  assert "id" not in dumped
290
293
 
291
294
 
@@ -2464,6 +2467,7 @@ def test_job_run_requires_immutable_runtime_image_snapshot():
2464
2467
  "project_name": "market-data-service",
2465
2468
  "project_branch_uid": "5a28020a-0f1b-47ee-aab8-334286234bea",
2466
2469
  "project_branch_name": "main",
2470
+ "organization_project_environment_uid": ENVIRONMENT_UID,
2467
2471
  "commit_hash": "a" * 40,
2468
2472
  "runtime_image_uid": "6cfdb152-923e-45b9-a150-c4541c68b0d1",
2469
2473
  "runtime_image_digest": "sha256:" + "b" * 64,
@@ -2477,6 +2481,7 @@ def test_job_run_requires_immutable_runtime_image_snapshot():
2477
2481
  assert run.project_name == payload["project_name"]
2478
2482
  assert run.project_branch_uid == payload["project_branch_uid"]
2479
2483
  assert run.project_branch_name == payload["project_branch_name"]
2484
+ assert run.organization_project_environment_uid == ENVIRONMENT_UID
2480
2485
 
2481
2486
  missing_project_context = dict(payload)
2482
2487
  missing_project_context.pop("project_uid")
@@ -2492,6 +2497,7 @@ def test_job_run_requires_immutable_runtime_image_snapshot():
2492
2497
  "project_name": None,
2493
2498
  "project_branch_uid": None,
2494
2499
  "project_branch_name": None,
2500
+ "organization_project_environment_uid": ENVIRONMENT_UID,
2495
2501
  "runtime_image_digest": "sha256:" + "b" * 64,
2496
2502
  }
2497
2503
  )
File without changes
File without changes
File without changes