In the README under "Coding style" it asks,
For our Python code base, regarding coding style we largely follow PEP 8 with a maximum line length of 100 characters for code (please wrap doc strings and comments at a "traditional" 72 characters regardless). We make an exception regarding import order if a specific version or range of a module is required (e.g. for placing calls to gi.require_version() or pkg_resources.require() before the respective import statements). Please add a noqa comment so that flake8 doesn't flag them:
For our Python code base, regarding coding style we largely follow PEP 8 with a maximum line length of 100 characters for code (please wrap doc strings and comments at a "traditional" 72 characters regardless).
We make an exception regarding import order if a specific version or range of a module is required (e.g. for placing calls to gi.require_version() or pkg_resources.require() before the respective import statements). Please add a noqa comment so that flake8 doesn't flag them:
gi.require_version()
pkg_resources.require()
import
flake8
import gi gi.require_version('Modulemd', '1.0') # noqa: E402 from gi.repository import Modulemd
Does that actually work? In my experience it doesn't seem to — it's the import lines that need to be excepted since they're the ones that are flagged. So, instead:
import gi gi.require_version('Modulemd', '1.0') from gi.repository import Modulemd # noqa: E402
Additionally, every import statement following the first non-import call has to be protected the same way. Which sucks if you have a lot of imports that use or subclass GI modules, since you really want to set up the GI versioning first. So you end up with this kind of mess:
import gi gi.require_version("Gtk", "3.0") gi.require_version("Gdk", "3.0") from gi.repository import Gtk # noqa: E402 from gi.repository import Gdk # noqa: E402 from my.module import AGtkSubclass # noqa: E402 from my.other.module import ( # noqa: E402 GdkSubclass1, GdkSubclass2)
(The comment only working if it's on the first line of that last import is probably the most ugly thing about this.)