structure updates

This commit is contained in:
2024-05-01 12:28:44 -06:00
parent a689e58eea
commit aeba9bdb34
461 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,72 @@
# Python Style Guide
## Table of Contents
1. [Code Layout](#code-layout)
2. [Naming Conventions](#naming-conventions)
3. [Comments](#comments)
4. [Docstrings](#docstrings)
5. [Imports](#imports)
6. [Whitespace in Expressions and Statements](#whitespace-in-expressions-and-statements)
7. [Programming Recommendations](#programming-recommendations)
8. [Testing](#testing)
## Code Layout
- **Indentation**: Use 4 spaces per indentation level.
- **Line Length**: Limit all lines to a maximum of 79 characters.
- **Blank Lines**: Use blank lines to separate functions and classes, and larger blocks of code inside functions.
- **Encoding**: Use UTF-8 encoding for Python 3.
## Naming Conventions
- **Modules**: Short, lowercase names, preferably without underscores.
- **Classes**: Use the CapWords convention.
- **Functions**: Lowercase, with words separated by underscores.
- **Variables**: Lowercase, with words separated by underscores.
- **Constants**: Uppercase, with words separated by underscores.
## Comments
- **Inline Comments**: Use sparingly and focus on why, not what.
- **Block Comments**: Indent to the same level as the code it describes.
## Docstrings
- **Public Modules**: Describe what the module contains and its purpose.
- **Functions**: Describe what the function does and its arguments.
- **Classes**: Describe what the class does.
## Imports
- **Import Order**: Within each import group (standard library, third-party, local), sort the imports alphabetically.
- **Standard Library Imports**: First, separate from third-party libraries.
- **Related Third-Party Imports**: Second.
- **Local Application/Library Specific Imports**: Third.
- **Absolute Imports**: Prefer absolute imports over relative imports to improve readability and avoid issues with module naming conflicts.
- **Wildcards**: Avoid using wildcard imports (`from module import *`) as they can pollute the namespace and make it unclear which names are present.
## Whitespace in Expressions and Statements
- Avoid extraneous whitespace in the following situations:
- Immediately inside parentheses, brackets, or braces.
- Between a trailing comma and a following close parenthesis.
- Immediately before a comma, semicolon, or colon.
- **Binary Operators**: Surround binary operators with a single space on either side for readability, except when assigning default parameter values in function definitions.
- **Compound Statements**: Avoid using backslash line continuation. Instead, use implicit line joining within parentheses, brackets, and braces.
## Programming Recommendations
- **`is not` over `not ... is`**: Use `is not` operator rather than `not ... is`.
- **List Comprehensions**: Preferable over multiple `for` and `if` statements.
- **String Quotes**: Prefer single quotes for string literals, unless the string contains a single quote character. Use double quotes for triple-quoted strings and docstrings.
- **Exception Handling**: Use specific exception classes when catching exceptions, rather than using a bare `except:` clause. Avoid catching `Exception` or `StandardError` unless you are re-raising the exception or in the outermost block in a thread.
- **Context Managers**: Use context managers (`with` statement) when working with file objects and other resources that need to be properly closed or released.
- **Generator Expressions**: Consider using generator expressions instead of list comprehensions for large datasets or when you don't need to store the entire result in memory.
## Testing
- **Test Framework**: Use a standard testing framework like `unittest` or `pytest` to write and run tests for your code.
- **Test Coverage**: Strive for high test coverage to ensure your code is well-tested and to catch potential bugs early in the development process.
Remember, this is a starting guide. Feel free to adapt and expand it based on the needs of your projects and your personal preferences.