trimesh.resolvers module

resolvers.py

Provides a common interface to load assets referenced by name like MTL files, texture images, etc. Assets can be from ZIP archives, web assets, or a local file path.

class trimesh.resolvers.FilePathResolver(source: str)

Bases: Resolver

Resolve files from a source path on the file system.

__init__(source: str)

Resolve files based on a source path.

Parameters:

source (str) – File path where mesh was loaded from

get(name: str)

Get an asset.

Parameters:

name (str) – Name of the asset

Returns:

data – Loaded data from asset

Return type:

bytes

keys()

List all files available to be loaded.

Yields:

name (str) – Name of a file which can be accessed.

namespaced(namespace: str) FilePathResolver

Return a resolver which changes the root of the resolver by an added namespace.

Parameters:

namespace (str) – Probably a subdirectory

Returns:

resolver – Resolver with root directory changed.

Return type:

FilePathResolver

write(name: str, data: str | bytes)

Write an asset to a file path.

Parameters:
  • name (str) – Name of the file to write

  • data (str or bytes) – Data to write to the file

class trimesh.resolvers.GithubResolver(repo: str, branch: str | None = None, commit: str | None = None, save: str | None = None)

Bases: Resolver

__init__(repo: str, branch: str | None = None, commit: str | None = None, save: str | None = None)

Get files from a remote Github repository by downloading a zip file with the entire branch or a specific commit.

Parameters:
  • repo – In the format of owner/repo

  • branch – The remote branch you want to get files from.

  • commit – The full commit hash: pass either this OR branch.

  • save – A path if you want to save results locally.

get(key)
keys()

List the available files in the repository.

Returns:

keys – Keys available to the resolved.

Return type:

iterable

namespaced(namespace)

Return a “sub-resolver” with a root namespace.

Parameters:

namespace (str) – The root of the key to clip off, i.e. if this resolver has key a/b/c you can get ‘a/b/c’ with resolver.namespaced(‘a/b’).get(‘c’)

Returns:

resolver – Namespaced resolver.

Return type:

Resolver

write(name, data)
property zipped: ZipResolver
  • opened zip file

  • locally saved zip file

  • retrieve zip file and saved

class trimesh.resolvers.Resolver(*args, **kwargs)

Bases: ABC

The base class for resolvers.

abstract __init__(*args, **kwargs)
abstract get(key)
abstract namespaced(namespace)
abstract write(name, data)
class trimesh.resolvers.WebResolver(url)

Bases: Resolver

Resolve assets from a remote URL.

__init__(url)

Resolve assets from a base URL.

Parameters:

url (str) – Location where a mesh was stored or directory where mesh was stored

get(name)

Get a resource from the remote site.

Parameters:

name (str) – Asset name, i.e. ‘quadknot.obj.mtl’

namespaced(namespace)

Return a namespaced version of current resolver.

Parameters:

namespace (str) – URL fragment

Returns:

resolver – With sub-url: https://example.com/{namespace}

Return type:

WebResolver

write(key, value)
class trimesh.resolvers.ZipResolver(archive=None, namespace=None)

Bases: Resolver

Resolve files inside a ZIP archive.

__init__(archive=None, namespace=None)

Resolve files inside a ZIP archive as loaded by trimesh.util.decompress

Parameters:
  • archive (dict) – Contains resources as file object

  • namespace (None or str) – If passed will only show keys that start with this value and this substring must be removed for any get calls.

export() bytes

Export the contents of the current archive as a ZIP file.

Returns:

compressed – Compressed data in ZIP format.

Return type:

bytes

get(name: str)

Get an asset from the ZIP archive.

Parameters:

name (str) – Name of the asset

Returns:

data – Loaded data from asset

Return type:

bytes

keys()

Get the available keys in the current archive.

Returns:

keys – Keys in the current archive.

Return type:

iterable

namespaced(namespace: str) ZipResolver

Return a “sub-resolver” with a root namespace.

Parameters:

namespace (str) – The root of the key to clip off, i.e. if this resolver has key a/b/c you can get ‘a/b/c’ with resolver.namespaced(‘a/b’).get(‘c’)

Returns:

resolver – Namespaced resolver.

Return type:

Resolver

write(key: str, value)

Store a value in the current archive.

Parameters:
  • key (hashable) – Key to store data under.

  • value (str, bytes, file-like) – Value to store.

trimesh.resolvers.nearby_names(name, namespace=None)

Try to find nearby variants of a specified name.

Parameters:

name (str) – Initial name.

Yields:

nearby (str) – Name that is a lightly permutated version of the initial name.