diff --git a/.flake8 b/.flake8 new file mode 100644 index 0000000000..72a206ab99 --- /dev/null +++ b/.flake8 @@ -0,0 +1,164 @@ +[flake8] + +ignore = + E221, # Multiple spaces before operator + E231, # Missing whitespace after ',', ';', or ':' + E241, # Multiple spaces after ',' + FI11, # __future__ import "absolute_import" missing + FI12, # __future__ import "with_statement" missing + FI14, # __future__ import "unicode_literals" missing + FI15, # __future__ import "generator_stop" missing + FI16, # __future__ import "nested_scopes" missing + FI17, # __future__ import "generators" missing + FI50, # __future__ import "division" present + FI53, # __future__ import "print_function" present + W503, # Line break occurred before a binary operator + W504 # Line break occurred after a binary operator + +max-line-length = 160 + +show_source = True + +statistics = True + +exclude = + .git, + __pycache__, + # submodules + components/esptool_py/esptool, + components/micro-ecc/micro-ecc, + components/nghttp/nghttp2, + components/libsodium/libsodium, + components/json/cJSON, + components/mbedtls/mbedtls, + components/expat/expat, + components/unity/unity, + # temporary list (should be empty) + components/app_update/dump_otadata.py, + components/app_update/gen_empty_partition.py, + components/espcoredump/espcoredump.py, + components/espcoredump/test/test_espcoredump.py, + components/nvs_flash/nvs_partition_generator/nvs_partition_gen.py, + components/partition_table/gen_esp32part.py, + components/partition_table/parttool.py, + components/partition_table/test_gen_esp32part_host/gen_esp32part_tests.py, + components/protocomm/python/constants_pb2.py, + components/protocomm/python/sec0_pb2.py, + components/protocomm/python/sec1_pb2.py, + components/protocomm/python/session_pb2.py, + components/ulp/esp32ulp_mapgen.py, + components/wifi_provisioning/python/wifi_config_pb2.py, + components/wifi_provisioning/python/wifi_constants_pb2.py, + docs/conf_common.py, + docs/en/conf.py, + docs/gen-dxd.py, + docs/gen-toolchain-links.py, + docs/gen-version-specific-includes.py, + docs/link-roles.py, + docs/local_util.py, + docs/zh_CN/conf.py, + examples/peripherals/can/can_alert_and_recovery/example_test.py, + examples/peripherals/can/can_network/example_test.py, + examples/peripherals/can/can_self_test/example_test.py, + examples/peripherals/i2s_adc_dac/tools/generate_audio_file.py, + examples/peripherals/sdio/sdio_test.py, + examples/protocols/asio/chat_client/asio_chat_client_test.py, + examples/protocols/asio/chat_server/asio_chat_server_test.py, + examples/protocols/asio/tcp_echo_server/asio_tcp_server_test.py, + examples/protocols/asio/udp_echo_server/asio_udp_server_test.py, + examples/protocols/esp_http_client/esp_http_client_test.py, + examples/protocols/http_server/advanced_tests/http_server_advanced_test.py, + examples/protocols/http_server/advanced_tests/scripts/test.py, + examples/protocols/http_server/persistent_sockets/http_server_persistence_test.py, + examples/protocols/http_server/persistent_sockets/scripts/adder.py, + examples/protocols/http_server/simple/http_server_simple_test.py, + examples/protocols/http_server/simple/scripts/client.py, + examples/protocols/https_request/example_test.py, + examples/protocols/mdns/mdns_example_test.py, + examples/protocols/mqtt/ssl/mqtt_ssl_example_test.py, + examples/protocols/mqtt/tcp/mqtt_tcp_example_test.py, + examples/protocols/mqtt/ws/mqtt_ws_example_test.py, + examples/protocols/mqtt/wss/mqtt_wss_example_test.py, + examples/protocols/sockets/scripts/tcpclient.py, + examples/protocols/sockets/scripts/tcpserver.py, + examples/protocols/sockets/scripts/udpclient.py, + examples/protocols/sockets/scripts/udpserver.py, + examples/provisioning/ble_prov/ble_prov_test.py, + examples/provisioning/custom_config/components/custom_provisioning/python/custom_config_pb2.py, + examples/provisioning/softap_prov/softap_prov_test.py, + examples/provisioning/softap_prov/utils/wifi_tools.py, + examples/system/cpp_exceptions/example_test.py, + examples/system/esp_event/default_event_loop/example_test.py, + examples/system/esp_event/user_event_loops/example_test.py, + examples/system/esp_timer/example_test.py, + examples/system/light_sleep/example_test.py, + examples/wifi/iperf/iperf_test.py, + examples/wifi/iperf/test_report.py, + tools/check_python_dependencies.py, + tools/ci/apply_bot_filter.py, + tools/cmake/convert_to_cmake.py, + tools/esp_app_trace/apptrace_proc.py, + tools/esp_app_trace/logtrace_proc.py, + tools/esp_app_trace/pylibelf/__init__.py, + tools/esp_app_trace/pylibelf/constants/__init__.py, + tools/esp_app_trace/pylibelf/iterators/__init__.py, + tools/esp_app_trace/pylibelf/macros/__init__.py, + tools/esp_app_trace/pylibelf/types/__init__.py, + tools/esp_app_trace/pylibelf/util/__init__.py, + tools/esp_app_trace/pylibelf/util/syms/__init__.py, + tools/esp_prov/esp_prov.py, + tools/esp_prov/proto/__init__.py, + tools/esp_prov/prov/__init__.py, + tools/esp_prov/prov/custom_prov.py, + tools/esp_prov/prov/wifi_prov.py, + tools/esp_prov/security/__init__.py, + tools/esp_prov/security/security.py, + tools/esp_prov/security/security0.py, + tools/esp_prov/security/security1.py, + tools/esp_prov/transport/__init__.py, + tools/esp_prov/transport/ble_cli.py, + tools/esp_prov/transport/transport.py, + tools/esp_prov/transport/transport_ble.py, + tools/esp_prov/transport/transport_console.py, + tools/esp_prov/transport/transport_softap.py, + tools/esp_prov/utils/__init__.py, + tools/esp_prov/utils/convenience.py, + tools/gen_esp_err_to_name.py, + tools/idf.py, + tools/idf_monitor.py, + tools/idf_size.py, + tools/kconfig_new/confgen.py, + tools/kconfig_new/confserver.py, + tools/kconfig_new/gen_kconfig_doc.py, + tools/kconfig_new/kconfiglib.py, + tools/kconfig_new/test/test_confserver.py, + tools/ldgen/fragments.py, + tools/ldgen/generation.py, + tools/ldgen/ldgen.py, + tools/ldgen/pyparsing.py, + tools/ldgen/sdkconfig.py, + tools/ldgen/test/test_fragments.py, + tools/ldgen/test/test_generation.py, + tools/mass_mfg/mfg_gen.py, + tools/test_idf_monitor/run_test_idf_monitor.py, + tools/test_idf_size/test_idf_size.py, + tools/tiny-test-fw/CIAssignExampleTest.py, + tools/tiny-test-fw/CIAssignUnitTest.py, + tools/tiny-test-fw/DUT.py, + tools/tiny-test-fw/EnvConfig.py, + tools/tiny-test-fw/IDF/IDFApp.py, + tools/tiny-test-fw/IDF/IDFDUT.py, + tools/tiny-test-fw/Runner.py, + tools/tiny-test-fw/TinyFW.py, + tools/tiny-test-fw/Utility/CaseConfig.py, + tools/tiny-test-fw/Utility/LineChart.py, + tools/tiny-test-fw/Utility/PowerControl.py, + tools/tiny-test-fw/Utility/SearchCases.py, + tools/tiny-test-fw/Utility/__init__.py, + tools/tiny-test-fw/docs/conf.py, + tools/tiny-test-fw/example.py, + tools/unit-test-app/idf_ext.py, + tools/unit-test-app/tools/CreateSectionTable.py, + tools/unit-test-app/tools/UnitTestParser.py, + tools/unit-test-app/unit_test.py, + tools/windows/eclipse_make.py, diff --git a/.gitignore b/.gitignore index 6982d5fc00..478852216c 100644 --- a/.gitignore +++ b/.gitignore @@ -68,3 +68,6 @@ test_multi_heap_host # VS Code Settings .vscode/ + +# Results for the checking of the Python coding style +flake8_output.txt diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a3a8ae42a3..2141848ca8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -722,6 +722,18 @@ check_examples_cmake_make: script: - tools/ci/check_examples_cmake_make.sh +check_python_style: + <<: *check_job_template + artifacts: + when: on_failure + paths: + - flake8_output.txt + expire_in: 1 week + before_script: *do_nothing_before + script: + # run it only under Python 3 (it is very slow under Python 2) + - ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 3.4.8 python -m flake8 --config=$IDF_PATH/.flake8 --output-file=flake8_output.txt --tee --benchmark $IDF_PATH + check_ut_cmake_make: stage: check image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000..74902f9f3f --- /dev/null +++ b/.travis.yml @@ -0,0 +1,7 @@ +language: python +sudo: false +python: + - "3.4" +script: + - pip install flake8 + - travis_wait 20 python -m flake8 --config=.flake8 .