Library for sculpting objects from others
Project description
Sculpting
Library for sculpting objects from others
Installing
pip install sculpting
Examples
Create an object based on another
from dataclasses import dataclass
from pyhandling import by, then
from sculpting import Sculpture
@dataclass
class User:
id: int
username: str
password: str
original = User(0, "William", "1234")
sculture = Sculpture(
original,
name="username",
password_hash=(getattr |by| "password") |then>> hash
)
which is mapped with the original
sculture.name
sculture.password_hash
William
1670106271132722890
even with its modification
sculture.name = "Not William"
original.username
Not William
which can be custom
from sculpting import AttributeMap, changing_attribute_map_for
from sculpting.tools import setting_of_attr
transforming_sculpture = Sculpture(
original,
id_of_others=AttributeMap(
getattr |by| "id_of_others",
setting_of_attr("id_of_others", value_transformer=tuple)
),
# Shortcut for recording above
synonym_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
from datetime import datetime
from time import sleep
from pyhandling import close, operation_by, eventually, returnly
from sculpting import read_only_attribute_map_as
from sculpting.tools import once
standard_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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
sculpting-1.0.1.tar.gz
(17.7 kB
view hashes)