Skip to main content

rgapi

rgapi provides fd-style file discovery and rg-style text search from Python without starting a shell command.

It uses ripgrep's ignore and grep-searcher crates for walking and file scanning, with the pure-Rust fancy-regex engine for regex matching. Walking and searching run in parallel by default. Most expensive work stays in Rust.

Overview

For common file discovery and search:

from rgapi import fd, ls, rg, rg_iter

fd(ext="py", exclude="test_*.py")
ls("src")
for row in rg_iter("TODO", ".", include="*.py", context=2): print(row.asdict())
rg("TODO", ".", ext="py", skip_dir=".venv", paths=True)
rg("TODO", ["src", "tests"], ext="py")

For cell-aware search of Jupyter notebooks (see Notebooks):

from rgapi import nbrg

nbrg("read_csv", ".", cell_context=1)

Walk and search functions have async versions. Streaming versions yield results as the search finds them. See Async:

from rgapi import fda, rga, rga_iter, nbrga, nbrga_iter

await rga("TODO", ".", ext="py", timeout_ms=200)
async for row in rga_iter("TODO", "."): print(row)

Use the lower-level functions to compile a regex, or to search text or a single file:

from rgapi import compile, search_path, search_text

matcher = compile("TODO")
matcher.is_match("TODO")
matcher.finditer("TODO TODO")

search_text(matcher, "alpha\nTODO\nomega\n", path="memory.txt", context=1)
search_path(matcher, "src/lib.rs", display_path="src/lib.rs")

Install

pip install rgapi

File discovery

fd returns absolute pathlib.Path objects. Use them directly with .read_text(), .open(), .stat(), or other filesystem operations. Its collected results display names relative to root. Pass root as a str or Path, or as a list of them. The sync and async APIs expand ~ and accept ., ./, and paths containing ...

A list of roots, such as rg("TODO", ["src", "tests"]), works with every walk and search function. The roots are searched as one walk that returns one result list. timeout_ms and max_results apply to the whole walk. Result paths are relative to the common ancestor of the roots. For example, rows read src/app.py and tests/test_app.py. PathResults displays use the same relative paths. Filters such as include, path_re and skip_dir match these relative paths. A file under more than one root, such as src/app.py with roots [".", "src"], appears once.

Discovery uses the ignore crate with ripgrep's default filters. It reads .gitignore, .ignore, and .rgignore files. .rgignore takes precedence over .gitignore. Pass ignore=False to disable all ignore-file filtering, including .rgignore.

Hidden files are skipped unless hidden=True. Discovery returns symlinks themselves, including explicitly named roots and dangling links. Set follow_links=True to traverse their targets. Paths retain the symlink spelling. Use same_file_system=True to avoid crossing filesystem boundaries.

Traversal runs in parallel without guaranteed result order. Use sorted(...) when order matters.

fd takes pattern first and root second, as rg does. With no pattern, it returns every file under root. pattern is a smart-case regex matched against each basename. Lowercase patterns match case-insensitively. A pattern containing uppercase letters is case-sensitive. Use path_re to match the slash-separated relative path instead.

