{"slug": "ty", "name": "ty", "category": "other", "category_name": "Other software", "description": "Fast Rust-based Python type checker and language server from Astral, makers of uv and Ruff.", "recommenders": 6, "commenters": 12, "warners": 2, "score": 4.414, "rising": -0.64, "first": "2025-11-30", "latest": "2026-10-24", "why": "Recommended as the type checker in an Astral toolchain alongside uv and Ruff, with some saying it fixed or improved Python type checking.Complaints vary rather than converge: lenient gradual typing that can hide errors, a reported hang at full CPU with no verbose mode, and doubts that it is ahead of Pyrefly yet.", "why_is_quote": false, "has_verdict": true, "sentiment": {"recommend": 6, "neutral": 3, "compare": 1, "warn": 2}, "spark": [1, 1, 2, 0, 0, 0, 0, 1, 0, 0, 0, 1], "listed": true, "loved": ["Astral toolchain fit", "Better type checking"], "caveat": "Gradual typing", "short_quote": "This newly-minted fanboy recommends you try out ty w/ uv & ruff!", "icon": true, "domain": null, "github_repo": null, "official_url": "https://docs.astral.sh/ty/", "pricing": "open source", "aliases": ["ty"], "verdict": [{"text": "Recommended as the type checker in an Astral toolchain alongside uv and Ruff,", "cites": [{"id": 746994866, "item_id": 46687179, "url": "https://news.ycombinator.com/item?id=46687179", "by": "primaprashant", "date": "2026-01-19", "stance": "recommend", "quote": "recently ty. It's also from astral and it fixed type checking. You should check it out", "excerpt": "yeah, big fan of uv and ruff and recently ty. It's also from astral and it fixed type checking. You should check it out", "context": "", "use_case": "Python type checking", "switched_from": "", "story": "Ask HN: What non-LLM tools have meaningfully improved your dev productivity?"}, {"id": 737627216, "item_id": 46101701, "url": "https://news.ycombinator.com/item?id=46101701", "by": "bbor", "date": "2025-11-30", "stance": "recommend", "quote": "This newly-minted fanboy recommends you try out ty w/ uv & ruff!", "excerpt": "Over the past few months, I've switched a few decently-sized python codebases from MyPy (which I used for years) to PyreFly (because the MyPy LSP ecosystem is somewhere between crumbling and deprecated at this point), and finally to Ty after it left beta this week. I'm now running a fully Astral-ized (rust-ized!) setup: 1. packaging with uv (instead of pip or poetry), 2. type checking with ty (instead of the default ", "context": "", "use_case": "Python type checking", "switched_from": "Pyrefly", "story": "Ty \u2013 A fast Python type checker, written in Rust"}, {"id": 748723989, "item_id": 46795249, "url": "https://news.ycombinator.com/item?id=46795249", "by": "senko", "date": "2026-01-28", "stance": "recommend", "quote": "I immediately set up up ruff, ty, pytest, pre-commit hook", "excerpt": "Some more Django recommendations from Frank Wiles of Revsys (Django consultancy): https://frankwiles.com/questions/starting-django-projects/ I'll add a few of my own: * Set up the project using uv * I name the django project \"project\"; so settings are project/settings.py, main urls are project/urls.py, etc * I always define a custom Django user model even if I don't need anything extra yet; easier to expand later * s", "context": "", "use_case": "type checking", "switched_from": "", "story": "Notes on Starting to Use Django"}]}, {"text": " with some saying it fixed or improved Python type checking.", "cites": [{"id": 746994866, "item_id": 46687179, "url": "https://news.ycombinator.com/item?id=46687179", "by": "primaprashant", "date": "2026-01-19", "stance": "recommend", "quote": "recently ty. It's also from astral and it fixed type checking. You should check it out", "excerpt": "yeah, big fan of uv and ruff and recently ty. It's also from astral and it fixed type checking. You should check it out", "context": "", "use_case": "Python type checking", "switched_from": "", "story": "Ask HN: What non-LLM tools have meaningfully improved your dev productivity?"}, {"id": 775043041, "item_id": 48440190, "url": "https://news.ycombinator.com/item?id=48440190", "by": "jchw", "date": "2026-06-07", "stance": "recommend", "quote": "other than `uv` and `ty`, I don't feel a whole lot has improved in Python land", "excerpt": "Aside from the LLM smell, the most egregious thing about this article to me is simply implying that it's going to be much of a surprise to people that PHP has improved since the \"fractal of bad design\" days. The most popular Hacker News post that matches \"php\" in HN Algolia is this post from 2019: https://stitcher.io/blog/php-in-2019 https://news.ycombinator.com/item?id=19917655 And while sentiment is understandably ", "context": "", "use_case": "Python type checking", "switched_from": "", "story": "Learn PHP in 2026 (Yes, Really)"}]}, {"text": "Complaints vary rather than converge:", "cites": [{"id": 803546754, "item_id": 50221672, "url": "https://news.ycombinator.com/item?id=50221672", "by": "miki123211", "date": "2026-10-24", "stance": "warn", "quote": "I don't actually like ty that much", "excerpt": "I am a Python programmer. I love Astral; I think Ruff is great and uv is life-changing, but I don't actually like ty that much. I want my type checker to check types and to scream at me when it can't. I don't want it to do \"gradual typing\", if it is unsure about what type something is, I want that to be a failure instead of it modeling the unsureness and not showing potential errors. We live in the age of agents, hav", "context": "Python programmer", "use_case": "Python type checking", "switched_from": "", "story": "Bringing uv and ty together"}, {"id": 741063792, "item_id": 46316487, "url": "https://news.ycombinator.com/item?id=46316487", "by": "Perepiska", "date": "2025-12-18", "stance": "warn", "quote": "Is shows me progressbar and \"98/99 files\" then hang.", "excerpt": "So I've decided to give it a try. Open installation instructions and went thru \"easy install with uvx\" / \"get and run our sgell script\" until get \"pip install ty\". I do not want use other tools so I started it in pet project directory as \"ty check\". Is shows me progressbar and \"98/99 files\" then hang. I restarted it and it hung on \"68/99\" and started using 100% of cpu core. I waited for 15 min and killed it. Try to g", "context": "", "use_case": "Python type checking", "switched_from": "", "story": "Announcing the Beta release of ty"}, {"id": 803521620, "item_id": 50220101, "url": "https://news.ycombinator.com/item?id=50220101", "by": "olive-n", "date": "2026-10-24", "stance": "compare", "quote": "For all I know zuban or ty could be the better choice.", "excerpt": "The whole python tooling is experiencing kind of a renaissance with new Rust based tools taking over. These days all my project use uv for project management and ruff for linting and formatting. I believe there is no obvious default for type checking yet. I use whatever my IDE provides. So e.g. pylance in VSCode, which is build on pyright. There are currently pretty much 3 projects that I look out for: ty, zuban and ", "context": "", "use_case": "Python type checking", "switched_from": "", "story": "Bringing uv and ty together"}]}, {"text": " lenient gradual typing that can hide errors, a reported hang at full CPU with no verbose mode, and doubts that it is ahead of Pyrefly yet.", "cites": [{"id": 803546754, "item_id": 50221672, "url": "https://news.ycombinator.com/item?id=50221672", "by": "miki123211", "date": "2026-10-24", "stance": "warn", "quote": "I don't actually like ty that much", "excerpt": "I am a Python programmer. I love Astral; I think Ruff is great and uv is life-changing, but I don't actually like ty that much. I want my type checker to check types and to scream at me when it can't. I don't want it to do \"gradual typing\", if it is unsure about what type something is, I want that to be a failure instead of it modeling the unsureness and not showing potential errors. We live in the age of agents, hav", "context": "Python programmer", "use_case": "Python type checking", "switched_from": "", "story": "Bringing uv and ty together"}, {"id": 741063792, "item_id": 46316487, "url": "https://news.ycombinator.com/item?id=46316487", "by": "Perepiska", "date": "2025-12-18", "stance": "warn", "quote": "Is shows me progressbar and \"98/99 files\" then hang.", "excerpt": "So I've decided to give it a try. Open installation instructions and went thru \"easy install with uvx\" / \"get and run our sgell script\" until get \"pip install ty\". I do not want use other tools so I started it in pet project directory as \"ty check\". Is shows me progressbar and \"98/99 files\" then hang. I restarted it and it hung on \"68/99\" and started using 100% of cpu core. I waited for 15 min and killed it. Try to g", "context": "", "use_case": "Python type checking", "switched_from": "", "story": "Announcing the Beta release of ty"}, {"id": 803521620, "item_id": 50220101, "url": "https://news.ycombinator.com/item?id=50220101", "by": "olive-n", "date": "2026-10-24", "stance": "compare", "quote": "For all I know zuban or ty could be the better choice.", "excerpt": "The whole python tooling is experiencing kind of a renaissance with new Rust based tools taking over. These days all my project use uv for project management and ruff for linting and formatting. I believe there is no obvious default for type checking yet. I use whatever my IDE provides. So e.g. pylance in VSCode, which is build on pyright. There are currently pretty much 3 projects that I look out for: ty, zuban and ", "context": "", "use_case": "Python type checking", "switched_from": "", "story": "Bringing uv and ty together"}]}], "praise": [{"label": "Astral toolchain fit", "summary": "Commenters like pairing it with uv and Ruff in one Astral, Rust-based setup.", "quotes": [{"id": 737627216, "item_id": 46101701, "url": "https://news.ycombinator.com/item?id=46101701", "by": "bbor", "date": "2025-11-30", "stance": "recommend", "quote": "This newly-minted fanboy recommends you try out ty w/ uv & ruff!", "excerpt": "Over the past few months, I've switched a few decently-sized python codebases from MyPy (which I used for years) to PyreFly (because the MyPy LSP ecosystem is somewhere between crumbling and deprecated at this point), and finally to Ty after it left beta this week. I'm now running a fully Astral-ized (rust-ized!) setup: 1. packaging with uv (instead of pip or poetry), 2. type checking with ty (instead of the default ", "context": "", "use_case": "Python type checking", "switched_from": "Pyrefly", "story": "Ty \u2013 A fast Python type checker, written in Rust"}, {"id": 746994866, "item_id": 46687179, "url": "https://news.ycombinator.com/item?id=46687179", "by": "primaprashant", "date": "2026-01-19", "stance": "recommend", "quote": "recently ty. It's also from astral and it fixed type checking. You should check it out", "excerpt": "yeah, big fan of uv and ruff and recently ty. It's also from astral and it fixed type checking. You should check it out", "context": "", "use_case": "Python type checking", "switched_from": "", "story": "Ask HN: What non-LLM tools have meaningfully improved your dev productivity?"}, {"id": 748723989, "item_id": 46795249, "url": "https://news.ycombinator.com/item?id=46795249", "by": "senko", "date": "2026-01-28", "stance": "recommend", "quote": "I immediately set up up ruff, ty, pytest, pre-commit hook", "excerpt": "Some more Django recommendations from Frank Wiles of Revsys (Django consultancy): https://frankwiles.com/questions/starting-django-projects/ I'll add a few of my own: * Set up the project using uv * I name the django project \"project\"; so settings are project/settings.py, main urls are project/urls.py, etc * I always define a custom Django user model even if I don't need anything extra yet; easier to expand later * s", "context": "", "use_case": "type checking", "switched_from": "", "story": "Notes on Starting to Use Django"}]}, {"label": "Better type checking", "summary": "Some say it fixed or improved Python type checking.", "quotes": [{"id": 746994866, "item_id": 46687179, "url": "https://news.ycombinator.com/item?id=46687179", "by": "primaprashant", "date": "2026-01-19", "stance": "recommend", "quote": "recently ty. It's also from astral and it fixed type checking. You should check it out", "excerpt": "yeah, big fan of uv and ruff and recently ty. It's also from astral and it fixed type checking. You should check it out", "context": "", "use_case": "Python type checking", "switched_from": "", "story": "Ask HN: What non-LLM tools have meaningfully improved your dev productivity?"}, {"id": 775043041, "item_id": 48440190, "url": "https://news.ycombinator.com/item?id=48440190", "by": "jchw", "date": "2026-06-07", "stance": "recommend", "quote": "other than `uv` and `ty`, I don't feel a whole lot has improved in Python land", "excerpt": "Aside from the LLM smell, the most egregious thing about this article to me is simply implying that it's going to be much of a surprise to people that PHP has improved since the \"fractal of bad design\" days. The most popular Hacker News post that matches \"php\" in HN Algolia is this post from 2019: https://stitcher.io/blog/php-in-2019 https://news.ycombinator.com/item?id=19917655 And while sentiment is understandably ", "context": "", "use_case": "Python type checking", "switched_from": "", "story": "Learn PHP in 2026 (Yes, Really)"}]}, {"label": "Replacing MyPy/Pyrefly", "summary": "One commenter moved codebases from MyPy to Pyrefly and then to ty.", "quotes": [{"id": 737627216, "item_id": 46101701, "url": "https://news.ycombinator.com/item?id=46101701", "by": "bbor", "date": "2025-11-30", "stance": "recommend", "quote": "This newly-minted fanboy recommends you try out ty w/ uv & ruff!", "excerpt": "Over the past few months, I've switched a few decently-sized python codebases from MyPy (which I used for years) to PyreFly (because the MyPy LSP ecosystem is somewhere between crumbling and deprecated at this point), and finally to Ty after it left beta this week. I'm now running a fully Astral-ized (rust-ized!) setup: 1. packaging with uv (instead of pip or poetry), 2. type checking with ty (instead of the default ", "context": "", "use_case": "Python type checking", "switched_from": "Pyrefly", "story": "Ty \u2013 A fast Python type checker, written in Rust"}]}, {"label": "Script support", "summary": "Support for scripts filled a need one commenter had built an extension to solve.", "quotes": [{"id": 803511777, "item_id": 50219486, "url": "https://news.ycombinator.com/item?id=50219486", "by": "karpetrosyan", "date": "2026-10-24", "stance": "recommend", "quote": "It's cool to see ty support for scripts.", "excerpt": "It's cool to see ty support for scripts. That's something I really needed, and I even developed an extension to solve it: https://github.com/karpetrosyan/uv-vscode", "context": "", "use_case": "Python type checking", "switched_from": "", "story": "Bringing uv and ty together"}]}], "caveats": [{"label": "Gradual typing", "summary": "It models uncertain types instead of failing, so possible errors may go unreported.", "quotes": [{"id": 803546754, "item_id": 50221672, "url": "https://news.ycombinator.com/item?id=50221672", "by": "miki123211", "date": "2026-10-24", "stance": "warn", "quote": "I don't actually like ty that much", "excerpt": "I am a Python programmer. I love Astral; I think Ruff is great and uv is life-changing, but I don't actually like ty that much. I want my type checker to check types and to scream at me when it can't. I don't want it to do \"gradual typing\", if it is unsure about what type something is, I want that to be a failure instead of it modeling the unsureness and not showing potential errors. We live in the age of agents, hav", "context": "Python programmer", "use_case": "Python type checking", "switched_from": "", "story": "Bringing uv and ty together"}]}, {"label": "Hangs", "summary": "One user saw it hang partway through a check at 100% CPU, with no verbose mode to debug.", "quotes": [{"id": 741063792, "item_id": 46316487, "url": "https://news.ycombinator.com/item?id=46316487", "by": "Perepiska", "date": "2025-12-18", "stance": "warn", "quote": "Is shows me progressbar and \"98/99 files\" then hang.", "excerpt": "So I've decided to give it a try. Open installation instructions and went thru \"easy install with uvx\" / \"get and run our sgell script\" until get \"pip install ty\". I do not want use other tools so I started it in pet project directory as \"ty check\". Is shows me progressbar and \"98/99 files\" then hang. I restarted it and it hung on \"68/99\" and started using 100% of cpu core. I waited for 15 min and killed it. Try to g", "context": "", "use_case": "Python type checking", "switched_from": "", "story": "Announcing the Beta release of ty"}]}, {"label": "Maturity vs rivals", "summary": "Pyrefly looked further along on support for common libraries, and Pydantic support was still pending.", "quotes": [{"id": 803521620, "item_id": 50220101, "url": "https://news.ycombinator.com/item?id=50220101", "by": "olive-n", "date": "2026-10-24", "stance": "compare", "quote": "For all I know zuban or ty could be the better choice.", "excerpt": "The whole python tooling is experiencing kind of a renaissance with new Rust based tools taking over. These days all my project use uv for project management and ruff for linting and formatting. I believe there is no obvious default for type checking yet. I use whatever my IDE provides. So e.g. pylance in VSCode, which is build on pyright. There are currently pretty much 3 projects that I look out for: ty, zuban and ", "context": "", "use_case": "Python type checking", "switched_from": "", "story": "Bringing uv and ty together"}, {"id": 740736451, "item_id": 46296028, "url": "https://news.ycombinator.com/item?id=46296028", "by": "shrumm", "date": "2025-12-16", "stance": "recommend", "quote": "it looks like first class support from Ty is slated for the stable release, we'd love to try it.", "excerpt": "Thanks Astral team! We use Pydantic heavily, and it looks like first class support from Ty is slated for the stable release, we'd love to try it. While we wait... what's everyone's type checking setup? We run both Pyright and Mypy... they catch different errors so we've kept both, but it feels redundant. https://htmlpreview.github.io/?https://github.com/python/typing/blob/main/conformance/results/results.html suggest", "context": "", "use_case": "Python type checking", "switched_from": "", "story": "Announcing the Beta release of ty"}]}, {"label": "Fragmented CLI", "summary": "Its integration with uv and Ruff feels inconsistent across commands.", "quotes": [{"id": 803509122, "item_id": 50219320, "url": "https://news.ycombinator.com/item?id=50219320", "by": "assumed_throwaw", "date": "2026-10-24", "stance": "neutral", "quote": "Now, ty is integrated into uv", "excerpt": "I love Astral\u2019s tools, but I wonder why the CLI feels so fragmented. - Now, ty is integrated into uv, while ty is technically being part of ruff [1], but ruff is not integrated into uv. - The formatter is part of ruff, but uv also have an undocumented \"format\" command, which does not produce the same results. - Actually, ruff is integrated into uv, but you must call it through \"uv tool run ruff\". I guess I'd like \"uv", "context": "", "use_case": "Python type checking", "switched_from": "", "story": "Bringing uv and ty together"}]}, {"label": "Weaker inference", "summary": "One user finds PyCharm's built-in checker better at inference through class inheritance.", "quotes": [{"id": 775244944, "item_id": 48452809, "url": "https://news.ycombinator.com/item?id=48452809", "by": "insane_dreamer", "date": "2026-06-08", "stance": "neutral", "quote": "I use ty with Zed.", "excerpt": "I use ty with Zed. But PyCharm's built-in type checker is far and away the best that I've used with proper type inference through multiple class inheritance hoops.", "context": "", "use_case": "Python type checking", "switched_from": "", "story": "Are you expected to run five Python type-checkers now?"}]}], "who": [], "tags": ["for Python developers", "for uv users", "for Django projects", "for Zed users", "for Python scripts"], "use_cases": ["python type checking", "type checking"], "compared": [{"slug": "uv", "name": "uv", "co": 7, "switched_from": 0, "switched_to": 0}, {"slug": "ruff", "name": "Ruff", "co": 6, "switched_from": 0, "switched_to": 0}, {"slug": "pyrefly", "name": "Pyrefly", "co": 3, "switched_from": 1, "switched_to": 0}, {"slug": "zed", "name": "Zed", "co": 2, "switched_from": 0, "switched_to": 0}, {"slug": "pyright", "name": "pyright", "co": 2, "switched_from": 0, "switched_to": 0}, {"slug": "pydantic", "name": "Pydantic", "co": 2, "switched_from": 0, "switched_to": 0}, {"slug": "mypy", "name": "mypy", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [{"id": 740836688, "item_id": 46302293, "url": "https://news.ycombinator.com/item?id=46302293", "by": "dcreager", "date": "2025-12-17", "stance": "recommend", "quote": "Yes, we love TypeForm! We plan to support it as soon as the PEP for it lands.", "excerpt": "Yes, we love TypeForm! We plan to support it as soon as the PEP for it lands. Under the covers, we already support much of what's needed, and use it for some of our special-cased functions like `ty_extensions.is_equivalent_to` [1,2]. TypeForm proper has been lower on the priority list mostly because we have a large enough backlog as it is, and that lets us wait to make sure there aren't any last-minute changes to the", "context": "Astral team member", "use_case": "Python type checking", "switched_from": "", "story": "Announcing the Beta release of ty"}], "threads": [{"url": "https://news.ycombinator.com/item?id=50172962", "title": "Bringing uv and ty together", "mentions": 4}, {"url": "https://news.ycombinator.com/item?id=46294289", "title": "Announcing the Beta release of ty", "mentions": 3}, {"url": "https://news.ycombinator.com/item?id=48444442", "title": "Are you expected to run five Python type-checkers now?", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48397765", "title": "Learn PHP in 2026 (Yes, Really)", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=46788384", "title": "Notes on Starting to Use Django", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=46678980", "title": "Ask HN: What non-LLM tools have meaningfully improved your dev productivity?", "mentions": 1}], "sentiment_by_month": {"2025-11": {"recommend": 1}, "2025-12": {"recommend": 1, "warn": 1}, "2026-01": {"neutral": 1, "recommend": 2}, "2026-02": {}, "2026-03": {}, "2026-04": {}, "2026-05": {}, "2026-06": {"recommend": 1, "neutral": 1}, "2026-07": {}, "2026-08": {}, "2026-09": {}, "2026-10": {"neutral": 1, "recommend": 1, "compare": 1, "warn": 1}}, "quotes": [{"id": 803546754, "item_id": 50221672, "url": "https://news.ycombinator.com/item?id=50221672", "by": "miki123211", "date": "2026-10-24", "stance": "warn", "quote": "I don't actually like ty that much", "excerpt": "I am a Python programmer. I love Astral; I think Ruff is great and uv is life-changing, but I don't actually like ty that much. I want my type checker to check types and to scream at me when it can't. I don't want it to do \"gradual typing\", if it is unsure about what type something is, I want that to be a failure instead of it modeling the unsureness and not showing potential errors. We live in the age of agents, hav", "context": "Python programmer", "use_case": "Python type checking", "switched_from": "", "story": "Bringing uv and ty together"}, {"id": 803521620, "item_id": 50220101, "url": "https://news.ycombinator.com/item?id=50220101", "by": "olive-n", "date": "2026-10-24", "stance": "compare", "quote": "For all I know zuban or ty could be the better choice.", "excerpt": "The whole python tooling is experiencing kind of a renaissance with new Rust based tools taking over. These days all my project use uv for project management and ruff for linting and formatting. I believe there is no obvious default for type checking yet. I use whatever my IDE provides. So e.g. pylance in VSCode, which is build on pyright. There are currently pretty much 3 projects that I look out for: ty, zuban and ", "context": "", "use_case": "Python type checking", "switched_from": "", "story": "Bringing uv and ty together"}, {"id": 803511777, "item_id": 50219486, "url": "https://news.ycombinator.com/item?id=50219486", "by": "karpetrosyan", "date": "2026-10-24", "stance": "recommend", "quote": "It's cool to see ty support for scripts.", "excerpt": "It's cool to see ty support for scripts. That's something I really needed, and I even developed an extension to solve it: https://github.com/karpetrosyan/uv-vscode", "context": "", "use_case": "Python type checking", "switched_from": "", "story": "Bringing uv and ty together"}, {"id": 803509122, "item_id": 50219320, "url": "https://news.ycombinator.com/item?id=50219320", "by": "assumed_throwaw", "date": "2026-10-24", "stance": "neutral", "quote": "Now, ty is integrated into uv", "excerpt": "I love Astral\u2019s tools, but I wonder why the CLI feels so fragmented. - Now, ty is integrated into uv, while ty is technically being part of ruff [1], but ruff is not integrated into uv. - The formatter is part of ruff, but uv also have an undocumented \"format\" command, which does not produce the same results. - Actually, ruff is integrated into uv, but you must call it through \"uv tool run ruff\". I guess I'd like \"uv", "context": "", "use_case": "Python type checking", "switched_from": "", "story": "Bringing uv and ty together"}, {"id": 775244944, "item_id": 48452809, "url": "https://news.ycombinator.com/item?id=48452809", "by": "insane_dreamer", "date": "2026-06-08", "stance": "neutral", "quote": "I use ty with Zed.", "excerpt": "I use ty with Zed. But PyCharm's built-in type checker is far and away the best that I've used with proper type inference through multiple class inheritance hoops.", "context": "", "use_case": "Python type checking", "switched_from": "", "story": "Are you expected to run five Python type-checkers now?"}, {"id": 775043041, "item_id": 48440190, "url": "https://news.ycombinator.com/item?id=48440190", "by": "jchw", "date": "2026-06-07", "stance": "recommend", "quote": "other than `uv` and `ty`, I don't feel a whole lot has improved in Python land", "excerpt": "Aside from the LLM smell, the most egregious thing about this article to me is simply implying that it's going to be much of a surprise to people that PHP has improved since the \"fractal of bad design\" days. The most popular Hacker News post that matches \"php\" in HN Algolia is this post from 2019: https://stitcher.io/blog/php-in-2019 https://news.ycombinator.com/item?id=19917655 And while sentiment is understandably ", "context": "", "use_case": "Python type checking", "switched_from": "", "story": "Learn PHP in 2026 (Yes, Really)"}, {"id": 748723989, "item_id": 46795249, "url": "https://news.ycombinator.com/item?id=46795249", "by": "senko", "date": "2026-01-28", "stance": "recommend", "quote": "I immediately set up up ruff, ty, pytest, pre-commit hook", "excerpt": "Some more Django recommendations from Frank Wiles of Revsys (Django consultancy): https://frankwiles.com/questions/starting-django-projects/ I'll add a few of my own: * Set up the project using uv * I name the django project \"project\"; so settings are project/settings.py, main urls are project/urls.py, etc * I always define a custom Django user model even if I don't need anything extra yet; easier to expand later * s", "context": "", "use_case": "type checking", "switched_from": "", "story": "Notes on Starting to Use Django"}, {"id": 746994866, "item_id": 46687179, "url": "https://news.ycombinator.com/item?id=46687179", "by": "primaprashant", "date": "2026-01-19", "stance": "recommend", "quote": "recently ty. It's also from astral and it fixed type checking. You should check it out", "excerpt": "yeah, big fan of uv and ruff and recently ty. It's also from astral and it fixed type checking. You should check it out", "context": "", "use_case": "Python type checking", "switched_from": "", "story": "Ask HN: What non-LLM tools have meaningfully improved your dev productivity?"}, {"id": 743996803, "item_id": 46499800, "url": "https://news.ycombinator.com/item?id=46499800", "by": "bobajeff", "date": "2026-01-05", "stance": "neutral", "quote": "I'm really glad the article mentioned ty as I'm going to try that today.", "excerpt": "I've been using vscodium with basedpyright as I've thought it was supposed to be a open source version of pylance. I've got to say it's annoying about type errors and after changing it's setting to be less strict it still annoys me and I've even started littering my code with the their # ignore _____ . I'm really glad the article mentioned ty as I'm going to try that today. On zed I tried it but the font rendering hu", "context": "", "use_case": "Python type checking", "switched_from": "", "story": "I switched from VSCode to Zed"}, {"id": 741063792, "item_id": 46316487, "url": "https://news.ycombinator.com/item?id=46316487", "by": "Perepiska", "date": "2025-12-18", "stance": "warn", "quote": "Is shows me progressbar and \"98/99 files\" then hang.", "excerpt": "So I've decided to give it a try. Open installation instructions and went thru \"easy install with uvx\" / \"get and run our sgell script\" until get \"pip install ty\". I do not want use other tools so I started it in pet project directory as \"ty check\". Is shows me progressbar and \"98/99 files\" then hang. I restarted it and it hung on \"68/99\" and started using 100% of cpu core. I waited for 15 min and killed it. Try to g", "context": "", "use_case": "Python type checking", "switched_from": "", "story": "Announcing the Beta release of ty"}, {"id": 740736451, "item_id": 46296028, "url": "https://news.ycombinator.com/item?id=46296028", "by": "shrumm", "date": "2025-12-16", "stance": "recommend", "quote": "it looks like first class support from Ty is slated for the stable release, we'd love to try it.", "excerpt": "Thanks Astral team! We use Pydantic heavily, and it looks like first class support from Ty is slated for the stable release, we'd love to try it. While we wait... what's everyone's type checking setup? We run both Pyright and Mypy... they catch different errors so we've kept both, but it feels redundant. https://htmlpreview.github.io/?https://github.com/python/typing/blob/main/conformance/results/results.html suggest", "context": "", "use_case": "Python type checking", "switched_from": "", "story": "Announcing the Beta release of ty"}, {"id": 737627216, "item_id": 46101701, "url": "https://news.ycombinator.com/item?id=46101701", "by": "bbor", "date": "2025-11-30", "stance": "recommend", "quote": "This newly-minted fanboy recommends you try out ty w/ uv & ruff!", "excerpt": "Over the past few months, I've switched a few decently-sized python codebases from MyPy (which I used for years) to PyreFly (because the MyPy LSP ecosystem is somewhere between crumbling and deprecated at this point), and finally to Ty after it left beta this week. I'm now running a fully Astral-ized (rust-ized!) setup: 1. packaging with uv (instead of pip or poetry), 2. type checking with ty (instead of the default ", "context": "", "use_case": "Python type checking", "switched_from": "Pyrefly", "story": "Ty \u2013 A fast Python type checker, written in Rust"}]}