Planet Python
Last update: April 27, 2026 01:45 PM UTC
April 27, 2026
Real Python
Quiz: Python's __all__: Packages, Modules, and Wildcard Imports
Test your understanding of wildcard imports, the dunder all variable, and how to control your module and package public APIs in Python.
"Michiel's Blog"
httpxyz one month in
One month after forking httpxyz, where we are now and where we're going
April 26, 2026
death and gravity
reader 3.23 released – OPML, hosted reader intro
April 24, 2026
Real Python
The Real Python Podcast – Episode #292: Becoming a Better Python Developer Through Learning Rust
How can learning Rust help make you a better Python Developer? How do techniques required by a compiled language translate to improving your Python code? Christopher Trudeau is back on the show this week with another batch of PyCoder's Weekly articles and projects.
Quiz: AI Coding Agents Guide: A Map of the Four Workflow Types
Check your understanding of how AI coding agents fit into your workflow through four interaction modes: IDE, terminal, pull request, and cloud.
The Python Coding Stack
Doubling Down on Python in The Age of AI
…and why you haven’t seen AI posts on here (yet)
Python GUIs
Streamlit Widgets — An Overview of Commonly Used Widgets in Streamlit
Streamlit is a powerful Python library designed to build interactive web apps with minimal code. One of its core features is an extensive collection of widgets that allow users to interact with the app in various ways, such as providing inputs, triggering actions, or visualizing data. Streamlit makes it easy to create these elements with simple, intuitive syntax.
April 23, 2026
PyCon
Asking the Key Questions: Q&A with the PyCon US 2026 keynote speakers: Rachell Calhoun and Tim Schilling
Python Software Foundation
Announcing Python Software Foundation Fellow Members for Q1 2026! 🎉
EuroPython
April Newsletter: First Keynote Speakers Announcements
First keynote speakers announcements, FinAid details, visa sponsorship information, and more!
Armin Ronacher
Equity for Europeans
April 22, 2026
Kay Hayen
Nuitka Release 4.0
This is to inform you about the new stable release of Nuitka. It is the extremely compatible Python compiler, “download now”.
Real Python
Altair: Declarative Charts With Python
Build interactive Python charts the declarative way with Altair. Map data to visual properties and add linked selections. No JavaScript required.
PyCharm
PyCharm for Django Fundraiser: Why Django Matters in the AI Era – And Why We’re Supporting It
Spend a few minutes around developer content, and it’s easy to come away with the impression that web apps now appear to almost write themselves. Everything that follows – review, verification, refactoring, debugging, and the open-source frameworks that make those apps dependable – gets less attention. AI can speed up code generation, but it does […]
Real Python
Quiz: SQLite and SQLAlchemy in Python: Move Your Data Beyond Flat Files
Test what you know about SQLite and SQLAlchemy in Python, from flat files and SQL to ORM classes and many-to-many relationships.
Python GUIs
Checkboxes in Table Views with a Custom Model — Show checkboxes for boolean values in PyQt/PySide table views
I have a QTableView with a custom QAbstractTableModel, and I want to add a column of checkboxes. Should I create a custom delegate class for the checkbox, or is there a simpler way to do this?
April 21, 2026
"Michiel's Blog"
Talk at PyAmsterdam on httpxyz
I'm giving a lightning talk on our new Python package httpxyz!
PyCoder’s Weekly
Issue #731: Visualize ML, Vector DBs, Type Checker Comparison, and More (April 21, 2026)
Tryton News
Tryton Release 8.0
We are proud to announce the 8.0 LTS release of Tryton.
This release provides many bug fixes, performance improvements and some fine tuning.
You can give it a try on the demo server, use the docker image or download it here.
As usual upgrading from previous series is fully supported.
Here is a list of the most noticeable changes:
Changes for the User
Client
There is now a visual hint on the widgets of modified fields. This way the user can see what was modified before saving.
Web
The tabs can now be reordered.
The logout action has been moved in the same menu as the notification. And an entry for the help was also added. This simplifies visually the content of the header.
Accounting
The reconciliation of accounting lines can now be automated by a scheduled task.
The general ledger display only flat balance which is more comprehensive for a flat list of accounts.
We added the option to calculate rounding for cash using the opposite rounding method. This existed already for standard currency rounding but was missing for cash rounding.
It is now possible to define some payment means on the invoice.
They can be set manually or using a rule engine.
The supported payment means for now are by bank transfer and direct debit.
When invoices are created from an external source (like PEPPOL), we check the amounts against the source when the invoice is validated or posted.
This allows to create invoices for which the calculation is different in Tryton than in the source and let the user manually correct them.
Tryton warns now when the user tries to create an over-payment.
Europe
We added all the VAT exception code on the taxes which can be used in electronic invoices.
Belgium
The taxes are now setup with UNECE and VATEX codes which is useful to generate and parse UBL invoice like on PEPPOL.
Document Incoming
The OCR module supports now the payment reference of the supplier. It is stored on the supplier invoice and used when making a payment.
E-document
We added a button on the PEPPOL document to trigger an update of the status. The users do not always want to wait for the scheduled task to update the status.
We enforce that the unit price of any invoice lines sent to PEPPOL is not negative. This is a rule from the PEPPOL network that is better to enforce before posting the invoice.
The UBL invoice template has been extended to render the buyer’s item identification, the allowance and charges, the billing reference, the payment means, VATEX codes and prepaid amounts.
The UBL invoice parser supports now the payment means.
The UN/CEFACT invoice template renders the payment means and the VATEX codes.
The UNECE module stores now the allowance, charge and special service code on the product. And it stores on the payment means the UNCL4461 code.
Incoterm
The incoterm defines now who is responsible for the export and import duties between the buyer and the seller.
Party
These identifiers have been added: Slovenian Corporate Registration Number, Belgian Social Security Number, Spanish Activity Establishment Code, Russian Primary State Registration Number, Mozambique Tax Number, French Trade Registration Number, Azerbaijan Tax Number and Senegal Tax Number.
The identifiers are now formatted to ease the reading.
We added a new menu entry that lists all the party identifiers.
A “Attn” field has been added to the address. This is useful to manage delivery addresses for web shop when the customer is shipping to another party.
Production
The “Cancellation Stock” group can now also cancel running and done productions.
It is not possible to define if the cost from the time sheets must be included in the production cost calculation. This is defined per work center.
Project
The work efforts are now numbered to ease the communication between employees.
An origin field has been added to the work efforts.
Purchasing
The invoice method “on shipment” has been renamed into “on fulfillment” to be more generic.
The quantities to invoice are now calculated for each purchase line. And purchases with at least one line to invoice is marked as “To invoice”.
Quality
We added a reference field to the inspections. This allows to store an external number if the inspection was performed by an external service.
Sales
The invoice method “on shipment” has been renamed into “on fulfillment” to be more generic.
The quantities to ship and to invoice are now calculated for each sale line. And sales with at least one line to ship or to invoice is marked as “To ship” or “To invoice”.
Stock
We added a special group which is allowed to cancel done shipments and moves. This is useful to correct mistakes.
The shipments have now a wizard to ease the creation of package. It simplifies the operation like putting a package inside another package, putting only a quantity of a move into a package etc.
For UPS carrier, the module charges the duties and taxes to the shipper accordingly to the incoterm.
We store now the original planned date of the requested internal shipments and the requested production. This is useful to find late requests.
Shop
The sales stores now the URL of the corresponding order to the web shop.
Shopify
We support now the payment terms from Shopify. When a sale has a payment term, it is always confirmed in Tryton.
The gift cards are now supported with Shopify. So when a gift card is sold on Shopify, no gift card is created on Tryton. And when the gift card is used on Shopify, it appears as a payment from the gift_card gateway.
The actions from Shopify are now logged on the sale order.
The pick-up delivery method is now supported for Shopify order. When the shipment is packed on Tryton, it is marked as prepared for pickup on Shopify.
New Modules
Account Payment Check
The Account Payment Check Module allows managing and printing checks as payments.
Account Stock EU Excise
The Account Stock EU Excise Module is used to generate the excise duties declaration for European countries.
Production Ethanol
The Production Ethanol Module calculates the gain or loss of alcohol volumes in production.
Sale Project Task Module
The Sale Project Task Module adds the option to create tasks when selling services. The fulfillment of the sales is linked to the progression of these tasks.
Stock Ethanol Module
The Stock Ethanol Module helps to track alcohol in warehouses.
Removed Modules
Those modules have been removed:
account_de_skr03account_esaccount_es_siigoogle_maps
You may find alternatives published by the community.
Changes for the System Administrator
Client
Web
The build of the web client does not require bower anymore.
The session is now stored as cookie. This prevents the session to be leaked in case of security issue with our Javascript code.
The web client uses now relative path to perform the server requests. This allows to serve the web client from a sub-directory.
Server
Basic authentication is now supported also for user application. This is useful when the consumer of the user application can not support bearer authentication.
Document Incoming
The Typless modules requires now to define all the fields set on the service in order to generate a complete feedback even for fields that Typless did not recognized.
E-document
It is now possible to setup a webhook for Peppyrus. This allows to receive the PEPPOL invoices as soon as they landed on the inbox.
Inbound Email
The inbound email gains an action to handle replies to chat channels. The text content above a specific line is added as message to the corresponding channel.
Changes for the Developer
This release removes the support for Python 3.9 and adds Python 3.14.
Server
It is now possible to filter the user being notified by a scheduled task using a domain. This is useful for example when the notification applied only to users having access to a specific company.
The report engine can now use MJML as base format and convert it to HTML. This simplifies the creation of email template with compatibility against most common email clients.
The Field.sql_column receives now a tables dictionary and Model as argument.
The Field.sql_column can now be override by a method on the Model named column_<field name>(tables).
This extends the possibilities for more complex type of fields.
With those improvements, we can not support Function fields without getter but only SQL expression via the column_<field name>. Those fields are automatically searchable and sortable without the need to define domain_<field name> nor order_<field name> methods.
A last_modified field has been added to ModelSQL to avoid to duplicate the code write_date or create_date.
The fmany2one field can now be based on Function field.
We have upgraded the PostgreSQL backend to use Psycopg 3. By default Tryton is using server-side binding which allows to remove the limitation on the size of the list of IDs that can be passed by using array for the in operators.
Thus the reduce_ids and grouped_slice (without size) tools has been deprecated and the Database.IN_MAX replaced by backend.MAX_QUERY_PARAMS.
The delete and delete_many methods have been added to the FileStore API which allows to remove the files of Binary fields when they are deleted or updated.
The button states are now checked when executed with check for access. This ensure that a client can not execute a button that should be disable.
A notify_user method has been added to ModelStorage to ease the notification
of a user.
A contextual _log key can be used to force the logging of events even if they do not originate from a user.
New routes have been added to manage the login/logout with cookie.
It is now possible to include sub-directories in the tryton.cfg. This is useful when developing large module to split it into sub-directories.
A new attribute in the XML data allows to define a value as a path relative to the place of the XML file. This feature works in combination with the sub-directories to avoid to repeat the directory name.
The chat channel now send new messages by email new messages to followers who subscribed with emails.
It is now possible to mount the WSGI application under a prefix.
The RPC calls are not prefixed by /rpc/.
A generic REST API has been added as a user application.
It allows to search, retrieve, update and delete any record of a ModelStorage with the access right enforced for the user and to launch any RPC action and report.
The ModelStorage.__json__ method defines the default fields to include in the response based on usage but the client can also explicitly request the fields (with dotted notation).
The context is passed as value of the X-Tryton-Context header encoded in JSON. The language is selected from the Accept-Language header of the client. And the search can be paginated using the Range header.
Naiad
Naiad is a new Python library to access Tryton’s REST API.
Accounting
We removed the default value for the invoice’s type. It must be set explicitly.
An origin invoices field has been added to the invoice.
The Stripe payment module uses now the version 2025-09-30.clover of the API.
E-document
The UBL template filters now the additional documents per MIME type.
Web Shop
Shopify
We replaced the unmaintained ShopifyAPI library by the new shopifyapp.
2 posts - 1 participant
Real Python
Leverage OpenAI's API in Your Python Projects
Learn how to use the ChatGPT API with Python's openai library to send prompts, control AI behavior with roles, and get structured outputs.
Quiz: Leverage OpenAI's API in Your Python Projects
Test your understanding of the ChatGPT API with Python, including role-based messages, structured outputs, and API key management.
Quiz: uv vs pip: Python Packaging and Dependency Management
Test your knowledge of uv vs pip for Python packaging, dependency management, and reproducible installs. See which tool fits your workflow.
April 20, 2026
Real Python
Gemini CLI vs Claude Code: Which to Choose for Python Tasks
Gemini CLI vs Claude Code: compare setup, performance, code quality, and cost to find the right Python AI coding tool for your workflow.
Mike Driscoll
Textual – Logging to File and to Textual Console
When you are developing a user interface, it can be valuable to have a log of what’s going on. Creating a log in Textual, a text-based user interface, is even easier than creating one for wxPython or Tkinter. Why? Well, because Textual includes a logger that is compatible with Python’s own logging module, so it’s […]
The post Textual – Logging to File and to Textual Console appeared first on Mouse Vs Python.
Real Python
Quiz: How to Conceptualize Python Fundamentals for Greater Mastery
Check your understanding of a framework for conceptualizing Python fundamentals, from defining concepts to comparing similar ideas.

