def _add_container_identifiers(self): if self.environment == "docs" and not getattr( self, "test_container_identifiers", False ): return segment_name = self.segment_name or "" segment_name = String(segment_name).to_segment_lilypond_identifier() contexts = [] try: context = self.score["Global_Skips"] contexts.append(context) except ValueError: pass try: context = self.score["Global_Rests"] contexts.append(context) except ValueError: pass for voice in iterate(self.score).components(Voice): if inspect(voice).annotation("INTERMITTENT") is True: continue contexts.append(voice) container_to_part_assignment = OrderedDict() for context in contexts: if segment_name: context_identifier = f"{segment_name}_{context.name}" else: context_identifier = context.name context.identifier = f"%*% {context_identifier}" part_container_count = 0 for container in iterate(context).components(Container): if not container.identifier: continue if container.identifier.startswith("%*% Part"): part_container_count += 1 globals_ = globals() part = container.identifier.strip("%*% ") part = eval(part, globals_) suffix = String().base_26(part_container_count).lower() container_identifier = f"{context_identifier}_{suffix}" container_identifier = String(container_identifier) assert container_identifier.is_lilypond_identifier() assert ( container_identifier not in container_to_part_assignment ) timespan = inspect(container).timespan() pair = (part, timespan) container_to_part_assignment[container_identifier] = pair container.identifier = f"%*% {container_identifier}" for staff in iterate(self.score).components(Staff): if segment_name: context_identifier = f"{segment_name}_{staff.name}" else: context_identifier = staff.name staff.identifier = f"%*% {context_identifier}" self._container_to_part_assignment = container_to_part_assignment
def _add_container_identifiers(self): if (self.environment == 'docs' and not getattr(self, 'test_container_identifiers', False)): return segment_name = self.segment_name or '' segment_name = String(segment_name).to_segment_lilypond_identifier() contexts = [] try: context = self.score['Global_Skips'] contexts.append(context) except ValueError: pass try: context = self.score['Global_Rests'] contexts.append(context) except ValueError: pass for voice in iterate(self.score).components(Voice): if inspect(voice).annotation('INTERMITTENT') is True: continue contexts.append(voice) container_to_part_assignment = OrderedDict() for context in contexts: if segment_name: context_identifier = f'{segment_name}_{context.name}' else: context_identifier = context.name context.identifier = f'%*% {context_identifier}' part_container_count = 0 for container in iterate(context).components(Container): if not container.identifier: continue if container.identifier.startswith('%*% Part'): part_container_count += 1 globals_ = globals() part = container.identifier.strip('%*% ') part = eval(part, globals_) suffix = String().base_26(part_container_count).lower() container_identifier = f'{context_identifier}_{suffix}' container_identifier = String(container_identifier) assert container_identifier.is_lilypond_identifier() assert container_identifier not in \ container_to_part_assignment timespan = inspect(container).timespan() pair = (part, timespan) container_to_part_assignment[container_identifier] = pair container.identifier = f'%*% {container_identifier}' for staff in iterate(self.score).components(Staff): if segment_name: context_identifier = f'{segment_name}_{staff.name}' else: context_identifier = staff.name staff.identifier = f'%*% {context_identifier}' self._container_to_part_assignment = container_to_part_assignment
def _add_container_identifiers(self): if self.environment == "docs" and not getattr( self, "test_container_identifiers", False): return segment_name = self.segment_name or "" segment_name = String(segment_name).to_segment_lilypond_identifier() contexts = [] try: context = self.score["Global_Skips"] contexts.append(context) except ValueError: pass try: context = self.score["Global_Rests"] contexts.append(context) except ValueError: pass for voice in iterate(self.score).components(Voice): if inspect(voice).has_indicator(const.INTERMITTENT): continue contexts.append(voice) container_to_part_assignment = OrderedDict() context_name_counts = {} for context in contexts: if context.name is None: message = "all contexts must be named:\n" message += f" {repr(context)}" raise Exception(message) count = context_name_counts.get(context.name, 0) if count == 0: suffixed_context_name = context.name else: suffix = String.base_26(count) suffixed_context_name = f"{context.name}_{suffix}" context_name_counts[context.name] = count + 1 if segment_name: context_identifier = f"{segment_name}_{suffixed_context_name}" else: context_identifier = suffixed_context_name context.identifier = f"%*% {context_identifier}" part_container_count = 0 for container in iterate(context).components(Container): if not container.identifier: continue if container.identifier.startswith("%*% Part"): part_container_count += 1 globals_ = globals() part = container.identifier.strip("%*% ") part = eval(part, globals_) suffix = String().base_26(part_container_count).lower() container_identifier = f"{context_identifier}_{suffix}" container_identifier = String(container_identifier) assert container_identifier.is_lilypond_identifier() assert (container_identifier not in container_to_part_assignment) timespan = inspect(container).timespan() pair = (part, timespan) container_to_part_assignment[container_identifier] = pair container.identifier = f"%*% {container_identifier}" for staff in iterate(self.score).components(Staff): if segment_name: context_identifier = f"{segment_name}_{staff.name}" else: context_identifier = staff.name staff.identifier = f"%*% {context_identifier}" self._container_to_part_assignment = container_to_part_assignment