mirror of
https://github.com/esphome/esphome.git
synced 2025-06-18 22:35:40 +01:00
add-black (#1593)
* Add black Update pre commit Update pre commit add empty line * Format with black
This commit is contained in:
committed by
GitHub
parent
2b60b0f1fa
commit
69879920eb
.pre-commit-config.yamlsetup.cfg
esphome
__main__.pyconfig.pyconfig_helpers.pyconfig_validation.pyconst.pycore.pycore_config.pycpp_generator.pycpp_helpers.pycpp_types.py
pylintrcpyproject.tomlrequirements_test.txtapi
automation.pycodegen.pycomponents
a4988
ac_dimmer
adalight
adc
ade7953
ads1115
aht10
am2320
animation
apds9960
api
as3935
as3935_i2c
as3935_spi
async_tcp
atc_mithermometer
atm90e32
bang_bang
bh1750
binary
binary_sensor
binary_sensor_map
ble_presence
ble_rssi
ble_scanner
bme280
bme680
bmp085
bmp280
canbus
captive_portal
ccs811
climate
climate_ir
climate_ir_lg
color
coolix
cover
cse7766
ct_clamp
custom
custom_component
cwww
daikin
dallas
debug
deep_sleep
dfplayer
dht
dht12
display
ds1307
duty_cycle
e131
endstop
esp32_ble_beacon
esp32_ble_tracker
esp32_camera
esp32_dac
esp32_hall
esp32_touch
esp8266_pwm
ethernet
exposure_notifications
ezo
fan
fastled_base
fastled_clockless
fastled_spi
font
fujitsu_general
globals
gpio
gps
hbridge
hdc1080
hitachi_ac344
hlw8012
hm3301
hmc5883l
homeassistant
http_request
htu21d
hx711
i2c
ili9341
image
ina219
ina226
ina3221
inkbird_ibsth1_mini
inkplate6
integration
interval
json
lcd_base
lcd_gpio
lcd_pcf8574
ledc
light
logger
max31855
max31856
max31865
max6675
max7219
mcp23008
mcp23016
mcp23017
mcp23s08
mcp23s17
mcp2515
mcp3008
mcp4725
mcp9808
mhz19
mitsubishi
modbus
monochromatic
mpr121
mpu6050
mqtt
mqtt_subscribe
ms5611
my9231
neopixelbus
network
nextion
nfc
ntc
ota
output
packages
partition
pca9685
pcd8544
pcf8574
pid
pmsx003
pn532
pn532_i2c
pn532_spi
power_supply
prometheus
pulse_counter
pulse_width
pzem004t
pzemac
pzemdc
qmc5883l
rc522
rc522_i2c
rc522_spi
rdm6300
remote_base
remote_receiver
remote_transmitter
resistance
restart
rf_bridge
rgb
rgbw
rgbww
rotary_encoder
rtttl
ruuvi_ble
ruuvitag
scd30
script
sds011
senseair
sensor
servo
sgp30
sht3xd
shtcx
shutdown
sim800l
sm16716
sm300d2
sn74hc595
sntp
speed
spi
sps30
ssd1306_base
ssd1306_i2c
ssd1306_spi
ssd1322_base
ssd1322_spi
ssd1325_base
ssd1325_spi
ssd1327_base
ssd1327_i2c
ssd1327_spi
ssd1331_base
ssd1331_spi
ssd1351_base
ssd1351_spi
st7735
st7789v
status
status_led
stepper
sts3x
substitutions
sun
switch
sx1509
tcl112
tcs34725
teleinfo
template
text_sensor
thermostat
time
time_based
tlc59208f
tm1637
tm1651
tmp102
tmp117
toshiba
total_daily_energy
tsl2561
ttp229_bsf
ttp229_lsf
tuya
tx20
uart
uln2003
ultrasonic
uptime
version
vl53l0x
voltage_sampler
waveshare_epaper
web_server
web_server_base
whirlpool
wifi
wifi_info
wifi_signal
wled
xiaomi_ble
xiaomi_cgd1
xiaomi_cgg1
xiaomi_gcls002
xiaomi_hhccjcy01
xiaomi_hhccpot002
xiaomi_jqjcy01ym
xiaomi_lywsd02
xiaomi_lywsd03mmc
xiaomi_lywsdcgq
xiaomi_mhoc401
xiaomi_miscale
xiaomi_miscale2
xiaomi_mjyd02yla
xiaomi_mue4094rt
xiaomi_wx08zm
yashima
zyaura
dashboard
espota2.pyhelpers.pylegacy.pymqtt.pypins.pyplatformio_api.pystorage_json.pyutil.pyvoluptuous_schema.pyvscode.pywizard.pywriter.pyyaml_util.pyzeroconf.pyscript
api_protobuf
build_codeowners.pybuild_compile_commands.pybump-docker-base-version.pybump-version.pyci-custom.pyhelpers.pylint-pythonsetuptests
@ -5,15 +5,15 @@ import re
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
root_path = os.path.abspath(os.path.normpath(os.path.join(__file__, '..', '..')))
|
||||
basepath = os.path.join(root_path, 'esphome')
|
||||
temp_header_file = os.path.join(root_path, '.temp-clang-tidy.cpp')
|
||||
root_path = os.path.abspath(os.path.normpath(os.path.join(__file__, "..", "..")))
|
||||
basepath = os.path.join(root_path, "esphome")
|
||||
temp_header_file = os.path.join(root_path, ".temp-clang-tidy.cpp")
|
||||
|
||||
|
||||
def shlex_quote(s):
|
||||
if not s:
|
||||
return "''"
|
||||
if re.search(r'[^\w@%+=:,./-]', s) is None:
|
||||
if re.search(r"[^\w@%+=:,./-]", s) is None:
|
||||
return s
|
||||
|
||||
return "'" + s.replace("'", "'\"'\"'") + "'"
|
||||
@ -24,63 +24,71 @@ def build_all_include():
|
||||
# Otherwise header-only integrations would not be tested by clang-tidy
|
||||
headers = []
|
||||
for path in walk_files(basepath):
|
||||
filetypes = ('.h',)
|
||||
filetypes = (".h",)
|
||||
ext = os.path.splitext(path)[1]
|
||||
if ext in filetypes:
|
||||
path = os.path.relpath(path, root_path)
|
||||
include_p = path.replace(os.path.sep, '/')
|
||||
include_p = path.replace(os.path.sep, "/")
|
||||
headers.append(f'#include "{include_p}"')
|
||||
headers.sort()
|
||||
headers.append('')
|
||||
content = '\n'.join(headers)
|
||||
with codecs.open(temp_header_file, 'w', encoding='utf-8') as f:
|
||||
headers.append("")
|
||||
content = "\n".join(headers)
|
||||
with codecs.open(temp_header_file, "w", encoding="utf-8") as f:
|
||||
f.write(content)
|
||||
|
||||
|
||||
def build_compile_commands():
|
||||
gcc_flags_json = os.path.join(root_path, '.gcc-flags.json')
|
||||
gcc_flags_json = os.path.join(root_path, ".gcc-flags.json")
|
||||
if not os.path.isfile(gcc_flags_json):
|
||||
print("Could not find {} file which is required for clang-tidy.")
|
||||
print('Please run "pio init --ide atom" in the root esphome folder to generate that file.')
|
||||
print(
|
||||
'Please run "pio init --ide atom" in the root esphome folder to generate that file.'
|
||||
)
|
||||
sys.exit(1)
|
||||
with codecs.open(gcc_flags_json, 'r', encoding='utf-8') as f:
|
||||
with codecs.open(gcc_flags_json, "r", encoding="utf-8") as f:
|
||||
gcc_flags = json.load(f)
|
||||
exec_path = gcc_flags['execPath']
|
||||
include_paths = gcc_flags['gccIncludePaths'].split(',')
|
||||
includes = [f'-I{p}' for p in include_paths]
|
||||
cpp_flags = gcc_flags['gccDefaultCppFlags'].split(' ')
|
||||
defines = [flag for flag in cpp_flags if flag.startswith('-D')]
|
||||
exec_path = gcc_flags["execPath"]
|
||||
include_paths = gcc_flags["gccIncludePaths"].split(",")
|
||||
includes = [f"-I{p}" for p in include_paths]
|
||||
cpp_flags = gcc_flags["gccDefaultCppFlags"].split(" ")
|
||||
defines = [flag for flag in cpp_flags if flag.startswith("-D")]
|
||||
command = [exec_path]
|
||||
command.extend(includes)
|
||||
command.extend(defines)
|
||||
command.append('-std=gnu++11')
|
||||
command.append('-Wall')
|
||||
command.append('-Wno-delete-non-virtual-dtor')
|
||||
command.append('-Wno-unused-variable')
|
||||
command.append('-Wunreachable-code')
|
||||
command.append("-std=gnu++11")
|
||||
command.append("-Wall")
|
||||
command.append("-Wno-delete-non-virtual-dtor")
|
||||
command.append("-Wno-unused-variable")
|
||||
command.append("-Wunreachable-code")
|
||||
|
||||
source_files = []
|
||||
for path in walk_files(basepath):
|
||||
filetypes = ('.cpp',)
|
||||
filetypes = (".cpp",)
|
||||
ext = os.path.splitext(path)[1]
|
||||
if ext in filetypes:
|
||||
source_files.append(os.path.abspath(path))
|
||||
source_files.append(temp_header_file)
|
||||
source_files.sort()
|
||||
compile_commands = [{
|
||||
'directory': root_path,
|
||||
'command': ' '.join(shlex_quote(x) for x in (command + ['-o', p + '.o', '-c', p])),
|
||||
'file': p
|
||||
} for p in source_files]
|
||||
compile_commands_json = os.path.join(root_path, 'compile_commands.json')
|
||||
compile_commands = [
|
||||
{
|
||||
"directory": root_path,
|
||||
"command": " ".join(
|
||||
shlex_quote(x) for x in (command + ["-o", p + ".o", "-c", p])
|
||||
),
|
||||
"file": p,
|
||||
}
|
||||
for p in source_files
|
||||
]
|
||||
compile_commands_json = os.path.join(root_path, "compile_commands.json")
|
||||
if os.path.isfile(compile_commands_json):
|
||||
with codecs.open(compile_commands_json, 'r', encoding='utf-8') as f:
|
||||
with codecs.open(compile_commands_json, "r", encoding="utf-8") as f:
|
||||
try:
|
||||
if json.load(f) == compile_commands:
|
||||
return
|
||||
# pylint: disable=bare-except
|
||||
except:
|
||||
pass
|
||||
with codecs.open(compile_commands_json, 'w', encoding='utf-8') as f:
|
||||
with codecs.open(compile_commands_json, "w", encoding="utf-8") as f:
|
||||
json.dump(compile_commands, f, indent=2)
|
||||
|
||||
|
||||
@ -93,7 +101,13 @@ def walk_files(path):
|
||||
def get_output(*args):
|
||||
proc = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
output, err = proc.communicate()
|
||||
return output.decode('utf-8')
|
||||
return output.decode("utf-8")
|
||||
|
||||
|
||||
def get_err(*args):
|
||||
proc = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
output, err = proc.communicate()
|
||||
return err.decode("utf-8")
|
||||
|
||||
|
||||
def splitlines_no_ends(string):
|
||||
@ -101,18 +115,19 @@ def splitlines_no_ends(string):
|
||||
|
||||
|
||||
def changed_files():
|
||||
check_remotes = ['upstream', 'origin']
|
||||
check_remotes.extend(splitlines_no_ends(get_output('git', 'remote')))
|
||||
check_remotes = ["upstream", "origin"]
|
||||
check_remotes.extend(splitlines_no_ends(get_output("git", "remote")))
|
||||
for remote in check_remotes:
|
||||
command = ['git', 'merge-base', f'refs/remotes/{remote}/dev', 'HEAD']
|
||||
command = ["git", "merge-base", f"refs/remotes/{remote}/dev", "HEAD"]
|
||||
try:
|
||||
merge_base = splitlines_no_ends(get_output(*command))[0]
|
||||
break
|
||||
# pylint: disable=bare-except
|
||||
except:
|
||||
pass
|
||||
else:
|
||||
raise ValueError("Git not configured")
|
||||
command = ['git', 'diff', merge_base, '--name-only']
|
||||
command = ["git", "diff", merge_base, "--name-only"]
|
||||
changed = splitlines_no_ends(get_output(*command))
|
||||
changed = [os.path.relpath(f, os.getcwd()) for f in changed]
|
||||
changed.sort()
|
||||
@ -131,10 +146,8 @@ def filter_changed(files):
|
||||
|
||||
|
||||
def git_ls_files():
|
||||
command = ['git', 'ls-files', '-s']
|
||||
command = ["git", "ls-files", "-s"]
|
||||
proc = subprocess.Popen(command, stdout=subprocess.PIPE)
|
||||
output, err = proc.communicate()
|
||||
lines = [x.split() for x in output.decode('utf-8').splitlines()]
|
||||
return {
|
||||
s[3].strip(): int(s[0]) for s in lines
|
||||
}
|
||||
lines = [x.split() for x in output.decode("utf-8").splitlines()]
|
||||
return {s[3].strip(): int(s[0]) for s in lines}
|
||||
|
Reference in New Issue
Block a user