This week we welcome Amir Rachum as our PyDev of the Week. Amir is the author/maintainer of pydocstyle and yieldfrom. Amir also writes 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).
In 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 an 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 would 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 http://py3readiness.org/ 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!