Planet Python - Latest News Tracking & Analysis


Latest News Politics , Business , Finance , Technology , World News & Opinion & Tracking & Analysis.

United States of America
Website
🇺🇸 english
Technology
#38
Planet Python

Planet Python

Primary focus: Technology


Recent Reportage

Latest coverage from Planet Python

Mike C. Fletcher: PyVRML97 2.3.4b1

Continuing on with the Open Source work. PyVRML97 2.3.4b1 is almost all build and CI process updates. There are a few minor fixes for modern Python's where bool can't be used as a list index and a change for NumPy 2.x array comparison failures. This beta is mostly just so that we can pull it from OpenGLContext's alpha when it's released.

11 hours ago

Christian Ledermann: Buzzword Bingo: An Experiment in Spec-Driven AI Development

This is a submission for Weekend Challenge: Passion Edition What I Built I built Buzzword Bingo, a multiplayer bingo game for conferences, webinars and meetings where players mark off the inevitable buzzwords as they appear. The application allows someone to create a game, share a link with participants, and let everyone play along on their own unique bingo board. The first player to complete a row, column or diagonal wins. Under the hood, though, the game itself was almost secondary. The real goal was to answer a question I had been wondering about for a while: How far can I push Claude with specification-driven development while still achieving reliable type coverage and maintaining the coding standards I expect from a production Python project? The project became an experiment in AI-assisted software engineering, strict typing, and how much guidance modern coding agents actually need to produce maintainable software. Demo Live demo coming soon. Repository: bsbingo on GitHub Code Repository: bsbingo GitHub repository How I Built It Specification Driven Development The project followed a specification-driven approach using Speckit. Rather than iterating directly in code, I created specifications describing what the system should do and allowed Claude to implement them. A big accelerator for the project was using scaf for the initial bootstrap. Rather than spending the first few hours wiring together repository structure, CI, containerization, infrastructure, and developer tooling, I started from a production-oriented foundation and focused on shaping it to match my own preferences. Having Kubernetes manifests, Terraform, deployment pipelines, and modern Python tooling available from day one made it much easier to concentrate on the actual experiment: how far specification-driven development and AI coding agents could take the application. I ended up needing three major specifications: Project scaffolding Starting from a project generated with scaf. Refining the generated structure to match my personal preferences. Adding all the infrastructure and tooling I typically expect in a modern project. Backend implementation Django models and business logic. Server-rendered templates. HTMX interactions. Capability URL based authorization. Frontend implementation Visual styling and user experience. Responsive layouts. End-to-end testing using Playwright. Django Without the JavaScript Framework The application uses: Django HTMX Django templates PostgreSQL HTMX turned out to be an excellent fit for this type of application. Most interactions consist of: clicking a square, sending a POST request, returning an updated HTML fragment, swapping it into the page. No client-side state management was required. Capability URLs One design decision I particularly liked was using capability URLs instead of authentication. Each board receives a unique UUID: /board/5b97b663-1f2f-4e54-8d2f-f45f3272f870/ Possession of the URL grants access to that board. This removes the need for: user accounts, sessions, authentication, authorization logic. For a lightweight conference game this felt like the right trade-off. Going All-In On Type Safety I care a lot about clean code and strong typing in Python, so I decided to push the type system as far as possible. Instead of relying on a single type checker, I combined: ty zuban pyrefly This was paired with a strict ruff configuration with almost every rule enabled. One of the goals of the experiment was to see whether Claude could operate effectively within these constraints. What Worked This instruction worked surprisingly well: Prefer precise, narrow types (Enum, NewType, TypedDict, dataclasses with Final or Literal fields) over Any, untyped dict or list, or stringly-typed values. Illegal states should be unrepresentable in the type system rather than guarded against only at runtime. Once Claude had a few examples to follow, it started producing significantly better type annotations and more expressive domain models. Pre-commit hooks proved to be the first line of defence, catching issues before they ever reached CI. Linters, formatters, and all three type checkers ran automatically on every commit, providing rapid feedback and keeping the codebase consistent throughout the experiment. To avoid spending time hand-crafting the configuration, I used pc-init to generate a strict .pre-commit-config.yaml tailored for modern Python projects. This ensured that formatting, linting, and type checking became part of the development workflow rather than an afterthought. What Didn't Work Claude struggled with this instruction: All Python code MUST be fully type-annotated; untyped function signatures and untyped module-level values are not permitted. Instead of fixing missing annotations, it occasionally attempted to disable checks in pyproject.toml. Some manual intervention and code review were required to steer it back towards the desired standards. The experience reinforced an observation I've made repeatedly with coding agents: Agents optimize for making the error disappear, not necessarily for preserving your engineering constraints. If you care about those constraints, you still need strong feedback loops. Type Checker Observations Running all three type checkers together was still faster than a single mypy run. Interestingly, they complemented each other rather than duplicating effort: ty found some issues the others missed. pyrefly found different classes of problems. zuban felt the closest to mypy and was by far the easiest to configure. The newer type-checking ecosystem is still catching up with mypy in terms of documentation and examples, so reaching the level of strictness I wanted involved a fair amount of experimentation. Prize Categories Not submitting for any specific prize category. The real prize was finding out how far AI-assisted, specification-driven development can be pushed before human review becomes the limiting factor.

