Skip to main content

Immutable builder, carbon copy of lann/builder package in GoLang.

Project description

Untouched

https://pypi.org/project/untouched/

https://github.com/DAMACANER/untouched

Carbon copy of https://github.com/lann/builder for making a Python NoSQL query builder.

Installing:

poetry add untouched

Example:

from src.untouched.builder import Builder, get_struct, T
from src.untouched.registry import Registry
from typing import Optional
from pprint import pprint

registry = Registry()  # Initialize the registry

if __name__ == "__main__":
    class UserBuilder(Builder):
        """
        The UserBuilder class inherits from Builder and provides specific methods to set the 'name' and 'age' attributes.
        """

        def __init__(self):
            super().__init__()

        def name(self, val: str) -> 'UserBuilder':
            """
            Creates a new UserBuilder with the 'name' attribute set to the provided value.
            """
            return self.set_value("name", val)

        def age(self, val: int) -> 'UserBuilder':
            """
            Creates a new UserBuilder with the 'age' attribute set to the provided value.
            """
            return self.set_value("age", val)


    class User:
        """
        The User class represents the structure that the UserBuilder will build.
        """

        def __init__(self, name: Optional[str] = None, age: Optional[int] = None):
            self.name = name
            self.age = age


    # Register the builder-struct pair
    registry.register(UserBuilder(), User())
    user_builder = UserBuilder().name("caner").age(25).name("caner2")  # Build a user
    user = user_builder.get_builder_map()
    pprint(user.__dict__)  # Print the user struct's attributes


# Output:
# 
# {'age': 25, 'name': 'caner2'}

Thanks a lot to Lann for the original builder package, this is wonderful.

Not a perfect copy of the library, yet it works! Which is, what python is right? It is fast enough, and it works.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

untouched-0.1.5.tar.gz (3.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

untouched-0.1.5-py3-none-any.whl (3.9 kB view details)

Uploaded Python 3

File details

Details for the file untouched-0.1.5.tar.gz.

File metadata

  • Download URL: untouched-0.1.5.tar.gz
  • Upload date:
  • Size: 3.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.11.3 Linux/6.3.5-201.fsync.fc37.x86_64

File hashes

Hashes for untouched-0.1.5.tar.gz
Algorithm Hash digest
SHA256 82c4638c5fea2651c5a8b116fd3506708962d9e8f63891faf0daf0c05b2a330e
MD5 1e50bfb641bcdae27be7dcaeba5d721e
BLAKE2b-256 3584b08453643fea7b93b95923234c031fddc75e1d56cf8b394f8bce6562fd29

See more details on using hashes here.

File details

Details for the file untouched-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: untouched-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 3.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.11.3 Linux/6.3.5-201.fsync.fc37.x86_64

File hashes

Hashes for untouched-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 1b8fb8e6c70270cb8e0370c249300165c9139d48b90a8e40c0e6921dfcc2f1ef
MD5 6bdbf7fa1ed69af053b93572c8626a39
BLAKE2b-256 f77f4a30f3ab9fbc002b71a74bf136dfa230e34c8089f0748df544c435fe12e2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page