Skip to main content

90 posts tagged with "python"

python tag description

View All Tags

Linking Logs Across Python Microservices(Distributed Tracing)

· 7 min read
Serhii Hrekov
Senior Software Engineer & System Architect specializing in Python, Web Systems, Cloud Infrastructure & Automation

Distributed Tracing: Linking Logs Across Python Microservices​

In modern microservices architectures, a single user request might flow through an API Gateway, an authentication service, a business logic service, and several data services. While structured logging makes each service's log output clean, it doesn't automatically connect the dots.

Distributed Tracing is the operational practice of adding unique identifiers to every log and header related to a single request, allowing you to reconstruct the entire request path across all services.

Python Logging: The Complete Guide from basicConfig to Structured JSON Observability

· 11 min read
Serhii Hrekov
Senior Software Engineer & System Architect specializing in Python, Web Systems, Cloud Infrastructure & Automation

Logs are a primary source of truth for application health, performance audits, and runtime debugging. However, outputting unstructured plain text console strings limits searchability and scalability. To build modern, observable applications, you need a robust logging hierarchy, log rotation schemes, centralized configurations, and structured output formats.

This guide provides a comprehensive manual on Python logging, covering basic setup parameters, log rotation, dict-based configurations, JSON-structured output, contextual metadata injection, and performance best practices.

MyPy vs. Pyright: A Comprehensive Guide to Python Static Type Checkers

· 6 min read
Serhii Hrekov
Senior Software Engineer & System Architect specializing in Python, Web Systems, Cloud Infrastructure & Automation

To maintain clean and bug-free codebases in large Python projects, static type checking is essential. The two primary static type checkers in the modern Python ecosystem are MyPy (the reference implementation) and Pyright (a fast, TypeScript-based checker developed by Microsoft).

While both tools parse type hints to identify errors before runtime, they differ in their implementation languages, performance profiles, library extensibility, and strictness. This guide provides a detailed comparison of MyPy and Pyright, analyzing their architectural trade-offs, behavioral differences, and how to combine them into a single workflow.

Dataclass AttributeError Solutions

· 9 min read
Serhii Hrekov
Senior Software Engineer & System Architect specializing in Python, Web Systems, Cloud Infrastructure & Automation

The AttributeError is one of the most common exceptions in Python, indicating an attempt to access or set a class attribute that simply doesn't exist. When it occurs within the context of a @dataclass, it often points to a misunderstanding of how the decorator automatically generates methods like __init__ and __setattr__.

Here is a breakdown of the most frequent AttributeError scenarios involving dataclasses and the high-level solutions to resolve them.

Benchmarking Dataclasses, Named Tuples, and Pydantic Models: Choosing the Right Python Data Structure

· 7 min read
Serhii Hrekov
Senior Software Engineer & System Architect specializing in Python, Web Systems, Cloud Infrastructure & Automation

When structuring immutable, simple data in Python, developers often choose between several tools. While Dataclasses and Pydantic models dominate modern usage, older structures like namedtuple and simpler tools like tuple and dict still have niche uses.

This article compares these common data structures based on their primary function, mutability, and performance characteristics to help you choose the best tool for the job.

MyPy Configuration for Strict Typing

· 7 min read
Serhii Hrekov
Senior Software Engineer & System Architect specializing in Python, Web Systems, Cloud Infrastructure & Automation

MyPy is the premier static type checker for Python. While running MyPy with no configuration works, achieving true, robust type safety requires a configuration that enables strict mode and specifically targets potential weak points in Python's type system.

This article details the essential settings within the mypy.ini, pyproject.toml, or setup.cfg file that an experienced developer uses to maximize type checking effectiveness.

Python Dataclasses vs. Pydantic Models: A Complete Performance and Architectural Guide

· 9 min read
Serhii Hrekov
Senior Software Engineer & System Architect specializing in Python, Web Systems, Cloud Infrastructure & Automation

Modern Python development relies heavily on structured data models. The two most popular solutions for defining data contracts are standard library Dataclasses (introduced in Python 3.7) and Pydantic (a third-party schema library). While their syntax looks similar, they serve fundamentally different architectural roles, have distinct performance profiles, and handle type checks differently.

This guide provides a comprehensive comparison of Dataclasses and Pydantic, analyzing execution speeds, validation mechanics, type coercion hazards, dependency footprints, and hybrid architecture designs.

If-else Fail Fast pattern in Python

· 7 min read
Serhii Hrekov
Senior Software Engineer & System Architect specializing in Python, Web Systems, Cloud Infrastructure & Automation

The concept of "fail fast" is a fundamental principle in software engineering, rooted in the idea of handling erroneous conditions immediately at the entrance of a function or code block. From the perspective of a high-level Python developer, this technique, often applied using if/return patterns, is key to writing clean, readable, and maintainable code.

Here is an analysis of best practices, techniques to master, and patterns to strictly avoid when working with conditional logic.

Typeguard Performance Benchmarks: High-Frequency Overhead, I/O Wrappers, and Optimization

· 7 min read
Serhii Hrekov
Senior Software Engineer & System Architect specializing in Python, Web Systems, Cloud Infrastructure & Automation

How Fast is Typeguard? Performance Benchmarks and Analysis​

Understanding the speed of Typeguard is essential when integrating it into performance-critical Python applications. Since Typeguard performs runtime reflection and checking, it inevitably adds overhead. However, the time added is typically measured in microseconds (µs), making it extremely fast for single invocations.

The key factors determining the speed are the complexity of the type signature and the size of the data structure being checked.

Python Typeguard Performance Considerations for Database I/O Wrappers

· 6 min read
Serhii Hrekov
Senior Software Engineer & System Architect specializing in Python, Web Systems, Cloud Infrastructure & Automation

When implementing runtime checks like Typeguard, the primary concern is the performance overhead it adds to production code, especially in high-throughput applications that rely on fast I/O operations (like database queries).

The short answer is: Typeguard adds a measurable execution overhead, but it is often negligible compared to the time spent on I/O (Database operations).

Here is a breakdown of the performance implications and when you should be concerned.