isnady 0.4.7 → 0.4.9

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.
Files changed (3) hide show
  1. package/README.md +33 -8
  2. package/index.js +1 -1
  3. package/package.json +1 -1
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.4.7-1D4777?style=for-the-badge&logo=pypi&logoColor=white" alt="PyPI">
11
+ <img src="https://img.shields.io/badge/PyPI-v0.4.9-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.4.7-14304F?style=for-the-badge&logo=npm" alt="npm">
16
+ <img src="https://img.shields.io/badge/npm-v0.4.9-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.4.7).** Search, chains of transmission, narrators, books, scholars, statistics and
48
+ > **Pre-alpha (0.4.9).** 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
 
@@ -391,7 +391,8 @@ looks for himself among the narrators.
391
391
  Choose a book and a number, or let isnady choose: beside the number stands the book's last number ("/ 7563") and
392
392
  where the hadith stands among the book's ("hadith 36 of 7,467"); ⏮ ‹ › ⏭ go to the first, previous, next and last
393
393
  hadith, so do the arrow keys and the mouse wheel; typing lists the numbers that begin so, a number the book does not
394
- have offers the nearest, and **Random hadith** picks one. `iy chain kafi` prints the range.
394
+ have offers the nearest, and **Random hadith** picks one among those whose chain was read. `iy chain kafi` prints
395
+ the range. A hadith a book gives without a chain says so above its text.
395
396
 
396
397
  <p align="center">
397
398
  <img src="https://raw.githubusercontent.com/bayramkotan/isnady/main/assets/screenshots/chain.png" alt="Isnad Chains — Sahih al-Bukhari 1: the number with the book's last number and its place, first / previous / next / last, and the chain as a timeline from the book to the Prophet" width="850">
@@ -413,11 +414,16 @@ correct. Names are kept exactly as written, with the clarifications the compiler
413
414
  <summary><b>📊 How well it reads today</b></summary>
414
415
  <br>
415
416
 
416
- | | Chains | Split into narrators | Reaching the Prophet / a Ma'sum | Names identified |
417
+ | | Chains (roads) | Read whole | Reaching the Prophet / a Ma'sum | Names identified |
417
418
  |:--|--:|--:|--:|--:|
418
- | Sahih al-Bukhari | 7,580 | 85.5% | | 51.5% |
419
- | Sunan Abi Dawud | 5,272 | 71.9% | | 53.0% |
420
- | al-Kafi (read the Shia way) | 14,239 | 96.8% | 92% | 48.5% |
419
+ | Sahih al-Bukhari | 8,073 | 97.0% | 77.5% | 74.7% |
420
+ | Sahih Muslim | 12,330 | 96.7% | 70.4% | 77.6% |
421
+ | Sunan Abi Dawud | 6,422 | 95.9% | 76.8% | 74.3% |
422
+ | al-Kafi (read the Shia way) | 14,239 | 96.8% | 94.6% | 63.8% |
423
+
424
+ (isnady 0.4.9, chains isnady-isnad-12, narrators isnady-narrators-15. A road of a tahwil (ح) is a chain of its own;
425
+ "reaching" counts the chains whose last link is the Prophet ﷺ or a Ma'sum — a chain may also end with a Companion's
426
+ own word, or at a link left unread.)
421
427
 
422
428
  In a blind, hand-checked sample of 30 Sunni chains: **no wrong narrator**, 27 complete. The rest are
423
429
  kept whole, each with its reason: *tahwil* (ح, a second chain joining), two teachers at one link
@@ -624,6 +630,11 @@ it. Every result is computed once and saved as JSON in your data folder (`derive
624
630
  what it was computed from changed — new books or hadith, narrators identified differently, new verdicts or grades,
625
631
  books switched off — or the analysis itself; a new version of isnady alone does not.
626
632
 
633
+ **Out of isnady, piece by piece or whole:** every finding has a ⤓ — its chart as a picture (PNG, SVG), a PDF or on
634
+ the clipboard, its figures as CSV, Excel, JSON or Markdown; the page's **Export** writes a section or every section
635
+ as one PDF or one web page with the charts and their tables, every table as one Excel workbook (a sheet each) or as
636
+ CSV files, and the computed results as JSON (`iy export statistics [BOOK]`).
637
+
627
638
  | Section | What it shows |
628
639
  |---|---|
629
640
  | **All books** | the first entry of the book list: every section measured on both roads at once, each road under its own heading — never added together |
@@ -916,6 +927,19 @@ and a folder named `isnady-data` beside a portable application is used instead:
916
927
  | `settings.json` | appearance and other settings, shared by the window and the command line |
917
928
  | `repos/`, `user_repositories.json` | the catalogs read from the repositories, and the repositories you added |
918
929
  | `isnady.<date-time>.bak.db` | a database replaced by a ready one, kept |
930
+ | `logs/isnady.log`, `logs/crash_*.log` | what isnady did and what went wrong; a hard crash's stack (Help → Log, `iy log`) |
931
+
932
+ **The log.** Every start writes a banner — version, Python, PySide6, system, data folder, profile, database,
933
+ books — and then a line for each thing isnady does: a page drawn, a search and how long it took, an import, an
934
+ export, the chains read, the narrators identified, the statistics computed; every error with its traceback.
935
+ **Help → Log…** (Ctrl+Shift+L) follows it live, shows only the errors or the lines holding a text, larger or
936
+ smaller, copies it with the version at its head for a report, opens its folder, and removes what is older than a
937
+ day. A crash Python itself cannot catch leaves `logs/crash_<time>.log`. `iy log`, `iy log --level error`,
938
+ `iy log -f`; `iy config set log.level debug` for more.
939
+
940
+ <p align="center">
941
+ <img src="https://raw.githubusercontent.com/bayramkotan/isnady/main/assets/screenshots/log.png" alt="Help → Log — this run's banner and every step with its time, followed live; only errors, a text, larger or smaller, copy, the folder, what is older than a day removed" width="850">
942
+ </p>
919
943
 
920
944
  ---
921
945
 
@@ -956,6 +980,7 @@ command line never loads Qt. Every command that takes a book accepts its full na
956
980
  | `iy import FORMAT FILE-OR-URL` | `iy import isnady ~/my_book/book.json` | Import a file of your own; `--book`, `--language`, `--license`, `--user`, `--token-env`, `--api-key-env` |
957
981
  | `iy sources` | | Imported sources, their licence and tier |
958
982
  | `iy remove KEY` | | Remove a source and everything imported from it |
983
+ | `iy log` | `iy log --level error`, `iy log -f` | isnady's log: the last lines, errors only, a text, followed live, the crash reports (`--crash`), `--before DAY`, `--clear` |
959
984
  | `iy reset settings\|books\|all` | `iy reset books` | Back to zero: all settings, all books, or everything (`--yes` does not ask) |
960
985
  | `iy formats` | | The formats that can be imported |
961
986
  | `iy datadir [FOLDER]` | `iy datadir /data/isnady` | Show or move the data folder; `--as-is`, `--default` |
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.4.7";
9
+ export const version = "0.4.9";
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.4.7",
3
+ "version": "0.4.9",
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",