{"id":23079,"library":"edx-completion","title":"edx-completion","description":"A Django app for tracking completion of blocks by learners in edX courses. Current version 5.0.0. Release cadence is irregular, with frequent dependency upgrades and occasional feature drops.","status":"active","version":"5.0.0","language":"python","source_language":"en","source_url":"https://github.com/openedx/completion","tags":["edx","completion","django","lms"],"install":[{"cmd":"pip install edx-completion","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Required as a Django app.","package":"Django","optional":false},{"reason":"For BlockUsageLocator and other key types.","package":"edx-opaque-keys","optional":false}],"imports":[{"wrong":"from completion.models import BlockCompletion","symbol":"BlockCompletion","correct":"from completion.models import BlockCompletion"}],"quickstart":{"code":"from completion.api import submit_completion\nfrom completion.models import BlockCompletion\n\n# Submit a completion for a block\nblock_key = 'block-v1:Org+Course+Run+type@problem+block@abc123'\nuser_id = 1\ncourse_key = 'course-v1:Org+Course+Run'\nsubmit_completion(\n    user_id=user_id,\n    course_key=course_key,\n    block_key=block_key,\n    completion=1.0\n)\n\n# Query existing completions\ncompletions = BlockCompletion.objects.filter(user_id=user_id, course_key=course_key)\nprint(list(completions))","lang":"python","description":"Submit a completion and query completions."},"warnings":[{"fix":"Ensure keys are stringified via `str(course_key)` before calling submit_completion.","message":"The `submit_completion` function expects `course_key` and `block_key` as strings (serialized opaque keys), not objects. Using `CourseKey` or `BlockUsageLocator` objects will raise a TypeError.","severity":"gotcha","affected_versions":">=4.0.0"},{"fix":"Use Python 3.10 or later.","message":"In v5.0.0, support for Python 3.8 was dropped. If your project uses Python 3.8, you must upgrade.","severity":"breaking","affected_versions":">=5.0.0"},{"fix":"Replace `get_completions(...)` with `BlockCompletion.objects.filter(...)`.","message":"The `get_completions` function in `completion.api` was deprecated in v4.x and removed in v5.0.0. Use `BlockCompletion.objects.filter(...)` instead.","severity":"deprecated","affected_versions":">=5.0.0"}],"env_vars":null,"search_vec":"'5.0.0':19 'app':6 'block':11 'cadenc':21 'complet':3,9,33 'cours':16 'current':17 'depend':26 'django':5,34 'drop':31 'edx':2,15,32 'edx-complet':1 'featur':30 'frequent':25 'irregular':23 'learner':13 'lms':35 'occasion':29 'releas':20 'track':8 'upgrad':27 'version':18","created_at":"2026-05-01T06:02:18.631584+00:00","updated_at":"2026-05-01T06:02:18.631584+00:00","problems":{"verify_error":"Traceback (most recent call last):\n  File \"<string>\", line 1, in <module>\n  File \"/tmp/tmpds2fn3f7/venv/lib/python3.12/site-packages/completion/models.py\", line 15, in <module>\n    from model_utils.models import TimeStampedModel\n  File \"/tmp/tmpds2fn3f7/venv/lib/python3.12/site-packages/model_utils/"},"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"5.0.0","cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/openedx/completion","docs":null,"changelog":null,"pypi":"https://pypi.org/project/edx-completion/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["web-framework","database"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"import_fail","verified_at":"2026-07-03","last_verified":"2026-07-03","next_check":"2026-07-10","install_tag":null}}