Skip to main content

UNaIVERSE: A Collectionless AI Project. The new web of humans & AI Agents, built on privacy, control, and reduced energy consumption.

Project description

Welcome to UNaIVERSE ~ https://unaiverse.io

UNaIVERSE Logo

Welcome to a new "UN(a)IVERSE," where humans and artificial agents coexist, interact, learn from each other, grow together, in a privacy and low-energy oriented reality.


UNaIVERSE is a project framed in the context of Collectionless AI, our perspective on Artificial Intelligence rooted in privacy, low energy consumption, and, more importantly, a decentralized model.

UN(a)IVERSE is a peer-to-peer network, aiming to become the new incarnation of the Web, combining (in the long run) the principles of Social Networks and AI under a privacy lens—a perspective that is crucial given how the Web, especially Social Networks, and AI are used today by both businesses and individual users.


🚀 Features

Check our presentation, starting from Collectionless AI and ending up in UNaIVERSE and its features.

UNaIVERSE is a peer-to-peer network where each node is either a world or an agent. What can you do?

  • You can create your own agents, based on PyTorch modules, and, in function of their capabilities, they are ready to join the existing worlds and interact with others. Feel free to join a world, stay there for a while, leave it and join another one! They can also just showcase your technology, hence not join any worlds, becoming what we call lone wolves.
  • You can create your own worlds as well. Different worlds are about different topics, tasks, whatever (think about a school, a shop, a chat room, an industrial plant, ...), and you don't have to write any code to let your agent participate in a world! It is the world designer that defines the expected roles and corresponding agent behaviors (special State Machines): join a world, get a role, and you are ready to behave coherently with your role!
  • In UNaIVERSE, you, as human, are an agent as the other ones. The browser is your interface to UNaIVERSE, and you are already set up! No need to install anything, just jump into the UNaIVERSE portal, login, and you are a citizen of UNaIVERSE.

Remarks:

  • Are you a researcher? This is perfect to study models that learn over time (Lifelong/Continual Learning), and social dynamics of different categories of models! Feel free to propose novel ideas to exploit UNaIVERSE in your research!
  • Are you in the industry or, more generally, business oriented? Think about privacy-oriented solutions that we can build over this new UN(a)IVERSE!

⚡ Status

  • Very first version: we think it will always stay alpha/beta/whatever 😎, but right now there are many features we plan to add and several parts to improve, thanks to your feedback!
  • Missing features (work-in-progress): browser-to-browser communication; agents running on mobile; actual social network features (right now it is very preliminary, not really showcasing where we want to go)

📦 Installation

Jump to https://unaiverse.io, create a new account (free!) or log in with an existing one. If you did not already do it, click on the top-right icon with "a person" on it:

UNaIVERSE Logo

Then click on "Generate a Token":

UNaIVERSE Logo

COPY THE TOKEN, you won't be able to see it twice! Now, let's focus on Python:

pip install unaiverse

That's it. Of course, if you want to dive into details, you find the source code here in this repo.


🛠 Mini Tutorial

The simplest usage you can think of is the one which does not exploit the real features of UNaIVERSE, but it is so simple that is a good way to put you in touch with UNaIVERSE itself.

You can showcase your PyTorch networks (actually, it can be every kind of model son of the PyTorch torch.nn.Module class) as follows. Let's focus on ResNet for simplicity.

Alright, let's discuss the code in the assets/tutorial folder of this repo, composed of numbered scripts.

Step A1. Do you know how to set up a network in PyTorch?

Let us set up a ResNet50 in the most basic PyTorch manner. The code is composed of a generator of tensors interpreted as pictures (actually, an ugly tensor with randomly colored pixels) and a pretrained resnet classifier which classifies the pictures generating a probability distribution over 1,000 classes. Try to run script 1 from the assets/tutorial folder. We report it here, carefully read the comments!

import torch
import torchvision

