Skip to content

Commit e0d0e16

Browse files
authored
Merge pull request #27 from adafruit/pylint-update
Ran black, updated to pylint 2.x
2 parents 0d615c4 + dd954e8 commit e0d0e16

File tree

5 files changed

+206
-122
lines changed

5 files changed

+206
-122
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ jobs:
4040
source actions-ci/install.sh
4141
- name: Pip install pylint, black, & Sphinx
4242
run: |
43-
pip install --force-reinstall pylint==1.9.2 black==19.10b0 Sphinx sphinx-rtd-theme
43+
pip install pylint black==19.10b0 Sphinx sphinx-rtd-theme
4444
- name: Library version
4545
run: git describe --dirty --always --tags
4646
- name: PyLint

.pylintrc

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ ignore-patterns=
1818
#init-hook=
1919

2020
# Use multiple processes to speed up Pylint.
21+
# jobs=1
2122
jobs=2
2223

2324
# List of plugins (as comma separated values of python modules names) to load,
@@ -50,7 +51,8 @@ confidence=
5051
# --enable=similarities". If you want to run only the classes checker, but have
5152
# no Warning level messages displayed, use"--disable=all --enable=classes
5253
# --disable=W"
53-
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
54+
# 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
55+
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
5456

5557
# Enable the message, report, category or checker with the given id(s). You can
5658
# either give multiple identifier separated by comma (,) or put this option
@@ -117,7 +119,8 @@ spelling-store-unknown-words=no
117119
[MISCELLANEOUS]
118120

119121
# List of note tags to take in consideration, separated by a comma.
120-
notes=FIXME,XXX,TODO
122+
# notes=FIXME,XXX,TODO
123+
notes=FIXME,XXX
121124

122125

123126
[TYPECHECK]
@@ -200,6 +203,7 @@ redefining-builtins-modules=six.moves,future.builtins
200203
[FORMAT]
201204

202205
# Expected format of line ending, e.g. empty (any line ending), LF or CRLF.
206+
# expected-line-ending-format=
203207
expected-line-ending-format=LF
204208

205209
# Regexp for a line that is allowed to be longer than the limit.
@@ -272,9 +276,11 @@ class-attribute-name-hint=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
272276
class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
273277

274278
# Naming hint for class names
279+
# class-name-hint=[A-Z_][a-zA-Z0-9]+$
275280
class-name-hint=[A-Z_][a-zA-Z0-9_]+$
276281

277282
# Regular expression matching correct class names
283+
# class-rgx=[A-Z_][a-zA-Z0-9]+$
278284
class-rgx=[A-Z_][a-zA-Z0-9_]+$
279285

280286
# Naming hint for constant names
@@ -294,7 +300,8 @@ function-name-hint=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$
294300
function-rgx=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$
295301

296302
# Good variable names which should always be accepted, separated by a comma
297-
good-names=r,g,b,i,j,k,n,ex,Run,_
303+
# good-names=i,j,k,ex,Run,_
304+
good-names=r,g,b,w,i,j,k,n,x,y,z,ex,ok,Run,_
298305

299306
# Include a hint for the correct naming format with invalid-name
300307
include-naming-hint=no
@@ -391,6 +398,7 @@ valid-metaclass-classmethod-first-arg=mcs
391398
max-args=5
392399

393400
# Maximum number of attributes for a class (see R0902).
401+
# max-attributes=7
394402
max-attributes=11
395403

396404
# Maximum number of boolean expressions in a if statement
@@ -415,7 +423,7 @@ max-returns=6
415423
max-statements=50
416424

417425
# Minimum number of public methods for a class (see R0903).
418-
min-public-methods=2
426+
min-public-methods=1
419427

420428

421429
[EXCEPTIONS]

adafruit_bme680.py

Lines changed: 103 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
import time
5151
import math
5252
from micropython import const
53+
5354
try:
5455
import struct
5556
except ImportError:
@@ -86,20 +87,49 @@
8687

8788
_BME680_RUNGAS = const(0x10)
8889

