<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/the-mypy-blog-mypy-1-5-released-cjpfq2e44" -->

---
title: The Mypy Blog: Mypy 1.5 Released | daily.dev
description: Mypy 1.5 has been released, dropping support for Python 3.7 which reached end-of-life. New features include an optional explicit-override error code enforcing...
canonical: https://daily.dev/posts/the-mypy-blog-mypy-1-5-released-cjpfq2e44
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: The Mypy Blog: Mypy 1.5 Released | daily.dev
og:description: Mypy 1.5 has been released, dropping support for Python 3.7 which reached end-of-life. New features include an optional explicit-override error code enforcing...
og:url: https://daily.dev/posts/the-mypy-blog-mypy-1-5-released-cjpfq2e44
og:image: https://api.daily.dev/og/posts/CjPfq2E44.png
og:image:alt: The Mypy Blog: Mypy 1.5 Released
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# The Mypy Blog: Mypy 1.5 Released

**[mypy - Optional Static Typing for Python](https://daily.dev/sources/mypy-lang)** · 7 min read · 0 upvotes · 0 comments

## Summary

Mypy 1.5 has been released, dropping support for Python 3.7 which reached end-of-life. New features include an optional explicit-override error code enforcing the @typing.override decorator, more flexible TypedDict creation/update via a new --extra-checks flag, deprecation of --strict-concatenate in favor of --extra-checks, optional documentation links for error codes, more consistent handling of unreachable code, and an experimental --new-type-inference flag improving generic function inference. Partial Python 3.12 support was added along with numerous dataclass, mypyc, stubgen, and typeshed improvements.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://mypy-lang.blogspot.com/2023/08/mypy-15-released.html>

## Questions this post answers

### Does mypy 1.5 still support Python 3.7?

No, mypy 1.5 dropped support for running with Python 3.7 because that Python version reached end-of-life. Developers still on Python 3.7 need to upgrade their interpreter or stay on an earlier mypy version to keep type checking their code.

_Track runtime and tooling support changes like this on daily.dev before they break your pipeline._

### How do I make mypy require the @override decorator on method overrides?

Enable the explicit-override error code, either with --enable-error-code=explicit-override on the command line or enable_error_code = explicit-override in the mypy config file. Mypy then reports an error if a method overrides a parent method without using @typing.override (or the typing_extensions backport), helping catch accidental overrides. The override decorator itself lands in typing with Python 3.12.

_daily.dev helps Python developers keep up with mypy configuration options like this one._

### Why does mypy now allow TypedDict construction with ** that mixes a subset of keys?

Mypy 1.5 relaxed previously overly strict checks on TypedDict creation and update operations, so constructing one TypedDict from another using ** syntax, or calling update() with a TypedDict containing only a subset of keys, is now allowed by default. Stricter checking can still be enabled with the new --extra-checks flag.

_Developers debugging TypedDict type errors can follow changes like this via daily.dev._

## Similar posts on daily.dev

- [The Mypy Blog: Mypy 2.4 Released](https://daily.dev/posts/the-mypy-blog-mypy-2-4-released-frfrx4bzr) · mypy - Optional Static Typing for Python · 1 upvotes · 0 comments
- [New Book Release: Python Typing](https://daily.dev/posts/new-book-release-python-typing-krwdybma9) · Planet Python · 0 upvotes · 0 comments
- [From Scripts to Scale](https://daily.dev/posts/from-scripts-to-scale-z15peccf4) · Simple Thread · 0 upvotes · 0 comments
- [Pyrefly 1.0: A fast, forward-looking Python linter](https://daily.dev/posts/pyrefly-1-0-a-fast-forward-looking-python-linter-k4vukcqpr) · InfoWorld · 0 upvotes · 0 comments

---

Tags: [#general-programming](https://daily.dev/tags/general-programming), [#python](https://daily.dev/tags/python)

[View this post on daily.dev](https://daily.dev/posts/the-mypy-blog-mypy-1-5-released-cjpfq2e44)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"The Mypy Blog: Mypy 1.5 Released","url":"https://daily.dev/posts/the-mypy-blog-mypy-1-5-released-cjpfq2e44","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/the-mypy-blog-mypy-1-5-released-cjpfq2e44"},"datePublished":"2026-08-23T12:17:37.565Z","dateModified":"2026-08-23T13:00:06.321Z","description":"Mypy 1.5 has been released, dropping support for Python 3.7 which reached end-of-life. New features include an optional explicit-override error code enforcing...","image":"https://media.daily.dev/image/upload/s--VDukGCjf--/f_auto/v1722860399/public/Placeholder%2002","thumbnailUrl":"https://media.daily.dev/image/upload/s--VDukGCjf--/f_auto/v1722860399/public/Placeholder%2002","isAccessibleForFree":true,"articleSection":"mypy - Optional Static Typing for Python","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"mypy - Optional Static Typing for Python","logo":"https://media.daily.dev/image/upload/logos/placeholder.jpg","url":"https://daily.dev/sources/mypy-lang"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/the-mypy-blog-mypy-1-5-released-cjpfq2e44","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"general-programming,python","timeRequired":"PT7M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"mypy - Optional Static Typing for Python","item":"https://daily.dev/sources/mypy-lang"},{"@type":"ListItem","position":3,"name":"The Mypy Blog: Mypy 1.5 Released"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/the-mypy-blog-mypy-1-5-released-cjpfq2e44#faq","mainEntity":[{"@type":"Question","name":"Does mypy 1.5 still support Python 3.7?","acceptedAnswer":{"@type":"Answer","text":"No, mypy 1.5 dropped support for running with Python 3.7 because that Python version reached end-of-life. Developers still on Python 3.7 need to upgrade their interpreter or stay on an earlier mypy version to keep type checking their code. Track runtime and tooling support changes like this on daily.dev before they break your pipeline."}},{"@type":"Question","name":"How do I make mypy require the @override decorator on method overrides?","acceptedAnswer":{"@type":"Answer","text":"Enable the explicit-override error code, either with --enable-error-code=explicit-override on the command line or enable_error_code = explicit-override in the mypy config file. Mypy then reports an error if a method overrides a parent method without using @typing.override (or the typing_extensions backport), helping catch accidental overrides. The override decorator itself lands in typing with Python 3.12. daily.dev helps Python developers keep up with mypy configuration options like this one."}},{"@type":"Question","name":"Why does mypy now allow TypedDict construction with ** that mixes a subset of keys?","acceptedAnswer":{"@type":"Answer","text":"Mypy 1.5 relaxed previously overly strict checks on TypedDict creation and update operations, so constructing one TypedDict from another using ** syntax, or calling update() with a TypedDict containing only a subset of keys, is now allowed by default. Stricter checking can still be enabled with the new --extra-checks flag. Developers debugging TypedDict type errors can follow changes like this via daily.dev."}}]}
```

