Container

class scoretools.Container(music=None, is_simultaneous=None, name=None)

Container.

>>> import abjad

Intializes from string:

>>> container = abjad.Container("c'4 e'4 d'4 e'8 f'8")
>>> show(container) 

Intializes from components:

>>> notes = [
...     abjad.Note("c'4"),
...     abjad.Note("e'4"),
...     abjad.Note("d'4"),
...     abjad.Note("e'8"),
...     abjad.Note("f'8"),
...     ]
>>> container = abjad.Container(notes)
>>> show(container) 

Intializes from selections:

>>> notes = [
...     abjad.Note("c'4"),
...     abjad.Note("e'4"),
...     abjad.Note("d'4"),
...     abjad.Note("e'8"),
...     abjad.Note("f'8"),
...     ]
>>> selection = abjad.select(notes)
>>> container = abjad.Container(selection)
>>> show(container) 

Intializes from mixed components and selections:

>>> items = [
...     abjad.Note("c'4"),
...     abjad.select(abjad.Note("e'4")),
...     abjad.select(abjad.Note("d'4")),
...     abjad.Note("e'8"),
...     abjad.Note("f'8"),
...     ]
>>> container = abjad.Container(items)
>>> show(container) 

Containers are iterables:

>>> import collections
>>> container = abjad.Container("c'4 e'4 d'4 e'8 f'8")
>>> isinstance(container, collections.Iterable)
True

Containers are not sequences because containers do not implement reverse:

>>> container = abjad.Container("c'4 e'4 d'4 e'8 f'8")
>>> isinstance(container, collections.Sequence)
False

Lineage

digraph InheritanceGraph { graph [background=transparent, bgcolor=transparent, color=lightslategrey, fontname=Arial, outputorder=edgesfirst, overlap=prism, penwidth=2, rankdir=LR, root="__builtin__.object", splines=spline, style="dotted, rounded", truecolor=true]; node [colorscheme=pastel19, fontname=Arial, fontsize=12, penwidth=2, style="filled, rounded"]; edge [color=lightsteelblue2, penwidth=2]; subgraph cluster_abctools { graph [label=abctools]; "abjad.tools.abctools.AbjadObject.AbjadObject" [color=1, group=0, label=AbjadObject, shape=box]; "abjad.tools.abctools.AbjadObject.AbstractBase" [color=1, group=0, label=AbstractBase, shape=box]; "abjad.tools.abctools.AbjadObject.AbstractBase" -> "abjad.tools.abctools.AbjadObject.AbjadObject"; } subgraph cluster_scoretools { graph [label=scoretools]; "abjad.tools.scoretools.AcciaccaturaContainer.AcciaccaturaContainer" [color=3, group=2, label=AcciaccaturaContainer, shape=box]; "abjad.tools.scoretools.AfterGraceContainer.AfterGraceContainer" [color=3, group=2, label=AfterGraceContainer, shape=box]; "abjad.tools.scoretools.AppoggiaturaContainer.AppoggiaturaContainer" [color=3, group=2, label=AppoggiaturaContainer, shape=box]; "abjad.tools.scoretools.Cluster.Cluster" [color=3, group=2, label=Cluster, shape=box]; "abjad.tools.scoretools.Component.Component" [color=3, group=2, label=Component, shape=oval, style=bold]; "abjad.tools.scoretools.Container.Container" [color=black, fontcolor=white, group=2, label=<<B>Container</B>>, shape=box, style="filled, rounded"]; "abjad.tools.scoretools.Context.Context" [color=3, group=2, label=Context, shape=box]; "abjad.tools.scoretools.GraceContainer.GraceContainer" [color=3, group=2, label=GraceContainer, shape=box]; "abjad.tools.scoretools.Measure.Measure" [color=3, group=2, label=Measure, shape=box]; "abjad.tools.scoretools.Score.Score" [color=3, group=2, label=Score, shape=box]; "abjad.tools.scoretools.Staff.Staff" [color=3, group=2, label=Staff, shape=box]; "abjad.tools.scoretools.StaffGroup.StaffGroup" [color=3, group=2, label=StaffGroup, shape=box]; "abjad.tools.scoretools.Tuplet.Tuplet" [color=3, group=2, label=Tuplet, shape=box]; "abjad.tools.scoretools.Voice.Voice" [color=3, group=2, label=Voice, shape=box]; "abjad.tools.scoretools.Component.Component" -> "abjad.tools.scoretools.Container.Container"; "abjad.tools.scoretools.Container.Container" -> "abjad.tools.scoretools.AfterGraceContainer.AfterGraceContainer"; "abjad.tools.scoretools.Container.Container" -> "abjad.tools.scoretools.Cluster.Cluster"; "abjad.tools.scoretools.Container.Container" -> "abjad.tools.scoretools.Context.Context"; "abjad.tools.scoretools.Container.Container" -> "abjad.tools.scoretools.GraceContainer.GraceContainer"; "abjad.tools.scoretools.Container.Container" -> "abjad.tools.scoretools.Measure.Measure"; "abjad.tools.scoretools.Container.Container" -> "abjad.tools.scoretools.Tuplet.Tuplet"; "abjad.tools.scoretools.Context.Context" -> "abjad.tools.scoretools.Score.Score"; "abjad.tools.scoretools.Context.Context" -> "abjad.tools.scoretools.Staff.Staff"; "abjad.tools.scoretools.Context.Context" -> "abjad.tools.scoretools.StaffGroup.StaffGroup"; "abjad.tools.scoretools.Context.Context" -> "abjad.tools.scoretools.Voice.Voice"; "abjad.tools.scoretools.GraceContainer.GraceContainer" -> "abjad.tools.scoretools.AcciaccaturaContainer.AcciaccaturaContainer"; "abjad.tools.scoretools.GraceContainer.GraceContainer" -> "abjad.tools.scoretools.AppoggiaturaContainer.AppoggiaturaContainer"; } subgraph cluster_builtins { graph [label=builtins]; "builtins.object" [color=2, group=1, label=object, shape=box]; } "abjad.tools.abctools.AbjadObject.AbjadObject" -> "abjad.tools.scoretools.Component.Component"; "builtins.object" -> "abjad.tools.abctools.AbjadObject.AbstractBase"; }

