From e060a29228b9156c65d5d8454dab6507442dde27 Mon Sep 17 00:00:00 2001 From: rdb Date: Fri, 2 Oct 2020 12:02:48 +0200 Subject: [PATCH] general: Clean up hacks to support Python 3.5 from codebase --- dtool/src/dtoolutil/filename_ext.cxx | 17 +--------- pandatool/src/deploy-stub/deploy-stub.c | 43 ------------------------- 2 files changed, 1 insertion(+), 59 deletions(-) diff --git a/dtool/src/dtoolutil/filename_ext.cxx b/dtool/src/dtoolutil/filename_ext.cxx index 58b96f74bc..7feec66a75 100644 --- a/dtool/src/dtoolutil/filename_ext.cxx +++ b/dtool/src/dtoolutil/filename_ext.cxx @@ -53,9 +53,6 @@ __init__(PyObject *path) { return; } - PyObject *path_str; - -#if PY_VERSION_HEX >= 0x03060000 // It must be an os.PathLike object. Check for an __fspath__ method. PyObject *fspath = PyObject_GetAttrString((PyObject *)Py_TYPE(path), "__fspath__"); if (fspath == nullptr) { @@ -63,20 +60,8 @@ __init__(PyObject *path) { return; } - path_str = PyObject_CallFunctionObjArgs(fspath, path, nullptr); + PyObject *path_str = PyObject_CallFunctionObjArgs(fspath, path, nullptr); Py_DECREF(fspath); -#else - // There is no standard path protocol before Python 3.6, but let's try and - // support taking pathlib paths anyway. We don't version check this to - // allow people to use backports of the pathlib module. - if (PyObject_HasAttrString(path, "_format_parsed_parts")) { - path_str = PyObject_Str(path); - } else { - PyErr_Format(PyExc_TypeError, "expected str, bytes, Path or Filename object, not %s", Py_TYPE(path)->tp_name); - return; - } -#endif - if (path_str == nullptr) { return; } diff --git a/pandatool/src/deploy-stub/deploy-stub.c b/pandatool/src/deploy-stub/deploy-stub.c index 9b118c75b0..65a604fa01 100644 --- a/pandatool/src/deploy-stub/deploy-stub.c +++ b/pandatool/src/deploy-stub/deploy-stub.c @@ -73,36 +73,6 @@ static struct _inittab extensions[] = { static wchar_t *log_pathw = NULL; #endif -#if defined(_WIN32) && PY_VERSION_HEX < 0x03060000 -static int supports_code_page(UINT cp) { - if (cp == 0) { - cp = GetACP(); - } - - /* Shortcut, because we know that these encodings are bundled by default-- - * see FreezeTool.py and Python's encodings/aliases.py */ - if (cp != 0 && cp != 1252 && cp != 367 && cp != 437 && cp != 850 && cp != 819) { - const struct _frozen *moddef; - char codec[100]; - - /* Check if the codec was frozen into the program. We can't check this - * using _PyCodec_Lookup, since Python hasn't been initialized yet. */ - PyOS_snprintf(codec, sizeof(codec), "encodings.cp%u", (unsigned int)cp); - - moddef = PyImport_FrozenModules; - while (moddef->name) { - if (strcmp(moddef->name, codec) == 0) { - return 1; - } - ++moddef; - } - return 0; - } - - return 1; -} -#endif - /** * Sets the main_dir field of the blobinfo structure, but only if it wasn't * already set. @@ -408,19 +378,6 @@ int Py_FrozenMain(int argc, char **argv) } #endif -#if defined(MS_WINDOWS) && PY_VERSION_HEX >= 0x03040000 && PY_VERSION_HEX < 0x03060000 - if (!supports_code_page(GetConsoleOutputCP()) || - !supports_code_page(GetConsoleCP())) { - /* Revert to the active codepage, and tell Python to use the 'mbcs' - * encoding (which always uses the active codepage). In 99% of cases, - * this will be the same thing anyway. */ - UINT acp = GetACP(); - SetConsoleCP(acp); - SetConsoleOutputCP(acp); - Py_SetStandardStreamEncoding("mbcs", NULL); - } -#endif - Py_FrozenFlag = 1; /* Suppress errors from getpath.c */ Py_NoSiteFlag = 0; Py_NoUserSiteDirectory = 1;