Skip to main content

17 posts tagged with "pydantic"

pydantic tag description

View All Tags

How to enforce type hinting in Python: Static vs Runtime Strategies

· 5 min read
Serhii Hrekov
software engineer, creator, artist, programmer, projects founder

Python is famous for being a "consenting adults" language. By default, type hints (like name: str) are just polite suggestions. If you pass an integer into a function expecting a string, Python will happily execute it-and probably crash three lines later.

In 2026, relying on "polite suggestions" isn't enough for production-grade code. To actually enforce type hinting, you have to move beyond the built-in typing module and use external guardians.

Pydantic for JSON Validation in Python

· 6 min read
Serhii Hrekov
software engineer, creator, artist, programmer, projects founder

In our last article(python simpleeval examples), we built a dynamic rules engine using simpleeval. But there is a golden rule in software engineering: Garbage In, Garbage Out.

If your rules engine expects a checkout cart to have a cart_total (a number) and a user_role (a string), but the frontend accidentally sends {"cart_total": "free", "role": null}, your engine will crash. Before untrusted JSON data ever reaches your core logic, it needs to pass through a strict gatekeeper. In modern Python, that gatekeeper is Pydantic.

Reasons to use dataclass over pydantic basemodel

· 6 min read
Serhii Hrekov
software engineer, creator, artist, programmer, projects founder

While Pydantic is the industry standard for external data (APIs, JSON parsing), Python's built-in dataclasses are often the better choice for internal data.

To answer your specific questions:

  1. Is it speed? YES. Dataclasses are significantly faster at creating objects (instantiation).
  2. Is it strict data type? NO. Pydantic is stricter. Dataclasses do not validate types at runtime; they blindly accept whatever you give them.

Here are the 4 most convincing reasons to use Dataclasses over Pydantic in a modern app, with examples for each.

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

· 7 min read
Serhii Hrekov
software engineer, creator, artist, programmer, projects founder

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.

Pydantic vs. Dataclasses speed comparison

· 6 min read
Serhii Hrekov
software engineer, creator, artist, programmer, projects founder

While both Pydantic models and Python dataclasses serve to structure data, their performance characteristics are significantly different. The key distinction lies in when and how validation occurs. Dataclasses rely on simple Python object initialization, while Pydantic executes a comprehensive validation and coercion pipeline on every instantiation.

The clear winner in terms of raw execution speed is the Python Dataclass.

Dataclasses vs. Pydantic model

· 6 min read
Serhii Hrekov
software engineer, creator, artist, programmer, projects founder

The modern Python landscape offers two excellent tools for defining structured data: Dataclasses (introduced in Python 3.7) and Pydantic (a third-party library). While both help define classes for data, their core purpose, performance characteristics, and feature sets are fundamentally different.

Choosing between them depends on whether your primary need is simple data structuring (Dataclasses) or input validation and parsing (Pydantic).

Drawbacks of Pydantic: A Deep Dive with Examples

· 7 min read
Serhii Hrekov
software engineer, creator, artist, programmer, projects founder

📉 Drawbacks of Pydantic: A Deep Dive with Examples​

Pydantic is an indispensable tool in the modern Python ecosystem, powering frameworks like FastAPI and widely used for data validation. However, like any powerful abstraction, it comes with trade-offs. While it excels at validation and developer ergonomics, it introduces overhead and complexity that can become problematic in specific high-performance or dynamic scenarios.

This article explores the drawbacks of Pydantic, providing concrete code examples to illustrate where it might not be the best fit.

Why Use a Pydantic Model for a Single Attribute (The Wrapper Pattern)

· 6 min read
Serhii Hrekov
software engineer, creator, artist, programmer, projects founder

It might seem excessive to define an entire Pydantic BaseModel for a single attribute when a simple type hint like user_id: str would suffice. However, using a single-attribute Pydantic model (often called a Wrapper Model or a Value Object) offers significant advantages, primarily around reusability, centralized validation, and complex parsing.

This pattern transforms a simple type hint into a powerful, reusable validation layer.

Python Annotations Rare Use Cases

· 7 min read
Serhii Hrekov
software engineer, creator, artist, programmer, projects founder

Python annotations, introduced in PEP 3107 for function parameters and return values, were initially generic metadata slots. While their primary use has become type hinting (PEP 484), expert developers leverage them for advanced and niche applications that go far beyond simple type declarations.

These use cases often involve frameworks or metaprogramming to make annotations act as declarative configuration or runtime execution instructions.

The Wrapper Pattern in Python: Definition and Strategic Use Cases

· 7 min read
Serhii Hrekov
software engineer, creator, artist, programmer, projects founder

The Wrapper Pattern (often referred to in design literature as the Decorator Pattern or Adapter Pattern when applied to classes, but used here in the broader sense of wrapping functionality or data) involves encapsulating an object or a function within another object.

In the context of Python, particularly with frameworks like FastAPI and Pydantic, the Wrapper Pattern is primarily used to:

  1. Enhance or Extend Functionality without modifying the original object (Decorator/Adapter).
  2. Validate and Centralize Logic for a simple data type, turning it into a Value Object (as seen with Pydantic).