From 5ecef1999dbe4b2686f2892d9bf4cff97fb86df4 Mon Sep 17 00:00:00 2001 From: dherrada Date: Thu, 12 Mar 2020 19:26:10 -0400 Subject: [PATCH] Ran black, updated to pylint 2.x --- .github/workflows/build.yml | 2 +- adafruit_bmp3xx.py | 94 ++++++++++++++++----------- docs/conf.py | 116 ++++++++++++++++++++-------------- examples/bmp3xx_simpletest.py | 4 +- setup.py | 54 +++++++--------- 5 files changed, 152 insertions(+), 118 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_bmp3xx.py b/adafruit_bmp3xx.py index 157a72d..91d5bca 100644 --- a/adafruit_bmp3xx.py +++ b/adafruit_bmp3xx.py @@ -43,6 +43,7 @@ """ import time + try: import struct except ImportError: @@ -55,21 +56,22 @@ _CHIP_ID = const(0x50) -# pylint: disable=bad-whitespace -_REGISTER_CHIPID = const(0x00) -_REGISTER_STATUS = const(0x03) -_REGISTER_PRESSUREDATA = const(0x04) -_REGISTER_TEMPDATA = const(0x07) -_REGISTER_CONTROL = const(0x1B) -_REGISTER_OSR = const(0x1C) -_REGISTER_ODR = const(0x1D) -_REGISTER_CONFIG = const(0x1F) -_REGISTER_CAL_DATA = const(0x31) -_REGISTER_CMD = const(0x7E) +# pylint: disable=import-outside-toplevel +_REGISTER_CHIPID = const(0x00) +_REGISTER_STATUS = const(0x03) +_REGISTER_PRESSUREDATA = const(0x04) +_REGISTER_TEMPDATA = const(0x07) +_REGISTER_CONTROL = const(0x1B) +_REGISTER_OSR = const(0x1C) +_REGISTER_ODR = const(0x1D) +_REGISTER_CONFIG = const(0x1F) +_REGISTER_CAL_DATA = const(0x31) +_REGISTER_CMD = const(0x7E) # pylint: enable=bad-whitespace -_OSR_SETTINGS = (1, 2, 4, 8, 16, 32) # pressure and temperature oversampling settings -_IIR_SETTINGS = (0, 2, 4, 8, 16, 32, 64, 128) # IIR filter coefficients +_OSR_SETTINGS = (1, 2, 4, 8, 16, 32) # pressure and temperature oversampling settings +_IIR_SETTINGS = (0, 2, 4, 8, 16, 32, 64, 128) # IIR filter coefficients + class BMP3XX: """Base class for BMP3XX sensor.""" @@ -77,7 +79,7 @@ class BMP3XX: def __init__(self): chip_id = self._read_byte(_REGISTER_CHIPID) if _CHIP_ID != chip_id: - raise RuntimeError('Failed to find BMP3XX! Chip ID 0x%x' % chip_id) + raise RuntimeError("Failed to find BMP3XX! Chip ID 0x%x" % chip_id) self._read_coefficients() self.reset() self.sea_level_pressure = 1013.25 @@ -97,7 +99,7 @@ def temperature(self): def altitude(self): """The altitude in meters based on the currently set sea level pressure.""" # see https://www.weather.gov/media/epz/wxcalc/pressureAltitude.pdf - return 44307.7 * (1 - (self.pressure / self.sea_level_pressure)**0.190284) + return 44307.7 * (1 - (self.pressure / self.sea_level_pressure) ** 0.190284) @property def pressure_oversampling(self): @@ -108,7 +110,9 @@ def pressure_oversampling(self): def pressure_oversampling(self, oversample): if oversample not in _OSR_SETTINGS: raise ValueError("Oversampling must be one of: {}".format(_OSR_SETTINGS)) - new_setting = self._read_byte(_REGISTER_OSR) & 0xF8 | _OSR_SETTINGS.index(oversample) + new_setting = self._read_byte(_REGISTER_OSR) & 0xF8 | _OSR_SETTINGS.index( + oversample + ) self._write_register_byte(_REGISTER_OSR, new_setting) @property @@ -120,7 +124,9 @@ def temperature_oversampling(self): def temperature_oversampling(self, oversample): if oversample not in _OSR_SETTINGS: raise ValueError("Oversampling must be one of: {}".format(_OSR_SETTINGS)) - new_setting = self._read_byte(_REGISTER_OSR) & 0xC7 | _OSR_SETTINGS.index(oversample) << 3 + new_setting = ( + self._read_byte(_REGISTER_OSR) & 0xC7 | _OSR_SETTINGS.index(oversample) << 3 + ) self._write_register_byte(_REGISTER_OSR, new_setting) @property @@ -131,7 +137,9 @@ def filter_coefficient(self): @filter_coefficient.setter def filter_coefficient(self, coef): if coef not in _IIR_SETTINGS: - raise ValueError("Filter coefficient must be one of: {}".format(_IIR_SETTINGS)) + raise ValueError( + "Filter coefficient must be one of: {}".format(_IIR_SETTINGS) + ) self._write_register_byte(_REGISTER_CONFIG, _IIR_SETTINGS.index(coef) << 1) def reset(self): @@ -169,19 +177,19 @@ def _read(self): P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11 = self._pressure_calib pd1 = P6 * temperature - pd2 = P7 * temperature**2. - pd3 = P8 * temperature**3. + pd2 = P7 * temperature ** 2.0 + pd3 = P8 * temperature ** 3.0 po1 = P5 + pd1 + pd2 + pd3 pd1 = P2 * temperature - pd2 = P3 * temperature**2. - pd3 = P4 * temperature**3. + pd2 = P3 * temperature ** 2.0 + pd3 = P4 * temperature ** 3.0 po2 = adc_p * (P1 + pd1 + pd2 + pd3) - pd1 = adc_p**2. + pd1 = adc_p ** 2.0 pd2 = P9 + P10 * temperature pd3 = pd1 * pd2 - pd4 = pd3 + P11 * adc_p**3. + pd4 = pd3 + P11 * adc_p ** 3.0 pressure = po1 + po2 + pd4 @@ -197,20 +205,24 @@ def _read_coefficients(self): # See datasheet, sec 9.1 # Note: forcing float math to prevent issues with boards that # do not support long ints for 2** - self._temp_calib = ( coeff[0] / 2**-8. , # T1 - coeff[1] / 2**30. , # T2 - coeff[2] / 2**48. ) # T3 - self._pressure_calib = ( (coeff[3]-2**14.) / 2**20. , # P1 - (coeff[4]-2**14.) / 2**29. , # P2 - coeff[5] / 2**32. , # P3 - coeff[6] / 2**37. , # P4 - coeff[7] / 2**-3. , # P5 - coeff[8] / 2**6. , # P6 - coeff[9] / 2**8. , # P7 - coeff[10] / 2**15. , # P8 - coeff[11] / 2**48. , # P9 - coeff[12] / 2**48. , # P10 - coeff[13] / 2**65. ) # P11 + self._temp_calib = ( + coeff[0] / 2 ** -8.0, # T1 + coeff[1] / 2 ** 30.0, # T2 + coeff[2] / 2 ** 48.0, + ) # T3 + self._pressure_calib = ( + (coeff[3] - 2 ** 14.0) / 2 ** 20.0, # P1 + (coeff[4] - 2 ** 14.0) / 2 ** 29.0, # P2 + coeff[5] / 2 ** 32.0, # P3 + coeff[6] / 2 ** 37.0, # P4 + coeff[7] / 2 ** -3.0, # P5 + coeff[8] / 2 ** 6.0, # P6 + coeff[9] / 2 ** 8.0, # P7 + coeff[10] / 2 ** 15.0, # P8 + coeff[11] / 2 ** 48.0, # P9 + coeff[12] / 2 ** 48.0, # P10 + coeff[13] / 2 ** 65.0, + ) # P11 def _read_byte(self, register): """Read a byte register value and return it""" @@ -224,11 +236,14 @@ def _write_register_byte(self, register, value): """Low level register writing, not implemented in base class""" raise NotImplementedError() + class BMP3XX_I2C(BMP3XX): """Driver for I2C connected BMP3XX. Default address is 0x77 but another address can be passed in as an argument""" + def __init__(self, i2c, address=0x77): import adafruit_bus_device.i2c_device as i2c_device + self._i2c = i2c_device.I2CDevice(i2c, address) super().__init__() @@ -245,10 +260,13 @@ def _write_register_byte(self, register, value): with self._i2c as i2c: i2c.write(bytes((register & 0xFF, value & 0xFF))) + class BMP3XX_SPI(BMP3XX): """Driver for SPI connected BMP3XX.""" + def __init__(self, spi, cs): import adafruit_bus_device.spi_device as spi_device + self._spi = spi_device.SPIDevice(spi, cs) # toggle CS low/high to put BMP3XX in SPI mode with self._spi: diff --git a/docs/conf.py b/docs/conf.py index e14e532..7d372bd 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,36 @@ # autodoc_mock_imports = ["digitalio", "busio"] -intersphinx_mapping = {'python': ('https://docs.python.org/3.4', None),'BusDevice': ('https://circuitpython.readthedocs.io/projects/busdevice/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, + ), + "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 BMP3XX Library' -copyright = u'2018 Carter Nelson' -author = u'Carter Nelson' +project = u"Adafruit BMP3XX Library" +copyright = u"2018 Carter Nelson" +author = u"Carter Nelson" # 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 +65,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 +77,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 +92,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 = 'AdafruitBmp3xxLibrarydoc' +htmlhelp_basename = "AdafruitBmp3xxLibrarydoc" # -- 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, 'AdafruitBMP3XXLibrary.tex', u'AdafruitBMP3XX Library Documentation', - author, 'manual'), + ( + master_doc, + "AdafruitBMP3XXLibrary.tex", + u"AdafruitBMP3XX Library Documentation", + author, + "manual", + ), ] # -- Options for manual page output --------------------------------------- @@ -144,8 +155,13 @@ # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ - (master_doc, 'AdafruitBMP3XXlibrary', u'Adafruit BMP3XX Library Documentation', - [author], 1) + ( + master_doc, + "AdafruitBMP3XXlibrary", + u"Adafruit BMP3XX Library Documentation", + [author], + 1, + ) ] # -- Options for Texinfo output ------------------------------------------- @@ -154,7 +170,13 @@ # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ - (master_doc, 'AdafruitBMP3XXLibrary', u'Adafruit BMP3XX Library Documentation', - author, 'AdafruitBMP3XXLibrary', 'One line description of project.', - 'Miscellaneous'), + ( + master_doc, + "AdafruitBMP3XXLibrary", + u"Adafruit BMP3XX Library Documentation", + author, + "AdafruitBMP3XXLibrary", + "One line description of project.", + "Miscellaneous", + ), ] diff --git a/examples/bmp3xx_simpletest.py b/examples/bmp3xx_simpletest.py index 85a3b54..e994e67 100644 --- a/examples/bmp3xx_simpletest.py +++ b/examples/bmp3xx_simpletest.py @@ -17,5 +17,7 @@ bmp.temperature_oversampling = 2 while True: - print("Pressure: {:6.1f} Temperature: {:5.2f}".format(bmp.pressure, bmp.temperature)) + print( + "Pressure: {:6.1f} Temperature: {:5.2f}".format(bmp.pressure, bmp.temperature) + ) time.sleep(1) diff --git a/setup.py b/setup.py index 24ac98e..76c0ae1 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-bmp3xx', - + name="adafruit-circuitpython-bmp3xx", use_scm_version=True, - setup_requires=['setuptools_scm'], - - description='CircuitPython library for BMP3XX Temperature and Barometric Pressure sensor.', + setup_requires=["setuptools_scm"], + description="CircuitPython library for BMP3XX Temperature and Barometric Pressure 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_BMP3XX', - + url="https://github.com/adafruit/Adafruit_CircuitPython_BMP3XX", # 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 temperature barometric pressure temp ' - 'bmp3xx bmp388 hardware micropython circuitpython', - + keywords="adafruit temperature barometric pressure temp " + "bmp3xx bmp388 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_bmp3xx'], -) \ No newline at end of file + py_modules=["adafruit_bmp3xx"], +)