{"id":7824,"library":"types-mypy-extensions","title":"Typing Stubs for Mypy Extensions","description":"This package provides static type checking stubs for the `mypy-extensions` library. It enables type checkers like Mypy to understand the types defined in `mypy-extensions`, such as `LiteralString`, `TypedDict`, and `NoReturn`, particularly when those features are not yet available in the standard `typing` module for the target Python version. The current version is 1.1.0.20260408, released as part of the `typeshed` project, with releases generally aligned with `typeshed` updates.","status":"active","version":"1.1.0.20260408","language":"en","source_language":"en","source_url":"https://github.com/python/typeshed","tags":["typing","stubs","mypy","type-checking","typeshed"],"install":[{"cmd":"pip install types-mypy-extensions","lang":"bash","label":"Install types-mypy-extensions"}],"dependencies":[],"imports":[{"note":"Symbols are imported from the runtime library 'mypy_extensions'. The 'types-mypy-extensions' package provides only the type hints for these symbols, it is not meant for direct import.","wrong":"from types_mypy_extensions import LiteralString","symbol":"LiteralString","correct":"from mypy_extensions import LiteralString"},{"note":"TypedDict from mypy_extensions was used for Python versions before 3.8. For modern Python, use 'from typing import TypedDict'.","wrong":"from types_mypy_extensions import TypedDict","symbol":"TypedDict","correct":"from mypy_extensions import TypedDict"}],"quickstart":{"code":"from mypy_extensions import LiteralString\n\ndef process_query(query: LiteralString) -> None:\n    print(f\"Executing safe query: {query}\")\n\ndef get_user_input() -> str:\n    # Simulate user input which is not guaranteed to be a literal string\n    return 'SELECT * FROM users; DROP TABLE users;' # Malicious input\n\n# This is a safe literal string\nsafe_query: LiteralString = \"SELECT id, name FROM users WHERE active = TRUE;\"\nprocess_query(safe_query)\n\n# If type checked by mypy (with types-mypy-extensions installed),\n# the following line is expected to fail because get_user_input() returns 'str', not 'LiteralString'.\n# mypy will detect the type mismatch, preventing potential SQL injection if 'query' was used directly.\n# Uncommenting the line below and running mypy should show a type error.\n# process_query(get_user_input())\n\nprint(\"Run 'mypy your_file.py' to see type checking results.\")\n","lang":"python","description":"This example demonstrates how to use `LiteralString` from `mypy_extensions` to enforce type safety against non-literal strings. The `types-mypy-extensions` package provides the necessary type stubs for a type checker like Mypy to correctly analyze these type hints."},"warnings":[{"fix":"To use the functionality, install the runtime package: `pip install mypy-extensions`.","message":"This is a stub-only package. It provides type annotations for type checkers but does not contain any runtime code. You must install the actual 'mypy-extensions' package separately for your code to run successfully.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Ensure your environment for running type checkers (e.g., `mypy`) is Python 3.10 or newer.","message":"The 'types-mypy-extensions' package itself requires Python >= 3.10 to install and use. This means your development/type-checking environment must run Python 3.10 or newer, even if your target runtime environment uses an older Python version with 'mypy-extensions'.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Consider using imports from the standard `typing` module if your target Python version supports it. For example, `from typing import LiteralString` instead of `from mypy_extensions import LiteralString` for Python 3.11+.","message":"Many features provided by 'mypy-extensions' (e.g., TypedDict, NoReturn, LiteralString) are now part of the standard `typing` module in modern Python versions (e.g., TypedDict in 3.8+, NoReturn in 3.6+, LiteralString in 3.11+). Using `mypy-extensions` might be unnecessary or lead to confusion if your project primarily targets these newer Python versions.","severity":"gotcha","affected_versions":"All versions when used with Python 3.6+"}],"env_vars":null,"last_verified":"2026-04-16T00:00:00.000Z","next_check":"2026-07-15T00:00:00.000Z","problems":[{"fix":"Install the runtime package: `pip install mypy-extensions`.","cause":"You have installed 'types-mypy-extensions' (the stub package) but not the actual runtime library 'mypy-extensions'. Stubs do not provide runtime functionality.","error":"ModuleNotFoundError: No module named 'mypy_extensions'"},{"fix":"Import symbols from the actual runtime library, e.g., `from mypy_extensions import LiteralString`. The `types-mypy-extensions` package is solely for type checking tools like Mypy.","cause":"Stub packages like 'types-mypy-extensions' are not meant for direct import in Python code. They are consumed by type checkers.","error":"ModuleNotFoundError: No module named 'types_mypy_extensions'"}]}