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)

    # Fix decorator order + resolve name conflicts
    @PrivateWrapProxy(expensive_api_call.result.name2, expensive_api_call)    # 6 Chain .result to push decorators down
    @PrivateWrapProxy(expensive_api_call.result.name1, expensive_api_call)    # 6 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.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.11.tar.gz (22.7 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.11-cp314-cp314t-win_amd64.whl (79.5 kB view details)

Uploaded CPython 3.14tWindows x86-64

private_attribute_cpp-1.0.11-cp314-cp314t-win32.whl (64.6 kB view details)

Uploaded CPython 3.14tWindows x86

private_attribute_cpp-1.0.11-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.11-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.11-cp314-cp314t-macosx_11_0_arm64.whl (76.6 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

private_attribute_cpp-1.0.11-cp314-cp314-win_amd64.whl (78.0 kB view details)

Uploaded CPython 3.14Windows x86-64

private_attribute_cpp-1.0.11-cp314-cp314-win32.whl (63.3 kB view details)

Uploaded CPython 3.14Windows x86

private_attribute_cpp-1.0.11-cp314-cp314-musllinux_1_2_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

private_attribute_cpp-1.0.11-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.11-cp314-cp314-macosx_11_0_arm64.whl (75.6 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

private_attribute_cpp-1.0.11-cp313-cp313t-win_amd64.whl (77.1 kB view details)

Uploaded CPython 3.13tWindows x86-64

private_attribute_cpp-1.0.11-cp313-cp313t-win32.whl (62.7 kB view details)

Uploaded CPython 3.13tWindows x86

private_attribute_cpp-1.0.11-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.11-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.11-cp313-cp313t-macosx_11_0_arm64.whl (76.6 kB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

private_attribute_cpp-1.0.11-cp313-cp313-win_amd64.whl (75.9 kB view details)

Uploaded CPython 3.13Windows x86-64

private_attribute_cpp-1.0.11-cp313-cp313-win32.whl (61.6 kB view details)

Uploaded CPython 3.13Windows x86

private_attribute_cpp-1.0.11-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.11-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.11-cp313-cp313-macosx_11_0_arm64.whl (75.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

private_attribute_cpp-1.0.11-cp312-cp312-win_amd64.whl (75.9 kB view details)

Uploaded CPython 3.12Windows x86-64

private_attribute_cpp-1.0.11-cp312-cp312-win32.whl (61.6 kB view details)

Uploaded CPython 3.12Windows x86

private_attribute_cpp-1.0.11-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.11-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.11-cp312-cp312-macosx_11_0_arm64.whl (75.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

private_attribute_cpp-1.0.11-cp311-cp311-win_amd64.whl (75.6 kB view details)

Uploaded CPython 3.11Windows x86-64

private_attribute_cpp-1.0.11-cp311-cp311-win32.whl (61.4 kB view details)

Uploaded CPython 3.11Windows x86

private_attribute_cpp-1.0.11-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.11-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

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

private_attribute_cpp-1.0.11-cp311-cp311-macosx_11_0_arm64.whl (75.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

private_attribute_cpp-1.0.11-cp310-cp310-win_amd64.whl (75.6 kB view details)

Uploaded CPython 3.10Windows x86-64

private_attribute_cpp-1.0.11-cp310-cp310-win32.whl (61.4 kB view details)

Uploaded CPython 3.10Windows x86

private_attribute_cpp-1.0.11-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.11-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

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

private_attribute_cpp-1.0.11-cp310-cp310-macosx_11_0_arm64.whl (75.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: private_attribute_cpp-1.0.11.tar.gz
  • Upload date:
  • Size: 22.7 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.11.tar.gz
Algorithm Hash digest
SHA256 2457d27cb135fc28b2598bf66fc829a1ff3878a8bf3dc055b3a56eae95776977
MD5 0295a0f685219f9ce05966268c045136
BLAKE2b-256 9adf6f9f1c10ec4094cc3feb26aa51ca6a9fe4354cb7d6a390684d6cbddc49ae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 06df5fc2d9fb897c8175d944323c73165af47f1416a062f4478c6ac438476e32
MD5 3b1436ca68db8f62fdf5aee0fe7eab6c
BLAKE2b-256 39155c521138d44fbb752167e87d28b18749fbe8eca1fc1d7a91c103b0db603f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 d0c41e7ae50e916145f3a3c5f432bf1f719b9ffca464d34a72913e940e70767a
MD5 174d08e65a22ac7238e6a071b8225839
BLAKE2b-256 13dcbe5da0a85a75fd61485419b8f3d21be7e363a1b281c63e3dee7e9b3c32a2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f8f77e64e54d49ac4438c11e426f0a50d13509799f24beeb6f31292da3c5cd62
MD5 ac72801aecee31fa35cc3a02baaa3b91
BLAKE2b-256 4643a2719285132470f26b0c21ceeeeaaa12ab6855b1cf9a7124b1a3a713072f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2bcc2bfe7a968651d51186623b99f62e48de13d8ff45ecaad42cec148ed20f2e
MD5 a5ca75f6eab0bb0419f7dce9007f8e9d
BLAKE2b-256 81b7b55349af3697127f77c3b0962c3cd79ec8d817804f80b6a21b6997135c4f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 98c6ec64df936f833454f62bffd92a61afdd0f4fb7a982e81c59ce8164838858
MD5 542d9d3744e0aa12e3cbfacdb73e263b
BLAKE2b-256 55cc12a7e04465ed113c76e14c93eb204c76634664bd0a4cb689a6f28d2e1377

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 aca0a616e4837e307293b71693223b4f05527ce6b1d2cdb8463e15967216877d
MD5 cc565b6982cde5096f80bc7e1651fb64
BLAKE2b-256 bc99be90fb8ec40194b5e4b65504aeae478ecf1d15609bf598c80c4cb1c1ec7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 f887f4caab1c164eccb33a9765b1e155a8688aa721551d3f3d3c33c26118052b
MD5 33098820118549afedf0cd5187a175b4
BLAKE2b-256 f0ae7b618f4e224ef143a1b856fa1e295a9378471086689c78fdf0d4d997e7d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9137294bd7dcf5dbdafa0d196f1c3b96b329cc9e0fb0e423e822223fd9cb2d62
MD5 c5246ab9d27226b6ac40da6d52dcc9fe
BLAKE2b-256 e5a5e47522636338abd5c0b32872eb33ce3a87de20c21586f17fac3b46abe474

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1f960a85e259199df3c3e2f7abbf4450ffd22c34e4dc97311c70369ab78efa4a
MD5 8a2cff32465e9167657f2db77f389c25
BLAKE2b-256 57dd7c375db8ebe404a7ea80e6251dabe4cbac65b762d61fdc8ceece8a9fa175

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b4d0b31e284f91726ad45dabbdb6c17d8b2013efcfe4e96b9eb008767be3d74a
MD5 6b1030d1aee12afbffaa98fb923710cd
BLAKE2b-256 fe18150e087cb416bbddf36d0694b6bab19428c7309398d8b27c315ef5b05f9f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 c6187a7dcdc3784fb718a8a76ecbbef53249cbe334697abd04660b0a33b1b959
MD5 346d531bb62f4cf0de6c50649e598792
BLAKE2b-256 7d5b351dd30d53d1cba8bfc32af831c2d5f30f5f778e6df3c65c43abc8529878

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp313-cp313t-win32.whl
Algorithm Hash digest
SHA256 66d32823bfe95fb620146980efd7d42ce9fe0fa1f5869888ea0ebe5bb9237eb4
MD5 8717c6313ce345c1d1925f6586d4d899
BLAKE2b-256 131785e409347ea44bbe009233470b4eb3678f83f5401b149c4ce94d34168408

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f07d8ab0c6be1215a110e18c07d8652977a539979837ec4b01353254d9ca6caa
MD5 c44c1d5b9fa70744564dee26efee1ed5
BLAKE2b-256 4bf1d409b4b62645cc0ebe0b30305b7fc46d6d10a3e8c5d05ef4f2069d3a31d6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 60c51d8a239cbed763fbf49abefa52d4fd8d61a67b4c60f6a515ab807a0bb57e
MD5 7e61d6c26d7e4255edd1f7d1eb556682
BLAKE2b-256 30ed88b754a816739c3973b15825639d5c7d31936a5d3a57e96b299de8fcb6de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a080ff811f25df09d18c645927cee825e364905612d9c80b8fecca927ad9c199
MD5 a680caa743e8ee9a159ed128a9628610
BLAKE2b-256 c8588422c332f098505c91090c98a1be34f32380c2d005b813c28f7b9f0dd3e3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e4e670df3872495f40fe4511d2b57bc23ee63bbee7ba54c5c1dd33ac215e6928
MD5 11be05fc63828d1be703f1a1c0f707f4
BLAKE2b-256 ae9b6849e57d812eb70121c26fc1b1ba59dc8cb07e1d7e37fbebb7cdef2eb4ec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 87ddefdb7903e221244b167f44f87730027e25301d03470466f5caae8c817198
MD5 755af268da80b925872c52650a470581
BLAKE2b-256 dcf86a2f37ea8bbe718dd8031d51d172e26360df204a86ebaffc6dda5d98b9a9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 20b64f3a50a104a0b0a058a09e5931d08b85d60bc5983ef892ac5dc6c8382c69
MD5 be22dde9af2bdc8f03ec135b54527a89
BLAKE2b-256 278acb46c342766f0ef0ea0a0fadc32e101c9cbdee52be61c539c92e9817f1c7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 44668e4bd63140dbef25a614347055768b245fb59e70c68bd6dfa155c07cc63e
MD5 30a003ad74eab9a47d2609967175df85
BLAKE2b-256 26c52d45f48768c797504f807e13ad6d3b2d07d924b334ad242c32802490d566

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4b7d13bebfb85dfd818732d07f13efd32993b3d28efece37bf68eeac1f0c5fba
MD5 a063d30c11630a01c771a3c05d981f6e
BLAKE2b-256 49313d91cdd27fe3e8746c64b345b4de052dac98547539da445a74b677f88326

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6b9d78a0e76d89356bd12f68de6f6cf86406ecebe930c5c67fecf63f557a0333
MD5 83be13135be7213a96edff9af913bf5a
BLAKE2b-256 4c5dab577deaea598a45b4dbf0bf61812e1e3301a1646d3e05babf4729a1803d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 921246b64623f6d377695522fa09843e8d2fe813d265cb78e73b7ffe01aa0e50
MD5 b7c1049319307507a507fd75199dfa24
BLAKE2b-256 9fd58de8529eb590a76fc4180057241aac305125609b690a241128ec374ab537

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4013c760ccd0f669101b3e69dcae2a12fa1a88b31b39c2f2c4f865ef88773a80
MD5 cceb262f00e54deee6bfc5ae5d6f576e
BLAKE2b-256 9259dce23ef124db925ede191da94852bf89d08314a1587f8cb5f6d2688110c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 16eda45bfba52575b1a7348bd4f86b86eb8cfe15305d966e28c154537028c0be
MD5 ee11824acde744d45286777436e0c10f
BLAKE2b-256 c6d875da5ebe89c195d5d6d96da5a0a7e8b68ec3298eb1db047e13c0b8d559c7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1134809395786d5bd6bdcaaf3b779d7de181410404818b96406a0412d61fbc33
MD5 3be9378d808766f55b95cc6e355c192a
BLAKE2b-256 760857f72a2a18990da33e2b345a2b451a90dd326f90ee119fc3ca8cc59d3a6e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 8b07f5627b590c07eb5602d0750c5e62a3a93a5a969d168a0d3725f5eb2fccfc
MD5 fd14b638d2f65e68f1867123a0b5a73f
BLAKE2b-256 f0ff551e8fa8861540a2b7c65043ce611bbe6bd002a6e329ab1a58a17bd06fbe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 99405676dda4f4377b127fc0fff8554b16e99b7985a74f8518995015193255e8
MD5 fc981665cdb03f73b4adaab960272f79
BLAKE2b-256 6265d8ed6474fc19bdac880e4eee64fd1178dd3bb9150a41fb03462a1d3ddce7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 081278f6ff6a88446e87de7ee574ee3c80262f63bec2ec4702b6672e673c4191
MD5 7267d1d62dbf9d2005dfbcc14795404f
BLAKE2b-256 d2897956b7d06807018a4ac9c71d5afa2c479b2d8fe089a9a72e16e0068b30d6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 aedd2f1d0d4facbe2416efafcfbe5a559322e1dafe5d3de915639579b84edae0
MD5 e325c23c02269ff6086c3d283daaf523
BLAKE2b-256 d4f0a65e99f43f36ac992b93ce17304ad30cb18ae1b1dc9cb709e7a367ac55f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 096abb6aab9b5d6a56c360c83a35f611c8c98176c5c2e7e65315f5f8976babb5
MD5 fdbc750d603ebe9065fd0fd61b716ecc
BLAKE2b-256 b16b9d6ca3dcace820015f9cff241f06ff6c506ce3f733b1a89ea0d26ef7d9fc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 b38b63b761bc44c4cb46edb2c3901f03176dfdd7535132d0350132d00a4dee36
MD5 b3e20683f2c03fd14351c6e891d2083f
BLAKE2b-256 474caa67878f1432c66570598bbdb9dfee47b63b917282999ee51367ec176e23

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 9f4b11ef52b118f1b41a1a1151f97154945388c4ea7f90703d57dfc9dd0f4ec2
MD5 3c717b7df79eda693d533f1275c14643
BLAKE2b-256 89cfd14f3068352a5d8347ceff1ea5f897abf83652d9830572f2b4e9767942ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 18feb0812a359e1a0c21ddaed2050410a7e77756d69ed5e1f63354955fbc5407
MD5 bd63f2befcc5203b5e83c459080ad9b5
BLAKE2b-256 481be34a517987154d07154cfd97a5aca991eb7a40f7a598f9e37eef72862e52

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 325f9e4737925b64604511fa0c55cfd481a024f0fd459e0ed8902b777274223d
MD5 b2eee3d943bff693f58f044ac2de8c74
BLAKE2b-256 aa3eeee299ae735adfe74088f01e13b35385bc822d8c84cbea3957450a5b6b60

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0aa0fdbb047e903974a2d490b1a0aab366fec100999e2e95853dcd56b250ea14
MD5 3820013417f62756828a9c11135ebb0b
BLAKE2b-256 d56e3b5d5ecd51048ee4d693893ce26011f22042a16ae9e95d2a6a52bed0436a

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