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.0.tar.gz (39.9 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.0-cp314-cp314t-win_amd64.whl (296.2 kB view details)

Uploaded CPython 3.14tWindows x86-64

private_attribute_cpp-2.1.0-cp314-cp314t-win32.whl (271.6 kB view details)

Uploaded CPython 3.14tWindows x86

private_attribute_cpp-2.1.0-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.0-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.0-cp314-cp314t-macosx_11_0_arm64.whl (93.7 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

private_attribute_cpp-2.1.0-cp314-cp314-win_amd64.whl (294.5 kB view details)

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14Windows x86

private_attribute_cpp-2.1.0-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.0-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.0-cp314-cp314-macosx_11_0_arm64.whl (91.7 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

private_attribute_cpp-2.1.0-cp313-cp313t-win_amd64.whl (100.2 kB view details)

Uploaded CPython 3.13tWindows x86-64

private_attribute_cpp-2.1.0-cp313-cp313t-win32.whl (74.8 kB view details)

Uploaded CPython 3.13tWindows x86

private_attribute_cpp-2.1.0-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.0-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.0-cp313-cp313t-macosx_11_0_arm64.whl (93.7 kB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

private_attribute_cpp-2.1.0-cp313-cp313-win_amd64.whl (285.4 kB view details)

Uploaded CPython 3.13Windows x86-64

private_attribute_cpp-2.1.0-cp313-cp313-win32.whl (263.3 kB view details)

Uploaded CPython 3.13Windows x86

private_attribute_cpp-2.1.0-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.0-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.0-cp313-cp313-macosx_11_0_arm64.whl (91.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

private_attribute_cpp-2.1.0-cp312-cp312-win_amd64.whl (285.4 kB view details)

Uploaded CPython 3.12Windows x86-64

private_attribute_cpp-2.1.0-cp312-cp312-win32.whl (263.4 kB view details)

Uploaded CPython 3.12Windows x86

private_attribute_cpp-2.1.0-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.0-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.0-cp312-cp312-macosx_11_0_arm64.whl (91.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

private_attribute_cpp-2.1.0-cp311-cp311-win_amd64.whl (285.1 kB view details)

Uploaded CPython 3.11Windows x86-64

private_attribute_cpp-2.1.0-cp311-cp311-win32.whl (263.1 kB view details)

Uploaded CPython 3.11Windows x86

private_attribute_cpp-2.1.0-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.0-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.0-cp311-cp311-macosx_11_0_arm64.whl (91.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

private_attribute_cpp-2.1.0-cp310-cp310-win_amd64.whl (285.1 kB view details)

Uploaded CPython 3.10Windows x86-64

private_attribute_cpp-2.1.0-cp310-cp310-win32.whl (263.1 kB view details)

Uploaded CPython 3.10Windows x86

private_attribute_cpp-2.1.0-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.0-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.0-cp310-cp310-macosx_11_0_arm64.whl (91.5 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: private_attribute_cpp-2.1.0.tar.gz
  • Upload date:
  • Size: 39.9 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.0.tar.gz
Algorithm Hash digest
SHA256 28b7d71add162ba6c182cab85774b6469e21035a8cb4ff7694dc3ea8c99c56e3
MD5 4f64621aa686af5b92589e867a4d0c50
BLAKE2b-256 30a1c8e70aaee2c3f0fe3f64a9ab8678c51bfcb828b9cde64c22d6d52a127e84

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 c087b0d81385f0311a6fc524f9a6a3c95a9ac5252bc2d3c7f4df0cd5b8bef4e8
MD5 3dbcc0797a8eb58a836e71c583771efe
BLAKE2b-256 56bd7ac01ee63c291fc09253080f498e614e1213e9c67966671f973473201c4d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 c1590696fefea78801f50630013c05687b8491c3dda5ce81d5c90f4ec7472908
MD5 2843833d6ad31ec18676de672c9269f1
BLAKE2b-256 736e7e47e8b7cc21d855c36828d89fdb8ee8f6802623a47bde0ec59f7e30f8b5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6c0bcf8dbf2182cf176f9ab02937130c4c93bc6197c92bc7e5b2192a1d2754c4
MD5 eaf17e4cab427c927929bc21d1546c2d
BLAKE2b-256 5b2542baf78e539dcd5d983a7c395d569d51a8f64b51be99b710d33ec8db048d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bf5eb50b160f8da797b0fda4f9aa5ffd0449657827b28dfc34da07a0e4f7bd79
MD5 b86ff5f1ac1fed306f820b6e3da7f084
BLAKE2b-256 71c7a2962e145b883f372aca3305761f184a383ae954d614f6a64dc957171f3b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a029e2db84c48bb391e058f3f4f0dc76d1a57d181ed274549f4eb6b9a9c872b4
MD5 d1fc184728fd50a3b118e4386157d6da
BLAKE2b-256 18a152d81190e6f920532f6d24c3af13876ff35693936ff21f77d7d7c887adc1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 28504f04a735e215fe250ba547438d346ce37b98a44ac91720f76b9db0f24a26
MD5 2bc5476519fb70c590bb26be4c3f1e35
BLAKE2b-256 7662b488b8eab711f6335e9c9e42966df77012000b665182ca3c886a8280de86

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 45d29254f9d59b7b3b73a4649f8177b289733c85f7ca81a0445cf0c0e06a72a0
MD5 5f33414370e1e427eeb1aa0d16b75a9e
BLAKE2b-256 7c4b26cce455db1f4f0b7675e430d3a23d0e42c2c8706b3f7b807d4b5a80dbd0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2b1fc246eab414a3e80f41aa20e04c58cdb4dedc14597a3af5e4a780a893e840
MD5 09b20a6a58826088f931066a7c9f5643
BLAKE2b-256 714ffffc2f7701a682314698885549ed8e67361edee13615e97bd2c869ef4bcb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8cb327e4d338613699a9807196e4e8a30f1cf53de79b99a0c30b124257e40ed1
MD5 54ac088541feaedc9b980ca32334eea2
BLAKE2b-256 d42a326ec4c113a980d565e4667a185c13826ab93c0bf1d8938f935081c1a650

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dc030f5e2b617d094872b43384148be1224dce5753038a6d5f00bc001d8154ff
MD5 8b33aec2222e55a262a9c6e83d2c5af8
BLAKE2b-256 82b4384a77944ec10b938fb9645d5d198a005fd9579333bb9cbfe3df88fa43c2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 0e838a606a0fcc315c894531b314c9e83096ba0fcc5ad37f786f124e4b0ec650
MD5 79fceba33fcd9c45e445aa9f61592637
BLAKE2b-256 6c9daeff065767c68fd8ed7b60ee4087435a19510c04c78ced232b6b50f2b08b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp313-cp313t-win32.whl
Algorithm Hash digest
SHA256 63a0024b65ae0271774384c8e8bf2f81067ffa69b3aea342fcbff035657b97a5
MD5 d82437272916fcb050430362d598f277
BLAKE2b-256 7e7107b9c9bffa29cfed9f1edf7f7d10b700d116d0a751f76e9a0780c404355d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9f092ea84d73b7b3a89d998ebd87123b4e76e67e389564d93123c0fbb6a142f0
MD5 aad7f875322a092c358ebc16085b6162
BLAKE2b-256 ce21603fd511939d707ff29cdc3b96f5327743066655152e5ecd943245df0409

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fe3b95f41bde2351e0ee778b855edae12a0f5f1fa1d9f4a812802b597a03971a
MD5 504df76eaf9503cd535da83c5a792407
BLAKE2b-256 41366a52da01db73d1fa723cb8c5605591381eab7587e94f41013db7936c08f4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f58ac236b7c495904b1838c6d4df0d1b910a4dbc8c0cef0ab7ec8b27226b1842
MD5 7b1f5ea7ab4cd15f2cbfc5352414e197
BLAKE2b-256 5a101f1442492922246a60e29fb8dfa327d9c84b9fdeb5b6362ef00e79dcfe6a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a9c7a91352ab15cea324737814d00c78029f18d34bc3eb8e4a9948b1403f312e
MD5 1baf509a2aec1f591d8da0556118be02
BLAKE2b-256 09a4e4763f37646315e75163497cd9f17350f2949fb10dd203e7bbf4c79142d2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 7ced0d1a2e675f8b4f9024ecd9b2ef307cb00eab126410ccf31d47d9a06f1390
MD5 fa9b12c42c2141404e38c99d8fd1bf1d
BLAKE2b-256 6a1f7e77408e20c422a954cf811114ac570975fc4f6af1e64bab4603e7783bc7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 63ea50b800e6e3d43dae43dcf99f914e62062c656e7d17001126b670ea9de1d2
MD5 f61c9d04f0b543cb40cee6a47eb8cd93
BLAKE2b-256 ec58361bf088775a3f746a1625ec1a19eca797b975aca27832e3c7d5daf34a8c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6af7f21460a93127fe400e3a439690af1e36e69e8c333afc9a0c17dbc5602527
MD5 ca8076dffc6dff54c8f3eca15d263408
BLAKE2b-256 b45bde66933507b3c3dd13b23f6d355a1c3deef28db135a785686f01f7825841

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 49412dce86753439eedb48a682708e78d8b6c18cc083d9b2a65b44a196268ad2
MD5 29533dcdb9fd6f2d155c816417b661b3
BLAKE2b-256 fb949376dfea8b56294240a96d9198011a045862dbb1e116fb7e7ec7050b981e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a48641a0441a56c8966d0f63c047da1a8ed4885eec87f6f79a959833986fe11d
MD5 3de56882a29f8ef710cf969f9810186c
BLAKE2b-256 2d5dcce7621d82476da69cf0047d9ff01e05e85ced76546c70dbad1d1a8f60e9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 a5faf0c47ffe0fe895bc9aad4d50ca7a59ddcead85a877e2ebf02a124d5a1c92
MD5 ca8f9d70c7dfb3361cde78b7f6bceda0
BLAKE2b-256 f22253408a5dfa7cd05462e62860e2bddb27cb8bf3aa5f424edeb251ff3f4d35

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b9c5bd5ca2c92178bccb63d4b233f2259b644c8ef228902e8e4f481ec4c3bb17
MD5 ee09f7bd67b9e1515895fe627221a410
BLAKE2b-256 da8cb4a7d22c7dd90e4e6afef11c85cd2bd973b4989ee8fe6b86f1406157176e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cf564f58eca5b4b76b550bab4d4360c7a23305969cf37612683565f1a80025cc
MD5 32efa1d47797eded7abd6dc5f896148f
BLAKE2b-256 24273ccc18dcbd51f294403e3ad192d111a828f0705e2dac8cda802ebbe49c79

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 24e4555620fb1aabdf91cec26a11bcf3a2aedc2a70a391781225d12aec24d9c6
MD5 e737c7ecf20c80f41dffedd40735d075
BLAKE2b-256 aea3e2290103969062e2dc3aafb6ded8cd78ff93c5a4d5a97e6a077368e3ceae

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 f296cd6861042504271bfc45f0e6f35267422a5b81e493102d16b34d28c18a1b
MD5 c789261110259b5ead29af4726ce3c2e
BLAKE2b-256 7f7977e3b3a035302a60b0402fe84f39404c79b7c9cb0c8f63429a8c8bcde7d9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 88adfe1fd5412b0e1a1b6e2a48c01596ae118843c82e5e6ca02d6e74a927da7f
MD5 4713fc94aa5eb96a67a639d544cb0ee2
BLAKE2b-256 383e3c92ca991d953f3656a6ada77b9e2c24f57d6493c12dc799109aabb7bd1d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 97cda76a9d9f473a08e5e4dc0217ce2240998446280174698af9416d756eebde
MD5 67a0eb722e0ce7a119bcb88290c100b8
BLAKE2b-256 ed87421ab4b06c7645858165b636071584d28e2dd467b428cafcb13a6797397c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 505d5be7a02a135ca743cd1e01252ebfd37b383908c9efe5f74864779fc73944
MD5 2990335e77c8fd43a697bf2a9781d32a
BLAKE2b-256 ea9a0a603f813e3b8c4d69a9f5ce50eafe243a9b0a68a32c7d3dee057f186828

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 35bb2cf4a0be383472efd49c1e82819562513b9a853d90c4a97362f23be2245d
MD5 3c7786869cdd1a59beb5c870253ecaef
BLAKE2b-256 0dff481bc688fbd7f0e8dd5cb3114342883ced50be62c40cd8a8b16296a4f224

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 3f2a4d1676df31dcf16e80cb90d884d185cf8706eb0b509b9118aec1b7be8ef4
MD5 914155a020a0293a853fa19f9fe5f70f
BLAKE2b-256 84af6302f4a98614503034dc63413ed82e65323fdcd59a1c3abbabcca02f2bcf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 6a949edd607043849eb960560e1d87a799c0cbe7ecd5ef1e3aa2e621e05532bf
MD5 1932d1bc8a2ec0756f47fad74f89933a
BLAKE2b-256 5306aae079ec7e5b55253287ec62159f37be42a919ff0068c501f21091e0e740

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 457216963ae1c3794280a38789d23cec4c1d3996f7b60c0a893471dfc6f7c06a
MD5 ba0d8379b0b8185c2136f9b71c68f2f3
BLAKE2b-256 450a58723b68ddc1ec1749b6e59d0a53d9a2bbd76a1cc0c21d84ab8a128f40dd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 86d47cb032f089d6835f4e59cc9ae0031d5e0ec685989bae8c1daf533058a19d
MD5 319697b7e34d5eac1a6ecb27c566e37d
BLAKE2b-256 c6eb9c6b13a3abf4b5e130cbff8adae912341031b96481d53ec39b047f5b9ae6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for private_attribute_cpp-2.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 015eaa03072e4dbe0524845d00d4b3f7222e5a4f3c06bebf631b4d435c485f97
MD5 2bb708eee256ca3db3e1d38f51582e1c
BLAKE2b-256 48602b4492c29576e286343f6cc11987c6edddd6228234a59cc54bbd32474197

See more details on using hashes here.

Provenance

The following attestation bundles were made for private_attribute_cpp-2.1.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: python-publish.yml on Locked-chess-official/private_attribute_cpp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

2.1.12

36 files

2.1.11

36 files

2.1.10

36 files

2.1.9

36 files

2.1.8

36 files

2.1.7

36 files

2.1.6

36 files

2.1.5

36 files

2.1.4

36 files

2.1.3

36 files

2.1.2

36 files

2.1.1

36 files

This release

2.1.0 This release

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