codex 1.4.2__tar.gz โ†’ 1.4.3__tar.gz

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.

Potentially problematic release.


This version of codex might be problematic. Click here for more details.

Files changed (1025) hide show
  1. codex-1.4.3/PKG-INFO +514 -0
  2. codex-1.4.3/README.md +454 -0
  3. codex-1.4.3/codex/applications/websocket.py +27 -0
  4. codex-1.4.3/codex/librarian/__pycache__/__init__.cpython-311.pyc +0 -0
  5. codex-1.4.3/codex/librarian/__pycache__/mp_queue.cpython-311.pyc +0 -0
  6. codex-1.4.3/codex/librarian/__pycache__/tasks.cpython-311.pyc +0 -0
  7. codex-1.4.3/codex/librarian/covers/__pycache__/__init__.cpython-311.pyc +0 -0
  8. codex-1.4.3/codex/librarian/covers/__pycache__/create.cpython-311.pyc +0 -0
  9. codex-1.4.3/codex/librarian/covers/__pycache__/path.cpython-311.pyc +0 -0
  10. codex-1.4.3/codex/librarian/covers/__pycache__/status.cpython-311.pyc +0 -0
  11. codex-1.4.3/codex/librarian/covers/__pycache__/tasks.cpython-311.pyc +0 -0
  12. codex-1.4.3/codex/librarian/importer/__pycache__/__init__.cpython-311.pyc +0 -0
  13. codex-1.4.3/codex/librarian/importer/__pycache__/status.cpython-311.pyc +0 -0
  14. codex-1.4.3/codex/librarian/importer/aggregate_metadata.py +238 -0
  15. codex-1.4.3/codex/librarian/importer/clean_metadata.py +269 -0
  16. codex-1.4.3/codex/librarian/importer/create_fks.py +352 -0
  17. codex-1.4.3/codex/librarian/janitor/__pycache__/__init__.cpython-311.pyc +0 -0
  18. codex-1.4.3/codex/librarian/janitor/__pycache__/status.cpython-311.pyc +0 -0
  19. codex-1.4.3/codex/librarian/janitor/__pycache__/tasks.cpython-311.pyc +0 -0
  20. codex-1.4.3/codex/librarian/librariand.py +208 -0
  21. codex-1.4.3/codex/librarian/notifier/__pycache__/__init__.cpython-311.pyc +0 -0
  22. codex-1.4.3/codex/librarian/notifier/__pycache__/tasks.cpython-311.pyc +0 -0
  23. codex-1.4.3/codex/librarian/search/__pycache__/__init__.cpython-311.pyc +0 -0
  24. codex-1.4.3/codex/librarian/search/__pycache__/status.cpython-311.pyc +0 -0
  25. codex-1.4.3/codex/librarian/search/__pycache__/tasks.cpython-311.pyc +0 -0
  26. codex-1.4.3/codex/librarian/watchdog/__pycache__/__init__.cpython-311.pyc +0 -0
  27. codex-1.4.3/codex/librarian/watchdog/__pycache__/status.cpython-311.pyc +0 -0
  28. codex-1.4.3/codex/librarian/watchdog/__pycache__/tasks.cpython-311.pyc +0 -0
  29. codex-1.4.3/codex/librarian/watchdog/db_snapshot.py +80 -0
  30. codex-1.4.3/codex/librarian/watchdog/event_batcherd.py +119 -0
  31. codex-1.4.3/codex/librarian/watchdog/events.py +88 -0
  32. codex-1.4.3/codex/logger/__pycache__/__init__.cpython-311.pyc +0 -0
  33. codex-1.4.3/codex/logger/__pycache__/logging.cpython-311.pyc +0 -0
  34. codex-1.4.3/codex/logger/__pycache__/mp_queue.cpython-311.pyc +0 -0
  35. codex-1.4.3/codex/logger/loggerd.py +110 -0
  36. codex-1.4.3/codex/migrations/0001_init.py +668 -0
  37. codex-1.4.3/codex/migrations/0002_auto_20200826_0622.py +20 -0
  38. codex-1.4.3/codex/migrations/0003_auto_20200831_2033.py +26 -0
  39. codex-1.4.3/codex/migrations/0004_failedimport.py +44 -0
  40. codex-1.4.3/codex/migrations/0005_auto_20200918_0146.py +24 -0
  41. codex-1.4.3/codex/migrations/0006_update_default_names_and_remove_duplicate_comics.py +73 -0
  42. codex-1.4.3/codex/migrations/0007_auto_20211210_1710.py +229 -0
  43. codex-1.4.3/codex/migrations/0008_alter_comic_created_at_alter_comic_format_and_more.py +51 -0
  44. codex-1.4.3/codex/migrations/0009_alter_comic_parent_folder.py +27 -0
  45. codex-1.4.3/codex/migrations/0010_haystack.py +94 -0
  46. codex-1.4.3/codex/migrations/0011_library_groups_and_metadata_changes.py +81 -0
  47. codex-1.4.3/codex/migrations/0012_rename_description_comic_comments.py +20 -0
  48. codex-1.4.3/codex/migrations/0013_int_issue_count_longer_charfields.py +222 -0
  49. codex-1.4.3/codex/migrations/0014_pdf_issue_suffix_remove_cover_image_sort_name.py +171 -0
  50. codex-1.4.3/codex/migrations/0015_link_comics_to_top_level_folders.py +42 -0
  51. codex-1.4.3/codex/migrations/0016_remove_comic_cover_path_librarianstatus.py +109 -0
  52. codex-1.4.3/codex/migrations/0017_alter_timestamp_options_alter_adminflag_name_and_more.py +183 -0
  53. codex-1.4.3/codex/migrations/0018_rename_userbookmark_bookmark.py +71 -0
  54. codex-1.4.3/codex/migrations/0019_delete_queuejob.py +18 -0
  55. codex-1.4.3/codex/migrations/0020_remove_search_tables.py +48 -0
  56. codex-1.4.3/codex/migrations/0021_bookmark_fit_to_choices_read_in_reverse.py +43 -0
  57. codex-1.4.3/codex/migrations/0022_bookmark_vertical_useractive_null_statuses.py +60 -0
  58. codex-1.4.3/codex/migrations/0023_rename_credit_creator_and_more.py +285 -0
  59. codex-1.4.3/codex/migrations/0024_comic_gtin_comic_story_arc_number.py +26 -0
  60. codex-1.4.3/codex/migrations/0025_add_story_arc_number.py +85 -0
  61. codex-1.4.3/codex/models.py +664 -0
  62. codex-1.4.3/codex/search/backend.py +487 -0
  63. codex-1.4.3/codex/serializers/__pycache__/__init__.cpython-311.pyc +0 -0
  64. codex-1.4.3/codex/serializers/__pycache__/admin.cpython-311.pyc +0 -0
  65. codex-1.4.3/codex/serializers/__pycache__/auth.cpython-311.pyc +0 -0
  66. codex-1.4.3/codex/serializers/__pycache__/browser.cpython-311.pyc +0 -0
  67. codex-1.4.3/codex/serializers/__pycache__/choices.cpython-311.pyc +0 -0
  68. codex-1.4.3/codex/serializers/__pycache__/metadata.cpython-311.pyc +0 -0
  69. codex-1.4.3/codex/serializers/__pycache__/mixins.cpython-311.pyc +0 -0
  70. codex-1.4.3/codex/serializers/__pycache__/models.cpython-311.pyc +0 -0
  71. codex-1.4.3/codex/serializers/__pycache__/reader.cpython-311.pyc +0 -0
  72. codex-1.4.3/codex/serializers/__pycache__/redirect.cpython-311.pyc +0 -0
  73. codex-1.4.3/codex/serializers/__pycache__/versions.cpython-311.pyc +0 -0
  74. codex-1.4.3/codex/serializers/auth.py +81 -0
  75. codex-1.4.3/codex/serializers/choices.py +168 -0
  76. codex-1.4.3/codex/serializers/opds/__pycache__/__init__.cpython-311.pyc +0 -0
  77. codex-1.4.3/codex/serializers/opds/__pycache__/authentication.cpython-311.pyc +0 -0
  78. codex-1.4.3/codex/serializers/opds/__pycache__/v1.cpython-311.pyc +0 -0
  79. codex-1.4.3/codex/serializers/opds/__pycache__/v2.cpython-311.pyc +0 -0
  80. codex-1.4.3/codex/settings/__pycache__/__init__.cpython-311.pyc +0 -0
  81. codex-1.4.3/codex/settings/__pycache__/hypercorn.cpython-311.pyc +0 -0
  82. codex-1.4.3/codex/settings/__pycache__/logging.cpython-311.pyc +0 -0
  83. codex-1.4.3/codex/settings/__pycache__/secret_key.cpython-311.pyc +0 -0
  84. codex-1.4.3/codex/settings/__pycache__/settings.cpython-311.pyc +0 -0
  85. codex-1.4.3/codex/settings/__pycache__/timezone.cpython-311.pyc +0 -0
  86. codex-1.4.3/codex/settings/__pycache__/whitenoise.cpython-311.pyc +0 -0
  87. codex-1.4.3/codex/signals/__pycache__/__init__.cpython-311.pyc +0 -0
  88. codex-1.4.3/codex/signals/__pycache__/django_signals.cpython-311.pyc +0 -0
  89. codex-1.4.3/codex/static_root/assets/admin-b2b56cd6.f68d07d2bf93.js +41 -0
  90. codex-1.4.3/codex/static_root/assets/admin-b2b56cd6.f68d07d2bf93.js.br +0 -0
  91. codex-1.4.3/codex/static_root/assets/admin-b2b56cd6.f68d07d2bf93.js.gz +0 -0
  92. codex-1.4.3/codex/static_root/assets/admin-b2b56cd6.js +41 -0
  93. codex-1.4.3/codex/static_root/assets/admin-b2b56cd6.js.br +0 -0
  94. codex-1.4.3/codex/static_root/assets/admin-b2b56cd6.js.gz +0 -0
  95. codex-1.4.3/codex/static_root/assets/admin-drawer-panel-efc525ec.ddab36a24e08.js +1 -0
  96. codex-1.4.3/codex/static_root/assets/admin-drawer-panel-efc525ec.ddab36a24e08.js.br +0 -0
  97. codex-1.4.3/codex/static_root/assets/admin-drawer-panel-efc525ec.ddab36a24e08.js.gz +0 -0
  98. codex-1.4.3/codex/static_root/assets/admin-drawer-panel-efc525ec.js +1 -0
  99. codex-1.4.3/codex/static_root/assets/admin-drawer-panel-efc525ec.js.br +0 -0
  100. codex-1.4.3/codex/static_root/assets/admin-drawer-panel-efc525ec.js.gz +0 -0
  101. codex-1.4.3/codex/static_root/assets/admin-f2bb1dc8.css +1 -0
  102. codex-1.4.3/codex/static_root/assets/admin-f2bb1dc8.css.br +0 -0
  103. codex-1.4.3/codex/static_root/assets/admin-f2bb1dc8.css.gz +0 -0
  104. codex-1.4.3/codex/static_root/assets/admin-f2bb1dc8.ecec18791c01.css +1 -0
  105. codex-1.4.3/codex/static_root/assets/admin-f2bb1dc8.ecec18791c01.css.br +0 -0
  106. codex-1.4.3/codex/static_root/assets/admin-f2bb1dc8.ecec18791c01.css.gz +0 -0
  107. codex-1.4.3/codex/static_root/assets/browser-198df919.css +1 -0
  108. codex-1.4.3/codex/static_root/assets/browser-198df919.css.br +0 -0
  109. codex-1.4.3/codex/static_root/assets/browser-198df919.css.gz +0 -0
  110. codex-1.4.3/codex/static_root/assets/browser-198df919.f06301531790.css +1 -0
  111. codex-1.4.3/codex/static_root/assets/browser-198df919.f06301531790.css.br +0 -0
  112. codex-1.4.3/codex/static_root/assets/browser-198df919.f06301531790.css.gz +0 -0
  113. codex-1.4.3/codex/static_root/assets/browser-ca158ba5.980d652eb174.js +1 -0
  114. codex-1.4.3/codex/static_root/assets/browser-ca158ba5.980d652eb174.js.br +0 -0
  115. codex-1.4.3/codex/static_root/assets/browser-ca158ba5.980d652eb174.js.gz +0 -0
  116. codex-1.4.3/codex/static_root/assets/browser-ca158ba5.js +1 -0
  117. codex-1.4.3/codex/static_root/assets/browser-ca158ba5.js.br +0 -0
  118. codex-1.4.3/codex/static_root/assets/browser-ca158ba5.js.gz +0 -0
  119. codex-1.4.3/codex/static_root/assets/http-error-d31fd3bd.6ab9acf65973.js +1 -0
  120. codex-1.4.3/codex/static_root/assets/http-error-d31fd3bd.6ab9acf65973.js.br +0 -0
  121. codex-1.4.3/codex/static_root/assets/http-error-d31fd3bd.6ab9acf65973.js.gz +0 -0
  122. codex-1.4.3/codex/static_root/assets/http-error-d31fd3bd.js +1 -0
  123. codex-1.4.3/codex/static_root/assets/http-error-d31fd3bd.js.br +0 -0
  124. codex-1.4.3/codex/static_root/assets/http-error-d31fd3bd.js.gz +0 -0
  125. codex-1.4.3/codex/static_root/assets/main-c11eb0f1.776522baac3b.css +5 -0
  126. codex-1.4.3/codex/static_root/assets/main-c11eb0f1.776522baac3b.css.br +0 -0
  127. codex-1.4.3/codex/static_root/assets/main-c11eb0f1.776522baac3b.css.gz +0 -0
  128. codex-1.4.3/codex/static_root/assets/main-c11eb0f1.css +5 -0
  129. codex-1.4.3/codex/static_root/assets/main-c11eb0f1.css.br +0 -0
  130. codex-1.4.3/codex/static_root/assets/main-c11eb0f1.css.gz +0 -0
  131. codex-1.4.3/codex/static_root/assets/main-c5736dea.a4790dbdb569.js +1 -0
  132. codex-1.4.3/codex/static_root/assets/main-c5736dea.a4790dbdb569.js.br +0 -0
  133. codex-1.4.3/codex/static_root/assets/main-c5736dea.a4790dbdb569.js.gz +0 -0
  134. codex-1.4.3/codex/static_root/assets/main-c5736dea.js +1 -0
  135. codex-1.4.3/codex/static_root/assets/main-c5736dea.js.br +0 -0
  136. codex-1.4.3/codex/static_root/assets/main-c5736dea.js.gz +0 -0
  137. codex-1.4.3/codex/static_root/assets/metadata-dialog-83c74d48.b5cccc13c737.css +1 -0
  138. codex-1.4.3/codex/static_root/assets/metadata-dialog-83c74d48.b5cccc13c737.css.br +0 -0
  139. codex-1.4.3/codex/static_root/assets/metadata-dialog-83c74d48.b5cccc13c737.css.gz +0 -0
  140. codex-1.4.3/codex/static_root/assets/metadata-dialog-83c74d48.css +1 -0
  141. codex-1.4.3/codex/static_root/assets/metadata-dialog-83c74d48.css.br +0 -0
  142. codex-1.4.3/codex/static_root/assets/metadata-dialog-83c74d48.css.gz +0 -0
  143. codex-1.4.3/codex/static_root/assets/metadata-dialog-8c0a11ff.b281b7635db5.js +1 -0
  144. codex-1.4.3/codex/static_root/assets/metadata-dialog-8c0a11ff.b281b7635db5.js.br +0 -0
  145. codex-1.4.3/codex/static_root/assets/metadata-dialog-8c0a11ff.b281b7635db5.js.gz +0 -0
  146. codex-1.4.3/codex/static_root/assets/metadata-dialog-8c0a11ff.js +1 -0
  147. codex-1.4.3/codex/static_root/assets/metadata-dialog-8c0a11ff.js.br +0 -0
  148. codex-1.4.3/codex/static_root/assets/metadata-dialog-8c0a11ff.js.gz +0 -0
  149. codex-1.4.3/codex/static_root/assets/page-pdf-ed976750.730244f14d16.js +64 -0
  150. codex-1.4.3/codex/static_root/assets/page-pdf-ed976750.730244f14d16.js.br +0 -0
  151. codex-1.4.3/codex/static_root/assets/page-pdf-ed976750.730244f14d16.js.gz +0 -0
  152. codex-1.4.3/codex/static_root/assets/page-pdf-ed976750.js +64 -0
  153. codex-1.4.3/codex/static_root/assets/page-pdf-ed976750.js.br +0 -0
  154. codex-1.4.3/codex/static_root/assets/page-pdf-ed976750.js.gz +0 -0
  155. codex-1.4.3/codex/static_root/assets/reader-5540ffcb.8ea3c63a3154.css +1 -0
  156. codex-1.4.3/codex/static_root/assets/reader-5540ffcb.8ea3c63a3154.css.br +0 -0
  157. codex-1.4.3/codex/static_root/assets/reader-5540ffcb.8ea3c63a3154.css.gz +0 -0
  158. codex-1.4.3/codex/static_root/assets/reader-5540ffcb.css +1 -0
  159. codex-1.4.3/codex/static_root/assets/reader-5540ffcb.css.br +0 -0
  160. codex-1.4.3/codex/static_root/assets/reader-5540ffcb.css.gz +0 -0
  161. codex-1.4.3/codex/static_root/assets/reader-c562377d.7f78718f4c63.js +1 -0
  162. codex-1.4.3/codex/static_root/assets/reader-c562377d.7f78718f4c63.js.br +0 -0
  163. codex-1.4.3/codex/static_root/assets/reader-c562377d.7f78718f4c63.js.gz +0 -0
  164. codex-1.4.3/codex/static_root/assets/reader-c562377d.js +1 -0
  165. codex-1.4.3/codex/static_root/assets/reader-c562377d.js.br +0 -0
  166. codex-1.4.3/codex/static_root/assets/reader-c562377d.js.gz +0 -0
  167. codex-1.4.3/codex/static_root/manifest.55457ccaa01c.json +148 -0
  168. codex-1.4.3/codex/static_root/manifest.55457ccaa01c.json.br +0 -0
  169. codex-1.4.3/codex/static_root/manifest.55457ccaa01c.json.gz +0 -0
  170. codex-1.4.3/codex/static_root/manifest.json +148 -0
  171. codex-1.4.3/codex/static_root/manifest.json.br +0 -0
  172. codex-1.4.3/codex/static_root/manifest.json.gz +0 -0
  173. codex-1.4.3/codex/static_root/pwa/offline.7bfaf9f94bf9.html +23 -0
  174. codex-1.4.3/codex/static_root/pwa/offline.7bfaf9f94bf9.html.br +0 -0
  175. codex-1.4.3/codex/static_root/pwa/offline.7bfaf9f94bf9.html.gz +0 -0
  176. codex-1.4.3/codex/static_root/pwa/offline.html +23 -0
  177. codex-1.4.3/codex/static_root/pwa/offline.html.br +0 -0
  178. codex-1.4.3/codex/static_root/pwa/offline.html.gz +0 -0
  179. codex-1.4.3/codex/static_root/staticfiles.json +1 -0
  180. codex-1.4.3/codex/threads.py +129 -0
  181. codex-1.4.3/codex/urls/__pycache__/__init__.cpython-311.pyc +0 -0
  182. codex-1.4.3/codex/urls/__pycache__/app.cpython-311.pyc +0 -0
  183. codex-1.4.3/codex/urls/__pycache__/converters.cpython-311.pyc +0 -0
  184. codex-1.4.3/codex/urls/__pycache__/pwa.cpython-311.pyc +0 -0
  185. codex-1.4.3/codex/urls/__pycache__/root.cpython-311.pyc +0 -0
  186. codex-1.4.3/codex/urls/api/__pycache__/__init__.cpython-311.pyc +0 -0
  187. codex-1.4.3/codex/urls/api/__pycache__/admin.cpython-311.pyc +0 -0
  188. codex-1.4.3/codex/urls/api/__pycache__/auth.cpython-311.pyc +0 -0
  189. codex-1.4.3/codex/urls/api/__pycache__/browser.cpython-311.pyc +0 -0
  190. codex-1.4.3/codex/urls/api/__pycache__/reader.cpython-311.pyc +0 -0
  191. codex-1.4.3/codex/urls/api/__pycache__/root.cpython-311.pyc +0 -0
  192. codex-1.4.3/codex/urls/api/__pycache__/v3.cpython-311.pyc +0 -0
  193. codex-1.4.3/codex/urls/opds/__pycache__/__init__.cpython-311.pyc +0 -0
  194. codex-1.4.3/codex/urls/opds/__pycache__/authentication.cpython-311.pyc +0 -0
  195. codex-1.4.3/codex/urls/opds/__pycache__/binary.cpython-311.pyc +0 -0
  196. codex-1.4.3/codex/urls/opds/__pycache__/root.cpython-311.pyc +0 -0
  197. codex-1.4.3/codex/urls/opds/__pycache__/v1.cpython-311.pyc +0 -0
  198. codex-1.4.3/codex/urls/opds/__pycache__/v2.cpython-311.pyc +0 -0
  199. codex-1.4.3/codex/views/__pycache__/__init__.cpython-311.pyc +0 -0
  200. codex-1.4.3/codex/views/__pycache__/auth.cpython-311.pyc +0 -0
  201. codex-1.4.3/codex/views/__pycache__/bookmark.cpython-311.pyc +0 -0
  202. codex-1.4.3/codex/views/__pycache__/cover.cpython-311.pyc +0 -0
  203. codex-1.4.3/codex/views/__pycache__/download.cpython-311.pyc +0 -0
  204. codex-1.4.3/codex/views/__pycache__/frontend.cpython-311.pyc +0 -0
  205. codex-1.4.3/codex/views/__pycache__/mixins.cpython-311.pyc +0 -0
  206. codex-1.4.3/codex/views/__pycache__/pwa.cpython-311.pyc +0 -0
  207. codex-1.4.3/codex/views/__pycache__/session.cpython-311.pyc +0 -0
  208. codex-1.4.3/codex/views/__pycache__/template.cpython-311.pyc +0 -0
  209. codex-1.4.3/codex/views/__pycache__/version.cpython-311.pyc +0 -0
  210. codex-1.4.3/codex/views/admin/__pycache__/__init__.cpython-311.pyc +0 -0
  211. codex-1.4.3/codex/views/admin/__pycache__/api_key.cpython-311.pyc +0 -0
  212. codex-1.4.3/codex/views/admin/__pycache__/flag.cpython-311.pyc +0 -0
  213. codex-1.4.3/codex/views/admin/__pycache__/group.cpython-311.pyc +0 -0
  214. codex-1.4.3/codex/views/admin/__pycache__/library.cpython-311.pyc +0 -0
  215. codex-1.4.3/codex/views/admin/__pycache__/stats.cpython-311.pyc +0 -0
  216. codex-1.4.3/codex/views/admin/__pycache__/tasks.cpython-311.pyc +0 -0
  217. codex-1.4.3/codex/views/admin/__pycache__/user.cpython-311.pyc +0 -0
  218. codex-1.4.3/codex/views/admin/api_key.py +26 -0
  219. codex-1.4.3/codex/views/admin/flag.py +38 -0
  220. codex-1.4.3/codex/views/admin/group.py +52 -0
  221. codex-1.4.3/codex/views/admin/library.py +134 -0
  222. codex-1.4.3/codex/views/admin/stats.py +228 -0
  223. codex-1.4.3/codex/views/admin/tasks.py +109 -0
  224. codex-1.4.3/codex/views/admin/user.py +90 -0
  225. codex-1.4.3/codex/views/bookmark.py +152 -0
  226. codex-1.4.3/codex/views/browser/__pycache__/__init__.cpython-311.pyc +0 -0
  227. codex-1.4.3/codex/views/browser/__pycache__/base.cpython-311.pyc +0 -0
  228. codex-1.4.3/codex/views/browser/__pycache__/browser.cpython-311.pyc +0 -0
  229. codex-1.4.3/codex/views/browser/__pycache__/browser_annotations.cpython-311.pyc +0 -0
  230. codex-1.4.3/codex/views/browser/__pycache__/browser_order_by.cpython-311.pyc +0 -0
  231. codex-1.4.3/codex/views/browser/__pycache__/choices.cpython-311.pyc +0 -0
  232. codex-1.4.3/codex/views/browser/__pycache__/metadata.cpython-311.pyc +0 -0
  233. codex-1.4.3/codex/views/browser/__pycache__/session.cpython-311.pyc +0 -0
  234. codex-1.4.3/codex/views/browser/base.py +111 -0
  235. codex-1.4.3/codex/views/browser/browser.py +546 -0
  236. codex-1.4.3/codex/views/browser/browser_annotations.py +282 -0
  237. codex-1.4.3/codex/views/browser/browser_order_by.py +102 -0
  238. codex-1.4.3/codex/views/browser/choices.py +226 -0
  239. codex-1.4.3/codex/views/browser/filters/__pycache__/__init__.cpython-311.pyc +0 -0
  240. codex-1.4.3/codex/views/browser/filters/__pycache__/bookmark.cpython-311.pyc +0 -0
  241. codex-1.4.3/codex/views/browser/filters/__pycache__/field.cpython-311.pyc +0 -0
  242. codex-1.4.3/codex/views/browser/filters/__pycache__/group.cpython-311.pyc +0 -0
  243. codex-1.4.3/codex/views/browser/filters/__pycache__/search.cpython-311.pyc +0 -0
  244. codex-1.4.3/codex/views/browser/filters/search.py +54 -0
  245. codex-1.4.3/codex/views/browser/metadata.py +323 -0
  246. codex-1.4.3/codex/views/cover.py +59 -0
  247. codex-1.4.3/codex/views/download.py +47 -0
  248. codex-1.4.3/codex/views/frontend.py +20 -0
  249. codex-1.4.3/codex/views/mixins.py +52 -0
  250. codex-1.4.3/codex/views/opds/__pycache__/__init__.cpython-311.pyc +0 -0
  251. codex-1.4.3/codex/views/opds/__pycache__/authentication_v1.cpython-311.pyc +0 -0
  252. codex-1.4.3/codex/views/opds/__pycache__/binary.cpython-311.pyc +0 -0
  253. codex-1.4.3/codex/views/opds/__pycache__/const.cpython-311.pyc +0 -0
  254. codex-1.4.3/codex/views/opds/__pycache__/util.cpython-311.pyc +0 -0
  255. codex-1.4.3/codex/views/opds/authentication_v1.py +64 -0
  256. codex-1.4.3/codex/views/opds/const.py +74 -0
  257. codex-1.4.3/codex/views/opds/v1/__pycache__/__init__.cpython-311.pyc +0 -0
  258. codex-1.4.3/codex/views/opds/v1/__pycache__/data.cpython-311.pyc +0 -0
  259. codex-1.4.3/codex/views/opds/v1/__pycache__/facets.cpython-311.pyc +0 -0
  260. codex-1.4.3/codex/views/opds/v1/__pycache__/feed.cpython-311.pyc +0 -0
  261. codex-1.4.3/codex/views/opds/v1/__pycache__/links.cpython-311.pyc +0 -0
  262. codex-1.4.3/codex/views/opds/v1/__pycache__/opensearch_v1.cpython-311.pyc +0 -0
  263. codex-1.4.3/codex/views/opds/v1/entry/__pycache__/__init__.cpython-311.pyc +0 -0
  264. codex-1.4.3/codex/views/opds/v1/entry/__pycache__/data.cpython-311.pyc +0 -0
  265. codex-1.4.3/codex/views/opds/v1/entry/__pycache__/entry.cpython-311.pyc +0 -0
  266. codex-1.4.3/codex/views/opds/v1/entry/__pycache__/links.cpython-311.pyc +0 -0
  267. codex-1.4.3/codex/views/opds/v1/entry/data.py +24 -0
  268. codex-1.4.3/codex/views/opds/v1/facets.py +191 -0
  269. codex-1.4.3/codex/views/opds/v1/feed.py +206 -0
  270. codex-1.4.3/codex/views/opds/v1/links.py +200 -0
  271. codex-1.4.3/codex/views/opds/v1/opensearch_v1.py +17 -0
  272. codex-1.4.3/codex/views/opds/v2/__pycache__/__init__.cpython-311.pyc +0 -0
  273. codex-1.4.3/codex/views/opds/v2/__pycache__/const.cpython-311.pyc +0 -0
  274. codex-1.4.3/codex/views/opds/v2/__pycache__/feed.cpython-311.pyc +0 -0
  275. codex-1.4.3/codex/views/opds/v2/__pycache__/links.cpython-311.pyc +0 -0
  276. codex-1.4.3/codex/views/opds/v2/__pycache__/publications.cpython-311.pyc +0 -0
  277. codex-1.4.3/codex/views/opds/v2/__pycache__/top_links.cpython-311.pyc +0 -0
  278. codex-1.4.3/codex/views/opds/v2/feed.py +218 -0
  279. codex-1.4.3/codex/views/opds/v2/publications.py +197 -0
  280. codex-1.4.3/codex/views/reader/__pycache__/__init__.cpython-311.pyc +0 -0
  281. codex-1.4.3/codex/views/reader/__pycache__/page.cpython-311.pyc +0 -0
  282. codex-1.4.3/codex/views/reader/__pycache__/reader.cpython-311.pyc +0 -0
  283. codex-1.4.3/codex/views/reader/__pycache__/session.cpython-311.pyc +0 -0
  284. codex-1.4.3/codex/views/reader/page.py +89 -0
  285. codex-1.4.3/codex/views/session.py +160 -0
  286. codex-1.4.3/codex/views/template.py +39 -0
  287. codex-1.4.3/codex/websockets/__pycache__/__init__.cpython-311.pyc +0 -0
  288. codex-1.4.3/codex/websockets/__pycache__/consumers.cpython-311.pyc +0 -0
  289. codex-1.4.3/codex/websockets/listener.py +65 -0
  290. codex-1.4.3/pyproject.toml +244 -0
  291. codex-1.4.2/PKG-INFO +0 -518
  292. codex-1.4.2/README.md +0 -458
  293. codex-1.4.2/codex/applications/websocket.py +0 -27
  294. codex-1.4.2/codex/librarian/__pycache__/__init__.cpython-311.pyc +0 -0
  295. codex-1.4.2/codex/librarian/__pycache__/mp_queue.cpython-311.pyc +0 -0
  296. codex-1.4.2/codex/librarian/__pycache__/tasks.cpython-311.pyc +0 -0
  297. codex-1.4.2/codex/librarian/covers/__pycache__/__init__.cpython-311.pyc +0 -0
  298. codex-1.4.2/codex/librarian/covers/__pycache__/create.cpython-311.pyc +0 -0
  299. codex-1.4.2/codex/librarian/covers/__pycache__/path.cpython-311.pyc +0 -0
  300. codex-1.4.2/codex/librarian/covers/__pycache__/status.cpython-311.pyc +0 -0
  301. codex-1.4.2/codex/librarian/covers/__pycache__/tasks.cpython-311.pyc +0 -0
  302. codex-1.4.2/codex/librarian/importer/__pycache__/__init__.cpython-311.pyc +0 -0
  303. codex-1.4.2/codex/librarian/importer/__pycache__/status.cpython-311.pyc +0 -0
  304. codex-1.4.2/codex/librarian/importer/aggregate_metadata.py +0 -225
  305. codex-1.4.2/codex/librarian/importer/clean_metadata.py +0 -256
  306. codex-1.4.2/codex/librarian/importer/create_fks.py +0 -352
  307. codex-1.4.2/codex/librarian/janitor/__pycache__/__init__.cpython-311.pyc +0 -0
  308. codex-1.4.2/codex/librarian/janitor/__pycache__/status.cpython-311.pyc +0 -0
  309. codex-1.4.2/codex/librarian/janitor/__pycache__/tasks.cpython-311.pyc +0 -0
  310. codex-1.4.2/codex/librarian/librariand.py +0 -205
  311. codex-1.4.2/codex/librarian/notifier/__pycache__/__init__.cpython-311.pyc +0 -0
  312. codex-1.4.2/codex/librarian/notifier/__pycache__/tasks.cpython-311.pyc +0 -0
  313. codex-1.4.2/codex/librarian/search/__pycache__/__init__.cpython-311.pyc +0 -0
  314. codex-1.4.2/codex/librarian/search/__pycache__/status.cpython-311.pyc +0 -0
  315. codex-1.4.2/codex/librarian/search/__pycache__/tasks.cpython-311.pyc +0 -0
  316. codex-1.4.2/codex/librarian/watchdog/__pycache__/__init__.cpython-311.pyc +0 -0
  317. codex-1.4.2/codex/librarian/watchdog/__pycache__/status.cpython-311.pyc +0 -0
  318. codex-1.4.2/codex/librarian/watchdog/__pycache__/tasks.cpython-311.pyc +0 -0
  319. codex-1.4.2/codex/librarian/watchdog/db_snapshot.py +0 -80
  320. codex-1.4.2/codex/librarian/watchdog/event_batcherd.py +0 -116
  321. codex-1.4.2/codex/librarian/watchdog/events.py +0 -88
  322. codex-1.4.2/codex/logger/__pycache__/__init__.cpython-311.pyc +0 -0
  323. codex-1.4.2/codex/logger/__pycache__/logging.cpython-311.pyc +0 -0
  324. codex-1.4.2/codex/logger/__pycache__/mp_queue.cpython-311.pyc +0 -0
  325. codex-1.4.2/codex/logger/loggerd.py +0 -107
  326. codex-1.4.2/codex/migrations/0001_init.py +0 -667
  327. codex-1.4.2/codex/migrations/0002_auto_20200826_0622.py +0 -18
  328. codex-1.4.2/codex/migrations/0003_auto_20200831_2033.py +0 -24
  329. codex-1.4.2/codex/migrations/0004_failedimport.py +0 -42
  330. codex-1.4.2/codex/migrations/0005_auto_20200918_0146.py +0 -22
  331. codex-1.4.2/codex/migrations/0006_update_default_names_and_remove_duplicate_comics.py +0 -68
  332. codex-1.4.2/codex/migrations/0007_auto_20211210_1710.py +0 -228
  333. codex-1.4.2/codex/migrations/0008_alter_comic_created_at_alter_comic_format_and_more.py +0 -49
  334. codex-1.4.2/codex/migrations/0009_alter_comic_parent_folder.py +0 -25
  335. codex-1.4.2/codex/migrations/0010_haystack.py +0 -92
  336. codex-1.4.2/codex/migrations/0011_library_groups_and_metadata_changes.py +0 -80
  337. codex-1.4.2/codex/migrations/0012_rename_description_comic_comments.py +0 -18
  338. codex-1.4.2/codex/migrations/0013_int_issue_count_longer_charfields.py +0 -222
  339. codex-1.4.2/codex/migrations/0014_pdf_issue_suffix_remove_cover_image_sort_name.py +0 -170
  340. codex-1.4.2/codex/migrations/0015_link_comics_to_top_level_folders.py +0 -39
  341. codex-1.4.2/codex/migrations/0016_remove_comic_cover_path_librarianstatus.py +0 -109
  342. codex-1.4.2/codex/migrations/0017_alter_timestamp_options_alter_adminflag_name_and_more.py +0 -183
  343. codex-1.4.2/codex/migrations/0018_rename_userbookmark_bookmark.py +0 -70
  344. codex-1.4.2/codex/migrations/0019_delete_queuejob.py +0 -17
  345. codex-1.4.2/codex/migrations/0020_remove_search_tables.py +0 -47
  346. codex-1.4.2/codex/migrations/0021_bookmark_fit_to_choices_read_in_reverse.py +0 -42
  347. codex-1.4.2/codex/migrations/0022_bookmark_vertical_useractive_null_statuses.py +0 -59
  348. codex-1.4.2/codex/migrations/0023_rename_credit_creator_and_more.py +0 -284
  349. codex-1.4.2/codex/migrations/0024_comic_gtin_comic_story_arc_number.py +0 -24
  350. codex-1.4.2/codex/migrations/0025_add_story_arc_number.py +0 -83
  351. codex-1.4.2/codex/models.py +0 -665
  352. codex-1.4.2/codex/search/backend.py +0 -484
  353. codex-1.4.2/codex/serializers/__pycache__/__init__.cpython-311.pyc +0 -0
  354. codex-1.4.2/codex/serializers/__pycache__/admin.cpython-311.pyc +0 -0
  355. codex-1.4.2/codex/serializers/__pycache__/auth.cpython-311.pyc +0 -0
  356. codex-1.4.2/codex/serializers/__pycache__/browser.cpython-311.pyc +0 -0
  357. codex-1.4.2/codex/serializers/__pycache__/choices.cpython-311.pyc +0 -0
  358. codex-1.4.2/codex/serializers/__pycache__/metadata.cpython-311.pyc +0 -0
  359. codex-1.4.2/codex/serializers/__pycache__/mixins.cpython-311.pyc +0 -0
  360. codex-1.4.2/codex/serializers/__pycache__/models.cpython-311.pyc +0 -0
  361. codex-1.4.2/codex/serializers/__pycache__/reader.cpython-311.pyc +0 -0
  362. codex-1.4.2/codex/serializers/__pycache__/redirect.cpython-311.pyc +0 -0
  363. codex-1.4.2/codex/serializers/__pycache__/versions.cpython-311.pyc +0 -0
  364. codex-1.4.2/codex/serializers/auth.py +0 -80
  365. codex-1.4.2/codex/serializers/choices.py +0 -167
  366. codex-1.4.2/codex/serializers/opds/__pycache__/__init__.cpython-311.pyc +0 -0
  367. codex-1.4.2/codex/serializers/opds/__pycache__/authentication.cpython-311.pyc +0 -0
  368. codex-1.4.2/codex/serializers/opds/__pycache__/v1.cpython-311.pyc +0 -0
  369. codex-1.4.2/codex/serializers/opds/__pycache__/v2.cpython-311.pyc +0 -0
  370. codex-1.4.2/codex/settings/__pycache__/__init__.cpython-311.pyc +0 -0
  371. codex-1.4.2/codex/settings/__pycache__/hypercorn.cpython-311.pyc +0 -0
  372. codex-1.4.2/codex/settings/__pycache__/logging.cpython-311.pyc +0 -0
  373. codex-1.4.2/codex/settings/__pycache__/secret_key.cpython-311.pyc +0 -0
  374. codex-1.4.2/codex/settings/__pycache__/settings.cpython-311.pyc +0 -0
  375. codex-1.4.2/codex/settings/__pycache__/timezone.cpython-311.pyc +0 -0
  376. codex-1.4.2/codex/settings/__pycache__/whitenoise.cpython-311.pyc +0 -0
  377. codex-1.4.2/codex/signals/__pycache__/__init__.cpython-311.pyc +0 -0
  378. codex-1.4.2/codex/signals/__pycache__/django_signals.cpython-311.pyc +0 -0
  379. codex-1.4.2/codex/static_root/assets/admin-a34bbd42.9722989091b5.js +0 -41
  380. codex-1.4.2/codex/static_root/assets/admin-a34bbd42.9722989091b5.js.br +0 -0
  381. codex-1.4.2/codex/static_root/assets/admin-a34bbd42.9722989091b5.js.gz +0 -0
  382. codex-1.4.2/codex/static_root/assets/admin-a34bbd42.js +0 -41
  383. codex-1.4.2/codex/static_root/assets/admin-a34bbd42.js.br +0 -0
  384. codex-1.4.2/codex/static_root/assets/admin-a34bbd42.js.gz +0 -0
  385. codex-1.4.2/codex/static_root/assets/admin-beda768d.a614eee46307.css +0 -1
  386. codex-1.4.2/codex/static_root/assets/admin-beda768d.a614eee46307.css.br +0 -0
  387. codex-1.4.2/codex/static_root/assets/admin-beda768d.a614eee46307.css.gz +0 -0
  388. codex-1.4.2/codex/static_root/assets/admin-beda768d.css +0 -1
  389. codex-1.4.2/codex/static_root/assets/admin-beda768d.css.br +0 -0
  390. codex-1.4.2/codex/static_root/assets/admin-beda768d.css.gz +0 -0
  391. codex-1.4.2/codex/static_root/assets/admin-drawer-panel-be9c2e22.33b594bc8ee7.js +0 -1
  392. codex-1.4.2/codex/static_root/assets/admin-drawer-panel-be9c2e22.33b594bc8ee7.js.br +0 -0
  393. codex-1.4.2/codex/static_root/assets/admin-drawer-panel-be9c2e22.33b594bc8ee7.js.gz +0 -0
  394. codex-1.4.2/codex/static_root/assets/admin-drawer-panel-be9c2e22.js +0 -1
  395. codex-1.4.2/codex/static_root/assets/admin-drawer-panel-be9c2e22.js.br +0 -0
  396. codex-1.4.2/codex/static_root/assets/admin-drawer-panel-be9c2e22.js.gz +0 -0
  397. codex-1.4.2/codex/static_root/assets/browser-349d0e1c.a4b979e545a7.js +0 -1
  398. codex-1.4.2/codex/static_root/assets/browser-349d0e1c.a4b979e545a7.js.br +0 -0
  399. codex-1.4.2/codex/static_root/assets/browser-349d0e1c.a4b979e545a7.js.gz +0 -0
  400. codex-1.4.2/codex/static_root/assets/browser-349d0e1c.js +0 -1
  401. codex-1.4.2/codex/static_root/assets/browser-349d0e1c.js.br +0 -0
  402. codex-1.4.2/codex/static_root/assets/browser-349d0e1c.js.gz +0 -0
  403. codex-1.4.2/codex/static_root/assets/browser-dc8c7804.7f60dfea2ea4.css +0 -1
  404. codex-1.4.2/codex/static_root/assets/browser-dc8c7804.7f60dfea2ea4.css.br +0 -0
  405. codex-1.4.2/codex/static_root/assets/browser-dc8c7804.7f60dfea2ea4.css.gz +0 -0
  406. codex-1.4.2/codex/static_root/assets/browser-dc8c7804.css +0 -1
  407. codex-1.4.2/codex/static_root/assets/browser-dc8c7804.css.br +0 -0
  408. codex-1.4.2/codex/static_root/assets/browser-dc8c7804.css.gz +0 -0
  409. codex-1.4.2/codex/static_root/assets/http-error-e4b426e6.6fb67bd8d938.js +0 -1
  410. codex-1.4.2/codex/static_root/assets/http-error-e4b426e6.6fb67bd8d938.js.br +0 -0
  411. codex-1.4.2/codex/static_root/assets/http-error-e4b426e6.6fb67bd8d938.js.gz +0 -0
  412. codex-1.4.2/codex/static_root/assets/http-error-e4b426e6.js +0 -1
  413. codex-1.4.2/codex/static_root/assets/http-error-e4b426e6.js.br +0 -0
  414. codex-1.4.2/codex/static_root/assets/http-error-e4b426e6.js.gz +0 -0
  415. codex-1.4.2/codex/static_root/assets/main-0898f4bb.181e0145c642.css +0 -5
  416. codex-1.4.2/codex/static_root/assets/main-0898f4bb.181e0145c642.css.br +0 -0
  417. codex-1.4.2/codex/static_root/assets/main-0898f4bb.181e0145c642.css.gz +0 -0
  418. codex-1.4.2/codex/static_root/assets/main-0898f4bb.css +0 -5
  419. codex-1.4.2/codex/static_root/assets/main-0898f4bb.css.br +0 -0
  420. codex-1.4.2/codex/static_root/assets/main-0898f4bb.css.gz +0 -0
  421. codex-1.4.2/codex/static_root/assets/main-1cd792f1.4ca9a2ab454b.js +0 -1
  422. codex-1.4.2/codex/static_root/assets/main-1cd792f1.4ca9a2ab454b.js.br +0 -0
  423. codex-1.4.2/codex/static_root/assets/main-1cd792f1.4ca9a2ab454b.js.gz +0 -0
  424. codex-1.4.2/codex/static_root/assets/main-1cd792f1.js +0 -1
  425. codex-1.4.2/codex/static_root/assets/main-1cd792f1.js.br +0 -0
  426. codex-1.4.2/codex/static_root/assets/main-1cd792f1.js.gz +0 -0
  427. codex-1.4.2/codex/static_root/assets/metadata-dialog-c4306743.4b1a3bd9e8be.js +0 -1
  428. codex-1.4.2/codex/static_root/assets/metadata-dialog-c4306743.4b1a3bd9e8be.js.br +0 -0
  429. codex-1.4.2/codex/static_root/assets/metadata-dialog-c4306743.4b1a3bd9e8be.js.gz +0 -0
  430. codex-1.4.2/codex/static_root/assets/metadata-dialog-c4306743.js +0 -1
  431. codex-1.4.2/codex/static_root/assets/metadata-dialog-c4306743.js.br +0 -0
  432. codex-1.4.2/codex/static_root/assets/metadata-dialog-c4306743.js.gz +0 -0
  433. codex-1.4.2/codex/static_root/assets/metadata-dialog-cb306ffd.cc304996d7bb.css +0 -1
  434. codex-1.4.2/codex/static_root/assets/metadata-dialog-cb306ffd.cc304996d7bb.css.br +0 -0
  435. codex-1.4.2/codex/static_root/assets/metadata-dialog-cb306ffd.cc304996d7bb.css.gz +0 -0
  436. codex-1.4.2/codex/static_root/assets/metadata-dialog-cb306ffd.css +0 -1
  437. codex-1.4.2/codex/static_root/assets/metadata-dialog-cb306ffd.css.br +0 -0
  438. codex-1.4.2/codex/static_root/assets/metadata-dialog-cb306ffd.css.gz +0 -0
  439. codex-1.4.2/codex/static_root/assets/page-pdf-804658a5.112a80d295b8.js +0 -64
  440. codex-1.4.2/codex/static_root/assets/page-pdf-804658a5.112a80d295b8.js.br +0 -0
  441. codex-1.4.2/codex/static_root/assets/page-pdf-804658a5.112a80d295b8.js.gz +0 -0
  442. codex-1.4.2/codex/static_root/assets/page-pdf-804658a5.js +0 -64
  443. codex-1.4.2/codex/static_root/assets/page-pdf-804658a5.js.br +0 -0
  444. codex-1.4.2/codex/static_root/assets/page-pdf-804658a5.js.gz +0 -0
  445. codex-1.4.2/codex/static_root/assets/reader-2df231f9.7d07a31e0fbf.css +0 -1
  446. codex-1.4.2/codex/static_root/assets/reader-2df231f9.7d07a31e0fbf.css.br +0 -0
  447. codex-1.4.2/codex/static_root/assets/reader-2df231f9.7d07a31e0fbf.css.gz +0 -0
  448. codex-1.4.2/codex/static_root/assets/reader-2df231f9.css +0 -1
  449. codex-1.4.2/codex/static_root/assets/reader-2df231f9.css.br +0 -0
  450. codex-1.4.2/codex/static_root/assets/reader-2df231f9.css.gz +0 -0
  451. codex-1.4.2/codex/static_root/assets/reader-75d90a0f.40ac454e2359.js +0 -1
  452. codex-1.4.2/codex/static_root/assets/reader-75d90a0f.40ac454e2359.js.br +0 -0
  453. codex-1.4.2/codex/static_root/assets/reader-75d90a0f.40ac454e2359.js.gz +0 -0
  454. codex-1.4.2/codex/static_root/assets/reader-75d90a0f.js +0 -1
  455. codex-1.4.2/codex/static_root/assets/reader-75d90a0f.js.br +0 -0
  456. codex-1.4.2/codex/static_root/assets/reader-75d90a0f.js.gz +0 -0
  457. codex-1.4.2/codex/static_root/manifest.3ee495a508d6.json +0 -148
  458. codex-1.4.2/codex/static_root/manifest.3ee495a508d6.json.br +0 -0
  459. codex-1.4.2/codex/static_root/manifest.3ee495a508d6.json.gz +0 -0
  460. codex-1.4.2/codex/static_root/manifest.json +0 -148
  461. codex-1.4.2/codex/static_root/manifest.json.br +0 -0
  462. codex-1.4.2/codex/static_root/manifest.json.gz +0 -0
  463. codex-1.4.2/codex/static_root/pwa/offline.37a4206d79f0.html +0 -23
  464. codex-1.4.2/codex/static_root/pwa/offline.37a4206d79f0.html.br +0 -0
  465. codex-1.4.2/codex/static_root/pwa/offline.37a4206d79f0.html.gz +0 -0
  466. codex-1.4.2/codex/static_root/pwa/offline.html +0 -23
  467. codex-1.4.2/codex/static_root/pwa/offline.html.br +0 -0
  468. codex-1.4.2/codex/static_root/pwa/offline.html.gz +0 -0
  469. codex-1.4.2/codex/static_root/staticfiles.json +0 -1
  470. codex-1.4.2/codex/threads.py +0 -129
  471. codex-1.4.2/codex/urls/__pycache__/__init__.cpython-311.pyc +0 -0
  472. codex-1.4.2/codex/urls/__pycache__/app.cpython-311.pyc +0 -0
  473. codex-1.4.2/codex/urls/__pycache__/converters.cpython-311.pyc +0 -0
  474. codex-1.4.2/codex/urls/__pycache__/pwa.cpython-311.pyc +0 -0
  475. codex-1.4.2/codex/urls/__pycache__/root.cpython-311.pyc +0 -0
  476. codex-1.4.2/codex/urls/api/__pycache__/__init__.cpython-311.pyc +0 -0
  477. codex-1.4.2/codex/urls/api/__pycache__/admin.cpython-311.pyc +0 -0
  478. codex-1.4.2/codex/urls/api/__pycache__/auth.cpython-311.pyc +0 -0
  479. codex-1.4.2/codex/urls/api/__pycache__/browser.cpython-311.pyc +0 -0
  480. codex-1.4.2/codex/urls/api/__pycache__/reader.cpython-311.pyc +0 -0
  481. codex-1.4.2/codex/urls/api/__pycache__/root.cpython-311.pyc +0 -0
  482. codex-1.4.2/codex/urls/api/__pycache__/v3.cpython-311.pyc +0 -0
  483. codex-1.4.2/codex/urls/opds/__pycache__/__init__.cpython-311.pyc +0 -0
  484. codex-1.4.2/codex/urls/opds/__pycache__/authentication.cpython-311.pyc +0 -0
  485. codex-1.4.2/codex/urls/opds/__pycache__/binary.cpython-311.pyc +0 -0
  486. codex-1.4.2/codex/urls/opds/__pycache__/root.cpython-311.pyc +0 -0
  487. codex-1.4.2/codex/urls/opds/__pycache__/v1.cpython-311.pyc +0 -0
  488. codex-1.4.2/codex/urls/opds/__pycache__/v2.cpython-311.pyc +0 -0
  489. codex-1.4.2/codex/views/__pycache__/__init__.cpython-311.pyc +0 -0
  490. codex-1.4.2/codex/views/__pycache__/auth.cpython-311.pyc +0 -0
  491. codex-1.4.2/codex/views/__pycache__/bookmark.cpython-311.pyc +0 -0
  492. codex-1.4.2/codex/views/__pycache__/cover.cpython-311.pyc +0 -0
  493. codex-1.4.2/codex/views/__pycache__/download.cpython-311.pyc +0 -0
  494. codex-1.4.2/codex/views/__pycache__/frontend.cpython-311.pyc +0 -0
  495. codex-1.4.2/codex/views/__pycache__/mixins.cpython-311.pyc +0 -0
  496. codex-1.4.2/codex/views/__pycache__/pwa.cpython-311.pyc +0 -0
  497. codex-1.4.2/codex/views/__pycache__/session.cpython-311.pyc +0 -0
  498. codex-1.4.2/codex/views/__pycache__/template.cpython-311.pyc +0 -0
  499. codex-1.4.2/codex/views/__pycache__/version.cpython-311.pyc +0 -0
  500. codex-1.4.2/codex/views/admin/__pycache__/__init__.cpython-311.pyc +0 -0
  501. codex-1.4.2/codex/views/admin/__pycache__/api_key.cpython-311.pyc +0 -0
  502. codex-1.4.2/codex/views/admin/__pycache__/flag.cpython-311.pyc +0 -0
  503. codex-1.4.2/codex/views/admin/__pycache__/group.cpython-311.pyc +0 -0
  504. codex-1.4.2/codex/views/admin/__pycache__/library.cpython-311.pyc +0 -0
  505. codex-1.4.2/codex/views/admin/__pycache__/stats.cpython-311.pyc +0 -0
  506. codex-1.4.2/codex/views/admin/__pycache__/tasks.cpython-311.pyc +0 -0
  507. codex-1.4.2/codex/views/admin/__pycache__/user.cpython-311.pyc +0 -0
  508. codex-1.4.2/codex/views/admin/api_key.py +0 -24
  509. codex-1.4.2/codex/views/admin/flag.py +0 -36
  510. codex-1.4.2/codex/views/admin/group.py +0 -50
  511. codex-1.4.2/codex/views/admin/library.py +0 -133
  512. codex-1.4.2/codex/views/admin/stats.py +0 -224
  513. codex-1.4.2/codex/views/admin/tasks.py +0 -104
  514. codex-1.4.2/codex/views/admin/user.py +0 -88
  515. codex-1.4.2/codex/views/bookmark.py +0 -150
  516. codex-1.4.2/codex/views/browser/__pycache__/__init__.cpython-311.pyc +0 -0
  517. codex-1.4.2/codex/views/browser/__pycache__/base.cpython-311.pyc +0 -0
  518. codex-1.4.2/codex/views/browser/__pycache__/browser.cpython-311.pyc +0 -0
  519. codex-1.4.2/codex/views/browser/__pycache__/browser_annotations.cpython-311.pyc +0 -0
  520. codex-1.4.2/codex/views/browser/__pycache__/browser_order_by.cpython-311.pyc +0 -0
  521. codex-1.4.2/codex/views/browser/__pycache__/choices.cpython-311.pyc +0 -0
  522. codex-1.4.2/codex/views/browser/__pycache__/metadata.cpython-311.pyc +0 -0
  523. codex-1.4.2/codex/views/browser/__pycache__/session.cpython-311.pyc +0 -0
  524. codex-1.4.2/codex/views/browser/base.py +0 -102
  525. codex-1.4.2/codex/views/browser/browser.py +0 -532
  526. codex-1.4.2/codex/views/browser/browser_annotations.py +0 -282
  527. codex-1.4.2/codex/views/browser/browser_order_by.py +0 -99
  528. codex-1.4.2/codex/views/browser/choices.py +0 -211
  529. codex-1.4.2/codex/views/browser/filters/__pycache__/__init__.cpython-311.pyc +0 -0
  530. codex-1.4.2/codex/views/browser/filters/__pycache__/bookmark.cpython-311.pyc +0 -0
  531. codex-1.4.2/codex/views/browser/filters/__pycache__/field.cpython-311.pyc +0 -0
  532. codex-1.4.2/codex/views/browser/filters/__pycache__/group.cpython-311.pyc +0 -0
  533. codex-1.4.2/codex/views/browser/filters/__pycache__/search.cpython-311.pyc +0 -0
  534. codex-1.4.2/codex/views/browser/filters/search.py +0 -54
  535. codex-1.4.2/codex/views/browser/metadata.py +0 -315
  536. codex-1.4.2/codex/views/cover.py +0 -57
  537. codex-1.4.2/codex/views/download.py +0 -45
  538. codex-1.4.2/codex/views/frontend.py +0 -19
  539. codex-1.4.2/codex/views/mixins.py +0 -48
  540. codex-1.4.2/codex/views/opds/__pycache__/__init__.cpython-311.pyc +0 -0
  541. codex-1.4.2/codex/views/opds/__pycache__/authentication_v1.cpython-311.pyc +0 -0
  542. codex-1.4.2/codex/views/opds/__pycache__/binary.cpython-311.pyc +0 -0
  543. codex-1.4.2/codex/views/opds/__pycache__/const.cpython-311.pyc +0 -0
  544. codex-1.4.2/codex/views/opds/__pycache__/util.cpython-311.pyc +0 -0
  545. codex-1.4.2/codex/views/opds/authentication_v1.py +0 -60
  546. codex-1.4.2/codex/views/opds/const.py +0 -67
  547. codex-1.4.2/codex/views/opds/v1/__pycache__/__init__.cpython-311.pyc +0 -0
  548. codex-1.4.2/codex/views/opds/v1/__pycache__/data.cpython-311.pyc +0 -0
  549. codex-1.4.2/codex/views/opds/v1/__pycache__/facets.cpython-311.pyc +0 -0
  550. codex-1.4.2/codex/views/opds/v1/__pycache__/feed.cpython-311.pyc +0 -0
  551. codex-1.4.2/codex/views/opds/v1/__pycache__/links.cpython-311.pyc +0 -0
  552. codex-1.4.2/codex/views/opds/v1/__pycache__/opensearch_v1.cpython-311.pyc +0 -0
  553. codex-1.4.2/codex/views/opds/v1/entry/__pycache__/__init__.cpython-311.pyc +0 -0
  554. codex-1.4.2/codex/views/opds/v1/entry/__pycache__/data.cpython-311.pyc +0 -0
  555. codex-1.4.2/codex/views/opds/v1/entry/__pycache__/entry.cpython-311.pyc +0 -0
  556. codex-1.4.2/codex/views/opds/v1/entry/__pycache__/links.cpython-311.pyc +0 -0
  557. codex-1.4.2/codex/views/opds/v1/entry/data.py +0 -23
  558. codex-1.4.2/codex/views/opds/v1/facets.py +0 -190
  559. codex-1.4.2/codex/views/opds/v1/feed.py +0 -199
  560. codex-1.4.2/codex/views/opds/v1/links.py +0 -198
  561. codex-1.4.2/codex/views/opds/v1/opensearch_v1.py +0 -17
  562. codex-1.4.2/codex/views/opds/v2/__pycache__/__init__.cpython-311.pyc +0 -0
  563. codex-1.4.2/codex/views/opds/v2/__pycache__/const.cpython-311.pyc +0 -0
  564. codex-1.4.2/codex/views/opds/v2/__pycache__/feed.cpython-311.pyc +0 -0
  565. codex-1.4.2/codex/views/opds/v2/__pycache__/links.cpython-311.pyc +0 -0
  566. codex-1.4.2/codex/views/opds/v2/__pycache__/publications.cpython-311.pyc +0 -0
  567. codex-1.4.2/codex/views/opds/v2/__pycache__/top_links.cpython-311.pyc +0 -0
  568. codex-1.4.2/codex/views/opds/v2/feed.py +0 -217
  569. codex-1.4.2/codex/views/opds/v2/publications.py +0 -194
  570. codex-1.4.2/codex/views/reader/__pycache__/__init__.cpython-311.pyc +0 -0
  571. codex-1.4.2/codex/views/reader/__pycache__/page.cpython-311.pyc +0 -0
  572. codex-1.4.2/codex/views/reader/__pycache__/reader.cpython-311.pyc +0 -0
  573. codex-1.4.2/codex/views/reader/__pycache__/session.cpython-311.pyc +0 -0
  574. codex-1.4.2/codex/views/reader/page.py +0 -89
  575. codex-1.4.2/codex/views/session.py +0 -153
  576. codex-1.4.2/codex/views/template.py +0 -39
  577. codex-1.4.2/codex/websockets/__pycache__/__init__.cpython-311.pyc +0 -0
  578. codex-1.4.2/codex/websockets/__pycache__/consumers.cpython-311.pyc +0 -0
  579. codex-1.4.2/codex/websockets/listener.py +0 -62
  580. codex-1.4.2/pyproject.toml +0 -244
  581. {codex-1.4.2 โ†’ codex-1.4.3}/LICENSE +0 -0
  582. {codex-1.4.2 โ†’ codex-1.4.3}/codex/__init__.py +0 -0
  583. {codex-1.4.2 โ†’ codex-1.4.3}/codex/applications/__init__.py +0 -0
  584. {codex-1.4.2 โ†’ codex-1.4.3}/codex/applications/lifespan.py +0 -0
  585. {codex-1.4.2 โ†’ codex-1.4.3}/codex/asgi.py +0 -0
  586. {codex-1.4.2 โ†’ codex-1.4.3}/codex/comic_field_names.py +0 -0
  587. {codex-1.4.2 โ†’ codex-1.4.3}/codex/config_default.yaml +0 -0
  588. {codex-1.4.2 โ†’ codex-1.4.3}/codex/db_functions.py +0 -0
  589. {codex-1.4.2 โ†’ codex-1.4.3}/codex/exceptions.py +0 -0
  590. {codex-1.4.2 โ†’ codex-1.4.3}/codex/img/missing-cover.webp +0 -0
  591. {codex-1.4.2 โ†’ codex-1.4.3}/codex/integrity.py +0 -0
  592. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/README.md +0 -0
  593. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/__init__.py +0 -0
  594. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/covers/__init__.py +0 -0
  595. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/covers/coverd.py +0 -0
  596. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/covers/create.py +0 -0
  597. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/covers/path.py +0 -0
  598. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/covers/purge.py +0 -0
  599. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/covers/status.py +0 -0
  600. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/covers/tasks.py +0 -0
  601. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/delayed_taskd.py +0 -0
  602. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/importer/__init__.py +0 -0
  603. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/importer/create_comics.py +0 -0
  604. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/importer/deleted.py +0 -0
  605. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/importer/failed_imports.py +0 -0
  606. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/importer/importerd.py +0 -0
  607. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/importer/link_comics.py +0 -0
  608. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/importer/moved.py +0 -0
  609. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/importer/query_fks.py +0 -0
  610. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/importer/status.py +0 -0
  611. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/importer/tasks.py +0 -0
  612. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/importer/update_comics.py +0 -0
  613. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/janitor/__init__.py +0 -0
  614. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/janitor/cleanup.py +0 -0
  615. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/janitor/failed_imports.py +0 -0
  616. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/janitor/janitor.py +0 -0
  617. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/janitor/janitord.py +0 -0
  618. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/janitor/status.py +0 -0
  619. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/janitor/tasks.py +0 -0
  620. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/janitor/update.py +0 -0
  621. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/janitor/vacuum.py +0 -0
  622. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/mp_queue.py +0 -0
  623. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/notifier/__init__.py +0 -0
  624. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/notifier/notifierd.py +0 -0
  625. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/notifier/tasks.py +0 -0
  626. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/search/__init__.py +0 -0
  627. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/search/merge.py +0 -0
  628. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/search/remove.py +0 -0
  629. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/search/searchd.py +0 -0
  630. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/search/status.py +0 -0
  631. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/search/tasks.py +0 -0
  632. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/search/update.py +0 -0
  633. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/search/version.py +0 -0
  634. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/tasks.py +0 -0
  635. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/watchdog/README.md +0 -0
  636. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/watchdog/__init__.py +0 -0
  637. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/watchdog/dir_snapshot_diff.py +0 -0
  638. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/watchdog/emitter.py +0 -0
  639. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/watchdog/observers.py +0 -0
  640. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/watchdog/status.py +0 -0
  641. {codex-1.4.2 โ†’ codex-1.4.3}/codex/librarian/watchdog/tasks.py +0 -0
  642. {codex-1.4.2 โ†’ codex-1.4.3}/codex/logger/__init__.py +0 -0
  643. {codex-1.4.2 โ†’ codex-1.4.3}/codex/logger/logging.py +0 -0
  644. {codex-1.4.2 โ†’ codex-1.4.3}/codex/logger/mp_queue.py +0 -0
  645. {codex-1.4.2 โ†’ codex-1.4.3}/codex/logger_base.py +0 -0
  646. {codex-1.4.2 โ†’ codex-1.4.3}/codex/memory.py +0 -0
  647. {codex-1.4.2 โ†’ codex-1.4.3}/codex/middleware.py +0 -0
  648. {codex-1.4.2 โ†’ codex-1.4.3}/codex/migrations/__init__.py +0 -0
  649. {codex-1.4.2 โ†’ codex-1.4.3}/codex/permissions.py +0 -0
  650. {codex-1.4.2 โ†’ codex-1.4.3}/codex/registration.py +0 -0
  651. {codex-1.4.2 โ†’ codex-1.4.3}/codex/run.py +0 -0
  652. {codex-1.4.2 โ†’ codex-1.4.3}/codex/search/__init__.py +0 -0
  653. {codex-1.4.2 โ†’ codex-1.4.3}/codex/search/engine.py +0 -0
  654. {codex-1.4.2 โ†’ codex-1.4.3}/codex/search/indexes.py +0 -0
  655. {codex-1.4.2 โ†’ codex-1.4.3}/codex/search/writing.py +0 -0
  656. {codex-1.4.2 โ†’ codex-1.4.3}/codex/serializers/README.md +0 -0
  657. {codex-1.4.2 โ†’ codex-1.4.3}/codex/serializers/__init__.py +0 -0
  658. {codex-1.4.2 โ†’ codex-1.4.3}/codex/serializers/admin.py +0 -0
  659. {codex-1.4.2 โ†’ codex-1.4.3}/codex/serializers/browser.py +0 -0
  660. {codex-1.4.2 โ†’ codex-1.4.3}/codex/serializers/homepage.py +0 -0
  661. {codex-1.4.2 โ†’ codex-1.4.3}/codex/serializers/metadata.py +0 -0
  662. {codex-1.4.2 โ†’ codex-1.4.3}/codex/serializers/mixins.py +0 -0
  663. {codex-1.4.2 โ†’ codex-1.4.3}/codex/serializers/models.py +0 -0
  664. {codex-1.4.2 โ†’ codex-1.4.3}/codex/serializers/opds/__init__.py +0 -0
  665. {codex-1.4.2 โ†’ codex-1.4.3}/codex/serializers/opds/authentication.py +0 -0
  666. {codex-1.4.2 โ†’ codex-1.4.3}/codex/serializers/opds/v1.py +0 -0
  667. {codex-1.4.2 โ†’ codex-1.4.3}/codex/serializers/opds/v2.py +0 -0
  668. {codex-1.4.2 โ†’ codex-1.4.3}/codex/serializers/opds/v2_unused.py +0 -0
  669. {codex-1.4.2 โ†’ codex-1.4.3}/codex/serializers/reader.py +0 -0
  670. {codex-1.4.2 โ†’ codex-1.4.3}/codex/serializers/redirect.py +0 -0
  671. {codex-1.4.2 โ†’ codex-1.4.3}/codex/serializers/versions.py +0 -0
  672. {codex-1.4.2 โ†’ codex-1.4.3}/codex/settings/README.md +0 -0
  673. {codex-1.4.2 โ†’ codex-1.4.3}/codex/settings/__init__.py +0 -0
  674. {codex-1.4.2 โ†’ codex-1.4.3}/codex/settings/hypercorn.py +0 -0
  675. {codex-1.4.2 โ†’ codex-1.4.3}/codex/settings/hypercorn.toml.default +0 -0
  676. {codex-1.4.2 โ†’ codex-1.4.3}/codex/settings/logging.py +0 -0
  677. {codex-1.4.2 โ†’ codex-1.4.3}/codex/settings/secret_key.py +0 -0
  678. {codex-1.4.2 โ†’ codex-1.4.3}/codex/settings/settings.py +0 -0
  679. {codex-1.4.2 โ†’ codex-1.4.3}/codex/settings/timezone.py +0 -0
  680. {codex-1.4.2 โ†’ codex-1.4.3}/codex/settings/whitenoise.py +0 -0
  681. {codex-1.4.2 โ†’ codex-1.4.3}/codex/signals/__init__.py +0 -0
  682. {codex-1.4.2 โ†’ codex-1.4.3}/codex/signals/django_signals.py +0 -0
  683. {codex-1.4.2 โ†’ codex-1.4.3}/codex/signals/os_signals.py +0 -0
  684. {codex-1.4.2 โ†’ codex-1.4.3}/codex/startup.py +0 -0
  685. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/admin/css/codex-admin-dark.4d45b3679935.css +0 -0
  686. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/admin/css/codex-admin-dark.4d45b3679935.css.br +0 -0
  687. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/admin/css/codex-admin-dark.4d45b3679935.css.gz +0 -0
  688. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/admin/css/codex-admin-dark.css +0 -0
  689. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/admin/css/codex-admin-dark.css.br +0 -0
  690. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/admin/css/codex-admin-dark.css.gz +0 -0
  691. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/admin/css/codex-admin.7ad6b144bf84.css +0 -0
  692. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/admin/css/codex-admin.7ad6b144bf84.css.br +0 -0
  693. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/admin/css/codex-admin.7ad6b144bf84.css.gz +0 -0
  694. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/admin/css/codex-admin.css +0 -0
  695. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/admin/css/codex-admin.css.br +0 -0
  696. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/admin/css/codex-admin.css.gz +0 -0
  697. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/admin/css/queue-job.bee4dbac67f1.css +0 -0
  698. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/admin/css/queue-job.bee4dbac67f1.css.br +0 -0
  699. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/admin/css/queue-job.bee4dbac67f1.css.gz +0 -0
  700. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/admin/css/queue-job.css +0 -0
  701. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/admin/css/queue-job.css.br +0 -0
  702. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/admin/css/queue-job.css.gz +0 -0
  703. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/admin/js/queue-job.628c5e325415.js +0 -0
  704. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/admin/js/queue-job.628c5e325415.js.br +0 -0
  705. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/admin/js/queue-job.628c5e325415.js.gz +0 -0
  706. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/admin/js/queue-job.js +0 -0
  707. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/admin/js/queue-job.js.br +0 -0
  708. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/admin/js/queue-job.js.gz +0 -0
  709. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/admin-drawer-panel-41c225cc.3f84583b435b.css +0 -0
  710. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/admin-drawer-panel-41c225cc.3f84583b435b.css.br +0 -0
  711. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/admin-drawer-panel-41c225cc.3f84583b435b.css.gz +0 -0
  712. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/admin-drawer-panel-41c225cc.css +0 -0
  713. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/admin-drawer-panel-41c225cc.css.br +0 -0
  714. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/admin-drawer-panel-41c225cc.css.gz +0 -0
  715. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/http-error-40ce966f.1c7337ad6e1d.css +0 -0
  716. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/http-error-40ce966f.1c7337ad6e1d.css.br +0 -0
  717. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/http-error-40ce966f.1c7337ad6e1d.css.gz +0 -0
  718. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/http-error-40ce966f.css +0 -0
  719. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/http-error-40ce966f.css.br +0 -0
  720. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/http-error-40ce966f.css.gz +0 -0
  721. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/materialdesignicons-webfont-67d24abe.5ce4e52cebe3.eot +0 -0
  722. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/materialdesignicons-webfont-67d24abe.5ce4e52cebe3.eot.br +0 -0
  723. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/materialdesignicons-webfont-67d24abe.5ce4e52cebe3.eot.gz +0 -0
  724. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/materialdesignicons-webfont-67d24abe.eot +0 -0
  725. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/materialdesignicons-webfont-67d24abe.eot.br +0 -0
  726. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/materialdesignicons-webfont-67d24abe.eot.gz +0 -0
  727. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/materialdesignicons-webfont-80bb28b3.20b6ebf31bfa.woff +0 -0
  728. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/materialdesignicons-webfont-80bb28b3.woff +0 -0
  729. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/materialdesignicons-webfont-a58ecb54.d10ac4ee5ebe.ttf +0 -0
  730. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/materialdesignicons-webfont-a58ecb54.d10ac4ee5ebe.ttf.br +0 -0
  731. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/materialdesignicons-webfont-a58ecb54.d10ac4ee5ebe.ttf.gz +0 -0
  732. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/materialdesignicons-webfont-a58ecb54.ttf +0 -0
  733. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/materialdesignicons-webfont-a58ecb54.ttf.br +0 -0
  734. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/materialdesignicons-webfont-a58ecb54.ttf.gz +0 -0
  735. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/materialdesignicons-webfont-c1c004a9.a295367092b3.woff2 +0 -0
  736. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/materialdesignicons-webfont-c1c004a9.woff2 +0 -0
  737. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/page-pdf-2d7d4f5d.963cecd9ec4e.css +0 -0
  738. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/page-pdf-2d7d4f5d.963cecd9ec4e.css.br +0 -0
  739. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/page-pdf-2d7d4f5d.963cecd9ec4e.css.gz +0 -0
  740. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/page-pdf-2d7d4f5d.css +0 -0
  741. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/page-pdf-2d7d4f5d.css.br +0 -0
  742. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/assets/page-pdf-2d7d4f5d.css.gz +0 -0
  743. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/img/logo-32.dbb98f6dfde4.webp +0 -0
  744. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/img/logo-32.webp +0 -0
  745. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/img/logo-maskable-180.201cbde62d55.webp +0 -0
  746. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/img/logo-maskable-180.webp +0 -0
  747. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/img/logo-maskable.d618c2d7943f.svg +0 -0
  748. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/img/logo-maskable.d618c2d7943f.svg.br +0 -0
  749. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/img/logo-maskable.d618c2d7943f.svg.gz +0 -0
  750. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/img/logo-maskable.svg +0 -0
  751. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/img/logo-maskable.svg.br +0 -0
  752. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/img/logo-maskable.svg.gz +0 -0
  753. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/img/logo.3fb129bfbd92.svg +0 -0
  754. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/img/logo.3fb129bfbd92.svg.br +0 -0
  755. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/img/logo.3fb129bfbd92.svg.gz +0 -0
  756. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/img/logo.svg +0 -0
  757. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/img/logo.svg.br +0 -0
  758. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/img/logo.svg.gz +0 -0
  759. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/img/missing-cover.8c8c1d4f6782.webp +0 -0
  760. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/img/missing-cover.webp +0 -0
  761. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/img/missing-page.71bb10f7c72a.svg +0 -0
  762. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/img/missing-page.71bb10f7c72a.svg.br +0 -0
  763. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/img/missing-page.71bb10f7c72a.svg.gz +0 -0
  764. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/img/missing-page.svg +0 -0
  765. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/img/missing-page.svg.br +0 -0
  766. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/img/missing-page.svg.gz +0 -0
  767. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/js/choices-admin.24cecf0a0568.json +0 -0
  768. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/js/choices-admin.24cecf0a0568.json.br +0 -0
  769. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/js/choices-admin.24cecf0a0568.json.gz +0 -0
  770. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/js/choices-admin.json +0 -0
  771. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/js/choices-admin.json.br +0 -0
  772. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/js/choices-admin.json.gz +0 -0
  773. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/js/choices.8c58714cf5b2.json +0 -0
  774. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/js/choices.8c58714cf5b2.json.br +0 -0
  775. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/js/choices.8c58714cf5b2.json.gz +0 -0
  776. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/js/choices.json +0 -0
  777. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/js/choices.json.br +0 -0
  778. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/js/choices.json.gz +0 -0
  779. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap-theme.min.1d4b05b397c3.css +0 -0
  780. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap-theme.min.1d4b05b397c3.css.br +0 -0
  781. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap-theme.min.1d4b05b397c3.css.gz +0 -0
  782. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap-theme.min.css +0 -0
  783. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap-theme.min.css.51806092cc05.map +0 -0
  784. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap-theme.min.css.51806092cc05.map.br +0 -0
  785. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap-theme.min.css.51806092cc05.map.gz +0 -0
  786. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap-theme.min.css.br +0 -0
  787. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap-theme.min.css.gz +0 -0
  788. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap-theme.min.css.map +0 -0
  789. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap-theme.min.css.map.br +0 -0
  790. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap-theme.min.css.map.gz +0 -0
  791. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap-tweaks.46ed116b0edd.css +0 -0
  792. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap-tweaks.46ed116b0edd.css.br +0 -0
  793. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap-tweaks.46ed116b0edd.css.gz +0 -0
  794. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap-tweaks.css +0 -0
  795. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap-tweaks.css.br +0 -0
  796. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap-tweaks.css.gz +0 -0
  797. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap.min.css +0 -0
  798. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap.min.css.br +0 -0
  799. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap.min.css.cafbda9c0e9e.map +0 -0
  800. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap.min.css.cafbda9c0e9e.map.br +0 -0
  801. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap.min.css.cafbda9c0e9e.map.gz +0 -0
  802. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap.min.css.gz +0 -0
  803. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap.min.css.map +0 -0
  804. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap.min.css.map.br +0 -0
  805. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap.min.css.map.gz +0 -0
  806. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap.min.f17d4516b026.css +0 -0
  807. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap.min.f17d4516b026.css.br +0 -0
  808. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/bootstrap.min.f17d4516b026.css.gz +0 -0
  809. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/default.789dfb5732d7.css +0 -0
  810. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/default.789dfb5732d7.css.br +0 -0
  811. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/default.789dfb5732d7.css.gz +0 -0
  812. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/default.css +0 -0
  813. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/default.css.br +0 -0
  814. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/default.css.gz +0 -0
  815. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/font-awesome-4.0.3.c1e1ea213abf.css +0 -0
  816. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/font-awesome-4.0.3.c1e1ea213abf.css.br +0 -0
  817. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/font-awesome-4.0.3.c1e1ea213abf.css.gz +0 -0
  818. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/font-awesome-4.0.3.css +0 -0
  819. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/font-awesome-4.0.3.css.br +0 -0
  820. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/font-awesome-4.0.3.css.gz +0 -0
  821. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/prettify.a987f72342ee.css +0 -0
  822. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/prettify.a987f72342ee.css.br +0 -0
  823. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/prettify.a987f72342ee.css.gz +0 -0
  824. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/prettify.css +0 -0
  825. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/prettify.css.br +0 -0
  826. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/css/prettify.css.gz +0 -0
  827. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/css/base.css +0 -0
  828. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/css/base.css.br +0 -0
  829. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/css/base.css.gz +0 -0
  830. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/css/base.e630f8f4990e.css +0 -0
  831. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/css/base.e630f8f4990e.css.br +0 -0
  832. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/css/base.e630f8f4990e.css.gz +0 -0
  833. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/css/highlight.css +0 -0
  834. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/css/highlight.css.br +0 -0
  835. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/css/highlight.css.gz +0 -0
  836. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/css/highlight.e0e4d973c6d7.css +0 -0
  837. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/css/highlight.e0e4d973c6d7.css.br +0 -0
  838. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/css/highlight.e0e4d973c6d7.css.gz +0 -0
  839. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/css/jquery.json-view.min.a2e6beeb6710.css +0 -0
  840. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/css/jquery.json-view.min.a2e6beeb6710.css.br +0 -0
  841. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/css/jquery.json-view.min.a2e6beeb6710.css.gz +0 -0
  842. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/css/jquery.json-view.min.css +0 -0
  843. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/css/jquery.json-view.min.css.br +0 -0
  844. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/css/jquery.json-view.min.css.gz +0 -0
  845. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/img/favicon.5195b4d0f3eb.ico +0 -0
  846. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/img/favicon.5195b4d0f3eb.ico.br +0 -0
  847. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/img/favicon.5195b4d0f3eb.ico.gz +0 -0
  848. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/img/favicon.ico +0 -0
  849. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/img/favicon.ico.br +0 -0
  850. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/img/favicon.ico.gz +0 -0
  851. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/img/grid.a4b938cf382b.png +0 -0
  852. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/img/grid.png +0 -0
  853. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/js/api.18a5ba8a1bd8.js +0 -0
  854. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/js/api.18a5ba8a1bd8.js.br +0 -0
  855. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/js/api.18a5ba8a1bd8.js.gz +0 -0
  856. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/js/api.js +0 -0
  857. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/js/api.js.br +0 -0
  858. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/js/api.js.gz +0 -0
  859. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/js/highlight.pack.479b5f21dcba.js +0 -0
  860. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/js/highlight.pack.479b5f21dcba.js.br +0 -0
  861. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/js/highlight.pack.479b5f21dcba.js.gz +0 -0
  862. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/js/highlight.pack.js +0 -0
  863. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/js/highlight.pack.js.br +0 -0
  864. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/js/highlight.pack.js.gz +0 -0
  865. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/js/jquery.json-view.min.b7c2d6981377.js +0 -0
  866. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/js/jquery.json-view.min.b7c2d6981377.js.br +0 -0
  867. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/js/jquery.json-view.min.b7c2d6981377.js.gz +0 -0
  868. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/js/jquery.json-view.min.js +0 -0
  869. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/js/jquery.json-view.min.js.br +0 -0
  870. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/docs/js/jquery.json-view.min.js.gz +0 -0
  871. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/fontawesome-webfont.3293616ec0c6.woff +0 -0
  872. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/fontawesome-webfont.83e37a11f9d7.svg +0 -0
  873. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/fontawesome-webfont.83e37a11f9d7.svg.br +0 -0
  874. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/fontawesome-webfont.83e37a11f9d7.svg.gz +0 -0
  875. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/fontawesome-webfont.8b27bc96115c.eot +0 -0
  876. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/fontawesome-webfont.dcb26c7239d8.ttf +0 -0
  877. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/fontawesome-webfont.dcb26c7239d8.ttf.br +0 -0
  878. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/fontawesome-webfont.dcb26c7239d8.ttf.gz +0 -0
  879. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/fontawesome-webfont.eot +0 -0
  880. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/fontawesome-webfont.svg +0 -0
  881. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/fontawesome-webfont.svg.br +0 -0
  882. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/fontawesome-webfont.svg.gz +0 -0
  883. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/fontawesome-webfont.ttf +0 -0
  884. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/fontawesome-webfont.ttf.br +0 -0
  885. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/fontawesome-webfont.ttf.gz +0 -0
  886. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/fontawesome-webfont.woff +0 -0
  887. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.08eda92397ae.svg +0 -0
  888. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.08eda92397ae.svg.br +0 -0
  889. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.08eda92397ae.svg.gz +0 -0
  890. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.448c34a56d69.woff2 +0 -0
  891. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.e18bbf611f2a.ttf +0 -0
  892. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.e18bbf611f2a.ttf.br +0 -0
  893. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.e18bbf611f2a.ttf.gz +0 -0
  894. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.eot +0 -0
  895. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.f4769f9bdb74.eot +0 -0
  896. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.fa2772327f55.woff +0 -0
  897. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.svg +0 -0
  898. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.svg.br +0 -0
  899. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.svg.gz +0 -0
  900. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.ttf +0 -0
  901. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.ttf.br +0 -0
  902. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.ttf.gz +0 -0
  903. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.woff +0 -0
  904. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.woff2 +0 -0
  905. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/img/glyphicons-halflings-white.9bbc6e960299.png +0 -0
  906. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/img/glyphicons-halflings-white.png +0 -0
  907. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/img/glyphicons-halflings.90233c9067e9.png +0 -0
  908. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/img/glyphicons-halflings.png +0 -0
  909. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/img/grid.a4b938cf382b.png +0 -0
  910. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/img/grid.png +0 -0
  911. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/ajax-form.0ea6e6052ab5.js +0 -0
  912. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/ajax-form.0ea6e6052ab5.js.br +0 -0
  913. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/ajax-form.0ea6e6052ab5.js.gz +0 -0
  914. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/ajax-form.js +0 -0
  915. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/ajax-form.js.br +0 -0
  916. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/ajax-form.js.gz +0 -0
  917. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/bootstrap.min.2f34b630ffe3.js +0 -0
  918. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/bootstrap.min.2f34b630ffe3.js.br +0 -0
  919. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/bootstrap.min.2f34b630ffe3.js.gz +0 -0
  920. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/bootstrap.min.js +0 -0
  921. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/bootstrap.min.js.br +0 -0
  922. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/bootstrap.min.js.gz +0 -0
  923. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/coreapi-0.1.1.e580e3854595.js +0 -0
  924. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/coreapi-0.1.1.e580e3854595.js.br +0 -0
  925. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/coreapi-0.1.1.e580e3854595.js.gz +0 -0
  926. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/coreapi-0.1.1.js +0 -0
  927. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/coreapi-0.1.1.js.br +0 -0
  928. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/coreapi-0.1.1.js.gz +0 -0
  929. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/csrf.969930007329.js +0 -0
  930. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/csrf.969930007329.js.br +0 -0
  931. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/csrf.969930007329.js.gz +0 -0
  932. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/csrf.js +0 -0
  933. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/csrf.js.br +0 -0
  934. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/csrf.js.gz +0 -0
  935. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/default.5b08897dbdc3.js +0 -0
  936. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/default.5b08897dbdc3.js.br +0 -0
  937. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/default.5b08897dbdc3.js.gz +0 -0
  938. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/default.js +0 -0
  939. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/default.js.br +0 -0
  940. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/default.js.gz +0 -0
  941. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/jquery-3.5.1.min.dc5e7f18c8d3.js +0 -0
  942. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/jquery-3.5.1.min.dc5e7f18c8d3.js.br +0 -0
  943. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/jquery-3.5.1.min.dc5e7f18c8d3.js.gz +0 -0
  944. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/jquery-3.5.1.min.js +0 -0
  945. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/jquery-3.5.1.min.js.br +0 -0
  946. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/jquery-3.5.1.min.js.gz +0 -0
  947. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/prettify-min.709bfcc456c6.js +0 -0
  948. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/prettify-min.709bfcc456c6.js.br +0 -0
  949. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/prettify-min.709bfcc456c6.js.gz +0 -0
  950. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/prettify-min.js +0 -0
  951. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/prettify-min.js.br +0 -0
  952. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/rest_framework/js/prettify-min.js.gz +0 -0
  953. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/robots.b6216d61c03e.txt +0 -0
  954. {codex-1.4.2 โ†’ codex-1.4.3}/codex/static_root/robots.txt +0 -0
  955. {codex-1.4.2 โ†’ codex-1.4.3}/codex/status.py +0 -0
  956. {codex-1.4.2 โ†’ codex-1.4.3}/codex/status_controller.py +0 -0
  957. {codex-1.4.2 โ†’ codex-1.4.3}/codex/templates/README.md +0 -0
  958. {codex-1.4.2 โ†’ codex-1.4.3}/codex/templates/headers-icons.html +0 -0
  959. {codex-1.4.2 โ†’ codex-1.4.3}/codex/templates/headers-script-globals.html +0 -0
  960. {codex-1.4.2 โ†’ codex-1.4.3}/codex/templates/index.html +0 -0
  961. {codex-1.4.2 โ†’ codex-1.4.3}/codex/templates/opds_v1/index.xml +0 -0
  962. {codex-1.4.2 โ†’ codex-1.4.3}/codex/templates/opds_v1/opensearch_v1.xml +0 -0
  963. {codex-1.4.2 โ†’ codex-1.4.3}/codex/templates/pwa/headers.html +0 -0
  964. {codex-1.4.2 โ†’ codex-1.4.3}/codex/templates/pwa/manifest.webmanifest +0 -0
  965. {codex-1.4.2 โ†’ codex-1.4.3}/codex/templates/pwa/serviceworker-register.js +0 -0
  966. {codex-1.4.2 โ†’ codex-1.4.3}/codex/templates/pwa/serviceworker.js +0 -0
  967. {codex-1.4.2 โ†’ codex-1.4.3}/codex/templates/search/indexes/codex/comic_text.txt +0 -0
  968. {codex-1.4.2 โ†’ codex-1.4.3}/codex/templates/swagger-ui.html +0 -0
  969. {codex-1.4.2 โ†’ codex-1.4.3}/codex/urls/__init__.py +0 -0
  970. {codex-1.4.2 โ†’ codex-1.4.3}/codex/urls/api/__init__.py +0 -0
  971. {codex-1.4.2 โ†’ codex-1.4.3}/codex/urls/api/admin.py +0 -0
  972. {codex-1.4.2 โ†’ codex-1.4.3}/codex/urls/api/auth.py +0 -0
  973. {codex-1.4.2 โ†’ codex-1.4.3}/codex/urls/api/browser.py +0 -0
  974. {codex-1.4.2 โ†’ codex-1.4.3}/codex/urls/api/reader.py +0 -0
  975. {codex-1.4.2 โ†’ codex-1.4.3}/codex/urls/api/root.py +0 -0
  976. {codex-1.4.2 โ†’ codex-1.4.3}/codex/urls/api/v3.py +0 -0
  977. {codex-1.4.2 โ†’ codex-1.4.3}/codex/urls/app.py +0 -0
  978. {codex-1.4.2 โ†’ codex-1.4.3}/codex/urls/converters.py +0 -0
  979. {codex-1.4.2 โ†’ codex-1.4.3}/codex/urls/opds/__init__.py +0 -0
  980. {codex-1.4.2 โ†’ codex-1.4.3}/codex/urls/opds/authentication.py +0 -0
  981. {codex-1.4.2 โ†’ codex-1.4.3}/codex/urls/opds/binary.py +0 -0
  982. {codex-1.4.2 โ†’ codex-1.4.3}/codex/urls/opds/root.py +0 -0
  983. {codex-1.4.2 โ†’ codex-1.4.3}/codex/urls/opds/v1.py +0 -0
  984. {codex-1.4.2 โ†’ codex-1.4.3}/codex/urls/opds/v2.py +0 -0
  985. {codex-1.4.2 โ†’ codex-1.4.3}/codex/urls/pwa.py +0 -0
  986. {codex-1.4.2 โ†’ codex-1.4.3}/codex/urls/root.py +0 -0
  987. {codex-1.4.2 โ†’ codex-1.4.3}/codex/urls/spectacular.py +0 -0
  988. {codex-1.4.2 โ†’ codex-1.4.3}/codex/version.py +0 -0
  989. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/README.md +0 -0
  990. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/__init__.py +0 -0
  991. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/admin/__init__.py +0 -0
  992. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/auth.py +0 -0
  993. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/browser/__init__.py +0 -0
  994. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/browser/filters/__init__.py +0 -0
  995. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/browser/filters/bookmark.py +0 -0
  996. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/browser/filters/field.py +0 -0
  997. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/browser/filters/group.py +0 -0
  998. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/browser/session.py +0 -0
  999. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/error.py +0 -0
  1000. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/opds/__init__.py +0 -0
  1001. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/opds/binary.py +0 -0
  1002. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/opds/util.py +0 -0
  1003. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/opds/v1/__init__.py +0 -0
  1004. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/opds/v1/data.py +0 -0
  1005. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/opds/v1/entry/__init__.py +0 -0
  1006. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/opds/v1/entry/entry.py +0 -0
  1007. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/opds/v1/entry/links.py +0 -0
  1008. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/opds/v2/__init__.py +0 -0
  1009. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/opds/v2/const.py +0 -0
  1010. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/opds/v2/links.py +0 -0
  1011. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/opds/v2/top_links.py +0 -0
  1012. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/pwa.py +0 -0
  1013. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/reader/__init__.py +0 -0
  1014. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/reader/reader.py +0 -0
  1015. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/reader/session.py +0 -0
  1016. {codex-1.4.2 โ†’ codex-1.4.3}/codex/views/version.py +0 -0
  1017. {codex-1.4.2 โ†’ codex-1.4.3}/codex/websockets/README.md +0 -0
  1018. {codex-1.4.2 โ†’ codex-1.4.3}/codex/websockets/__init__.py +0 -0
  1019. {codex-1.4.2 โ†’ codex-1.4.3}/codex/websockets/aio_queue.py +0 -0
  1020. {codex-1.4.2 โ†’ codex-1.4.3}/codex/websockets/consumers.py +0 -0
  1021. {codex-1.4.2 โ†’ codex-1.4.3}/codex/worker_base.py +0 -0
  1022. {codex-1.4.2 โ†’ codex-1.4.3}/tests/README.md +0 -0
  1023. {codex-1.4.2 โ†’ codex-1.4.3}/tests/__init__.py +0 -0
  1024. {codex-1.4.2 โ†’ codex-1.4.3}/tests/test_asgi.py +0 -0
  1025. {codex-1.4.2 โ†’ codex-1.4.3}/tests/test_models.py +0 -0
