Skip to main content

An unofficial integration of the Ed API with Python

Project description

edapi

This package is a fork of an (unofficial) integration of the Ed API with Python https://github.com/smartspot2/edapi. Since as of now there is no detailed documentation on the HTTP endpoints for the Ed API, I've reverse-engineered the endpoints by snooping through Chrome devtools.

Further, since the Ed API is in beta, the API endpoints can change at any time, and this package may break.

This package is still a work in progress, and currently contains the following features:

This list may expand as the package is developed further.

Installation

This package is uploaded to PyPI: https://pypi.org/project/edapi/; the easiest way to install is with pip3 install edapi.

Building the package

You can also build the package manually; to do so, just run python3 -m build in the root directory. This will create a dist/ folder containing the package wheel, which can be installed via pip3 install dist/edapi-x.x.x-py3-none.whl.

Documentation

Most documentation can be found in edapi/docs/api_docs.md; it contains documentation for the API, and also several notes on the HTTP endpoints as I've worked through this package.

Usage

Your API key can be created through https://edstem.org/us/settings/api-tokens or https://edstem.org/au/settings/api-tokens. The API key should be kept secret, and not committed through any version control system.

Insert ed api key in the constrctor. The Ed api endpoint can also be updated by inserting it within the contructor argument. By default its https://edstem.org/api

The following snippet is an example of using the API:

import os
from edapi import EdAPI
from edapi.models.user import User
# load from environment variables
from dotenv import load_dotenv
load_dotenv()

ed = EdAPI(os.getenv("ED_API_TOKEN"))

user_info = ed.get_user_info()
user: User = user_info.get_user_info_summary()

print(f"Hello {user.name}!")

Types for all methods are also documented and type hints are used for every method. You can peruse the types in edapi/edapi/types/.

Working with thread content

Ed uses a special XML format to format thread bodies. The various tags are also documented in edapi/docs/api_docs.md for your reference.

There are utility methods included to help with the process of creating thread documents through BeautifulSoup:

  • new_document(): creates a new blank document containing the bare XML tags necessary to create a new thread.
    • Returns a new BeautifulSoup instance for the new document, along with the root document tag (use the document tag to serialize for the API).
  • parse_document(content: str): parses the content string, which holds the XML content of a thread.
    • Similar to new_document, returns a new BeautifulSoup instance for the parsed document, along with the root document tag.

Build package using uv

uv build uv publish

publish through github action with tag

git tag -a v0.1.0 -m "Release v0.1.0" git push origin v0.1.0

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

edapi_fork-0.1.2.tar.gz (27.5 kB view details)

Uploaded Source

Built Distribution

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

edapi_fork-0.1.2-py3-none-any.whl (31.5 kB view details)

Uploaded Python 3

File details

Details for the file edapi_fork-0.1.2.tar.gz.

File metadata

  • Download URL: edapi_fork-0.1.2.tar.gz
  • Upload date:
  • Size: 27.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for edapi_fork-0.1.2.tar.gz
Algorithm Hash digest
SHA256 749c8e87c510134ddcf2d58d1c85798409b319b704d0e532e060058649e60b91
MD5 0054f6115394aa33bf218fae3e82786e
BLAKE2b-256 b9c56ba0cb76d24bff06c50a5017f593ce9197cf239b3dd505ad0db64d7c846d

See more details on using hashes here.

Provenance

The following attestation bundles were made for edapi_fork-0.1.2.tar.gz:

Publisher: release.yml on cooi123/edapi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file edapi_fork-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: edapi_fork-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 31.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for edapi_fork-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 cef2b1b41e5d141d6fab76d05774c8156dff58d575204fa0ca3d95839f25dcaa
MD5 5e0479ce61b8194542a4ec57c14bf46c
BLAKE2b-256 1824e2dfb848ba0ecda2a0027b072256a9b8a9925372250d0a25341a4a6b610e

See more details on using hashes here.

Provenance

The following attestation bundles were made for edapi_fork-0.1.2-py3-none-any.whl:

Publisher: release.yml on cooi123/edapi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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