mainsequence 3.18.7__tar.gz → 3.18.9__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.7 → mainsequence-3.18.9}/PKG-INFO +1 -1
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/cli/cli.py +41 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/logconf.py +17 -1
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence.egg-info/PKG-INFO +1 -1
- {mainsequence-3.18.7 → mainsequence-3.18.9}/pyproject.toml +1 -1
- {mainsequence-3.18.7 → mainsequence-3.18.9}/tests/test_cli.py +33 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/tests/test_logconf.py +14 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/LICENSE +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/README.md +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/agent_scaffold/AGENTS.md +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/agent_scaffold/skills/command_center/api_mock_prototyping/SKILL.md +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/agent_scaffold/skills/command_center/app_components/SKILL.md +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/agent_scaffold/skills/command_center/workspace_analysis/SKILL.md +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/agent_scaffold/skills/command_center/workspace_builder/SKILL.md +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/agent_scaffold/skills/dashboards/streamlit/SKILL.md +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/agent_scaffold/skills/data_access/exploration/SKILL.md +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/agent_scaffold/skills/data_publishing/data_nodes/SKILL.md +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/agent_scaffold/skills/data_publishing/simple_tables/SKILL.md +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/agent_scaffold/skills/maintenance/local_journal/SKILL.md +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/agent_scaffold/skills/markets_platform/assets_and_translation/SKILL.md +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/agent_scaffold/skills/markets_platform/instruments_and_pricing/SKILL.md +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/agent_scaffold/skills/markets_platform/virtualfundbuilder/SKILL.md +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/agent_scaffold/skills/project_builder/SKILL.md +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/__main__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/bootstrap.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/cli/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/cli/api.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/cli/browser_auth.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/cli/config.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/cli/docker_utils.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/cli/doctor.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/cli/local_ops.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/cli/model_filters.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/cli/project_status.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/cli/pydantic_cli.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/cli/sdk_utils.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/cli/ssh_utils.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/cli/ui.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/agent.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/agent_runtime_models.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/base.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/client.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/command_center/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/command_center/app_component.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/command_center/data_models.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/command_center/workspace.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/command_center/workspace_snapshot.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/data_sources_interfaces/timescale.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/exceptions.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/fastapi/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/fastapi/auth.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/models_helpers.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/models_simple_tables.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/models_tdag.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/models_user.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/models_vam.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/utils.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/compute_validation.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/dashboards/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/dashboards/streamlit/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/dashboards/streamlit/assets/config.toml +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/dashboards/streamlit/assets/favicon.png +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/dashboards/streamlit/assets/image_1_base64.txt +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/dashboards/streamlit/assets/image_2_base64.txt +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/dashboards/streamlit/assets/image_3_base64.txt +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/dashboards/streamlit/assets/image_4_base64.txt +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/dashboards/streamlit/assets/image_5_base64.txt +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/dashboards/streamlit/assets/logo.png +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/dashboards/streamlit/components/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/dashboards/streamlit/components/asset_select.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/dashboards/streamlit/components/date_settings.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/dashboards/streamlit/components/logged_user.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/dashboards/streamlit/core/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/dashboards/streamlit/core/theme.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/dashboards/streamlit/instruments/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/dashboards/streamlit/instruments/streamlit_form_factory.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/dashboards/streamlit/pages/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/dashboards/streamlit/scaffold.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/defaults.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instrumentation/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instrumentation/utils.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/data_interface/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/data_interface/data_interface.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/instruments/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/instruments/base_instrument.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/instruments/bond.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/instruments/callability.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/instruments/interest_rate_swap.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/instruments/json_codec.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/instruments/position.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/instruments/ql_fields.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/interest_rates/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/interest_rates/etl/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/interest_rates/etl/curve_codec.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/interest_rates/etl/nodes.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/interest_rates/etl/registry.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/pricing_models/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/pricing_models/bond_pricer.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/pricing_models/indices.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/pricing_models/indices_builders.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/pricing_models/swap_pricer.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/settings.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/utils.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/runtime_flags.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/tdag/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/tdag/__main__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/tdag/base_persist_managers.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/tdag/config.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/tdag/configuration_models.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/tdag/data_nodes/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/tdag/data_nodes/build_operations.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/tdag/data_nodes/data_nodes.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/tdag/data_nodes/filters.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/tdag/data_nodes/models.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/tdag/data_nodes/namespacing.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/tdag/data_nodes/persist_managers.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/tdag/data_nodes/run_operations.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/tdag/data_nodes/utils.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/tdag/filters.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/tdag/future_registry.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/tdag/pydantic_metadata.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/tdag/simple_tables/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/tdag/simple_tables/filters.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/tdag/simple_tables/models.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/tdag/simple_tables/persist_managers.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/tdag/simple_tables/schema.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/tdag/simple_tables/table_nodes.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/tdag/utils.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/virtualfundbuilder/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/virtualfundbuilder/contrib/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/virtualfundbuilder/contrib/data_nodes/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/virtualfundbuilder/contrib/data_nodes/external_weights.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/virtualfundbuilder/contrib/data_nodes/intraday_trend.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/virtualfundbuilder/contrib/data_nodes/market_cap.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/virtualfundbuilder/contrib/data_nodes/mock_signal.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/virtualfundbuilder/contrib/data_nodes/portfolio_replicator.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/virtualfundbuilder/contrib/prices/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/virtualfundbuilder/contrib/prices/data_nodes.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/virtualfundbuilder/contrib/prices/utils.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/virtualfundbuilder/contrib/rebalance_strategies/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/virtualfundbuilder/contrib/rebalance_strategies/rebalance_strategies.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/virtualfundbuilder/enums.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/virtualfundbuilder/models.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/virtualfundbuilder/portfolio_nodes.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/virtualfundbuilder/resource_factory/__init__.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/virtualfundbuilder/resource_factory/rebalance_factory.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/virtualfundbuilder/resource_factory/signal_factory.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/virtualfundbuilder/utils.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence.egg-info/SOURCES.txt +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence.egg-info/dependency_links.txt +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence.egg-info/entry_points.txt +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence.egg-info/requires.txt +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence.egg-info/top_level.txt +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/setup.cfg +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/tests/test_auth_precedence.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/tests/test_build_operations_hashing.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/tests/test_cli_browser_auth.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/tests/test_client.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/tests/test_command_center_app_component_models.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/tests/test_command_center_models.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/tests/test_dependency_extras.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/tests/test_filter_normalization.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/tests/test_instruments.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/tests/test_logged_user_components.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/tests/test_models_user_request_bound_auth.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/tests/test_pod_project_resolution.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/tests/test_project_batch_jobs_from_file.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/tests/test_run_configuration.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/tests/test_simple_tables_configuration_hashing.py +0 -0
- {mainsequence-3.18.7 → mainsequence-3.18.9}/tests/test_simple_tables_persistence.py +0 -0
|
@@ -2417,6 +2417,47 @@ def organization_project_names_alias_cmd(
|
|
|
2417
2417
|
organization_project_names_cmd(timeout=timeout)
|
|
2418
2418
|
|
|
2419
2419
|
|
|
2420
|
+
@organization.command("github-organizations")
|
|
2421
|
+
def organization_github_organizations_cmd():
|
|
2422
|
+
"""
|
|
2423
|
+
List GitHub organizations available to the authenticated user.
|
|
2424
|
+
|
|
2425
|
+
Examples
|
|
2426
|
+
--------
|
|
2427
|
+
```bash
|
|
2428
|
+
mainsequence organization github-organizations
|
|
2429
|
+
mainsequence organization github-organizations --json
|
|
2430
|
+
```
|
|
2431
|
+
"""
|
|
2432
|
+
_require_login()
|
|
2433
|
+
|
|
2434
|
+
try:
|
|
2435
|
+
organizations = list_github_organizations()
|
|
2436
|
+
except ApiError as e:
|
|
2437
|
+
error(f"GitHub organizations fetch failed: {e}")
|
|
2438
|
+
raise typer.Exit(1) from e
|
|
2439
|
+
|
|
2440
|
+
if _emit_json(organizations):
|
|
2441
|
+
return
|
|
2442
|
+
|
|
2443
|
+
if organizations:
|
|
2444
|
+
print_table(
|
|
2445
|
+
"GitHub Organizations",
|
|
2446
|
+
["ID", "Name", "Login"],
|
|
2447
|
+
[
|
|
2448
|
+
[
|
|
2449
|
+
str(org.get("id") or "-"),
|
|
2450
|
+
str(org.get("name") or "-"),
|
|
2451
|
+
str(org.get("login") or org.get("slug") or "-"),
|
|
2452
|
+
]
|
|
2453
|
+
for org in organizations
|
|
2454
|
+
],
|
|
2455
|
+
)
|
|
2456
|
+
else:
|
|
2457
|
+
info("No GitHub organizations available.")
|
|
2458
|
+
info(f"Total GitHub organizations: {len(organizations)}")
|
|
2459
|
+
|
|
2460
|
+
|
|
2420
2461
|
def _organization_teams_list_impl(
|
|
2421
2462
|
*,
|
|
2422
2463
|
timeout: int | None,
|
|
@@ -7,6 +7,8 @@ import os
|
|
|
7
7
|
import sys
|
|
8
8
|
import traceback
|
|
9
9
|
from collections.abc import Mapping
|
|
10
|
+
from importlib.metadata import PackageNotFoundError
|
|
11
|
+
from importlib.metadata import version as package_version
|
|
10
12
|
from pathlib import Path
|
|
11
13
|
from typing import Any
|
|
12
14
|
|
|
@@ -24,6 +26,16 @@ from .runtime_flags import is_running_in_pod
|
|
|
24
26
|
logger = None
|
|
25
27
|
|
|
26
28
|
|
|
29
|
+
def _get_sdk_version() -> str:
|
|
30
|
+
"""Return the installed SDK package version for automatic log binding."""
|
|
31
|
+
try:
|
|
32
|
+
return package_version("mainsequence")
|
|
33
|
+
except PackageNotFoundError:
|
|
34
|
+
return "unknown"
|
|
35
|
+
except Exception:
|
|
36
|
+
return "unknown"
|
|
37
|
+
|
|
38
|
+
|
|
27
39
|
def ensure_dir(file_path):
|
|
28
40
|
directory = os.path.dirname(file_path)
|
|
29
41
|
Path(directory).mkdir(parents=True, exist_ok=True)
|
|
@@ -406,7 +418,11 @@ def build_application_logger(application_name: str = "ms-sdk", **metadata):
|
|
|
406
418
|
|
|
407
419
|
# Create the structlog logger and bind metadata
|
|
408
420
|
logger = structlog.get_logger(logger_name)
|
|
409
|
-
logger = logger.bind(
|
|
421
|
+
logger = logger.bind(
|
|
422
|
+
application_name=application_name,
|
|
423
|
+
sdk_version=_get_sdk_version(),
|
|
424
|
+
**metadata,
|
|
425
|
+
)
|
|
410
426
|
|
|
411
427
|
try:
|
|
412
428
|
|
|
@@ -196,6 +196,39 @@ def test_organization_project_names(cli_mod, runner, monkeypatch):
|
|
|
196
196
|
assert "Total organization-visible project names: 2" in result.output
|
|
197
197
|
|
|
198
198
|
|
|
199
|
+
def test_organization_github_organizations(cli_mod, runner, monkeypatch):
|
|
200
|
+
monkeypatch.setattr(cli_mod, "_require_login", lambda: {"username": "u"})
|
|
201
|
+
monkeypatch.setattr(
|
|
202
|
+
cli_mod,
|
|
203
|
+
"list_github_organizations",
|
|
204
|
+
lambda: [
|
|
205
|
+
{"id": 33, "name": "Main Sequence Projects", "login": "mainsequence-projects"},
|
|
206
|
+
{"id": 34, "slug": "research-labs"},
|
|
207
|
+
],
|
|
208
|
+
)
|
|
209
|
+
|
|
210
|
+
result = runner.invoke(cli_mod.app, ["organization", "github-organizations"])
|
|
211
|
+
assert result.exit_code == 0
|
|
212
|
+
assert "GitHub Organizations" in result.output
|
|
213
|
+
assert "mainsequence-projects" in result.output
|
|
214
|
+
assert "research-labs" in result.output
|
|
215
|
+
assert "Total GitHub organizations: 2" in result.output
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
def test_organization_github_organizations_json(cli_mod, runner, monkeypatch):
|
|
219
|
+
monkeypatch.setattr(cli_mod, "_require_login", lambda: {"username": "u"})
|
|
220
|
+
monkeypatch.setattr(
|
|
221
|
+
cli_mod,
|
|
222
|
+
"list_github_organizations",
|
|
223
|
+
lambda: [{"id": 33, "name": "Main Sequence Projects", "login": "mainsequence-projects"}],
|
|
224
|
+
)
|
|
225
|
+
|
|
226
|
+
result = runner.invoke(cli_mod.app, ["organization", "github-organizations", "--json"])
|
|
227
|
+
assert result.exit_code == 0
|
|
228
|
+
payload = json.loads(result.output)
|
|
229
|
+
assert payload == [{"id": 33, "name": "Main Sequence Projects", "login": "mainsequence-projects"}]
|
|
230
|
+
|
|
231
|
+
|
|
199
232
|
def test_organization_teams_list(cli_mod, runner, monkeypatch):
|
|
200
233
|
monkeypatch.setattr(cli_mod, "_require_login", lambda: {"username": "u"})
|
|
201
234
|
monkeypatch.setattr(
|
|
@@ -59,6 +59,20 @@ def test_logconf_import_skips_job_startup_state_request_outside_pod(monkeypatch)
|
|
|
59
59
|
assert logconf._request_job_startup_state() == {}
|
|
60
60
|
|
|
61
61
|
|
|
62
|
+
def test_logconf_binds_sdk_version(monkeypatch):
|
|
63
|
+
monkeypatch.delenv("MAINSEQUENCE_ACCESS_TOKEN", raising=False)
|
|
64
|
+
monkeypatch.delenv("MAINSEQUENCE_REFRESH_TOKEN", raising=False)
|
|
65
|
+
monkeypatch.delenv("COMMAND_ID", raising=False)
|
|
66
|
+
monkeypatch.delenv("JOB_RUN_ID", raising=False)
|
|
67
|
+
|
|
68
|
+
logconf = _load_mainsequence_submodule("mainsequence.logconf")
|
|
69
|
+
|
|
70
|
+
bound_context = logconf.dump_structlog_bound_logger(logconf.logger)["bound_context"]
|
|
71
|
+
|
|
72
|
+
assert bound_context["application_name"] == "ms-sdk"
|
|
73
|
+
assert bound_context["sdk_version"] == logconf._get_sdk_version()
|
|
74
|
+
|
|
75
|
+
|
|
62
76
|
def test_logconf_import_skips_job_startup_state_request_without_job_run_id(monkeypatch):
|
|
63
77
|
monkeypatch.delenv("MAINSEQUENCE_ACCESS_TOKEN", raising=False)
|
|
64
78
|
monkeypatch.delenv("MAINSEQUENCE_REFRESH_TOKEN", raising=False)
|
|
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.7 → mainsequence-3.18.9}/agent_scaffold/skills/dashboards/streamlit/SKILL.md
RENAMED
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/agent_scaffold/skills/data_access/exploration/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md
RENAMED
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/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
|
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/command_center/app_component.py
RENAMED
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/command_center/data_models.py
RENAMED
|
File without changes
|
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/command_center/workspace_snapshot.py
RENAMED
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/data_sources_interfaces/__init__.py
RENAMED
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/client/data_sources_interfaces/duckdb.py
RENAMED
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/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.7 → mainsequence-3.18.9}/mainsequence/dashboards/streamlit/assets/config.toml
RENAMED
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/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.7 → mainsequence-3.18.9}/mainsequence/dashboards/streamlit/assets/logo.png
RENAMED
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/dashboards/streamlit/components/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/dashboards/streamlit/core/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/dashboards/streamlit/pages/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/data_interface/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/instruments/__init__.py
RENAMED
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/instruments/base_instrument.py
RENAMED
|
File without changes
|
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/instruments/callability.py
RENAMED
|
File without changes
|
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/instruments/json_codec.py
RENAMED
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/instruments/position.py
RENAMED
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/instruments/ql_fields.py
RENAMED
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/interest_rates/__init__.py
RENAMED
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/interest_rates/etl/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/interest_rates/etl/nodes.py
RENAMED
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/interest_rates/etl/registry.py
RENAMED
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/pricing_models/__init__.py
RENAMED
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/pricing_models/bond_pricer.py
RENAMED
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/mainsequence/instruments/pricing_models/indices.py
RENAMED
|
File without changes
|
|
File without changes
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/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
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/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.7 → mainsequence-3.18.9}/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.7 → mainsequence-3.18.9}/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.7 → mainsequence-3.18.9}/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.7 → mainsequence-3.18.9}/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.7 → mainsequence-3.18.9}/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
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/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
|
{mainsequence-3.18.7 → mainsequence-3.18.9}/tests/test_simple_tables_configuration_hashing.py
RENAMED
|
File without changes
|
|
File without changes
|