Tools to handle bibliographic metadata

This module provides functionality to handle bibliographic metadata, i.e. structured metadata describing sources of data/research.

class clldutils.source.Source(genre, id_, *args, _check_id=True, _lowercase=False, _strip_tex=None, **kw)[source]

Bibliographic metadata about a source used for some analysis in a linguistic database.

Following BibTeX-style, a Source is just an ordered list of key-value pairs, augmented with an id (a.k.a. BibTeX citekey) and a genre (a.k.a. Entry Types).

Variables:
  • id (str) – The citekey of a source.

  • genre (str) – The entry type of a source.

Note

We restrict the allowed syntax for the id to make sure it can safely be used as path component in a URL. To skip this check, pass _check_id=False to the constructor.

Usage:

>>> from clldutils.source import Source
>>> src = Source('article', 'Meier2000', author='Meier', year='2000', title='The Title')
>>> print(src.bibtex())
@article{Meier2000,
  author = {Meier},
  year   = {2000},
  title  = {The Title}
}
>>> print(src)
Meier. 2000. The Title.
Parameters:
  • genre (str) –

  • id_ (str) –

  • _check_id (bool) –

  • _lowercase (bool) –

  • _strip_tex (typing.Optional[typing.Iterable[str]]) –

classmethod from_entry(key, entry, **_kw)[source]

Factory method to initialize a Source instance from a pybtex.database.Entry.

Parameters:
  • key (str) – Citation key, e.g. a key in pybtex.database.BibliographyData.entries.

  • entrypybtex.database.Entry

  • _kw – Keyword arguments passed through to cls.__init__

Return type:

clldutils.source.Source

classmethod from_bibtex(bibtexString, lowercase=False, _check_id=True)[source]

Initialize a Source object from the data in a BibTeX record.

Note

We support somewhat limited BibTeX syntax. Thus, it’s best to feed preprocessed BibTeX (e.g. using a tool such as bibtool). In particular, we assume all key-value-pairs to be on single lines, i.e. we don’t support multiline values. Alternatively, you can parse BibTeX data using pybtex and feed pybtex.database.Entry objects to Source.from_entry().

Parameters:
  • bibtexString (str) –

  • lowercase (bool) –

  • _check_id (bool) –

Return type:

clldutils.source.Source

bibtex()[source]

Represent the source in BibTeX format.

Return type:

str

Returns:

string encoding the source in BibTeX syntax.

text(markdown=False)[source]

Linearize the bib source according to the rules of the unified style.

Parameters:

markdown – If True, italics are used to distinguish volume titles.

Return type:

str

  • Book: author. year. booktitle. (series, volume.) address: publisher.

  • Article: author. year. title. journal volume(issue). pages.

  • Incollection: author. year. title. In editor (ed.), booktitle, pages. address: publisher.