Alex Waygood's Avatar

Alex Waygood

@alexwaygood

Software dev at Astral πŸ¦€. Sometimes do freelance journalism: Guardian, Telegraph, openDemocracy. Python core dev in my spare time 🐍. Studied 🎢 a while back.

2,117
Followers
547
Following
74
Posts
03.11.2024
Joined
Posts Following

Latest posts by Alex Waygood @alexwaygood

Preview
Moving Beyond Motion: Metaphors for Changing Sound This article argues that music offers experiences of change that are at odds with our common understanding of time. Specifically, I question the widespread belief that onward motion is a condition...

This is v good on the difficulties of writing about music without metaphors, which strikes me as v similar:

Moving Beyond Motion: Metaphors for Changing Sound: Journal of the Royal Musical Association: Vol 128, No 2 share.google/wMhCtObCdvF7...

03.02.2026 02:26 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
Writing about music is like dancing about architecture - Wikipedia

Is it *possible* to discuss fundamentally abstract things in understandably way without resorting to metaphors? en.wikipedia.org/wiki/Writing... always struck me as far too glib. Writing about economics or music is just Hard, but i think attempting to ban all metaphors will probably not solve things

03.02.2026 01:58 πŸ‘ 2 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0
Preview
ty: An extremely fast Python type checker and language server ty is an extremely fast Python type checker and language server, written in Rust, and designed as an alternative to mypy, Pyright, and Pylance.

so pumped for the ty beta to finally be here, we did so much great work it rules! astral.sh/blog/ty

16.12.2025 21:03 πŸ‘ 123 πŸ” 20 πŸ’¬ 3 πŸ“Œ 2
Post image

** Speaker announcement ** Our next speaker is Andrew "BurntSushi" Gallant!
Andrew is a member of the Rust project and maintains many important crates.

Info & tickets: 2026.rustweek.org

Do you also want to give a talk? Our CFP is open.
See you in Utrecht in May!

#rustlang #rustweek2026

27.11.2025 15:04 πŸ‘ 35 πŸ” 5 πŸ’¬ 0 πŸ“Œ 0

(It's a top priority for us to improve our Ruff default ruleset so that fewer people opt into `ALL`; that'll hopefully unblock us a bit from adding very opinionated rule)

11.11.2025 14:27 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

