Skip to main content

Python library for the Hypothes.is API

Project description

This package provides python bindings to the Hypothesis API.

Low-level access

The api submodule is a low-level implementation of the Hypothesis API.

The contents of this module reflect the REST nature of the API:

  • API calls are made by functions.

  • Input and output data are uninterpreted data (e.g. JSON strings, not objects resulting from interpreting the JSON).

  • Argument checking is minimal and most exceptions will come when the API returns an error (APIError is raised if the server does not return 200).

  • The auth argument is always given first (except to root(), which does not take authorization). auth can currently be None or a string containing a developer token.

Examples:

>>> h_annot.api.read(None, '53LMZGVCEemN4zOvm3oFEQ')
u'{"updated": "2019-04-22T21:09:23.352503+00:00", "group": "__world__", ...
>>> h_annot.api.read(None, 'bogusannotationid')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "h_annot/api.py", line 39, in read
    raise APIError(r)
h_annot.exceptions.APIError: API call returned 404 (Not Found): not_found

High-level access

The Annotation class is an object abstraction of an annotation. Use the load() class method to get an annotation from its ID:

>>> annot = h_annot.Annotation.load('53LMZGVCEemN4zOvm3oFEQ')
>>> annot.text
u"I'm imagining!!!"

Exceptions are more pythonic:

>>> h_annot.Annotation.load('somebogusannotid')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "h_annot/annotation.py", line 97, in load
    raise KeyError('annotation ID %s not found' % annot_id)
KeyError: 'annotation ID somebogusannotid not found'

The Annotation constructor should not be called directly.

Some attributes can be updated; to do so, set the authentication token using the h_annot.auth() context manager:

>>> with h_annot.auth(authentication_token):
...     annot.text = 'new text'

Annotations don’t have an inherent concept of authentication, so the previous way of declaring authentication to annotations:

>>> annot = h_annot.Annotation.load('someannotationid', 'somedevelkey')
>>> annot.text = 'new text'

is deprecated.

Tags are accessed and changed through the tags attribute. This attribute acts like a case-insensitive set (like Hypothesis itself treats tags).

>>> print annot.tags
TagSet(objectives, interwebs)
>>> for tag in annot.tags:
...     print tag
objectives
interwebs
>>> with h_annot.auth(authentication_token):
...     annot.tags = ['all', 'new', 'tags']
...     annot.tags.add('and one more')
...     annot.tags.remove('new')

Searching via Annotation.search() is deprecated. This search just wrapped the results of api.search() in Annotation constructors, so api.search() should now be used for searches that used Annotation.search(). For a high-level search interface, use h_annot.search(). This takes keyword arguments uri, user, tags, and text. Note that tags are joined by AND and separate words in text are joined by OR, which is the behavior of the Hypothesis search API. h_annot.search() respects the authentication set by the h_annot.auth() context manager.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python-hypothesis-0.4.0.tar.gz (8.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

python_hypothesis-0.4.0-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

python_hypothesis-0.4.0-py2-none-any.whl (8.3 kB view details)

Uploaded Python 2

File details

Details for the file python-hypothesis-0.4.0.tar.gz.

File metadata

  • Download URL: python-hypothesis-0.4.0.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

File hashes

Hashes for python-hypothesis-0.4.0.tar.gz
Algorithm Hash digest
SHA256 fa979fa7ec6c035c885857fea853ba1b0890b3d1c61dbb434db7721b0096b000
MD5 3fc2f01906fc2a547301343bd663246a
BLAKE2b-256 1a12771f59aae7fb29a7aa2c8b38b0018c8ee5d4881a6f6521ec19b153e079b7

See more details on using hashes here.

File details

Details for the file python_hypothesis-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: python_hypothesis-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 8.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

File hashes

Hashes for python_hypothesis-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e45f72036fbc36138bb7e675a92d3b5ccd2cf802bd910edeb5c377838ade74e0
MD5 c6e3f31168ceac88e3494a51b1873fcd
BLAKE2b-256 07200dd5ed5f48240e36f2ca83087b599b0714b8087a12e325e1b23de7adeaa8

See more details on using hashes here.

File details

Details for the file python_hypothesis-0.4.0-py2-none-any.whl.

File metadata

  • Download URL: python_hypothesis-0.4.0-py2-none-any.whl
  • Upload date:
  • Size: 8.3 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

File hashes

Hashes for python_hypothesis-0.4.0-py2-none-any.whl
Algorithm Hash digest
SHA256 194206fbdcdce050c5d612608a5eef34b7d365d85df411036ccbd2ab239e81fd
MD5 f44de0c15cfb494f1f82f240549fd6fc
BLAKE2b-256 02a79ddc712c6f214e7e5dfee8e89dff6a74116a7177f5ebecfd5eec9a77cd64

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page