{"nodes": [{"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "label": "ports.py", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L1"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository", "label": "UserRepository", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L42", "_callable": true}, {"id": "protocol", "label": "Protocol", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_get_by_id", "label": ".get_by_id()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L43", "_callable": true}, {"id": "uuid", "label": "UUID", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "user", "label": "User", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_get_credentials_by_username", "label": ".get_credentials_by_username()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L44", "_callable": true}, {"id": "credentials", "label": "Credentials", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_add", "label": ".add()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L45", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_list", "label": ".list()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L46", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_set_password_hash", "label": ".set_password_hash()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L47", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_set_superuser", "label": ".set_superuser()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L48", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_set_active", "label": ".set_active()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L49", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_count", "label": ".count()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L50", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_get_subsonic_credentials_by_username", "label": ".get_subsonic_credentials_by_username()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L52", "_callable": true}, {"id": "subsoniccredentials", "label": "SubsonicCredentials", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_get_subsonic_password_enc", "label": ".get_subsonic_password_enc()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L55", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_set_subsonic_password_enc", "label": ".set_subsonic_password_enc()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L56", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_subsoniccipher", "label": "SubsonicCipher", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L59", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_subsoniccipher_encrypt", "label": ".encrypt()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L62", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_subsoniccipher_decrypt", "label": ".decrypt()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L63", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_refreshtokenrepository", "label": "RefreshTokenRepository", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L66", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_refreshtokenrepository_add", "label": ".add()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L67", "_callable": true}, {"id": "datetime", "label": "datetime", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_refreshtokenrepository_is_valid", "label": ".is_valid()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L75", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_refreshtokenrepository_revoke", "label": ".revoke()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L79", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_refreshtokenrepository_revoke_all_for_user", "label": ".revoke_all_for_user()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L80", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_passwordhasher", "label": "PasswordHasher", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L83", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_passwordhasher_hash", "label": ".hash()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L84", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_passwordhasher_verify_and_update", "label": ".verify_and_update()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L85", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_tokenservice", "label": "TokenService", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L92", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_tokenservice_issue", "label": ".issue()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L93", "_callable": true}, {"id": "tokentype", "label": "TokenType", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "issuedtoken", "label": "IssuedToken", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_tokenservice_decode", "label": ".decode()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L94", "_callable": true}, {"id": "tokenclaims", "label": "TokenClaims", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage", "label": "FileStorage", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L100", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage_save_file", "label": ".save_file()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L101", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage_open_range", "label": ".open_range()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L102", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage_stat", "label": ".stat()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L105", "_callable": true}, {"id": "objectstat", "label": "ObjectStat", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage_exists", "label": ".exists()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L106", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage_delete", "label": ".delete()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L107", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage_as_local_path", "label": ".as_local_path()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L108", "_callable": true}, {"id": "abstractasynccontextmanager", "label": "AbstractAsyncContextManager", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage_disk_usage", "label": ".disk_usage()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L109", "_callable": true}, {"id": "diskusage", "label": "DiskUsage", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository", "label": "ArtistRepository", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L115", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository_get_or_create", "label": ".get_or_create()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L116", "_callable": true}, {"id": "artist", "label": "Artist", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository_get_or_create_remote", "label": ".get_or_create_remote()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L117", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository_get_by_id", "label": ".get_by_id()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L122", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository_get_many", "label": ".get_many()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L123", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository_list", "label": ".list()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L124", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository_count", "label": ".count()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L125", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository_album_count", "label": ".album_count()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L126", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository_track_count", "label": ".track_count()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L127", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository", "label": "TrackRepository", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L130", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_get_by_id", "label": ".get_by_id()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L131", "_callable": true}, {"id": "track", "label": "Track", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_get_by_source", "label": ".get_by_source()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L132", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_add", "label": ".add()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L133", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_materialize", "label": ".materialize()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L148", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_delete", "label": ".delete()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L161", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_genres", "label": ".genres()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L165", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_library_stats", "label": ".library_stats()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L166", "_callable": true}, {"id": "librarystats", "label": "LibraryStats", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_list", "label": ".list()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L167", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_count", "label": ".count()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L179", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_update", "label": ".update()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L187", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_apply_enrichment", "label": ".apply_enrichment()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L195", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_mark_enrichment_failed", "label": ".mark_enrichment_failed()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L219", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository", "label": "AlbumRepository", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L225", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_get_or_create", "label": ".get_or_create()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L226", "_callable": true}, {"id": "album", "label": "Album", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_get_or_create_remote", "label": ".get_or_create_remote()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L234", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_set_cover_path", "label": ".set_cover_path()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L248", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_get_by_id", "label": ".get_by_id()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L249", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_get_many", "label": ".get_many()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L250", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_count", "label": ".count()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L251", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_track_count", "label": ".track_count()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L252", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_track_count_many", "label": ".track_count_many()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L253", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_list", "label": ".list()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L255", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository", "label": "PlaylistRepository", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L267", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_get_by_id", "label": ".get_by_id()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L268", "_callable": true}, {"id": "playlist", "label": "Playlist", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_count", "label": ".count()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L269", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_add", "label": ".add()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L270", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_update", "label": ".update()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L271", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_delete", "label": ".delete()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L274", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_track_count", "label": ".track_count()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L275", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_track_count_many", "label": ".track_count_many()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L276", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_get_tracks", "label": ".get_tracks()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L277", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_get_track_total", "label": ".get_track_total()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L280", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_add_track", "label": ".add_track()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L281", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_remove_track", "label": ".remove_track()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L284", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_max_position", "label": ".max_position()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L285", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_list", "label": ".list()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L287", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_likerepository", "label": "LikeRepository", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L290", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_likerepository_add", "label": ".add()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L291", "_callable": true}, {"id": "like", "label": "Like", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_likerepository_get_latest_state", "label": ".get_latest_state()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L292", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_likerepository_list_liked_tracks", "label": ".list_liked_tracks()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L295", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_likerepository_count_liked_tracks", "label": ".count_liked_tracks()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L298", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_historyrepository", "label": "HistoryRepository", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L301", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_historyrepository_add", "label": ".add()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L302", "_callable": true}, {"id": "playhistoryentry", "label": "PlayHistoryEntry", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_historyrepository_list", "label": ".list()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L311", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_historyrepository_count", "label": ".count()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L314", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository", "label": "DownloadJobRepository", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L317", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_add", "label": ".add()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L321", "_callable": true}, {"id": "downloadjob", "label": "DownloadJob", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_get_by_id", "label": ".get_by_id()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L329", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_get_active_for_source", "label": ".get_active_for_source()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L330", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_list", "label": ".list()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L335", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_count", "label": ".count()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L343", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_set_status", "label": ".set_status()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L344", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_set_progress", "label": ".set_progress()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L352", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_increment_retry", "label": ".increment_retry()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L353", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_delete", "label": ".delete()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L357", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_failure_rate", "label": ".failure_rate()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L358", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_sourcebackend", "label": "SourceBackend", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L365", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_sourcebackend_info", "label": ".info()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L373", "_callable": true}, {"id": "sourceinfo", "label": "SourceInfo", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_sourcebackend_is_available", "label": ".is_available()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L374", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_indexablesource", "label": "IndexableSource", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L377", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_indexablesource_scan", "label": ".scan()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L380", "_callable": true}, {"id": "sourcefile", "label": "SourceFile", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_searchablesource", "label": "SearchableSource", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L383", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_searchablesource_search", "label": ".search()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L389", "_callable": true}, {"id": "searchresult", "label": "SearchResult", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_fetchablesource", "label": "FetchableSource", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L392", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_fetchablesource_fetch", "label": ".fetch()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L399", "_callable": true}, {"id": "progresscallback", "label": "ProgressCallback", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "downloadresult", "label": "DownloadResult", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_fetchablesource_get_metadata", "label": ".get_metadata()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L403", "_callable": true}, {"id": "rawmetadata", "label": "RawMetadata", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_audiotagreader", "label": "AudioTagReader", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L407", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_audiotagreader_read", "label": ".read()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L411", "_callable": true}, {"id": "audiotags", "label": "AudioTags", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_audiofingerprinter", "label": "AudioFingerprinter", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L414", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_audiofingerprinter_is_available", "label": ".is_available()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L418", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_audiofingerprinter_calculate", "label": ".calculate()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L419", "_callable": true}, {"id": "fingerprint", "label": "Fingerprint", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_acoustidclient", "label": "AcoustIdClient", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L422", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_acoustidclient_is_available", "label": ".is_available()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L429", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_acoustidclient_lookup", "label": ".lookup()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L430", "_callable": true}, {"id": "recordingmatch", "label": "RecordingMatch", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_acoustidclient_lookup_all", "label": ".lookup_all()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L431", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_coverartextractor", "label": "CoverArtExtractor", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L434", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_coverartextractor_extract", "label": ".extract()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L438", "_callable": true}, {"id": "coverart", "label": "CoverArt", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/app/domain/ports.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_coverartprovider", "label": "CoverArtProvider", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L441", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_coverartprovider_is_available", "label": ".is_available()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L446", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_coverartprovider_fetch_release_group", "label": ".fetch_release_group()", "file_type": "code", "source_file": "app/domain/ports.py", "source_location": "L447", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_1", "label": "Ports \u2014 the contracts the application layer depends on. These are Protocols, no", "file_type": "rationale", "source_file": "app/domain/ports.py", "source_location": "L1"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_60", "label": "Symmetric encrypt/decrypt for the recoverable Subsonic app-password.", "file_type": "rationale", "source_file": "app/domain/ports.py", "source_location": "L60"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_76", "label": "True iff a row exists for ``jti`` that is neither revoked nor expired.", "file_type": "rationale", "source_file": "app/domain/ports.py", "source_location": "L76"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_86", "label": "Verify ``password`` against ``password_hash``. Returns ``(is_valid, upda", "file_type": "rationale", "source_file": "app/domain/ports.py", "source_location": "L86"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_95", "label": "Verify signature + expiry and return claims. Raises :class:`~app.domain.", "file_type": "rationale", "source_file": "app/domain/ports.py", "source_location": "L95"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_110", "label": "Capacity of the volume backing the store, or ``None`` when the backend h", "file_type": "rationale", "source_file": "app/domain/ports.py", "source_location": "L110"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_118", "label": "Resolve/create an artist bound to a remote ``(source, source_id)`` (lazy", "file_type": "rationale", "source_file": "app/domain/ports.py", "source_location": "L118"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_157", "label": "Fill in a remote placeholder's audio fields after a download (lazy mater", "file_type": "rationale", "source_file": "app/domain/ports.py", "source_location": "L157"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_212", "label": "Persist auto-enrichment results. Nullable fields are filled only when a", "file_type": "rationale", "source_file": "app/domain/ports.py", "source_location": "L212"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_220", "label": "Record that an enrichment run crashed unexpectedly: set ``failed`` + the", "file_type": "rationale", "source_file": "app/domain/ports.py", "source_location": "L220"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_244", "label": "Resolve/create an album bound to a remote ``(source, source_id)`` (lazy", "file_type": "rationale", "source_file": "app/domain/ports.py", "source_location": "L244"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_318", "label": "Persistence for download jobs (plan \u00a76.1). Drives the \u00a7A5 download manager a", "file_type": "rationale", "source_file": "app/domain/ports.py", "source_location": "L318"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_331", "label": "An unfinished (queued/downloading/enriching) job for the same item, if a", "file_type": "rationale", "source_file": "app/domain/ports.py", "source_location": "L331"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_354", "label": "Bump ``retry_count`` and return the new value.", "file_type": "rationale", "source_file": "app/domain/ports.py", "source_location": "L354"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_359", "label": "Fraction of jobs for ``source`` created since ``since`` that ended ``fai", "file_type": "rationale", "source_file": "app/domain/ports.py", "source_location": "L359"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_366", "label": "A registered source of tracks (mounted folder, YouTube, \u2026). ``name`` is the", "file_type": "rationale", "source_file": "app/domain/ports.py", "source_location": "L366"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_378", "label": "A source that enumerates files already on disk (e.g. the local folder).", "file_type": "rationale", "source_file": "app/domain/ports.py", "source_location": "L378"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_384", "label": "A source that can be searched by free text (e.g. YouTube Music). Returns ``", "file_type": "rationale", "source_file": "app/domain/ports.py", "source_location": "L384"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_393", "label": "A source that can download a previously-discovered item to local disk. ``fe", "file_type": "rationale", "source_file": "app/domain/ports.py", "source_location": "L393"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_408", "label": "Reads embedded tags from a local audio file. Returns ``None`` only when the", "file_type": "rationale", "source_file": "app/domain/ports.py", "source_location": "L408"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_415", "label": "Chromaprint (fpcalc) wrapper. ``is_available`` reflects whether the binary i", "file_type": "rationale", "source_file": "app/domain/ports.py", "source_location": "L415"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_423", "label": "AcoustID lookup. ``is_available`` is False without an API key (the whole fin", "file_type": "rationale", "source_file": "app/domain/ports.py", "source_location": "L423"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_435", "label": "Pulls embedded cover art out of a local audio file (offline, no network). Re", "file_type": "rationale", "source_file": "app/domain/ports.py", "source_location": "L435"}, {"id": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_442", "label": "Fetches cover art from an external service (Cover Art Archive) by MusicBrain", "file_type": "rationale", "source_file": "app/domain/ports.py", "source_location": "L442"}], "edges": [{"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "datetime", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L8", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "uuid", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L9", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "collections_abc", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L10", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "contextlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L11", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L12", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L13", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "app_domain_entities", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L15", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "app_domain_entities_track", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L32", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "app_domain_sources", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L33", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "app_domain_tokens", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L34", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L42", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository", "target": "protocol", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L42", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_get_by_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L43", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_get_by_id", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L43", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_get_by_id", "target": "user", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L43", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_get_credentials_by_username", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L44", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_get_credentials_by_username", "target": "credentials", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L44", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_add", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L45", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_add", "target": "user", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L45", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_list", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L46", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_list", "target": "user", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L46", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_set_password_hash", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L47", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_set_password_hash", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L47", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_set_superuser", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L48", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_set_superuser", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L48", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_set_superuser", "target": "user", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L48", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_set_active", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L49", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_set_active", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L49", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_set_active", "target": "user", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L49", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_count", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L50", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_get_subsonic_credentials_by_username", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L52", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_get_subsonic_credentials_by_username", "target": "subsoniccredentials", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L52", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_get_subsonic_password_enc", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L55", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_get_subsonic_password_enc", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L55", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_set_subsonic_password_enc", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L56", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_userrepository_set_subsonic_password_enc", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L56", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_subsoniccipher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L59", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_subsoniccipher", "target": "protocol", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L59", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_subsoniccipher", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_subsoniccipher_encrypt", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L62", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_subsoniccipher", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_subsoniccipher_decrypt", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L63", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_refreshtokenrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L66", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_refreshtokenrepository", "target": "protocol", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L66", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_refreshtokenrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_refreshtokenrepository_add", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L67", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_refreshtokenrepository_add", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L67", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_refreshtokenrepository_add", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L67", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_refreshtokenrepository_add", "target": "datetime", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L67", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_refreshtokenrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_refreshtokenrepository_is_valid", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L75", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_refreshtokenrepository_is_valid", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L75", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_refreshtokenrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_refreshtokenrepository_revoke", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L79", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_refreshtokenrepository_revoke", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L79", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_refreshtokenrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_refreshtokenrepository_revoke_all_for_user", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L80", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_refreshtokenrepository_revoke_all_for_user", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L80", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_passwordhasher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L83", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_passwordhasher", "target": "protocol", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L83", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_passwordhasher", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_passwordhasher_hash", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L84", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_passwordhasher", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_passwordhasher_verify_and_update", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L85", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_tokenservice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L92", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_tokenservice", "target": "protocol", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L92", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_tokenservice", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_tokenservice_issue", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L93", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_tokenservice_issue", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L93", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_tokenservice_issue", "target": "tokentype", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L93", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_tokenservice_issue", "target": "issuedtoken", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L93", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_tokenservice", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_tokenservice_decode", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L94", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_tokenservice_decode", "target": "tokenclaims", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L94", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L100", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage", "target": "protocol", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L100", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage_save_file", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L101", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage_save_file", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L101", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage_open_range", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L102", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage_stat", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L105", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage_stat", "target": "objectstat", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L105", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage_exists", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L106", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage_delete", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L107", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage_as_local_path", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L108", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage_as_local_path", "target": "abstractasynccontextmanager", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L108", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage_as_local_path", "target": "path", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L108", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage_disk_usage", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L109", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage_disk_usage", "target": "diskusage", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L109", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L115", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository", "target": "protocol", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L115", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository_get_or_create", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L116", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository_get_or_create", "target": "artist", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L116", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository_get_or_create_remote", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L117", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository_get_or_create_remote", "target": "artist", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L117", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository_get_by_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L122", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository_get_by_id", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L122", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository_get_by_id", "target": "artist", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L122", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository_get_many", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L123", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository_get_many", "target": "uuid", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L123", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository_get_many", "target": "artist", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L123", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository_list", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L124", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository_list", "target": "artist", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L124", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository_count", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L125", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository_album_count", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L126", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository_album_count", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L126", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository_track_count", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L127", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository_track_count", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L127", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L130", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository", "target": "protocol", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L130", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_get_by_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L131", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_get_by_id", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L131", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_get_by_id", "target": "track", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L131", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_get_by_source", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L132", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_get_by_source", "target": "track", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L132", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_add", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L133", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_add", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L133", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_add", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L133", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_add", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L133", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_add", "target": "track", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L133", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_materialize", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L148", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_materialize", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L148", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_materialize", "target": "track", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L148", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_delete", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L161", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_delete", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L161", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_genres", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L165", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_library_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L166", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_library_stats", "target": "librarystats", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L166", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_list", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L167", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_list", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L167", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_list", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L167", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_list", "target": "track", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L167", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_count", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L179", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_count", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L179", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_count", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L179", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_update", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L187", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_update", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L187", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_update", "target": "track", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L187", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_apply_enrichment", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L195", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_apply_enrichment", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L195", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_apply_enrichment", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L195", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_apply_enrichment", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L195", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_apply_enrichment", "target": "track", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L195", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_mark_enrichment_failed", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L219", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_mark_enrichment_failed", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L219", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L225", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository", "target": "protocol", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L225", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_get_or_create", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L226", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_get_or_create", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L226", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_get_or_create", "target": "album", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L226", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_get_or_create_remote", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L234", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_get_or_create_remote", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L234", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_get_or_create_remote", "target": "album", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L234", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_set_cover_path", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L248", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_set_cover_path", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L248", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_get_by_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L249", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_get_by_id", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L249", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_get_by_id", "target": "album", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L249", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_get_many", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L250", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_get_many", "target": "uuid", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L250", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_get_many", "target": "album", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L250", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_count", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L251", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_count", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L251", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_track_count", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L252", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_track_count", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L252", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_track_count_many", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L253", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_track_count_many", "target": "uuid", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L253", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_track_count_many", "target": "uuid", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L253", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_list", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L255", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_list", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L255", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_list", "target": "album", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L255", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L267", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository", "target": "protocol", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L267", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_get_by_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L268", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_get_by_id", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L268", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_get_by_id", "target": "playlist", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L268", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_count", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L269", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_count", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L269", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_add", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L270", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_add", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L270", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_add", "target": "playlist", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L270", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_update", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L271", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_update", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L271", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_update", "target": "playlist", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L271", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_delete", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L274", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_delete", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L274", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_track_count", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L275", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_track_count", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L275", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_track_count_many", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L276", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_track_count_many", "target": "uuid", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L276", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_track_count_many", "target": "uuid", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L276", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_get_tracks", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L277", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_get_tracks", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L277", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_get_tracks", "target": "track", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L277", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_get_track_total", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L280", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_get_track_total", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L280", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_add_track", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L281", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_add_track", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L281", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_add_track", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L281", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_remove_track", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L284", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_remove_track", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L284", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_remove_track", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L284", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_max_position", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L285", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_max_position", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L285", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_list", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L287", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_list", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L287", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_playlistrepository_list", "target": "playlist", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L287", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_likerepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L290", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_likerepository", "target": "protocol", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L290", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_likerepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_likerepository_add", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L291", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_likerepository_add", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L291", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_likerepository_add", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L291", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_likerepository_add", "target": "like", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L291", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_likerepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_likerepository_get_latest_state", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L292", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_likerepository_get_latest_state", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L292", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_likerepository_get_latest_state", "target": "uuid", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L292", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_likerepository_get_latest_state", "target": "like", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L292", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_likerepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_likerepository_list_liked_tracks", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L295", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_likerepository_list_liked_tracks", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L295", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_likerepository_list_liked_tracks", "target": "track", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L295", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_likerepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_likerepository_count_liked_tracks", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L298", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_likerepository_count_liked_tracks", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L298", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_historyrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L301", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_historyrepository", "target": "protocol", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L301", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_historyrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_historyrepository_add", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L302", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_historyrepository_add", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L302", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_historyrepository_add", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L302", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_historyrepository_add", "target": "datetime", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L302", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_historyrepository_add", "target": "playhistoryentry", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L302", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_historyrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_historyrepository_list", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L311", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_historyrepository_list", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L311", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_historyrepository_list", "target": "playhistoryentry", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L311", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_historyrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_historyrepository_count", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L314", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_historyrepository_count", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L314", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L317", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository", "target": "protocol", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L317", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_add", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L321", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_add", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L321", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_add", "target": "downloadjob", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L321", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_get_by_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L329", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_get_by_id", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L329", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_get_by_id", "target": "downloadjob", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L329", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_get_active_for_source", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L330", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_get_active_for_source", "target": "downloadjob", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L330", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_list", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L335", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_list", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L335", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_list", "target": "downloadjob", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L335", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_count", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L343", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_count", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L343", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_set_status", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L344", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_set_status", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L344", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_set_status", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L344", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_set_progress", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L352", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_set_progress", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L352", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_increment_retry", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L353", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_increment_retry", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L353", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_delete", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L357", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_delete", "target": "uuid", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L357", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_failure_rate", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L358", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_failure_rate", "target": "datetime", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L358", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_sourcebackend", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L365", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_sourcebackend", "target": "protocol", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L365", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_sourcebackend", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_sourcebackend_info", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L373", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_sourcebackend_info", "target": "sourceinfo", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L373", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_sourcebackend", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_sourcebackend_is_available", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L374", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_indexablesource", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L377", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_indexablesource", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_sourcebackend", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L377", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_indexablesource", "target": "protocol", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L377", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_indexablesource", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_indexablesource_scan", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L380", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_indexablesource_scan", "target": "sourcefile", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L380", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_searchablesource", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L383", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_searchablesource", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_sourcebackend", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L383", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_searchablesource", "target": "protocol", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L383", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_searchablesource", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_searchablesource_search", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L389", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_searchablesource_search", "target": "searchresult", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L389", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_fetchablesource", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L392", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_fetchablesource", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_sourcebackend", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L392", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_fetchablesource", "target": "protocol", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L392", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_fetchablesource", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_fetchablesource_fetch", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L399", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_fetchablesource_fetch", "target": "progresscallback", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L399", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_fetchablesource_fetch", "target": "downloadresult", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L399", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_fetchablesource", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_fetchablesource_get_metadata", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L403", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_fetchablesource_get_metadata", "target": "rawmetadata", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L403", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_audiotagreader", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L407", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_audiotagreader", "target": "protocol", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L407", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_audiotagreader", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_audiotagreader_read", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L411", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_audiotagreader_read", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L411", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_audiotagreader_read", "target": "audiotags", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L411", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_audiofingerprinter", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L414", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_audiofingerprinter", "target": "protocol", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L414", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_audiofingerprinter", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_audiofingerprinter_is_available", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L418", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_audiofingerprinter", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_audiofingerprinter_calculate", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L419", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_audiofingerprinter_calculate", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L419", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_audiofingerprinter_calculate", "target": "fingerprint", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L419", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_acoustidclient", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L422", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_acoustidclient", "target": "protocol", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L422", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_acoustidclient", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_acoustidclient_is_available", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L429", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_acoustidclient", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_acoustidclient_lookup", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L430", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_acoustidclient_lookup", "target": "fingerprint", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L430", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_acoustidclient_lookup", "target": "recordingmatch", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L430", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_acoustidclient", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_acoustidclient_lookup_all", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L431", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_acoustidclient_lookup_all", "target": "fingerprint", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L431", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_acoustidclient_lookup_all", "target": "recordingmatch", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L431", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_coverartextractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L434", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_coverartextractor", "target": "protocol", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L434", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_coverartextractor", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_coverartextractor_extract", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L438", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_coverartextractor_extract", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L438", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_coverartextractor_extract", "target": "coverart", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L438", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_coverartprovider", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L441", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_coverartprovider", "target": "protocol", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L441", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_coverartprovider", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_coverartprovider_is_available", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L446", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_coverartprovider", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_coverartprovider_fetch_release_group", "relation": "method", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L447", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_coverartprovider_fetch_release_group", "target": "coverart", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L447", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_1", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L1", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_60", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_subsoniccipher", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L60", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_76", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_refreshtokenrepository_is_valid", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L76", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_86", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_passwordhasher_verify_and_update", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L86", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_95", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_tokenservice_decode", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L95", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_110", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_filestorage_disk_usage", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L110", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_118", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_artistrepository_get_or_create_remote", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L118", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_157", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_materialize", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L157", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_212", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_apply_enrichment", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L212", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_220", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_trackrepository_mark_enrichment_failed", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L220", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_244", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_albumrepository_get_or_create_remote", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L244", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_318", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L318", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_331", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_get_active_for_source", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L331", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_354", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_increment_retry", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L354", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_359", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_downloadjobrepository_failure_rate", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L359", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_366", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_sourcebackend", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L366", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_378", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_indexablesource", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L378", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_384", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_searchablesource", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L384", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_393", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_fetchablesource", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L393", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_408", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_audiotagreader", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L408", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_415", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_audiofingerprinter", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L415", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_423", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_acoustidclient", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L423", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_435", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_coverartextractor", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L435", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_rationale_442", "target": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_coverartprovider", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/domain/ports.py", "source_location": "L442", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_senko_work_mcma_compose_mcma_backend_app_domain_ports_py", "callee": "float", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "app/domain/ports.py", "source_location": "L39"}]}