mainsequence 6.0.22__tar.gz → 6.0.23__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 (126) hide show
  1. {mainsequence-6.0.22/mainsequence.egg-info → mainsequence-6.0.23}/PKG-INFO +1 -1
  2. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/client/models_helpers.py +26 -0
  3. {mainsequence-6.0.22 → mainsequence-6.0.23/mainsequence.egg-info}/PKG-INFO +1 -1
  4. {mainsequence-6.0.22 → mainsequence-6.0.23}/pyproject.toml +1 -1
  5. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_filter_normalization.py +14 -0
  6. {mainsequence-6.0.22 → mainsequence-6.0.23}/LICENSE +0 -0
  7. {mainsequence-6.0.22 → mainsequence-6.0.23}/README.md +0 -0
  8. {mainsequence-6.0.22 → mainsequence-6.0.23}/agent_scaffold/AGENTS.md +0 -0
  9. {mainsequence-6.0.22 → mainsequence-6.0.23}/agent_scaffold/skills/a2a_sdk_execution/SKILL.md +0 -0
  10. {mainsequence-6.0.22 → mainsequence-6.0.23}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -0
  11. {mainsequence-6.0.22 → mainsequence-6.0.23}/agent_scaffold/skills/data_access/exploration/SKILL.md +0 -0
  12. {mainsequence-6.0.22 → mainsequence-6.0.23}/agent_scaffold/skills/data_publishing/data_nodes/SKILL.md +0 -0
  13. {mainsequence-6.0.22 → mainsequence-6.0.23}/agent_scaffold/skills/data_publishing/meta_table_migrations/SKILL.md +0 -0
  14. {mainsequence-6.0.22 → mainsequence-6.0.23}/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md +0 -0
  15. {mainsequence-6.0.22 → mainsequence-6.0.23}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +0 -0
  16. {mainsequence-6.0.22 → mainsequence-6.0.23}/agent_scaffold/skills/maintenance/project-maintenance/SKILL.md +0 -0
  17. {mainsequence-6.0.22 → mainsequence-6.0.23}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +0 -0
  18. {mainsequence-6.0.22 → mainsequence-6.0.23}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +0 -0
  19. {mainsequence-6.0.22 → mainsequence-6.0.23}/agent_scaffold/skills/sdk_project_execution/SKILL.md +0 -0
  20. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/__init__.py +0 -0
  21. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/__main__.py +0 -0
  22. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/bootstrap.py +0 -0
  23. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/cli/__init__.py +0 -0
  24. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/cli/api.py +0 -0
  25. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/cli/browser_auth.py +0 -0
  26. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/cli/cli.py +0 -0
  27. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/cli/config.py +0 -0
  28. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/cli/docker_utils.py +0 -0
  29. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/cli/doctor.py +0 -0
  30. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/cli/local_ops.py +0 -0
  31. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/cli/migrations.py +0 -0
  32. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/cli/model_filters.py +0 -0
  33. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/cli/project_status.py +0 -0
  34. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/cli/pydantic_cli.py +0 -0
  35. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/cli/sdk_utils.py +0 -0
  36. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/cli/ssh_utils.py +0 -0
  37. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/cli/ui.py +0 -0
  38. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/client/__init__.py +0 -0
  39. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/client/agent_runtime_models.py +0 -0
  40. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/client/base.py +0 -0
  41. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/client/client.py +0 -0
  42. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/client/compute_validation.py +0 -0
  43. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
  44. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
  45. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/client/data_sources_interfaces/local_paths.py +0 -0
  46. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/client/data_sources_interfaces/sqlite.py +0 -0
  47. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/client/dtype_codec.py +0 -0
  48. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/client/exceptions.py +0 -0
  49. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/client/fastapi/__init__.py +0 -0
  50. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/client/fastapi/auth.py +0 -0
  51. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/client/metatables/__init__.py +0 -0
  52. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/client/metatables/core.py +0 -0
  53. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/client/models_foundry.py +0 -0
  54. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/client/models_user.py +0 -0
  55. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/client/utils.py +0 -0
  56. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/defaults.py +0 -0
  57. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/instrumentation/__init__.py +0 -0
  58. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/instrumentation/utils.py +0 -0
  59. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/logconf.py +0 -0
  60. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/meta_tables/__init__.py +0 -0
  61. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/meta_tables/__main__.py +0 -0
  62. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/meta_tables/compiled_sql/__init__.py +0 -0
  63. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/meta_tables/compiled_sql/v1.py +0 -0
  64. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/meta_tables/data_nodes/__init__.py +0 -0
  65. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/meta_tables/data_nodes/build_operations.py +0 -0
  66. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/meta_tables/data_nodes/data_nodes.py +0 -0
  67. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/meta_tables/data_nodes/models.py +0 -0
  68. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/meta_tables/data_nodes/namespacing.py +0 -0
  69. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/meta_tables/data_nodes/persist_managers.py +0 -0
  70. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/meta_tables/data_nodes/run_operations.py +0 -0
  71. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/meta_tables/data_nodes/utils.py +0 -0
  72. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/meta_tables/future_registry.py +0 -0
  73. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/meta_tables/hashing.py +0 -0
  74. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/meta_tables/migrations/__init__.py +0 -0
  75. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/meta_tables/migrations/alembic.py +0 -0
  76. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/meta_tables/migrations/env.py +0 -0
  77. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/meta_tables/migrations/provider.py +0 -0
  78. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/meta_tables/migrations/registry.py +0 -0
  79. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/meta_tables/migrations/scaffold.py +0 -0
  80. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/meta_tables/migrations/templates/__init__.py +0 -0
  81. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/meta_tables/migrations/templates/env.py.mako +0 -0
  82. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/meta_tables/migrations/templates/script.py.mako +0 -0
  83. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/meta_tables/pydantic_metadata.py +0 -0
  84. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/meta_tables/schema_names.py +0 -0
  85. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/meta_tables/sqlalchemy_contracts.py +0 -0
  86. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/project_skills.py +0 -0
  87. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/runtime_context.py +0 -0
  88. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/runtime_flags.py +0 -0
  89. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence/scaffold_skills.py +0 -0
  90. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence.egg-info/SOURCES.txt +0 -0
  91. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence.egg-info/dependency_links.txt +0 -0
  92. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence.egg-info/entry_points.txt +0 -0
  93. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence.egg-info/requires.txt +0 -0
  94. {mainsequence-6.0.22 → mainsequence-6.0.23}/mainsequence.egg-info/top_level.txt +0 -0
  95. {mainsequence-6.0.22 → mainsequence-6.0.23}/setup.cfg +0 -0
  96. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_auth_precedence.py +0 -0
  97. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_build_operations_hashing.py +0 -0
  98. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_canonical_api_route_contract.py +0 -0
  99. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_cli.py +0 -0
  100. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_cli_browser_auth.py +0 -0
  101. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_cli_migrations.py +0 -0
  102. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_client.py +0 -0
  103. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_data_access_mixin_dimension_audit.py +0 -0
  104. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_data_node_storage_dimension_queries.py +0 -0
  105. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_data_node_update_flow.py +0 -0
  106. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_dependency_extras.py +0 -0
  107. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_duckdb_interface_dimensions.py +0 -0
  108. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_instrumentation.py +0 -0
  109. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_logconf.py +0 -0
  110. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_meta_table_migrations.py +0 -0
  111. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_meta_tables_client_models.py +0 -0
  112. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_meta_tables_sqlalchemy_contracts.py +0 -0
  113. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_models_user_request_bound_auth.py +0 -0
  114. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_pod_project_resolution.py +0 -0
  115. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_project_batch_jobs_from_file.py +0 -0
  116. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_project_branch_contract.py +0 -0
  117. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_project_skills.py +0 -0
  118. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_run_configuration.py +0 -0
  119. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_scaffold_skills.py +0 -0
  120. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_schema_names.py +0 -0
  121. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_secret_client_model.py +0 -0
  122. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_source_table_configuration.py +0 -0
  123. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_sqlite_interface_dimensions.py +0 -0
  124. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_update_runner_uid_runtime.py +0 -0
  125. {mainsequence-6.0.22 → mainsequence-6.0.23}/tests/test_update_statistics.py +0 -0
  126. {mainsequence-6.0.22 → mainsequence-6.0.23}/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.22
