Anything World API wrapper library and CLI
Project description
Anything World Python Client
Python library and CLI for Anything World API.
:warning: Please make sure to follow our guidelines
on preparing your 3D model for success before sending them to be animated,
by using our /animate
endpoint.
For more information of what changed between versions, please check the CHANGELOG file.
Installing
pip install anything-world
Using
First of all, create a new .env
file with the right API key and URLs:
AW_API_KEY=<YOUR API KEY>
AW_API_URL=https://api.anything.world
AW_POLLING_URL=https://api.anything.world/user-processed-model
From Python
This library provides both synchronous and asynchronous implementations.
The sync implementation is based on requests
and tries to keep dependencies
at minimum (i.e. no need to install asyncio
nor aiohttp
). However,
if you use-case requires async calls, please follow the next section for its
implementation.
Sync
from anything_world.sync_api import AWClient
# Create a client to be able to query Anything World's API
client = AWClient()
# Search for 3D models of `cats`:
response = client.find('cats')
# Upload files from ./examples/cat folder to be animated
response = client.animate('./examples/cat', 'some_cat', 'cat', is_symmetric=True)
# Response has the model_id of the 3D model that our AI pipeline is currently animating
model_id = response["model_id"]
# Runs a long-polling loop, starting it only after 2 minutes and after that,
# checking every 5 secs if the API is done animating the model
model_data = client.get_animated_model(model_id, waiting_time=5, warmup_time=120)
# Check if our AI pipeline is done animating the model
is_finished = client.is_animation_done(model_id)
assert is_finished == True
# Gets all model data
model_data = client.get_model(model_id)
Async
import asyncio
from anything_world.async_api import AWClient
# Create a client to be able to query Anything World's API
client = AWClient()
# Search for 3D models of `cats`:
response = asyncio.run(
client.find('cats'))
# Upload files from ./examples/cat folder to be animated
response = asyncio.run(
client.animate('./examples/cat', 'some_cat', 'cat', is_symmetric=True))
# Response has the model_id of the 3D model that our AI pipeline is currently animating
model_id = response["model_id"]
# Runs a long-polling loop, starting it only after 2 minutes and after that,
# checking every 5 secs if the API is done animating the model.
model_data = asyncio.run(
client.get_animated_model(model_id, waiting_time=5, warmup_time=120))
# Check if our AI pipeline is done animating the model
is_finished = asyncio.run(
client.is_animation_done(model_id))
assert is_finished == True
# Gets all model data
model_data = async.run(
client.get_model(model_id))
From CLI
All AWClient
methods are exposed as commands of the anything
CLI tool.
Just call the anything
tool and it will display a manual page of the
available commands:
anything
You can do exactly the same we did in Python before through the CLI:
anything find "cat"
anything animate ./examples/cat "some cat" "cat" --is_symmetric
anything get_animated_model <MODEL_ID> --verbose
anything get_model <MODEL_ID>
To know more about the parameters of a specific command, just run the command with no arguments to get a help message:
anything find
For more information about a command, please run the command with the --help
suffix:
anything find --help
Developing
Installing from source
git clone git@github.com:anythingworld/anything-world-python.git
cd anything-world-python
python3 -m venv venv
source venv/bin/activate
pip install -e .
Testing
pytest -v -s
Releasing a new pip package
First bump the version in pyproject.toml
and then:
rm -rf dist/*
python3 -m build
python3 -m twine upload dist/*
License
This Python module has a MIT-style license, as found in the LICENSE file.
The cat model in examples/cat
folder is from Google Poly (CC-BY 4.0) license.
The ASCII logo was generated by https://patorjk.com/software/taag/ using the original font fuzzy.flf by Juan Car (jc@juguete.quim.ucm.es).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file anything_world-0.1.3.tar.gz
.
File metadata
- Download URL: anything_world-0.1.3.tar.gz
- Upload date:
- Size: 12.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7dc6ddb4f1de0fc2f5d888d83c6cebd1f85c5daee8ae418709eb8b5c723ffb4a |
|
MD5 | e47850e21d451b648ff1b9468416f233 |
|
BLAKE2b-256 | 4076c652b36ae66e244a9b51a11654d36e5455bd3ff66e0d85e559dc9cddef68 |
File details
Details for the file anything_world-0.1.3-py3-none-any.whl
.
File metadata
- Download URL: anything_world-0.1.3-py3-none-any.whl
- Upload date:
- Size: 14.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 73fc3d2bfe7b2a51a70b3f9a338d1199178150b73ecd36a4a631e87de06ff8a7 |
|
MD5 | 89f692db0067648f4e61bd5957fc74de |
|
BLAKE2b-256 | 898266a1710050f36c9171b9efd21ffbe646382210d05e9b489c7a7f03c8e614 |