15 hours ago

Mike C. Fletcher: PyOpenGL 4.0.0a1

I've been trying to make some time for Open Source projects again. I've been using LLMs for much of the coding because the vast bulk of it at this point is just grunt work. First up is PyOpenGL. The tests the LLM produced turned up a bunch of bugs in the core that have lain dormant for years because the endpoints weren't getting used. The LLM tests are not particularly fun or interesting, but they did a pretty good job of finding wrapping errors. They also exercised GLES and EGL enough to make it far more reasonable to actually use those two interfaces. Shout out to glfw python library for working cleanly on the Wayland only environment. Definitely helped to find the hidden GLX dependencies we had throughout the Linux platform implementation. One of the biggest ones there was the GLUT library. The other thing that came out was the GLE library being legacy (compatibility) OpenGL. PyOpenGL 4.0.0a1 is classified as a major release mostly because of the abandonment of old Pythons (<3.9) and old Numpy (<2). Other than that there's mostly just bug-fixes that came from the new test suites. GLU* gluUnProject4 missing arguments* gluNewQuadric/gluQuadricCallback fix the callback mechanism to work like Nurbs code* gluTessVertex/gluTessBeginPolygon and combine callback, original object return fixes* gluGetNurbsProperty added, allocates the output* gluNurbsCallbackData(EXT) argtype fix glGet Sizes* sizing tables regenerated based on results from size probing, lots of incorrect sizes fixed; note that these fixes are constrained to extensions I happen to have access to on my platforms* fix the code generator's constant generation* glGetPolygonStipple fixed size output* glGetCompressedTexImage glGetTexImageCompressed was ignoring level and using an ARB constant Wrappers* remove double wrapping on glGetHistogramParameter{f,i}vEXT, glGenVertexArrays, glDrawBuffersEXT (which was also mis-named glDrawBuffers)* glHistogram double wrapped as well, which was crashing vertex_array_object on import which was then causing higher level code to treat the extension as unsupported 64-bit Integer Arrays* GL_INT64 / GL_UNSIGNED_INT64 new array types for all of the array handlers No-Numpy Operation* ctypesarrays zeros/ones handler* a few spots where GLchar arrays were needed as return types* gl(Get)ProgramNamedParameter*NV input size fix* glGetActiveAttribARB optional bufSize parameter added* ARB.vertex_shader allow passign in size parameter* allow passing a ctypes char_p as shader-text GLES* images module for GLES* friendly wrappers mimicing the GL ones for lots of endpoints* glGetString/glGetStringi restype fix* Normalising of GLES extension names to the GL_* form (same as GL) General Bug Fixes* Large constant wrapping fix* Caching of extension/version data per-context* Core/version extension handles cases where VERSION is not the *first* token* ShaderProgram.retrieve() fix for unpacking glGetProgramBinary* input-or-output converter for args that can be either* ArrayDatatype.get_ffi_argtype etc PyPy specific mechanisms for array interactions Logging* make the log decorator more type-check friendly Packaging* License declaration fixes for more modern packaging tools There shouldn't be many significant regressions, as almost everything is a correctness fix, but there's a lot of new code, particularly for the GLES improvements. The alpha is up now for those who want to test the changes against their codebase, but this is an alpha release, so there may be more significant code changes as we move toward a 4.0.0 final release. There's still some work to do on the OpenGLContext release, but the teaser image above should give you an idea where it's going. It's a direct render of the Khronos sample asset A Beautiful Game

