Skip to main content

A Python package that provides a way to define private attributes in C++ implementation.

Project description

Private Attribute (c++ implementation)

Introduction

This package provide a way to create the private attribute like "C++" does.

All API

from private_attribute import (PrivateAttrBase, PrivateWrapProxy)      # 1 Import public API

def my_generate_func(obj_id, attr_name):                           # 2 Optional: custom name generator
    return f"_hidden_{obj_id}_{attr_name}"

class MyClass(PrivateAttrBase, private_func=my_generate_func):     # 3 Inherit + optional custom generator
    __private_attrs__ = ['a', 'b', 'c', 'result', 'conflicted_name']  # 4 Must declare all private attrs

    def __init__(self):
        self.a = 1
        self.b = 2
        self.c = 3
        self.result = 42                    # deliberately conflicts with internal names

    # Normal methods can freely access private attributes
    def public_way(self):
        print(self.a, self.b, self.c)

    # Real-world case: method wrapped by multiple decorators
    @PrivateWrapProxy(memoize())                                   # 5 Apply any decorator safely
    @PrivateWrapProxy(login_required())                            # 5 Stack as many as needed
    @PrivateWrapProxy(rate_limit(calls=10))                        # 5
    def expensive_api_call(self, x):                               # First definition (will be wrapped)
        def inner(...):
            return some_implementation(self.a, self.b, self.c, x)
        inner(...)
        return heavy_computation(self.a, self.b, self.c, x)

    @expensive_api_call.non_conflict_attr_name1                    # 6 Easy access to internal names
    @expensive_api_call.non_conflict_attr_name2                    # 6 Easy use when the name has no conflict
    @PrivateWrapProxy(lambda f: f)                                 # 5 dummy wrapper just to restore order
    def expensive_api_call(self, x):                               # Second definition (will be wrapped)
        return heavy_computation(self.a, self.b, self.c, x)

    # Fix decorator order + resolve name conflicts
    @PrivateWrapProxy(expensive_api_call.result.conflicted_name2, expensive_api_call)    # 7 Chain .result to push decorators down
    @PrivateWrapProxy(expensive_api_call.result.conflicted_name1, expensive_api_call)    # 7 Resolve conflict with internal names
    def expensive_api_call(self, x):         # Final real implementation
        return heavy_computation(self.a, self.b, self.c, x)


# ====================== Usage ======================
obj = MyClass()
obj.public_way()                    # prints: 1 2 3

print(hasattr(obj, 'a'))            # False – truly hidden from outside
print(obj.expensive_api_call(10))   # works with all decorators applied
# API Purpose Required?
1 PrivateAttrBase Base class – must inherit Yes
1 PrivateWrapProxy Decorator wrapper for arbitrary decorators When needed
2 private_func=callable Custom hidden-name generator Optional
3 Pass private_func in class definition Same as above Optional
4 __private_attrs__ list Declare which attributes are private Yes
5 @PrivateWrapProxy(...) Make any decorator compatible with private attributes When needed
6 method.xxx Normal api name proxy Based on its api
7 method.result.xxx chain + dummy wrap Fix decorator order and name conflicts When needed

Usage

This is a simple usage about the module:

from private_attribute import PrivateAttrBase

class MyClass(PrivateAttrBase):
    __private_attrs__ = ['a', 'b', 'c']
    def __init__(self):
        self.a = 1
        self.b = 2
        self.c = 3

    def public_way(self):
        print(self.a, self.b, self.c)

obj = MyClass()
obj.public_way()  # (1, 2, 3)

print(hasattr(obj, 'a'))  # False
print(hasattr(obj, 'b'))  # False
print(hasattr(obj, 'c'))  # False

All of the attributes in __private_attrs__ will be hidden from the outside world, and stored by another name.

You can use your function to generate the name. It needs the id of the obj and the name of the attribute:

def my_generate_func(obj_id, attr_name):
    return some_string

class MyClass(PrivateAttrBase, private_func=my_generate_func):
    __private_attrs__ = ['a', 'b', 'c']
    def __init__(self):
        self.a = 1
        self.b = 2
        self.c = 3

    def public_way(self):
        print(self.a, self.b, self.c)

obj = MyClass()
obj.public_way()  # (1, 2, 3)

If the method will be decorated, the property, classmethod and staticmethod will be supported. For the other, you can use the PrivateWrapProxy to wrap the function:

from private_attribute import PrivateAttrBase, PrivateWrapProxy

