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 1ece951

Browse files
authoredApr 30, 2025··
Merge pull request #2 from circuitpython/new_infra_files
new infrastructure files, use ruff, update for new displayio API
2 parents c8b9d22 + e7bed0c commit 1ece951

19 files changed

+252
-298
lines changed
 

‎.github/workflows/build.yml

Lines changed: 2 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -10,71 +10,5 @@ jobs:
1010
test:
1111
runs-on: ubuntu-latest
1212
steps:
13-
- name: Dump GitHub context
14-
env:
15-
GITHUB_CONTEXT: ${{ toJson(github) }}
16-
run: echo "$GITHUB_CONTEXT"
17-
- name: Translate Repo Name For Build Tools filename_prefix
18-
id: repo-name
19-
run: |
20-
echo ::set-output name=repo-name::$(
21-
echo ${{ github.repository }} |
22-
awk -F '\/' '{ print tolower($2) }' |
23-
tr '_' '-'
24-
)
25-
- name: Set up Python 3.x
26-
uses: actions/setup-python@v2
27-
with:
28-
python-version: "3.x"
29-
- name: Versions
30-
run: |
31-
python3 --version
32-
- name: Checkout Current Repo
33-
uses: actions/checkout@v1
34-
with:
35-
submodules: true
36-
- name: Checkout tools repo
37-
uses: actions/checkout@v2
38-
with:
39-
repository: adafruit/actions-ci-circuitpython-libs
40-
path: actions-ci
41-
- name: Install dependencies
42-
# (e.g. - apt-get: gettext, etc; pip: circuitpython-build-tools, requirements.txt; etc.)
43-
run: |
44-
source actions-ci/install.sh
45-
- name: Pip install pylint, Sphinx, pre-commit
46-
run: |
47-
pip install --force-reinstall pylint Sphinx sphinx-rtd-theme pre-commit
48-
- name: Library version
49-
run: git describe --dirty --always --tags
50-
- name: Setup problem matchers
51-
uses: adafruit/circuitpython-action-library-ci-problem-matchers@v1
52-
- name: Pre-commit hooks
53-
run: |
54-
pre-commit run --all-files
55-
- name: Build assets
56-
run: circuitpython-build-bundles --filename_prefix ${{ steps.repo-name.outputs.repo-name }} --library_location .
57-
- name: Archive bundles
58-
uses: actions/upload-artifact@v2
59-
with:
60-
name: bundles
61-
path: ${{ github.workspace }}/bundles/
62-
- name: Check For docs folder
63-
id: need-docs
64-
run: |
65-
echo ::set-output name=docs::$( find . -wholename './docs' )
66-
- name: Build docs
67-
if: contains(steps.need-docs.outputs.docs, 'docs')
68-
working-directory: docs
69-
run: sphinx-build -E -W -b html . _build/html
70-
- name: Check For setup.py
71-
id: need-pypi
72-
run: |
73-
echo ::set-output name=setup-py::$( find . -wholename './setup.py' )
74-
- name: Build Python package
75-
if: contains(steps.need-pypi.outputs.setup-py, 'setup.py')
76-
run: |
77-
pip install --upgrade setuptools wheel twine readme_renderer testresources
78-
python setup.py sdist
79-
python setup.py bdist_wheel --universal
80-
twine check dist/*
13+
- name: Run Build CI workflow
14+
uses: adafruit/workflows-circuitpython-libs/build@main

‎.github/workflows/release.yml

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

‎.github/workflows/release_gh.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# SPDX-FileCopyrightText: 2017 Scott Shawcroft, written for Adafruit Industries
2+
#
3+
# SPDX-License-Identifier: MIT
4+
5+
name: GitHub Release Actions
6+
7+
on:
8+
release:
9+
types: [published]
10+
11+
jobs:
12+
upload-release-assets:
13+
runs-on: ubuntu-latest
14+
steps:
15+
- name: Run GitHub Release CI workflow
16+
uses: adafruit/workflows-circuitpython-libs/release-gh@main
17+
with:
18+
github-token: ${{ secrets.GITHUB_TOKEN }}
19+
upload-url: ${{ github.event.release.upload_url }}
20+
# TODO: If you're creating a package (library is a folder), add this
21+
# argument along with the prefix (or full name) of the package folder
22+
# so the MPY bundles are built correctly:s
23+
# package-prefix: displayio_effects

‎.github/workflows/release_pypi.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# SPDX-FileCopyrightText: 2017 Scott Shawcroft, written for Adafruit Industries
2+
#
3+
# SPDX-License-Identifier: MIT
4+
5+
name: PyPI Release Actions
6+
7+
on:
8+
release:
9+
types: [published]
10+
11+
jobs:
12+
upload-release-assets:
13+
runs-on: ubuntu-latest
14+
steps:
15+
- name: Run PyPI Release CI workflow
16+
uses: adafruit/workflows-circuitpython-libs/release-pypi@main
17+
with:
18+
pypi-username: ${{ secrets.pypi_username }}
19+
pypi-password: ${{ secrets.pypi_password }}

‎.pre-commit-config.yaml

Lines changed: 14 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +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: 20.8b1
6+
- repo: https://github.com/pre-commit/pre-commit-hooks
7+
rev: v4.5.0
88
hooks:
9-
- id: black
10-
- repo: https://github.com/fsfe/reuse-tool
11-
rev: v0.12.1
9+
- id: check-yaml
10+
- id: end-of-file-fixer
11+
- id: trailing-whitespace
12+
- repo: https://github.com/astral-sh/ruff-pre-commit
13+
rev: v0.3.4
1214
hooks:
13-
- id: reuse
14-
- repo: https://github.com/pre-commit/pre-commit-hooks
15-
rev: v2.3.0
15+
- id: ruff-format
16+
- id: ruff
17+
args: ["--fix"]
18+
- repo: https://github.com/fsfe/reuse-tool
19+
rev: v3.0.1
1620
hooks:
17-
- id: check-yaml
18-
- id: end-of-file-fixer
19-
- id: trailing-whitespace
20-
- repo: https://github.com/pycqa/pylint
21-
rev: pylint-2.7.1
22-
hooks:
23-
- id: pylint
24-
name: pylint (library code)
25-
types: [python]
26-
exclude: "^(docs/|examples/|tests/|setup.py$)"
27-
- repo: local
28-
hooks:
29-
- id: pylint_examples
30-
name: pylint (examples code)
31-
description: Run pylint rules on "examples/*.py" files
32-
entry: /usr/bin/env bash -c
33-
args: ['([[ ! -d "examples" ]] || for example in $(find . -path "./examples/*.py"); do pylint --disable=missing-docstring,invalid-name,consider-using-f-string $example; done)']
34-
language: system
35-
- id: pylint_tests
36-
name: pylint (tests code)
37-
description: Run pylint rules on "tests/*.py" files
38-
entry: /usr/bin/env bash -c
39-
args: ['([[ ! -d "tests" ]] || for test in $(find . -path "./tests/*.py"); do pylint --disable=missing-docstring $test; done)']
40-
language: system
21+
- id: reuse

‎.readthedocs.yaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,11 @@
88
# Required
99
version: 2
1010

11+
sphinx:
12+
configuration: docs/conf.py
13+
1114
build:
12-
os: ubuntu-20.04
15+
os: ubuntu-lts-latest
1316
tools:
1417
python: "3"
1518

‎README.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ Introduction
1717
:alt: Build Status
1818

1919

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

2424
Add some flair to your widgets with effects!
2525

‎displayio_effects/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@
2121
https://circuitpython.org/downloads
2222
"""
2323

24-
2524
WIDGET_TYPE_ATTR = "_widget_type"
2625

26+
2727
# pylint: disable=too-few-public-methods
2828
class WidgetType:
2929
"""Enum values for customizable widget types. Valid options are:

‎displayio_effects/colorwheel_effect.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# SPDX-License-Identifier: MIT
55
# pylint: disable=protected-access
66
"""
7-
`displayio_effects.fluctuation_effect`
7+
`displayio_effects.colorwheel_effect`
88
================================================================================
99
1010
Add the colorwheel effect to your widgets
@@ -21,9 +21,10 @@
2121
https://circuitpython.org/downloads
2222
"""
2323

24+
from adafruit_itertools import cycle
2425
from rainbowio import colorwheel
25-
from adafruit_itertools.adafruit_itertools import cycle
26-
from displayio_effects import WidgetType, WIDGET_TYPE_ATTR
26+
27+
from displayio_effects import WIDGET_TYPE_ATTR, WidgetType
2728

2829
__version__ = "0.0.0-auto.0"
2930
__repo__ = "https://github.com/tekktrik/CircuitPython_Org_DisplayIO_Effects.git"
@@ -69,9 +70,7 @@ def hook_colorwheel_effect(widget_class, widget_type):
6970
"""
7071

7172
if not COLORWHEEL_WIDGET_VALUES.get(widget_type):
72-
raise ValueError(
73-
"The given widget does not have the ability to use this effect"
74-
)
73+
raise ValueError("The given widget does not have the ability to use this effect")
7574

7675
setattr(widget_class, WIDGET_TYPE_ATTR, widget_type)
7776

‎displayio_effects/fluctuation_effect.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222
"""
2323

2424
import random
25-
from displayio_effects import WidgetType, WIDGET_TYPE_ATTR
25+
26+
from displayio_effects import WIDGET_TYPE_ATTR, WidgetType
2627

2728
__version__ = "0.0.0-auto.0"
2829
__repo__ = "https://github.com/tekktrik/CircuitPython_Org_DisplayIO_Effects.git"
@@ -79,11 +80,10 @@ def update_fluctuation(self):
7980
self._fluctuation_destination = None
8081
return
8182

82-
if self._fluctuation_destination in (None, self._fluctuation_hold_value):
83+
if self._fluctuation_destination in {None, self._fluctuation_hold_value}:
8384
limit_bound = self._fluctuation_amplitude * 10
8485
self._fluctuation_destination = (
85-
random.uniform(-limit_bound, limit_bound) / 10
86-
+ self._fluctuation_hold_value
86+
random.uniform(-limit_bound, limit_bound) / 10 + self._fluctuation_hold_value
8787
)
8888

8989
value = getattr(self, value_name)
@@ -124,9 +124,7 @@ def hook_fluctuation_effect(widget_class, widget_type):
124124
"""
125125

126126
if not FLUCTUATION_WIDGET_VALUES.get(widget_type):
127-
raise ValueError(
128-
"The given widget does not have the ability to use this effect"
129-
)
127+
raise ValueError("The given widget does not have the ability to use this effect")
130128

131129
setattr(widget_class, WIDGET_TYPE_ATTR, widget_type)
132130

‎docs/api.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,11 @@
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:: displayio_effects.fluctuation_effect
811
:members:
12+
13+
.. automodule:: displayio_effects.colorwheel_effect
14+
:members:

‎docs/conf.py

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
# -*- coding: utf-8 -*-
2-
31
# SPDX-FileCopyrightText: 2017 Scott Shawcroft, written for Adafruit Industries
42
#
53
# SPDX-License-Identifier: MIT
64

5+
import datetime
76
import os
87
import sys
98

@@ -16,6 +15,7 @@
1615
# ones.
1716
extensions = [
1817
"sphinx.ext.autodoc",
18+
"sphinxcontrib.jquery",
1919
"sphinx.ext.intersphinx",
2020
"sphinx.ext.napoleon",
2121
"sphinx.ext.todo",
@@ -27,6 +27,7 @@
2727
# autodoc module docs will fail to generate with a warning.
2828
# autodoc_mock_imports = ["digitalio", "busio"]
2929

30+
autodoc_preserve_defaults = True
3031

3132
intersphinx_mapping = {
3233
"python": ("https://docs.python.org/3", None),
@@ -46,7 +47,12 @@
4647

4748
# General information about the project.
4849
project = "CircuitPython DisplayIO_Effects Library"
49-
copyright = "2022 Alec Delaney"
50+
creation_year = "2022"
51+
current_year = str(datetime.datetime.now().year)
52+
year_duration = (
53+
current_year if current_year == creation_year else creation_year + " - " + current_year
54+
)
55+
copyright = year_duration + " Alec Delaney"
5056
author = "Alec Delaney"
5157

5258
# The version info for the project you're documenting, acts as replacement for
@@ -63,7 +69,7 @@
6369
#
6470
# This is also used if you do content translation via gettext catalogs.
6571
# Usually you set "language" from the command line for these cases.
66-
language = None
72+
language = "en"
6773

6874
# List of patterns, relative to source directory, that match files and
6975
# directories to ignore when looking for source files.
@@ -101,19 +107,9 @@
101107
# The theme to use for HTML and HTML Help pages. See the documentation for
102108
# a list of builtin themes.
103109
#
104-
on_rtd = os.environ.get("READTHEDOCS", None) == "True"
105-
106-
if not on_rtd: # only import and set the theme if we're building docs locally
107-
try:
108-
import sphinx_rtd_theme
109-
110-
html_theme = "sphinx_rtd_theme"
111-
html_theme_path = [sphinx_rtd_theme.get_html_theme_path(), "."]
112-
except:
113-
html_theme = "default"
114-
html_theme_path = ["."]
115-
else:
116-
html_theme_path = ["."]
110+
import sphinx_rtd_theme
111+
112+
html_theme = "sphinx_rtd_theme"
117113

118114
# Add any paths that contain custom static files (such as style sheets) here,
119115
# relative to this directory. They are copied after the builtin static files,

‎examples/displayio_effects_colorwheel.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,12 @@
88
"""
99

1010
import time
11+
1112
import board
1213
import displayio
1314
import terminalio
1415
from displayio_dial import Dial
16+
1517
from displayio_effects import WidgetType, colorwheel_effect
1618

1719
# Fonts used for the Dial tick labels
@@ -47,12 +49,11 @@
4749
my_group = displayio.Group()
4850
my_group.append(my_dial)
4951

50-
display.show(my_group) # add high level Group to the display
52+
display.root_group = my_group # add high level Group to the display
5153

5254
# Set the dial to the value before turning on the fluctuation effect
5355
my_dial.value = 50
5456

5557
while True:
56-
5758
my_dial.update_colorwheel()
5859
time.sleep(0.01)

‎examples/displayio_effects_gauge.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@
66
Use the random fluctuation effect for the Gauge.
77
"""
88

9-
109
import time
10+
1111
import board
1212
import displayio
1313
from displayio_gauge import Gauge
14+
1415
from displayio_effects import WidgetType, fluctuation_effect
1516

1617
display = board.DISPLAY
@@ -24,7 +25,7 @@
2425
color_palette[0] = 0x000000
2526
bg_sprite = displayio.TileGrid(color_bitmap, pixel_shader=color_palette, x=0, y=0)
2627
main_group.append(bg_sprite)
27-
display.show(main_group)
28+
display.root_group = main_group
2829

2930
fluctuation_effect.hook_fluctuation_effect(Gauge, WidgetType.GAUGE)
3031

@@ -45,5 +46,4 @@
4546

4647

4748
while True:
48-
4949
my_gauge.update_fluctuation()

‎examples/displayio_effects_simpletest.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import displayio
1212
import terminalio
1313
from displayio_dial import Dial
14+
1415
from displayio_effects import WidgetType, fluctuation_effect
1516

1617
# Fonts used for the Dial tick labels
@@ -47,7 +48,7 @@
4748
my_group = displayio.Group()
4849
my_group.append(my_dial)
4950

50-
display.show(my_group) # add high level Group to the display
51+
display.root_group = my_group # add high level Group to the display
5152

5253
# Set the dial to the value before turning on the fluctuation effect
5354
my_dial.value = 50
@@ -56,5 +57,4 @@
5657
my_dial.fluctuation_move_rate = 0.01 # Fluctuate at "0.01" per throttle_update()
5758

5859
while True:
59-
6060
my_dial.update_fluctuation()

‎pyproject.toml

Lines changed: 48 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,50 @@
1-
# SPDX-FileCopyrightText: 2020 Diego Elio Pettenò
1+
# SPDX-FileCopyrightText: 2022 Alec Delaney, written for Adafruit Industries
2+
# SPDX-FileCopyrightText: Copyright (c) 2025 Alec Delaney for circuitpython
23
#
3-
# SPDX-License-Identifier: Unlicense
4+
# SPDX-License-Identifier: MIT
45

5-
[tool.black]
6-
target-version = ['py35']
6+
[build-system]
7+
requires = [
8+
"setuptools",
9+
"wheel",
10+
"setuptools-scm",
11+
]
12+
13+
[project]
14+
name = "circuitpython-displayio-effects"
15+
description = "Add some flair to your displayio widgets with effects!"
16+
version = "0.0.0+auto.0"
17+
readme = "README.rst"
18+
authors = [
19+
{name = "circuitpython"}
20+
]
21+
urls = {Homepage = "https://github.com/circuitpython/CircuitPython_Org_DisplayIO_Effects"}
22+
keywords = [
23+
"adafruit",
24+
"blinka",
25+
"circuitpython",
26+
"micropython",
27+
"displayio_effects",
28+
"effects,",
29+
"displayio,",
30+
"widget",
31+
]
32+
license = {text = "MIT"}
33+
classifiers = [
34+
"Intended Audience :: Developers",
35+
"Topic :: Software Development :: Libraries",
36+
"Topic :: Software Development :: Embedded Systems",
37+
"Topic :: System :: Hardware",
38+
"License :: OSI Approved :: MIT License",
39+
"Programming Language :: Python :: 3",
40+
]
41+
dynamic = ["dependencies", "optional-dependencies"]
42+
43+
[tool.setuptools]
44+
# TODO: IF LIBRARY FILES ARE A PACKAGE FOLDER,
45+
# CHANGE `py_modules = ['...']` TO `packages = ['...']`
46+
packages = ["displayio_effects"]
47+
48+
[tool.setuptools.dynamic]
49+
dependencies = {file = ["requirements.txt"]}
50+
optional-dependencies = {optional = {file = ["optional_requirements.txt"]}}

‎requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@
44
# SPDX-License-Identifier: MIT
55

66
Adafruit-Blinka
7+
adafruit-circuitpython-itertools

‎ruff.toml

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
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+
97+
]
98+
99+
[format]
100+
line-ending = "lf"

‎setup.py

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

0 commit comments

Comments
 (0)
Please sign in to comment.