| 
									
										
										
										
											2022-07-15 23:52:35 +02:00
										 |  |  | # Style Guide
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## Generic
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * This guide can be ignored for data files that are not to be viewed in an editor. | 
					
						
							|  |  |  | * 120 character per line for all source files. | 
					
						
							|  |  |  | * Avoid white space errors like trailing spaces. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## Python Code
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * We mostly follow [PEP8](https://peps.python.org/pep-0008/). Read below to see the differences. | 
					
						
							|  |  |  | * 120 characters per line. PyCharm does this automatically, other editors can be configured for it. | 
					
						
							|  |  |  | * Strings in core code will be `"strings"`. In other words: double quote your strings. | 
					
						
							|  |  |  | * Strings in worlds should use double quotes as well, but imported code may differ. | 
					
						
							|  |  |  | * Prefer [format string literals](https://peps.python.org/pep-0498/) over string concatenation, | 
					
						
							|  |  |  |   use single quotes inside them: `f"Like {dct['key']}"` | 
					
						
							| 
									
										
										
										
											2022-10-28 23:02:23 +02:00
										 |  |  | * Use type annotations where possible for function signatures and class members. | 
					
						
							|  |  |  | * Use type annotations where appropriate for local variables (e.g. `var: List[int] = []`, or when the | 
					
						
							|  |  |  |   type is hard or impossible to deduce.) Clear annotations help developers look up and validate API calls. | 
					
						
							| 
									
										
										
										
											2024-04-20 17:42:27 -07:00
										 |  |  | * If a line ends with an open bracket/brace/parentheses, the matching closing bracket should be at the | 
					
						
							|  |  |  |   beginning of a line at the same indentation as the beginning of the line with the open bracket. | 
					
						
							|  |  |  |   ```python | 
					
						
							|  |  |  |   stuff = { | 
					
						
							|  |  |  |       x: y | 
					
						
							|  |  |  |       for x, y in thing | 
					
						
							|  |  |  |       if y > 2 | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   ``` | 
					
						
							| 
									
										
										
										
											2024-01-30 14:42:33 -06:00
										 |  |  | * New classes, attributes, and methods in core code should have docstrings that follow | 
					
						
							|  |  |  |   [reST style](https://peps.python.org/pep-0287/). | 
					
						
							| 
									
										
										
										
											2023-02-18 17:16:17 +01:00
										 |  |  | * Worlds that do not follow PEP8 should still have a consistent style across its files to make reading easier. | 
					
						
							| 
									
										
										
										
											2025-07-14 07:22:10 +00:00
										 |  |  | * [Match statements](https://docs.python.org/3/tutorial/controlflow.html#tut-match) | 
					
						
							|  |  |  |   may be used instead of `if`-`elif` if they result in nicer code, or they actually use pattern matching. | 
					
						
							|  |  |  |   Beware of the performance: they are not `goto`s, but `if`-`elif` under the hood, and you may have less control. When | 
					
						
							|  |  |  |   in doubt, just don't use it. | 
					
						
							| 
									
										
										
										
											2022-07-15 23:52:35 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | ## Markdown
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * We almost follow [Google's styleguide](https://google.github.io/styleguide/docguide/style.html). | 
					
						
							|  |  |  |   Read below for differences. | 
					
						
							|  |  |  | * For existing documents, try to follow its style or ask to completely reformat it. | 
					
						
							|  |  |  | * 120 characters per line. | 
					
						
							|  |  |  | * One space between bullet/number and text. | 
					
						
							|  |  |  | * No lazy numbering. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## HTML
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * Indent with 2 spaces for new code. | 
					
						
							|  |  |  | * kebab-case for ids and classes. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## CSS
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * Indent with 2 spaces for new code. | 
					
						
							|  |  |  | * `{` on the same line as the selector. | 
					
						
							|  |  |  | * No space between selector and `{`. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## JS
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * Indent with 2 spaces. | 
					
						
							|  |  |  | * Indent `case` inside `switch ` with 2 spaces. | 
					
						
							|  |  |  | * Use single quotes. | 
					
						
							|  |  |  | * Semicolons are required after every statement. |