| name | dataverse-sdk-dev |
|---|---|
| description | Development guidance for contributing to the PowerPlatform Dataverse Client Python SDK repository. Use when working on SDK development tasks like adding features, fixing bugs, or writing tests. |
This skill provides guidance for developers working on the PowerPlatform Dataverse Client Python SDK repository itself (not using the SDK).
- Public methods in operation namespaces - New public methods go in the appropriate namespace module under
src/PowerPlatform/Dataverse/operations/(records.py,query.py,tables.py). Theclient.pyfile exposes these via namespace properties (client.records,client.query,client.tables). Public types and constants live in their own modules (e.g.,models/table_info.py,common/constants.py) - Every public method needs README example - Public API methods must have examples in README.md
- Reuse existing APIs - Always check if an existing method can be used before making direct Web API calls
- Update documentation when adding features - Keep README and SKILL files (both copies) in sync
- Consider backwards compatibility - Avoid breaking changes
- Internal vs public naming - Modules, files, and functions not meant to be part of the public API must use a
_prefix (e.g.,_odata.py,_relationships.py). Files without the prefix (e.g.,constants.py,metadata.py) are public and importable by SDK consumers
- No emojis - Do not use emoji in code, comments, or output
- Standardize output format - Use
[INFO],[WARN],[ERR],[OK]prefixes for console output - No noqa comments - Do not add
# noqa: BLE001or similar linter suppression comments - Document public APIs - Add Sphinx-style docstrings with examples for public methods
- Define all in module files - Each module declares its own exports via
__all__(e.g.,errors.pydefines__all__ = ["HttpError", ...]). Package__init__.pyfiles should not re-export or redefine another module's__all__; they use__all__ = []to indicate no star-import exports. - Run black before committing - Always run
python -m black <changed files>before committing. CI will reject unformatted code. Config is inpyproject.tomlunder[tool.black].