mainsequence 4.2.14__tar.gz → 4.2.25__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-4.2.14/mainsequence.egg-info → mainsequence-4.2.25}/PKG-INFO +2 -2
- {mainsequence-4.2.14 → mainsequence-4.2.25}/agent_scaffold/skills/data_publishing/data_nodes/SKILL.md +7 -4
- {mainsequence-4.2.14 → mainsequence-4.2.25}/agent_scaffold/skills/data_publishing/meta_tables/SKILL.md +12 -5
- mainsequence-4.2.25/mainsequence/cli/migrations.py +866 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/client/metatables/core.py +348 -4
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/meta_tables/migrations.py +584 -205
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/meta_tables/sqlalchemy_contracts.py +27 -183
- {mainsequence-4.2.14 → mainsequence-4.2.25/mainsequence.egg-info}/PKG-INFO +2 -2
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence.egg-info/requires.txt +1 -1
- {mainsequence-4.2.14 → mainsequence-4.2.25}/pyproject.toml +2 -2
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_cli_migrations.py +186 -40
- mainsequence-4.2.25/tests/test_meta_table_migrations.py +1206 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_meta_tables_client_models.py +216 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_meta_tables_sqlalchemy_contracts.py +60 -49
- mainsequence-4.2.14/mainsequence/cli/migrations.py +0 -514
- mainsequence-4.2.14/tests/test_meta_table_migrations.py +0 -647
- {mainsequence-4.2.14 → mainsequence-4.2.25}/LICENSE +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/README.md +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/agent_scaffold/AGENTS.md +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/agent_scaffold/skills/a2a_communication/SKILL.md +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/agent_scaffold/skills/command_center/adapter_from_api/SKILL.md +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/agent_scaffold/skills/command_center/api_mock_prototyping/SKILL.md +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/agent_scaffold/skills/command_center/app_components/SKILL.md +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/agent_scaffold/skills/command_center/connections/SKILL.md +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/agent_scaffold/skills/command_center/workspace_analysis/SKILL.md +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/agent_scaffold/skills/command_center/workspace_builder/SKILL.md +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/agent_scaffold/skills/command_center/workspace_design/SKILL.md +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/agent_scaffold/skills/dashboards/streamlit/SKILL.md +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/agent_scaffold/skills/data_access/exploration/SKILL.md +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/agent_scaffold/skills/ms-markets/SKILL.md +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/agent_scaffold/skills/project_builder/SKILL.md +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/agent_scaffold/skills/project_to_agent/SKILL.md +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/__init__.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/__main__.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/bootstrap.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/cli/__init__.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/cli/api.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/cli/browser_auth.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/cli/cli.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/cli/config.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/cli/docker_utils.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/cli/doctor.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/cli/local_ops.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/cli/model_filters.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/cli/project_status.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/cli/pydantic_cli.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/cli/sdk_utils.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/cli/ssh_utils.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/cli/ui.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/client/__init__.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/client/agent_runtime_models.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/client/base.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/client/client.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/client/command_center/__init__.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/client/command_center/app_component.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/client/command_center/connections.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/client/command_center/data_models.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/client/command_center/workspace.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/client/command_center/workspace_snapshot.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/client/compute_validation.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/client/data_sources_interfaces/local_paths.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/client/data_sources_interfaces/sqlite.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/client/dtype_codec.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/client/exceptions.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/client/fastapi/__init__.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/client/fastapi/auth.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/client/metatables/__init__.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/client/models_foundry.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/client/models_helpers.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/client/models_user.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/client/utils.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/defaults.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/instrumentation/__init__.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/instrumentation/utils.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/logconf.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/meta_tables/__init__.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/meta_tables/__main__.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/meta_tables/compiled_sql/__init__.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/meta_tables/compiled_sql/v1.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/meta_tables/data_nodes/__init__.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/meta_tables/data_nodes/build_operations.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/meta_tables/data_nodes/data_nodes.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/meta_tables/data_nodes/models.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/meta_tables/data_nodes/namespacing.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/meta_tables/data_nodes/persist_managers.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/meta_tables/data_nodes/run_operations.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/meta_tables/data_nodes/utils.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/meta_tables/future_registry.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/meta_tables/hashing.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/meta_tables/pydantic_metadata.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence/runtime_flags.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence.egg-info/SOURCES.txt +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence.egg-info/dependency_links.txt +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence.egg-info/entry_points.txt +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/mainsequence.egg-info/top_level.txt +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/setup.cfg +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_auth_precedence.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_build_operations_hashing.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_cli.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_cli_browser_auth.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_client.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_command_center_app_component_models.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_command_center_data_models.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_command_center_models.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_data_access_mixin_dimension_audit.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_data_node_storage_dimension_queries.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_data_node_update_flow.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_dependency_extras.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_duckdb_interface_dimensions.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_filter_normalization.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_logconf.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_models_user_request_bound_auth.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_pod_project_resolution.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_project_batch_jobs_from_file.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_run_configuration.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_secret_client_model.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_source_table_configuration.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_sqlite_interface_dimensions.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_update_runner_uid_runtime.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_update_statistics.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_update_uid_guards.py +0 -0
- {mainsequence-4.2.14 → mainsequence-4.2.25}/tests/test_workspace_snapshot.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mainsequence
|
|
3
|
-
Version: 4.2.
|
|
3
|
+
Version: 4.2.25
|
|
4
4
|
Summary: Main Sequence SDK
|
|
5
5
|
Author-email: Main Sequence GmbH <dev@main-sequence.io>
|
|
6
6
|
License: MainSequence GmbH SDK License Agreement
|
|
@@ -68,7 +68,7 @@ Requires-Dist: pydantic
|
|
|
68
68
|
Requires-Dist: pytz
|
|
69
69
|
Requires-Dist: pyyaml
|
|
70
70
|
Requires-Dist: requests
|
|
71
|
-
Requires-Dist: sqlalchemy
|
|
71
|
+
Requires-Dist: sqlalchemy<3,>=2
|
|
72
72
|
Requires-Dist: structlog
|
|
73
73
|
Requires-Dist: tqdm
|
|
74
74
|
Requires-Dist: typer
|
|
@@ -148,7 +148,7 @@ class Base(DeclarativeBase):
|
|
|
148
148
|
|
|
149
149
|
class PricesTable(PlatformTimeIndexMetaData, Base):
|
|
150
150
|
__metatable_namespace__ = "<domain_namespace>"
|
|
151
|
-
__metatable_identifier__ = "<table_identifier>"
|
|
151
|
+
__metatable_identifier__ = "<project_name>.<table_identifier>"
|
|
152
152
|
__metatable_extra_hash_components__ = {"storage_name": "<stable_storage_name>"}
|
|
153
153
|
__metatable_description__ = (
|
|
154
154
|
"Daily close prices keyed by asset unique identifier for portfolio and "
|
|
@@ -387,9 +387,9 @@ DataNode storage table needs a platform-managed FK, use
|
|
|
387
387
|
`ForeignKey(Target.__table__.c.uid)`, table fullnames, or explicit target UID
|
|
388
388
|
maps in DataNode examples.
|
|
389
389
|
|
|
390
|
-
Do not ask users to name these foreign keys.
|
|
391
|
-
|
|
392
|
-
|
|
390
|
+
Do not ask users to name these foreign keys. Platform-managed
|
|
391
|
+
`MetaTableForeignKey(...)` contracts store logical relationships only. Alembic,
|
|
392
|
+
SQLAlchemy, and the database own physical FK constraint names.
|
|
393
393
|
|
|
394
394
|
Registration of the storage class follows the MetaTable migration lifecycle.
|
|
395
395
|
Migration tooling recursively resolves/registers unresolved FK target model
|
|
@@ -402,6 +402,9 @@ Do not add DataNode configuration fields just to mutate storage metadata.
|
|
|
402
402
|
|
|
403
403
|
Production-quality table identifiers, descriptions, labels, column docs, and
|
|
404
404
|
foreign-key metadata belong to the storage class/MetaTable registration path.
|
|
405
|
+
Prefix explicit table identifiers, explicit physical table names, and Alembic
|
|
406
|
+
version table names with the project or package name rather than using bare
|
|
407
|
+
names that can collide across projects.
|
|
405
408
|
|
|
406
409
|
Do not put schema or published table metadata on the DataNode configuration.
|
|
407
410
|
|
|
@@ -152,12 +152,17 @@ table. Do not use it for labels, descriptions, runtime options, test isolation,
|
|
|
152
152
|
backend UIDs, data-source UIDs, or updater scope. Use `hash_namespace` for test
|
|
153
153
|
or experiment isolation.
|
|
154
154
|
|
|
155
|
+
Prefix explicit table identifiers, explicit physical table names, and Alembic
|
|
156
|
+
version table names with the project or package name. Bare names such as
|
|
157
|
+
`Account`, `Asset`, or `alembic_version` can collide across projects sharing an
|
|
158
|
+
organization or database schema.
|
|
159
|
+
|
|
155
160
|
Register through the class API:
|
|
156
161
|
|
|
157
162
|
```python
|
|
158
163
|
class Account(PlatformManagedMetaTable, Base):
|
|
159
164
|
__metatable_namespace__ = "sdk-examples"
|
|
160
|
-
__metatable_identifier__ = "Account"
|
|
165
|
+
__metatable_identifier__ = "sdk_examples.Account"
|
|
161
166
|
__metatable_extra_hash_components__ = {"storage_name": "account"}
|
|
162
167
|
__metatable_description__ = (
|
|
163
168
|
"Customer account master records used to scope balances, holdings, and "
|
|
@@ -222,10 +227,9 @@ tooling resolves/registers unresolved target model classes, stores each
|
|
|
222
227
|
returned `MetaTable` in a local process registry keyed by `storage_hash`, and
|
|
223
228
|
uses the target `MetaTable.uid` in the child FK contract.
|
|
224
229
|
|
|
225
|
-
Do not require users to provide foreign-key names.
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
column is attached to the SQLAlchemy table.
|
|
230
|
+
Do not require users to provide foreign-key names. Platform-managed
|
|
231
|
+
`MetaTableForeignKey(...)` contracts store logical relationships only. Alembic,
|
|
232
|
+
SQLAlchemy, and the database own physical FK constraint names.
|
|
229
233
|
|
|
230
234
|
Use this pattern:
|
|
231
235
|
|
|
@@ -300,6 +304,9 @@ global identity. If it does not, the SDK derives the identifier from
|
|
|
300
304
|
`[project].name` in `pyproject.toml` plus
|
|
301
305
|
`<model.__module__>.<model.__qualname__>`. Pin an explicit identifier when a
|
|
302
306
|
class is renamed or moved but must keep the same platform identity.
|
|
307
|
+
When declaring an explicit identifier, explicit physical table name, or Alembic
|
|
308
|
+
version table name, prefix it with the project or package name rather than using
|
|
309
|
+
a bare table name.
|
|
303
310
|
|
|
304
311
|
Do not ask users to construct backend migration payloads, call low-level
|
|
305
312
|
migration request models, or use SDK helper functions directly. The backend
|