🔍 Code Extractor

function get_overlay_spec

Maturity: 36

Constructs a specification tuple for an Element within an Overlay by combining the element's type name, group, label, and key dimensions.

File:
/tf/active/vicechatdev/patches/util.py
Lines:
1397 - 1403
Complexity:
simple

Purpose

This function generates a unique identifier specification for elements in an Overlay data structure. It creates a tuple that includes the element's class name, group attribute, label attribute, and key dimensions if the overlay has key dimensions. This specification is used for organizing and identifying elements within complex overlay structures, likely in a visualization or data organization context.

Source Code

def get_overlay_spec(o, k, v):
    """
    Gets the type.group.label + key spec from an Element in an Overlay.
    """
    k = wrap_tuple(k)
    return ((type(v).__name__, v.group, v.label) + k if len(o.kdims) else
            (type(v).__name__,) + k)

Parameters

Name Type Default Kind
o - - positional_or_keyword
k - - positional_or_keyword
v - - positional_or_keyword

Parameter Details

o: The Overlay object that contains the element. Used to check if key dimensions (kdims) exist on the overlay.

k: The key or keys associated with the element. Will be wrapped in a tuple if not already a tuple. Represents dimensional keys for the element.

v: The Element value object from the overlay. Must have 'group' and 'label' attributes, and its type name will be extracted using type(v).__name__.

Return Value

Returns a tuple specification. If the overlay 'o' has key dimensions (len(o.kdims) > 0), returns a tuple of (type_name, group, label) + key_tuple. If no key dimensions exist, returns (type_name,) + key_tuple. The type_name is the class name of element 'v', group and label are attributes from 'v', and key_tuple is the wrapped version of parameter 'k'.

Usage Example

# Assuming you have an Overlay object and Element with proper attributes
# This function is typically used internally within a visualization library like HoloViews

class MockElement:
    def __init__(self, group, label):
        self.group = group
        self.label = label

class MockOverlay:
    def __init__(self, kdims):
        self.kdims = kdims

def wrap_tuple(x):
    return x if isinstance(x, tuple) else (x,)

# Example 1: Overlay with key dimensions
overlay_with_kdims = MockOverlay(kdims=['x', 'y'])
element = MockElement(group='data', label='series1')
key = 'key1'
spec = get_overlay_spec(overlay_with_kdims, key, element)
# Result: ('MockElement', 'data', 'series1', 'key1')

# Example 2: Overlay without key dimensions
overlay_no_kdims = MockOverlay(kdims=[])
spec = get_overlay_spec(overlay_no_kdims, key, element)
# Result: ('MockElement', 'key1')

Best Practices

  • Ensure the 'v' parameter has 'group' and 'label' attributes before calling this function to avoid AttributeError
  • The 'o' parameter must have a 'kdims' attribute that supports len() operation
  • This function depends on a 'wrap_tuple' helper function that must be defined in the same scope
  • The function is designed for use with HoloViews-like data structures where Elements have type, group, and label metadata
  • The returned specification tuple can be used as a dictionary key or for element lookup in overlay structures

Similar Components

AI-powered semantic similarity - components with related functionality:

  • function get_spec 66.0% similar

    Extracts a specification tuple from a labeled data object, consisting of the class name, group, and label attributes.

    From: /tf/active/vicechatdev/patches/util.py
  • function match_spec 53.7% similar

    Matches an element's type, group, and label against a hierarchical specification dictionary, returning the most specific matching value.

    From: /tf/active/vicechatdev/patches/util.py
  • function closest_match 48.0% similar

    Recursively finds the closest matching specification from a list of specs by comparing hierarchical keys (type, group, label, overlay) with a target match pattern.

    From: /tf/active/vicechatdev/patches/util.py
  • function layer_groups 47.5% similar

    Groups elements from an ordering list into a dictionary based on a slice of each element's specification, using the first 'length' items as the grouping key.

    From: /tf/active/vicechatdev/patches/util.py
  • function layer_sort 42.3% similar

    Computes a global topological ordering of layers from a HoloMap containing CompositeOverlay objects by analyzing layer dependencies and sorting them.

    From: /tf/active/vicechatdev/patches/util.py
← Back to Browse