16 hours ago

Publishing Activity

Daily article output trend

Python⇒Speed: 6× faster binary search: from compiled code to mechanical sympathy

How do you speed up computational Python code? A common, and useful, starting point is: Pick a good algorithm. Use a compiled language to write a Python extension. Maybe add parallelism so you can use multiple CPU cores. But what if you need more speed? Consider the following real problem, one of the steps in scikit-learn’s gradient histogram boosting algorithm: You have a large array of floating point numbers. You want to assign them to the integer range 0-254, spread out evenly. scikit-learn implements this by splitting up the full range of float values into 255 buckets, creating a sorted array of bucket boundaries, and then using binary search to choose the appropriate bucket for each value. The binary search is implemented in a compiled language, and it can run in parallel on multiple cores. Recently, as part of my work at Quansight, and inspired by two posts by Paul Khuong, I sped up this implementation significantly. How? By making sure the code wasn’t fighting against the CPU. In this article I’m going to walk you through that speed-up, demonstrated on a simplified example. Then I’m going to demonstrate a series of additional optimizations, with the final version running 6× faster than the original one. It’s worth knowing that I will be speeding through mentions of many different low-level hardware topics: instruction-level parallelism, branch (mis)prediction, memory caches, SIMD, and more. This is only one article, it can only briefly introduce you to what’s possible, it can’t function as an in-depth tutorial. So I’ll talk about how you can learn more about these topics at the end of the article. Read more...

2 days ago

Mike Driscoll: An Intro to Spiel – Creating Presentations in Your Terminal with Python

Have you ever wanted to create a presentation in your computer’s terminal? While this is an uncommon need, a clever open source developer has provided a solution to this problem! The project is called Spiel, and while it is currently archived, the idea is pretty cool. Spiel uses the Rich package to create the slides for your presentation. Note: while the GitHub page doesn’t explain why the project is archived, it appears to use a very old version of Textual which cannot be upgraded. Let’s spend a little time learning how this all works. Installing Spiel According to the Spiel GitHub page, you can try Spiel without even installing it if you have docker installed. Here’s how to try Spiel: docker run -it --rm ghcr.io/joshkarpel/spiel However, for the purposes of this tutorial, you really should install Spiel. To do that, you will be using pip. Open up your terminal and run the following: pip install spiel Feel free to create a Python virtual environment first if you don’t want to install Spiel into your global Python packages. Once you have Spiel installed, you can check that it is working by running the Spiel demo, like this: spiel demo present If that works, you are good to go! Creating Your Presentation The documentation gives a good example of how to create a one-slide presentation. Here’s their example: from rich.console import RenderableType from spiel import Deck, present deck = Deck(name=Your Deck Name) @deck.slide(title=Slide 1 Title) def slide_1() -> RenderableType: return Your content here! if __name__ == __main__: present(__file__) According to the documentation, there are two ways to add slides: Use the decorator like in the example above Use `deck.add_slides()` and pass in one or more Slide objects Here is a more complete example that creates a couple of custom slides: from rich.align import Align from rich.console import RenderableType from rich.style import Style from rich.text import Text from spiel import Deck, Slide, present def make_slide( title_prefix: str, text: Text, ) -> Slide: def content() -> RenderableType: return Align(text, align=center, vertical=middle) return Slide(title=f{title_prefix} Slide, content=content) deck = Deck(Test Deck) title_slide = make_slide(title_prefix=First, text=Text(Python 101 - All About Lists, style=Style(color=blue))) intro_slide = make_slide(title_prefix=Second, text=Text(A Python list is, style=Style(color=red)) ) deck.add_slides(title_slide, intro_slide) if __name__ == __main__: present(__file__) When you run this code in your terminal, you will see something like this: You can move to the next or previous slide using the arrow keys on your keyboard. If you want to exit, press CTRL+C. Wrapping Up Spiel seems like a neat package. It’s a shame that it is currently archived. Hopefully, the author will reopen it at some point, or someone else will pick up the torch. In the meantime, you can easily use it in a Python virtual environment and give it a try. The post An Intro to Spiel – Creating Presentations in Your Terminal with Python appeared first on Mouse Vs Python.

