PythonHub Logo Python Hub

Interesting articles and projects for Python developers.


🌍 Follow Python Hub in your social environment

twitter.com/PythonHub

telegram.me/PythonHub

mastodon.social/@pythonhub

bluesky/@pythonhub.dev

Discord Python Hub Channel

WhatsApp Python Hub Channel


🍩 Support Python Hub

Buy me a Coffee

— On Patreon, just $1 per month


🫱 Suggest a Link

Share a news, article or interesting project. Link will be published after manual review.


🔋 Ethical Ads


✉️ Weekly Digest Email

Subscribe to Python Hub Weekly Digest


🍹 Latest

slamd
A 3D visualization library for Python. pip install, write a few lines, and you have a GPU-accelerated interactive 3D viewer.

voicetag
Speaker identification powered by pyannote and resemblyzer.

Rewriting a 20-year-old Python library
The article covers a full rewrite of the Akismet Python client to add async support, modern HTTP handling, and a richer response model while preserving usability. It emphasizes API ergonomics, testing support, and maintainability, while honoring the original author and evolving the library for modern Python.

MiniStack
LocalStack is no longer free. MiniStack is a fully open-source, zero-cost drop-in replacement. Single port · No account · No license key · No telemetry · Just AWS APIs, locally.

Lessons from Pyre that Shaped Pyrefly
High-performance type checking at Meta required a performance-first architecture and tight integration with developer workflows, enabling fast, incremental analysis at massive scale. The key lesson is that large Python codebases adopt typing successfully through gradual, low-friction tooling that prioritizes developer ergonomics and fast feedback over strict correctness.


💖 Most Popular in the Last Two Weeks

Rewriting a 20-year-old Python library
The article covers a full rewrite of the Akismet Python client to add async support, modern HTTP handling, and a richer response model while preserving usability. It emphasizes API ergonomics, testing support, and maintainability, while honoring the original author and evolving the library for modern Python.

Stop Passing Primitives Everywhere (Use Value Objects)
By replacing primitives with immutable Value Objects, you can centralize validation and eliminate domain ambiguity for types like prices and percentages. This pattern ensures that invalid states are impossible to represent, creating a self-documenting and more reliable codebase without the overhead of heavy frameworks.

You’ve Been Underusing Dataclasses (These Tricks Are Wild)
The video demonstrates seven powerful, lesser-known techniques using Python dataclasses, including automatic class registration, lightweight validation, cached derived values, and context manager patterns. It also shows practical uses such as CLI generation and explains advanced features like InitVar, highlighting how dataclasses can enable cleaner and more expressive Python designs.

Lessons from Pyre that Shaped Pyrefly
High-performance type checking at Meta required a performance-first architecture and tight integration with developer workflows, enabling fast, incremental analysis at massive scale. The key lesson is that large Python codebases adopt typing successfully through gradual, low-friction tooling that prioritizes developer ergonomics and fast feedback over strict correctness.

Comparing Python packages for A/B test analysis (with code examples)


📅 Weekly Digests Archive

