Chris Withers
banner
chris.withers.org
Chris Withers
@chris.withers.org
Python, music, bit of BBQ and things…
Why novel? Even a derivative language optimised for LLM usage and palatable to human eyes would be fascinating…
November 7, 2025 at 10:27 PM
He’s also an idiot 🤣 (only taking about the game, to be clear!)
November 6, 2025 at 11:08 PM
Sounds useful! Do you have a link to the ones that worked for you?
November 2, 2025 at 6:32 AM
I’m macOS so actually recommend the Ivanky ones. But: still need KVM to multiplex them (and a desktop) into one set of displays and peripherals…
November 2, 2025 at 6:31 AM
Oh, try a triple 4K KVM… and it’s still not fucking reliable 😭
November 1, 2025 at 6:00 AM
...oh I wish social media supported posting code snippets properly :-/
October 29, 2025 at 9:05 AM
📊 sequence() - Flexible sequence comparisons

Full control over ordering and partial matching:

from testfixtures import sequence

compare(results, expected=sequence(partial=True, ordered=False)(
Record(id=3),
Record(id=5),
]))
October 29, 2025 at 9:05 AM
🔄 unordered() - Order-independent exact matching

Database queries don't guarantee order? No problem:

from testfixtures import unordered

compare(query_results, expected=unordered([
User(id=1, name='Alice'),
User(id=3, name='Charlie'),
]))
October 29, 2025 at 9:05 AM
✅ contains() - Check only specific items are present:

from testfixtures import contains
compare(event_log, expected=contains([
Event(type='user.login'),
Event(type='purchase.completed'),
]))

For logging, though, check out LogCapture: testfixtures.readthedocs.io/en/latest/lo...)
Testing logging - testfixtures 10.0.0 documentation
Python includes a logging package, and while it is widely used, many people assume that logging calls do not need to be tested or find the prospect too daunting. To help with this, testfixtures…
testfixtures.readthedocs.io
October 29, 2025 at 9:05 AM

🎯 like() - Partial object comparisons:

from testfixtures import compare, like
compare(api.get_users(), expected = [like(User, email='alice@example.com', role='admin')])

Don't worry about attributes you don't care about!
October 29, 2025 at 9:05 AM
Does this fix circular imports too or just speed of startup?
October 21, 2025 at 4:40 AM
I think everyone is!
October 21, 2025 at 4:39 AM
Consider the world around us and you will have your answer ;-)
October 8, 2025 at 9:59 AM
Why yes, I am working my way through The Complete Robot, why do you ask? 😅
October 2, 2025 at 7:30 AM