3
+ Version: 6.0.23
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License-Expression: LicenseRef-MainSequence-Proprietary
@@ -963,6 +963,24 @@ class ResourceReleaseKind(str, Enum):
963
963
  STATIC_SITE = "static_site"
964
964
 
965
965
 
966
+ class AutomaticRedeploymentPolicy(BaseModel):
967
+ tag_regex: str | None = Field(
968
+ ...,
969
+ title="Tag Regex",
970
+ description=(
971
+ "Regular expression matched against immutable repository tags. "
972
+ "Null enables redeployment for every commit."
973
+ ),
974
+ examples=[None, r"^v(?:0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)\.(?:0|[1-9][0-9]*)$"],
975
+ )
976
+ policy_revision: PositiveInt = Field(
977
+ ...,
978
+ title="Policy Revision",
979
+ description="Immutable revision of the current automatic redeployment policy.",
980
+ examples=[1, 3],
981
+ )
982
+
983
+
966
984
  class ResourceRelease(ShareableObjectMixin, BaseObjectOrm, BasePydanticModel):
967
985
  FILTERSET_FIELDS: ClassVar[dict[str, list[str]]] = {
968
986
  "uid": ["exact", "in"],
@@ -1065,6 +1083,14 @@ class ResourceRelease(ShareableObjectMixin, BaseObjectOrm, BasePydanticModel):
1065
1083
  ),
