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.7.1.tar.gz (22.3 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.7.1-cp314-cp314t-win_amd64.whl (77.5 kB view details)

Uploaded CPython 3.14tWindows x86-64

private_attribute_cpp-1.0.7.1-cp314-cp314t-win32.whl (63.1 kB view details)

Uploaded CPython 3.14tWindows x86

private_attribute_cpp-1.0.7.1-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.7.1-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.7.1-cp314-cp314t-macosx_11_0_arm64.whl (75.9 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

private_attribute_cpp-1.0.7.1-cp314-cp314-win_amd64.whl (76.0 kB view details)

Uploaded CPython 3.14Windows x86-64

private_attribute_cpp-1.0.7.1-cp314-cp314-win32.whl (61.6 kB view details)

Uploaded CPython 3.14Windows x86

private_attribute_cpp-1.0.7.1-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.7.1-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.7.1-cp314-cp314-macosx_11_0_arm64.whl (74.5 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

private_attribute_cpp-1.0.7.1-cp313-cp313t-win_amd64.whl (75.4 kB view details)

Uploaded CPython 3.13tWindows x86-64

private_attribute_cpp-1.0.7.1-cp313-cp313t-win32.whl (61.4 kB view details)

Uploaded CPython 3.13tWindows x86

private_attribute_cpp-1.0.7.1-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.7.1-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.7.1-cp313-cp313t-macosx_11_0_arm64.whl (75.9 kB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

private_attribute_cpp-1.0.7.1-cp313-cp313-win_amd64.whl (73.9 kB view details)

Uploaded CPython 3.13Windows x86-64

private_attribute_cpp-1.0.7.1-cp313-cp313-win32.whl (60.1 kB view details)

Uploaded CPython 3.13Windows x86

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

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

private_attribute_cpp-1.0.7.1-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.7.1-cp313-cp313-macosx_11_0_arm64.whl (74.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

private_attribute_cpp-1.0.7.1-cp312-cp312-win_amd64.whl (73.9 kB view details)

Uploaded CPython 3.12Windows x86-64

private_attribute_cpp-1.0.7.1-cp312-cp312-win32.whl (60.1 kB view details)

Uploaded CPython 3.12Windows x86

private_attribute_cpp-1.0.7.1-cp312-cp312-musllinux_1_2_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

private_attribute_cpp-1.0.7.1-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.7.1-cp312-cp312-macosx_11_0_arm64.whl (74.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

private_attribute_cpp-1.0.7.1-cp311-cp311-win_amd64.whl (73.5 kB view details)

Uploaded CPython 3.11Windows x86-64

private_attribute_cpp-1.0.7.1-cp311-cp311-win32.whl (59.8 kB view details)

Uploaded CPython 3.11Windows x86

private_attribute_cpp-1.0.7.1-cp311-cp311-musllinux_1_2_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

private_attribute_cpp-1.0.7.1-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.7.1-cp311-cp311-macosx_11_0_arm64.whl (74.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

private_attribute_cpp-1.0.7.1-cp310-cp310-win_amd64.whl (73.7 kB view details)

Uploaded CPython 3.10Windows x86-64

private_attribute_cpp-1.0.7.1-cp310-cp310-win32.whl (59.9 kB view details)

Uploaded CPython 3.10Windows x86

private_attribute_cpp-1.0.7.1-cp310-cp310-musllinux_1_2_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

private_attribute_cpp-1.0.7.1-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.7.1-cp310-cp310-macosx_11_0_arm64.whl (74.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: private_attribute_cpp-1.0.7.1.tar.gz
  • Upload date:
  • Size: 22.3 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.7.1.tar.gz
Algorithm Hash digest
SHA256 f5d8aa54472411411079c16fe5c51eb7c7102ec0a7bf3e12614a8984b40385e4
MD5 1785ec50edeb8badc3dfb9ce8cc1e5e7
BLAKE2b-256 ced5c3f73358b945425501faf138317550e64a280f102803a86b3a38cda06a7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 4c5a803e8d6836de5d16655ec871edeb6c343ac6c503df5b4127ccfbb4e20337
MD5 37240cedaa443a1078f4ce203b34a8db
BLAKE2b-256 6d35aa16dbd4d4f3eff4a519dc5f73386d99a0a23559c3ba7969f4e261829d92

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 945d177fb67fa9e6d36a95680ac242cf9b8a9260ae35d71bee2a530a569a9b3f
MD5 a6102c48588bd4c84c07e6f184dae029
BLAKE2b-256 8aa66a769ed4067930766dd88047db6fb4511bbfa47306280c8f1b5e850d2200

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fa49e8aee5b4ee00480a31c62128c0e22e53186f3857c1d47bbafabc4829c798
MD5 bc0b6e4e4f9a737f38eec50627323e1f
BLAKE2b-256 f36ad55e390b0409485d6b53218381c43b5f7f4748096b8e4b3d4dc2e2145a30

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c8e0052da28ca56ac7f533ada7c6f424591c2e151d0b04c05a08d4057fde2205
MD5 8e92de73452d8eba375bb642d616651e
BLAKE2b-256 a6651c0fa9b1abfb0c5e4f8f84173dc411a374994affc624b03175bb604ed6bb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c066a8dd5438f3c8a8410fd685fb43891b673f9410b39a502685351efd396089
MD5 6d16a4de61754e2b83188d4f766c9c03
BLAKE2b-256 b44356ed43837f29e54258cbc91c25acf8b75d863bc9e210cfea5bcaed54cfdf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 2f5a8126490b2d025cdc6c79776e7198c8e0b427b63d3da0ccce92b1c4271c81
MD5 df8604d446234b5264eb134aa0058e7c
BLAKE2b-256 2bcd72d6ef4642e3891c7682e6da956b45fd7f1dfe5805dadbb6a7623314903d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 57d707c16ceeeac941f6d27d7a893d9027b5495692dab4d8752023e2efe04cca
MD5 7d9dd8104422a888e1c007b20bda6aa5
BLAKE2b-256 8f79b42e0f40d4cb8e5876ed2f3ff9898ecc9e12592ea5f12c3b1a930a5d99b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c8f85f87675bdab2912e338d12da5a296ee3d3d5974a3a4a1467eb068347156e
MD5 71f4bc8d245611e50915994e99dad25f
BLAKE2b-256 d59bf0a4a0eca2dce27531f3ab0c5e138a411e8adfa95ca6bb12867f949f0c3a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6e291fb72c9ec7f21fb2037c9be59c16fca28cba702caa4a55d1ca89d47a90e2
MD5 87bd4cc90cfe21cf8dc227ad6448c973
BLAKE2b-256 85d5e99c771bd4e234986def9bf5839ce388e96147b9d0f89c28664ca49d4212

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 65c73c046d7c712f209d77c19cb30e1b99c41aee6fe9deb210f9f8b6d8c0f3a3
MD5 82249c7f8f252807a2148550bc8d8309
BLAKE2b-256 a8c1379188b43125ac7b38349126c53af118c88fd031ab0a7cfe9f2f1757910c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 8ec4d81f66a21b9f99e9359bb9275738480b2dbaaaa54dc8e5f90cf877b28ccf
MD5 54c24e7f1a4e4fc8021ed0af2c6ac4a1
BLAKE2b-256 872a8623389fceb5f4c4399e3d8d63d9f979164fcb02b85e986225976917b5d4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp313-cp313t-win32.whl
Algorithm Hash digest
SHA256 4bf962a79ed7adbacc64b4c4ce5a40823c4f04c9b5c40014a358cff6c3778370
MD5 de2cea5e6b62e5d25f7690e5175f1bea
BLAKE2b-256 ac2df9e3f2b3e650ccb157d00a534384d9bc9733ddd2e121c421f47ec9492eb1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 283be41bf170529f3c4774f36982fb8945953cf494c3ca6d49b78ee9a9838d79
MD5 162cb956b6f81e8b8568b10eb784979a
BLAKE2b-256 70cca449c4d4f302c1b5bea4cc8bdd8bc02ac56f0241a27c65e20da717167d3c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7e9d31af636784abf627b3e99edc631eaaa71c812c0ba4d99d4dc1be70cc722e
MD5 6987618db92c423fc7e43fe10c1e6390
BLAKE2b-256 776e21261d51098a3190bcd71d4539b0408f5ab294f5c44de03deaeb669f0d43

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9f411f441bc3589d9e4f1a264983f8f05999b81b4dadbb8b77efa078fabcf3b4
MD5 f0c29e517afdf9df30fbe2f3a8a13820
BLAKE2b-256 3f264a6a4fa9064483e723730a3ad3d76766b437130c3a52a4fe85ad244cef1b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 cdb79177189cf2f28707b935708ac47f67acac17e55931b6cf1583470cd1d7cb
MD5 dcb847dace65b06e7cbd69a55e9ad2f6
BLAKE2b-256 deccfe0acb8207418e1bc19e3ead49c021922ee37196545aecf9178ef44ac1c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 9cd02b87cdd824e407c83627a8da79e7fb4cb2765bef6fc275f33c2ea92d18fb
MD5 bf1221b28e94b8e31f547c0ec0de3b27
BLAKE2b-256 0ebb6eadaf151d99e4068f8f014a9e2b5a7dfe5ed5c2f1309610e32d5ed89987

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ad61a7b7786c0d074447b38abddb8087d672d14359179dc14486936705fd8ba0
MD5 99e6df90666fc47fcbab63c573cec41d
BLAKE2b-256 5576892d96b7f8a183427035a0594ec0f89da38b538047c4fff2082a92247434

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dd89c1853ee7aeaca0a97460b8e5c805cfa78f0166f5b19ff844902466fc59bc
MD5 cabec8074a49f6620fa621df1477ed38
BLAKE2b-256 630cead4a64831b387da9b17f92edd596d241162bae75e77f485788ba3e78e5b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2bdd1ef85ef6a58296a22de7ac4ac99d691555ec176db1e655189bcf4cad0e9d
MD5 d6765277eacb80382528ac80979e1411
BLAKE2b-256 e5f2be9aea1045c99a17334e2a6dd9d133f9811f1fea851949faffb78a3bb9ad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 63af0bd095c28ecaaaec591fe8da8e1672fea93fd359c3f426b079a1901feb59
MD5 196d13ff3fa997eeb3162d8e2ebe3574
BLAKE2b-256 e91ae29793c0c9de9a6f54c4b948aaeb84f4c5fb583eb98afa4a5bd09db70d16

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 b2300ad062397eb13da30f3e8bd9081f29e1ff0533cbfad92cb9d58d2432e18e
MD5 a3e509457d7badb9740f0a46cba2457e
BLAKE2b-256 15975f851dfd1379fef439328f51b02418c453a4db504ca3318f261a552b0591

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1037d3091009cff426d34847ab938e10ecc4f8b3b5c4ffce9bf0e0d82d59a03d
MD5 a026dc2383225804621fafe08c729537
BLAKE2b-256 dad861533e9fc55710f709c80b72f91a511f59153f9802cf797f7efb3a58079e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cc4fb198afbd40aeec55c691696ab19ede73400d7c32c108b04952a12b0c32be
MD5 a971703efda72d457b82075662af3d98
BLAKE2b-256 3cea5423802bb3a23e7a532c05796fca84b3cba795cedc1e0404bd55f3894b2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b5ba4df453b102a22fad72a68ccf6b64dc57e627f4606f69533cef7444736bfe
MD5 298b09788095beedf0bd0b6dc34c17bd
BLAKE2b-256 45d1a723a21d6d61703bba362a2629435c3b4eef50d086b50bb8b023fdcb792f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 08ad78554cebf8b5aeb3394e4528c059efd091ae3c49458d84392fabaab09f42
MD5 571e80f92ef46ea36aa030ab6ec0f00e
BLAKE2b-256 849eaced828953cf44f821933b7a037c24a21dd1e57624fcd49c397e42eb5cb0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 839e792bf191150c97b2829898ff13c48ad41bb1f2c1a677f572b8acaa345b71
MD5 5289214b6c6b6089b1e48b68451aa209
BLAKE2b-256 97bb94b4f58e4e2b16c45245fe571a53885f25bd00486d758e5bf81075cb2426

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 61a3569fc5e0bfe01bdd0f748b47860de155268f203e1cf9667bae28e689faad
MD5 fa42048a99798d1908017b1a0353c537
BLAKE2b-256 06feff46503f2d0af027951a2058f48b665932848ed42ecd277cae36019353c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 884f8c96df51b3ae4ac3e9588c48bdce60087e7f603b3bd8416ad6645f0bb1c6
MD5 fbc3d3487474fecc3824b9880eb8710e
BLAKE2b-256 b75078b485a6fc4be2c5d544996ed3ed74cc884eee07e853d1da752568a6af52

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8bc6a0400971d9367dd263751f4c6982d926b79bfd337f6988a473ebdc9ead8b
MD5 e217f6700c235989aa2edad2d4b5e8a2
BLAKE2b-256 e3f09398dfe441805d58052b7cc2ae871d81bce2c1b735a60cdd2b779dfadff0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 5d29984b5c0d0a5a10ed2d837e286a758383c87d906087f529dbd34de5f31df6
MD5 ba56e537453bd9dc733b6c91b215113c
BLAKE2b-256 2c87cddc17adc7b92fe67e31c89fbd2727d9d6d69cc5864ffb7216e1e298ba8d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 7501ca06332edf0963ee4c189c557c1182663a645653925fa36322d76aecab0b
MD5 b82e07cd38f5b2987f33cd2cbae0c647
BLAKE2b-256 276c53f6cf99602d3b0f8247b9a276428d968bb752341b71ecf85d66ea0c35e3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 629ac59b75acdfa6b62e0c0b770d966b4305f83eaa0559cc49a33cc9f04ef955
MD5 c714bbf1c84f16c5245d16b8dcdb723d
BLAKE2b-256 2537ea6f52e1d756d97ad2132fc1d09540f96a132e153aee866140263e45e2a0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c535a1ffe73dfe36614143f280566bd045065e1add4c7d3eb25c71ef297336d6
MD5 3eb1d4f0e2c82a80b228ca9afbb406bf
BLAKE2b-256 c6e03613ad76fda6b77b044591f27bc0c9c8b9ba6866c141a647cebac799518d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.7.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f19547f52c04b41d36c614b3690fb9b4f5f650cf36bb469966868d59374fd0bb
MD5 c0cd4f53365a12a975d3d1a477500105
BLAKE2b-256 d072a937d3c8fd56fe8beae7ca2d8b9a1e10521c74139cad9ae641f1fd1ee504

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