-
Notifications
You must be signed in to change notification settings - Fork 22
Expand file tree
/
Copy pathpyproject.toml.example
More file actions
136 lines (119 loc) · 2.89 KB
/
pyproject.toml.example
File metadata and controls
136 lines (119 loc) · 2.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# Example pyproject.toml configuration for Backtrader
# This file shows recommended tool configurations for code quality
[build-system]
requires = ["setuptools>=45", "wheel", "setuptools_scm[toml]>=6.2"]
build-backend = "setuptools.build_meta"
[project]
name = "backtrader"
description = "A feature-rich Python framework for backtesting and trading"
requires-python = ">=3.11"
# Tool configurations
[tool.ruff]
# Line length for code formatting
line-length = 100
# Target Python version
target-version = "py311"
# Include all Python files
include = ["backtrader/**/*.py", "tests/**/*.py"]
# Exclude certain directories
exclude = [
".git",
".venv",
"build",
"dist",
"__pycache__",
".pytest_cache",
".ruff_cache",
]
[tool.ruff.lint]
# Select error codes to check
select = [
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # Pyflakes
"I", # isort
"N", # pep8-naming
"UP", # pyupgrade
"B", # flake8-bugbear
"C4", # flake8-comprehensions
"SIM", # flake8-simplify
]
# Ignore specific error codes
ignore = [
"E501", # Line too long (handled by formatter)
"E203", # Whitespace before ':'
"W503", # Line break before binary operator
]
# Per-file ignores
[tool.ruff.lint.per-file-ignores]
"__init__.py" = ["F401", "F403"] # Allow unused imports in __init__.py
"tests/**" = ["F841"] # Allow unused variables in tests
[tool.ruff.lint.isort]
# isort configuration for import sorting
known-first-party = ["backtrader"]
known-third-party = ["numpy", "pandas", "matplotlib"]
[tool.black]
# Black configuration (if using Black instead of ruff format)
line-length = 100
target-version = ['py311']
include = '\.pyi?$'
exclude = '''
/(
\.git
| \.hg
| \.mypy_cache
| \.tox
| \.venv
| _build
| buck-out
| build
| dist
)/
'''
[tool.pytest.ini_options]
# Pytest configuration
testpaths = ["tests"]
python_files = ["test_*.py"]
python_classes = ["Test*"]
python_functions = ["test_*"]
addopts = "-v --tb=short"
markers = [
"slow: marks tests as slow",
"integration: marks tests as integration tests",
]
[tool.coverage.run]
# Coverage configuration
source = ["backtrader"]
omit = [
"*/tests/*",
"*/test_*.py",
"*/__pycache__/*",
]
[tool.coverage.report]
# Coverage report settings
exclude_lines = [
"pragma: no cover",
"def __repr__",
"raise AssertionError",
"raise NotImplementedError",
"if __name__ == .__main__.:",
"if TYPE_CHECKING:",
]
precision = 2
show_missing = true
[tool.mypy]
# Type checking configuration (optional)
python_version = "3.11"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = false
ignore_missing_imports = true
[tool.isort]
# Import sorting configuration
profile = "black"
line_length = 100
multi_line_mode = 3
include_trailing_comma = true
force_grid_wrap = 0
use_parentheses = true
ensure_newline_before_comments = true