mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 02:09:05 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			71 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
===================
 | 
						|
Python Coding style
 | 
						|
===================
 | 
						|
 | 
						|
Coding style
 | 
						|
~~~~~~~~~~~~
 | 
						|
 | 
						|
 :ref:`black` is the tool used to reformat the Python code.
 | 
						|
 | 
						|
Linting
 | 
						|
~~~~~~~
 | 
						|
 | 
						|
The Python linting is done by :ref:`Flake8` and :ref:`pylint`
 | 
						|
They are executed by mozlint both at review phase and in the CI.
 | 
						|
 | 
						|
Indentation
 | 
						|
~~~~~~~~~~~
 | 
						|
 | 
						|
Four spaces in Python code.
 | 
						|
 | 
						|
 | 
						|
Makefile/moz.build practices
 | 
						|
----------------------------
 | 
						|
 | 
						|
-  Changes to makefile and moz.build variables do not require
 | 
						|
   build-config peer review. Any other build system changes, such as
 | 
						|
   adding new scripts or rules, require review from the build-config
 | 
						|
   team.
 | 
						|
-  Suffix long ``if``/``endif`` conditionals with #{ & #}, so editors
 | 
						|
   can display matched tokens enclosing a block of statements.
 | 
						|
 | 
						|
   ::
 | 
						|
 | 
						|
      ifdef CHECK_TYPE #{
 | 
						|
        ifneq ($(flavor var_type),recursive) #{
 | 
						|
          $(warning var should be expandable but detected var_type=$(flavor var_type))
 | 
						|
        endif #}
 | 
						|
      endif #}
 | 
						|
 | 
						|
-  moz.build are python and follow normal Python style.
 | 
						|
-  List assignments should be written with one element per line. Align
 | 
						|
   closing square brace with start of variable assignment. If ordering
 | 
						|
   is not important, variables should be in alphabetical order.
 | 
						|
 | 
						|
   .. code-block:: python
 | 
						|
 | 
						|
      var += [
 | 
						|
          'foo',
 | 
						|
          'bar'
 | 
						|
      ]
 | 
						|
 | 
						|
-  Use ``CONFIG['TARGET_CPU'] {=arm}`` to test for generic classes of
 | 
						|
   architecture rather than ``CONFIG['OS_TEST'] {=armv7}`` (re: bug 886689).
 | 
						|
 | 
						|
 | 
						|
Other advices
 | 
						|
~~~~~~~~~~~~~
 | 
						|
 | 
						|
-  Install the
 | 
						|
   `mozext <https://hg.mozilla.org/hgcustom/version-control-tools/file/default/hgext/mozext>`__
 | 
						|
   Mercurial extension, and address every issue reported on commit
 | 
						|
   or the output of ``hg critic``.
 | 
						|
-  Follow `PEP 8 <https://www.python.org/dev/peps/pep-0008/>`__. Please run :ref:`black` for this.
 | 
						|
-  Do not place statements on the same line as ``if/elif/else``
 | 
						|
   conditionals to form a one-liner.
 | 
						|
-  Global vars, please avoid them at all cost.
 | 
						|
-  Exclude outer parenthesis from conditionals.Use
 | 
						|
   ``if x > 5:,``\ rather than ``if (x > 5):``
 | 
						|
-  Use string formatters, rather than var + str(val).
 | 
						|
   ``var = 'Type %s value is %d'% ('int', 5).``
 | 
						|
-  Testing/Unit tests, please write them and make sure that they are executed in the CI.
 |