Metadata-Version: 2.0
Name: annotator
Version: 0.13.2
Summary: Database backend for Annotator (http://annotatorjs.org)
Home-page: http://annotatorjs.org/
Author: Rufus Pollock and Nick Stenning (Open Knowledge Foundation)
Author-email: annotator@okfn.org
License: MIT
Download-URL: https://github.com/openannotation/annotator-store
Keywords: annotation web javascript
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Requires-Dist: elasticsearch (>=1.0,<2)
Requires-Dist: PyJWT (>=0.1.4)
Requires-Dist: iso8601 (>=0.1.4)
Requires-Dist: six
Provides-Extra: docs
Requires-Dist: Sphinx; extra == 'docs'
Provides-Extra: flask
Requires-Dist: Flask (>=0.9,<2); extra == 'flask'
Provides-Extra: testing
Requires-Dist: Flask (>=0.9,<2); extra == 'testing'
Requires-Dist: mock; extra == 'testing'
Requires-Dist: nose; extra == 'testing'
Requires-Dist: coverage; extra == 'testing'

Annotator Store
===============

This is a backend store for `Annotator <http://annotatorjs.org>`__.

The functionality can roughly be separated in two parts:

1. An abstraction layer wrapping Elasticsearch, to easily manage annotation
   storage. It features authorization to filter search results according to
   their permission settings.
2. A Flask blueprint for a web server that exposes an HTTP API to the annotation
   storage. To use this functionality, build this package with the ``[flask]``
   option.

Getting going
-------------

You'll need a recent version of `Python <http://python.org>`__ (Python 2 >=2.6
or Python 3 >=3.3) and `ElasticSearch <http://elasticsearch.org>`__ (>=1.0.0)
installed.

The quickest way to get going requires the ``pip`` and ``virtualenv``
tools (``easy_install virtualenv`` will get them both). Run the
following in the repository root::

    virtualenv pyenv
    source pyenv/bin/activate
    pip install -e .[flask]
    cp annotator.cfg.example annotator.cfg
    python run.py

You should see something like::

    * Running on http://127.0.0.1:5000/
    * Restarting with reloader...

If you wish to customize the configuration of the Annotator Store, make
your changes to ``annotator.cfg`` or dive into ``run.py``.

Additionally, the ``HOST`` and ``PORT`` environment variables override
the default socket binding of address ``127.0.0.1`` and port ``5000``.

Store API
---------

The Store API is designed to be compatible with the
`Annotator <http://okfnlabs.org/annotator>`__. The annotation store, a
JSON-speaking REST API, will be mounted at ``/api`` by default. See the
`Annotator
documentation <https://github.com/okfn/annotator/wiki/Storage>`__ for
details.

Running tests
-------------

We use ``nosetests`` to run tests. You can just
``pip install -e .[testing]``, ensure ElasticSearch is running, and
then::

    $ nosetests
    ......................................................................................
    ----------------------------------------------------------------------
    Ran 86 tests in 19.171s

    OK

Alternatively (and preferably), you should install
`Tox <http://tox.testrun.org/>`__, and then run ``tox``. This will run
the tests against multiple versions of Python (if you have them
installed).

Please `open an issue <annotator-store/issues>`__ if you find that the
tests don't all pass on your machine, making sure to include the output
of ``pip freeze``.


0.13.2
======

- Avoid a confusing error about reindexing when annotator is used as a
  library and not a standalone application (#107).

0.13.1
======

- Reindexer can run even when target exists.

0.13
====

- Slight changes to reindex.py to ease subclassing it.

0.12
====

-  A tool for migrating/reindexing elasticsearch (reindex.py) was added (#103).
-  The store returns more appropriate HTTP response codes (#96).
-  Dropped support for ElasticSearch versions before 1.0.0 (#92).
-  The default search query has been changed from a term-filtered "match all" to
   a set of "match queries", resulting in more liberal interpretations of
   queries (#89).
-  The default elasticsearch analyzer for annotation fields has been changed to
   "keyword" in order to provide more consistent case-sensitivity behaviours
   (#73, #88).
-  Made Flask an optional dependency: it is now possible to use the persistence
   components of the project without needing Flask (#76).
-  Python 3 compatibility (#72).


0.11.2
======

-  SECURITY: Fixed bug that allowed authenticated users to overwrite annotations
   on which they did not have permissions (#82).

0.11.1
======

-  Fixed support for using ElasticSearch instances behind HTTP Basic auth

0.11.0
======

-  Add support for ElasticSearch 1.0
-  Create changelog


