penman.codec

Serialization of PENMAN graphs.

class penman.codec.PENMANCodec(model=None)[source]

An encoder/decoder for PENMAN-serialized graphs.

decode(s)[source]

Deserialize PENMAN-notation string s into its Graph object.

Parameters

s – a string containing a single PENMAN-serialized graph

Returns

The Graph object described by s.

Example

>>> from penman.codec import PENMANCodec
>>> codec = PENMANCodec()
>>> codec.decode('(b / bark-01 :ARG0 (d / dog))')
<Graph object (top=b) at ...>
iterdecode(lines)[source]

Yield graphs parsed from lines.

Parameters

lines – a string or open file with PENMAN-serialized graphs

Returns

The Graph objects described in lines.

parse(s)[source]

Parse PENMAN-notation string s into its tree structure.

Parameters

s – a string containing a single PENMAN-serialized graph

Returns

The tree structure described by s.

Example

>>> from penman.codec import PENMANCodec
>>> codec = PENMANCodec()
>>> codec.parse('(b / bark-01 :ARG0 (d / dog))')  # noqa
Tree(('b', [('/', 'bark-01'), (':ARG0', ('d', [('/', 'dog')]))]))
iterparse(lines)[source]

Yield trees parsed from lines.

Parameters

lines – a string or open file with PENMAN-serialized graphs

Returns

The Tree object described in lines.

parse_triples(s)[source]

Parse a triple conjunction from s.

encode(g, top=None, indent=- 1, compact=False)[source]

Serialize the graph g into PENMAN notation.

Parameters
  • g – the Graph object

  • top – if given, the node to use as the top in serialization

  • indent – how to indent formatted strings

  • compact – if True, put initial attributes on the first line

Returns

the PENMAN-serialized string of the Graph g

Example

>>> from penman.graph import Graph
>>> from penman.codec import PENMANCodec
>>> codec = PENMANCodec()
>>> codec.encode(Graph([('h', 'instance', 'hi')]))
'(h / hi)'
format(tree, indent=- 1, compact=False)[source]

Format tree into a PENMAN string.

format_triples(triples, indent=True)[source]

Return the formatted triple conjunction of triples.

Parameters
  • triples – an iterable of triples

  • indent – how to indent formatted strings

Returns

the serialized triple conjunction of triples

Example

>>> from penman.codec import PENMANCodec
>>> codec = PENMANCodec()
>>> codec.format_triples([('a', ':instance', 'alpha'),
...                       ('a', ':ARG0', 'b'),
...                       ('b', ':instance', 'beta')])
...
'instance(a, alpha) ^\nARG0(a, b) ^\ninstance(b, beta)'