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 Optional (changed in 2.1.4)
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.(changed in 2.1.4)
  • The __private_attrs__ attribute must be a sequence of strings or just one string.
  • 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 only support Cpython.

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.12.tar.gz (47.1 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.12-cp314-cp314t-win_amd64.whl (298.8 kB view details)

Uploaded CPython 3.14tWindows x86-64

private_attribute_cpp-2.1.12-cp314-cp314t-win32.whl (274.7 kB view details)

Uploaded CPython 3.14tWindows x86

private_attribute_cpp-2.1.12-cp314-cp314t-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

private_attribute_cpp-2.1.12-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (99.8 kB view details)

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

private_attribute_cpp-2.1.12-cp314-cp314t-macosx_11_0_arm64.whl (78.1 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

private_attribute_cpp-2.1.12-cp314-cp314-win_amd64.whl (297.2 kB view details)

Uploaded CPython 3.14Windows x86-64

private_attribute_cpp-2.1.12-cp314-cp314-win32.whl (273.4 kB view details)

Uploaded CPython 3.14Windows x86

private_attribute_cpp-2.1.12-cp314-cp314-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

private_attribute_cpp-2.1.12-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (101.1 kB view details)

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

private_attribute_cpp-2.1.12-cp314-cp314-macosx_11_0_arm64.whl (76.5 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

private_attribute_cpp-2.1.12-cp313-cp313t-win_amd64.whl (102.7 kB view details)

Uploaded CPython 3.13tWindows x86-64

private_attribute_cpp-2.1.12-cp313-cp313t-win32.whl (77.8 kB view details)

Uploaded CPython 3.13tWindows x86

private_attribute_cpp-2.1.12-cp313-cp313t-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

private_attribute_cpp-2.1.12-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (99.8 kB view details)

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

private_attribute_cpp-2.1.12-cp313-cp313t-macosx_11_0_arm64.whl (78.1 kB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

private_attribute_cpp-2.1.12-cp313-cp313-win_amd64.whl (287.9 kB view details)

Uploaded CPython 3.13Windows x86-64

private_attribute_cpp-2.1.12-cp313-cp313-win32.whl (266.2 kB view details)

Uploaded CPython 3.13Windows x86

private_attribute_cpp-2.1.12-cp313-cp313-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

private_attribute_cpp-2.1.12-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (101.1 kB view details)

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

private_attribute_cpp-2.1.12-cp313-cp313-macosx_11_0_arm64.whl (76.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

private_attribute_cpp-2.1.12-cp312-cp312-win_amd64.whl (287.9 kB view details)

Uploaded CPython 3.12Windows x86-64

private_attribute_cpp-2.1.12-cp312-cp312-win32.whl (266.2 kB view details)

Uploaded CPython 3.12Windows x86

private_attribute_cpp-2.1.12-cp312-cp312-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

private_attribute_cpp-2.1.12-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (101.2 kB view details)

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

private_attribute_cpp-2.1.12-cp312-cp312-macosx_11_0_arm64.whl (76.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

private_attribute_cpp-2.1.12-cp311-cp311-win_amd64.whl (287.4 kB view details)

Uploaded CPython 3.11Windows x86-64

private_attribute_cpp-2.1.12-cp311-cp311-win32.whl (265.9 kB view details)

Uploaded CPython 3.11Windows x86

private_attribute_cpp-2.1.12-cp311-cp311-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

private_attribute_cpp-2.1.12-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (100.7 kB view details)

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

private_attribute_cpp-2.1.12-cp311-cp311-macosx_11_0_arm64.whl (76.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

private_attribute_cpp-2.1.12-cp310-cp310-win_amd64.whl (287.5 kB view details)

Uploaded CPython 3.10Windows x86-64

private_attribute_cpp-2.1.12-cp310-cp310-win32.whl (265.9 kB view details)

Uploaded CPython 3.10Windows x86

private_attribute_cpp-2.1.12-cp310-cp310-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

private_attribute_cpp-2.1.12-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (100.7 kB view details)

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

private_attribute_cpp-2.1.12-cp310-cp310-macosx_11_0_arm64.whl (76.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: private_attribute_cpp-2.1.12.tar.gz
  • Upload date:
  • Size: 47.1 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.12.tar.gz
Algorithm Hash digest
SHA256 1b411208a99dc4b7ef9d293ab0f95d1c990fd45df9c89806a64faec015461067
MD5 7aca51026fa5f20a483cd7399d603a1b
BLAKE2b-256 533e716e197a698c6820c7ab8c7ea53bb9a40963cd7c61a54be97365ffc43a51

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 0c1e01157c579597af6f157e5ad915f48f4ce4cea7c3cecc71e1e0513f5ed82f
MD5 404a9b0330b455b9a9cc1e6058619128
BLAKE2b-256 6693f25bc3997829ebd78d1473b0539db6bcff8b972e34e10e638c04492a601b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 40faaa532b023ea55be66775f49b1ba6463ea5d7e5623419030f6d4197736924
MD5 6554e015fba744edc88a7d011e30e8e8
BLAKE2b-256 98b958eeab1ee02059487f824213a2cd7dfbc4f3fd723b4862ce454c5ba6f4e5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 705bebce573a1d0f971d01c332057dfc04eba7e61c81e3b3e7be6ae48ec4a03d
MD5 759e94a34905cece1341f0fa7a8113fe
BLAKE2b-256 9d3ada9aa5b16e8e9022a12501d7d507f7bb069d14349f51160deef875cad8e8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 71b89f416c7edbde60b6726696758a11e43d4d17c1ec85e45cec2451bbb8d38b
MD5 3bc622445787644a5294baf1fc656986
BLAKE2b-256 e0ff134243d28e122154ec61146c81e05a86b0950f53912dce8f31c505116fa4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 345fbef311e0606cdf6118f61bbd8b249d51ddff827cacd83e2486dbc3855275
MD5 795407908d0277da3686261812240abe
BLAKE2b-256 e1ee0ed9d92d2f19457a5d1315d91ef1e479df1f0978566590abf6a7254cc876

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 b0b64aa771322f373702218a177a7473ea85fe7e9c30589d56e2170f48b9029f
MD5 e8f908e485f861547d9ffba912b8f120
BLAKE2b-256 a8a48fa444f8edecb8749717475e27f350d4b7e6ebdc7cb4b7236012d3c7d3f1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 487b72dc7a05f6d444a58d8be946e9478ff572541ffc5b14a7e0ecad5aeaf150
MD5 ebfca5f5b05ed53c501c3dab15afb3de
BLAKE2b-256 cfab5d023f886929a363bc28ee3f73051899e3adaceadee6cc37450878db91f8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a65fb6469c24b72130e3dc83df1c314c27eeda4f885dc053b453181a7e9c1dd2
MD5 e066709775d8e4eed89e8be3fdf2da6e
BLAKE2b-256 389cb67ef7cc3722c7b7a05e09ac9286d1c4d79d4e54c3899af269144395a1e4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ac882c0a56880161edde1ecedc7f607fb890451a50e9843a589d54d3205e6a51
MD5 bb4d71556073eecc8004840205d25029
BLAKE2b-256 ab8b0371b0f8327edc25e410f14d33de3208edf5f7c8d899fd80e446b72bdf71

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2506600ed63e6875aca18f3fb27c32a0ee376e1215a837639e97e7e3616dd3b7
MD5 ea74b1ad3c933e3aeb2432f0a6551fde
BLAKE2b-256 01205cf5c883d5d1d48db166c5df6533445734f350e69684266bb2188e732293

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 da9cfc6d64d6ef2b4cc7dc7c54db3bf0770846d5d7c426e82776518aac5e2efc
MD5 64fc124d7d6848b23f78379dd1a16c5f
BLAKE2b-256 9bb1e876a06bb27dd639c4ffde6002f826139f946908d646deaaeb140ba3981f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp313-cp313t-win32.whl
Algorithm Hash digest
SHA256 a3b91991377ff44336e7dde9b5444659596f73cd92fbc4e0a253512d7c716c8e
MD5 2b91cf81e5dc178ac221700a42e52b49
BLAKE2b-256 5f60fe18fbfab2cebad9e56ea12f8799c478501c9f1a7104450d8fd344d5466b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6b1876d3437f2937138798e36dd0b56346c5e771b38013e764b3f522fdc647fb
MD5 24510d33264cb38be55b3b6fe5c515ec
BLAKE2b-256 df639853b06aa3d90009bc81cdbceaf7019821d4c0a54beb0f051a6d310795e8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e3945f0ebdc8c239219188e3e4903b1dcc6f4ccb73930397804eafccbcfd6419
MD5 ecc0a9f493ce7ce465f09992f4c128c3
BLAKE2b-256 4323e70ee65bd56068ded4ef1e766b121aae444c49de94a556df5536a0c4a033

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a1db1a60e3a56a11f90b8fce48a2dcec87a28b4453ffca4507653898593b147f
MD5 7871214ff4dd6f33b2ffc408c762107f
BLAKE2b-256 6c66f11817fb9ec2970829d0d2cd5d9adc99307088c53149b5e1af9d87c206b2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 eeae3cd8e7d296be00b4fdb278e8de100a74d149ebeaa1b7ee516bd9994985f1
MD5 0b308c93e9a4e365981a283fe9451f59
BLAKE2b-256 99eb20e6f200b4be86a9fef24205ee83f94161f9da47614075e05ebd391efd3b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 782a438bc8fcb2090d9df2e7e37ce57f91e95ee5cd493bb09b56278714d58ed1
MD5 ee9747d880a4ad619f84120bb8538475
BLAKE2b-256 193ea7a64ad8adbfd6e7420bf1e4bec96067498626b539c7eecabdd05a6d8ec3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f2cc0fd2f1943886cd8d6cefc6ec645dce06d2e92bdf6882101fb7bd9678cd54
MD5 11a6f084f57386d10c342d7ece6f4187
BLAKE2b-256 78fffbfc9dffed878f27c7e459566b44dda67c0c9dbe15f70f3a117ca9beead8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5b6a5f690e97cad90ee2848a150d1abffa32c2bb4716f9e08b4daae6a9beb908
MD5 ac3258ae4d7f1b24403b36c67ac0dddc
BLAKE2b-256 85db8277b8e1b104d025e75c1e8cbdd9b53524d31ff3651204972e7551208c10

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f67e643baa9008d9b000d1eb1c513793f7c0e8350d22c042e517d67d86a84ea7
MD5 ad2f9052c1da34f41a9e5258ba5a1f83
BLAKE2b-256 065f05fcb452a2a1ec98075188a40f70bcac84643d112324e44b07d3fd78261c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 adbf02973baedec564a0306eb168f87cd8a3de477a38fa440ce640a95a5da68d
MD5 5eb05afae82c7e40516f52b983056822
BLAKE2b-256 5afec6682b5592e54b34fda5b01fdf6ef8a90b18012138c3039bd9882ba2a7f5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 e45b6090ce77b4340b7c764ea7889c126ceb3a59353c77aff65dd41a0185a3be
MD5 a12a8b8da077d74fd88452ba76607d18
BLAKE2b-256 83a75abc6856beebb21d120db64246d2718e04f5b3a64003caf3975590d31599

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 90e77e3c952881351d830e33b825c4059bdae556e2ef7f0b47b929434f38014d
MD5 8fc3cf9c12a088594e63ed5d886c2666
BLAKE2b-256 15df013aaa947b3af6f79879f2491aab44016a4e2712f1a56b14b1c9b1307f3f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 77ed44e76635d9b4ce4fcceac005e3168cf01a74902939ffe0a2b991107e436f
MD5 a449ee51d845a8061875ba541a6e3e3d
BLAKE2b-256 9c0af8cbc98db97911d86eea5cb925b7b8362949c81bb8e2ff2ec2a18755202d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f17d2b78e402f5653ae2d892cdc5fde7a4ac6bfb6a651060dafaa8b7f710abb2
MD5 cde0405dd79871b417eb6baa027b1268
BLAKE2b-256 2336d8f62ebd1f49aebeb2d7642b7e1fb330f45995415977d15ccfd8c24a44b1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 5fed0cc74baf7b4488fd3eda56688e79e781bee66c04cb522a6e1f1ae80f957f
MD5 5244dd4323ce31164eac35b16cde18c2
BLAKE2b-256 92a841aa58c21428663be1b4e656413704147e0aec07e76579c577cd43fc150a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 e2b0b59a13c37148e43abaefe3a9ef108ed63427edaa2f8462852f8331d617d8
MD5 028be052f6515ba770f9e2c7f1c75ee3
BLAKE2b-256 40a2f27477afda67c2387a4d571f94f845ba50278e9b76c9c8a9bf82e352c3b4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 408b8843bed840ec088c72c83539c91be612cc0d4c5eefdcb063719bae7007f0
MD5 33e2440d352efa8596c0231bbe928f6e
BLAKE2b-256 df985651fb546d5575d5e788806f302ef1a839ce36611762b28a2e15fef64627

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9bbb61931fadca479883656be48cb1f18bf132951d27598ed7a13bc2cbede73b
MD5 dc758c67e1785f4cfc326d6940efc118
BLAKE2b-256 21be2ec5a0fc582735d6f7191ee78ceb008c091dfd1fef525ee922119c05df1a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2244ab4839a64f1283fd53e4da2ee4a5ab61f401b862b46f423c5c2310190363
MD5 d4cfdab61bf8ece02cc719f940213f69
BLAKE2b-256 5a5821f54a653026713b70f3aabd011054f9af085a5741e661a3efddd5e5ddf0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 61fbedd8704cdac06f8877c4b47b048551844841fde614f8cc21400f4fb804e6
MD5 8f5888417e6ec6131f9a0fd1b267ce27
BLAKE2b-256 2541bebbc3eb433f05fa84de474cf005ddeb5a25f5bb385562addfcd4ca1feba

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 2015e14e4e2c894aa9297392a3ec4533faa0a41f88157f3b85866f99de10d1be
MD5 0536cd7711832e12544d914b32cc8444
BLAKE2b-256 5d42df7cc197f5d7c58aeed9033fbfa483ba74d9210e6ea8bfee73e35e785c24

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0ed280b16cb88a75971124e2baa2cedf22c287e6af86a7a516400d791af1cd3c
MD5 69bc516cf385affaf498689ed2b68b9b
BLAKE2b-256 e19e1b66242713358381c74dd100f06c2ba7f43c00f8923cf186d6521ca086b6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 68c3506a6e3828af0c070fabbef1f50afb06230d7cf3cdf530c58fff141928b5
MD5 f081e0b76ab926b43aa87bd69fd01bd7
BLAKE2b-256 963b8a355ba8ff2d71ece3b36361582d6c30676522c276cc3db3b1ff9e93a555

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.12-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6a584041850e95b1853437ea2b6e3cc5123f04efa4f7cf8ecaf0389103fe7c49
MD5 0142429b92772c9056629c3b0627f6a3
BLAKE2b-256 926afe64f315d00da82033560b4366340fe947d25f02c832c1efab25cdd74c75

See more details on using hashes here.

Provenance

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

This release

2.1.12 This release

36 files

2.1.11

36 files

2.1.10

36 files

2.1.9

36 files

2.1.8

36 files

2.1.7

36 files

2.1.6

36 files

2.1.5

36 files

2.1.4

36 files

2.1.3

36 files

2.1.2

36 files

2.1.1

36 files

2.1.0

36 files

2.0.6

36 files

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