1066
1084
  examples=[False, True],
1067
1085
  )
1086
+ automatic_redeployment_policy: AutomaticRedeploymentPolicy | None = Field(
1087
+ default=None,
1088
+ title="Automatic Redeployment Policy",
1089
+ description=(
1090
+ "Backend-owned tag matching policy and its current immutable revision. "
1091
+ "The revision is returned by the API and is not part of create requests."
1092
+ ),
1093
+ )
1068
1094
 
1069
1095
  @classmethod
1070
1096
  def create(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 6.0.22
3
+ Version: 6.0.23
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.22"
7
+ version = "6.0.23"
8
8
  description = "Main Sequence SDK "
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13"
@@ -2055,12 +2055,19 @@ def test_resource_release_models_support_automatic_deployment_payloads():
2055
2055
  "related_job_uid": job_uid,
2056
2056
  "release_kind": "fastapi",
2057
2057
  "automatic_deployment": True,
2058
+ "automatic_redeployment_policy": {
2059
+ "tag_regex": None,
2060
+ "policy_revision": 3,
2061
+ },
2058
2062
  }
2059
2063
  )
2060
2064
 
2061
2065
  assert release.uid == release_uid
2062
2066
  assert release.release_kind == models_helpers_mod.ResourceReleaseKind.FAST_API
2063
2067
  assert release.automatic_deployment is True
2068
+ assert release.automatic_redeployment_policy is not None
2069
+ assert release.automatic_redeployment_policy.tag_regex is None
2070
+ assert release.automatic_redeployment_policy.policy_revision == 3
2064
2071
 
2065
2072
  run = models_helpers_mod.ResourceReleaseAutomaticDeploymentRun.model_validate(
2066
2073
  {
@@ -2110,6 +2117,10 @@ def test_resource_release_create_sends_automatic_deployment(monkeypatch):
2110
2117
  "related_job_uid": "7d0ab07c-d1c0-4b7f-9c69-3c1a41c0a4da",
2111
2118
  "release_kind": "fastapi",
2112
2119
  "automatic_deployment": True,
2120
+ "automatic_redeployment_policy": {
2121
+ "tag_regex": "^v[0-9]+\\.[0-9]+\\.[0-9]+$",
2122
+ "policy_revision": 1,
2123
+ },
2113
2124
  }
2114
2125
 
2115
2126
  def _fake_make_request(*, s, loaders, r_type, url, payload, time_out=None):
@@ -2132,6 +2143,9 @@ def test_resource_release_create_sends_automatic_deployment(monkeypatch):
2132
2143
  )
2133
2144
 
2134
2145
  assert release.automatic_deployment is True
2146
+ assert release.automatic_redeployment_policy is not None
2147
+ assert release.automatic_redeployment_policy.tag_regex == "^v[0-9]+\\.[0-9]+\\.[0-9]+$"
2148
+ assert release.automatic_redeployment_policy.policy_revision == 1
2135
2149
  assert captured["r_type"] == "POST"
2136
2150
  assert str(captured["url"]).endswith("/api/v1/resource-releases/")
2137
2151
  assert captured["payload"]["json"]["automatic_deployment"] is True
File without changes
File without changes
File without changes