Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

three-merge

Package Overview
Dependencies
Maintainers
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

three-merge

Simple library for merging two strings with respect to a base one

  • 0.1.1
  • PyPI
  • Socket score

Maintainers
2

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.

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc