Skip to main content

A Python package that provides a way to define private attributes in C++ implementation.

Project description

Private Attribute (c++ implementation)

Introduction

This package provide a way to create the private attribute like "C++" does.

All API

from private_attribute import (PrivateAttrBase, PrivateWrapProxy)      # 1 Import public API

def my_generate_func(obj_id, attr_name):                           # 2 Optional: custom name generator
    return f"_hidden_{obj_id}_{attr_name}"

class MyClass(PrivateAttrBase, private_func=my_generate_func):     # 3 Inherit + optional custom generator
    __private_attrs__ = ['a', 'b', 'c', 'result', 'conflicted_name']  # 4 Must declare all private attrs

    def __init__(self):
        self.a = 1
        self.b = 2
        self.c = 3
        self.result = 42                    # deliberately conflicts with internal names

    # Normal methods can freely access private attributes
    def public_way(self):
        print(self.a, self.b, self.c)

    # Real-world case: method wrapped by multiple decorators
    @PrivateWrapProxy(memoize())                                   # 5 Apply any decorator safely
    @PrivateWrapProxy(login_required())                            # 5 Stack as many as needed
    @PrivateWrapProxy(rate_limit(calls=10))                        # 5
    def expensive_api_call(self, x):                               # First definition (will be wrapped)
        def inner(...):
            return some_implementation(self.a, self.b, self.c, x)
        inner(...)
        return heavy_computation(self.a, self.b, self.c, x)

    # Fix decorator order + resolve name conflicts
    @PrivateWrapProxy(expensive_api_call.result.name2, expensive_api_call)    # 6 Chain .result to push decorators down
    @PrivateWrapProxy(expensive_api_call.result.name1, expensive_api_call)    # 6 Resolve conflict with internal names
    def expensive_api_call(self, x):         # Final real implementation
        return heavy_computation(self.a, self.b, self.c, x)


# ====================== Usage ======================
obj = MyClass()
obj.public_way()                    # prints: 1 2 3

print(hasattr(obj, 'a'))            # False – truly hidden from outside
print(obj.expensive_api_call(10))   # works with all decorators applied
# API Purpose Required?
1 PrivateAttrBase Base class – must inherit Yes
1 PrivateWrapProxy Decorator wrapper for arbitrary decorators When needed
2 private_func=callable Custom hidden-name generator Optional
3 Pass private_func in class definition Same as above Optional
4 __private_attrs__ list Declare which attributes are private Yes
5 @PrivateWrapProxy(...) Make any decorator compatible with private attributes When needed
6 method.result.xxx chain + dummy wrap Fix decorator order and name conflicts When needed

Usage

This is a simple usage about the module:

from private_attribute import PrivateAttrBase

class MyClass(PrivateAttrBase):
    __private_attrs__ = ['a', 'b', 'c']
    def __init__(self):
        self.a = 1
        self.b = 2
        self.c = 3

    def public_way(self):
        print(self.a, self.b, self.c)

obj = MyClass()
obj.public_way()  # (1, 2, 3)

print(hasattr(obj, 'a'))  # False
print(hasattr(obj, 'b'))  # False
print(hasattr(obj, 'c'))  # False

All of the attributes in __private_attrs__ will be hidden from the outside world, and stored by another name.

You can use your function to generate the name. It needs the id of the obj and the name of the attribute:

def my_generate_func(obj_id, attr_name):
    return some_string

class MyClass(PrivateAttrBase, private_func=my_generate_func):
    __private_attrs__ = ['a', 'b', 'c']
    def __init__(self):
        self.a = 1
        self.b = 2
        self.c = 3

    def public_way(self):
        print(self.a, self.b, self.c)

obj = MyClass()
obj.public_way()  # (1, 2, 3)

If the method will be decorated, the property, classmethod and staticmethod will be supported. For the other, you can use the PrivateWrapProxy to wrap the function:

from private_attribute import PrivateAttrBase, PrivateWrapProxy

