jugaad-xbrl
Parse the XBRL filings that Indian listed companies publish on NSE for their quarterly financial results (the SEBI "Integrated Filing – Financials").
- Reads the machine-readable
xbrlXML, from a path, raw bytes or a file object. - Handles all six filing formats: Ind AS, NBFC (Ind AS), Banking, Life Insurance, General Insurance and Other than Bank.
- Joins the facts with the SEBI taxonomy, so you get labelled statements and not just flat elements.
- Offers cross-format fields (
net_profit,eps_basic, ...) that mean the same thing for a bank, an insurer and an IT company.
Install
pip install jugaad-xbrl
Python 3.9 or newer. The only runtime dependency is PyYAML.
Usage
from jugaad_xbrl import parse
f = parse("INTEGRATED_FILING_INDAS_..._WEB.xml") # path, bytes, or binary file object
f.format # "indas"
f.reporting_period # 2026-07-01..2026-09-30
# Cross-format fields. Values are absolute rupees, EPS is rupees per share,
# and None means this format does not file that field.
c = f.canonical()
c.net_profit, c.eps_basic, c.total_assets
# Any raw taxonomy concept for the current reporting period
f.get("ProfitLossForPeriod")
# Labelled statements, with the taxonomy's tree and ordering
stmt = f.statement("100200") # results; also by role id
for depth, item in stmt.walk():
print(" " * depth, item.label, item.values)
stmt.rows # dimensional rows (segments, related-party transactions, ...)
# Everything in the file, unmodified
f.facts # Fact(concept, value, context, unit, decimals)
In-memory use works the same way:
import httpx
f = parse(httpx.get(url).content)
Things to know
- Formats use different element names. For example, net profit is
ProfitLossForPeriod(Ind AS, NBFC),ProfitLossForThePeriod(Banking),ProfitLossAfterTaxAndExtraordinaryItems(Life) andProfitLossAfterTax(General). The canonical layer hides this.jugaad_xbrl/specs/canonical/*.yamlholds the mappings. - Standalone and consolidated are separate filings. Parse each file on its own. The format is detected from the file.
- Units. Monetary values are always absolute rupees, whatever rounding the filer chose. Ratios are fractions (
0.0111is 1.11%). - Filers sometimes use the wrong field. Check the
...ExplanatoryTextBlockfacts when a number looks odd. The reader keeps them. - Taxonomy lag. Live filings use the 2026-01-31 taxonomy, but NSE only publishes the 2025-01-31 zips. A few concepts, such as
DescriptionOfOther…, are therefore unlabelled. Their facts are still returned. - The
other_than_bankcanonical mapping is unverified, as no sample filing was available.
Development
python3 -m venv .venv && .venv/bin/pip install -U pip && .venv/bin/pip install -e ".[dev]"
bash download_specs.sh # raw taxonomies and sample filings into ./specs (git-ignored)
.venv/bin/python tools/build_taxonomy.py # regenerate jugaad_xbrl/specs/taxonomy/*.json
.venv/bin/python -m pytest -q tests
The taxonomy JSON is generated from NSE's native linkbase files and cross-checked in tests against the xlsx that ships in each taxonomy zip. See AGENTS.md for the code layout and nse_integrated_filing_xbrl.md for the filing format reference.
Not affiliated with NSE or SEBI.
Metadata
Release files for jugaad-xbrl 0.1.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 | Provenance | Actions |
|---|---|---|---|---|
| jugaad_xbrl-0.1.0.tar.gz | 167.1 kB | With provenance | Details for jugaad_xbrl-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| jugaad_xbrl-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for jugaad_xbrl-0.1.0-py3-none-any.whl |
Total release size: 338.5 kB
Release files / jugaad_xbrl-0.1.0.tar.gz
| Download URL | jugaad_xbrl-0.1.0.tar.gz |
|---|---|
| Size | 167.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4c0fd737523f425f0f804e324cda7c35fb5ffb6b1c1482599bb45ab459744ea2
|
|
BLAKE2b-256 checksum How to use checksums |
a9bedcd01a992b48630fc03dc6a11bc9530c1aa4a27dbb4915deea1990b8bcfc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 22, 2026.
Transparency logRelease files / jugaad_xbrl-0.1.0-py3-none-any.whl
| Download URL | jugaad_xbrl-0.1.0-py3-none-any.whl |
|---|---|
| Size | 171.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
015a1f583464f2fdd65a3cf109a3e1ede0c708b2263899f4c24907c4dcd830a1
|
|
BLAKE2b-256 checksum How to use checksums |
e694402852630fdc748bc946d36e5166c5b0a7e124293c5d81b697266a2cd97d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 22, 2026.
Transparency logSecurity for jugaad-xbrl 0.1.0
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 2 files in this release have been uploaded with provenance metadata.
Attestation for jugaad_xbrl-0.1.0.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 22, 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.
To learn more about protecting yourself from malicious actors, visit our package security documentation.