2 days ago

Talk Python to Me: #554: Trustworthy AI in Healthcare and Longevity

You ask an AI a question and it answers with total confidence. Most of the time, a confidently wrong answer is just an annoyance. But what if the question is medical, and there's a real patient on the other end? In that world, a hallucination isn't a bug, it's a patient-safety event. Sumit Gundawar is a London-based software engineer who builds the clinical platform for a UK longevity and aesthetic-medicine clinic, and his whole argument is that in high-stakes AI, the model is the easy part. Earning trust is the real engineering. We dig into grounding, refusal logic, human-in-the-loop design, and the messy frontier of longevity and biohacking, plus a live demo of an assistant that refuses to answer when it can't back up the claim. Let's get into it.<br/> <br/> <strong>Episode sponsors</strong><br/> <br/> <a href='https://talkpython.fm/sixfeetup'>Six Feet Up</a><br> <a href='https://talkpython.fm/training'>Talk Python Courses</a><br/> <br/> <h2 class=links-heading mb-4>Links from the show</h2> <div><strong>Guest</strong><br/> <strong>Sumit Gundawar</strong>: <a href=https://www.linkedin.com/in/sumit-gundawar-759470129/?featured_on=talkpython target=_blank >linkedin.com</a><br/> <br/> <strong>Course transcripts announcement</strong>: <a href=https://talkpython.fm/blog/posts/announcing-german-subtitles-on-courses/ target=_blank >talkpython.fm/blog</a><br/> <br/> <strong>Sumit Gundawar - JAX London Speaker</strong>: <a href=https://jaxlondon.com/speaker/sumit-gundawar/?featured_on=talkpython target=_blank >jaxlondon.com</a><br/> <strong>Anthropic</strong>: <a href=https://anthropic.com/?featured_on=talkpython target=_blank >anthropic.com</a><br/> <strong>OpenAI Platform</strong>: <a href=https://platform.openai.com/?featured_on=talkpython target=_blank >platform.openai.com</a><br/> <strong>Anthropic</strong>: <a href=https://anthropic.com/?featured_on=talkpython target=_blank >anthropic.com</a><br/> <strong>LangChain</strong>: <a href=https://langchain.com/?featured_on=talkpython target=_blank >langchain.com</a><br/> <strong>OWASP</strong>: <a href=https://owasp.org/?featured_on=talkpython target=_blank >owasp.org</a><br/> <strong>Pydantic</strong>: <a href=https://pydantic.dev/?featured_on=talkpython target=_blank >pydantic.dev</a><br/> <strong>EU AI Act - Regulatory Framework</strong>: <a href=https://digital-strategy.ec.europa.eu/en/policies/regulatory-framework-ai?featured_on=talkpython target=_blank >digital-strategy.ec.europa.eu</a><br/> <strong>HIPAA - HHS</strong>: <a href=https://www.hhs.gov/hipaa?featured_on=talkpython target=_blank >www.hhs.gov</a><br/> <strong>NHS</strong>: <a href=https://www.nhs.uk/?featured_on=talkpython target=_blank >www.nhs.uk</a><br/> <strong>Llama</strong>: <a href=https://llama.com/?featured_on=talkpython target=_blank >llama.com</a><br/> <strong>Qwen - QwenLM on GitHub</strong>: <a href=https://github.com/QwenLM?featured_on=talkpython target=_blank >github.com</a><br/> <strong>OpenAI Platform</strong>: <a href=https://platform.openai.com/?featured_on=talkpython target=_blank >platform.openai.com</a><br/> <strong>Hugging Face</strong>: <a href=https://huggingface.co/?featured_on=talkpython target=_blank >huggingface.co</a><br/> <strong>Llama</strong>: <a href=https://llama.com/?featured_on=talkpython target=_blank >llama.com</a><br/> <strong>Granola</strong>: <a href=https://www.granola.ai/?featured_on=talkpython target=_blank >www.granola.ai</a><br/> <strong>HIPAA - HHS</strong>: <a href=https://www.hhs.gov/hipaa?featured_on=talkpython target=_blank >www.hhs.gov</a><br/> <strong>CodeRabbit</strong>: <a href=https://www.coderabbit.ai/?featured_on=talkpython target=_blank >www.coderabbit.ai</a><br/> <strong>Cursor Origin</strong>: <a href=https://cursor.com/origin?featured_on=talkpython target=_blank >cursor.com</a><br/> <strong>GitHub Status</strong>: <a href=https://www.githubstatus.com/?featured_on=talkpython target=_blank >www.githubstatus.com</a><br/> <strong>Midjourney Medical</strong>: <a href=https://www.midjourney.com/medical?featured_on=talkpython target=_blank >www.midjourney.com</a><br/> <strong>Neko Health</strong>: <a href=https://www.nekohealth.com/?featured_on=talkpython target=_blank >www.nekohealth.com</a><br/> <strong>CERN</strong>: <a href=https://home.cern/?featured_on=talkpython target=_blank >home.cern</a><br/> <strong>ATLAS Experiment</strong>: <a href=https://atlas.cern/?featured_on=talkpython target=_blank >atlas.cern</a><br/> <br/> <strong>Watch this episode on YouTube</strong>: <a href=https://www.youtube.com/watch?v=pp2v9paEoq4 target=_blank >youtube.com</a><br/> <strong>Episode 554 deep-dive</strong>: <a href=https://talkpython.fm/episodes/show/554/trustworthy-ai-in-healthcare-and-longevitytakeaways-anchor target=_blank >talkpython.fm/554</a><br/> <strong>Episode transcripts</strong>: <a href=https://talkpython.fm/episodes/transcript/554/trustworthy-ai-in-healthcare-and-longevity target=_blank >talkpython.fm</a><br/> <br/> <strong>Theme Song: Developer Rap</strong><br/> <strong> Served in a Flask </strong>: <a href=https://talkpython.fm/flasksong target=_blank >talkpython.fm/flasksong</a><br/> <br/> <strong>---== Don't be a stranger ==---</strong><br/> <strong>YouTube</strong>: <a href=https://talkpython.fm/youtube target=_blank ><i class=fa-brands fa-youtube></i> youtube.com/@talkpython</a><br/> <br/> <strong>Bluesky</strong>: <a href=https://bsky.app/profile/talkpython.fm target=_blank >@talkpython.fm</a><br/> <strong>Mastodon</strong>: <a href=https://fosstodon.org/web/@talkpython target=_blank ><i class=fa-brands fa-mastodon></i> @talkpython@fosstodon.org</a><br/> <strong>X.com</strong>: <a href=https://x.com/talkpython target=_blank ><i class=fa-brands fa-twitter></i> @talkpython</a><br/> <br/> <strong>Michael on Bluesky</strong>: <a href=https://bsky.app/profile/mkennedy.codes?featured_on=talkpython target=_blank >@mkennedy.codes</a><br/> <strong>Michael on Mastodon</strong>: <a href=https://fosstodon.org/web/@mkennedy target=_blank ><i class=fa-brands fa-mastodon></i> @mkennedy@fosstodon.org</a><br/> <strong>Michael on X.com</strong>: <a href=https://x.com/mkennedy?featured_on=talkpython target=_blank ><i class=fa-brands fa-twitter></i> @mkennedy</a><br/></div>

