isnady 0.2.8 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 Bayram Kotan
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Bayram Kotan
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -8,12 +8,12 @@
8
8
 
9
9
  <p align="center">
10
10
  <a href="https://pypi.org/project/isnady/">
11
- <img src="https://img.shields.io/badge/PyPI-v0.2.8-1D4777?style=for-the-badge&logo=pypi&logoColor=white" alt="PyPI">
11
+ <img src="https://img.shields.io/badge/PyPI-v0.3.0-1D4777?style=for-the-badge&logo=pypi&logoColor=white" alt="PyPI">
12
12
  </a>
13
13
  <img src="https://img.shields.io/pypi/pyversions/isnady?style=for-the-badge&color=A47E24&logo=python&logoColor=white" alt="Python">
14
14
  <img src="https://img.shields.io/badge/Platform-Windows%20%7C%20Linux%20%7C%20macOS-5B6878?style=for-the-badge" alt="Platform">
15
15
  <a href="https://www.npmjs.com/package/isnady">
16
- <img src="https://img.shields.io/badge/npm-v0.2.8-14304F?style=for-the-badge&logo=npm" alt="npm">
16
+ <img src="https://img.shields.io/badge/npm-v0.3.0-14304F?style=for-the-badge&logo=npm" alt="npm">
17
17
  </a>
18
18
  <a href="https://github.com/bayramkotan/isnady-data">
19
19
  <img src="https://img.shields.io/badge/data-isnady--data-2E6B4F?style=for-the-badge&logo=github" alt="isnady-data">
@@ -45,7 +45,7 @@
45
45
  <img src="https://raw.githubusercontent.com/bayramkotan/isnady/main/assets/screenshots/search-arabic.png" alt="Searching النيات finds بالنيات in Sahih al-Bukhari 1, with the chain above the text" width="850">
46
46
  </p>
47
47
 
48
- > **Pre-alpha (0.2.8).** Search, chains of transmission, narrators, books, scholars, statistics and
48
+ > **Pre-alpha (0.3.0).** Search, chains of transmission, narrators, books, scholars, statistics and
49
49
  > the glossary work today, Sunni and Shia, on data you import in one click. Everything is built in
50
50
  > the open, one piece at a time.
51
51
 
@@ -331,6 +331,9 @@ without authentication (credentials are never stored), are read as well.
331
331
  | **Attached prefixes** | `النيات` finds `بالنيات`, because Arabic joins bi-, wa-, fa- and al- to the word. *Whole words only* turns this off |
332
332
  | **Latin-script text** | Case and accents are ignored: `NIYET`, `niyet` and `nîyet` are one word; `Muʿādh`, `Mu'adh` and `Muadh` too |
333
333
  | **Match** | All words, any word, the exact phrase — or by meaning (AI, below) |
334
+ | **Unknown letters** | `?` stands for one letter you do not know, `*` for any letters: `ي?من` finds `يؤمن`, `مسل*` finds `مسلم`, `مسلمون` … |
335
+ | **Misspellings** | A search that finds nothing as typed is tried again with each word one letter away — a letter more, less or different, in as many words as needed: `لا يمن احدكم حتى يحب لاخبه` finds `لا يؤمن أحدكم حتى يحب لأخيه`. The spellings used are named on the result line |
336
+ | **Pasted passages** | Punctuation and quotation marks clinging to the words do not matter |
334
337
  | **Books** | All books, all Sunni, all Shia, or any few ticked one by one |
335
338
  | **Order** | Book by book in the order of the book lists — Sahih al-Bukhari, Sahih Muslim, Sunan Abi Dawud … then the Shia books — and within a book by its numbering |
336
339
  | **Language** | One language to search in; the languages you do not read are folded behind an arrow on each hadith, a click opens them. The list holds the languages imported; the languages the same books have in isnady-data (Urdu, Indonesian, Bengali, French, Russian, Tamil) are named at its end — choosing them opens **File → Data Sources** to import them |
@@ -459,6 +462,16 @@ The **Narrators** page lists every narrator of the imported rijal works — **Al
459
462
 
460
463
  - the name he is **known by** (al-A'mash, Ibn 'Umar, Zurara), with his full name and every part of
461
464
  it laid out — name, lineage, kunya, by-name, nisbas, client of — the part he is known by marked ★;
