travis-ci badge badge

Search query parser supporting Invenio and SPIRES search syntax.



Invenio-Query-Parser is on PyPI so all you need is:

$ pip install invenio-query-parser


The easiest way is to use pypeg2 directly with Main.

import pypeg2
from invenio_query_parser.parser import Main
pypeg2.parse('author:"Ellis"', Main)



Version 0.4.0 (released 2015-11-12):

  • Removes support for Python 2.6.
  • Adds experimental support for Elasticsearch query generation.
  • Adds MatchUnit walker for testing data against a query.
  • Adds Python 3.5 classifier and enables it in test matrix.
  • Fixes ‘not’ operator usage at the beginning of the query and after an ‘or’ operator.

Version 0.3.0 (released 2015-07-29):

  • Allows search keywords to contain dots to point to subfield content, i.e. Ellis.

Version 0.2.0 (released 2014-12-10):

  • Initial public release.
  • Adds Python2/Python3 compatibility layer. (#2)
  • Adds new Sphinx documentation page. (#3)
  • Adds simple inheritance for visitor pattern and separates SPIRES syntax parser to contrib module. (#7)

Version 0.1.0 (release 2014-10-13):

  • Initial private release. Includes code developed by Alessio Deiana and Federico Poli.


Bug reports, feature requests, and other contributions are welcome. If you find a demonstrable problem that is caused by the code of this library, please:

  1. Search for already reported problems.
  2. Check if the issue has been fixed or is still reproducible on the latest master branch.
  3. Create an issue with a test case.

If you create a feature branch, you can run the tests to ensure everything is operating correctly:

$ python test


======= 146 passed in 1.90 seconds ======


Invenio-Query-Parser is developed for the Invenio digital library software.

Contact us at