# Downloading PyTorch module (ResNet)
net = torchvision.models.resnet50(weights="IMAGENET1K_V1").eval()

# Generating a random image (don't care about it, it is just a toy example,
# think it is a nice image!)
inp = torch.rand((1, 3, 224, 224), dtype=torch.float32)

# Inference: expects as input a tensor of type torch.float32, custom width and
# height, but 3 channels and batch dimension must be there; the output is a
# tensor with shape (1, 1000), i.e., a tensor in which batch dimension is
# present and then 1000 elements.
out = net(inp)

# Print shapes
print(f"Input shape: {tuple(inp.shape)}, dtype: {inp.dtype}")
print(f"Output shape: {tuple(out.shape)}, dtype: {out.dtype}")

Step A2. Let's create UNaIVERSE agents!

We are going to create two agents, independently running and possibly located in different places/machines.

  • One is based on the resnet classifier, waiting to be asked (by some other agents) for a prediction about a given image.
  • The other is the generator of tensors, ready to generate a tensor (representation of a picture) and ask another agent to classify it.

Here is the resnet classifier agent, running forever and waiting for somebody to ask for a prediction, taken from script 2 in the assets/tutorial folder:

import torch
import torchvision
from unaiverse.agent import Agent
from unaiverse.dataprops import Data4Proc
from unaiverse.networking.node.node import Node

# Downloading PyTorch module (ResNet)
net = torchvision.models.resnet50(weights="IMAGENET1K_V1").eval()

# Agent: we pass the network as "processor".
# Check the input and output properties of the processor, they are coherent with the
# input and output shapes of ResNet; here "None" means "whatever, but this axis must be
# there!". By default, this agent will act as a serving "lone wolf", serving whoever asks for
# a prediction.
agent = Agent(proc=net,
              proc_inputs=[Data4Proc(data_type="tensor", tensor_shape=(None, 3, None, None),
                                     tensor_dtype=torch.float32)],
              proc_outputs=[Data4Proc(data_type="tensor", tensor_shape=(None, 1000),
                                      tensor_dtype=torch.float32)])

# Node hosting agent: a node will be created in your account with this name, if not
# existing; it is "hidden" meaning that only you can see it in UNaIVERSE (since it is
# just a test!); the clock speed can be tuned accordingly to your needed and computing
# power.
node = Node(node_name="Test0", hosted=agent, hidden=True, clock_delta=1. / 30.)

# Running node (forever)
node.run()

