mainsequence 8.0.3__tar.gz → 8.0.4__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 (139) hide show
  1. {mainsequence-8.0.3/mainsequence.egg-info → mainsequence-8.0.4}/PKG-INFO +1 -1
  2. {mainsequence-8.0.3 → mainsequence-8.0.4/mainsequence.egg-info}/PKG-INFO +1 -1
  3. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence.egg-info/SOURCES.txt +1 -0
  4. {mainsequence-8.0.3 → mainsequence-8.0.4}/pyproject.toml +1 -1
  5. mainsequence-8.0.4/tests/test_code_repository_documentation_contract.py +75 -0
  6. {mainsequence-8.0.3 → mainsequence-8.0.4}/LICENSE +0 -0
  7. {mainsequence-8.0.3 → mainsequence-8.0.4}/MANIFEST.in +0 -0
  8. {mainsequence-8.0.3 → mainsequence-8.0.4}/README.md +0 -0
  9. {mainsequence-8.0.3 → mainsequence-8.0.4}/agent_scaffold/AGENTS.md +0 -0
  10. {mainsequence-8.0.3 → mainsequence-8.0.4}/agent_scaffold/skills/a2a_sdk_execution/SKILL.md +0 -0
  11. {mainsequence-8.0.3 → mainsequence-8.0.4}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -0
  12. {mainsequence-8.0.3 → mainsequence-8.0.4}/agent_scaffold/skills/data_access/exploration/SKILL.md +0 -0
  13. {mainsequence-8.0.3 → mainsequence-8.0.4}/agent_scaffold/skills/data_publishing/meta_table_migrations/SKILL.md +0 -0
  14. {mainsequence-8.0.3 → mainsequence-8.0.4}/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md +0 -0
  15. {mainsequence-8.0.3 → mainsequence-8.0.4}/agent_scaffold/skills/data_publishing/time_index_table_updates/SKILL.md +0 -0
  16. {mainsequence-8.0.3 → mainsequence-8.0.4}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +0 -0
  17. {mainsequence-8.0.3 → mainsequence-8.0.4}/agent_scaffold/skills/maintenance/code_repository_maintenance/SKILL.md +0 -0
  18. {mainsequence-8.0.3 → mainsequence-8.0.4}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +0 -0
  19. {mainsequence-8.0.3 → mainsequence-8.0.4}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +0 -0
  20. {mainsequence-8.0.3 → mainsequence-8.0.4}/agent_scaffold/skills/sdk_code_repository_execution/SKILL.md +0 -0
  21. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/__init__.py +0 -0
  22. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/__main__.py +0 -0
  23. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/bootstrap.py +0 -0
  24. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/cli/__init__.py +0 -0
  25. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/cli/api.py +0 -0
  26. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/cli/browser_auth.py +0 -0
  27. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/cli/cli.py +0 -0
  28. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/cli/code_repository_status.py +0 -0
  29. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/cli/config.py +0 -0
  30. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/cli/docker_utils.py +0 -0
  31. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/cli/doctor.py +0 -0
  32. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/cli/local_ops.py +0 -0
  33. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/cli/migrations.py +0 -0
  34. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/cli/model_filters.py +0 -0
  35. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/cli/pydantic_cli.py +0 -0
  36. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/cli/sdk_utils.py +0 -0
  37. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/cli/ssh_utils.py +0 -0
  38. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/cli/ui.py +0 -0
  39. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/client/__init__.py +0 -0
  40. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/client/agent_runtime_models.py +0 -0
  41. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/client/base.py +0 -0
  42. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/client/client.py +0 -0
  43. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/client/compute_validation.py +0 -0
  44. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
  45. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
  46. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/client/data_sources_interfaces/local_paths.py +0 -0
  47. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/client/data_sources_interfaces/sqlite.py +0 -0
  48. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/client/dtype_codec.py +0 -0
  49. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/client/exceptions.py +0 -0
  50. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/client/metatables/__init__.py +0 -0
  51. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/client/metatables/core.py +0 -0
  52. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/client/models_foundry.py +0 -0
  53. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/client/models_helpers.py +0 -0
  54. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/client/models_user.py +0 -0
  55. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/client/observability.py +0 -0
  56. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/client/utils.py +0 -0
  57. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/code_repository_context.py +0 -0
  58. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/code_repository_skills.py +0 -0
  59. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/defaults.py +0 -0
  60. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/instrumentation/__init__.py +0 -0
  61. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/instrumentation/utils.py +0 -0
  62. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/logconf.py +0 -0
  63. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/__init__.py +0 -0
  64. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/__main__.py +0 -0
  65. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/compiled_sql/__init__.py +0 -0
  66. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/compiled_sql/v1.py +0 -0
  67. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/future_registry.py +0 -0
  68. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/hashing.py +0 -0
  69. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/migrations/__init__.py +0 -0
  70. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/migrations/alembic.py +0 -0
  71. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/migrations/env.py +0 -0
  72. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/migrations/provider.py +0 -0
  73. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/migrations/registry.py +0 -0
  74. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/migrations/scaffold.py +0 -0
  75. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/migrations/templates/__init__.py +0 -0
  76. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/migrations/templates/env.py.mako +0 -0
  77. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/migrations/templates/script.py.mako +0 -0
  78. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/pydantic_metadata.py +0 -0
  79. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/schema_names.py +0 -0
  80. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/sqlalchemy_contracts.py +0 -0
  81. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/time_index_table_refs.py +0 -0
  82. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/time_index_table_updates/__init__.py +0 -0
  83. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/time_index_table_updates/configuration.py +0 -0
  84. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/time_index_table_updates/dependencies.py +0 -0
  85. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/time_index_table_updates/managers.py +0 -0
  86. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/time_index_table_updates/namespacing.py +0 -0
  87. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/time_index_table_updates/runner.py +0 -0
  88. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/time_index_table_updates/updaters.py +0 -0
  89. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/meta_tables/time_index_table_updates/utils.py +0 -0
  90. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/repository_identity_security.py +0 -0
  91. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/runtime_flags.py +0 -0
  92. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence/scaffold_skills.py +0 -0
  93. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence.egg-info/dependency_links.txt +0 -0
  94. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence.egg-info/entry_points.txt +0 -0
  95. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence.egg-info/requires.txt +0 -0
  96. {mainsequence-8.0.3 → mainsequence-8.0.4}/mainsequence.egg-info/top_level.txt +0 -0
  97. {mainsequence-8.0.3 → mainsequence-8.0.4}/setup.cfg +0 -0
  98. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/fixtures/time_index_table_update_hash_v2_golden.json +0 -0
  99. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_auth_precedence.py +0 -0
  100. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_canonical_api_route_contract.py +0 -0
  101. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_cli.py +0 -0
  102. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_cli_browser_auth.py +0 -0
  103. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_cli_migrations.py +0 -0
  104. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_client.py +0 -0
  105. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_code_repository_batch_jobs_from_file.py +0 -0
  106. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_code_repository_branch_contract.py +0 -0
  107. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_code_repository_runtime_context.py +0 -0
  108. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_code_repository_skills.py +0 -0
  109. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_dependency_extras.py +0 -0
  110. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_duckdb_interface_dimensions.py +0 -0
  111. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_environment_resource_context.py +0 -0
  112. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_environment_response_contracts.py +0 -0
  113. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_filter_normalization.py +0 -0
  114. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_instrumentation.py +0 -0
  115. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_local_ops.py +0 -0
  116. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_logconf.py +0 -0
  117. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_meta_table_migrations.py +0 -0
  118. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_meta_tables_client_models.py +0 -0
  119. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_meta_tables_sqlalchemy_contracts.py +0 -0
  120. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_models_user_request_bound_auth.py +0 -0
  121. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_notification_uid_contract.py +0 -0
  122. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_observability_client.py +0 -0
  123. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_pod_project_resolution.py +0 -0
  124. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_scaffold_skills.py +0 -0
  125. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_scheduler_client_model.py +0 -0
  126. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_schema_names.py +0 -0
  127. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_secret_client_model.py +0 -0
  128. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_source_table_configuration.py +0 -0
  129. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_sqlite_interface_dimensions.py +0 -0
  130. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_ssh_utils.py +0 -0
  131. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_time_index_table_access_dimension_audit.py +0 -0
  132. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_time_index_table_dimension_queries.py +0 -0
  133. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_time_index_table_update_configuration.py +0 -0
  134. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_time_index_table_update_configuration_client.py +0 -0
  135. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_time_index_table_update_flow.py +0 -0
  136. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_time_index_table_update_hard_cut.py +0 -0
  137. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_update_runner_uid_runtime.py +0 -0
  138. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_update_statistics.py +0 -0
  139. {mainsequence-8.0.3 → mainsequence-8.0.4}/tests/test_update_uid_guards.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 8.0.3
