Skip to main content

This simple python package makes it easy to connect to an eScriptorium instance and to work with the data there.

Project description

[License: MIT]

Escriptorium Connector

This simple python package makes it easy to connect to eScriptorium and work with the data stored there.

Installation

And the obligatory: pip install escriptorium-connector

Usage

If you are working on a public repository, you will probably want to store your user credentials in a hidden .env file that does not get distributed with your code. This is pretty easy to accomplish with python-dotenv. You will need to provide the connector with an eScriptorium instance URL, the API your username, and your password (see below).

The EscriptoriumConnector class provides (or will provide) all the methods needed to interact programmatically with the eScriptorium platform.

Example usage:

from escriptorium_connector import EscriptoriumConnector
import os
from dotenv import load_dotenv


if __name__ == '__main__':
    load_dotenv()
    url = str(os.getenv('ESCRIPTORIUM_URL'))
    username = str(os.getenv('ESCRIPTORIUM_USERNAME'))
    password = str(os.getenv('ESCRIPTORIUM_PASSWORD'))
    escr = EscriptoriumConnector(url, username, password)
    print(escr.get_documents())

And your .env file should have:

ESCRIPTORIUM_URL=https://www.escriptorium.fr
ESCRIPTORIUM_USERNAME=your_escriptorium_username
ESCRIPTORIUM_PASSWORD=your_escriptorium_password

See this Jupyter notebook for a longer introduction to the connector.

Development

Want to contribute? There is a lot to be done here, so we are happy for any PRs and updates.

Development Environment

This project uses Poetry. To start development, please pull down the repo from GitLab and run poetry install, which will make sure you have all the needed dependencies for the project and that you are using a valid Python version. Please use poetry add <your-pip-package> to install any new dependencies to the project so that they will be tracked by poetry.

Package Structure

The escriptorium_connector package aims to provide a more or less fool-proof interface to the eScriptorium REST API. The main goal has bee to take the guess work out of what should be sent to the API in POST/PUT requests and to make very clear what one should expect to get back from a GET request. It also aims to ease introduction to the API by providing hard-coded access to all the endpoints the API provides, which might not be immediately accessible by other means.

Part of the user convenience this package provides is a set of data transfer objects (DTOs) mentioned above, which take the guesswork out of API POST/PUT requests. These are available in the src/escriptorium_connector/dtos folder, make use of Pydantic for (de)serialization, and should all be exposed at the only from the dtos package module src/escriptorium_connector/dtos/__init__.py.

The connector itself, src/escriptorium_connector/connector.py,provides high level functionality on top of some lower level actions. The class it provides, EscriptoriumConnector, takes care of acquiring the needed JWTs and cookies from an eScriptorium web server and needs only to be provided with the server URL, a username, and a password. The EscriptoriumConnector creates a special requests http instance that takes care of retries on 500 errors and some other niceties for error reporting (see the error classes in src/escriptorium_connector/connector_errors.py). It maintains its own HTTP session and uses websockets to listen for the completion of requests that return immediately from the server, but then notify the user later via websocket/email that the requested action has completed.

As a final goal, all functionality exposed by the EscriptoriumConnector will have clearly typed arguments and return types. All endpoints should be tested at least to some degree (see the tests folder) and code coverage can be checked when running poetry run pytest with the proper settings in setup.cfg (see the notes at the end of that file). The current code coverage can be viewed in the htmlconv folder.

The escriptorium_connector package should be versioned in line with the eScriptorium project, since different versions of eScriptorium will change their API surface and we cannot expect all production servers to be running the same version. Currently the latest version of the eScriptorium server is at version 0.10.2a, so the corresponding connector version should match at 0.10.2a, and any bugfixes to that version should be numbered as 0.10.2a.post1, 0.10.2a.post2, ..., 0.10.2a.postN. This will enable users to quickly verify they are using a connector that is compatible with the server they are accessing. Note that the package has not yet reached full API coverage for any eScriptorium version, and thus it remains on a non-related version system.

Uploading to Pypi

Poetry makes uploading to Pypi very easy. Just confirm that all the package details in pyproject.toml are correct, bump the version of the package poetry version 0.0.15, and then use poetry publish --build --username $PYPI_USERNAME --password $PYPI_PASSWORD, assuming you have set the environment variables $PYPI_USERNAME and $PYPI_PASSWORD appropriately (if you are using a Pypi token, then PYPI_USERNAME=__token__ and $PYPI_PASSWORD=<your-full-pypi-token>).

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

escriptorium-connector-0.1.5.tar.gz (24.1 kB view details)

Uploaded Source

Built Distribution

escriptorium_connector-0.1.5-py3-none-any.whl (26.9 kB view details)

Uploaded Python 3

File details

Details for the file escriptorium-connector-0.1.5.tar.gz.

File metadata

  • Download URL: escriptorium-connector-0.1.5.tar.gz
  • Upload date:
  • Size: 24.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.8 CPython/3.7.12 Linux/5.4.0-91-generic

File hashes

Hashes for escriptorium-connector-0.1.5.tar.gz
Algorithm Hash digest
SHA256 bcd3a33b028abbef9a33027927225d1384e9a9413b1caef52db71427941efa73
MD5 399180c92843a5723620c4f2d17cee46
BLAKE2b-256 a4c38194e18e2fdbfaa9899d7ba5981acfe39699b6198401674562426599dc93

See more details on using hashes here.

File details

Details for the file escriptorium_connector-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for escriptorium_connector-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 100d395ffeca4954b916e2581f3433c21f7f162f658856999d711e0c555d66cc
MD5 471f0b7cc09e6309901603bbe77cceee
BLAKE2b-256 60f535a0ad3f4032ddb5e442f7c48206e72ce53af51e0644e5afa31fb669a03e

See more details on using hashes here.

Supported by

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