API Reference

clique

clique.DIGITS_PATTERN = '(?P<index>(?P<padding>0*)\\d+)'

Pattern for matching an index with optional padding.

clique.PATTERNS = {'frames': '\\.(?P<index>(?P<padding>0*)\\d+)\\.\\D+\\d?$', 'versions': 'v(?P<index>(?P<padding>0*)\\d+)'}

Common patterns that can be passed to assemble().

clique.assemble(iterable, patterns=None, minimum_items=2, case_sensitive=True, assume_padded_when_ambiguous=False)[source]

Assemble items in iterable into discreet collections.

patterns may be specified as a list of regular expressions to limit the returned collection possibilities. Use this when interested in collections that only match specific patterns. Each pattern must contain the expression from DIGITS_PATTERN exactly once.

A selection of common expressions are available in PATTERNS.

Note

If a pattern is supplied as a string it will be automatically compiled to a re.RegexObject instance for convenience.

When patterns is not specified, collections are formed by examining all possible groupings of the items in iterable based around common numerical components.

minimum_items dictates the minimum number of items a collection must have in order to be included in the result. The default is 2, filtering out single item collections.

If case_sensitive is False, then items will be treated as part of the same collection when they only differ in casing. To avoid ambiguity, the resulting collection will always be lowercase. For example, “item.0001.dpx” and “Item.0002.dpx” would be part of the same collection, “item.%04d.dpx”.

Note

Any compiled patterns will also respect the set case sensitivity.

For certain collections it may be ambiguous whether they are padded or not. For example, 1000-1010 can be considered either an unpadded collection or a four padded collection. By default, Clique is conservative and assumes that the collection is unpadded. To change this behaviour, set assume_padded_when_ambiguous to True and any ambiguous collection will have a relevant padding set.

Note

assume_padded_when_ambiguous has no effect on collections that are unambiguous. For example, 1-100 will always be considered unpadded regardless of the assume_padded_when_ambiguous setting.

Return tuple of two lists (collections, remainder) where ‘collections’ is a list of assembled Collection instances and ‘remainder’ is a list of items that did not belong to any collection.

clique.parse(value, pattern='{head}{padding}{tail} [{ranges}]')[source]

Parse value into a Collection.

Use pattern to extract information from value. It may make use of the following keys:

  • head - Common leading part of the collection.

  • tail - Common trailing part of the collection.

  • padding - Padding value in %0d format.

  • range - Total range in the form start-end.

  • ranges - Comma separated ranges of indexes.

  • holes - Comma separated ranges of missing indexes.

Note

holes only makes sense if range or ranges is also present.