{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":827590,"defaultBranch":"master","name":"beets","ownerLogin":"beetbox","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2010-08-09T23:17:20.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/15920313?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1715214886.0","currentOid":""},"activityList":{"items":[{"before":"bdb7fd9712246b39480f2b36726f94f31ff527fc","after":"070c87f53e4a68b7b49b23bb2c21381ea403adf6","ref":"refs/heads/only-fast-filtering","pushedAt":"2024-05-10T08:58:43.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"Ensure that any field query uses the table name\n\nIn order to include the table name for fields in this query, use the\n`field_query` method.\n\nSince `AnyFieldQuery` is just an `OrQuery` under the hood, remove it and\nconstruct `OrQuery` explicitly instead.","shortMessageHtmlLink":"Ensure that any field query uses the table name"}},{"before":"3c293fdfffe8a727c39add9b135f85f9f04884ed","after":"bdb7fd9712246b39480f2b36726f94f31ff527fc","ref":"refs/heads/only-fast-filtering","pushedAt":"2024-05-09T21:06:27.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"Ensure that any field query uses the table name\n\nIn order to include the table name for fields in this query, use the\n`field_query` method.\n\nSince `AnyFieldQuery` is just an `OrQuery` under the hood, remove it and\nconstruct `OrQuery` explicitly instead.","shortMessageHtmlLink":"Ensure that any field query uses the table name"}},{"before":"9ceffb6e723fa7f8f5bfcdf881731a18fff7b406","after":"3c293fdfffe8a727c39add9b135f85f9f04884ed","ref":"refs/heads/only-fast-filtering","pushedAt":"2024-05-09T21:04:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"Ensure that any field query uses the table name\n\nIn order to include the table name for fields in this query, use the\n`field_query` method.\n\nSince `AnyFieldQuery` is just an `OrQuery` under the hood, remove it and\nconstruct `OrQuery` explicitly instead.","shortMessageHtmlLink":"Ensure that any field query uses the table name"}},{"before":"ad2ea5abfbcf71320f13cd3bec5b7bbfb36472f9","after":"9ceffb6e723fa7f8f5bfcdf881731a18fff7b406","ref":"refs/heads/only-fast-filtering","pushedAt":"2024-05-09T11:40:37.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"Remove slow lookups from beetsplug/aura\n\nIt seems like previously filtering by flexible attributes did not work\n- I'd receive '{\"data\": []}' trying to GET `/aura/tracks?filter[play_count]=11`\n\nNow this works, not only for tracks, but for `/aura/artists` and\n`/aura/albums` too.\n\nAdditionally, this improves `/aura/tracks` response time significantly.\nI tried loading the default of 500 tracks from my library:\n\nOn `master`, it took ~20s\nAfter this commit, it takes under 1s.","shortMessageHtmlLink":"Remove slow lookups from beetsplug/aura"}},{"before":null,"after":"ad2ea5abfbcf71320f13cd3bec5b7bbfb36472f9","ref":"refs/heads/only-fast-filtering","pushedAt":"2024-05-09T00:34:46.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"Remove slow lookups from beetsplug/aura\n\nIt seems like previously filtering by flexible attributes did not work\n- I'd receive '{\"data\": []}' trying to GET `/aura/tracks?filter[play_count]=11`\n\nNow this works, not only for tracks, but for `/aura/artists` and\n`/aura/albums` too.\n\nAdditionally, this improves `/aura/tracks` response time significantly.\nI tried loading the default of 500 tracks from my library:\n\nOn `master`, it took ~20s\nAfter this commit, it takes under 1s.","shortMessageHtmlLink":"Remove slow lookups from beetsplug/aura"}},{"before":null,"after":"e9ce62587994d112e0077c5bdd7ba14cf2b63965","ref":"refs/heads/test-aura","pushedAt":"2024-05-09T00:31:19.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"Dedupe get_attribute_converter","shortMessageHtmlLink":"Dedupe get_attribute_converter"}},{"before":"e53c7c786cbac62db08d0d87679545f69950c72f","after":null,"ref":"refs/heads/fix-util-init-types","pushedAt":"2024-05-08T12:25:35.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"}},{"before":"329098a0b4f009b91d0a981112ffe0a9f96484f3","after":"c75f07a0da6c622d3cd0f5aad0a08edaea360dad","ref":"refs/heads/master","pushedAt":"2024-05-07T20:16:24.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"Define paths to lint in mypy configuration","shortMessageHtmlLink":"Define paths to lint in mypy configuration"}},{"before":"abd8447218c6e340a9f672b140e4c0fcd71318c2","after":"c4d06c72b91c8e3ebdeaf05987638862deae3dd5","ref":"refs/heads/fix-most-types-in-util-init","pushedAt":"2024-05-06T12:53:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"Try changing this condition","shortMessageHtmlLink":"Try changing this condition"}},{"before":"22e2a3cd2c0842205cfb6b4be1a2f10adb704cda","after":"abd8447218c6e340a9f672b140e4c0fcd71318c2","ref":"refs/heads/fix-most-types-in-util-init","pushedAt":"2024-05-06T11:37:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"And now fix this issue","shortMessageHtmlLink":"And now fix this issue"}},{"before":"8f637794b03c519cf3b19c4b990323fa8c99bbb4","after":"22e2a3cd2c0842205cfb6b4be1a2f10adb704cda","ref":"refs/heads/fix-most-types-in-util-init","pushedAt":"2024-05-06T09:06:18.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"test","shortMessageHtmlLink":"test"}},{"before":"6a1f684371e2452e5bb4ca50156feed2dac29ae4","after":"8f637794b03c519cf3b19c4b990323fa8c99bbb4","ref":"refs/heads/fix-most-types-in-util-init","pushedAt":"2024-05-06T09:01:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"test","shortMessageHtmlLink":"test"}},{"before":"79cf3fd1ecb9ab63bf4c35c9c66cb3c1fd59b8b9","after":"6a1f684371e2452e5bb4ca50156feed2dac29ae4","ref":"refs/heads/fix-most-types-in-util-init","pushedAt":"2024-05-06T08:30:58.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"Address PR comments","shortMessageHtmlLink":"Address PR comments"}},{"before":"49473e06909c66636b315d910ce72f1db9bc0f41","after":"79cf3fd1ecb9ab63bf4c35c9c66cb3c1fd59b8b9","ref":"refs/heads/fix-most-types-in-util-init","pushedAt":"2024-05-06T08:19:24.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"Address PR comments","shortMessageHtmlLink":"Address PR comments"}},{"before":"4b48ace25a75ebcf82ab8a48a2fac1e520ab971b","after":"49473e06909c66636b315d910ce72f1db9bc0f41","ref":"refs/heads/fix-most-types-in-util-init","pushedAt":"2024-05-06T03:50:35.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"Address PR comments","shortMessageHtmlLink":"Address PR comments"}},{"before":"f0a9ef5d096a671bc9ab66f4deffd6852a1f1284","after":"4b48ace25a75ebcf82ab8a48a2fac1e520ab971b","ref":"refs/heads/fix-most-types-in-util-init","pushedAt":"2024-05-06T03:25:27.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"fixup! Fix types in beets.util.__init__","shortMessageHtmlLink":"fixup! Fix types in beets.util.__init__"}},{"before":"13dea1349e90e8d5d85062d45109bb418d130897","after":"f0a9ef5d096a671bc9ab66f4deffd6852a1f1284","ref":"refs/heads/fix-most-types-in-util-init","pushedAt":"2024-05-05T17:18:30.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"Address PR comments","shortMessageHtmlLink":"Address PR comments"}},{"before":"6c0b63f755ffbe7f1efd208725d1bc43fd1758cd","after":"13dea1349e90e8d5d85062d45109bb418d130897","ref":"refs/heads/fix-most-types-in-util-init","pushedAt":"2024-05-05T16:46:51.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"Address PR comments","shortMessageHtmlLink":"Address PR comments"}},{"before":"adac9260b26f9092ac4b4bb8c710e66725dd73d2","after":"6c0b63f755ffbe7f1efd208725d1bc43fd1758cd","ref":"refs/heads/fix-most-types-in-util-init","pushedAt":"2024-05-04T12:46:37.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"Fix types in beets.util.__init__","shortMessageHtmlLink":"Fix types in beets.util.__init__"}},{"before":null,"after":"079e946f336007cc4e2b6c1a48ef00016683f8e3","ref":"refs/heads/fix-legalize-path","pushedAt":"2024-05-04T12:35:00.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"Fix legalize_path types\n\nMypy was not happy here because `_legalize_stage` function\nimplementation concatenates `path` and `extension` parameters, implying\nthat their types need to match.\n\nYou can see that initially `path` parameter was defined as a `str` while\n`extension` was `bytes`.\n\nIn reality, depending on the `fragment` parameter value, `extension` was\nsometimes provided as a `str` and sometimes as `bytes`. The same\nparameter decided whether `path` gets converted into `bytes` within\n`_legalize_stage` implementation. No surprise that mypy was confused\nhere.\n\n`_legalize_stage` is only used within `Item.destination` method\nimplementation which accepts where `fragment` is defined. I determined\nthat the `fragment` parameter controls the form of the output path:\n\n- fragment=False returned path absolute path *as bytes* (default)\n- fragment=True returned path relative to the library directory as *str*.\n\nGiven the above, this commit\n\n1. Renames `fragment` parameter to `relative_to_libdir` for clarity\n2. Makes `Item.destination` to return the same type in both cases.\n I picked `bytes` since that's the type that majority of the code\n using this method expects.\n\n I converted the output path to str for the code that has been\n expecting a string here.\n3. Decouples `_legalize_stage` and `_legalize_path` implementations from\n the `relative_to_libdir`. The logic now uses `str` type only.","shortMessageHtmlLink":"Fix legalize_path types"}},{"before":null,"after":"adac9260b26f9092ac4b4bb8c710e66725dd73d2","ref":"refs/heads/fix-most-types-in-util-init","pushedAt":"2024-05-04T12:30:27.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"Fix types in beets.util.__init__","shortMessageHtmlLink":"Fix types in beets.util.__init__"}},{"before":"7a256764c2f2645e4d5cd71b2cffa770e6768613","after":"e53c7c786cbac62db08d0d87679545f69950c72f","ref":"refs/heads/fix-util-init-types","pushedAt":"2024-05-04T10:49:52.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"fixup! Fix types in beets.util.__init__","shortMessageHtmlLink":"fixup! Fix types in beets.util.__init__"}},{"before":"e807465b0af03d1cd2566880dcac059c2dfbe36e","after":"7a256764c2f2645e4d5cd71b2cffa770e6768613","ref":"refs/heads/fix-util-init-types","pushedAt":"2024-05-04T10:49:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"fixup! Fix types in beets.util.__init__","shortMessageHtmlLink":"fixup! Fix types in beets.util.__init__"}},{"before":"34a59f98b3bc73bf3f2593150c5eb75427f4247c","after":"329098a0b4f009b91d0a981112ffe0a9f96484f3","ref":"refs/heads/master","pushedAt":"2024-05-04T10:21:51.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"wisp3rwind","name":"Benedikt","path":"/wisp3rwind","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/17089248?s=80&v=4"},"commit":{"message":"Merge pull request #5220 from snejus/improve-build-output-and-coverage\n\nImprove GitHub build output and configure coverage","shortMessageHtmlLink":"Merge pull request #5220 from snejus/improve-build-output-and-coverage"}},{"before":"7154331eb0718a8efbff89d9b24751c7b73bc31e","after":"e807465b0af03d1cd2566880dcac059c2dfbe36e","ref":"refs/heads/fix-util-init-types","pushedAt":"2024-05-03T23:10:39.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"Define paths to lint in mypy configuration","shortMessageHtmlLink":"Define paths to lint in mypy configuration"}},{"before":"49dbfef682842a4c7ae69a66174ea4df10c98b06","after":"7154331eb0718a8efbff89d9b24751c7b73bc31e","ref":"refs/heads/fix-util-init-types","pushedAt":"2024-05-01T16:02:12.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"Define paths to lint in mypy configuration","shortMessageHtmlLink":"Define paths to lint in mypy configuration"}},{"before":"4354ba4f9791b5f8ab6a1ac0c3243963e255131b","after":"34a59f98b3bc73bf3f2593150c5eb75427f4247c","ref":"refs/heads/master","pushedAt":"2024-05-01T15:36:53.000Z","pushType":"pr_merge","commitsCount":5,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"Merge pull request #5210 from snejus/add-in-query-and-remove-named-query\n\nEnforce the same interface across all `...Query` implementations\r\n\r\n### Make `PlaylistQuery` a `FieldQuery`\r\nWhile working on the DB optimization and looking at updates upstream I discovered one query which does not follow the `FieldQuery` interface —`PlaylistQuery`, so I looked into it in more detail and ended up integrating it as a `FieldQuery`.\r\n\r\nOne special thing about it is that it uses **IN** SQL operator, so I added implementation for this sort of query outside the playlist context, see `InQuery`.\r\n\r\nOtherwise, it seems like `PlaylistQuery` is a field query with a special way of resolving values it wants to query. In the future, we may want to consider moving this kind of custom _initialization_ logic away from `init` methods to factory/@classmethod: this should make it more clear that the purpose of such logic is to resolve the data that is required to define a particular `FieldQuery` class fully.\r\n\r\n\r\n### Remove `NamedQuery` since it is unused\r\n\r\nThis simplifies query parsing logic in `queryparse.py`. We know that this logic can only receive `FieldQuery` classes thus I adjusted types and removed the logic that handles other cases.\r\n\r\nEffectively, this means that the query parsing logic does not need to care whether the query is named by the corresponding DB field. Instead, queries like `SingletonQuery` and `PlaylistQuery` are initialized with the same data as others and take things from there themselves: in this case they translate `singleton` and `playlist` queries to the underlying DB filters.","shortMessageHtmlLink":"Merge pull request #5210 from snejus/add-in-query-and-remove-named-query"}},{"before":"0109ca195871244f908b1a62b1f03c2aac6c2e44","after":"49dbfef682842a4c7ae69a66174ea4df10c98b06","ref":"refs/heads/fix-util-init-types","pushedAt":"2024-05-01T10:14:09.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"Define paths to lint in mypy configuration","shortMessageHtmlLink":"Define paths to lint in mypy configuration"}},{"before":"a61d6c25f4ce75287da54bf8b4058fab6d8821c7","after":"0109ca195871244f908b1a62b1f03c2aac6c2e44","ref":"refs/heads/fix-util-init-types","pushedAt":"2024-05-01T09:57:11.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"Define paths to lint in mypy configuration","shortMessageHtmlLink":"Define paths to lint in mypy configuration"}},{"before":null,"after":"a61d6c25f4ce75287da54bf8b4058fab6d8821c7","ref":"refs/heads/fix-util-init-types","pushedAt":"2024-05-01T09:55:07.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"snejus","name":"Šarūnas Nejus","path":"/snejus","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/16212750?s=80&v=4"},"commit":{"message":"Define paths to lint in mypy configuration","shortMessageHtmlLink":"Define paths to lint in mypy configuration"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAERmPsxgA","startCursor":null,"endCursor":null}},"title":"Activity · beetbox/beets"}