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.8.tar.gz (259.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.8-cp314-cp314t-win_amd64.whl (10.8 MB view details)

Uploaded CPython 3.14tWindows x86-64

unaiverse-0.1.8-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.8-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.8-cp314-cp314t-macosx_11_0_arm64.whl (9.9 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

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

Uploaded CPython 3.14tmacOS 10.15+ x86-64

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

Uploaded CPython 3.14Windows x86-64

unaiverse-0.1.8-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.8-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.8-cp314-cp314-macosx_11_0_arm64.whl (9.9 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.14macOS 10.15+ x86-64

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

Uploaded CPython 3.13Windows x86-64

unaiverse-0.1.8-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.8-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.8-cp313-cp313-macosx_11_0_arm64.whl (9.9 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.13+ x86-64

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

Uploaded CPython 3.12Windows x86-64

unaiverse-0.1.8-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.8-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.8-cp312-cp312-macosx_11_0_arm64.whl (9.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.13+ x86-64

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

Uploaded CPython 3.11Windows x86-64

unaiverse-0.1.8-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.8-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.8-cp311-cp311-macosx_11_0_arm64.whl (9.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.9+ x86-64

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

Uploaded CPython 3.10Windows x86-64

unaiverse-0.1.8-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.8-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.8-cp310-cp310-macosx_11_0_arm64.whl (9.9 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

unaiverse-0.1.8-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.8.tar.gz.

File metadata

  • Download URL: unaiverse-0.1.8.tar.gz
  • Upload date:
  • Size: 259.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.8.tar.gz
Algorithm Hash digest
SHA256 2a74b8d72401d67de1e0d2baa7c452ed6b880a3b95b6ce62064464bcd9e0d88e
MD5 900e280e0d9f037445c2a146256f3de8
BLAKE2b-256 0f2494e08860ba3794428aa099461863525cdbd77ee1a309ddf7c9eb2f737e65

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8.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.8-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: unaiverse-0.1.8-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.8-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 1b9f2e1780bb29ae8f5f7fb63c2d504b7975d57541ef8b6e1792f8214ddbfda7
MD5 5a4fa89bad39768d9386dfb2ea8a7a8a
BLAKE2b-256 c747fc487dc51ef4c787913d351fe82da93445c61c964e7eb4dd2a3e115af0d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.8-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2d7852357baad923ea9c797c61c41afa7e68d103844e522a16ab242982e842fb
MD5 b0e4032ed264f7c0017c33fd73f899ed
BLAKE2b-256 bba116519cc8c7013311842ed99f256320b4ba4064d777da93c32b4543a5a734

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-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.8-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 221d1dd8a02fe91dbe080b4e298f748cfd08ba7f993339d2b6b6ec540805d876
MD5 1268df8a929e970f7954fb6ae7ad5fcc
BLAKE2b-256 68779d6caae9fc57cf5927fea61958d6364f8ff56d0b4adbfde46154e38bf83a

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.8-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 14143f884cc99ec8fabe7acd8df7e9a789dbc2c6a2ed38cd297ac1e2925583f0
MD5 ade63883bdbde96d364b3d5cc9eaaa78
BLAKE2b-256 399989ff1db26961bcb5a9a6ba6562792923ae3564a654ea8d4a6d3ecc1a0fa2

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-cp314-cp314t-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.8-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 4eeaf75d6e846fc6588c1d55534cb9e5fa2c8050702cf2d30a79a2e8c46c4ead
MD5 5d0d1aa83958aee26a1bd4115e708470
BLAKE2b-256 9a709b9a2eb9f0fbfb5699c673d519562fcfc33c08ca42d84dac77209ea4e5ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: unaiverse-0.1.8-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.8-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 73402065b5484317aa79b214ed418dead34bb682b76c9abaf835f60a25900626
MD5 4ffe82b6318a9de219a0006f0b471421
BLAKE2b-256 6b2a5d198132f8a93d5657fa2e5c5cab13c354cac22866a4cffbbed70f465d0d

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.8-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 94f44c6e04ab6e1812d68f1659ea01d5ab2a3b8747813b204337fd016ed1d2d8
MD5 7fbd18c7761fb69007665e4c5bda4777
BLAKE2b-256 2536d45d2bbec47de1c961d85047c8673087912d130894b156321c5ba1b03f1c

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-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.8-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 ce53083201c528399781d764ffbeca5abaff1c7c65cf16612c7ff3f341d75263
MD5 30d9cb81dab1f4f683d6d9ad4adbed6c
BLAKE2b-256 7ea1ec21a22f296854689fb2c617d6fc6799d723aa6ebc5c581dd73c597b1ec0

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.8-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 549351ba3737d9af09b5fd9d124327d8aeed9586c7731733253aa29ab7251128
MD5 2d271b10818862ee41e25f842d073843
BLAKE2b-256 4dcf0c7a2b66f26b42b8bb7f72a7bf1fe7265568877011fe51e8dfa5b8fecc29

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.8-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 a8c1fc21b64768266089975e16b37cfefcc961d9af41ba386559c8d6d44c2990
MD5 9456256663f014909c4487e51ca94069
BLAKE2b-256 4fe8bbf4f4637427a2bdd209c1bfc4cd18aa4e66a4b1ff94765ada849abb32ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: unaiverse-0.1.8-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.8-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 d453a231079990619de268a2c6ce82fb2e30a16624333ffed9535273d81f6c73
MD5 c8d730ec5c78310651463db7ca152700
BLAKE2b-256 8df679531ddac306aa9adea1333e0cac4dfe5db46ca04d46465d36f39508598f

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.8-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 96eef2c44cb923a7925206e5a6e87eecdbd6a763e8971d460896ae26eb4d9cc1
MD5 2a21f65e1f6255359bb22ceac1d41fc9
BLAKE2b-256 91fd4e601c9a5c214da5974849efcea169e7edfb211c47883718abdc5792c8f5

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-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.8-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 0dc48547ebf3de1d987338f491dffa200b6f5766d16a17c66d268799d649f4d1
MD5 99b7093ed300080312fc1d4c2aad4ec2
BLAKE2b-256 cf29a7362cda980aca6ecb945e15bec74681fe4ed8daee77587939211fda2117

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c2cea483bfbc6f62bcc32754155f2d192626f56089644e898bc94d1a210c9863
MD5 fb08701d7de3de16efc46f7e381a086a
BLAKE2b-256 55dede5fe5ccfa7531e72ebe3fdd1536569d3276e665130d9ce53e6026d0c2c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.8-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 f66b89f76c1c5f909f2f9239bf6aef84e2e6166b64e1943c4e2b3cd84f333edb
MD5 c5cd158fe423948d571b16d937c4e337
BLAKE2b-256 d754ee1df1315e89faa2bc853ed21b6b1b3e572c4b4dba806cf90f23c7b4c9a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: unaiverse-0.1.8-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.8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 629ffc18e447289ac80e42e6888305aed5a1aa5b2429b186aa17fcb43ac6324c
MD5 9f3c2f6f84c4bf02024733759b26058c
BLAKE2b-256 12fce749668aa4a4253806dc72302fdcef38f5d0a6e15ec7c42765509c470001

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.8-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d7e980ebb67ff6bf89efcfec1f142cd42165add487a29b6d49908088e7b2ef12
MD5 b1917a0280ebc36eda1d88188783b4de
BLAKE2b-256 3d4207efa9e987bca82f713954c0a61e21869c28574dbe63f3c3863af8cd40a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-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.8-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 dfee97c8d11c4bc0cacb9b52ce9da66b39f4d39094fc0413932be404765cfea2
MD5 2b68b558878c5adf5103c75d98476d18
BLAKE2b-256 d169da439c606b31a5ef36b6dd2e000d01b5cc654c081f82b60e87d01a1113b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 68c6571427771e754897a7e8caf137ee73e5ddabb3b6e0f3b2f0df648a7ee329
MD5 0a9802cbb101b652d3ff7d911aeb3a4b
BLAKE2b-256 fcc2df65b93fddc48cd7191cee536a75a0c06b22f24ac3977b4b7d20f7345c4a

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.8-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 b1c67bd4b7517a92dfc7268c0ae99b7c0a1566b7058da79b8de3c191c00070ad
MD5 a2fbe6639fc95f1250d92bbfac042ec3
BLAKE2b-256 6166273b257c437d5621f1fa144584332431aaa93ac205e4d7cd1d0f9b2095e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: unaiverse-0.1.8-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.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 45b52e28680725c504bc6b87cf6a5e9471cfea4fd4940377beb32259aec09d84
MD5 7e49f22172fd55e6453b405b46dcd5e3
BLAKE2b-256 925b793f167a173afc5fc7dc2c1f28130c13e3b23b7b29523f7acb985d2af07b

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.8-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 be12e28df4632c250efdae6ea775acda74e84805374f13f6da6b01f3104c4061
MD5 b4b8a13e1b6fdfda7713a870fc66612c
BLAKE2b-256 4d8eb40e170993a6583c442a397be10119baacca026ea95d286dc0714825ff2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-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.8-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 1d02b7df4f69da1a51cd7f26502459cae6316775b3a18518de4ee2e0b5afc219
MD5 705d9b4e4b25df8139fdb75dd48f40d3
BLAKE2b-256 45449a8ec1e2fff91da8b60ddf6bcfc5dcc54ff31f2d8930295bec18a16085cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e4031c626c62d4121fa0e593a164d12a132098afa46e2f0e50efcfc41c197bf5
MD5 9dad583f385c4ea2b95fcbee152102b3
BLAKE2b-256 a4be17940cfbf52a193badb25342f13b4841d6e24a3fe48c58f9c265649c1483

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.8-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2aa0084e0238dfc04e00eccf721ae2746894bc588decaf99bd0cfa30a8410d96
MD5 20622804f6927b2b107716ff3377910e
BLAKE2b-256 c6f4613ee6dfcd6a3b98f87f222f09f466f72b26aa80fc8ae2888a25e5392198

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: unaiverse-0.1.8-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.8-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 08ff01cebd1511378b29628903be8718a73f34f0fc081d28fcc31a1d22c9b335
MD5 e2c50794ae0dae0bcf801f2eff1718f1
BLAKE2b-256 fd8ea45c83cc002ec105cb4861b59c0388f015ecc81d4fbbb2efadeef98e430b

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.8-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e16ca1dff42b0df547a5e3af296300560141e615888af8c8ece7386a76b243c0
MD5 5701f3eb01866953b2c7bc7782a4c535
BLAKE2b-256 704e751880a1b20fa16256db416b9e445661347c5ef1a36c7714a3cae43af4b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-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.8-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 24b1b1905bc8452726277d41f1f0d10f685a63085a7861344d8b422dd3689b10
MD5 3a5018c97d902457773c4b6bdeab01b6
BLAKE2b-256 dae9c0c8ddea4a99a0e140c6339f424db54a923132431956453f0d405644be0a

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.8-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2a7f2db327d07dc678d8701a0baf287d6fa705e3d2411607374756423c00d46d
MD5 f8e64420987aaa2127b41e8aba5d3d24
BLAKE2b-256 7c2080519ee3d2b0b2443d03628890e291d82e76636ceb68762e3e99dbc20b45

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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.8-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for unaiverse-0.1.8-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5027729d487fda13df17f707295763890adb3b1a404bc7ae0dad19e65bf000cd
MD5 d8189df869d98e5ac6c5041b5441f549
BLAKE2b-256 05969d98309489b80322366aac73dac2fccf74e5c5362c3f209d1ac1a303233e

See more details on using hashes here.

Provenance

The following attestation bundles were made for unaiverse-0.1.8-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