class MyClass(PrivateAttrBase):
    __private_attrs__ = ['a', 'b', 'c']
    @PrivateWrapProxy(decorator1())
    @PrivateWrapProxy(decorator2())
    def method1(self):
        ...

    @method1.attr_name
    @PrivateWrapProxy(lambda _: _) # use empty function to wrap
    def method1(self):
        ...

    @PrivateWrapProxy(decorator3())
    def method2(self):
        ...

    @method2.attr_name
    @PrivateWrapProxy(lambda _: _)
    def method2(self):
        ...

The PrivateWrapProxy is a decorator, and it will wrap the function with the decorator. When it decorates the method, it returns a _PrivateWrap object.

The _PrivateWrap has the public api result. It returns the original decoratored result.

from private_attribute import PrivateAttrBase, PrivateWrapProxy

class MyClass(PrivateAttrBase):
    __private_attrs__ = ['a', 'b', 'c']
    @PrivateWrapProxy(decorator1())
    @PrivateWrapProxy(decorator2())
    def method1(self):
        ...

    @PrivateWrapProxy(method1.result.conflict_attr_name1, method1) # Use the argument "method1" to save old func
    def method1(self):
        ...

    @PrivateWrapProxy(method1.result.conflict_attr_name2, method1)
    def method1(self):
        ...

    @PrivateWrapProxy(decorator3())
    def method2(self):

Notes

  • All of the private attributes class must contain the __private_attrs__ attribute.
  • The __private_attrs__ attribute must be a sequence of strings.
  • You cannot define the name which in __slots__ to __private_attrs__.
  • When you define __slots__ and __private_attrs__ in one class, the attributes in __private_attrs__ can also be defined in the methods, even though they are not in __slots__.
  • All of the object that is the instance of the class "PrivateAttrBase" or its subclass are default to be unable to be pickled.
  • Finally the attributes' names in __private_attrs__ will be change to a tuple with two hash.
  • Finally the _PrivateWrap object will be recoveried to the original object.
  • One class defined in another class cannot use another class's private attribute.
  • One parent class defined an attribute which not in __private_attrs__ or not a PrivateAttrType instance, the child class shouldn't contain the attribute in its __private_attrs__.

License

MIT

Requirement

This package require the c++ module "picosha2" to compute the sha256 hash.

Support

Now it doesn't support "PyPy".

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

private_attribute_cpp-1.0.4.tar.gz (22.6 kB view details)

Uploaded Source

Built Distributions

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

private_attribute_cpp-1.0.4-cp314-cp314t-win_amd64.whl (80.2 kB view details)

Uploaded CPython 3.14tWindows x86-64

private_attribute_cpp-1.0.4-cp314-cp314t-win32.whl (64.7 kB view details)

Uploaded CPython 3.14tWindows x86

private_attribute_cpp-1.0.4-cp314-cp314t-musllinux_1_2_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

private_attribute_cpp-1.0.4-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

