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.
h_annot.search() returns a SearchResults instance. SearchResults instances respond properly to len(), and iteration will result in annotations:
>>> results = h_annot.search() 800765 >>> len(results) >>> for annotation in results: ... print(annotation) ... break <Hypothesis annotation WcxuNG0CEemcl4_d0fJoaw>
The SearchResults object will load more results as needed from Hypothesis, but with a one second delay before each subsequent query to avoid rapid repeated hits to Hypothesis if something easily done and seemingly innocuous like list(h_annot.search()) is done.
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
Built Distributions
File details
Details for the file python-hypothesis-0.4.2.tar.gz
.
File metadata
- Download URL: python-hypothesis-0.4.2.tar.gz
- Upload date:
- Size: 10.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a44b2ceb4aba19e51f788780983c74b3c0d0603781511212fc04e8243d3a516f |
|
MD5 | 0567242ac2f4e7ffce7fd2583718f7a1 |
|
BLAKE2b-256 | bd7433137f84606788468833900d346270bcb423511bb88ef9f91528d56c6676 |
File details
Details for the file python_hypothesis-0.4.2-py3-none-any.whl
.
File metadata
- Download URL: python_hypothesis-0.4.2-py3-none-any.whl
- Upload date:
- Size: 9.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a15edb9cd05c7d0d1eb3db03be155916397a624352821d1d2ff4ee3775c9e3ca |
|
MD5 | 6b2a329ab7ea9e648a953afd43e48c58 |
|
BLAKE2b-256 | 8fa17500f428796d0ee4341f4c0211f6abd81d376f16655da97af58f6253b868 |
File details
Details for the file python_hypothesis-0.4.2-py2-none-any.whl
.
File metadata
- Download URL: python_hypothesis-0.4.2-py2-none-any.whl
- Upload date:
- Size: 9.0 kB
- Tags: Python 2
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7145f56592c39c2b0ddf8b0e8aabd555085906b60ab0fde2d2c25d44e1d95331 |
|
MD5 | 6fbbb5e9f6b0315a344b5232736c1218 |
|
BLAKE2b-256 | 853b1007a5b3efca99dc277f34b499e284d71301dd033519e74e6e445ca6e699 |