termflow
English text analysis for information retrieval workloads in C++ and Python.
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
- docs/usage.md for day-to-day analyzer, term extraction, query, and Python usage
- docs/customization.md for pipeline tuning, query rewrites, and custom analyzers in C++
- docs/installation.md for Python and C++ installation paths
- docs/installation-roadmap.md for packaging and distribution priorities
Runnable examples:
- examples/analyze_text.cpp
- examples/extract_terms.cpp
- examples/custom_analyzer.cpp
- examples/analyze_query.cpp
- examples/find_package_consumer/CMakeLists.txt
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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| termflow_ir-0.1.2.tar.gz | 44.8 kB | With provenance | Details |
Built distributions (wheels)
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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logSecurity 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.
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 logA 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.