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.2.tar.gz (20.9 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.2-cp314-cp314t-win_amd64.whl (74.5 kB view details)

Uploaded CPython 3.14tWindows x86-64

private_attribute_cpp-1.0.2-cp314-cp314t-win32.whl (59.9 kB view details)

Uploaded CPython 3.14tWindows x86

private_attribute_cpp-1.0.2-cp314-cp314t-musllinux_1_2_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

private_attribute_cpp-1.0.2-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (975.8 kB view details)

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

private_attribute_cpp-1.0.2-cp314-cp314t-macosx_11_0_arm64.whl (71.0 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

private_attribute_cpp-1.0.2-cp314-cp314-win_amd64.whl (73.6 kB view details)

Uploaded CPython 3.14Windows x86-64

private_attribute_cpp-1.0.2-cp314-cp314-win32.whl (59.1 kB view details)

Uploaded CPython 3.14Windows x86

private_attribute_cpp-1.0.2-cp314-cp314-musllinux_1_2_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

private_attribute_cpp-1.0.2-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (987.6 kB view details)

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

private_attribute_cpp-1.0.2-cp314-cp314-macosx_11_0_arm64.whl (70.2 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

private_attribute_cpp-1.0.2-cp313-cp313t-win_amd64.whl (72.6 kB view details)

Uploaded CPython 3.13tWindows x86-64

private_attribute_cpp-1.0.2-cp313-cp313t-win32.whl (58.4 kB view details)

Uploaded CPython 3.13tWindows x86

private_attribute_cpp-1.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

private_attribute_cpp-1.0.2-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (975.9 kB view details)

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

private_attribute_cpp-1.0.2-cp313-cp313t-macosx_11_0_arm64.whl (71.0 kB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

private_attribute_cpp-1.0.2-cp313-cp313-win_amd64.whl (71.6 kB view details)

Uploaded CPython 3.13Windows x86-64

private_attribute_cpp-1.0.2-cp313-cp313-win32.whl (57.8 kB view details)

Uploaded CPython 3.13Windows x86

private_attribute_cpp-1.0.2-cp313-cp313-musllinux_1_2_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

private_attribute_cpp-1.0.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (988.5 kB view details)

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

private_attribute_cpp-1.0.2-cp313-cp313-macosx_11_0_arm64.whl (70.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

private_attribute_cpp-1.0.2-cp312-cp312-win_amd64.whl (71.6 kB view details)

Uploaded CPython 3.12Windows x86-64

private_attribute_cpp-1.0.2-cp312-cp312-win32.whl (57.8 kB view details)

Uploaded CPython 3.12Windows x86

private_attribute_cpp-1.0.2-cp312-cp312-musllinux_1_2_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

private_attribute_cpp-1.0.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (988.2 kB view details)

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

private_attribute_cpp-1.0.2-cp312-cp312-macosx_11_0_arm64.whl (70.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

private_attribute_cpp-1.0.2-cp311-cp311-win_amd64.whl (71.5 kB view details)

Uploaded CPython 3.11Windows x86-64

private_attribute_cpp-1.0.2-cp311-cp311-win32.whl (57.7 kB view details)

Uploaded CPython 3.11Windows x86

private_attribute_cpp-1.0.2-cp311-cp311-musllinux_1_2_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

private_attribute_cpp-1.0.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (988.3 kB view details)

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

private_attribute_cpp-1.0.2-cp311-cp311-macosx_11_0_arm64.whl (70.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

private_attribute_cpp-1.0.2-cp310-cp310-win_amd64.whl (71.4 kB view details)

Uploaded CPython 3.10Windows x86-64

private_attribute_cpp-1.0.2-cp310-cp310-win32.whl (57.7 kB view details)

Uploaded CPython 3.10Windows x86

private_attribute_cpp-1.0.2-cp310-cp310-musllinux_1_2_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

private_attribute_cpp-1.0.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (985.7 kB view details)

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

private_attribute_cpp-1.0.2-cp310-cp310-macosx_11_0_arm64.whl (70.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: private_attribute_cpp-1.0.2.tar.gz
  • Upload date:
  • Size: 20.9 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.2.tar.gz
Algorithm Hash digest
SHA256 a56a0ced6ea33cb42c652454b907fe50ab601590a94403e7bc5838d8b899d112
MD5 d5b5301d92008f2b95fd5a4bdf7a3183
BLAKE2b-256 5ef0dbe1f98e79cd9232c59b0ea8b8614b753aa5e75113a117db72940f52a380

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 3ba9e68577c6a99652dba1537f9e280fb01508fc65c938fa7fa968e838565d88
MD5 5e3f1458127e524b7e8ffe34984af6cd
BLAKE2b-256 11e0c26b972eccc0d27927d4725844f7db1907ed92ed9c7083d94bb502a09c58

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 2a2e8e7fd1f53ccb8dcd8f6d76bf6e0e6653d1c8b06c59198395eafc0480c7e6
MD5 12f52dd131c37a722a18fa1b5707adb1
BLAKE2b-256 b4b1ba04d0fd438afd7ff3775a32aafac7695ed398cd064215711337de189886

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bd7818340bd837b2250fd520fdf2fbeff6016edcc9247ea89d6e265b53366ec8
MD5 8da71b663d9ee8759c19eb64627f74e6
BLAKE2b-256 f7966328a02d6a3db3020f1fb9e66c097f4fc166d142f6713b5f7952b4184ae6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c1057e53f68c87bc38f56e155555e5eed308e5ba485a02c28d1208b78e704730
MD5 706c726119bb2b788676fbbc70c94dab
BLAKE2b-256 687e8c86e2319a9a527fb73c09ab4d7c6d2978e0fb5dece5a5f455bdcd6a6af8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 88d7c073ddea18e2c7a6bb09779d748d0571928cc1e6476e09d215280625c43e
MD5 9735d488b5834d62b1828cddfc1f5612
BLAKE2b-256 aa599ca2ab9bb4c2fcdfbda30bdb3eac13cded0d1aa798453a65476d5cad9f70

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 1d35af6b1b28fc03a59d68a3d502b16742f163df7d0d762d4d0d479bddf935a9
MD5 a5fb976411c18b3baca9af21440d5693
BLAKE2b-256 c45dc342458feb77ea5e4b184e754121b2950fbc57d2f867686e7347a6fc40a7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 e15c27d9f47702fb736261cbc682da539b2f702c5bfe03dd65fa835bea5f0eb0
MD5 3696aef0e07e72e634672151934d116d
BLAKE2b-256 88f718ee214a0aa81e54fdd84ad595166dce674937e3db5cd3b06fbaaabd0d6f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a115bb25a119c413e7a99fa10b9f4986ccd952650945124b0b4c31f1d35b5d0d
MD5 58ee773b2ef5093d476b43dc0399c865
BLAKE2b-256 7eaad49a76399aa28c260406210cc87646012e1fbfe500eea9acf089e132c606

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5ada9032fdab6393b25fdbd73612980ce916b2374baa91d7e3ab3506e70cdda7
MD5 c4f6c38e9800c4324c5e6d52b53f3ce3
BLAKE2b-256 a8bca2903d5bff6d458ce2e1a17bc1cd79d5326c87bd94a78fc29de86c17a817

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c9a9e70ffb5acf8f1be39d836727a99ec54237e894a455cf9f770abc27f679db
MD5 dfc7930a77ea49ccde071dc3aaad0e9d
BLAKE2b-256 304b87571c965fb73cbd4f1597aef5b6a89fb41fb44cef6979f3e91e7f7c4302

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 8eecbfffc4f3fe0b62e9e1b9cd95a52bec9cc4677295fe03baac81ccd5c13e5e
MD5 4e5f9df484f93139984d057d43727762
BLAKE2b-256 cce5f6025d0e7ee03bf323d91193740d321086ee12f6afee54bed5cc0627fb23

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp313-cp313t-win32.whl
Algorithm Hash digest
SHA256 40ef3f2b9f3cf75195ca76aed2b1c4442e22e22bc94321ad9d9e6765e37b5871
MD5 19d6ca048f71591b21b701b907a51a4b
BLAKE2b-256 f960f3b10246136465811ac9e0e17748f1f130ab7865c23e032dc26a0ed38f7b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d2b48932f81f16f7422fd29817441572c982ebeb58e35cf75c3294396fdc3eb7
MD5 016f7e8875ea99da8c47c8071d5abab4
BLAKE2b-256 c3165f4c21b222edc2a132d7c181cee44471003ed4aa05afa2a4f5356eda8dba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 16c8aaa78575c387687ec9ce7adc8fdeb054b4b498b53c91472c2d458a592e63
MD5 3f71fca19025cf7e28882ca840daffbf
BLAKE2b-256 84a705ac44fc719d319b5b92735047181411d4f311f9fbf4dd8d8d9a615fea4d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b1f5fc22548efb6c893ef1de3b241f78cdc3f2ec403a473d30873579b5629ff7
MD5 fa9cab0d544ab304870489098dacaaaa
BLAKE2b-256 cc7fbeb8f8fd08f8a17fc7534564bd452d71e3dad5971d43909bb92cdb5cfe5a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e448a847131186e12157d3950646c3ea871b3c2e81bf1fa7e53c143ea03c1dbc
MD5 3ce0fd49b8a3d9199702c22f70c3e196
BLAKE2b-256 3c95ea96dc0b592c13421bc200ddf3b9ca8fac9321d4d1301dc2ab206b964a8a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 0bc00e66c1df86ec6bb19f035c7e19e566a6715fc96b4d6397abe6f8589ce290
MD5 1d47a37f1f203db7e8a632c9def75279
BLAKE2b-256 a9e9f2bb2ed026e243d08730bc7b053f77bbc2cfd1e3063f811ed14f099b02de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 49e19d25ac03ffb548203d583f62941485e2f2199b244f11eb4d1da93d6ac23c
MD5 cbd1cd8b8bae25a71eca0a9648b9433b
BLAKE2b-256 dc39efe66f60ca57aaf6e55f80fc63be94910f8881e9c12840f9c7c82e88038c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c800ae7eee137a5b7a5cfbf6a35a2cff439ebad167e7894e07bd313dace29cd1
MD5 a3862a9cbd896cbce38e0450dd687e8b
BLAKE2b-256 d863573ddad592836ac18b942f6243742878f1700e9cb7bb1f7fb2b2e9cd7307

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b7eb1f337fae4b975fb1b3ebf2e255449497aaac7b7f2862d7ac7951b62cd44a
MD5 acad28536a02185e6a56611a5bf983f7
BLAKE2b-256 ab4a0cb6ee2a33184efa7747a08c16099fca029c595a3cb17726438179c0dbb5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8947ab160faeddc840403296f23e671ccf1a1e8e078d246f69650cf0bd13bb06
MD5 e8b33933239c1c3f4702555446d2a01c
BLAKE2b-256 5fd2355e97da29dbc8467e3d5d28ca5ae60f26f50b5c3bb9a82ccd7298197be8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 77e51b8a517bf5818015a2562690450d0f4106534b6ffbab06f3dd1cf892e1f2
MD5 8bc5c8b16a0dc7618d488947b527959d
BLAKE2b-256 618a209786a73694b79e6ab126d322467e43a0c69bd63a9a13ced906c596af95

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a2baecd558cd1190f7e97b2d0999f4c26abe494d0a220a50bc2ad8e30b8905ab
MD5 b6b0db44fa83999ca68ff06bdeb9a8cb
BLAKE2b-256 e07b240dc4888366d04598f99cb1a5138f16cc1abcbd7546dac9a3ab2a87fd01

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f37980db0ade1acde237e839681b0bcf3aa70dc2b27d2f92c8ade678675ce7b6
MD5 e7355e5192380d015f00b718e2839c34
BLAKE2b-256 e6b4717fb9c4c02568d40173c1468882613a409a8955cb5da5dfdad1ecd41ff0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f52c5b2416004448dac4fe8ceb640d903ee5db6bdfdc8cdb6a8856f123426e1a
MD5 95e5b4d1751eda6646c2c7c1c4786e74
BLAKE2b-256 28ec62ccc364edc3e98f5a0daeeb6a28fba46aee53e1435ea19c022dd732c97e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 f8018a2e40497c0c12b48fe6450252cfe1fd33e906d0e1459751e0cd50a8f220
MD5 8777b491e5202872460608ef242c43c4
BLAKE2b-256 dd45a9ff59a1e1f0fce25fb6e81354aafaea13cc779484ad3a6ff0dcee27542d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 dad2bca593c80cc0fa59221d886e984c6a847bbc389218bf6133e0b6772789b8
MD5 6c7861bee4669cf6f6764265b82ca819
BLAKE2b-256 22a74346ed66718ea48dccb78f476f64e57e385fd3024fbc0a1deb3c07e08546

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9ca5193b9b798edd66ad42f0f586b2b243ce02053b143f6212633e169d811786
MD5 520441252839c8963f584192aa792c6e
BLAKE2b-256 1aa847c5f4633858456edc0e723f0bde506dc3c19280f6bb669bb6e2e5e69214

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7ee43a6e817541267e1367dcca0d7da5c2321a87f50d23d62e01bd1fec06d9e5
MD5 639db296fc25409a1b5f9eaba34dfeb8
BLAKE2b-256 6d391821704de44f008abd7e072f8f58a9b33d89d10ba39329b4fa17a9ad87c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d6bf770191a340f6c22442ff96f06ac8bc73fa1e8487a0b6b06b83210df2c077
MD5 cf3c2a16ab81150bc83c04f5fec65ea9
BLAKE2b-256 75719e54f81dbcaf038bfe5888923028521e05432b25014ff0c317c09bb36d41

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a8d49f0b805068c855b8e3e0a7f69e3ad3bb95707fd0ba342897062e7029a999
MD5 2984ae1559f3c268a833e0ccf0e00947
BLAKE2b-256 134f3c4877606a8bc2200fff7677c6716fd0194ab26b40d0aa51d3bedff7fc85

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 cabc73c83ea928a54e4f0ddb3f1f03182ae57e3ae5eedea4856659cae1656f9c
MD5 f8b02d1afded3a65b5597e79361a6c84
BLAKE2b-256 a6e7d21734353711de26e58ce191701b48ef4a72cd45578362066240d15eb1f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c1b323ebf39bbaf80c1274bfdc54ad907d7ef9d77711cb33969e314bfe2486b3
MD5 a71c462be7d261cfa313c390c6bd7227
BLAKE2b-256 8d82438db309be33e7fcfde2c33b047e7ca97b12e4238c6f1cde51672021ef73

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a428f982f7909a4764c37967655904f13f0ce68d85527126a17215451cf48232
MD5 0a848ac8e02366cbf652c944519f2ec6
BLAKE2b-256 be1029a6cfbc3e8f4308588dd72bfb4272778ddd6758973d573fcba9679e1774

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 26dea541714b0115bf2719343a9a7b4247a388413198192b8be6ab7add71fa8d
MD5 e80b959011dc342b2fa0557f7447b42a
BLAKE2b-256 9ea42356394d4dc26331b730e36f41e7c51d6add775a5f59099131c8999cf584

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