From 28bd200cd6641a9d2f3eb0097047f42233bd7b1b Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Mon, 18 Mar 2024 13:14:22 +0200 Subject: [PATCH 1/7] Move core/pip dependencies to the separate "dependencies" module --- platformio/__init__.py | 9 -------- platformio/commands/upgrade.py | 2 +- platformio/compat.py | 11 ++++++++++ platformio/{pipdeps.py => dependencies.py} | 24 +++++++++++----------- platformio/http.py | 2 +- platformio/package/manager/core.py | 13 ++++++------ setup.py | 2 +- tests/commands/pkg/test_install.py | 7 ++++--- tests/commands/pkg/test_update.py | 7 ++++--- 9 files changed, 41 insertions(+), 36 deletions(-) rename platformio/{pipdeps.py => dependencies.py} (84%) diff --git a/platformio/__init__.py b/platformio/__init__.py index 35aa5939..49b5bf77 100644 --- a/platformio/__init__.py +++ b/platformio/__init__.py @@ -38,15 +38,6 @@ __registry_mirror_hosts__ = [ ] __pioremote_endpoint__ = "ssl:host=remote.platformio.org:port=4413" -__core_packages__ = { - "contrib-piohome": "~3.4.2", - "contrib-pioremote": "~1.0.0", - "tool-scons": "~4.40600.0", - "tool-cppcheck": "~1.21100.0", - "tool-clangtidy": "~1.150005.0", - "tool-pvs-studio": "~7.18.0", -} - __check_internet_hosts__ = [ "185.199.110.153", # Github.com "88.198.170.159", # platformio.org diff --git a/platformio/commands/upgrade.py b/platformio/commands/upgrade.py index 129e3fa1..d8ba386e 100644 --- a/platformio/commands/upgrade.py +++ b/platformio/commands/upgrade.py @@ -19,9 +19,9 @@ import subprocess import click from platformio import VERSION, __version__, app, exception +from platformio.dependencies import get_pip_dependencies from platformio.http import fetch_remote_content from platformio.package.manager.core import update_core_packages -from platformio.pipdeps import get_pip_dependencies from platformio.proc import get_pythonexe_path PYPI_JSON_URL = "https://pypi.org/pypi/platformio/json" diff --git a/platformio/compat.py b/platformio/compat.py index 008dc7ae..6bd8029c 100644 --- a/platformio/compat.py +++ b/platformio/compat.py @@ -17,6 +17,7 @@ import importlib.util import inspect import locale +import os import shlex import sys @@ -45,6 +46,7 @@ else: PY2 = sys.version_info[0] == 2 # DO NOT REMOVE IT. ESP8266/ESP32 depend on it +PY36 = sys.version_info[0:2] == (3, 6) IS_CYGWIN = sys.platform.startswith("cygwin") IS_WINDOWS = WINDOWS = sys.platform.startswith("win") IS_MACOS = sys.platform.startswith("darwin") @@ -132,3 +134,12 @@ def path_to_unicode(path): and custom device monitor filters """ return path + + +def is_proxy_set(socks=False): + for var in ("HTTP_PROXY", "HTTPS_PROXY", "ALL_PROXY"): + value = os.getenv(var, os.getenv(var.lower())) + if not value or (socks and not value.startswith("socks5://")): + continue + return True + return False diff --git a/platformio/pipdeps.py b/platformio/dependencies.py similarity index 84% rename from platformio/pipdeps.py rename to platformio/dependencies.py index b76bc8ca..b8ae471f 100644 --- a/platformio/pipdeps.py +++ b/platformio/dependencies.py @@ -12,11 +12,20 @@ # See the License for the specific language governing permissions and # limitations under the License. -import os import platform -import sys -PY36 = sys.version_info[0:2] == (3, 6) +from platformio.compat import PY36, is_proxy_set + + +def get_core_dependencies(): + return { + "contrib-piohome": "~3.4.2", + "contrib-pioremote": "~1.0.0", + "tool-scons": "~4.40600.0", + "tool-cppcheck": "~1.21100.0", + "tool-clangtidy": "~1.150005.0", + "tool-pvs-studio": "~7.18.0", + } def get_pip_dependencies(): @@ -60,12 +69,3 @@ def get_pip_dependencies(): pass return core + home + extra - - -def is_proxy_set(socks=False): - for var in ("HTTP_PROXY", "HTTPS_PROXY", "ALL_PROXY"): - value = os.getenv(var, os.getenv(var.lower())) - if not value or (socks and not value.startswith("socks5://")): - continue - return True - return False diff --git a/platformio/http.py b/platformio/http.py index 18bb50c6..d82e4703 100644 --- a/platformio/http.py +++ b/platformio/http.py @@ -21,8 +21,8 @@ from urllib3.util.retry import Retry from platformio import __check_internet_hosts__, app, util from platformio.cache import ContentCache, cleanup_content_cache +from platformio.compat import is_proxy_set from platformio.exception import PlatformioException, UserSideException -from platformio.pipdeps import is_proxy_set __default_requests_timeout__ = (10, None) # (connect, read) diff --git a/platformio/package/manager/core.py b/platformio/package/manager/core.py index ca5c5e01..f4e0f50e 100644 --- a/platformio/package/manager/core.py +++ b/platformio/package/manager/core.py @@ -14,7 +14,8 @@ import os -from platformio import __core_packages__, exception +from platformio import exception +from platformio.dependencies import get_core_dependencies from platformio.package.exception import UnknownPackageError from platformio.package.manager.tool import ToolPackageManager from platformio.package.meta import PackageSpec @@ -23,7 +24,7 @@ from platformio.package.meta import PackageSpec def get_installed_core_packages(): result = [] pm = ToolPackageManager() - for name, requirements in __core_packages__.items(): + for name, requirements in get_core_dependencies().items(): spec = PackageSpec(owner="platformio", name=name, requirements=requirements) pkg = pm.get_package(spec) if pkg: @@ -32,11 +33,11 @@ def get_installed_core_packages(): def get_core_package_dir(name, spec=None, auto_install=True): - if name not in __core_packages__: + if name not in get_core_dependencies(): raise exception.PlatformioException("Please upgrade PlatformIO Core") pm = ToolPackageManager() spec = spec or PackageSpec( - owner="platformio", name=name, requirements=__core_packages__[name] + owner="platformio", name=name, requirements=get_core_dependencies()[name] ) pkg = pm.get_package(spec) if pkg: @@ -50,7 +51,7 @@ def get_core_package_dir(name, spec=None, auto_install=True): def update_core_packages(): pm = ToolPackageManager() - for name, requirements in __core_packages__.items(): + for name, requirements in get_core_dependencies().items(): spec = PackageSpec(owner="platformio", name=name, requirements=requirements) try: pm.update(spec, spec) @@ -65,7 +66,7 @@ def remove_unnecessary_core_packages(dry_run=False): pm = ToolPackageManager() best_pkg_versions = {} - for name, requirements in __core_packages__.items(): + for name, requirements in get_core_dependencies().items(): spec = PackageSpec(owner="platformio", name=name, requirements=requirements) pkg = pm.get_package(spec) if not pkg: diff --git a/setup.py b/setup.py index 7a7c5076..e4eae238 100644 --- a/setup.py +++ b/setup.py @@ -23,7 +23,7 @@ from platformio import ( __url__, __version__, ) -from platformio.pipdeps import get_pip_dependencies +from platformio.dependencies import get_pip_dependencies setup( name=__title__, diff --git a/tests/commands/pkg/test_install.py b/tests/commands/pkg/test_install.py index 22963ef9..2c623314 100644 --- a/tests/commands/pkg/test_install.py +++ b/tests/commands/pkg/test_install.py @@ -18,7 +18,8 @@ import os import pytest -from platformio import __core_packages__, fs +from platformio import fs +from platformio.dependencies import get_core_dependencies from platformio.package.commands.install import package_install_cmd from platformio.package.manager.library import LibraryPackageManager from platformio.package.manager.platform import PlatformPackageManager @@ -177,7 +178,7 @@ def test_baremetal_project( ), ] assert pkgs_to_specs(ToolPackageManager().get_installed()) == [ - PackageSpec("tool-scons@%s" % __core_packages__["tool-scons"][1:]), + PackageSpec("tool-scons@%s" % get_core_dependencies()["tool-scons"][1:]), PackageSpec("toolchain-atmelavr@1.70300.191015"), ] @@ -210,7 +211,7 @@ def test_project( ] assert pkgs_to_specs(ToolPackageManager().get_installed()) == [ PackageSpec("framework-arduino-avr-attiny@1.5.2"), - PackageSpec("tool-scons@%s" % __core_packages__["tool-scons"][1:]), + PackageSpec("tool-scons@%s" % get_core_dependencies()["tool-scons"][1:]), PackageSpec("toolchain-atmelavr@1.70300.191015"), ] assert config.get("env:devkit", "lib_deps") == [ diff --git a/tests/commands/pkg/test_update.py b/tests/commands/pkg/test_update.py index 1fd953ed..4ee4366a 100644 --- a/tests/commands/pkg/test_update.py +++ b/tests/commands/pkg/test_update.py @@ -16,7 +16,8 @@ import os -from platformio import __core_packages__, fs +from platformio import fs +from platformio.dependencies import get_core_dependencies from platformio.package.commands.install import package_install_cmd from platformio.package.commands.update import package_update_cmd from platformio.package.exception import UnknownPackageError @@ -174,7 +175,7 @@ def test_project( ] assert pkgs_to_specs(ToolPackageManager().get_installed()) == [ PackageSpec("framework-arduino-avr-attiny@1.3.2"), - PackageSpec("tool-scons@%s" % __core_packages__["tool-scons"][1:]), + PackageSpec("tool-scons@%s" % get_core_dependencies()["tool-scons"][1:]), PackageSpec("toolchain-atmelavr@1.50400.190710"), ] assert config.get("env:devkit", "lib_deps") == [ @@ -204,7 +205,7 @@ def test_project( ] assert pkgs_to_specs(ToolPackageManager().get_installed()) == [ PackageSpec("framework-arduino-avr-attiny@1.3.2"), - PackageSpec("tool-scons@%s" % __core_packages__["tool-scons"][1:]), + PackageSpec("tool-scons@%s" % get_core_dependencies()["tool-scons"][1:]), PackageSpec("toolchain-atmelavr@1.70300.191015"), PackageSpec("toolchain-atmelavr@1.50400.190710"), ] From 9fb9e586a0adc0e61fa8055ed8604b4866590a2f Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Mon, 18 Mar 2024 13:14:39 +0200 Subject: [PATCH 2/7] Sync docs --- docs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs b/docs index ad1f7f90..85286341 160000 --- a/docs +++ b/docs @@ -1 +1 @@ -Subproject commit ad1f7f90c58347d8375ab88a77bbc588cf53b6c1 +Subproject commit 8528634148a1edfdc96966ef6a1eb8456cfd8694 From c01ef88265fce547c691d6a08b369a681fd14ece Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Mon, 18 Mar 2024 14:27:45 +0200 Subject: [PATCH 3/7] Upgraded the build engine to the latest version of SCons (4.7.0) --- HISTORY.rst | 1 + platformio/dependencies.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/HISTORY.rst b/HISTORY.rst index e5b44604..1e4bd697 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -22,6 +22,7 @@ test-driven methodologies, and modern toolchains for unrivaled success. ~~~~~~~~~~~~~~~~~~~ * Introduced the ``--json-output`` option to the `pio test `__ command, enabling users to generate test results in the JSON format +* Upgraded the build engine to the latest version of SCons (4.7.0) to improve build performance, reliability, and compatibility with other tools and systems (`release notes `__) * Broadened version support for the ``pyelftools`` dependency, enabling compatibility with lower versions and facilitating integration with a wider range of third-party tools (`issue #4834 `_) * Addressed an issue where passing a relative path (``--project-dir``) to the `pio project init `__ command resulted in an error (`issue #4847 `_) * Enhanced |STATICCODEANALYSIS| to accommodate scenarios where custom ``src_dir`` or ``include_dir`` are located outside the project folder (`pull #4874 `_) diff --git a/platformio/dependencies.py b/platformio/dependencies.py index b8ae471f..6bcb5f90 100644 --- a/platformio/dependencies.py +++ b/platformio/dependencies.py @@ -21,7 +21,7 @@ def get_core_dependencies(): return { "contrib-piohome": "~3.4.2", "contrib-pioremote": "~1.0.0", - "tool-scons": "~4.40600.0", + "tool-scons": "~4.40700.0", "tool-cppcheck": "~1.21100.0", "tool-clangtidy": "~1.150005.0", "tool-pvs-studio": "~7.18.0", From 0d647e164b1e0ecc467a64fdde7a0a563344ac39 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Mon, 18 Mar 2024 17:45:54 +0200 Subject: [PATCH 4/7] Skip unnecessary import --- platformio/compat.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/platformio/compat.py b/platformio/compat.py index 6bd8029c..d5455099 100644 --- a/platformio/compat.py +++ b/platformio/compat.py @@ -42,7 +42,10 @@ else: if sys.version_info >= (3, 9): from asyncio import to_thread as aio_to_thread else: - from starlette.concurrency import run_in_threadpool as aio_to_thread + try: + from starlette.concurrency import run_in_threadpool as aio_to_thread + except ImportError: + pass PY2 = sys.version_info[0] == 2 # DO NOT REMOVE IT. ESP8266/ESP32 depend on it From 0e3249e8b1a13128633bb7ebc03e2ab5dbb03614 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Thu, 21 Mar 2024 21:08:41 +0200 Subject: [PATCH 5/7] Update deps --- platformio/dependencies.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio/dependencies.py b/platformio/dependencies.py index 6bcb5f90..5fd40a1d 100644 --- a/platformio/dependencies.py +++ b/platformio/dependencies.py @@ -45,7 +45,7 @@ def get_pip_dependencies(): # PIO Home requirements "ajsonrpc == 1.2.*", "starlette >=0.19, <0.38", - "uvicorn %s" % ("== 0.16.0" if PY36 else ">=0.16, <0.29"), + "uvicorn %s" % ("== 0.16.0" if PY36 else ">=0.16, <0.30"), "wsproto == 1.*", ] From fcba901611d576af4d3c91cf504f38d4a23cb900 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Thu, 21 Mar 2024 21:11:15 +0200 Subject: [PATCH 6/7] Bump version to 6.1.14 --- HISTORY.rst | 2 +- docs | 2 +- platformio/__init__.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 1e4bd697..6c83cbb5 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -18,7 +18,7 @@ Unlock the true potential of embedded software development with PlatformIO's collaborative ecosystem, embracing declarative principles, test-driven methodologies, and modern toolchains for unrivaled success. -6.1.14 (2024-??-??) +6.1.14 (2024-03-21) ~~~~~~~~~~~~~~~~~~~ * Introduced the ``--json-output`` option to the `pio test `__ command, enabling users to generate test results in the JSON format diff --git a/docs b/docs index 85286341..670721e9 160000 --- a/docs +++ b/docs @@ -1 +1 @@ -Subproject commit 8528634148a1edfdc96966ef6a1eb8456cfd8694 +Subproject commit 670721e9231cdedd1e28f9826759f7db70cab0e8 diff --git a/platformio/__init__.py b/platformio/__init__.py index 49b5bf77..9bb65b5a 100644 --- a/platformio/__init__.py +++ b/platformio/__init__.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -VERSION = (6, 1, "14rc1") +VERSION = (6, 1, 14) __version__ = ".".join([str(s) for s in VERSION]) __title__ = "platformio" From 0acfc25d56f621363dba6cc767a2fff8870617fa Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Thu, 21 Mar 2024 21:30:22 +0200 Subject: [PATCH 7/7] Bump version to 6.1.15a1 --- platformio/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio/__init__.py b/platformio/__init__.py index 9bb65b5a..83292304 100644 --- a/platformio/__init__.py +++ b/platformio/__init__.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -VERSION = (6, 1, 14) +VERSION = (6, 1, "15a1") __version__ = ".".join([str(s) for s in VERSION]) __title__ = "platformio"