diff --git a/platformio/account/client.py b/platformio/account/client.py index a898de48..2b9cb57e 100644 --- a/platformio/account/client.py +++ b/platformio/account/client.py @@ -15,7 +15,7 @@ import os import time -from platformio import __accounts_api__, app +from platformio import __accounts_api__, app, util from platformio.exception import PlatformioException from platformio.http import HTTPClient, HTTPClientError @@ -68,7 +68,7 @@ class AccountClient(HTTPClient): # pylint:disable=too-many-public-methods return os.environ.get("PLATFORMIO_AUTH_TOKEN") auth = app.get_state_item("account", {}).get("auth", {}) if auth.get("access_token") and auth.get("access_token_expire"): - if auth.get("access_token_expire") > time.time(): + if auth.get("access_token_expire") > util.get_timestamp(): return auth.get("access_token") if auth.get("refresh_token"): try: diff --git a/platformio/app.py b/platformio/app.py index d94cdfef..534214d1 100644 --- a/platformio/app.py +++ b/platformio/app.py @@ -18,10 +18,9 @@ import json import os import platform import socket -import time import uuid -from platformio import __version__, exception, fs, proc +from platformio import __version__, exception, fs, proc, util from platformio.compat import IS_WINDOWS, hashlib_encode_data from platformio.package.lockfile import LockFile from platformio.project.config import ProjectConfig @@ -254,7 +253,7 @@ def get_cid(): cid = str(cid) if IS_WINDOWS or os.getuid() > 0: # pylint: disable=no-member set_state_item("cid", cid) - set_state_item("created_at", int(time.time())) + set_state_item("created_at", int(util.get_timestamp())) return cid diff --git a/platformio/builder/main.py b/platformio/builder/main.py index 86702783..3aa460cd 100644 --- a/platformio/builder/main.py +++ b/platformio/builder/main.py @@ -72,7 +72,8 @@ DEFAULT_ENV_OPTIONS = dict( variables=clivars, # Propagating External Environment ENV=os.environ, - UNIX_TIME=int(time()), + TIMESTAMP=int(time()), + UNIX_TIME="$TIMESTAMP", # deprecated BUILD_DIR=os.path.join("$PROJECT_BUILD_DIR", "$PIOENV"), BUILD_SRC_DIR=os.path.join("$BUILD_DIR", "src"), BUILD_TEST_DIR=os.path.join("$BUILD_DIR", "test"), diff --git a/platformio/telemetry.py b/platformio/telemetry.py index 9b57351f..5064c3dd 100644 --- a/platformio/telemetry.py +++ b/platformio/telemetry.py @@ -67,7 +67,6 @@ class MeasurementProtocol: def to_payload(self): return { "client_id": self.client_id, - "user_id": f"cid:{self.client_id}", "non_personalized_ads": True, "user_properties": self._user_properties, "events": self._events, diff --git a/platformio/util.py b/platformio/util.py index 549bccf1..3666bf60 100644 --- a/platformio/util.py +++ b/platformio/util.py @@ -13,13 +13,13 @@ # limitations under the License. import base64 +import datetime import functools import math import platform import re import shutil import time -from datetime import datetime import click @@ -168,10 +168,14 @@ def items_in_list(needle, haystack): return set(needle) & set(haystack) +def get_timestamp(utc=True): + return datetime.datetime.now(datetime.timezone.utc if utc else None).timestamp() + + def parse_datetime(datestr): if "T" in datestr and "Z" in datestr: - return datetime.strptime(datestr, "%Y-%m-%dT%H:%M:%SZ") - return datetime.strptime(datestr) + return datetime.datetime.strptime(datestr, "%Y-%m-%dT%H:%M:%SZ") + return datetime.datetime.strptime(datestr) def merge_dicts(d1, d2, path=None): diff --git a/tests/commands/pkg/test_install.py b/tests/commands/pkg/test_install.py index 61ccde0d..ea995c68 100644 --- a/tests/commands/pkg/test_install.py +++ b/tests/commands/pkg/test_install.py @@ -469,7 +469,7 @@ def test_custom_project_tools( project_dir = tmp_path / "project" project_dir.mkdir() (project_dir / "platformio.ini").write_text(PROJECT_CONFIG_TPL) - spec = "platformio/tool-openocd" + spec = "platformio/tool-openocd @ ^2" result = clirunner.invoke( package_install_cmd, ["-d", str(project_dir), "-e", "devkit", "-t", spec], @@ -503,7 +503,7 @@ def test_custom_project_tools( # check saved deps assert config.get("env:devkit", "platform_packages") == [ - "platformio/tool-openocd@^2.1100.211028", + "platformio/tool-openocd@^2", ] # install tool without saving to config @@ -518,7 +518,7 @@ def test_custom_project_tools( PackageSpec("tool-openocd@2.1100.211028"), ] assert config.get("env:devkit", "platform_packages") == [ - "platformio/tool-openocd@^2.1100.211028", + "platformio/tool-openocd@^2", ] # unknown tool diff --git a/tests/commands/pkg/test_uninstall.py b/tests/commands/pkg/test_uninstall.py index 1dae981c..d776b142 100644 --- a/tests/commands/pkg/test_uninstall.py +++ b/tests/commands/pkg/test_uninstall.py @@ -313,7 +313,7 @@ def test_custom_project_tools( project_dir = tmp_path / "project" project_dir.mkdir() (project_dir / "platformio.ini").write_text(PROJECT_CONFIG_TPL) - spec = "platformio/tool-openocd" + spec = "platformio/tool-openocd@^2" result = clirunner.invoke( package_install_cmd, ["-d", str(project_dir), "-e", "devkit", "-t", spec], @@ -329,7 +329,7 @@ def test_custom_project_tools( assert not os.path.exists(config.get("platformio", "platforms_dir")) # check saved deps assert config.get("env:devkit", "platform_packages") == [ - "platformio/tool-openocd@^2.1100.211028", + "platformio/tool-openocd@^2", ] # uninstall result = clirunner.invoke(