mainsequence 8.1.20.dev7__tar.gz → 8.1.20.dev9__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.
- {mainsequence-8.1.20.dev7/mainsequence.egg-info → mainsequence-8.1.20.dev9}/PKG-INFO +1 -1
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/agent_scaffold/skills/data_access/exploration/SKILL.md +3 -3
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/agent_scaffold/skills/data_publishing/meta_table_migrations/SKILL.md +12 -9
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md +13 -16
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/agent_scaffold/skills/data_publishing/time_index_table_updates/SKILL.md +3 -2
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +6 -9
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +8 -4
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/cli/cli.py +6 -2
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/client/metatables/core.py +13 -30
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9/mainsequence.egg-info}/PKG-INFO +1 -1
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/pyproject.toml +1 -1
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_cli.py +34 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_code_repository_documentation_contract.py +64 -14
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_filter_normalization.py +3 -3
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/LICENSE +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/MANIFEST.in +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/README.md +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/agent_scaffold/AGENTS.md +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/agent_scaffold/skills/a2a_sdk_execution/SKILL.md +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/agent_scaffold/skills/maintenance/code_repository_maintenance/SKILL.md +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/agent_scaffold/skills/sdk_code_repository_execution/SKILL.md +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/__init__.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/__main__.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/bootstrap.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/cli/__init__.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/cli/api.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/cli/browser_auth.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/cli/code_repository_status.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/cli/config.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/cli/docker_utils.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/cli/doctor.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/cli/local_ops.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/cli/migrations.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/cli/model_filters.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/cli/pydantic_cli.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/cli/sdk_utils.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/cli/ssh_utils.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/cli/ui.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/client/__init__.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/client/agent_runtime_models.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/client/base.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/client/client.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/client/compute_validation.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/client/data_sources_interfaces/local_paths.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/client/data_sources_interfaces/sqlite.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/client/dtype_codec.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/client/exceptions.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/client/github_issues.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/client/metatables/__init__.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/client/models_foundry.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/client/models_helpers.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/client/models_user.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/client/observability.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/client/utils.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/code_repository_context.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/code_repository_skills.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/defaults.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/instrumentation/__init__.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/instrumentation/utils.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/logconf.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/__init__.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/__main__.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/compiled_sql/__init__.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/compiled_sql/v1.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/future_registry.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/hashing.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/migrations/__init__.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/migrations/alembic.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/migrations/env.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/migrations/provider.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/migrations/registry.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/migrations/scaffold.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/migrations/templates/__init__.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/migrations/templates/env.py.mako +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/migrations/templates/script.py.mako +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/pydantic_metadata.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/schema_names.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/sqlalchemy_contracts.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/time_index_table_refs.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/time_index_table_updates/__init__.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/time_index_table_updates/configuration.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/time_index_table_updates/dependencies.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/time_index_table_updates/managers.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/time_index_table_updates/namespacing.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/time_index_table_updates/runner.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/time_index_table_updates/updaters.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/time_index_table_updates/utils.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/repository_identity_security.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/runtime_flags.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/scaffold_skills.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence.egg-info/SOURCES.txt +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence.egg-info/dependency_links.txt +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence.egg-info/entry_points.txt +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence.egg-info/requires.txt +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence.egg-info/top_level.txt +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/setup.cfg +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/fixtures/time_index_table_update_hash_v2_golden.json +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_auth_precedence.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_canonical_api_route_contract.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_cli_browser_auth.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_cli_migrations.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_client.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_code_repository_batch_jobs_from_file.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_code_repository_branch_contract.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_code_repository_runtime_context.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_code_repository_skills.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_dependency_extras.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_dev_release_version.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_duckdb_interface_dimensions.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_environment_resource_context.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_environment_response_contracts.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_github_issues_client.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_instrumentation.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_local_ops.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_logconf.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_meta_table_migrations.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_meta_tables_client_models.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_meta_tables_sqlalchemy_contracts.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_models_user_request_bound_auth.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_notification_uid_contract.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_observability_client.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_pod_project_resolution.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_scaffold_skills.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_schema_names.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_secret_client_model.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_source_table_configuration.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_sqlite_interface_dimensions.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_ssh_utils.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_time_index_table_access_dimension_audit.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_time_index_table_dimension_queries.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_time_index_table_update_configuration.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_time_index_table_update_configuration_client.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_time_index_table_update_flow.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_time_index_table_update_hard_cut.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_tolerant_response_reading.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_update_runner_uid_runtime.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_update_statistics.py +0 -0
- {mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_update_uid_guards.py +0 -0
|
@@ -60,9 +60,9 @@ This skill discovers and identifies data. It does not publish, redesign, or defi
|
|
|
60
60
|
## Read First
|
|
61
61
|
|
|
62
62
|
1. `AGENTS.md`
|
|
63
|
-
2.
|
|
64
|
-
3.
|
|
65
|
-
4.
|
|
63
|
+
2. <https://mainsequence-sdk.github.io/mainsequence-sdk/cli/>
|
|
64
|
+
3. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/time_index_table_updates/>
|
|
65
|
+
4. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/meta_tables/> when the exploration touches row-oriented storage
|
|
66
66
|
|
|
67
67
|
## Inputs This Skill Needs
|
|
68
68
|
|
|
@@ -17,16 +17,13 @@ platform-managed application tables outside the migration workflow.
|
|
|
17
17
|
|
|
18
18
|
## Read First
|
|
19
19
|
|
|
20
|
-
1. `
|
|
21
|
-
2.
|
|
22
|
-
3.
|
|
23
|
-
4. `docs/adr/0026-sdk-owned-migration-scaffolding.md`
|
|
20
|
+
1. `AGENTS.md`
|
|
21
|
+
2. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/meta_tables/migrations/>
|
|
22
|
+
3. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/meta_tables/api/>
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
<https://github.com/mainsequence-projects/mainsequence-sdk-tutorial>; read it
|
|
29
|
-
only when a runnable end-to-end example is needed.
|
|
24
|
+
The pages above are the authoritative reference for provider behavior and
|
|
25
|
+
migration contracts. This skill states the contract it needs; read those pages
|
|
26
|
+
for the full provider and catalog-binding detail.
|
|
30
27
|
|
|
31
28
|
## Required Decisions
|
|
32
29
|
|
|
@@ -103,6 +100,12 @@ platform-managed, Alembic-managed reservations and are validated before HTTP.
|
|
|
103
100
|
|
|
104
101
|
- Keep Alembic as the schema migration engine; do not build custom operation
|
|
105
102
|
lists or fake migration payload formats.
|
|
103
|
+
- These are intentionally unsupported and must not be reintroduced: SDK-managed
|
|
104
|
+
migration artifact table models, packaged migration rows,
|
|
105
|
+
`load_packaged_migration`, `sync_packaged_migration`,
|
|
106
|
+
`build_migration_registry_row`, custom `operations()` migration modules, and
|
|
107
|
+
operation names such as `add_column` or `create_index`. Use provider-selected
|
|
108
|
+
Alembic revisions and Alembic-rendered SQL only.
|
|
106
109
|
- Keep provider scope explicit. Do not scan all imported models or installed
|
|
107
110
|
packages.
|
|
108
111
|
- For one-model or configured dynamic providers, use `metadata_for_models(...)`
|
|
@@ -49,19 +49,16 @@ If the user is still in the discovery process and does not yet know what data ex
|
|
|
49
49
|
|
|
50
50
|
## Read First
|
|
51
51
|
|
|
52
|
-
1. `
|
|
53
|
-
2.
|
|
54
|
-
3.
|
|
55
|
-
4.
|
|
56
|
-
5.
|
|
57
|
-
6.
|
|
52
|
+
1. `AGENTS.md`
|
|
53
|
+
2. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/meta_tables/>
|
|
54
|
+
3. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/meta_tables/sqlalchemy/>
|
|
55
|
+
4. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/meta_tables/compiled_sql/>
|
|
56
|
+
5. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/meta_tables/migrations/>
|
|
57
|
+
6. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/meta_tables/api/>
|
|
58
|
+
7. For migration work, use
|
|
58
59
|
`.agents/skills/mainsequence/data_publishing/meta_table_migrations/SKILL.md`
|
|
59
60
|
|
|
60
|
-
The
|
|
61
|
-
The runnable beginner walkthrough is maintained in the separate canonical
|
|
62
|
-
tutorial CodeRepository at
|
|
63
|
-
<https://github.com/mainsequence-projects/mainsequence-sdk-tutorial>; read it
|
|
64
|
-
only when a runnable end-to-end example is needed.
|
|
61
|
+
The pages above are the authoritative reference for MetaTables.
|
|
65
62
|
|
|
66
63
|
## Inputs This Skill Needs
|
|
67
64
|
|
|
@@ -313,9 +310,9 @@ asset_meta_table = MetaTable.register(asset_request)
|
|
|
313
310
|
### 4. Schema changes use Alembic
|
|
314
311
|
|
|
315
312
|
When doing migration work, use
|
|
316
|
-
`.agents/skills/mainsequence/data_publishing/meta_table_migrations/SKILL.md
|
|
317
|
-
|
|
318
|
-
|
|
313
|
+
`.agents/skills/mainsequence/data_publishing/meta_table_migrations/SKILL.md`,
|
|
314
|
+
which owns the provider-based Alembic lifecycle and carries the migration
|
|
315
|
+
reading list.
|
|
319
316
|
|
|
320
317
|
Do not apply in-place contract changes by changing a `PlatformManagedMetaTable`
|
|
321
318
|
SQLAlchemy class and calling normal registration again. Shape-addressed
|
|
@@ -355,8 +352,8 @@ physical table and Alembic version table names. Use `suffix` for a namespace or
|
|
|
355
352
|
variant, for example `schema_table_name("msm", "positions", suffix="broker")`.
|
|
356
353
|
|
|
357
354
|
Do not ask users to construct backend migration payloads or call low-level
|
|
358
|
-
migration request models. The backend request shape is
|
|
359
|
-
|
|
355
|
+
migration request models. The backend request shape is internal; the
|
|
356
|
+
user-facing path is:
|
|
360
357
|
|
|
361
358
|
```bash
|
|
362
359
|
mainsequence migrations current --provider sdk_examples.migrations:migration
|
|
@@ -64,8 +64,9 @@ If the task depends on one of those areas, route it explicitly instead of guessi
|
|
|
64
64
|
|
|
65
65
|
## Read First
|
|
66
66
|
|
|
67
|
-
1. `
|
|
68
|
-
2.
|
|
67
|
+
1. `AGENTS.md`
|
|
68
|
+
2. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/time_index_table_updates/>
|
|
69
|
+
3. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/meta_tables/sqlalchemy/>
|
|
69
70
|
|
|
70
71
|
## Inputs This Skill Needs
|
|
71
72
|
|
|
@@ -61,16 +61,13 @@ This skill only reasons about access to deployed resources such as `ResourceRele
|
|
|
61
61
|
|
|
62
62
|
## Read First
|
|
63
63
|
|
|
64
|
-
1. `
|
|
65
|
-
2.
|
|
64
|
+
1. `AGENTS.md`
|
|
65
|
+
2. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/infrastructure/users_and_access/>
|
|
66
|
+
3. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/infrastructure/constants_and_secrets/>
|
|
66
67
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
and sharing. The runnable beginner walkthrough is maintained in the separate
|
|
71
|
-
canonical tutorial CodeRepository at
|
|
72
|
-
<https://github.com/mainsequence-projects/mainsequence-sdk-tutorial>; read it
|
|
73
|
-
only when a runnable end-to-end example is needed.
|
|
68
|
+
The pages above are the authoritative reference for access control and sharing.
|
|
69
|
+
If the task is specifically about a resource type, also read that resource's own
|
|
70
|
+
page from the documentation root at <https://mainsequence-sdk.github.io/mainsequence-sdk/>.
|
|
74
71
|
|
|
75
72
|
## Inputs This Skill Needs
|
|
76
73
|
|
|
@@ -57,10 +57,14 @@ This skill must not claim ownership of:
|
|
|
57
57
|
|
|
58
58
|
## Read First
|
|
59
59
|
|
|
60
|
-
1. `
|
|
61
|
-
2.
|
|
62
|
-
3.
|
|
63
|
-
|
|
60
|
+
1. `AGENTS.md`
|
|
61
|
+
2. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/infrastructure/scheduling_jobs/>
|
|
62
|
+
3. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/infrastructure/artifacts/>
|
|
63
|
+
4. <https://mainsequence-sdk.github.io/mainsequence-sdk/knowledge/infrastructure/owner_observability/> when inspecting logs or resource usage
|
|
64
|
+
|
|
65
|
+
If the task touches deployed FastAPI APIs, also use
|
|
66
|
+
`.agents/skills/mainsequence/application_surfaces/api_surfaces/SKILL.md` before
|
|
67
|
+
changing the operational workflow.
|
|
64
68
|
|
|
65
69
|
## Inputs This Skill Needs
|
|
66
70
|
|
|
@@ -5912,7 +5912,9 @@ def _meta_table_run_query_impl(
|
|
|
5912
5912
|
try:
|
|
5913
5913
|
payload = run_meta_table_query(meta_table_uid, sql, timeout=timeout)
|
|
5914
5914
|
except ApiError as e:
|
|
5915
|
-
|
|
5915
|
+
# The api layer already names the operation in the message; prefixing again
|
|
5916
|
+
# produces "MetaTable query failed: MetaTable query failed: ...".
|
|
5917
|
+
error(str(e))
|
|
5916
5918
|
raise typer.Exit(1) from e
|
|
5917
5919
|
|
|
5918
5920
|
ok = bool(payload.get("ok"))
|
|
@@ -5941,7 +5943,9 @@ def _time_index_table_run_query_impl(
|
|
|
5941
5943
|
try:
|
|
5942
5944
|
payload = run_time_index_table_query(table_uid, sql, timeout=timeout)
|
|
5943
5945
|
except ApiError as e:
|
|
5944
|
-
|
|
5946
|
+
# The api layer already names the operation in the message; prefixing again
|
|
5947
|
+
# produces "Time-index table query failed: Time-index table query failed: ...".
|
|
5948
|
+
error(str(e))
|
|
5945
5949
|
raise typer.Exit(1) from e
|
|
5946
5950
|
|
|
5947
5951
|
ok = bool(payload.get("ok"))
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/client/metatables/core.py
RENAMED
|
@@ -1904,35 +1904,18 @@ class MetaTable(
|
|
|
1904
1904
|
|
|
1905
1905
|
cls = type(self)
|
|
1906
1906
|
url = f"{cls.get_object_url().rstrip('/')}/{self._public_uid()}/run-query/"
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
|
|
1913
|
-
|
|
1914
|
-
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
)
|
|
1920
|
-
finally:
|
|
1921
|
-
if old_content_type is None:
|
|
1922
|
-
session.headers.pop("Content-Type", None)
|
|
1923
|
-
else:
|
|
1924
|
-
session.headers["Content-Type"] = old_content_type
|
|
1925
|
-
error_payload = {"data": sql}
|
|
1926
|
-
else:
|
|
1927
|
-
response = make_request(
|
|
1928
|
-
s=cls.build_session(),
|
|
1929
|
-
loaders=cls.LOADERS,
|
|
1930
|
-
r_type="POST",
|
|
1931
|
-
url=url,
|
|
1932
|
-
payload={"json": sql},
|
|
1933
|
-
time_out=timeout,
|
|
1934
|
-
)
|
|
1935
|
-
error_payload = {"json": sql}
|
|
1907
|
+
# The backend reads the request body as the raw SQL string and parses it with
|
|
1908
|
+
# DRF's JSON parser, for every MetaTable endpoint. Sending a JSON string is the
|
|
1909
|
+
# only transport it accepts; a text/plain body is rejected with HTTP 415.
|
|
1910
|
+
payload = {"json": sql}
|
|
1911
|
+
response = make_request(
|
|
1912
|
+
s=cls.build_session(),
|
|
1913
|
+
loaders=cls.LOADERS,
|
|
1914
|
+
r_type="POST",
|
|
1915
|
+
url=url,
|
|
1916
|
+
payload=payload,
|
|
1917
|
+
time_out=timeout,
|
|
1918
|
+
)
|
|
1936
1919
|
|
|
1937
1920
|
try:
|
|
1938
1921
|
data = response.json()
|
|
@@ -1942,7 +1925,7 @@ class MetaTable(
|
|
|
1942
1925
|
if isinstance(data, dict) and "ok" in data:
|
|
1943
1926
|
return data
|
|
1944
1927
|
|
|
1945
|
-
raise_for_response(response, payload=
|
|
1928
|
+
raise_for_response(response, payload=payload)
|
|
1946
1929
|
return response.json()
|
|
1947
1930
|
|
|
1948
1931
|
@classmethod
|
|
@@ -8197,6 +8197,40 @@ def test_time_index_table_run_query(cli_mod, runner, monkeypatch):
|
|
|
8197
8197
|
assert '"value": 1' in result.output
|
|
8198
8198
|
|
|
8199
8199
|
|
|
8200
|
+
def test_time_index_table_run_query_error_is_not_double_prefixed(cli_mod, runner, monkeypatch):
|
|
8201
|
+
"""The api layer already names the operation; the CLI must not prefix it again."""
|
|
8202
|
+
monkeypatch.setattr(cli_mod, "_require_login", lambda: {"username": "u"})
|
|
8203
|
+
|
|
8204
|
+
def _run_query(storage_uid, sql, *, timeout=None):
|
|
8205
|
+
raise cli_mod.ApiError(
|
|
8206
|
+
"Time-index table query failed: 415 POST "
|
|
8207
|
+
"http://127.0.0.1:8000/api/v1/time-index-meta-tables/abc/run-query/: "
|
|
8208
|
+
'Unsupported media type "text/plain" in request.'
|
|
8209
|
+
)
|
|
8210
|
+
|
|
8211
|
+
monkeypatch.setattr(cli_mod, "run_time_index_table_query", _run_query)
|
|
8212
|
+
|
|
8213
|
+
result = runner.invoke(
|
|
8214
|
+
cli_mod.app,
|
|
8215
|
+
["time-index-table", "run_query", "abc", "SELECT 1 AS value"],
|
|
8216
|
+
)
|
|
8217
|
+
assert result.exit_code == 1
|
|
8218
|
+
assert result.output.count("Time-index table query failed:") == 1
|
|
8219
|
+
|
|
8220
|
+
|
|
8221
|
+
def test_meta_table_run_query_error_is_not_double_prefixed(cli_mod, runner, monkeypatch):
|
|
8222
|
+
monkeypatch.setattr(cli_mod, "_require_login", lambda: {"username": "u"})
|
|
8223
|
+
|
|
8224
|
+
def _run_query(meta_table_uid, sql, *, timeout=None):
|
|
8225
|
+
raise cli_mod.ApiError("MetaTable query failed: boom")
|
|
8226
|
+
|
|
8227
|
+
monkeypatch.setattr(cli_mod, "run_meta_table_query", _run_query)
|
|
8228
|
+
|
|
8229
|
+
result = runner.invoke(cli_mod.app, ["meta-table", "run_query", "abc", "SELECT 1"])
|
|
8230
|
+
assert result.exit_code == 1
|
|
8231
|
+
assert result.output.count("MetaTable query failed:") == 1
|
|
8232
|
+
|
|
8233
|
+
|
|
8200
8234
|
def test_meta_table_run_query(cli_mod, runner, monkeypatch):
|
|
8201
8235
|
captured = {}
|
|
8202
8236
|
monkeypatch.setattr(cli_mod, "_require_login", lambda: {"username": "u"})
|
|
@@ -24,10 +24,14 @@ STREAMLIT_REMOVAL_LINK_PATHS = {
|
|
|
24
24
|
Path("docs/index.md"),
|
|
25
25
|
}
|
|
26
26
|
SKILL_ROOT = REPOSITORY_ROOT / "agent_scaffold" / "skills"
|
|
27
|
-
|
|
28
|
-
#
|
|
29
|
-
#
|
|
30
|
-
|
|
27
|
+
DOCUMENTATION_SITE_ROOT = "https://mainsequence-sdk.github.io/mainsequence-sdk"
|
|
28
|
+
# The wheel ships `agent_scaffold/skills` and no `docs/`, and the CLI copies those
|
|
29
|
+
# skills into a user's CodeRepository under `.agents/skills/<namespace>/`. There,
|
|
30
|
+
# `docs/` is that repository's own directory, so a skill that names an SDK
|
|
31
|
+
# documentation page by repository-relative path names a file the agent reading it
|
|
32
|
+
# cannot open. Skills cite the published documentation site instead.
|
|
33
|
+
SKILL_REPOSITORY_DOCUMENTATION_PATH = re.compile(r"`(docs/[A-Za-z0-9_./-]+\.md)`")
|
|
34
|
+
SKILL_DOCUMENTATION_URL = re.compile(re.escape(DOCUMENTATION_SITE_ROOT) + r"(/[A-Za-z0-9_./-]*)")
|
|
31
35
|
# Skills are copied into a CodeRepository under `.agents/skills/<namespace>/`, so
|
|
32
36
|
# a cross-skill reference maps back to a shipped `agent_scaffold/skills` path.
|
|
33
37
|
SKILL_CROSS_REFERENCE = re.compile(r"`\.agents/skills/[A-Za-z0-9_]+/([A-Za-z0-9_./-]+/SKILL\.md)`")
|
|
@@ -54,8 +58,33 @@ RETIRED_PUBLIC_IDENTIFIERS = {
|
|
|
54
58
|
}
|
|
55
59
|
|
|
56
60
|
|
|
57
|
-
def
|
|
58
|
-
|
|
61
|
+
def _shipped_scaffold_documents() -> tuple[Path, ...]:
|
|
62
|
+
"""Every Markdown file the wheel ships under `agent_scaffold`.
|
|
63
|
+
|
|
64
|
+
`AGENTS.md` ships beside the skills and several skills make it their first
|
|
65
|
+
mandatory read, so it carries the same reference obligations they do.
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
return tuple(sorted((REPOSITORY_ROOT / "agent_scaffold").rglob("*.md")))
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def _documentation_page_for_url_path(url_path: str) -> Path | None:
|
|
72
|
+
"""Resolve a documentation-site URL path to the `docs/` page that renders it.
|
|
73
|
+
|
|
74
|
+
MkDocs serves directory URLs, so `/knowledge/meta_tables/migrations/` renders
|
|
75
|
+
`docs/knowledge/meta_tables/migrations.md` and `/knowledge/meta_tables/`
|
|
76
|
+
renders that directory's `index.md`. The transform is pure, so a skill's
|
|
77
|
+
documentation links are checkable without reaching the network.
|
|
78
|
+
"""
|
|
79
|
+
|
|
80
|
+
relative = url_path.strip("/")
|
|
81
|
+
if not relative:
|
|
82
|
+
return REPOSITORY_ROOT / "docs" / "index.md"
|
|
83
|
+
candidates = (
|
|
84
|
+
REPOSITORY_ROOT / "docs" / f"{relative}.md",
|
|
85
|
+
REPOSITORY_ROOT / "docs" / relative / "index.md",
|
|
86
|
+
)
|
|
87
|
+
return next((candidate for candidate in candidates if candidate.is_file()), None)
|
|
59
88
|
|
|
60
89
|
|
|
61
90
|
def _documentation_files() -> tuple[Path, ...]:
|
|
@@ -134,27 +163,48 @@ def test_current_documentation_does_not_advertise_streamlit_support(path: Path)
|
|
|
134
163
|
|
|
135
164
|
@pytest.mark.parametrize(
|
|
136
165
|
"path",
|
|
137
|
-
|
|
166
|
+
_shipped_scaffold_documents(),
|
|
138
167
|
ids=lambda path: str(path.relative_to(REPOSITORY_ROOT)),
|
|
139
168
|
)
|
|
140
|
-
def
|
|
169
|
+
def test_skills_do_not_cite_repository_relative_documentation_paths(path: Path) -> None:
|
|
141
170
|
relative_path = path.relative_to(REPOSITORY_ROOT)
|
|
142
171
|
text = path.read_text(encoding="utf-8")
|
|
143
172
|
|
|
144
|
-
|
|
173
|
+
repository_paths = sorted(set(SKILL_REPOSITORY_DOCUMENTATION_PATH.findall(text)))
|
|
174
|
+
|
|
175
|
+
assert not repository_paths, (
|
|
176
|
+
f"{relative_path} cites SDK documentation by repository-relative path: "
|
|
177
|
+
f"{repository_paths}. The wheel ships no `docs/`, so cite "
|
|
178
|
+
f"{DOCUMENTATION_SITE_ROOT}/... instead."
|
|
179
|
+
)
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
@pytest.mark.parametrize(
|
|
183
|
+
"path",
|
|
184
|
+
_shipped_scaffold_documents(),
|
|
185
|
+
ids=lambda path: str(path.relative_to(REPOSITORY_ROOT)),
|
|
186
|
+
)
|
|
187
|
+
def test_skill_documentation_urls_render_an_existing_page(path: Path) -> None:
|
|
188
|
+
relative_path = path.relative_to(REPOSITORY_ROOT)
|
|
189
|
+
text = path.read_text(encoding="utf-8")
|
|
190
|
+
|
|
191
|
+
unrendered = sorted(
|
|
145
192
|
{
|
|
146
|
-
|
|
147
|
-
for
|
|
148
|
-
if
|
|
193
|
+
url_path
|
|
194
|
+
for url_path in SKILL_DOCUMENTATION_URL.findall(text)
|
|
195
|
+
if _documentation_page_for_url_path(url_path) is None
|
|
149
196
|
}
|
|
150
197
|
)
|
|
151
198
|
|
|
152
|
-
assert not
|
|
199
|
+
assert not unrendered, (
|
|
200
|
+
f"{relative_path} links documentation-site paths that no `docs/` page "
|
|
201
|
+
f"renders: {unrendered}"
|
|
202
|
+
)
|
|
153
203
|
|
|
154
204
|
|
|
155
205
|
@pytest.mark.parametrize(
|
|
156
206
|
"path",
|
|
157
|
-
|
|
207
|
+
_shipped_scaffold_documents(),
|
|
158
208
|
ids=lambda path: str(path.relative_to(REPOSITORY_ROOT)),
|
|
159
209
|
)
|
|
160
210
|
def test_skill_cross_references_resolve(path: Path) -> None:
|
|
@@ -803,7 +803,7 @@ def test_output_table_delete_after_date_accepts_index_coordinates(monkeypatch):
|
|
|
803
803
|
}
|
|
804
804
|
|
|
805
805
|
|
|
806
|
-
def
|
|
806
|
+
def test_output_table_run_query_posts_json_sql(monkeypatch):
|
|
807
807
|
from mainsequence.client import metatables as models_metatables
|
|
808
808
|
|
|
809
809
|
captured = {}
|
|
@@ -858,10 +858,10 @@ def test_output_table_run_query_posts_plain_text_sql(monkeypatch):
|
|
|
858
858
|
assert result["ok"] is True
|
|
859
859
|
assert result["dynamic_table_id"] == 714
|
|
860
860
|
assert captured == {
|
|
861
|
-
"headers": {"Content-Type": "
|
|
861
|
+
"headers": {"Content-Type": "application/json"},
|
|
862
862
|
"r_type": "POST",
|
|
863
863
|
"url": f"{models_metatables.TimeIndexMetaTable.get_object_url()}/714/run-query/",
|
|
864
|
-
"payload": {"
|
|
864
|
+
"payload": {"json": "SELECT * FROM my_table LIMIT 100"},
|
|
865
865
|
"timeout": 30,
|
|
866
866
|
}
|
|
867
867
|
assert session.headers == {"Content-Type": "application/json"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/cli/code_repository_status.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/client/agent_runtime_models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/client/compute_validation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/client/metatables/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/code_repository_context.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/code_repository_skills.py
RENAMED
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/instrumentation/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/compiled_sql/v1.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/future_registry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/migrations/alembic.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/migrations/env.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/pydantic_metadata.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/meta_tables/schema_names.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence/repository_identity_security.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/mainsequence.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_canonical_api_route_contract.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_code_repository_branch_contract.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_code_repository_runtime_context.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_duckdb_interface_dimensions.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_environment_resource_context.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_environment_response_contracts.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_meta_tables_client_models.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_meta_tables_sqlalchemy_contracts.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_models_user_request_bound_auth.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_notification_uid_contract.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_source_table_configuration.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_sqlite_interface_dimensions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_time_index_table_update_flow.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_time_index_table_update_hard_cut.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_tolerant_response_reading.py
RENAMED
|
File without changes
|
{mainsequence-8.1.20.dev7 → mainsequence-8.1.20.dev9}/tests/test_update_runner_uid_runtime.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|