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 Base 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):

Advanced API

define your metaclass based on one metaclass

You can define your metaclass based on one metaclass:

from abc import ABCMeta, abstractmethod
import private_attribute

class PrivateAbcMeta(ABCMeta):
    def __new__(cls, name, bases, attrs, **kwargs):
        temp = private_attribute.prepare(name, bases, attrs, **kwargs)
        typ = super().__new__(cls, temp.name, temp.base, temp.attrs, **temp.kwds)
        private_attribute.postprocess(typ, temp)
        return typ

private_attribute.register_metaclass(PrivateAbcMeta)

By this way you create a metaclass both can behave as ABC and private attribute:

class MyClass(metaclass=PrivateAbcMeta):
    __private_attrs__ = ()
    __slots__ = ()

    @abstractmethod
    def my_function(self): ...

class MyImplement(MyClass):
    __private_attrs__ = ("_a",)
    def __init__(self, value=1):
        self._a = value

    def my_function(self):
        return self._a

Finally:

>>> a = MyImplement(1)
>>> a.my_function()
1
>>> a._a
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    a._a
AttributeError: private attribute
>>> MyClass()
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    MyClass()
TypeError: Can't instantiate abstract class MyClass without an implementation for abstract method 'my_function'

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.2.0.tar.gz (24.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.2.0-cp314-cp314t-win_amd64.whl (83.6 kB view details)

Uploaded CPython 3.14tWindows x86-64

private_attribute_cpp-1.2.0-cp314-cp314t-win32.whl (67.8 kB view details)

Uploaded CPython 3.14tWindows x86

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

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

private_attribute_cpp-1.2.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

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

private_attribute_cpp-1.2.0-cp314-cp314t-macosx_11_0_arm64.whl (78.9 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

private_attribute_cpp-1.2.0-cp314-cp314-win_amd64.whl (81.7 kB view details)

Uploaded CPython 3.14Windows x86-64

private_attribute_cpp-1.2.0-cp314-cp314-win32.whl (66.4 kB view details)

Uploaded CPython 3.14Windows x86

private_attribute_cpp-1.2.0-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.2.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

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

private_attribute_cpp-1.2.0-cp314-cp314-macosx_11_0_arm64.whl (77.5 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

private_attribute_cpp-1.2.0-cp313-cp313t-win_amd64.whl (81.3 kB view details)

Uploaded CPython 3.13tWindows x86-64

private_attribute_cpp-1.2.0-cp313-cp313t-win32.whl (65.9 kB view details)

Uploaded CPython 3.13tWindows x86

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

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

private_attribute_cpp-1.2.0-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

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

private_attribute_cpp-1.2.0-cp313-cp313t-macosx_11_0_arm64.whl (78.9 kB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

private_attribute_cpp-1.2.0-cp313-cp313-win_amd64.whl (79.6 kB view details)

Uploaded CPython 3.13Windows x86-64

private_attribute_cpp-1.2.0-cp313-cp313-win32.whl (64.5 kB view details)

Uploaded CPython 3.13Windows x86

private_attribute_cpp-1.2.0-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.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

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

private_attribute_cpp-1.2.0-cp313-cp313-macosx_11_0_arm64.whl (77.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

private_attribute_cpp-1.2.0-cp312-cp312-win_amd64.whl (79.6 kB view details)

Uploaded CPython 3.12Windows x86-64

private_attribute_cpp-1.2.0-cp312-cp312-win32.whl (64.5 kB view details)

Uploaded CPython 3.12Windows x86

private_attribute_cpp-1.2.0-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.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

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

private_attribute_cpp-1.2.0-cp312-cp312-macosx_11_0_arm64.whl (77.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

private_attribute_cpp-1.2.0-cp311-cp311-win_amd64.whl (79.3 kB view details)

Uploaded CPython 3.11Windows x86-64

private_attribute_cpp-1.2.0-cp311-cp311-win32.whl (64.4 kB view details)

Uploaded CPython 3.11Windows x86

private_attribute_cpp-1.2.0-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.2.0-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.2.0-cp311-cp311-macosx_11_0_arm64.whl (77.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

private_attribute_cpp-1.2.0-cp310-cp310-win_amd64.whl (79.3 kB view details)

Uploaded CPython 3.10Windows x86-64

private_attribute_cpp-1.2.0-cp310-cp310-win32.whl (64.4 kB view details)

Uploaded CPython 3.10Windows x86

private_attribute_cpp-1.2.0-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.2.0-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.2.0-cp310-cp310-macosx_11_0_arm64.whl (77.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: private_attribute_cpp-1.2.0.tar.gz
  • Upload date:
  • Size: 24.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.2.0.tar.gz
Algorithm Hash digest
SHA256 9bd32f4fe008c7873b0b24d06291660c925d37e2204904cd4afb19c8999a7e83
MD5 930695b9a536245328f7419972cfaff9
BLAKE2b-256 a7c31b4ea95d9dc76d425b6650b18ee91aa27dd7ebda32ac583bfd584f1c62d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 db9dadf71cf8d871c33690f040637c45db8903d15d1a93e3c0849e116bd63f24
MD5 7986100cd6918e72a1b46d0dba9b8d89
BLAKE2b-256 7fc24d8104e3226ca7a7757e9b0528599603525e577f4109a6f1c74c4db8238c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 de07d467e8ce5c72d35b46b95f6157daccd8cc10fa4b214b2bd4991225320fa1
MD5 578071a67e8945d6813eb99c84995c76
BLAKE2b-256 41b78283e3b01ec546324261340fc3ac53a9309d26075aca5219560868449eec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e5a87072d4b40371381fe31280bbcfbe660e9be35a02a4b9f7d1d8a3b5160b82
MD5 dbd7bb32a9d942ca65e55c8c986cbc70
BLAKE2b-256 0d74f32c94a3a288066f21842bfb90726c3dcc0d587d5af8e0639088994dcc67

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 62510551a622637b161cb04aabea17192d56f8ed1cfda4fd8c7e8c206bfe76b8
MD5 3b673e88a8cec7f6848007762860de51
BLAKE2b-256 c584da6212987943979949165e361e3a56902e3e729371bacedb9d32110f7e7d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 145bc29b246643859ac016a8f0d746cdd9248a4f92ac3caa2a8d058415b17be0
MD5 c3cbfcf5da5f9459ae18a766e86a74d2
BLAKE2b-256 13db18bbfd56d02478f3b28f096349e542a741e6a11b93f4f14587ab18a46374

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 f2c0b5224d2a119b1444975af469be26993cb4e567fe41c76b258b8f38a46a86
MD5 0ad303a1135b049f6036d7be547f0fde
BLAKE2b-256 acff8154316381dfd51fdece9ebfc018b9b475254f95f0cafa4de22815c1c59e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 da9cb5ccc43679e940d88601cf5ce723df192b05fe426f25277d6974123cacd6
MD5 5309a7cb8616302cb88014513f318ea1
BLAKE2b-256 0c061a70c31ee296c06e150c54b374ee5d4fddea3d9233c0f916c9bdc6dd926a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 72f3a838dc2c189653527d0a1b7417487fbc5778409a8f9d4eb67fea9c64f5c0
MD5 17fb9e9dde184720fb6a28682a7f7aa8
BLAKE2b-256 21bf15e880f160f6292243e90000850a19d59bd45f7fa5ecdc7ef73430bf35d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6f7fb9676c9ea6caa7d7e871789baed450109da75031062911b3bf1ed9e2d0c6
MD5 b3569072b9c0d088e8438d6186c449d7
BLAKE2b-256 ad8ed5b4b089e52920878319f0c1305918d29b396d1f038c40663d8db5f288d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b72b5af3b5dffca250238c5c1fe877f7b90c3fe79b5f68b46e757ee754526c34
MD5 6fa6f497ac479025cc182cad60d485b3
BLAKE2b-256 805502774804c6bf2efc6c8ac4e19318f46ae7afff9f659fc459301e04f502c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 27ea2988487d5d16344c497848aa7e20abab35bb98ca3b0d0dc965509b0913a7
MD5 2a5c9726241458578ba87a733fb7aaba
BLAKE2b-256 c01d449bf12a47340e842b453895a10e7e1ebedccfe758476b8a56c9e74052d0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp313-cp313t-win32.whl
Algorithm Hash digest
SHA256 fc94bf988971f210f382af10ade54be523e447ed6dea9132add74d9d61fb7821
MD5 01976acf66ef4fd6d4479983f649dca9
BLAKE2b-256 c5061f8cd89545760ae3357e7cc860991d0506b6d660e119540e2b2b6f80dab8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 361efaed750f80b99760ca5a4819c45eddcefe9572d8ddcdd5ea7bca853b9486
MD5 b41456a8a855fee56c7f4d8aae0be806
BLAKE2b-256 42c2983489dc8d6d3d00cb11541e59fc3972d9c093e939599c14e0c670b4e492

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 19609ffb1e51c005f4d5fc7abc732565027a53e54adef7d6887bf974be0d88ef
MD5 4e893f0db4bac96a167c3561ba83b104
BLAKE2b-256 75961e2e44077a1dc52ff574fa868ce0b71d673a31ab1a228e054ee4d6c36d7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3480303166c118201e308da25716795e2a8c67051206b1915942630be48fe15c
MD5 489f61a650fc1f1503afb55f060f4f1b
BLAKE2b-256 bce32775450693b871447026e2eed511993871801b660316150fc4f1b674e363

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b437969e6698be8889552dd2261d6ad7f57ccceb3361d9019d933a76851fc19e
MD5 9caed7534388810b7283ee5be9271668
BLAKE2b-256 60749ccfc4dcf749c52b894e971da35650df05329fd66300a713b19cf4ce11dc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 44280bcad168044f57d50fc4e7c3e4b979fb2fde8f95c9f30b40e92ca303ba5c
MD5 2c967f920d96950d283c4341590fc4cd
BLAKE2b-256 fe317300185efd67bb9940ea50ccdd270ce5c4a32b10aaa25162509110979146

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f8d429caa175330a630fb10771bbab17b683d661418eca88c6a49344f1917308
MD5 cf89e6102ff951a17b5c90ec41a9d199
BLAKE2b-256 6a0f6866433d79fa31b073a3181c5c3e9cd91eeb40270b51f89b997c3f574d95

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1c098552da15c2c60ea56d502070f37c56b13ef8f5f9f6c2f49de0489f000cf3
MD5 5f6b1ae6c7f3b14bef0345eff72b67b5
BLAKE2b-256 ec08f3d8d0e18e6edf3240226ec8fee81bd7dcc9efc81852c18b61e1886108e8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 09195f37b93e91d521ffcd8b19093ec5e8960cc82ddf5b365f2622a4b6be1091
MD5 ecd097caa99f38324c0815235dd6ea7c
BLAKE2b-256 c44e20acc470642c0bcbe904102e1bfdb424bcb5d807455f723f55ca1978a112

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 276f39fc9d9647c0ddf66e9c643c9f2de22c1b73e143d6c27ed0ad645cf54916
MD5 e4c8a8afc21177ce84f6557d1ebd6bb7
BLAKE2b-256 999d7425bcebd5cd95a3257735eeaafb8903596294f80500758710a9da70fc67

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 990b44cae7721be4a773bb973b82596fa6468b6d8a82732b545921c942e6f0cc
MD5 c7e12cc3b790f719c5ec3dadd0540780
BLAKE2b-256 4155afa2e9df86635cdb6ac94ec0bb1e0ea0a2ea6b9cd91aec19e1d0dfd1d15e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0faa381c16efa78867ca1894dd03eb405ea15ba837aa11fed5df4b17b5f5910d
MD5 37415469e7d481909f95599ef5898d9d
BLAKE2b-256 dfeb1a521208f18b89c8fc45e568b151ffe6996ad95e61dbe23a98f38f387db5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 94f2f96bcec3f69b79a12517e5bab88384c58015fdecaa35e87c4aeff1d0a9de
MD5 9c5e868a752a1356feeb7834d1629236
BLAKE2b-256 7e64ece47d65c82337204bb198d2a41ddd70d74c73e0a748dbc5f14700b9b807

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4e525b79ad9469a2d2d331d131c9fc25b2baa680dae5a50e83a42148d14cf63b
MD5 001cec565091437cad91d01e2b86c6f0
BLAKE2b-256 eb202f299422361c078d72768bf442698313dd1c23e8c3acdd58aad7d29cec5d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b111686070b10a6446e0b382afdbbc1fc6e669063b0fe36e9d7c0df9ea36170e
MD5 8d3240f71095b6e2e5ade1e40e1ed6a1
BLAKE2b-256 c1962c3b0b01d633409f0246ffbb74e479d7993e9c4c9b2ba090596754b72751

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 a5cfc225ce613e5fba5a14be495ba01d729135d3e6a237f5834345344bbcd5e7
MD5 d104f149ada757769431fba859a77bff
BLAKE2b-256 91f90d7b356adb8b12ab3ed3ec17a5a3a40613c120ed771155753cea87570add

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 871bb58f160755e0e031f4aee0eb36efe95c12c70af3646d300be4f90f4bff9d
MD5 2f665e2e65ad589054470671fc384b61
BLAKE2b-256 cfeb0760fc6d8a3d737f48e49b0b90d6d79e9f3eff58f070bcb6a2773d60acc3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 82d25dde47712fa60da90f1024bc7a9559a1537cc6180a9218d80322d3525747
MD5 fdcc1e483d214bd3932ea8e072d07874
BLAKE2b-256 5f064e869a23767ebd99e2d5012dba716c85c72cbcff5a48b089348741b630e9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 09886c96bcf71ef065def765041e84f93eed11b50095bd71f689b286fb6377c3
MD5 736fa418135519aa9e18f6d53cacc4fd
BLAKE2b-256 056a93cedcf630c23422f99adf0da0e1e83f1abe128de9c6120f2b1d63e3fa79

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e5414316927e93b8be7f2a51287bed92699806d97f8d477ba9968806a008b7fc
MD5 6f2fafd67c3c18f7b0216ffe4abb67b2
BLAKE2b-256 965b37a5030e7b26f6698979add409b164f949fe458e968584cf4d2a746e5578

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 006899981a5e10558d489b7b4e263fff15e0985f7cf7f2e8e7aa0d8823544bc3
MD5 702c6c81dfdedf59c03c42b3219297f0
BLAKE2b-256 947aa7d7d2264021b52f4f1641655cf8e2842de011fd5015b86aa937b9c8e4e6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1e00756a0f9abff2394db065f18d94535721f3866a26faedecb6a3616c2becb0
MD5 646e431e8e1276e26959d982e85f1f1e
BLAKE2b-256 cee41e1946111a41ed01ed95a6daed9f336b74e4c1a9860c1c26698b3ffeb273

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f8fa4e01f3e2876d202b12405c151bc27b53df1e3a6430dddee2ed4c5c9bae0d
MD5 7fa6559d4a4d8cd0db6f1bccf79cf171
BLAKE2b-256 92e4e5147d75d1fe857d978c6c439e97ea9c05a2d7fd81983d0cd3da293c883b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-1.2.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 09d78a32b76aace59a7ab955590f82a0bf4c88bb82af6d51aa189ce9f41399b7
MD5 85a913d1d447a9af01a475ca9b6b5c78
BLAKE2b-256 5faaa97cd6e45737a5efee7263a3e15fd5f88591513f0e48ada31c2c750c38c7

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