use real pathlib module

We added the _pathlib module to work around defeciencies in python 3.5's
implementation, since we now rely on 3.6 lets drop this
pull/8011/head
Dylan Baker 4 years ago
parent cef406b3a5
commit f6672c7a19
  1. 2
      meson.py
  2. 49
      mesonbuild/_pathlib.py
  3. 2
      mesonbuild/backend/backends.py
  4. 2
      mesonbuild/backend/ninjabackend.py
  5. 2
      mesonbuild/backend/vs2010backend.py
  6. 2
      mesonbuild/cmake/client.py
  7. 2
      mesonbuild/cmake/common.py
  8. 2
      mesonbuild/cmake/executor.py
  9. 2
      mesonbuild/cmake/fileapi.py
  10. 2
      mesonbuild/cmake/interpreter.py
  11. 2
      mesonbuild/cmake/toolchain.py
  12. 2
      mesonbuild/cmake/traceparser.py
  13. 2
      mesonbuild/compilers/fortran.py
  14. 2
      mesonbuild/compilers/mixins/clike.py
  15. 2
      mesonbuild/compilers/mixins/pgi.py
  16. 2
      mesonbuild/coredata.py
  17. 2
      mesonbuild/dependencies/base.py
  18. 2
      mesonbuild/dependencies/boost.py
  19. 2
      mesonbuild/dependencies/cuda.py
  20. 2
      mesonbuild/dependencies/hdf5.py
  21. 2
      mesonbuild/dependencies/misc.py
  22. 2
      mesonbuild/dependencies/scalapack.py
  23. 2
      mesonbuild/envconfig.py
  24. 2
      mesonbuild/interpreter.py
  25. 2
      mesonbuild/mcompile.py
  26. 2
      mesonbuild/mdist.py
  27. 2
      mesonbuild/mesondata.py
  28. 2
      mesonbuild/mesonlib.py
  29. 2
      mesonbuild/minit.py
  30. 2
      mesonbuild/mintro.py
  31. 2
      mesonbuild/mlog.py
  32. 2
      mesonbuild/modules/fs.py
  33. 2
      mesonbuild/modules/pkgconfig.py
  34. 2
      mesonbuild/modules/python.py
  35. 2
      mesonbuild/modules/unstable_external_project.py
  36. 2
      mesonbuild/msubprojects.py
  37. 2
      mesonbuild/mtest.py
  38. 2
      mesonbuild/wrap/wrap.py
  39. 2
      run_meson_command_tests.py
  40. 1
      run_mypy.py
  41. 2
      run_project_tests.py
  42. 2
      run_tests.py
  43. 2
      run_unittests.py
  44. 2
      tools/gen_data.py

@ -15,7 +15,7 @@
# limitations under the License.
import sys
from mesonbuild._pathlib import Path
from pathlib import Path
# If we're run uninstalled, add the script directory to sys.path to ensure that
# we always import the correct mesonbuild modules even if PYTHONPATH is mangled

@ -1,49 +0,0 @@
# Copyright 2020 The Meson development team
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import sys
import typing as T
# Python 3.5 does not have the strict kwarg for resolve and always
# behaves like calling resolve with strict=True in Python 3.6+
#
# This module emulates the behavior of Python 3.6+ by in Python 3.5 by
# overriding the resolve method with a bit of custom logic
#
# TODO: Drop this module as soon as Python 3.5 support is dropped
if T.TYPE_CHECKING:
from pathlib import Path
else:
if sys.version_info.major <= 3 and sys.version_info.minor <= 5:
# Inspired by https://codereview.stackexchange.com/questions/162426/subclassing-pathlib-path
import pathlib
import os
# Can not directly inherit from pathlib.Path because the __new__
# operator of pathlib.Path() returns a {Posix,Windows}Path object.
class Path(type(pathlib.Path())):
def resolve(self, strict: bool = False) -> 'Path':
try:
return super().resolve()
except FileNotFoundError:
if strict:
raise
return Path(os.path.normpath(str(self)))
else:
from pathlib import Path
from pathlib import PurePath, PureWindowsPath, PurePosixPath

@ -14,7 +14,7 @@
from collections import OrderedDict
from functools import lru_cache
from .._pathlib import Path
from pathlib import Path
import enum
import json
import os

@ -20,7 +20,7 @@ import subprocess
from collections import OrderedDict
from enum import Enum, unique
import itertools
from .._pathlib import PurePath, Path
from pathlib import PurePath, Path
from functools import lru_cache
from . import backends

