--- title: pyintegrators keywords: fastai sidebar: home_sidebar summary: "Integrators connect the information in your Pod. They import your data from external services using Importers (Gmail, WhatsApp, etc.), connect new data to the existing data using indexers (face recognition, spam detection, object detection), and execute actions (sending messages, uploading files)." description: "Integrators connect the information in your Pod. They import your data from external services using Importers (Gmail, WhatsApp, etc.), connect new data to the existing data using indexers (face recognition, spam detection, object detection), and execute actions (sending messages, uploading files)." nb_path: "nbs/index.ipynb" ---
Integrators for Memri have a single repository per language, this is the repository for Python integrators. Memri also has Node.js integrators. This repository is built with nbdev, which means that the repo structure has a few differences compared to a standard python repo. The documentation for this repository is available on pyintegrators.memri.io.
The normal flow to run an integrator is from the client, by calling the pods run_integrator
api. Subsequently, the Integrator is invoked by the Pod by launching a Docker container. To build the image for this container, run:
docker build -t memri-pyintegrators .
The Python integrators are written in nbdev (video). With nbdev, it is encouraged to write code in
Jupyter Notebooks. Nbdev syncs all the notebooks in /nbs
with the python code in /integrators
. Tests are written side by side with the code in the notebooks, and documentation is automatically generated from the code and markdown in the notebooks and exported into the /docs
folder. Check out the nbdev quickstart for an introduction, watch the video linked above, or see the nbdev documentation for a all functionalities and tutorials.
When you make a merge request, make sure that you used all the nbdev commands specified in the quickstart.
If you are using memri, you can share which integrators you are currently missing the most. There is a topic on the memri forum in which you can request new integrators by posting a description, or upvote pending requests. Requests with upvotes will be prioritized.
New documentation will be deployed automatically when a new version is released to the prod
branch. The CI will generate html files using:
nbdev_build_docs
To inspect changes in the documentation locally, you can render it on your local machine using installing Jekyll.
To build the documentation run:
cd docs
gem update --system
bundle install
To serve the documentation run:
bundle exec jekyll serve