Switch Python or Platform dependent code to "compat" module

This commit is contained in:
Ivan Kravets
2019-05-10 17:47:02 +03:00
parent d2449762c2
commit abfee8308e
6 changed files with 20 additions and 19 deletions

View File

@ -29,6 +29,7 @@ from platformio import app, exception, util
from platformio.commands.debug import helpers, initcfgs from platformio.commands.debug import helpers, initcfgs
from platformio.commands.debug.process import BaseProcess from platformio.commands.debug.process import BaseProcess
from platformio.commands.debug.server import DebugServer from platformio.commands.debug.server import DebugServer
from platformio.compat import PY2
from platformio.telemetry import MeasurementProtocol from platformio.telemetry import MeasurementProtocol
LOG_FILE = None LOG_FILE = None
@ -60,7 +61,7 @@ class GDBClient(BaseProcess): # pylint: disable=too-many-instance-attributes
def spawn(self, gdb_path, prog_path): def spawn(self, gdb_path, prog_path):
session_hash = gdb_path + prog_path session_hash = gdb_path + prog_path
self._session_id = sha1( self._session_id = sha1(
session_hash if util.PY2 else session_hash.encode()).hexdigest() session_hash if PY2 else session_hash.encode()).hexdigest()
self._kill_previous_session() self._kill_previous_session()
patterns = { patterns = {

View File

@ -19,6 +19,7 @@ from twisted.internet import protocol # pylint: disable=import-error
from platformio import util from platformio import util
from platformio.commands.debug import helpers from platformio.commands.debug import helpers
from platformio.compat import string_types
LOG_FILE = None LOG_FILE = None
@ -42,13 +43,13 @@ class BaseProcess(protocol.ProcessProtocol, object):
text = text.replace(pattern, value or "") text = text.replace(pattern, value or "")
return text return text
if isinstance(source, util.string_types): if isinstance(source, string_types):
source = _replace(source) source = _replace(source)
elif isinstance(source, (list, dict)): elif isinstance(source, (list, dict)):
items = enumerate(source) if isinstance(source, items = enumerate(source) if isinstance(source,
list) else source.items() list) else source.items()
for key, value in items: for key, value in items:
if isinstance(value, util.string_types): if isinstance(value, string_types):
source[key] = _replace(value) source[key] = _replace(value)
elif isinstance(value, (list, dict)): elif isinstance(value, (list, dict)):
source[key] = self.apply_patterns(value, patterns) source[key] = self.apply_patterns(value, patterns)

View File

@ -18,6 +18,7 @@ import json
from os.path import expanduser, isfile, join from os.path import expanduser, isfile, join
from platformio import __version__, app, exception, util from platformio import __version__, app, exception, util
from platformio.compat import path_to_unicode
class AppRPC(object): class AppRPC(object):
@ -55,12 +56,11 @@ class AppRPC(object):
for key in storage['coreSettings']: for key in storage['coreSettings']:
if not key.endswith("dir"): if not key.endswith("dir"):
continue continue
storage['coreSettings'][key][ storage['coreSettings'][key]['default_value'] = path_to_unicode(
'default_value'] = util.path_to_unicode( storage['coreSettings'][key]['default_value'])
storage['coreSettings'][key]['default_value']) storage['coreSettings'][key]['value'] = path_to_unicode(
storage['coreSettings'][key]['value'] = util.path_to_unicode(
storage['coreSettings'][key]['value']) storage['coreSettings'][key]['value'])
storage['homeDir'] = util.path_to_unicode(expanduser("~")) storage['homeDir'] = path_to_unicode(expanduser("~"))
storage['projectsDir'] = storage['coreSettings']['projects_dir'][ storage['projectsDir'] = storage['coreSettings']['projects_dir'][
'value'] 'value']

View File

@ -17,7 +17,6 @@ from __future__ import absolute_import
import glob import glob
import os import os
import shutil import shutil
import sys
from functools import cmp_to_key from functools import cmp_to_key
from os.path import expanduser, isdir, isfile, join from os.path import expanduser, isdir, isfile, join
@ -26,6 +25,7 @@ from twisted.internet import defer # pylint: disable=import-error
from platformio import app, util from platformio import app, util
from platformio.commands.home import helpers from platformio.commands.home import helpers
from platformio.compat import PY2, get_filesystem_encoding, path_to_unicode
class OSRPC(object): class OSRPC(object):
@ -81,7 +81,7 @@ class OSRPC(object):
@staticmethod @staticmethod
def reveal_file(path): def reveal_file(path):
return click.launch( return click.launch(
path.encode(sys.getfilesystemencoding()) if util.PY2 else path, path.encode(get_filesystem_encoding()) if PY2 else path,
locate=True) locate=True)
@staticmethod @staticmethod
@ -148,6 +148,6 @@ class OSRPC(object):
items = [] items = []
for item in util.get_logical_devices(): for item in util.get_logical_devices():
if item['name']: if item['name']:
item['name'] = util.path_to_unicode(item['name']) item['name'] = path_to_unicode(item['name'])
items.append(item) items.append(item)
return items return items

View File

@ -17,13 +17,13 @@ from __future__ import absolute_import
import json import json
import os import os
import re import re
import sys
import jsonrpc # pylint: disable=import-error import jsonrpc # pylint: disable=import-error
from twisted.internet import utils # pylint: disable=import-error from twisted.internet import utils # pylint: disable=import-error
from platformio import __version__, util from platformio import __version__
from platformio.commands.home import helpers from platformio.commands.home import helpers
from platformio.compat import get_filesystem_encoding, string_types
class PIOCoreRPC(object): class PIOCoreRPC(object):
@ -33,8 +33,8 @@ class PIOCoreRPC(object):
json_output = "--json-output" in args json_output = "--json-output" in args
try: try:
args = [ args = [
arg.encode(sys.getfilesystemencoding()) if isinstance( arg.encode(get_filesystem_encoding()) if isinstance(
arg, util.string_types) else str(arg) for arg in args arg, string_types) else str(arg) for arg in args
] ]
except UnicodeError: except UnicodeError:
raise jsonrpc.exceptions.JSONRPCDispatchException( raise jsonrpc.exceptions.JSONRPCDispatchException(
@ -54,7 +54,7 @@ class PIOCoreRPC(object):
result = list(result) result = list(result)
assert len(result) == 3 assert len(result) == 3
for i in (0, 1): for i in (0, 1):
result[i] = result[i].decode(sys.getfilesystemencoding()).strip() result[i] = result[i].decode(get_filesystem_encoding()).strip()
out, err, code = result out, err, code = result
text = ("%s\n\n%s" % (out, err)).strip() text = ("%s\n\n%s" % (out, err)).strip()
if code != 0: if code != 0:

View File

@ -16,7 +16,6 @@ from __future__ import absolute_import
import os import os
import shutil import shutil
import sys
import time import time
from os.path import (basename, expanduser, getmtime, isdir, isfile, join, from os.path import (basename, expanduser, getmtime, isdir, isfile, join,
realpath, sep) realpath, sep)
@ -26,6 +25,7 @@ import jsonrpc # pylint: disable=import-error
from platformio import exception, util from platformio import exception, util
from platformio.commands.home.rpc.handlers.app import AppRPC from platformio.commands.home.rpc.handlers.app import AppRPC
from platformio.commands.home.rpc.handlers.piocore import PIOCoreRPC from platformio.commands.home.rpc.handlers.piocore import PIOCoreRPC
from platformio.compat import get_filesystem_encoding
from platformio.ide.projectgenerator import ProjectGenerator from platformio.ide.projectgenerator import ProjectGenerator
from platformio.managers.platform import PlatformManager from platformio.managers.platform import PlatformManager
from platformio.project.config import ProjectConfig from platformio.project.config import ProjectConfig
@ -215,8 +215,7 @@ class ProjectRPC(object):
if isdir(src_dir): if isdir(src_dir):
util.rmtree_(src_dir) util.rmtree_(src_dir)
shutil.copytree( shutil.copytree(
arduino_project_dir.encode(sys.getfilesystemencoding()), arduino_project_dir.encode(get_filesystem_encoding()), src_dir)
src_dir)
return project_dir return project_dir
@staticmethod @staticmethod