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.1.tar.gz (39.8 kB view details)

Uploaded Source

Built Distributions

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

private_attribute_cpp-2.1.1-cp314-cp314t-win_amd64.whl (295.7 kB view details)

Uploaded CPython 3.14tWindows x86-64

private_attribute_cpp-2.1.1-cp314-cp314t-win32.whl (271.3 kB view details)

Uploaded CPython 3.14tWindows x86

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

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

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

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

private_attribute_cpp-2.1.1-cp314-cp314t-macosx_11_0_arm64.whl (93.1 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

private_attribute_cpp-2.1.1-cp314-cp314-win_amd64.whl (294.0 kB view details)

Uploaded CPython 3.14Windows x86-64

private_attribute_cpp-2.1.1-cp314-cp314-win32.whl (270.1 kB view details)

Uploaded CPython 3.14Windows x86

private_attribute_cpp-2.1.1-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.1-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.1-cp314-cp314-macosx_11_0_arm64.whl (91.1 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

private_attribute_cpp-2.1.1-cp313-cp313t-win_amd64.whl (99.7 kB view details)

Uploaded CPython 3.13tWindows x86-64

private_attribute_cpp-2.1.1-cp313-cp313t-win32.whl (74.4 kB view details)

Uploaded CPython 3.13tWindows x86

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

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

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

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

private_attribute_cpp-2.1.1-cp313-cp313t-macosx_11_0_arm64.whl (93.0 kB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

private_attribute_cpp-2.1.1-cp313-cp313-win_amd64.whl (284.8 kB view details)

Uploaded CPython 3.13Windows x86-64

private_attribute_cpp-2.1.1-cp313-cp313-win32.whl (262.8 kB view details)

Uploaded CPython 3.13Windows x86

private_attribute_cpp-2.1.1-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.1-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.1-cp313-cp313-macosx_11_0_arm64.whl (91.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

private_attribute_cpp-2.1.1-cp312-cp312-win_amd64.whl (284.8 kB view details)

Uploaded CPython 3.12Windows x86-64

private_attribute_cpp-2.1.1-cp312-cp312-win32.whl (262.9 kB view details)

Uploaded CPython 3.12Windows x86

private_attribute_cpp-2.1.1-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.1-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.1-cp312-cp312-macosx_11_0_arm64.whl (91.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

private_attribute_cpp-2.1.1-cp311-cp311-win_amd64.whl (284.6 kB view details)

Uploaded CPython 3.11Windows x86-64

private_attribute_cpp-2.1.1-cp311-cp311-win32.whl (262.6 kB view details)

Uploaded CPython 3.11Windows x86

private_attribute_cpp-2.1.1-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.1-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.1-cp311-cp311-macosx_11_0_arm64.whl (90.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

private_attribute_cpp-2.1.1-cp310-cp310-win_amd64.whl (284.6 kB view details)

Uploaded CPython 3.10Windows x86-64

private_attribute_cpp-2.1.1-cp310-cp310-win32.whl (262.5 kB view details)

Uploaded CPython 3.10Windows x86

private_attribute_cpp-2.1.1-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.1.1-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.1-cp310-cp310-macosx_11_0_arm64.whl (90.8 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: private_attribute_cpp-2.1.1.tar.gz
  • Upload date:
  • Size: 39.8 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.1.tar.gz
Algorithm Hash digest
SHA256 88b47e045168572062643c3c7d31eb7bd5e78e93331d5bb786a753e67b790e21
MD5 59cd3d78ec8d43f6b81f97c6a1b77f22
BLAKE2b-256 e5437641e5b388748c5373893783c83a00608881765e0a12bf8508a4e0c81e5b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 978d92ffb962a8475436cd3d098a523986f28448fe1433cd3e1614ca4d9a0e99
MD5 826210676a0c16ed52a626bfa476556d
BLAKE2b-256 2496d85766c39e65ad5ccd49541a667aff8625f014e2070da506fe9fd8e3f582

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 9f3966c69af4b1c971943ed474abd4cafaef098c0bb11c8aedf8440ab67a23e3
MD5 c57b27bccec56a447024c3a8a075d365
BLAKE2b-256 26853d3bdbb55589b0bd8305ac6b369160ae0bdc0f521f8b453adbc69bdecfb8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cf6dcd43a5c51122de9e2f166e25a1ebb844ccf36fc649c6a8782654fc5695d6
MD5 2fec71f3b3f56f3bf550e45c7524857f
BLAKE2b-256 aef6d5f3237f5d22623939e1b0a4aece9b1fa4b44f15be41824f4389e74128e6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 db48c257e0e1e7c7b2dea63c9c99cb2ecc2085ed09fb5efd81b8574c2abf851c
MD5 1d0b710b1888f6e65252ec3ca682e288
BLAKE2b-256 a2827fb7910c28300059b960961a18150fc4a9370835c8ade9ce0cd16feadac5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 03353939493182b263bef5f59b4af07488e5fb0ae03218b611cb9116bf4237d5
MD5 76baa14efd5eefda9e0abf2947d9e209
BLAKE2b-256 2622d3f4514d1fe05b13794afa6de1498ee4449644b08861c8174574e51a49b0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 a97a07bb70d90cce200c19ecbfdcbdc73dffe34cb0da95a4387ea864b6007a63
MD5 dbb81ccd6f7848cd46b91e764a8c9f17
BLAKE2b-256 3d4d3e8ecaf4b0695ecc9986691d76985cc64086f42746109d4351e5eb854a4a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 60a8a59390875317193f8d8fd4ec9008459d3751437dc6392cc8297d8797f65a
MD5 9da5c3b8daa9b1881fe1bab7cb94d1c1
BLAKE2b-256 b81fc7939bcc771d6be52e145a9ad38147473beaa21c9e42b7e2c0656b655343

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1593195d3136dd1eb83e0e1af74911d6d48b3a84eb8405ae9b29b21f0fae9558
MD5 d45dcff92b6fdd96724d2452a4794246
BLAKE2b-256 c92c49dcda2acb91750a0f8abfbaa431a5eadbad25f843d9a03c6ffb4bbae06d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 584dd52edb2f21edc136c895854c2e7f4a73c7b49f3bc6921dd3fce99f70c581
MD5 55b189053a493e8482d7a3f95f56b4e4
BLAKE2b-256 739ba66bf7239cf35c727757eee92275eb3f25274c12527ee0087e63604ef078

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7b59678d41ab296292fadd50ff5e82b39e43eb8af4d284a5fcefa4a0a6c48039
MD5 cce4ad5449d44b860d9ee4991c1d6f91
BLAKE2b-256 199bcca5f9af75a63cca7b42e22e5b3c3b0dfd0e617d1059013de4a45b25d077

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 e12eaa619859edd8d4fab965ece0e78b17e7b0197fb0c57d003d85738ff86ff1
MD5 1d4560faa3d7c5f74037168a0b8312e3
BLAKE2b-256 240bb59dabe04f220ae0b32dfad25e4f92e1bbd33f8ecf6a322bccad4bfdadaa

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp313-cp313t-win32.whl
Algorithm Hash digest
SHA256 8f40e5fd8262e0a9e0f60e51750d62cba0138615a111ae8ddeb23f11cf2914b5
MD5 6e08763303d9ba80d0a1ad1302433829
BLAKE2b-256 b3d10f100a07648f60e7a0bcfc2c6481e038b4b123a3978381124fc70bb58ccb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 91aefa90f33950554e3df48fc53fb058cda84a79e85fa16a7fb4e1417b0d7590
MD5 5839fc196c8816a3e70d052bf90f0625
BLAKE2b-256 6df3557546321e7e6b6ee5d8e2f9e76943ba8c4e23f51bf132b083b643b4cb69

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8f41d07c32840e58467308ad54f6d34faca0c32400cda837dd72e913af33d512
MD5 5810687b4c0d268fc123e3f6510057f5
BLAKE2b-256 dbbeb00bd17f886af3a7e7bd1c5766131a7932fb3fd62f341bce6344a0a1eb6e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8465f902b7e4bb49caf950388831da5127e71810e7b3beef50a7b2ddda542386
MD5 eab8a891917d79e24480d97bb32fae1f
BLAKE2b-256 ac94ae03d4b5824e47111734bd9fb6d4c7cd7348379ec52a546ea2c28696f2bf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 2c2e959ec3e2efa64c544ffa9af48cc1196d617d677e904aeb8d52c583fd04c3
MD5 ba2efaab1e0cb0d95a7ecbd96c152f35
BLAKE2b-256 2fba1f6db8c691dc4fd8765a7e00ece0408623b2425ef76f242f9ac2e12fe867

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 bbb7ea74355c0ab8bf13a846e754678ed340593eebf96e52f265ce97926d5129
MD5 24dd1214970cacf46cd37a4e026f9e0b
BLAKE2b-256 a5e520cf96c943b5dc390fee573c73f662bd453c49d6904fe86a9890b471a435

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b54bc44b547db68c254d530f3b62381f25126ed273b4c09b7f185030c94a56f8
MD5 a4dfec0009e60d240eb0eb6a2aa1ac7e
BLAKE2b-256 624326f68f828c479d25e26bf4aac2a587f4dbda8ddfa364cd55d0c151975aad

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 92de69fabd7a6529fa667ee96e9cdc975e6456b2536554063515c33000279f5e
MD5 b4604cd02e99a64bb6dba051aada1b47
BLAKE2b-256 14c8a4d72da3776c7191f5c91f7384d5f8df2f52a10ec212ac63ce37a3ba4bdf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6ba6b9134825785145051d5f433f0dc79627c473b0b0367199b5dda4326b7862
MD5 94673fef074e2fe4c3e7f6bbc07905e0
BLAKE2b-256 79acc74c07beb9e5ddbbf472ae68001ff76a49cdadf427b47e2a16401d26d448

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2a2c481defe6a0fa8dd6fcc2a175b58f711697fb644cf5e1a3fee6dfbe38a7d3
MD5 22167b6fbf3e0ebfb499274687839979
BLAKE2b-256 a2b52d10c0f8bf02c03f37cc843f7c78959557562f3a2aeea71cdad1d40572b3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 edfea3a65b0c13c7ce27eb9109f89d760c37b922f06b16097f0bcf226b120513
MD5 2b08d0e1da86e0f16341b70dac42c2d0
BLAKE2b-256 5959e98a6f9afec65a3198482df311215c3a025bf9f72146fc07e20badd97313

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6838054faea8bd3f108f8b2c98b993b2a2fddcb9ee241e01447a090cfe1c61f8
MD5 b456ce20278bb623573433c4550cd964
BLAKE2b-256 4dbe940aeda16d9b26027a10a9c72e355b7a123f72eb6b660fcbb17588a223c2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6cd87e07466f50462028f10bae781199b92386ce417ebdf840fd6f4fb39337fa
MD5 ffa8a383a06b773c7e3ef8225fb9167a
BLAKE2b-256 b73a1818877446c4a9a9203ec9f3dd21fd6f0adba6875b5a1852199a6ed818fa

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 38140340d21b61649c9fc2979f54fa005bdb06fbe34ad67aaf8b33ad6f472b17
MD5 4c7961cf7b858277187919fa35108211
BLAKE2b-256 618f05cd2d7e6b8bfe7997d19da397b2ce89df7653b39ce03e6099cbedb140a5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 da16e1dc5f47bb4cab94235bf506d7960ee419bfea1af4e7de9a861cb76cbaf2
MD5 72d4803329d65b2a646b3cf5dd9e820a
BLAKE2b-256 1a37eca45d72c04d74fec50b6902d699103769aadc9ab754195da47389b2e5fb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 bf8fc4d919b135d3b9d458f15a036e96df63897402b382e2a7d332ec11eaf30c
MD5 cb335601e15cec7b8094efb0b0a987e9
BLAKE2b-256 8ffc09cdb1dd0d3386c53e1773e4ea5f5cc1106b46e36633f5b07b8586de8670

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 05afbb02bcd176c5109a3b51dcce8d108c225870f31f1cd7d24c1d00fcc59a32
MD5 dcd8e92b18ac643b8b4f321f443430a8
BLAKE2b-256 89242c259f06e631dec8b07ab43caf4c3858bbe9a46fa0d417ac2cb68388db31

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9624ed017bbdeec3b18bfef06114f05324f49dad3f92bff4d925ad67862c4ea7
MD5 0e2f3cc27ea4dcf93e0cf1e0cc92ea00
BLAKE2b-256 fb3b37c362b102d9598ef9528ea6a6fe6f9c32f6159590381d2c108b5a5791c3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 45cc1e4daaec0555f68a7d0b84afb1fa250f04d95df8cda9db9e732ed13687c6
MD5 05fa452f4268a2297df6115b5502933f
BLAKE2b-256 171f50b5112e767a27acafae24c4e7a83ff9bf016965193e78a5813c121c66b6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f134156705ac33a75bea8e15eb4d90b7629cd6db25ffd48d41649c6a1e88748d
MD5 60451a9000e3b2ff7a26e95eda4bc4ff
BLAKE2b-256 075f1d75960f26735dc27ccd8b216226e0f290d6cd0fc9b0998a8322dec52b81

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 2e3da752dd7b2e53f7b49f3666351f38564073b96bfdd463d594b57a39366459
MD5 48705ac58df2899e83d4db2284efd853
BLAKE2b-256 6aca2892311f182c7ccd09dc6f1125c022199d4db7c499d00e4a847f41790ba4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4eabf5aec3dcf79b5b8ade80d839bac371583076263954e89b21bec18f5ea590
MD5 0ad6446c98113757c302359dd44f7f81
BLAKE2b-256 1e36eb06d0fe283d8b5118baaa9284ffaff05e29613b34ce3bdc9c324900f643

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 67cb36f3676cbc9271dc9cb3c596f6e1b09c97f30491186847aadfc7d4a776b9
MD5 ca107c06c7e8c7d06eac592f0c6751e3
BLAKE2b-256 f3c6e0ebdf6eaae95245e794bad7c4ec58f9c49e0448b3fc2577dfed3fee9872

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d0c9a3d1f0ddd6e3dbbd09b66934815b0a28cd70027fe367a0653e89dfa39af9
MD5 4b848fc9ccda0cb533928fe3dc566122
BLAKE2b-256 70615089c70591696cf12101df5f4eb59716be10db9bff612a19b2b9f2d8b76a

See more details on using hashes here.

Provenance

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

This release

2.1.1 This release

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