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.6.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.6-py3-none-any.whl (3.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: untouched-0.1.6.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.6.tar.gz
Algorithm Hash digest
SHA256 57f3a30d2d2345d7653330dc167c1c9a31fd7bf76fc6db1fe49339a5e275cfe6
MD5 af2120feb95bb7de88c33ac03a89daf7
BLAKE2b-256 682c85d13c094bfb761b64f54d5f75e3bad0bca06bf48afc740c8992aa7de143

See more details on using hashes here.

File details

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

File metadata

  • Download URL: untouched-0.1.6-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.6-py3-none-any.whl
Algorithm Hash digest
SHA256 edd23b5c1db4e4843807959f2600214913ea4e0cf849ff14e4290c9330ebb406
MD5 279fbaa2f44fa12fb3409429d9082728
BLAKE2b-256 ad630c70cfd4515caa085bad137e2a9ad746aad1d66dae8032688240764cef7d

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