From 9a423cf45ac76ee730dfc88eea6eb223cff0ff96 Mon Sep 17 00:00:00 2001 From: dherrada Date: Tue, 28 Sep 2021 15:21:11 -0400 Subject: [PATCH 1/7] Linted --- examples/macropad_keyboard_mouse.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/macropad_keyboard_mouse.py b/examples/macropad_keyboard_mouse.py index d9f16ec..4900acf 100755 --- a/examples/macropad_keyboard_mouse.py +++ b/examples/macropad_keyboard_mouse.py @@ -18,14 +18,14 @@ if key_event: if key_event.pressed: - if key_event.key_number is 0: + if key_event.key_number == 0: macropad.keyboard.send(macropad.Keycode.A) - if key_event.key_number is 1: + if key_event.key_number == 1: macropad.keyboard.press(macropad.Keycode.SHIFT, macropad.Keycode.B) macropad.keyboard.release_all() - if key_event.key_number is 2: + if key_event.key_number == 2: macropad.keyboard_layout.write("Hello, World!") - if key_event.key_number is 3: + if key_event.key_number == 3: macropad.consumer_control.send( macropad.ConsumerControlCode.VOLUME_DECREMENT ) From afe7caa1a99c30889d02c9be68ea23ce494f96c8 Mon Sep 17 00:00:00 2001 From: Alec Delaney Date: Wed, 10 Nov 2021 21:17:52 -0500 Subject: [PATCH 2/7] PATCH Pylint and readthedocs patch test --- .github/workflows/build.yml | 4 ++-- .pre-commit-config.yaml | 28 +++++++++++++++------------- .pylintrc | 2 +- requirements.txt | 1 + 4 files changed, 19 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a9516b8..cebf850 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -42,9 +42,9 @@ jobs: # (e.g. - apt-get: gettext, etc; pip: circuitpython-build-tools, requirements.txt; etc.) run: | source actions-ci/install.sh - - name: Pip install pylint, Sphinx, pre-commit + - name: Pip install Sphinx, pre-commit run: | - pip install --force-reinstall pylint Sphinx sphinx-rtd-theme pre-commit + pip install --force-reinstall Sphinx sphinx-rtd-theme pre-commit - name: Library version run: git describe --dirty --always --tags - name: Setup problem matchers diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 13d4273..1b9fadc 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -18,23 +18,25 @@ repos: - id: end-of-file-fixer - id: trailing-whitespace - repo: https://github.com/pycqa/pylint - rev: pylint-2.7.1 + rev: v2.11.1 hooks: - id: pylint name: pylint (library code) types: [python] + args: + - --disable=consider-using-f-string exclude: "^(docs/|examples/|tests/|setup.py$)" -- repo: local - hooks: - - id: pylint_examples - name: pylint (examples code) + - id: pylint + name: pylint (example code) description: Run pylint rules on "examples/*.py" files - entry: /usr/bin/env bash -c - args: ['([[ ! -d "examples" ]] || for example in $(find . -path "./examples/*.py"); do pylint --disable=missing-docstring,invalid-name,consider-using-f-string $example; done)'] - language: system - - id: pylint_tests - name: pylint (tests code) + types: [python] + files: "^examples/" + args: + - --disable=missing-docstring,invalid-name,consider-using-f-string,duplicate-code + - id: pylint + name: pylint (test code) description: Run pylint rules on "tests/*.py" files - entry: /usr/bin/env bash -c - args: ['([[ ! -d "tests" ]] || for test in $(find . -path "./tests/*.py"); do pylint --disable=missing-docstring,consider-using-f-string $test; done)'] - language: system + types: [python] + files: "^tests/" + args: + - --disable=missing-docstring,consider-using-f-string,duplicate-code diff --git a/.pylintrc b/.pylintrc index 79bcfb7..96e676b 100644 --- a/.pylintrc +++ b/.pylintrc @@ -252,7 +252,7 @@ ignore-docstrings=yes ignore-imports=yes # Minimum lines number of a similarity. -min-similarity-lines=12 +min-similarity-lines=4 [BASIC] diff --git a/requirements.txt b/requirements.txt index f5d71b5..7f7a100 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10,3 +10,4 @@ adafruit-circuitpython-neopixel adafruit-circuitpython-display-text adafruit-circuitpython-simple-text-display adafruit-circuitpython-debouncer +sphinx>=4.0.0 From ade78b3687bdb164334051fefbe7cad867083ec1 Mon Sep 17 00:00:00 2001 From: Alec Delaney Date: Wed, 10 Nov 2021 21:19:32 -0500 Subject: [PATCH 3/7] Disabled unspecified-encoding pylint check --- .pylintrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pylintrc b/.pylintrc index 96e676b..08e12bf 100644 --- a/.pylintrc +++ b/.pylintrc @@ -55,7 +55,7 @@ confidence= # no Warning level messages displayed, use"--disable=all --enable=classes # --disable=W" # disable=import-error,print-statement,parameter-unpacking,unpacking-in-except,old-raise-syntax,backtick,long-suffix,old-ne-operator,old-octal-literal,import-star-module-level,raw-checker-failed,bad-inline-option,locally-disabled,locally-enabled,file-ignored,suppressed-message,useless-suppression,deprecated-pragma,apply-builtin,basestring-builtin,buffer-builtin,cmp-builtin,coerce-builtin,execfile-builtin,file-builtin,long-builtin,raw_input-builtin,reduce-builtin,standarderror-builtin,unicode-builtin,xrange-builtin,coerce-method,delslice-method,getslice-method,setslice-method,no-absolute-import,old-division,dict-iter-method,dict-view-method,next-method-called,metaclass-assignment,indexing-exception,raising-string,reload-builtin,oct-method,hex-method,nonzero-method,cmp-method,input-builtin,round-builtin,intern-builtin,unichr-builtin,map-builtin-not-iterating,zip-builtin-not-iterating,range-builtin-not-iterating,filter-builtin-not-iterating,using-cmp-argument,eq-without-hash,div-method,idiv-method,rdiv-method,exception-message-attribute,invalid-str-codec,sys-max-int,bad-python3-import,deprecated-string-function,deprecated-str-translate-call -disable=print-statement,parameter-unpacking,unpacking-in-except,old-raise-syntax,backtick,long-suffix,old-ne-operator,old-octal-literal,import-star-module-level,raw-checker-failed,bad-inline-option,locally-disabled,locally-enabled,file-ignored,suppressed-message,useless-suppression,deprecated-pragma,apply-builtin,basestring-builtin,buffer-builtin,cmp-builtin,coerce-builtin,execfile-builtin,file-builtin,long-builtin,raw_input-builtin,reduce-builtin,standarderror-builtin,unicode-builtin,xrange-builtin,coerce-method,delslice-method,getslice-method,setslice-method,no-absolute-import,old-division,dict-iter-method,dict-view-method,next-method-called,metaclass-assignment,indexing-exception,raising-string,reload-builtin,oct-method,hex-method,nonzero-method,cmp-method,input-builtin,round-builtin,intern-builtin,unichr-builtin,map-builtin-not-iterating,zip-builtin-not-iterating,range-builtin-not-iterating,filter-builtin-not-iterating,using-cmp-argument,eq-without-hash,div-method,idiv-method,rdiv-method,exception-message-attribute,invalid-str-codec,sys-max-int,bad-python3-import,deprecated-string-function,deprecated-str-translate-call,import-error,bad-continuation,pointless-string-statement +disable=print-statement,parameter-unpacking,unpacking-in-except,old-raise-syntax,backtick,long-suffix,old-ne-operator,old-octal-literal,import-star-module-level,raw-checker-failed,bad-inline-option,locally-disabled,locally-enabled,file-ignored,suppressed-message,useless-suppression,deprecated-pragma,apply-builtin,basestring-builtin,buffer-builtin,cmp-builtin,coerce-builtin,execfile-builtin,file-builtin,long-builtin,raw_input-builtin,reduce-builtin,standarderror-builtin,unicode-builtin,xrange-builtin,coerce-method,delslice-method,getslice-method,setslice-method,no-absolute-import,old-division,dict-iter-method,dict-view-method,next-method-called,metaclass-assignment,indexing-exception,raising-string,reload-builtin,oct-method,hex-method,nonzero-method,cmp-method,input-builtin,round-builtin,intern-builtin,unichr-builtin,map-builtin-not-iterating,zip-builtin-not-iterating,range-builtin-not-iterating,filter-builtin-not-iterating,using-cmp-argument,eq-without-hash,div-method,idiv-method,rdiv-method,exception-message-attribute,invalid-str-codec,sys-max-int,bad-python3-import,deprecated-string-function,deprecated-str-translate-call,import-error,bad-continuation,pointless-string-statement,unspecified-encoding # Enable the message, report, category or checker with the given id(s). You can # either give multiple identifier separated by comma (,) or put this option From 7eb4d31a05c0e4b81b25a1cb2ca364480aff54fe Mon Sep 17 00:00:00 2001 From: Alec Delaney Date: Wed, 10 Nov 2021 21:37:33 -0500 Subject: [PATCH 4/7] Fix to use context manager per pylint recommendation --- adafruit_macropad.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/adafruit_macropad.py b/adafruit_macropad.py index a1b33fa..51465b0 100755 --- a/adafruit_macropad.py +++ b/adafruit_macropad.py @@ -888,18 +888,20 @@ def play_file(self, file_name): with audiopwmio.PWMAudioOut( board.SPEAKER ) as audio: # pylint: disable=not-callable - wavefile = audiocore.WaveFile(open(file_name, "rb")) - audio.play(wavefile) - while audio.playing: - pass + with open(file_name, "rb") as audio_file: + wavefile = audiocore.WaveFile(audio_file) + audio.play(wavefile) + while audio.playing: + pass elif file_name.lower().endswith(".mp3"): with audiopwmio.PWMAudioOut( board.SPEAKER ) as audio: # pylint: disable=not-callable - mp3file = audiomp3.MP3Decoder(open(file_name, "rb")) - audio.play(mp3file) - while audio.playing: - pass + with open(file_name, "rb") as audio_file: + mp3file = audiomp3.MP3Decoder(audio_file) + audio.play(mp3file) + while audio.playing: + pass else: raise ValueError("Filetype must be wav or MP3.") self._speaker_enable.value = False From 6028516df7a1e5b3596c5a41026b561792d3e6a7 Mon Sep 17 00:00:00 2001 From: Alec Delaney Date: Thu, 11 Nov 2021 12:54:52 -0500 Subject: [PATCH 5/7] Move sphinx to docs/requirements.txt --- docs/requirements.txt | 6 ++++++ requirements.txt | 1 - 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 docs/requirements.txt diff --git a/docs/requirements.txt b/docs/requirements.txt new file mode 100644 index 0000000..7295640 --- /dev/null +++ b/docs/requirements.txt @@ -0,0 +1,6 @@ +# SPDX-FileCopyrightText: 2017 Scott Shawcroft, written for Adafruit Industries +# SPDX-FileCopyrightText: Copyright (c) 2021 Alec Delaney +# +# SPDX-License-Identifier: MIT + +sphinx>=4.0.0 diff --git a/requirements.txt b/requirements.txt index 7f7a100..f5d71b5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10,4 +10,3 @@ adafruit-circuitpython-neopixel adafruit-circuitpython-display-text adafruit-circuitpython-simple-text-display adafruit-circuitpython-debouncer -sphinx>=4.0.0 From 031448689e2a6df840a6dc786e2a8c4747573414 Mon Sep 17 00:00:00 2001 From: Alec Delaney Date: Thu, 11 Nov 2021 15:39:35 -0500 Subject: [PATCH 6/7] Edit to use chained context manager statements --- adafruit_macropad.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/adafruit_macropad.py b/adafruit_macropad.py index 51465b0..d805b70 100755 --- a/adafruit_macropad.py +++ b/adafruit_macropad.py @@ -887,8 +887,7 @@ def play_file(self, file_name): if file_name.lower().endswith(".wav"): with audiopwmio.PWMAudioOut( board.SPEAKER - ) as audio: # pylint: disable=not-callable - with open(file_name, "rb") as audio_file: + ) as audio, open(file_name, "rb") as audio_file: # pylint: disable=not-callable wavefile = audiocore.WaveFile(audio_file) audio.play(wavefile) while audio.playing: @@ -896,8 +895,7 @@ def play_file(self, file_name): elif file_name.lower().endswith(".mp3"): with audiopwmio.PWMAudioOut( board.SPEAKER - ) as audio: # pylint: disable=not-callable - with open(file_name, "rb") as audio_file: + ) as audio, open(file_name, "rb") as audio_file: # pylint: disable=not-callable mp3file = audiomp3.MP3Decoder(audio_file) audio.play(mp3file) while audio.playing: From 84e42592dba46d015acb08479c4dc97064b27e8e Mon Sep 17 00:00:00 2001 From: Alec Delaney Date: Thu, 11 Nov 2021 15:40:25 -0500 Subject: [PATCH 7/7] Formatted per pre-commit --- adafruit_macropad.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/adafruit_macropad.py b/adafruit_macropad.py index d805b70..198d20c 100755 --- a/adafruit_macropad.py +++ b/adafruit_macropad.py @@ -885,21 +885,21 @@ def play_file(self, file_name): self.stop_tone() self._speaker_enable.value = True if file_name.lower().endswith(".wav"): - with audiopwmio.PWMAudioOut( - board.SPEAKER - ) as audio, open(file_name, "rb") as audio_file: # pylint: disable=not-callable - wavefile = audiocore.WaveFile(audio_file) - audio.play(wavefile) - while audio.playing: - pass + with audiopwmio.PWMAudioOut(board.SPEAKER) as audio, open( + file_name, "rb" + ) as audio_file: # pylint: disable=not-callable + wavefile = audiocore.WaveFile(audio_file) + audio.play(wavefile) + while audio.playing: + pass elif file_name.lower().endswith(".mp3"): - with audiopwmio.PWMAudioOut( - board.SPEAKER - ) as audio, open(file_name, "rb") as audio_file: # pylint: disable=not-callable - mp3file = audiomp3.MP3Decoder(audio_file) - audio.play(mp3file) - while audio.playing: - pass + with audiopwmio.PWMAudioOut(board.SPEAKER) as audio, open( + file_name, "rb" + ) as audio_file: # pylint: disable=not-callable + mp3file = audiomp3.MP3Decoder(audio_file) + audio.play(mp3file) + while audio.playing: + pass else: raise ValueError("Filetype must be wav or MP3.") self._speaker_enable.value = False