private_attribute_cpp-1.0.4-cp314-cp314t-macosx_11_0_arm64.whl (77.6 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

private_attribute_cpp-1.0.4-cp314-cp314-win_amd64.whl (78.8 kB view details)

Uploaded CPython 3.14Windows x86-64

private_attribute_cpp-1.0.4-cp314-cp314-win32.whl (63.4 kB view details)

Uploaded CPython 3.14Windows x86

private_attribute_cpp-1.0.4-cp314-cp314-musllinux_1_2_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

private_attribute_cpp-1.0.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

private_attribute_cpp-1.0.4-cp314-cp314-macosx_11_0_arm64.whl (76.4 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

private_attribute_cpp-1.0.4-cp313-cp313t-win_amd64.whl (78.1 kB view details)

Uploaded CPython 3.13tWindows x86-64

private_attribute_cpp-1.0.4-cp313-cp313t-win32.whl (62.8 kB view details)

Uploaded CPython 3.13tWindows x86

private_attribute_cpp-1.0.4-cp313-cp313t-musllinux_1_2_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

private_attribute_cpp-1.0.4-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

private_attribute_cpp-1.0.4-cp313-cp313t-macosx_11_0_arm64.whl (77.6 kB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

private_attribute_cpp-1.0.4-cp313-cp313-win_amd64.whl (76.8 kB view details)

Uploaded CPython 3.13Windows x86-64

private_attribute_cpp-1.0.4-cp313-cp313-win32.whl (61.8 kB view details)

Uploaded CPython 3.13Windows x86

private_attribute_cpp-1.0.4-cp313-cp313-musllinux_1_2_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

private_attribute_cpp-1.0.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

private_attribute_cpp-1.0.4-cp313-cp313-macosx_11_0_arm64.whl (76.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

private_attribute_cpp-1.0.4-cp312-cp312-win_amd64.whl (76.8 kB view details)

Uploaded CPython 3.12Windows x86-64

private_attribute_cpp-1.0.4-cp312-cp312-win32.whl (61.8 kB view details)

Uploaded CPython 3.12Windows x86

private_attribute_cpp-1.0.4-cp312-cp312-musllinux_1_2_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

private_attribute_cpp-1.0.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

private_attribute_cpp-1.0.4-cp312-cp312-macosx_11_0_arm64.whl (76.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

private_attribute_cpp-1.0.4-cp311-cp311-win_amd64.whl (76.6 kB view details)

Uploaded CPython 3.11Windows x86-64

private_attribute_cpp-1.0.4-cp311-cp311-win32.whl (61.6 kB view details)

Uploaded CPython 3.11Windows x86

private_attribute_cpp-1.0.4-cp311-cp311-musllinux_1_2_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

private_attribute_cpp-1.0.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

private_attribute_cpp-1.0.4-cp311-cp311-macosx_11_0_arm64.whl (76.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

private_attribute_cpp-1.0.4-cp310-cp310-win_amd64.whl (76.5 kB view details)

Uploaded CPython 3.10Windows x86-64

private_attribute_cpp-1.0.4-cp310-cp310-win32.whl (61.7 kB view details)

Uploaded CPython 3.10Windows x86

private_attribute_cpp-1.0.4-cp310-cp310-musllinux_1_2_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

private_attribute_cpp-1.0.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

private_attribute_cpp-1.0.4-cp310-cp310-macosx_11_0_arm64.whl (76.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file private_attribute_cpp-1.0.4.tar.gz.

File metadata

  • Download URL: private_attribute_cpp-1.0.4.tar.gz
  • Upload date:
  • Size: 22.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for private_attribute_cpp-1.0.4.tar.gz
Algorithm Hash digest
SHA256 48df3bc67884c6bb345a617e156fb7cf01fee92cf3cbcce37aba37f890eb0bb3
MD5 51311f16f8b59f0192135d7351a8276f
BLAKE2b-256 477b500640c8f8e8ef079c62c89d3ca13f5a79059e039115717f1a9b42dbce38

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp314-cp314t-win_amd64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 6d12a098876dbd56339495aa82c57cf964f3767e24b5ea4dc7a1ce72712da739
MD5 e4d34aaf872936d19b131aaf10842f17
BLAKE2b-256 91b5e2bffba17a67dea15d91c61f451e56db4388a6f686bcd2a7402b82624e70

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp314-cp314t-win32.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 39d8c9bc393f0008f21781ced036c6cff61cbf6edfc49e32b696fa5a5b4307d9
MD5 0223227bc2dfca05a8b2302dcebd574d
BLAKE2b-256 a2f0c5d1708e595eb0f6cee23a10236dcef945d85b29a9d1ae28f2827652c810

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 943456fd39383d3e8c1d0b270e464f268c6f6dc5ff5e938f97f2ee4cb75e43ae
MD5 258c5f9929a121d3e4d46b3ff0f86f3e
BLAKE2b-256 93b4a580e19a58e6dcd59c4e7e72f01af686c298a3448efba87d671fdb7bf2f5

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 90e0cbb7d8d8e5e31b815f1c886712164dffa75e6e4c91ffca8a8a6dfd4ae002
MD5 54197e83f76ce44ff0f355007427504d
BLAKE2b-256 092feda49ebcabf903ae976ace55aab870b1623c5c31265436b01b73f586adb4

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7f32c27cf64fa990c133088baea2fae581cd0a6b02ddf6a623d23a2148d1e7d5
MD5 5cc3001bed6916c0274a11890800c1ff
BLAKE2b-256 6cdc3c5f55c69ece77fb10a40c1a5ec81771fa0eed81986d581386f10948088f

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 47651944575cfe75409d131f80e8697811d6267c2e82aa72cc8bdd4b57f96c40
MD5 2f949cb98ae33530a83c8f4d9685420b
BLAKE2b-256 e9595575203826b7de6d18fe7b338e660bd5254040074ea6bfad1d046aaf64f1

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp314-cp314-win32.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 07643aa3a532d5023efa078a6e1b52860123a9c9937d75f575e8261f040349b3
MD5 a6ae47b1b7ccafd156866720df167265
BLAKE2b-256 31d718f839c0c645f8ea1a5b47a993b7c8d55bffe98bc2a7e7d477b06c653b6e

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 12dec1a47aa6d7c92b062651fd2c69ad57e7ff84c5b14280fe2c993b080c9af4
MD5 930bd21a3f40d2b9f16748c4a3ad09fb
BLAKE2b-256 3d02fb2572240f1016d2cc2e125aab526263ae45baf3c0157805c857db8d1a6a

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c77c005414ef2b24f4b16319ac83165d0d422512b081bd01d8f04585309be92d
MD5 0b62835789f1a6b132c9b9d20bb3c9f2
BLAKE2b-256 5f11a980ae44c1cb65d82e969ae95384e3ab64b72b8a5e9983534bca570a766a

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f0a2c76af7eb307737bb1654decbc0254b27811c524f2a963f67020d87081cbc
MD5 4ccc655484e4914e56126d1c9e1132a8
BLAKE2b-256 4ba3c59a7138868c7d4914fec2f1fb0015c36389c7e586ead25935b43024fdb2

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp313-cp313t-win_amd64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 3814bbcd0c340d639a4ec73dcb4d685487f702b1557202f20ca93deb50094d32
MD5 55e6c73e51bcee107517d041cf0aa341
BLAKE2b-256 7d8c7a10f544fe406dc42376178580495bbbb8d8b9a934b9f837524da0c06b69

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp313-cp313t-win32.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp313-cp313t-win32.whl
Algorithm Hash digest
SHA256 4b427b6af5b5a6263621b898e174d68aade28250ca247ca0fcb7f8b1ac62fe0d
MD5 a1809b37359eab573c76e0e99ca85aca
BLAKE2b-256 cf6ed028cfeaed8c016f64d094ac9febeb3344c26e1e8ce7ab43fbf67eba4d97

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp313-cp313t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 814588feab9d921ff0e88a9d7686052c758d702c503e31a1932d99c8d3634fcc
MD5 31d7b367bb22c534b2721ab16c36ebe4
BLAKE2b-256 b23deeeffacf54850aacb1b36044ff317d8f97af4b1ab4466ff56ee5a4203d38

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dd272663fd1afe04bba8ece99debd44aedd8a4b2efe5e6d4fe5f75dce600db9f
MD5 e8fa40d622b6e81a686b094807de0004
BLAKE2b-256 e0bff9c4d81b422f50975b152aaf585a8b89a7e44bbc01dd00e0b16937009d3f

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp313-cp313t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 db9495d605500a8fa654158b87cd21a89d66f6b1ccb8eb1ad0ad036d7d55cd17
MD5 f86e0b0455abc99d087911777def1656
BLAKE2b-256 4db84664fe8335fb308944583603f7729013e105b0b4dc081bddb3d695aca729

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 77aeda3375aa55512f62387f225f91d7cca1b4d53000994842a323a5c49c546d
MD5 6a9cb78e36e249e985e4120d5fb02605
BLAKE2b-256 f5525bf2991ac4f96454d78de23dd4ed6ab2e347476b0566a86f9c8fed957f3a

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp313-cp313-win32.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 6ba46d8ffdac8fd6a03cd84cb5a81778e24924c6c4d456f37a21db221ba93c2b
MD5 1fcb9c084a551c814a268d7fd25d1d45
BLAKE2b-256 08666776d4d35cb8e62c5acf39fcf7479e85da14c937fd4903fe23956e176062

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1645b3218e04a8ccd48fdfeda713a9dd7f6575d86ce4da3325c0bb7a4efdbba6
MD5 e9db4fc1708eb2443bb30c3e5f154758
BLAKE2b-256 6c34912984856c0adcb225ff23d9cc8847a02c067509851462be363000ddd859

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 12ee0e9751c5f705a4637a1862e3d5498480d3c66969026f121bcc10330d4aa1
MD5 e6f353d131ac3bc97a73c59cfdcc8880
BLAKE2b-256 2c828a47527db20e8eee67869fb8a31f5368963ee72b9dd3cc1d67312ff7fdef

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ce1d90a26c0b81874d2e466705ad1209bf52fbb39ca509387e50db0267cafdf1
MD5 d8b62199ca68f6491a70f32d34d8ffb5
BLAKE2b-256 346ba9476c46bb726273efe9dec50e17f00ebffa499c843cceabd74898cc4e35

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 0cd94895527420ba0a88e135593f42ab3cf7e264c50b051eaf573f8bdb346852
MD5 c20f1ba04f70d86d280c9a6dcbed4895
BLAKE2b-256 44d15f0e40e0d48f6a67298b134a7dad794cfb0b56e7fd197c7683d4816ff262

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp312-cp312-win32.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 ad70c31f62fedddbfa289bd0bcd3c95b40273e3d0f2a7a02411cbb23de5e5ede
MD5 2398de50a45f9e969076eff0c1758a19
BLAKE2b-256 789f4042373012642f1f55b37632d5d7b341ceca7e4e590501934a246053f4f5

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 47dde2cacd48965fc8606dc340f860dc52c5c70931b433c587d8e9cc9d55bf45
MD5 1abe7a6eb0ee822b175cffbf7428c8b7
BLAKE2b-256 e8f0aaff0f1c2ce2fa9edd8a5d769dfa6686ac4d5b5a2a7c7417f7f5c232a463

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7ebc2b5a87a0cc4603be26b095ccd6ead6a96f789c656507f564c05b1db2e67c
MD5 14a736a8a0aa173d7009675459d21b27
BLAKE2b-256 f605390d9a6f71c5df520d9af14466e00cac70b8f4505b6be888e4d17cb38c04

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cdad9df62214afee25339b9397d02aaeaa3e1dddca9c795b2fa07bb7e31866b2
MD5 22469ad481fe71eb5714bd2fec3a05b4
BLAKE2b-256 12c21ae23d4e0289efd2af86dd076f3a4884480c6959f3d99175b7304d4bab5f

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 bb8e4572a758491a2fae4c175d7bfac8e5b8a16925cac3346e13465f9a6d7da5
MD5 9fc12cd82d71d05f3b4397bf04ddf525
BLAKE2b-256 e5bae8585faec589a85ee743af569ac32c5dcf3b351e25f4a2465c5671b1acae

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp311-cp311-win32.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 8a934847241e5c00a27b85c8ce6c0b9e5b9a2f57341655b3fe48e1a8638608c0
MD5 c5c7204377ac19f3672b1c961b45f4d4
BLAKE2b-256 df6b20c04ad7ae19e74bf2651686419819ed0cbba107460146e96e58d8f9f16d

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 28046111292587493db656b0f82219e4fd55f3ec367c8321c9a5d1cc9e0b4b14
MD5 4fb10227436001588ad56f7e7c480d92
BLAKE2b-256 d33773097bed694846569834b85486f97f1973915685c88f5369d8140ab62877

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 042ee2bc14dffaa4f53ef76911100cfd40b266668db9f47bcf17ba3a7c4b9219
MD5 069037f752a6966280fe130dd5126a75
BLAKE2b-256 ba77c1a27e806121c3389ef3115cff1d4295612e1a6d365e2668de2a0a1a3b70

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ce57aa25cb578d66bb139c2c7cc6684ddeb2281dfaf6ec29031f57a1d86f9c5c
MD5 ae7ae31ab7d05a5b92468183abec45ff
BLAKE2b-256 856d23427afba845a875d0b7216cd24ae3c4560b879f930931cb80717c3ab16a

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 813461fdddad59c6f6d0551afa7bacb798887b473dc32f11c9468829a147694c
MD5 20c12059c1e64b223fee1a6ee8e1ef7b
BLAKE2b-256 533e709b84f04db3ffed12b5c8944ac5e864442ae4dcc62a1c4d6daf3279300e

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp310-cp310-win32.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 1748ac99b9d608e35010545105a089d7af77b852a9d0048fbb0968eadb4b66f6
MD5 f8a8cd1dbfa9c0498b4e5e49e765aa5a
BLAKE2b-256 e000601dfc02607f1271edfb74915408d3b312206f6f21d197e396eac6c99de8

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d5f8f6bc1e61ee5fe6f1f83c2dd3a4bdde28df6cbae3028b8c5e34f166c2e49a
MD5 c71702339df4c45ab4a86a77b960aad9
BLAKE2b-256 60896701d743f8b2d0db591f7061957173997ef253d369785be714d7e38a4919

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4c8543bc392838fb0fe63218eb4932ead45932afc92a6619c4f8e8a60561fafd
MD5 5de1954662c51ace6d41072e533e09f4
BLAKE2b-256 aadde1d31fcc4feff6a51145d5309e0649ec2c8a33e4f9375b48750cd36dbd67

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.4-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f1914f28e2e032f1232181b224ceba94981f665c47097ca131dee76b24d5ef13
MD5 fb9c137e950f7a3c2685d18cdbbfeb91
BLAKE2b-256 5cd769095c159814274a44aea37196c41d52b1ed7ad5954e909bdecc74737a2c

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