From 3698982df7c3eecf58c487feaf61b24d996d8a12 Mon Sep 17 00:00:00 2001 From: salman2013 Date: Fri, 15 Mar 2024 15:46:39 +0500 Subject: [PATCH 1/3] chore: remove mutable property --- xblock/fields.py | 15 ++------------- xblock/reference/plugins.py | 1 - 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/xblock/fields.py b/xblock/fields.py index 8f5eecc8a..ee037581e 100644 --- a/xblock/fields.py +++ b/xblock/fields.py @@ -307,7 +307,6 @@ class will want to refer to. runtime_options. """ - MUTABLE = True _default = None # Indicates if a field's None value should be sent to the XML representation. none_to_xml = False @@ -334,10 +333,7 @@ def __init__(self, help=None, default=UNSET, scope=Scope.content, # pylint:disa @property def default(self): """Returns the static value that this defaults to.""" - if self.MUTABLE: - return copy.deepcopy(self._default) - else: - return self._default + return copy.deepcopy(self._default) @property def name(self): @@ -516,10 +512,7 @@ def __get__(self, xblock, xblock_class): value = self.default self._set_cached_value(xblock, value) - # If this is a mutable type, mark it as dirty, since mutations can occur without an - # explicit call to __set__ (but they do require a call to __get__) - if self.MUTABLE: - self._mark_dirty(xblock, value) + self._mark_dirty(xblock, value) return self._sanitize(value) @@ -701,7 +694,6 @@ class Integer(JSONField): containing a floating point number ('3.48') will throw an error. """ - MUTABLE = False def from_json(self, value): if value is None or value == '': @@ -720,7 +712,6 @@ class Float(JSONField): something for which float(value) does not throw an error. """ - MUTABLE = False def from_json(self, value): if value is None or value == '': @@ -750,7 +741,6 @@ class Boolean(JSONField): None - > False """ - MUTABLE = False # We're OK redefining built-in `help` def __init__(self, help=None, default=UNSET, scope=Scope.content, display_name=None, @@ -853,7 +843,6 @@ class String(JSONField): The value, as loaded or enforced, can either be None or a basestring instance. """ - MUTABLE = False BAD_REGEX = re.compile('[\x00-\x08\x0b\x0c\x0e-\x1f\ud800-\udfff\ufffe\uffff]', flags=re.UNICODE) def _sanitize(self, value): diff --git a/xblock/reference/plugins.py b/xblock/reference/plugins.py index 17825942e..2e9b28e4b 100644 --- a/xblock/reference/plugins.py +++ b/xblock/reference/plugins.py @@ -122,7 +122,6 @@ class Filesystem(Field): src=...> will typically be faster through this than serving that up through XBlocks views. """ - MUTABLE = False def __get__(self, xblock, xblock_class): """ From c756801d102b9dc5b4f2f4122ad75a5599f1fb0c Mon Sep 17 00:00:00 2001 From: salman2013 Date: Fri, 15 Mar 2024 15:57:02 +0500 Subject: [PATCH 2/3] chore: fix tests --- xblock/test/test_fields.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/xblock/test/test_fields.py b/xblock/test/test_fields.py index 6f67f71eb..eca5ffb25 100644 --- a/xblock/test/test_fields.py +++ b/xblock/test/test_fields.py @@ -703,7 +703,7 @@ def test_setting_the_same_value_marks_field_as_dirty(): # pylint: disable=unsubscriptable-object class FieldTester(XBlock): """Test block for set - get test.""" - non_mutable = String(scope=Scope.settings) + # non_mutable = String(scope=Scope.settings) list_field = List(scope=Scope.settings) dict_field = Dict(scope=Scope.settings) @@ -714,17 +714,17 @@ class FieldTester(XBlock): assert len(field_tester._dirty_fields) == 0 assert not field_tester.fields['list_field'].is_set_on(field_tester) assert not field_tester.fields['dict_field'].is_set_on(field_tester) - assert not field_tester.fields['non_mutable'].is_set_on(field_tester) + # assert not field_tester.fields['non_mutable'].is_set_on(field_tester) - field_tester.non_mutable = field_tester.non_mutable + # field_tester.non_mutable = field_tester.non_mutable field_tester.list_field = field_tester.list_field field_tester.dict_field = field_tester.dict_field - assert not field_tester.fields['non_mutable'] in field_tester._dirty_fields + # assert not field_tester.fields['non_mutable'] in field_tester._dirty_fields assert field_tester.fields['list_field'] in field_tester._dirty_fields assert field_tester.fields['dict_field'] in field_tester._dirty_fields - assert not field_tester.fields['non_mutable'].is_set_on(field_tester) + # assert not field_tester.fields['non_mutable'].is_set_on(field_tester) assert not field_tester.fields['list_field'].is_set_on(field_tester) assert not field_tester.fields['dict_field'].is_set_on(field_tester) From 1ce80fa285d532a6023ae8bcd7443a8a650a4c0e Mon Sep 17 00:00:00 2001 From: salman2013 Date: Fri, 15 Mar 2024 17:24:25 +0500 Subject: [PATCH 3/3] chore: remove commented code --- xblock/test/test_fields.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/xblock/test/test_fields.py b/xblock/test/test_fields.py index eca5ffb25..850563caf 100644 --- a/xblock/test/test_fields.py +++ b/xblock/test/test_fields.py @@ -703,7 +703,6 @@ def test_setting_the_same_value_marks_field_as_dirty(): # pylint: disable=unsubscriptable-object class FieldTester(XBlock): """Test block for set - get test.""" - # non_mutable = String(scope=Scope.settings) list_field = List(scope=Scope.settings) dict_field = Dict(scope=Scope.settings) @@ -714,17 +713,13 @@ class FieldTester(XBlock): assert len(field_tester._dirty_fields) == 0 assert not field_tester.fields['list_field'].is_set_on(field_tester) assert not field_tester.fields['dict_field'].is_set_on(field_tester) - # assert not field_tester.fields['non_mutable'].is_set_on(field_tester) - # field_tester.non_mutable = field_tester.non_mutable field_tester.list_field = field_tester.list_field field_tester.dict_field = field_tester.dict_field - # assert not field_tester.fields['non_mutable'] in field_tester._dirty_fields assert field_tester.fields['list_field'] in field_tester._dirty_fields assert field_tester.fields['dict_field'] in field_tester._dirty_fields - # assert not field_tester.fields['non_mutable'].is_set_on(field_tester) assert not field_tester.fields['list_field'].is_set_on(field_tester) assert not field_tester.fields['dict_field'].is_set_on(field_tester)