PyDev of the Week: Amir Rachum

This week we welcome Amir Rachum as our PyDev of the Week. Amir is the author / maintainer of pydocstyle and yieldfrom. Amir also write a fun little blog about Python. Let’s take a few moments to get to know Amir better!

Can you tell us a little about yourself (hobbies, education, etc):

I’m an Israeli software developer from the Tel Aviv area. I have a B.Sc in Software Engineering. I spent three out of the four years of my degree working in a student position to get some real-world experience, which I believe made a huge difference to this day (a positive one for my skills, less so for my grades).

On my spare time, I enjoy playing board games with friends – I have over 200 board games in my collection, so far.

Why did you start using Python?

I played a little with Python when I was a student, for utility scripts here and there, but most other developers used Tcl, so I followed suit. It wasn’t until my next job that I started developing with Python full time – started out with Python 2.4 and moved up to 2.7. Unfortunately, we still haven’t migrated to Python 3.

I spent about 3 years working with Django for a web application backend as well as asynchronous task running service that interacted (and ran on) custom embedded boards.

What other programming languages do you know and which is your favorite?

I also have experience working in C++ both in desktops and embedded systems. I also dabbled in some Java development. By far, Python is my favorite – the speed in which I can bring a thought into implementation without “bureaucratic” obstacles is amazing.

What projects are you working on now?

I’m the author and maintainer of pydocstyle, which is a static docstring linter for Python. Most people are familiar with PEP8, which is a PEP that defines Python coding conventions. PEP257 is a similar PEP that defines docstring conventions – spacing, content, etc. I found myself leaving a lot of review comments about docstring conventions, so I looked for a tool that will automatically enforce it, like pep8 had for PEP8. I come across Vladimir Keleshev’s pep257 and started contributing until I became the maintainer.

Later, Guido van Rossum asked both projects to change our name so as to not imply that our implementation was official. So we decided on pycodestyle for `pep8` and `pydocstyle` for `pep257`. We considered this change a forking of `pep257`.

With that name change, we also moved the project into the PyCQA umbrella. PyCQA is the Python Code Quality (unauthorized) Authority, which gathers several code quality tools, including `pydocstyle`, `pycodestyle`, `pylint`, `flake8` and more.

I also just release a small library called yieldfrom. It’s a backport of the `yield from` semantic from Python 3 to Python 2. It focuses on a pretty specific issue, so I doubt it will take any more of my time, but I find it extremely useful when working with nested generators in Python 2.

When I have a good idea and some free time, I also write a blog, where I write about Programming (mostly Python) and related subjects. I’m particularly proud of my post on Knowledge Debt.

Which Python libraries are your favorite (core or 3rd party)?

I’m a big fan of `pathlib`, which suddenly made file system manipulation enjoyable. It’s my private mission to convert our legacy code to use `pathlib` bit by bit.

I also like `mock` for testing and `docopt` for command line parsing.

Where do you see Python going as a programming language?

The move to Python 3 is happening. I remember when had a few dozen Python 3 compatible libraries, and today it shows that 343 out of the top 360 packages in PyPI support Python 3. And if you take a closer look, most of the packages that don’t, simply have different names for their Python 3 forks.

I use Python 3 for every new project I work on, and I urge everyone to do the same.

Thanks so much for doing the interview!