codex 1.4.0a1__tar.gz โ†’ 1.4.1__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 (1026) hide show
  1. codex-1.4.1/PKG-INFO +518 -0
  2. codex-1.4.1/README.md +458 -0
  3. codex-1.4.1/codex/config_default.yaml +20 -0
  4. codex-1.4.1/codex/db_functions.py +24 -0
  5. codex-1.4.1/codex/integrity.py +381 -0
  6. codex-1.4.1/codex/librarian/__pycache__/__init__.cpython-311.pyc +0 -0
  7. codex-1.4.1/codex/librarian/__pycache__/mp_queue.cpython-311.pyc +0 -0
  8. codex-1.4.1/codex/librarian/__pycache__/tasks.cpython-311.pyc +0 -0
  9. codex-1.4.1/codex/librarian/covers/__pycache__/__init__.cpython-311.pyc +0 -0
  10. codex-1.4.1/codex/librarian/covers/__pycache__/create.cpython-311.pyc +0 -0
  11. codex-1.4.1/codex/librarian/covers/__pycache__/path.cpython-311.pyc +0 -0
  12. codex-1.4.1/codex/librarian/covers/__pycache__/status.cpython-311.pyc +0 -0
  13. codex-1.4.1/codex/librarian/covers/__pycache__/tasks.cpython-311.pyc +0 -0
  14. codex-1.4.1/codex/librarian/covers/create.py +116 -0
  15. codex-1.4.1/codex/librarian/importer/__pycache__/__init__.cpython-311.pyc +0 -0
  16. codex-1.4.1/codex/librarian/importer/__pycache__/status.cpython-311.pyc +0 -0
  17. codex-1.4.1/codex/librarian/importer/aggregate_metadata.py +225 -0
  18. codex-1.4.1/codex/librarian/importer/clean_metadata.py +256 -0
  19. codex-1.4.1/codex/librarian/importer/create_fks.py +352 -0
  20. codex-1.4.1/codex/librarian/importer/deleted.py +61 -0
  21. codex-1.4.1/codex/librarian/importer/failed_imports.py +182 -0
  22. codex-1.4.1/codex/librarian/importer/importerd.py +295 -0
  23. codex-1.4.1/codex/librarian/importer/link_comics.py +234 -0
  24. codex-1.4.1/codex/librarian/importer/moved.py +185 -0
  25. codex-1.4.1/codex/librarian/importer/query_fks.py +433 -0
  26. codex-1.4.1/codex/librarian/importer/tasks.py +27 -0
  27. codex-1.4.1/codex/librarian/janitor/__pycache__/__init__.cpython-311.pyc +0 -0
  28. codex-1.4.1/codex/librarian/janitor/__pycache__/status.cpython-311.pyc +0 -0
  29. codex-1.4.1/codex/librarian/janitor/__pycache__/tasks.cpython-311.pyc +0 -0
  30. codex-1.4.1/codex/librarian/janitor/cleanup.py +110 -0
  31. codex-1.4.1/codex/librarian/librariand.py +205 -0
  32. codex-1.4.1/codex/librarian/notifier/__pycache__/__init__.cpython-311.pyc +0 -0
  33. codex-1.4.1/codex/librarian/notifier/__pycache__/tasks.cpython-311.pyc +0 -0
  34. codex-1.4.1/codex/librarian/search/__pycache__/__init__.cpython-311.pyc +0 -0
  35. codex-1.4.1/codex/librarian/search/__pycache__/status.cpython-311.pyc +0 -0
  36. codex-1.4.1/codex/librarian/search/__pycache__/tasks.cpython-311.pyc +0 -0
  37. codex-1.4.1/codex/librarian/watchdog/__pycache__/__init__.cpython-311.pyc +0 -0
  38. codex-1.4.1/codex/librarian/watchdog/__pycache__/status.cpython-311.pyc +0 -0
  39. codex-1.4.1/codex/librarian/watchdog/__pycache__/tasks.cpython-311.pyc +0 -0
  40. codex-1.4.1/codex/librarian/watchdog/events.py +88 -0
  41. codex-1.4.1/codex/librarian/watchdog/observers.py +167 -0
  42. codex-1.4.1/codex/logger/__pycache__/__init__.cpython-311.pyc +0 -0
  43. codex-1.4.1/codex/logger/__pycache__/logging.cpython-311.pyc +0 -0
  44. codex-1.4.1/codex/logger/__pycache__/mp_queue.cpython-311.pyc +0 -0
  45. codex-1.4.1/codex/logger/loggerd.py +107 -0
  46. codex-1.4.1/codex/logger/logging.py +45 -0
  47. codex-1.4.1/codex/migrations/0024_comic_gtin_comic_story_arc_number.py +24 -0
  48. codex-1.4.1/codex/migrations/0025_add_story_arc_number.py +83 -0
  49. codex-1.4.1/codex/models.py +665 -0
  50. codex-1.4.1/codex/search/backend.py +484 -0
  51. codex-1.4.1/codex/search/indexes.py +65 -0
  52. codex-1.4.1/codex/serializers/__pycache__/__init__.cpython-311.pyc +0 -0
  53. codex-1.4.1/codex/serializers/__pycache__/admin.cpython-311.pyc +0 -0
  54. codex-1.4.1/codex/serializers/__pycache__/auth.cpython-311.pyc +0 -0
  55. codex-1.4.1/codex/serializers/__pycache__/browser.cpython-311.pyc +0 -0
  56. codex-1.4.1/codex/serializers/__pycache__/choices.cpython-311.pyc +0 -0
  57. codex-1.4.1/codex/serializers/__pycache__/metadata.cpython-311.pyc +0 -0
  58. codex-1.4.1/codex/serializers/__pycache__/mixins.cpython-311.pyc +0 -0
  59. codex-1.4.1/codex/serializers/__pycache__/models.cpython-311.pyc +0 -0
  60. codex-1.4.1/codex/serializers/__pycache__/reader.cpython-311.pyc +0 -0
  61. codex-1.4.1/codex/serializers/__pycache__/redirect.cpython-311.pyc +0 -0
  62. codex-1.4.1/codex/serializers/__pycache__/versions.cpython-311.pyc +0 -0
  63. codex-1.4.1/codex/serializers/browser.py +257 -0
  64. codex-1.4.1/codex/serializers/metadata.py +18 -0
  65. codex-1.4.1/codex/serializers/models.py +344 -0
  66. codex-1.4.1/codex/serializers/opds/__pycache__/__init__.cpython-311.pyc +0 -0
  67. codex-1.4.1/codex/serializers/opds/__pycache__/authentication.cpython-311.pyc +0 -0
  68. codex-1.4.1/codex/serializers/opds/__pycache__/v1.cpython-311.pyc +0 -0
  69. codex-1.4.1/codex/serializers/opds/__pycache__/v2.cpython-311.pyc +0 -0
  70. codex-1.4.1/codex/serializers/opds/v1.py +70 -0
  71. codex-1.4.1/codex/serializers/opds/v2.py +185 -0
  72. codex-1.4.1/codex/serializers/reader.py +90 -0
  73. codex-1.4.1/codex/settings/__pycache__/__init__.cpython-311.pyc +0 -0
  74. codex-1.4.1/codex/settings/__pycache__/hypercorn.cpython-311.pyc +0 -0
  75. codex-1.4.1/codex/settings/__pycache__/logging.cpython-311.pyc +0 -0
  76. codex-1.4.1/codex/settings/__pycache__/secret_key.cpython-311.pyc +0 -0
  77. codex-1.4.1/codex/settings/__pycache__/settings.cpython-311.pyc +0 -0
  78. codex-1.4.1/codex/settings/__pycache__/timezone.cpython-311.pyc +0 -0
  79. codex-1.4.1/codex/settings/__pycache__/whitenoise.cpython-311.pyc +0 -0
  80. codex-1.4.1/codex/settings/settings.py +307 -0
  81. codex-1.4.1/codex/signals/__pycache__/__init__.cpython-311.pyc +0 -0
  82. codex-1.4.1/codex/signals/__pycache__/django_signals.cpython-311.pyc +0 -0
  83. codex-1.4.1/codex/static_root/assets/admin-12749881.ef0f50bac290.js +41 -0
  84. codex-1.4.1/codex/static_root/assets/admin-12749881.ef0f50bac290.js.br +0 -0
  85. codex-1.4.1/codex/static_root/assets/admin-12749881.ef0f50bac290.js.gz +0 -0
  86. codex-1.4.1/codex/static_root/assets/admin-12749881.js +41 -0
  87. codex-1.4.1/codex/static_root/assets/admin-12749881.js.br +0 -0
  88. codex-1.4.1/codex/static_root/assets/admin-12749881.js.gz +0 -0
  89. codex-1.4.1/codex/static_root/assets/admin-beda768d.a614eee46307.css +1 -0
  90. codex-1.4.1/codex/static_root/assets/admin-beda768d.a614eee46307.css.br +0 -0
  91. codex-1.4.1/codex/static_root/assets/admin-beda768d.a614eee46307.css.gz +0 -0
  92. codex-1.4.1/codex/static_root/assets/admin-beda768d.css +1 -0
  93. codex-1.4.1/codex/static_root/assets/admin-beda768d.css.br +0 -0
  94. codex-1.4.1/codex/static_root/assets/admin-beda768d.css.gz +0 -0
  95. codex-1.4.1/codex/static_root/assets/admin-drawer-panel-41c225cc.3f84583b435b.css +1 -0
  96. codex-1.4.1/codex/static_root/assets/admin-drawer-panel-41c225cc.3f84583b435b.css.br +0 -0
  97. codex-1.4.1/codex/static_root/assets/admin-drawer-panel-41c225cc.3f84583b435b.css.gz +0 -0
  98. codex-1.4.1/codex/static_root/assets/admin-drawer-panel-41c225cc.css +1 -0
  99. codex-1.4.1/codex/static_root/assets/admin-drawer-panel-41c225cc.css.br +0 -0
  100. codex-1.4.1/codex/static_root/assets/admin-drawer-panel-41c225cc.css.gz +0 -0
  101. codex-1.4.1/codex/static_root/assets/admin-drawer-panel-522f1e6c.089d70878270.js +1 -0
  102. codex-1.4.1/codex/static_root/assets/admin-drawer-panel-522f1e6c.089d70878270.js.br +0 -0
  103. codex-1.4.1/codex/static_root/assets/admin-drawer-panel-522f1e6c.089d70878270.js.gz +0 -0
  104. codex-1.4.1/codex/static_root/assets/admin-drawer-panel-522f1e6c.js +1 -0
  105. codex-1.4.1/codex/static_root/assets/admin-drawer-panel-522f1e6c.js.br +0 -0
  106. codex-1.4.1/codex/static_root/assets/admin-drawer-panel-522f1e6c.js.gz +0 -0
  107. codex-1.4.1/codex/static_root/assets/browser-7f7d7134.0fe3749b0f2f.css +1 -0
  108. codex-1.4.1/codex/static_root/assets/browser-7f7d7134.0fe3749b0f2f.css.br +0 -0
  109. codex-1.4.1/codex/static_root/assets/browser-7f7d7134.0fe3749b0f2f.css.gz +0 -0
  110. codex-1.4.1/codex/static_root/assets/browser-7f7d7134.css +1 -0
  111. codex-1.4.1/codex/static_root/assets/browser-7f7d7134.css.br +0 -0
  112. codex-1.4.1/codex/static_root/assets/browser-7f7d7134.css.gz +0 -0
  113. codex-1.4.1/codex/static_root/assets/browser-af622672.d51aca96d64d.js +1 -0
  114. codex-1.4.1/codex/static_root/assets/browser-af622672.d51aca96d64d.js.br +0 -0
  115. codex-1.4.1/codex/static_root/assets/browser-af622672.d51aca96d64d.js.gz +0 -0
  116. codex-1.4.1/codex/static_root/assets/browser-af622672.js +1 -0
  117. codex-1.4.1/codex/static_root/assets/browser-af622672.js.br +0 -0
  118. codex-1.4.1/codex/static_root/assets/browser-af622672.js.gz +0 -0
  119. codex-1.4.1/codex/static_root/assets/http-error-5e17b794.77ceeb2d4641.js +1 -0
  120. codex-1.4.1/codex/static_root/assets/http-error-5e17b794.77ceeb2d4641.js.br +0 -0
  121. codex-1.4.1/codex/static_root/assets/http-error-5e17b794.77ceeb2d4641.js.gz +0 -0
  122. codex-1.4.1/codex/static_root/assets/http-error-5e17b794.js +1 -0
  123. codex-1.4.1/codex/static_root/assets/http-error-5e17b794.js.br +0 -0
  124. codex-1.4.1/codex/static_root/assets/http-error-5e17b794.js.gz +0 -0
  125. codex-1.4.1/codex/static_root/assets/main-9e76a4c3.6844a407d14c.js +1 -0
  126. codex-1.4.1/codex/static_root/assets/main-9e76a4c3.6844a407d14c.js.br +0 -0
  127. codex-1.4.1/codex/static_root/assets/main-9e76a4c3.6844a407d14c.js.gz +0 -0
  128. codex-1.4.1/codex/static_root/assets/main-9e76a4c3.js +1 -0
  129. codex-1.4.1/codex/static_root/assets/main-9e76a4c3.js.br +0 -0
  130. codex-1.4.1/codex/static_root/assets/main-9e76a4c3.js.gz +0 -0
  131. codex-1.4.1/codex/static_root/assets/metadata-dialog-62c29ce0.8418785c0453.js +1 -0
  132. codex-1.4.1/codex/static_root/assets/metadata-dialog-62c29ce0.8418785c0453.js.br +0 -0
  133. codex-1.4.1/codex/static_root/assets/metadata-dialog-62c29ce0.8418785c0453.js.gz +0 -0
  134. codex-1.4.1/codex/static_root/assets/metadata-dialog-62c29ce0.js +1 -0
  135. codex-1.4.1/codex/static_root/assets/metadata-dialog-62c29ce0.js.br +0 -0
  136. codex-1.4.1/codex/static_root/assets/metadata-dialog-62c29ce0.js.gz +0 -0
  137. codex-1.4.1/codex/static_root/assets/metadata-dialog-cb306ffd.cc304996d7bb.css +1 -0
  138. codex-1.4.1/codex/static_root/assets/metadata-dialog-cb306ffd.cc304996d7bb.css.br +0 -0
  139. codex-1.4.1/codex/static_root/assets/metadata-dialog-cb306ffd.cc304996d7bb.css.gz +0 -0
  140. codex-1.4.1/codex/static_root/assets/metadata-dialog-cb306ffd.css +1 -0
  141. codex-1.4.1/codex/static_root/assets/metadata-dialog-cb306ffd.css.br +0 -0
  142. codex-1.4.1/codex/static_root/assets/metadata-dialog-cb306ffd.css.gz +0 -0
  143. codex-1.4.1/codex/static_root/assets/page-pdf-157ba97e.613d7c2beb77.js +64 -0
  144. codex-1.4.1/codex/static_root/assets/page-pdf-157ba97e.613d7c2beb77.js.br +0 -0
  145. codex-1.4.1/codex/static_root/assets/page-pdf-157ba97e.613d7c2beb77.js.gz +0 -0
  146. codex-1.4.1/codex/static_root/assets/page-pdf-157ba97e.js +64 -0
  147. codex-1.4.1/codex/static_root/assets/page-pdf-157ba97e.js.br +0 -0
  148. codex-1.4.1/codex/static_root/assets/page-pdf-157ba97e.js.gz +0 -0
  149. codex-1.4.1/codex/static_root/assets/reader-36266549.0b2cf1291f27.js +1 -0
  150. codex-1.4.1/codex/static_root/assets/reader-36266549.0b2cf1291f27.js.br +0 -0
  151. codex-1.4.1/codex/static_root/assets/reader-36266549.0b2cf1291f27.js.gz +0 -0
  152. codex-1.4.1/codex/static_root/assets/reader-36266549.js +1 -0
  153. codex-1.4.1/codex/static_root/assets/reader-36266549.js.br +0 -0
  154. codex-1.4.1/codex/static_root/assets/reader-36266549.js.gz +0 -0
  155. codex-1.4.1/codex/static_root/assets/reader-7f004141.506eecc6954b.css +1 -0
  156. codex-1.4.1/codex/static_root/assets/reader-7f004141.506eecc6954b.css.br +0 -0
  157. codex-1.4.1/codex/static_root/assets/reader-7f004141.506eecc6954b.css.gz +0 -0
  158. codex-1.4.1/codex/static_root/assets/reader-7f004141.css +1 -0
  159. codex-1.4.1/codex/static_root/assets/reader-7f004141.css.br +0 -0
  160. codex-1.4.1/codex/static_root/assets/reader-7f004141.css.gz +0 -0
  161. codex-1.4.1/codex/static_root/js/choices.8c58714cf5b2.json +1 -0
  162. codex-1.4.1/codex/static_root/js/choices.8c58714cf5b2.json.br +5 -0
  163. codex-1.4.1/codex/static_root/js/choices.8c58714cf5b2.json.gz +0 -0
  164. codex-1.4.1/codex/static_root/js/choices.json +1 -0
  165. codex-1.4.1/codex/static_root/js/choices.json.br +5 -0
  166. codex-1.4.1/codex/static_root/js/choices.json.gz +0 -0
  167. codex-1.4.1/codex/static_root/manifest.d2f93a519ada.json +148 -0
  168. codex-1.4.1/codex/static_root/manifest.d2f93a519ada.json.br +0 -0
  169. codex-1.4.1/codex/static_root/manifest.d2f93a519ada.json.gz +0 -0
  170. codex-1.4.1/codex/static_root/manifest.json +148 -0
  171. codex-1.4.1/codex/static_root/manifest.json.br +0 -0
  172. codex-1.4.1/codex/static_root/manifest.json.gz +0 -0
  173. codex-1.4.1/codex/static_root/staticfiles.json +1 -0
  174. codex-1.4.1/codex/templates/headers-script-globals.html +13 -0
  175. codex-1.4.1/codex/templates/opds_v1/index.xml +118 -0
  176. codex-1.4.1/codex/templates/opds_v1/opensearch_v1.xml +10 -0
  177. codex-1.4.1/codex/templates/search/indexes/codex/comic_text.txt +38 -0
  178. codex-1.4.1/codex/urls/__pycache__/__init__.cpython-311.pyc +0 -0
  179. codex-1.4.1/codex/urls/__pycache__/app.cpython-311.pyc +0 -0
  180. codex-1.4.1/codex/urls/__pycache__/converters.cpython-311.pyc +0 -0
  181. codex-1.4.1/codex/urls/__pycache__/pwa.cpython-311.pyc +0 -0
  182. codex-1.4.1/codex/urls/__pycache__/root.cpython-311.pyc +0 -0
  183. codex-1.4.1/codex/urls/api/__pycache__/__init__.cpython-311.pyc +0 -0
  184. codex-1.4.1/codex/urls/api/__pycache__/admin.cpython-311.pyc +0 -0
  185. codex-1.4.1/codex/urls/api/__pycache__/auth.cpython-311.pyc +0 -0
  186. codex-1.4.1/codex/urls/api/__pycache__/browser.cpython-311.pyc +0 -0
  187. codex-1.4.1/codex/urls/api/__pycache__/reader.cpython-311.pyc +0 -0
  188. codex-1.4.1/codex/urls/api/__pycache__/root.cpython-311.pyc +0 -0
  189. codex-1.4.1/codex/urls/api/__pycache__/v3.cpython-311.pyc +0 -0
  190. codex-1.4.1/codex/urls/converters.py +8 -0
  191. codex-1.4.1/codex/urls/opds/__pycache__/__init__.cpython-311.pyc +0 -0
  192. codex-1.4.1/codex/urls/opds/__pycache__/authentication.cpython-311.pyc +0 -0
  193. codex-1.4.1/codex/urls/opds/__pycache__/binary.cpython-311.pyc +0 -0
  194. codex-1.4.1/codex/urls/opds/__pycache__/root.cpython-311.pyc +0 -0
  195. codex-1.4.1/codex/urls/opds/__pycache__/v1.cpython-311.pyc +0 -0
  196. codex-1.4.1/codex/urls/opds/__pycache__/v2.cpython-311.pyc +0 -0
  197. codex-1.4.1/codex/urls/opds/authentication.py +18 -0
  198. codex-1.4.1/codex/urls/opds/root.py +23 -0
  199. codex-1.4.1/codex/urls/opds/v1.py +30 -0
  200. codex-1.4.1/codex/urls/opds/v2.py +20 -0
  201. codex-1.4.1/codex/views/__pycache__/__init__.cpython-311.pyc +0 -0
  202. codex-1.4.1/codex/views/__pycache__/auth.cpython-311.pyc +0 -0
  203. codex-1.4.1/codex/views/__pycache__/bookmark.cpython-311.pyc +0 -0
  204. codex-1.4.1/codex/views/__pycache__/cover.cpython-311.pyc +0 -0
  205. codex-1.4.1/codex/views/__pycache__/download.cpython-311.pyc +0 -0
  206. codex-1.4.1/codex/views/__pycache__/frontend.cpython-311.pyc +0 -0
  207. codex-1.4.1/codex/views/__pycache__/mixins.cpython-311.pyc +0 -0
  208. codex-1.4.1/codex/views/__pycache__/pwa.cpython-311.pyc +0 -0
  209. codex-1.4.1/codex/views/__pycache__/session.cpython-311.pyc +0 -0
  210. codex-1.4.1/codex/views/__pycache__/template.cpython-311.pyc +0 -0
  211. codex-1.4.1/codex/views/__pycache__/version.cpython-311.pyc +0 -0
  212. codex-1.4.1/codex/views/admin/__pycache__/__init__.cpython-311.pyc +0 -0
  213. codex-1.4.1/codex/views/admin/__pycache__/api_key.cpython-311.pyc +0 -0
  214. codex-1.4.1/codex/views/admin/__pycache__/flag.cpython-311.pyc +0 -0
  215. codex-1.4.1/codex/views/admin/__pycache__/group.cpython-311.pyc +0 -0
  216. codex-1.4.1/codex/views/admin/__pycache__/library.cpython-311.pyc +0 -0
  217. codex-1.4.1/codex/views/admin/__pycache__/stats.cpython-311.pyc +0 -0
  218. codex-1.4.1/codex/views/admin/__pycache__/tasks.cpython-311.pyc +0 -0
  219. codex-1.4.1/codex/views/admin/__pycache__/user.cpython-311.pyc +0 -0
  220. codex-1.4.1/codex/views/bookmark.py +150 -0
  221. codex-1.4.1/codex/views/browser/__pycache__/__init__.cpython-311.pyc +0 -0
  222. codex-1.4.1/codex/views/browser/__pycache__/base.cpython-311.pyc +0 -0
  223. codex-1.4.1/codex/views/browser/__pycache__/browser.cpython-311.pyc +0 -0
  224. codex-1.4.1/codex/views/browser/__pycache__/browser_annotations.cpython-311.pyc +0 -0
  225. codex-1.4.1/codex/views/browser/__pycache__/browser_order_by.cpython-311.pyc +0 -0
  226. codex-1.4.1/codex/views/browser/__pycache__/choices.cpython-311.pyc +0 -0
  227. codex-1.4.1/codex/views/browser/__pycache__/metadata.cpython-311.pyc +0 -0
  228. codex-1.4.1/codex/views/browser/__pycache__/session.cpython-311.pyc +0 -0
  229. codex-1.4.1/codex/views/browser/base.py +109 -0
  230. codex-1.4.1/codex/views/browser/browser.py +548 -0
  231. codex-1.4.1/codex/views/browser/browser_annotations.py +277 -0
  232. codex-1.4.1/codex/views/browser/browser_order_by.py +97 -0
  233. codex-1.4.1/codex/views/browser/choices.py +211 -0
  234. codex-1.4.1/codex/views/browser/filters/__pycache__/__init__.cpython-311.pyc +0 -0
  235. codex-1.4.1/codex/views/browser/filters/__pycache__/bookmark.cpython-311.pyc +0 -0
  236. codex-1.4.1/codex/views/browser/filters/__pycache__/field.cpython-311.pyc +0 -0
  237. codex-1.4.1/codex/views/browser/filters/__pycache__/group.cpython-311.pyc +0 -0
  238. codex-1.4.1/codex/views/browser/filters/__pycache__/search.cpython-311.pyc +0 -0
  239. codex-1.4.1/codex/views/browser/filters/bookmark.py +50 -0
  240. codex-1.4.1/codex/views/browser/filters/field.py +40 -0
  241. codex-1.4.1/codex/views/browser/filters/group.py +26 -0
  242. codex-1.4.1/codex/views/browser/filters/search.py +51 -0
  243. codex-1.4.1/codex/views/browser/metadata.py +314 -0
  244. codex-1.4.1/codex/views/download.py +45 -0
  245. codex-1.4.1/codex/views/frontend.py +19 -0
  246. codex-1.4.1/codex/views/mixins.py +48 -0
  247. codex-1.4.1/codex/views/opds/__pycache__/__init__.cpython-311.pyc +0 -0
  248. codex-1.4.1/codex/views/opds/__pycache__/authentication_v1.cpython-311.pyc +0 -0
  249. codex-1.4.1/codex/views/opds/__pycache__/binary.cpython-311.pyc +0 -0
  250. codex-1.4.1/codex/views/opds/__pycache__/const.cpython-311.pyc +0 -0
  251. codex-1.4.1/codex/views/opds/__pycache__/util.cpython-311.pyc +0 -0
  252. codex-1.4.1/codex/views/opds/const.py +67 -0
  253. codex-1.4.1/codex/views/opds/util.py +102 -0
  254. codex-1.4.1/codex/views/opds/v1/__init__.py +1 -0
  255. codex-1.4.1/codex/views/opds/v1/__pycache__/__init__.cpython-311.pyc +0 -0
  256. codex-1.4.1/codex/views/opds/v1/__pycache__/data.cpython-311.pyc +0 -0
  257. codex-1.4.1/codex/views/opds/v1/__pycache__/facets.cpython-311.pyc +0 -0
  258. codex-1.4.1/codex/views/opds/v1/__pycache__/feed.cpython-311.pyc +0 -0
  259. codex-1.4.1/codex/views/opds/v1/__pycache__/links.cpython-311.pyc +0 -0
  260. codex-1.4.1/codex/views/opds/v1/__pycache__/opensearch_v1.cpython-311.pyc +0 -0
  261. codex-1.4.1/codex/views/opds/v1/data.py +21 -0
  262. codex-1.4.1/codex/views/opds/v1/entry/__init__.py +1 -0
  263. codex-1.4.1/codex/views/opds/v1/entry/__pycache__/__init__.cpython-311.pyc +0 -0
  264. codex-1.4.1/codex/views/opds/v1/entry/__pycache__/data.cpython-311.pyc +0 -0
  265. codex-1.4.1/codex/views/opds/v1/entry/__pycache__/entry.cpython-311.pyc +0 -0
  266. codex-1.4.1/codex/views/opds/v1/entry/__pycache__/links.cpython-311.pyc +0 -0
  267. codex-1.4.1/codex/views/opds/v1/entry/data.py +23 -0
  268. codex-1.4.1/codex/views/opds/v1/entry/entry.py +151 -0
  269. codex-1.4.1/codex/views/opds/v1/entry/links.py +135 -0
  270. codex-1.4.1/codex/views/opds/v1/facets.py +190 -0
  271. codex-1.4.1/codex/views/opds/v1/feed.py +199 -0
  272. codex-1.4.1/codex/views/opds/v1/links.py +198 -0
  273. codex-1.4.1/codex/views/opds/v1/opensearch_v1.py +17 -0
  274. codex-1.4.1/codex/views/opds/v2/__init__.py +1 -0
  275. codex-1.4.1/codex/views/opds/v2/__pycache__/__init__.cpython-311.pyc +0 -0
  276. codex-1.4.1/codex/views/opds/v2/__pycache__/const.cpython-311.pyc +0 -0
  277. codex-1.4.1/codex/views/opds/v2/__pycache__/feed.cpython-311.pyc +0 -0
  278. codex-1.4.1/codex/views/opds/v2/__pycache__/links.cpython-311.pyc +0 -0
  279. codex-1.4.1/codex/views/opds/v2/__pycache__/publications.cpython-311.pyc +0 -0
  280. codex-1.4.1/codex/views/opds/v2/__pycache__/top_links.cpython-311.pyc +0 -0
  281. codex-1.4.1/codex/views/opds/v2/const.py +118 -0
  282. codex-1.4.1/codex/views/opds/v2/feed.py +217 -0
  283. codex-1.4.1/codex/views/opds/v2/links.py +151 -0
  284. codex-1.4.1/codex/views/opds/v2/publications.py +194 -0
  285. codex-1.4.1/codex/views/opds/v2/top_links.py +90 -0
  286. codex-1.4.1/codex/views/reader/__pycache__/__init__.cpython-311.pyc +0 -0
  287. codex-1.4.1/codex/views/reader/__pycache__/page.cpython-311.pyc +0 -0
  288. codex-1.4.1/codex/views/reader/__pycache__/reader.cpython-311.pyc +0 -0
  289. codex-1.4.1/codex/views/reader/__pycache__/session.cpython-311.pyc +0 -0
  290. codex-1.4.1/codex/views/reader/page.py +89 -0
  291. codex-1.4.1/codex/views/reader/reader.py +262 -0
  292. codex-1.4.1/codex/views/session.py +153 -0
  293. codex-1.4.1/codex/websockets/__pycache__/__init__.cpython-311.pyc +0 -0
  294. codex-1.4.1/codex/websockets/__pycache__/consumers.cpython-311.pyc +0 -0
  295. codex-1.4.1/pyproject.toml +244 -0
  296. codex-1.4.0a1/PKG-INFO +0 -549
  297. codex-1.4.0a1/README.md +0 -486
  298. codex-1.4.0a1/codex/config_default.yaml +0 -12
  299. codex-1.4.0a1/codex/db_functions.py +0 -22
  300. codex-1.4.0a1/codex/integrity.py +0 -370
  301. codex-1.4.0a1/codex/librarian/__pycache__/__init__.cpython-311.pyc +0 -0
  302. codex-1.4.0a1/codex/librarian/__pycache__/mp_queue.cpython-311.pyc +0 -0
  303. codex-1.4.0a1/codex/librarian/__pycache__/tasks.cpython-311.pyc +0 -0
  304. codex-1.4.0a1/codex/librarian/covers/__pycache__/__init__.cpython-311.pyc +0 -0
  305. codex-1.4.0a1/codex/librarian/covers/__pycache__/create.cpython-311.pyc +0 -0
  306. codex-1.4.0a1/codex/librarian/covers/__pycache__/path.cpython-311.pyc +0 -0
  307. codex-1.4.0a1/codex/librarian/covers/__pycache__/status.cpython-311.pyc +0 -0
  308. codex-1.4.0a1/codex/librarian/covers/__pycache__/tasks.cpython-311.pyc +0 -0
  309. codex-1.4.0a1/codex/librarian/covers/create.py +0 -118
  310. codex-1.4.0a1/codex/librarian/importer/__pycache__/__init__.cpython-311.pyc +0 -0
  311. codex-1.4.0a1/codex/librarian/importer/__pycache__/status.cpython-311.pyc +0 -0
  312. codex-1.4.0a1/codex/librarian/importer/aggregate_metadata.py +0 -191
  313. codex-1.4.0a1/codex/librarian/importer/clean_metadata.py +0 -233
  314. codex-1.4.0a1/codex/librarian/importer/create_fks.py +0 -253
  315. codex-1.4.0a1/codex/librarian/importer/db_ops.py +0 -251
  316. codex-1.4.0a1/codex/librarian/importer/deleted.py +0 -52
  317. codex-1.4.0a1/codex/librarian/importer/failed_imports.py +0 -146
  318. codex-1.4.0a1/codex/librarian/importer/importerd.py +0 -272
  319. codex-1.4.0a1/codex/librarian/importer/link_comics.py +0 -211
  320. codex-1.4.0a1/codex/librarian/importer/moved.py +0 -141
  321. codex-1.4.0a1/codex/librarian/importer/query_fks.py +0 -271
  322. codex-1.4.0a1/codex/librarian/importer/tasks.py +0 -27
  323. codex-1.4.0a1/codex/librarian/janitor/__pycache__/__init__.cpython-311.pyc +0 -0
  324. codex-1.4.0a1/codex/librarian/janitor/__pycache__/status.cpython-311.pyc +0 -0
  325. codex-1.4.0a1/codex/librarian/janitor/__pycache__/tasks.cpython-311.pyc +0 -0
  326. codex-1.4.0a1/codex/librarian/janitor/cleanup.py +0 -98
  327. codex-1.4.0a1/codex/librarian/librariand.py +0 -195
  328. codex-1.4.0a1/codex/librarian/notifier/__pycache__/__init__.cpython-311.pyc +0 -0
  329. codex-1.4.0a1/codex/librarian/notifier/__pycache__/tasks.cpython-311.pyc +0 -0
  330. codex-1.4.0a1/codex/librarian/search/__pycache__/__init__.cpython-311.pyc +0 -0
  331. codex-1.4.0a1/codex/librarian/search/__pycache__/status.cpython-311.pyc +0 -0
  332. codex-1.4.0a1/codex/librarian/search/__pycache__/tasks.cpython-311.pyc +0 -0
  333. codex-1.4.0a1/codex/librarian/watchdog/__pycache__/__init__.cpython-311.pyc +0 -0
  334. codex-1.4.0a1/codex/librarian/watchdog/__pycache__/status.cpython-311.pyc +0 -0
  335. codex-1.4.0a1/codex/librarian/watchdog/__pycache__/tasks.cpython-311.pyc +0 -0
  336. codex-1.4.0a1/codex/librarian/watchdog/events.py +0 -91
  337. codex-1.4.0a1/codex/librarian/watchdog/observers.py +0 -163
  338. codex-1.4.0a1/codex/logger/__pycache__/__init__.cpython-311.pyc +0 -0
  339. codex-1.4.0a1/codex/logger/__pycache__/logging.cpython-311.pyc +0 -0
  340. codex-1.4.0a1/codex/logger/__pycache__/mp_queue.cpython-311.pyc +0 -0
  341. codex-1.4.0a1/codex/logger/loggerd.py +0 -103
  342. codex-1.4.0a1/codex/logger/logging.py +0 -45
  343. codex-1.4.0a1/codex/models.py +0 -655
  344. codex-1.4.0a1/codex/pdf.py +0 -115
  345. codex-1.4.0a1/codex/search/backend.py +0 -484
  346. codex-1.4.0a1/codex/search/indexes.py +0 -65
  347. codex-1.4.0a1/codex/serializers/__pycache__/__init__.cpython-311.pyc +0 -0
  348. codex-1.4.0a1/codex/serializers/__pycache__/admin.cpython-311.pyc +0 -0
  349. codex-1.4.0a1/codex/serializers/__pycache__/auth.cpython-311.pyc +0 -0
  350. codex-1.4.0a1/codex/serializers/__pycache__/browser.cpython-311.pyc +0 -0
  351. codex-1.4.0a1/codex/serializers/__pycache__/choices.cpython-311.pyc +0 -0
  352. codex-1.4.0a1/codex/serializers/__pycache__/metadata.cpython-311.pyc +0 -0
  353. codex-1.4.0a1/codex/serializers/__pycache__/mixins.cpython-311.pyc +0 -0
  354. codex-1.4.0a1/codex/serializers/__pycache__/models.cpython-311.pyc +0 -0
  355. codex-1.4.0a1/codex/serializers/__pycache__/reader.cpython-311.pyc +0 -0
  356. codex-1.4.0a1/codex/serializers/__pycache__/redirect.cpython-311.pyc +0 -0
  357. codex-1.4.0a1/codex/serializers/__pycache__/versions.cpython-311.pyc +0 -0
  358. codex-1.4.0a1/codex/serializers/browser.py +0 -256
  359. codex-1.4.0a1/codex/serializers/metadata.py +0 -14
  360. codex-1.4.0a1/codex/serializers/models.py +0 -329
  361. codex-1.4.0a1/codex/serializers/opds/__pycache__/__init__.cpython-311.pyc +0 -0
  362. codex-1.4.0a1/codex/serializers/opds/__pycache__/authentication.cpython-311.pyc +0 -0
  363. codex-1.4.0a1/codex/serializers/opds/__pycache__/v1.cpython-311.pyc +0 -0
  364. codex-1.4.0a1/codex/serializers/opds/__pycache__/v2.cpython-311.pyc +0 -0
  365. codex-1.4.0a1/codex/serializers/opds/v1.py +0 -69
  366. codex-1.4.0a1/codex/serializers/opds/v2.py +0 -182
  367. codex-1.4.0a1/codex/serializers/reader.py +0 -51
  368. codex-1.4.0a1/codex/settings/__pycache__/__init__.cpython-311.pyc +0 -0
  369. codex-1.4.0a1/codex/settings/__pycache__/hypercorn.cpython-311.pyc +0 -0
  370. codex-1.4.0a1/codex/settings/__pycache__/logging.cpython-311.pyc +0 -0
  371. codex-1.4.0a1/codex/settings/__pycache__/secret_key.cpython-311.pyc +0 -0
  372. codex-1.4.0a1/codex/settings/__pycache__/settings.cpython-311.pyc +0 -0
  373. codex-1.4.0a1/codex/settings/__pycache__/timezone.cpython-311.pyc +0 -0
  374. codex-1.4.0a1/codex/settings/__pycache__/whitenoise.cpython-311.pyc +0 -0
  375. codex-1.4.0a1/codex/settings/settings.py +0 -307
  376. codex-1.4.0a1/codex/signals/__pycache__/__init__.cpython-311.pyc +0 -0
  377. codex-1.4.0a1/codex/signals/__pycache__/django_signals.cpython-311.pyc +0 -0
  378. codex-1.4.0a1/codex/static_root/assets/admin-75c007ce.199fccf24c8d.js +0 -48
  379. codex-1.4.0a1/codex/static_root/assets/admin-75c007ce.199fccf24c8d.js.br +0 -0
  380. codex-1.4.0a1/codex/static_root/assets/admin-75c007ce.199fccf24c8d.js.gz +0 -0
  381. codex-1.4.0a1/codex/static_root/assets/admin-75c007ce.js +0 -48
  382. codex-1.4.0a1/codex/static_root/assets/admin-75c007ce.js.br +0 -0
  383. codex-1.4.0a1/codex/static_root/assets/admin-75c007ce.js.gz +0 -0
  384. codex-1.4.0a1/codex/static_root/assets/admin-848d48b1.5de8a0c45636.css +0 -1
  385. codex-1.4.0a1/codex/static_root/assets/admin-848d48b1.5de8a0c45636.css.br +0 -0
  386. codex-1.4.0a1/codex/static_root/assets/admin-848d48b1.5de8a0c45636.css.gz +0 -0
  387. codex-1.4.0a1/codex/static_root/assets/admin-848d48b1.css +0 -1
  388. codex-1.4.0a1/codex/static_root/assets/admin-848d48b1.css.br +0 -0
  389. codex-1.4.0a1/codex/static_root/assets/admin-848d48b1.css.gz +0 -0
  390. codex-1.4.0a1/codex/static_root/assets/admin-drawer-panel-a110c068.edf187333272.js +0 -1
  391. codex-1.4.0a1/codex/static_root/assets/admin-drawer-panel-a110c068.edf187333272.js.br +0 -0
  392. codex-1.4.0a1/codex/static_root/assets/admin-drawer-panel-a110c068.edf187333272.js.gz +0 -0
  393. codex-1.4.0a1/codex/static_root/assets/admin-drawer-panel-a110c068.js +0 -1
  394. codex-1.4.0a1/codex/static_root/assets/admin-drawer-panel-a110c068.js.br +0 -0
  395. codex-1.4.0a1/codex/static_root/assets/admin-drawer-panel-a110c068.js.gz +0 -0
  396. codex-1.4.0a1/codex/static_root/assets/admin-drawer-panel-cce8c0aa.2c0814fa2a9b.css +0 -1
  397. codex-1.4.0a1/codex/static_root/assets/admin-drawer-panel-cce8c0aa.2c0814fa2a9b.css.br +0 -2
  398. codex-1.4.0a1/codex/static_root/assets/admin-drawer-panel-cce8c0aa.2c0814fa2a9b.css.gz +0 -0
  399. codex-1.4.0a1/codex/static_root/assets/admin-drawer-panel-cce8c0aa.css +0 -1
  400. codex-1.4.0a1/codex/static_root/assets/admin-drawer-panel-cce8c0aa.css.br +0 -2
  401. codex-1.4.0a1/codex/static_root/assets/admin-drawer-panel-cce8c0aa.css.gz +0 -0
  402. codex-1.4.0a1/codex/static_root/assets/browser-2c2380fd.8b515af7a743.js +0 -1
  403. codex-1.4.0a1/codex/static_root/assets/browser-2c2380fd.8b515af7a743.js.br +0 -0
  404. codex-1.4.0a1/codex/static_root/assets/browser-2c2380fd.8b515af7a743.js.gz +0 -0
  405. codex-1.4.0a1/codex/static_root/assets/browser-2c2380fd.js +0 -1
  406. codex-1.4.0a1/codex/static_root/assets/browser-2c2380fd.js.br +0 -0
  407. codex-1.4.0a1/codex/static_root/assets/browser-2c2380fd.js.gz +0 -0
  408. codex-1.4.0a1/codex/static_root/assets/browser-7325db61.css +0 -1
  409. codex-1.4.0a1/codex/static_root/assets/browser-7325db61.css.br +0 -0
  410. codex-1.4.0a1/codex/static_root/assets/browser-7325db61.css.gz +0 -0
  411. codex-1.4.0a1/codex/static_root/assets/browser-7325db61.ed2cfbf8e8ee.css +0 -1
  412. codex-1.4.0a1/codex/static_root/assets/browser-7325db61.ed2cfbf8e8ee.css.br +0 -0
  413. codex-1.4.0a1/codex/static_root/assets/browser-7325db61.ed2cfbf8e8ee.css.gz +0 -0
  414. codex-1.4.0a1/codex/static_root/assets/http-error-402decbe.9ea8de1df13f.js +0 -1
  415. codex-1.4.0a1/codex/static_root/assets/http-error-402decbe.9ea8de1df13f.js.br +0 -0
  416. codex-1.4.0a1/codex/static_root/assets/http-error-402decbe.9ea8de1df13f.js.gz +0 -0
  417. codex-1.4.0a1/codex/static_root/assets/http-error-402decbe.js +0 -1
  418. codex-1.4.0a1/codex/static_root/assets/http-error-402decbe.js.br +0 -0
  419. codex-1.4.0a1/codex/static_root/assets/http-error-402decbe.js.gz +0 -0
  420. codex-1.4.0a1/codex/static_root/assets/main-a7f327e9.6641fe833335.js +0 -1
  421. codex-1.4.0a1/codex/static_root/assets/main-a7f327e9.6641fe833335.js.br +0 -0
  422. codex-1.4.0a1/codex/static_root/assets/main-a7f327e9.6641fe833335.js.gz +0 -0
  423. codex-1.4.0a1/codex/static_root/assets/main-a7f327e9.js +0 -1
  424. codex-1.4.0a1/codex/static_root/assets/main-a7f327e9.js.br +0 -0
  425. codex-1.4.0a1/codex/static_root/assets/main-a7f327e9.js.gz +0 -0
  426. codex-1.4.0a1/codex/static_root/assets/metadata-dialog-785c4cfc.694a251cda37.css +0 -1
  427. codex-1.4.0a1/codex/static_root/assets/metadata-dialog-785c4cfc.694a251cda37.css.br +0 -0
  428. codex-1.4.0a1/codex/static_root/assets/metadata-dialog-785c4cfc.694a251cda37.css.gz +0 -0
  429. codex-1.4.0a1/codex/static_root/assets/metadata-dialog-785c4cfc.css +0 -1
  430. codex-1.4.0a1/codex/static_root/assets/metadata-dialog-785c4cfc.css.br +0 -0
  431. codex-1.4.0a1/codex/static_root/assets/metadata-dialog-785c4cfc.css.gz +0 -0
  432. codex-1.4.0a1/codex/static_root/assets/metadata-dialog-8a0bd8e1.c213b08d582f.js +0 -1
  433. codex-1.4.0a1/codex/static_root/assets/metadata-dialog-8a0bd8e1.c213b08d582f.js.br +0 -0
  434. codex-1.4.0a1/codex/static_root/assets/metadata-dialog-8a0bd8e1.c213b08d582f.js.gz +0 -0
  435. codex-1.4.0a1/codex/static_root/assets/metadata-dialog-8a0bd8e1.js +0 -1
  436. codex-1.4.0a1/codex/static_root/assets/metadata-dialog-8a0bd8e1.js.br +0 -0
  437. codex-1.4.0a1/codex/static_root/assets/metadata-dialog-8a0bd8e1.js.gz +0 -0
  438. codex-1.4.0a1/codex/static_root/assets/page-pdf-c603e996.ab2d147c9ae1.js +0 -54
  439. codex-1.4.0a1/codex/static_root/assets/page-pdf-c603e996.ab2d147c9ae1.js.br +0 -0
  440. codex-1.4.0a1/codex/static_root/assets/page-pdf-c603e996.ab2d147c9ae1.js.gz +0 -0
  441. codex-1.4.0a1/codex/static_root/assets/page-pdf-c603e996.js +0 -54
  442. codex-1.4.0a1/codex/static_root/assets/page-pdf-c603e996.js.br +0 -0
  443. codex-1.4.0a1/codex/static_root/assets/page-pdf-c603e996.js.gz +0 -0
  444. codex-1.4.0a1/codex/static_root/assets/reader-c2965a5f.b011260169f7.js +0 -1
  445. codex-1.4.0a1/codex/static_root/assets/reader-c2965a5f.b011260169f7.js.br +0 -0
  446. codex-1.4.0a1/codex/static_root/assets/reader-c2965a5f.b011260169f7.js.gz +0 -0
  447. codex-1.4.0a1/codex/static_root/assets/reader-c2965a5f.js +0 -1
  448. codex-1.4.0a1/codex/static_root/assets/reader-c2965a5f.js.br +0 -0
  449. codex-1.4.0a1/codex/static_root/assets/reader-c2965a5f.js.gz +0 -0
  450. codex-1.4.0a1/codex/static_root/assets/reader-d8534888.2821de925986.css +0 -1
  451. codex-1.4.0a1/codex/static_root/assets/reader-d8534888.2821de925986.css.br +0 -0
  452. codex-1.4.0a1/codex/static_root/assets/reader-d8534888.2821de925986.css.gz +0 -0
  453. codex-1.4.0a1/codex/static_root/assets/reader-d8534888.css +0 -1
  454. codex-1.4.0a1/codex/static_root/assets/reader-d8534888.css.br +0 -0
  455. codex-1.4.0a1/codex/static_root/assets/reader-d8534888.css.gz +0 -0
  456. codex-1.4.0a1/codex/static_root/js/choices.6bfc2a3d293f.json +0 -1
  457. codex-1.4.0a1/codex/static_root/js/choices.6bfc2a3d293f.json.br +0 -0
  458. codex-1.4.0a1/codex/static_root/js/choices.6bfc2a3d293f.json.gz +0 -0
  459. codex-1.4.0a1/codex/static_root/js/choices.json +0 -1
  460. codex-1.4.0a1/codex/static_root/js/choices.json.br +0 -0
  461. codex-1.4.0a1/codex/static_root/js/choices.json.gz +0 -0
  462. codex-1.4.0a1/codex/static_root/manifest.c0e270b2e6b6.json +0 -148
  463. codex-1.4.0a1/codex/static_root/manifest.c0e270b2e6b6.json.br +0 -0
  464. codex-1.4.0a1/codex/static_root/manifest.c0e270b2e6b6.json.gz +0 -0
  465. codex-1.4.0a1/codex/static_root/manifest.json +0 -148
  466. codex-1.4.0a1/codex/static_root/manifest.json.br +0 -0
  467. codex-1.4.0a1/codex/static_root/manifest.json.gz +0 -0
  468. codex-1.4.0a1/codex/static_root/staticfiles.json +0 -1
  469. codex-1.4.0a1/codex/templates/headers-script-globals.html +0 -13
  470. codex-1.4.0a1/codex/templates/opds/index.xml +0 -116
  471. codex-1.4.0a1/codex/templates/opds/opensearch.xml +0 -10
  472. codex-1.4.0a1/codex/templates/search/indexes/codex/comic_text.txt +0 -38
  473. codex-1.4.0a1/codex/urls/__pycache__/__init__.cpython-311.pyc +0 -0
  474. codex-1.4.0a1/codex/urls/__pycache__/app.cpython-311.pyc +0 -0
  475. codex-1.4.0a1/codex/urls/__pycache__/converters.cpython-311.pyc +0 -0
  476. codex-1.4.0a1/codex/urls/__pycache__/pwa.cpython-311.pyc +0 -0
  477. codex-1.4.0a1/codex/urls/__pycache__/root.cpython-311.pyc +0 -0
  478. codex-1.4.0a1/codex/urls/api/__pycache__/__init__.cpython-311.pyc +0 -0
  479. codex-1.4.0a1/codex/urls/api/__pycache__/admin.cpython-311.pyc +0 -0
  480. codex-1.4.0a1/codex/urls/api/__pycache__/auth.cpython-311.pyc +0 -0
  481. codex-1.4.0a1/codex/urls/api/__pycache__/browser.cpython-311.pyc +0 -0
  482. codex-1.4.0a1/codex/urls/api/__pycache__/reader.cpython-311.pyc +0 -0
  483. codex-1.4.0a1/codex/urls/api/__pycache__/root.cpython-311.pyc +0 -0
  484. codex-1.4.0a1/codex/urls/api/__pycache__/v3.cpython-311.pyc +0 -0
  485. codex-1.4.0a1/codex/urls/converters.py +0 -8
  486. codex-1.4.0a1/codex/urls/opds/__pycache__/__init__.cpython-311.pyc +0 -0
  487. codex-1.4.0a1/codex/urls/opds/__pycache__/authentication.cpython-311.pyc +0 -0
  488. codex-1.4.0a1/codex/urls/opds/__pycache__/binary.cpython-311.pyc +0 -0
  489. codex-1.4.0a1/codex/urls/opds/__pycache__/opensearch.cpython-311.pyc +0 -0
  490. codex-1.4.0a1/codex/urls/opds/__pycache__/root.cpython-311.pyc +0 -0
  491. codex-1.4.0a1/codex/urls/opds/__pycache__/v1.cpython-311.pyc +0 -0
  492. codex-1.4.0a1/codex/urls/opds/__pycache__/v2.cpython-311.pyc +0 -0
  493. codex-1.4.0a1/codex/urls/opds/authentication.py +0 -18
  494. codex-1.4.0a1/codex/urls/opds/opensearch.py +0 -18
  495. codex-1.4.0a1/codex/urls/opds/root.py +0 -27
  496. codex-1.4.0a1/codex/urls/opds/v1.py +0 -23
  497. codex-1.4.0a1/codex/urls/opds/v2.py +0 -20
  498. codex-1.4.0a1/codex/views/__pycache__/__init__.cpython-311.pyc +0 -0
  499. codex-1.4.0a1/codex/views/__pycache__/auth.cpython-311.pyc +0 -0
  500. codex-1.4.0a1/codex/views/__pycache__/bookmark.cpython-311.pyc +0 -0
  501. codex-1.4.0a1/codex/views/__pycache__/cover.cpython-311.pyc +0 -0
  502. codex-1.4.0a1/codex/views/__pycache__/download.cpython-311.pyc +0 -0
  503. codex-1.4.0a1/codex/views/__pycache__/frontend.cpython-311.pyc +0 -0
  504. codex-1.4.0a1/codex/views/__pycache__/mixins.cpython-311.pyc +0 -0
  505. codex-1.4.0a1/codex/views/__pycache__/pwa.cpython-311.pyc +0 -0
  506. codex-1.4.0a1/codex/views/__pycache__/session.cpython-311.pyc +0 -0
  507. codex-1.4.0a1/codex/views/__pycache__/template.cpython-311.pyc +0 -0
  508. codex-1.4.0a1/codex/views/__pycache__/version.cpython-311.pyc +0 -0
  509. codex-1.4.0a1/codex/views/admin/__pycache__/__init__.cpython-311.pyc +0 -0
  510. codex-1.4.0a1/codex/views/admin/__pycache__/api_key.cpython-311.pyc +0 -0
  511. codex-1.4.0a1/codex/views/admin/__pycache__/flag.cpython-311.pyc +0 -0
  512. codex-1.4.0a1/codex/views/admin/__pycache__/group.cpython-311.pyc +0 -0
  513. codex-1.4.0a1/codex/views/admin/__pycache__/library.cpython-311.pyc +0 -0
  514. codex-1.4.0a1/codex/views/admin/__pycache__/stats.cpython-311.pyc +0 -0
  515. codex-1.4.0a1/codex/views/admin/__pycache__/tasks.cpython-311.pyc +0 -0
  516. codex-1.4.0a1/codex/views/admin/__pycache__/user.cpython-311.pyc +0 -0
  517. codex-1.4.0a1/codex/views/bookmark.py +0 -150
  518. codex-1.4.0a1/codex/views/browser/__pycache__/__init__.cpython-311.pyc +0 -0
  519. codex-1.4.0a1/codex/views/browser/__pycache__/base.cpython-311.pyc +0 -0
  520. codex-1.4.0a1/codex/views/browser/__pycache__/browser.cpython-311.pyc +0 -0
  521. codex-1.4.0a1/codex/views/browser/__pycache__/browser_annotations.cpython-311.pyc +0 -0
  522. codex-1.4.0a1/codex/views/browser/__pycache__/browser_order_by.cpython-311.pyc +0 -0
  523. codex-1.4.0a1/codex/views/browser/__pycache__/choices.cpython-311.pyc +0 -0
  524. codex-1.4.0a1/codex/views/browser/__pycache__/metadata.cpython-311.pyc +0 -0
  525. codex-1.4.0a1/codex/views/browser/__pycache__/session.cpython-311.pyc +0 -0
  526. codex-1.4.0a1/codex/views/browser/base.py +0 -93
  527. codex-1.4.0a1/codex/views/browser/browser.py +0 -538
  528. codex-1.4.0a1/codex/views/browser/browser_annotations.py +0 -168
  529. codex-1.4.0a1/codex/views/browser/browser_order_by.py +0 -153
  530. codex-1.4.0a1/codex/views/browser/choices.py +0 -174
  531. codex-1.4.0a1/codex/views/browser/filters/__pycache__/__init__.cpython-311.pyc +0 -0
  532. codex-1.4.0a1/codex/views/browser/filters/__pycache__/bookmark.cpython-311.pyc +0 -0
  533. codex-1.4.0a1/codex/views/browser/filters/__pycache__/field.cpython-311.pyc +0 -0
  534. codex-1.4.0a1/codex/views/browser/filters/__pycache__/group.cpython-311.pyc +0 -0
  535. codex-1.4.0a1/codex/views/browser/filters/__pycache__/search.cpython-311.pyc +0 -0
  536. codex-1.4.0a1/codex/views/browser/filters/bookmark.py +0 -53
  537. codex-1.4.0a1/codex/views/browser/filters/field.py +0 -37
  538. codex-1.4.0a1/codex/views/browser/filters/group.py +0 -41
  539. codex-1.4.0a1/codex/views/browser/filters/search.py +0 -56
  540. codex-1.4.0a1/codex/views/browser/metadata.py +0 -289
  541. codex-1.4.0a1/codex/views/download.py +0 -45
  542. codex-1.4.0a1/codex/views/frontend.py +0 -20
  543. codex-1.4.0a1/codex/views/mixins.py +0 -35
  544. codex-1.4.0a1/codex/views/opds/__pycache__/__init__.cpython-311.pyc +0 -0
  545. codex-1.4.0a1/codex/views/opds/__pycache__/authentication_v1.cpython-311.pyc +0 -0
  546. codex-1.4.0a1/codex/views/opds/__pycache__/binary.cpython-311.pyc +0 -0
  547. codex-1.4.0a1/codex/views/opds/__pycache__/const.cpython-311.pyc +0 -0
  548. codex-1.4.0a1/codex/views/opds/__pycache__/opensearch.cpython-311.pyc +0 -0
  549. codex-1.4.0a1/codex/views/opds/__pycache__/util.cpython-311.pyc +0 -0
  550. codex-1.4.0a1/codex/views/opds/const.py +0 -60
  551. codex-1.4.0a1/codex/views/opds/opensearch.py +0 -17
  552. codex-1.4.0a1/codex/views/opds/util.py +0 -66
  553. codex-1.4.0a1/codex/views/opds/v1/__init__.py +0 -1
  554. codex-1.4.0a1/codex/views/opds/v1/__pycache__/__init__.cpython-311.pyc +0 -0
  555. codex-1.4.0a1/codex/views/opds/v1/__pycache__/browser.cpython-311.pyc +0 -0
  556. codex-1.4.0a1/codex/views/opds/v1/__pycache__/entry.cpython-311.pyc +0 -0
  557. codex-1.4.0a1/codex/views/opds/v1/__pycache__/start.cpython-311.pyc +0 -0
  558. codex-1.4.0a1/codex/views/opds/v1/__pycache__/util.cpython-311.pyc +0 -0
  559. codex-1.4.0a1/codex/views/opds/v1/browser.py +0 -346
  560. codex-1.4.0a1/codex/views/opds/v1/entry.py +0 -278
  561. codex-1.4.0a1/codex/views/opds/v1/start.py +0 -28
  562. codex-1.4.0a1/codex/views/opds/v1/util.py +0 -162
  563. codex-1.4.0a1/codex/views/opds/v2/__init__.py +0 -1
  564. codex-1.4.0a1/codex/views/opds/v2/__pycache__/__init__.cpython-311.pyc +0 -0
  565. codex-1.4.0a1/codex/views/opds/v2/__pycache__/const.cpython-311.pyc +0 -0
  566. codex-1.4.0a1/codex/views/opds/v2/__pycache__/feed.cpython-311.pyc +0 -0
  567. codex-1.4.0a1/codex/views/opds/v2/__pycache__/links.cpython-311.pyc +0 -0
  568. codex-1.4.0a1/codex/views/opds/v2/__pycache__/publications.cpython-311.pyc +0 -0
  569. codex-1.4.0a1/codex/views/opds/v2/__pycache__/start.cpython-311.pyc +0 -0
  570. codex-1.4.0a1/codex/views/opds/v2/__pycache__/top_links.cpython-311.pyc +0 -0
  571. codex-1.4.0a1/codex/views/opds/v2/const.py +0 -110
  572. codex-1.4.0a1/codex/views/opds/v2/feed.py +0 -156
  573. codex-1.4.0a1/codex/views/opds/v2/links.py +0 -151
  574. codex-1.4.0a1/codex/views/opds/v2/publications.py +0 -194
  575. codex-1.4.0a1/codex/views/opds/v2/start.py +0 -28
  576. codex-1.4.0a1/codex/views/opds/v2/top_links.py +0 -90
  577. codex-1.4.0a1/codex/views/reader/__pycache__/__init__.cpython-311.pyc +0 -0
  578. codex-1.4.0a1/codex/views/reader/__pycache__/page.cpython-311.pyc +0 -0
  579. codex-1.4.0a1/codex/views/reader/__pycache__/reader.cpython-311.pyc +0 -0
  580. codex-1.4.0a1/codex/views/reader/__pycache__/session.cpython-311.pyc +0 -0
  581. codex-1.4.0a1/codex/views/reader/page.py +0 -90
  582. codex-1.4.0a1/codex/views/reader/reader.py +0 -132
  583. codex-1.4.0a1/codex/views/session.py +0 -152
  584. codex-1.4.0a1/codex/websockets/__pycache__/__init__.cpython-311.pyc +0 -0
  585. codex-1.4.0a1/codex/websockets/__pycache__/consumers.cpython-311.pyc +0 -0
  586. codex-1.4.0a1/pyproject.toml +0 -247
  587. {codex-1.4.0a1 โ†’ codex-1.4.1}/LICENSE +0 -0
  588. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/__init__.py +0 -0
  589. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/applications/__init__.py +0 -0
  590. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/applications/lifespan.py +0 -0
  591. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/applications/websocket.py +0 -0
  592. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/asgi.py +0 -0
  593. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/comic_field_names.py +0 -0
  594. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/exceptions.py +0 -0
  595. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/img/missing-cover.webp +0 -0
  596. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/README.md +0 -0
  597. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/__init__.py +0 -0
  598. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/covers/__init__.py +0 -0
  599. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/covers/coverd.py +0 -0
  600. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/covers/path.py +0 -0
  601. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/covers/purge.py +0 -0
  602. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/covers/status.py +0 -0
  603. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/covers/tasks.py +0 -0
  604. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/delayed_taskd.py +0 -0
  605. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/importer/__init__.py +0 -0
  606. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/importer/create_comics.py +0 -0
  607. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/importer/status.py +0 -0
  608. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/importer/update_comics.py +0 -0
  609. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/janitor/__init__.py +0 -0
  610. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/janitor/failed_imports.py +0 -0
  611. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/janitor/janitor.py +0 -0
  612. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/janitor/janitord.py +0 -0
  613. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/janitor/status.py +0 -0
  614. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/janitor/tasks.py +0 -0
  615. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/janitor/update.py +0 -0
  616. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/janitor/vacuum.py +0 -0
  617. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/mp_queue.py +0 -0
  618. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/notifier/__init__.py +0 -0
  619. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/notifier/notifierd.py +0 -0
  620. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/notifier/tasks.py +0 -0
  621. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/search/__init__.py +0 -0
  622. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/search/merge.py +0 -0
  623. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/search/remove.py +0 -0
  624. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/search/searchd.py +0 -0
  625. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/search/status.py +0 -0
  626. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/search/tasks.py +0 -0
  627. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/search/update.py +0 -0
  628. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/search/version.py +0 -0
  629. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/tasks.py +0 -0
  630. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/watchdog/README.md +0 -0
  631. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/watchdog/__init__.py +0 -0
  632. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/watchdog/db_snapshot.py +0 -0
  633. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/watchdog/dir_snapshot_diff.py +0 -0
  634. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/watchdog/emitter.py +0 -0
  635. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/watchdog/event_batcherd.py +0 -0
  636. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/watchdog/status.py +0 -0
  637. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/librarian/watchdog/tasks.py +0 -0
  638. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/logger/__init__.py +0 -0
  639. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/logger/mp_queue.py +0 -0
  640. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/logger_base.py +0 -0
  641. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/memory.py +0 -0
  642. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/middleware.py +0 -0
  643. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/migrations/0001_init.py +0 -0
  644. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/migrations/0002_auto_20200826_0622.py +0 -0
  645. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/migrations/0003_auto_20200831_2033.py +0 -0
  646. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/migrations/0004_failedimport.py +0 -0
  647. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/migrations/0005_auto_20200918_0146.py +0 -0
  648. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/migrations/0006_update_default_names_and_remove_duplicate_comics.py +0 -0
  649. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/migrations/0007_auto_20211210_1710.py +0 -0
  650. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/migrations/0008_alter_comic_created_at_alter_comic_format_and_more.py +0 -0
  651. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/migrations/0009_alter_comic_parent_folder.py +0 -0
  652. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/migrations/0010_haystack.py +0 -0
  653. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/migrations/0011_library_groups_and_metadata_changes.py +0 -0
  654. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/migrations/0012_rename_description_comic_comments.py +0 -0
  655. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/migrations/0013_int_issue_count_longer_charfields.py +0 -0
  656. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/migrations/0014_pdf_issue_suffix_remove_cover_image_sort_name.py +0 -0
  657. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/migrations/0015_link_comics_to_top_level_folders.py +0 -0
  658. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/migrations/0016_remove_comic_cover_path_librarianstatus.py +0 -0
  659. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/migrations/0017_alter_timestamp_options_alter_adminflag_name_and_more.py +0 -0
  660. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/migrations/0018_rename_userbookmark_bookmark.py +0 -0
  661. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/migrations/0019_delete_queuejob.py +0 -0
  662. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/migrations/0020_remove_search_tables.py +0 -0
  663. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/migrations/0021_bookmark_fit_to_choices_read_in_reverse.py +0 -0
  664. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/migrations/0022_bookmark_vertical_useractive_null_statuses.py +0 -0
  665. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/migrations/0023_rename_credit_creator_and_more.py +0 -0
  666. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/migrations/__init__.py +0 -0
  667. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/permissions.py +0 -0
  668. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/registration.py +0 -0
  669. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/run.py +0 -0
  670. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/search/__init__.py +0 -0
  671. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/search/engine.py +0 -0
  672. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/search/writing.py +0 -0
  673. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/serializers/README.md +0 -0
  674. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/serializers/__init__.py +0 -0
  675. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/serializers/admin.py +0 -0
  676. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/serializers/auth.py +0 -0
  677. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/serializers/choices.py +0 -0
  678. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/serializers/homepage.py +0 -0
  679. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/serializers/mixins.py +0 -0
  680. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/serializers/opds/__init__.py +0 -0
  681. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/serializers/opds/authentication.py +0 -0
  682. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/serializers/opds/v2_unused.py +0 -0
  683. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/serializers/redirect.py +0 -0
  684. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/serializers/versions.py +0 -0
  685. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/settings/README.md +0 -0
  686. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/settings/__init__.py +0 -0
  687. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/settings/hypercorn.py +0 -0
  688. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/settings/hypercorn.toml.default +0 -0
  689. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/settings/logging.py +0 -0
  690. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/settings/secret_key.py +0 -0
  691. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/settings/timezone.py +0 -0
  692. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/settings/whitenoise.py +0 -0
  693. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/signals/__init__.py +0 -0
  694. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/signals/django_signals.py +0 -0
  695. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/signals/os_signals.py +0 -0
  696. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/startup.py +0 -0
  697. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/admin/css/codex-admin-dark.4d45b3679935.css +0 -0
  698. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/admin/css/codex-admin-dark.4d45b3679935.css.br +0 -0
  699. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/admin/css/codex-admin-dark.4d45b3679935.css.gz +0 -0
  700. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/admin/css/codex-admin-dark.css +0 -0
  701. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/admin/css/codex-admin-dark.css.br +0 -0
  702. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/admin/css/codex-admin-dark.css.gz +0 -0
  703. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/admin/css/codex-admin.7ad6b144bf84.css +0 -0
  704. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/admin/css/codex-admin.7ad6b144bf84.css.br +0 -0
  705. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/admin/css/codex-admin.7ad6b144bf84.css.gz +0 -0
  706. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/admin/css/codex-admin.css +0 -0
  707. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/admin/css/codex-admin.css.br +0 -0
  708. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/admin/css/codex-admin.css.gz +0 -0
  709. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/admin/css/queue-job.bee4dbac67f1.css +0 -0
  710. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/admin/css/queue-job.bee4dbac67f1.css.br +0 -0
  711. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/admin/css/queue-job.bee4dbac67f1.css.gz +0 -0
  712. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/admin/css/queue-job.css +0 -0
  713. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/admin/css/queue-job.css.br +0 -0
  714. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/admin/css/queue-job.css.gz +0 -0
  715. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/admin/js/queue-job.628c5e325415.js +0 -0
  716. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/admin/js/queue-job.628c5e325415.js.br +0 -0
  717. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/admin/js/queue-job.628c5e325415.js.gz +0 -0
  718. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/admin/js/queue-job.js +0 -0
  719. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/admin/js/queue-job.js.br +0 -0
  720. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/admin/js/queue-job.js.gz +0 -0
  721. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/http-error-40ce966f.1c7337ad6e1d.css +0 -0
  722. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/http-error-40ce966f.1c7337ad6e1d.css.br +0 -0
  723. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/http-error-40ce966f.1c7337ad6e1d.css.gz +0 -0
  724. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/http-error-40ce966f.css +0 -0
  725. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/http-error-40ce966f.css.br +0 -0
  726. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/http-error-40ce966f.css.gz +0 -0
  727. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/main-0898f4bb.181e0145c642.css +0 -0
  728. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/main-0898f4bb.181e0145c642.css.br +0 -0
  729. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/main-0898f4bb.181e0145c642.css.gz +0 -0
  730. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/main-0898f4bb.css +0 -0
  731. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/main-0898f4bb.css.br +0 -0
  732. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/main-0898f4bb.css.gz +0 -0
  733. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/materialdesignicons-webfont-67d24abe.5ce4e52cebe3.eot +0 -0
  734. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/materialdesignicons-webfont-67d24abe.5ce4e52cebe3.eot.br +0 -0
  735. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/materialdesignicons-webfont-67d24abe.5ce4e52cebe3.eot.gz +0 -0
  736. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/materialdesignicons-webfont-67d24abe.eot +0 -0
  737. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/materialdesignicons-webfont-67d24abe.eot.br +0 -0
  738. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/materialdesignicons-webfont-67d24abe.eot.gz +0 -0
  739. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/materialdesignicons-webfont-80bb28b3.20b6ebf31bfa.woff +0 -0
  740. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/materialdesignicons-webfont-80bb28b3.woff +0 -0
  741. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/materialdesignicons-webfont-a58ecb54.d10ac4ee5ebe.ttf +0 -0
  742. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/materialdesignicons-webfont-a58ecb54.d10ac4ee5ebe.ttf.br +0 -0
  743. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/materialdesignicons-webfont-a58ecb54.d10ac4ee5ebe.ttf.gz +0 -0
  744. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/materialdesignicons-webfont-a58ecb54.ttf +0 -0
  745. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/materialdesignicons-webfont-a58ecb54.ttf.br +0 -0
  746. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/materialdesignicons-webfont-a58ecb54.ttf.gz +0 -0
  747. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/materialdesignicons-webfont-c1c004a9.a295367092b3.woff2 +0 -0
  748. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/materialdesignicons-webfont-c1c004a9.woff2 +0 -0
  749. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/page-pdf-2d7d4f5d.963cecd9ec4e.css +0 -0
  750. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/page-pdf-2d7d4f5d.963cecd9ec4e.css.br +0 -0
  751. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/page-pdf-2d7d4f5d.963cecd9ec4e.css.gz +0 -0
  752. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/page-pdf-2d7d4f5d.css +0 -0
  753. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/page-pdf-2d7d4f5d.css.br +0 -0
  754. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/assets/page-pdf-2d7d4f5d.css.gz +0 -0
  755. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/img/logo-32.dbb98f6dfde4.webp +0 -0
  756. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/img/logo-32.webp +0 -0
  757. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/img/logo-maskable-180.201cbde62d55.webp +0 -0
  758. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/img/logo-maskable-180.webp +0 -0
  759. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/img/logo-maskable.d618c2d7943f.svg +0 -0
  760. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/img/logo-maskable.d618c2d7943f.svg.br +0 -0
  761. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/img/logo-maskable.d618c2d7943f.svg.gz +0 -0
  762. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/img/logo-maskable.svg +0 -0
  763. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/img/logo-maskable.svg.br +0 -0
  764. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/img/logo-maskable.svg.gz +0 -0
  765. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/img/logo.3fb129bfbd92.svg +0 -0
  766. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/img/logo.3fb129bfbd92.svg.br +0 -0
  767. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/img/logo.3fb129bfbd92.svg.gz +0 -0
  768. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/img/logo.svg +0 -0
  769. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/img/logo.svg.br +0 -0
  770. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/img/logo.svg.gz +0 -0
  771. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/img/missing-cover.8c8c1d4f6782.webp +0 -0
  772. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/img/missing-cover.webp +0 -0
  773. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/img/missing-page.71bb10f7c72a.svg +0 -0
  774. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/img/missing-page.71bb10f7c72a.svg.br +0 -0
  775. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/img/missing-page.71bb10f7c72a.svg.gz +0 -0
  776. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/img/missing-page.svg +0 -0
  777. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/img/missing-page.svg.br +0 -0
  778. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/img/missing-page.svg.gz +0 -0
  779. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/js/choices-admin.24cecf0a0568.json +0 -0
  780. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/js/choices-admin.24cecf0a0568.json.br +0 -0
  781. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/js/choices-admin.24cecf0a0568.json.gz +0 -0
  782. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/js/choices-admin.json +0 -0
  783. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/js/choices-admin.json.br +0 -0
  784. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/js/choices-admin.json.gz +0 -0
  785. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/pwa/offline.37a4206d79f0.html +0 -0
  786. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/pwa/offline.37a4206d79f0.html.br +0 -0
  787. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/pwa/offline.37a4206d79f0.html.gz +0 -0
  788. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/pwa/offline.html +0 -0
  789. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/pwa/offline.html.br +0 -0
  790. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/pwa/offline.html.gz +0 -0
  791. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap-theme.min.1d4b05b397c3.css +0 -0
  792. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap-theme.min.1d4b05b397c3.css.br +0 -0
  793. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap-theme.min.1d4b05b397c3.css.gz +0 -0
  794. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap-theme.min.css +0 -0
  795. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap-theme.min.css.51806092cc05.map +0 -0
  796. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap-theme.min.css.51806092cc05.map.br +0 -0
  797. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap-theme.min.css.51806092cc05.map.gz +0 -0
  798. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap-theme.min.css.br +0 -0
  799. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap-theme.min.css.gz +0 -0
  800. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap-theme.min.css.map +0 -0
  801. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap-theme.min.css.map.br +0 -0
  802. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap-theme.min.css.map.gz +0 -0
  803. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap-tweaks.46ed116b0edd.css +0 -0
  804. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap-tweaks.46ed116b0edd.css.br +0 -0
  805. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap-tweaks.46ed116b0edd.css.gz +0 -0
  806. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap-tweaks.css +0 -0
  807. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap-tweaks.css.br +0 -0
  808. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap-tweaks.css.gz +0 -0
  809. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap.min.css +0 -0
  810. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap.min.css.br +0 -0
  811. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap.min.css.cafbda9c0e9e.map +0 -0
  812. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap.min.css.cafbda9c0e9e.map.br +0 -0
  813. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap.min.css.cafbda9c0e9e.map.gz +0 -0
  814. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap.min.css.gz +0 -0
  815. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap.min.css.map +0 -0
  816. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap.min.css.map.br +0 -0
  817. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap.min.css.map.gz +0 -0
  818. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap.min.f17d4516b026.css +0 -0
  819. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap.min.f17d4516b026.css.br +0 -0
  820. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/bootstrap.min.f17d4516b026.css.gz +0 -0
  821. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/default.789dfb5732d7.css +0 -0
  822. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/default.789dfb5732d7.css.br +0 -0
  823. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/default.789dfb5732d7.css.gz +0 -0
  824. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/default.css +0 -0
  825. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/default.css.br +0 -0
  826. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/default.css.gz +0 -0
  827. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/font-awesome-4.0.3.c1e1ea213abf.css +0 -0
  828. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/font-awesome-4.0.3.c1e1ea213abf.css.br +0 -0
  829. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/font-awesome-4.0.3.c1e1ea213abf.css.gz +0 -0
  830. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/font-awesome-4.0.3.css +0 -0
  831. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/font-awesome-4.0.3.css.br +0 -0
  832. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/font-awesome-4.0.3.css.gz +0 -0
  833. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/prettify.a987f72342ee.css +0 -0
  834. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/prettify.a987f72342ee.css.br +0 -0
  835. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/prettify.a987f72342ee.css.gz +0 -0
  836. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/prettify.css +0 -0
  837. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/prettify.css.br +0 -0
  838. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/css/prettify.css.gz +0 -0
  839. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/css/base.css +0 -0
  840. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/css/base.css.br +0 -0
  841. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/css/base.css.gz +0 -0
  842. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/css/base.e630f8f4990e.css +0 -0
  843. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/css/base.e630f8f4990e.css.br +0 -0
  844. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/css/base.e630f8f4990e.css.gz +0 -0
  845. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/css/highlight.css +0 -0
  846. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/css/highlight.css.br +0 -0
  847. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/css/highlight.css.gz +0 -0
  848. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/css/highlight.e0e4d973c6d7.css +0 -0
  849. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/css/highlight.e0e4d973c6d7.css.br +0 -0
  850. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/css/highlight.e0e4d973c6d7.css.gz +0 -0
  851. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/css/jquery.json-view.min.a2e6beeb6710.css +0 -0
  852. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/css/jquery.json-view.min.a2e6beeb6710.css.br +0 -0
  853. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/css/jquery.json-view.min.a2e6beeb6710.css.gz +0 -0
  854. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/css/jquery.json-view.min.css +0 -0
  855. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/css/jquery.json-view.min.css.br +0 -0
  856. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/css/jquery.json-view.min.css.gz +0 -0
  857. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/img/favicon.5195b4d0f3eb.ico +0 -0
  858. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/img/favicon.5195b4d0f3eb.ico.br +0 -0
  859. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/img/favicon.5195b4d0f3eb.ico.gz +0 -0
  860. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/img/favicon.ico +0 -0
  861. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/img/favicon.ico.br +0 -0
  862. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/img/favicon.ico.gz +0 -0
  863. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/img/grid.a4b938cf382b.png +0 -0
  864. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/img/grid.png +0 -0
  865. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/js/api.18a5ba8a1bd8.js +0 -0
  866. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/js/api.18a5ba8a1bd8.js.br +0 -0
  867. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/js/api.18a5ba8a1bd8.js.gz +0 -0
  868. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/js/api.js +0 -0
  869. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/js/api.js.br +0 -0
  870. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/js/api.js.gz +0 -0
  871. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/js/highlight.pack.479b5f21dcba.js +0 -0
  872. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/js/highlight.pack.479b5f21dcba.js.br +0 -0
  873. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/js/highlight.pack.479b5f21dcba.js.gz +0 -0
  874. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/js/highlight.pack.js +0 -0
  875. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/js/highlight.pack.js.br +0 -0
  876. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/js/highlight.pack.js.gz +0 -0
  877. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/js/jquery.json-view.min.b7c2d6981377.js +0 -0
  878. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/js/jquery.json-view.min.b7c2d6981377.js.br +0 -0
  879. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/js/jquery.json-view.min.b7c2d6981377.js.gz +0 -0
  880. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/js/jquery.json-view.min.js +0 -0
  881. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/js/jquery.json-view.min.js.br +0 -0
  882. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/docs/js/jquery.json-view.min.js.gz +0 -0
  883. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/fontawesome-webfont.3293616ec0c6.woff +0 -0
  884. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/fontawesome-webfont.83e37a11f9d7.svg +0 -0
  885. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/fontawesome-webfont.83e37a11f9d7.svg.br +0 -0
  886. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/fontawesome-webfont.83e37a11f9d7.svg.gz +0 -0
  887. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/fontawesome-webfont.8b27bc96115c.eot +0 -0
  888. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/fontawesome-webfont.dcb26c7239d8.ttf +0 -0
  889. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/fontawesome-webfont.dcb26c7239d8.ttf.br +0 -0
  890. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/fontawesome-webfont.dcb26c7239d8.ttf.gz +0 -0
  891. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/fontawesome-webfont.eot +0 -0
  892. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/fontawesome-webfont.svg +0 -0
  893. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/fontawesome-webfont.svg.br +0 -0
  894. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/fontawesome-webfont.svg.gz +0 -0
  895. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/fontawesome-webfont.ttf +0 -0
  896. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/fontawesome-webfont.ttf.br +0 -0
  897. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/fontawesome-webfont.ttf.gz +0 -0
  898. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/fontawesome-webfont.woff +0 -0
  899. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.08eda92397ae.svg +0 -0
  900. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.08eda92397ae.svg.br +0 -0
  901. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.08eda92397ae.svg.gz +0 -0
  902. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.448c34a56d69.woff2 +0 -0
  903. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.e18bbf611f2a.ttf +0 -0
  904. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.e18bbf611f2a.ttf.br +0 -0
  905. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.e18bbf611f2a.ttf.gz +0 -0
  906. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.eot +0 -0
  907. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.f4769f9bdb74.eot +0 -0
  908. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.fa2772327f55.woff +0 -0
  909. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.svg +0 -0
  910. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.svg.br +0 -0
  911. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.svg.gz +0 -0
  912. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.ttf +0 -0
  913. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.ttf.br +0 -0
  914. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.ttf.gz +0 -0
  915. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.woff +0 -0
  916. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.woff2 +0 -0
  917. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/img/glyphicons-halflings-white.9bbc6e960299.png +0 -0
  918. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/img/glyphicons-halflings-white.png +0 -0
  919. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/img/glyphicons-halflings.90233c9067e9.png +0 -0
  920. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/img/glyphicons-halflings.png +0 -0
  921. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/img/grid.a4b938cf382b.png +0 -0
  922. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/img/grid.png +0 -0
  923. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/ajax-form.0ea6e6052ab5.js +0 -0
  924. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/ajax-form.0ea6e6052ab5.js.br +0 -0
  925. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/ajax-form.0ea6e6052ab5.js.gz +0 -0
  926. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/ajax-form.js +0 -0
  927. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/ajax-form.js.br +0 -0
  928. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/ajax-form.js.gz +0 -0
  929. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/bootstrap.min.2f34b630ffe3.js +0 -0
  930. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/bootstrap.min.2f34b630ffe3.js.br +0 -0
  931. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/bootstrap.min.2f34b630ffe3.js.gz +0 -0
  932. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/bootstrap.min.js +0 -0
  933. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/bootstrap.min.js.br +0 -0
  934. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/bootstrap.min.js.gz +0 -0
  935. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/coreapi-0.1.1.e580e3854595.js +0 -0
  936. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/coreapi-0.1.1.e580e3854595.js.br +0 -0
  937. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/coreapi-0.1.1.e580e3854595.js.gz +0 -0
  938. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/coreapi-0.1.1.js +0 -0
  939. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/coreapi-0.1.1.js.br +0 -0
  940. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/coreapi-0.1.1.js.gz +0 -0
  941. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/csrf.969930007329.js +0 -0
  942. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/csrf.969930007329.js.br +0 -0
  943. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/csrf.969930007329.js.gz +0 -0
  944. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/csrf.js +0 -0
  945. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/csrf.js.br +0 -0
  946. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/csrf.js.gz +0 -0
  947. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/default.5b08897dbdc3.js +0 -0
  948. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/default.5b08897dbdc3.js.br +0 -0
  949. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/default.5b08897dbdc3.js.gz +0 -0
  950. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/default.js +0 -0
  951. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/default.js.br +0 -0
  952. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/default.js.gz +0 -0
  953. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/jquery-3.5.1.min.dc5e7f18c8d3.js +0 -0
  954. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/jquery-3.5.1.min.dc5e7f18c8d3.js.br +0 -0
  955. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/jquery-3.5.1.min.dc5e7f18c8d3.js.gz +0 -0
  956. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/jquery-3.5.1.min.js +0 -0
  957. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/jquery-3.5.1.min.js.br +0 -0
  958. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/jquery-3.5.1.min.js.gz +0 -0
  959. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/prettify-min.709bfcc456c6.js +0 -0
  960. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/prettify-min.709bfcc456c6.js.br +0 -0
  961. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/prettify-min.709bfcc456c6.js.gz +0 -0
  962. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/prettify-min.js +0 -0
  963. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/prettify-min.js.br +0 -0
  964. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/rest_framework/js/prettify-min.js.gz +0 -0
  965. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/robots.b6216d61c03e.txt +0 -0
  966. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/static_root/robots.txt +0 -0
  967. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/status.py +0 -0
  968. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/status_controller.py +0 -0
  969. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/templates/README.md +0 -0
  970. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/templates/headers-icons.html +0 -0
  971. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/templates/index.html +0 -0
  972. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/templates/pwa/headers.html +0 -0
  973. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/templates/pwa/manifest.webmanifest +0 -0
  974. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/templates/pwa/serviceworker-register.js +0 -0
  975. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/templates/pwa/serviceworker.js +0 -0
  976. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/templates/swagger-ui.html +0 -0
  977. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/threads.py +0 -0
  978. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/urls/__init__.py +0 -0
  979. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/urls/api/__init__.py +0 -0
  980. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/urls/api/admin.py +0 -0
  981. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/urls/api/auth.py +0 -0
  982. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/urls/api/browser.py +0 -0
  983. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/urls/api/reader.py +0 -0
  984. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/urls/api/root.py +0 -0
  985. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/urls/api/v3.py +0 -0
  986. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/urls/app.py +0 -0
  987. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/urls/opds/__init__.py +0 -0
  988. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/urls/opds/binary.py +0 -0
  989. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/urls/pwa.py +0 -0
  990. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/urls/root.py +0 -0
  991. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/urls/spectacular.py +0 -0
  992. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/version.py +0 -0
  993. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/views/README.md +0 -0
  994. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/views/__init__.py +0 -0
  995. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/views/admin/__init__.py +0 -0
  996. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/views/admin/api_key.py +0 -0
  997. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/views/admin/flag.py +0 -0
  998. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/views/admin/group.py +0 -0
  999. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/views/admin/library.py +0 -0
  1000. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/views/admin/stats.py +0 -0
  1001. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/views/admin/tasks.py +0 -0
  1002. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/views/admin/user.py +0 -0
  1003. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/views/auth.py +0 -0
  1004. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/views/browser/__init__.py +0 -0
  1005. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/views/browser/filters/__init__.py +0 -0
  1006. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/views/browser/session.py +0 -0
  1007. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/views/cover.py +0 -0
  1008. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/views/error.py +0 -0
  1009. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/views/opds/__init__.py +0 -0
  1010. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/views/opds/authentication_v1.py +0 -0
  1011. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/views/opds/binary.py +0 -0
  1012. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/views/pwa.py +0 -0
  1013. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/views/reader/__init__.py +0 -0
  1014. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/views/reader/session.py +0 -0
  1015. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/views/template.py +0 -0
  1016. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/views/version.py +0 -0
  1017. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/websockets/README.md +0 -0
  1018. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/websockets/__init__.py +0 -0
  1019. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/websockets/aio_queue.py +0 -0
  1020. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/websockets/consumers.py +0 -0
  1021. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/websockets/listener.py +0 -0
  1022. {codex-1.4.0a1 โ†’ codex-1.4.1}/codex/worker_base.py +0 -0
  1023. {codex-1.4.0a1 โ†’ codex-1.4.1}/tests/README.md +0 -0
  1024. {codex-1.4.0a1 โ†’ codex-1.4.1}/tests/__init__.py +0 -0
  1025. {codex-1.4.0a1 โ†’ codex-1.4.1}/tests/test_asgi.py +0 -0
  1026. {codex-1.4.0a1 โ†’ codex-1.4.1}/tests/test_models.py +0 -0
