mainsequence 6.0.41__tar.gz → 6.0.43__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.41/mainsequence.egg-info → mainsequence-6.0.43}/PKG-INFO +1 -1
  2. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/client/models_helpers.py +32 -4
  3. {mainsequence-6.0.41 → mainsequence-6.0.43/mainsequence.egg-info}/PKG-INFO +1 -1
  4. {mainsequence-6.0.41 → mainsequence-6.0.43}/pyproject.toml +1 -1
  5. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_cli.py +15 -1
  6. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_filter_normalization.py +74 -0
  7. {mainsequence-6.0.41 → mainsequence-6.0.43}/LICENSE +0 -0
  8. {mainsequence-6.0.41 → mainsequence-6.0.43}/README.md +0 -0
  9. {mainsequence-6.0.41 → mainsequence-6.0.43}/agent_scaffold/AGENTS.md +0 -0
  10. {mainsequence-6.0.41 → mainsequence-6.0.43}/agent_scaffold/skills/a2a_sdk_execution/SKILL.md +0 -0
  11. {mainsequence-6.0.41 → mainsequence-6.0.43}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -0
  12. {mainsequence-6.0.41 → mainsequence-6.0.43}/agent_scaffold/skills/data_access/exploration/SKILL.md +0 -0
  13. {mainsequence-6.0.41 → mainsequence-6.0.43}/agent_scaffold/skills/data_publishing/data_nodes/SKILL.md +0 -0
  14. {mainsequence-6.0.41 → mainsequence-6.0.43}/agent_scaffold/skills/data_publishing/meta_table_migrations/SKILL.md +0 -0
  15. {mainsequence-6.0.41 → mainsequence-6.0.43}/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md +0 -0
  16. {mainsequence-6.0.41 → mainsequence-6.0.43}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +0 -0
  17. {mainsequence-6.0.41 → mainsequence-6.0.43}/agent_scaffold/skills/maintenance/project-maintenance/SKILL.md +0 -0
  18. {mainsequence-6.0.41 → mainsequence-6.0.43}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +0 -0
  19. {mainsequence-6.0.41 → mainsequence-6.0.43}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +0 -0
  20. {mainsequence-6.0.41 → mainsequence-6.0.43}/agent_scaffold/skills/sdk_project_execution/SKILL.md +0 -0
  21. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/__init__.py +0 -0
  22. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/__main__.py +0 -0
  23. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/bootstrap.py +0 -0
  24. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/cli/__init__.py +0 -0
  25. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/cli/api.py +0 -0
  26. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/cli/browser_auth.py +0 -0
  27. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/cli/cli.py +0 -0
  28. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/cli/config.py +0 -0
  29. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/cli/docker_utils.py +0 -0
  30. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/cli/doctor.py +0 -0
  31. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/cli/local_ops.py +0 -0
  32. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/cli/migrations.py +0 -0
  33. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/cli/model_filters.py +0 -0
  34. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/cli/project_status.py +0 -0
  35. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/cli/pydantic_cli.py +0 -0
  36. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/cli/sdk_utils.py +0 -0
  37. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/cli/ssh_utils.py +0 -0
  38. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/cli/ui.py +0 -0
  39. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/client/__init__.py +0 -0
  40. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/client/agent_runtime_models.py +0 -0
  41. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/client/base.py +0 -0
  42. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/client/client.py +0 -0
  43. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/client/compute_validation.py +0 -0
  44. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
  45. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
  46. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/client/data_sources_interfaces/local_paths.py +0 -0
  47. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/client/data_sources_interfaces/sqlite.py +0 -0
  48. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/client/dtype_codec.py +0 -0
  49. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/client/exceptions.py +0 -0
  50. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/client/metatables/__init__.py +0 -0
  51. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/client/metatables/core.py +0 -0
  52. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/client/models_foundry.py +0 -0
  53. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/client/models_user.py +0 -0
  54. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/client/utils.py +0 -0
  55. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/defaults.py +0 -0
  56. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/instrumentation/__init__.py +0 -0
  57. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/instrumentation/utils.py +0 -0
  58. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/logconf.py +0 -0
  59. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/meta_tables/__init__.py +0 -0
  60. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/meta_tables/__main__.py +0 -0
  61. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/meta_tables/compiled_sql/__init__.py +0 -0
  62. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/meta_tables/compiled_sql/v1.py +0 -0
  63. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/meta_tables/data_nodes/__init__.py +0 -0
  64. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/meta_tables/data_nodes/build_operations.py +0 -0
  65. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/meta_tables/data_nodes/data_nodes.py +0 -0
  66. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/meta_tables/data_nodes/models.py +0 -0
  67. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/meta_tables/data_nodes/namespacing.py +0 -0
  68. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/meta_tables/data_nodes/persist_managers.py +0 -0
  69. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/meta_tables/data_nodes/run_operations.py +0 -0
  70. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/meta_tables/data_nodes/utils.py +0 -0
  71. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/meta_tables/future_registry.py +0 -0
  72. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/meta_tables/hashing.py +0 -0
  73. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/meta_tables/migrations/__init__.py +0 -0
  74. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/meta_tables/migrations/alembic.py +0 -0
  75. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/meta_tables/migrations/env.py +0 -0
  76. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/meta_tables/migrations/provider.py +0 -0
  77. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/meta_tables/migrations/registry.py +0 -0
  78. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/meta_tables/migrations/scaffold.py +0 -0
  79. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/meta_tables/migrations/templates/__init__.py +0 -0
  80. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/meta_tables/migrations/templates/env.py.mako +0 -0
  81. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/meta_tables/migrations/templates/script.py.mako +0 -0
  82. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/meta_tables/pydantic_metadata.py +0 -0
  83. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/meta_tables/schema_names.py +0 -0
  84. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/meta_tables/sqlalchemy_contracts.py +0 -0
  85. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/project_context.py +0 -0
  86. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/project_skills.py +0 -0
  87. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/runtime_flags.py +0 -0
  88. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence/scaffold_skills.py +0 -0
  89. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence.egg-info/SOURCES.txt +0 -0
  90. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence.egg-info/dependency_links.txt +0 -0
  91. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence.egg-info/entry_points.txt +0 -0
  92. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence.egg-info/requires.txt +0 -0
  93. {mainsequence-6.0.41 → mainsequence-6.0.43}/mainsequence.egg-info/top_level.txt +0 -0
  94. {mainsequence-6.0.41 → mainsequence-6.0.43}/setup.cfg +0 -0
  95. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_auth_precedence.py +0 -0
  96. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_build_operations_hashing.py +0 -0
  97. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_canonical_api_route_contract.py +0 -0
  98. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_cli_browser_auth.py +0 -0
  99. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_cli_migrations.py +0 -0
  100. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_client.py +0 -0
  101. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_data_access_mixin_dimension_audit.py +0 -0
  102. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_data_node_storage_dimension_queries.py +0 -0
  103. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_data_node_update_flow.py +0 -0
  104. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_dependency_extras.py +0 -0
  105. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_duckdb_interface_dimensions.py +0 -0
  106. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_environment_resource_context.py +0 -0
  107. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_instrumentation.py +0 -0
  108. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_local_ops.py +0 -0
  109. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_logconf.py +0 -0
  110. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_meta_table_migrations.py +0 -0
  111. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_meta_tables_client_models.py +0 -0
  112. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_meta_tables_sqlalchemy_contracts.py +0 -0
  113. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_models_user_request_bound_auth.py +0 -0
  114. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_notification_uid_contract.py +0 -0
  115. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_pod_project_resolution.py +0 -0
  116. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_project_batch_jobs_from_file.py +0 -0
  117. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_project_branch_contract.py +0 -0
  118. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_project_runtime_context.py +0 -0
  119. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_project_skills.py +0 -0
  120. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_run_configuration.py +0 -0
  121. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_scaffold_skills.py +0 -0
  122. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_schema_names.py +0 -0
  123. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_secret_client_model.py +0 -0
  124. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_source_table_configuration.py +0 -0
  125. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_sqlite_interface_dimensions.py +0 -0
  126. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_ssh_utils.py +0 -0
  127. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_update_runner_uid_runtime.py +0 -0
  128. {mainsequence-6.0.41 → mainsequence-6.0.43}/tests/test_update_statistics.py +0 -0
  129. {mainsequence-6.0.41 → mainsequence-6.0.43}/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.41
