Skip to main content

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


Download files

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

Source Distribution

anything_world-0.1.3.tar.gz (12.0 kB view details)

Uploaded Source

Built Distribution

anything_world-0.1.3-py3-none-any.whl (14.6 kB view details)

Uploaded Python 3

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

Hashes for anything_world-0.1.3.tar.gz
Algorithm Hash digest
SHA256 7dc6ddb4f1de0fc2f5d888d83c6cebd1f85c5daee8ae418709eb8b5c723ffb4a
MD5 e47850e21d451b648ff1b9468416f233
BLAKE2b-256 4076c652b36ae66e244a9b51a11654d36e5455bd3ff66e0d85e559dc9cddef68

See more details on using hashes here.

File details

Details for the file anything_world-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for anything_world-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 73fc3d2bfe7b2a51a70b3f9a338d1199178150b73ecd36a4a631e87de06ff8a7
MD5 89f692db0067648f4e61bd5957fc74de
BLAKE2b-256 898266a1710050f36c9171b9efd21ffbe646382210d05e9b489c7a7f03c8e614

See more details on using hashes here.

Supported by

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