89-
_LOOKUP_TABLE_1 = (2147483647.0, 2147483647.0, 2147483647.0, 2147483647.0, 2147483647.0,
90-
2126008810.0, 2147483647.0, 2130303777.0, 2147483647.0, 2147483647.0,
91-
2143188679.0, 2136746228.0, 2147483647.0, 2126008810.0, 2147483647.0,
92-
2147483647.0)
93-
94-
_LOOKUP_TABLE_2 = (4096000000.0, 2048000000.0, 1024000000.0, 512000000.0, 255744255.0, 127110228.0,
95-
64000000.0, 32258064.0, 16016016.0, 8000000.0, 4000000.0, 2000000.0, 1000000.0,
96-
500000.0, 250000.0, 125000.0)
90+
_LOOKUP_TABLE_1 = (
91+
2147483647.0,
92+
2147483647.0,
93+
2147483647.0,
94+
2147483647.0,
95+
2147483647.0,
96+
2126008810.0,
97+
2147483647.0,
98+
2130303777.0,
99+
2147483647.0,
100+
2147483647.0,
101+
2143188679.0,
102+
2136746228.0,
103+
2147483647.0,
104+
2126008810.0,
105+
2147483647.0,
106+
2147483647.0,
107+
)
108+
109+
_LOOKUP_TABLE_2 = (
110+
4096000000.0,
111+
2048000000.0,
112+
1024000000.0,
113+
512000000.0,
114+
255744255.0,
115+
127110228.0,
116+
64000000.0,
117+
32258064.0,
118+
16016016.0,
119+
8000000.0,
120+
4000000.0,
121+
2000000.0,
122+
1000000.0,
123+
500000.0,
124+
250000.0,
125+
125000.0,
126+
)
97127

98128

