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_adxl34x.py b/adafruit_adxl34x.py index 7bc45b8..a3b5c85 100755 --- a/adafruit_adxl34x.py +++ b/adafruit_adxl34x.py @@ -45,56 +45,58 @@ from micropython import const from adafruit_bus_device import i2c_device + try: from struct import unpack except ImportError: from ustruct import unpack __version__ = "0.0.0-auto.0" __repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_ADXL34x.git" -#pylint: disable=bad-whitespace -_ADXL345_DEFAULT_ADDRESS = const(0x53) # Assumes ALT address pin low +# pylint: disable=bad-whitespace +_ADXL345_DEFAULT_ADDRESS = const(0x53) # Assumes ALT address pin low # Conversion factors -_ADXL345_MG2G_MULTIPLIER = 0.004 # 4mg per lsb -_STANDARD_GRAVITY = 9.80665 # earth standard gravity - -_REG_DEVID = const(0x00) # Device ID -_REG_THRESH_TAP = const(0x1D) # Tap threshold -_REG_OFSX = const(0x1E) # X-axis offset -_REG_OFSY = const(0x1F) # Y-axis offset -_REG_OFSZ = const(0x20) # Z-axis offset -_REG_DUR = const(0x21) # Tap duration -_REG_LATENT = const(0x22) # Tap latency -_REG_WINDOW = const(0x23) # Tap window -_REG_THRESH_ACT = const(0x24) # Activity threshold -_REG_THRESH_INACT = const(0x25) # Inactivity threshold -_REG_TIME_INACT = const(0x26) # Inactivity time -_REG_ACT_INACT_CTL = const(0x27) # Axis enable control for [in]activity detection -_REG_THRESH_FF = const(0x28) # Free-fall threshold -_REG_TIME_FF = const(0x29) # Free-fall time -_REG_TAP_AXES = const(0x2A) # Axis control for single/double tap -_REG_ACT_TAP_STATUS = const(0x2B) # Source for single/double tap -_REG_BW_RATE = const(0x2C) # Data rate and power mode control -_REG_POWER_CTL = const(0x2D) # Power-saving features control -_REG_INT_ENABLE = const(0x2E) # Interrupt enable control -_REG_INT_MAP = const(0x2F) # Interrupt mapping control -_REG_INT_SOURCE = const(0x30) # Source of interrupts -_REG_DATA_FORMAT = const(0x31) # Data format control -_REG_DATAX0 = const(0x32) # X-axis data 0 -_REG_DATAX1 = const(0x33) # X-axis data 1 -_REG_DATAY0 = const(0x34) # Y-axis data 0 -_REG_DATAY1 = const(0x35) # Y-axis data 1 -_REG_DATAZ0 = const(0x36) # Z-axis data 0 -_REG_DATAZ1 = const(0x37) # Z-axis data 1 -_REG_FIFO_CTL = const(0x38) # FIFO control -_REG_FIFO_STATUS = const(0x39) # FIFO status -_INT_SINGLE_TAP = const(0b01000000) # SINGLE_TAP bit -_INT_DOUBLE_TAP = const(0b00100000) # DOUBLE_TAP bit -_INT_ACT = const(0b00010000) # ACT bit -_INT_INACT = const(0b00001000) # INACT bit -_INT_FREE_FALL = const(0b00000100) # FREE_FALL bit - -class DataRate: #pylint: disable=too-few-public-methods +_ADXL345_MG2G_MULTIPLIER = 0.004 # 4mg per lsb +_STANDARD_GRAVITY = 9.80665 # earth standard gravity + +_REG_DEVID = const(0x00) # Device ID +_REG_THRESH_TAP = const(0x1D) # Tap threshold +_REG_OFSX = const(0x1E) # X-axis offset +_REG_OFSY = const(0x1F) # Y-axis offset +_REG_OFSZ = const(0x20) # Z-axis offset +_REG_DUR = const(0x21) # Tap duration +_REG_LATENT = const(0x22) # Tap latency +_REG_WINDOW = const(0x23) # Tap window +_REG_THRESH_ACT = const(0x24) # Activity threshold +_REG_THRESH_INACT = const(0x25) # Inactivity threshold +_REG_TIME_INACT = const(0x26) # Inactivity time +_REG_ACT_INACT_CTL = const(0x27) # Axis enable control for [in]activity detection +_REG_THRESH_FF = const(0x28) # Free-fall threshold +_REG_TIME_FF = const(0x29) # Free-fall time +_REG_TAP_AXES = const(0x2A) # Axis control for single/double tap +_REG_ACT_TAP_STATUS = const(0x2B) # Source for single/double tap +_REG_BW_RATE = const(0x2C) # Data rate and power mode control +_REG_POWER_CTL = const(0x2D) # Power-saving features control +_REG_INT_ENABLE = const(0x2E) # Interrupt enable control +_REG_INT_MAP = const(0x2F) # Interrupt mapping control +_REG_INT_SOURCE = const(0x30) # Source of interrupts +_REG_DATA_FORMAT = const(0x31) # Data format control +_REG_DATAX0 = const(0x32) # X-axis data 0 +_REG_DATAX1 = const(0x33) # X-axis data 1 +_REG_DATAY0 = const(0x34) # Y-axis data 0 +_REG_DATAY1 = const(0x35) # Y-axis data 1 +_REG_DATAZ0 = const(0x36) # Z-axis data 0 +_REG_DATAZ1 = const(0x37) # Z-axis data 1 +_REG_FIFO_CTL = const(0x38) # FIFO control +_REG_FIFO_STATUS = const(0x39) # FIFO status +_INT_SINGLE_TAP = const(0b01000000) # SINGLE_TAP bit +_INT_DOUBLE_TAP = const(0b00100000) # DOUBLE_TAP bit +_INT_ACT = const(0b00010000) # ACT bit +_INT_INACT = const(0b00001000) # INACT bit +_INT_FREE_FALL = const(0b00000100) # FREE_FALL bit + + +class DataRate: # pylint: disable=too-few-public-methods """An enum-like class representing the possible data rates. Possible values are @@ -116,25 +118,26 @@ class DataRate: #pylint: disable=too-few-public-methods - ``DataRate.RATE_0_10_HZ`` """ - RATE_3200_HZ = const(0b1111) # 1600Hz Bandwidth 140mA IDD - RATE_1600_HZ = const(0b1110) # 800Hz Bandwidth 90mA IDD - RATE_800_HZ = const(0b1101) # 400Hz Bandwidth 140mA IDD - RATE_400_HZ = const(0b1100) # 200Hz Bandwidth 140mA IDD - RATE_200_HZ = const(0b1011) # 100Hz Bandwidth 140mA IDD - RATE_100_HZ = const(0b1010) # 50Hz Bandwidth 140mA IDD - RATE_50_HZ = const(0b1001) # 25Hz Bandwidth 90mA IDD - RATE_25_HZ = const(0b1000) # 12.5Hz Bandwidth 60mA IDD - RATE_12_5_HZ = const(0b0111) # 6.25Hz Bandwidth 50mA IDD - RATE_6_25HZ = const(0b0110) # 3.13Hz Bandwidth 45mA IDD - RATE_3_13_HZ = const(0b0101) # 1.56Hz Bandwidth 40mA IDD - RATE_1_56_HZ = const(0b0100) # 0.78Hz Bandwidth 34mA IDD - RATE_0_78_HZ = const(0b0011) # 0.39Hz Bandwidth 23mA IDD - RATE_0_39_HZ = const(0b0010) # 0.20Hz Bandwidth 23mA IDD - RATE_0_20_HZ = const(0b0001) # 0.10Hz Bandwidth 23mA IDD - RATE_0_10_HZ = const(0b0000) # 0.05Hz Bandwidth 23mA IDD (default value) - - -class Range: #pylint: disable=too-few-public-methods + + RATE_3200_HZ = const(0b1111) # 1600Hz Bandwidth 140mA IDD + RATE_1600_HZ = const(0b1110) # 800Hz Bandwidth 90mA IDD + RATE_800_HZ = const(0b1101) # 400Hz Bandwidth 140mA IDD + RATE_400_HZ = const(0b1100) # 200Hz Bandwidth 140mA IDD + RATE_200_HZ = const(0b1011) # 100Hz Bandwidth 140mA IDD + RATE_100_HZ = const(0b1010) # 50Hz Bandwidth 140mA IDD + RATE_50_HZ = const(0b1001) # 25Hz Bandwidth 90mA IDD + RATE_25_HZ = const(0b1000) # 12.5Hz Bandwidth 60mA IDD + RATE_12_5_HZ = const(0b0111) # 6.25Hz Bandwidth 50mA IDD + RATE_6_25HZ = const(0b0110) # 3.13Hz Bandwidth 45mA IDD + RATE_3_13_HZ = const(0b0101) # 1.56Hz Bandwidth 40mA IDD + RATE_1_56_HZ = const(0b0100) # 0.78Hz Bandwidth 34mA IDD + RATE_0_78_HZ = const(0b0011) # 0.39Hz Bandwidth 23mA IDD + RATE_0_39_HZ = const(0b0010) # 0.20Hz Bandwidth 23mA IDD + RATE_0_20_HZ = const(0b0001) # 0.10Hz Bandwidth 23mA IDD + RATE_0_10_HZ = const(0b0000) # 0.05Hz Bandwidth 23mA IDD (default value) + + +class Range: # pylint: disable=too-few-public-methods """An enum-like class representing the possible measurement ranges in +/- G. Possible values are @@ -145,10 +148,12 @@ class Range: #pylint: disable=too-few-public-methods - ``Range.RANGE_2_G`` """ - RANGE_16_G = const(0b11) # +/- 16g - RANGE_8_G = const(0b10) # +/- 8g - RANGE_4_G = const(0b01) # +/- 4g - RANGE_2_G = const(0b00) # +/- 2g (default value) + + RANGE_16_G = const(0b11) # +/- 16g + RANGE_8_G = const(0b10) # +/- 8g + RANGE_4_G = const(0b01) # +/- 4g + RANGE_2_G = const(0b00) # +/- 2g (default value) + # pylint: enable=bad-whitespace class ADXL345: @@ -158,8 +163,8 @@ class ADXL345: :param address: The I2C device address for the sensor. Default is ``0x53``. """ - def __init__(self, i2c, address=_ADXL345_DEFAULT_ADDRESS): + def __init__(self, i2c, address=_ADXL345_DEFAULT_ADDRESS): self._i2c = i2c_device.I2CDevice(i2c, address) self._buffer = bytearray(6) @@ -173,7 +178,7 @@ def __init__(self, i2c, address=_ADXL345_DEFAULT_ADDRESS): @property def acceleration(self): """The x, y, z acceleration values returned in a 3-tuple in m / s ^ 2.""" - x, y, z = unpack(' 0 + self._event_status[event_type] = ( + interrupt_source_register & _INT_ACT > 0 + ) if event_type == "tap": if value == 1: - self._event_status[event_type] = interrupt_source_register & _INT_SINGLE_TAP > 0 + self._event_status[event_type] = ( + interrupt_source_register & _INT_SINGLE_TAP > 0 + ) else: - self._event_status[event_type] = interrupt_source_register & _INT_DOUBLE_TAP > 0 + self._event_status[event_type] = ( + interrupt_source_register & _INT_DOUBLE_TAP > 0 + ) if event_type == "freefall": - self._event_status[event_type] = interrupt_source_register & _INT_FREE_FALL > 0 + self._event_status[event_type] = ( + interrupt_source_register & _INT_FREE_FALL > 0 + ) return self._event_status @@ -233,11 +246,12 @@ def enable_motion_detection(self, *, threshold=18): """ active_interrupts = self._read_register_unpacked(_REG_INT_ENABLE) - - self._write_register_byte(_REG_INT_ENABLE, 0x0) # disable interrupts for setup - self._write_register_byte(_REG_ACT_INACT_CTL, 0b01110000) # enable activity on X,Y,Z + self._write_register_byte(_REG_INT_ENABLE, 0x0) # disable interrupts for setup + self._write_register_byte( + _REG_ACT_INACT_CTL, 0b01110000 + ) # enable activity on X,Y,Z self._write_register_byte(_REG_THRESH_ACT, threshold) - self._write_register_byte(_REG_INT_ENABLE, _INT_ACT) # Inactive interrupt only + self._write_register_byte(_REG_INT_ENABLE, _INT_ACT) # Inactive interrupt only active_interrupts |= _INT_ACT self._write_register_byte(_REG_INT_ENABLE, active_interrupts) @@ -252,7 +266,6 @@ def disable_motion_detection(self): self._write_register_byte(_REG_INT_ENABLE, active_interrupts) self._enabled_interrupts.pop("motion") - def enable_freefall_detection(self, *, threshold=10, time=25): """ Freefall detection parameters: @@ -273,7 +286,7 @@ def enable_freefall_detection(self, *, threshold=10, time=25): active_interrupts = self._read_register_unpacked(_REG_INT_ENABLE) - self._write_register_byte(_REG_INT_ENABLE, 0x0) # disable interrupts for setup + self._write_register_byte(_REG_INT_ENABLE, 0x0) # disable interrupts for setup self._write_register_byte(_REG_THRESH_FF, threshold) self._write_register_byte(_REG_TIME_FF, time) @@ -289,7 +302,9 @@ def disable_freefall_detection(self): self._write_register_byte(_REG_INT_ENABLE, active_interrupts) self._enabled_interrupts.pop("freefall") - def enable_tap_detection(self, *, tap_count=1, threshold=20, duration=50, latency=20, window=255):#pylint: disable=line-too-long + def enable_tap_detection( + self, *, tap_count=1, threshold=20, duration=50, latency=20, window=255 + ): # pylint: disable=line-too-long """ The tap detection parameters. @@ -317,8 +332,10 @@ def enable_tap_detection(self, *, tap_count=1, threshold=20, duration=50, latenc """ active_interrupts = self._read_register_unpacked(_REG_INT_ENABLE) - self._write_register_byte(_REG_INT_ENABLE, 0x0) # disable interrupts for setup - self._write_register_byte(_REG_TAP_AXES, 0b00000111) # enable X, Y, Z axes for tap + self._write_register_byte(_REG_INT_ENABLE, 0x0) # disable interrupts for setup + self._write_register_byte( + _REG_TAP_AXES, 0b00000111 + ) # enable X, Y, Z axes for tap self._write_register_byte(_REG_THRESH_TAP, threshold) self._write_register_byte(_REG_DUR, duration) @@ -334,7 +351,9 @@ def enable_tap_detection(self, *, tap_count=1, threshold=20, duration=50, latenc self._write_register_byte(_REG_INT_ENABLE, active_interrupts) self._enabled_interrupts["tap"] = 2 else: - raise ValueError("tap must be 0 to disable, 1 for single tap, or 2 for double tap") + raise ValueError( + "tap must be 0 to disable, 1 for single tap, or 2 for double tap" + ) def disable_tap_detection(self): "Disable tap detection" @@ -394,6 +413,7 @@ def _write_register_byte(self, register, value): with self._i2c as i2c: i2c.write(self._buffer, start=0, end=2) + class ADXL343(ADXL345): """ Stub class for the ADXL343 3-axis accelerometer diff --git a/docs/conf.py b/docs/conf.py index 18688ff..c4b4cbf 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,10 +11,10 @@ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ - 'sphinx.ext.autodoc', - 'sphinx.ext.intersphinx', - 'sphinx.ext.napoleon', - 'sphinx.ext.todo', + "sphinx.ext.autodoc", + "sphinx.ext.intersphinx", + "sphinx.ext.napoleon", + "sphinx.ext.todo", ] # TODO: Please Read! @@ -23,29 +24,40 @@ # autodoc_mock_imports = ["adafruit_bus_device", "digitalio", "busio", "micropython"] -intersphinx_mapping = {'python': ('https://docs.python.org/3.4', None),'BusDevice': ('https://circuitpython.readthedocs.io/projects/busdevice/en/latest/', None),'Register': ('https://circuitpython.readthedocs.io/projects/register/en/latest/', None),'CircuitPython': ('https://circuitpython.readthedocs.io/en/latest/', None)} +intersphinx_mapping = { + "python": ("https://docs.python.org/3.4", None), + "BusDevice": ( + "https://circuitpython.readthedocs.io/projects/busdevice/en/latest/", + None, + ), + "Register": ( + "https://circuitpython.readthedocs.io/projects/register/en/latest/", + 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 ADXL34x Library' -copyright = u'2018 Bryan Siepert' -author = u'Bryan Siepert' +project = u"Adafruit ADXL34x Library" +copyright = u"2018 Bryan Siepert" +author = u"Bryan Siepert" # 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. @@ -57,7 +69,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. @@ -69,7 +81,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 @@ -84,59 +96,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 = 'AdafruitAdxl34xLibrarydoc' +htmlhelp_basename = "AdafruitAdxl34xLibrarydoc" # -- 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, 'AdafruitADXL34xLibrary.tex', u'AdafruitADXL34x Library Documentation', - author, 'manual'), + ( + master_doc, + "AdafruitADXL34xLibrary.tex", + u"AdafruitADXL34x Library Documentation", + author, + "manual", + ), ] # -- Options for manual page output --------------------------------------- @@ -144,8 +159,13 @@ # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ - (master_doc, 'AdafruitADXL34xlibrary', u'Adafruit ADXL34x Library Documentation', - [author], 1) + ( + master_doc, + "AdafruitADXL34xlibrary", + u"Adafruit ADXL34x Library Documentation", + [author], + 1, + ) ] # -- Options for Texinfo output ------------------------------------------- @@ -154,7 +174,13 @@ # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ - (master_doc, 'AdafruitADXL34xLibrary', u'Adafruit ADXL34x Library Documentation', - author, 'AdafruitADXL34xLibrary', 'One line description of project.', - 'Miscellaneous'), + ( + master_doc, + "AdafruitADXL34xLibrary", + u"Adafruit ADXL34x Library Documentation", + author, + "AdafruitADXL34xLibrary", + "One line description of project.", + "Miscellaneous", + ), ] diff --git a/examples/adxl34x_motion_detection_test.py b/examples/adxl34x_motion_detection_test.py index 9e58b3a..531df11 100644 --- a/examples/adxl34x_motion_detection_test.py +++ b/examples/adxl34x_motion_detection_test.py @@ -17,5 +17,5 @@ while True: print("%f %f %f" % accelerometer.acceleration) - print("Motion detected: %s" % accelerometer.events['motion']) + print("Motion detected: %s" % accelerometer.events["motion"]) time.sleep(0.5) diff --git a/examples/adxl34x_tap_detection_test.py b/examples/adxl34x_tap_detection_test.py index 64cf468..49454f4 100644 --- a/examples/adxl34x_tap_detection_test.py +++ b/examples/adxl34x_tap_detection_test.py @@ -17,5 +17,5 @@ while True: print("%f %f %f" % accelerometer.acceleration) - print("Tapped: %s" % accelerometer.events['tap']) + print("Tapped: %s" % accelerometer.events["tap"]) time.sleep(0.5) diff --git a/setup.py b/setup.py index 3bd20ac..e1f25b1 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,48 +15,39 @@ 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-adxl34x', - + name="adafruit-circuitpython-adxl34x", use_scm_version=True, - setup_requires=['setuptools_scm'], - - description='A CircuitPython driver for the ADXL34x family of accelerometers.', + setup_requires=["setuptools_scm"], + description="A CircuitPython driver for the ADXL34x family of accelerometers.", 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_ADXL34x', - + url="https://github.com/adafruit/Adafruit_CircuitPython_ADXL34x", # Author details - author='Adafruit Industries', - author_email='circuitpython@adafruit.com', - - install_requires=['Adafruit-Blinka', 'adafruit-circuitpython-busdevice'], - + author="Adafruit Industries", + author_email="circuitpython@adafruit.com", + install_requires=["Adafruit-Blinka", "adafruit-circuitpython-busdevice"], # 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 hardware accelerometer acceleration spi i2c triple axis' - 'micropython circuitpython', - + keywords="adafruit hardware accelerometer acceleration spi i2c triple axis" + "micropython circuitpython", # You can just specify the packages manually here if your project is # simple. Or you can use find_packages(). - py_modules=['adafruit_adxl34x'], -) \ No newline at end of file + py_modules=["adafruit_adxl34x"], +)