Skip to main content

A Streamlit component for code diff visualization using v-code-diff

Project description

🔍 Streamlit Code Diff

PyPI version Python 3.9+

A simple Streamlit component for code diff visualization using v-code-diff. Great for displaying code changes, git diffs, and side-by-side comparisons.

Features

  • Automatic Theme Detection - Adapts to Streamlit's light/dark theme
  • Multi-Language Support - Syntax highlighting for 10+ programming languages
  • Customizable Display - Side-by-side or line-by-line diff formats
  • Granular Diff Styles - Word-level or character-level difference highlighting
image

Installation

pip install streamlit-code-diff

Quick Start

import streamlit as st
from streamlit_code_diff import st_code_diff

old_code = """def hello():
    print("Hello")"""

new_code = """def hello(name="World"):
    print(f"Hello, {name}!")"""

# Display the diff
result = st_code_diff(
    old_string=old_code,
    new_string=new_code,
    language="python"
)

st.write(f"Changes detected: {result['isChanged']}")

Parameters Reference

st_code_diff()

Display a code diff visualization.

Parameters

Parameter Type Default Description
old_string str Required Original code content
new_string str Required Modified code content
language str "plaintext" Programming language for syntax highlighting
output_format "line-by-line" | "side-by-side" "side-by-side" Display format
diff_style "word" | "char" "word" Granularity of diff highlighting
context int 5 Number of context lines around changes
filename str | None None Original filename to display
new_filename str | None None New filename to display
theme "light" | "dark" | None None Force theme (auto-detects if None)
trim bool True Remove leading/trailing whitespace
no_diff_line_feed bool True Ignore line ending differences
height str | None None Maximum height (e.g., "300px", "50vh")
force_inline_comparison bool False Force inline comparison (word/char level)
hide_header bool False Hide header bar
hide_stat bool False Hide statistical part in header bar
ignore_matching_lines str | None None Pattern to ignore matching lines (regex)
key str | None None Unique component key

Returns

Returns a dictionary with diff statistics:

{
    "isChanged": bool,    # Whether differences were detected
    "addNum": int,        # Number of added lines
    "delNum": int         # Number of deleted lines
}

Supported Languages

The component supports syntax highlighting for:

  • plaintext (default)
  • python
  • javascript / js
  • typescript / ts
  • json
  • yaml / yml
  • java
  • bash / shell
  • sql
  • html
  • xml
  • css
  • markdown / md

Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

streamlit_code_diff-0.1.2-py3-none-any.whl (139.3 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for streamlit_code_diff-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a39b360f811fca9280c173bf0ef1e34f57d68f525a3ade93fed904b489b0e74a
MD5 c538e6b3a52fbe0f441cc3fb546740f6
BLAKE2b-256 aef1494e1999f3ef20f3941a784d16761c423bec73b3c57b046a4a7b36ba096f

See more details on using hashes here.

Supported by

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