Skip to main content

Unofficial Python SDK for fetching mutual fund NAV history from mfapi.in (Rust backend)

Project description

NavPipe

NavPipe is a high-performance, compiled Python SDK for fetching mutual fund NAV history from the unofficial API at:

👉 https://www.mfapi.in

By moving the core logic to Rust, NavPipe now offers massive concurrency with minimal overhead, returning results directly into Polars memory.

Why the Rust rewrite?

  • 🦀 Safety: Memory-safe concurrent fetching using the tokio runtime.
  • 🚀 Speed: Zero-copy data transfers between Rust and Python via pyo3-polars.
  • 📊 Lazy-First: Native support for Polars LazyFrame, allowing you to optimize queries before they run.
  • 🧵 True Parallelism: Bypasses the Python Global Interpreter Lock (GIL) for network I/O and data transformation.

Installation

pip install navpipe

Quick Start

import navpipe
import polars as pl

# Initialize the Rust-backed client
client = navpipe.NavPipe(max_concurrency=10)

# Eager execution: Returns a polars.DataFrame immediately
df = client.nav_history(
    scheme_codes=[119551, 120503],
    start_date="2023-01-01",
    end_date="2023-12-31",
)

print(df)

Output Schema

The Rust engine performs diagonal concatenation to ensure all scheme data is merged efficiently:

Column Type Description
scheme_code Int64 The MFAPI unique identifier
date Date The NAV date
nav Float64 The Net Asset Value

Important: Scheme Codes

NavPipe requires scheme codes to be provided manually. You can find these on: 👉 https://www.mfapi.in

Example: https://api.mfapi.in/mf/119551119551 is the code.


Public API

NavPipe(max_concurrency: int)

Initializes the engine.

  • max_concurrency: Limits the number of simultaneous HTTP requests using a tokio::sync::Semaphore.

nav_history(...) -> pl.DataFrame

Eagerly fetches and collects data into a standard Polars DataFrame.


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

navpipe-0.3.0.tar.gz (133.9 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

navpipe-0.3.0-cp313-cp313-win_arm64.whl (19.1 MB view details)

Uploaded CPython 3.13Windows ARM64

navpipe-0.3.0-cp313-cp313-win_amd64.whl (21.0 MB view details)

Uploaded CPython 3.13Windows x86-64

navpipe-0.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

navpipe-0.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (23.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

navpipe-0.3.0-cp313-cp313-macosx_11_0_arm64.whl (21.4 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

navpipe-0.3.0-cp313-cp313-macosx_10_12_x86_64.whl (22.5 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

navpipe-0.3.0-cp312-cp312-win_arm64.whl (19.1 MB view details)

Uploaded CPython 3.12Windows ARM64

navpipe-0.3.0-cp312-cp312-win_amd64.whl (21.0 MB view details)

Uploaded CPython 3.12Windows x86-64

navpipe-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

navpipe-0.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (23.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

navpipe-0.3.0-cp312-cp312-macosx_11_0_arm64.whl (21.4 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

navpipe-0.3.0-cp312-cp312-macosx_10_12_x86_64.whl (22.5 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

navpipe-0.3.0-cp311-cp311-win_arm64.whl (19.2 MB view details)

Uploaded CPython 3.11Windows ARM64

navpipe-0.3.0-cp311-cp311-win_amd64.whl (21.1 MB view details)

Uploaded CPython 3.11Windows x86-64

navpipe-0.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

navpipe-0.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (23.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

navpipe-0.3.0-cp311-cp311-macosx_11_0_arm64.whl (21.5 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

navpipe-0.3.0-cp311-cp311-macosx_10_12_x86_64.whl (22.5 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

navpipe-0.3.0-cp310-cp310-win_amd64.whl (21.1 MB view details)

Uploaded CPython 3.10Windows x86-64

navpipe-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

navpipe-0.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (23.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

navpipe-0.3.0-cp310-cp310-macosx_11_0_arm64.whl (21.5 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

navpipe-0.3.0-cp310-cp310-macosx_10_12_x86_64.whl (22.5 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

navpipe-0.3.0-cp39-cp39-win_amd64.whl (21.1 MB view details)

Uploaded CPython 3.9Windows x86-64

navpipe-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.5 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

navpipe-0.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (23.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

navpipe-0.3.0-cp39-cp39-macosx_11_0_arm64.whl (21.5 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

navpipe-0.3.0-cp39-cp39-macosx_10_12_x86_64.whl (22.5 MB view details)

Uploaded CPython 3.9macOS 10.12+ x86-64

navpipe-0.3.0-cp38-cp38-win_amd64.whl (21.1 MB view details)

Uploaded CPython 3.8Windows x86-64

navpipe-0.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.5 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

navpipe-0.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (23.8 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

navpipe-0.3.0-cp38-cp38-macosx_11_0_arm64.whl (21.5 MB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

navpipe-0.3.0-cp38-cp38-macosx_10_12_x86_64.whl (22.5 MB view details)

Uploaded CPython 3.8macOS 10.12+ x86-64

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page