{"push_id":616905932,"size":5,"distinct_size":5,"ref":"refs/heads/master","head":"02056058544f8305694dc69d38613928c281b357","before":"aae852e77fabf0f8a7b961edbfe87b33f7d7acf1","commits":[{"sha":"69482b0dfaaab63d8614a09f1f6df06b94beca0a","author":{"email":"c30e9b21d0f9ad60602a1abeb623be2f1d889146@gmail.com","name":"Josiah Wolf Oberholtzer"},"message":"Streamlined TestManager.","distinct":true,"url":"https://api.github.com/repos/Abjad/abjad/commits/69482b0dfaaab63d8614a09f1f6df06b94beca0a"},{"sha":"d0ffbe9986babb4fbed4386c30a93620dc8c7e0b","author":{"email":"c30e9b21d0f9ad60602a1abeb623be2f1d889146@gmail.com","name":"Josiah Wolf Oberholtzer"},"message":"Cleaned up Selection.__eq__().\n\nIt's generally better practice to call `isinstance(x, collections.Sequence)`\nthan `isinstance(x, (list, tuple))`. Obviously, strings pass the former test,\nso an additional `and not isinstance(x, str)` can be added if necessary.","distinct":true,"url":"https://api.github.com/repos/Abjad/abjad/commits/d0ffbe9986babb4fbed4386c30a93620dc8c7e0b"},{"sha":"c2dfb49e262d45e5401b596381366728f6d8af73","author":{"email":"c30e9b21d0f9ad60602a1abeb623be2f1d889146@gmail.com","name":"Josiah Wolf Oberholtzer"},"message":"Merge branch 'master' of github.com:Abjad/abjad","distinct":true,"url":"https://api.github.com/repos/Abjad/abjad/commits/c2dfb49e262d45e5401b596381366728f6d8af73"},{"sha":"9e07a2f2d1dd193b82ff49da1beca4549579d498","author":{"email":"c30e9b21d0f9ad60602a1abeb623be2f1d889146@gmail.com","name":"Josiah Wolf Oberholtzer"},"message":"Merge branch 'master' of github.com:Abjad/abjad","distinct":true,"url":"https://api.github.com/repos/Abjad/abjad/commits/9e07a2f2d1dd193b82ff49da1beca4549579d498"},{"sha":"02056058544f8305694dc69d38613928c281b357","author":{"email":"c30e9b21d0f9ad60602a1abeb623be2f1d889146@gmail.com","name":"Josiah Wolf Oberholtzer"},"message":"Improved Spanner handling in Container._set_item().\n\nThis commit fixes the following edge-case: given a container where the first\nchild shares spanners with the container's previous sibling, or where the last\nchild shares spanners with the container's next sibling, components inserted at\nthe beginning or end of that container will also be properly inserted into\nthose shared spanners.\n\nConsider a staff container four leaves, with the inner two leaves grouped into\ntheir own container:\n\n    >>> staff = Staff(\"c'4 { d'4 e'4 } g'4\")\n\nWe can attach a beam to the leaves in the staff, resulting in expected output:\n\n    >>> beam = Beam()\n    >>> attach(beam, staff.select_leaves())\n    >>> print(format(staff))\n    \\new Staff {\n        c'4 [\n        {\n            d'4\n            e'4\n        }\n        f'4 ]\n    }\n\nThe beam's component list also corresponds with the staff's leaves:\n\n    >>> beam.components\n    Selection(Note(\"c'4\"), Note(\"d'4\"), Note(\"e'4\"), Note(\"f'4\"))\n\nAfter inserting a component into the middle of the inner container, that\ncomponent appears in the beam's component list:\n\n    >>> rest = Rest((1, 4))\n    >>> staff[1].insert(1, rest)\n    >>> rest in beam.components\n    True\n\nHowever, previous to this commit, any component inserted at the beginning or\nend of the inner container would not appear in the beam's component list:\n\n    >>> chord_1 = Chord(\"<c' e' g'>4\")\n    >>> chord_2 = Chord(\"<d' f' a'>4\")\n    >>> staff[1].insert(0, chord_1)\n    >>> staff[1].append(chord_2)\n    >>> chord_1 in beam.components\n    False\n    >>> chord_2 in beam.components\n    False\n    >>> beam.components\n    Selection(Note(\"c'4\"), Note(\"d'4\"), Rest(\"r4\"), Note(\"e'4\"), Note(\"f'4\"))\n\nAfter this commit, both `chord_1` and `chord_2` appear in the beam's component\nlist in the expected locations:\n\n    >>> for component in beam.components:\n    ...     component\n    ...\n    Note(\"c'4\")\n    Chord(\"<c' e' g'>4\")\n    Note(\"d'4\")\n    Rest('r4')\n    Note(\"e'4\")\n    Chord(\"<d' f' a'>4\")\n    Note(\"f'4\")\n\nAll tests pass, and docs continue to build.","distinct":true,"url":"https://api.github.com/repos/Abjad/abjad/commits/02056058544f8305694dc69d38613928c281b357"}]}