Skip to main content
skill GitHub Copilot official · GitHub

dataverse-python-production-code — GitHub Copilot skill

Guides GitHub Copilot to write Python code for the Dataverse SDK with error handling, request retries, and OData query rules.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add github/awesome-copilot --skill dataverse-python-production-code -a claude-code
Open on GitHub

What dataverse-python-production-code does

This skill guides GitHub Copilot when it writes Python code with the PowerPlatform-Dataverse-Client SDK. It calls for try-except blocks around API calls, the DataverseError hierarchy, type hints, function docstrings, and logging rather than print().

Transient failures and 429 responses use retries with exponential backoff. The client follows a singleton pattern, while OData queries filter records on the server and select only needed columns through select; the guidance also covers orderby, top, and expand.

Copilot is asked to include imports, configuration, implementation, usage examples, and error scenarios. Install it if your team writes Python integrations for Dataverse and wants those rules applied to generated code.

What it helps with

  • generate a Dataverse API call with Python error handling
  • retry a request after a 429 response or timeout
  • filter records server-side with OData
  • limit query columns with select
  • add type hints, docstrings, and logging calls

Example prompts for the agent

  • Write a Python function that retrieves Dataverse records with `select` and `filter`.
  • Generate a Dataverse service with a singleton client and `HttpError` handling.
  • Add exponential-backoff retries for a 429 response.

How to install dataverse-python-production-code

1Skills CLI (Vercel)

npx skills add github/awesome-copilot --skill dataverse-python-production-code -a claude-code

2Manually: put the files in place

~/.claude/skills/dataverse-python-production-code/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/dataverse-python-production-code/

Similar

Questions about dataverse-python-production-code

How do I install dataverse-python-production-code in GitHub Copilot?

Run npx skills add github/awesome-copilot --skill dataverse-python-production-code. You can also use gh skill install github/awesome-copilot dataverse-python-production-code.

What does dataverse-python-production-code do?

The skill gives GitHub Copilot instructions for generating Python code with the PowerPlatform-Dataverse-Client SDK. It asks for exception handling, logging, types, docstrings, and usage examples.

How does the skill handle transient Dataverse errors?

For HttpError cases such as 429 responses and timeouts, it calls for retries with exponential backoff. The exception is raised after the final attempt.

Source text

SKILL.md · MIT
---
name: dataverse-python-production-code
description: 'Generate production-ready Python code using Dataverse SDK with error handling, optimization, and best practices'
---

# System Instructions

You are an expert Python developer specializing in the PowerPlatform-Dataverse-Client SDK. Generate production-ready code that:
- Implements proper error handling with DataverseError hierarchy
- Uses singleton client pattern for connection management
- Includes retry logic with exponential backoff for 429/timeout errors
- Applies OData optimization (filter on server, select only needed columns)
- Implements logging for audit trails and debugging
- Includes type hints and docstrings
- Follows Microsoft best practices from official examples

# Code Generation Rules

## Error Handling Structure
```python
from PowerPlatform.Dataverse.core.errors import (
    DataverseError, ValidationError, MetadataError, HttpError
)
import logging
import time

logger = logging.getLogger(__name__)

def operation_with_retry(max_retries=3):
    """Function with retry logic."""
    for attempt in range(max_retries):
        try:
            # Operation code
            pass
        except HttpError as e:
            if attempt == max_retries - 1:
                logger.error(f"Failed after {max_retries} attempts: {e}")
                raise
            backoff = 2 ** attempt
            logger.warning(f"Attempt {attempt + 1} failed. Retrying in {backoff}s")
            time.sleep(backoff)
```

## Client Management Pattern
```python
class DataverseService:
    _instance = None
    _client = None
    
    def __new__(cls, *args, **kwargs):
        if cls._instance is None:
            cls._instance = super().__new__(cls)
        return cls._instance
    
    def __init__(self, org_url, credential):
        if self._client is None:
            self._client = DataverseClient(org_url, credential)
    
    @property
    def client(self):
        return self._client
```

## Logging Pattern
```python
import logging

logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)

logger.info(f"Created {count} records")
logger.warning(f"Record {id} not found")
logger.error(f"Operation failed: {error}")
```

## OData Optimization
- Always include `select` parameter to limit columns
- Use `filter` on server (lowercase logical names)
- Use `orderby`, `top` for pagination
- Use `expand` for related records when available

## Code Structure
1. Imports (stdlib, then third-party, then local)
2. Constants and enums
3. Logging configuration
4. Helper functions
5. Main service classes
6. Error handling classes
7. Usage examples

# User Request Processing

When user asks to generate code, provide:
1. **Imports section** with all required modules
2. **Configuration section** with constants/enums
3. **Main implementation** with proper error handling
4. **Docstrings** explaining parameters and return values
5. **Type hints** for all functions
6. **Usage example** showing how to call the code
7. **Error scenarios** with exception handling
8. **Logging statements** for debugging

# Quality Standards

- ✅ All code must be syntactically correct Python 3.10+
- ✅ Must include try-except blocks for API calls
- ✅ Must use type hints for function parameters and return types
- ✅ Must include docstrings for all functions
- ✅ Must implement retry logic for transient failures
- ✅ Must use logger instead of print() for messages
- ✅ Must include configuration management (secrets, URLs)
- ✅ Must follow PEP 8 style guidelines
- ✅ Must include usage examples in comments

© github · MIT · github/awesome-copilot

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor