ebk 0.4.4__py3-none-any.whl

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 (87) hide show
  1. ebk/__init__.py +35 -0
  2. ebk/ai/__init__.py +23 -0
  3. ebk/ai/knowledge_graph.py +450 -0
  4. ebk/ai/llm_providers/__init__.py +26 -0
  5. ebk/ai/llm_providers/anthropic.py +209 -0
  6. ebk/ai/llm_providers/base.py +295 -0
  7. ebk/ai/llm_providers/gemini.py +285 -0
  8. ebk/ai/llm_providers/ollama.py +294 -0
  9. ebk/ai/metadata_enrichment.py +394 -0
  10. ebk/ai/question_generator.py +328 -0
  11. ebk/ai/reading_companion.py +224 -0
  12. ebk/ai/semantic_search.py +433 -0
  13. ebk/ai/text_extractor.py +393 -0
  14. ebk/calibre_import.py +66 -0
  15. ebk/cli.py +6433 -0
  16. ebk/config.py +230 -0
  17. ebk/db/__init__.py +37 -0
  18. ebk/db/migrations.py +507 -0
  19. ebk/db/models.py +725 -0
  20. ebk/db/session.py +144 -0
  21. ebk/decorators.py +1 -0
  22. ebk/exports/__init__.py +0 -0
  23. ebk/exports/base_exporter.py +218 -0
  24. ebk/exports/echo_export.py +279 -0
  25. ebk/exports/html_library.py +1743 -0
  26. ebk/exports/html_utils.py +87 -0
  27. ebk/exports/hugo.py +59 -0
  28. ebk/exports/jinja_export.py +286 -0
  29. ebk/exports/multi_facet_export.py +159 -0
  30. ebk/exports/opds_export.py +232 -0
  31. ebk/exports/symlink_dag.py +479 -0
  32. ebk/exports/zip.py +25 -0
  33. ebk/extract_metadata.py +341 -0
  34. ebk/ident.py +89 -0
  35. ebk/library_db.py +1440 -0
  36. ebk/opds.py +748 -0
  37. ebk/plugins/__init__.py +42 -0
  38. ebk/plugins/base.py +502 -0
  39. ebk/plugins/hooks.py +442 -0
  40. ebk/plugins/registry.py +499 -0
  41. ebk/repl/__init__.py +9 -0
  42. ebk/repl/find.py +126 -0
  43. ebk/repl/grep.py +173 -0
  44. ebk/repl/shell.py +1677 -0
  45. ebk/repl/text_utils.py +320 -0
  46. ebk/search_parser.py +413 -0
  47. ebk/server.py +3608 -0
  48. ebk/services/__init__.py +28 -0
  49. ebk/services/annotation_extraction.py +351 -0
  50. ebk/services/annotation_service.py +380 -0
  51. ebk/services/export_service.py +577 -0
  52. ebk/services/import_service.py +447 -0
  53. ebk/services/personal_metadata_service.py +347 -0
  54. ebk/services/queue_service.py +253 -0
  55. ebk/services/tag_service.py +281 -0
  56. ebk/services/text_extraction.py +317 -0
  57. ebk/services/view_service.py +12 -0
  58. ebk/similarity/__init__.py +77 -0
  59. ebk/similarity/base.py +154 -0
  60. ebk/similarity/core.py +471 -0
  61. ebk/similarity/extractors.py +168 -0
  62. ebk/similarity/metrics.py +376 -0
  63. ebk/skills/SKILL.md +182 -0
  64. ebk/skills/__init__.py +1 -0
  65. ebk/vfs/__init__.py +101 -0
  66. ebk/vfs/base.py +298 -0
  67. ebk/vfs/library_vfs.py +122 -0
  68. ebk/vfs/nodes/__init__.py +54 -0
  69. ebk/vfs/nodes/authors.py +196 -0
  70. ebk/vfs/nodes/books.py +480 -0
  71. ebk/vfs/nodes/files.py +155 -0
  72. ebk/vfs/nodes/metadata.py +385 -0
  73. ebk/vfs/nodes/root.py +100 -0
  74. ebk/vfs/nodes/similar.py +165 -0
  75. ebk/vfs/nodes/subjects.py +184 -0
  76. ebk/vfs/nodes/tags.py +371 -0
  77. ebk/vfs/resolver.py +228 -0
  78. ebk/vfs_router.py +275 -0
  79. ebk/views/__init__.py +32 -0
  80. ebk/views/dsl.py +668 -0
  81. ebk/views/service.py +619 -0
  82. ebk-0.4.4.dist-info/METADATA +755 -0
  83. ebk-0.4.4.dist-info/RECORD +87 -0
  84. ebk-0.4.4.dist-info/WHEEL +5 -0
  85. ebk-0.4.4.dist-info/entry_points.txt +2 -0
  86. ebk-0.4.4.dist-info/licenses/LICENSE +21 -0
  87. ebk-0.4.4.dist-info/top_level.txt +1 -0