codex-1.4.1/PKG-INFO ADDED
@@ -0,0 +1,518 @@
1
+ Metadata-Version: 2.1
2
+ Name: codex
3
+ Version: 1.4.1
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 (>=9.1.0,<10.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.1)
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 path to config>/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
+
319
+ # Websockets
320
+ proxy_http_version 1.1;
321
+ proxy_set_header Upgrade $http_upgrade;
322
+ proxy_set_header Connection "Upgrade"
323
+
324
+ # This example uses a docker container named 'codex' at sub-path /codex
325
+ # Use a valid IP or resolvable host name for other configurations.
326
+ location /codex {
327
+ proxy_pass http://codex:9810;
328
+ # Codex reads http basic authentication.
329
+ # If the nginx credentials are different than codex credentials use this line to
330
+ # not forward the authorization.
331
+ proxy_set_header Authorization "";
332
+ }
333
+ ```
334
+
335
+ Specify a reverse proxy sub path (if you have one) in `config/hypercorn.toml`
336
+
337
+ ```toml
338
+ root_path = "/codex"
339
+
340
+ ```
341
+
342
+ #### Nginx Reverse Proxy 502 when container refreshes
343
+
344
+ Nginx requires a special trick to refresh dns when linked Docker containers
345
+ recreate. See this
346
+ [nginx with dynamix upstreams](https://tenzer.dk/nginx-with-dynamic-upstreams/)
347
+ article.
348
+
349
+ ### Restricted Memory Environments
350
+
351
+ Codex can run with as little as 1GB available RAM. Large batch jobs โ€“like
352
+ importing and indexing tens of thousands of comics at onceโ€“ will run faster the
353
+ more memory is available to Codex. The biggest gains in speed happen when you
354
+ increase memory up to about 6GB. Codex batch jobs do get faster the more memory
355
+ you give it above 6GB, but there are diminishing returns.
356
+
357
+ If you run Codex in an admin restricted memory environment you might want to
358
+ temporarily give codex a lot of memory to run a very large batch job and then
359
+ restrict it for normal operation.
360
+
361
+ ## <a name="usage">๐Ÿ“– Usage</a>
362
+
363
+ ### ๐Ÿ‘ค Sessions & Accounts
364
+
365
+ Once your administrator has added some comic libraries, you may browse and read
366
+ comics. Codex will remember your preferences, bookmarks and progress in the
367
+ browser session. Codex destroys anonymous sessions and bookmarks after 60 days.
368
+ To preserve these settings across browsers and after sessions expire, you may
369
+ register an account with a username and password. You will have to contact your
370
+ administrator to reset your password if you forget it.
371
+
372
+ ### ๐Ÿ—๏ธ API with Key Access
373
+
374
+ Codex has a limited number of API endpoints available with API Key Access. The
375
+ API Key is available on the admin/stats tab.
376
+
377
+ ### แฏค OPDS
378
+
379
+ Codex supports OPDS syndication and OPDS streaming. You may find the OPDS url in
380
+ the side drawer. It should take the form:
381
+
382
+ `http(s)://host.tld(:9810)(/root_path)/opds/v1.2/`
383
+
384
+ or
385
+
386
+ `http(s)://host.tld(:9810)(/root_path)/opds/v2.0/`
387
+
388
+ OPDS 2.0 support is experimental and not widely or well supported by clients.
389
+ OPDS 2.0 book readers exist, but I am not yet aware of an OPDS 2.0 comic reader.
390
+
391
+ #### Clients
392
+
393
+ - iOS has [Panels](https://panels.app/), [KYBook 3](http://kybook-reader.com/),
394
+ and
395
+ [Chunky Comic Reader](https://apps.apple.com/us/app/chunky-comic-reader/id663567628)
396
+ - Android has
397
+ [Moon+](https://play.google.com/store/apps/details?id=com.flyersoft.moonreader)
398
+ and
399
+ [Librera](https://play.google.com/store/apps/details?id=com.foobnix.pdf.reader)
400
+
401
+ #### HTTP Basic Authentication
402
+
403
+ If you wish to access OPDS as your Codex User. You will have to add your
404
+ username and password to the URL. Some OPDS clients do not asssist you with
405
+ authentication. In that case the OPDS url will look like:
406
+
407
+ `http(s)://username:password@host.tld(:9810)(/root_path)/opds/v1.2/`
408
+
409
+ #### Supported OPDS Specifications
410
+
411
+ - [OPDS 1.2](https://specs.opds.io/opds-1.2.html)
412
+ - [OPDS-PSE 1.2](https://github.com/anansi-project/opds-pse/blob/master/v1.2.md)
413
+ - [OPDS Authentication 1.0](https://drafts.opds.io/authentication-for-opds-1.0.html)
414
+ - [OpenSearch 1.1](https://github.com/dewitt/opensearch)
415
+
416
+ ## <a name="troubleshooting">๐Ÿฉบ Troubleshooting</a>
417
+
418
+ ### ๐Ÿ“’ Logs
419
+
420
+ Codex collects its logs in the `config/logs` directory. Take a look to see what
421
+ th e server is doing.
422
+
423
+ You can change how much codex logs by setting the `LOGLEVEL` environment
424
+ variable. By default this level is `INFO`. To see more verbose messages, run
425
+ codex like:
426
+
427
+ ```bash
428
+ LOGLEVEL=DEBUG codex
429
+ ```
430
+
431
+ ### Watching Filesystem Events with Docker
432
+
433
+ Codex tries to watch for filesystem events to instantly update your comic
434
+ libraries when they change on disk. But these native filesystem events are not
435
+ translated between macOS & Windows Docker hosts and the Docker Linux container.
436
+ If you find that your installation is not updating to filesystem changes
437
+ instantly, you might try enabling polling for the affected libraries and
438
+ decreasing the `poll_every` value in the Admin console to a frequency that suits
439
+ you.
440
+
441
+ ### Emergency Database Repair
442
+
443
+ If the database becomes corrupt, Codex includes a facitlity to rebuild the
444
+ database. Place a file named `rebuild_db` in your Codex config directory like
445
+ so:
446
+
447
+ ```sh
448
+ touch config/rebuild_db
449
+ ```
450
+
451
+ Shut down and restart Codex.
452
+
453
+ The next time Codex starts it will back up the existing database and try to
454
+ rebuild it. The database lives in the config directory as the file
455
+ `config/db.sqlite3`. If this procedure goes kablooey, you may recover the
456
+ original database at `config/db.sqlite3.backup`.
457
+
458
+ ## <a name="alternatives-to-codex">๐Ÿ“šAlternatives</a>
459
+
460
+ - [Kavita](https://www.kavitareader.com/) has light metadata filtering/editing,
461
+ supports comics, eBooks, and features for manga.
462
+ - [Komga](https://komga.org/) has light metadata editing.
463
+ - [Ubooquity](https://vaemendis.net/ubooquity/) reads both comics and eBooks.
464
+ - [Mylar](https://github.com/mylar3/mylar3) is the best comic book manager which
465
+ also has a built in reader.
466
+ - [Comictagger](https://github.com/comictagger/comictagger) is a comic metadata
467
+ editor. It comes with a powerful command line and desktop GUI.
468
+
469
+ ## <a name="contributing">๐Ÿค Contributing</a>
470
+
471
+ ### <a name="bug_reports">๐Ÿ› Bug Reports</a>
472
+
473
+ Issues and feature requests are best filed on the
474
+ [Github issue tracker](https://github.com/ajslater/codex/issues).
475
+
476
+ ### <a name="out-of-scope">๐Ÿšซ Out of Scope</a>
477
+
478
+ - I have no intention of making this an eBook reader.
479
+ - I think metadata editing would be better placed in a comic manager than a
480
+ reader.
481
+
482
+ ### <a name="develop-codex">๐Ÿ›  Develop</a>
483
+
484
+ Codex is a Django Python webserver with a VueJS front end.
485
+
486
+ `/codex/codex/` is the main django app which provides the webserver and
487
+ database.
488
+
489
+ `/codex/frontend/` is where the vuejs frontend lives.
490
+
491
+ Most of Codex development is now controlled through the Makefile. Type `make`
492
+ for a list of commands.
493
+
494
+ ## <a name="discord">๐Ÿ’ฌ Support</a>
495
+
496
+ By the generosity of the good people of
497
+ [Mylar](https://github.com/mylar3/mylar3), I and other Codex users answer
498
+ questions on the [Mylar Discord](https://discord.gg/6UG94R7E8T). Please use the
499
+ `#codex-support` channel to ask for help with Codex.
500
+
501
+ ## <a name="links">๐Ÿ”— Links</a>
502
+
503
+ - [Docker Image](https://hub.docker.com/r/ajslater/codex)
504
+ - [PyPi Package](https://pypi.org/project/codex/)
505
+ - [GitHub Project](https://github.com/ajslater/codex/)
506
+
507
+ ## <a name="special-thanks">๐Ÿ™๐Ÿป Special Thanks</a>
508
+
509
+ - Thanks to [Aurรฉlien Mazurie](https://pypi.org/user/ajmazurie/) for allowing me
510
+ to use the PyPi name 'codex'.
511
+ - Thanks to the good people of
512
+ [#mylar](https://github.com/mylar3/mylar3#live-support--conversation) for
513
+ continuous feedback and comic ecosystem education.
514
+
515
+ ## <a name="enjoy">๐Ÿ˜Š Enjoy</a>
516
+
517
+ ![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)
518
+