Skip to main content

pylifttk

Downloads Downloads

This is a Python utility library for Princeton COS' LIFT.

This library tries to conveniently integrate a collection of educational tech tools used at Princeton's Department of Computer Science, to facilitate exchanges of data between those platforms.

Services integrated by this library

This library integrates:

  • codePost (roster, grades);
  • Ed Discussion (roster);
  • CSStaff Course API (roster, assignments);
  • TigerFile (roster, assignments, submissions);
  • Gradescope (roster, grades).

Configuration file

Since this library integrates the functionality of several platforms, it requires access to credentials for each of those platforms. As such the config.yaml file does a lot of the heavy lifting. Note that each subsection of the file is only loaded if the corresponding submodules are loaded in Python.

course: COS126
term: F2019

csstaff:
  username: "cos126api"
  password: "" # email csstaff@princeton.edu

codePost:
  api_key: "" #

ed:
  username: "" # credentials for https://us.edstem.org
  password: ""

gradescope:
  username: "" # credentials for https://gradescope.com
  password: ""

tigerfile:
  token: "" # token obtained from https://adm.cs.princeton.edu

Example

This snippet computes final grades:

import pylifttk.integrations.final_grades as pyltkfg

def get_late_data():
    # student_id -> float of late days (including alloted)
    return {
        "student1": 1.0,
        "student7": 2.5,    
    }

# Miscellaneous late data calculation
late_data = get_late_data()

student_data = pyltkfg.compute_final_grade_data(
    course_name="COS126",
    course_term="F2019",
    ignore_missing_assessment=False,
    skipped_assessments=None,
    override_cutoffs={
        "A+": 100.0,
        "A" : 92.49,
        "A-": 89.50,
        "B+": 87.00,
        "B" : 82.75,
        "B-": 80.00,
        "C+": 77.00,
        "C" : 73.00,
        "C-": 69.00,
        "D" : 55.0
    },
    late_data=late_data)

with the following sample configuration (authentication content blanked out):

# Course information

course: COS126
term: F2019


# Authentication credentials and tokens

csstaff:
  username: "**********"
  password: "**********"

codePost:
  api_key: "**********"

ed:
  username: "**********"
  password: "**********"

gradescope:
  username: "**********"
  password: "**********"

tigerfile:
  token: "**********"

labqueue:
  username: "**********"
  password: "**********"

canvas:
  token: "**********"


# Mappings between the names of various services that this library is integrating

normalizations:
  - source: runscript
    destination: tigerfile
    mapping:
      hello: Hello
      loops: Loops
      nbody: NBody
      sierpinski: Sierpinski
      hamming: Hamming
      lfsr: LFSR
      guitar: Guitar
      markov: Markov
      tsp: TSP
      atomic: Atomic
  - source: tigerfile
    destination: codepost
    mapping:
      Hello: Hello
      Loops: Loops
      NBody: NBody
      Sierpinski: Sierpinski
      Hamming: Hamming
      LFSR: LFSR
      Guitar: Guitar
      Markov: Markov
      TSP: "TSPP"
      Atomic: Atomic


# Course policy constants

policy:
  cutoffs:
    "A" : 93
    "A-": 90
    "B+": 87
    "B" : 83
    "B-": 80
    "C+": 77
    "C" : 73
    "C-": 70
    "D" : 60
    "F" : 0

  lateness:
    allotted: 4
    penalty: 0.5
    grace_minutes: 180

  totals:
    Hello: 4.0
    Loops: 4.0
    NBody: 4.0
    Sierpinski: 4.0
    Hamming: 4.0
    Programming Exam 1: 7.5
    Written Exam 1: 17.5
    LFSR: 5.0
    Guitar: 5.0
    Markov: 5.0
    TSPP: 5.0
    Programming Exam 2: 7.5
    Written Exam 2: 17.5
    Atomic: 10.0

  weights:
    - name: "assignments"
      weight: 40.0
      content:
        - Hello
        - Loops
        - NBody
        - Sierpinski
        - Hamming
        - LFSR
        - Guitar
        - Markov
        - TSPP

    - name: "final project"
      weight: 10.0
      content:
        - Atomic

    - name: "written exams"
      weight: 35.0
      content:
        - Written Exam 1
        - Written Exam 2

    - name: "programming exams"
      weight: 15.0
      content:
        - Programming Exam 1
        - Programming Exam 2

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pylifttk-0.0.38.tar.gz (33.3 kB view details)

Uploaded Source

Built Distribution

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

pylifttk-0.0.38-py3-none-any.whl (45.4 kB view details)

Uploaded Python 3

File details

Details for the file pylifttk-0.0.38.tar.gz.

File metadata

  • Download URL: pylifttk-0.0.38.tar.gz
  • Upload date:
  • Size: 33.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.5.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

File hashes

Hashes for pylifttk-0.0.38.tar.gz
Algorithm Hash digest
SHA256 82c091eec1f50c46bb3cff0de40af75b60b198b561691e39336b4ac2933c3be6
MD5 80c511a996c9691a176c59eb1547b18e
BLAKE2b-256 c26d89b21e08be3318d4a33f5e0e5ff39fc928cc446c0e30cace58f55db57e42

See more details on using hashes here.

File details

Details for the file pylifttk-0.0.38-py3-none-any.whl.

File metadata

  • Download URL: pylifttk-0.0.38-py3-none-any.whl
  • Upload date:
  • Size: 45.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.5.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

File hashes

Hashes for pylifttk-0.0.38-py3-none-any.whl
Algorithm Hash digest
SHA256 61ac2ce2a1a9ad8dc0eced290b201717e3c16413b0148dc602bc5865682237bc
MD5 de1b2d5371a3badbb4236b908867f14f
BLAKE2b-256 eece97612459bed95a13e836605768421b3b2de336a4e58efe09e83e7002811c

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.38 This release

2 files

0.0.37

2 files

0.0.36

2 files

0.0.35

2 files

0.0.34

2 files

0.0.33

2 files

0.0.32

2 files

0.0.31

2 files

0.0.30

2 files

0.0.29

2 files

0.0.28

2 files

0.0.27

2 files

0.0.26

2 files

0.0.25

2 files

0.0.24

2 files

0.0.23

2 files

0.0.22

2 files

0.0.21

2 files

0.0.20

2 files

0.0.19

2 files

0.0.18

2 files

0.0.17

2 files

0.0.16

2 files

0.0.15

2 files

0.0.14

2 files

0.0.13

2 files

0.0.12

2 files

0.0.11

2 files

0.0.10

2 files

0.0.9

2 files

0.0.8

2 files

0.0.7

2 files

0.0.6

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

2 files

0.0.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page