Announcing Pylava: A fork of Pylama for Python 3.7
Clone this wiki locally
This is an announcement of the availability of Pylava, a code audit tool for Python forked from Pylama 7.4.3.
What is Pylama?
Pylama is a simple and effective Python package that helps us to perform code quality checks in Python projects with ease. Pylama wraps around other popular linters and code quality tools like pycodestyle, pydocstyle, PyFlakes, McCabe, etc., and provides a very easy to use and uniform interface to perform code auditing for Python projects.
Pylama was written by Kirill Klenov. Kirill has done an excellent job of building and maintaining this tool for over 5 years. Incidentally, the first commit to Pylama was made exactly 6 years ago on 17-Aug-2012. No, this announcement was not timed to coincide with the birthday of Pylama. The timing is purely coincidental.
Why Fork Pylama?
Due to the remarkable stability and ease of use that Pylama offers, it has become an integral part of the development life cycle of many Python projects. However Pylama stopped receiving the maintenance updates it needs since about a year ago. The last commit to the project was made on 13-Sep-2017. The project appears to be effectively unmaintained since then.
With the release of Python 3.6, it became clear that Pylama was in need of maintenance updates. Python 3.6 warned that async was about to become a reserved keyword in Python 3.7. This meant that we could no longer have a module named async and import from it.
Finally, the release of Python 3.7 broke Pylama. Pylama no longer worked with Python 3.7. It failed with this error:
$ pylama
Traceback (most recent call last):
File "venv/bin/pylama", line 7, in <module>
from pylama.main import shell
File "venv/lib/python3.7/site-packages/pylama/main.py", line 10
from .async import check_async
^
SyntaxError: invalid syntax
A pull request to fix this issue was available. It needed to be merged and released on PyPI. But due to lack of maintenance, it seemed unlikely that merging of the pull request and subsequent release would occur anytime soon. Attempts to establish contact with the author of Pylama were unsuccessful.
Without any contact with the author, we couldn't be sure why Pylama was not receiving any updates but from GitHub activity, it appeared that he was working on other projects and Pylama was not a priority at the time. Therefore it became necessary to fork the project and release it with a new name on PyPI. As a result, Pylama was forked into Pylava to continue further maintenance on the project, merge the pending pull requests, and make the project work with Python 3.7 again.
Welcome to Pylava
Pylava was forked from Pylama 7.4.3. Uploading new releases to PyPI without the permission to upload releases to the existing Pylama project on PyPI required choosing a new name for the fork. "Pylava" seemed different enough to not cause any confusion with Pylama while still bearing some resemblance with "Pylama" to highlight the connection between the two projects.
Pylava uses its own versioning sequence to avoid any confusion with Pylama versions. Pylama 7.4.3 is considered Pylava 0.0.0. This is not an actual release but only a tag that represents the exact point at which Pylama was forked into Pylava. Pylava 0.1.2 is the first working version available for use.
Pylava is now available via its own PyPI entry. To install and use it, you only need to enter the following commands:
pip install pylava
pylava
If there are no code quality problems detected, the second command does not generate any output. No output is good.
On some Python 3 distributions, you may need to replace pip with pip3 in the command above. If you have been using Pylama and you are now switching to Pylava, you need to substitute all references to pylama with pylava in your project.
If you find that something that used to work on Pylama does not work on Pylava, please create an issue.
Request for Contributions
Pylava is very new. The basic usage works fine. Although it is forked from an old and stable project, the renaming of the project, its package name, configuration parameters, etc. from pylama to pylava may have broken something. We request Pylama users to give Pylava a shot and if anything is found to be broken, create an issue to report it.
At present, Pylava is being maintained by a few collaborators who decided to revive the project and merge some of the pending pull requests to meet the current requirements of Python developers.
To ensure that further development and maintenance of this project continues, we request users and contributors to report issues, send pull requests, and review pull requests.
Ironically, running pylava on Pylava reports 13 issues currently. It would be nice if we can fix them soon.
We appreciate all the help we can get with regards to improving Pylava.
[Published on 17-Aug-2018]