Usage
Python package bittensor_commit_reveal has one function.
from bittensor_commit_reveal import get_encrypted_commit
Function docstring
The function could be considered like this:
def get_encrypted_commit(
uids: Union[NDArray[np.int64], "torch.LongTensor"],
weights: Union[NDArray[np.float32], "torch.FloatTensor"],
version_key: int,
tempo: int,
current_block: int,
netuid: int,
subnet_reveal_period_epochs: int,
block_time: int = 12
) -> tuple[bytes, int]:
"""Returns encrypted commit and target round for `commit_crv3_weights` extrinsic.
Arguments:
uids: The uids to commit.
weights: The weights associated with the uids.
version_key: The version key to use for committing and revealing. Default is `bittensor.core.settings.version_as_int`.
tempo: Number of blocks in one epoch.
current_block: The current block number in the network.
netuid: The network unique identifier (NetUID) for the subnet.
subnet_reveal_period_epochs: Number of epochs after which the reveal will be performed. Corresponds to the hyperparameter `commit_reveal_weights_interval` of the subnet. In epochs.
block_time: Amount of time in seconds for one block. Defaults to 12 seconds.
Returns:
commit (bytes): Raw bytes of the encrypted, and compressed uids & weights values for setting weights.
target_round (int): Drand round number when weights have to be revealed. Based on Drand Quicknet network.
"""
# function logic
return commit, target_round
To test the function in your terminal:
- Spin up a local subtensor branch which includes CR3
- Create a subnet with netuid 1 (or replace the netuid with the one you create)
mkdir test
cd test
python3 -m venv venv
. venv/bin/activate
pip install maturin bittensor ipython
cd ..
maturin develop
ipython
then copy-past to ipython
import numpy as np
import bittensor_commit_reveal as crv3
from bittensor.utils.weight_utils import convert_weights_and_uids_for_emit
import bittensor as bt
uids = [1, 3]
weights = [0.3, 0.7]
version_key = 843000
netuid = 1
subtensor = bt.Subtensor("local")
subnet_reveal_period_epochs = subtensor.get_subnet_reveal_period_epochs(
netuid=netuid
)
tempo = subtensor.get_subnet_hyperparameters(netuid).tempo
current_block = subtensor.get_current_block()
if isinstance(uids, list):
uids = np.array(uids, dtype=np.int64)
if isinstance(weights, list):
weights = np.array(weights, dtype=np.float32)
uids, weights = convert_weights_and_uids_for_emit(uids, weights)
print(crv3.get_encrypted_commit(uids, weights, version_key, tempo, current_block, netuid, subnet_reveal_period_epochs))
expected result
(b'\xb9\x96\xe4\xd1\xfd\xabm\x8cc\xeb\xe3W\r\xc7J\xb4\xea\xa9\xd5u}OG~\xae\xcc\x9a@\xdf\xee\x16\xa9\x0c\x8d7\xd6\xea_c\xc2<\xcb\xa6\xbe^K\x97|\x16\xc6|;\xb5Z\x97\xc9\xb4\x8em\xf1hv\x16\xcf\xea\x1e7\xbe-Z\xe7e\x1f$\n\xf8\x08\xcb\x18.\x94V\xa3\xd7\xcd\xc9\x04F::\t)Z\xc6\xbey \x00\x00\x00\x00\x00\x00\x00\xaaN\xe8\xe97\x8f\x99\xbb"\xdf\xad\xf6\\#%\xca:\xc2\xce\xf9\x96\x9d\x8f\x9d\xa2\xad\xfd\xc73j\x16\xda \x00\x00\x00\x00\x00\x00\x00\x84*\xb0\rw\xad\xdc\x02o\xf7i)\xbb^\x99e\xe2\\\xee\x02NR+-Q\xcd \xf7\x02\x83\xffV>\x00\x00\x00\x00\x00\x00\x00"\x00\x00\x00\x00\x00\x00\x00*\x13wXb\x93\xc5"F\x17F\x05\xcd\x15\xb0=\xe2d\xfco3\x16\xfd\xe9\xc6\xbc\xd1\xb3Y\x97\xf9\xb9!\x01\x0c\x00\x00\x00\x00\x00\x00\x00X\xa2\x8c\x18Wkq\xe5\xe6\x1c2\x86\x08\x00\x00\x00\x00\x00\x00\x00AES_GCM_', 13300875)
To test this in a local subnet:
- Spin up a local node based on the subtensor branch
spiigot/add-pallet-drandusing command./scripts/localnet.sh False - Create a subnet
- Change the following hyperparameters:
commit_reveal_weights_enabled->Truetempo-> 10 (keep in mind that you need to provide this astempoargument toget_encrypted_commitfunction. Use polkadot website for this action.)weights_rate_limit-> 0 (Reduces the limit when you can set weights.)
- Register 1 or more wallets to the subnet
- Create and activate python virtual environment (
python3 -m venv venv && . venv/bin/activate) - Checkout bittensor
feat/roman/cr-v-3branch. - Install bittensor
pip install -e . - Cd to directory you cloned
https://github.com/opentensor/bittensor-commit-reveal/tree/staging(FFI for CRv3). - Install the
maturinpython package and build/installbittensor-commit-revealpackage to your env using the commandpip install maturin && maturin develop - Run the following script within your python environment:
import requests
import time
from bittensor import Subtensor, logging, Wallet
DRAND_API_BASE_URL_Q = "https://api.drand.sh/52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"
logging.set_info()
def get_drand_info(uri):
"""Fetch Drand network information."""
url = f"{uri}/info"
response = requests.get(url)
response.raise_for_status()
return response.json()
def get_current_round(info):
"""Calculate the current round based on genesis_time and period."""
current_time = int(time.time())
genesis_time = info["genesis_time"]
period = info["period"]
return (current_time - genesis_time) // period + 1
def main():
sub = Subtensor("local")
uids = [0]
weights = [0.7]
wallet = Wallet() # corresponds the subnet owner wallet
result, message = sub.set_weights(
wallet=wallet,
netuid=1,
uids=uids,
weights=weights,
wait_for_inclusion=True,
wait_for_finalization=True,
)
logging.info(f">>> Success, [blue]{result}[/blue], message: [magenta]{message}[/magenta]")
reveal_round = int(message.split(":")[-1])
# Fetch Drand network info
for uri in [DRAND_API_BASE_URL_Q]:
print(f"Fetching info from {uri}...")
info = get_drand_info(uri)
print("Info:", info)
while True:
time.sleep(info["period"])
current_round = get_current_round(info)
logging.console.info(f"Current round: [yellow]{current_round}[/yellow]")
if current_round == reveal_round:
logging.console.warning(f">>> It's time to reveal the target round: [blue]{reveal_round}[/blue]")
break
if __name__ == "__main__":
main()
-
Wait until your target_round comes.
-
Check your weights with the following code:
import bittensor as bt
sub = bt.Subtensor(network="local")
netuid = 1 # your created subnet's netuid
print(sub.weights(netuid=netuid))
- You can now see the same weights which you committed earlier
Release files for bittensor-commit-reveal 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| bittensor_commit_reveal-0.4.0.tar.gz | 38.8 kB | Details |
Built distributions (wheels)
Total release size: 52.9 MB
Release files / bittensor_commit_reveal-0.4.0.tar.gz
| Download URL | bittensor_commit_reveal-0.4.0.tar.gz |
|---|---|
| Size | 38.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
583aa4311b2db9bed293a830f02762e187fba393ceeb0bb7306bb8fddfba1614
|
|
BLAKE2b-256 checksum How to use checksums |
cd57e7d5458731413f7d1fa00be9ab4acfb9833c375efb67ac175b4c78254f67
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.8.3
|
Release files / bittensor_commit_reveal-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | bittensor_commit_reveal-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
275543f6d0e98d36a8f60eb8a8a76a97746f6c0bf83acf4f5a6cf3624b45a0bf
|
|
BLAKE2b-256 checksum How to use checksums |
4d45f1c14d88a2fbc722128b4ddb20e78af64d3a5d173dc67cefc77eb4e66bdb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.8.3
|
Release files / bittensor_commit_reveal-0.4.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | bittensor_commit_reveal-0.4.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-32 |
|
SHA-256 checksum How to use checksums |
672630ac1e2837af3315cbdf1c0b161162df69b69a567603e81a2839816f133c
|
|
BLAKE2b-256 checksum How to use checksums |
717b0bf879b63ef50cfef7b45b4589f3f52a5e63a3090fa2d1d2ca7563a78112
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.8.3
|
Release files / bittensor_commit_reveal-0.4.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | bittensor_commit_reveal-0.4.0-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
c000d2b46c710fd8b7a9760f937a8d0c63683ae253fd8f89f5643943ceea78ef
|
|
BLAKE2b-256 checksum How to use checksums |
617d8f0046a80f7ada28c1547fb9404dca940f15089d815ccd293bb49a31fb4f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.8.3
|
Release files / bittensor_commit_reveal-0.4.0-cp313-cp313-macosx_10_12_x86_64.whl
| Download URL | bittensor_commit_reveal-0.4.0-cp313-cp313-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.13 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
eff8c112b56ac661e278374c1e3ba813658144f08be26ee7cbd7ca3eb58b5a5f
|
|
BLAKE2b-256 checksum How to use checksums |
34fde2e7dd06065fc9bd38bf97b72b76667bfb2ddc8032756ef174db8bb8124f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.8.3
|
Release files / bittensor_commit_reveal-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | bittensor_commit_reveal-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
5cc6cdaf4efd1c612ff2f1391ffbbdf4b0f1f23836fc1cad5fc1fbcc92b1810d
|
|
BLAKE2b-256 checksum How to use checksums |
ab68b63fa04a41eabf0b83a20a38f05322dac2e66c6b176e426db5bebbdeb4b7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.8.3
|
Release files / bittensor_commit_reveal-0.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | bittensor_commit_reveal-0.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-32 |
|
SHA-256 checksum How to use checksums |
0efed917c10bce3fa886535ba38db41e33e1776685db0f63788330dded83706a
|
|
BLAKE2b-256 checksum How to use checksums |
39f3fd40de0bb3b654c9f3fcfdc672ddeb7057771f7d95a92c8848f4228f4f6a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.8.3
|
Release files / bittensor_commit_reveal-0.4.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | bittensor_commit_reveal-0.4.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
94640d6f2b9c634f74370a0f83002160382e0671cca60d31deb946f36d1831a8
|
|
BLAKE2b-256 checksum How to use checksums |
9e7cfa51563504de64487567e81bc4ea657c7fd0bcafb7e0f7e62537595ed4eb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.8.3
|
Release files / bittensor_commit_reveal-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl
| Download URL | bittensor_commit_reveal-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.12 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
8b2aaa3545932adcf944d5fe5da93f4b5fe98779a96d46b014b428d559d47d40
|
|
BLAKE2b-256 checksum How to use checksums |
8dc92778a776389d610adacef11a6ddb1e16403604da9a0c5ada3ad0a8aaa3ef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.8.3
|
Release files / bittensor_commit_reveal-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | bittensor_commit_reveal-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
d62141687ac5a79cbc812e257a8427657c390345aca143f3cc623b313f601177
|
|
BLAKE2b-256 checksum How to use checksums |
e65a6cf53b644cebbef1857c68de65a7dafb4bcd4f68871b0860592fa27b4116
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.8.3
|
Release files / bittensor_commit_reveal-0.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | bittensor_commit_reveal-0.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-32 |
|
SHA-256 checksum How to use checksums |
30ded9d0a2a92cde517e440b791530a4d941862f9047f68cf8f08e54c248be4a
|
|
BLAKE2b-256 checksum How to use checksums |
f172c44bdf1b1b306a371308e17f8e161ce1eb385d7840016a23d2196faf7919
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.8.3
|
Release files / bittensor_commit_reveal-0.4.0-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | bittensor_commit_reveal-0.4.0-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
94dafa82822232854b923e8a874a4e78fbf9b74541b55f1329b403b6d58fbe6b
|
|
BLAKE2b-256 checksum How to use checksums |
279cb8112336d732940c81c0773f375da2acb5ce99eb7d3ecdddcb1610820784
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.8.3
|
Release files / bittensor_commit_reveal-0.4.0-cp311-cp311-macosx_10_12_x86_64.whl
| Download URL | bittensor_commit_reveal-0.4.0-cp311-cp311-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.11 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
9d90a85743bd89881ca36f1ba15aa082cf4760619e9cc131bc5b419e68602749
|
|
BLAKE2b-256 checksum How to use checksums |
059070de9b6f482fbb461529848af9e4ae2696a146c3547227b0edc241c89658
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.8.3
|
Release files / bittensor_commit_reveal-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | bittensor_commit_reveal-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
4e5439be6ab2cbb1ddef50811d8f22b1f534a3f9a018b76f7753ad6fdd48bbd3
|
|
BLAKE2b-256 checksum How to use checksums |
5ab38550638b1272bb3359cc6eacf07232d054785795be2d6fd0bb3660792d57
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.8.3
|
Release files / bittensor_commit_reveal-0.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | bittensor_commit_reveal-0.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-32 |
|
SHA-256 checksum How to use checksums |
ed349d46fa9c3f81c26d22aaa77451bebf1dcb697b214ab91226f6ab0b1853b6
|
|
BLAKE2b-256 checksum How to use checksums |
d5d12a9d5dd4c04c7e5496d06a2bacb12867ceae221aac95ade4996522523e0c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.8.3
|
Release files / bittensor_commit_reveal-0.4.0-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | bittensor_commit_reveal-0.4.0-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
4e7b2c02c99dbb7b4cb4072f946645767d2c39057c657f4a6e9ea2652a6179dd
|
|
BLAKE2b-256 checksum How to use checksums |
577ac491fa94176651f63da4d7c8c6361a31ccc7cea9df78fbc98b32cb4de9bf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.8.3
|
Release files / bittensor_commit_reveal-0.4.0-cp310-cp310-macosx_10_12_x86_64.whl
| Download URL | bittensor_commit_reveal-0.4.0-cp310-cp310-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.10 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
322e85ad158456089c76393a791e07ba2cd2cc8cbe333054c46e9fe0b4f9650b
|
|
BLAKE2b-256 checksum How to use checksums |
ef013fd40d7122eb305678ee1110804e5eff23b65ccbe33ca953694c1ab5acaf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.8.3
|
Release files / bittensor_commit_reveal-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | bittensor_commit_reveal-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
3dfd6fd422e71a14cc71d31311806211ac79a0bb1e4cb0e8b77408bfec7ac147
|
|
BLAKE2b-256 checksum How to use checksums |
84754ad0a57925ff2ec112a5e4986f51c51d9c414e2c4a569c31a5f031da7d61
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.8.3
|
Release files / bittensor_commit_reveal-0.4.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | bittensor_commit_reveal-0.4.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-32 |
|
SHA-256 checksum How to use checksums |
ab4ca024b51b68259bfcb06b8541c6c3692bba96f3e91c5b6dc32fdef36fe658
|
|
BLAKE2b-256 checksum How to use checksums |
fd71ecaa15174c7c8ecda7d34fdf659d841e5ec2d4e07f2338e4f0027655890b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.8.3
|
Release files / bittensor_commit_reveal-0.4.0-cp39-cp39-macosx_11_0_arm64.whl
| Download URL | bittensor_commit_reveal-0.4.0-cp39-cp39-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.9 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e71523a59e93eb7e6b03fdadf2284418b063ad21b00710d87fc72cc882666143
|
|
BLAKE2b-256 checksum How to use checksums |
a2a83443b037bd6b544954e972830c6936fa167b929f91665d79af4255921a7d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.8.3
|
Release files / bittensor_commit_reveal-0.4.0-cp39-cp39-macosx_10_12_x86_64.whl
| Download URL | bittensor_commit_reveal-0.4.0-cp39-cp39-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.9 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
6a00d02edbe91e25dc6bf6dbe74d1b885d7d9b2b053147806608619b1a5a7ebf
|
|
BLAKE2b-256 checksum How to use checksums |
11e27823f65703c56f5d5c6ba6bbf827b82f196fecb8333b3b3d6efeec117a75
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
maturin/1.8.3
|