include and exclude use case-sensitive glob syntax. glob= is an alias for include=. Patterns without / match names at any depth, so *.py matches src/app.py. Patterns containing / are root-relative. * stays within a path component; ** spans directories: src/* matches immediate children, whereas src/** also matches deeper descendants. Matching a directory with exclude prunes its entire subtree. Includes never prune traversal. Excludes always win, and includes do not override ignore rules.

Filter extensions with ext="py" or ext=["py", "rs"]. Extension and glob filters must both match. For example, include="src/*", ext="py" requires src/* and *.py, like combining rg -g with -t.

Set min_depth and max_depth to bound recursion. max_filesize skips files above a byte limit.

ls follows the shell command's listing conventions. It takes root first, as the shell's ls DIR does. It uses fd with max_depth=1, includes directories, disables ignore rules, and sorts by name. Set hidden=True for ls -a behaviour. All fd filters remain available.

fd_iter yields absolute Path objects as the walk finds them. It accepts every fd filter. Stopping iteration ends the walk. It does not accept timeout_ms.

path_re and skip_path_re filter slash-separated relative paths using regexes. They select returned paths or searched files without changing traversal. To skip entire subtrees, use skip_dir with a glob or skip_dir_re with a regex.

rg and rg_iter return structured SearchLine rows. They accept the same filters as fd: include, exclude, glob, ext, path_re, skip_path_re, skip_dir, skip_dir_re, min_depth, max_depth, max_filesize, follow_links, and same_file_system.

Search is case-sensitive by default, matching rg. Use smart_case=True for rg --smart-case behaviour. Use case_sensitive=False to force case-insensitive matching.

Patterns support backreferences and lookaround everywhere, including filename and path filters:

rg(r"\b(\w+)\s+\1\b", ".")  # repeated words
rg(r"(?<=TODO: )\w+", ".")   # word following TODO:
fd(r"^(\w+)_\1\.py$")  # names such as utils_utils.py

All regex parameters use fancy-regex, with no engine-selection flag and no C library. Ordinary patterns, including word boundaries (\b, \B) outside lookbehinds, use its non-backtracking engine. Patterns requiring backtracking have a step budget that allows lines of millions of characters. A search that exceeds the budget raises ValueError. It never silently skips a file or path.

Each SearchLine has these fields:

kind         'match', 'before', 'after', or 'context'
path         path relative to root
line_number  1-based line number
lnhash       exhash-style `lineno|hash|` address for the line
line         line text without the trailing newline
matches      list of (start, end) byte offsets for match rows

rg, search_text, and search_path return SearchResults by default. This list subclass displays as rg-style multiline text in str() and notebook pretty output. rg_iter yields rows lazily.

SearchLine has a structured repr and an rg-style str. The string display truncates line to 180 characters with a trailing …. repr and asdict() retain the full line. SearchLine.asdict() returns the fields as a plain Python dictionary.

Pass lnhashs=True to rg or rg_iter to display hash addresses instead of line numbers. The line_number field remains available.

For other result forms, use rg(..., paths=True) to return unique matched paths, rg(..., count=True) to count match spans, or rg(..., count="file") for a dict from each file's label to its count, sorted by label. paths and count cannot both be set.

^ and $ match at the start and end of each line. A line ends at \n or \r\n. $ also matches before a \r that has no \n after it. rg, rgstr, and compile reject patterns containing a literal \n or \r. nbrg allows them with multiline=True.

Content searches and compiled content matchers are confined to individual lines: whitespace classes, backreferences and lookaround cannot cross a line ending, and \A/\z refer to each line. With nbrg(..., multiline=True), \A/\z refer to the whole cell, while ^/$ still anchor lines. Filename and path filters match the full name or path instead.

Path results

fd and ls return PathResults, a list of absolute Path objects. So do rg and nbrg with paths=True, and their async equivalents. Indexing or iterating returns ordinary Paths:

for path in fd(root="src", ext="py"):
    text = path.read_text()
    size = path.stat().st_size

Use .name, .suffix, and .relative_to(root) for path components. .stat() follows symlinks; .lstat() inspects the link itself. .readlink() returns a link's target. Discovery preserves native filenames, including literal backslashes on Unix and non-UTF-8 names on filesystems that support them.

PathResults displays as an ls -l-style listing of at most rgapi.MAX_REPR rows. A final … N more line reports omitted rows. The listing uses .lstat() only on displayed rows. show_target=True adds symlink targets. str(res) returns one root-relative name per line. Slices retain the display root and completion status. list(res) returns the absolute Paths without the custom display.

Structured text and notebook search rows retain root-relative string labels in their path fields. Content searches still follow explicitly named root links. This differs from discovery's default of returning the link itself.

The Rust find and find_iter APIs return native PathBuf values relative to the root, or to the common ancestor of several roots in WalkOptions::roots. For an explicitly named file or unfollowed root link, the result is its basename.

Rust callers can set FindOptions::special_files to also discover FIFOs, sockets, and device nodes, for example to reject unsupported entries during archiving. This defaults to false; normal discovery returns regular files, directories when requested, and symlinks.

Limits and timeouts

Set timeout_ms on rg, fd or ls to stop at a deadline and return the results collected so far. Their async versions accept it too. Results report why the operation stopped:

  • stop_reason=None means the result is complete.
  • stop_reason="max_results" means max_results truncated the result.
  • stop_reason="timeout" means the deadline was reached.

complete is true exactly when stop_reason is None. A count is a plain integer or dict, with no completion flag. Counting can't be combined with timeout_ms.

Deadlines stop result collection and request worker cancellation. Workers cannot interrupt a regex evaluation or filesystem call already in progress; a timeout is not a hard per-match execution limit.

Context lines

before_context, after_context, and context correspond to rg -B, rg -A, and rg -C. Files containing NUL bytes or invalid UTF-8 are skipped.

Block summaries

rg(..., summary=True) returns one row per blank-line-delimited block instead of one row per matching line. Empty and whitespace-only lines delimit blocks. A block containing several matching lines appears once and keeps every matching SearchLine in matches.

rg("TODO", ".", summary=True, context=1, maxlen=120)

The result is BlockResults, a list of SearchBlock objects. Each block has path, block_index, start_line, end_line, start_lnhash, end_lnhash, kind, full source, and matches.

Matches display as path:start-end:source. Context displays as path:start-end-source. With lnhashs=True, the range uses copyable boundary addresses such as path:4|Py|,6|HD|:source. Newline runs display as . maxlen limits the displayed text without changing source or asdict().

In summary mode, before_context, after_context, and context count neighbouring blocks. max_results counts matching blocks and retains their context. summary=True cannot be combined with paths or count. It can be combined with lnhash for copyable block boundaries.

Notebooks

nbrg searches cell source in Jupyter .ipynb files and returns matching cells. Each result identifies the cell by its nbformat cell/message id, which stays stable across edits.

Plain rg searches escaped notebook JSON, including outputs and metadata. Its line numbers refer to that JSON file. nbrg searches the reconstructed cell source and identifies the cell you would edit.

from rgapi import nbrg

nbrg("read_csv", ".")                  # cells whose source matches, across all notebooks under "."
nbrg("read_csv", ".", cell_context=1)  # also include neighbouring cells as context

Notebook discovery, parsing, and matching run together in one parallel Rust pass. Matching uses the same fancy-regex engine as rgapi.rg, including backreferences and lookaround, with the same case_sensitive and smart_case behaviour. nbrg accepts the discovery filters from fd and rg, including include, exclude, glob, hidden, max_depth, and skip_dir.

Matching is line-oriented by default. Use nbrg(r"(foo)\n\1", ".", multiline=True) to match across lines within a cell. Matches never cross cell boundaries.

nbrg returns NbResults, a list of NbCell. Each NbCell has:

path         notebook path relative to root
cell_index   0-based position of the cell in the notebook
cell_id      nbformat cell id (falls back to the cell index for notebooks without ids)
cell_type    'code', 'markdown', or 'raw'
kind         'match' or 'context'
source       full cell source
matches      list of SearchLine rows for the matched lines within the cell

NbCell.asdict() returns these fields as a plain dictionary. Its matches field contains SearchLine dictionaries.

str() and pretty display show one line per cell. Matches use path:cell_id:source. Context uses path:cell_id-source. Newline runs display as .

A matching cell's display starts at its first matched line. Earlier lines are replaced by …[Ln], where n is the matched line's one-based number within the cell. A leading #| directive is retained, as in #| export…[L4]needle here.

maxlen limits displayed source and defaults to 120. The full source remains in source and asdict(). Each cell appears once even when it has multiple matches. All hits remain in matches.

cell_context=N includes the N cells before and after each match as kind="context" rows. Context cells are deduplicated within each notebook.

nbrg_iter yields NbCell rows as notebooks are parsed. For collected results, nbrg accepts these limits and result options:

  • max_results returns at most that many cells after sorting by path and cell index.
  • count=True returns the number of matching cells.
  • timeout_ms applies a deadline with the same stop_reason values as rg.

The parser reads only each cell's id, cell_type, and source. It skips outputs and metadata without loading embedded images or plots. search_nb(pattern, path, ...) searches a single notebook file in the same way.

rgapi-nbrg exposes notebook search without requiring a Python kernel:

rgapi-nbrg 'read_csv' .
rgapi-nbrg 'read_csv' . --cell-context 1
rgapi-nbrg 'read_csv' nbs tests
rgapi-nbrg 'read_csv' nbs --glob '*.ipynb' --max-results 20

Run rgapi-nbrg --help for its discovery, matching, and output options.

Async

fda, rga, and nbrga are async versions of fd, rg, and nbrg. The async generators fda_iter, rga_iter, and nbrga_iter yield rows as the search finds them. Async functions accept the same arguments and return the same types as their synchronous equivalents.

from rgapi import fda, rga, rga_iter

await fda(ext="py")
res = await rga("TODO", ".", timeout_ms=200)
if not res.complete: print(f"partial results: {res.stop_reason}")
async for row in rga_iter("TODO", "."): ...

Walking and searching use Rust threads, without asyncio.to_thread or the event loop's executor. A callback uses loop.call_soon_threadsafe to complete the awaited future or supply results to the generator's queue. The event loop remains unblocked, with normal contextvars behaviour.

Cancellation is checked between rows and files; it does not interrupt a regex evaluation or filesystem call already in progress. This includes timeouts from asyncio.wait_for or asyncio.timeout. It also includes task cancellation, such as starlette cancelling a disconnected client's request.

Wrap an async iterator in contextlib.aclosing when leaving its loop early. break alone delays generator finalization until garbage collection. The context manager provides prompt cleanup:

async with aclosing(rga_iter("TODO", ".")) as it:
    async for row in it:
        if enough(row): break

Use streaming results for incremental display, such as sending batches to a browser as they arrive. Collected results with timeout_ms return what was found before the deadline. Use asyncio.wait_for when a timeout should raise instead.

Benchmarks

tools/bench.py compares the rg CLI with in-process rgapi. Run it against a release build. One run on this machine, using best time from seven repeats:

fixture rg rgapi
6 x 2 MB files, 2 matches 6.54 ms 1.44 ms
800 x 1.5 KB files, 2 matches 13.90 ms 10.94 ms
tiny dir, repeated 30x 5.92 ms 2.14 ms

Metadata

Release files for rgapi 0.2.3

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

Source distribution (sdist)

Source distribution for rgapi 0.2.3
File Size Uploaded Provenance Actions
rgapi-0.2.3.tar.gz 67.4 kB With provenance Details for rgapi-0.2.3.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for rgapi 0.2.3
File Actions
rgapi-0.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details for rgapi-0.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
rgapi-0.2.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64 Details for rgapi-0.2.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
rgapi-0.2.3-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details for rgapi-0.2.3-cp313-cp313-macosx_11_0_arm64.whl
rgapi-0.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details for rgapi-0.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
rgapi-0.2.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details for rgapi-0.2.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
rgapi-0.2.3-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details for rgapi-0.2.3-cp312-cp312-macosx_11_0_arm64.whl
rgapi-0.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details for rgapi-0.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
rgapi-0.2.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details for rgapi-0.2.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
rgapi-0.2.3-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details for rgapi-0.2.3-cp311-cp311-macosx_11_0_arm64.whl
rgapi-0.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details for rgapi-0.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
rgapi-0.2.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ ARM64 Details for rgapi-0.2.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
rgapi-0.2.3-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details for rgapi-0.2.3-cp310-cp310-macosx_11_0_arm64.whl

Total release size: 18.6 MB

Release files / rgapi-0.2.3.tar.gz

Download URL rgapi-0.2.3.tar.gz
Size 67.4 kB
Tags Source
SHA-256 checksum
How to use checksums
02d820220ec3e5e2812ff562eeaa595d42a2537d8790cd41cbb2d190e4e96a3c
BLAKE2b-256 checksum
How to use checksums
0dc7140622223d410b8508304e607ef7bfc5b566c9fa5f1e13f2611adfe1e5aa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / rgapi-0.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL rgapi-0.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.6 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
ee3c68c62630d230cd9009e24169705ebee09d7d28846050fbfe7fdea1d6ac36
BLAKE2b-256 checksum
How to use checksums
b4c6fd2d46c04488589c9b0ff16d955dabdc74efb3f1d5ac62e10365fe97d092
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / rgapi-0.2.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL rgapi-0.2.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.6 MB
Tags CPython 3.13 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
4a71b2008a5aae6358a435560221c0a80251d7f7575dcbd016e70d6673895211
BLAKE2b-256 checksum
How to use checksums
bd87ae49f8577ebbb2547a41b3cc9b63eb7eba5b9429be2f32ec60720efb101d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / rgapi-0.2.3-cp313-cp313-macosx_11_0_arm64.whl

Download URL rgapi-0.2.3-cp313-cp313-macosx_11_0_arm64.whl
Size 1.5 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
e691abb41bff7d49a944361ef5d855d617e8c489048749d49a597e9f8ce75786
BLAKE2b-256 checksum
How to use checksums
3a4f717c9781d116fb0a4a30ad847a3a6a171285daab4af189a1657f7d156d88
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / rgapi-0.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL rgapi-0.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.6 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
f8c999e1f883801410551812570e97d554ecf9a6bcd90a8c10af7e6d2f9be02a
BLAKE2b-256 checksum
How to use checksums
057e2c599327e04f9f863e6ffb91efe760252be4035923684c3724adda91b7bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / rgapi-0.2.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL rgapi-0.2.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.6 MB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
fb93a0f1f402e62c2a2441208176be134df4031c19b930cc7d46fc15c1a93e42
BLAKE2b-256 checksum
How to use checksums
433d9576c20b482491fe69d1a8855838b31238edeb9e90239707ce7232823235
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / rgapi-0.2.3-cp312-cp312-macosx_11_0_arm64.whl

Download URL rgapi-0.2.3-cp312-cp312-macosx_11_0_arm64.whl
Size 1.5 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
e67cbd713b2304a05edbd04e3251f20beada242feb3eccf63f48d7b864c11e1b
BLAKE2b-256 checksum
How to use checksums
495b093a137c8a351ad84ed478de8835b21f76014eec03211e73ba14aaf0e752
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / rgapi-0.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL rgapi-0.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.6 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
46663f9673b2e134cf871d99b3e57cfffea365ea5047de15d464da0dcdf1df3d
BLAKE2b-256 checksum
How to use checksums
4588f0b0025078eb4df512241b9e54e051dcbf44dabf8aa216258880cd39d3e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / rgapi-0.2.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL rgapi-0.2.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.6 MB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
2848d080d5872c3dd6711cafc67facc26e8ac75111d605f0a4ae01e5eec23a03
BLAKE2b-256 checksum
How to use checksums
59405b748fe25399f60d70950c04f5bb9cdd9087498229cdae7f3a6c439e4498
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / rgapi-0.2.3-cp311-cp311-macosx_11_0_arm64.whl

Download URL rgapi-0.2.3-cp311-cp311-macosx_11_0_arm64.whl
Size 1.5 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
57298b07537838ab4f8c980d715040067a934c48fe8da84670a82c6c9970a416
BLAKE2b-256 checksum
How to use checksums
4cdd0ada5e570b01eca95983a0fa77fb4fd07093787801cbd412618a42cea265
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / rgapi-0.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL rgapi-0.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.6 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
80857ed4b50b9472db3ff206f37f4a7207938b1c2ccca9177b96117f304bf2cd
BLAKE2b-256 checksum
How to use checksums
3ca6e4419374117e40423f0a34dd431ce9b72f624e2101b9868e9d8e88a63eb2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / rgapi-0.2.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL rgapi-0.2.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.6 MB
Tags CPython 3.10 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
6df30a386e245460c5246914a404d055a3c34c9f1ee8366a68df33967122a74c
BLAKE2b-256 checksum
How to use checksums
e3b9f22608f640c51ee0127208bdc7bb90a7638ddf98abcb9b58b84994e416e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / rgapi-0.2.3-cp310-cp310-macosx_11_0_arm64.whl

Download URL rgapi-0.2.3-cp310-cp310-macosx_11_0_arm64.whl
Size 1.5 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
19a970d0b0d2b915c9e7649b8ef233137f53574086f7aa64e3eba6f3169a152f
BLAKE2b-256 checksum
How to use checksums
172344484dc5b919b816700176d5259a7b8fedbbe3c024b00da403e31be5b510
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Security for rgapi 0.2.3

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 rgapi-0.2.3.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 Oct 25, 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.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.3 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