3
+ Version: 6.0.43
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License-Expression: LicenseRef-MainSequence-Proprietary
@@ -955,14 +955,33 @@ class ProjectResource(CurrentProjectBranchCollectionMixin, BaseObjectOrm, BasePy
955
955
  description="Display name of the resource discovered in the project's repository.",
956
956
  examples=["analytics_dashboard.py"],
957
957
  )
958
- resource_type: Literal["dashboard", "fastapi", "markdown", "agent"] | None = Field(
958
+ resource_type: Literal[
959
+ "configuration",
960
+ "notebook",
961
+ "script",
962
+ "dashboard",
963
+ "agent",
964
+ "fastapi",
965
+ "project_agent_card",
966
+ "markdown",
967
+ ] | None = Field(
959
968
  None,
960
969
  title="Resource Type",
961
970
  description=(
962
- "Type of the project resource. Allowed values are `dashboard`, `fastapi`, "
963
- "`markdown`, and `agent`."
971
+ "Canonical backend discriminator for the discovered project resource. "
972
+ "Allowed values are `configuration`, `notebook`, `script`, `dashboard`, "
973
+ "`agent`, `fastapi`, `project_agent_card`, and `markdown`."
964
974
  ),
965
- examples=["dashboard", "fastapi", "markdown", "agent"],
975
+ examples=[
976
+ "configuration",
977
+ "notebook",
978
+ "script",
979
+ "dashboard",
980
+ "agent",
981
+ "fastapi",
982
+ "project_agent_card",
983
+ "markdown",
984
+ ],
966
985
  )
967
986
  code: str | None = Field(
968
987
  None,
@@ -1165,6 +1184,15 @@ class ResourceRelease(
1165
1184
  "The revision is returned by the API and is not part of create requests."
1166
1185
  ),
1167
1186
  )
1187
+ cors_allowed_origins: list[str] | None = Field(
1188
+ default=None,
1189
+ title="CORS Allowed Origins",
1190
+ description=(
1191
+ "Browser origins allowed to call a FastAPI release. The backend omits "
1192
+ "this field for other release kinds."
1193
+ ),
1194
+ examples=[["https://app.example.com", "https://*.site-dev.main-sequence.app"]],
1195
+ )
1168
1196
 
1169
1197
  @classmethod
1170
1198
  def create(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 6.0.41
3
+ Version: 6.0.43
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.41"
7
+ version = "6.0.43"
8
8
  description = "Main Sequence SDK "
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13"
@@ -4253,7 +4253,16 @@ def test_list_project_resources_uses_client_model(cli_mod, monkeypatch):
4253
4253
  "last_modified": "2026-03-15T10:30:00Z",
4254
4254
  "repo_commit_sha": "abc123",
4255
4255
  }
4256
- )
4256
+ ),
4257
+ types.SimpleNamespace(
4258
+ model_dump=lambda: {
4259
+ "uid": "12cc8937-2e90-45da-8326-9e09a46f32cb",
4260
+ "name": "Project Agent Card",
4261
+ "resource_type": "project_agent_card",
4262
+ "path": ".agents/agent_card.json",
4263
+ "repo_commit_sha": "abc123",
4264
+ }
4265
+ ),
4257
4266
  ]
