mainsequence 3.18.3__tar.gz → 3.18.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.
- {mainsequence-3.18.3 → mainsequence-3.18.4}/PKG-INFO +1 -1
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/cli.py +75 -24
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/config.py +2 -2
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence.egg-info/PKG-INFO +1 -1
- {mainsequence-3.18.3 → mainsequence-3.18.4}/pyproject.toml +1 -1
- {mainsequence-3.18.3 → mainsequence-3.18.4}/LICENSE +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/README.md +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/AGENTS.md +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/command_center/api_mock_prototyping/SKILL.md +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/command_center/app_components/SKILL.md +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/command_center/workspace_analysis/SKILL.md +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/command_center/workspace_builder/SKILL.md +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/dashboards/streamlit/SKILL.md +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/data_access/exploration/SKILL.md +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/data_publishing/data_nodes/SKILL.md +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/data_publishing/simple_tables/SKILL.md +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/maintenance/local_journal/SKILL.md +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/markets_platform/assets_and_translation/SKILL.md +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/markets_platform/instruments_and_pricing/SKILL.md +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/markets_platform/virtualfundbuilder/SKILL.md +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/project_builder/SKILL.md +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/__main__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/bootstrap.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/api.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/browser_auth.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/docker_utils.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/doctor.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/local_ops.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/model_filters.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/project_status.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/pydantic_cli.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/sdk_utils.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/ssh_utils.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/cli/ui.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/agent.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/agent_runtime_models.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/base.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/client.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/command_center/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/command_center/app_component.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/command_center/data_models.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/command_center/workspace.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/command_center/workspace_snapshot.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/data_sources_interfaces/timescale.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/exceptions.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/fastapi/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/fastapi/auth.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/models_helpers.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/models_simple_tables.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/models_tdag.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/models_user.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/models_vam.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/utils.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/compute_validation.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/assets/config.toml +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/assets/favicon.png +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/assets/image_1_base64.txt +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/assets/image_2_base64.txt +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/assets/image_3_base64.txt +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/assets/image_4_base64.txt +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/assets/image_5_base64.txt +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/assets/logo.png +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/components/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/components/asset_select.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/components/date_settings.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/components/logged_user.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/core/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/core/theme.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/instruments/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/instruments/streamlit_form_factory.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/pages/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/scaffold.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instrumentation/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instrumentation/utils.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/data_interface/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/data_interface/data_interface.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/instruments/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/instruments/base_instrument.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/instruments/bond.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/instruments/callability.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/instruments/interest_rate_swap.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/instruments/json_codec.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/instruments/position.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/instruments/ql_fields.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/interest_rates/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/interest_rates/etl/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/interest_rates/etl/curve_codec.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/interest_rates/etl/nodes.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/interest_rates/etl/registry.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/pricing_models/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/pricing_models/bond_pricer.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/pricing_models/indices.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/pricing_models/indices_builders.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/pricing_models/swap_pricer.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/settings.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/utils.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/logconf.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/runtime_flags.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/__main__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/base_persist_managers.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/config.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/configuration_models.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/data_nodes/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/data_nodes/build_operations.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/data_nodes/data_nodes.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/data_nodes/filters.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/data_nodes/models.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/data_nodes/namespacing.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/data_nodes/persist_managers.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/data_nodes/run_operations.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/data_nodes/utils.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/filters.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/future_registry.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/pydantic_metadata.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/simple_tables/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/simple_tables/filters.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/simple_tables/models.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/simple_tables/persist_managers.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/simple_tables/schema.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/simple_tables/table_nodes.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/utils.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/contrib/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/contrib/data_nodes/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/contrib/data_nodes/external_weights.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/contrib/data_nodes/intraday_trend.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/contrib/data_nodes/market_cap.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/contrib/data_nodes/mock_signal.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/contrib/data_nodes/portfolio_replicator.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/contrib/prices/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/contrib/prices/data_nodes.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/contrib/prices/utils.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/contrib/rebalance_strategies/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/contrib/rebalance_strategies/rebalance_strategies.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/enums.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/models.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/portfolio_nodes.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/resource_factory/__init__.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/resource_factory/rebalance_factory.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/resource_factory/signal_factory.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/utils.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence.egg-info/SOURCES.txt +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence.egg-info/dependency_links.txt +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence.egg-info/entry_points.txt +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence.egg-info/requires.txt +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence.egg-info/top_level.txt +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/setup.cfg +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_auth_precedence.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_build_operations_hashing.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_cli.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_cli_browser_auth.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_client.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_command_center_app_component_models.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_command_center_models.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_dependency_extras.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_filter_normalization.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_instruments.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_logconf.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_logged_user_components.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_models_user_request_bound_auth.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_pod_project_resolution.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_project_batch_jobs_from_file.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_run_configuration.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_simple_tables_configuration_hashing.py +0 -0
- {mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_simple_tables_persistence.py +0 -0
|
@@ -226,6 +226,7 @@ from .ssh_utils import (
|
|
|
226
226
|
from .ui import error, info, print_kv, print_table, status, success, warn
|
|
227
227
|
|
|
228
228
|
JSON_OUTPUT_CONTEXT_KEY = "json_output"
|
|
229
|
+
LOGIN_DEFAULT_BACKEND_URL = "https://api.main-sequence.io"
|
|
229
230
|
|
|
230
231
|
|
|
231
232
|
class MainSequenceGroup(typer.core.TyperGroup):
|
|
@@ -2056,6 +2057,7 @@ def login(
|
|
|
2056
2057
|
Persists auth tokens in the active CLI auth store so subsequent
|
|
2057
2058
|
CLI invocations can run without re-authentication. Backend/base-folder
|
|
2058
2059
|
overrides passed to `login` are scoped to the current terminal session.
|
|
2060
|
+
When no backend is provided, login defaults to `https://api.main-sequence.io`.
|
|
2059
2061
|
|
|
2060
2062
|
Interactive login uses browser-based authentication and finishes with
|
|
2061
2063
|
standard JWT access/refresh tokens persisted by the CLI.
|
|
@@ -2119,7 +2121,8 @@ def login(
|
|
|
2119
2121
|
if cfg.normalize_backend_url(backend) != cfg.normalize_backend_url(backend_option):
|
|
2120
2122
|
error("Pass backend either positionally or with --backend, not both.")
|
|
2121
2123
|
raise typer.Exit(1)
|
|
2122
|
-
|
|
2124
|
+
explicit_backend_input = backend_option if backend_option is not None else backend
|
|
2125
|
+
effective_backend_input = explicit_backend_input if explicit_backend_input is not None else LOGIN_DEFAULT_BACKEND_URL
|
|
2123
2126
|
|
|
2124
2127
|
if projects_base and projects_base_option:
|
|
2125
2128
|
if cfg.normalize_mainsequence_path(projects_base) != cfg.normalize_mainsequence_path(projects_base_option):
|
|
@@ -2138,24 +2141,23 @@ def login(
|
|
|
2138
2141
|
raise typer.Exit(1)
|
|
2139
2142
|
|
|
2140
2143
|
current_backend = cfg.backend_url()
|
|
2141
|
-
normalized_backend = cfg.normalize_backend_url(effective_backend_input)
|
|
2144
|
+
normalized_backend = cfg.normalize_backend_url(effective_backend_input)
|
|
2142
2145
|
|
|
2143
|
-
if
|
|
2146
|
+
if explicit_backend_input is not None and normalized_backend != current_backend:
|
|
2144
2147
|
if not effective_projects_base_input:
|
|
2145
2148
|
error("When using a different backend, you must also specify a projects base folder.")
|
|
2146
2149
|
raise typer.Exit(1)
|
|
2147
2150
|
|
|
2148
2151
|
previous_backend_override = os.environ.get("MAIN_SEQUENCE_BACKEND_URL")
|
|
2149
|
-
|
|
2150
|
-
os.environ["MAIN_SEQUENCE_BACKEND_URL"] = normalized_backend
|
|
2152
|
+
os.environ["MAIN_SEQUENCE_BACKEND_URL"] = normalized_backend
|
|
2151
2153
|
|
|
2152
2154
|
try:
|
|
2153
2155
|
if using_runtime_credential:
|
|
2154
|
-
access = _exchange_runtime_credential_for_cli_login(normalized_backend
|
|
2156
|
+
access = _exchange_runtime_credential_for_cli_login(normalized_backend)
|
|
2155
2157
|
persisted = cfg.save_tokens("", access, "")
|
|
2156
2158
|
res = {
|
|
2157
2159
|
"username": "",
|
|
2158
|
-
"backend": normalized_backend
|
|
2160
|
+
"backend": normalized_backend,
|
|
2159
2161
|
"access": access,
|
|
2160
2162
|
"refresh": "",
|
|
2161
2163
|
"persisted": bool(persisted),
|
|
@@ -2167,7 +2169,7 @@ def login(
|
|
|
2167
2169
|
persisted = cfg.save_tokens("", (access_token or "").strip(), (refresh_token or "").strip())
|
|
2168
2170
|
res = {
|
|
2169
2171
|
"username": "",
|
|
2170
|
-
"backend": normalized_backend
|
|
2172
|
+
"backend": normalized_backend,
|
|
2171
2173
|
"access": (access_token or "").strip(),
|
|
2172
2174
|
"refresh": (refresh_token or "").strip(),
|
|
2173
2175
|
"persisted": bool(persisted),
|
|
@@ -2196,7 +2198,7 @@ def login(
|
|
|
2196
2198
|
|
|
2197
2199
|
res = {
|
|
2198
2200
|
"username": username,
|
|
2199
|
-
"backend": normalized_backend
|
|
2201
|
+
"backend": normalized_backend,
|
|
2200
2202
|
"access": access,
|
|
2201
2203
|
"refresh": refresh,
|
|
2202
2204
|
"persisted": bool(persisted),
|
|
@@ -2209,19 +2211,15 @@ def login(
|
|
|
2209
2211
|
error(f"Login failed: {e}")
|
|
2210
2212
|
raise typer.Exit(1) from e
|
|
2211
2213
|
finally:
|
|
2212
|
-
if
|
|
2213
|
-
|
|
2214
|
-
|
|
2215
|
-
|
|
2216
|
-
os.environ["MAIN_SEQUENCE_BACKEND_URL"] = previous_backend_override
|
|
2214
|
+
if previous_backend_override is None:
|
|
2215
|
+
os.environ.pop("MAIN_SEQUENCE_BACKEND_URL", None)
|
|
2216
|
+
else:
|
|
2217
|
+
os.environ["MAIN_SEQUENCE_BACKEND_URL"] = previous_backend_override
|
|
2217
2218
|
|
|
2218
|
-
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
|
|
2222
|
-
)
|
|
2223
|
-
else:
|
|
2224
|
-
cfg.clear_session_overrides()
|
|
2219
|
+
cfg.set_session_overrides(
|
|
2220
|
+
backend_url=normalized_backend,
|
|
2221
|
+
mainsequence_path=effective_projects_base_input,
|
|
2222
|
+
)
|
|
2225
2223
|
|
|
2226
2224
|
if export:
|
|
2227
2225
|
access = (res.get("access") or "").replace('"', '\\"')
|
|
@@ -2875,7 +2873,7 @@ def settings_set_base(path: str = typer.Argument(..., help="New projects base fo
|
|
|
2875
2873
|
|
|
2876
2874
|
@settings.command("set-backend")
|
|
2877
2875
|
def settings_set_backend(
|
|
2878
|
-
url: str = typer.Argument(..., help="Backend base URL, e.g. https://api.main-sequence.
|
|
2876
|
+
url: str = typer.Argument(..., help="Backend base URL, e.g. https://api.main-sequence.io")
|
|
2879
2877
|
):
|
|
2880
2878
|
"""
|
|
2881
2879
|
Set backend base URL used by CLI API calls.
|
|
@@ -2883,12 +2881,12 @@ def settings_set_backend(
|
|
|
2883
2881
|
Parameters
|
|
2884
2882
|
----------
|
|
2885
2883
|
url:
|
|
2886
|
-
Backend base URL (for example `https://api.main-sequence.
|
|
2884
|
+
Backend base URL (for example `https://api.main-sequence.io`).
|
|
2887
2885
|
|
|
2888
2886
|
Examples
|
|
2889
2887
|
--------
|
|
2890
2888
|
```bash
|
|
2891
|
-
mainsequence settings set-backend https://api.main-sequence.
|
|
2889
|
+
mainsequence settings set-backend https://api.main-sequence.io
|
|
2892
2890
|
```
|
|
2893
2891
|
"""
|
|
2894
2892
|
out = cfg.set_backend_url(url)
|
|
@@ -2897,6 +2895,59 @@ def settings_set_backend(
|
|
|
2897
2895
|
success(f"Backend URL set to: {out.get('backend_url')}")
|
|
2898
2896
|
|
|
2899
2897
|
|
|
2898
|
+
def _settings_reset_impl() -> dict:
|
|
2899
|
+
"""
|
|
2900
|
+
Reset persistent CLI settings to standard defaults and clear session overrides.
|
|
2901
|
+
"""
|
|
2902
|
+
standard_backend = cfg.normalize_backend_url(LOGIN_DEFAULT_BACKEND_URL)
|
|
2903
|
+
standard_base = cfg.normalize_mainsequence_path(cfg.DEFAULTS.get("mainsequence_path"))
|
|
2904
|
+
pathlib.Path(standard_base).mkdir(parents=True, exist_ok=True)
|
|
2905
|
+
out = cfg.set_config(
|
|
2906
|
+
{
|
|
2907
|
+
"backend_url": standard_backend,
|
|
2908
|
+
"mainsequence_path": standard_base,
|
|
2909
|
+
}
|
|
2910
|
+
)
|
|
2911
|
+
cfg.clear_session_overrides()
|
|
2912
|
+
return out
|
|
2913
|
+
|
|
2914
|
+
|
|
2915
|
+
@settings.command("reset")
|
|
2916
|
+
def settings_reset():
|
|
2917
|
+
"""
|
|
2918
|
+
Reset CLI settings to standard defaults.
|
|
2919
|
+
|
|
2920
|
+
Resets backend URL to `https://api.main-sequence.io`, base folder to the
|
|
2921
|
+
default `~/mainsequence`, and clears current terminal session overrides.
|
|
2922
|
+
|
|
2923
|
+
Examples
|
|
2924
|
+
--------
|
|
2925
|
+
```bash
|
|
2926
|
+
mainsequence settings reset
|
|
2927
|
+
```
|
|
2928
|
+
"""
|
|
2929
|
+
out = _settings_reset_impl()
|
|
2930
|
+
if _emit_json(out):
|
|
2931
|
+
return
|
|
2932
|
+
success("Settings reset to standard defaults.")
|
|
2933
|
+
info(f"Backend URL: {out.get('backend_url')}")
|
|
2934
|
+
info(f"Projects base folder: {out.get('mainsequence_path')}")
|
|
2935
|
+
|
|
2936
|
+
|
|
2937
|
+
@settings.command("refresh")
|
|
2938
|
+
def settings_refresh():
|
|
2939
|
+
"""
|
|
2940
|
+
Alias for `settings reset`.
|
|
2941
|
+
|
|
2942
|
+
Examples
|
|
2943
|
+
--------
|
|
2944
|
+
```bash
|
|
2945
|
+
mainsequence settings refresh
|
|
2946
|
+
```
|
|
2947
|
+
"""
|
|
2948
|
+
settings_reset()
|
|
2949
|
+
|
|
2950
|
+
|
|
2900
2951
|
# ---------- sdk group ----------
|
|
2901
2952
|
|
|
2902
2953
|
|
|
@@ -62,7 +62,7 @@ KEYCHAIN_SERVICE = "MainSequenceCLI.auth"
|
|
|
62
62
|
KEYCHAIN_ACCOUNT = "default"
|
|
63
63
|
|
|
64
64
|
DEFAULTS = {
|
|
65
|
-
"backend_url": os.environ.get("MAIN_SEQUENCE_BACKEND_URL", "https://api.main-sequence.
|
|
65
|
+
"backend_url": os.environ.get("MAIN_SEQUENCE_BACKEND_URL", "https://api.main-sequence.io/"),
|
|
66
66
|
"mainsequence_path": str(pathlib.Path.home() / "mainsequence"),
|
|
67
67
|
"version": 1,
|
|
68
68
|
}
|
|
@@ -212,7 +212,7 @@ def set_backend_url(url: str) -> dict:
|
|
|
212
212
|
Convenience helper to set backend_url in config.json.
|
|
213
213
|
|
|
214
214
|
Args:
|
|
215
|
-
url: Backend base URL (e.g. https://api.main-sequence.
|
|
215
|
+
url: Backend base URL (e.g. https://api.main-sequence.io)
|
|
216
216
|
|
|
217
217
|
Returns:
|
|
218
218
|
dict: updated config
|
|
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-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/dashboards/streamlit/SKILL.md
RENAMED
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/data_access/exploration/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md
RENAMED
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/agent_scaffold/skills/maintenance/local_journal/SKILL.md
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
|
|
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
|
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/command_center/app_component.py
RENAMED
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/command_center/data_models.py
RENAMED
|
File without changes
|
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/command_center/workspace_snapshot.py
RENAMED
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/data_sources_interfaces/__init__.py
RENAMED
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/data_sources_interfaces/duckdb.py
RENAMED
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/client/data_sources_interfaces/timescale.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
|
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/assets/config.toml
RENAMED
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/assets/favicon.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/assets/logo.png
RENAMED
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/components/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/core/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/dashboards/streamlit/pages/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/data_interface/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/instruments/__init__.py
RENAMED
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/instruments/base_instrument.py
RENAMED
|
File without changes
|
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/instruments/callability.py
RENAMED
|
File without changes
|
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/instruments/json_codec.py
RENAMED
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/instruments/position.py
RENAMED
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/instruments/ql_fields.py
RENAMED
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/interest_rates/__init__.py
RENAMED
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/interest_rates/etl/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/interest_rates/etl/nodes.py
RENAMED
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/interest_rates/etl/registry.py
RENAMED
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/pricing_models/__init__.py
RENAMED
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/pricing_models/bond_pricer.py
RENAMED
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/pricing_models/indices.py
RENAMED
|
File without changes
|
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/instruments/pricing_models/swap_pricer.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-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/data_nodes/build_operations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/data_nodes/persist_managers.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
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/tdag/simple_tables/persist_managers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/contrib/__init__.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
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/contrib/prices/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/mainsequence/virtualfundbuilder/portfolio_nodes.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-3.18.3 → mainsequence-3.18.4}/tests/test_command_center_app_component_models.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-3.18.3 → mainsequence-3.18.4}/tests/test_simple_tables_configuration_hashing.py
RENAMED
|
File without changes
|
|
File without changes
|