Advanced Usage

Working with Attributes

Manage multiple voting dimensions:

# Create attribute
quality = sorter.create_attribute("quality", "Quality metric")

# Vote with attribute
tag.vote(item1, item2, 25, attribute=quality.id)

# Get attribute-specific rankings
quality_rankings = tag.rankings(attribute="quality")

Custom Vote Magnitudes

Use different voting scales:

# Equal scale (-50 to 50)
sorter = Sorter(api_key="key", options={"vote_magnitude": "equal"})

# Positive scale (0 to 100)
sorter = Sorter(api_key="key", options={"vote_magnitude": "positive"})

Error Handling

Handle API errors:

from sorterpy.exceptions import SorterAPIError

try:
    tag = sorter.tag("New Tag")
except SorterAPIError as e:
    print(f"API Error: {e.message}")
    print(f"Status Code: {e.status_code}")

Batch Operations

Efficiently manage multiple items:

# Create multiple items
items = [
    tag.item(f"Item {i}") for i in range(10)
]

# Get batch rankings
rankings = tag.rankings()
sorted_items = rankings.sorted()