Package babel :: Module util

Module util

Various utility classes and functions.
Classes
  odict
Ordered dict implementation.
Functions
iterator
distinct(iterable)
Yield all items in an iterable collection that are distinct.
bool
pathmatch(pattern, filename)
Extended pathname pattern matching.
list
wraptext(text, width=70, initial_indent='', subsequent_indent='')
Simple wrapper around the textwrap.wrap function in the standard library.
basestring
relpath(path, start='.')
Compute the relative path to one path from another.
Variables
tzinfo UTC = <UTC>
tzinfo object for UTC (Universal Time).
tzinfo LOCALTZ = LocalTimezone()
tzinfo object for local time-zone.
Function Details

distinct(iterable)

 

Yield all items in an iterable collection that are distinct.

Unlike when using sets for a similar effect, the original ordering of the items in the collection is preserved by this function.

>>> print list(distinct([1, 2, 1, 3, 4, 4]))
[1, 2, 3, 4]
>>> print list(distinct('foobar'))
['f', 'o', 'b', 'a', 'r']
Parameters:
  • iterable - the iterable collection providing the data
Returns: iterator
the distinct items in the collection

pathmatch(pattern, filename)

 

Extended pathname pattern matching.

This function is similar to what is provided by the fnmatch module in the Python standard library, but:

  • can match complete (relative or absolute) path names, and not just file names, and
  • also supports a convenience pattern ("**") to match files at any directory level.

Examples:

>>> pathmatch('**.py', 'bar.py')
True
>>> pathmatch('**.py', 'foo/bar/baz.py')
True
>>> pathmatch('**.py', 'templates/index.html')
False
>>> pathmatch('**/templates/*.html', 'templates/index.html')
True
>>> pathmatch('**/templates/*.html', 'templates/foo/bar.html')
False
Parameters:
  • pattern - the glob pattern
  • filename - the path name of the file to match against
Returns: bool
True if the path name matches the pattern, False otherwise

wraptext(text, width=70, initial_indent='', subsequent_indent='')

 
Simple wrapper around the textwrap.wrap function in the standard library. This version does not wrap lines on hyphens in words.
Parameters:
  • text - the text to wrap
  • width - the maximum line width
  • initial_indent - string that will be prepended to the first line of wrapped output
  • subsequent_indent - string that will be prepended to all lines save the first of wrapped output
Returns: list
a list of lines

relpath(path, start='.')

 

Compute the relative path to one path from another.

>>> relpath('foo/bar.txt', '').replace(os.sep, '/')
'foo/bar.txt'
>>> relpath('foo/bar.txt', 'foo').replace(os.sep, '/')
'bar.txt'
>>> relpath('foo/bar.txt', 'baz').replace(os.sep, '/')
'../foo/bar.txt'
Returns: basestring
the relative path