Skip to main content

inline-snapshot

ci Docs pypi version Python Versions PyPI - Downloads coverage GitHub Sponsors Discord

Installation

You can install "inline-snapshot" via pip:

pip install inline-snapshot

Key Features

  • support for normal assertions: inline-snapshot can now also fix normal assertions which do not use snapshot() like:

    assert 1 + 1 == 3
    

    You can learn here more about this feature.

  • Intuitive Semantics: snapshot(x) mirrors x for easy understanding.

  • Versatile Comparison Support: Equipped with x == snapshot(...), x <= snapshot(...), x in snapshot(...), and snapshot(...)[key].

  • No CLI arguments required: you will get a nice report where you can review the snapshot changes when you run pytest (only for CPython > 3.11, you have to use --inline-snapshot=review on older versions).

  • Enhanced Control Flags: Utilize various flags for precise control of which snapshots you want to change.

  • Preserved Formatting: Retains formatting consistency with Black formatting or a custom format-command.

  • External File Storage: Store snapshots externally using external("uuid:eb1167b3-67a9-4378-bc65-c1e582e2e662.json") with support for custom file formats.

  • Seamless Pytest Integration: Integrated seamlessly with pytest for effortless testing.

  • Integration into normal functions: use snapshot_arg() to convert the arguments of your function into snapshots.

  • Customizable: code generation can be customized with @customize

  • Nested Snapshot Support: snapshots can contain other snapshots

  • Fuzzy Matching: Incorporate dirty-equals for flexible comparisons within snapshots.

  • Dynamic Snapshot Content: snapshots can contain non-constant values

  • Comprehensive Documentation: Access detailed documentation for complete guidance.

Usage

You can use snapshot() instead of the value which you want to compare with.

from inline_snapshot import snapshot


def test_something():
    assert 1548 * 18489 == snapshot()

You can now run the tests and record the correct values.

$ pytest --inline-snapshot=review
from inline_snapshot import snapshot


def test_something():
    assert 1548 * 18489 == snapshot(28620972)

The following examples show how you can use inline-snapshot in your tests. Take a look at the documentation if you want to know more.

from inline_snapshot import external, outsource, snapshot


def test_something():
    for number in range(5):
        # testing for numeric limits
        assert number <= snapshot()
        assert number >= snapshot()

    for c in "hello world":
        # test if something is part of a set
        assert c in snapshot()

    s = snapshot()

    for number in range(5):
        # create sub-snapshots at runtime
        assert s[number]["square"] == number**2
        assert s[number]["pow_of_two"] == (
            (number & (number - 1) == 0) and number != 0
        )

    assert outsource("large string\n" * 5) == snapshot()

    assert "generates\nmultiline\nstrings" == snapshot()

pytest output for pytest

snapshot_arg() can also be used for function parameters:

import subprocess as sp
import sys
from inline_snapshot import snapshot_arg


def run_python(cmd, stdout="", stderr=""):
    result = sp.run([sys.executable, "-c", cmd], capture_output=True)
    assert result.stdout.decode() == snapshot_arg(stdout)
    assert result.stderr.decode() == snapshot_arg(stderr)


def test_cmd():
    run_python("print('hello world')")

    run_python("1/0")

pytest output for pytest

Feedback

inline-snapshot provides some advanced ways to work with snapshots.

I would like to know how these features are used to further improve this small library. Let me know if you've found interesting use cases for this library via 𝕏, fosstodon or in the github discussions.

Sponsors

I would like to thank my sponsors. Without them, I would not be able to invest so much time in my projects.

Gold sponsor 🥇

logfire

Bronze sponsor 🥉

openai

I have also started to offer insider features for inline-snapshot. I will only release features as insider features if they will not cause problems for you when used in an open source project. I hope sponsoring will allow me to spend more time working on open source projects. Thank you for using inline-snapshot, the future will be 🚀.

Issues

If you encounter any problems, please report an issue along with a detailed description.

License

Distributed under the terms of the MIT license, "inline-snapshot" is free and open source software.

Metadata

Release files for inline-snapshot 0.36.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for inline-snapshot 0.36.0
File Size Uploaded
inline_snapshot-0.36.0.tar.gz 2.5 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for inline-snapshot 0.36.0
File Interpreter ABI Platform
inline_snapshot-0.36.0-py3-none-any.whl Python 3 none any Details

Total release size: 2.6 MB

Release files / inline_snapshot-0.36.0.tar.gz

Download URL inline_snapshot-0.36.0.tar.gz
Size 2.5 MB
Tags Source
SHA-256 checksum
How to use checksums
c45dfc34affc42116fd23e22665fb58e59426c564ddb17114a6833f61a31b1f7
BLAKE2b-256 checksum
How to use checksums
bc3905067e7dd5c27e3fd31760a21db6a8e9d6908a39b5e17b8698f473b6b7fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 2, 2026.

Transparency log

Release files / inline_snapshot-0.36.0-py3-none-any.whl

Download URL inline_snapshot-0.36.0-py3-none-any.whl
Size 98.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1079cf302098fedb418c7ac2be9cadd14f2e71461143bcaf605be1214530bef4
BLAKE2b-256 checksum
How to use checksums
39def625b9c923c4264ee8d94e416c0d5fd59194f7b6cd8fc0d6ec2f51dfc506
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 2, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.36.0 This release

2 release files

0.35.4

2 release files

0.35.3

2 release files

0.35.2

2 release files

0.35.1

2 release files

0.35.0

2 release files

0.34.2

2 release files

0.34.0

2 release files

0.33.0

2 release files

0.32.7

2 release files

0.32.6

2 release files

0.32.5

2 release files

0.32.3

2 release files

0.32.2

2 release files

0.32.1

2 release files

0.32.0

2 release files

0.31.0

2 release files

0.30.1

2 release files

0.30.0

2 release files

0.29.4

2 release files

0.29.1

2 release files

0.29.0

2 release files

0.28.0

2 release files

0.27.2

2 release files

0.26.0

2 release files

0.25.3

2 release files

0.25.2

2 release files

0.25.1

2 release files

0.25.0

2 release files

0.24.0

2 release files

0.23.2

2 release files

0.23.1

2 release files

0.23.0

2 release files

0.22.3

2 release files

0.22.2

2 release files

0.22.1

2 release files

0.21.2

2 release files

0.21.1

2 release files

0.21.0

2 release files

0.20.9

2 release files

0.20.8

2 release files

0.20.7

2 release files

0.20.6

2 release files

0.20.3

2 release files

0.20.2

2 release files

0.19.3

2 release files

0.19.2

2 release files

0.19.1

2 release files

0.19.0

2 release files

0.18.1

2 release files

0.18.0

2 release files

0.17.1

2 release files

0.17.0

2 release files

0.16.0

2 release files

0.15.1

2 release files

0.15.0

2 release files

0.14.0

2 release files

0.13.3

2 release files

0.13.2

2 release files

0.13.1

2 release files

0.13.0

2 release files

0.12.0

2 release files

0.10.2

2 release files

0.10.1

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page