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.3.tar.gz (41.3 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.3-cp314-cp314t-win_amd64.whl (297.6 kB view details)

Uploaded CPython 3.14tWindows x86-64

private_attribute_cpp-2.1.3-cp314-cp314t-win32.whl (272.9 kB view details)

Uploaded CPython 3.14tWindows x86

private_attribute_cpp-2.1.3-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.3-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.3-cp314-cp314t-macosx_11_0_arm64.whl (95.2 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

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

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14Windows x86

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

Uploaded CPython 3.14macOS 11.0+ ARM64

private_attribute_cpp-2.1.3-cp313-cp313t-win_amd64.whl (101.4 kB view details)

Uploaded CPython 3.13tWindows x86-64

private_attribute_cpp-2.1.3-cp313-cp313t-win32.whl (76.1 kB view details)

Uploaded CPython 3.13tWindows x86

private_attribute_cpp-2.1.3-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.3-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.3-cp313-cp313t-macosx_11_0_arm64.whl (95.2 kB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

private_attribute_cpp-2.1.3-cp313-cp313-win32.whl (264.7 kB view details)

Uploaded CPython 3.13Windows x86

private_attribute_cpp-2.1.3-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.3-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.3-cp313-cp313-macosx_11_0_arm64.whl (93.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

private_attribute_cpp-2.1.3-cp312-cp312-win_amd64.whl (286.5 kB view details)

Uploaded CPython 3.12Windows x86-64

private_attribute_cpp-2.1.3-cp312-cp312-win32.whl (264.7 kB view details)

Uploaded CPython 3.12Windows x86

private_attribute_cpp-2.1.3-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.3-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.3-cp312-cp312-macosx_11_0_arm64.whl (93.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

private_attribute_cpp-2.1.3-cp311-cp311-win_amd64.whl (286.2 kB view details)

Uploaded CPython 3.11Windows x86-64

private_attribute_cpp-2.1.3-cp311-cp311-win32.whl (264.4 kB view details)

Uploaded CPython 3.11Windows x86

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

private_attribute_cpp-2.1.3-cp310-cp310-win32.whl (264.4 kB view details)

Uploaded CPython 3.10Windows x86

private_attribute_cpp-2.1.3-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.3-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.3-cp310-cp310-macosx_11_0_arm64.whl (92.9 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: private_attribute_cpp-2.1.3.tar.gz
  • Upload date:
  • Size: 41.3 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.3.tar.gz
Algorithm Hash digest
SHA256 d46efee0161712564dcf5851f5dd0f4128a991d31e70a9b0361611cf82640083
MD5 8929f07f32aab785e79d8f3ca1f4d1ad
BLAKE2b-256 84c8384d0365b48c0914b49d68b1ab8f3ac95a6d32857464e0215a245af994ca

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 28f2228303ef0306dd09cbfd0611073ecce11ae3f289ad6b6f3b3b61eded28a4
MD5 d31fec616eb215c098612715a7dce112
BLAKE2b-256 e9bee690630553173f151106608994e478fd53636bfac5f4da8f0f6a29ef248e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 b0abe9ef2321a253ff2921a17a1be84b0dbb2dacf062672417855a917d054314
MD5 f62c5615501ec731a8ba0bea99ac620d
BLAKE2b-256 7e817e6a2d6c26f50cd4f32616d59ed8e138d4433d6296a01af794d1a17b161f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e00c05d839e22114460a754a7b66e73234f9c19cda18e8ad2860faa411b38d11
MD5 74555496ca5651f3d63a07697dcd8934
BLAKE2b-256 19c6378524e6675800c6cf287bb6f0e46d5c2f7e75226f4f40701fd5a7d57af4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c944a0ba7e3843ca04304e9a81ab930555eb3cf2efc9309b5c9577c995c85872
MD5 85d83fc3796f6fa5ca9ae6005b618fd8
BLAKE2b-256 3b594a4d8d94acbcffb53866e1653538ddf3b6739bb851a1323812df25b45c9c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 04692644fa5f0d8ec3c1c0509c0027e9802558a06e4286e28cce616895140d1f
MD5 2e44fda7a4782b6e73f0d5b7d337b737
BLAKE2b-256 57c0e363f72fc052f182602a2200eba51c1dc26f1b4e332bf72d1954f61998a0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 b02f59d92772db1442b0ca833b806b7f116a5f39b733db452bf681d52b0d27cb
MD5 2f7079ee907f9216e78ddc66f5032324
BLAKE2b-256 0605252806a021c5ed2c0fe4063c07f82fbe15115393dbfce1c5e43a16261646

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 f937e04acd50f62841a63494e3ff6c6215ec2f15ee0728745ed848344bac25fe
MD5 8451ebfe3e037f5f36bd4d88c65e8b84
BLAKE2b-256 092d52bf5023bc23f519f2926048cfa916e095d13551db192c0e4c67fe1f3384

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9569504f8d5ceba322e81848bce47d1b8305c21a415907c1982ebd3de0abdedf
MD5 c03020fa2cf2c7db3950bbc79a3b688b
BLAKE2b-256 c7b30fe10a93d51aea845bd8305a4acd33cffad3bf0eb1b2ba1277b7a7b41709

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dc6c47282b09e15765e46cdceac622de2867bc644a5c85ba20401299bc55df1c
MD5 7720335489abf45930802d2f35744042
BLAKE2b-256 e0f7fb3ab44cb31adfbffb7db3e6510e89096923ef1029d15271ef8ca31da593

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 30dea1ba7d234139095cea4ada5c5d7363b2c5033cf5b08f925f3b9095ca5aa5
MD5 4f7afc8524df19a3332521830a0a616d
BLAKE2b-256 8623f1988a16aafa319320baa5bb461b380f2876f78ea3868d6219623c55af47

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 f348723ad9b3127d640dc7c15166422569a1ceae0d0664fcac7c98fce08a9dd2
MD5 c1f479cd3712e515d6de72e113a6bf92
BLAKE2b-256 68f70e77976ad1ab97b78b9b68ead8b62a934ffa8d05a64bad542f4c7693dac0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp313-cp313t-win32.whl
Algorithm Hash digest
SHA256 e6192c29a6a4b0d7fbf60b0498896e1093b6fc77e3668cbd1a795a8af0994c68
MD5 81276572dddbe4d728bfdc95988bb6f0
BLAKE2b-256 a90fec708318be9231273e96dc14e935869e1269af7368de9bf0ad0ea77bcbfc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cb6a3af793c02abdb0f896e9461f2674c18339f630f8faa2fb63135425f29a31
MD5 bf8c0fb7cda5ca1d96ddc133f95f78ac
BLAKE2b-256 f18b02b94fa74448026a8fbcdc017fc4752a784a6b8b4e6b52b93ded5cab5fb9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 64c0b19ce88159422a581c84f05b3c36dee2e3e51e04089ac882d2941be0707d
MD5 8461623cc2df4cd11d261b231603e3fb
BLAKE2b-256 696ec2a51932fc5f7956e87837a2c044e68f52782778ef391c6f22ac49f55469

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c0a8f4c45143b92f5bc24ad642da588447477cf22203dd6ca5632e43cde17dec
MD5 d219895ad9c68d7bda7048a1f78668cd
BLAKE2b-256 e2e60825bc7c8ec3855c8a1692fbabe019156234e9cf418228c4821240d379a9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 059feed7e271d77b5d2480f75629d0863ca0ed0693ecf07f539c58e5caaa0464
MD5 90f8bd8328e261241e4ae9824edf1587
BLAKE2b-256 c566aec12722807134f4d7a72607b62c5f715e983813c14b60052f120fb20695

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 aaf51646fcbaef0393af14acbecfc2d857deb97da3797bbc0f719bef68b5fc4e
MD5 19bae101a22b5783598fad49e12e8fc1
BLAKE2b-256 f71bb1ad79ddf50cee8d87dea0de428b3967d9105b3ed77e40ae3b0450634c79

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8f66e5cfe1423067be237cf36cb289d70e8903fc7939cdb5b7f243c2b560cbb1
MD5 6f6241c096f07d9165c7a4ab4f5a8057
BLAKE2b-256 be5293707a9d98f5b16990f0c6f5923f23ac43289da977a028264c706f58a190

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 67567e3f5fef965470a53c8899186b7697e421353b164b5d21c50acc4f3449af
MD5 7749507d863298cb69ac84eec99c8b3c
BLAKE2b-256 b990ae6cbbd8ce3bbaa4d73b4292838348da06239389d5fe7efa16ad0379ddb2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 da79e5d71a067213fe9420cccbe92d9f2d6da0366b8c4c4c49fe3e7642222f62
MD5 3d9a35e7b5b8099fa2c13e766d56c818
BLAKE2b-256 807a4439f8a12b12313901168490e1d34ea8f9baae7a08ad01a71181a6b2f6a4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6fa266531f158cce60d221af6d48906b3a451a39b2098978c7464be322dc8bd7
MD5 cb61b0ac0c50c62a4263b8b96df8f1ea
BLAKE2b-256 d5333e424a009516a91fe346062bf9734b66d61dbb4dbe8c5897accea77c848a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 978d7c334ad51cbf5389a28393cc6a4c005aec0f1fe02828b1b08d01d3c5f0d8
MD5 e58e969e3467d26f993f052464d61f71
BLAKE2b-256 264d326ef6882f662a9e30cc3900e221c5514db0abc12145afc87c0cd82de44d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cff21f8e344494687f801ffaa7865d9bd6a98f8115e42918161ba649308370ba
MD5 8576c75a77c0753231d801ef93ec2cbf
BLAKE2b-256 a17e3db0ae4b040badcc0741e961f13303492927fdf4c5bf38d5f4a8d9bab797

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0d1c499fed5478d9c23ae63e40fe15663976c64ce670925edb1d3d52aeade831
MD5 e6974ea112cf476050ad37b0c4df3db8
BLAKE2b-256 49e12b11ed2c7093617479d9ad93d2dee7ad3fdf9f9de4f89b6548e1634d6e5c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 88049e44d4588f6b1c9ebdcb7d14bf49767c2e4ec7de511f2a02581480f8562e
MD5 8e27a729b06968809acec6a79661216a
BLAKE2b-256 6d3a10d5304cdc28a29cdc9d7fcf0104768fe3c69fb303cb23323641de74e70b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 fb3a0744a392277d7ed7e767899573e045b1fa1d261bcdc25aff9d9e43939b12
MD5 0c458ef25a0369e695f9557efb7d0e02
BLAKE2b-256 9ae9f0c982acc32a857e53ec133e16a89dba7a503763340577aacc4ca8f6d2fb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 ea4cc9a7f214306804d051cc16fb917c31c37118b26a034769196f699b322d1b
MD5 f7cc6fd597fea27d65d0c009d4db1d17
BLAKE2b-256 3b019c23075c31b890eb80baabe9671c4f60da2eca616d683e798085263bafe7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 91566c5f56ec08cad992c5c575ccd8f3e281eda290ab21781c1a57ceba5160d2
MD5 4b17b4fa4a3d33da24f25822c6031cac
BLAKE2b-256 ea439ca4ed3f3712f94c7b0439743c4526c1c2217ba44b3eadf40eaad0fbdaae

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b40feeca7e7724a3c2974557dec065033fe0eb21ac0341a3f4836e349b7f1948
MD5 b525b463456940146726b0d17446206f
BLAKE2b-256 8f7f3fee69cc6553b6b7af59ddee5735c1f2cbb4fe0136757aa1785a37a39a2b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7bfaeb6b61f7e981a01c69f05d0aa9b552c03e5a02ac9209adaabfe93a47a60d
MD5 b7396778b2eaae43f6eeb5d9f6b56c83
BLAKE2b-256 0431507152c2a6dd6e2b8d32e4ea8dd46f4ca002372686d71acbca147dc294c4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 306eab3883ab137208b825681704bec6c2a6bce326892c92a9eaaaac17d69785
MD5 7f130f6a652cebd13e66066f3441ce8d
BLAKE2b-256 00bc87f4d7942c3ac29247eb89a13caba5d76f84f1ca2c52c78edabb13a0c152

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 02e89c4d96a3d7913490fe9d5ecfe526cd5971d67c139011e3b4af61258db0d2
MD5 a9cbc3f4216604d821ab16976255a4c4
BLAKE2b-256 f367d2a256051ddaffce1b7b2db30d31b0250b3d7d2797c7da8469f01b4fd770

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3a6046fa477e92b822ddd4b2395f10f119b34e4454648d86ff743fa3e161b882
MD5 5216162828f575486f5f96130039f657
BLAKE2b-256 823c7a2a0fea5e9f9e8cebd41d7f09fd947007ff4d8151e38b4cfac3417a66ed

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f3ae78728b992a3502e33bbb3680a7015976c46e4080fd9e865adedabf3e5efa
MD5 18fc1ce7705475a08e2cb89d1e7c2023
BLAKE2b-256 7180c1d922166f185dd97fa622c86afbacc053ee4b339e7a4959d8923f3f833a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b7ab1b09c9859c4718615679b29380b721b0ed3019fa0cd6eb9e95eaeb99b2d4
MD5 7a4bfcdfa8a9ad8e46f23ac2dce382d4
BLAKE2b-256 dfac5d458ad690d45a85a355665af1f9a228a510a5c7e1c981836eb5f76e4d31

See more details on using hashes here.

Provenance

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

This release

2.1.3 This release

36 files

2.1.2

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