§
    ƒØjã"  ã                  óÎ  — d dl mZ d dlZd dlmZ dZdZdZdefdefd	efgZe 	                    ¦   «          d
Z
dZdZdZdZdZde
fdefdefdefdefdefgZe 	                    ¦   «          dZdZdZdZdZdZdZdefdefdefd efd!efd"efd#efgZe 	                    ¦   «           G d$„ d%ej        ¦  «        Z G d&„ d'ej        ¦  «        Zed(k    rd dlZ ej        e¦  «         dS dS ))é    )ÚannotationsN)Úprebasez¿True by default. If True,
    :meth:`~music21.figuredBass.possibility.isIncomplete` is applied to all possibA,
    and all those possibilities for which the method returns False are retained.a   12 by default. A number, in semitones,
    representing the maxSemitoneSeparation argument provided to
    :meth:`~music21.figuredBass.possibility.upperPartsWithinLimit`.
    Method is applied to all possibA, and all those possibilities for which the method returns
    True are retained.zÀTrue by default. If True,
    :meth:`~music21.figuredBass.possibility.voiceCrossing` is applied to all possibA,
    and all those possibilities for which the method returns False are retained.ÚforbidIncompletePossibilitiesÚupperPartsMaxSemitoneSeparationÚforbidVoiceCrossingzÎTrue by default. If True,
    :meth:`~music21.figuredBass.possibility.parallelFifths` is applied to all
    (possibA, possibB) pairs, and all those pairs for which the method returns
    False are retained.zÏTrue by default. If True,
    :meth:`~music21.figuredBass.possibility.parallelOctaves` is applied to all
    (possibA, possibB) pairs, and all those pairs for which the method returns
    False are retained.zËTrue by default. If True,
    :meth:`~music21.figuredBass.possibility.hiddenFifth` is applied to all
    (possibA, possibB) pairs, and all those pairs for which the method returns
    False are retained.zÌTrue by default. If True,
    :meth:`~music21.figuredBass.possibility.hiddenOctave` is applied to all
    (possibA, possibB) pairs, and all those pairs for which the method returns
    False are retained.zÌTrue by default. If True,
    :meth:`~music21.figuredBass.possibility.voiceOverlap` is applied to all
    (possibA, possibB) pairs, and all those pairs for which the method returns
    False are retained.a*  [] (empty list) by default. Contains (partNumber, maxSeparation)
    pairs provided as arguments
    to :meth:`~music21.figuredBass.possibility.partMovementsWithinLimits`.
    Method is applied to all (possibA, possibB) pairs, and all those pairs
    for which the method returns True are retained.ÚforbidParallelFifthsÚforbidParallelOctavesÚforbidHiddenFifthsÚforbidHiddenOctavesÚforbidVoiceOverlapÚpartMovementLimitszýTrue by default. If True, Segments
    whose :attr:`~music21.figuredBass.segment.Segment.segmentChord` spells out a
    dominant seventh chord are resolved properly by
    using :meth:`~music21.figuredBass.segment.Segment.resolveDominantSeventhSegment`.a  True by default. If True, Segments
    whose :attr:`~music21.figuredBass.segment.Segment.segmentChord` spells out
    a fully-diminished seventh chord are resolved properly by
    using :meth:`~music21.figuredBass.segment.Segment.resolveDiminishedSeventhSegment`.züTrue by default. If True, Segments
    whose :attr:`~music21.figuredBass.segment.Segment.segmentChord` spells out an
    augmented sixth chord are resolved properly by
    using :meth:`~music21.figuredBass.segment.Segment.resolveAugmentedSixthSegment`.a  False by default. If True, Diminished seventh resolutions to the
    tonic will contain a doubled *root*, as opposed to a doubled *third*.
    Rule is ignored (determined in context)
    if :attr:`~music21.figuredBass.segment.Segment.segmentChord` is in first inversion.z`False by default. If True, single possibility rules are applied to
    resolution possibilities.zrFalse by default. If True, consecutive possibility rules are applied
    between (specialPossib, resPossib) pairs.a  True by default. If True, then doublings in the It+6 chord are limited to the
     tonic, or fifth. Setting this to False allows doubling of the root or third, most likely
    through parallel unisons if :attr:`~music21.figuredBass.rules.Rules.forbidParallelOctaves`
    is set to True.ÚresolveDominantSeventhProperlyÚ resolveDiminishedSeventhProperlyÚresolveAugmentedSixthProperlyÚdoubledRootInDim7Ú"applySinglePossibRulesToResolutionÚ'applyConsecutivePossibRulesToResolutionÚ&restrictDoublingsInItalianA6Resolutionc                  ó˜   — e Zd ZU dZd„ eD ¦   «         d„ eD ¦   «         z   d„ eD ¦   «         z   Z eeez   ez   ¦  «        Z	de
d<   d„ Zd„ Zd	S )
ÚRulesaO  
    A Rules object is provided as an input to a :class:`~music21.figuredBass.segment.Segment`,
    and controls the application of methods designed to filter out undesired possibilities in
    a single Segment or undesired progressions between two consecutive Segments.

    The rules are categorized in an identical manner to methods
    in :mod:`~music21.figuredBass.possibility`:

    1) Single Possibility Rules. These rules apply to any possibility within a
    single Segment (possibA), and
    are applied in finding correct possibilities for a Segment
    in :meth:`~music21.figuredBass.segment.Segment.allCorrectSinglePossibilities`.

    2) Consecutive Possibility Rules. These rules apply between any correct
    single possibility in segmentA
    (possibA) and any correct single possibility in segmentB (possibB),
    segmentB coming directly after segmentA.
    They are applied in finding correct (possibA, possibB) pairs between
    two Segments
    in :meth:`~music21.figuredBass.segment.Segment.allCorrectConsecutivePossibilities`.

    3) Special Resolution Rules. These rules apply to Segments
    whose :attr:`~music21.figuredBass.segment.Segment.segmentChord` is an
    augmented sixth, dominant seventh, or diminished seventh chord, and are
    applied as necessary in
    :meth:`~music21.figuredBass.segment.Segment.allCorrectConsecutivePossibilities`.

    >>> from music21.figuredBass import rules
    >>> fbRules = rules.Rules()
    >>> fbRules
    <music21.figuredBass.rules.Rules>
    >>> fbRules.forbidParallelFifths = False
    >>> fbRules.upperPartsMaxSemitoneSeparation = None
    c                ó   — g | ]
}|d          ‘ŒS ©r   © )Ú.0Ú_xs     úŽ/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/music21/figuredBass/rules.pyú
<listcomp>zRules.<listcomp>‰   s   € Ð8Ð8Ð8˜R�2�a”5Ð8Ð8Ð8ó    c                ó   — g | ]
}|d          ‘ŒS r   r   )r   Ú_ys     r   r   zRules.<listcomp>Š   s   € Ð?Ð?Ð?˜r�R˜”UÐ?Ð?Ð?r   c                ó   — g | ]
}|d          ‘ŒS r   r   )r   Ú_zs     r   r   zRules.<listcomp>‹   s   € Ð3Ð3Ð3˜r�R˜”UÐ3Ð3Ð3r   zdict[str, str]Ú	_DOC_ATTRc                ó  — d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        g | _        d| _	        d| _
        d| _        d| _        d| _        d| _        d| _        d| _        g | _        g | _        d S )NTé   F)r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   Ú_upperPartsRemainSameÚ_partPitchLimitsÚ_partsToCheck©Úselfs    r   Ú__init__zRules.__init__’   s¤   € à-1ˆÔ*Ø/1ˆÔ,Ø#'ˆÔ ð %)ˆÔ!Ø%)ˆÔ"Ø"&ˆÔØ#'ˆÔ Ø"&ˆÔØ"$ˆÔð /3ˆÔ+Ø04ˆÔ-Ø-1ˆÔ*Ø!&ˆÔØ27ˆÔ/Ø7<ˆÔ4Ø6:ˆÔ3à%*ˆÔ"Ø "ˆÔØˆÔÐÐr   c                ó   — dS )NÚ r   r)   s    r   Ú_reprInternalzRules._reprInternal­   s   € Øˆrr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚsinglePossibilityDocÚconsecutivePossibilityDocÚspecialResDocÚ
_DOC_ORDERÚdictr#   Ú__annotations__r+   r.   r   r   r   r   r   e   s½   € € € € € € ð!ð !ðF 9Ð8Ð#7Ð8Ñ8Ô8Ø?Ð?Ð%>Ð?Ñ?Ô?ñ@à3Ð3 ]Ð3Ñ3Ô3ñ4€Jð !% ØØ
#ñ	$à
ñ	ñ!ô !€Ið ð ð ñ ð ð  ð  ð6ð ð ð ð r   r   c                  ó   — e Zd ZdS )ÚTestN)r/   r0   r1   r   r   r   r:   r:   ²   s   € € € € € Ø€Dr   r:   Ú__main__)Ú
__future__r   ÚunittestÚmusic21r   Ú!doc_forbidIncompletePossibilitiesÚ#doc_upperPartsMaxSemitoneSeparationÚdoc_forbidVoiceCrossingr3   ÚsortÚdoc_parallelFifthsÚdoc_parallelOctavesÚdoc_hiddenFifthsÚdoc_hiddenOctavesÚdoc_voiceOverlapÚdoc_partMovementLimitsr4   Údoc_domSeventhÚdoc_dimSeventhÚdoc_augSixthÚdoc_doubledRootInDim7Údoc_singleToResÚdoc_consecutiveToResÚdoc_doublingsr5   ÚProtoM21Objectr   ÚTestCaser:   r/   ÚmainTestr   r   r   ú<module>rS      s5  ðð #Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð ð%TÐ !ð'Ð #ð
TÐ ð 9Ð:[Ð\Ø:Ð<_Ð`Ø.Ð0GÐHðJÐ ð × Ò Ñ Ô Ð ðÐ ðÐ ðÐ ðÐ ðÐ ð7Ð ð Ð/Ð0ØÐ1Ð2ØÐ+Ð,ØÐ-Ð.ØÐ+Ð,ØÐ1Ð2ðÐ ð × Ò Ñ  Ô  Ð  ðY€ð[€ðX€ð[Ð ð!€ð1Ð ð€ð 3°NÐCØ4°nÐEØ1°<Ð@Ø%Ð'<Ð=Ø6¸ÐHØ;Ð=QÐRØ:¸MÐJðL€ð × Ò Ñ Ô Ð ðIð Ið Ið Ið IˆGÔ"ñ Iô Ið IðZ	ð 	ð 	ð 	ð 	ˆ8Ôñ 	ô 	ð 	ð ˆzÒÐØ€N€N€NØ€GÔ�TÑÔÐÐÐð Ðr   