Skip to main content

three-merge

Project License - MIT pypi version conda version download count Downloads PyPI status Linux tests MacOS tests Windows tests

Copyright © 2020– Spyder Project Contributors

Overview

Simple Python library to perform a 3-way merge between strings, based on diff-match-patch. This library performs merges at a character level, as opposed to most VCS systems, which opt for a line-based approach.

Installing

To install three-merge, you can use both conda or pip package managers:

# Using conda (Recommended)
conda install three-merge -c spyder-ide

# Using pip
pip install three-merge

Dependencies

This package depends on diff-match-patch to compute and track the differences across the source and target strings with respect to the base one.

Installing locally

To install and develop three-merge locally, you will need to install diff-match-patch:

# Using conda
conda install diff-match-patch

# Using pip
pip install diff-match-patch

Then, you can install the package locally using pip:

pip install -U -e .

Running tests

We use pytest to run tests as it follows:

pytest -x -v three_merge/tests

Package usage

Three-merge provides a merge function to merge changes from two strings (source, target) with respect a original string (base). This library is able to handle additions, deletions and preserved sections across both strings, while detecting and highlighting possible merge conflicts (like Git).

# Package import
from three_merge import merge

# Strings have non-conflicting additions
base = '123456789101112'
source = '0123456789101112'
target = '12345678910111213'

# merged = '012345678910111213'
merged = merge(source, target, base)

# Strings have an addition conflict
base = '123456789101112'
source = '123a456789101112'
target = '123b456789101112'

# merged = '123<<<<<<< ++ a ======= ++ b >>>>>>>456789101112'
merged = merge(source, target, base)

# Strings have non-conflicting addition/deletions
base = '123456789101112'
source = '123456789ab101112'
target = '123789101112'

# merged = '123789ab101112'
merged = merge(source, target, base)

For more examples, please take a look at our tests.

Changelog

Please see our CHANGELOG file to learn more about our new features and improvements.

Contribution guidelines

We follow PEP8 and PEP257 for all Python modules. We use MyPy type annotations for all functions and classes declared on this package. Feel free to send a PR or create an issue if you have any problem/question.

Metadata

Release files for three-merge 0.1.1

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

Source distribution (sdist)

Source distribution for three-merge 0.1.1
File Size Uploaded
three-merge-0.1.1.tar.gz 5.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for three-merge 0.1.1
File Interpreter ABI Platform
three_merge-0.1.1-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 12.3 kB

Release files / three-merge-0.1.1.tar.gz

Download URL three-merge-0.1.1.tar.gz
Size 5.9 kB
Tags Source
SHA-256 checksum
How to use checksums
60f6afe144595560d63ae32625351bcef3b94733b54eb97800a9feb0f3d9d970
BLAKE2b-256 checksum
How to use checksums
4dd186f4a088f2ebdc3ff1a9cb653aab91e588a8d0930b41c2e066e6a2920ae7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1.post20200622 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.6

Release files / three_merge-0.1.1-py2.py3-none-any.whl

Download URL three_merge-0.1.1-py2.py3-none-any.whl
Size 6.4 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
dd219f4696aa0bbec6099ac3528b4de0450ff9bde862dd8f6d6f52e745f83464
BLAKE2b-256 checksum
How to use checksums
23bea52588102605ec52b4e88340d65a290b6465c1dbcd2d943ab149b012908b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1.post20200622 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.6

Release history Release notifications | RSS feed

This release

0.1.1 This release

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