Library for sculpting objects from others
pip install sculpting
Create an object based on another
fromdataclassesimportdataclassfrompyhandlingimportby,thenfromsculptingimportSculpture@dataclassclassUser:id:intusername:strpassword:stroriginal=User(0,"William","1234")sculture=Sculpture(original,name="username",password_hash=(getattr|by|"password")|then>>hash)
which is mapped with the original
sculture.namesculture.password_hash
William1670106271132722890
even with its modification
sculture.name="Not William"original.username
which can be custom
fromsculptingimportAttributeMap,changing_attribute_map_forfromsculpting.toolsimportsetting_of_attrtransforming_sculpture=Sculpture(original,id_of_others=AttributeMap(getattr|by|"id_of_others",setting_of_attr("id_of_others",value_transformer=tuple) ),# Shortcut for recording abovesynonym_for_id_of_others=changing_attribute_map_for("id_of_others",tuple))transforming_sculpture.synonym_for_id_of_others=range(1,5)original.id_of_othersusing standard tools
fromdatetimeimportdatetimefromtimeimportsleepfrompyhandlingimportclose,operation_by,eventually,returnlyfromsculptingimportread_only_attribute_map_asfromsculpting.toolsimportoncestandard_tool_sculpture_from= (close(Sculpture)(id=read_only_attribute_map_as((getattr|by|'id')|then>>operation_by('*',2)),creation_time=once(eventually(datetime.now)) )|then>>returnly(getattr|by|"creation_time"))standard_tool_sculpture=standard_tool_sculpture_from(original)print(datetime.now().time(),"- at initialization")sleep(3)print(standard_tool_sculpture.creation_time.time(),"- at getting")16:10:16.045444 - at initialization16:10:16.045444 - at getting