2026-03-29 · 2026-03-22 · 2026-03-15 · 2026-03-08 · 2026-03-01 · 2026-02-22 · 2026-02-15 · 2026-02-08 · 2026-02-01 · 2026-01-25 · 2026-01-18 · 2026-01-11 · 2026-01-04 · 2025-12-28 · 2025-12-21 · 2025-12-14 · 2025-12-07 · 2025-11-30 · 2025-11-23 · 2025-11-16 · 2025-11-09 · 2025-11-02 · 2025-10-26 · 2025-10-19 · 2025-10-12 · 2025-10-05 · 2025-09-28 · 2025-09-21 · 2025-09-14 · 2025-09-07 · 2025-08-31 · 2025-08-24 · 2025-08-17 · 2025-08-10 · 2025-08-03 · 2025-07-27 · 2025-07-20 · 2025-07-13 · 2025-07-06 · 2025-06-29 · 2025-06-22 · 2025-06-15 · 2025-06-08 · 2025-06-01 · 2025-05-25 · 2025-05-18 · 2025-05-11 · 2025-05-04 · 2025-04-27 · 2025-04-20 · 2025-04-13 · 2025-04-06 · 2025-03-30 · 2025-03-23 · 2025-03-16 · 2025-03-09 · 2025-03-02 · 2025-02-23 · 2025-02-16 · 2025-02-09 · 2025-02-02 · 2025-01-26 · 2025-01-19 · 2025-01-12 · 2025-01-05 · 2024-12-29 · 2024-12-22 · 2024-12-15 · 2024-12-08 · 2024-12-01 · 2024-11-24 · 2024-11-17 · 2024-11-10 · 2024-11-03 · 2024-10-27 · 2024-10-20 · 2024-10-13 · 2024-10-06 · 2024-09-29 · 2024-09-22 · 2024-09-15 · 2024-09-08 · 2024-09-01 · 2024-08-25 · 2024-08-18 · 2024-08-11 · 2024-08-04 · 2024-07-28 · 2024-07-21 · 2024-07-14 · 2024-07-07 · 2024-06-30 · 2024-06-23 · 2024-06-16 · 2024-06-09 · 2024-06-02 · 2024-05-26 · 2024-05-19 · 2024-05-12 · 2024-05-05 · 2024-04-28 · 2024-04-21 · 2024-04-14 · 2024-04-07 · 2024-03-31 · 2024-03-24 · 2024-03-17 · 2024-03-10 · 2024-03-03 · 2024-02-25 · 2024-02-18 · 2024-02-11 · 2024-02-04 · 2024-01-28 · 2024-01-21 · 2024-01-14 · 2024-01-07 · 2023-12-31 · 2023-12-24 · 2023-12-17 · 2023-12-10 · 2023-12-03 · 2023-11-26 · 2023-11-19 · 2023-11-12 · 2023-11-05 · 2023-10-29 · 2023-10-22 · 2023-10-15 · 2023-10-08 · 2023-10-01 · 2023-09-24 · 2023-09-17 · 2023-09-10 · 2023-09-03 · 2023-08-27 · 2023-08-20 · 2023-08-13 · 2023-08-06 · 2023-07-30 · 2023-07-23 · 2023-07-16 · 2023-07-09 · 2023-07-02 · 2023-06-25 · 2023-06-18 · 2023-06-11 · 2023-06-04 · 2023-05-28 · 2023-05-21 · 2023-05-14 · 2023-05-07 · 2023-04-30 · 2023-04-23 · 2023-04-16 · 2023-04-09 · 2023-04-02 · 2023-03-26 · 2023-03-19 · 2023-03-12 · 2023-03-05 · 2023-02-26 · 2023-02-19 · 2023-02-12 · 2023-02-05 · 2023-01-29 · 2023-01-22 · 2023-01-15 · 2023-01-08 · 2023-01-01 · 2022-12-25 · 2022-12-18 · 2022-12-11 · 2022-12-04 · 2022-11-27 · 2022-11-20 · 2022-11-13 · 2022-11-06 · 2022-10-30 · 2022-10-23 · 2022-10-16 · 2022-10-09 · 2022-10-02 · 2022-09-25 · 2022-09-18 · 2022-09-11 · 2022-09-04 · 2022-08-28 · 2022-08-21 · 2022-08-14 · 2022-08-07 · 2022-07-31 · 2022-07-24 · 2022-07-17 · 2022-07-10 · 2022-07-03 · 2022-06-26 · 2022-06-19 · 2022-06-12 · 2022-06-05 · 2022-05-29 · 2022-05-22 · 2022-05-15 · 2022-05-08 · 2022-05-01 · 2022-04-24 · 2022-04-17 · 2022-04-10 · 2022-04-03 · 2022-03-27 · 2022-03-20 · 2022-03-13 · 2022-03-06 · 2022-02-27 · 2022-02-20 · 2022-02-13 · 2022-02-06 · 2022-01-30 · 2022-01-23 · 2022-01-16 · 2022-01-09 · 2022-01-02 · 2021-12-26 · 2021-12-19 · 2021-12-12 · 2021-12-05 · 2021-11-28 · 2021-11-21 · 2021-11-14 · 2021-11-07 · 2021-10-31 · 2021-10-24 · 2021-10-17 · 2021-10-10 · 2021-10-03 · 2021-09-26 · 2021-09-19 · 2021-09-12 · 2021-09-05 · 2021-08-29 · 2021-08-22 · 2021-08-15 · 2021-08-08 · 2021-08-01 · 2021-07-25 · 2021-07-18 · 2021-07-11 · 2021-07-04 · 2021-06-27 · 2021-06-20 · 2021-06-13 · 2021-06-06 · 2021-05-30 · 2021-05-23 · 2021-05-16 · 2021-05-09 · 2021-05-02 · 2021-04-25 · 2021-04-18 · 2021-04-11 · 2021-04-04 · 2021-03-28 · 2021-03-21 · 2021-03-14 · 2021-03-07 · 2021-02-28 · 2021-02-21 · 2021-02-14 · 2021-02-07 · 2021-01-31 · 2021-01-24 · 2021-01-17 · 2021-01-10 · 2021-01-03 · 2020-12-27 · 2020-12-20 · 2020-12-13 · 2020-12-06 · 2020-11-29 · 2020-11-22 · 2020-11-15 · 2020-11-08 · 2020-11-01 · 2020-10-25 · 2020-10-18 · 2020-10-11 · 2020-10-04 · 2020-09-27 · 2020-09-20 · 2020-09-13 · 2020-09-06 · 2020-08-30 · 2020-08-23 · 2020-08-16 · 2020-08-09 · 2020-08-02 · 2020-07-26 · 2020-07-19 · 2020-07-12 · 2020-07-05 · 2020-06-28 · 2020-06-21 · 2020-06-14 · 2020-06-07 · 2020-05-31 · 2020-05-24 · 2020-05-17 · 2020-05-10 · 2020-05-03 · 2020-04-26 · 2020-04-19 · 2020-04-12 · 2020-04-05 · 2020-03-29 · 2020-03-22 · 2020-03-15 · 2020-03-08 · 2020-03-01 · 2020-02-23 · 2020-02-16 · 2020-02-09 · 2020-02-02 · 2020-01-26 · 2020-01-19 · 2020-01-12 · 2020-01-05 · 2019-12-29 · 2019-12-22 · 2019-12-15 · 2019-12-08 · 2019-12-01 · 2019-11-24 · 2019-11-17 · 2019-11-10 · 2019-11-03 · 2019-10-27 · 2019-10-20 · 2019-10-13 · 2019-10-06 · 2019-09-29 · 2019-09-22 · 2019-09-15 · 2019-09-08 · 2019-09-01 · 2019-08-25 · 2019-08-18 · 2019-08-11 · 2019-08-04 · 2019-07-28 · 2019-07-21


Project by Ruslan Keba. Since 2012. Powered by Python. Made in 🇺🇦Ukraine.