edx-sga Staff Graded Assignment XBlock
raw JSON → 0.28.0 verified Fri May 01 auth: no python
An XBlock for Open edX that provides a staff-graded assignment component. Version 0.28.0 is the latest release. The library is maintained as part of MIT Open Learning's Open edX tools, with an active development cadence.
pip install edx-sga Common errors
error ModuleNotFoundError: No module named 'edx_sga' ↓
cause Incorrect import path; the package installs as 'sga'.
fix
Use
from sga import StaffGradedAssignmentXBlock instead of from edx_sga import .... error ImportError: cannot import name 'StaffGradedAssignmentXBlock' from 'sga' ↓
cause The XBlock class might have been renamed in older versions, or the import is wrong.
fix
Ensure you have installed edx-sga (pip install edx-sga) and use
from sga import StaffGradedAssignmentXBlock. error AttributeError: 'StaffGradedAssignmentXBlock' object has no attribute 'max_score' ↓
cause You may be calling a method that exists only in a certain version or relying on deprecated attributes.
fix
Check the documentation for the version you are using. Use
get_max_score() if available. Warnings
deprecated The XBlock is deprecated in favor of the built-in Open edX staff-graded assignment (since Open edX Juniper). ↓
fix Migrate to the built-in Open edX SGA if running Open edX Juniper or later.
gotcha The import path is `from sga import StaffGradedAssignmentXBlock`, not `from edx_sga` or `from edx_sga import ...`. ↓
fix Use `from sga import StaffGradedAssignmentXBlock`.
breaking Python 2 support was dropped in version 0.22.0. ↓
fix Use Python 3.5+ (recommended Python 3.8+ for latest).
Imports
- StaffGradedAssignmentXBlock
from sga import StaffGradedAssignmentXBlock
Quickstart
from sga import StaffGradedAssignmentXBlock
# Instantiate the XBlock (requires runtime, typically used within Open edX)
# Example for testing (not for production):
from xblock.field_data import DictFieldData
from xblock.runtime import KvsFieldData, DictKeyValueStore
field_data = DictFieldData({})
kvs = KvsFieldData(DictKeyValueStore())
runtime = type('MockRuntime', (), {
'field_data': field_data,
'get_field_data': lambda self: field_data,
'course_id': 'course-v1:edX+DemoX+Demo_Course'
})()
block = StaffGradedAssignmentXBlock(runtime, scope_ids=0)
print('SGA XBlock initialized successfully')