Run it. Now, here is the agent capable of generating tensors (let's say images), which is asked to get in touch with the resnet agent, taken from script 3 in the assets/tutorial folder:

import torch
from unaiverse.agent import Agent
from unaiverse.dataprops import Data4Proc
from unaiverse.networking.node.node import Node


# Custom generator network: a module that simpy generates an image with
# "random" pixel intensities; we will use this as processor of our new agent.
class Net(torch.nn.Module):
    def __init__(self):
        super().__init__()

    # The input will be ignored, and a default None value is needed
    def forward(self, x: torch.Tensor | None = None):
        inp = torch.rand((1, 3, 224, 224), dtype=torch.float32)
        print(f"Generated data shape: {tuple(inp.shape)}, dtype: {inp.dtype}")
        return inp


# Agent: we use the generator as processor.
# This agent will still be a "lone wolf", but we will force a different behavior, that is
# the one of "asking" another agent to handle the generated data, getting back a response.
agent = Agent(proc=Net(),
              proc_inputs=[Data4Proc(data_type="all")],  # Able to get every type of data (since it won't use it :))
              proc_outputs=[Data4Proc(data_type="tensor", tensor_shape=(1, 3, 224, 224),
                                      tensor_dtype="torch.float32")],  # These are the properties of generator output
              behav_lone_wolf="ask")  # Setting this behavior: "ask the partner to respond to your generated data"

# Node hosting agent
node = Node(node_name="Test1", hosted=agent, hidden=True, clock_delta=1. / 30.)

# Telling this agent to connect to the ResNet one
node.ask_to_get_in_touch(node_name="Test0")

# Running node for 10 seconds
node.run(max_time=10.0)

# Printing the last received data from the ResNet agent
out = agent.get_last_streamed_data('Test0')[0]
print(f"Received data shape: {tuple(out.shape)}, dtype: {out.dtype}")

Run this script as well, and what will happen is that the generator will send its picture through the peer-to-peer network, reaching the resnet agent, and getting back a prediction.

Step B1. Embellishment

We can upgrade the resnet agent to take real-world images as input, instead of random tensors, and to output class names (text) instead of a probability distribution. All we need to do is to re-define the properties of the inputs/outputs of the agent processor, and add transformations. Dive into script 4:

import torchvision
import urllib.request
from unaiverse.agent import Agent
from unaiverse.dataprops import Data4Proc
from unaiverse.networking.node.node import Node

# Downloading PyTorch module (ResNet)
net = torchvision.models.resnet50(weights="IMAGENET1K_V1").eval()

# Getting input transforms from PyTorch model
transforms = torchvision.transforms.Compose([
    torchvision.transforms.Lambda(lambda x: x.convert("RGB")),
    torchvision.models.ResNet50_Weights.IMAGENET1K_V1.transforms(),
    torchvision.transforms.Lambda(lambda x: x.unsqueeze(0))
])

# Getting output class names
with urllib.request.urlopen("https://raw.githubusercontent.com/pytorch/hub/master/imagenet_classes.txt") as f:
    c_names = [line.strip().decode('utf-8') for line in f.readlines()]

# Agent: we change the data type, to be able to handle stream of images (instead of tensors).
# We can customize the transformations from the streamed format to the processor inference
# format (every callable function is fine!). Similarly, we can customize the way we go from
# the actual output of the processor and what will be streamed (here we go from class
# probabilities to winning class name).
agent = Agent(proc=net,
              proc_inputs=[Data4Proc(data_type="img", stream_to_proc_transforms=transforms)],
              proc_outputs=[Data4Proc(data_type="text", proc_to_stream_transforms=lambda p: c_names[p.argmax(1)[0]])])

# Node hosting agent
node = Node(node_name="Test0", hosted=agent, hidden=True, clock_delta=1. / 30.)

# Running node
node.run()

Now let us promote the generator to an agent that downloads and offers a picture of a cat and expects to get back a text description of it (the class name in this case - this is script 5):

import torch
import urllib.request
from PIL import Image
from io import BytesIO
from unaiverse.agent import Agent
from unaiverse.dataprops import Data4Proc
from unaiverse.networking.node.node import Node


# Image offering network: a module that simpy downloads and offers an image as its output
class Net(torch.nn.Module):
    def __init__(self):
        super().__init__()

    def forward(self, x: torch.Tensor | None = None):
        with urllib.request.urlopen("https://cataas.com/cat") as response:
            inp = Image.open(BytesIO(response.read()))
            inp.show()  # Let's see the pic (watch out: random pic with a cat somewhere)
            print(f"Downloaded image shape {inp.size}, type: {type(inp)}, expected-content: cat")
        return inp


# Agent
agent = Agent(proc=Net(),
              proc_inputs=[Data4Proc(data_type="all")],
              proc_outputs=[Data4Proc(data_type="img")],  # A PIL image is being "generated" here
              behav_lone_wolf="ask")

# Node hosting agent
node = Node(node_name="Test1", hosted=agent, hidden=True, clock_delta=1. / 30.)

# Telling this agent to connect to the ResNet one
node.ask_to_get_in_touch(node_name="Test0")

# Running node for 10 seconds
node.run(max_time=10.0)

# Printing the last received data from the ResNet agent
out = agent.get_last_streamed_data('ResNetAgent')[0]
print(f"Received response: {out}")  # Now we expect a textual response
print("")
print(f"Notice: instead of using this agent, you can also: search for the ResNet node (ResNetAgent) "
      f"in the UNaIVERSE portal, connect to it using our in-browser agent, select a picture from "
      f"your disk, send it to the agent, get back the text response!")

Step B2. Connect to your ResNet agent by means of a browser running agent!

Instead of using the artificial generator agent, you can become the generator agent! Search for the ResNet node (ResNetAgent) in the UNaIVERSE portal, connect to it using the in-browser agent, select a picture from your disk, send it to the agent, get back the text response!

Step C. Unleash UNaIVERSE!

What you did so far is just to showcase your model. UNaIVERSE is composed of several worlds that you can create and customize. Your agent can enter one world at a time, stay there, leave it, enter another, and so on. Agents will behave according to what the world indicates, and you don't have to write any extra code to act in worlds you have never been into!

Alright, there are so many things to say, but examples are always a good thing! We prepared a repository with examples of many worlds and different lone wolves, go there in order to continue your journey into UNaIVERSE!

THE TUTORIAL CONTINUES: https://github.com/collectionlessai/unaiverse-examples

See you in our UNaIVERSE!


📄 License

This project is licensed under the Polyform Strict License 1.0.0. Commercial licenses can be provided. See the LICENSE file for details (research, etc.).

This project includes third-party libraries. See THIRD_PARTY_LICENSES.md for details.


📚 Documentation

You can find an API reference in file docs.html, that you can visualize here:


🤝 Contributing

Contributions are welcome!

Please contact us in order to suggest changes, report bugs, and suggest ideas for novel applications based on UNaIVERSE!


👨‍💻 Main Authors


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

unaiverse-0.1.7.tar.gz (254.1 kB view details)

Uploaded Source

Built Distributions

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

unaiverse-0.1.7-cp314-cp314t-win_amd64.whl (10.8 MB view details)

Uploaded CPython 3.14tWindows x86-64

unaiverse-0.1.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (10.3 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

unaiverse-0.1.7-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (11.1 MB view details)

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

unaiverse-0.1.7-cp314-cp314t-macosx_11_0_arm64.whl (9.9 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

unaiverse-0.1.7-cp314-cp314t-macosx_10_15_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.14tmacOS 10.15+ x86-64

unaiverse-0.1.7-cp314-cp314-win_amd64.whl (10.8 MB view details)

Uploaded CPython 3.14Windows x86-64

unaiverse-0.1.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (10.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

unaiverse-0.1.7-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (11.1 MB view details)

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

unaiverse-0.1.7-cp314-cp314-macosx_11_0_arm64.whl (9.9 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

unaiverse-0.1.7-cp314-cp314-macosx_10_15_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

unaiverse-0.1.7-cp313-cp313-win_amd64.whl (10.6 MB view details)

Uploaded CPython 3.13Windows x86-64

unaiverse-0.1.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (10.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

unaiverse-0.1.7-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (11.1 MB view details)

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

unaiverse-0.1.7-cp313-cp313-macosx_11_0_arm64.whl (9.9 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

unaiverse-0.1.7-cp313-cp313-macosx_10_13_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

unaiverse-0.1.7-cp312-cp312-win_amd64.whl (10.6 MB view details)

Uploaded CPython 3.12Windows x86-64

unaiverse-0.1.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (10.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

unaiverse-0.1.7-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (11.1 MB view details)

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

unaiverse-0.1.7-cp312-cp312-macosx_11_0_arm64.whl (9.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

unaiverse-0.1.7-cp312-cp312-macosx_10_13_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

unaiverse-0.1.7-cp311-cp311-win_amd64.whl (10.6 MB view details)

Uploaded CPython 3.11Windows x86-64

unaiverse-0.1.7-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (10.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

unaiverse-0.1.7-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (11.1 MB view details)

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

unaiverse-0.1.7-cp311-cp311-macosx_11_0_arm64.whl (9.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

unaiverse-0.1.7-cp311-cp311-macosx_10_9_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

unaiverse-0.1.7-cp310-cp310-win_amd64.whl (10.6 MB view details)

Uploaded CPython 3.10Windows x86-64

unaiverse-0.1.7-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (10.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

unaiverse-0.1.7-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (11.1 MB view details)

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

unaiverse-0.1.7-cp310-cp310-macosx_11_0_arm64.whl (9.9 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

unaiverse-0.1.7-cp310-cp310-macosx_10_9_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

Details for the file unaiverse-0.1.7.tar.gz.

File metadata

  • Download URL: unaiverse-0.1.7.tar.gz
  • Upload date:
  • Size: 254.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for unaiverse-0.1.7.tar.gz
Algorithm Hash digest
SHA256 733e34c824f1b702c78a163f6cfcc485623862bb7d894ea8f9a887af25d014a0
MD5 00e99ff276aad9af1a2eee6e3916d2dd
BLAKE2b-256 c4b651165617bcbfbed25c6174d8c8dcc1e5aabdb6decf1eb39d9929ddc189bf

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7.tar.gz:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: unaiverse-0.1.7-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 10.8 MB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for unaiverse-0.1.7-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 aad249523570fb95fa1484c612b1d1d08ada114be1d06a6aecf3f8c62ec59b82
MD5 100e3c38109b052a23d7b54f37fdcd0a
BLAKE2b-256 b5d75580dcc24e6d81e911b2e1910625dc9cb78ee06505920a2b8a068d693e3a

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp314-cp314t-win_amd64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e1b46e14a1fcf061489369b832f5bd051472456e7839414488b498de6317084f
MD5 f5808da02943ce4f4670e5b8024c68b1
BLAKE2b-256 e752b148da0cd8e402bda20cfdba0e94d3486bf97d1c586161405b21f02e4adf

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.7-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 e1a078f36243748411fd4d86fab0f53c7cae71d542d7231532a1b4f9237a37f8
MD5 b65a029e62d3ff5736875da5fe0980a4
BLAKE2b-256 ec45799521ac89be2ef0c495c13279c5851b28be4338e5f3cd934114a2854ec4

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.7-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 861d0cbe7d9555cbf2ac91d34bb49320db777437834a119713ac9051d70d4d5f
MD5 1193b94b0fb292faa062b4635ae74fa4
BLAKE2b-256 cda35b2a41b1ffe72d8b3f26b91b2626c69d68665ef5481721416926c1aec621

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp314-cp314t-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.7-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 77a81e995b5c0f424256fa7ac0196641ac3e530cb1f7a4fc3782411ecd0870b9
MD5 5750f84e05ac8f905387c5a65c188e1e
BLAKE2b-256 fd3cf9f66cde3b862cc66abc973dc0e02532014b22bfb9d490c72d9e842b67fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp314-cp314t-macosx_10_15_x86_64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: unaiverse-0.1.7-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 10.8 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for unaiverse-0.1.7-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 4e175af891fef4bb1727216caefd0c041fa2184941d30d89b0024daae47c5d16
MD5 f2a35a51f3511669105badca20acff32
BLAKE2b-256 f71e6c4dd30bf8b6627dec2066b6d76bb54001a78f3a70c5160a43b7a850529e

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp314-cp314-win_amd64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 79f81957e25e53550b757505ca7dc7406104e2582e91f6d2ef2634377889eb97
MD5 1446ab067b3d003cfa3d7653725c401f
BLAKE2b-256 b522dcc09b10c7042b0fd2a6b6eeb4f4a12a7656602f0defbf690cd32de4c2b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.7-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 7b94fd038d27705e5177d07501e82b4a12927c477cfc8639be99c5ca652907e3
MD5 a081233ccd3d5131407b4244a2ea47bb
BLAKE2b-256 beee5d826c2e4c5f0c80d26dc6223e18c2a75450e8e28ee7c47f403b773c6552

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.7-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4823f704792fd65cbccf9725c8d7b846bbcda9867397ef1088af58e55c068017
MD5 5c3593fad875d07f578462b5a0676221
BLAKE2b-256 d29070f8f5f19bde22314b757265895d2fb699ed197ad8ed0a7366b90e5d5da4

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.7-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 7a2d10bde837caec7f00dd4df8a1baad9d259ea3aabf98b168f9bb90ef822813
MD5 4795e14e118d8620d22f2a27440a1570
BLAKE2b-256 16af09f53d6adcd87d33bcff8eedcb4e839610e038beef66de9f0c7bc7f1cbf6

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp314-cp314-macosx_10_15_x86_64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: unaiverse-0.1.7-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 10.6 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for unaiverse-0.1.7-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f082a1c6154e1216c6f94ebb25be8fc0c36590e2de7d38478eeda562a6c2910c
MD5 3871da08f7aab7d601e474335102e329
BLAKE2b-256 62ba05f427bef6cee94c64a672f6dda16acb287b4ae7edfbad4c94b70dea784b

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp313-cp313-win_amd64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a7e1bfc876e2f05c30920238aea5a05bf03f9dad471c605274d2b6299ed739c2
MD5 f0c00de0cebd1c944777f31aeea3ea37
BLAKE2b-256 6988a5bca0af1f2cf438679f2242439672a36aac641650d4c21e49c414a4e022

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.7-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 dfcccd24b1599255e855464ed81ab5d4393231167bf00343d98be4c21e16ec25
MD5 7bf9c8e83fcb9e10758ca3e550507e8e
BLAKE2b-256 5345fd35bc6f4155d1ed602ad980f8f8e2fa23de2709e5c531f6afbc387bd3ec

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.7-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8e87df734363b5721d72aada998de779bf0f6bbd95db2efd4c22c96b5bf875ac
MD5 01f188f97b12449013c45b49929010b2
BLAKE2b-256 d22bd563ffa5731f9b85131ff798db72c4d230b2c3f165db41ac256fbdde92ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.7-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 f70f6407456c611bb4c69e249c5174b01b5f9db2ce13fbfe83d69cc4e9319ce2
MD5 6b32adecfb2c56e2edef149d09dc5414
BLAKE2b-256 a4fe8491433b85a582ab245cd3013e85e376df4850805cfe9cdbb26559299ddb

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: unaiverse-0.1.7-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 10.6 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for unaiverse-0.1.7-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 95b128d9ad37eddf58744a6931ce5a6658efe24b2bc11afc101356a93be9780f
MD5 8ce4fdaa82ca181afb3d2dc824cee88f
BLAKE2b-256 5b9baac225f3a80d5a687265cf1fcc8528273acccece26756d12031bdcdfdb98

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp312-cp312-win_amd64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2b748951b7141eb5e3eccd3b723a7e61578d1daaeaa6520ac5776826a28e3724
MD5 d4ee818a51b74733fdc4684890cee09f
BLAKE2b-256 93e346ec59b8dbc9a8e809620d7956dda145352a293ff83ca843ea1d8c8846cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.7-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 97b06f76a51ddf31261c8ce01a2b34c922f2c6184a2b16e2970432f3393a2185
MD5 217565d667014a5aed50ecef4c11dc5d
BLAKE2b-256 b73987cb32184192d9da70645a5a156e7a87e3af69898590b6b6f7a1534d291d

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.7-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dbad5994ef3d515cd9bda12731246d8730e3edf5a780085ded19aff3747438cb
MD5 6b04205ca1dceee3625ecc31fef8ead1
BLAKE2b-256 01d05a8bff5468ba2bbbbb549868fa8d89e1032c7ca0c5f8fc28904b34babc76

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.7-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 79446226fb5f27138dbefb1e6e3b2ca52500a0e6c2c5ef2b8dae55a868ab37e7
MD5 924421fb1412985b6544e7e25b52bb07
BLAKE2b-256 dc8dd8463710c650f59c08535077e5a840fc102ec3ebead867bdbc1a8f0b0eac

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: unaiverse-0.1.7-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 10.6 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for unaiverse-0.1.7-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 17e3150b2feb4803174d312c77c21a8c07a4d38be51918a9cfa298ebe9926d86
MD5 c13e3fd8507c190710ac764a2d5b14ff
BLAKE2b-256 49b36b3b2ca561559f40334bd895cab7469130564fba2386aa1a7872cc8bedfb

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp311-cp311-win_amd64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.7-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7290121bd8c5453f7fd7d4d7792074fb423ae924bf556d2ce845f6da725d2109
MD5 f40577bfc6d0ba4c5fc9fd923e0320e5
BLAKE2b-256 b01cc4eb1c3ec5a242b927ac8cc45556385316f0494c44370a825713c5cee34f

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.7-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 d99695ddc3a2a865b4896c0b90839b96e68afd43f1913437dc22ab8675e3fe86
MD5 1e0c5bb4a05af8c9abb6316407368bcd
BLAKE2b-256 c7c3d4b99114e863c71bd1aa09f31a82cf9f4709df94c03e4881b9b322e6ff35

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.7-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ec4c23def1ff7a90fe2b6a7dd23588b75bc8041cf5227fe8c28655dd49dc2abb
MD5 66e694b536700a8f88eca17cf79d05ef
BLAKE2b-256 8e6cbf16c886cfffd8ac0ac898ed115f03ae03c966472c66638e7f301b1e1323

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.7-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 18ba5ea57756a21e7d0ad7c334ff4bec5f6ee14c7322781eed4c66f01e8812dc
MD5 8273a223181e2bb2835be9b2eac29661
BLAKE2b-256 0c4b5effef496d196e9f14072607aed2dd6c5ec33489d869ec4be44eedfaf4a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: unaiverse-0.1.7-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 10.6 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for unaiverse-0.1.7-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c69875a40513263bd0c2774bd71829f07e5d331cb9d99d3be573f95c020fb177
MD5 cfacd848d1931590464c8a308c9d138e
BLAKE2b-256 52877df5f7d031ee733fc2e065d72e66cbf8cb32d291dbff5817760c6264fc52

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp310-cp310-win_amd64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.7-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ac93d1687b4d07a3814b6d8f8ea5ead0070b5ff3819a87e890313ea2da04abf8
MD5 eecebe3b99610603b08512dd61907d75
BLAKE2b-256 28f85a435e49744257a1dff37726e2e97c96fed50720349807594e44bb1a5927

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.7-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 b52308e1f6bd3ae68109cdc7602dfd1c5f2237faad187d3fa80d8eecaa201e08
MD5 7d54f21077dda7188d307d037d1340d0
BLAKE2b-256 b891d8f7f95048bce6b913d8d8bf0dab912930585bed16a65766a582e001454d

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.7-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9fa32e922d93c508f4089c6d4863cbb7d5596767bb44a03710bfea8f82bcbfd3
MD5 f279616ff58bd251d1d1a14d84d12f3b
BLAKE2b-256 9c7eaf968c83c6fd480515e57c63a2d241809fbef40dace612526b3faaa8842f

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

File details

Details for the file unaiverse-0.1.7-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.7-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7ebe72e382a0622fb5faaa7f4076f509236382a36063a8566e2a5e95a9a77a98
MD5 be0db38d3e456e1c1f9856e05e545ba4
BLAKE2b-256 7c13c75cef42b3ec9e18b87765c0c2e444cb83386d7c6901b7dfb7993ded1c0c

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.7-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: release.yml on collectionlessai/unaiverse-src

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

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page