{"id":26922,"library":"edx-ccx-keys","title":"edX CCX Keys","description":"Opaque key support for Custom Courses on edX (CCX). Provides key classes to identify CCX objects within the edX platform. Current version 2.0.2, release cadence is sporadic.","status":"active","version":"2.0.2","language":"python","source_language":"en","source_url":"https://github.com/openedx/ccx-keys","tags":["edx","ccx","opaque-keys","custom-courses"],"install":[{"cmd":"pip install edx-ccx-keys","lang":"bash","label":"Install from PyPI"}],"dependencies":[],"imports":[{"note":"CcxLocator is not part of opaque_keys.edx; it's defined in ccx_keys.locator.","wrong":"from opaque_keys.edx.locator import CcxLocator","symbol":"CcxLocator","correct":"from ccx_keys.locator import CcxLocator"},{"note":"Historically imported from opaque_keys, but now lives in ccx_keys.","wrong":"from opaque_keys.edx.locator import CcxBlockUsageLocator","symbol":"CcxBlockUsageLocator","correct":"from ccx_keys.locator import CcxBlockUsageLocator"}],"quickstart":{"code":"from ccx_keys.locator import CcxLocator\n\n# Parse a CCX key string\nkey = CcxLocator.from_string('ccx-v1:org+course+ccx@ccx_id')\nprint(key)\n\n# Create a new CCX key\ncourse_key = CcxLocator('org', 'course', 'run', 'ccx_id')\nprint(course_key)","lang":"python","description":"Basic usage of CcxLocator: parsing and creating CCX keys."},"warnings":[{"fix":"Upgrade Python to 3.9+.","message":"Version 2.0.0 dropped support for Python 3.8. Python 3.9+ is required.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Ensure the string matches exactly 'ccx-v1:...' or use the constructor directly.","message":"CcxLocator.from_string() expects a string in the format 'ccx-v1:org+course+ccx@ccx_id'. Incorrect formats will raise InvalidKeyError.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Use the correct format: 'ccx-v1:org+course+ccx@ccx_id'.","cause":"The key string format is incorrect or malformed.","error":"InvalidKeyError: Invalid key string: 'ccx-v1:...'"},{"fix":"Run 'pip install edx-ccx-keys'.","cause":"The package is not installed.","error":"ModuleNotFoundError: No module named 'ccx_keys'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}