3 days ago

EuroPython: Humans of EuroPython: Daria Linhart Grudzień

EuroPython wouldnapost exist without the wonderful volunteers who pour countless hours into organising it. From contracting the venue to selecting and confirming talks and workshops, hundreds of hours of loving work go into making each edition the best one yet.Join us in celebrating one of the humans behind the keyboard. Today, weaposre delighted to share an interview with Daria Linhart Grudzień, our Communications Lead.Thank you for being the voice of the EuroPython community, Daria! EP: What first inspired you to volunteer for EuroPython? And which edition of the conference was it?I got pulled into the team in 2025, tempted with a chance to work with a friend on organising an event for juniors in tech in Czechia, which became the Beginners Day Unconference. I appreciated that a major European conference offered a program for the local community.EP: Did you make any lasting friendships or professional connections through volunteering?Lots! The EuroPython team is full of kind and fun people who like to do interesting things in their free time. Being a member of the core organising team gave me a chance to get to know a lot of folks. For the first time I feel like I’m going to the conference to meet up with friends.EP: What was your primary role as a volunteer, and what did a typical day of contributing look like for you?After doing the Humans of EuroPython interviews during the winter, I got invited to lead the Communications Team for the 2026 edition. My days include a variety of tasks,which I love. From building a productive team, working on finding media partners, occasional web development, co-ordinating with other teams, building documentation for the next edition, to making sure folks in the team enjoy contributing - I do what’s needed to make sure EuroPython speaks to our community with a friendly, slightly quirky, but always inclusive voice.EP: Was there a moment when you felt your contribution really made a difference? There were a few. Some of the core Python developers reached out to me personally saying that the Communications Team is doing a great job. Seeing our social media posts engage and resonate with the community is another reminder that our work is making an impact. EP: Would you volunteer again, and why?Absolutely. Contributing to EuroPython, I feel empowered to bring ideas, experiment, and work on impactful initiatives which benefit the community. I’ve been able to take on roles and projects which allowed me to learn, get out of my comfort zone, and grow. I hope to do more of that in the future, and this is a fantastic group of people to do this with.EP: If you could describe the volunteer experience in three words, what would they be?Ownership. Impact. Collaboration.EP: Did you have any unexpected or funny experiences at EuroPython?I got invited to talk about the conference on the Real Python Podcast. This wasn’t on my bingo card for this year

