Skip to content

PathObject — The Addressing System

PathObject (in alc/path/path_object.py) is the universal production address resolver. Every file path in production is a structured address, not a raw string.

The address

A PathObject encodes:

root / company / project / sync_root / tree / entity_type / parent / [group] / child / task / variant / user / version / resolution

From any PathObject you can derive: source paths, render paths, publish paths, MSD paths, thumbnail paths (.thumb), preview paths (.preview), proxy paths (.proxy), and media URLs. This is the single address system for the entire production — disk paths, web routes, and tracking IDs are all projections of the same address.

Why it matters

  • One resolver, many surfaces. The same address renders as a Windows disk path, a web URL token, a ShotGrid entity, or a Perforce depot path.
  • Grounded integrations. External roots (e.g. Unreal's /Game, Perforce depots) are grounded through the address, so cross-system references stay resolvable.
  • Agent context. A RecipeStep handed to an agent carries a PathObject as its full production context — where it is, what it's operating on.

Usage

from alc.path import PathObject

po = PathObject(r"E:\Alchemy\cgl\tnt\VERSIONS\source\shots\010\SEQ\svz\default\tmiko\000.000\high\...")
po.msd_path        # PUBLISHES/msd/<task_id>.json
po.preview_path    # web-servable preview media
po.task_id         # project_episode_entityType_parent_group_child_task

See the API reference for the full surface.