Skip to main content

Python Diff

Project description

pyff: Python Diff

Python Diff compares two versions of Python code (modules, packages, directories containing Python modules and/or packages) and detects syntactical and semantical differences between them.

Build Status Maintainability Codacy Badge Coverage Status

Installation

You can install pyff from Python Package Index as pythodiff (unfortunately, a name pyff was taken already):

pip install pythondiff

Usage

You can run pyff to compare two Python modules:

pyff old.py new.py

For comparing Python packages, there is the pyff-package executable:

pyff-package old_package new_package

You can also compare directories using the pyff-dir executable. In this case, pyff finds all Python content in both directories (recurively) and compares everything it finds:

pyff-dir old_directory new_directory

Finally, pyff-git can compare Python content between two revisions in a given Git repository. As with the pyff-dir case, this finds all Python content in the repository.

pyff-git https://github.com/petr-muller/pyff.git master^ master

Development

The development of pyff is far from complete: most of the basic features (code elements being removed, changed or added) are there but not all of them. Some Python code can also confuse pyff or even make it crash. PRs or issue reports are happily accepted.

pyff is written using a modern (3.6+) Python version and has both unit and integration tests. The unit test coverage goal is 100% but it is OK to not cover some elementary (or really hard to unit-test) code, provided the code is marked with a # pragma: no cover comment. pytest is used as a unit test driver. All code is statically checked with Pylint and also annotated with Python type hints. The mypy checker is used to check them. You can install all necessary test requirements using pip:

pip install -r requirements-tests.txt

There are shell helpers in helpers/helpers.sh that make executing all checks easier:

$ . helpers/helpers.sh
$ ft # Fast Test: run just unit tests, without pylint and mypy checks
$ st # Slow Test: run all (unit and integration) tests, pylint and mypy

The integration tests are executed using an excellent clitest tool.

Future

pyff is a pre-1.0.0 version: basically a toy project of mine. A brief list of TODOs for me to consider doing a 1.0.0 version is in #19. My idea is to bring pyff to a small GitHub PR-commenting bot that would comment PRs to Python repositories with a nice, human-readable summary of changes.

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

pythondiff-0.7.0.tar.gz (19.4 kB view details)

Uploaded Source

Built Distribution

pythondiff-0.7.0-py3-none-any.whl (22.9 kB view details)

Uploaded Python 3

File details

Details for the file pythondiff-0.7.0.tar.gz.

File metadata

  • Download URL: pythondiff-0.7.0.tar.gz
  • Upload date:
  • Size: 19.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pythondiff-0.7.0.tar.gz
Algorithm Hash digest
SHA256 39ede1a5848b6ea188a806d330c654504ba822c22914af0509925a25eb15bcbe
MD5 1d1a1207538a9228a6e4a2dbc4d47f88
BLAKE2b-256 4ed2ecec600129434e450d5474f8f08031cbd1be8785f806f0c21f842578923a

See more details on using hashes here.

File details

Details for the file pythondiff-0.7.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pythondiff-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ce88257bf229e7ff8ea9b52c4fdad6e9e857dc7ecbf046d2c273dcae0adebf1b
MD5 d85a3eecdc7cbf0546e274560001de28
BLAKE2b-256 85e97528985b0eb03da10b7b7015c75425be285324cdb0381358413d64741c7f

See more details on using hashes here.

Supported by

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