99129
def _read24(arr):
100130
"""Parse an unsigned 24-bit value as a floating point and return it."""
101131
ret = 0.0
102-
#print([hex(i) for i in arr])
132+
# print([hex(i) for i in arr])
103133
for b in arr:
104134
ret *= 256.0
105135
ret += float(b & 0xFF)
@@ -111,6 +141,7 @@ class Adafruit_BME680:
111141
112142
:param int refresh_rate: Maximum number of readings per second. Faster property reads
113143
will be from the previous reading."""
144+
114145
def __init__(self, *, refresh_rate=10):
115146
"""Check the BME680 was found, read the coefficients and enable the sensor for continuous
116147
reads."""
@@ -120,7 +151,7 @@ def __init__(self, *, refresh_rate=10):
120151
# Check device ID.
121152
chip_id = self._read_byte(_BME680_REG_CHIPID)
122153
if chip_id != _BME680_CHIPID:
123-
raise RuntimeError('Failed to find BME680! Chip ID 0x%x' % chip_id)
154+
raise RuntimeError("Failed to find BME680! Chip ID 0x%x" % chip_id)
124155

125156
self._read_calibration()
126157

@@ -199,7 +230,7 @@ def filter_size(self, size):
199230
def temperature(self):
200231
"""The compensated temperature in degrees celsius."""
201232
self._perform_reading()
202-
calc_temp = (((self._t_fine * 5) + 128) / 256)
233+
calc_temp = ((self._t_fine * 5) + 128) / 256
203234
return calc_temp / 100
204235

205236
@property
@@ -211,31 +242,49 @@ def pressure(self):
211242
var2 = (var2 * self._pressure_calibration[5]) / 4
212243
var2 = var2 + (var1 * self._pressure_calibration[4] * 2)
213244
var2 = (var2 / 4) + (self._pressure_calibration[3] * 65536)
214-
var1 = (((((var1 / 4) * (var1 / 4)) / 8192) *
215-
(self._pressure_calibration[2] * 32) / 8) +
216-
((self._pressure_calibration[1] * var1) / 2))
245+
var1 = (
246+
(((var1 / 4) * (var1 / 4)) / 8192)
247+
* (self._pressure_calibration[2] * 32)
248+
/ 8
249+
) + ((self._pressure_calibration[1] * var1) / 2)
217250
var1 = var1 / 262144
218251
var1 = ((32768 + var1) * self._pressure_calibration[0]) / 32768
219252
calc_pres = 1048576 - self._adc_pres
220253
calc_pres = (calc_pres - (var2 / 4096)) * 3125
221254
calc_pres = (calc_pres / var1) * 2
222-
var1 = (self._pressure_calibration[8] * (((calc_pres / 8) * (calc_pres / 8)) / 8192)) / 4096
255+
var1 = (
256+
self._pressure_calibration[8] * (((calc_pres / 8) * (calc_pres / 8)) / 8192)
257+
) / 4096
223258
var2 = ((calc_pres / 4) * self._pressure_calibration[7]) / 8192
224259
var3 = (((calc_pres / 256) ** 3) * self._pressure_calibration[9]) / 131072
225-
calc_pres += ((var1 + var2 + var3 + (self._pressure_calibration[6] * 128)) / 16)
226-
return calc_pres/100
260+
calc_pres += (var1 + var2 + var3 + (self._pressure_calibration[6] * 128)) / 16
261+
return calc_pres / 100
227262

228263
@property
229264
def humidity(self):
230265
"""The relative humidity in RH %"""
231266
self._perform_reading()
232267
temp_scaled = ((self._t_fine * 5) + 128) / 256
233-
var1 = ((self._adc_hum - (self._humidity_calibration[0] * 16)) -
234-
((temp_scaled * self._humidity_calibration[2]) / 200))
235-
var2 = (self._humidity_calibration[1] *
236-
(((temp_scaled * self._humidity_calibration[3]) / 100) +
237-
(((temp_scaled * ((temp_scaled * self._humidity_calibration[4]) / 100)) /
238-
64) / 100) + 16384)) / 1024
268+
var1 = (self._adc_hum - (self._humidity_calibration[0] * 16)) - (
269+
(temp_scaled * self._humidity_calibration[2]) / 200
270+
)
271+
var2 = (
272+
self._humidity_calibration[1]
273+
* (
274+
((temp_scaled * self._humidity_calibration[3]) / 100)
275+
+ (
276+
(
277+
(
278+
temp_scaled
279+
* ((temp_scaled * self._humidity_calibration[4]) / 100)
280+
)
281+
/ 64
282+
)
283+
/ 100
284+
)
285+
+ 16384
286+
)
287+
) / 1024
239288
var3 = var1 * var2
240289
var4 = self._humidity_calibration[5] * 128
241290
var4 = (var4 + ((temp_scaled * self._humidity_calibration[6]) / 100)) / 16
@@ -254,14 +303,16 @@ def humidity(self):
254303
def altitude(self):
255304
"""The altitude based on current ``pressure`` vs the sea level pressure
256305
(``sea_level_pressure``) - which you must enter ahead of time)"""
257-
pressure = self.pressure # in Si units for hPascal
306+
pressure = self.pressure # in Si units for hPascal
258307
return 44330 * (1.0 - math.pow(pressure / self.sea_level_pressure, 0.1903))
259308

260309
@property
261310
def gas(self):
262311
"""The gas resistance in ohms"""
263312
self._perform_reading()
264-
var1 = ((1340 + (5 * self._sw_err)) * (_LOOKUP_TABLE_1[self._gas_range])) / 65536
313+
var1 = (
314+
(1340 + (5 * self._sw_err)) * (_LOOKUP_TABLE_1[self._gas_range])
315+
) / 65536
265316
var2 = ((self._adc_gas * 32768) - 16777216) + var1
266317
var3 = (_LOOKUP_TABLE_2[self._gas_range] * var1) / 512
267318
calc_gas_res = (var3 + (var2 / 2)) / var2
@@ -276,8 +327,10 @@ def _perform_reading(self):
276327
# set filter
277328
self._write(_BME680_REG_CONFIG, [self._filter << 2])
278329
# turn on temp oversample & pressure oversample
279-
self._write(_BME680_REG_CTRL_MEAS,
280-
[(self._temp_oversample << 5)|(self._pressure_oversample << 2)])
330+
self._write(
331+
_BME680_REG_CTRL_MEAS,
332+
[(self._temp_oversample << 5) | (self._pressure_oversample << 2)],
333+
)
281334
# turn on humidity oversample
282335
self._write(_BME680_REG_CTRL_HUM, [self._humidity_oversample])
283336
# gas measurements enabled
@@ -295,8 +348,8 @@ def _perform_reading(self):
295348

296349
self._adc_pres = _read24(data[2:5]) / 16
297350
self._adc_temp = _read24(data[5:8]) / 16
298-
self._adc_hum = struct.unpack('>H', bytes(data[8:10]))[0]
299-
self._adc_gas = int(struct.unpack('>H', bytes(data[13:15]))[0] / 64)
351+
self._adc_hum = struct.unpack(">H", bytes(data[8:10]))[0]
352+
self._adc_gas = int(struct.unpack(">H", bytes(data[13:15]))[0] / 64)
300353
self._gas_range = data[14] & 0x0F
301354

302355
var1 = (self._adc_temp / 8) - (self._temp_calibration[0] * 2)
@@ -310,11 +363,13 @@ def _read_calibration(self):
310363
coeff = self._read(_BME680_BME680_COEFF_ADDR1, 25)
311364
coeff += self._read(_BME680_BME680_COEFF_ADDR2, 16)
312365

313-
coeff = list(struct.unpack('<hbBHhbBhhbbHhhBBBHbbbBbHhbb', bytes(coeff[1:39])))
314-
#print("\n\n",coeff)
366+
coeff = list(struct.unpack("<hbBHhbBhhbbHhhBBBHbbbBbHhbb", bytes(coeff[1:39])))
367+
# print("\n\n",coeff)
315368
coeff = [float(i) for i in coeff]
316369
self._temp_calibration = [coeff[x] for x in [23, 0, 1]]
317-
self._pressure_calibration = [coeff[x] for x in [3, 4, 5, 7, 8, 10, 9, 12, 13, 14]]
370+
self._pressure_calibration = [
371+
coeff[x] for x in [3, 4, 5, 7, 8, 10, 9, 12, 13, 14]
372+
]
318373
self._humidity_calibration = [coeff[x] for x in [17, 16, 18, 19, 20, 21, 22]]
319374
self._gas_calibration = [coeff[x] for x in [25, 24, 26]]
320375

@@ -345,9 +400,13 @@ class Adafruit_BME680_I2C(Adafruit_BME680):
345400
:param bool debug: Print debug statements when True.
346401
:param int refresh_rate: Maximum number of readings per second. Faster property reads
347402
will be from the previous reading."""
403+
348404
def __init__(self, i2c, address=0x77, debug=False, *, refresh_rate=10):
349405
"""Initialize the I2C device at the 'address' given"""
350-
from adafruit_bus_device import i2c_device
406+
from adafruit_bus_device import ( # pylint: disable=import-outside-toplevel
407+
i2c_device,
408+
)
409+
351410
self._i2c = i2c_device.I2CDevice(i2c, address)
352411
self._debug = debug
353412
super().__init__(refresh_rate=refresh_rate)
@@ -386,38 +445,41 @@ class Adafruit_BME680_SPI(Adafruit_BME680):
386445
"""
387446

388447
def __init__(self, spi, cs, baudrate=100000, debug=False, *, refresh_rate=10):
389-
from adafruit_bus_device import spi_device
448+
from adafruit_bus_device import ( # pylint: disable=import-outside-toplevel
449+
spi_device,
450+
)
451+
390452
self._spi = spi_device.SPIDevice(spi, cs, baudrate=baudrate)
391453
self._debug = debug
392454
super().__init__(refresh_rate=refresh_rate)
393455

394456
def _read(self, register, length):
395457
if register != _BME680_REG_STATUS:
396-
#_BME680_REG_STATUS exists in both SPI memory pages
397-
#For all other registers, we must set the correct memory page
458+
# _BME680_REG_STATUS exists in both SPI memory pages
459+
# For all other registers, we must set the correct memory page
398460
self._set_spi_mem_page(register)
399461

400462
register = (register | 0x80) & 0xFF # Read single, bit 7 high.
401463
with self._spi as spi:
402-
spi.write(bytearray([register])) #pylint: disable=no-member
464+
spi.write(bytearray([register])) # pylint: disable=no-member
403465
result = bytearray(length)
404-
spi.readinto(result) #pylint: disable=no-member
466+
spi.readinto(result) # pylint: disable=no-member
405467
if self._debug:
406468
print("\t$%02X => %s" % (register, [hex(i) for i in result]))
407469
return result
408470

409471
def _write(self, register, values):
410472
if register != _BME680_REG_STATUS:
411-
#_BME680_REG_STATUS exists in both SPI memory pages
412-
#For all other registers, we must set the correct memory page
473+
# _BME680_REG_STATUS exists in both SPI memory pages
474+
# For all other registers, we must set the correct memory page
413475
self._set_spi_mem_page(register)
414476
register &= 0x7F # Write, bit 7 low.
415477
with self._spi as spi:
416478
buffer = bytearray(2 * len(values))
417479
for i, value in enumerate(values):
418480
buffer[2 * i] = register + i
419481
buffer[2 * i + 1] = value & 0xFF
420-
spi.write(buffer) #pylint: disable=no-member
482+
spi.write(buffer) # pylint: disable=no-member
421483
if self._debug:
422484
print("\t$%02X <= %s" % (values[0], [hex(i) for i in values[1:]]))
423485

0 commit comments

Comments
 (0)