Bases

Attribute summary

append(component) Appends component to container.
extend(argument) Extends container with argument.
index(component) Returns index of component in container.
insert(i, component[, fracture_spanners]) Inserts component at index i in container.
is_simultaneous Is true when container is simultaneous.
name Gets and sets name of container.
pop([i]) Pops component from container at index i.
remove(component) Removes component from container.
reverse() Reverses contents of container.
__contains__(argument) Is true when argument appears in container.
__copy__(*arguments) Copies component with indicators but without children of component or spanners attached to component.
__delitem__(i) Deletes components(s) at index i in container.
__eq__(argument) Is true when ID of argument equals ID of Abjad object.
__format__([format_specification]) Formats component.
__getitem__(argument) Gets item or slice identified by argument.
__graph__([spanner]) Graphviz graph representation of container.
__hash__() Hashes Abjad object.
__illustrate__() Illustrates component.
__iter__() Iterates container.
__len__() Gets number of items in container.
__mul__(n) Copies component n times and detaches spanners.
__ne__(argument) Is true when Abjad object does not equal argument.
__repr__() Gets interpreter representation of leaf.
__rmul__(n) Copies component n times and detach spanners.
__setitem__(i, argument) Sets container i equal to argument.

Read/write properties

Container.is_simultaneous

Is true when container is simultaneous. Otherwise false.

Gets simultaneity status of container:

>>> container = abjad.Container()
>>> container.append(abjad.Voice("c'8 d'8 e'8"))
>>> container.append(abjad.Voice('g4.'))
>>> show(container) 
>>> container.is_simultaneous is None
True

Sets simultaneity status of container:

>>> container = abjad.Container()
>>> container.append(abjad.Voice("c'8 d'8 e'8"))
>>> container.append(abjad.Voice('g4.'))
>>> show(container) 
>>> container.is_simultaneous = True
>>> show(container) 

Defaults to false.

Set to true or false.

Returns true or false.

Container.name

Gets and sets name of container.

Gets container name:

>>> container = abjad.Container("c'4 d'4 e'4 f'4")
>>> show(container) 
>>> container.name is None
True

Sets container name:

>>> container = abjad.Container(
...     "c'4 d'4 e'4 f'4",
...     name='Special',
...     )
>>> show(container) 
>>> container.name
'Special'

Container name does not appear in LilyPond output:

>>> f(container)
{
    c'4
    d'4
    e'4
    f'4
}

Defaults to none.

Set to string or none.

Returns string or none.

Methods

Container.append(component)

Appends component to container.

Appends note to container:

>>> container = abjad.Container("c'4 ( d'4 f'4 )")
>>> show(container) 
>>> container.append(abjad.Note("e'4"))
>>> show(container) 

Returns none.

Container.extend(argument)

Extends container with argument.

Extends container with three notes:

>>> container = abjad.Container("c'4 ( d'4 f'4 )")
>>> show(container) 
>>> notes = [abjad.Note("e'32"), abjad.Note("d'32"), abjad.Note("e'16")]
>>> container.extend(notes)
>>> show(container) 

Returns none.

Container.index(component)

Returns index of component in container.

Gets index of last element in container:

>>> container = abjad.Container("c'4 d'4 f'4 e'4")
>>> show(container) 
>>> note = container[-1]
>>> note
Note("e'4")
>>> container.index(note)
3

Returns nonnegative integer.

