IFSCFinder (Python)
IFSCFinder is a high-performance Python package that provides lightning-fast IFSC code lookups through an embedded SQLite database. With sub-millisecond query times and 40x cache acceleration, it's optimized for banking automation, fintech analytics, and high-throughput microservice architectures.
Performance Metrics:
- Average lookup time: 0.01ms per query
- Throughput: 136,845 lookups/second (uncached), 5.5M/second (cached)
- Cache speedup: 40x faster for repeated queries
- Database size: 42MB compressed SQLite with full Indian banking network coverage
- Memory footprint: Minimal with configurable caching
Installation
pip install git+https://github.com/IntegerAlex/IFSCFinder.git#subdirectory=python
For local development:
cd /home/akshat/projects/ifsc/python
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
Usage
from ifscfinder import ifsc_to_details, ifsc_to_bank
details = ifsc_to_details("SBIN0000001")
bank_name = ifsc_to_bank("SBIN0000001")
ifsc_to_details(code)returns a dictionary withBANK,BRANCH,ADDRESS,CITY1,CITY2,STATE, andSTD_CODEkeys.- Field-specific helpers (
ifsc_to_bank,ifsc_to_branch,ifsc_to_state, etc.) offer ergonomic access. clear_lookup_cache()invalidates the in-memory cache when the database changes.get_database(db_path=None)returns the underlyingIFSCDatabasesingleton if you need lower-level control.
Data Source
The packaged SQLite database lives under ifscfinder/data/ifsc.db. Replace this file with an updated dataset to refresh lookups. The package automatically validates the presence of the database and raises a descriptive FileNotFoundError if it is missing.
Testing & Quality
- Run
python3 -m compileall src/ifscfinderto sanity check syntax. - Upcoming automated tests will live under
python/testsand be executed viapytest. - The code uses strict IFSC normalization and structured logging to aid production diagnostics.
Roadmap
- Publish the package to PyPI with automated GitHub Actions builds.
- Provide a JSON export pipeline to feed JavaScript, Go, and Rust ports.
- Synchronize API contracts across the forthcoming TypeScript client and other language bindings.
Contributing
- Fork the repository and create a feature branch.
- Run sanity checks before submitting a pull request.
- Document any API changes in this README and sync cross-language specs.
License
LGPL-2.1 License. See LICENSE in the project root.
Copyright Notice: Copyright (c) 2024 Akshat Kotpalliwar. All rights reserved.
This package is distributed under the GNU Lesser General Public License v2.1. See the LICENSE file for full copyright information and license terms.
Release files for ifscfinder 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ifscfinder-0.2.0.tar.gz | 13.0 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ifscfinder-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 26.1 MB
Release files / ifscfinder-0.2.0.tar.gz
| Download URL | ifscfinder-0.2.0.tar.gz |
|---|---|
| Size | 13.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d677216437fa0a422721d83886cd44eea3f04a9b874d557256ee71fc82197bc3
|
|
BLAKE2b-256 checksum How to use checksums |
24c71db38adfca7434d5c0846b6f268af0b0acc5118a90ed1e944432e96100d4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / ifscfinder-0.2.0-py3-none-any.whl
| Download URL | ifscfinder-0.2.0-py3-none-any.whl |
|---|---|
| Size | 13.1 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
97d250337a7399964921d704e12615204db84811311c89a6675298c6c828aff6
|
|
BLAKE2b-256 checksum How to use checksums |
914ac12253a0eca28bd09951192764303e86eee3f4cc42490d726e2a19835407
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|