Skip to main content

Library which uses Canvasapi (see https://canvasapi.readthedocs.io) to provide a CanvasRobot class.

Project description

CanvasRobot

Library which uses Canvasapi (minimally patched to allow more flexible user search) to provide a CanvasRobot class for GUI and commandline use. You can install the commandline tools canvasrobot and urltransform (special edition to translate specific video urls in Canvas pages) using UV

Setup

Before installing the tools, you may need to download a package manager to install dependencies—pieces of code that the application relies on. On macOS, we will use Homebrew and UV; on Windows, we will only use UV. Then, we will install the CanvasRobot tools.

To run the following prompts, one must copy and paste the commands in the command line and press the {enter} key after each line. During the setup, it might be necessary to restart the terminal after installing homebrew, uv, or transcribetools to be able to proceed.

Install UV

On Windows

  1. Open Windows PowerShell or the Command shell. How?

  2. Run prompt to install uv:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

On macOS:

  1. Open Terminal

  2. Run prompt to install brew:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  1. Run prompt to install uv:
brew install uv

Install the tools

  1. Install the (commandline) tools in this project.
uv tool install canvasrobot

canvasrobot --help
urltransform --help

Uses

  • CanvasAPI
  • rich (commandline output)
  • rich_click (commandline input)
  • keyring (safe store for the Canvas API key)
  • pydal (to create a local SQLite database)
  • pywebview (HTML reporting)
  • [opt] pymemcache (install with uv add pymemcache to add caching the Canvas interaction, needs memcached installed)

Used

In word2quiz library. (Not yet ready for general use...)

Examples using the CanvasRobot class

import rich
import canvasrobot as cr

if __name__ == '__main__':

    console = rich.console.Console(width=160, force_terminal=True)

    robot = cr.CanvasRobot(reset_api_keys=False,
                           console=console)

    # robot.update_database_from_canvas()
    robot.create_folder_in_all_courses('Tentamens')

    # result = robot.enroll_in_course("", 4472, 'u752058',
    # 'StudentEnrollment') #  (enrollment={'type': 'StudentEnrollment'}
    
    # user = robot.search_user('u752058')
    # print(user)
    # if not user:
    #   print(robot.errors)

    #COURSE_ID = 9999  # test course
    #result = robot.create_folder_in_course_files(COURSE_ID, 'Tentamens')

    # print(robot.course_metada(COURSE_ID))
    # print(robot.unpublish_folderitems_in_course(COURSE_ID,
    #                                            foldername,
    #                                            files_too=True))

    #course = robot.get_course(COURSE_ID)
    # tab = robot.get_course_tab_by_label(COURSE_ID, "Files")
    # print(tab.visibility)

    # for course_id in (COURSE_ID, COURSE_ID2):
    #     result = robot.create_folder_in_course_files(course_id, 'Tentamens')

    # result = robot.unpublish_subfolder_in_all_courses(foldername,
    #                                                  files_too=True,
    #                                                  check_only=True)
    # if course_ids_missing_folder:
    #    logging.info(f"Courses with missing folder {foldername}: {course_ids_missing_folder}")

    # QUIZZES -----------------------------
    # filename = 'Q_A.docx'
    # robot.create_quizzes_from_document(filename=filename,
    #                                    course_id=COURSE_ID,
    #                                    question_format='Vraag {}. Vertaal:',
    #                                    adjust_fontsize=True,
    #                                    testrun=False
    #                                    )

[PyPI version]

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

canvasrobot-0.9.3.tar.gz (3.1 MB view details)

Uploaded Source

Built Distribution

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

canvasrobot-0.9.3-py3-none-any.whl (3.0 MB view details)

Uploaded Python 3

File details

Details for the file canvasrobot-0.9.3.tar.gz.

File metadata

  • Download URL: canvasrobot-0.9.3.tar.gz
  • Upload date:
  • Size: 3.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for canvasrobot-0.9.3.tar.gz
Algorithm Hash digest
SHA256 b00346d2590240dc2f28bac5a240e8e23e6d66c98f2770e25d2a98755874bf5e
MD5 166e53307bb2be08aa35e1dc0f7640b7
BLAKE2b-256 78fa9338f4dffee6d867145bc642deee518c66dd74108bdf331af5a4f98f49c3

See more details on using hashes here.

File details

Details for the file canvasrobot-0.9.3-py3-none-any.whl.

File metadata

  • Download URL: canvasrobot-0.9.3-py3-none-any.whl
  • Upload date:
  • Size: 3.0 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for canvasrobot-0.9.3-py3-none-any.whl
Algorithm Hash digest
SHA256 5fb2b53c1438a706ea2e6986fe34df64ff6470125d37bdb129b84e3d2d64d408
MD5 3f13d59129aed3a028eb906541c72d2c
BLAKE2b-256 76a4ab4046fbb9f7441b7eb13ba990399407d93a415f2072446076f5359e2d07

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