Skip to main content

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

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

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

    @PrivateWrapProxy(method2.attr_name, method2) # Use the argument "method2" to save old func
    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 and funcs. result returns the original decoratored result and funcs returns the tuple of the original functions.

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.bases, 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.
  • Don't use a decorator which will return the _PrivateWrap in PrivateWrapProxy which will raise TypeError.
  • 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__.
  • CPython may change "tp_getattro", "tp_setattro" and so on when you change the attribute "__getattribute__", "__setattr__" and so on. If you are fear about it, you can use ensure_type to reset those tp slots. For the other metaclasses, you can use ensure_metaclass to reset those tp slots. Also, don't set those methods on these classes in your code.
  • private_attribute.register_metaclass must be called with the metaclass which supports weakref.
  • Don't set __static_attributes__ in private attribute class, or it will be removed.

License

MIT

Requirement

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

Support

Now it doesn't support "PyPy".

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-2.0.5.tar.gz (36.2 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-2.0.5-cp314-cp314t-win_amd64.whl (294.4 kB view details)

Uploaded CPython 3.14tWindows x86-64

private_attribute_cpp-2.0.5-cp314-cp314t-win32.whl (270.2 kB view details)

Uploaded CPython 3.14tWindows x86

private_attribute_cpp-2.0.5-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-2.0.5-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-2.0.5-cp314-cp314t-macosx_11_0_arm64.whl (91.8 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

private_attribute_cpp-2.0.5-cp314-cp314-win_amd64.whl (292.8 kB view details)

Uploaded CPython 3.14Windows x86-64

private_attribute_cpp-2.0.5-cp314-cp314-win32.whl (269.0 kB view details)

Uploaded CPython 3.14Windows x86

private_attribute_cpp-2.0.5-cp314-cp314-musllinux_1_2_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

private_attribute_cpp-2.0.5-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.3 MB view details)

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

private_attribute_cpp-2.0.5-cp314-cp314-macosx_11_0_arm64.whl (90.3 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

private_attribute_cpp-2.0.5-cp313-cp313t-win_amd64.whl (98.3 kB view details)

Uploaded CPython 3.13tWindows x86-64

private_attribute_cpp-2.0.5-cp313-cp313t-win32.whl (73.2 kB view details)

Uploaded CPython 3.13tWindows x86

private_attribute_cpp-2.0.5-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-2.0.5-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-2.0.5-cp313-cp313t-macosx_11_0_arm64.whl (91.8 kB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

private_attribute_cpp-2.0.5-cp313-cp313-win_amd64.whl (283.3 kB view details)

Uploaded CPython 3.13Windows x86-64

private_attribute_cpp-2.0.5-cp313-cp313-win32.whl (261.7 kB view details)

Uploaded CPython 3.13Windows x86

private_attribute_cpp-2.0.5-cp313-cp313-musllinux_1_2_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

private_attribute_cpp-2.0.5-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.3 MB view details)

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

private_attribute_cpp-2.0.5-cp313-cp313-macosx_11_0_arm64.whl (90.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

private_attribute_cpp-2.0.5-cp312-cp312-win_amd64.whl (283.5 kB view details)

Uploaded CPython 3.12Windows x86-64

private_attribute_cpp-2.0.5-cp312-cp312-win32.whl (261.7 kB view details)

Uploaded CPython 3.12Windows x86

private_attribute_cpp-2.0.5-cp312-cp312-musllinux_1_2_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

private_attribute_cpp-2.0.5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.3 MB view details)

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

private_attribute_cpp-2.0.5-cp312-cp312-macosx_11_0_arm64.whl (90.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

private_attribute_cpp-2.0.5-cp311-cp311-win_amd64.whl (283.3 kB view details)

Uploaded CPython 3.11Windows x86-64

private_attribute_cpp-2.0.5-cp311-cp311-win32.whl (261.4 kB view details)

Uploaded CPython 3.11Windows x86

private_attribute_cpp-2.0.5-cp311-cp311-musllinux_1_2_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

private_attribute_cpp-2.0.5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.3 MB view details)

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

private_attribute_cpp-2.0.5-cp311-cp311-macosx_11_0_arm64.whl (89.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

private_attribute_cpp-2.0.5-cp310-cp310-win_amd64.whl (283.3 kB view details)

Uploaded CPython 3.10Windows x86-64

private_attribute_cpp-2.0.5-cp310-cp310-win32.whl (261.4 kB view details)

Uploaded CPython 3.10Windows x86

private_attribute_cpp-2.0.5-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-2.0.5-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.3 MB view details)

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

private_attribute_cpp-2.0.5-cp310-cp310-macosx_11_0_arm64.whl (89.8 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: private_attribute_cpp-2.0.5.tar.gz
  • Upload date:
  • Size: 36.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for private_attribute_cpp-2.0.5.tar.gz
Algorithm Hash digest
SHA256 19e785de609d40293b6e099a6cca0e6d1458a0e6e00b250300ae610df7093ad9
MD5 af4419525fef01ca39721e82c47e226a
BLAKE2b-256 9732fde4078e668f500ac11402971343779b46a0ce783c545886f0499025650c

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5.tar.gz:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 88b489b21c8da893e27919af7dae34ea1c293d222d2fb70d89281a7d6327b498
MD5 d03dd16226607f8dc600f6e758037081
BLAKE2b-256 0ac5227af14fdbaea771b795fae24adcbf85b8804cbf03790b3d9ce3c1e0a307

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp314-cp314t-win_amd64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 e559a870c70f989978558d20a6a960580dc673443701ef7be11444b4e9bb76ab
MD5 9306eed0b4288e0c00ccb7d213c346c5
BLAKE2b-256 e6dbc67284d8469a3eefeae1e0d6243c6ceaaacda63abe3136141a578e0e5c39

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp314-cp314t-win32.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a785c074685a8eed6b3db9acbcfb19c6f5a8a890cfb570664276aa62ab926d86
MD5 1be308959ae158d8ba9661183778f88c
BLAKE2b-256 8778924d6acb6bc81fd3a4b51b0f40c69cc0d042c239bdff533f2665c4a1f3f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp314-cp314t-musllinux_1_2_x86_64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 388418e9aa3f5af4d5c764ae1f15f3a6f3526ecd3a73a9a6083c09bac298b0b6
MD5 40101d8e5faf0024f6cb11e34ac063b0
BLAKE2b-256 bcd74242f67664ca1f6d84211e740d220cce644d1144970bab70188a186ba65d

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6edca88c28452f7537a20236ecccdfe09a32a799581b312e9a3f0ed7a7a4dc2d
MD5 1b37e16b21da30d08644b6e1d94a59fa
BLAKE2b-256 5d454a6d975fe29ad29f95681b39e37b139ccba2708bc55edbe73b4833329877

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 0754eeb350e507191793916b898bb8cd7dbe2c5a6b4593f1844817a37bdc586b
MD5 0a9654697135bb397170e46625de7d04
BLAKE2b-256 a10d0fd706a1d7fee49aa1fdd51f6d7b62e9b66fedd99017ea9af8d27723e88f

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp314-cp314-win_amd64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 2a0effba1ed3b24e8015b1e85ff18090c7b92e5befa044e5b642ba55806b70e4
MD5 0f3b2baeb20473d15a5805a468966bfc
BLAKE2b-256 3f4f4d26b4c388a0b56e3d1aff10820e82b93a989d38c302a7d1f410bd7e9277

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp314-cp314-win32.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 36a8e871f6b24e0b89a48382094913c8269d295a2271966d5d84a2fc4951c431
MD5 74b0c51ae1fad79b5e61cc06ffdee9fb
BLAKE2b-256 fd46ee61e4d20033d905207c6a9421a6f47a103b00bd4804e11b370be73d91a4

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 62442e2729ddc7eae151c38a0aa21633106196e1239aff7a4fc49a841c4513a7
MD5 1a154dcaf95dcb8f2adea19c6d70d3f0
BLAKE2b-256 1a074362f7fb3e44485eea7cbc29c590e6c23a9cc083b72eac0f23beb6c7cf98

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 79979c8696e0f29646e1e1058e858441c5720d9cf35d500ae8f69160f4d5ed9c
MD5 315b0f5cb616753e3d0754655b3cf825
BLAKE2b-256 fa38013a9444fd520a4bd56d9f9934e8b41b00390435afd0e07578011ff3ce55

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 acb603dfd71b30bde0cf16fcae2ee0b6814d69587f0f6ab1b5028617e9d5bf6b
MD5 b39be0cfd671e18b7e60fd87cb816b56
BLAKE2b-256 1141f5a49bb9f1733a326fe6a5aa294d96e5d99f16722d22a455fb7cb25102af

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp313-cp313t-win_amd64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp313-cp313t-win32.whl
Algorithm Hash digest
SHA256 4ea138c5e55af22285efcbd0512edd5032dbb9c7c36a5e7e3a2d46e1946a7a44
MD5 938ad193ca0cebbc1b140d4922336bce
BLAKE2b-256 e5f06d66afeea91c3995d1538dc3169e299134ce9a1ed53bad9c34b4c055dcac

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp313-cp313t-win32.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b4df1016e4d8733f554a00755f498a1b98a71fa448c9e3fbb0e69e409c41adac
MD5 77a6b452360dc38a6389f4e83a895dbb
BLAKE2b-256 cfda7894d8ebc72078a2f0d0105f8429fbfa445abbd17d6722b6d66500363964

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp313-cp313t-musllinux_1_2_x86_64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 486c16f821be168b0217f5f8e88bdf8d17280274ab45d0fb075d72b031107931
MD5 a7390d20256b15544c2ce5d4d221eeee
BLAKE2b-256 2255c171ad1a9d5eb6b8c28d80459e93371a9eaa625d5df51ec3924e8a86f40a

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 772047eedc0b356b8cd7d39d5656b4613f5c2e3423f2e2fde5e4f1738c220fc0
MD5 e0a79b1555648fed1fbbc2de920d111d
BLAKE2b-256 514ac7f3f30db200bb85084b8e9fd804ac69f8acd96c7434d4be120fc4ba54a9

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp313-cp313t-macosx_11_0_arm64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 72b70757463a894ab6e60d959c11d2ed699dda333a3c56702c96724628dac8ea
MD5 2d54753d95c24ca76f0c771a70c6d20f
BLAKE2b-256 5f1cdf1c217e896c24973d3fe728be1c3edd060c11b7243f9a49c448b00e64f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp313-cp313-win_amd64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 2dd57b5647cff9cc13c134252cfd4bbe4f9648c28c7948529b403df927441d73
MD5 da4d93cee9784a73814da90c8b835b62
BLAKE2b-256 ccf92ad8e47f86c3ad22df6021286b09879a940c89f2ef5cf5a4963974d4021a

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp313-cp313-win32.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bbd0de4d6b2a778738a4d89115db583119b9eff0404619a06d2250bd68feefed
MD5 74064f244e8b35762b237ee217f69995
BLAKE2b-256 5e9a5b22e70de4115258756ae035eae47dd8350e51f02bf08aaf2ab98f875865

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1dee552fde68f94bbe4ac6808914b717897c61307a17c3f1814b22576fe41af4
MD5 a117981d232bbd0fbbb57751e28f689e
BLAKE2b-256 6a5e91389c0a1812b33b13f399cc2cdccd243e083ced5d1dd5896b8fd987e329

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ca72d07e33c00aa90943f23190421ef63e3122451c1b184b832c417389d299d6
MD5 e3c8d875294c8fa82b405cc0a6dbc50e
BLAKE2b-256 7c771199edb0b681fd4c73b853130e4b19d8a1fd370b5044eea4890ea4692de4

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 0050d249a1ec9dfb84056df2cfc12abf4df3d085d9f4d8995d3b46bd664d19f8
MD5 7910610df4fe7306bf856e68c203f488
BLAKE2b-256 fe7a13f9fb47e20ded01e0c581575951960792169eead3a3568487c6bc47cabd

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp312-cp312-win_amd64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 b0af6295ec5191b525aa41a53e66b171e21ea8788064326e8f90226674c23862
MD5 4b45147d3a1328e7789fd5957bdf7d51
BLAKE2b-256 23aa71ada853f99cf480dcebab3f7b722926495eca70ced99ea2db8ee91c94c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp312-cp312-win32.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 801f676ca20de5c27effcdcb2ed880a2bbf41d72bd02d7300b2fa59ccff4b76e
MD5 fded972d3118aec4e6c2a5d5f20ef7a1
BLAKE2b-256 9e50ac20b895dbca2cce5085fd435986a88732dd8a200a91a8a57654b4ff0f58

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 17cacf6f3ac0ac02e9d89c640a4824bfae1b45e27b404fde6950b289b92c2d11
MD5 f9aececf037ffe340203d91cc5c6bf9a
BLAKE2b-256 7388b0d682add2432189b093262841ab4a0344b2bf20fa480ef07c8792363f1b

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c2b14bb2b283766ea36818ee13e1006272921437adf713697076a5e8ee2cfaa3
MD5 d7d09b146fd9beb6d4bb5a4a77a90b94
BLAKE2b-256 6a91af60990698d885d8c6c8878dd39ccc46df77f3a10a60bd07ab82b2a5c969

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6f36f3c3cf4652e8398b669e52ec46343f86d6fe972e4caa20b4001c9d45b8c5
MD5 e15b9d0cc16b72ecc1328d9c4d82cdac
BLAKE2b-256 7f2a646414e9765fc496c85ac52a381d7aefbddabd54bed84200018671c7fd58

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp311-cp311-win_amd64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 f8195436424b1db1169297d6e73c1dd6ac81e268e7d6d389af3c56caaec86c8f
MD5 b8e5bde21a1f8cd8835814e9b4d34873
BLAKE2b-256 fb6477c4e36040368fa171a61c064f6921dd722fd420719e5cdf7e02cb9491e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp311-cp311-win32.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1360b5468cc958db290a9988de0fff4bb5e1c541f9dd6ed58a9f8dec83a7c851
MD5 9041aca77e9c62558338c5a589b334a6
BLAKE2b-256 41c3d97b21ddf411384dc130328e61834d1178d415585624d79e6bc11dbd8314

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ed02bb4b2d1b9a9e327b51e4f7be772b833a830aea9779794dfad0a39d9dd6ed
MD5 533b4281a2ac3ef08f7c2f959a93da9a
BLAKE2b-256 7fc002e3beef29b56571505cf76d21294a0e8a51b6de57d9aafa2e270974e6c1

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 de625cde83d29f391af033c6b13c40ab236dfe2a2c71a008b0e7420168edb246
MD5 f533447c36a0830237136a2be0446864
BLAKE2b-256 b1cf625465975f45743383737ec2b3967bf28abee0be91995a26d4a190fbc66b

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f7b1c6f2b280469d0f7b6fa8472647b7dc43905f7c39ef7cf26405ac3fb3f14b
MD5 4c0d5d70f5a91d0e453976299d34b4f6
BLAKE2b-256 6ac67672b0223753ec04817ce678101958784808f4413a8a2b2d94e751586c51

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp310-cp310-win_amd64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 cc10e94820f5feabfeea3f9925f06b0b04cf2cae075c4b76b338e40289dfed62
MD5 0e7d7d27e3211449498a46243df07f8f
BLAKE2b-256 cd9155925ba1e4932df428bf1fa85c7143407f5e0321ea669fef7109342e942f

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp310-cp310-win32.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 385c87deac9c874f63ee34a4d6d4a35ed7d7c84b5f58f43a3e2b6c049359acb6
MD5 05fe383952f4a8560151730a96c65515
BLAKE2b-256 14095bc626ef837febb78e6fc2bc059881e48052fc214c151476d8f82db6b5ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6a709931d32befa9dd70dedb437551c959b14f1351b942d08f86e3ef6c917cc3
MD5 c79d89d9740f7b5120ca799766e61466
BLAKE2b-256 def242655cf9359bdf2a35a0ffd8cc8d4142d1f8db84b04995a37e0aeb579196

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ca37f942db1c5913ee38a21ff26cd87b7de20c4fa6237059e2df211314813da2
MD5 535dc4ea556e0d6a8fec6966d96aa7f0
BLAKE2b-256 8795600518822154a14fe123cbd738bd1e4567b321f991d0f9595d3b740e0178

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.5-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

2.1.12

36 files

2.1.11

36 files

2.1.10

36 files

2.1.9

36 files

2.1.8

36 files

2.1.7

36 files

2.1.6

36 files

2.1.5

36 files

2.1.4

36 files

2.1.3

36 files

2.1.2

36 files

2.1.1

36 files

2.1.0

36 files

2.0.6

36 files

This release

2.0.5 This release

36 files

2.0.4

36 files

2.0.3

36 files

2.0.2

36 files

2.0.1

36 files

2.0.0

36 files

1.4.11

36 files

1.4.10

36 files

1.4.9

36 files

1.4.8

36 files

1.4.7

36 files

1.4.6

36 files

1.4.5

36 files

1.4.4

36 files

1.4.3

36 files

1.4.2

36 files

1.4.1

36 files

1.4.0

36 files

1.3.10

36 files

1.3.9

36 files

1.3.8

36 files

1.3.7

36 files

1.3.6

36 files

1.3.5

36 files

1.3.4

36 files

1.3.3

36 files

1.3.2

36 files

1.3.1

36 files

1.3.0

36 files

1.2.10

36 files

1.2.9

36 files

1.2.8

36 files

1.2.7

36 files

1.2.6

36 files

1.2.5

36 files

1.2.4

36 files

1.2.3

36 files

1.2.2

36 files

1.2.1

36 files

1.2.0

36 files

1.1.0

36 files

1.0.12

36 files

1.0.11.1

36 files

1.0.11

36 files

1.0.10

36 files

1.0.9

36 files

1.0.8

36 files

1.0.7.1

36 files

1.0.7

36 files

1.0.6

36 files

1.0.5

36 files

1.0.4

36 files

1.0.3

36 files

1.0.2

36 files

1.0.1

26 files

1.0.0

26 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page