4258
4267
 
4259
4268
  fake_base.BaseObjectOrm = FakeBaseObjectOrm
@@ -4280,6 +4289,11 @@ def test_list_project_resources_uses_client_model(cli_mod, monkeypatch):
4280
4289
  assert captured["env_project_uid"] is None
4281
4290
  assert captured["jwt"] == ("acc", "ref")
4282
4291
  assert out[0]["name"] == "analytics_dashboard.py"
4292
+ assert [resource["resource_type"] for resource in out] == [
4293
+ "script",
4294
+ "project_agent_card",
4295
+ ]
4296
+ assert out[1]["path"] == ".agents/agent_card.json"
4283
4297
  assert os.environ.get("MAIN_SEQUENCE_PROJECT_UID") is None
4284
4298
 
4285
4299
 
@@ -2640,6 +2640,80 @@ def test_project_resource_create_release_uses_related_image_uid(monkeypatch):
2640
2640
  assert captured["timeout"] == 7
2641
2641
 
2642
2642
 
2643
+ @pytest.mark.parametrize(
2644
+ "resource_type",
2645
+ [
2646
+ "configuration",
2647
+ "notebook",
2648
+ "script",
2649
+ "dashboard",
2650
+ "agent",
2651
+ "fastapi",
2652
+ "project_agent_card",
2653
+ "markdown",
2654
+ ],
2655
+ )
2656
+ def test_project_resource_accepts_canonical_backend_resource_types(resource_type):
2657
+ resource = models_helpers_mod.ProjectResource.model_validate(
2658
+ {
2659
+ "uid": "857bec7b-dd77-4272-aecd-13fc2138eacc",
2660
+ "project_branch_uid": PROJECT_BRANCH_UID,
2661
+ "name": ".agents/agent_card.json",
2662
+ "resource_type": resource_type,
2663
+ "path": ".agents/agent_card.json",
2664
+ "repo_commit_sha": "abc123",
2665
+ }
2666
+ )
2667
+
2668
+ assert resource.resource_type == resource_type
2669
+
2670
+
2671
+ def test_resource_release_get_accepts_fastapi_cors_allowed_origins(monkeypatch):
2672
+ captured = {}
2673
+ release_uid = "2f4c4c3d-5669-4da5-9d86-b84633c1e6ed"
2674
+ response_payload = {
2675
+ "uid": release_uid,
2676
+ "resource_uid": "857bec7b-dd77-4272-aecd-13fc2138eacc",
2677
+ "readme_resource_uid": None,
2678
+ "related_job_uid": "7d0ab07c-d1c0-4b7f-9c69-3c1a41c0a4da",
2679
+ "release_kind": "fastapi",
2680
+ "automatic_deployment": True,
2681
+ "automatic_redeployment_policy": None,
2682
+ "cors_allowed_origins": [
2683
+ "https://app.example.com",
2684
+ "https://*.site-dev.main-sequence.app",
2685
+ ],
2686
+ }
2687
+
2688
+ class FakeResponse:
2689
+ status_code = 200
2690
+
2691
+ @staticmethod
2692
+ def json():
2693
+ return dict(response_payload)
2694
+
2695
+ def _fake_make_request(*, s, loaders, r_type, url, payload, time_out=None):
2696
+ captured.update(
2697
+ {
2698
+ "r_type": r_type,
2699
+ "url": url,
2700
+ "payload": payload,
2701
+ "timeout": time_out,
2702
+ }
2703
+ )
2704
+ return FakeResponse()
2705
+
2706
+ monkeypatch.setattr(base_mod, "make_request", _fake_make_request)
2707
+
2708
+ release = models_helpers_mod.ResourceRelease.get(pk=release_uid, timeout=13)
2709
+
2710
+ assert release.release_kind == models_helpers_mod.ResourceReleaseKind.FAST_API
2711
+ assert release.cors_allowed_origins == response_payload["cors_allowed_origins"]
2712
+ assert captured["r_type"] == "GET"
2713
+ assert captured["url"].endswith(f"/resource-releases/{release_uid}/")
2714
+ assert captured["timeout"] == 13
2715
+
2716
+
2643
2717
  def _resource_release_pipeline_payload(*, running_step: str | None = None):
2644
2718
  keys = (
2645
2719
  "resolve_revision",
File without changes
File without changes
File without changes