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.12.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.12-cp314-cp314t-win_amd64.whl (80.2 kB view details)

Uploaded CPython 3.14tWindows x86-64

private_attribute_cpp-1.0.12-cp314-cp314t-win32.whl (65.3 kB view details)

Uploaded CPython 3.14tWindows x86

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

Uploaded CPython 3.14tmacOS 11.0+ ARM64

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

Uploaded CPython 3.14Windows x86-64

private_attribute_cpp-1.0.12-cp314-cp314-win32.whl (63.9 kB view details)

Uploaded CPython 3.14Windows x86

private_attribute_cpp-1.0.12-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.12-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.12-cp314-cp314-macosx_11_0_arm64.whl (75.5 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

private_attribute_cpp-1.0.12-cp313-cp313t-win_amd64.whl (77.9 kB view details)

Uploaded CPython 3.13tWindows x86-64

private_attribute_cpp-1.0.12-cp313-cp313t-win32.whl (63.4 kB view details)

Uploaded CPython 3.13tWindows x86

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

Uploaded CPython 3.13tmacOS 11.0+ ARM64

private_attribute_cpp-1.0.12-cp313-cp313-win_amd64.whl (76.6 kB view details)

Uploaded CPython 3.13Windows x86-64

private_attribute_cpp-1.0.12-cp313-cp313-win32.whl (62.2 kB view details)

Uploaded CPython 3.13Windows x86

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

Uploaded CPython 3.13macOS 11.0+ ARM64

private_attribute_cpp-1.0.12-cp312-cp312-win_amd64.whl (76.6 kB view details)

Uploaded CPython 3.12Windows x86-64

private_attribute_cpp-1.0.12-cp312-cp312-win32.whl (62.2 kB view details)

Uploaded CPython 3.12Windows x86

private_attribute_cpp-1.0.12-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.12-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.12-cp312-cp312-macosx_11_0_arm64.whl (75.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

private_attribute_cpp-1.0.12-cp311-cp311-win_amd64.whl (76.4 kB view details)

Uploaded CPython 3.11Windows x86-64

private_attribute_cpp-1.0.12-cp311-cp311-win32.whl (62.1 kB view details)

Uploaded CPython 3.11Windows x86

private_attribute_cpp-1.0.12-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.12-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.12-cp311-cp311-macosx_11_0_arm64.whl (75.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

private_attribute_cpp-1.0.12-cp310-cp310-win_amd64.whl (76.4 kB view details)

Uploaded CPython 3.10Windows x86-64

private_attribute_cpp-1.0.12-cp310-cp310-win32.whl (62.0 kB view details)

Uploaded CPython 3.10Windows x86

private_attribute_cpp-1.0.12-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.12-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.12-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.12.tar.gz.

File metadata

  • Download URL: private_attribute_cpp-1.0.12.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.12.tar.gz
Algorithm Hash digest
SHA256 b4215c1f0178b94f9a0535ba04701b1c44da899a37d0b6672fb6e5e1ce2afc7c
MD5 754d5836a619424a205c9f222ba2ef96
BLAKE2b-256 3cfd573f721104e2fa45a50250725efe8a25c27387ab1269e8e3f36dbd12fe4d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 ebb40aa2502ab00e2793b13a03457ffe2980894a7aa805b7d6d24767cb8751f7
MD5 9d5e6ba2c70d71f0843d78dced59c59a
BLAKE2b-256 2f513709332d8dbc019e55bba377acac93537bb78a8fd858937ce93ca933bf48

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 1833a731ac674efc04b126b7ca597752c8f94a9d5e8855f94f1c332ebd4c63b7
MD5 80c30f84362ca83656b63994fbb52c97
BLAKE2b-256 8261e7878bcec8343b4daf7c5537ace074d1bb57e3f5e4a45059a7fb4e7f9168

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5336e03e08be3f7c9fdad124a7524e22666a542f3beefc00cfb5e74d8a177aa1
MD5 b78ce462fc27c610a3779ede3514f612
BLAKE2b-256 5355310e0db79f83dfd2554eae740996ffe32f4b823b086e8ff14aa72a7c48c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ab00ff85cc19b5688ce257785c1d27acddfef5357d1aeba44ef9d64a1a8e1275
MD5 e4cb9916dbf6704685775ca55b16427b
BLAKE2b-256 4006d04cad6a291fc42e2bba077f2bffba7e77213e8893388f40920ef0bd66bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 13209c1720972666f9a7696774e5d0c9f65b3dd1cfb67c308ee0fa231c1da687
MD5 d95b467183682cb56a2b5c9e4d119379
BLAKE2b-256 d954268e33db6064da6de36bbd640dd06727e153c1eb2c6a531d18515675fb19

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 6db5bd67ae49af27963a56aacce41d387744431ce529e2260b9bf0c7a4a4e8b3
MD5 e55e85251db2f47bdc8ce222236f36a8
BLAKE2b-256 e61c72dc257e63b9d52f81373719e9e356933d77a54aca7532741be1eec3f4ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 275b838d7aa70d85b49df456157bb55b78ea345bb2f873e606d40a58a6f3bde4
MD5 e260f5ac283b1c43e002b8fcfde8171d
BLAKE2b-256 2088a431f8f87c60920f0030ddf56508d725fbe437438ee309c1a9bf5329d7f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 780a3440a658b01a60ab0f0929a4895d6048f832e546dd04c2184958e428de53
MD5 46a14f2a862454e1a3045218fe4c420d
BLAKE2b-256 4910ffc24fe91e2e6bef9a0038501d8964b9157c6812942afa17769f4f78e3ac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 97a1820eb709ccaf6ebdd82773db9569a9d0ea26a6f459e3e69b02275e032c16
MD5 b53d3e5fa10a61c49a2ce7fd3479121a
BLAKE2b-256 116bc6fc43afeb7c42fd58269f92139d5cea08e17ac5419751f2c2d99ab27c4f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0950c496a573d2d015886a3fe1d758a0cdb30994aa5ad46870515a39afee6bbf
MD5 bf3977803aa0cca2782b84e112affbe2
BLAKE2b-256 2dee584f279ea6437d61f2be7f1280b5bbca5ff4eab354e304c29e1a6b297f23

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 6aa8f816f4b89b1228f229f4f72ee9fd8df2851d0c6c836dc5170d4c09af59a5
MD5 ff239ec8feca9006ffa28c7c8ce53071
BLAKE2b-256 4f1e953eab156d555ebdf3fe1bebce43c31484c01b837ed7af4f4a638e1ca526

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp313-cp313t-win32.whl
Algorithm Hash digest
SHA256 c2960500a98ae9ca49f9500b8cfa98fc609605c4f823ea5c87a250b48b1c685c
MD5 c8284edc3dee7dd000cb3f604bf51d56
BLAKE2b-256 7f0e5b1554a126ae600b7957f327187b978d5b558fdf45f7c314ec45ce9efc13

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 407df6807f6b19dbdbf0bd4398a68a6793894fc78b98e970075f0c923152c923
MD5 da0472030adb6550ff9b3e06506e7e25
BLAKE2b-256 83f189d280d7adb102b8433417e451a907bdbbe7fa0eac52dbb0614a2ecc10d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e258fc7c8a455e4d19a609d80a0a26563e72d1be863f80949fb6c02c6c42491e
MD5 0013b4797425e9c1edd2d6716bbc722f
BLAKE2b-256 cf337b4acb46e54cac1843959fce99caa6cc453f9081e6b38f90b838f09047b9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8f4ab4f041b906152f06995ea2846079e8d0bff6f835c91304059c7ead60a8c7
MD5 eec542387082a3581d21f5fb81f90045
BLAKE2b-256 db1e11ec95752310c5b259741294c702b8806cc4581e2d998a086a4f461fde3d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 744e83a69ffa7488fefbc6b71045a1e278bb08f605490c6674dee1924e8642d4
MD5 3fe260c62d2c513c1bb5d62d4abf9323
BLAKE2b-256 ad907ee1a144a3b686da60df9f9c14453fe6d897d138c52d4e00294cebb20bf1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 ca22e244c5154292ce481775b977df7bab3691ac0a659e24f5c5c2aa34b6579e
MD5 0faaaa04b670133b65f199c12a64abef
BLAKE2b-256 c26a6826442bd9417f1ecd2e588a8de53a9f7f41df2574aa5187c0948bd587a2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e9cbdc8e39a1b6849c522491d2c98b62e158106da7e4b650347ff8d7e423ad7c
MD5 93cb88f2703b6fde32833df36e08f5c0
BLAKE2b-256 777d4841fb4efbc5238a35cac1a6d7b4ac27c978490e3572cd83829d9c8e0ec5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f29bd754f6f5f0e39eaaefb5bbacb32ccc5e6241ff9707272b3eb7125140b4fe
MD5 b531f68db98e5cb97ec04c80c1a7fb09
BLAKE2b-256 23a2b38b8f9d1b00145a928db12ecc454b358a9a3c387d0d8292f26a41dd0880

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 11fe71724bf415c6cfbc22da4c97a52648e67198e3383f3b646f6ac2d5838320
MD5 32a110a364483b3c68d1646ecfabf904
BLAKE2b-256 e70cd824c0ddcb30c9e1a6e59b02bccfe8a9668e79007c15e07ce1d8154b6bae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 5485162adb5ee0716039a7aef0df3fdc08d0a4549a2a7718bdd21729c98e65b1
MD5 7869e5f5e35d235ee8bd2399b3b44baa
BLAKE2b-256 060be8a9837c25b78226e40d2d9d3827a3e24643b4ad26d5208207563bb53803

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 7ffa0ba5bc4002276dd4e51116cf55b5ded6918d421dd5680683242873b0ba05
MD5 61bfd3e48e34e201519f87f5a6e35e6a
BLAKE2b-256 d6b0060e25148ddf9c09dadce4411eb9b5c3966ed1dccdfe84196f3a2c44811d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ecc146e04356079afa697a96a650a9c04a17022efe5a8e049b99d0ffdb58f61f
MD5 9304d854924121ab61a908dd3c57726b
BLAKE2b-256 58fc670d265a9414ae20c0fab6bd149397b3c06da5c3506d600014eb3d07ea0c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6690f96c63c66fdbbb99d487a404567b9b97cd97b164b68ea2c0e9a2dd0e82bd
MD5 a5b241b994d60a16eaff7b48af829e12
BLAKE2b-256 8c1ddf7ec0f36690a973fcd17cb15c674984a6c7813806bb877358cf0edc7b12

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cfa6d59fafd467b77ce24f13e433c195c466d07bab67751874845c57fda91004
MD5 b8ef7a3835a8c63dba63fc4d2b92ff04
BLAKE2b-256 2a7171d90a743d4c71edf114141a1539a997b2ebefa84e0028d20ab8bf65508a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 7fe63426002244ade5b0b5126631284d5039b81ee041cecc4e746108aebf581d
MD5 b7a0ae5e318282daa899a18aa420803f
BLAKE2b-256 756f4356189d7e3efaa97908f7f0dfad864d920c9fabe2e2840267dd47589b3e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 7e40eedf1aa12beb0aea592ef2b2faa41a2ad2998a94e77599a3caa6890fa8ab
MD5 3c2793c09250016d6275e0efbad7a5f4
BLAKE2b-256 2501f17b8ff19a45191a9bf20e7d94ea5f57004967daa621a97ba40a05e1cbab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4fe32d7cd53438f3ed2f302f18b8e4b40c65fb655f001230f3bcf9a6a14f2160
MD5 f40eff4b80bbfd60480a8fc41b7134f7
BLAKE2b-256 79db60273c65e71df9e9e8a848f3b499aae6265c83014edf8fcdacfa210fce9e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3cbd8c30f56846ada7ba77af6cc25abda3e57dca57a9f84b81b947ebf70a22e5
MD5 e61ba9e8b5cbe60c8eb403ad68875ef3
BLAKE2b-256 0c2ee4cf9b8b8948bd3d3b97debe285fe1516f13542f139b6d4806bd9bf57f80

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a7c3e20619eddaff5d43df255f8c30237d45b113aca4194a7a30ae3d03edf93e
MD5 94a6b8d9602786a5f6e7445727483234
BLAKE2b-256 d922aaa25983535806370bcecf98bc1a85471b58ce42c76104614a3f66b09688

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 fcf0414e96dab93f38ba5f683065f82d7c905e94a32f7b1b5926b094709611c1
MD5 9931b21c138e5ec683e56decbe2c1eb5
BLAKE2b-256 5c7a554363b0d0f596eeda6fcdc9eb5a7fc6ce41592d01902a9dea1b132069cf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 fe5118a8dbdab99efdf2f400da537056e73b4af86ddffd14c8d9c5a391d411ce
MD5 6156ddeb5327847a1109ada8e345c8d0
BLAKE2b-256 ac630bfd4228049e58a5930e2cc0c92d1b269859ec827de708874d2f8e13439c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bcd14a08cc605664e32437b0d830cdea343c7c9b6db48b1a27d47af9f54ba454
MD5 d9a7931ee3bea69460ebb316ac6835b5
BLAKE2b-256 06034509c52424c83c8f3b76f60de8716e2d64ce0aee6bfd170b959d29f7653e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bf2ab9ca022e3005ea85e9a8f4eb48dd10d84cf91860ef23d891d7ac2fbbd5ba
MD5 4cd3e61e59327896a5f2505d21e70486
BLAKE2b-256 300056703293b0a3992c37ba3033aaa719d0e44ab396ac12c9612cd6d2394cf8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.12-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3e22b358d9b7dcd3fb247fdd74595b3aa866fd8d561509fc415fcf46a7bc6adb
MD5 1faf2b5dd741e39eb23bcd23e7c28b12
BLAKE2b-256 ec03ed3034c9cc7476468e9107f62e22841aa377efb8915e61818dbbab7633cb

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