summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorMarius Bakke <marius@gnu.org>2022-08-15 22:13:53 +0200
committerMarius Bakke <marius@gnu.org>2022-08-16 00:43:43 +0200
commit7e0116740b8d93ccd0d6d760dc89cbdc65598119 (patch)
tree33fb20c709df18158ce0b9213d022cd20a0295d3 /gnu
parent1e969dafb7d004ae3405cc2de3669e1c97000ce0 (diff)
downloadguix-7e0116740b8d93ccd0d6d760dc89cbdc65598119.tar.gz
gnu: python-mypy: Update to 0.971.
* gnu/packages/patches/python-mypy-12332.patch,
gnu/packages/patches/python-mypy-use-sys-path.patch: Delete files.
* gnu/local.mk (dist_patch_DATA): Adjust accordingly.
* gnu/packages/python-check.scm (python-mypy): Update to 0.971.
[source](patches): Remove.
[arguments]: Skip one test.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/local.mk2
-rw-r--r--gnu/packages/patches/python-mypy-12332.patch68
-rw-r--r--gnu/packages/patches/python-mypy-use-sys-path.patch130
-rw-r--r--gnu/packages/python-check.scm12
4 files changed, 6 insertions, 206 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 882b13420b..4e4ad908ce 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1731,8 +1731,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-versioneer-guix-support.patch	\
   %D%/packages/patches/python-waitress-fix-tests.patch		\
   %D%/packages/patches/python-werkzeug-tests.patch		\
-  %D%/packages/patches/python-mypy-12332.patch			\
-  %D%/packages/patches/python-mypy-use-sys-path.patch		\
   %D%/packages/patches/python-zeep-Fix-pytest_httpx-test-cases.patch	\
   %D%/packages/patches/qemu-build-info-manual.patch		\
   %D%/packages/patches/qemu-glibc-2.27.patch 			\
