Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit ad0ba85

Browse files
committedMay 16, 2025·
change to ruff
1 parent e60b136 commit ad0ba85

15 files changed

+166
-465
lines changed
 

‎.gitattributes

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# SPDX-FileCopyrightText: 2024 Justin Myers for Adafruit Industries
2+
#
3+
# SPDX-License-Identifier: Unlicense
4+
5+
.py text eol=lf
6+
.rst text eol=lf
7+
.txt text eol=lf
8+
.yaml text eol=lf
9+
.toml text eol=lf
10+
.license text eol=lf
11+
.md text eol=lf

‎.pre-commit-config.yaml

Lines changed: 11 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,21 @@
1-
# SPDX-FileCopyrightText: 2020 Diego Elio Pettenò
1+
# SPDX-FileCopyrightText: 2024 Justin Myers for Adafruit Industries
22
#
33
# SPDX-License-Identifier: Unlicense
44

55
repos:
6-
- repo: https://github.com/python/black
7-
rev: 23.3.0
8-
hooks:
9-
- id: black
10-
- repo: https://github.com/fsfe/reuse-tool
11-
rev: v1.1.2
12-
hooks:
13-
- id: reuse
146
- repo: https://github.com/pre-commit/pre-commit-hooks
15-
rev: v4.4.0
7+
rev: v4.5.0
168
hooks:
179
- id: check-yaml
1810
- id: end-of-file-fixer
1911
- id: trailing-whitespace
20-
- repo: https://github.com/pycqa/pylint
21-
rev: v2.17.4
12+
- repo: https://github.com/astral-sh/ruff-pre-commit
13+
rev: v0.3.4
2214
hooks:
23-
- id: pylint
24-
name: pylint (library code)
25-
types: [python]
26-
args:
27-
- --disable=consider-using-f-string
28-
exclude: "^(docs/|examples/|tests/|setup.py$)"
29-
- id: pylint
30-
name: pylint (example code)
31-
description: Run pylint rules on "examples/*.py" files
32-
types: [python]
33-
files: "^examples/"
34-
args:
35-
- --disable=missing-docstring,invalid-name,consider-using-f-string,duplicate-code
36-
- id: pylint
37-
name: pylint (test code)
38-
description: Run pylint rules on "tests/*.py" files
39-
types: [python]
40-
files: "^tests/"
41-
args:
42-
- --disable=missing-docstring,consider-using-f-string,duplicate-code
15+
- id: ruff-format
16+
- id: ruff
17+
args: ["--fix"]
18+
- repo: https://github.com/fsfe/reuse-tool
19+
rev: v3.0.1
20+
hooks:
21+
- id: reuse

‎.pylintrc

Lines changed: 0 additions & 399 deletions
This file was deleted.

‎README.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ Introduction
1313
:target: https://github.com/adafruit/Adafruit_CircuitPython_MotorKit/actions/
1414
:alt: Build Status
1515

16-
.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
17-
:target: https://github.com/psf/black
18-
:alt: Code Style: Black
16+
.. image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json
17+
:target: https://github.com/astral-sh/ruff
18+
:alt: Code Style: Ruff
1919

2020
CircuitPython helper library for the DC & Stepper Motor FeatherWing, Shield and Pi Hat kits.
2121

‎adafruit_motorkit.py

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,10 @@
3838

3939
try:
4040
from typing import Optional, Tuple
41-
from busio import I2C
41+
4242
import adafruit_motor.motor
4343
import adafruit_motor.stepper
44+
from busio import I2C
4445
except ImportError:
4546
pass
4647

