Skip to content

Commit ba10ad6

Browse files
moffa90claude
andcommitted
chore: add pyproject.toml with tool configuration
Adds black, isort, and mypy configuration to ensure consistent formatting. Updates .gitignore to allow pyproject.toml. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 36baf03 commit ba10ad6

2 files changed

Lines changed: 110 additions & 0 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ htmlcov/
5454
# Configuration
5555
*.toml
5656
!config/*.toml
57+
!pyproject.toml
5758

5859
# Deployment
5960
*.tar.gz

pyproject.toml

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
[build-system]
2+
requires = ["setuptools>=61.0", "wheel"]
3+
build-backend = "setuptools.build_meta"
4+
5+
[project]
6+
name = "microchip-emc2305"
7+
version = "0.1.0"
8+
description = "Python driver for Microchip EMC2305 5-channel PWM fan controller"
9+
readme = "README.md"
10+
authors = [
11+
{name = "Jose Luis Moffa", email = "moffa3@gmail.com"}
12+
]
13+
license = {text = "MIT"}
14+
classifiers = [
15+
"Development Status :: 4 - Beta",
16+
"Intended Audience :: Developers",
17+
"Topic :: System :: Hardware :: Hardware Drivers",
18+
"Topic :: Software Development :: Embedded Systems",
19+
"License :: OSI Approved :: MIT License",
20+
"Programming Language :: Python :: 3",
21+
"Programming Language :: Python :: 3.9",
22+
"Programming Language :: Python :: 3.10",
23+
"Programming Language :: Python :: 3.11",
24+
"Programming Language :: Python :: 3.12",
25+
"Operating System :: POSIX :: Linux",
26+
]
27+
keywords = ["emc2305", "microchip", "fan", "controller", "pwm", "i2c", "hardware", "driver", "smbus"]
28+
requires-python = ">=3.9"
29+
dependencies = [
30+
"smbus2>=0.4.0",
31+
"filelock>=3.12.0",
32+
]
33+
34+
[project.optional-dependencies]
35+
config = ["PyYAML>=6.0"]
36+
dev = [
37+
"pytest>=7.4",
38+
"pytest-cov>=4.1",
39+
"black>=23.0",
40+
"isort>=5.12",
41+
"mypy>=1.5",
42+
"ruff>=0.1.0",
43+
]
44+
grpc = [
45+
"grpcio>=1.60.0",
46+
"grpcio-tools>=1.60.0",
47+
"protobuf>=4.25.0",
48+
]
49+
50+
[project.urls]
51+
Homepage = "https://github.com/moffa90/python-emc2305"
52+
Documentation = "https://github.com/moffa90/python-emc2305"
53+
Repository = "https://github.com/moffa90/python-emc2305"
54+
"Bug Tracker" = "https://github.com/moffa90/python-emc2305/issues"
55+
56+
[tool.setuptools]
57+
packages = ["emc2305", "emc2305.driver", "emc2305.proto", "emc2305.server"]
58+
59+
[tool.setuptools.package-data]
60+
emc2305 = ["py.typed"]
61+
62+
[tool.black]
63+
line-length = 100
64+
target-version = ['py39', 'py310', 'py311', 'py312']
65+
include = '\.pyi?$'
66+
67+
[tool.isort]
68+
profile = "black"
69+
line_length = 100
70+
multi_line_output = 3
71+
72+
[tool.mypy]
73+
python_version = "3.9"
74+
warn_return_any = true
75+
warn_unused_configs = true
76+
disallow_untyped_defs = false
77+
disallow_incomplete_defs = false
78+
check_untyped_defs = true
79+
no_implicit_optional = true
80+
warn_redundant_casts = true
81+
warn_unused_ignores = true
82+
warn_no_return = true
83+
84+
[tool.pytest.ini_options]
85+
testpaths = ["tests"]
86+
python_files = ["test_*.py"]
87+
python_classes = ["Test*"]
88+
python_functions = ["test_*"]
89+
addopts = "-v --cov=emc2305 --cov-report=term-missing --cov-report=html"
90+
91+
[tool.ruff]
92+
line-length = 100
93+
target-version = "py39"
94+
select = [
95+
"E", # pycodestyle errors
96+
"W", # pycodestyle warnings
97+
"F", # pyflakes
98+
"I", # isort
99+
"B", # flake8-bugbear
100+
"C4", # flake8-comprehensions
101+
"UP", # pyupgrade
102+
]
103+
ignore = [
104+
"E501", # line too long (handled by black)
105+
"B008", # do not perform function calls in argument defaults
106+
]
107+
108+
[tool.ruff.per-file-ignores]
109+
"__init__.py" = ["F401"] # Allow unused imports in __init__.py

0 commit comments

Comments
 (0)