3 days ago

Python Software Foundation: The PSF D&amp;I Workgroup Are Starting Office Hours in July!

Starting Tuesday 28 July, 2026, the PSF Diversity Inclusion (DI) Workgroup is opening its virtual doors once a month on Discord. Come chat with workgroup members from all over the world!Doing diversity and inclusion work in tech can feel isolating sometimes. You might be organizing a meetup, writing a code of conduct, trying to get funding for your community, or helping people feel welcome, often in your spare time, and wondering if anyone else is wrestling with the same things.They are. We are! And we would love to get all of us in the same room.This July, the PSF DI Workgroup will be hosting monthly office hours within Discord. These will be open, text-based conversations where we encourage you to ask questions, share what you are working on, and connect with other people who care about making the Python community more welcoming.The detailsThe PSF DI Office Hours will be on the last Tuesday of every month. Because our community is spread across the globe, we will alternate between two times so we can cover as many time zones as possible:1 PM UTC / 9 AM US Eastern9 PM UTC / 5 PM US EasternOur first session will be on Tuesday, 28 July 2026 at 1 PM UTC. Here is roughly what that looks like around the world:RegionLocal time on 28 JulyUS Pacific, Los Angeles – (UTC-7h)6:00 AMUS Eastern, New York – (UTC-4h)9:00 AMBrazil, São Paulo – (UTC-3h)10:00 AMUTC1:00 PMWest Africa, Lagos – (UTC+1h)2:00 PMCentral Europe, Amsterdam / Berlin / Madrid – (UTC+2h)3:00 PMEast Africa, Nairobi – (UTC+3h)4:00 PMIran, Tehran – (UTC+3:30h)4:30 PMIndia, New Delhi – (UTC+5:30h)6:30 PMChina, Beijing – (UTC+8h)9:00 PMJapan, Tokyo – (UTC+9h)10:00 PMAustralia, Sydney – (UTC+10h)11:00 PMIf 6 AM in Los Angeles or 11 PM in Sydney made you wince, do not worry. The August session will be at 9 PM UTC, and we will keep alternating from there.You will find us in the psf-diversity channel on the PSF Discord. If you’re new to Discord, check out some Discord Basics to help you get started. What will we talk aboutHonestly? Whatever is on your mind related to Python, your communities, and DI.Since our workgroup exists to advise the PSF on diversity and inclusion, some conversations we are especially hoping to have include:Ideas for policies, initiatives, and grant proposals to diversify the PSF missions. Feedback from the community about these topics will help the PSF DI Workgroup provide recommendations to the PSF Board of Directors.Your feedback, plain and simple. We want to understand how the PSF can better serve and grow a diverse membership, and we cannot do that without hearing from the community itself.How things are actually going. Part of our job is measuring and sharing the PSF’s progress on its diversity initiatives, and we would rather do that in conversation with you than in a report nobody reads. We also want to understand and learn about the current state of Python communities around the world.No camera, no mic, no pressureOffice hours are text chat only.Show up in your pajamas, join from the bus, lurk quietly for the first twenty minutes. It is all fine.And if you cannot make it at all, the conversation stays in the channel, so you can catch up later when it suits you. If something in the chat sparks a thought you would like to share with us directly, you are always welcome to email the workgroup at diversity-inclusion-wg@python.org.Bring your own languageBecause we are the DI Workgroup, our members come from around the world! Alongside the main conversation, we will open threads in other languages where possible. Depending on the presence of our members, we would be happy to chat in Spanish, Portuguese, Chinese, Hindi, French or even Persian! Let us know during the office hour if you have a specific language you hope to converse in, or jump in with whichever language thread feels like home.See you on the 28th!The first office hour session is on Tuesday, 28 July 2026 at 1 PM UTC, in psf-diversity on Discord.Come say hi, even if it is just to tell us what you are working on with Python. We are really looking forward to meeting you!