3
+ Version: 8.0.4
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License-Expression: LicenseRef-MainSequence-Proprietary
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mainsequence
3
- Version: 8.0.3
3
+ Version: 8.0.4
4
4
  Summary: Main Sequence SDK
5
5
  Author-email: Main Sequence GmbH <dev@main-sequence.io>
6
6
  License-Expression: LicenseRef-MainSequence-Proprietary
@@ -100,6 +100,7 @@ tests/test_cli_migrations.py
100
100
  tests/test_client.py
101
101
  tests/test_code_repository_batch_jobs_from_file.py
102
102
  tests/test_code_repository_branch_contract.py
103
+ tests/test_code_repository_documentation_contract.py
103
104
  tests/test_code_repository_runtime_context.py
104
105
  tests/test_code_repository_skills.py
105
106
  tests/test_dependency_extras.py
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mainsequence"
7
- version = "8.0.3"
7
+ version = "8.0.4"
8
8
  description = "Main Sequence SDK "
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13"
@@ -0,0 +1,75 @@
1
+ from __future__ import annotations
2
+
3
+ import re
4
+ from pathlib import Path
5
+
6
+ import pytest
7
+
8
+ REPOSITORY_ROOT = Path(__file__).resolve().parents[1]
9
+ DOCUMENTATION_ROOTS = (
10
+ REPOSITORY_ROOT / "docs",
11
+ REPOSITORY_ROOT / "agent_scaffold",
12
+ )
13
+ HISTORICAL_IDENTIFIER_ALLOWLIST = {
14
+ Path("CHANGELOG.md"): frozenset({"project-context", "runtime_project_context"}),
15
+ }
16
+ RETIRED_PUBLIC_IDENTIFIERS = {
17
+ "project_context": re.compile(r"(?<![A-Za-z0-9_])project_context(?![A-Za-z0-9_])"),
18
+ "project-context": re.compile(r"(?<![A-Za-z0-9_])project-context(?![A-Za-z0-9_])"),
19
+ "runtime_project_context": re.compile(
20
+ r"(?<![A-Za-z0-9_])runtime_project_context(?![A-Za-z0-9_])"
21
+ ),
22
+ "get_project_runtime_context": re.compile(
23
+ r"(?<![A-Za-z0-9_])get_project_runtime_context(?![A-Za-z0-9_])"
24
+ ),
25
+ "ProjectAlembicVersion": re.compile(r"\bProjectAlembicVersion\b"),
26
+ "ProjectBranch": re.compile(r"\bProjectBranch\b"),
27
+ "MAIN_SEQUENCE_PROJECT": re.compile(r"\bMAIN_SEQUENCE_PROJECT[A-Z0-9_]*\b"),
28
+ "MAINSEQUENCE_PROJECT": re.compile(r"\bMAINSEQUENCE_PROJECT[A-Z0-9_]*\b"),
29
+ "organization_project_environment": re.compile(
30
+ r"\borganization_project_environment(?:_uid|_name)?\b"
31
+ ),
32
+ "project_to_agent": re.compile(r"\bproject_to_agent\b"),
33
+ "project-design": re.compile(r"\bproject-design\b"),
34
+ "project-code": re.compile(r"\bproject-code\b"),
35
+ "project-facing": re.compile(r"\bproject-facing\b"),
36
+ }
37
+
38
+
39
+ def _documentation_files() -> tuple[Path, ...]:
40
+ files = {REPOSITORY_ROOT / "README.md", REPOSITORY_ROOT / "CHANGELOG.md"}
41
+ for root in DOCUMENTATION_ROOTS:
42
+ files.update(root.rglob("*.md"))
43
+ return tuple(sorted(files))
44
+
45
+
46
+ @pytest.mark.parametrize(
47
+ "path",
48
+ _documentation_files(),
49
+ ids=lambda path: str(path.relative_to(REPOSITORY_ROOT)),
50
+ )
51
+ def test_current_documentation_excludes_retired_project_identifiers(path: Path) -> None:
52
+ relative_path = path.relative_to(REPOSITORY_ROOT)
53
+ allowed_identifiers = HISTORICAL_IDENTIFIER_ALLOWLIST.get(relative_path, frozenset())
54
+ text = path.read_text(encoding="utf-8")
55
+
56
+ unexpected = sorted(
57
+ identifier
58
+ for identifier, pattern in RETIRED_PUBLIC_IDENTIFIERS.items()
59
+ if identifier not in allowed_identifiers and pattern.search(text)
60
+ )
61
+
62
+ assert not unexpected, f"{relative_path} contains retired public identifiers: {unexpected}"
63
+
64
+
65
+ def test_code_repository_context_adr_describes_the_current_cutover() -> None:
66
+ adr = (
67
+ REPOSITORY_ROOT
68
+ / "docs"
69
+ / "adr"
70
+ / "0031-process-lifetime-code-repository-branch-context.md"
71
+ ).read_text(encoding="utf-8")
72
+
73
+ assert "get_code_repository_context()" in adr
74
+ assert "are the canonical public names" in adr
75
+ assert "names below describe the pre-cutover contract" not in adr
File without changes
File without changes
File without changes
File without changes