项目作者: petr-muller

项目描述 :
Python Diff
高级语言: Python
项目地址: git://github.com/petr-muller/pyff.git
创建时间: 2018-02-02T15:54:04Z
项目社区:https://github.com/petr-muller/pyff

开源协议:Apache License 2.0

下载


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):

  1. pip install pythondiff

Usage

You can run pyff to compare two Python modules:

  1. pyff old.py new.py

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

  1. 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:

  1. 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.

  1. 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:

  1. pip install -r requirements-tests.txt

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

  1. $ . helpers/helpers.sh
  2. $ ft # Fast Test: run just unit tests, without pylint and mypy checks
  3. $ 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.