All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
- #276 - Removed upper version bound for
structlog
dependency
- #281 - Properly deprecated
DiffSync
class name - #273 - Properly capitalized
DiffSync
in documentation - #273 - Removed more mentions of
DiffSync
in favor ofAdapter
- #274 - Fixed doc section title for getting started
- #269 - Fixed wording for a couple of docstrings
- #265 - Fixed readthedocs build
- BREAKING CHANGE #236/240 - Upgrade to Pydantic v2.
- #249 - Fixes natural deletion order flag
- #247 - Fixes underspecified typing_extensions dependency
- #247 - Deprecates Python 3.7
- #220 - Implement DiffSyncModelFlags.NATURAL_DELETION_ORDER.
- #219 - Type hinting overhaul
- #182 - Added
get_or_add_model_instance()
andupdate_or_add_model_instance()
APIs. - #189 - Added note in
README.md
about runninginvoke tests
. - #190 - Added note in
README.md
about runninginvoke build
.
- #77/#188 -
sync_from()
andsync_to()
now return theDiff
that was applied. - #211 - Loosened
packaging
andstructlog
library dependency constraints for broader compatibility.
- #176 - Remove pytest-redislite in favor of pytest-redis.
- #174 - Update Dockerfile to install build-essential
- #174 - Add methods to load data from dictionary and enable tree traversal
- #174 - Add a
get_or_none
method to the DiffSync class - #168 - Add 'skip' counter to diff.summary()
- #169/#170 - Add documentation about model processing order
- #121/#140 - Add and configure renovate
- #140 - Add renovate configuration validation to the CI
- #149 - Limit redundant CI concurrency
- #120 - Dropped support for Python 3.6, new minimum is Python 3.7
- #111 - Added example 6, regarding IP prefixes.
- #107 - Updated example 5 to use the Redis backend store.
- #115 - Fixed ReadTheDocs rendering pipeline
- #118 - Fixed a regression in
DiffSync.get(modelname, identifiers)
introduced in 1.5.0
- #106 - Add a new, optional, backend store based in Redis
- #101 - Revert changed introduced in #90 that affected
DiffElement.action
NOTE: this change is a breaking change against DiffSync 1.4.0 through 1.4.2, but was necessary to restore backward compatibility with DiffSync 1.3.x and earlier. Apologies for any inconvenience this causes.
- #103 - Update development dependencies
WARNING - #90 inadvertently introduced a breaking API change in DiffSync 1.4.0 through 1.4.2 (#101); this change was reverted in #102 for DiffSync 1.4.3 and later. We recommend not using this release, and moving to 1.4.3 instead.
- #100 - Added explicit dependency on
packaging
.
WARNING - #90 inadvertently introduced a breaking API change in DiffSync 1.4.0 through 1.4.2 (#101); this change was reverted in #102 for DiffSync 1.4.3 and later. We recommend not using this release, and moving to 1.4.3 instead.
- #95 - Removed optional dependencies on
sphinx
,m2r2
,sphinx-rtd-theme
,toml
.
WARNING - #90 inadvertently introduced a breaking API change in DiffSync 1.4.0 through 1.4.2 (#101); this change was reverted in #102 for DiffSync 1.4.3 and later. We recommend not using this release, and moving to 1.4.3 instead.
- #53 - Add a new example based on pynautobot and Nautobot REST API
- #59 - Add proper documentation published in Read the doc
- #68 - Cleanup Readme, add link to new documentation site
- #70 - Add
add_or_update()
method to DiffSync class that requires a DiffSyncModel to be passed in and will attempt to add or update an existing object - #72 - Add core engine section in docs and rename example directories
- #75 - Add support for Structlog v21 in addition to v20.
- #80 - Add support for an existing Diff object to be passed to
sync_to()
&sync_from()
to prevent another diff from being calculated. - #81 - Add a new example based on PeeringDB
- #83 - Add support for Python 3.10
- #87 - Add new model flags :
SKIP_UNMATCHED_BOTH
,SKIP_UNMATCHED_SRC
&SKIP_UNMATCHED_DST
to match the behavior of the global flags
- #62 - Update CI Token
- #69 - Replace Travis CI with Github Actions to run unit tests
- #82 - Update lock file with latest versions.
- #90 - Convert list of actions (
create
,update
,delete
) to proper Enum
- #51 - Update minimum Pydantic version due to security advisory GHSA-5jqp-qgf6-3pvh
- #63 - Fix type in Readme
- #48 - added optional
callback
argument todiff_from
/diff_to
/sync_from
/sync_to
for use with progress reporting.
- #45 - minimum Python version lowered from 3.7 to 3.6, also now tested against Python 3.9.
- #37 - added
sync_complete
callback, triggered onsync_from
completion with changes. - #41 - added
summary
API for Diff and DiffElement objects. - #44 - added
set_status()
andget_status()
APIs so that DiffSyncModel implementations can provide details for create/update/delete logging
- Now requires Pydantic 1.7.2 or later
- #34 - in diff dicts, changed keys
src
/dst
/_src
/_dst
to-
and+
- #43 -
DiffSync.get_by_uids()
now raisesObjectNotFound
if any of the provided uids cannot be located;DiffSync.get()
raisesObjectNotFound
orValueError
on failure, instead of returningNone
.
- #44 - On CRUD failure, do not generate an extraneous "success" log message in addition to the "failed" message
Initial release