Skip to main content

A package for comparing snapshots of data and tracking differences when function change

Project description

snapdiff

Here's the README content as one continuous Markdown block:


snapdiff

snapdiff is a Python package for capturing snapshots of function input and output data to track changes over time. It’s designed for use in testing and debugging, allowing you to compare function results across different runs and log any differences.

Features

  • Snapshot Mode: Saves a snapshot of function inputs and outputs.
  • Diff Mode: Compares current function outputs with previously saved snapshots, logging differences.
  • Customizable Diff Functions: Use built-in or custom diff functions to handle comparisons.
  • Logging: Configurable logging options to monitor differences across function runs.

Installation

Install snapdiff using pip:

pip install snapdiff

Basic Usage

Setting Up Snapshots

Decorate a function with @snapper(mode="snap") to take a snapshot of inputs and outputs. This is useful for capturing a function's behavior for later comparisons.

from snapdiff import snapper

@snapper(mode="snap")
def example_function(a, b):
    return a + b

# Taking a snapshot
example_function(2, 3)

Comparing with Snapshots

Switch to mode="diff" to check if the function’s behavior has changed compared to the previous snapshot.

from snapdiff import snapper

@snapper(mode="diff")
def example_function(a, b):
    return a + b

# This will compare the result of the current call with the saved snapshot
example_function(2, 3)

If there’s any difference in input or output, it will be logged.

Advanced Usage

Custom Diff Functions

You can supply a custom diff function for cases where the built-in DeepDiff does not suit your needs.

from snapdiff import snapper

def custom_diff(a, b):
    return {"difference": a - b} if a != b else {}

@snapper(mode="diff", diff_func=custom_diff)
def example_function(a, b):
    return a * b

example_function(4, 5)

Logging Options

To enable or disable logging to a file, use the log_to_file parameter when initializing the Snapper decorator.

from snapdiff import snapper

@snapper(mode="diff", log_to_file=False)
def example_function(a, b):
    return a ** b

Configuration

snapdiff allows configuration using a YAML file named snapdiff_config.yaml to specify default directories for snapshots, log files, and subtype-specific options.

License

MIT License


For full documentation and examples, visit the GitHub repository.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

snapdiff-0.1.2.tar.gz (9.7 kB view details)

Uploaded Source

Built Distribution

snapdiff-0.1.2-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

Details for the file snapdiff-0.1.2.tar.gz.

File metadata

  • Download URL: snapdiff-0.1.2.tar.gz
  • Upload date:
  • Size: 9.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for snapdiff-0.1.2.tar.gz
Algorithm Hash digest
SHA256 7422a9e2761a3c8eef3c084cdaa91df99f8c5b0cef830b36f5fb564616c23170
MD5 acb3cfa74ac944ab375db1d99de1a2f0
BLAKE2b-256 59c56d1ace563b9917982753a32eae96c835913a82f6caa1d576bb250b9adce2

See more details on using hashes here.

File details

Details for the file snapdiff-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: snapdiff-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 9.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for snapdiff-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f63f1b509fdb4b52c97f7862816f89367eda28ab3b6ba7ce3b763f9746ef9b0f
MD5 3592184d6a82f874076aa97040927056
BLAKE2b-256 cff76a882236521ca877dcfd99dc0262e7da539561c0d4a9e2eab520204c0404

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page