Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Copyright © 2020– Spyder Project Contributors
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.
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
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.
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 .
We use pytest to run tests as it follows:
pytest -x -v three_merge/tests
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.
Please see our CHANGELOG file to learn more about our new features and improvements.
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.
FAQs
Simple library for merging two strings with respect to a base one
We found that three-merge demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
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.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.