Package: responsive-data
WelcomeRequirementsPython installed (recommended: Python >= 3.10)Installednoxwithpip install noxQuickstart (Usage)For basic usage of the library please read the document (see documentation badge).fromresponsive.dataimportmake_responsivefromresponsive.observerimportOutputObserverif__name__=="__main__":subject=make_responsive({"some_str":"string 1","some_int":1234567890,"some_list":[1,2,3,4,5,{"inner_str":"string 2"}],"some_dict":{"some_other_str":"string 3"},})subject.add_observer(OutputObserver())# changing string fieldsubject.some_str="another string"# changing integer fieldsubject.some_int=9876543210# changing dictionary in a listsubject.some_list[-1].inner_str="just another string"# appending a value to a list fieldsubject.some_list.append(6)# removing a value from a list fieldsubject.some_list.remove(3)# change value by indexsubject.some_list[2]=7# changing list field to another listsubject.some_list=[5,4,3,2,1,0]# changing string field of a nested dictionarysubject.some_dict.some_other_str="yet another string"# changing dictionary in totalsubject.some_dict={"some_other_str":"string 4"}# changing string field of a nested dictionary (after replacement)subject.some_dict.some_other_str="string 5"The output looks like following:subject with id 4371736816 has notified with () and {'id': 4371736816, 'context': <Context.DICTIONARY: 2>, 'name': 'some_str', 'old': 'string 1', 'new': 'another string', 'operation': <Operation.VALUE_CHANGED: 1>}
subject with id 4371736816 has notified with () and {'id': 4371736816, 'context': <Context.DICTIONARY: 2>, 'name': 'some_int', 'old': 1234567890, 'new': 9876543210, 'operation': <Operation.VALUE_CHANGED: 1>}
subject with id 4371736816 has notified with () and {'id': 4371739120, 'context': <Context.DICTIONARY: 2>, 'name': 'inner_str', 'old': 'string 2', 'new': 'just another string', 'operation': <Operation.VALUE_CHANGED: 1>}
subject with id 4371736816 has notified with () and {'id': 4371738496, 'context': <Context.LIST: 3>, 'new': 6, 'operation': <Operation.VALUE_ADDED: 2>}
subject with id 4371736816 has notified with () and {'id': 4371738496, 'context': <Context.LIST: 3>, 'old': 3, 'operation': <Operation.VALUE_REMOVED: 3>}
subject with id 4371736816 has notified with () and {'id': 4371738496, 'context': <Context.LIST: 3>, 'index': 2, 'old': 4, 'new': 7, 'operation': <Operation.VALUE_CHANGED: 1>}
subject with id 4371736816 has notified with () and {'id': 4371736816, 'context': <Context.DICTIONARY: 2>, 'name': 'some_list', 'old': [1, 2, 7, 5, {'inner_str': 'just another string'}, 6], 'new': [5, 4, 3, 2, 1, 0], 'operation': <Operation.VALUE_CHANGED: 1>}
subject with id 4371736816 has notified with () and {'id': 4371737344, 'context': <Context.DICTIONARY: 2>, 'name': 'some_other_str', 'old': 'string 3', 'new': 'yet another string', 'operation': <Operation.VALUE_CHANGED: 1>}
subject with id 4371736816 has notified with () and {'id': 4371736816, 'context': <Context.DICTIONARY: 2>, 'name': 'some_dict', 'old': {'some_other_str': 'yet another string'}, 'new': {'some_other_str': 'string 4'}, 'operation': <Operation.VALUE_CHANGED: 1>}
subject with id 4371736816 has notified with () and {'id': 4371738496, 'context': <Context.DICTIONARY: 2>, 'name': 'some_other_str', 'old': 'string 4', 'new': 'string 5', 'operation': <Operation.VALUE_CHANGED: 1>}Quickstart (Build)noxInteresting Linkshttps://test.pypi.org/project/responsive-data/