Skip to main content

termflow

English text analysis for information retrieval workloads in C++ and Python.

PyPI Python Versions Python Package

termflow is a library-first analysis stack for search, indexing, tagging, and query normalization. It provides a built-in English analyzer, term extraction helpers, and a lightweight query rewrite layer without trying to be a full search engine.

Why termflow

  • C++20 core library with optional Python bindings
  • English analyzer with configurable stemming, stop words, possessive handling, and ASCII folding
  • Term extraction API for finalized search/index terms
  • Query parser and rewrite support for canonicalization, equivalents, and expansions
  • Installable Python wheels for Linux and macOS
  • CMake install flow for downstream C++ consumers

Install

Python package:

pip install termflow-ir

Python import:

import termflow

CLI quick check:

termflow analyze "The Running Cars"

For C++ installation and find_package(termflow) usage, see docs/installation.md.

Quick Start

Python:

import termflow

analyzer = termflow.EnglishAnalyzer()
terms = analyzer.analyze_terms("The Running Cars")
normalized = analyzer.normalize("Running Café")

print(terms)  # ['run', 'car']
print(normalized)  # 'running café'

C++:

#include <iostream>
#include "termflow/analysis/english_analyzer.hpp"

int main() {
  termflow::EnglishAnalyzer analyzer;
  const auto terms = analyzer.analyze_terms("The Running Cars");

  for (const auto& term : terms) {
    std::cout << term << "\n";
  }
}

Features

Area What it includes
Analysis EnglishAnalyzer, token analysis, normalization, stemming, stop words, ASCII folding
Term extraction TermExtractor with length, numeric, and character-policy filtering
Query processing clause parsing, analyzed query terms, rewrite loading, validation, and alternatives
Python bindings built-in analyzer, term extractor, and query module under termflow.query
CLI termflow analyze, termflow extract, and termflow analyze-query for quick validation
C++ consumption installable CMake package and external find_package example

Documentation

Runnable examples:

Scope

termflow currently focuses on:

  • English text analysis
  • Batch-oriented APIs
  • Query parsing and rewrite preparation
  • Reusable components for embedding in larger applications

termflow does not currently provide:

  • indexing or retrieval
  • ranking or scoring
  • token graphs
  • phrase execution logic
  • multilingual analyzers

Build From Source

Local build:

cmake -S . -B build -G Ninja
cmake --build build
ctest --test-dir build --output-on-failure

Build Python bindings from source:

cmake -S . -B build -G Ninja -DTERMFLOW_BUILD_PYTHON=ON
cmake --build build
PYTHONPATH=build/python python3 -c 'import termflow; print(termflow.EnglishAnalyzer().analyze_terms("Running Cars"))'

Build Python distributions:

