Skip to main content

codePost Statistics Compiler

pytest codecov Documentation Status Downloads Run on Repl.it Stargazers

A system to compile statistics automatically from a course on the codePost platform.

Installation

The package is available on PyPI as slacktivate and so is available the usual way, i.e.,

$ pip install codepost-stats

Example

import codepost

import codepost_stats
import codepost_stats.analyzers.abstract.simple
import codepost_stats.analyzers.standard
import codepost_stats.event_loop

# Login
codepost.configure_api_key("<CODEPOST_API_TOKEN>")

# Create Course Analyzer Event Loop
cael = codepost_stats.event_loop.CourseAnalyzerEventLoop(
    course_name="COS126",
    course_term="S2020",
)

# Create Analyzer
class SubmissionsGradedCounter(codepost_stats.analyzers.abstract.simple.CounterAnalyzer):
    _name = "submissions.graded"
    
    def _event_submission(
        self,
        assignment: codepost.models.assignments.Assignments,
        submission: codepost.models.submissions.Submissions,
    ):
        # if no grader, nothing to do
        if submission.grader is None:
            return
        
        # if not finalized, do not want to count it
        if not submission.isFinalized:
            return
        
        # increase number of graded submission for grader by 1
        self._delta_counter(
            name=submission.grader,
            subcat=assignment.name,
            delta=1,
        )
        
sgc = SubmissionsGradedCounter()

# Add the analyzer we just created
cael.register(sgc)

# Add a few standard analyzers
cael.register(codepost_stats.analyzers.standard.CustomCommentsCounter)
cael.register(codepost_stats.analyzers.standard.RubricCommentsCounter)

# Run the aggregation of stats
cael.run()

# Extract statistics per user
statistics_per_user = {
    name: cael.get_by_name(name)
    for name in cael.names
}

and the statistics_per_user variable would be a dictionary of the form:

{
  "grader1@princeton.edu": {
    "submissions.graded": {
      "hello": 5,
      "loops": 6,
      "nbody": 0,
      "sierpinski": 8,
      "programming-exam-1": 6,
      "hamming": 0,
      "lfsr": 2,
      "guitar": 5,
      "markov": 6,
      "tspp": 4,
      "atomic": 29
    },
    "comments.counter.custom": {
      "hello": 9,
      "loops": 6,
      "nbody": 0,
      "sierpinski": 14,
      "programming-exam-1": 6,
      "hamming": 0,
      "lfsr": 4,
      "guitar": 8,
      "markov": 14,
      "tspp": 7,
      "atomic": 36
    },
    "comments.counter.rubric": {
      "hello": 7,
      "loops": 15,
      "nbody": 0,
      "sierpinski": 13,
      "programming-exam-1": 8,
      "hamming": 0,
      "lfsr": 6,
      "guitar": 10,
      "markov": 17,
      "tspp": 13,
      "atomic": 38
    }
  },
  "grader2@princeton.edu": {
      /* ... grader2@princeton.edu's statistics here ... */
  },
  /* ... more graders ... */
}

License

This project is licensed under the LGPLv3 license, with the understanding that importing a Python modular is similar in spirit to dynamically linking against it.

  • You can use the library/CLI codepost-stats in any project, for any purpose, as long as you provide some acknowledgement to this original project for use of the library (for open source software, just explicitly including codepost-stats in the dependency such as a pyproject.toml or Pipfile is acknowledgement enough for me!).

  • If you make improvements to codepost-stats, you are required to make those changes publicly available.

Metadata

Release files for codepost-stats 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for codepost-stats 0.1.4
File Size Uploaded
codepost-stats-0.1.4.tar.gz 18.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for codepost-stats 0.1.4
File Interpreter ABI Platform
codepost_stats-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 40.0 kB

Release files / codepost-stats-0.1.4.tar.gz

Download URL codepost-stats-0.1.4.tar.gz
Size 18.1 kB
Tags Source
SHA-256 checksum
How to use checksums
ef8ba7edeb10d66b11ac24e315f0eef289b3f72ed4b26c29a420c77f484f40c9
BLAKE2b-256 checksum
How to use checksums
85a7899d602fe04771ad134fc5dbad3f3b3997e5dff5a0fae1fecfda6fe0ce9e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.13 CPython/3.9.4 Darwin/21.4.0

Release files / codepost_stats-0.1.4-py3-none-any.whl

Download URL codepost_stats-0.1.4-py3-none-any.whl
Size 22.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b4287ebc8a4b8316277defeb3e5671eab950445ad01c49f66e6f2921fb3ae9b6
BLAKE2b-256 checksum
How to use checksums
344342f2cbf7f51017a197558d307684a8e16ec8fba5473f080fe45e04056d21
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.13 CPython/3.9.4 Darwin/21.4.0

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page