Karana.KUtils.FilesystemLikeDatabase#

Classes and functions related to Filesystem.

Classes#

FilesystemLikeDatabase

Filesystem-like database for storing objects and looking them up by filepath-like names.

Module Contents#

class Karana.KUtils.FilesystemLikeDatabase.FilesystemLikeDatabase[T][source]#

Filesystem-like database for storing objects and looking them up by filepath-like names.

graph#
root = '/'#
addObject(name: str, obj: T, parent: str, /)[source]#
addObject(obj: T, parent: str, /)
addObject(name: str, obj: T, parent: T, /)
addObject(obj: T, parent: T, /)

Add an object to the database.

  1. Using a name, object, and parent as a path.

Parameters:
  • name (str) – The name of the object.

  • obj (T) – The object itself.

  • parent (str) – The parent as a path in the current database.

  1. Using an object with a name method and the parent as a path.

Parameters:
  • obj (T) – The object itself. The object must implement a name() method that returns a string.

  • parent (str) – The parent as a path in the current database.

  1. Using a name, an object, and the parent as an object.

Parameters:
  • name (str) – The name of the object.

  • obj (T) – The object itself.

  • parent (T) – The parent object, which must already be in the database.

  1. Using an object with a name method and the parent as an object.

Parameters:
  • obj (T) – The object itself. The object must implement a name() method that returns a string.

  • parent (T) – The parent object, which must already be in the database.

getObjects(path: str, parent: T | None = None) list[T][source]#

Get objects in the database.

Parameters:
  • path (str) – The path to use to find objects.

  • parent (T | None) – The parent to start searching from. If None, then the root is used.

Returns:

A list of objects found.

Return type:

list[T]

getObject(path: str, parent: T | None = None) T[source]#

Get object in the database.

Parameters:
  • path (str) – The path to use to find the object.

  • parent (T | None) – The parent to start searching from. If None, then the root is used.

Returns:

The object that matches the path.

Return type:

T

getObjectsAndDists(path: str, parent: T | None = None) list[tuple[T, int]][source]#

Get objects and their distance in the Database.

Parameters:
  • path (str) – The path used to search for objects.

  • parent (T | None) – The point in the FilesystemLikeDatabase to start searching from. If None, then the root is used.

Returns:

A list of objects that match the path and their distances.

Return type:

list[tuple[T, int]]

getClosest(name: str, start: T | None = None) T[source]#

Get the closest object with the given name.

If more than one object has this name at the same closest distance, then an error is thrown.

Parameters:
  • name (str) – The name of the object to look for. This can use globs and wildcards.

  • start (T) – The point in the FilesystemLikeDatabase to start searching from. If None, then the root is used.

Returns:

The closest object with that name.

Return type:

T

dumpTree(node: int | None = None, prefix: str = '', is_last: bool = True)[source]#

Display the database as a tree on the command line.

This is a recursive method that is meant to be called with the keyword arguments as their defaults.

Parameters:
  • node (int | None) – The node to dump from.

  • prefix (str) – The prefix to use when printing this nodes information.

  • is_last (bool) – If this is the last node at the current level.