python3 -m build --sdist --wheel
python3 -m twine check dist/*

Project Status

termflow is early-stage and intentionally narrow in scope. The current focus is making the built-in English analysis and packaging story solid before expanding into more languages or broader IR features.

Contributing

Issues and pull requests are welcome. If you want to make a larger API or packaging change, open an issue first so the direction is clear before implementation work starts.

License

This repository does not yet include a LICENSE file. Until that is added, do not assume open source usage terms.

Metadata

Release files for termflow-ir 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for termflow-ir 0.1.2
File Size Uploaded Provenance
termflow_ir-0.1.2.tar.gz 44.8 kB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for termflow-ir 0.1.2
File
termflow_ir-0.1.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
termflow_ir-0.1.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details
termflow_ir-0.1.2-cp312-cp312-macosx_14_0_x86_64.whl CPython 3.12 CPython 3.12 macOS 14.0+ x86-64 Details
termflow_ir-0.1.2-cp312-cp312-macosx_14_0_arm64.whl CPython 3.12 CPython 3.12 macOS 14.0+ ARM64 Details
termflow_ir-0.1.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
termflow_ir-0.1.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
termflow_ir-0.1.2-cp311-cp311-macosx_14_0_x86_64.whl CPython 3.11 CPython 3.11 macOS 14.0+ x86-64 Details
termflow_ir-0.1.2-cp311-cp311-macosx_14_0_arm64.whl CPython 3.11 CPython 3.11 macOS 14.0+ ARM64 Details
termflow_ir-0.1.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
termflow_ir-0.1.2-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
termflow_ir-0.1.2-cp310-cp310-macosx_14_0_x86_64.whl CPython 3.10 CPython 3.10 macOS 14.0+ x86-64 Details
termflow_ir-0.1.2-cp310-cp310-macosx_14_0_arm64.whl CPython 3.10 CPython 3.10 macOS 14.0+ ARM64 Details

Total release size: 169.2 MB

Release files / termflow_ir-0.1.2.tar.gz

Download URL termflow_ir-0.1.2.tar.gz
Size 44.8 kB
Tags Source
SHA-256 checksum
How to use checksums
d229cd7b06256c5219a81026364c5cc470d14c5120df91d1b312f60db8c1c6ef
BLAKE2b-256 checksum
How to use checksums
1b77476184d6620ef1d7e82fa35d16c76861ec554c075283dccc49f8f86f854b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 9, 2026.

Transparency log

Release files / termflow_ir-0.1.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL termflow_ir-0.1.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 13.1 MB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
22542b47d0a1989aa458f3d29e37d9b8ff9cab570c3904f5b208519fcf2fc0fe
BLAKE2b-256 checksum
How to use checksums
c389c18c0fa5f753a421626e48e511dc9a567b872c7b23c8db43ee92940a8c96
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 9, 2026.

Transparency log

Release files / termflow_ir-0.1.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL termflow_ir-0.1.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 12.9 MB
Tags CPython 3.12 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
fc55472d6c21c872d559c65a2cef84f1a5a2120bfa6a220e2f6931212526edea
BLAKE2b-256 checksum
How to use checksums
e85fe01adf00bbb1104ef1a63ec1f0fcbed4db3b7aea396aa1602fe2ef77c00b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 9, 2026.

Transparency log

Release files / termflow_ir-0.1.2-cp312-cp312-macosx_14_0_x86_64.whl

Download URL termflow_ir-0.1.2-cp312-cp312-macosx_14_0_x86_64.whl
Size 15.3 MB
Tags CPython 3.12 macOS 14.0+ x86-64
SHA-256 checksum
How to use checksums
76f973b1b9ca9ee8c04543a2c6d8b7ff3737c1948267aff82b24dae316fdb881
BLAKE2b-256 checksum
How to use checksums
3be46ea1754dd52ebd59c2716ef7c8bd955668bf08960314ff50efbbd869f916
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 9, 2026.

Transparency log

Release files / termflow_ir-0.1.2-cp312-cp312-macosx_14_0_arm64.whl

Download URL termflow_ir-0.1.2-cp312-cp312-macosx_14_0_arm64.whl
Size 15.2 MB
Tags CPython 3.12 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
c52984f9d36ad360cd3826c6fdc322038cbd7a7e8dd60f749227a7a4a9095960
BLAKE2b-256 checksum
How to use checksums
37d8e63c94566abea537ff9ebcdd46561594cd41c361084b16ba4ca5b6f7f31c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 9, 2026.

Transparency log

Release files / termflow_ir-0.1.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL termflow_ir-0.1.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 13.1 MB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
fc360880d21615a6499e4863beede40cb1aca09db6cd9d4b369bc41de08513eb
BLAKE2b-256 checksum
How to use checksums
084794bfb7b6609069a8bee745446ef2f5b284bc4e51796c858aeb9d0bafbdab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 9, 2026.

Transparency log

Release files / termflow_ir-0.1.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL termflow_ir-0.1.2-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 12.9 MB
Tags CPython 3.11 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
9583923323cf84797f721759989f3f4f478467bd6d979a361a017b8f97aacfd8
BLAKE2b-256 checksum
How to use checksums
8e15c9297a40af6912a89cd0f712d66cf6514cac69070888e3a403df927a46a2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 9, 2026.

Transparency log

Release files / termflow_ir-0.1.2-cp311-cp311-macosx_14_0_x86_64.whl

Download URL termflow_ir-0.1.2-cp311-cp311-macosx_14_0_x86_64.whl
Size 15.3 MB
Tags CPython 3.11 macOS 14.0+ x86-64
SHA-256 checksum
How to use checksums
aa404696d5865ad493067d9f498c423b46b9a36f1d7101077355c339d9921f28
BLAKE2b-256 checksum
How to use checksums
5249a07dac0caa9f68396c3b47bc12a649d766382d5a50e8e33a3af021c2d2d9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 9, 2026.

Transparency log

Release files / termflow_ir-0.1.2-cp311-cp311-macosx_14_0_arm64.whl

Download URL termflow_ir-0.1.2-cp311-cp311-macosx_14_0_arm64.whl
Size 15.2 MB
Tags CPython 3.11 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
06f86da2e0d89276147e2f4d432a904dfc423d687544c2616edd3dd4a73642be
BLAKE2b-256 checksum
How to use checksums
e9032d886ed0229f80987d0bab4446b736dacb74a5021658ced3eeedd88c41ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 9, 2026.

Transparency log

Release files / termflow_ir-0.1.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL termflow_ir-0.1.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 13.1 MB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
65b155851fb796393f1586d702b4564f9a171e36e08bc86101789b0ba750ec66
BLAKE2b-256 checksum
How to use checksums
2dd0bdb434fb34d76fdae436e4bfbed51634139122e539747b9f9d8d9d7ae3e3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 9, 2026.

Transparency log

Release files / termflow_ir-0.1.2-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL termflow_ir-0.1.2-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 12.9 MB
Tags CPython 3.10 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
e01af04fc60b1187a8a8cc2b4f222a5bdacbd0a876e5631415927ace150407c8
BLAKE2b-256 checksum
How to use checksums
d15fdb4bf132a24a8dfc4aeaa84074bc74c6cfb1370d6e23a77c1737608e3f14
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 9, 2026.

Transparency log

Release files / termflow_ir-0.1.2-cp310-cp310-macosx_14_0_x86_64.whl

Download URL termflow_ir-0.1.2-cp310-cp310-macosx_14_0_x86_64.whl
Size 15.3 MB
Tags CPython 3.10 macOS 14.0+ x86-64
SHA-256 checksum
How to use checksums
97d8113c795ca9124cb93d98a607f41a3ef310fad18a5c148791dff35ae87d5e
BLAKE2b-256 checksum
How to use checksums
261e9d038d925495e935602fa93f9b92269861a3795a193bbf409c20a92eb939
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 9, 2026.

Transparency log

Release files / termflow_ir-0.1.2-cp310-cp310-macosx_14_0_arm64.whl

Download URL termflow_ir-0.1.2-cp310-cp310-macosx_14_0_arm64.whl
Size 15.2 MB
Tags CPython 3.10 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
9b1c7a2a3253115b49d98f091bb88a255f6ab871882777f9898b4faf006b6d05
BLAKE2b-256 checksum
How to use checksums
cd5b87b8d8d1c616fc5d85d73316fd248e28f5b53933525179a2b4cf09bab8fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 9, 2026.

Transparency log

Security for termflow-ir 0.1.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 13 files in this release have been uploaded with provenance metadata.

Select from 13 files

Attestation for termflow_ir-0.1.2.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 9, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.1.2 This release

13 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page