nowfound

Life & fun · June 7, 2026

TS

Typol – Static typing layer for Polars

Hello! Wanted to share Typol, a thin static typing layer around Polars that lets you enforce columnar schemas. We've been hesitant in the past to go with dataframes for processing reporting data, especially with Pandas, due to the long-term maintainability burden of tooling not understanding the data we're processing, or the library itself. Polars is well typed and encourages constructing shapes up rather than modifying in-place, so adding schema typing to it seemed like a natural extension. If Polars DataFrames are dicts, then Typol's are TypedDicts. With Typol, it's easy to define your…

What it does

In the maker’s words, at launch

Hello! Wanted to share Typol, a thin static typing layer around Polars that lets you enforce columnar schemas. We've been hesitant in the past to go with dataframes for processing reporting data, especially with Pandas, due to the long-term maintainability burden of tooling not understanding the data we're processing, or the library itself. Polars is well typed and encourages constructing shapes up rather than modifying in-place, so adding schema typing to it seemed like a natural extension. If Polars DataFrames are dicts, then Typol's are TypedDicts. With Typol, it's easy to define your schemas, which should feel familiar if you're moving from dataclass-style code or from Polars' own schemas, and then build well-typed Polars expressions on these that enforce: (1) valid columns are referenced, (2) column values are used in a valid way for their type, and (3) expressions generate target valid columns in resulting schemas with the correct type. class Account(tp.Shape): name = tp.dimension(str) website = tp.dimension(str) uid = tp.dimension(int) # Works, with the type: Expr[Account, Account, str] email_address = accounts.s.name.str.to_lowercase() + "@" + accounts.s.website # Caught statically: # Unsupported `+` operation: `BoundDimension[Account, int]` + `Literal["@"]` email_address = accounts.s.uid + "@" + accounts.s.website These types are checked statically using ty, which supports spelling the intersection types needed to infer join results, with a little dynamic enforcement filling in where static analysis can't reach. This allows you to make use of tooling both to check and guide your code (dot completion coming in handy). Existing tools, like Pandera, do provide dynamic verification of dataframe shapes. Whilst this can be good, it bites you at runtime which is well after a problem should be caught, and doesn't provide any tooling benefit. Typol is great for production data processing pipelines, where narrowing your data to well-defined schemas at each processing stage can be appropriate and powerful. It's not well suited to a lot of data science, where columns generally get added and dropped quite freely. It covers most core Polars expression operations (laziness, arithmetic, strings, datetimes, lists, filtering, joins, aggregations), but we'd love to extend it further, and we'd love for you to try it out!

Does the same job

all alternatives →
  • AT
  • TT
    TypeGraph – Type-safe graphs on Postgres/SQLite (no graph DB required)Feb 2026 · typegraph.dev · ▲5

    Hi HN, I built TypeGraph, a type-safe knowledge graph library that runs on your existing Postgres or SQLite. After years of building knowledge graphs and other graphy things, I had the same issues whenever an application’s relationship modeling (permissions, RAG context, recommendations) outgrew standard ORMs: deploy a dedicated graph database (heavy ops, separate infra, data syncing headaches), or roll a graph-in-SQL implementation by hand. I've hand-rolled enough of these to know the drill: same table structures, same traversal boilerplate, same performance surprises. I wanted graph…

  • TA
    Tysm, a Rust crate for using ChatGPT with Structured Outputs2024 · github.com · ▲7

    Hi HN! This Christmas I made `tysm`, a rust crates which simplifies using ChatGPT with Structured Outputs. Essentially you just tell it the rust type you want the output to conform to, and it handles creating the JSON Schema, passing it to ChatGPT's chat-completions API, and deserializing the response. Structured Outputs are very useful because they guarantee that the response will conform to whatever type you expect. I'm already finding my crate very useful since I love using Structured Outputs but I hate writing JSON Schemas myself. Technical details for rust heads: To generate the JSON…

  • VU
    Visions – User defined data type systems2022 · github.com · ▲45

    Visions is a python library for working with user defined data type systems. Out of the box, it provides type inference and automated data cleaning of sequence data with backend specific implementations for pandas, spark, python, and numpy. We often use it as a first pass cleaning step when working with tabular data and to simplify the backend logic of both pandas-profiling[1] and our tabular data compression library compressio[2]. Because data types are user defined, we can build user customizable libraries based around types without adding code complexity. In the case of compressio that…

  • GM
    GoSMig – minimal, type-safe SQL migrations written in GoOct 2025 · github.com · ▲7

    I built GoSMig for my own projects and open-sourced it in case it helps others. It’s a tiny generic library (no external deps except golang.org/x/term) for writing SQL migrations in Go with compile-time checks. It supports transactional and non-transactional migrations, rollback, status, version, and a small CLI handler so you can ship your own migration binary. Why another migrator? - Minimal API, no DSL or file layout to learn - Type-safe via Go generics - Works with database/sql and sqlx out of the box - Should work with any db library (or wrapper) that implements some…

  • QY
    Query your Rust codebase and generate types for anything2025 · github.com · ▲5

    Hello HN! As a long-time professional Rust developer. I've always been frustrated by the difficulty and "hackiness" of producing bindings to other languages, whether a frontend, an FFI library, etc. Not just in Rust but in any language. After many years of trying existing solutions and trying to make my own, I've finally developed a solution I'm very happy with. RTK (aka Rust Type Kit) allows you to write Lua scripts that perform queries on your code, such as method calls to Axum's `.route`, function definitions, and more, and then receive rich type information including all argument types,…

More life & fun this month

the category →
  • TL

    Life & fun · 10d ago · louisabraham.github.io

  • Photosynthesis fires two of your iPhone

    Life & fun · 28d ago · photosynthesis.camera

  • SoloUno310

    Take control of hair pulling, nail biting & skin picking

    Life & fun · 28d ago · solouno.io

  • Scroll through all 43,252,003,274,489,856,000 reachable Rubik's Cube permutations.

    Life & fun · 26d ago · everycube.alen.is

  • The Interactive 3D Encyclopedia

    Life & fun · 21d ago · expeditione.fun

  • Hi HN, I built Eigendrum, a web tool that solves the 2D wave equation for arbitrary shapes so you can hear what they sound like as drums. How it works: * Solves -∇²u = λu using finite element analysis (Kφ = λMφ) on a triangle mesh. * Validated to <0.1% error against closed-form solutions for circles (Bessel zeros) and rectangles. * Sound model factors in strike location, Rayleigh damping, and mallet width. * Includes Kac drums I & II to demonstrate identical sound spectra from different geometries. * No frameworks, build steps, or dependencies. Repo and tests:…

    Life & fun · 26d ago · baselashraf81.github.io

Launched alongside, June 2026

the whole month →
  • Fundraisly1,544

    AI fundraising agent that finds investors and books meetings

    AI · Jun 2026 · fundraisly.com

  • H6

    Today, I’m proud to announce Homebrew 6.0.0. The most significant changes since 5.1.0 are a new tap trust security mechanism, the new faster, smaller, default internal Homebrew JSON API, sandboxing on Linux, better defaults informed by our user survey, many brew bundle improvements, improved performance and initial support for macOS 27 (Golden Gate). Happy to discuss any questions here!

    Dev tools · Jun 2026 · brew.sh

  • PU

    hope you enjoy

    Life & fun · Jun 2026 · vorpus.github.io

  • Upstream977

    The inbox designed for humans and agents

    AI · Jun 2026 · upstream.do

  • Goldfish962

    Press Option. It knows your work and replies like you

    AI · Jun 2026 · goldfish.sh

  • IM

    Life & fun · Jun 2026 · hackernewstrends.com