python-dev

安装量: 49
排名: #15071

安装

npx skills add https://github.com/databricks-solutions/ai-dev-kit --skill python-dev
Python Development Rules
Overview
Python development guidance focused on code quality, error handling, testing, and environment management. Apply when working with Python code or Jupyter notebooks.
When to Use This Skill
Use this skill when:
Writing new Python code or modifying existing Python files
Creating or updating Jupyter notebooks
Setting up Python development environments
Writing or updating tests
Reviewing Python code for quality and best practices
Code Quality
Principles
DRY (Don't Repeat Yourself)
Avoid code duplication
Composition over inheritance
Prefer composition patterns
Pure functions when possible
Functions without side effects
Simple solutions over clever ones
Prioritize readability and maintainability
Design for common use cases first
Solve the primary problem before edge cases
Style & Documentation
Type hints required
All functions must include type annotations
snake_case naming
Use snake_case for variables, functions, and modules
Google-style docstrings
Document functions, classes, and modules using Google-style docstrings
Keep functions small
Single responsibility principle - one function, one purpose
Preserve existing comments
Maintain and update existing code comments
Example
def
calculate_total
(
items
:
list
[
dict
[
str
,
float
]
]
,
tax_rate
:
float
=
0.08
)
-
>
float
:
"""Calculate total cost including tax.
Args:
items: List of items with 'price' key
tax_rate: Tax rate as decimal (default 0.08)
Returns:
Total cost including tax
Raises:
ValueError: If tax_rate is negative or items list is empty
"""
if
not
items
:
raise
ValueError
(
"Items list cannot be empty"
)
if
tax_rate
<
0
:
raise
ValueError
(
"Tax rate cannot be negative"
)
subtotal
=
sum
(
item
[
'price'
]
for
item
in
items
)
return
subtotal
*
(
1
+
tax_rate
)
Error Handling & Efficiency
Error Handling
Specific exception types
Catch specific exceptions, not bare
except
Validate inputs early
Check inputs at function entry
No bare except
Always specify exception types
Efficiency Patterns
f-strings
Use f-strings for string formatting
Comprehensions
Prefer list/dict/set comprehensions over loops when appropriate
Context managers
Use
with
statements for resource management
Example
def
process_file
(
file_path
:
str
)
-
>
list
[
str
]
:
"""Process file and return lines.
Args:
file_path: Path to file
Returns:
List of non-empty lines
Raises:
FileNotFoundError: If file doesn't exist
PermissionError: If file cannot be read
"""
if
not
file_path
:
raise
ValueError
(
"File path cannot be empty"
)
try
:
with
open
(
file_path
,
'r'
,
encoding
=
'utf-8'
)
as
f
:
return
[
line
.
strip
(
)
for
line
in
f
if
line
.
strip
(
)
]
except
FileNotFoundError
:
raise
FileNotFoundError
(
f"File not found:
{
file_path
}
"
)
except
PermissionError
:
raise
PermissionError
(
f"Permission denied:
{
file_path
}
"
)
Testing (Critical)
Framework & Structure
pytest only
Use pytest exclusively (no unittest)
Test location
All tests in
./tests/
directory
Test package
Include
init.py
in tests directory
TDD approach
Write/update tests for all new/modified code
All tests must pass
Ensure all tests pass before task completion Test Structure Example project/ ├── src/ │ └── my_module.py └── tests/ ├── init.py └── test_my_module.py Example Test

tests/test_calculations.py

import
pytest
from
src
.
calculations
import
calculate_total
def
test_calculate_total_basic
(
)
:
"""Test basic total calculation."""
items
=
[
{
'price'
:
10.0
}
,
{
'price'
:
20.0
}
]
result
=
calculate_total
(
items
,
tax_rate
=
0.1
)
assert
result
==
33.0
def
test_calculate_total_empty_list
(
)
:
"""Test error handling for empty list."""
with
pytest
.
raises
(
ValueError
,
match
=
"Items list cannot be empty"
)
:
calculate_total
(
[
]
)
def
test_calculate_total_negative_tax
(
)
:
"""Test error handling for negative tax rate."""
items
=
[
{
'price'
:
10.0
}
]
with
pytest
.
raises
(
ValueError
,
match
=
"Tax rate cannot be negative"
)
:
calculate_total
(
items
,
tax_rate
=
-
0.1
)
Environment Management
Dependency Management
Use uv exclusively
All packaging, environment, and script execution via
uv
No pip/venv/conda
Do not use
pip
,
python3 -m venv
, or
conda
uv
handles all of this
pyproject.toml is the source of truth
Define all dependencies in pyproject.toml (not requirements.txt ) Environment Setup Example

Install dependencies from pyproject.toml

uv sync

Install with optional dev dependencies

uv sync --extra dev

Run a script (no activation needed)

uv run python script.py

Run pytest

uv run pytest

Add a new dependency

uv add requests

Remove a dependency

uv remove requests
Running Python Code
Use
uv run
to execute scripts — no manual venv activation needed
Use
uv run
for dev tools (pytest, ruff, etc.)
Dependencies are defined in
pyproject.toml
(not requirements.txt)
Linting & Formatting (Ruff)
Ruff
Use Ruff for linting AND formatting (replaces flake8, black, isort)

Lint code

uv run ruff check .

Lint and auto-fix

uv run ruff check --fix .

Format code

uv run ruff format .

Check formatting without changes

uv run ruff format --check . Type Checking (Pyright)

Check types

uv run pyright
Note: Use
pyright
for type checking — do not use
mypy
.
Best Practices Summary
Code Quality
DRY, composition, pure functions, simple solutions
Style
Type hints, snake_case, Google docstrings, small functions
Errors
Specific exceptions, early validation, no bare except
Efficiency
f-strings, comprehensions, context managers
Testing
pytest only, TDD, tests in
./tests/
, all must pass
Environment
Use uv exclusively for dependencies and execution, Ruff for linting/formatting, Pyright for type checking
返回排行榜