resource_access_example.py•4.34 kB
#!/usr/bin/env python3
"""
Example: Resource Access
This example demonstrates how to access best practices via
the resource URI system and category/topic retrieval.
"""
import sys
import os
# Add parent directory to path to import modules
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from data_manager import get_category, list_all_categories, get_examples
def main():
"""Demonstrate resource access functionality."""
print("=" * 60)
print("Example: Resource Access")
print("=" * 60)
print()
# Example 1: List all categories
print("1. Listing all available categories:")
print("-" * 60)
result = list_all_categories()
print(f"Total categories: {result['count']}")
print()
for category in result['categories']:
print(f" • {category['name']}")
print(f" {category['description']}")
print(f" Topics: {category['topic_count']}")
print()
# Example 2: Get specific category
print("\n2. Getting all topics in 'general_coding' category:")
print("-" * 60)
result = get_category("general_coding")
print(f"Category: {result['category']}")
print(f"Total topics: {result['count']}")
print()
for topic in result['topics'][:3]: # Show first 3
print(f" Topic: {topic['name']}")
print(f" Description: {topic['description'][:80]}...")
print(f" Examples available: {len(topic['examples'])}")
print()
# Example 3: Get specific topic
print("\n3. Getting specific topic 'type_hints':")
print("-" * 60)
result = get_category("general_coding", "type_hints")
print(f"Category: {result['category']}")
print(f"Topic: {result['topic']}")
print(f"Description: {result['description']}")
print()
if result.get('examples'):
print("Examples:")
for name, code in list(result['examples'].items())[:2]:
print(f"\n {name}:")
print(f" {code[:100]}...")
print()
# Example 4: Get code examples for a topic
print("\n4. Getting code examples for 'async_operations':")
print("-" * 60)
result = get_examples("async_operations")
if 'error' not in result:
print(f"Topic: {result['topic']}")
print(f"Category: {result['category']}")
print(f"Total examples: {result['count']}")
print()
if result.get('examples'):
example = result['examples'][0]
print(f"Example: {example['name']}")
print(f"Context: {example['context'][:80]}...")
print(f"\nCode:")
print(example['code'][:200])
print("...")
else:
print(f"Error: {result['message']}")
if result.get('suggestions'):
print(f"Suggestions: {', '.join(result['suggestions'])}")
print()
# Example 5: Handle invalid category (demonstrates suggestions)
print("\n5. Requesting invalid category (demonstrates suggestions):")
print("-" * 60)
result = get_category("invalid_category")
if 'error' in result:
print(f"Error: {result['message']}")
if result.get('suggestions'):
print(f"Did you mean: {', '.join(result['suggestions'])}")
if result.get('available_categories'):
print(f"Available categories: {', '.join(result['available_categories'])}")
print()
# Example 6: Simulating resource URI access
print("\n6. Simulating resource URI access patterns:")
print("-" * 60)
print("Resource URIs follow these patterns:")
print(" • bestpractices://general/{topic}")
print(" • bestpractices://fastapi/{topic}")
print(" • bestpractices://performance/{topic}")
print(" • bestpractices://code_quality/{topic}")
print(" • bestpractices://all")
print()
print("Example: bestpractices://fastapi/pydantic_models")
result = get_category("fastapi_specific", "pydantic_models")
if 'error' not in result:
print(f" ✓ Found: {result['topic']}")
print(f" Description: {result['description'][:80]}...")
print()
print("=" * 60)
print("Resource access examples complete!")
print("=" * 60)
if __name__ == "__main__":
main()