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

Uploaded CPython 3.14tWindows x86-64

private_attribute_cpp-1.0.8-cp314-cp314t-win32.whl (63.0 kB view details)

Uploaded CPython 3.14tWindows x86

private_attribute_cpp-1.0.8-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.8-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.8-cp314-cp314t-macosx_11_0_arm64.whl (75.8 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

private_attribute_cpp-1.0.8-cp314-cp314-win_amd64.whl (75.9 kB view details)

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14Windows x86

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

Uploaded CPython 3.14macOS 11.0+ ARM64

private_attribute_cpp-1.0.8-cp313-cp313t-win_amd64.whl (75.3 kB view details)

Uploaded CPython 3.13tWindows x86-64

private_attribute_cpp-1.0.8-cp313-cp313t-win32.whl (61.3 kB view details)

Uploaded CPython 3.13tWindows x86

private_attribute_cpp-1.0.8-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.8-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.8-cp313-cp313t-macosx_11_0_arm64.whl (75.8 kB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13Windows x86

private_attribute_cpp-1.0.8-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.8-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.8-cp313-cp313-macosx_11_0_arm64.whl (74.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12Windows x86

private_attribute_cpp-1.0.8-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.8-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.8-cp312-cp312-macosx_11_0_arm64.whl (74.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

private_attribute_cpp-1.0.8-cp311-cp311-win32.whl (59.9 kB view details)

Uploaded CPython 3.11Windows x86

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

Uploaded CPython 3.11macOS 11.0+ ARM64

private_attribute_cpp-1.0.8-cp310-cp310-win_amd64.whl (73.6 kB view details)

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10Windows x86

private_attribute_cpp-1.0.8-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.8-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.8-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.8.tar.gz.

File metadata

  • Download URL: private_attribute_cpp-1.0.8.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.8.tar.gz
Algorithm Hash digest
SHA256 2f76ca08bbcfadcea52d655ece2613e2cf8c1fe623b4f9866a25906329645d12
MD5 b9b0e985ac7202bae46cb071f94995d2
BLAKE2b-256 9e1cdf8537c30bc125d2e2f0e2f3643a5e66b15209b3dfcbb4bfcf4e68aac4f7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 27824cf454ea0870ebeab3cae2f8341e819333cc34c5848dce63ed809ced79b9
MD5 c48b9c9e0b47ea980d96637b21e756d8
BLAKE2b-256 8deb0e834d03a59755c22584ec7454d2a1bf00f0d8e51a0aa5060de54d06f493

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 d9b275729f0129c03ce92b4e1c11661c637fc77b4e23ba715e34011ecdae6c73
MD5 44699714971c2a8bc8777c43cc8ae4d7
BLAKE2b-256 10ea7c5eedda36b4bcc063d7591e268a37e490d7710cbcd420b97b08d3ea7728

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9fb121b9367920d02bfbe512338efd203bf16819f673f12276dc66af4ec4429f
MD5 d17e47a0ea3c76a9896a6eab9ab1f8c5
BLAKE2b-256 33f18db006cfdf2c6183938d4c8909e038cd7365b953691a0235d70b1f5d409c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 10bd774f352d93f48d015fb1f25cdc39a054d9ac4ec239ce5c6d34c8eb1f779f
MD5 a6c2b0546fc1bb61cdb7aced31a43df2
BLAKE2b-256 5d0a38a1cd413e8ccfa8602597b522e22a6c4051288dd95dad7d7846c0da5a27

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7c6b52b9036f516c7d203fabd4e5e1b1203b2d40ea1ea39d3275ac3b3c8f5f70
MD5 53afc7212b14dbeb6dd70218508b2710
BLAKE2b-256 d846d118ace37ff366b657956ab6ef48385d2b33c622e9a1bd056b6c50b14ce8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 8f3f2947d3e2ae7560539215d77003249c7b66d56c0b0931e87c2d8e2fb13354
MD5 81f37f28c2d434ed04a8f896e35e7dc6
BLAKE2b-256 ec171c83f5825f16c3a78f788b7297a6fea0e5eee43bdb76bcd958b47304233d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 9aaacc1ae156fff103313cdb55db05b03f20cc7f38a7c1fce53e9599b220c62c
MD5 9f5b4398aa64fdc9f2b2ba96225a921f
BLAKE2b-256 9c84f64cb6592a118358cc3dcdd2a6a54ded36a9475e9639d13bc359de5253f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 510c4482d8bc8c48abfb639160daf5b2f635558435e466f51b3bd069f08a90c6
MD5 6298230631bab8617c057081e038c7e6
BLAKE2b-256 5a64e1f03dcef6e95c5b9ad5346c2fd572efe2ac65da05eaf6656dbf6ecad38b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 93c5df6e66c54b7551f0d1d191452a4ff66b78e6b7394095e9db3d498d6f0e7e
MD5 f1af201a784c30e52ab1cb8a247a4104
BLAKE2b-256 8f17c30be558cb520b44e13b29f699d970c13fc845391b810f439ceebd65a26c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e887b347c3799deb685d66585220e523e1b1401a2605355945b9216185f1c7d5
MD5 7bdc87dd2f3b6c013865f7091a4c8571
BLAKE2b-256 d94f91ce4f5e0066f29aadf5b296862eb57b477afa05e548b41d91b456557076

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 904654b51748250709173e215ec2ac5942ca44696b780faaf9b15311c7a3c08c
MD5 356e9fffda4de6b04598a24fcde93beb
BLAKE2b-256 6c4ba9530bf3778d41426a11b8dfa54a548c6fc99467ef8c799f91257f4934bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp313-cp313t-win32.whl
Algorithm Hash digest
SHA256 98fb109bb1904683ab63a9280af7b61caf76724da8320dff3c9d8c76b7faa934
MD5 388e2196c6526e916f624667eb7c958a
BLAKE2b-256 0462cd4e2166e6f17d1881a68b787bf9752bc947468cd7bb5fdb7c7e8b3fe9c5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b1629a197599423671419daf512db0615dc0f8588533d01a20732d3a0772af77
MD5 87ace0893dd60cd2547e4181222dd9bc
BLAKE2b-256 57947167ac9c77a7634487176ca28a5e1eae7e9b2a1914bd786837f2fcb33752

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e48c056e7b4dac758006ff62a698152e9135e0735acc73435dff6bd32a73c943
MD5 bb3c0070436361a1791351f8403b365f
BLAKE2b-256 a587a4e1b4e1e2d9c618cf0d7636710a4432bfeeeaf9db02d9ff080bf80c6f9d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7ab775ec5addfca1f6dea9aef6c707efdac0aec075f7e53bf97c653ae2dd6fde
MD5 507768a9fbbdd11295deeb90e2be5397
BLAKE2b-256 80c43d4b8a05e9dbe50c5dc7dca8980d5ee332b3e75cdbff313a99fcdedc138f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 66250f04aaab6b88860c5a2d7ac099aa3e2e04c230afce59178e2a871d2ce1ee
MD5 ad8f9dc6f6d0662db65d01633af22c2f
BLAKE2b-256 2480325555fb47afeee6599ccf1f4ae4ab5af92766dff9310ac6e350ef617001

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 011921a2ad36af889311f8e60c6c4e5b425f3b6e8942a0794df163b36a12f6d3
MD5 a7969b4fd5ee9150a59dc1efa7c17e3a
BLAKE2b-256 fb553337a3fa7bab0ca7f32405d20ffd1d3e92a36f3083ccfdd7b1a565361835

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 debce0719cdd75c6ba0f0f7bbf471dbfec3216b1cb6dd97f0fb903c0dcfce940
MD5 68386ddcaa77f1f3194573c09c9f6e86
BLAKE2b-256 00556763c5a74ffb1ff0c0d37fe345e3207046c9115fbbac121d6312ff704673

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 459535506c34d6617b112288f3c094e32df42917d9df892bb65c138bea2f41d8
MD5 984d5d9855c833aa83136c5a17ca09ff
BLAKE2b-256 43e5251be757e57bc0acb852beab9999189c85955bec85270a441af1bc9cdc6a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 56698dc6bc9fa013c58e661ccc8120e1ed8ef6209180ee8c9dfd6b18bc0393e8
MD5 978dea8d2ea34cad4318c2e9fab6271c
BLAKE2b-256 57700668896dbfd6d20ec9a4a30ca2890c40262986c1ac035d1d21e87a181b03

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 feed48fe8277c4eae1c50b25591d44564dcbaf4b1da4d3059e8fc5e1f2863e68
MD5 97377b40b82b0b77042caeeb5136877d
BLAKE2b-256 4417df0483b0ea796541f30ad5ee738fe59440a3d953eddbf5a68d6bd3c54eeb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 a77abf3322ff80505b8e359ad59e118d22b6a5d27ce0a013dc24565ca2c1bc19
MD5 6cf2ee5a78c7fe90d309ea7ce77f1e47
BLAKE2b-256 d35d18b6fdbfc73fe032b3fef6bac733ac60ce47bce405926b1161be9ec8d4ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 aeb382f2200da80ccd95a06d009811ce194f59d9940e69e5e68ce7325ed9ab8f
MD5 b80d481737e5cf98278c1b2bbd4fffeb
BLAKE2b-256 47553f5f5e76c1d991afc079ffec5e414c1d532a998e5785fa63d220fcb61456

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5565738864344f94a808c3a1bebd522b59255b23befa323d8bf1492631cafa22
MD5 531b61191de86894b2e21dc6dfdeb728
BLAKE2b-256 0ae0c88f3a8840f9b157c690948bd174aeb51372c66ce6f1b96bfd0369eafd14

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0e21f304da6a147b2c7bfbd0108d98683f57063c6773983c9a2f3cc1e1e121e4
MD5 5bf717cdfe6212904af1766738ff3d0e
BLAKE2b-256 3ffea51301077cbf49f4a5325f9071b0d3dbcd782779dd1f1846925090f6396b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9370bfb2bc275f3d4dffa8e508daf23df01581c1378b8722228c247ff4ec96af
MD5 6ed5e7aeddadcb538aaa5bef0ea86dcd
BLAKE2b-256 950ee7e7cee84f7f3e2c6095c336b568317f61e7313989c05b3ccd563342f196

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 78336befe6109e7369dfc15afc80f4da4f06fd322df4dfe9fba7a7513d34bc32
MD5 d40d0b3af5502dcab705ff69cd3a28b9
BLAKE2b-256 c0c65f523b9efc1e515839f01685b0ed9382739ebbb28f710d97ea2b44554fbb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1eeac8e8271cb7bf659a373f17998156b813daf8a99edc3650e79d55ca9589f9
MD5 ed2692ea8b86e93fde28fd8cf97aceeb
BLAKE2b-256 9f10fbf13806228f8ce774195bc125d470540cc225ea93bb433277b8c2e8d1c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4757f65ca23493646028b031746743b4b6ccf87e7b80a57b62a8fa15c6406fb6
MD5 7f1785f93f09dc31f7d1dcd4ad1bfab9
BLAKE2b-256 31e2afda96b0d974b56b23b11cb2e72e902ce6175d72540cac28a5ca7ff47126

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ee5db533f7ff42e5aabdcd3d35e766c6c368257fec5fef2485d214d6bfd2d130
MD5 d892742268956902c99fb4d36b7b9e12
BLAKE2b-256 58372dc6556c3b98e8b0d8bf283347e91441d23da34f021aeb18a0cc88e2d134

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8b04fc724b1ed65d9829a25cb8c72020a923aadcd6ace2b4eab1fd80058b2db8
MD5 594ee5fe4a069ee8dff9449fce3d1677
BLAKE2b-256 39c12b095fb4172f1f94d78b832c21d13c05bc88296e0d490ab51cd903cb969d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 9354c686d175742dfa5a57d201a96111cac26b74dc520dc04cb86a5e3f0daba2
MD5 a2f6390648724623d24daef5e39f9a1e
BLAKE2b-256 7f21ca3c4ed57be0417e287faf16fec7b7a01b94aa9d72245c3f2216f6adb68c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c70498ba1e6f3e96cc1529962775dafff1d0e8b80a7e5a7855f73b1ddf69fe69
MD5 fbe38decd5c9c99b067f124f769812f2
BLAKE2b-256 bd615c0e7184ff1ad517ef367f6742fd61169dfd4e84207e573c22a39ebb606a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c3edb873e165116683d584a79b9006f60c78f68fa54c3ee32de0d925dbefa662
MD5 c69f0f3f9af652761e71d4b2f9d9a8bd
BLAKE2b-256 64921a61b620366f4257ddda56f4a48cd0d5f29a45b2ba351a3c0f52921329f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.8-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 42d5ff918845e4c4d5c71b62ce3e7b1bcee5f3466b1f8c3035888c8be718e97d
MD5 8a7c6f01fdfc95925dc0da49bd5438ec
BLAKE2b-256 476beed780a1135044c85d0fa319f672bdb6cac4f1d8edb905b319be6a3ce9d8

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