Skip to content

Releases: microsoft/PowerPlatform-DataverseClient-Python

v0.1.0b8

11 Apr 00:42
86ea250

Choose a tag to compare

v0.1.0b8 Pre-release
Pre-release

Added

  • Batch API: client.batch namespace for deferred-execution batch operations that pack multiple Dataverse Web API calls into a single POST $batch HTTP request (#129)
  • Batch DataFrame integration: client.batch.dataframe namespace with pandas DataFrame wrappers for batch operations (#129)
  • client.records.upsert() and client.batch.records.upsert() backed by the UpsertMultiple bound action with alternate-key support (#129)
  • QueryBuilder: client.query.builder("table") with a fluent API, 20+ chainable methods (select, filter_eq, filter_contains, order_by, expand, etc.), and composable filter expressions using Python operators (&, |, ~) (#118)
  • Memo/multiline column type support: "memo" (or "multiline") can now be passed as a column type in client.tables.create() and client.tables.add_columns() (#155)

Changed

  • Picklist label-to-integer resolution now uses a single bulk PicklistAttributeMetadata API call for the entire table instead of per-attribute requests, with a 1-hour TTL cache (#154)

Fixed

  • client.query.sql() silently truncated results at 5,000 rows. The method now follows @odata.nextLink pagination and returns all matching rows (#157)
  • Alternate key fields were incorrectly merged into the UpsertMultiple request body, causing 400 Bad Request on the create path (#129)
  • Docstring type annotations corrected for Microsoft Learn API reference compatibility (#153)

v0.1.0b7

17 Mar 23:44
ddab5f8

Choose a tag to compare

v0.1.0b7 Pre-release
Pre-release

Added

  • DataFrame namespace: client.dataframe.get(), .create(), .update(), .delete() for working with Dataverse records as pandas DataFrames and Series — no manual dict conversion required (#98)
  • Table metadata now includes primary_name_attribute and primary_id_attribute from tables.create() and tables.get_info() (#148)

Changed

  • pandas>=2.0.0 is now a required dependency (#98)

v0.1.0b6

13 Mar 01:49
87dec74

Choose a tag to compare

v0.1.0b6 Pre-release
Pre-release

Added

  • Context manager support: with DataverseClient(...) as client: for automatic resource cleanup, HTTP connection pooling, and close() for explicit lifecycle management (#117)
  • Typed return models Record, TableInfo, and ColumnInfo for record and table metadata operations, replacing raw Dict[str, Any] returns with full backward compatibility (result["key"] still works) (#115)
  • Alternate key management: client.tables.create_alternate_key(), client.tables.get_alternate_keys(), client.tables.delete_alternate_key() with typed AlternateKeyInfo model (#126)

Fixed

  • @odata.bind lookup bindings now preserve navigation property casing (e.g., new_CustomerId@odata.bind), fixing 400 Bad Request errors on create/update/upsert with lookup fields (#137)
  • Reduced unnecessary HTTP round-trips on create/update/upsert when records contain @odata.bind keys (#137)
  • Single-record get() now lowercases $select column names consistently with multi-record queries (#137)

v0.1.0b5

27 Feb 20:05
312d758

Choose a tag to compare

v0.1.0b5 Pre-release
Pre-release

Fixed

  • UpsertMultiple: exclude alternate key fields from request body (#127). The create path of UpsertMultiple failed with 400 Bad Request when alternate key column values appeared in both the body and @odata.id.

Full Changelog: v0.1.0b4...v0.1.0b5

v0.1.0b4

25 Feb 21:16
3faae2b

Choose a tag to compare

v0.1.0b4 Pre-release
Pre-release

Added

  • Operation namespaces: client.records, client.query, client.tables, client.files (#102)
  • Relationship management: create_one_to_many_relationship, create_many_to_many_relationship, get_relationship, delete_relationship, create_lookup_field with typed RelationshipInfo return model (#105, #114)
  • client.records.upsert() for upsert operations with alternate key support (#106)
  • client.files.upload() for file upload operations (#111)
  • client.tables.list(filter=, select=) parameters for filtering and projecting table metadata (#112)
  • Cascade behavior constants (CASCADE_BEHAVIOR_CASCADE, CASCADE_BEHAVIOR_REMOVE_LINK, etc.) and input models (CascadeConfiguration, LookupAttributeMetadata, Label, LocalizedLabel)

Deprecated

  • All flat methods on DataverseClient (create, update, delete, get, query_sql, upload_file, etc.) now emit DeprecationWarning and delegate to the corresponding namespaced operations

Full Changelog: v0.1.0b3...v0.1.0b4