Skip to content

Commit bc12b9f

Browse files
committed
Refine return patterns and fix documentation example
Return Pattern Refinements: - Keep explicit 'return None' only for early exits (good practice) - Remove redundant explicit returns at end of functions (idiomatic Python) Documentation Improvements: - Fix _calculate_retry_delay example to use correct parameter names (backoff vs base_delay) - Remove Mock dependency from example code for better user experience - Provide self-contained, runnable examples that users can actually execute - Examples now demonstrate exponential backoff behavior clearly All 48 tests continue to pass with refined patterns.
1 parent f69abd7 commit bc12b9f

File tree

4 files changed

+11
-13
lines changed

4 files changed

+11
-13
lines changed

src/PowerPlatform/Dataverse/client.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -481,7 +481,6 @@ def delete_table(self, tablename: str) -> None:
481481
client.delete_table("SampleItem")
482482
"""
483483
self._get_odata()._delete_table(tablename)
484-
return None
485484

486485
def list_tables(self) -> list[str]:
487486
"""

src/PowerPlatform/Dataverse/core/http.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -153,17 +153,20 @@ def _calculate_retry_delay(self, attempt: int, response: Optional[requests.Respo
153153
Example:
154154
Calculate delays for successive retry attempts::
155155
156-
client = HttpClient(base_delay=1.0, max_backoff=30.0, jitter=True)
156+
client = HttpClient(backoff=1.0, max_backoff=30.0, jitter=True)
157157
158-
# Attempt 0: ~1.0s ± 25% jitter = 0.75s - 1.25s
159-
delay0 = client._calculate_retry_delay(0)
158+
# Exponential backoff examples (without jitter for predictable values)
159+
client_no_jitter = HttpClient(backoff=0.5, jitter=False)
160160
161-
# Attempt 2: ~4.0s ± 25% jitter = 3.0s - 5.0s
162-
delay2 = client._calculate_retry_delay(2)
161+
# Attempt 0: 0.5s (0.5 * 2^0)
162+
delay0 = client_no_jitter._calculate_retry_delay(0)
163163
164-
# With Retry-After header (takes precedence)
165-
response_with_retry_after = Mock(headers={"Retry-After": "15"})
166-
delay = client._calculate_retry_delay(1, response_with_retry_after) # Returns 15.0
164+
# Attempt 2: 2.0s (0.5 * 2^2)
165+
delay2 = client_no_jitter._calculate_retry_delay(2)
166+
167+
# With jitter enabled, delays vary randomly within ±25%
168+
# Attempt 1 with jitter: ~1.0s ± 0.25s = 0.75s - 1.25s
169+
delay_with_jitter = client._calculate_retry_delay(1)
167170
"""
168171

169172
# Check for Retry-After header (RFC 7231)

src/PowerPlatform/Dataverse/data/odata.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,6 @@ def _update(self, logical_name: str, key: str, data: Dict[str, Any]) -> None:
388388
entity_set = self._entity_set_from_logical(logical_name)
389389
url = f"{self.api}/{entity_set}{self._format_key(key)}"
390390
r = self._request("patch", url, headers={"If-Match": "*"}, json=data)
391-
return None
392391

393392
def _update_multiple(self, entity_set: str, logical_name: str, records: List[Dict[str, Any]]) -> None:
394393
"""Bulk update existing records via the collection-bound UpdateMultiple action.
@@ -446,7 +445,6 @@ def _delete(self, logical_name: str, key: str) -> None:
446445
entity_set = self._entity_set_from_logical(logical_name)
447446
url = f"{self.api}/{entity_set}{self._format_key(key)}"
448447
self._request("delete", url, headers={"If-Match": "*"})
449-
return None
450448

451449
def _get(self, logical_name: str, key: str, select: Optional[str] = None) -> Dict[str, Any]:
452450
"""Retrieve a single record.
@@ -1171,7 +1169,6 @@ def _delete_table(self, tablename: str) -> None:
11711169
metadata_id = ent["MetadataId"]
11721170
url = f"{self.api}/EntityDefinitions({metadata_id})"
11731171
r = self._request("delete", url)
1174-
return None
11751172

11761173
def _create_table(
11771174
self,

src/PowerPlatform/Dataverse/utils/pandas_adapter.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ def update(self, logical_name: str, record_id: str, entity_data: pd.Series) -> N
8686
if not payload:
8787
return None # nothing to send
8888
self._c.update(logical_name, record_id, payload)
89-
return None
9089

9190
# ---------------------------- Delete ---------------------------------
9291
def delete_ids(self, logical_name: str, ids: Sequence[str] | pd.Series | pd.Index) -> pd.DataFrame:

0 commit comments

Comments
 (0)