@ -19,7 +19,7 @@ import xml.dom.minidom
import xml.etree.ElementTree as ET
import uuid
import typing as T
from .._pathlib import Path, PurePath
from pathlib import Path, PurePath
from . import backends
from .. import build

@ -19,7 +19,7 @@ from .common import CMakeException, CMakeConfiguration, CMakeBuildFile
from .. import mlog
from contextlib import contextmanager
from subprocess import Popen, PIPE, TimeoutExpired
from .._pathlib import Path
from pathlib import Path
import typing as T
import json

@ -17,7 +17,7 @@
from ..mesonlib import MesonException
from .. import mlog
from .._pathlib import Path
from pathlib import Path
import typing as T
language_map = {

@ -16,7 +16,7 @@
# or an interpreter-based tool.
import subprocess as S
from .._pathlib import Path
from pathlib import Path
from threading import Thread
import typing as T
import re

@ -15,7 +15,7 @@
from .common import CMakeException, CMakeBuildFile, CMakeConfiguration
import typing as T
from .. import mlog
from .._pathlib import Path
from pathlib import Path
import json
import re

@ -27,7 +27,7 @@ from ..mesondata import mesondata
from ..compilers.compilers import lang_suffixes, header_suffixes, obj_suffixes, lib_suffixes, is_header
from enum import Enum
from functools import lru_cache
from .._pathlib import Path
from pathlib import Path
import typing as T
import re
from os import environ

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from .._pathlib import Path
from pathlib import Path
from ..envconfig import CMakeSkipCompilerTest
from ..mesonlib import MachineChoice
from .common import language_map

@ -21,7 +21,7 @@ from .. import mlog
from ..mesonlib import version_compare
import typing as T
from .._pathlib import Path
from pathlib import Path
import re
import json
import textwrap

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from .._pathlib import Path
from pathlib import Path
import typing as T
import subprocess, os

@ -28,7 +28,7 @@ import os
import re
import subprocess
import typing as T
from ..._pathlib import Path
from pathlib import Path
from ... import arglist
from ... import mesonlib

@ -16,7 +16,7 @@
import typing as T
import os
from ..._pathlib import Path
from pathlib import Path
from ..compilers import clike_debug_args, clike_optimization_args

@ -16,7 +16,7 @@ from . import mlog, mparser
import pickle, os, uuid
import sys
from itertools import chain
from ._pathlib import PurePath
from pathlib import PurePath
from collections import OrderedDict, defaultdict
from .mesonlib import (
MesonException, EnvironmentException, MachineChoice, PerMachine,

@ -27,7 +27,7 @@ import textwrap
import platform
import typing as T
from enum import Enum
from .._pathlib import Path, PurePath
from pathlib import Path, PurePath
from .. import mlog
from .. import mesonlib

@ -16,7 +16,7 @@ import os
import re
import functools
import typing as T
from .._pathlib import Path
from pathlib import Path
from .. import mlog
from .. import mesonlib

@ -16,7 +16,7 @@ import glob
import re
import os
import typing as T
from .._pathlib import Path
from pathlib import Path
from .. import mlog
from .. import mesonlib

@ -19,7 +19,7 @@ import os
import re
import shutil
import subprocess
from .._pathlib import Path
from pathlib import Path
from ..mesonlib import OrderedSet, join_args
from .base import (

@ -14,7 +14,7 @@
# This file contains the detection logic for miscellaneous external dependencies.
from .._pathlib import Path
from pathlib import Path
import functools
import re
import sysconfig

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from .._pathlib import Path
from pathlib import Path
import functools
import os
import typing as T

@ -19,7 +19,7 @@ from enum import Enum
from . import mesonlib
from .mesonlib import EnvironmentException, MachineChoice, PerMachine, split_args
from . import mlog
from ._pathlib import Path
from pathlib import Path
_T = T.TypeVar('_T')

@ -36,7 +36,7 @@ from .modules import ModuleReturnValue, ExtensionModule
from .cmake import CMakeInterpreter
from .backend.backends import TestProtocol, Backend
from ._pathlib import Path, PurePath
from pathlib import Path, PurePath
import os
import shutil
import uuid

@ -21,7 +21,7 @@ import sys
import shutil
import typing as T
from collections import defaultdict
from ._pathlib import Path
from pathlib import Path
from . import mlog
from . import mesonlib

@ -21,7 +21,7 @@ import subprocess
import hashlib
import json
from glob import glob
from ._pathlib import Path
from pathlib import Path
from mesonbuild.environment import detect_ninja
from mesonbuild.mesonlib import windows_proof_rmtree, MesonException
from mesonbuild.wrap import wrap

@ -20,7 +20,7 @@
# TODO: Remember to remove this also from tools/gen_data.py
from ._pathlib import Path
from pathlib import Path
import typing as T
if T.TYPE_CHECKING:

@ -13,7 +13,7 @@
# limitations under the License.
"""A library of random helper functionality."""
from ._pathlib import Path
from pathlib import Path
import sys
import stat
import time

@ -14,7 +14,7 @@
"""Code that creates simple startup projects."""
from ._pathlib import Path
from pathlib import Path
from enum import Enum
import subprocess
import shutil

@ -28,7 +28,7 @@ from . import mlog
from .backend import backends
from .mparser import BaseNode, FunctionNode, ArrayNode, ArgumentNode, StringNode
from .interpreter import Interpreter
from ._pathlib import Path, PurePath
from pathlib import Path, PurePath
import typing as T
import os
import argparse

@ -19,7 +19,7 @@ import time
import platform
import typing as T
from contextlib import contextmanager
from ._pathlib import Path
from pathlib import Path
"""This is (mostly) a standalone module used to write logging
information about Meson runs. Some output goes to screen,

@ -14,7 +14,7 @@
import typing as T
import hashlib
from .._pathlib import Path, PurePath, PureWindowsPath
from pathlib import Path, PurePath, PureWindowsPath
from .. import mlog
from . import ExtensionModule

@ -13,7 +13,7 @@
# limitations under the License.
import os, types
from .._pathlib import PurePath
from pathlib import PurePath
from .. import build
from .. import dependencies

@ -17,7 +17,7 @@ import json
import shutil
import typing as T
from .._pathlib import Path
from pathlib import Path
from .. import mesonlib
from ..mesonlib import MachineChoice, MesonException
from . import ExtensionModule

@ -13,7 +13,7 @@
# limitations under the License.
import os, subprocess, shlex
from .._pathlib import Path
from pathlib import Path
import typing as T
from . import ExtensionModule, ModuleReturnValue

@ -1,6 +1,6 @@
import os, subprocess
import argparse
from ._pathlib import Path
from pathlib import Path
from . import mlog
from .mesonlib import quiet_git, verbose_git, GitException, Popen_safe, MesonException, windows_proof_rmtree

@ -14,7 +14,7 @@
# A tool to run tests in many different ways.
from ._pathlib import Path
from pathlib import Path
from collections import deque, namedtuple
from copy import deepcopy
import argparse

@ -28,7 +28,7 @@ import configparser
import typing as T
import textwrap
from .._pathlib import Path
from pathlib import Path
from . import WrapMode
from .. import coredata
from ..mesonlib import quiet_git, GIT, ProgressBar, MesonException

@ -19,7 +19,7 @@ import tempfile
import unittest
import subprocess
import zipapp
from mesonbuild._pathlib import Path
from pathlib import Path
from mesonbuild.mesonlib import windows_proof_rmtree, python_command, is_windows
from mesonbuild.coredata import version as meson_version

@ -15,7 +15,6 @@ modules = [
'mesonbuild/wrap',
# specific files
'mesonbuild/_pathlib.py',
'mesonbuild/arglist.py',
# 'mesonbuild/coredata.py',
'mesonbuild/dependencies/boost.py',

@ -17,7 +17,7 @@
from concurrent.futures import ProcessPoolExecutor, CancelledError
from enum import Enum
from io import StringIO
from mesonbuild._pathlib import Path, PurePath
from pathlib import Path, PurePath
import argparse
import functools
import itertools

@ -25,7 +25,7 @@ import argparse
from io import StringIO
from enum import Enum
from glob import glob
from mesonbuild._pathlib import Path
from pathlib import Path
from unittest import mock
from mesonbuild import compilers
from mesonbuild import dependencies

@ -40,7 +40,7 @@ from unittest import mock
from configparser import ConfigParser
from contextlib import contextmanager
from glob import glob
from mesonbuild._pathlib import (PurePath, Path)
from pathlib import (PurePath, Path)
from distutils.dir_util import copy_tree
import typing as T

@ -79,7 +79,7 @@ def main() -> int:
# TODO: Remember to remove this also from tools/gen_data.py
from ._pathlib import Path
from pathlib import Path
import typing as T
if T.TYPE_CHECKING:

Loading…
Cancel
Save