Container.insert(i, component, fracture_spanners=False)

Inserts component at index i in container.

Inserts note. Does not fracture spanners:

>>> container = abjad.Container([])
>>> container.extend("fs16 cs' e' a'")
>>> container.extend("cs''16 e'' cs'' a'")
>>> container.extend("fs'16 e' cs' fs")
>>> slur = abjad.Slur(direction=Down)
>>> abjad.attach(slur, container[:])
>>> show(container) 
>>> container.insert(-4, abjad.Note("e'4"), fracture_spanners=False)
>>> show(container) 

Inserts note. Fractures spanners:

>>> container = abjad.Container([])
>>> container.extend("fs16 cs' e' a'")
>>> container.extend("cs''16 e'' cs'' a'")
>>> container.extend("fs'16 e' cs' fs")
>>> slur = abjad.Slur(direction=Down)
>>> abjad.attach(slur, container[:])
>>> show(container) 
>>> container.insert(-4, abjad.Note("e'4"), fracture_spanners=True)
>>> show(container) 

Returns none.

Container.pop(i=-1)

Pops component from container at index i.

Pops last element from container:

>>> container = abjad.Container("c'4 ( d'4 f'4 ) e'4")
>>> show(container) 
>>> container.pop()
Note("e'4")
>>> show(container) 

Returns component.

Container.remove(component)

Removes component from container.

Removes note from container:

>>> container = abjad.Container("c'4 ( d'4 f'4 ) e'4")
>>> show(container) 
>>> note = container[2]
>>> note
Note("f'4")
>>> container.remove(note)
>>> show(container) 

Returns none.

Container.reverse()

Reverses contents of container.

Reverses staff:

>>> staff = abjad.Staff("c'8 [ d'8 ] e'8 ( f'8 )")
>>> show(staff) 
>>> staff.reverse()
>>> show(staff) 

Returns none.

Special methods

Container.__contains__(argument)

Is true when argument appears in container. Otherwise false.

Returns true or false.

(Component).__copy__(*arguments)

Copies component with indicators but without children of component or spanners attached to component.

Returns new component.

Container.__delitem__(i)

Deletes components(s) at index i in container.

Deletes first tuplet in voice:

>>> voice = abjad.Voice()
>>> voice.append(abjad.Tuplet((2, 3), "c'4 d'4 e'4"))
>>> voice.append(abjad.Tuplet((2, 3), "e'4 d'4 c'4"))
>>> leaves = abjad.select(voice).by_leaf()
>>> abjad.attach(abjad.Slur(), leaves)
>>> show(voice) 
>>> tuplet_1 = voice[0]
>>> del(voice[0])

First tuplet no longer appears in voice:

>>> show(voice) 
>>> abjad.inspect(voice).is_well_formed()
True

First tuplet is no longer slurred but is still well-formed:

>>> show(tuplet_1) 
>>> abjad.inspect(tuplet_1).is_well_formed()
True

Withdraws component(s) from crossing spanners.

Preserves spanners that component(s) cover(s).

Returns none.

(AbjadObject).__eq__(argument)

Is true when ID of argument equals ID of Abjad object. Otherwise false.

Returns true or false.

(Component).__format__(format_specification='')

Formats component.

Set format_specification to ‘’, ‘lilypond’ or ‘storage’.

Returns string.

Container.__getitem__(argument)

Gets item or slice identified by argument.

Traverses top-level items only.

Returns component.

Container.__graph__(spanner=None, **keywords)

Graphviz graph representation of container.

Returns Graphviz graph.

(AbjadObject).__hash__()

Hashes Abjad object.

Required to be explicitly redefined on Python 3 if __eq__ changes.

Returns integer.

(Component).__illustrate__()

Illustrates component.

Returns LilyPond file.

Container.__iter__()

Iterates container.

Abjad containers are iterables:

>>> import collections
>>> container = abjad.Container()
>>> isinstance(container, collections.Iterable)
True

Abjad containers are not sequences:

>>> import collections
>>> container = abjad.Container()
>>> isinstance(container, collections.Sequence)
False

Yields container elements.

Returns generator.

Container.__len__()

Gets number of items in container.

Returns nonnegative integer.

(Component).__mul__(n)

Copies component n times and detaches spanners.

Returns list of new components.

(AbjadObject).__ne__(argument)

Is true when Abjad object does not equal argument. Otherwise false.

Returns true or false.

(Component).__repr__()

Gets interpreter representation of leaf.

Returns string.

(Component).__rmul__(n)

Copies component n times and detach spanners.

Returns list of new components.

Container.__setitem__(i, argument)

Sets container i equal to argument. Finds spanners that dominate self[i] and children of self[i]. Replaces contents at self[i] with ‘argument’. Reattaches spanners to new contents. Always leaves score tree in tact.

Returns none.