class MyClass(PrivateAttrBase):
    __private_attrs__ = ['a', 'b', 'c']
    @PrivateWrapProxy(decorator1())
    @PrivateWrapProxy(decorator2())
    def method1(self):
        ...

    @method1.attr_name
    @PrivateWrapProxy(lambda _: _) # use empty function to wrap
    def method1(self):
        ...

    @PrivateWrapProxy(decorator3())
    def method2(self):
        ...

    @method2.attr_name
    @PrivateWrapProxy(lambda _: _)
    def method2(self):
        ...

The PrivateWrapProxy is a decorator, and it will wrap the function with the decorator. When it decorates the method, it returns a _PrivateWrap object.

The _PrivateWrap has the public api result. It returns the original decoratored result.

from private_attribute import PrivateAttrBase, PrivateWrapProxy

class MyClass(PrivateAttrBase):
    __private_attrs__ = ['a', 'b', 'c']
    @PrivateWrapProxy(decorator1())
    @PrivateWrapProxy(decorator2())
    def method1(self):
        ...

    @PrivateWrapProxy(method1.result.conflict_attr_name1, method1) # Use the argument "method1" to save old func
    def method1(self):
        ...

    @PrivateWrapProxy(method1.result.conflict_attr_name2, method1)
    def method1(self):
        ...

    @PrivateWrapProxy(decorator3())
    def method2(self):

Notes

  • All of the private attributes class must contain the __private_attrs__ attribute.
  • The __private_attrs__ attribute must be a sequence of strings.
  • You cannot define the name which in __slots__ to __private_attrs__.
  • When you define __slots__ and __private_attrs__ in one class, the attributes in __private_attrs__ can also be defined in the methods, even though they are not in __slots__.
  • All of the object that is the instance of the class "PrivateAttrBase" or its subclass are default to be unable to be pickled.
  • Finally the attributes' names in __private_attrs__ will be change to a tuple with two hash.
  • Finally the _PrivateWrap object will be recoveried to the original object.
  • One class defined in another class cannot use another class's private attribute.
  • One parent class defined an attribute which not in __private_attrs__ or not a PrivateAttrType instance, the child class shouldn't contain the attribute in its __private_attrs__.

License

MIT

Requirement

This package require the c++ module "picosha2" to compute the sha256 hash.

Support

Now it doesn't support "PyPy".

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