3 days ago

Django Weblog: Last Call 2026 Django Developer Survey

Time is running out. This is the last call for the 2026 Django Developers Survey, which the Django Software Foundation is running in partnership with JetBrains. The survey closes on July 13, 2026. It is one of the best measures we have of how Django is used, and it helps guide future technical and community decisions. So far, over 3,100 people have responded, and we would love to push that number past 4,000. Every response helps us better understand the Django community. This year's survey was shaped by the Django Steering Council, the Django Fellows, the Django Software Foundation Board of Directors, and several community members. Your feedback helps us understand your needs, see how you use Django, and plan for future development and community needs. How you can help Once you’ve done the survey, take a moment to re-share on socials and with your communities. The more diverse the answers, the better the results for all of us. We appreciate everybody helping to get the word out. Please use the following links: Bluesky https://surveys.jetbrains.com/s3/bs-django-developers-survey-2026 Django Forum https://surveys.jetbrains.com/s3/df-django-developers-survey-2026 LinkedIn https://surveys.jetbrains.com/s3/li-django-developers-survey-2026 Mastodon https://surveys.jetbrains.com/s3/md-django-developers-survey-2026 Reddit https://surveys.jetbrains.com/s3/r-django-developers-survey-2026 X / Twitter https://surveys.jetbrains.com/s3/x-django-developers-survey-2026 For more details, read the original announcement on the Django blog.

4 days ago

Mike Driscoll: New Book Release: Python Typing

I am happy to announce that my latest book, Python Typing, is now available on all platforms. You can get your copy on Gumroad or Leanpub or Amazon Python has had type hinting support since Python 3.5, over TEN years ago! However, Python’s type annotations have changed repeatedly over the years. In Python Typing: Type Checking for Python Programmers, you will learn all you need to know to add type hints to your Python applications effectively. You will also learn how to use Python type checkers, configure them, and set them up in pre-commit or GitHub Actions. This knowledge will give you the power to check your code and your team’s code automatically before merging, hopefully catching defects before they make it into your products. What You’ll Learn You will learn all about Python’s support for type hinting (annotations). Specifically, you will learn about the following topics: Variable annotations Function annotations Type aliases New types Generics Hinting callables Annotating TypedDict Annotating Decorators and Generators Using Mypy for type checking Mypy configuration Using ty for type checking ty configuration and more! Where to Purchase Gumroad (PDF / epub) Leanpub (PDF / epub) Amazon (Kindle / paperback) The post New Book Release: Python Typing appeared first on Mouse Vs Python.

4 days ago
Planet Python — News Tracking & Analysis | Real Narrative News