MR
Mayur Rathi
@github
⭐ 34.1k GitHub stars

Dataverse-Python-Error-Handling

Dataverse-Python-Error-Handling是一款learning方向的AI技能,核心价值是# Dataverse SDK for Python — Error Handling & Troubleshooting Guide Based on official Microsoft documentation for Azure SDK error handling patterns and Dataverse SDK specifics,可用于解决开发者在learning领域的实际问题,帮助用户提升效率、自动化重复任务或优化工作流。

# Dataverse SDK for Python — Error Handling & Troubleshooting Guide Based on official Microsoft documentation for Azure SDK error handling patterns and Dataverse SDK specifics. ## 1. DataverseError

Last verified on: 2026-05-30
mkdir -p ./skills/dataverse-python-error-handling && curl -sfL https://raw.githubusercontent.com/github/awesome-copilot/main/skills/dataverse-python-error-handling/SKILL.md -o ./skills/dataverse-python-error-handling/SKILL.md

Run in terminal / PowerShell. Requires curl (Unix) or PowerShell 5+ (Windows).

Skill Content

# Dataverse SDK for Python — Error Handling & Troubleshooting Guide


Based on official Microsoft documentation for Azure SDK error handling patterns and Dataverse SDK specifics.


1. DataverseError Class Overview


The Dataverse SDK for Python provides a structured exception hierarchy for robust error handling.


DataverseError Constructor


python
from PowerPlatform.Dataverse.core.errors import DataverseError

DataverseError(
    message: str,                          # Human-readable error message
    code: str,                             # Error category (e.g., "validation_error", "http_error")
    subcode: str | None = None,            # Optional specific error identifier
    status_code: int | None = None,        # HTTP status code (if applicable)
    details: Dict[str, Any] | None = None, # Additional diagnostic information
    source: str | None = None,             # Error source: "client" or "server"
    is_transient: bool = False             # Whether error may succeed on retry
)

Key Properties


python
try:
    client.get("account", record_id="invalid-id")
except DataverseError as e:
    print(f"Message: {e.message}")           # Human-readable message
    print(f"Code: {e.code}")                 # Error category
    print(f"Subcode: {e.subcode}")           # Specific error type
    print(f"Status Code: {e.status_code}")   # HTTP status (401, 403, 429, etc.)
    print(f"Source: {e.source}")             # "client" or "server"
    print(f"Is Transient: {e.is_transient}") # Can retry?
    print(f"Details: {e.details}")           # Additional context
    
    # Convert to dictionary for logging
    error_dict = e.to_dict()

---


2. Common Error Scenarios


Authentication Errors (401)


**Cause**: Invalid credentials, expired tokens, or misconfigured settings.


python
from PowerPlatform.Dataverse.client import DataverseClient
from PowerPlatform.Dataverse.core.errors import DataverseError
from azure.identity import InteractiveBrowserCredential

try:
    # Bad credentials or expired token
    credential = InteractiveBrowserCredential()
    client = DataverseClient(
        base_url="https://invalid-org.crm.dynamics.com",
        credential=credential
    )
    records = client.get("account")
except DataverseError as e:
    if e.status_code == 401:
        print("Authentication failed. Check credentials and token expiration.")
        print(f"Details: {e.message}")
        # Don't retry - fix credentials first
    else:
        raise

Authorization Errors (403)


**Cause**: User lacks permissions for the requested operation.


python
try:
    # User doesn't have permission to read contacts
    records = client.get("contact")
except DataverseError as e:
    if e.status_code == 403:
        print("Access denied. User lacks required permissions.")
        print(f"Request ID for support: {e.details.get('request_id')}")
        # Escalate to administrator
    else:
        raise

Resource Not Found (404)


**Cause**: Record, table, or resource doesn't exist.


python
try:
    # Record doesn't exist
    record = client.get("account", record_id="00000000-0000-0000-0000-000000000000")
except DataverseError as e:
    if e.status_code == 404:
        print("Resource not found. Using default data.")
        record = {"name": "Unknown", "id": None}
    else:
        raise

Rate Limiting (429)


**Cause**: Too many requests exceeding service protection limits.


**Note**: The SDK has minimal built-in retry support. Handle transient consistency issues manually.


python
import time

def create_with_retry(client, table_name, payload, max_retries=3):
    """Create record with retry logic for rate limiting."""
    for attempt in range(max_retries):
        try:
            result = client.create(table_name, payload)
            return result
        except DataverseError as e:
            if e.status_code == 429 and e.is_transient:
                wait_time = 2 ** attempt  # Exponential

🎯 Best For

  • Technical writers
  • API documentation teams
  • UI designers
  • Product designers
  • Claude users

💡 Use Cases

  • Generating JSDoc/TSDoc comments
  • Writing README files for new projects
  • Generating component mockups
  • Creating design system tokens

📖 How to Use This Skill

  1. 1

    Install the Skill

    Copy the install command from the Terminal tab and run it. The SKILL.md file downloads to your local skills directory.

  2. 2

    Load into Your AI Assistant

    Open Claude or GitHub Copilot and reference the skill. Paste the SKILL.md content or use the system prompt tab.

  3. 3

    Apply Dataverse-Python-Error-Handling to Your Work

    Provide context for your task — paste source material, describe your audience, or share existing work to guide the AI.

  4. 4

    Review and Refine

    Edit the AI output for accuracy, tone, and completeness. Add human insight where the AI lacks context.

❓ Frequently Asked Questions

Does it follow my documentation style?

Most documentation skills respect existing style. Provide a style guide or example in your prompt.

Does this work with Figma?

Some design skills integrate with Figma plugins. Check the Works With section for supported tools.

How do I install Dataverse-Python-Error-Handling?

Copy the install command from the Terminal tab and run it. The skill downloads to ./skills/dataverse-python-error-handling/SKILL.md, ready to use.

Can I customize this skill for my team?

Absolutely. Edit the SKILL.md file to add team-specific instructions, examples, or workflows.

⚠️ Common Mistakes to Avoid

Auto-generating without reviewing

AI documentation can contain inaccuracies. Always verify technical accuracy.

Skipping usability testing

AI-generated designs should be validated with real users before development.

Not reading the full skill

Skills contain important context and edge cases beyond the quick start.

🔗 Related Skills