Skip to main content

Library to parse and apply unified diffs.

Project description

[![CI Status](https://github.com/timfel/paatch/actions/workflows/workflow.yml/badge.svg)](https://github.com/timfel/paatch/actions/workflows/workflow.yml) [![PyPI](https://img.shields.io/pypi/v/paatch)](https://pypi.python.org/pypi/paatch)

## Paatch - parse and apply unified diffs

### Installation and Usage

pip install paatch patch -h

### Why did I fork?

This project is a fork of [python-patch-ng](https://github.com/conan-io/python-patch-ng), which itself is a fork of the original [python-patch](https://github.com/techtonik/python-patch) project.

I needed a tool to apply unified patches with some GNU extensions, ideally in pure Python. The set of patches I’m interested are the [GraalPy patches](https://github.com/oracle/graalpython/tree/master/graalpython/lib-graalpython/patches). They apply fine with GNU patch, but the BSD patch utility in macOS chokes on some and getting GNU patch to work on Windows was a bit of hit and miss. This is also why originally the python-patch project was born in the first place:

> In 2008 there was no reliable Windows tool to apply patches, > and there was no cross-platform solution that could be safely > run by web server process. > > (UNIX patch utility)[http://www.gnu.org/software/patch/] was > (ported to windows)[http://gnuwin32.sourceforge.net/packages/patch.htm], > but there were (a couple of bugs) > [http://www.google.com/search?q=Assertion+failed%3A+hunk%2C+file+patch.c] > that proved that it can not be run securely in web server process. > The utility was also hard to tweak without a C compiler, it messed > badly with LF and CRLF line end differences, and so this project > was born. > > patch.py was meant to be a cross-platoform tool with intuitive > defaults, taking care of the most problems (e.g. line end > differences) automatically.

So I added what I needed, and now have a PyPI package I can use to apply GraalPy patches on each of these platforms and they will be applied in the same manner.

### Credits

Reproducing the thanks in the original project:

Alex Stewart Wladimir J. van der Laan (laanwj) azasypkin Philippe Ombredanne mspncp Yen Chi Hsuan (@yan12125)

  • [LICENSE: UPL](LICENSE)

Project details


Download files

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

Source Distribution

paatch-1.20.0.tar.gz (18.8 kB view details)

Uploaded Source

Built Distribution

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

paatch-1.20.0-py3-none-any.whl (18.4 kB view details)

Uploaded Python 3

File details

Details for the file paatch-1.20.0.tar.gz.

File metadata

  • Download URL: paatch-1.20.0.tar.gz
  • Upload date:
  • Size: 18.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for paatch-1.20.0.tar.gz
Algorithm Hash digest
SHA256 a6c3546e8a37bc14fefd129399245de1b097123ac23601e581b98a3e423d01ed
MD5 b2e326df9c49b144814ba8aead39c7e7
BLAKE2b-256 d818a5a340e7c8d5503a42dc29c82047a9eb7fd8f883390fcedf3dfad61680eb

See more details on using hashes here.

File details

Details for the file paatch-1.20.0-py3-none-any.whl.

File metadata

  • Download URL: paatch-1.20.0-py3-none-any.whl
  • Upload date:
  • Size: 18.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for paatch-1.20.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c8c9264459407d20fed1590a47ac16d325066c049549c9bcd5589fea14ed5e54
MD5 3b80eb9c5196c04a5f85fd41c80b6ab4
BLAKE2b-256 3dc417cef7c5a37e52d9145a9b0b42c349d4b536f78b32dd11a87619a08cbb4d

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