You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .claude/skills/dataverse-sdk-dev/SKILL.md
+32Lines changed: 32 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -54,3 +54,35 @@ Navigation property names are case-sensitive and must match the entity's `$metad
54
54
9.**Document public APIs** - Add Sphinx-style docstrings with examples for public methods
55
55
10.**Define __all__ in module files** - Each module declares its own exports via `__all__` (e.g., `errors.py` defines `__all__ = ["HttpError", ...]`). Package `__init__.py` files should not re-export or redefine another module's `__all__`; they use `__all__ = []` to indicate no star-import exports.
56
56
11.**Run black before committing** - Always run `python -m black <changed files>` before committing. CI will reject unformatted code. Config is in `pyproject.toml` under `[tool.black]`.
57
+
58
+
### Docstring Type Annotations (Microsoft Learn Compatibility)
59
+
60
+
This SDK's API reference is published on Microsoft Learn. The Learn doc pipeline parses `:type:` and `:rtype:` directives differently from standard Sphinx -- every word between `:class:` references is treated as a separate cross-reference (`<xref:word>`). Using Sphinx-style `:class:\`list\` of :class:\`str\`` produces broken `<xref:of>` links on Learn.
61
+
62
+
**Rules for `:type:` and `:rtype:` directives:**
63
+
64
+
- Use Python bracket notation for generic types: `list[str]`, `dict[str, typing.Any]`, `list[dict]`
65
+
- Use `or` (without `:class:`) for union types: `str or None`, `dict or list[dict]`
66
+
- Use bracket nesting for complex types: `collections.abc.Iterable[list[dict]]`
67
+
- Use `~` prefix for SDK types to show short name: `list[~PowerPlatform.Dataverse.models.record.Record]`
68
+
-`:class:` is fine for single standalone types: `:class:\`str\``, `:class:\`bool\``
69
+
70
+
**Never** use `:class:\`X\` of :class:\`Y\`` or `:class:\`X\` mapping :class:\`Y\` to :class:\`Z\`` -- the words `of`, `mapping`, `to` become broken `<xref:>` links.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+10Lines changed: 10 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,6 +5,15 @@ All notable changes to this project will be documented in this file.
5
5
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
8
+
## [0.1.0b7] - 2026-03-17
9
+
10
+
### Added
11
+
- DataFrame namespace: `client.dataframe.get()`, `.create()`, `.update()`, `.delete()` for working with Dataverse records as pandas DataFrames and Series — no manual dict conversion required (#98)
12
+
- Table metadata now includes `primary_name_attribute` and `primary_id_attribute` from `tables.create()` and `tables.get_info()` (#148)
13
+
14
+
### Changed
15
+
-`pandas>=2.0.0` is now a required dependency (#98)
16
+
8
17
## [0.1.0b6] - 2026-03-12
9
18
10
19
### Added
@@ -82,6 +91,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
82
91
- Comprehensive error handling with specific exception types (`DataverseError`, `AuthenticationError`, etc.) (#22, #24)
83
92
- HTTP retry logic with exponential backoff for resilient operations (#72)
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+37Lines changed: 37 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -121,4 +121,41 @@ published release:
121
121
# After publishing v0.1.0b4, bump to v0.1.0b5 on main
122
122
# Update version in pyproject.toml
123
123
# Commit directly to main: "Bump version to 0.1.0b5 for next development cycle"
124
+
```
125
+
126
+
### Docstring Type Annotations (Microsoft Learn Compatibility)
127
+
128
+
This SDK's API reference is published on [Microsoft Learn](https://learn.microsoft.com). The Learn doc pipeline processes `:type:` and `:rtype:` Sphinx directives differently from standard Sphinx -- every word between `:class:` back-tick references is treated as a separate cross-reference (`<xref:word>`). For example:
129
+
130
+
```
131
+
:rtype: :class:`list` of :class:`str`
132
+
```
133
+
134
+
This produces a broken `<xref:of>` link because `of` is not a valid type.
135
+
136
+
**Rules for `:type:` and `:rtype:` directives:**
137
+
138
+
- Use **Python bracket notation** for generic types: `list[str]`, `dict[str, typing.Any]`, `list[dict]`
139
+
- Use **`or`** (without `:class:`) for union types: `str or None`, `dict or list[dict]`
140
+
- Use **bracket nesting** for complex types: `collections.abc.Iterable[list[dict]]`
141
+
-`:class:` is fine for **single standalone types**: `` :class:`str` ``, `` :class:`bool` ``
142
+
143
+
**NEVER** use the following patterns -- the connector words (`of`, `mapping`, `to`) become broken `<xref:>` links on Learn:
144
+
145
+
```
146
+
:class:`X` of :class:`Y`
147
+
:class:`X` mapping :class:`Y` to :class:`Z`
148
+
```
149
+
150
+
Correct:
151
+
```
152
+
:type data: dict or list[dict]
153
+
:rtype: list[str]
154
+
:type select: list[str] or None
155
+
```
156
+
157
+
Wrong:
158
+
```
159
+
:type data: :class:`dict` or :class:`list` of :class:`dict`
0 commit comments