[med-svn] [Git][python-team/packages/mypy][debian/experimental] 11 commits: New upstream version 1.15.0

Michael R. Crusoe (@crusoe) gitlab at salsa.debian.org
Mon Feb 17 19:19:44 GMT 2025



Michael R. Crusoe pushed to branch debian/experimental at Debian Python Team / packages / mypy


Commits:
5092ea33 by Michael R. Crusoe at 2025-02-05T08:49:51+01:00
New upstream version 1.15.0
- - - - -
60731498 by Michael R. Crusoe at 2025-02-05T08:49:51+01:00
New upstream version

- - - - -
40c31bc0 by Michael R. Crusoe at 2025-02-05T08:50:04+01:00
Update upstream source from tag 'upstream/1.15.0'

Update to upstream version '1.15.0'
with Debian dir 084441bdbfb9ea9dea70d1ea8994e85abb2f0e60
- - - - -
8309ae0e by Michael R. Crusoe at 2025-02-05T10:30:44+01:00
routine-update: Ready to upload to unstable

- - - - -
36a3c98d by Mattias Ellert at 2025-02-11T16:07:22+01:00
Non-maintainer upload.
d/patches/gnu-hurd-getsockname: Address failing tests on GNU/Hurd
- https://github.com/python/mypy/pull/18630
(Closes: #1095420)
d/rules: Fix x32 build by using multifile option
d/rules: Use multifile option for all architectures that require reduced
memory usage during compilation for consistency
- i386 was using reduced the debug level instead
- hurd-i386 was using both, which was an overkill
- x32 was intending to use reduced debug level, but DEB_HOST_ARCH_CPU
  on x32 is amd64 so the filter did not match

- - - - -
f26e1c46 by Michael R. Crusoe at 2025-02-11T16:08:45+01:00
accept patch and fix from Matties and upload to unstable

- - - - -
fc5c6781 by Mattias Ellert at 2025-02-17T08:22:08+01:00
Non-maintainer upload.
Add hurd-amd64 to list of architectures that use the multifile option

- - - - -
d1799e72 by Michael R. Crusoe at 2025-02-17T11:34:28+00:00
Merge branch 'hurd-amd64-multifile' into 'master'

Add hurd-amd64 to list of architectures that use the multifile option

See merge request python-team/packages/mypy!6
- - - - -
7bb6b9a6 by Michael R. Crusoe at 2025-02-17T19:30:43+01:00
turn proposed NMU into a regular upload

- - - - -
f83bcca1 by Michael R. Crusoe at 2025-02-17T20:16:35+01:00
Added patch to fix the Python3.12 build with gcc-15. Closes: #1097426

- - - - -
15601d33 by Michael R. Crusoe at 2025-02-17T20:17:28+01:00
DO NOT MERGE, build with GCC-15 from experimental

- - - - -


20 changed files:

- CHANGELOG.md
- PKG-INFO
- debian/changelog
- debian/control
- + debian/patches/0005-pythoncapi_compat-don-t-define-Py_NULL-if-it-is-alre.patch
- + debian/patches/gnu-hurd-getsockname
- debian/patches/hint-typeshed-package
- debian/patches/intersphinx
- debian/patches/series
- debian/patches/verbose
- debian/rules
- mypy.egg-info/PKG-INFO
- mypy/checker.py
- mypy/type_visitor.py
- mypy/version.py
- test-data/unit/check-incremental.test
- test-data/unit/check-inference.test
- test-data/unit/check-literal.test
- test-data/unit/fixtures/primitives.pyi
- test-data/unit/fixtures/tuple.pyi


Changes:

=====================================
CHANGELOG.md
=====================================
@@ -1,20 +1,35 @@
 # Mypy Release Notes
 
-## Next release
+## Next Release
 
-### Performance improvements
+...
+
+## Mypy 1.15
+
+We’ve just uploaded mypy 1.15 to the Python Package Index ([PyPI](https://pypi.org/project/mypy/)).
+Mypy is a static type checker for Python. This release includes new features, performance
+improvements and bug fixes. You can install it as follows:
+
+    python3 -m pip install -U mypy
+
+You can read the full documentation for this release on [Read the Docs](http://mypy.readthedocs.io).
+
+### Performance Improvements
 
-Mypy may be 5-30% faster. This improvement comes largely from tuning the performance of the
-garbage collector.
+Mypy is up to 40% faster in some use cases. This improvement comes largely from tuning the performance
+of the garbage collector. Additionally, the release includes several micro-optimizations that may
+be impactful for large projects.
 
-Contributed by Jukka Lehtosalo (PR [18306](https://github.com/python/mypy/pull/18306)).
+Contributed by Jukka Lehtosalo (PR [18306](https://github.com/python/mypy/pull/18306),
+PR [18302](https://github.com/python/mypy/pull/18302, PR [18298](https://github.com/python/mypy/pull/18298,
+PR [18299](https://github.com/python/mypy/pull/18299).
 
-### Mypyc accelerated mypy wheels for aarch64
+### Mypyc Accelerated Mypy Wheels for ARM Linux
 
-Mypy can compile itself to C extension modules using mypyc. This makes mypy 3-5x faster
-than if mypy is interpreted with pure Python. We now build and upload mypyc accelerated
-mypy wheels for `manylinux_aarch64` to PyPI, making it easy for users on such platforms
-to realise this speedup.
+For best performance, mypy can be compiled to C extension modules using mypyc. This makes
+mypy 3-5x faster than when interpreted with pure Python. We now build and upload mypyc
+accelerated mypy wheels for `manylinux_aarch64` to PyPI, making it easy for Linux users on
+ARM platforms to realise this speedup -- just `pip install` the latest mypy.
 
 Contributed by Christian Bundy and Marc Mueller
 (PR [mypy_mypyc-wheels#76](https://github.com/mypyc/mypy_mypyc-wheels/pull/76),
@@ -22,26 +37,27 @@ PR [mypy_mypyc-wheels#89](https://github.com/mypyc/mypy_mypyc-wheels/pull/89)).
 
 ### `--strict-bytes`
 
-By default, mypy treats an annotation of ``bytes`` as permitting ``bytearray`` and ``memoryview``.
-[PEP 688](https://peps.python.org/pep-0688) specified the removal of this special case.
-Use this flag to disable this behavior. `--strict-bytes` will be enabled by default in **mypy 2.0**.
+By default, mypy treats `bytearray` and `memoryview` values as assignable to the `bytes`
+type, for historical reasons. Use the `--strict-bytes` flag to disable this
+behavior. [PEP 688](https://peps.python.org/pep-0688) specified the removal of this
+special case. The flag will be enabled by default in **mypy 2.0**.
 
-Contributed by Ali Hamdan (PR [18137](https://github.com/python/mypy/pull/18263/)) and
+Contributed by Ali Hamdan (PR [18263](https://github.com/python/mypy/pull/18263)) and
 Shantanu Jain (PR [13952](https://github.com/python/mypy/pull/13952)).
 
-### Improvements to reachability analysis and partial type handling in loops
+### Improvements to Reachability Analysis and Partial Type Handling in Loops
 
-This change results in mypy better modelling control flow within loops and hence detecting several
-issues it previously did not detect. In some cases, this change may require use of an additional
-explicit annotation of a variable.
+This change results in mypy better modelling control flow within loops and hence detecting
+several previously ignored issues. In some cases, this change may require additional
+explicit variable annotations.
 
 Contributed by Christoph Tyralla (PR [18180](https://github.com/python/mypy/pull/18180),
-[PR](https://github.com/python/mypy/pull/18433)).
+PR [18433](https://github.com/python/mypy/pull/18433)).
 
-(Speaking of partial types, another reminder that mypy plans on enabling `--local-partial-types`
-by default in **mypy 2.0**).
+(Speaking of partial types, remember that we plan to enable `--local-partial-types`
+by default in **mypy 2.0**.)
 
-### Better discovery of configuration files
+### Better Discovery of Configuration Files
 
 Mypy will now walk up the filesystem (up until a repository or file system root) to discover
 configuration files. See the
@@ -49,12 +65,12 @@ configuration files. See the
 for more details.
 
 Contributed by Mikhail Shiryaev and Shantanu Jain
-(PR [16965](https://github.com/python/mypy/pull/16965), PR [18482](https://github.com/python/mypy/pull/18482)
+(PR [16965](https://github.com/python/mypy/pull/16965), PR [18482](https://github.com/python/mypy/pull/18482))
 
-### Better line numbers for decorators and slice expressions
+### Better Line Numbers for Decorators and Slice Expressions
 
-Mypy now uses more correct line numbers for decorators and slice expressions. In some cases, this
-may necessitate changing the location of a `# type: ignore` comment.
+Mypy now uses more correct line numbers for decorators and slice expressions. In some cases,
+you may have to change the location of a `# type: ignore` comment.
 
 Contributed by Shantanu Jain (PR [18392](https://github.com/python/mypy/pull/18392),
 PR [18397](https://github.com/python/mypy/pull/18397)).
@@ -68,6 +84,103 @@ Support for this will be dropped in the first half of 2025!
 
 Contributed by Marc Mueller (PR [17492](https://github.com/python/mypy/pull/17492)).
 
+### Mypyc Improvements
+
+ * Fix `__init__` for classes with `@attr.s(slots=True)` (Advait Dixit, PR [18447](https://github.com/python/mypy/pull/18447))
+ * Report error for nested class instead of crashing (Valentin Stanciu, PR [18460](https://github.com/python/mypy/pull/18460))
+ * Fix `InitVar` for dataclasses (Advait Dixit, PR [18319](https://github.com/python/mypy/pull/18319))
+ * Remove unnecessary mypyc files from wheels (Marc Mueller, PR [18416](https://github.com/python/mypy/pull/18416))
+ * Fix issues with relative imports (Advait Dixit, PR [18286](https://github.com/python/mypy/pull/18286))
+ * Add faster primitive for some list get item operations (Jukka Lehtosalo, PR [18136](https://github.com/python/mypy/pull/18136))
+ * Fix iteration over `NamedTuple` objects (Advait Dixit, PR [18254](https://github.com/python/mypy/pull/18254))
+ * Mark mypyc package with `py.typed` (bzoracler, PR [18253](https://github.com/python/mypy/pull/18253))
+ * Fix list index while checking for `Enum` class (Advait Dixit, PR [18426](https://github.com/python/mypy/pull/18426))
+
+### Stubgen Improvements
+
+ * Improve dataclass init signatures (Marc Mueller, PR [18430](https://github.com/python/mypy/pull/18430))
+ * Preserve `dataclass_transform` decorator (Marc Mueller, PR [18418](https://github.com/python/mypy/pull/18418))
+ * Fix `UnpackType` for 3.11+ (Marc Mueller, PR [18421](https://github.com/python/mypy/pull/18421))
+ * Improve `self` annotations (Marc Mueller, PR [18420](https://github.com/python/mypy/pull/18420))
+ * Print `InspectError` traceback in stubgen `walk_packages` when verbose is specified (Gareth, PR [18224](https://github.com/python/mypy/pull/18224))
+
+### Stubtest Improvements
+
+ * Fix crash with numpy array default values (Ali Hamdan, PR [18353](https://github.com/python/mypy/pull/18353))
+ * Distinguish metaclass attributes from class attributes (Stephen Morton, PR [18314](https://github.com/python/mypy/pull/18314))
+
+### Fixes to Crashes
+
+ * Prevent crash with `Unpack` of a fixed tuple in PEP695 type alias (Stanislav Terliakov, PR [18451](https://github.com/python/mypy/pull/18451))
+ * Fix crash with `--cache-fine-grained --cache-dir=/dev/null` (Shantanu, PR [18457](https://github.com/python/mypy/pull/18457))
+ * Prevent crashing when `match` arms use name of existing callable (Stanislav Terliakov, PR [18449](https://github.com/python/mypy/pull/18449))
+ * Gracefully handle encoding errors when writing to stdout (Brian Schubert, PR [18292](https://github.com/python/mypy/pull/18292))
+ * Prevent crash on generic NamedTuple with unresolved typevar bound (Stanislav Terliakov, PR [18585](https://github.com/python/mypy/pull/18585))
+
+### Documentation Updates
+
+ * Add inline tabs to documentation (Marc Mueller, PR [18262](https://github.com/python/mypy/pull/18262))
+ * Document any `TYPE_CHECKING` name works (Shantanu, PR [18443](https://github.com/python/mypy/pull/18443))
+ * Update documentation to not mention 3.8 where possible (sobolevn, PR [18455](https://github.com/python/mypy/pull/18455))
+ * Mention `ignore_errors` in exclude documentation (Shantanu, PR [18412](https://github.com/python/mypy/pull/18412))
+ * Add `Self` misuse to common issues (Shantanu, PR [18261](https://github.com/python/mypy/pull/18261))
+
+### Other Notable Fixes and Improvements
+
+ * Fix literal context for ternary expressions (Ivan Levkivskyi, PR [18545](https://github.com/python/mypy/pull/18545))
+ * Ignore `dataclass.__replace__` LSP violations (Marc Mueller, PR [18464](https://github.com/python/mypy/pull/18464))
+ * Bind `self` to the class being defined when checking multiple inheritance (Stanislav Terliakov, PR [18465](https://github.com/python/mypy/pull/18465))
+ * Fix attribute type resolution with multiple inheritance (Stanislav Terliakov, PR [18415](https://github.com/python/mypy/pull/18415))
+ * Improve security of our GitHub Actions (sobolevn, PR [18413](https://github.com/python/mypy/pull/18413))
+ * Unwrap `type[Union[...]]` when solving type variable constraints (Stanislav Terliakov, PR [18266](https://github.com/python/mypy/pull/18266))
+ * Allow `Any` to match sequence patterns in match/case (Stanislav Terliakov, PR [18448](https://github.com/python/mypy/pull/18448))
+ * Fix parent generics mapping when overriding generic attribute with property (Stanislav Terliakov, PR [18441](https://github.com/python/mypy/pull/18441))
+ * Add dedicated error code for explicit `Any` (Shantanu, PR [18398](https://github.com/python/mypy/pull/18398))
+ * Reject invalid `ParamSpec` locations (Stanislav Terliakov, PR [18278](https://github.com/python/mypy/pull/18278))
+ * Stop suggesting stubs that have been removed from typeshed (Shantanu, PR [18373](https://github.com/python/mypy/pull/18373))
+ * Allow inverting `--local-partial-types` (Shantanu, PR [18377](https://github.com/python/mypy/pull/18377))
+ * Allow to use `Final` and `ClassVar` after Python 3.13 (정승원, PR [18358](https://github.com/python/mypy/pull/18358))
+ * Update suggestions to include latest stubs in typeshed (Shantanu, PR [18366](https://github.com/python/mypy/pull/18366))
+ * Fix `--install-types` masking failure details (wyattscarpenter, PR [17485](https://github.com/python/mypy/pull/17485))
+ * Reject promotions when checking against protocols (Christoph Tyralla, PR [18360](https://github.com/python/mypy/pull/18360))
+ * Don't erase type object arguments in diagnostics (Shantanu, PR [18352](https://github.com/python/mypy/pull/18352))
+ * Clarify status in `dmypy status` output (Kcornw, PR [18331](https://github.com/python/mypy/pull/18331))
+ * Disallow no-argument generic aliases when using PEP 613 explicit aliases (Brian Schubert, PR [18173](https://github.com/python/mypy/pull/18173))
+ * Suppress errors for unreachable branches in conditional expressions (Brian Schubert, PR [18295](https://github.com/python/mypy/pull/18295))
+ * Do not allow `ClassVar` and `Final` in `TypedDict` and `NamedTuple` (sobolevn, PR [18281](https://github.com/python/mypy/pull/18281))
+ * Report error if not enough or too many types provided to `TypeAliasType` (bzoracler, PR [18308](https://github.com/python/mypy/pull/18308))
+ * Use more precise context for `TypedDict` plugin errors (Brian Schubert, PR [18293](https://github.com/python/mypy/pull/18293))
+ * Use more precise context for invalid type argument errors (Brian Schubert, PR [18290](https://github.com/python/mypy/pull/18290))
+ * Do not allow `type[]` to contain `Literal` types (sobolevn, PR [18276](https://github.com/python/mypy/pull/18276))
+ * Allow bytearray/bytes comparisons with `--strict-bytes` (Jukka Lehtosalo, PR [18255](https://github.com/python/mypy/pull/18255))
+
+### Acknowledgements
+
+Thanks to all mypy contributors who contributed to this release:
+
+- Advait Dixit
+- Ali Hamdan
+- Brian Schubert
+- bzoracler
+- Cameron Matsui
+- Christoph Tyralla
+- Gareth
+- Ivan Levkivskyi
+- Jukka Lehtosalo
+- Kcornw
+- Marc Mueller
+- Mikhail f. Shiryaev
+- Shantanu
+- sobolevn
+- Stanislav Terliakov
+- Stephen Morton
+- Valentin Stanciu
+- Viktor Szépe
+- wyattscarpenter
+- 정승원
+
+I’d also like to thank my employer, Dropbox, for supporting mypy development.
+
 ## Mypy 1.14
 
 We’ve just uploaded mypy 1.14 to the Python Package Index ([PyPI](https://pypi.org/project/mypy/)).


=====================================
PKG-INFO
=====================================
@@ -1,6 +1,6 @@
 Metadata-Version: 2.2
 Name: mypy
-Version: 1.15.0+dev.23d862dd6fbb905a69bcb31e88746dc7a1eb4a43
+Version: 1.15.0
 Summary: Optional static typing for Python
 Author-email: Jukka Lehtosalo <jukka.lehtosalo at iki.fi>
 License: MIT


=====================================
debian/changelog
=====================================
@@ -1,3 +1,36 @@
+mypy (1.15.0-3) UNRELEASED; urgency=medium
+
+  [ Mattias Ellert ]
+  * Add hurd-amd64 to list of architectures that use the multifile option
+
+  [ Michael R. Crusoe ]
+  * Added patch to fix the Python3.12 build with gcc-15. Closes:
+    #1097426
+
+ -- Michael R. Crusoe <crusoe at debian.org>  Mon, 17 Feb 2025 19:30:11 +0100
+
+mypy (1.15.0-2) unstable; urgency=medium
+
+  [ Mattias Ellert ]
+  * d/patches/gnu-hurd-getsockname: Address failing tests on GNU/Hurd
+    - https://github.com/python/mypy/pull/18630
+    (Closes: #1095420)
+  * d/rules: Fix x32 build by using multifile option
+  * d/rules: Use multifile option for all architectures that require reduced
+    memory usage during compilation for consistency
+    - i386 was using reduced the debug level instead
+    - hurd-i386 was using both, which was an overkill
+    - x32 was intending to use reduced debug level, but DEB_HOST_ARCH_CPU
+      on x32 is amd64 so the filter did not match
+
+ -- Michael R. Crusoe <crusoe at debian.org>  Tue, 11 Feb 2025 16:07:42 +0100
+
+mypy (1.15.0-1) unstable; urgency=medium
+
+  * New upstream version
+
+ -- Michael R. Crusoe <crusoe at debian.org>  Wed, 05 Feb 2025 08:50:46 +0100
+
 mypy (1.15~rc0.2-1) experimental; urgency=medium
 
   * d/rules: added a build profile extension: pkg.mypy.multifile to speed up


=====================================
debian/control
=====================================
@@ -5,6 +5,7 @@ Section: utils
 Testsuite: autopkgtest-pkg-python
 Priority: optional
 Build-Depends: debhelper-compat (= 13),
+               gcc (>= 4:15.0.0),
                dh-sequence-python3,
                dh-sequence-sphinxdoc <!nodoc>,
                python3-setuptools,


=====================================
debian/patches/0005-pythoncapi_compat-don-t-define-Py_NULL-if-it-is-alre.patch
=====================================
@@ -0,0 +1,28 @@
+From: "Michael R. Crusoe" <crusoe at debian.org>
+Date: Mon, 17 Feb 2025 19:40:07 +0100
+Subject: pythoncapi_compat: don't define Py_NULL if it is already defined
+
+---
+ mypyc/lib-rt/pythoncapi_compat.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/mypyc/lib-rt/pythoncapi_compat.h b/mypyc/lib-rt/pythoncapi_compat.h
+index cee282d..c49af7a 100644
+--- a/mypyc/lib-rt/pythoncapi_compat.h
++++ b/mypyc/lib-rt/pythoncapi_compat.h
+@@ -33,6 +33,7 @@ extern "C" {
+ #  define _Py_CAST(type, expr) ((type)(expr))
+ #endif
+ 
++#ifndef _Py_NULL
+ // Static inline functions should use _Py_NULL rather than using directly NULL
+ // to prevent C++ compiler warnings. On C23 and newer and on C++11 and newer,
+ // _Py_NULL is defined as nullptr.
+@@ -42,6 +43,7 @@ extern "C" {
+ #else
+ #  define _Py_NULL NULL
+ #endif
++#endif
+ 
+ // Cast argument to PyObject* type.
+ #ifndef _PyObject_CAST


=====================================
debian/patches/gnu-hurd-getsockname
=====================================
@@ -0,0 +1,25 @@
+From: Mattias Ellert <mattias.ellert at physics.uu.se>
+Date: Fri, 7 Feb 2025 15:44:22 +0100
+Subject: [PATCH] GNU/Hurd returns empty string from getsockname() for AF_UNIX
+ sockets
+
+Build the socket name from directory name and name instead.
+---
+ mypy/ipc.py | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/mypy/ipc.py b/mypy/ipc.py
+index 991f9ac..b2046a4 100644
+--- a/mypy/ipc.py
++++ b/mypy/ipc.py
+@@ -303,6 +303,10 @@ class IPCServer(IPCBase):
+     def connection_name(self) -> str:
+         if sys.platform == "win32":
+             return self.name
++        elif sys.platform == "gnu0":
++            # GNU/Hurd returns empty string from getsockname()
++            # for AF_UNIX sockets
++            return os.path.join(self.sock_directory, self.name)
+         else:
+             name = self.sock.getsockname()
+             assert isinstance(name, str)


=====================================
debian/patches/hint-typeshed-package
=====================================
@@ -6,13 +6,16 @@ Co-authored-by: Markus Demleitner <msdemlei at fsfe.org>
 Forwarded: not-needed
 ---
  mypy/modulefinder.py                     | 4 +++-
- test-data/unit/check-modules.test        | 4 ++--
+ test-data/unit/check-errorcodes.test     | 2 +-
+ test-data/unit/check-modules.test        | 2 +-
  test-data/unit/fine-grained-modules.test | 4 ++--
- 3 files changed, 7 insertions(+), 5 deletions(-)
+ 4 files changed, 7 insertions(+), 5 deletions(-)
 
---- mypy.orig/mypy/modulefinder.py
-+++ mypy/mypy/modulefinder.py
-@@ -102,7 +102,9 @@
+diff --git a/mypy/modulefinder.py b/mypy/modulefinder.py
+index 61dbb6c..8b9e5ff 100644
+--- a/mypy/modulefinder.py
++++ b/mypy/modulefinder.py
+@@ -102,7 +102,9 @@ class ModuleNotFoundReason(Enum):
              notes = [doc_link]
          elif self is ModuleNotFoundReason.APPROVED_STUBS_NOT_INSTALLED:
              msg = 'Library stubs not installed for "{module}"'
@@ -23,9 +26,24 @@ Forwarded: not-needed
              if not daemon:
                  notes.append(
                      '(or run "mypy --install-types" to install all missing stub packages)'
---- mypy.orig/test-data/unit/check-modules.test
-+++ mypy/test-data/unit/check-modules.test
-@@ -3130,7 +3130,7 @@
+diff --git a/test-data/unit/check-errorcodes.test b/test-data/unit/check-errorcodes.test
+index 2940386..eec7649 100644
+--- a/test-data/unit/check-errorcodes.test
++++ b/test-data/unit/check-errorcodes.test
+@@ -523,7 +523,7 @@ if int() is str():  # E: Non-overlapping identity check (left operand type: "int
+ 
+ [case testErrorCodeMissingModule]
+ from defusedxml import xyz  # E: Library stubs not installed for "defusedxml"  [import-untyped] \
+-                            # N: Hint: "python3 -m pip install types-defusedxml" \
++                            # N: Hint: On Debian systems, you can install the python3-typeshed package to provide mypy with stubs for many popular libraries. In virtual Python environments, you can instead run "python3 -m pip install types-defusedxml". \
+                             # N: (or run "mypy --install-types" to install all missing stub packages)
+ from nonexistent import foobar  # E: Cannot find implementation or library stub for module named "nonexistent"  [import-not-found]
+ import nonexistent2  # E: Cannot find implementation or library stub for module named "nonexistent2"  [import-not-found]
+diff --git a/test-data/unit/check-modules.test b/test-data/unit/check-modules.test
+index bee0984..e4e9f56 100644
+--- a/test-data/unit/check-modules.test
++++ b/test-data/unit/check-modules.test
+@@ -3130,7 +3130,7 @@ import google.non_existent  # E: Cannot find implementation or library stub for
  from google.non_existent import x
  
  import google.cloud.ndb  # E: Library stubs not installed for "google.cloud.ndb" \
@@ -34,9 +52,11 @@ Forwarded: not-needed
                           # N: (or run "mypy --install-types" to install all missing stub packages) \
                           # N: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports
  from google.cloud import ndb
---- mypy.orig/test-data/unit/fine-grained-modules.test
-+++ mypy/test-data/unit/fine-grained-modules.test
-@@ -2199,12 +2199,12 @@
+diff --git a/test-data/unit/fine-grained-modules.test b/test-data/unit/fine-grained-modules.test
+index f28dbaa..6273fbf 100644
+--- a/test-data/unit/fine-grained-modules.test
++++ b/test-data/unit/fine-grained-modules.test
+@@ -2199,12 +2199,12 @@ import requests
  import jack
  [out]
  a.py:1: error: Library stubs not installed for "requests"
@@ -51,14 +71,3 @@ Forwarded: not-needed
  a.py:1: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports
  
  [case testIgnoreErrorsFromTypeshed]
---- mypy.orig/test-data/unit/check-errorcodes.test
-+++ mypy/test-data/unit/check-errorcodes.test
-@@ -523,7 +523,7 @@
- 
- [case testErrorCodeMissingModule]
- from defusedxml import xyz  # E: Library stubs not installed for "defusedxml"  [import-untyped] \
--                            # N: Hint: "python3 -m pip install types-defusedxml" \
-+                            # N: Hint: On Debian systems, you can install the python3-typeshed package to provide mypy with stubs for many popular libraries. In virtual Python environments, you can instead run "python3 -m pip install types-defusedxml". \
-                             # N: (or run "mypy --install-types" to install all missing stub packages)
- from nonexistent import foobar  # E: Cannot find implementation or library stub for module named "nonexistent"  [import-not-found]
- import nonexistent2  # E: Cannot find implementation or library stub for module named "nonexistent2"  [import-not-found]


=====================================
debian/patches/intersphinx
=====================================
@@ -7,9 +7,11 @@ Forwarded: not-needed
  docs/source/conf.py | 13 ++++++++-----
  1 file changed, 8 insertions(+), 5 deletions(-)
 
---- mypy.orig/docs/source/conf.py
-+++ mypy/docs/source/conf.py
-@@ -276,11 +276,14 @@
+diff --git a/docs/source/conf.py b/docs/source/conf.py
+index 79a5c06..8d2b84e 100644
+--- a/docs/source/conf.py
++++ b/docs/source/conf.py
+@@ -276,11 +276,14 @@ texinfo_documents = [
  rst_prolog = ".. |...| unicode:: U+2026   .. ellipsis\n"
  
  intersphinx_mapping = {


=====================================
debian/patches/series
=====================================
@@ -1,3 +1,5 @@
 hint-typeshed-package
 verbose
 intersphinx
+gnu-hurd-getsockname
+0005-pythoncapi_compat-don-t-define-Py_NULL-if-it-is-alre.patch


=====================================
debian/patches/verbose
=====================================
@@ -7,9 +7,11 @@ Forwarded: not-needed
  setup.py | 1 +
  1 file changed, 1 insertion(+)
 
---- mypy.orig/setup.py
-+++ mypy/setup.py
-@@ -152,6 +152,7 @@
+diff --git a/setup.py b/setup.py
+index e995068..4a41da6 100644
+--- a/setup.py
++++ b/setup.py
+@@ -152,6 +152,7 @@ if USE_MYPYC:
          # Use multi-file compilation mode on windows because without it
          # our Appveyor builds run out of memory sometimes.
          multi_file=sys.platform == "win32" or force_multifile,


=====================================
debian/rules
=====================================
@@ -8,7 +8,7 @@ include /usr/share/dpkg/default.mk
 
 export DEB_BUILD_MAINT_OPTIONS=hardening=+all
 
-ifneq (,$(filter $(DEB_HOST_ARCH),armel armhf mips64el hppa riscv64 mipsel alpha ia64 m68k powerpc sh4 sparc64 hurd-i386))
+ifneq (,$(filter $(DEB_HOST_ARCH),armel armhf mips64el hppa riscv64 mipsel alpha ia64 m68k powerpc sh4 sparc64 hurd-i386 i386 x32 hurd-amd64))
   export MYPYC_MULTI_FILE=1
 endif
 
@@ -18,11 +18,7 @@ endif
 
 export DEB_CFLAGS_MAINT_APPEND += -Wno-misleading-indentation
 
-ifneq (,$(filter $(DEB_HOST_ARCH_CPU),i386 x32))
-  export MYPYC_DEBUG_LEVEL=1
-else
-  export MYPYC_DEBUG_LEVEL=2
-endif
+export MYPYC_DEBUG_LEVEL=2
 
 ifneq ($(filter pkg.mypy.o1,$(DEB_BUILD_PROFILES)),)
   export MYPYC_OPT_LEVEL=1


=====================================
mypy.egg-info/PKG-INFO
=====================================
@@ -1,6 +1,6 @@
 Metadata-Version: 2.2
 Name: mypy
-Version: 1.15.0+dev.23d862dd6fbb905a69bcb31e88746dc7a1eb4a43
+Version: 1.15.0
 Summary: Optional static typing for Python
 Author-email: Jukka Lehtosalo <jukka.lehtosalo at iki.fi>
 License: MIT


=====================================
mypy/checker.py
=====================================
@@ -4372,7 +4372,7 @@ class TypeChecker(NodeVisitor[None], CheckerPluginInterface):
             if (
                 isinstance(get_proper_type(lvalue_type), UnionType)
                 # Skip literal types, as they have special logic (for better errors).
-                and not isinstance(get_proper_type(rvalue_type), LiteralType)
+                and not is_literal_type_like(rvalue_type)
                 and not self.simple_rvalue(rvalue)
             ):
                 # Try re-inferring r.h.s. in empty context, and use that if it
@@ -8347,6 +8347,11 @@ class InvalidInferredTypes(BoolTypeQuery):
         # multi-step type inference.
         return t.id.is_meta_var()
 
+    def visit_tuple_type(self, t: TupleType, /) -> bool:
+        # Exclude fallback to avoid bogus "need type annotation" errors
+        # TODO: Maybe erase plain tuples used as fallback in TupleType constructor?
+        return self.query_types(t.items)
+
 
 class SetNothingToAny(TypeTranslator):
     """Replace all ambiguous Uninhabited types with Any (to avoid spurious extra errors)."""


=====================================
mypy/type_visitor.py
=====================================
@@ -410,7 +410,7 @@ class TypeQuery(SyntheticTypeVisitor[T]):
         return self.query_types(t.arg_types + [t.ret_type])
 
     def visit_tuple_type(self, t: TupleType, /) -> T:
-        return self.query_types(t.items)
+        return self.query_types([t.partial_fallback] + t.items)
 
     def visit_typeddict_type(self, t: TypedDictType, /) -> T:
         return self.query_types(t.items.values())
@@ -550,7 +550,7 @@ class BoolTypeQuery(SyntheticTypeVisitor[bool]):
             return args and ret
 
     def visit_tuple_type(self, t: TupleType, /) -> bool:
-        return self.query_types(t.items)
+        return self.query_types([t.partial_fallback] + t.items)
 
     def visit_typeddict_type(self, t: TypedDictType, /) -> bool:
         return self.query_types(list(t.items.values()))


=====================================
mypy/version.py
=====================================
@@ -8,7 +8,7 @@ from mypy import git
 # - Release versions have the form "1.2.3".
 # - Dev versions have the form "1.2.3+dev" (PLUS sign to conform to PEP 440).
 # - Before 1.0 we had the form "0.NNN".
-__version__ = "1.15.0+dev"
+__version__ = "1.15.0"
 base_version = __version__
 
 mypy_dir = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))


=====================================
test-data/unit/check-incremental.test
=====================================
@@ -6745,3 +6745,22 @@ from typing_extensions import TypeAlias
 IntOrStr: TypeAlias = int | str
 assert isinstance(1, IntOrStr)
 [builtins fixtures/type.pyi]
+
+[case testSerializeDeferredGenericNamedTuple]
+import pkg
+[file pkg/__init__.py]
+from .lib import NT
+[file pkg/lib.py]
+from typing import Generic, NamedTuple, TypeVar
+from pkg import does_not_exist  # type: ignore
+from pkg.missing import also_missing  # type: ignore
+
+T = TypeVar("T", bound=does_not_exist)
+class NT(NamedTuple, Generic[T]):
+    values: also_missing[T]
+[file pkg/__init__.py.2]
+# touch
+from .lib import NT
+[builtins fixtures/tuple.pyi]
+[out]
+[out2]


=====================================
test-data/unit/check-inference.test
=====================================
@@ -3886,3 +3886,11 @@ def a4(x: List[str], y: List[Never]) -> None:
     reveal_type(z2)  # N: Revealed type is "builtins.list[builtins.object]"
     z1[1].append("asdf")  # E: "object" has no attribute "append"
 [builtins fixtures/dict.pyi]
+
+[case testTupleJoinFallbackInference]
+foo = [
+    (1, ("a", "b")),
+    (2, []),
+]
+reveal_type(foo)  # N: Revealed type is "builtins.list[Tuple[builtins.int, typing.Sequence[builtins.str]]]"
+[builtins fixtures/tuple.pyi]


=====================================
test-data/unit/check-literal.test
=====================================
@@ -2984,7 +2984,7 @@ class C(Base):
             sep = "a" if int() else "b"
             reveal_type(sep)  # N: Revealed type is "Union[Literal['a'], Literal['b']]"
         return super().feed_data(sep)
-[builtins fixtures/tuple.pyi]
+[builtins fixtures/primitives.pyi]
 
 [case testLiteralInsideAType]
 from typing_extensions import Literal


=====================================
test-data/unit/fixtures/primitives.pyi
=====================================
@@ -19,6 +19,7 @@ class int:
     def __init__(self, x: object = ..., base: int = ...) -> None: pass
     def __add__(self, i: int) -> int: pass
     def __rmul__(self, x: int) -> int: pass
+    def __bool__(self) -> bool: pass
 class float:
     def __float__(self) -> float: pass
     def __add__(self, x: float) -> float: pass


=====================================
test-data/unit/fixtures/tuple.pyi
=====================================
@@ -1,13 +1,14 @@
 # Builtins stub used in tuple-related test cases.
 
 import _typeshed
-from typing import Iterable, Iterator, TypeVar, Generic, Sequence, Optional, overload, Tuple, Type
+from typing import Iterable, Iterator, TypeVar, Generic, Sequence, Optional, overload, Tuple, Type, Self
 
 _T = TypeVar("_T")
 _Tco = TypeVar('_Tco', covariant=True)
 
 class object:
     def __init__(self) -> None: pass
+    def __new__(cls) -> Self: ...
 
 class type:
     def __init__(self, *a: object) -> None: pass



View it on GitLab: https://salsa.debian.org/python-team/packages/mypy/-/compare/b21864e0bb5ae9a5de8cfd6e05c7a87db2c8f0ff...15601d33963dcb8bedf6c875b4f4758d7019410d

-- 
View it on GitLab: https://salsa.debian.org/python-team/packages/mypy/-/compare/b21864e0bb5ae9a5de8cfd6e05c7a87db2c8f0ff...15601d33963dcb8bedf6c875b4f4758d7019410d
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20250217/2f729986/attachment-0001.htm>


More information about the debian-med-commit mailing list