<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Python on Sourav AI Labs</title><link>https://souravailabs.ai/tags/python/</link><description>Recent content in Python on Sourav AI Labs</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 11 Feb 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://souravailabs.ai/tags/python/index.xml" rel="self" type="application/rss+xml"/><item><title>Week 6: Error Handling, Logging, and the Unreliable API Problem</title><link>https://souravailabs.ai/posts/week-6-error-handling-logging-and-the-unreliable-api-problem/</link><pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate><guid>https://souravailabs.ai/posts/week-6-error-handling-logging-and-the-unreliable-api-problem/</guid><description>&lt;div class="week-post-meta"&gt;
&lt;span class="week-post-badge"&gt;Week 6 of 52&lt;/span&gt;
&lt;span&gt;Phase 0: Foundation&lt;/span&gt;
&lt;span&gt;Status: Complete&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;Week 6 was about building software that fails gracefully. The topic: &lt;code&gt;try/except/finally&lt;/code&gt;, custom exceptions, and the Python logging module.&lt;/p&gt;
&lt;p&gt;The mini-project made the stakes concrete. LLM APIs are not like database queries. They time out. They rate limit. They return partial responses. They fail in ways your happy-path tests will never catch.&lt;/p&gt;</description></item><item><title>Week 5: File Handling, JSON, and Why JSONL Is the Format for AI Testing</title><link>https://souravailabs.ai/posts/week-5-file-handling-json-and-why-jsonl-is-the-format-for-ai-testing/</link><pubDate>Wed, 04 Feb 2026 00:00:00 +0000</pubDate><guid>https://souravailabs.ai/posts/week-5-file-handling-json-and-why-jsonl-is-the-format-for-ai-testing/</guid><description>&lt;div class="week-post-meta"&gt;
&lt;span class="week-post-badge"&gt;Week 5 of 52&lt;/span&gt;
&lt;span&gt;Phase 0: Foundation&lt;/span&gt;
&lt;span&gt;Status: Complete&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;Week 5 was practical infrastructure: reading and writing files, JSON serialization, pathlib for modern path handling, and JSONL for large datasets.&lt;/p&gt;
&lt;p&gt;Sounds dry. It is not. If you test AI systems, you live in JSONL.&lt;/p&gt;</description></item><item><title>Week 4: Modules, Packages, and Writing Code That Lasts</title><link>https://souravailabs.ai/posts/week-4-modules-packages-and-writing-code-that-lasts/</link><pubDate>Wed, 28 Jan 2026 00:00:00 +0000</pubDate><guid>https://souravailabs.ai/posts/week-4-modules-packages-and-writing-code-that-lasts/</guid><description>&lt;div class="week-post-meta"&gt;
&lt;span class="week-post-badge"&gt;Week 4 of 52&lt;/span&gt;
&lt;span&gt;Phase 0: Foundation&lt;/span&gt;
&lt;span&gt;Status: Complete&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;Week 4 is when things started feeling like real engineering rather than learning exercises.&lt;/p&gt;
&lt;p&gt;The topic was modules, packages, and virtual environments. The skill: structuring code so other code can use it.&lt;/p&gt;</description></item><item><title>Week 3: Control Flow, Functions, and Validating LLM Responses</title><link>https://souravailabs.ai/posts/week-3-control-flow-functions-and-validating-llm-responses/</link><pubDate>Wed, 21 Jan 2026 00:00:00 +0000</pubDate><guid>https://souravailabs.ai/posts/week-3-control-flow-functions-and-validating-llm-responses/</guid><description>&lt;div class="week-post-meta"&gt;
&lt;span class="week-post-badge"&gt;Week 3 of 52&lt;/span&gt;
&lt;span&gt;Phase 0: Foundation&lt;/span&gt;
&lt;span&gt;Status: Complete&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;Week 3 was where things started connecting to the actual problem I care about. Control flow and functions are foundational Python - but the mini-project applied them directly to LLM output validation.&lt;/p&gt;</description></item><item><title>Week 2: Data Structures and the List-of-Dicts Pattern</title><link>https://souravailabs.ai/posts/week-2-data-structures-and-the-list-of-dicts-pattern/</link><pubDate>Wed, 14 Jan 2026 00:00:00 +0000</pubDate><guid>https://souravailabs.ai/posts/week-2-data-structures-and-the-list-of-dicts-pattern/</guid><description>&lt;div class="week-post-meta"&gt;
&lt;span class="week-post-badge"&gt;Week 2 of 52&lt;/span&gt;
&lt;span&gt;Phase 0: Foundation&lt;/span&gt;
&lt;span&gt;Status: Complete&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;Week 2 was data structures: lists, dicts, sets, tuples. The goal was not to memorize syntax but to understand which container to reach for and when.&lt;/p&gt;</description></item><item><title>Week 1: Python Basics, Prompt Templates, and a Debugging Rabbit Hole</title><link>https://souravailabs.ai/posts/week-1-python-basics-prompt-templates-and-a-debugging-rabbit-hole/</link><pubDate>Wed, 07 Jan 2026 00:00:00 +0000</pubDate><guid>https://souravailabs.ai/posts/week-1-python-basics-prompt-templates-and-a-debugging-rabbit-hole/</guid><description>&lt;div class="week-post-meta"&gt;
&lt;span class="week-post-badge"&gt;Week 1 of 52&lt;/span&gt;
&lt;span&gt;Phase 0: Foundation&lt;/span&gt;
&lt;span&gt;Status: Complete&lt;/span&gt;
&lt;/div&gt;
&lt;p&gt;The first week was about proving something simple: that a QA engineer with 10 years of experience but minimal Python could get moving fast when the goal was concrete.&lt;/p&gt;</description></item></channel></rss>