Learn Python — from variables to async services.
Migrated from flexappdev.com/pylearn — variables and types through async services and modern tooling.
int, float, str, bool, None — dynamic typing with optional annotations.
if / elif / else, while, for, match (3.10+) — branching and iteration.
Built-in containers, comprehensions, and when to reach for each.
Positional, keyword, *args/**kwargs, defaults, lambdas, decorators.
OO basics, @dataclass, __slots__, properties, dunders.
PEP 484/612/695 — generics, Protocol, TypedDict, ParamSpec, mypy/pyright.
yield, itertools, generator expressions — lazy sequences on demand.
with statements, __enter__/__exit__, contextlib — safe resource handling.
Arrays, broadcasting, vectorisation — the foundation of the data stack.
DataFrames, groupby, merges, time series — the data wrangling default.
Rust-backed DataFrames — multi-thread by default, lazy execution.
Foundational plotting — figure/axes API, when seaborn/plotly aren't enough.
Data validation with Rust core — models, validators, JSON schema.
Async web framework, Pydantic v2, OpenAPI for free.
Minimal WSGI framework — still the simplest way to ship a small API.
Sync (requests) and async (httpx) HTTP clients with retries and pooling.
Fixtures, parametrize, monkeypatch — the de facto test runner.
Property-based testing — generate edge cases you'd never write by hand.
Event loop, async/await, TaskGroup, gather — Python's concurrency primitive.
Structured concurrency — nurseries and cancellation done right.
Background workers — Redis-backed task queues for FastAPI services.
Modern dependency management — lockfiles, virtual envs, fast resolves.
Lint + format — Rust-fast, replaces flake8/isort/pyupgrade in one binary.
OO filesystem paths — pathlib.Path replaces os.path for new code.
stdlib logging, structlog, JSON handlers — production-grade observability.