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__.
  • Since 2.1.0: the code of a subclass can no longer access the private attributes of its parent classes - a parent's private attribute is only reachable from the parent's own code, or from a class that declares the same name in its own __private_attrs__.
  • Since 2.1.0: if a subclass defines an attribute with the same name as a parent's private attribute, they are stored separately (instance attributes per declaring class, class-level attributes in all_type_subclass_attr[parent][subclass]). Class-level resolution is per-subject through the parent's code: reading the name on a subclass subject returns the subclass's own value, and the parent's own value is untouched. Such a same-name definition does NOT grant the subclass's own code access to the name.
  • 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.1.2.tar.gz (40.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.1.2-cp314-cp314t-win_amd64.whl (297.5 kB view details)

Uploaded CPython 3.14tWindows x86-64

private_attribute_cpp-2.1.2-cp314-cp314t-win32.whl (272.8 kB view details)

Uploaded CPython 3.14tWindows x86

private_attribute_cpp-2.1.2-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.1.2-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.1.2-cp314-cp314t-macosx_11_0_arm64.whl (95.1 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

private_attribute_cpp-2.1.2-cp314-cp314-win_amd64.whl (295.6 kB view details)

Uploaded CPython 3.14Windows x86-64

private_attribute_cpp-2.1.2-cp314-cp314-win32.whl (271.8 kB view details)

Uploaded CPython 3.14Windows x86

private_attribute_cpp-2.1.2-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.1.2-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.1.2-cp314-cp314-macosx_11_0_arm64.whl (93.2 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

private_attribute_cpp-2.1.2-cp313-cp313t-win_amd64.whl (101.3 kB view details)

Uploaded CPython 3.13tWindows x86-64

private_attribute_cpp-2.1.2-cp313-cp313t-win32.whl (76.0 kB view details)

Uploaded CPython 3.13tWindows x86

private_attribute_cpp-2.1.2-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.1.2-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.1.2-cp313-cp313t-macosx_11_0_arm64.whl (95.1 kB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

private_attribute_cpp-2.1.2-cp313-cp313-win_amd64.whl (286.4 kB view details)

Uploaded CPython 3.13Windows x86-64

private_attribute_cpp-2.1.2-cp313-cp313-win32.whl (264.6 kB view details)

Uploaded CPython 3.13Windows x86

private_attribute_cpp-2.1.2-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.1.2-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.1.2-cp313-cp313-macosx_11_0_arm64.whl (93.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

private_attribute_cpp-2.1.2-cp312-cp312-win_amd64.whl (286.4 kB view details)

Uploaded CPython 3.12Windows x86-64

private_attribute_cpp-2.1.2-cp312-cp312-win32.whl (264.6 kB view details)

Uploaded CPython 3.12Windows x86

private_attribute_cpp-2.1.2-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.1.2-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.1.2-cp312-cp312-macosx_11_0_arm64.whl (93.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

private_attribute_cpp-2.1.2-cp311-cp311-win_amd64.whl (286.3 kB view details)

Uploaded CPython 3.11Windows x86-64

private_attribute_cpp-2.1.2-cp311-cp311-win32.whl (264.3 kB view details)

Uploaded CPython 3.11Windows x86

private_attribute_cpp-2.1.2-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.1.2-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.1.2-cp311-cp311-macosx_11_0_arm64.whl (92.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

private_attribute_cpp-2.1.2-cp310-cp310-win_amd64.whl (286.2 kB view details)

Uploaded CPython 3.10Windows x86-64

private_attribute_cpp-2.1.2-cp310-cp310-win32.whl (264.3 kB view details)

Uploaded CPython 3.10Windows x86

private_attribute_cpp-2.1.2-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.1.2-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.1.2-cp310-cp310-macosx_11_0_arm64.whl (92.8 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: private_attribute_cpp-2.1.2.tar.gz
  • Upload date:
  • Size: 40.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.1.2.tar.gz
Algorithm Hash digest
SHA256 d965e7684cff65a98fe15feff0acc8375cbe8342fad2f3de799d17e15b76a2f8
MD5 c039ad7e53d72bb1cad88429eee409af
BLAKE2b-256 8c47d295fb83fcd4709aa6608d2309e0521c964086d6157c4b70ae390d55f475

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 1e1626b3bc814e417facb1f4f84c257e855133d947ffcc2027cc8635f8de3c87
MD5 707f24be151cfe790c2e041570efb00d
BLAKE2b-256 29954c9b2762c162cf740e74e4096ed10782189f4f53bae601e183fe13d9ecfa

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 fc331a607b063f4933a004c3c90348f6f5eb660239c92ed6fb3d0ceebe501d1e
MD5 d75b93305809edad159709f68d5ef165
BLAKE2b-256 4c1c4da536aa7ba085c926b7600cc91902a5ae3378f640d3d6524c3ed9327ad9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 be1e9efdce9441b0abbb4f386cf17246484e58d09b3ad80f2e92cc7b521a3a8a
MD5 9833789dfb7e7464247dc7e0da8627a8
BLAKE2b-256 d8a3883f71999c4e9be4cc842eb7de9b64ce777d0e17ce7ac0c304c3fc65f3e5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a67958c0dea51c7727429e8953229d5802757d1ea7a1dd8b146dbfa48bdc90ed
MD5 012e0f2b8dab3b8b8c62a7662171be51
BLAKE2b-256 88bff68a65fb011770f6dd64f642ad5442486f5a19e071f1baf259e35bc9f325

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e9d9dcef77b44d05112574853295f9a10d782ca0db39bf2d1252d0b66b4ba536
MD5 71f7b298e3f7057519d3d050ebf57987
BLAKE2b-256 5eda36a135e17a65d130b63b53baefe59720aa66f05b388a587e83a86df21219

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 ebfeac4f899872030624e67642a197f53e35aaad10524c80cfbcaa97b5dee097
MD5 ddfacaa8fe679f0898015d63232f7ec7
BLAKE2b-256 52753f8e1c3381d0752b4999aa4b9ae5fb0f4a2bcd27f7e34405a626916820a2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 ed9d1e9a9e67a5f91c21207c40266dcba1c6fe944264097c8219b79420d16fd4
MD5 2b8ea6e6d890349accf6229e07c44ca2
BLAKE2b-256 026e98d98a90c70b8120413436602d4165b30041d730bc8eca0c002c59a485c0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c8ccad22767bea55ad387b26ede276b6148cf06147f84c95091ded50c5e88475
MD5 8dd69d3907f66af1bb30b9bd7a88842c
BLAKE2b-256 894412867f975ab0984a6c1dfe585368812dac278d6dde923eaff66007ef6283

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0cb685c6e07d11dc1b2ce950dcf3c31b46035dba38055d3428dcae1ccbea83cd
MD5 998a26dd5d7e85aa4f92c8e39dd56936
BLAKE2b-256 34a56bc0f98ea208dcb00fa0e9a8c7ddb4124379903308406d9bb5fc4aa8e47b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d599263018f6dbfc1cfdc072e6d9ed826ddb5d14ce5884481623dbc988575795
MD5 c4103c5d4e165d0017dc1d8812c4abd8
BLAKE2b-256 8484b2985972f35cc68dbb4c6d5f7d1d08b62067ced435669e5eaa6b024a2eec

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 26d7f3d29aee915bcd0a3703eff59dcfb1ee6c72b53d527d20fcc468d3b3e7a3
MD5 3854695b27c15e7c63e477fd6055523b
BLAKE2b-256 0d7d83d5f73e1132dc44636f7a56a930e25cf111ba887998dfcea5419893d191

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp313-cp313t-win32.whl
Algorithm Hash digest
SHA256 01d637aad2065b891696c01892006a7134dfd2e7fb8b2f3ea407fea966b61fa1
MD5 a380ac6a16703df674dff973bb7c5079
BLAKE2b-256 d885206341b71c3f1ed7c4692f29e588aea45c39b8f41401d4687ca3b635f91b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 587cfccb48fb7fc1d9bc70913223e9f3af6f9059a775c789c598873861c8fb03
MD5 84abb3cb255515e3119da7e364198f23
BLAKE2b-256 307998cc44e2028a890ddaafa89131d0174deea55413b1aacb37a0f1dba5cdae

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 29dde0a2354faed25b30d6d150fac040dc39be1165d0b66eb0bda0c8e5e860b1
MD5 8102e9e92c4b92cae6d4dc3a35a3688a
BLAKE2b-256 5c8aa9ca6dcfb1d348e02a73f7ef2507965f27f005323feffddc64ba439bce1a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 44f55c6df5fd799464e28226f2bd4bc06f29919704c10c8488cc975677a7fd76
MD5 d5d6eef865b9a76d3ee03ba54ac40b81
BLAKE2b-256 a97425f242cf473898849d92186be1e5213804332c9aa5135cb8eac3a7669a0d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 3d1826843017b340e4bf820a8b1b33ae9508bb4128ec4198e94d3741dcb8477c
MD5 dfaa85fcf7b75bfb4421e7f15ef21a9a
BLAKE2b-256 a14ae2f7988d9926e8dc1a0345b3335f14e72debd8fab1dfaf53b141d18b4feb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 98607fd3df839564eb27a82ac80923bba8255dcae25862215d91ac816c909832
MD5 144724a15688c6f8e343aa242d461339
BLAKE2b-256 42762b1fb3792573790d4966aac17742a55cea484a835de7abfd156b48aac641

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 725daed83a4944b2b6c308994429c92d7b06ae76cb868fc199e7016ea2f15c69
MD5 47191bab39ff4089a74fa1a5029bebbe
BLAKE2b-256 29c4ca6d5db8343ed8b37941cd6513a2a44290df662d3941d97eac260ea8c5b7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8ee712cdaad1c5cf6fa056516cbea0c05bdb265fa4d5dde13e745925fc9f889e
MD5 1e649c45b36e8284f823a25632c310bd
BLAKE2b-256 8cd35fa007551af02e84d8a14d243772dd9fbff3243601f996119ea76bff8fed

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 22b32afdca0ba49d7bbe38476c14eb9f725aa99ec6b3a8f75f1deaf639b3c25f
MD5 7792be378c18c2067d9afd2d55032fab
BLAKE2b-256 f23d9d0efecae2e78516115f79d1679f56725f665ee1fd7fa674ad06a20b5ef6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7866000697ebda6a5dadd83317cff8dfe36dd1010da7a96410996d133be6a939
MD5 b394e2ef7e3684896253b6eb3007e518
BLAKE2b-256 46df940a88786bbc6d7d7560a1b1d1644e4c4de399d8ff081405f12d2ba63b93

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 3a16fd6ed95d72cea505e809bbd08567ff46631e7be116f58001248f2cca8095
MD5 146258db6f341043999594bf880e83af
BLAKE2b-256 70811850035b3068d66457fe6b69ebca02b407cb66f491e5519d2788ad4fb54b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 887b8320718e4083716fdfd82045f5f527834943b85d3cef7f8f7339d21af347
MD5 b71e960f63346361a04a2fe65bd37317
BLAKE2b-256 d4cba7af6ab356eb7b0498a14f58aef3e056ebbb924ff40c1d9cb718a60d7c9f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 00bc66f3c1eea86cc8e74dd1c7aac81ff1b966d96bc739cf5bc975addafd0d31
MD5 cec3e91c8e77b371ed2939d1b71ff284
BLAKE2b-256 832a4d0abe0dd9973d79a8ceffa9541e91addf39ff259365d8377acaa0665fc5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bd011927e92a6d2a87fbb603442239478f56c7b81f5b1ee3d6b89708abd546f1
MD5 0e631c15646de45f18fb7c252526a9cc
BLAKE2b-256 4a92fdc3eb70f15f5d1c61dfcba28194983823d5e77c6c5e481edcb0de9d8566

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 f6e06c5ebfc1273663f21569b3bfe98226e5f1937db39d58b23638e26340e219
MD5 3247fb82706c0cdcaece9774d5fa574e
BLAKE2b-256 5e3e863716d19811df48ccff669b939129ec561cbaf24d8adceada583b275a1a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 68ff470132f2fe27b3cf7ee9058bd02d9a9d64dd20594eaa67ecb33ac6c83ae0
MD5 0fa0b7e067d8c61a790e6763dbc5ff0a
BLAKE2b-256 b9754511edf4a42cfb4f8e437c3be2aa1e9da41682e2d79936d066bff3d3523d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5c0e6db5f230dfc341c47f6a06eea604f3329e0868eb93be877927c1e947296d
MD5 b5f8066479c97a97bdd697e92c868c11
BLAKE2b-256 c4aa11ed5c23098e6af81f68985e98fd304dd390ddcd274d5f2e411dfcc7a68f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8cdf16986be2ca0dee6f76dee359f659b46a51a556fc446eaa9ca75b4c815efa
MD5 944c023d0f1a4c61bdb9b598a86f257c
BLAKE2b-256 b00d731e9c5a993a31616247b726e6ba3cece9c58d0b1676e49fc1e304ce83c0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ad6e035fef96e8b31ae4b0696dc2da34039518046a392be270555ce74d897983
MD5 4f58c1aaf574e2b3b3d2fabb143932c0
BLAKE2b-256 03659752ffae25870b8e2ace81733a671b03f000341722be6c13b3266929282c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 2a1800d559d1860bdf79856bf4548bf1dcc43cf9d770f39881835876f8a3f62c
MD5 c5076fe23c11e330f46f7b4254724e85
BLAKE2b-256 56fe6795a2ca3e4227d88e7ef2ca55cc82c6717b2fcc6503f7cb09697a796241

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 eaa59afd103574421b38eab51085a92b1d70f5403cb0a8c1139a87bf63c96389
MD5 899f59825e8bceef5bbe696dddaed52c
BLAKE2b-256 5ce302482cffc6ac52c5e2401be26cb075bdd9545e68a37c2b7155a7700a445c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ff3c0738fe5e3384d1bb3eb2576c281cb6749f408a3e4c59f003cb42fa4637f0
MD5 cc618a872911fefb7ba2ee46ce036fdf
BLAKE2b-256 821287dc127ee389c358289858cc37aed9b82f17851b47ca8cdf386cd5962b16

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 232a9d7d6ef1434aa043a2371585f8d70f4271f9ff0f2b7143ddaa9613412fb9
MD5 99c4edd7fb9a19debc9f7e2cd0931c7c
BLAKE2b-256 4f1a925438836002cdb55f41ce19616ae7f91b4cc8568bf5e8b2f03c7f5977d3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ddb8392b1b988af5856382ae78ba7c72f7748714e659cd023ebe0e7fc440583f
MD5 d0662cfd7f8fe1a9135f0a1620f4b874
BLAKE2b-256 5c72b88f8673bc793306118703857a7d69f43432d6b9566b6ce9cb922ec1a196

See more details on using hashes here.

Provenance

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

This release

2.1.2 This release

36 files

2.1.1

36 files

2.1.0

36 files

2.0.6

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