From e032600513ed91391e80501a9930ef184fcf5a46 Mon Sep 17 00:00:00 2001 From: dherrada Date: Sun, 15 Mar 2020 18:00:36 -0400 Subject: [PATCH] Ran black, updated to pylint 2.x --- .github/workflows/build.yml | 2 +- adafruit_fingerprint.py | 113 +++++++++++++------------ docs/conf.py | 110 ++++++++++++++---------- examples/fingerprint_simpletest.py | 21 +++-- examples/fingerprint_simpletest_rpi.py | 44 +++++----- setup.py | 50 +++++------ 6 files changed, 183 insertions(+), 157 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fff3aa9..1dad804 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -40,7 +40,7 @@ jobs: source actions-ci/install.sh - name: Pip install pylint, black, & Sphinx run: | - pip install --force-reinstall pylint==1.9.2 black==19.10b0 Sphinx sphinx-rtd-theme + pip install --force-reinstall pylint black==19.10b0 Sphinx sphinx-rtd-theme - name: Library version run: git describe --dirty --always --tags - name: PyLint diff --git a/adafruit_fingerprint.py b/adafruit_fingerprint.py index ee07119..1b1396c 100644 --- a/adafruit_fingerprint.py +++ b/adafruit_fingerprint.py @@ -42,6 +42,7 @@ """ from micropython import const + try: import struct except ImportError: @@ -99,8 +100,10 @@ PASSVERIFY = const(0x21) MODULEOK = const(0x55) + class Adafruit_Fingerprint: """UART based fingerprint sensor.""" + _uart = None password = None @@ -116,18 +119,18 @@ class Adafruit_Fingerprint: baudrate = None def __init__(self, uart, passwd=(0, 0, 0, 0)): - # Create object with UART for interface, and default 32-bit password + # Create object with UART for interface, and default 32-bit password self.password = passwd self._uart = uart if self.verify_password() != OK: - raise RuntimeError('Failed to find sensor, check wiring!') + raise RuntimeError("Failed to find sensor, check wiring!") def check_module(self): """Checks the state of the fingerprint scanner module. Returns OK or error.""" self._send_packet([_GETECHO]) if self._get_packet(12)[0] != MODULEOK: - raise RuntimeError('Something is wrong with the sensor.') + raise RuntimeError("Something is wrong with the sensor.") return True def verify_password(self): @@ -140,7 +143,7 @@ def count_templates(self): in ``self.template_count``. Returns the packet error code or OK success""" self._send_packet([_TEMPLATECOUNT]) r = self._get_packet(14) - self.template_count = struct.unpack('>H', bytes(r[1:3]))[0] + self.template_count = struct.unpack(">H", bytes(r[1:3]))[0] return r[0] def read_sysparam(self): @@ -148,12 +151,12 @@ def read_sysparam(self): self._send_packet([_READSYSPARA]) r = self._get_packet(28) if r[0] != OK: - raise RuntimeError('Command failed.') - self.library_size = struct.unpack('>H', bytes(r[5:7]))[0] - self.security_level = struct.unpack('>H', bytes(r[7:9]))[0] + raise RuntimeError("Command failed.") + self.library_size = struct.unpack(">H", bytes(r[5:7]))[0] + self.security_level = struct.unpack(">H", bytes(r[7:9]))[0] self.device_address = bytes(r[9:13]) - self.data_packet_size = struct.unpack('>H', bytes(r[13:15]))[0] - self.baudrate = struct.unpack('>H', bytes(r[15:17]))[0] + self.data_packet_size = struct.unpack(">H", bytes(r[13:15]))[0] + self.baudrate = struct.unpack(">H", bytes(r[15:17]))[0] return r[0] def get_image(self): @@ -192,36 +195,36 @@ def load_model(self, location, slot=1): self._send_packet([_LOAD, slot, location >> 8, location & 0xFF]) return self._get_packet(12)[0] - def get_fpdata(self, sensorbuffer='char', slot=1): + def get_fpdata(self, sensorbuffer="char", slot=1): """Requests the sensor to transfer the fingerprint image or template. Returns the data payload only.""" if slot != 1 or slot != 2: # raise error or use default value? slot = 2 - if sensorbuffer == 'image': + if sensorbuffer == "image": self._send_packet([_UPLOADIMAGE]) - elif sensorbuffer == 'char': + elif sensorbuffer == "char": self._send_packet([_UPLOAD, slot]) else: - raise RuntimeError('Uknown sensor buffer type') + raise RuntimeError("Uknown sensor buffer type") if self._get_packet(12)[0] == 0: res = self._get_data(9) # print('datasize: ' + str(len(res))) # print(res) return res - def send_fpdata(self, data, sensorbuffer='char', slot=1): + def send_fpdata(self, data, sensorbuffer="char", slot=1): """Requests the sensor to receive data, either a fingerprint image or a character/template data. Data is the payload only.""" if slot != 1 or slot != 2: # raise error or use default value? slot = 2 - if sensorbuffer == 'image': + if sensorbuffer == "image": self._send_packet([_DOWNLOADIMAGE]) - elif sensorbuffer == 'char': + elif sensorbuffer == "char": self._send_packet([_DOWNLOAD, slot]) else: - raise RuntimeError('Uknown sensor buffer type') + raise RuntimeError("Uknown sensor buffer type") if self._get_packet(12)[0] == 0: self._send_data(data) # print('datasize: ' + str(len(res))) @@ -238,16 +241,19 @@ def read_templates(self): """Requests the sensor to list of all template locations in use and stores them in self.templates. Returns the packet error code or OK success""" - import math + from math import ceil # pylint: disable=import-outside-toplevel + self.templates = [] self.read_sysparam() - temp_r = [0x0c, ] - for j in range(math.ceil(self.library_size/256)): + temp_r = [ + 0x0C, + ] + for j in range(ceil(self.library_size / 256)): self._send_packet([_TEMPLATEREAD, j]) r = self._get_packet(44) if r[0] == OK: for i in range(32): - byte = r[i+1] + byte = r[i + 1] for bit in range(8): if byte & (1 << bit): self.templates.append((i * 8) + bit + (j * 256)) @@ -261,52 +267,53 @@ def finger_fast_search(self): last model generated. Stores the location and confidence in self.finger_id and self.confidence. Returns the packet error code or OK success""" # high speed search of slot #1 starting at page 0x0000 and page #0x00A3 - #self._send_packet([_HISPEEDSEARCH, 0x01, 0x00, 0x00, 0x00, 0xA3]) + # self._send_packet([_HISPEEDSEARCH, 0x01, 0x00, 0x00, 0x00, 0xA3]) # or page #0x03E9 to accommodate modules with up to 1000 capacity - #self._send_packet([_HISPEEDSEARCH, 0x01, 0x00, 0x00, 0x03, 0xE9]) + # self._send_packet([_HISPEEDSEARCH, 0x01, 0x00, 0x00, 0x03, 0xE9]) # or base the page on module's capacity self.read_sysparam() capacity = self.library_size - self._send_packet([_HISPEEDSEARCH, 0x01, 0x00, 0x00, capacity >> 8, - capacity & 0xFF]) + self._send_packet( + [_HISPEEDSEARCH, 0x01, 0x00, 0x00, capacity >> 8, capacity & 0xFF] + ) r = self._get_packet(16) - self.finger_id, self.confidence = struct.unpack('>HH', bytes(r[1:5])) + self.finger_id, self.confidence = struct.unpack(">HH", bytes(r[1:5])) # print(r) return r[0] -################################################## + ################################################## def _get_packet(self, expected): """ Helper to parse out a packet from the UART and check structure. Returns just the data payload from the packet""" res = self._uart.read(expected) - #print("Got", res) + # print("Got", res) if (not res) or (len(res) != expected): - raise RuntimeError('Failed to read data from sensor') + raise RuntimeError("Failed to read data from sensor") # first two bytes are start code - start = struct.unpack('>H', res[0:2])[0] + start = struct.unpack(">H", res[0:2])[0] if start != _STARTCODE: - raise RuntimeError('Incorrect packet data') + raise RuntimeError("Incorrect packet data") # next 4 bytes are address - addr = [i for i in res[2:6]] + addr = list(i for i in res[2:6]) if addr != self.address: - raise RuntimeError('Incorrect address') + raise RuntimeError("Incorrect address") - packet_type, length = struct.unpack('>BH', res[6:9]) + packet_type, length = struct.unpack(">BH", res[6:9]) if packet_type != _ACKPACKET: - raise RuntimeError('Incorrect packet data') + raise RuntimeError("Incorrect packet data") # we should check the checksum # but i don't know how # not yet anyway - #packet_sum = struct.unpack('>H', res[9+(length-2):9+length])[0] - #print(packet_sum) - #print(packet_type + length + struct.unpack('>HHHH', res[9:9+(length-2)])) + # packet_sum = struct.unpack('>H', res[9+(length-2):9+length])[0] + # print(packet_sum) + # print(packet_type + length + struct.unpack('>HHHH', res[9:9+(length-2)])) - reply = [i for i in res[9:9+(length-2)]] - #print(reply) + reply = list(i for i in res[9 : 9 + (length - 2)]) + # print(reply) return reply def _get_data(self, expected): @@ -315,38 +322,38 @@ def _get_data(self, expected): as fingerprint image, etc. Returns the data payload.""" res = self._uart.read(expected) if (not res) or (len(res) != expected): - raise RuntimeError('Failed to read data from sensor') + raise RuntimeError("Failed to read data from sensor") # first two bytes are start code - start = struct.unpack('>H', res[0:2])[0] + start = struct.unpack(">H", res[0:2])[0] # print(start) if start != _STARTCODE: - raise RuntimeError('Incorrect packet data') + raise RuntimeError("Incorrect packet data") # next 4 bytes are address - addr = [i for i in res[2:6]] + addr = list(i for i in res[2:6]) # print(addr) if addr != self.address: - raise RuntimeError('Incorrect address') + raise RuntimeError("Incorrect address") - packet_type, length = struct.unpack('>BH', res[6:9]) - #print(str(packet_type) + ' ' + str(length)) + packet_type, length = struct.unpack(">BH", res[6:9]) + # print(str(packet_type) + ' ' + str(length)) # todo: check checksum if packet_type != _DATAPACKET: if packet_type != _ENDDATAPACKET: - raise RuntimeError('Incorrect packet data') + raise RuntimeError("Incorrect packet data") if packet_type == _DATAPACKET: - res = self._uart.read(length-2) + res = self._uart.read(length - 2) # todo: we should really inspect the headers and checksum - reply = [i for i in res[0:length]] + reply = list(i for i in res[0:length]) self._uart.read(2) # disregard checksum but we really shouldn't reply += self._get_data(9) elif packet_type == _ENDDATAPACKET: - res = self._uart.read(length-2) + res = self._uart.read(length - 2) # todo: we should really inspect the headers and checksum - reply = [i for i in res[0:length]] + reply = list(i for i in res[0:length]) self._uart.read(2) # disregard checksum but we really shouldn't # print(len(reply)) # print(reply) @@ -367,7 +374,7 @@ def _send_packet(self, data): packet.append(checksum >> 8) packet.append(checksum & 0xFF) - #print("Sending: ", [hex(i) for i in packet]) + # print("Sending: ", [hex(i) for i in packet]) self._uart.write(bytearray(packet)) def _send_data(self, data): diff --git a/docs/conf.py b/docs/conf.py index 9d613b1..ac21b3b 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -2,7 +2,8 @@ import os import sys -sys.path.insert(0, os.path.abspath('..')) + +sys.path.insert(0, os.path.abspath("..")) # -- General configuration ------------------------------------------------ @@ -10,9 +11,9 @@ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ - 'sphinx.ext.autodoc', - 'sphinx.ext.intersphinx', - 'sphinx.ext.viewcode', + "sphinx.ext.autodoc", + "sphinx.ext.intersphinx", + "sphinx.ext.viewcode", ] # Uncomment the below if you use native CircuitPython modules such as @@ -20,29 +21,32 @@ # autodoc module docs will fail to generate with a warning. # autodoc_mock_imports = ["micropython"] -intersphinx_mapping = {'python': ('https://docs.python.org/3.4', None),'CircuitPython': ('https://circuitpython.readthedocs.io/en/latest/', None)} +intersphinx_mapping = { + "python": ("https://docs.python.org/3.4", None), + "CircuitPython": ("https://circuitpython.readthedocs.io/en/latest/", None), +} # Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] +templates_path = ["_templates"] -source_suffix = '.rst' +source_suffix = ".rst" # The master toctree document. -master_doc = 'index' +master_doc = "index" # General information about the project. -project = u'Adafruit Fingerprint Library' -copyright = u'2017 ladyada' -author = u'ladyada' +project = u"Adafruit Fingerprint Library" +copyright = u"2017 ladyada" +author = u"ladyada" # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. -version = u'1.0' +version = u"1.0" # The full version, including alpha/beta/rc tags. -release = u'1.0' +release = u"1.0" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. @@ -54,7 +58,7 @@ # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This patterns also effect to html_static_path and html_extra_path -exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', '.env', 'CODE_OF_CONDUCT.md'] +exclude_patterns = ["_build", "Thumbs.db", ".DS_Store", ".env", "CODE_OF_CONDUCT.md"] # The reST default role (used for this markup: `text`) to use for all # documents. @@ -66,7 +70,7 @@ add_function_parentheses = True # The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' +pygments_style = "sphinx" # If true, `todo` and `todoList` produce output, else they produce nothing. todo_include_todos = False @@ -80,59 +84,62 @@ # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # -on_rtd = os.environ.get('READTHEDOCS', None) == 'True' +on_rtd = os.environ.get("READTHEDOCS", None) == "True" if not on_rtd: # only import and set the theme if we're building docs locally try: import sphinx_rtd_theme - html_theme = 'sphinx_rtd_theme' - html_theme_path = [sphinx_rtd_theme.get_html_theme_path(), '.'] + + html_theme = "sphinx_rtd_theme" + html_theme_path = [sphinx_rtd_theme.get_html_theme_path(), "."] except: - html_theme = 'default' - html_theme_path = ['.'] + html_theme = "default" + html_theme_path = ["."] else: - html_theme_path = ['.'] + html_theme_path = ["."] # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] +html_static_path = ["_static"] # The name of an image file (relative to this directory) to use as a favicon of # the docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. # -html_favicon = '_static/favicon.ico' +html_favicon = "_static/favicon.ico" # Output file base name for HTML help builder. -htmlhelp_basename = 'AdafruitFingerprintLibrarydoc' +htmlhelp_basename = "AdafruitFingerprintLibrarydoc" # -- Options for LaTeX output --------------------------------------------- latex_elements = { - # The paper size ('letterpaper' or 'a4paper'). - # - # 'papersize': 'letterpaper', - - # The font size ('10pt', '11pt' or '12pt'). - # - # 'pointsize': '10pt', - - # Additional stuff for the LaTeX preamble. - # - # 'preamble': '', - - # Latex figure (float) alignment - # - # 'figure_align': 'htbp', + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). latex_documents = [ - (master_doc, 'AdafruitFingerprintLibrary.tex', u'AdafruitFingerprint Library Documentation', - author, 'manual'), + ( + master_doc, + "AdafruitFingerprintLibrary.tex", + u"AdafruitFingerprint Library Documentation", + author, + "manual", + ), ] # -- Options for manual page output --------------------------------------- @@ -140,8 +147,13 @@ # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ - (master_doc, 'AdafruitFingerprintlibrary', u'Adafruit Fingerprint Library Documentation', - [author], 1) + ( + master_doc, + "AdafruitFingerprintlibrary", + u"Adafruit Fingerprint Library Documentation", + [author], + 1, + ) ] # -- Options for Texinfo output ------------------------------------------- @@ -150,7 +162,13 @@ # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ - (master_doc, 'AdafruitFingerprintLibrary', u'Adafruit Fingerprint Library Documentation', - author, 'AdafruitFingerprintLibrary', 'One line description of project.', - 'Miscellaneous'), + ( + master_doc, + "AdafruitFingerprintLibrary", + u"Adafruit Fingerprint Library Documentation", + author, + "AdafruitFingerprintLibrary", + "One line description of project.", + "Miscellaneous", + ), ] diff --git a/examples/fingerprint_simpletest.py b/examples/fingerprint_simpletest.py index 9b597b3..f2f9ba4 100644 --- a/examples/fingerprint_simpletest.py +++ b/examples/fingerprint_simpletest.py @@ -10,12 +10,12 @@ uart = busio.UART(board.TX, board.RX, baudrate=57600) # If using with a computer such as Linux/RaspberryPi, Mac, Windows with USB/serial converter: -#import serial -#uart = serial.Serial("/dev/ttyUSB0", baudrate=57600, timeout=1) +# import serial +# uart = serial.Serial("/dev/ttyUSB0", baudrate=57600, timeout=1) # If using with Linux/Raspberry Pi and hardware UART: -#import serial -#uart = serial.Serial("/dev/ttyS0", baudrate=57600, timeout=1) +# import serial +# uart = serial.Serial("/dev/ttyS0", baudrate=57600, timeout=1) finger = adafruit_fingerprint.Adafruit_Fingerprint(uart) @@ -35,6 +35,7 @@ def get_fingerprint(): return False return True + # pylint: disable=too-many-branches def get_fingerprint_detail(): """Get a finger print image, template it, and see if it matches! @@ -81,6 +82,7 @@ def get_fingerprint_detail(): print("Other error") return False + # pylint: disable=too-many-statements def enroll_finger(location): """Take a 2 finger images and template it, then store in 'location'""" @@ -95,7 +97,7 @@ def enroll_finger(location): if i == adafruit_fingerprint.OK: print("Image taken") break - elif i == adafruit_fingerprint.NOFINGER: + if i == adafruit_fingerprint.NOFINGER: print(".", end="", flush=True) elif i == adafruit_fingerprint.IMAGEFAIL: print("Imaging error") @@ -154,6 +156,7 @@ def enroll_finger(location): ################################################## + def get_num(): """Use input() to get a valid number from 1 to 127. Retry till success!""" i = 0 @@ -168,7 +171,7 @@ def get_num(): while True: print("----------------") if finger.read_templates() != adafruit_fingerprint.OK: - raise RuntimeError('Failed to read templates') + raise RuntimeError("Failed to read templates") print("Fingerprint templates:", finger.templates) print("e) enroll print") print("f) find print") @@ -176,14 +179,14 @@ def get_num(): print("----------------") c = input("> ") - if c == 'e': + if c == "e": enroll_finger(get_num()) - if c == 'f': + if c == "f": if get_fingerprint(): print("Detected #", finger.finger_id, "with confidence", finger.confidence) else: print("Finger not found") - if c == 'd': + if c == "d": if finger.delete_model(get_num()) == adafruit_fingerprint.OK: print("Deleted!") else: diff --git a/examples/fingerprint_simpletest_rpi.py b/examples/fingerprint_simpletest_rpi.py index 6d5ff6b..18fa97a 100644 --- a/examples/fingerprint_simpletest_rpi.py +++ b/examples/fingerprint_simpletest_rpi.py @@ -1,6 +1,7 @@ import time import board -#import busio + +# import busio import serial from digitalio import DigitalInOut, Direction import adafruit_fingerprint @@ -8,18 +9,18 @@ led = DigitalInOut(board.D13) led.direction = Direction.OUTPUT -#uart = busio.UART(board.TX, board.RX, baudrate=57600) +# uart = busio.UART(board.TX, board.RX, baudrate=57600) # If using with a computer such as Linux/RaspberryPi, Mac, Windows with USB/serial converter: -#import serial -#uart = serial.Serial("/dev/ttyUSB0", baudrate=57600, timeout=1) +# import serial +# uart = serial.Serial("/dev/ttyUSB0", baudrate=57600, timeout=1) # If using with Linux/Raspberry Pi and hardware UART: -#import serial -#uart = serial.Serial("/dev/ttyS0", baudrate=57600, timeout=1) +# import serial +# uart = serial.Serial("/dev/ttyS0", baudrate=57600, timeout=1) # If using with Linux/Raspberry Pi 3 with pi3-disable-bt -#import serial +# import serial uart = serial.Serial("/dev/ttyAMA0", baudrate=57600, timeout=1) finger = adafruit_fingerprint.Adafruit_Fingerprint(uart) @@ -40,6 +41,7 @@ def get_fingerprint(): return False return True + # pylint: disable=too-many-branches def get_fingerprint_detail(): """Get a finger print image, template it, and see if it matches! @@ -86,6 +88,7 @@ def get_fingerprint_detail(): print("Other error") return False + # pylint: disable=too-many-statements def enroll_finger(location): """Take a 2 finger images and template it, then store in 'location'""" @@ -100,7 +103,7 @@ def enroll_finger(location): if i == adafruit_fingerprint.OK: print("Image taken") break - elif i == adafruit_fingerprint.NOFINGER: + if i == adafruit_fingerprint.NOFINGER: print(".", end="", flush=True) elif i == adafruit_fingerprint.IMAGEFAIL: print("Imaging error") @@ -156,14 +159,16 @@ def enroll_finger(location): return True + def save_fingerprint_image(filename): """Scan fingerprint then save image to filename.""" while finger.get_image(): pass # let PIL take care of the image headers and file structure - from PIL import Image - img = Image.new('L', (256, 288), 'white') + from PIL import Image # pylint: disable=import-outside-toplevel + + img = Image.new("L", (256, 288), "white") pixeldata = img.load() mask = 0b00001111 result = finger.get_fpdata(sensorbuffer="image") @@ -194,6 +199,7 @@ def save_fingerprint_image(filename): ################################################## + def get_num(max_number): """Use input() to get a valid number from 0 to the maximum size of the library. Retry till success!""" @@ -209,13 +215,13 @@ def get_num(max_number): while True: print("----------------") if finger.read_templates() != adafruit_fingerprint.OK: - raise RuntimeError('Failed to read templates') + raise RuntimeError("Failed to read templates") print("Fingerprint templates: ", finger.templates) if finger.count_templates() != adafruit_fingerprint.OK: - raise RuntimeError('Failed to read templates') + raise RuntimeError("Failed to read templates") print("Number of templates found: ", finger.template_count) if finger.read_sysparam() != adafruit_fingerprint.OK: - raise RuntimeError('Failed to get system parameters') + raise RuntimeError("Failed to get system parameters") print("Size of template library: ", finger.library_size) print("e) enroll print") print("f) find print") @@ -226,28 +232,28 @@ def get_num(max_number): print("----------------") c = input("> ") - if c == 'e': + if c == "e": enroll_finger(get_num(finger.library_size)) - if c == 'f': + if c == "f": if get_fingerprint(): print("Detected #", finger.finger_id, "with confidence", finger.confidence) else: print("Finger not found") - if c == 'd': + if c == "d": if finger.delete_model(get_num(finger.library_size)) == adafruit_fingerprint.OK: print("Deleted!") else: print("Failed to delete") - if c == 's': + if c == "s": if save_fingerprint_image("fingerprint.png"): print("Fingerprint image saved") else: print("Failed to save fingerprint image") - if c == 'r': + if c == "r": if finger.empty_library() == adafruit_fingerprint.OK: print("Library empty!") else: print("Failed to empty library") - if c == 'q': + if c == "q": print("Exiting fingerprint example program") raise SystemExit diff --git a/setup.py b/setup.py index 9bccdab..6af00b4 100644 --- a/setup.py +++ b/setup.py @@ -7,6 +7,7 @@ # Always prefer setuptools over distutils from setuptools import setup, find_packages + # To use a consistent encoding from codecs import open from os import path @@ -14,47 +15,38 @@ here = path.abspath(path.dirname(__file__)) # Get the long description from the README file -with open(path.join(here, 'README.rst'), encoding='utf-8') as f: +with open(path.join(here, "README.rst"), encoding="utf-8") as f: long_description = f.read() setup( - name='adafruit-circuitpython-fingerprint', - + name="adafruit-circuitpython-fingerprint", use_scm_version=True, - setup_requires=['setuptools_scm'], - - description='CircuitPython library for UART fingerprint sensor.', + setup_requires=["setuptools_scm"], + description="CircuitPython library for UART fingerprint sensor.", long_description=long_description, - long_description_content_type='text/x-rst', - + long_description_content_type="text/x-rst", # The project's main homepage. - url='https://github.com/adafruit/Adafruit_CircuitPython_Fingerprint', - + url="https://github.com/adafruit/Adafruit_CircuitPython_Fingerprint", # Author details - author='Adafruit Industries', - author_email='circuitpython@adafruit.com', - - install_requires=['Adafruit-Blinka', 'pyserial'], - + author="Adafruit Industries", + author_email="circuitpython@adafruit.com", + install_requires=["Adafruit-Blinka", "pyserial"], # Choose your license - license='MIT', - + license="MIT", # See https://pypi.python.org/pypi?%3Aaction=list_classifiers classifiers=[ - 'Development Status :: 3 - Alpha', - 'Intended Audience :: Developers', - 'Topic :: Software Development :: Libraries', - 'Topic :: System :: Hardware', - 'License :: OSI Approved :: MIT License', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.4', - 'Programming Language :: Python :: 3.5', + "Development Status :: 3 - Alpha", + "Intended Audience :: Developers", + "Topic :: Software Development :: Libraries", + "Topic :: System :: Hardware", + "License :: OSI Approved :: MIT License", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.4", + "Programming Language :: Python :: 3.5", ], - # What does your project relate to? - keywords='adafruit uart fingerprint finger print sensor hardware micropython circuitpython', - + keywords="adafruit uart fingerprint finger print sensor hardware micropython circuitpython", # You can just specify the packages manually here if your project is # simple. Or you can use find_packages(). - py_modules=['adafruit_fingerprint'], + py_modules=["adafruit_fingerprint"], )