@@ -89,24 +90,20 @@ def __init__(
8990
def _motor(
9091
self, motor_name: int, channels: Tuple[int, int, int], stepper_name: int
9192
) -> adafruit_motor.motor.DCMotor:
92-
from adafruit_motor import motor # pylint: disable=import-outside-toplevel
93+
from adafruit_motor import motor
9394

9495
motor_name = "_motor" + str(motor_name)
9596
stepper_name = "_stepper" + str(stepper_name)
9697
if not getattr(self, motor_name):
9798
if getattr(self, stepper_name):
9899
raise RuntimeError(
99-
"Cannot use {} at the same time as {}.".format(
100-
motor_name[1:], stepper_name[1:]
101-
)
100+
f"Cannot use {motor_name[1:]} at the same time as {stepper_name[1:]}."
102101
)
103102
self._pca.channels[channels[0]].duty_cycle = 0xFFFF
104103
setattr(
105104
self,
106105
motor_name,
107-
motor.DCMotor(
108-
self._pca.channels[channels[1]], self._pca.channels[channels[2]]
109-
),
106+
motor.DCMotor(self._pca.channels[channels[1]], self._pca.channels[channels[2]]),
110107
)
111108
return getattr(self, motor_name)
112109

@@ -239,14 +236,12 @@ def stepper1(self) -> adafruit_motor.stepper.StepperMotor:
239236
kit.stepper1.onestep()
240237
"""
241238
if not self._stepper1:
242-
from adafruit_motor import ( # pylint: disable=import-outside-toplevel
239+
from adafruit_motor import (
243240
stepper,
244241
)
245242

246243
if self._motor1 or self._motor2:
247-
raise RuntimeError(
248-
"Cannot use stepper1 at the same time as motor1 or motor2."
249-
)
244+
raise RuntimeError("Cannot use stepper1 at the same time as motor1 or motor2.")
250245
self._pca.channels[8].duty_cycle = 0xFFFF
251246
self._pca.channels[13].duty_cycle = 0xFFFF
252247
self._stepper1 = stepper.StepperMotor(
@@ -283,14 +278,12 @@ def stepper2(self) -> adafruit_motor.stepper.StepperMotor:
283278
kit.stepper2.onestep()
284279
"""
285280
if not self._stepper2:
286-
from adafruit_motor import ( # pylint: disable=import-outside-toplevel
281+
from adafruit_motor import (
287282
stepper,
288283
)
289284

290285
if self._motor3 or self._motor4:
291-
raise RuntimeError(
292-
"Cannot use stepper2 at the same time as motor3 or motor4."
293-
)
286+
raise RuntimeError("Cannot use stepper2 at the same time as motor3 or motor4.")
294287
self._pca.channels[7].duty_cycle = 0xFFFF
295288
self._pca.channels[2].duty_cycle = 0xFFFF
296289
self._stepper2 = stepper.StepperMotor(

‎docs/api.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,8 @@
44
.. If your library file(s) are nested in a directory (e.g. /adafruit_foo/foo.py)
55
.. use this format as the module name: "adafruit_foo.foo"
66
7+
API Reference
8+
#############
9+
710
.. automodule:: adafruit_motorkit
811
:members:

‎docs/conf.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
1-
# -*- coding: utf-8 -*-
2-
31
# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
42
#
53
# SPDX-License-Identifier: MIT
64

5+
import datetime
76
import os
87
import sys
9-
import datetime
108

119
sys.path.insert(0, os.path.abspath(".."))
1210

@@ -56,9 +54,7 @@
5654
creation_year = "2018"
5755
current_year = str(datetime.datetime.now().year)
5856
year_duration = (
59-
current_year
60-
if current_year == creation_year
61-
else creation_year + " - " + current_year
57+
current_year if current_year == creation_year else creation_year + " - " + current_year
6258
)
6359
copyright = year_duration + " Kattni Rembor"
6460
author = "Kattni Rembor"

‎examples/motorkit_dc_motor_simpletest.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@
22
# SPDX-License-Identifier: MIT
33

44
"""Simple test for using adafruit_motorkit with a DC motor"""
5+
56
import time
7+
68
import board
9+
710
from adafruit_motorkit import MotorKit
811

912
kit = MotorKit(i2c=board.I2C())

‎examples/motorkit_dc_test.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
# SPDX-License-Identifier: MIT
33

44
import time
5+
56
import board
7+
68
from adafruit_motorkit import MotorKit
79

810
kit = MotorKit(i2c=board.I2C())

‎examples/motorkit_dual_stepper_test.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,22 @@
55
#
66
# NOTE - Only for use on Raspberry Pi or other SBC.
77
#
8-
import time
98
import atexit
10-
import threading
119
import random
10+
import threading
11+
import time
12+
1213
import board
1314
from adafruit_motor import stepper as STEPPER
15+
1416
from adafruit_motorkit import MotorKit
1517

1618
# create a default object, no changes to I2C address or frequency
1719
kit = MotorKit(i2c=board.I2C())
1820

1921
# create empty threads (these will hold the stepper 1 and 2 threads)
20-
st1 = threading.Thread() # pylint: disable=bad-thread-instantiation
21-
st2 = threading.Thread() # pylint: disable=bad-thread-instantiation
22+
st1 = threading.Thread()
23+
st2 = threading.Thread()
2224

2325

2426
# recommended for auto-disabling motors on shutdown!

‎examples/motorkit_robot.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@
1515
# This assumes the Left motor is on Motor 1 and the Right motor is on Motor 2
1616

1717

18-
import time
1918
import atexit
19+
import time
20+
2021
import board
22+
2123
from adafruit_motorkit import MotorKit
2224

2325
kit = MotorKit(i2c=board.I2C())
@@ -78,9 +80,7 @@ def steer(self, speed, direction):
7880
# Move forward at the specified speed (0- 1). Direction is +- 1.
7981
# Full left is -1, Full right is +1
8082
if (speed + direction / 2) > 1:
81-
speed = (
82-
speed - direction / 2
83-
) # calibrate so total motor output never goes above 1
83+
speed = speed - direction / 2 # calibrate so total motor output never goes above 1
8484
left = speed + direction / 2
8585
right = speed - direction / 2
8686
self._left_speed(left)

‎examples/motorkit_robot_test.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
# Import the motorkit_robot.py file (must be in the same directory as this file!).
1010
import motorkit_robot
1111

12-
1312
# Set the trim offset for each motor (left and right). This is a value that
1413
# will offset the speed of movement of each motor in order to make them both
1514
# move at the same desired speed. Because there's no feedback the robot doesn't

‎examples/motorkit_stepper_simpletest.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@
22
# SPDX-License-Identifier: MIT
33

44
"""Simple test for using adafruit_motorkit with a stepper motor"""
5+
56
import time
7+
68
import board
9+
710
from adafruit_motorkit import MotorKit
811

912
kit = MotorKit(i2c=board.I2C())

‎examples/motorkit_stepper_test.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
import board
55
from adafruit_motor import stepper
6+
67
from adafruit_motorkit import MotorKit
78

89
kit = MotorKit(i2c=board.I2C())

‎ruff.toml

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
# SPDX-FileCopyrightText: 2024 Tim Cocks for Adafruit Industries
2+
#
3+
# SPDX-License-Identifier: MIT
4+
5+
target-version = "py38"
6+
line-length = 100
7+
8+
[lint]
9+
preview = true
10+
select = ["I", "PL", "UP"]
11+
12+
extend-select = [
13+
"D419", # empty-docstring
14+
"E501", # line-too-long
15+
"W291", # trailing-whitespace
16+
"PLC0414", # useless-import-alias
17+
"PLC2401", # non-ascii-name
18+
"PLC2801", # unnecessary-dunder-call
19+
"PLC3002", # unnecessary-direct-lambda-call
20+
"E999", # syntax-error
21+
"PLE0101", # return-in-init
22+
"F706", # return-outside-function
23+
"F704", # yield-outside-function
24+
"PLE0116", # continue-in-finally
25+
"PLE0117", # nonlocal-without-binding
26+
"PLE0241", # duplicate-bases
27+
"PLE0302", # unexpected-special-method-signature
28+
"PLE0604", # invalid-all-object
29+
"PLE0605", # invalid-all-format
30+
"PLE0643", # potential-index-error
31+
"PLE0704", # misplaced-bare-raise
32+
"PLE1141", # dict-iter-missing-items
33+
"PLE1142", # await-outside-async
34+
"PLE1205", # logging-too-many-args
35+
"PLE1206", # logging-too-few-args
36+
"PLE1307", # bad-string-format-type
37+
"PLE1310", # bad-str-strip-call
38+
"PLE1507", # invalid-envvar-value
39+
"PLE2502", # bidirectional-unicode
40+
"PLE2510", # invalid-character-backspace
41+
"PLE2512", # invalid-character-sub
42+
"PLE2513", # invalid-character-esc
43+
"PLE2514", # invalid-character-nul
44+
"PLE2515", # invalid-character-zero-width-space
45+
"PLR0124", # comparison-with-itself
46+
"PLR0202", # no-classmethod-decorator
47+
"PLR0203", # no-staticmethod-decorator
48+
"UP004", # useless-object-inheritance
49+
"PLR0206", # property-with-parameters
50+
"PLR0904", # too-many-public-methods
51+
"PLR0911", # too-many-return-statements
52+
"PLR0912", # too-many-branches
53+
"PLR0913", # too-many-arguments
54+
"PLR0914", # too-many-locals
55+
"PLR0915", # too-many-statements
56+
"PLR0916", # too-many-boolean-expressions
57+
"PLR1702", # too-many-nested-blocks
58+
"PLR1704", # redefined-argument-from-local
59+
"PLR1711", # useless-return
60+
"C416", # unnecessary-comprehension
61+
"PLR1733", # unnecessary-dict-index-lookup
62+
"PLR1736", # unnecessary-list-index-lookup
63+
64+
# ruff reports this rule is unstable
65+
#"PLR6301", # no-self-use
66+
67+
"PLW0108", # unnecessary-lambda
68+
"PLW0120", # useless-else-on-loop
69+
"PLW0127", # self-assigning-variable
70+
"PLW0129", # assert-on-string-literal
71+
"B033", # duplicate-value
72+
"PLW0131", # named-expr-without-context
73+
"PLW0245", # super-without-brackets
74+
"PLW0406", # import-self
75+
"PLW0602", # global-variable-not-assigned
76+
"PLW0603", # global-statement
77+
"PLW0604", # global-at-module-level
78+
79+
# fails on the try: import typing used by libraries
80+
#"F401", # unused-import
81+
82+
"F841", # unused-variable
83+
"E722", # bare-except
84+
"PLW0711", # binary-op-exception
85+
"PLW1501", # bad-open-mode
86+
"PLW1508", # invalid-envvar-default
87+
"PLW1509", # subprocess-popen-preexec-fn
88+
"PLW2101", # useless-with-lock
89+
"PLW3301", # nested-min-max
90+
]
91+
92+
ignore = [
93+
"PLR2004", # magic-value-comparison
94+
"UP030", # format literals
95+
"PLW1514", # unspecified-encoding
96+
"PLR0913", # too-many-arguments
97+
"PLR0915", # too-many-statements
98+
"PLR0917", # too-many-positional-arguments
99+
"PLR0904", # too-many-public-methods
100+
"PLR0912", # too-many-branches
101+
"PLR0916", # too-many-boolean-expressions
102+
"PLR6301", # could-be-static no-self-use
103+
"PLC0415", # import outside toplevel
104+
"PLC2701", # private import
105+
]
106+
107+
[format]
108+
line-ending = "lf"

0 commit comments

Comments
 (0)
Please sign in to comment.