gabriel / musehub public
chore BREAKING main #32 / 34
gabriel · 167 days ago · Apr 11, 2026 · Diff

chore: merge dev into main (0.2.0rc3)

sha256:61e4136f00b71a76bb7ab7e602a3ef2e2f4744f12908badf21b602d593165d9a sha
+67 ~2062 −57 symbols
sha256:c7877d66c247bfca0fe36acb8e40fc6af674f8e838cdfacfdc5e041c982941cd snapshot
+67
symbols added
~2062
symbols modified
−57
symbols removed
0
dead code introduced
Semantic Changes 2186 symbols
~ tests/test_canary.py .py 1 symbol added
+ test_hello function function test_hello L1–2
~ .museignore .museignore
~ alembic/versions/0036_drop_milestones.py .py 1 symbol added, 2 symbols modified
+ sa import import sa L11–11
~ musehub/api/routes/api/identities.py .py 5 symbols added, 1 symbol removed, 3 symbols modified
− JSONObject import import JSONObject L36–36
+ CreateIdentityRequest class class CreateIdentityRequest L44–53
+ UpdateIdentityRequest class class UpdateIdentityRequest L56–63
+ _IdentityDict class class _IdentityDict L66–81
+ BaseModel import import BaseModel L26–26
+ TypedDict import import TypedDict L29–29
~ musehub/api/routes/musehub/domains.py .py 2 symbols added, 1 symbol removed, 2 symbols modified
− JSONObject import import JSONObject L26–26
+ PydanticJson import import PydanticJson L26–26
+ unwrap_dict import import unwrap_dict L26–26
~ musehub/api/routes/musehub/users.py .py 1 symbol added, 1 symbol modified
+ JSONResponse import import JSONResponse L23–23
~ musehub/api/routes/wire.py .py 2 symbols modified
~ musehub/config.py .py 1 symbol modified
~ musehub/models/coord.py .py 1 symbol added, 2 symbols removed, 3 symbols modified
− Any import import Any L24–24
− JSONObject import import JSONObject L27–27
+ PydanticJson import import PydanticJson L27–27
~ musehub/models/musehub.py .py 1 symbol added, 2 symbols modified
+ PydanticJson import import PydanticJson L16–16
~ musehub/muse_contracts/pydantic_types.py .py 4 symbols added, 1 symbol modified
+ __eq__ method method __eq__ L118–130
+ __getitem__ method method __getitem__ L93–104
+ __iter__ method method __iter__ L112–116
+ __len__ method method __len__ L106–110
~ musehub/services/musehub_coord.py .py 1 symbol added, 1 symbol modified
+ _unwrap_payload function function _unwrap_payload L79–87
~ pyproject.toml .toml 2 symbols modified
~ tests/test_api_snapshots.py .py 45 symbols modified
~ tests/test_auth_authorization_section12.py .py 2 symbols added, 1 symbol removed, 6 symbols modified
− setup_method method method setup_method L113–115
+ _db_no_collab function function _db_no_collab L35–41
+ AsyncMock import import AsyncMock L15–15
~ tests/test_collaborators_section27.py .py 59 symbols modified
~ tests/test_context_section23.py .py 53 symbols modified
~ tests/test_cross_repo_section24.py .py 45 symbols modified
~ tests/test_domains_section25.py .py 62 symbols modified
~ tests/test_gc_background_tasks_section41.py .py 5 symbols added, 22 symbols removed, 5 symbols modified
− test_build_symbol_index_async_swallows_service_error method async_method test_build_symbol_index_async_swallows_service_error L341–347
− test_create_task_swallows_gc_failure method async_method test_create_task_swallows_gc_failure L349–356
− test_multiple_background_tasks_fire_and_forget method async_method test_multiple_background_tasks_fire_and_forget L358–367
− test_run_gc_async_completes_on_real_db method async_method test_run_gc_async_completes_on_real_db L322–330
− test_run_gc_async_with_orphan_completes method async_method test_run_gc_async_with_orphan_completes L333–339
− TestBuildSymbolIndexAsyncUnit class class TestBuildSymbolIndexAsyncUnit L169–196
− test_logs_warning_on_failure method async_method test_logs_warning_on_failure L189–196
− test_swallows_db_connection_error method async_method test_swallows_db_connection_error L172–176
− test_swallows_indexer_exception method async_method test_swallows_indexer_exception L178–187
− test_build_symbol_async_exception_not_propagated method async_method test_build_symbol_async_exception_not_propagated L556–563
− test_gc_async_exception_not_propagated_to_caller method async_method test_gc_async_exception_not_propagated_to_caller L546–554
− test_run_gc_async_mocked_under_50ms method async_method test_run_gc_async_mocked_under_50ms L640–652
− test_concurrent_gc_async_calls_idempotent method async_method test_concurrent_gc_async_calls_idempotent L420–430
− TestRunGcAsyncUnit class class TestRunGcAsyncUnit L199–226
− test_logs_warning_on_failure method async_method test_logs_warning_on_failure L219–226
− test_swallows_db_error method async_method test_swallows_db_error L202–206
− test_swallows_gc_service_error method async_method test_swallows_gc_service_error L208–217
− AsyncMock import import AsyncMock L14–14
− MagicMock import import MagicMock L14–14
− _build_symbol_index_async import import _build_symbol_index_async L20–20
− _run_gc_async import import _run_gc_async L20–20
− patch import import patch L14–14
+ test_run_gc_completes_on_real_db method async_method test_run_gc_completes_on_real_db L265–271
+ test_run_gc_with_orphan_completes method async_method test_run_gc_with_orphan_completes L273–280
+ test_gc_result_construction_fast method async_method test_gc_result_construction_fast L534–540
+ test_sequential_gc_calls_idempotent method async_method test_sequential_gc_calls_idempotent L333–343
+ msgpack import import msgpack L18–18
~ tests/test_mcp_read_tools.py .py 1 symbol added, 1 symbol removed, 77 symbols modified
− execute_get_commit import import execute_get_commit L85–85
+ execute_read_commit import import execute_read_commit L85–85
~ tests/test_mcp_smoke.py .py 54 symbols modified
~ tests/test_mcp_write_tools.py .py 3 symbols added, 3 symbols removed, 179 symbols modified
− execute_patch_repo_settings import import execute_patch_repo_settings L102–102
− execute_set_issue_labels import import execute_set_issue_labels L76–76
− execute_submit_proposal_review import import execute_submit_proposal_review L87–87
+ execute_create_proposal_review import import execute_create_proposal_review L87–87
+ execute_update_issue_labels import import execute_update_issue_labels L76–76
+ execute_update_repo import import execute_update_repo L102–102
~ tests/test_merge_proposals.py .py 43 symbols modified
~ tests/test_migrations_section36.py .py 10 symbols added, 3 symbols removed, 13 symbols modified
− test_all_25_migrations_present method method test_all_25_migrations_present L230–235
− test_head_revision_is_0028 method method test_head_revision_is_0028 L237–259
− _PG_BASE_URL variable variable _PG_BASE_URL L41–41
+ test_all_40_migrations_present method method test_all_40_migrations_present L267–270
+ test_head_revision_is_0040 method method test_head_revision_is_0040 L272–292
+ _PERF_TEST_DB variable variable _PERF_TEST_DB L60–60
+ _PERF_TEST_URL variable variable _PERF_TEST_URL L61–61
+ _PROJECT_ROOT variable variable _PROJECT_ROOT L43–43
+ _perf_fresh_db function function _perf_fresh_db L200–212
+ _raw_db_url variable variable _raw_db_url L49–49
+ _urlparse import import _urlparse L34–34
+ os import import os L28–28
+ pathlib import import pathlib L29–29
~ _HEAD
~ tests/test_musehub_coord.py .py 52 symbols modified
~ tests/test_musehub_proposals.py .py 43 symbols modified
~ tests/test_musehub_repos.py .py 77 symbols modified
− pytestmark variable variable pytestmark L29–29
~ tests/test_musehub_ui_team.py .py 1 symbol removed
− pytestmark variable variable pytestmark L41–41
~ tests/test_object_store.py .py 4 symbols added, 5 symbols removed, 11 symbols modified
− test_separate_repos_isolated method async_method test_separate_repos_isolated L199–202
− test_traversal_via_dotdot_repo_id_raises method method test_traversal_via_dotdot_repo_id_raises L99–102
− test_traversal_via_repo_id_raises method method test_traversal_via_repo_id_raises L94–97
− test_traversal_via_repo_id_double_slash method method test_traversal_via_repo_id_double_slash L755–758
− test_traversal_via_repo_id_raises_value_error method method test_traversal_via_repo_id_raises_value_error L743–746
+ test_separate_repos_share_global_storage method async_method test_separate_repos_share_global_storage L197–202
+ test_dotdot_in_object_id_is_sanitised method method test_dotdot_in_object_id_is_sanitised L94–100
+ test_object_id_double_slash_is_sanitised method method test_object_id_double_slash_is_sanitised L758–762
+ test_object_id_with_dotdot_is_sanitised method method test_object_id_with_dotdot_is_sanitised L743–748
~ tests/test_rate_limiting_section4.py .py 4 symbols added, 4 symbols removed, 4 symbols modified
− test_bot_ua_scrapy_is_blocked function async_function test_bot_ua_scrapy_is_blocked L125–128
− test_bot_ua_sqlmap_is_blocked function async_function test_bot_ua_sqlmap_is_blocked L139–142
− test_bot_ua_wget_is_blocked function async_function test_bot_ua_wget_is_blocked L132–135
− test_missing_ua_non_cdn_path_is_blocked function async_function test_missing_ua_non_cdn_path_is_blocked L146–149
+ test_bot_ua_scrapy_is_blocked_on_write function async_function test_bot_ua_scrapy_is_blocked_on_write L123–134
+ test_bot_ua_sqlmap_is_blocked_on_write function async_function test_bot_ua_sqlmap_is_blocked_on_write L147–154
+ test_bot_ua_wget_is_blocked_on_write function async_function test_bot_ua_wget_is_blocked_on_write L137–144
+ test_missing_ua_post_non_cdn_path_is_blocked function async_function test_missing_ua_post_non_cdn_path_is_blocked L157–163
~ tests/test_releases.py .py 67 symbols modified
~ tests/test_secrets_management_section72.py .py 2 symbols added, 3 symbols modified
+ _skip_no_compose variable variable _skip_no_compose L34–37
+ _skip_no_dockerfile variable variable _skip_no_dockerfile L30–33
~ tests/test_sessions_section30.py .py 51 symbols modified
~ tests/test_storage_backends_section33.py .py 12 symbols added, 12 symbols removed, 49 symbols modified
− test_path_traversal_variations method method test_path_traversal_variations L439–448
− test_multiple_repos_isolated method async_method test_multiple_repos_isolated L242–247
− test_delete_does_not_allow_traversal method async_method test_delete_does_not_allow_traversal L501–504
− test_exists_does_not_allow_traversal method async_method test_exists_does_not_allow_traversal L495–498
− test_get_does_not_allow_path_outside_root method async_method test_get_does_not_allow_path_outside_root L489–492
− test_path_traversal_dotdot_deep_raises method method test_path_traversal_dotdot_deep_raises L469–473
− test_path_traversal_repo_id_raises method method test_path_traversal_repo_id_raises L464–467
− test_put_does_not_allow_path_outside_root method async_method test_put_does_not_allow_path_outside_root L483–486
− test_write_many_repos method async_method test_write_many_repos L392–398
− test_path_traversal_deep_raises method method test_path_traversal_deep_raises L84–87
− test_path_traversal_in_repo_id_raises method method test_path_traversal_in_repo_id_raises L79–82
− test_uri_for_contains_repo_and_obj method method test_uri_for_contains_repo_and_obj L94–98
+ test_path_traversal_variations_sanitised method method test_path_traversal_variations_sanitised L411–421
+ test_global_storage_same_id_shares_object method async_method test_global_storage_same_id_shares_object L231–237
+ test_delete_with_dotdot_object_id_is_noop method async_method test_delete_with_dotdot_object_id_is_noop L475–478
+ test_dotdot_deep_in_object_id_sanitised method method test_dotdot_deep_in_object_id_sanitised L442–446
+ test_dotdot_in_object_id_sanitised method method test_dotdot_in_object_id_sanitised L436–440
+ test_exists_with_dotdot_object_id_sanitised method async_method test_exists_with_dotdot_object_id_sanitised L469–473
+ test_get_with_dotdot_object_id_sanitised method async_method test_get_with_dotdot_object_id_sanitised L463–467
+ test_put_with_dotdot_object_id_sanitised method async_method test_put_with_dotdot_object_id_sanitised L455–461
+ test_write_many_objects_different_ids method async_method test_write_many_objects_different_ids L367–374
+ test_path_dotdot_deep_stays_in_root method method test_path_dotdot_deep_stays_in_root L85–88
+ test_path_sanitises_dotdot_in_object_id method method test_path_sanitises_dotdot_in_object_id L79–83
+ test_uri_for_contains_obj method method test_uri_for_contains_obj L95–98

0 comments

No comments yet. Be the first to start the discussion.

To add a comment, use the Muse CLI: muse hub commit comment sha256:61e4136f00b71a76bb7ab7e602a3ef2e2f4744f12908badf21b602d593165d9a --body "your comment"