Writing Good Python

Tools and libraries for achieving code consistency

Prashant Chaubey

Best Practice Code Analysis Documentation Static Analysis Type-Hinting

See in schedule Download/View Slides

Like other programming languages, it is easy to write cryptic, unmaintainable, and rigid Python code. Moreover, in teams, this problem escalates due to varied coding styles of developers. How to ensure code quality and consistency? My goal with this talk is to educate my audience about some tools and libraries that can help us in making our code more consistent.
I was a Software Engineer who wrote Automation systems in Python for some of the fortune 500s. I intend to cover the following major ideas:
• What is a high-quality code? How consistency is an important aspect of maintainability?
• Ways to achieve consistency in Python
o What is PEP8?
o “pylint” - a source code, bug, and quality checker for python and follows the style recommended by PEP 8
o What is PEP257?
o “pydocstyle” checks compliance with Python docstring conventions.
o What is PEP484?
o “mypy” provides optional static type checking.
o “bandit” which can find common security issues in Python code.
o “black” which is a Python source code formatter.
• Ways to integrate mentioned tools in development life cycle
o While writing (IDE extensions)
o During commit (pre-commit hooks)
o After push (Build pipelines)
• “pre-commit” is a framework for managing and maintaining multi-language pre-commit hooks
• Example of an Azure DevOps pipeline integrating all mentioned tools.
pylint, pydocstyle, mypy, bandit, black and pre-commit are available on PyPI. My audience should know how to install Python libraries from PyPi using pip.

Type: Talk (30 mins); Python level: Beginner; Domain level: Beginner

Prashant Chaubey

Currently, I am pursuing my Masters in Computer Science from University College Dublin with Artificial Intelligence and Distributed Computing as my focus areas. A language agnostic software engineer in the past who developed everything from an application's front-end to the back-end and everything between. I built web and desktop applications, delivered distributed RPA systems and worked on areas like automatic code generation and text classification. I have 3 years of Software Engineering experience.