diff --git a/platformio/downloader.py b/platformio/downloader.py index be5e8888..60f0e159 100644 --- a/platformio/downloader.py +++ b/platformio/downloader.py @@ -22,7 +22,6 @@ import click import requests from platformio import util -from platformio.compat import PY2, get_filesystem_encoding from platformio.exception import (FDSHASumMismatch, FDSizeMismatch, FDUnrecognizedStatusCode) from platformio.proc import exec_command @@ -46,15 +45,11 @@ class FileDownloader(object): if disposition and "filename=" in disposition: self._fname = disposition[disposition.index("filename=") + 9:].replace('"', "").replace("'", "") - if PY2: - self._fname = self._fname.encode("utf8") else: self._fname = [p for p in url.split("/") if p][-1] - + self._fname = str(self._fname) self._destination = self._fname if dest_dir: - if PY2: - dest_dir = dest_dir.decode(get_filesystem_encoding()) self.set_destination(join(dest_dir, self._fname)) def set_destination(self, destination): diff --git a/platformio/managers/platform.py b/platformio/managers/platform.py index e7a29027..2e4d2ebf 100644 --- a/platformio/managers/platform.py +++ b/platformio/managers/platform.py @@ -24,7 +24,8 @@ import click import semantic_version from platformio import __version__, app, exception, util -from platformio.compat import get_filesystem_encoding, string_types +from platformio.compat import (get_filesystem_encoding, hashlib_encode_data, + is_bytes) from platformio.managers.core import get_core_package_dir from platformio.managers.package import BasePkgManager, PackageManager from platformio.proc import (BuildAsyncPipe, copy_pythonpath_to_osenv, @@ -361,14 +362,13 @@ class PlatformRunMixin(object): @staticmethod def encode_scons_arg(value): - if isinstance(value, string_types): - value = value.encode(get_filesystem_encoding()) - return base64.urlsafe_b64encode(value).decode() + data = base64.urlsafe_b64encode(hashlib_encode_data(value)) + return data.decode() if is_bytes(data) else data @staticmethod - def decode_scons_arg(value): - return base64.urlsafe_b64decode(value).decode( - get_filesystem_encoding()) + def decode_scons_arg(data): + value = base64.urlsafe_b64decode(data) + return value.decode() if is_bytes(value) else value def run(self, variables, targets, silent, verbose): assert isinstance(variables, dict)