macadmins / jamf-pro-sdk-python

A client library for the Jamf Pro APIs and webhooks.
https://macadmins.github.io/jamf-pro-sdk-python/
MIT License
51 stars 10 forks source link

Pydantic 2 Update #36

Closed brysontyrrell closed 11 months ago

brysontyrrell commented 11 months ago

This large pull request is an update to the project to move from Pydantic v1 to v2. When the SDK project first started v2 was only being planned. Now that it has matured it's time for this project to adopt the latest version. This should address some conflicts that have been encountered in environments where v2 was already installed, and it should also provide an execution speed increase.

Most of the changes are switching from deprecated model configs and methods to the new v2 options. All Optional fields must have a default in v2 (the SDK models all default to None as was the behavior before this update). This is the repetitive bulk of the PR. Most notable is the swap of Extra and Config for model_confg/ConfigDict.

All existing tests have been ensured to pass without modification beyond changing out v1 to v2 Pydantic code. Additional tests have been added for the webhook generators to ensure those models produce mock client data as expected.

There is a new integration test file that uses the dummy Jamf Cloud instance provided by Jamf for integration tests. These tests will not be used in GitHub Actions yet. A long term plan for integration testing will be worked out, but locally this allows developers to ensure live read operations work as expected.

brysontyrrell commented 11 months ago

This also fixes two bugs I found (one in Pro pagination).