private_attribute_cpp-1.0.11.1.tar.gz (22.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

private_attribute_cpp-1.0.11.1-cp314-cp314t-win_amd64.whl (80.3 kB view details)

Uploaded CPython 3.14tWindows x86-64

private_attribute_cpp-1.0.11.1-cp314-cp314t-win32.whl (65.4 kB view details)

Uploaded CPython 3.14tWindows x86

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

Uploaded CPython 3.14tmacOS 11.0+ ARM64

private_attribute_cpp-1.0.11.1-cp314-cp314-win_amd64.whl (78.9 kB view details)

Uploaded CPython 3.14Windows x86-64

private_attribute_cpp-1.0.11.1-cp314-cp314-win32.whl (64.0 kB view details)

Uploaded CPython 3.14Windows x86

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

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

private_attribute_cpp-1.0.11.1-cp313-cp313t-win_amd64.whl (78.1 kB view details)

Uploaded CPython 3.13tWindows x86-64

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

Uploaded CPython 3.13tWindows x86

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

Uploaded CPython 3.13tmacOS 11.0+ ARM64

private_attribute_cpp-1.0.11.1-cp313-cp313-win_amd64.whl (76.7 kB view details)

Uploaded CPython 3.13Windows x86-64

private_attribute_cpp-1.0.11.1-cp313-cp313-win32.whl (62.3 kB view details)

Uploaded CPython 3.13Windows x86

private_attribute_cpp-1.0.11.1-cp313-cp313-musllinux_1_2_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

private_attribute_cpp-1.0.11.1-cp312-cp312-win_amd64.whl (76.7 kB view details)

Uploaded CPython 3.12Windows x86-64

private_attribute_cpp-1.0.11.1-cp312-cp312-win32.whl (62.3 kB view details)

Uploaded CPython 3.12Windows x86

private_attribute_cpp-1.0.11.1-cp312-cp312-musllinux_1_2_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

private_attribute_cpp-1.0.11.1-cp311-cp311-win_amd64.whl (76.5 kB view details)

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11Windows x86

private_attribute_cpp-1.0.11.1-cp311-cp311-musllinux_1_2_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

private_attribute_cpp-1.0.11.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

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

private_attribute_cpp-1.0.11.1-cp311-cp311-macosx_11_0_arm64.whl (75.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

private_attribute_cpp-1.0.11.1-cp310-cp310-win_amd64.whl (76.5 kB view details)

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10Windows x86

private_attribute_cpp-1.0.11.1-cp310-cp310-musllinux_1_2_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

private_attribute_cpp-1.0.11.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

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

private_attribute_cpp-1.0.11.1-cp310-cp310-macosx_11_0_arm64.whl (75.4 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: private_attribute_cpp-1.0.11.1.tar.gz
  • Upload date:
  • Size: 22.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for private_attribute_cpp-1.0.11.1.tar.gz
Algorithm Hash digest
SHA256 9e93824517d74e33f7082b73b407451c4c01e11b52361b149b17c14b85f60736
MD5 efaa8e79197829bd32473cee7e552911
BLAKE2b-256 b79068ca55d0d66a53e4c6e6479c1f1ea671f94e8246c0e8d618cb332e49761a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 df1ff2f50ff649d0b7c82ae06aa5f5d627c1404b674d48a2ad297dc9b8dea355
MD5 8cab90e0fa37904bde9e63817866a50a
BLAKE2b-256 6305016e5bad90225ea3a47a376e1d11c755b76f2c0a0b03868f6120db3d2495

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 0fc6c4bcc7d9848041912eeb0f9a5eeecd0e881e05ce36ae00881d115f464f64
MD5 feecc34169bfebc922db4015743a673f
BLAKE2b-256 d34b99c3879214846100f3afec42ea63257418b2c89cca76a9eaa7038c23d578

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5c36449b19ea0b304c56e0e35bddb0fa44fb66ac78375e56b93de40094cdc204
MD5 dafb9d6b5c238b91cb7c3e0360a3ebe3
BLAKE2b-256 20e7bf69b4ab3ed800aa657f0628c88fd863fc4ecf36ee2f9b550cab3f5c44b0

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.11.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.11.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 43963a0dd26ef47c8e73122f5da0b360fa64dfddb6d295cc50920d3c2f8a158b
MD5 f3f9395830c74b10a38d5bb0b9cb3c90
BLAKE2b-256 656bb8b92fea0324064937dc547923005ee9402cbfbcd9607e1e0f9f5c5bea69

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dae3171eaa7cfb66b2ae1e4abd70028f2e3b7a97730e44a6aca9ed5164f260a3
MD5 d7586f7e9652d30bacb214b80f08089c
BLAKE2b-256 942f79eb0ad54f8cd0751158e82754c038dfc016f25f75d32163fef6f136b776

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 82128452f81281fa695951b03f96e73f74b2aab9160958e50e81c0d796af0343
MD5 c71e07f33eadc7d1443ed3eeadf064bc
BLAKE2b-256 a7aecb58390a43475a12611c8ed32b1297d1b574c58b8ec6124d915c8694c62e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 9ea2b77af21fd4d0652ef9f213d4240a9254f54842feac944315c1c815712df1
MD5 6d76c0285811511794f66803d4d28e08
BLAKE2b-256 51ebf70e7d0ed2023830de6cac2283cb6a6a0106bc0437a3659c521b05d710ce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 58c59740691d2b67e6b12b27f8dc35303b6e494bada700c43a46dd227a845818
MD5 360ff097d184a61624c4363bf62462f9
BLAKE2b-256 c90c79be43f80a42820234a9097357169d5b4ad7058fd300b8e54a8cbde4f929

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.11.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.11.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ce351b412a2bdc4aec7932104168a408a488b3d0c7961b65f5496c33997c4590
MD5 97f60c9a8d5ee4cfae4b6d264dfcf327
BLAKE2b-256 dc263e2d008f31fb6b169e1cc404495542936b5b2f0c539ab9c0350a2f637050

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b6eae00b1a775ba6f94efcd28683716e52149d4e782015064076dde73bafe086
MD5 e9764a96b52de5e6d126910cc73b3b4f
BLAKE2b-256 2a81a1b852c4676ac130ad9dda4df422433a616c73cc2286c42dd6d3b28fcb9a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 5a742be7a7f1ee551a396f03bec0f5f92d64fba2d20cdef354fbdb380f20b3c5
MD5 43e692c278f8ea09a7e4c5b612c6343f
BLAKE2b-256 29e01e877a4a541ee98d72f3547d755c8d4a17fe0856eaaa0d47e53496037459

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp313-cp313t-win32.whl
Algorithm Hash digest
SHA256 01a210b7200ade245d4533974d31cddd7603a1859f8f7757af0ecf76f16de92f
MD5 0c62fd93c4da77fd0f9c4878c35e2d64
BLAKE2b-256 a43c98a7412eb438d8e42ea9d97af442e857472b742f918daf6da9fbca3b0fda

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4f1862726d76232cb186da8a6581d7f3b22da41e048a7a06b9e50b034ce46a7a
MD5 c0215ba45aab37c39994056582e0f4fb
BLAKE2b-256 81d79a751b13950e34a1059df86b5f25d4be5e612c64ecd26674513d5becefa9

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.11.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.11.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 22eff57e23512869f8b4c56c9c3158aa56d94de6c412a1f27a2e4380b940157a
MD5 6279314745e5677e35b476ed649f3b32
BLAKE2b-256 3051131760961b8b68bafe0411b714dfcb3273cf3c2203b9cdf9592376d4d789

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 74885929c07d0fa8827656340f064a8aeb29e063ff1debe53264e5e6f318f1e7
MD5 cb4cc033e1a9cb3a3e28f7106ce349bd
BLAKE2b-256 0f89ecc9803b849889c246d106d275b3121947bdfc26a91eae6ed30a983ebdeb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 890fca8aa22bd07f9fe97fac1ed346fec99075b511875cdac7b60a2a4f43f669
MD5 3576cde348c176086dc1b64d5052b89b
BLAKE2b-256 dc9141be5807c0bd4ff1c1006f2b66db40b9d5695a5aeec551ce4baad83afdb1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 d656da70576dfc5b6ac4020eb249be2e5e97daefe37e9329611f901f2a3d9c9f
MD5 a81f68df2cb5696a9196d58a2d4e72da
BLAKE2b-256 5d27e9fa6ca78c9e07c3869196897e6b07961ca2ed038c11202a590c1e0d2c87

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6271d26b4c09fe2dc2694bcd43faba9ef56be52053252b1a9073d0094772a90e
MD5 d9caefbeae81d487b37abfbad7d699bb
BLAKE2b-256 479cd6e04aeeacb3e1a45d74964dfeb792fbc85241d09c141bc4d672e00f88f6

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.11.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.11.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2f838af08428cbf2b2e7949ea1a446df0a1dd1e6df74cf42d7a05d0173758926
MD5 5fc1087e648f92c3618fb868eba8506e
BLAKE2b-256 808e628c6b7057b99ce929035ceeb30e1ef766ede51147df8a996212af73e871

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 06cb8486523ad4cae925bc83ec68931c91f3b4b0f9857a8a714d454e6827ba05
MD5 7c14e432a8c09ca91ad9836180a4df4b
BLAKE2b-256 2fe38c71ebafbb04828f3a3b4e679861549d8635b5b3a3e7ea6389b29b81f84b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6a9971d720711593fb775a10d52198eaf9c2c8ff45fd60487a32201d20d4e9d5
MD5 47cf1582415fdcb4f9d8c476702f93af
BLAKE2b-256 7d7e66eb698a595491de167dc8e95eccec3101fcd44c49fcb9f0a4d6b615e688

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 0459a0530b242efbc70a8d2056ae5ee5c6e37d355c191336af929e6a61b4c09c
MD5 17ab0cb9d019e7d5323f62ad431abd37
BLAKE2b-256 1c43a9c83e96a40fcb061c48da050464cea9b192a56443a0fd0a094fdc92467d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3cc41ceafbb149892095ff676a061cb442502077c1e8c59c5403f94c4737babf
MD5 44db6f6c1fe480d6b6c55850c1a241f2
BLAKE2b-256 e687aaef00d9ef325d722823112a3902f4d67a0271216cbddc4fd29c8905ad1a

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.11.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.11.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b2fcaddfbd77a25cf110a8059bdd6c32f25da637a0a2985ed6e6e9f0e42e876b
MD5 d1d7b6b01659c707031d886297ec894c
BLAKE2b-256 de14a6352bf025f4a7939e3db9974ed15d925499d2abc4685787c4272e9bc1c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 faaa5380cd3a7fd6c8552d1d08f868a9ba830b77b80aa8f1057bbbdf00d5be9f
MD5 16d9e92b56ce30c06b8b18d757c10cca
BLAKE2b-256 6259540278a96247ea7f5183c025334dd6308c1d66f6b186b7bcdd02d8c0505c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 5c602b40edeea65f4bbd8833a9ec90fe2e50f7b0c2712464e184851799b84bd1
MD5 a8895a2333ff201afddfd717c27c4c46
BLAKE2b-256 12ba9664bc04524f06e37d588774c6879b455d4dfff86d27cee08819cfb18088

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 d77e37195b847fe597c5984af232ed02eea3be04b85d388b667ad16c2184f1a7
MD5 5946838b6602bd02511723129b4ca24c
BLAKE2b-256 3982484b508c0953f1ca6d647dba1a01ebb3ebbe3a03d23d1d2caecb48842dfb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1b845980041b69c7aeb9018272eaac610d4f90931fc47635796a3c4babef47c9
MD5 8ef855317017ba707908da26a5b3e355
BLAKE2b-256 91483d0f498e17d963dda64be781dab5bc1e6c20931923c66f9ae502cbfd73b9

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.11.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.11.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3a96babb20811d868832ac6c57817c1be725f3d3cf847b2e4ce3f705006c0306
MD5 3c5c6f955634c49dd6492ce67b3af623
BLAKE2b-256 1ebddaf57c105903de8083881418853544d12730659a5f6b7e36b1554af07f59

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7ea38031ac080429983b92e0718007558362bdbb0fb4648da6583c2292d5a0fb
MD5 ba0b76635b6c49c857d1f256d0429a36
BLAKE2b-256 1086855d57682a3608c165882c91d24230c40ae4a2ce8fb1a7b428234e83469d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 bc9497c8cbece15b6e4e914ee4e9be2a696aed92c942d09ea992bf8b2bfa1c5d
MD5 0a4fba8929f865dbd74a92eb51ebca11
BLAKE2b-256 fc74e39d1fc035f8300734544dd384d62f11f24f083c04533245c9c67864c8a0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 686f50a6520bb28ffe14f7e3832cdc4b824f4132f364ea1cbb87a4916d890ed4
MD5 e32f2de231183dd04c742b009b358f7f
BLAKE2b-256 281b1c6c185fe1346f3512c2f4daaaa0a9d7493bae053bf49f02b624bac8fd6b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e62707b14f4cb5fcd6fe84006a3f7fc4d535905dc82b438d2deed1d8da0b0254
MD5 d8bf9ff94e2ced3945e2ca1d34458603
BLAKE2b-256 eea8917d32f7c900938dc737285e386da009cdace4673ef2b143f5a6b92a4fc1

See more details on using hashes here.

File details

Details for the file private_attribute_cpp-1.0.11.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.11.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c1158db3784c23c68d93f37c4bc7edbd42dda13645d0f5b3ff5d30356a9d81ad
MD5 af585f2626eeb033aa49db206975f32b
BLAKE2b-256 aec87d5596c3daa4766d4c7ca05ffb8cd6f567a8fea36a9768499395100b9b40

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.0.11.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6d7a78571a4d75bf653ffb140203d58b5ae1c889dcc96bc84c3670ec684ff67a
MD5 7dce92b10c11c355bbf51ba8ddeec770
BLAKE2b-256 05e05ee0a6f362ad4b70f96a90d9dca067fde12a80a8dda5536042f21abb9a9a

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