codex-1.4.3/PKG-INFO ADDED
@@ -0,0 +1,514 @@
1
+ Metadata-Version: 2.1
2
+ Name: codex
3
+ Version: 1.4.3
4
+ Summary: A comic archive web server.
5
+ Home-page: https://github.com/ajslater/codex
6
+ License: GPL-3.0-only
7
+ Keywords: comic,cbz,cbr,cbt,pdf
8
+ Author: AJ Slater
9
+ Author-email: aj@slater.net
10
+ Requires-Python: >=3.9,<4.0
11
+ Classifier: Development Status :: 5 - Production/Stable
12
+ Classifier: Environment :: Web Environment
13
+ Classifier: Framework :: Django :: 4.0
14
+ Classifier: Intended Audience :: End Users/Desktop
15
+ Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
16
+ Classifier: Natural Language :: English
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: JavaScript
19
+ Classifier: Programming Language :: Python :: 3
20
+ Classifier: Programming Language :: Python :: 3.9
21
+ Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Programming Language :: Python :: 3 :: Only
24
+ Classifier: Topic :: Internet :: WWW/HTTP
25
+ Classifier: Topic :: Multimedia :: Graphics :: Viewers
26
+ Requires-Dist: Pillow (>=10.0.0,<11.0.0)
27
+ Requires-Dist: aioprocessing (>=2.0.1,<3.0.0)
28
+ Requires-Dist: ansicolors (>=1.1,<2.0)
29
+ Requires-Dist: case-converter (>=1.1.0,<2.0.0)
30
+ Requires-Dist: channels (>=4.0.0,<5.0.0)
31
+ Requires-Dist: comicbox[pdf] (>=0.10.1,<0.11.0)
32
+ Requires-Dist: django (>=4.2,<5.0)
33
+ Requires-Dist: django-cors-headers (>=4.0,<5.0)
34
+ Requires-Dist: django-haystack (>=3.2.1,<4.0.0)
35
+ Requires-Dist: django-rest-registration (>=0.8.0,<0.9.0)
36
+ Requires-Dist: django-vite (>=2.1.3,<3.0.0)
37
+ Requires-Dist: djangorestframework (>=3.11,<4.0)
38
+ Requires-Dist: djangorestframework-camel-case (>=1.3.0,<2.0.0)
39
+ Requires-Dist: drf-spectacular (>=0.26.0,<0.27.0)
40
+ Requires-Dist: fnvhash (>=0.1,<0.2)
41
+ Requires-Dist: humanfriendly (>=10.0,<11.0)
42
+ Requires-Dist: humanize (>=4.0.0,<5.0.0)
43
+ Requires-Dist: hypercorn[h3] (>=0.14.1,<0.15.0)
44
+ Requires-Dist: psutil (>=5.9.4,<6.0.0)
45
+ Requires-Dist: pycountry (>=22.1,<23.0)
46
+ Requires-Dist: python-dateutil (>=2.8.2,<3.0.0)
47
+ Requires-Dist: requests (>=2.24,<3.0)
48
+ Requires-Dist: tzlocal (>=5.0,<6.0)
49
+ Requires-Dist: watchdog (>=3.0,<4.0)
50
+ Requires-Dist: websocket_client (>=1.2,<2.0)
51
+ Requires-Dist: whitenoise[brotli] (>=6.0,<7.0)
52
+ Requires-Dist: whoosh (>=2.7.4,<3.0.0)
53
+ Project-URL: Documentation, https://github.com/ajslater/codex
54
+ Project-URL: Docker Image, https://hub.docker.com/r/ajslater/codex
55
+ Project-URL: News, https://github.com/ajslater/codex/blob/main/NEWS.md
56
+ Project-URL: Repository, https://github.com/ajslater/codex
57
+ Project-URL: Report Issues, https://github.com/ajslater/codex/issues
58
+ Description-Content-Type: text/markdown
59
+
60
+ Codex
61
+
62
+ A comic archive browser and reader.
63
+
64
+ <img src="codex/static_src/img/logo.svg" style="
65
+ height: 128px;
66
+ width: 128px;
67
+ border-radius: 128px;
68
+ " />
69
+
70
+ ## <a name="features">โœจ Features</a>
71
+
72
+ - Codex is a web server.
73
+ - Full text search of metadata and bookmarks.
74
+ - Filter and sort on all comic metadata and unread status per user.
75
+ - Browse a tree of publishers, imprints, series, volumes, or your own folder
76
+ hierarchy.
77
+ - Read comics in a variety of aspect ratios that fit your screen.
78
+ - Per user bookmarking. Per browser bookmarks even before you make an account.
79
+ - Watches the filesystem and automatically imports new or changed comics.
80
+ - Private Libraries accessible only to certain groups of users.
81
+ - Reads CBZ, CBR, CBT, and PDF formatted comics.
82
+ - Syndication with OPDS 1 & 2, streaming, search and authentication.
83
+ - Runs in 1GB of RAM, faster with more.
84
+
85
+ ### Examples
86
+
87
+ - _Filter by_ Story Arc and Unread, _Order by_ Publish Date to create an event
88
+ reading list.
89
+ - _Filter by_ Unread and _Order by_ Added Time to see your latest unread comics.
90
+ - _Search by_ your favorite character to find their appearances across different
91
+ comics.
92
+
93
+ ## <a name="demonstration">๐Ÿ‘€ Demonstration</a>
94
+
95
+ You may browse a [live demo server](https://codex.sl8r.net/) to get a feel for
96
+ Codex.
97
+
98
+ ## <a name="news">๐Ÿ“œ News</a>
99
+
100
+ Codex has a <a href="NEWS.md">NEWS file</a> to summarize changes that affect
101
+ users.
102
+
103
+ ## <a name="installation">๐Ÿ“ฆ Installation</a>
104
+
105
+ ### Install & Run with Docker
106
+
107
+ Run the official [Docker Image](https://hub.docker.com/r/ajslater/codex).
108
+ Instructions for running the docker image are on the Docker Hub README. This is
109
+ the recommended way to run Codex.
110
+
111
+ You'll then want to read the [Administration](#administration) section of this
112
+ document.
113
+
114
+ ### Install & Run as a Native Application
115
+
116
+ You can also run Codex as a natively installed python application with pip.
117
+
118
+ #### Wheel Build Dependencies
119
+
120
+ You'll need to install these system dependencies before installing Codex.
121
+
122
+ ##### macOS
123
+
124
+ ```sh
125
+ brew install jpeg libffi libyaml libzip openssl python unrar webp
126
+ ```
127
+
128
+ ##### Linux
129
+
130
+ ###### <a href="#debian">Debian</a>
131
+
132
+ Like Ubuntu, Mint, MX and others.
133
+
134
+ ```sh
135
+ apt install build-essential libffi-dev libjpeg-dev libssl-dev libwebp7 python3-pip zlib1g-dev
136
+ ```
137
+
138
+ older releases may use the `libweb6` package instead.
139
+
140
+ ###### Debian on ARM
141
+
142
+ The python cryptography wheel needs compiling on rare architectures. Install the
143
+ Rust compiler.
144
+
145
+ ```sh
146
+ apt install cargo
147
+ ```
148
+
149
+ ###### Alpine
150
+
151
+ ```sh
152
+ apk add bsd-compat-headers build-base jpeg-dev libffi-dev libwebp openssl-dev yaml-dev zlib-dev
153
+ ```
154
+
155
+ ##### Install unrar Runtime Dependency on Linux
156
+
157
+ Codex requires unrar to read cbr formatted comic archives. Unrar is often not
158
+ packaged for Linux, but here are some instructions:
159
+ [How to install unrar in Linux](https://www.unixtutorial.org/how-to-install-unrar-in-linux/)
160
+
161
+ Unrar as packaged for Alpine Linux v3.14 seems to work on Alpine v3.15
162
+
163
+ #### Windows
164
+
165
+ Windows users should use Docker to run Codex until this documentation section is
166
+ complete.
167
+
168
+ Codex can _probably_ Windows Linux Subsystem but I haven't done personally
169
+ tested it yet. Try following the instructions for [Debian](#debian) above. There
170
+ may be outstanding platform related bugs.
171
+
172
+ Contributions to this documentation accepted on
173
+ [the outstanding issue](https://github.com/ajslater/codex/issues/76) or discord.
174
+
175
+ #### Install Codex with pip
176
+
177
+ You may now install Codex with pip
178
+
179
+ ```sh
180
+ pip3 install codex
181
+ ```
182
+
183
+ #### Run Codex Natively
184
+
185
+ pip should install the codex binary on your path. Run
186
+
187
+ ```sh
188
+ codex
189
+ ```
190
+
191
+ and then navigate to <http://localhost:9810/>
192
+
193
+ ## <a name="administration">๐Ÿ‘‘ Administration</a>
194
+
195
+ ### Navigate to the Admin Panel
196
+
197
+ - Click the hamburger menu โ˜ฐ to open the browser settings drawer.
198
+ - Log in as the 'admin' user. The default administrator password is also
199
+ 'admin'.
200
+ - Navigate to the Admin Panel by clicking on its link in the browser settings
201
+ drawer after you have logged in.
202
+
203
+ ### Change the Admin password
204
+
205
+ The first thing you should do is log in as the admin user and change the admin
206
+ password.
207
+
208
+ - Navigate to the Admin Panel as described above.
209
+ - Select the Users tab.
210
+ - Change the admin user's password using the small lock button.
211
+ - You may also change the admin user's name with the edit button.
212
+ - You may create other users and grant them admin privileges by making them
213
+ staff.
214
+
215
+ ### Add Comic Libraries
216
+
217
+ The second thing you will want to do is log in as an Administrator and add one
218
+ or more comic libraries.
219
+
220
+ - Navigate to the Admin Panel as described above.
221
+ - Select the Libraries tab in the Admin Panel
222
+ - Add a Library with the "+ LIBRARY" button in the upper left.
223
+
224
+ ### Reset the admin password
225
+
226
+ If you forget all your superuser passwords, you may restore the original default
227
+ admin account by running codex with the `CODEX_RESET_ADMIN` environment variable
228
+ set.
229
+
230
+ ```sh
231
+ CODEX_RESET_ADMIN=1 codex
232
+ ```
233
+
234
+ or, if using Docker:
235
+
236
+ ```sh
237
+ docker run -e CODEX_RESET_ADMIN=1 -v host-parent-dir/config:/config ajslater/codex
238
+ ```
239
+
240
+ ### Private Libraries
241
+
242
+ In the Admin Panel you may configure private libraries that are only accessible
243
+ to specific groups.
244
+
245
+ A library with _no_ groups is accessible to every user including anonymous
246
+ users.
247
+
248
+ A library with _any_ groups is accessible only to users who are in those groups.
249
+
250
+ Use the Groups admin panel to create groups and the Users admin panel to add and
251
+ remove users to groups.
252
+
253
+ ### PDFs
254
+
255
+ Codex only reads PDF metadata from the filename. If you decide to include PDFs
256
+ in your comic library, I recommend taking time to rename your files so Codex can
257
+ find some metadata. Codex recognizes several file naming schemes. This one has
258
+ good results:
259
+
260
+ `{series} v{volume} #{issue} {title} ({year}) {ignored}.pdf`
261
+
262
+ ## <a name="configuration">๐ŸŽ›๏ธ Configuration</a>
263
+
264
+ ### Config Dir
265
+
266
+ The default config directory is `config/` directly under the working directory
267
+ you run codex from. You may specify an alternate config directory with the
268
+ environment variable `CODEX_CONFIG_DIR`.
269
+
270
+ The config directory contains a file named `hypercorn.toml` where you can
271
+ specify ports and bind addresses. If no `hypercorn.toml` is present Codex copies
272
+ a default one to that directory on startup.
273
+
274
+ The default values for the config options are:
275
+
276
+ ```toml
277
+ bind = ["0.0.0.0:9810"]
278
+ quick_bind = ["0.0.0.0:9810"]
279
+ root_path = "/codex"
280
+ ```
281
+
282
+ The config directory also holds the main sqlite database, the Whoosh search
283
+ index, a Django cache and comic book cover thumbnails.
284
+
285
+ ### Environment Variables
286
+
287
+ - `LOGLEVEL` will change how verbose codex's logging is. Valid values are
288
+ `ERROR`, `WARNING`, `INFO`, `DEBUG`. The default is `INFO`.
289
+ - `TIMEZONE` or `TZ` will explicitly the timezone in long format (e.g.
290
+ `"America/Los Angeles"`). This is useful inside Docker because codex cannot
291
+ automatically detect the host machine's timezone.
292
+ - `CODEX_CONFIG_DIR` will set the path to codex config directory. Defaults to
293
+ `$CWD/config`
294
+ - `CODEX_RESET_ADMIN=1` will reset the admin user and its password to defaults
295
+ when codex starts.
296
+ - `CODEX_SKIP_INTEGRITY_CHECK=1` will skip the database integrity repair that
297
+ runs when codex starts.
298
+ - `CODEX_LOG_DIR` sets a custom directory for saving logfiles. Defaults to
299
+ `$CODEX_CONFIG_DIR/logs`
300
+ - `CODEX_LOG_TO_FILE=0` will not log to files.
301
+ - `CODEX_LOG_TO_CONSOLE=0` will not log to the console.
302
+
303
+ ### Reverse Proxy
304
+
305
+ [nginx](https://nginx.org/) is often used as a TLS terminator and subpath proxy.
306
+
307
+ Here's an example nginx config with a subpath named '/codex'.
308
+
309
+ ```nginx
310
+ # HTTP
311
+ proxy_set_header Host $http_host;
312
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
313
+ proxy_set_header X-Forwarded-Host $server_name;
314
+ proxy_set_header X-Forwarded-Port $server_port;
315
+ proxy_set_header X-Forwarded-Proto $scheme;
316
+ proxy_set_header X-Real-IP $remote_addr;
317
+ proxy_set_header X-Scheme $scheme;
318
+ # Websockets
319
+ proxy_http_version 1.1;
320
+ proxy_set_header Upgrade $http_upgrade;
321
+
322
+ proxy_set_header Connection "Upgrade" location /codex {
323
+ proxy_pass http://codex:9810;
324
+ # Codex reads http basic authentication.
325
+ # If the nginx credentials are different than codex credentials use this line to
326
+ # not forward the authorization.
327
+ proxy_set_header Authorization "";
328
+ }
329
+ ```
330
+
331
+ Specify a reverse proxy sub path (if you have one) in `config/hypercorn.toml`
332
+
333
+ ```toml
334
+ root_path = "/codex"
335
+
336
+ ```
337
+
338
+ #### Nginx Reverse Proxy 502 when container refreshes
339
+
340
+ Nginx requires a special trick to refresh dns when linked Docker containers
341
+ recreate. See this
342
+ [nginx with dynamix upstreams](https://tenzer.dk/nginx-with-dynamic-upstreams/)
343
+ article.
344
+
345
+ ### Restricted Memory Environments
346
+
347
+ Codex can run with as little as 1GB available RAM. Large batch jobs โ€“like
348
+ importing and indexing tens of thousands of comics at onceโ€“ will run faster the
349
+ more memory is available to Codex. The biggest gains in speed happen when you
350
+ increase memory up to about 6GB. Codex batch jobs do get faster the more memory
351
+ you give it above 6GB, but there are diminishing returns.
352
+
353
+ If you run Codex in an admin restricted memory environment you might want to
354
+ temporarily give codex a lot of memory to run a very large batch job and then
355
+ restrict it for normal operation.
356
+
357
+ ## <a name="usage">๐Ÿ“– Usage</a>
358
+
359
+ ### ๐Ÿ‘ค Sessions & Accounts
360
+
361
+ Once your administrator has added some comic libraries, you may browse and read
362
+ comics. Codex will remember your preferences, bookmarks and progress in the
363
+ browser session. Codex destroys anonymous sessions and bookmarks after 60 days.
364
+ To preserve these settings across browsers and after sessions expire, you may
365
+ register an account with a username and password. You will have to contact your
366
+ administrator to reset your password if you forget it.
367
+
368
+ ### ๐Ÿ—๏ธ API with Key Access
369
+
370
+ Codex has a limited number of API endpoints available with API Key Access. The
371
+ API Key is available on the admin/stats tab.
372
+
373
+ ### แฏค OPDS
374
+
375
+ Codex supports OPDS syndication and OPDS streaming. You may find the OPDS url in
376
+ the side drawer. It should take the form:
377
+
378
+ `http(s)://host.tld(:9810)(/root_path)/opds/v1.2/`
379
+
380
+ or
381
+
382
+ `http(s)://host.tld(:9810)(/root_path)/opds/v2.0/`
383
+
384
+ OPDS 2.0 support is experimental and not widely or well supported by clients.
385
+ OPDS 2.0 book readers exist, but I am not yet aware of an OPDS 2.0 comic reader.
386
+
387
+ #### Clients
388
+
389
+ - iOS has [Panels](https://panels.app/), [KYBook 3](http://kybook-reader.com/),
390
+ and
391
+ [Chunky Comic Reader](https://apps.apple.com/us/app/chunky-comic-reader/id663567628)
392
+ - Android has
393
+ [Moon+](https://play.google.com/store/apps/details?id=com.flyersoft.moonreader)
394
+ and
395
+ [Librera](https://play.google.com/store/apps/details?id=com.foobnix.pdf.reader)
396
+
397
+ #### HTTP Basic Authentication
398
+
399
+ If you wish to access OPDS as your Codex User. You will have to add your
400
+ username and password to the URL. Some OPDS clients do not asssist you with
401
+ authentication. In that case the OPDS url will look like:
402
+
403
+ `http(s)://username:password@host.tld(:9810)(/root_path)/opds/v1.2/`
404
+
405
+ #### Supported OPDS Specifications
406
+
407
+ - [OPDS 1.2](https://specs.opds.io/opds-1.2.html)
408
+ - [OPDS-PSE 1.2](https://github.com/anansi-project/opds-pse/blob/master/v1.2.md)
409
+ - [OPDS Authentication 1.0](https://drafts.opds.io/authentication-for-opds-1.0.html)
410
+ - [OpenSearch 1.1](https://github.com/dewitt/opensearch)
411
+
412
+ ## <a name="troubleshooting">๐Ÿฉบ Troubleshooting</a>
413
+
414
+ ### ๐Ÿ“’ Logs
415
+
416
+ Codex collects its logs in the `config/logs` directory. Take a look to see what
417
+ th e server is doing.
418
+
419
+ You can change how much codex logs by setting the `LOGLEVEL` environment
420
+ variable. By default this level is `INFO`. To see more verbose messages, run
421
+ codex like:
422
+
423
+ ```bash
424
+ LOGLEVEL=DEBUG codex
425
+ ```
426
+
427
+ ### Watching Filesystem Events with Docker
428
+
429
+ Codex tries to watch for filesystem events to instantly update your comic
430
+ libraries when they change on disk. But these native filesystem events are not
431
+ translated between macOS & Windows Docker hosts and the Docker Linux container.
432
+ If you find that your installation is not updating to filesystem changes
433
+ instantly, you might try enabling polling for the affected libraries and
434
+ decreasing the `poll_every` value in the Admin console to a frequency that suits
435
+ you.
436
+
437
+ ### Emergency Database Repair
438
+
439
+ If the database becomes corrupt, Codex includes a facitlity to rebuild the
440
+ database. Place a file named `rebuild_db` in your Codex config directory like
441
+ so:
442
+
443
+ ```sh
444
+ touch config/rebuild_db
445
+ ```
446
+
447
+ Shut down and restart Codex.
448
+
449
+ The next time Codex starts it will back up the existing database and try to
450
+ rebuild it. The database lives in the config directory as the file
451
+ `config/db.sqlite3`. If this procedure goes kablooey, you may recover the
452
+ original database at `config/db.sqlite3.backup`.
453
+
454
+ ## <a name="alternatives-to-codex">๐Ÿ“šAlternatives</a>
455
+
456
+ - [Kavita](https://www.kavitareader.com/) has light metadata filtering/editing,
457
+ supports comics, eBooks, and features for manga.
458
+ - [Komga](https://komga.org/) has light metadata editing.
459
+ - [Ubooquity](https://vaemendis.net/ubooquity/) reads both comics and eBooks.
460
+ - [Mylar](https://github.com/mylar3/mylar3) is the best comic book manager which
461
+ also has a built in reader.
462
+ - [Comictagger](https://github.com/comictagger/comictagger) is a comic metadata
463
+ editor. It comes with a powerful command line and desktop GUI.
464
+
465
+ ## <a name="contributing">๐Ÿค Contributing</a>
466
+
467
+ ### <a name="bug_reports">๐Ÿ› Bug Reports</a>
468
+
469
+ Issues and feature requests are best filed on the
470
+ [Github issue tracker](https://github.com/ajslater/codex/issues).
471
+
472
+ ### <a name="out-of-scope">๐Ÿšซ Out of Scope</a>
473
+
474
+ - I have no intention of making this an eBook reader.
475
+ - I think metadata editing would be better placed in a comic manager than a
476
+ reader.
477
+
478
+ ### <a name="develop-codex">๐Ÿ›  Develop</a>
479
+
480
+ Codex is a Django Python webserver with a VueJS front end.
481
+
482
+ `/codex/codex/` is the main django app which provides the webserver and
483
+ database.
484
+
485
+ `/codex/frontend/` is where the vuejs frontend lives.
486
+
487
+ Most of Codex development is now controlled through the Makefile. Type `make`
488
+ for a list of commands.
489
+
490
+ ## <a name="discord">๐Ÿ’ฌ Support</a>
491
+
492
+ By the generosity of the good people of
493
+ [Mylar](https://github.com/mylar3/mylar3), I and other Codex users answer
494
+ questions on the [Mylar Discord](https://discord.gg/6UG94R7E8T). Please use the
495
+ `#codex-support` channel to ask for help with Codex.
496
+
497
+ ## <a name="links">๐Ÿ”— Links</a>
498
+
499
+ - [Docker Image](https://hub.docker.com/r/ajslater/codex)
500
+ - [PyPi Package](https://pypi.org/project/codex/)
501
+ - [GitHub Project](https://github.com/ajslater/codex/)
502
+
503
+ ## <a name="special-thanks">๐Ÿ™๐Ÿป Special Thanks</a>
504
+
505
+ - Thanks to [Aurรฉlien Mazurie](https://pypi.org/user/ajmazurie/) for allowing me
506
+ to use the PyPi name 'codex'.
507
+ - Thanks to the good people of
508
+ [#mylar](https://github.com/mylar3/mylar3#live-support--conversation) for
509
+ continuous feedback and comic ecosystem education.
510
+
511
+ ## <a name="enjoy">๐Ÿ˜Š Enjoy</a>
512
+
513
+ ![These simple people have managed to tap into the spiritual forces that mystics and yogis spend literal lifetimes seeking. I feel... ...I feel...](strange.jpg)
514
+