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.6.tar.gz (36.4 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.6-cp314-cp314t-win_amd64.whl (294.9 kB view details)

Uploaded CPython 3.14tWindows x86-64

private_attribute_cpp-2.0.6-cp314-cp314t-win32.whl (270.5 kB view details)

Uploaded CPython 3.14tWindows x86

private_attribute_cpp-2.0.6-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.6-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.6-cp314-cp314t-macosx_11_0_arm64.whl (92.2 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

private_attribute_cpp-2.0.6-cp314-cp314-win_amd64.whl (293.1 kB view details)

Uploaded CPython 3.14Windows x86-64

private_attribute_cpp-2.0.6-cp314-cp314-win32.whl (269.3 kB view details)

Uploaded CPython 3.14Windows x86

private_attribute_cpp-2.0.6-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.6-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.6-cp314-cp314-macosx_11_0_arm64.whl (90.5 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

private_attribute_cpp-2.0.6-cp313-cp313t-win_amd64.whl (98.8 kB view details)

Uploaded CPython 3.13tWindows x86-64

private_attribute_cpp-2.0.6-cp313-cp313t-win32.whl (73.5 kB view details)

Uploaded CPython 3.13tWindows x86

private_attribute_cpp-2.0.6-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.6-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.6-cp313-cp313t-macosx_11_0_arm64.whl (92.2 kB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

private_attribute_cpp-2.0.6-cp313-cp313-win_amd64.whl (283.9 kB view details)

Uploaded CPython 3.13Windows x86-64

private_attribute_cpp-2.0.6-cp313-cp313-win32.whl (261.9 kB view details)

Uploaded CPython 3.13Windows x86

private_attribute_cpp-2.0.6-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.6-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.6-cp313-cp313-macosx_11_0_arm64.whl (90.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

private_attribute_cpp-2.0.6-cp312-cp312-win_amd64.whl (284.0 kB view details)

Uploaded CPython 3.12Windows x86-64

private_attribute_cpp-2.0.6-cp312-cp312-win32.whl (262.0 kB view details)

Uploaded CPython 3.12Windows x86

private_attribute_cpp-2.0.6-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.6-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.6-cp312-cp312-macosx_11_0_arm64.whl (90.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

private_attribute_cpp-2.0.6-cp311-cp311-win_amd64.whl (283.9 kB view details)

Uploaded CPython 3.11Windows x86-64

private_attribute_cpp-2.0.6-cp311-cp311-win32.whl (261.8 kB view details)

Uploaded CPython 3.11Windows x86

private_attribute_cpp-2.0.6-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.6-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.6-cp311-cp311-macosx_11_0_arm64.whl (90.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

private_attribute_cpp-2.0.6-cp310-cp310-win_amd64.whl (283.9 kB view details)

Uploaded CPython 3.10Windows x86-64

private_attribute_cpp-2.0.6-cp310-cp310-win32.whl (261.7 kB view details)

Uploaded CPython 3.10Windows x86

private_attribute_cpp-2.0.6-cp310-cp310-musllinux_1_2_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

private_attribute_cpp-2.0.6-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.6-cp310-cp310-macosx_11_0_arm64.whl (90.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: private_attribute_cpp-2.0.6.tar.gz
  • Upload date:
  • Size: 36.4 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.6.tar.gz
Algorithm Hash digest
SHA256 a17b3fddedd6d3d6d30e3040eb0875efdb3f227f72b7f9f352823e78e97b53cb
MD5 1510aec5032c5c87fe6702a7a765049e
BLAKE2b-256 9183a89164d8548d976df1a1779da6b1ffb3f16920f0ebdf5f03e4d1700fb567

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6.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.6-cp314-cp314t-win_amd64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 529098f7447628566b74449bc2d1d184b6d155af7349764cc26f1429e88378d6
MD5 c37df7e5f49ca3a2c923b4f71d2bb61e
BLAKE2b-256 3bbd62fe7aa77797ec437cac293c39895aff9ea8f682cecedbb1cba1ea9f8ef0

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp314-cp314t-win32.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 99ea782b7b17641d2a300989dff60c952127276ef8d5eb2930ab015c36629f9f
MD5 8c1b64808613d2ccf152970cf43b9303
BLAKE2b-256 5c264dbe910ceda2ff825fb3b8e2faf57951823b530edda8cb805ea815650604

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4d4dce53bffe3f852a37244e686a3be863ca0373cebc0d1e1762e24409a0a65f
MD5 2aff044cb9063260cb2cf4d8311f656c
BLAKE2b-256 1d83d36cb23e342818c34663adc874ebf71fef65ab1ece7eff70a1aa9d95655b

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 da2f5743ab031618873e3029f2ad924b7540769aa24c8487019f8ee8e0e11a79
MD5 e4a1556ea7a6b0e14a09d29c14d4a02c
BLAKE2b-256 bae1e7b5259d8b7c937275ee990269e8b2b7cfef6ef3217572235484a1a59921

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 63ea5859c0b8518e1348b835bcef53e7b2e1905ea402848f8582c1cfd73393c5
MD5 7b1c4aece3b946b7940e48cf6b489c85
BLAKE2b-256 2302b899a75b526926acf11bb8ee5023dc81ef17adc11f125844dc00a10f0970

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 2416161623a7ccc9cfedcd3ea248daffe9911bfc15659a26a76d10cd240e7670
MD5 ad617dcb67be957f21da3ebc756b720e
BLAKE2b-256 56a88e94d9590adefea37b6d040c5b6449cec30cf58291f51534527fcf74e7ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp314-cp314-win32.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 f7c5ca01cd846665922bc5dea36bfab73380a698205f443f346b431308c9d6c4
MD5 06aef8d70fa3b35ee35d67019a7a7162
BLAKE2b-256 9fa5943742534da34fd4f7772a0fcb5e1cc0ff4aa6518c8aa7a280fd69c65f0a

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2df212944c1eb9f883eb8b09ffedff567a94fc7865e10fa6ebef9d64141fc3da
MD5 3b4da0da9a32714fccc425d3b8622cf7
BLAKE2b-256 6193bac1090aa3c97f0fa23c55432d147e175721a30517ea8d9b0a2388ad244d

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6fd5646edf159fa39caa9ef87bfaa63c83a11e8a2d017d3458d552f490e1bab5
MD5 d01a60d8184346db57d038bdfa46970e
BLAKE2b-256 778c28024de678660bb23d4f80ac97678a6485bf7ac7c7fc3b9a875fccdc25a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 310841e08503e1413bad0c5ed81b19849c47b93e3761ab50d02564313f673d37
MD5 680ef6707a1f17a3045546ca7cffe27e
BLAKE2b-256 ad11e084f5642917f82fb831d8126c842f6ddf8ec39cdbe8ac745dcb9c72c740

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp313-cp313t-win_amd64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 082da58a1405ab0a7ee7f9f6caed596eebb0e3288b9e10ce9e27d88d8029f576
MD5 19a775d3cbb462c854e9da58b23010fc
BLAKE2b-256 bd970d71f41f70f65fdefe66506793652105e116d4832e88d705aec24627a6b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp313-cp313t-win32.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp313-cp313t-win32.whl
Algorithm Hash digest
SHA256 d2662c5cd85597d59f9f4424e53bf6cd130a0382c526c7ab672f0ea8a7ba1f2f
MD5 408388a9306a90b619479d3e5646bcb0
BLAKE2b-256 cf80b46fb6c05080f8feaed39e815c49d04da2ef8c370fcca676bd06e65f2991

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp313-cp313t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 16a0741e31de2656b1e6c6d563d6ddac443ac9527c7331294e16780bedfe2684
MD5 666fa15fe91e217fa8d41dceca43c17a
BLAKE2b-256 b1068144c2d1562cd5b57f6b96eb09598a2026d6bfdd9334f952ca2182d011f5

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c240d1ba40f737035267163ec5aa83a5089eece8b640ba9646ed6a846031da97
MD5 4a27e02313728f0c054d7048801e0035
BLAKE2b-256 cdcf518e08951000dc9215b8e1f1e6e12c085e9127a277425634d9dc63c52978

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp313-cp313t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b6e277665323a9cabef2a2dfefe445eefbef3b072a6fe5ae19c03cc711956026
MD5 b906c519e371640a6bffab9777b798d5
BLAKE2b-256 dc43af6cf786e6080a34fcf05261a76410735507e0ac9d71375c81d191bf327b

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 2e190339414b1369148854f521009cb959a289fb29d291b502aa12737afc9247
MD5 10dcf98b9c7ef7a28ead58c37579dfde
BLAKE2b-256 4cea2f54f9ba9466be9d85f68e2bafeb9013e0b8077af2248eba932163d438d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp313-cp313-win32.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 cc3553bfd6a6c4bbb3f0c3442a9812b9053304be8209ef9283d8c426622d21a7
MD5 cf5fdc9e234ad20ded28bdbb95d59e73
BLAKE2b-256 03d56512150c68c7f969321de0f82c63c136e13cd18ac5295810b12b1b142e0d

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cec0cb2b3a9501fa4dd9269e91d081785fef9923cccdd845aa4b571c6f868cf3
MD5 7d1780239d5fd563548d55034cfea196
BLAKE2b-256 05e22725c370641f9047114be6327a6401a3582a45d5913935c4c1d97e15e6c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 98894a30d99ae87dabce8d06439cd7bf21d22d70220f50f9a18f721d1d58ead8
MD5 1a0a9845fc2f6484c60bb02845dd86d9
BLAKE2b-256 b846c0e26a9d31a055945e1f882f94a7061571dacd2fdeb9c26fd6cbe94fc522

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 55bf6497c65c958a4fe12fc9cc0c6ede6030fdeea0bb14d5a83d2756750e02af
MD5 7f6c3f88a69ebd68143100714fab50b3
BLAKE2b-256 16c523f5c61a6f75a8b1f8630c062bdf435053f772ff37d5cf3582ca9f29ee8e

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f58eab2d64e0783cdb8072d51c0f8890cc0dfcfb89616859b7838fe7822cb9d8
MD5 5e90b1943ed43f1a31720fd87748ce75
BLAKE2b-256 8e6e1a5541705d062d1a6c7243203fb3739cd71912c34d1129341f69c5ad2398

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp312-cp312-win32.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 5ccc21c442e5cbf38826ff3ec6124fb6ad70878e2a9c7bf037749f0f38469aff
MD5 c01c520e0d799784e9fef4e098e8c8cb
BLAKE2b-256 07b4eae93e472daf9708d6b89a000bbb067b1dd31e06520545d6a00d01169145

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5e2232480ebf860dc59cfbdb1b17ebdb20ec9d534a07592fe3d76fb9f78fc26c
MD5 a977266f4aa238a1c972cb0e5241cf27
BLAKE2b-256 918eb2e31beb2b3d3afa8880a6dd0837ed65553cff6d80977a3496a6f4c989d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8579ce8af4470f832c6824b422d3713f14356e245898f05edf542484a1aeb499
MD5 d2420ab44030ee9219b7cacca84fb594
BLAKE2b-256 210fcbff42c573f404ba0348a619ead1319e4329c43adb28c9970d6e4f0cd857

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0f0d903969746e34ffd6607fd08ca4f0b4f944edd85b0d0f2987d66cc5cac1b4
MD5 8fb7d968658d1b9e84940a863f530ad7
BLAKE2b-256 8c357c0a0d5392a4b4407f2190388694505b0ff3d1d10aba6ac7bb6cc8391aaa

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ad878fa6bd6ba2ff3eac7d4ef9182f2440fbeafec08a6906051d9a5757721694
MD5 41843398f6bd6f1b40400d7b51022ee1
BLAKE2b-256 fe9afb0a7bfdff817666e20573c5763e13c84dcd912832aa5690cbb2e5991c45

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp311-cp311-win32.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 484d6d2466b878f5330d6641465aff068cf05549c64956b66bbd663c2c65bef4
MD5 fd6d679088c54064a0e1db2b088856bb
BLAKE2b-256 41334e550691bebc22c96bbd5f48f8eb9a6d0aa367d5b38ed508a4b0bf9acaf5

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8dde6e7cb97b8026e278ff1a4e8b35c4fb65b6536e16a03e6f6fc065b115c28c
MD5 bf451532ab12979d020bb5edab3115e1
BLAKE2b-256 b56206342135fc7f8a374de17264c8e05a4e7a2badbb95f7b83aefd6a3dd8470

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 527e1c429483503e8453fe470dc1bd4089f1f4466da56b530b2c879380e46ee9
MD5 9f9b88ced18f770ad520826df01b3269
BLAKE2b-256 a7a2a699b4aab8c523df1d556c7cd9a1d6a46ee623c16ffed90c5c3b6d91aef4

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aa301c7eaa1211bf921fdeea56bc5ef939ed8a263533eea20dd268fb12413ed5
MD5 6f748b1fee796b4c5a5902606b207185
BLAKE2b-256 df23ce12b1b41344498d3bd51e2c862d6acdc65844079cd5946654905a276902

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f691788ccbfa165eab5ed324cf3ef155ee71390f048f7110a554a75e6707bdbe
MD5 2af029f9a54d5b3cee207b69e62902bc
BLAKE2b-256 c0817f5d0c2ab2fafe2eaf9680a1eb94120824c47b0ef1f370c923f8ab930846

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp310-cp310-win32.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 ee5c91af77f6c2c161adb181f6f751b8b6e2907a8ba25f845e677ea24f65df6a
MD5 b6845f1aa859a22398bc70be6d3e29af
BLAKE2b-256 2647423c3549a2e18df216872ed0a9dad0f8df9139b774b7e8a55e4be525aad0

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2a0527281f8b6d983b4af662fa22d4ae90a2d3942dfaabbb1dcf52c39f7235e4
MD5 5cdf42d73c6107a10658cdd2b462a13c
BLAKE2b-256 c7bb232abe94403d213ab23bf82ead41e2a9a8575dca56c6e3a907707261dc1a

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f3d6f6f0004d28ac1883bade6a46139776c0f3c9ab3bb91faa7e5f7d1731deb7
MD5 90c312605681cf391618b92e6ebd6156
BLAKE2b-256 4c4e39bb3311fc867b6755380e2d2d718f49a53ce52d19d91fdc0374bff01ff3

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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.6-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for private_attribute_cpp-2.0.6-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bd0aaa2c05151f0cfbeddc944183b5447f1bb374f23539b6d0f7d78c9b5c44e4
MD5 44723a8261aa5ca713742644c779475c
BLAKE2b-256 96748ad6809176d32d91af6f89b20c9e700519101ae5a79f111824eff54f3b21

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.0.6-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

This release

2.0.6 This release

36 files

2.0.5

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