@@ -0,0 +1,87 @@
1
+ ebk/__init__.py,sha256=rX_rYCcOHiYzCSAXX1wgt5cJhAPYoGXByauF2L1XAgo,790
2
+ ebk/calibre_import.py,sha256=V0lkI0tDWoCfDlW83Ybj8QdoaY90UVuLlR7NSri3VgY,1812
3
+ ebk/cli.py,sha256=TiMCKJb5aZnf11u5ixy-tYMk7p3Rlp6Pim_qDqD9vH8,242813
4
+ ebk/config.py,sha256=qZXaDCmetfmac5rUwhXZOOU3MynG16sekXrOWcMmXEk,6242
5
+ ebk/decorators.py,sha256=vNyI1jGBnqJumoanydYVOISmwIGoOrRYecg6tsbi33g,39
6
+ ebk/extract_metadata.py,sha256=4CME3unLDibucjWbOurHh-bz-LNKf9toxKygfJpifqk,12200
7
+ ebk/ident.py,sha256=iIQqFf7rdQ6FYRrPTplHvjUP50fyPLG8qOn_u0FNyx8,2928
8
+ ebk/library_db.py,sha256=kN9Mml5GU8feiXBwtAkE5JJKKWPOmhhYYchmCYEGzLo,51130
9
+ ebk/opds.py,sha256=gLkcer70NnrYCxRBzNds6RYgQ8poMkl4NpS07JDYOQk,23472
10
+ ebk/search_parser.py,sha256=NRVbGnaOWxbc1WtsoFVINjHqCMBEubrKBxY2b_HQqJY,14848
11
+ ebk/server.py,sha256=WNTc3VXXBrOYJUS_VHoUaVWYcbmsyS1PWpV4P2ewpHA,136649
12
+ ebk/vfs_router.py,sha256=tOaP-pkMHS6Wyj2VXStT_u7Kn1qYrPp5pUqfvHsviIE,8416
13
+ ebk/ai/__init__.py,sha256=-0vfDHdht8ZasYvl33nyGoWCaZxKIn_en0PxZdRQMkw,686
14
+ ebk/ai/knowledge_graph.py,sha256=lXxAuFugQhqSPYAr-z3jbLOT2gtpH88M7vrH5z8-5DI,16815
15
+ ebk/ai/metadata_enrichment.py,sha256=wl03Tf1GNDGtu75ZpxxkpOIRvQ3geHxYDC8aZ0ss-eU,12327
16
+ ebk/ai/question_generator.py,sha256=ev1wEmgIDxnb_kaZdiLh0Z1TW7HUjb_HR1NlsBmdduQ,11363
17
+ ebk/ai/reading_companion.py,sha256=8GHiA9tR-vb28eCS3FmpDmRMX2OMyg5IP8AhPZ7c-Vg,7948
18
+ ebk/ai/semantic_search.py,sha256=yz28dXZPA3kxr0ZdfciVO-jP8NHQb7aal53u1Hq02G4,15202
19
+ ebk/ai/text_extractor.py,sha256=CwjEOk0b4T6vhFY7BcKoew1jWp17EdMvPPIJIJj6OBY,13899
20
+ ebk/ai/llm_providers/__init__.py,sha256=6goZrMw4-rpyx-CFVkJ7cEHxPnpJbdjtUpRctVuErH0,617
21
+ ebk/ai/llm_providers/anthropic.py,sha256=9fj8N-Jvi2QXHyP7vhov7h4_RLTtox1vM5IcnVjX2Do,6294
22
+ ebk/ai/llm_providers/base.py,sha256=OgDiCnP0vWWdYdhbqtGC1UqarOe2Zpac4ZoVOZlDnqE,7949
23
+ ebk/ai/llm_providers/gemini.py,sha256=479m95GKvUU08CmQZO3RainN_L1Oxmz2KZ3JGJ9IJgI,8451
24
+ ebk/ai/llm_providers/ollama.py,sha256=YyxAZXgNN0wHFqpBCMKvEXA9NRX3nnu_1hB_JYXRefw,8103
25
+ ebk/db/__init__.py,sha256=CN1R77Ut5ai8kGSh1ohprGaS5qvOUMdtMT-y--5DIpw,792
26
+ ebk/db/migrations.py,sha256=E0Y4C_gtnfPFkGvqslhUzXddMfpqujWlmPXYXyteLDs,17404
27
+ ebk/db/models.py,sha256=VecpH1yveBX97DGLjgNGBusg8m3PuxkCwkSUekZQXd0,27382
28
+ ebk/db/session.py,sha256=VZQ3sDZFjR-ZNxWGFn402JPmdSKT4htxMUNZ0mFuZeo,3550
29
+ ebk/exports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
+ ebk/exports/base_exporter.py,sha256=OQFmuyP9vxB5SVErTacOGonjD2Kyc1j1_1G9VcpdlDY,6783
31
+ ebk/exports/echo_export.py,sha256=ht_m3pLimO2ac-JMMP9P8n_DSCP2YWX2JxTF-Rja0HM,8526
32
+ ebk/exports/html_library.py,sha256=fDAFr-HQc993dVkS_Y9Le093wLKIpoisZdUTTfmJk14,62885
33
+ ebk/exports/html_utils.py,sha256=JFVHCpo5Jbp1caVdp8OfN2u67FNzC1wznbLOJSDRlzg,2890
34
+ ebk/exports/hugo.py,sha256=0rKNCegtm_Xd2g7IU77DmzlNiHZkoHTd2Wyr_y2gLRk,2209
35
+ ebk/exports/jinja_export.py,sha256=zZ7OYUJLS8dxt87xbGh_mjMwQGRJYYXRaIddf8SFois,10981
36
+ ebk/exports/multi_facet_export.py,sha256=VIj1Np_MlS0HxkoWNYRRTrN8T3Q4Lm8ThpTTxXhLyts,6206
37
+ ebk/exports/opds_export.py,sha256=vRFgNLR4zxADARNKR1ife-YoK8QXNiYuNtAhXZMNyIA,7393
38
+ ebk/exports/symlink_dag.py,sha256=fR1BGXioO4oRnlCjsXTzmiQjPTi-Es5xuOa7b2wq5D0,20477
39
+ ebk/exports/zip.py,sha256=erteF1NcymUbka5m_pnXWaRZmkUihALXe4A_cYg8hXs,779
40
+ ebk/plugins/__init__.py,sha256=-YhhLSqVI6lZSCoW-8fJfib7qL12AO3h4IGOFGcs_qU,765
41
+ ebk/plugins/base.py,sha256=x523_EFtHiFgBBTJqzgArIF8D8KtmD20jJUTqew29eM,14121
42
+ ebk/plugins/hooks.py,sha256=0otxLo8IKo4v3iS_-MAM13c7HSTJLi07RA8kXMUpRWU,14392
43
+ ebk/plugins/registry.py,sha256=EmZotqgCwUUphajMyBu9uIMBjskEIcKxFcHL-6hxvnc,15423
44
+ ebk/repl/__init__.py,sha256=zSAp76GfAEtxYsXe8W2m-PtDFeHX668y6jnpzz2yeWA,252
45
+ ebk/repl/find.py,sha256=Yl-4qv_uKl8dJefHzCyNpjJxngtB_fxj4MqXbMGEkKc,3799
46
+ ebk/repl/grep.py,sha256=jOod9aPpHjPXAHIqSIJIht-waPDhO5SuLDdhcvqog58,4767
47
+ ebk/repl/shell.py,sha256=emzjK1aXiGnYdEAwUybntnaXS62tQhtQZkDeQ3sDIGg,60896
48
+ ebk/repl/text_utils.py,sha256=nSCE-qPL3xHyXjt_5ltjYnOCBXpyPqJiyaKztrfAKuQ,8382
49
+ ebk/services/__init__.py,sha256=AYSSbpKoJbPO6BZuhOXHUG76Wg4oeGVdmvsDFNEdYzA,699
50
+ ebk/services/annotation_extraction.py,sha256=EdH3UToERyRy1N9dJGSyRUUIxC-JGDhCQW3bNzwJsbg,12405
51
+ ebk/services/annotation_service.py,sha256=tNRDD5yi0S5zbe7bOcWCE6EisKnfXe1VLaVLEjadnhg,11683
52
+ ebk/services/export_service.py,sha256=hXYT7FRrx_qW_w4RaDjBoNZqYfckwaLVfBF25uPsiGQ,19897
53
+ ebk/services/import_service.py,sha256=kFVYo2dU9YYunbTW7PB-fwf1JCS1o_8g7sjNU_c6_bM,16548
54
+ ebk/services/personal_metadata_service.py,sha256=zbeaoLjzDBmD1O06zFrrkilDvavpQKzCpbbZSu4_WG8,10944
55
+ ebk/services/queue_service.py,sha256=yvjX0YzwHBUKgWiV-fxRnJrgF_gWNdE0bFCc-A12GyA,7778
56
+ ebk/services/tag_service.py,sha256=12q8AkOu8vd2uxsqpWNVO4_N07S0rCtgHSN8EHgLPNg,7952
57
+ ebk/services/text_extraction.py,sha256=OfmGycUy8BHXJ9M4y3R958n8WEMqXYIBTHsX0A0eifM,10519
58
+ ebk/services/view_service.py,sha256=Pwq8np2Shcat53oqarNgmOQFxqFjrv-7HXNzxYd6jAE,401
59
+ ebk/similarity/__init__.py,sha256=ySprbU_qfMuOEFyUqnBHe-4HSyvGyZHjRUZ4y6Z20-A,1942
60
+ ebk/similarity/base.py,sha256=uWY1whl1jdjvntnuOaB9Mal3f3yiLt7HqjHSBZyM324,4473
61
+ ebk/similarity/core.py,sha256=onxhPb3yuZfaGx_mEMDzryJ_wOoGwRn3I9-vsXuEbK4,14155
62
+ ebk/similarity/extractors.py,sha256=qoICUZtn35x23Q14YuXMaE7RoIitSOxfANmngcEKXvo,4216
63
+ ebk/similarity/metrics.py,sha256=2rbX10xXauebBSH7fKN9fCSMgSOuxRHKwUyJhd_hFfU,10419
64
+ ebk/skills/SKILL.md,sha256=P8kkVCR-ejcFE3yXK2FyX9i6pYbJutGMdrwJntkWSKA,4817
65
+ ebk/skills/__init__.py,sha256=G626OTmfTHvVjXb-TPD5kjRLFS1x3Pephw2QcYuvr4M,33
66
+ ebk/vfs/__init__.py,sha256=5d2jCVRNboJlD576IrFWKIUeOVVVv3zVdyMbSMZ0zEY,3129
67
+ ebk/vfs/base.py,sha256=ETygiP-UxK-fT9y7OOvoDj9FMLHaR0zX49iHBG6SUpc,8117
68
+ ebk/vfs/library_vfs.py,sha256=E8nqCSL18L8jY2-3XFdZILnFhQYoXZ7O0BOY5Cq0f2U,3315
69
+ ebk/vfs/resolver.py,sha256=D_pvOzmeErl8oMxw73g4X4nKBzxc_OgoAmHDDP_fJA4,6228
70
+ ebk/vfs/nodes/__init__.py,sha256=W6MCMNUh8129Uw2xtNoWi00rrMHNreTXb26KS7IrXrA,1360
71
+ ebk/vfs/nodes/authors.py,sha256=Dqr8Leb2NM3W_qKwvEz8r3-C3uNFQVjNGxf56-qhm9c,5731
72
+ ebk/vfs/nodes/books.py,sha256=5YzFXFKrK1aUCzD7uAYPmuGCTVh_j4vj9VNfVFywo9o,15461
73
+ ebk/vfs/nodes/files.py,sha256=49kCsPFe5zBstcUcC44E-KEUHkoHTKT6AzQOXhirnDA,4673
74
+ ebk/vfs/nodes/metadata.py,sha256=wo2TDV2JshuWAzdjGEVOWM5-9S3XwqoRoqRIgSX3o1g,11392
75
+ ebk/vfs/nodes/root.py,sha256=4WkU3GnNcnnqg6dpkjUXI0pnWX4oAR6UJDNpEqIexLs,3030
76
+ ebk/vfs/nodes/similar.py,sha256=LJeFZigiu7dDyduGi9SJrxNJNP_qix661o8pyGsARFs,4866
77
+ ebk/vfs/nodes/subjects.py,sha256=7U9Raj0b2PXb6LfOo3zlHAqTD0lW3IQk7m5u0nU8WPU,5327
78
+ ebk/vfs/nodes/tags.py,sha256=uFJ5lWQYXD0dDmRP6v9NpfQDieTZJfGtSgaz2zzHVZo,11119
79
+ ebk/views/__init__.py,sha256=v0SHgE6rNeAu9GiCFBQo-UMvzNYTNn6q5ODK7WAQnyw,874
80
+ ebk/views/dsl.py,sha256=UZNygfh7G5DS9UmaCV2irkh8I3A5aLekXAuRembWoHA,24079
81
+ ebk/views/service.py,sha256=3uS5YluVK0aN2fT26ZUBC4iW985Bt0YmkLWWCnUhZI4,19200
82
+ ebk-0.4.4.dist-info/licenses/LICENSE,sha256=1eh_aOAZz71hpva42M9f8Vqj_FtSUqzE-1EimifmM_8,1068
83
+ ebk-0.4.4.dist-info/METADATA,sha256=FVGtD139hgZDvDyKICn5zfVgKylJR2S4Br2S388dOQU,21712
84
+ ebk-0.4.4.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
85
+ ebk-0.4.4.dist-info/entry_points.txt,sha256=M24WNtCeBq-nmIDPU-3i0DtM9VP3bM_ul2nQIC1r_RA,36
86
+ ebk-0.4.4.dist-info/top_level.txt,sha256=OLATFvDsJQh-6TqJCili349OH47DoH-6dMih88BWcyg,4
87
+ ebk-0.4.4.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.10.2)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ ebk = ebk.cli:app
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Alex Towell
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.
@@ -0,0 +1 @@
1
+ ebk