<commit_before># -*- encoding: utf-8 -*-
import collections
from consort.tools.HashCachingObject import HashCachingObject


class CompositeMusicSpecifier(HashCachingObject):

    ### CLASS VARIABLES ###

    __slots__ = (
        '_include_inner_starts',
        '_include_inner_stops',
        '_primary',
        '_rotation_indices',
        '_secondary',
        )

    ### INITIALIZER ###

    def __init__(
        self,
        primary=None,
        secondary=None,
        include_inner_starts=None,
        include_inner_stops=None,
        rotation_indices=None,
        ):
        import consort
        HashCachingObject.__init__(self)
        if include_inner_starts is not None:
            include_inner_starts = bool(include_inner_starts)
        self._include_inner_starts = include_inner_starts
        if include_inner_stops is not None:
            include_inner_stops = bool(include_inner_stops)
        self._include_inner_stops = include_inner_stops
        if primary is not None:
            assert isinstance(primary, consort.MusicSpecifier)
        self._primary = primary
        if rotation_indices is not None:
            if not isinstance(rotation_indices, collections.Sequence):
                rotation_indices = int(rotation_indices)
                rotation_indices = (rotation_indices,)
            rotation_indices = tuple(rotation_indices)
        self._rotation_indices = rotation_indices
        if secondary is not None:
            assert isinstance(secondary, consort.MusicSpecifier)
        self._secondary = secondary

    ### PUBLIC PROPERTIES ###

    @property
    def include_inner_starts(self):
        return self._include_inner_starts

    @property
    def include_inner_stops(self):
        return self._include_inner_stops

    @property
    def primary(self):
        return self._primary

    @property
    def rotation_indices(self):
        return self._rotation_indices

    @property
    def secondary(self):
        return self._secondary<commit_msg>Extended CompositeMusicSpecifier.<commit_after># -*- encoding: utf-8 -*-
import collections
from consort.tools.HashCachingObject import HashCachingObject


class CompositeMusicSpecifier(HashCachingObject):

    ### CLASS VARIABLES ###

    __slots__ = (
        '_include_inner_starts',
        '_include_inner_stops',
        '_primary_music_specifier',
        '_primary_voice_name',
        '_rotation_indices',
        '_secondary_music_specifier',
        '_secondary_voice_name',
        )

    ### INITIALIZER ###

    def __init__(
        self,
        include_inner_starts=None,
        include_inner_stops=None,
        primary_music_specifier=None,
        primary_voice_name=None,
        rotation_indices=None,
        secondary_music_specifier=None,
        secondary_voice_name=None,
        ):
        import consort
        HashCachingObject.__init__(self)
        if include_inner_starts is not None:
            include_inner_starts = bool(include_inner_starts)
        self._include_inner_starts = include_inner_starts
        if include_inner_stops is not None:
            include_inner_stops = bool(include_inner_stops)
        self._include_inner_stops = include_inner_stops
        if primary_music_specifier is not None:
            assert isinstance(primary_music_specifier, consort.MusicSpecifier)
        self._primary_music_specifier = primary_music_specifier
        if primary_voice_name is not None:
            primary_voice_name = str(primary_voice_name)
        self._primary_voice_name = primary_voice_name
        if rotation_indices is not None:
            if not isinstance(rotation_indices, collections.Sequence):
                rotation_indices = int(rotation_indices)
                rotation_indices = (rotation_indices,)
            rotation_indices = tuple(rotation_indices)
        self._rotation_indices = rotation_indices
        if secondary_music_specifier is not None:
            assert isinstance(secondary_music_specifier, consort.MusicSpecifier)
        self._secondary_music_specifier = secondary_music_specifier
        if secondary_voice_name is not None:
            secondary_voice_name = str(secondary_voice_name)
        self._secondary_voice_name = secondary_voice_name

    ### PUBLIC PROPERTIES ###

    @property
    def include_inner_starts(self):
        return self._include_inner_starts

    @property
    def include_inner_stops(self):
        return self._include_inner_stops

    @property
    def primary_music_specifier(self):
        return self._primary_music_specifier

    @property
    def primary_voice_name(self):
        return self._primary_voice_name

    @property
    def rotation_indices(self):
        return self._rotation_indices

    @property
    def secondary_music_specifier(self):
        return self._secondary_music_specifier

    @property
    def secondary_voice_name(self):
        return self._secondary_voice_name
{'fraction_non_alphanumeric': 0.06305758313057583, 'fraction_numerical': 0.00040551500405515005, 'mean_word_length': 2.774292272379495, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4878772', 'n_tokens_mistral': 1367, 'n_tokens_neox': 1319, 'n_words': 258}