It could even be added as a Ruff rule now honestly (it doesn't require type inference to tell you off about using a class-level instance-attribute annotation!), but we're a bit reluctant to add highly opinionated Ruff rules right now due to the number of people who select `ALL`

11.11.2025 14:26 πŸ‘ 0 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0

Yeah, I think we'd definitely consider adding that kind of thing as a disabled-by-default rule. It would be low-priority for us right now, because we're scrambling to meet a beta deadline and we still haven't finished implementing the typing spec, but it sounds like it could be useful for folks

11.11.2025 14:24 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

This week, the #Python Software Foundation rejected a $1.5MM NSF grant, due to a requirement that the PSF abandon diversity work.

So I joined forces with Python folks (@offby1, @petrillic, @amethyst) and we're matching up to $12,000 of donations to the PSF. 🧡

29.10.2025 21:24 πŸ‘ 27 πŸ” 61 πŸ’¬ 1 πŸ“Œ 3
Preview
Differentiating between initialized and uninitialized assignments on class toplevel In Python, attributes that are declared at class toplevel but are uninitialized there cannot be directly accessed from the class itself at runtime. For instance, class Foo: x: int Foo.x # Runtime...

See also discuss.python.org/t/differenti..., where we and the pyrefly team tried to push for a change to the spec to improve things here. but I think at that point, neither we nor the pyrefly team realised how much ecosystem code depended on the legacy mypy/pyright behaviour ☹️

30.10.2025 11:33 πŸ‘ 0 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0

In particular, having different semantics to mypy/pyright here meant that ty was unusable for projects using sqlalchemy, which felt like too big a compatibility break, sadly

30.10.2025 00:43 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
Declared-only attributes are not accessible on instances of the class Β· Issue #384 Β· astral-sh/ty Summary When using SQLAlchemy's declarative models with Mapped type annotations, ty incorrectly reports that model class attributes (which represent database columns) can only be accessed on instan...

See github.com/astral-sh/ty.... We used to have the strict behaviour you're asking for here. But too much ecosystem code implicitly depends on type checkers assuming that variables declared in the class body will also be accessible on the class itself as well as instances 😞

30.10.2025 00:41 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Do you think the Gruffalo is lying to his child about the physical prowess of the big bad mouse or has he truly instilled a false memory in himself because he can’t accept the reality? This isn’t a take I guess but, makes you think

10.09.2025 20:38 πŸ‘ 19 πŸ” 2 πŸ’¬ 5 πŸ“Œ 0

Yes: having to do a tiny bit of extra work makes it feel more ritualised and special. There's also the performative nature of being able to collect *physical things* and *display them* as artifacts in your living room for others to see, which can e.g. start conversations!

10.08.2025 21:37 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Tip: pprint.pp does the same thing but has better (much less surprising!) defaults

28.07.2025 12:48 πŸ‘ 5 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
The 3.14 branch is locked for RC1 The 3.14 branch is now locked for all (except release managers and admins) until the 3.14.0 final release (scheduled for 2025-10-07). Reminder from the devguide: A branch preparing for an RC releas...

πŸ₯§πŸͺ΅πŸ”’ The branch is locked and first release candidate of Python 3.14 is being built!
discuss.python.org/t/the-3-14-b...
#Python #Python314 #release #ReleaseCandidate #RC1

22.07.2025 14:02 πŸ‘ 12 πŸ” 3 πŸ’¬ 2 πŸ“Œ 0

TYVM!

19.07.2025 16:45 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Ask not for whom the grant shapps, it shapps for thee

18.07.2025 07:52 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

I groaned out loud at the last sentence, thank you

16.07.2025 19:20 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Pydantic is another uv-based project already in that workflow β€” you might be able to look at that one for reference

16.07.2025 15:45 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Oh, that's very kind of you to ask! Sure β€” the workflow where we run the cattrs test suite every night is github.com/python/typin... . The workflow is also run on PRs that edit the workflow file itself. A PR updating that workflow would be welcome!

16.07.2025 15:42 πŸ‘ 0 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0
Preview
How MI5 piled falsehood on falsehood in court in the case of a spy who abused women Security Service continued to provide misleading evidence even after its lie was exposed, BBC can reveal.

This documentation is absolutely amazing, and does the BBC credit. To publicly dismantle MI5 lies like this is a feat of independent journalism

www.bbc.co.uk/news/article...

06.07.2025 09:14 πŸ‘ 0 πŸ” 2 πŸ’¬ 1 πŸ“Œ 0
Preview
The real Salt Path: how a blockbuster book and film were ... Penniless and homeless, the Winns found fame and fortune with the story of their 630-mile walk to salvation. We can reveal that the truth behind it is ve...

Fantastic yarn by @chloehadj.bsky.social this: about the falsehoods at the heart of a bestselling series of nature books:

06.07.2025 09:35 πŸ‘ 412 πŸ” 94 πŸ’¬ 26 πŸ“Œ 12

They're everywhere in Hertfordshire! We see them regularly over our house

16.06.2025 21:06 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
gh-112405: Optimise `pathlib.Path.relative_to` by AlexWaygood Β· Pull Request #112406 Β· python/cpython On main (Windows machine, PGO-optimised build): >python -m timeit -s "from pathlib import Path; p = Path('a/b/c/d/e/f/g')" "p.relative_to('a/b/c/d')" Running ...

I significantly sped up a pathlib function a while back using it! github.com/python/cpyth...

10.06.2025 08:40 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

We're working on it! Sorry for the delay. There were a couple of big changes to extension modules that landed in the last beta which have been tricky to reimplement in Python- build-standalone. But AFAIK we're nearly there

02.06.2025 16:04 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

It's fun if you look at different classical composers' methods of writing music. Some composers apparently found it easy/enjoyable, but the famous counter-example is Beethoven. His notebooks are full of bars of music angrily scribbled out as he struggled to express what he wanted

29.05.2025 19:13 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

I always felt exactly this way about writing. I loved having written something. Not so much writing it. It's probably a good thing I'm not a journalist anymore πŸ˜„

29.05.2025 18:59 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Pyrefly vs. ty: Comparing Python’s Two New Rust-Based Type Checkers A deep dive into Meta's pyrefly and Astral's ty - two new Rust-based Python type checkers that both promise faster performance and better type inference.

Just finished a new blog post! πŸŽ‰ πŸ‘€

This goes into a deep dive into Python's two new type checkers, Pyrefly by Meta and ty by Astral (the team behind uv and ruff)

Check it out here: blog.edward-li.com/tech/compari...

27.05.2025 21:41 πŸ‘ 19 πŸ” 7 πŸ’¬ 2 πŸ“Œ 0
Video thumbnail

huge fan of the 70 year old german guy who uploaded this 360 degree interactive panorama of inside a corn flakes bag. it's in the corn flakes article on

23.05.2025 06:58 πŸ‘ 7827 πŸ” 1140 πŸ’¬ 115 πŸ“Œ 71

We certainly don't want to force typing onto anybody who doesn't want to use it!

15.05.2025 02:50 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0