diff --git a/gnu/packages/patches/python-mypy-12332.patch b/gnu/packages/patches/python-mypy-12332.patch
deleted file mode 100644
index d43cf42ed1..0000000000
--- a/gnu/packages/patches/python-mypy-12332.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 518c864805dd93e62d59439e665a0ce9d6778419 Mon Sep 17 00:00:00 2001
-From: Ekin Dursun <ekindursun@gmail.com>
-Date: Thu, 10 Mar 2022 22:06:48 +0300
-Subject: [PATCH] mypyc: Fix overflow in id function (CPyTagged_Id)
-
-In CPython, the id of an object is its address. It's computed by
-converting the pointer to an unsigned integer (PyLong_FromVoidPtr). A
-similar logic is present here, pointer is converted to a Py_ssize_t and
-CPyTagged_FromSsize_t is called with that integer.
-
-There is a problem with that approach: Py_ssize_t cannot hold every
-pointer value. Sometimes overflow happens and CPyTagged_FromSsize_t is
-called with a negative integer.
-
-With the new approach, the number is checked: If it fits in a
-Py_ssize_t, CPyTagged_FromSsize_t is called. If not, it is directly
-converted to a PyObject using PyLong_FromVoidPtr.
----
- mypyc/lib-rt/CPy.h      | 1 +
- mypyc/lib-rt/int_ops.c  | 9 +++++++++
- mypyc/lib-rt/misc_ops.c | 2 +-
- 3 files changed, 11 insertions(+), 1 deletion(-)
-
-diff --git a/mypyc/lib-rt/CPy.h b/mypyc/lib-rt/CPy.h
-index 987819154ab..9f5ae52d4e4 100644
---- a/mypyc/lib-rt/CPy.h
-+++ b/mypyc/lib-rt/CPy.h
-@@ -121,6 +121,7 @@ static inline size_t CPy_FindAttrOffset(PyTypeObject *trait, CPyVTableItem *vtab
- 
- 
- CPyTagged CPyTagged_FromSsize_t(Py_ssize_t value);
-+CPyTagged CPyTagged_FromVoidPtr(void *ptr);
- CPyTagged CPyTagged_FromObject(PyObject *object);
- CPyTagged CPyTagged_StealFromObject(PyObject *object);
- CPyTagged CPyTagged_BorrowFromObject(PyObject *object);
-diff --git a/mypyc/lib-rt/int_ops.c b/mypyc/lib-rt/int_ops.c
-index 1275f2c1057..edf06314161 100644
---- a/mypyc/lib-rt/int_ops.c
-+++ b/mypyc/lib-rt/int_ops.c
-@@ -26,6 +26,15 @@ CPyTagged CPyTagged_FromSsize_t(Py_ssize_t value) {
-     }
- }
- 
-+CPyTagged CPyTagged_FromVoidPtr(void *ptr) {
-+    if ((uintptr_t)ptr > PY_SSIZE_T_MAX) {
-+        PyObject *object = PyLong_FromVoidPtr(ptr);
-+        return ((CPyTagged)object) | CPY_INT_TAG;
-+    } else {
-+        return CPyTagged_FromSsize_t((Py_ssize_t)ptr);
-+    }
-+}
-+
- CPyTagged CPyTagged_FromObject(PyObject *object) {
-     int overflow;
-     // The overflow check knows about CPyTagged's width
-diff --git a/mypyc/lib-rt/misc_ops.c b/mypyc/lib-rt/misc_ops.c
-index cebd1cf997f..dcce89d9072 100644
---- a/mypyc/lib-rt/misc_ops.c
-+++ b/mypyc/lib-rt/misc_ops.c
-@@ -437,7 +437,7 @@ CPyPickle_GetState(PyObject *obj)
- }
- 
- CPyTagged CPyTagged_Id(PyObject *o) {
--    return CPyTagged_FromSsize_t((Py_ssize_t)o);
-+    return CPyTagged_FromVoidPtr(o);
- }
- 
- #define MAX_INT_CHARS 22
diff --git a/gnu/packages/patches/python-mypy-use-sys-path.patch b/gnu/packages/patches/python-mypy-use-sys-path.patch
deleted file mode 100644
index 1b12526456..0000000000
--- a/gnu/packages/patches/python-mypy-use-sys-path.patch
+++ /dev/null
@@ -1,130 +0,0 @@
-This patch fixes the annotation files search of mypy on non-FHS distributions.
-
-Submitted upstream: https://github.com/python/mypy/pull/12530
-
-diff --git a/mypy/main.py b/mypy/main.py
-index 3d9836587..f9b0cbd39 100644
---- a/mypy/main.py
-+++ b/mypy/main.py
-@@ -1033,10 +1033,10 @@ def process_options(args: List[str],
-     # Set target.
-     if special_opts.modules + special_opts.packages:
-         options.build_type = BuildType.MODULE
--        egg_dirs, site_packages = get_site_packages_dirs(options.python_executable)
-+        site_packages = get_site_packages_dirs(options.python_executable)
-         search_paths = SearchPaths((os.getcwd(),),
-                                    tuple(mypy_path() + options.mypy_path),
--                                   tuple(egg_dirs + site_packages),
-+                                   tuple(site_packages),
-                                    ())
-         targets = []
-         # TODO: use the same cache that the BuildManager will
-diff --git a/mypy/modulefinder.py b/mypy/modulefinder.py
-index 94d2dd34c..337a2d59b 100644
---- a/mypy/modulefinder.py
-+++ b/mypy/modulefinder.py
-@@ -629,7 +629,7 @@ def get_prefixes(python_executable: Optional[str]) -> Tuple[str, str]:
- 
- 
- @functools.lru_cache(maxsize=None)
--def get_site_packages_dirs(python_executable: Optional[str]) -> Tuple[List[str], List[str]]:
-+def get_site_packages_dirs(python_executable: Optional[str]) -> List[str]:
-     """Find package directories for given python.
- 
-     This runs a subprocess call, which generates a list of the egg directories, and the site
-@@ -648,51 +648,7 @@ def get_site_packages_dirs(python_executable: Optional[str]) -> Tuple[List[str],
-         site_packages = ast.literal_eval(
-             subprocess.check_output([python_executable, pyinfo.__file__, 'getsitepackages'],
-             stderr=subprocess.PIPE).decode())
--    return expand_site_packages(site_packages)
--
--
--def expand_site_packages(site_packages: List[str]) -> Tuple[List[str], List[str]]:
--    """Expands .pth imports in site-packages directories"""
--    egg_dirs: List[str] = []
--    for dir in site_packages:
--        if not os.path.isdir(dir):
--            continue
--        pth_filenames = sorted(name for name in os.listdir(dir) if name.endswith(".pth"))
--        for pth_filename in pth_filenames:
--            egg_dirs.extend(_parse_pth_file(dir, pth_filename))
--
--    return egg_dirs, site_packages
--
--
--def _parse_pth_file(dir: str, pth_filename: str) -> Iterator[str]:
--    """
--    Mimics a subset of .pth import hook from Lib/site.py
--    See https://github.com/python/cpython/blob/3.5/Lib/site.py#L146-L185
--    """
--
--    pth_file = os.path.join(dir, pth_filename)
--    try:
--        f = open(pth_file, "r")
--    except OSError:
--        return
--    with f:
--        for line in f.readlines():
--            if line.startswith("#"):
--                # Skip comment lines
--                continue
--            if line.startswith(("import ", "import\t")):
--                # import statements in .pth files are not supported
--                continue
--
--            yield _make_abspath(line.rstrip(), dir)
--
--
--def _make_abspath(path: str, root: str) -> str:
--    """Take a path and make it absolute relative to root if not already absolute."""
--    if os.path.isabs(path):
--        return os.path.normpath(path)
--    else:
--        return os.path.join(root, os.path.normpath(path))
-+    return site_packages
- 
- 
- def add_py2_mypypath_entries(mypypath: List[str]) -> List[str]:
-@@ -781,7 +737,7 @@ def compute_search_paths(sources: List[BuildSource],
-     if options.python_version[0] == 2:
-         mypypath = add_py2_mypypath_entries(mypypath)
- 
--    egg_dirs, site_packages = get_site_packages_dirs(options.python_executable)
-+    site_packages = get_site_packages_dirs(options.python_executable)
-     base_prefix, prefix = get_prefixes(options.python_executable)
-     is_venv = base_prefix != prefix
-     for site_dir in site_packages:
-@@ -801,7 +757,7 @@ def compute_search_paths(sources: List[BuildSource],
- 
-     return SearchPaths(python_path=tuple(reversed(python_path)),
-                        mypy_path=tuple(mypypath),
--                       package_path=tuple(egg_dirs + site_packages),
-+                       package_path=tuple(site_packages),
-                        typeshed_path=tuple(lib_path))
- 
- 
-diff --git a/mypy/pyinfo.py b/mypy/pyinfo.py
-index ab2d3286b..9fb0501a1 100644
---- a/mypy/pyinfo.py
-+++ b/mypy/pyinfo.py
-@@ -24,16 +24,11 @@ def getprefixes():
- 
- def getsitepackages():
-     # type: () -> List[str]
--    res = []
--    if hasattr(site, 'getsitepackages'):
--        res.extend(site.getsitepackages())
- 
--        if hasattr(site, 'getusersitepackages') and site.ENABLE_USER_SITE:
--            res.insert(0, site.getusersitepackages())
--    else:
--        from distutils.sysconfig import get_python_lib
--        res = [get_python_lib()]
--    return res
-+    # Simply return sys.path, which has already been expanded
-+    # correctly via Python's site.py module, which takes care of .pth,
-+    # sitecustomize.py files, etc.
-+    return sys.path
- 
- 
- if __name__ == '__main__':
diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index e196f2eccb..7cc266fbce 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -1771,7 +1771,7 @@ supported by the MyPy typechecker.")
 (define-public python-mypy
   (package
     (name "python-mypy")
-    (version "0.942")
+    (version "0.971")
     (source
      (origin
        ;; Because of https://github.com/python/mypy/issues/9584, the
@@ -1788,10 +1788,7 @@ supported by the MyPy typechecker.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0hxnrqhvskiclwfj2s4gyfclzjas1dvpfxhyng8v7mq38rqps1j5"))
-       (patches
-        (search-patches "python-mypy-12332.patch"
-                        "python-mypy-use-sys-path.patch"))))
+         "0i8swdynms1wpiprgqn24za6mx8rlgxr2jash3cb5xi8jyf58n97"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -1799,7 +1796,10 @@ supported by the MyPy typechecker.")
          (replace 'check
            (lambda* (#:key tests? #:allow-other-keys)
              (when tests?
-               (invoke "pytest" "mypyc")))))))
+               (invoke "pytest" "-vv" "mypyc"
+                       ;; XXX: This test gets an unexpected DeprecationWarning
+                       ;; from recent versions of setuptools.  Ignore for now.
+                       "-k" "not testImports")))))))
     (native-inputs
      (list python-attrs
            python-lxml