Adam Johnson :django: :python:
adamchainz@fosstodon.org
<p>:django: <a href="https://fosstodon.org/tags/Django" class="mention hashtag" rel="tag">#<span>Django</span></a> blogger and contributor<br />✍️ Author of three books on Django and Git<br />🍕 Django London co-organizer<br />🇬🇧 London / 🇵🇹 Lisbon</p>
Posts
-
View post
🎲 Just released pytest-randomly 5.0.0 The headline breaking change fixes combination with other test reordering plugins, including pytest-django. Previously, the same seed could produce different test orders between nearly-identical environments. Oops! Software is never finished: even this 11 year old well-scoped plugin needs the occasional big fix! #Python #pytest #Django https://pypi.org/project/pytest-randomly/
-
View post
⏳ I just released time-machine 3.5.1 with 13 bug fixes. Two were reported by humans. The rest came from prompting Claude Fable with just &quot;Find and fix bugs&quot;. None of them had a huge impact (this is a test library, after all), but they were all mistakes. The worst would leave time mocked after a test tearDownClass() failure, which would be pretty hard to debug. Crazy times. These machines can help us build the highest-quality software, if we want. #Python https://time-mach...
-
View post
@mahryekuh I know the approach has issues like your one, and no I don’t have a fix. I think the pytest-Django features works similarly to what my blog post describes so not sure what you’re seeing is different. I do think we could overhaul the whole missing variable system to copy from Jinja. Rather than detecting missing variables when named, it substitutes them with a special object that raises an error it logs something when rendered. But I’ve not had time to formalise this proposal.
-
View post
RE: https://infosec.exchange/@MrJico/117276690166679280 Great post on the cost and timing of decisions. Thanks @GitRon &gt; This is why we start with Django. Not because it is the best framework in some abstract sense, but because it comes with a working default for everything that is not business logic... #Django
-
View post
🎁 Introducing django-mcpz: easy peasy MCP servers in Django! This new package lets you build an MCP server in your Django project, letting LLMs do things on your site on behalf of your users. https://adamj.eu/tech/2026/09/15/introducing-django-mcpz/ #Django #AI
-
View post
✍️ Introducing django-crawl, a tool for crawling your local Django site, useful for quickly finding what’s broken or performing site-wide checks. https://adamj.eu/tech/2026/07/22/introducing-django-crawl/ #Django #Python
-
View post
RE: https://fosstodon.org/@wsvincent/116974491101390855 🐛 let the bugs crawl to you…
-
View post
✍️ Django’s release code words, up to the pending Django 6.1 “mélange”. https://adamj.eu/tech/2026/07/24/django-release-code-words-6.1/ #Python #Django
-
View post
✍️ New post on using unittest.mock to spy on function calls. 🕵️♂️ I recently learned how to use the wraps argument to track all calls to a target function for later assertions. Very useful for testing things like “is caching working?” without having to mock the function completely. #Python https://adamj.eu/tech/2026/07/25/python-spy-unittest-mock-wraps/
-
View post
✍️ New post on a Python testing technique: inspecting interleaved calls across multiple mocks with attached mocks. #Python https://adamj.eu/tech/2026/07/27/python-mock-attach-mock/
-
View post
What do you see?
-
View post
@webology@mastodon.social Oh, wow, I had not tracked this either. Oracle being Oracle is not really a surprise, but it's still pretty devastating for the many users of MySQL. I am very glad that we got MariaDB support into Django some time ago, so there should be little friction for migratng Django projects.
-
View post
✍️ New post detailing a workaround I came up with for “leak” beahviour from Python 3.14’s new garbage collection algorithm. Topical as @hugovk recently announced that the algorithm will be reverted in the next patch release! https://adamj.eu/tech/2026/04/20/django-python-3.14-incremental-gc/ #Django #Python
-
View post
🚀 Django 6.0 is out! This is a super exciting new release, introducing the tasks framework, template partials, Content Security Policy support, improved email handling, and lots more! Here are my annotated and expanded highlights from the release notes: https://adamj.eu/tech/2025/12/03/django-whats-new-6.0/ #Django
-
View post
✍️ New post introducing profiling-explorer, a tool for exploring Python profiling data (pstats files). Use it with the classic cProfile (now called profiling.tracing) or Python 3.15’s new sampling profiler, Tachyon (profiling.sampling). https://adamj.eu/tech/2026/04/03/python-introducing-profiling-explorer/ #Python
-
View post
I&#39;ve just done a pass over a client project with deptry, and it worked great for finding unused dependencies! https://deptry.com/ #Python
-
View post
Wow, thanks @hugovk for making my &quot;import datetime as dt&quot; recommendation official in the Python docs, with a link to my blog! https://github.com/python/cpython/commit/d3b6faf9758dce236d45c708a450437cdc3e97cd#diff-591e6aa401ebcd90f71f28b517b3d4437ba293920787df9ed06e037af0b07175 #Python
-
View post
This is an amazing opportunity to work on an amazing open source web framework with a lovely community! https://fosstodon.org/@django/114752618650214604
-
View post
Seen a new weird one today: a long slop blog post generated off a Django PR I recently reviewed. This company&#39;s whole blog is like this, trying to capture attention by getting LLMs to assemble &quot;content&quot; from public PRs and facts about their authors. So bizarre.
-
View post
✍️ New post showing how to implement HTTP Bearer authentication in Django. No need for a heavyweight framework: you can write token-based auth for a small API in just a few lines of code, for which this post shows a reusable decorator. https://adamj.eu/tech/2025/11/25/django-bearer-authentication/ #Django