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_hashWilliam
1670106271132722890
even with its modification
sculture.name="Not William"original.usernameNot William
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_others(1, 2, 3, 4)
using 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 initialization
16:10:16.045444 - at getting