mypy VS mypyc

Compare mypy vs mypyc and see what are their differences.

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
mypy mypyc
112 25
17,541 1,667
1.6% 1.3%
9.7 0.0
1 day ago about 1 year ago
Python
GNU General Public License v3.0 or later -
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

mypy

Posts with mentions or reviews of mypy. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-03-11.
  • The GIL can now be disabled in Python's main branch
    8 projects | news.ycombinator.com | 11 Mar 2024
  • Polars – A bird's eye view of Polars
    4 projects | news.ycombinator.com | 13 Feb 2024
    It's got type annotations and mypy has a discussion about it here as well: https://github.com/python/mypy/issues/1282
  • Static Typing for Python
    1 project | news.ycombinator.com | 27 Jan 2024
  • Python 3.13 Gets a JIT
    11 projects | news.ycombinator.com | 9 Jan 2024
    There is already an AOT compiler for Python: Nuitka[0]. But I don't think it's much faster.

    And then there is mypyc[1] which uses mypy's static type annotations but is only slightly faster.

    And various other compilers like Numba and Cython that work with specialized dialects of Python to achieve better results, but then it's not quite Python anymore.

    [0] https://nuitka.net/

    [1] https://github.com/python/mypy/tree/master/mypyc

  • Introducing Flask-Muck: How To Build a Comprehensive Flask REST API in 5 Minutes
    3 projects | dev.to | 20 Dec 2023
  • WeveAllBeenThere
    1 project | /r/ProgrammerHumor | 7 Dec 2023
    In Python there is MyPy that can help with this. https://www.mypy-lang.org/
  • It's Time for a Change: Datetime.utcnow() Is Now Deprecated
    5 projects | news.ycombinator.com | 19 Nov 2023
    It's funny you should say this.

    Reading this article prompted me to future-proof a program I maintain for fun that deals with time; it had one use of utcnow, which I fixed.

    And then I tripped over a runtime type problem in an unrelated area of the code, despite the code being green under "mypy --strict". (and "100% coverage" from tests, except this particular exception only occured in a "# pragma: no-cover" codepath so it wasn't actually covered)

    It turns out that because of some core decisions about how datetime objects work, `datetime.date.today() < datetime.datetime.now()` type-checks but gives a TypeError at runtime. Oops. (cause discussed at length in https://github.com/python/mypy/issues/9015 but without action for 3 years)

    One solution is apparently to use `datetype` for type annotations (while continuing to use `datetime` objects at runtime): https://github.com/glyph/DateType

  • What's New in Python 3.12
    5 projects | news.ycombinator.com | 18 Oct 2023
    PEP 695 is great. I've been using mypy every day at work in last couple years or so with very strict parameters (no any type etc) and I have experience writing real life programs with Rust, Agda, and some Haskell before, so I'm familiar with strict type systems. I'm sure many will disagree with me but these are my very honest opinions as a professional who uses Python types every day:

    * Some types are better than no types. I love Python types, and I consider them required. Even if they're not type-checked they're better than no types. If they're type-checked it's even better. If things are typed properly (no any etc) and type-checked that's even better. And so on...

    * Having said this, Python's type system as checked by mypy feels like a toy type system. It's very easy to fool it, and you need to be careful so that type-checking actually fails badly formed programs.

    * The biggest issue I face are exceptions. Community discussed this many times [1] [2] and the overall consensus is to not check exceptions. I personally disagree as if you have a Python program that's meticulously typed and type-checked exceptions still cause bad states and since Python code uses exceptions liberally, it's pretty easy to accidentally go to a bad state. E.g. in the linked github issue JukkaL (developer) claims checking things like "KeyError" will create too many false positives, I strongly disagree. If a function can realistically raise a "KeyError" the program should be properly written to accept this at some level otherwise something that returns type T but 0.01% of the time raises "KeyError" should actually be typed "Raises[T, KeyError]".

    * PEP 695 will help because typing things particularly is very helpful. Often you want to pass bunch of Ts around but since this is impractical some devs resort to passing "dict[str, Any]"s around and thus things type-check but you still get "KeyError" left and right. It's better to have "SomeStructure[T]" types with "T" as your custom data type (whether dataclass, or pydantic, or traditional class) so that type system has more opportunities to reject bad programs.

    * Overall, I'm personally very optimistic about the future of types in Python!

    [1] https://github.com/python/mypy/issues/1773

  • Mypy 1.6 Released
    5 projects | news.ycombinator.com | 17 Oct 2023
    # is fixed: https://github.com/python/mypy/issues/12987.
  • Ask HN: Why are all of the best back end web frameworks dynamically typed?
    4 projects | news.ycombinator.com | 5 Oct 2023
    You probably already know but you can add type hints and then check for consistency with https://github.com/python/mypy in python.

    Modern Python with things like https://learnpython.com/blog/python-match-case-statement/ + mypy + Ruff for linting https://github.com/astral-sh/ruff can get pretty good results.

    I found typed dataclasses (https://docs.python.org/3/library/dataclasses.html) in python using mypy to give me really high confidence when building data representations.

mypyc

Posts with mentions or reviews of mypyc. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-05-21.
  • Making use of type hints
    1 project | /r/learnpython | 10 Dec 2023
  • Writing Python like it's Rust
    10 projects | news.ycombinator.com | 21 May 2023
    That would be interesting! You might already be aware. But there's mypyc[0], which is an AOT compiler for Python code with type hints (that, IIRC, mypy uses to compile itself into a native extension).

    Wanted to give you a head-start on the lit-review for your students I guess :)

    [0] https://github.com/mypyc/mypyc

  • The different uses of Python type hints
    6 projects | news.ycombinator.com | 15 Apr 2023
    https://github.com/mypyc/mypyc

    > Mypyc compiles Python modules to C extensions. It uses standard Python type hints to generate fast code. Mypyc uses mypy to perform type checking and type inference.

    > Mypyc can compile anything from one module to an entire codebase. The mypy project has been using mypyc to compile mypy since 2019, giving it a 4x performance boost over regular Python.

    I have not experience a 4x boost, rather between 1.5x and 2x. I guess it depends on the code.

  • The Python Paradox
    7 projects | news.ycombinator.com | 26 Jan 2023
    Funny how emergence works with tools. Give a language too few tools but viral circumstances - the ecosystem diverges (Lisps, Javascript). Give it too long an iteration time but killer guarantees, you end up with committees. Python not falling into either of these traps should be understood as nothing short of magic in emergence.

    I only recently discovered that python's reference typechecker, mypy, has a small side project for typed python to emit C [1], written entirely in python. Nowadays with python's rich specializer ecosystem (LLVM, CUDA, and just generally vectorized math), the value of writing a small program in anything else diminishes quickly.

    Imagine reading the C++wg release notes in the same mood that you would the python release notes.

    [1] https://github.com/mypyc/mypyc

  • Codon: A high-performance Python compiler
    12 projects | news.ycombinator.com | 8 Dec 2022
    > Note that the mypyc issue tracker lives in this repository! Please don't file mypyc issues in the mypy issue tracker.

    See https://github.com/mypyc/mypyc/blob/master/show_me_the_code....

  • ELI5: Can’t one write a compiler for Python and make everything go brrrr?
    1 project | /r/Python | 3 Nov 2022
    And mypyc https://github.com/mypyc/mypyc
  • Is it time for Python to have a statically-typed, compiled, fast superset?
    3 projects | /r/Python | 29 Sep 2022
    More recent approaches include mypyc which is (on the tin) quite close to what you describe, and taichi that lives in between.
  • Pholyglot version 0.0.0 (PHP to PHP+C polyglot transpiler)
    1 project | /r/PHP | 1 Sep 2022
    Have you encountered mypyc?
  • Python 3.11 is 25% faster than 3.10 on average
    13 projects | news.ycombinator.com | 6 Jul 2022
    https://github.com/mypyc/mypyc

    > Mypyc compiles Python modules to C extensions. It uses standard Python type hints to generate fast code. Mypyc uses mypy to perform type checking and type inference.

  • Comparing implementations of the Monkey language VIII: The Spectacular Interpreted Special (Ruby, Python and Lua)
    2 projects | /r/Python | 4 Jun 2022
    Regarding the large execution time mentioned in your article, I discovered (mypyc)[https://github.com/mypyc/mypyc] on this subreddit in a post from the black formatter team https://www.reddit.com/r/Python/comments/v2009i/im_that_person_who_got_black_compiled_with_mypyc/?utm_medium=android_app&utm_source=share

What are some alternatives?

When comparing mypy and mypyc you can also consider the following projects:

pyright - Static Type Checker for Python

Cython - The most widely used Python to C compiler

ruff - An extremely fast Python linter and code formatter, written in Rust.

beartype - Unbearably fast near-real-time hybrid runtime-static type-checking in pure Python.

pyre-check - Performant type-checking for python.

CPython - The Python programming language

black - The uncompromising Python code formatter

pex - A tool for generating .pex (Python EXecutable) files, lock files and venvs.

pytype - A static type analyzer for Python code

pyccel - Python extension language using accelerators

pydantic - Data validation using Python type hints

typeguard - Run-time type checker for Python