465
+ - **his life**, in English, Turkish or Arabic: for 152 people — the Companions who narrated most, the
466
+ ten promised Paradise, the Mothers of the Believers, the great Successors and their followers, the
467
+ imams of law and of criticism, the compilers of the books, and on road B the companions of the Imams
468
+ and the Imami scholars — a life written for isnady: full name, birth, death, family, teachers,
469
+ students, works and what they are known for, told in a few paragraphs and summarised from the
470
+ classical biographical works named under it (Ibn Sa'd, Ibn 'Abd al-Barr, Ibn Hajar's *al-Isaba*,
471
+ al-Dhahabi's *Siyar*, al-Mizzi … for the Sunni road; al-Najashi, al-Tusi, al-Kashshi … for the Shia
472
+ road). For every other narrator, his life as far as the data says it, in plain sentences: his
473
+ generation, the year of his death with its Common Era year, his rank, the books his hadith are in,
474
+ how often he is in the chains, his teachers and students most often met there;
462
475
  - what his critic says, in the critic's own words: Ibn Hajar's verdict and its rank for a Sunni
463
476
  narrator; al-Najashi's words, reliability and creed for a Shia narrator — the entry as written one
464
477
  click away;
@@ -518,7 +531,8 @@ The scholars whose work is in the imported data, and what the data measures of i
518
531
  (their collection, the teachers their chains begin with, the Companions they end with), **graders**
519
532
  (how they grade, and how far they agree with each other on the same hadith — agreement, Cohen's
520
533
  kappa, and a strictness index: the classical *mutashaddid* / *mutasahil*, measured), and **critics**
521
- of narrators — Sunni and Shia on one page (*All / Sunni / Shia*), each by his own road: al-Kulayni,
534
+ of narrators — each with **his life** (the same written lives as on Narrators) — Sunni and Shia on one
535
+ page (*All / Sunni / Shia*), each by his own road: al-Kulayni,
522
536
  al-Saduq, al-Mufid and al-Tusi with their chains counted to a Ma'sum; al-Majlisi and al-Behbudi compared
523
537
  only with each other on the four Imami grades (sahih, hasan, muwaththaq, da'if); al-Najashi's verdicts in
524
538
  the Imami terms. On Sunan Abi Dawud, for example, Zubair 'Ali Za'i grades most strictly (−0.21) and
@@ -764,6 +778,7 @@ command line never loads Qt. Every command that takes a book accepts its full na
764
778
  | `iy tahric BOOK NUMBER` | `iy tahric bukhari 1` | Other narrations of a hadith in the imported books (takhrij) |
765
779
  | `iy stats [SECTION]` | `iy stats graders --book abudawud` | `corpus`, `narrators`, `chains`, `grades`, `books`, `graders`, `model`, `lab`; `--csv DIR`, `--recompute` |
766
780
  | `iy term [NAME]` | `iy term --search tadlis` | The glossary, English, Turkish or Arabic (`--lang tr`, `--lang ar`) |
781
+ | `iy life NAME` | `iy life Abu Hurayra --lang tr` | The life of a Companion, a narrator or a scholar (`--lang en\|tr\|ar`, `--tradition`, `--limit`) |
767
782
  | `iy tree WHICH [NAME]` | `iy tree family "Ibn Umar"` | Genealogies: `prophets`, `quraysh`, a narrator's `family`, his line of `learning` (`--depth`, `--width`) |
768
783
  | `iy bookmark ACTION` | `iy bookmark add hadith bukhari:1 --folder Prayer` | Bookmarks: `list`, `folders`, `add`, `remove`, `export`, `import` |
769
784
  | `iy ai build` | `iy ai status` | Learn the meaning index from the imported texts |
package/index.d.ts CHANGED
@@ -1,11 +1,11 @@
1
- export declare const version: string;
2
- export declare const name: string;
3
-
4
- export interface IsnadyInfo {
5
- name: string;
6
- version: string;
7
- dataLoaded: boolean;
8
- homepage: string;
9
- }
10
-
11
- export declare function info(): IsnadyInfo;
1
+ export declare const version: string;
2
+ export declare const name: string;
3
+
4
+ export interface IsnadyInfo {
5
+ name: string;
6
+ version: string;
7
+ dataLoaded: boolean;
8
+ homepage: string;
9
+ }
10
+
11
+ export declare function info(): IsnadyInfo;
package/index.js CHANGED
@@ -6,7 +6,7 @@
6
6
  * database (used by both the Python and JavaScript packages) exists.
7
7
  */
8
8
 
9
- export const version = "0.2.8";
9
+ export const version = "0.3.0";
10
10
  export const name = "isnady";
11
11
 
12
12
  /** Returns basic package information. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "isnady",
3
- "version": "0.2.8",
3
+ "version": "0.3.0",
4
4
  "description": "Hadith search with full isnad chains, narrator biographies, jarh wa ta'dil verdicts and reliability scores",
5
5
  "type": "module",
6
6
  "main": "./index.js",