Abjad / abjad

Abjad is a Python API for building LilyPond files. Use Abjad to make PDFs of music notation.
https://abjad.github.io
GNU General Public License v3.0
234 stars 41 forks source link

Remove abjad.Multiplier, abjad.Ratio, abjad.NonreducedFraction, abjad.NonreducedRatio #1515

Closed trevorbaca closed 1 year ago

trevorbaca commented 1 year ago

That is:

OLD: abjad.Multiplier
NEW: use built-in fractions.Fraction instead

OLD: abjad.NonreducedFraction
NEW: use (int, int) pair instead

OLD: abjad.NonreducedRatio
NEW: use (int, ...) tuple instead

OLD: abjad.Ratio
NEW: use (int, ...) tuple instead

BREAKING CHANGE. Leaf multiplier now returns a nonreduced fraction.

OLD: Leaf.multiplier could be either multiplier or nonreduced multiplier.
NEW: Leaf.multiplier is always an (int, int) pair.

BREAKING CHANGE. abjad.Tuplet.multiplier has changed:

OLD: abjad.Tuplet.multiplier accepted the following:
     string, pair, duration, fraction, multiplier, nonreduced fraction
NEW: abjad.Tuplet.multiplier accepts only string and pair

OLD: abjad.Tuplet.multiplier returned nonreduced fraction (or none)
NEW: abjad.Tuplet.multiplier returns pair (or none)

OLD:

    >>> abjad.Tuplet("3:2", "c'4 d' e'")
    >>> abjad.Tuplet((2, 3), "c'4 d' e'")
    >>> abjad.Tuplet(abjad.Multiplier(2, 3), "c'4 d' e'")
    >>> abjad.Tuplet(abjad.Fraction(2, 3), "c'4 d' e'")
    >>> abjad.Tuplet(abjad.NonreducedFraction(2, 3), "c'4 d' e'")

NEW:

    >>> abjad.Tuplet("3:2", "c'4 d' e'")
    >>> abjad.Tuplet((2, 3), "c'4 d' e'")

OLD: tuplet.multplier == 1
NEW: tuplet.multplier == (1, 1)
NEW: abjad.Fraction(*tuplet.multplier) == 1

CHANGED. Replaced abjad.Duration.with_denominator().

OLD:
    >>> abjad.Duration(1, 4).with_denominator(16)
    NonreducedFraction(4, 16)

NEW:
    >>> duration = abjad.Duration(1, 4)
    >>> pair = abjad.duration.with_denominator(duration, 16)
    >>> pair
    (4, 16)

    >>> abjad.NonreducedFraction(pair)
    NonreducedFraction(4, 16)

CHANGED. Constrained rhythmtree preprolated duration.

OLD: int, pair, duration, nonreduced fraction
NEW: pair, duration, nonreduced fraction

CHANGED. Set several sequence.py parameters keyword-only.

NEW. Added abjad.duration.pair():

>>> abjad.duration.pair((3, 6))
(3, 6)

>>> abjad.duration.pair(abjad.Fraction(3, 6))
(1, 2)

>>> abjad.duration.pair(abjad.Duration(3, 6))
(1, 2)

>>> abjad.duration.pair(abjad.Offset((3, 6)))
(1, 2)

>>> abjad.duration.pair(abjad.TimeSignature((3, 6)))
(3, 6)

NEW. Added abjad.duration.add_pairs().