local-file-organizer 2.0.0__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.
Files changed (484) hide show
  1. local_file_organizer-2.0.0/LICENSE +21 -0
  2. local_file_organizer-2.0.0/PKG-INFO +435 -0
  3. local_file_organizer-2.0.0/README.md +280 -0
  4. local_file_organizer-2.0.0/pyproject.toml +1445 -0
  5. local_file_organizer-2.0.0/setup.cfg +4 -0
  6. local_file_organizer-2.0.0/src/file_organizer/__init__.py +14 -0
  7. local_file_organizer-2.0.0/src/file_organizer/_compat.py +15 -0
  8. local_file_organizer-2.0.0/src/file_organizer/api/__init__.py +80 -0
  9. local_file_organizer-2.0.0/src/file_organizer/api/api_keys.py +94 -0
  10. local_file_organizer-2.0.0/src/file_organizer/api/auth.py +176 -0
  11. local_file_organizer-2.0.0/src/file_organizer/api/auth_db.py +79 -0
  12. local_file_organizer-2.0.0/src/file_organizer/api/auth_models.py +31 -0
  13. local_file_organizer-2.0.0/src/file_organizer/api/auth_rate_limit.py +157 -0
  14. local_file_organizer-2.0.0/src/file_organizer/api/auth_store.py +125 -0
  15. local_file_organizer-2.0.0/src/file_organizer/api/cache.py +171 -0
  16. local_file_organizer-2.0.0/src/file_organizer/api/config.py +478 -0
  17. local_file_organizer-2.0.0/src/file_organizer/api/database.py +158 -0
  18. local_file_organizer-2.0.0/src/file_organizer/api/db.py +127 -0
  19. local_file_organizer-2.0.0/src/file_organizer/api/db_models.py +162 -0
  20. local_file_organizer-2.0.0/src/file_organizer/api/dependencies.py +230 -0
  21. local_file_organizer-2.0.0/src/file_organizer/api/exceptions.py +76 -0
  22. local_file_organizer-2.0.0/src/file_organizer/api/integration_models.py +104 -0
  23. local_file_organizer-2.0.0/src/file_organizer/api/jobs.py +147 -0
  24. local_file_organizer-2.0.0/src/file_organizer/api/main.py +183 -0
  25. local_file_organizer-2.0.0/src/file_organizer/api/middleware.py +176 -0
  26. local_file_organizer-2.0.0/src/file_organizer/api/models.py +449 -0
  27. local_file_organizer-2.0.0/src/file_organizer/api/openapi_responses.py +191 -0
  28. local_file_organizer-2.0.0/src/file_organizer/api/rate_limit.py +124 -0
  29. local_file_organizer-2.0.0/src/file_organizer/api/realtime.py +191 -0
  30. local_file_organizer-2.0.0/src/file_organizer/api/repositories/__init__.py +15 -0
  31. local_file_organizer-2.0.0/src/file_organizer/api/repositories/file_metadata_repo.py +178 -0
  32. local_file_organizer-2.0.0/src/file_organizer/api/repositories/job_repo.py +159 -0
  33. local_file_organizer-2.0.0/src/file_organizer/api/repositories/session_repo.py +115 -0
  34. local_file_organizer-2.0.0/src/file_organizer/api/repositories/settings_repo.py +134 -0
  35. local_file_organizer-2.0.0/src/file_organizer/api/repositories/workspace_repo.py +114 -0
  36. local_file_organizer-2.0.0/src/file_organizer/api/routers/__init__.py +42 -0
  37. local_file_organizer-2.0.0/src/file_organizer/api/routers/analyze.py +131 -0
  38. local_file_organizer-2.0.0/src/file_organizer/api/routers/auth.py +340 -0
  39. local_file_organizer-2.0.0/src/file_organizer/api/routers/config.py +163 -0
  40. local_file_organizer-2.0.0/src/file_organizer/api/routers/daemon.py +95 -0
  41. local_file_organizer-2.0.0/src/file_organizer/api/routers/dedupe.py +233 -0
  42. local_file_organizer-2.0.0/src/file_organizer/api/routers/files.py +539 -0
  43. local_file_organizer-2.0.0/src/file_organizer/api/routers/health.py +122 -0
  44. local_file_organizer-2.0.0/src/file_organizer/api/routers/integrations.py +334 -0
  45. local_file_organizer-2.0.0/src/file_organizer/api/routers/marketplace.py +305 -0
  46. local_file_organizer-2.0.0/src/file_organizer/api/routers/organize.py +349 -0
  47. local_file_organizer-2.0.0/src/file_organizer/api/routers/realtime.py +189 -0
  48. local_file_organizer-2.0.0/src/file_organizer/api/routers/search.py +388 -0
  49. local_file_organizer-2.0.0/src/file_organizer/api/routers/setup.py +306 -0
  50. local_file_organizer-2.0.0/src/file_organizer/api/routers/system.py +232 -0
  51. local_file_organizer-2.0.0/src/file_organizer/api/service_facade.py +576 -0
  52. local_file_organizer-2.0.0/src/file_organizer/api/test_utils.py +110 -0
  53. local_file_organizer-2.0.0/src/file_organizer/api/utils.py +86 -0
  54. local_file_organizer-2.0.0/src/file_organizer/cli/__init__.py +65 -0
  55. local_file_organizer-2.0.0/src/file_organizer/cli/analytics.py +382 -0
  56. local_file_organizer-2.0.0/src/file_organizer/cli/api.py +269 -0
  57. local_file_organizer-2.0.0/src/file_organizer/cli/api_keys.py +49 -0
  58. local_file_organizer-2.0.0/src/file_organizer/cli/autotag.py +279 -0
  59. local_file_organizer-2.0.0/src/file_organizer/cli/autotag_v2.py +256 -0
  60. local_file_organizer-2.0.0/src/file_organizer/cli/benchmark.py +1368 -0
  61. local_file_organizer-2.0.0/src/file_organizer/cli/completion.py +54 -0
  62. local_file_organizer-2.0.0/src/file_organizer/cli/config_cli.py +118 -0
  63. local_file_organizer-2.0.0/src/file_organizer/cli/copilot.py +102 -0
  64. local_file_organizer-2.0.0/src/file_organizer/cli/daemon.py +246 -0
  65. local_file_organizer-2.0.0/src/file_organizer/cli/dedupe.py +314 -0
  66. local_file_organizer-2.0.0/src/file_organizer/cli/dedupe_display.py +213 -0
  67. local_file_organizer-2.0.0/src/file_organizer/cli/dedupe_hash.py +153 -0
  68. local_file_organizer-2.0.0/src/file_organizer/cli/dedupe_removal.py +125 -0
  69. local_file_organizer-2.0.0/src/file_organizer/cli/dedupe_renderer.py +465 -0
  70. local_file_organizer-2.0.0/src/file_organizer/cli/dedupe_strategy.py +143 -0
  71. local_file_organizer-2.0.0/src/file_organizer/cli/dedupe_v2.py +343 -0
  72. local_file_organizer-2.0.0/src/file_organizer/cli/doctor.py +464 -0
  73. local_file_organizer-2.0.0/src/file_organizer/cli/interactive.py +107 -0
  74. local_file_organizer-2.0.0/src/file_organizer/cli/lazy.py +270 -0
  75. local_file_organizer-2.0.0/src/file_organizer/cli/main.py +647 -0
  76. local_file_organizer-2.0.0/src/file_organizer/cli/marketplace.py +255 -0
  77. local_file_organizer-2.0.0/src/file_organizer/cli/models_cli.py +56 -0
  78. local_file_organizer-2.0.0/src/file_organizer/cli/organize.py +362 -0
  79. local_file_organizer-2.0.0/src/file_organizer/cli/path_validation.py +212 -0
  80. local_file_organizer-2.0.0/src/file_organizer/cli/profile.py +520 -0
  81. local_file_organizer-2.0.0/src/file_organizer/cli/rules.py +426 -0
  82. local_file_organizer-2.0.0/src/file_organizer/cli/setup.py +265 -0
  83. local_file_organizer-2.0.0/src/file_organizer/cli/state.py +47 -0
  84. local_file_organizer-2.0.0/src/file_organizer/cli/suggest.py +248 -0
  85. local_file_organizer-2.0.0/src/file_organizer/cli/undo_history.py +319 -0
  86. local_file_organizer-2.0.0/src/file_organizer/cli/undo_recover.py +149 -0
  87. local_file_organizer-2.0.0/src/file_organizer/cli/undo_redo.py +184 -0
  88. local_file_organizer-2.0.0/src/file_organizer/cli/update.py +96 -0
  89. local_file_organizer-2.0.0/src/file_organizer/cli/utilities.py +470 -0
  90. local_file_organizer-2.0.0/src/file_organizer/client/__init__.py +21 -0
  91. local_file_organizer-2.0.0/src/file_organizer/client/async_client.py +641 -0
  92. local_file_organizer-2.0.0/src/file_organizer/client/exceptions.py +39 -0
  93. local_file_organizer-2.0.0/src/file_organizer/client/models.py +197 -0
  94. local_file_organizer-2.0.0/src/file_organizer/client/sync_client.py +644 -0
  95. local_file_organizer-2.0.0/src/file_organizer/config/__init__.py +18 -0
  96. local_file_organizer-2.0.0/src/file_organizer/config/manager.py +524 -0
  97. local_file_organizer-2.0.0/src/file_organizer/config/migrations.py +218 -0
  98. local_file_organizer-2.0.0/src/file_organizer/config/path_manager.py +157 -0
  99. local_file_organizer-2.0.0/src/file_organizer/config/path_migration.py +140 -0
  100. local_file_organizer-2.0.0/src/file_organizer/config/provider_env.py +362 -0
  101. local_file_organizer-2.0.0/src/file_organizer/config/schema.py +107 -0
  102. local_file_organizer-2.0.0/src/file_organizer/core/__init__.py +10 -0
  103. local_file_organizer-2.0.0/src/file_organizer/core/backend_detector.py +268 -0
  104. local_file_organizer-2.0.0/src/file_organizer/core/dispatcher.py +617 -0
  105. local_file_organizer-2.0.0/src/file_organizer/core/display.py +100 -0
  106. local_file_organizer-2.0.0/src/file_organizer/core/file_ops.py +219 -0
  107. local_file_organizer-2.0.0/src/file_organizer/core/hardware_profile.py +315 -0
  108. local_file_organizer-2.0.0/src/file_organizer/core/initializer.py +117 -0
  109. local_file_organizer-2.0.0/src/file_organizer/core/organizer.py +639 -0
  110. local_file_organizer-2.0.0/src/file_organizer/core/path_guard.py +243 -0
  111. local_file_organizer-2.0.0/src/file_organizer/core/setup_wizard.py +375 -0
  112. local_file_organizer-2.0.0/src/file_organizer/core/types.py +122 -0
  113. local_file_organizer-2.0.0/src/file_organizer/daemon/__init__.py +20 -0
  114. local_file_organizer-2.0.0/src/file_organizer/daemon/config.py +59 -0
  115. local_file_organizer-2.0.0/src/file_organizer/daemon/pid.py +568 -0
  116. local_file_organizer-2.0.0/src/file_organizer/daemon/scheduler.py +197 -0
  117. local_file_organizer-2.0.0/src/file_organizer/daemon/service.py +591 -0
  118. local_file_organizer-2.0.0/src/file_organizer/deploy/__init__.py +12 -0
  119. local_file_organizer-2.0.0/src/file_organizer/deploy/compose_scaler.py +152 -0
  120. local_file_organizer-2.0.0/src/file_organizer/deploy/config.py +164 -0
  121. local_file_organizer-2.0.0/src/file_organizer/deploy/health.py +245 -0
  122. local_file_organizer-2.0.0/src/file_organizer/deploy/monitoring.py +259 -0
  123. local_file_organizer-2.0.0/src/file_organizer/deploy/scaling.py +278 -0
  124. local_file_organizer-2.0.0/src/file_organizer/desktop/__init__.py +13 -0
  125. local_file_organizer-2.0.0/src/file_organizer/desktop/__main__.py +6 -0
  126. local_file_organizer-2.0.0/src/file_organizer/desktop/app.py +331 -0
  127. local_file_organizer-2.0.0/src/file_organizer/events/__init__.py +82 -0
  128. local_file_organizer-2.0.0/src/file_organizer/events/audit.py +282 -0
  129. local_file_organizer-2.0.0/src/file_organizer/events/config.py +46 -0
  130. local_file_organizer-2.0.0/src/file_organizer/events/consumer.py +260 -0
  131. local_file_organizer-2.0.0/src/file_organizer/events/discovery.py +263 -0
  132. local_file_organizer-2.0.0/src/file_organizer/events/health.py +275 -0
  133. local_file_organizer-2.0.0/src/file_organizer/events/middleware.py +464 -0
  134. local_file_organizer-2.0.0/src/file_organizer/events/monitor.py +251 -0
  135. local_file_organizer-2.0.0/src/file_organizer/events/publisher.py +179 -0
  136. local_file_organizer-2.0.0/src/file_organizer/events/pubsub.py +301 -0
  137. local_file_organizer-2.0.0/src/file_organizer/events/replay.py +322 -0
  138. local_file_organizer-2.0.0/src/file_organizer/events/service_bus.py +374 -0
  139. local_file_organizer-2.0.0/src/file_organizer/events/stream.py +432 -0
  140. local_file_organizer-2.0.0/src/file_organizer/events/subscription.py +285 -0
  141. local_file_organizer-2.0.0/src/file_organizer/events/types.py +134 -0
  142. local_file_organizer-2.0.0/src/file_organizer/history/__init__.py +30 -0
  143. local_file_organizer-2.0.0/src/file_organizer/history/cleanup.py +425 -0
  144. local_file_organizer-2.0.0/src/file_organizer/history/database.py +287 -0
  145. local_file_organizer-2.0.0/src/file_organizer/history/export.py +343 -0
  146. local_file_organizer-2.0.0/src/file_organizer/history/models.py +262 -0
  147. local_file_organizer-2.0.0/src/file_organizer/history/tracker.py +347 -0
  148. local_file_organizer-2.0.0/src/file_organizer/history/transaction.py +292 -0
  149. local_file_organizer-2.0.0/src/file_organizer/integrations/__init__.py +25 -0
  150. local_file_organizer-2.0.0/src/file_organizer/integrations/base.py +73 -0
  151. local_file_organizer-2.0.0/src/file_organizer/integrations/browser.py +68 -0
  152. local_file_organizer-2.0.0/src/file_organizer/integrations/manager.py +109 -0
  153. local_file_organizer-2.0.0/src/file_organizer/integrations/obsidian.py +156 -0
  154. local_file_organizer-2.0.0/src/file_organizer/integrations/vscode.py +96 -0
  155. local_file_organizer-2.0.0/src/file_organizer/integrations/workflow.py +103 -0
  156. local_file_organizer-2.0.0/src/file_organizer/interfaces/__init__.py +43 -0
  157. local_file_organizer-2.0.0/src/file_organizer/interfaces/intelligence.py +63 -0
  158. local_file_organizer-2.0.0/src/file_organizer/interfaces/model.py +75 -0
  159. local_file_organizer-2.0.0/src/file_organizer/interfaces/pipeline.py +120 -0
  160. local_file_organizer-2.0.0/src/file_organizer/interfaces/processor.py +71 -0
  161. local_file_organizer-2.0.0/src/file_organizer/interfaces/search.py +97 -0
  162. local_file_organizer-2.0.0/src/file_organizer/interfaces/storage.py +77 -0
  163. local_file_organizer-2.0.0/src/file_organizer/methodologies/__init__.py +3 -0
  164. local_file_organizer-2.0.0/src/file_organizer/methodologies/johnny_decimal/__init__.py +147 -0
  165. local_file_organizer-2.0.0/src/file_organizer/methodologies/johnny_decimal/adapters.py +392 -0
  166. local_file_organizer-2.0.0/src/file_organizer/methodologies/johnny_decimal/categories.py +493 -0
  167. local_file_organizer-2.0.0/src/file_organizer/methodologies/johnny_decimal/compatibility.py +426 -0
  168. local_file_organizer-2.0.0/src/file_organizer/methodologies/johnny_decimal/config.py +411 -0
  169. local_file_organizer-2.0.0/src/file_organizer/methodologies/johnny_decimal/migrator.py +443 -0
  170. local_file_organizer-2.0.0/src/file_organizer/methodologies/johnny_decimal/numbering.py +526 -0
  171. local_file_organizer-2.0.0/src/file_organizer/methodologies/johnny_decimal/scanner.py +363 -0
  172. local_file_organizer-2.0.0/src/file_organizer/methodologies/johnny_decimal/system.py +568 -0
  173. local_file_organizer-2.0.0/src/file_organizer/methodologies/johnny_decimal/transformer.py +360 -0
  174. local_file_organizer-2.0.0/src/file_organizer/methodologies/johnny_decimal/validator.py +349 -0
  175. local_file_organizer-2.0.0/src/file_organizer/methodologies/para/__init__.py +59 -0
  176. local_file_organizer-2.0.0/src/file_organizer/methodologies/para/ai/__init__.py +59 -0
  177. local_file_organizer-2.0.0/src/file_organizer/methodologies/para/ai/feature_extractor.py +496 -0
  178. local_file_organizer-2.0.0/src/file_organizer/methodologies/para/ai/feedback.py +538 -0
  179. local_file_organizer-2.0.0/src/file_organizer/methodologies/para/ai/file_mover.py +455 -0
  180. local_file_organizer-2.0.0/src/file_organizer/methodologies/para/ai/suggestion_engine.py +622 -0
  181. local_file_organizer-2.0.0/src/file_organizer/methodologies/para/categories.py +379 -0
  182. local_file_organizer-2.0.0/src/file_organizer/methodologies/para/config.py +346 -0
  183. local_file_organizer-2.0.0/src/file_organizer/methodologies/para/detection/__init__.py +27 -0
  184. local_file_organizer-2.0.0/src/file_organizer/methodologies/para/detection/heuristics.py +1000 -0
  185. local_file_organizer-2.0.0/src/file_organizer/methodologies/para/folder_generator.py +267 -0
  186. local_file_organizer-2.0.0/src/file_organizer/methodologies/para/folder_mapper.py +382 -0
  187. local_file_organizer-2.0.0/src/file_organizer/methodologies/para/migration_manager.py +718 -0
  188. local_file_organizer-2.0.0/src/file_organizer/methodologies/para/rules/__init__.py +37 -0
  189. local_file_organizer-2.0.0/src/file_organizer/methodologies/para/rules/engine.py +585 -0
  190. local_file_organizer-2.0.0/src/file_organizer/models/__init__.py +60 -0
  191. local_file_organizer-2.0.0/src/file_organizer/models/_claude_client.py +76 -0
  192. local_file_organizer-2.0.0/src/file_organizer/models/_claude_response.py +56 -0
  193. local_file_organizer-2.0.0/src/file_organizer/models/_llama_cpp_helpers.py +53 -0
  194. local_file_organizer-2.0.0/src/file_organizer/models/_ollama_response.py +90 -0
  195. local_file_organizer-2.0.0/src/file_organizer/models/_openai_client.py +82 -0
  196. local_file_organizer-2.0.0/src/file_organizer/models/_openai_response.py +35 -0
  197. local_file_organizer-2.0.0/src/file_organizer/models/_vision_helpers.py +76 -0
  198. local_file_organizer-2.0.0/src/file_organizer/models/analytics.py +263 -0
  199. local_file_organizer-2.0.0/src/file_organizer/models/audio_model.py +246 -0
  200. local_file_organizer-2.0.0/src/file_organizer/models/audio_registry.py +78 -0
  201. local_file_organizer-2.0.0/src/file_organizer/models/audio_transcriber.py +462 -0
  202. local_file_organizer-2.0.0/src/file_organizer/models/base.py +331 -0
  203. local_file_organizer-2.0.0/src/file_organizer/models/claude_text_model.py +174 -0
  204. local_file_organizer-2.0.0/src/file_organizer/models/claude_vision_model.py +283 -0
  205. local_file_organizer-2.0.0/src/file_organizer/models/llama_cpp_text_model.py +243 -0
  206. local_file_organizer-2.0.0/src/file_organizer/models/mlx_text_model.py +238 -0
  207. local_file_organizer-2.0.0/src/file_organizer/models/model_manager.py +359 -0
  208. local_file_organizer-2.0.0/src/file_organizer/models/openai_text_model.py +183 -0
  209. local_file_organizer-2.0.0/src/file_organizer/models/openai_vision_model.py +259 -0
  210. local_file_organizer-2.0.0/src/file_organizer/models/provider_factory.py +56 -0
  211. local_file_organizer-2.0.0/src/file_organizer/models/provider_registry.py +302 -0
  212. local_file_organizer-2.0.0/src/file_organizer/models/registry.py +74 -0
  213. local_file_organizer-2.0.0/src/file_organizer/models/suggestion_types.py +171 -0
  214. local_file_organizer-2.0.0/src/file_organizer/models/text_model.py +371 -0
  215. local_file_organizer-2.0.0/src/file_organizer/models/text_registry.py +49 -0
  216. local_file_organizer-2.0.0/src/file_organizer/models/vision_model.py +336 -0
  217. local_file_organizer-2.0.0/src/file_organizer/models/vision_registry.py +51 -0
  218. local_file_organizer-2.0.0/src/file_organizer/models/vision_schema.py +26 -0
  219. local_file_organizer-2.0.0/src/file_organizer/optimization/__init__.py +58 -0
  220. local_file_organizer-2.0.0/src/file_organizer/optimization/batch_sizer.py +275 -0
  221. local_file_organizer-2.0.0/src/file_organizer/optimization/buffer_pool.py +219 -0
  222. local_file_organizer-2.0.0/src/file_organizer/optimization/connection_pool.py +240 -0
  223. local_file_organizer-2.0.0/src/file_organizer/optimization/database.py +491 -0
  224. local_file_organizer-2.0.0/src/file_organizer/optimization/lazy_loader.py +206 -0
  225. local_file_organizer-2.0.0/src/file_organizer/optimization/leak_detector.py +219 -0
  226. local_file_organizer-2.0.0/src/file_organizer/optimization/memory_limiter.py +207 -0
  227. local_file_organizer-2.0.0/src/file_organizer/optimization/memory_profiler.py +287 -0
  228. local_file_organizer-2.0.0/src/file_organizer/optimization/model_cache.py +284 -0
  229. local_file_organizer-2.0.0/src/file_organizer/optimization/query_cache.py +226 -0
  230. local_file_organizer-2.0.0/src/file_organizer/optimization/resource_monitor.py +290 -0
  231. local_file_organizer-2.0.0/src/file_organizer/optimization/warmup.py +208 -0
  232. local_file_organizer-2.0.0/src/file_organizer/parallel/__init__.py +45 -0
  233. local_file_organizer-2.0.0/src/file_organizer/parallel/checkpoint.py +261 -0
  234. local_file_organizer-2.0.0/src/file_organizer/parallel/config.py +61 -0
  235. local_file_organizer-2.0.0/src/file_organizer/parallel/executor.py +66 -0
  236. local_file_organizer-2.0.0/src/file_organizer/parallel/models.py +158 -0
  237. local_file_organizer-2.0.0/src/file_organizer/parallel/persistence.py +162 -0
  238. local_file_organizer-2.0.0/src/file_organizer/parallel/priority_queue.py +191 -0
  239. local_file_organizer-2.0.0/src/file_organizer/parallel/processor.py +763 -0
  240. local_file_organizer-2.0.0/src/file_organizer/parallel/resource_manager.py +196 -0
  241. local_file_organizer-2.0.0/src/file_organizer/parallel/result.py +86 -0
  242. local_file_organizer-2.0.0/src/file_organizer/parallel/resume.py +279 -0
  243. local_file_organizer-2.0.0/src/file_organizer/parallel/scheduler.py +117 -0
  244. local_file_organizer-2.0.0/src/file_organizer/parallel/throttle.py +155 -0
  245. local_file_organizer-2.0.0/src/file_organizer/pipeline/__init__.py +24 -0
  246. local_file_organizer-2.0.0/src/file_organizer/pipeline/config.py +145 -0
  247. local_file_organizer-2.0.0/src/file_organizer/pipeline/orchestrator.py +1010 -0
  248. local_file_organizer-2.0.0/src/file_organizer/pipeline/processor_pool.py +198 -0
  249. local_file_organizer-2.0.0/src/file_organizer/pipeline/resource_aware_executor.py +426 -0
  250. local_file_organizer-2.0.0/src/file_organizer/pipeline/router.py +221 -0
  251. local_file_organizer-2.0.0/src/file_organizer/pipeline/stages/__init__.py +25 -0
  252. local_file_organizer-2.0.0/src/file_organizer/pipeline/stages/analyzer.py +125 -0
  253. local_file_organizer-2.0.0/src/file_organizer/pipeline/stages/postprocessor.py +61 -0
  254. local_file_organizer-2.0.0/src/file_organizer/pipeline/stages/preprocessor.py +111 -0
  255. local_file_organizer-2.0.0/src/file_organizer/pipeline/stages/writer.py +67 -0
  256. local_file_organizer-2.0.0/src/file_organizer/plugins/__init__.py +98 -0
  257. local_file_organizer-2.0.0/src/file_organizer/plugins/api/__init__.py +20 -0
  258. local_file_organizer-2.0.0/src/file_organizer/plugins/api/endpoints.py +318 -0
  259. local_file_organizer-2.0.0/src/file_organizer/plugins/api/hooks.py +445 -0
  260. local_file_organizer-2.0.0/src/file_organizer/plugins/api/models.py +155 -0
  261. local_file_organizer-2.0.0/src/file_organizer/plugins/base.py +207 -0
  262. local_file_organizer-2.0.0/src/file_organizer/plugins/config.py +142 -0
  263. local_file_organizer-2.0.0/src/file_organizer/plugins/errors.py +43 -0
  264. local_file_organizer-2.0.0/src/file_organizer/plugins/executor.py +440 -0
  265. local_file_organizer-2.0.0/src/file_organizer/plugins/hooks.py +86 -0
  266. local_file_organizer-2.0.0/src/file_organizer/plugins/ipc.py +152 -0
  267. local_file_organizer-2.0.0/src/file_organizer/plugins/lifecycle.py +128 -0
  268. local_file_organizer-2.0.0/src/file_organizer/plugins/marketplace/__init__.py +41 -0
  269. local_file_organizer-2.0.0/src/file_organizer/plugins/marketplace/errors.py +25 -0
  270. local_file_organizer-2.0.0/src/file_organizer/plugins/marketplace/installer.py +284 -0
  271. local_file_organizer-2.0.0/src/file_organizer/plugins/marketplace/metadata.py +112 -0
  272. local_file_organizer-2.0.0/src/file_organizer/plugins/marketplace/models.py +281 -0
  273. local_file_organizer-2.0.0/src/file_organizer/plugins/marketplace/repository.py +288 -0
  274. local_file_organizer-2.0.0/src/file_organizer/plugins/marketplace/reviews.py +166 -0
  275. local_file_organizer-2.0.0/src/file_organizer/plugins/marketplace/service.py +143 -0
  276. local_file_organizer-2.0.0/src/file_organizer/plugins/marketplace/validators.py +39 -0
  277. local_file_organizer-2.0.0/src/file_organizer/plugins/registry.py +366 -0
  278. local_file_organizer-2.0.0/src/file_organizer/plugins/sdk/__init__.py +23 -0
  279. local_file_organizer-2.0.0/src/file_organizer/plugins/sdk/client.py +223 -0
  280. local_file_organizer-2.0.0/src/file_organizer/plugins/sdk/decorators.py +69 -0
  281. local_file_organizer-2.0.0/src/file_organizer/plugins/sdk/testing.py +39 -0
  282. local_file_organizer-2.0.0/src/file_organizer/plugins/security.py +96 -0
  283. local_file_organizer-2.0.0/src/file_organizer/review_regressions/__init__.py +73 -0
  284. local_file_organizer-2.0.0/src/file_organizer/review_regressions/api_compat.py +344 -0
  285. local_file_organizer-2.0.0/src/file_organizer/review_regressions/audit.py +128 -0
  286. local_file_organizer-2.0.0/src/file_organizer/review_regressions/correctness.py +358 -0
  287. local_file_organizer-2.0.0/src/file_organizer/review_regressions/framework.py +273 -0
  288. local_file_organizer-2.0.0/src/file_organizer/review_regressions/memory_lifecycle.py +494 -0
  289. local_file_organizer-2.0.0/src/file_organizer/review_regressions/security.py +839 -0
  290. local_file_organizer-2.0.0/src/file_organizer/review_regressions/template_js.py +196 -0
  291. local_file_organizer-2.0.0/src/file_organizer/review_regressions/test_quality.py +299 -0
  292. local_file_organizer-2.0.0/src/file_organizer/services/__init__.py +47 -0
  293. local_file_organizer-2.0.0/src/file_organizer/services/analytics/__init__.py +17 -0
  294. local_file_organizer-2.0.0/src/file_organizer/services/analytics/analytics_service.py +422 -0
  295. local_file_organizer-2.0.0/src/file_organizer/services/analytics/metrics_calculator.py +131 -0
  296. local_file_organizer-2.0.0/src/file_organizer/services/analytics/storage_analyzer.py +265 -0
  297. local_file_organizer-2.0.0/src/file_organizer/services/analyzer.py +165 -0
  298. local_file_organizer-2.0.0/src/file_organizer/services/audio/__init__.py +58 -0
  299. local_file_organizer-2.0.0/src/file_organizer/services/audio/classifier.py +541 -0
  300. local_file_organizer-2.0.0/src/file_organizer/services/audio/content_analyzer.py +274 -0
  301. local_file_organizer-2.0.0/src/file_organizer/services/audio/lexicons.py +191 -0
  302. local_file_organizer-2.0.0/src/file_organizer/services/audio/metadata_extractor.py +387 -0
  303. local_file_organizer-2.0.0/src/file_organizer/services/audio/organizer.py +404 -0
  304. local_file_organizer-2.0.0/src/file_organizer/services/audio/preprocessor.py +378 -0
  305. local_file_organizer-2.0.0/src/file_organizer/services/audio/transcriber.py +326 -0
  306. local_file_organizer-2.0.0/src/file_organizer/services/audio/utils.py +384 -0
  307. local_file_organizer-2.0.0/src/file_organizer/services/auto_tagging/__init__.py +92 -0
  308. local_file_organizer-2.0.0/src/file_organizer/services/auto_tagging/content_analyzer.py +467 -0
  309. local_file_organizer-2.0.0/src/file_organizer/services/auto_tagging/tag_learning.py +495 -0
  310. local_file_organizer-2.0.0/src/file_organizer/services/auto_tagging/tag_recommender.py +406 -0
  311. local_file_organizer-2.0.0/src/file_organizer/services/copilot/__init__.py +31 -0
  312. local_file_organizer-2.0.0/src/file_organizer/services/copilot/conversation.py +156 -0
  313. local_file_organizer-2.0.0/src/file_organizer/services/copilot/engine.py +262 -0
  314. local_file_organizer-2.0.0/src/file_organizer/services/copilot/executor.py +453 -0
  315. local_file_organizer-2.0.0/src/file_organizer/services/copilot/intent_parser.py +301 -0
  316. local_file_organizer-2.0.0/src/file_organizer/services/copilot/models.py +118 -0
  317. local_file_organizer-2.0.0/src/file_organizer/services/copilot/rules/__init__.py +29 -0
  318. local_file_organizer-2.0.0/src/file_organizer/services/copilot/rules/actions.py +130 -0
  319. local_file_organizer-2.0.0/src/file_organizer/services/copilot/rules/executor.py +476 -0
  320. local_file_organizer-2.0.0/src/file_organizer/services/copilot/rules/models.py +204 -0
  321. local_file_organizer-2.0.0/src/file_organizer/services/copilot/rules/preview.py +256 -0
  322. local_file_organizer-2.0.0/src/file_organizer/services/copilot/rules/rule_manager.py +209 -0
  323. local_file_organizer-2.0.0/src/file_organizer/services/deduplication/__init__.py +60 -0
  324. local_file_organizer-2.0.0/src/file_organizer/services/deduplication/backup.py +343 -0
  325. local_file_organizer-2.0.0/src/file_organizer/services/deduplication/detector.py +308 -0
  326. local_file_organizer-2.0.0/src/file_organizer/services/deduplication/document_dedup.py +181 -0
  327. local_file_organizer-2.0.0/src/file_organizer/services/deduplication/embedder.py +318 -0
  328. local_file_organizer-2.0.0/src/file_organizer/services/deduplication/extractor.py +468 -0
  329. local_file_organizer-2.0.0/src/file_organizer/services/deduplication/hasher.py +167 -0
  330. local_file_organizer-2.0.0/src/file_organizer/services/deduplication/image_dedup.py +490 -0
  331. local_file_organizer-2.0.0/src/file_organizer/services/deduplication/image_utils.py +569 -0
  332. local_file_organizer-2.0.0/src/file_organizer/services/deduplication/index.py +207 -0
  333. local_file_organizer-2.0.0/src/file_organizer/services/deduplication/quality.py +428 -0
  334. local_file_organizer-2.0.0/src/file_organizer/services/deduplication/reporter.py +151 -0
  335. local_file_organizer-2.0.0/src/file_organizer/services/deduplication/semantic.py +305 -0
  336. local_file_organizer-2.0.0/src/file_organizer/services/deduplication/viewer.py +608 -0
  337. local_file_organizer-2.0.0/src/file_organizer/services/inference_timer.py +127 -0
  338. local_file_organizer-2.0.0/src/file_organizer/services/intelligence/__init__.py +96 -0
  339. local_file_organizer-2.0.0/src/file_organizer/services/intelligence/confidence.py +530 -0
  340. local_file_organizer-2.0.0/src/file_organizer/services/intelligence/conflict_resolver.py +412 -0
  341. local_file_organizer-2.0.0/src/file_organizer/services/intelligence/directory_prefs.py +251 -0
  342. local_file_organizer-2.0.0/src/file_organizer/services/intelligence/feedback_processor.py +445 -0
  343. local_file_organizer-2.0.0/src/file_organizer/services/intelligence/folder_learner.py +332 -0
  344. local_file_organizer-2.0.0/src/file_organizer/services/intelligence/naming_analyzer.py +457 -0
  345. local_file_organizer-2.0.0/src/file_organizer/services/intelligence/pattern_extractor.py +495 -0
  346. local_file_organizer-2.0.0/src/file_organizer/services/intelligence/pattern_learner.py +409 -0
  347. local_file_organizer-2.0.0/src/file_organizer/services/intelligence/preference_database.py +591 -0
  348. local_file_organizer-2.0.0/src/file_organizer/services/intelligence/preference_storage.py +735 -0
  349. local_file_organizer-2.0.0/src/file_organizer/services/intelligence/preference_store.py +590 -0
  350. local_file_organizer-2.0.0/src/file_organizer/services/intelligence/preference_tracker.py +466 -0
  351. local_file_organizer-2.0.0/src/file_organizer/services/intelligence/profile_exporter.py +335 -0
  352. local_file_organizer-2.0.0/src/file_organizer/services/intelligence/profile_importer.py +532 -0
  353. local_file_organizer-2.0.0/src/file_organizer/services/intelligence/profile_manager.py +497 -0
  354. local_file_organizer-2.0.0/src/file_organizer/services/intelligence/profile_merger.py +497 -0
  355. local_file_organizer-2.0.0/src/file_organizer/services/intelligence/profile_migrator.py +481 -0
  356. local_file_organizer-2.0.0/src/file_organizer/services/intelligence/scoring.py +412 -0
  357. local_file_organizer-2.0.0/src/file_organizer/services/intelligence/template_manager.py +556 -0
  358. local_file_organizer-2.0.0/src/file_organizer/services/misplacement_detector.py +490 -0
  359. local_file_organizer-2.0.0/src/file_organizer/services/pattern_analyzer.py +451 -0
  360. local_file_organizer-2.0.0/src/file_organizer/services/search/__init__.py +5 -0
  361. local_file_organizer-2.0.0/src/file_organizer/services/search/bm25_index.py +129 -0
  362. local_file_organizer-2.0.0/src/file_organizer/services/search/embedding_cache.py +258 -0
  363. local_file_organizer-2.0.0/src/file_organizer/services/search/hybrid_retriever.py +367 -0
  364. local_file_organizer-2.0.0/src/file_organizer/services/search/vector_index.py +122 -0
  365. local_file_organizer-2.0.0/src/file_organizer/services/smart_suggestions.py +524 -0
  366. local_file_organizer-2.0.0/src/file_organizer/services/suggestion_feedback.py +392 -0
  367. local_file_organizer-2.0.0/src/file_organizer/services/text_processor.py +499 -0
  368. local_file_organizer-2.0.0/src/file_organizer/services/video/__init__.py +25 -0
  369. local_file_organizer-2.0.0/src/file_organizer/services/video/metadata_extractor.py +291 -0
  370. local_file_organizer-2.0.0/src/file_organizer/services/video/organizer.py +171 -0
  371. local_file_organizer-2.0.0/src/file_organizer/services/video/scene_detector.py +425 -0
  372. local_file_organizer-2.0.0/src/file_organizer/services/vision_fallback.py +186 -0
  373. local_file_organizer-2.0.0/src/file_organizer/services/vision_processor.py +868 -0
  374. local_file_organizer-2.0.0/src/file_organizer/tui/__init__.py +42 -0
  375. local_file_organizer-2.0.0/src/file_organizer/tui/analytics_view.py +308 -0
  376. local_file_organizer-2.0.0/src/file_organizer/tui/app.py +417 -0
  377. local_file_organizer-2.0.0/src/file_organizer/tui/audio_view.py +373 -0
  378. local_file_organizer-2.0.0/src/file_organizer/tui/copilot_view.py +199 -0
  379. local_file_organizer-2.0.0/src/file_organizer/tui/file_browser.py +280 -0
  380. local_file_organizer-2.0.0/src/file_organizer/tui/file_preview.py +341 -0
  381. local_file_organizer-2.0.0/src/file_organizer/tui/methodology_view.py +306 -0
  382. local_file_organizer-2.0.0/src/file_organizer/tui/organization_preview.py +232 -0
  383. local_file_organizer-2.0.0/src/file_organizer/tui/settings_view.py +312 -0
  384. local_file_organizer-2.0.0/src/file_organizer/tui/setup_wizard_view.py +774 -0
  385. local_file_organizer-2.0.0/src/file_organizer/tui/undo_history_view.py +358 -0
  386. local_file_organizer-2.0.0/src/file_organizer/undo/__init__.py +26 -0
  387. local_file_organizer-2.0.0/src/file_organizer/undo/_journal.py +29 -0
  388. local_file_organizer-2.0.0/src/file_organizer/undo/durable_move.py +1701 -0
  389. local_file_organizer-2.0.0/src/file_organizer/undo/models.py +125 -0
  390. local_file_organizer-2.0.0/src/file_organizer/undo/rollback.py +666 -0
  391. local_file_organizer-2.0.0/src/file_organizer/undo/trash_gc.py +549 -0
  392. local_file_organizer-2.0.0/src/file_organizer/undo/undo_manager.py +441 -0
  393. local_file_organizer-2.0.0/src/file_organizer/undo/validator.py +750 -0
  394. local_file_organizer-2.0.0/src/file_organizer/undo/viewer.py +384 -0
  395. local_file_organizer-2.0.0/src/file_organizer/updater/__init__.py +34 -0
  396. local_file_organizer-2.0.0/src/file_organizer/updater/background.py +43 -0
  397. local_file_organizer-2.0.0/src/file_organizer/updater/checker.py +231 -0
  398. local_file_organizer-2.0.0/src/file_organizer/updater/installer.py +413 -0
  399. local_file_organizer-2.0.0/src/file_organizer/updater/manager.py +165 -0
  400. local_file_organizer-2.0.0/src/file_organizer/updater/sidecar_updater.py +285 -0
  401. local_file_organizer-2.0.0/src/file_organizer/updater/state.py +99 -0
  402. local_file_organizer-2.0.0/src/file_organizer/utils/__init__.py +15 -0
  403. local_file_organizer-2.0.0/src/file_organizer/utils/atomic_io.py +36 -0
  404. local_file_organizer-2.0.0/src/file_organizer/utils/atomic_write.py +357 -0
  405. local_file_organizer-2.0.0/src/file_organizer/utils/chart_generator.py +150 -0
  406. local_file_organizer-2.0.0/src/file_organizer/utils/cli_errors.py +55 -0
  407. local_file_organizer-2.0.0/src/file_organizer/utils/epub_enhanced.py +798 -0
  408. local_file_organizer-2.0.0/src/file_organizer/utils/file_readers.py +62 -0
  409. local_file_organizer-2.0.0/src/file_organizer/utils/file_times.py +21 -0
  410. local_file_organizer-2.0.0/src/file_organizer/utils/log_redact.py +610 -0
  411. local_file_organizer-2.0.0/src/file_organizer/utils/readers/__init__.py +374 -0
  412. local_file_organizer-2.0.0/src/file_organizer/utils/readers/_base.py +134 -0
  413. local_file_organizer-2.0.0/src/file_organizer/utils/readers/_scientific_stub.py +46 -0
  414. local_file_organizer-2.0.0/src/file_organizer/utils/readers/archives.py +458 -0
  415. local_file_organizer-2.0.0/src/file_organizer/utils/readers/cad.py +537 -0
  416. local_file_organizer-2.0.0/src/file_organizer/utils/readers/documents.py +385 -0
  417. local_file_organizer-2.0.0/src/file_organizer/utils/readers/ebook.py +119 -0
  418. local_file_organizer-2.0.0/src/file_organizer/utils/readers/scientific.py +324 -0
  419. local_file_organizer-2.0.0/src/file_organizer/utils/safe_copy.py +147 -0
  420. local_file_organizer-2.0.0/src/file_organizer/utils/safedir.py +671 -0
  421. local_file_organizer-2.0.0/src/file_organizer/utils/text_processing.py +562 -0
  422. local_file_organizer-2.0.0/src/file_organizer/version.py +146 -0
  423. local_file_organizer-2.0.0/src/file_organizer/watcher/__init__.py +21 -0
  424. local_file_organizer-2.0.0/src/file_organizer/watcher/config.py +137 -0
  425. local_file_organizer-2.0.0/src/file_organizer/watcher/handler.py +374 -0
  426. local_file_organizer-2.0.0/src/file_organizer/watcher/monitor.py +318 -0
  427. local_file_organizer-2.0.0/src/file_organizer/watcher/queue.py +157 -0
  428. local_file_organizer-2.0.0/src/file_organizer/web/__init__.py +5 -0
  429. local_file_organizer-2.0.0/src/file_organizer/web/_helpers.py +319 -0
  430. local_file_organizer-2.0.0/src/file_organizer/web/csrf.py +185 -0
  431. local_file_organizer-2.0.0/src/file_organizer/web/file_operations.py +636 -0
  432. local_file_organizer-2.0.0/src/file_organizer/web/file_validators.py +108 -0
  433. local_file_organizer-2.0.0/src/file_organizer/web/files_routes.py +256 -0
  434. local_file_organizer-2.0.0/src/file_organizer/web/marketplace_routes.py +289 -0
  435. local_file_organizer-2.0.0/src/file_organizer/web/organize_routes.py +1074 -0
  436. local_file_organizer-2.0.0/src/file_organizer/web/profile_routes.py +1321 -0
  437. local_file_organizer-2.0.0/src/file_organizer/web/router.py +62 -0
  438. local_file_organizer-2.0.0/src/file_organizer/web/settings_routes.py +705 -0
  439. local_file_organizer-2.0.0/src/file_organizer/web/setup_routes.py +50 -0
  440. local_file_organizer-2.0.0/src/file_organizer/web/static/css/styles.css +1409 -0
  441. local_file_organizer-2.0.0/src/file_organizer/web/static/images/logo.png +0 -0
  442. local_file_organizer-2.0.0/src/file_organizer/web/static/js/app.js +563 -0
  443. local_file_organizer-2.0.0/src/file_organizer/web/static/js/desktop_api.js +150 -0
  444. local_file_organizer-2.0.0/src/file_organizer/web/static/js/htmx.min.js +1 -0
  445. local_file_organizer-2.0.0/src/file_organizer/web/static/js/setup_wizard.js +364 -0
  446. local_file_organizer-2.0.0/src/file_organizer/web/templates/base.html +81 -0
  447. local_file_organizer-2.0.0/src/file_organizer/web/templates/files/_preview.html +46 -0
  448. local_file_organizer-2.0.0/src/file_organizer/web/templates/files/_results.html +239 -0
  449. local_file_organizer-2.0.0/src/file_organizer/web/templates/files/_tree.html +45 -0
  450. local_file_organizer-2.0.0/src/file_organizer/web/templates/files/browser.html +42 -0
  451. local_file_organizer-2.0.0/src/file_organizer/web/templates/index.html +59 -0
  452. local_file_organizer-2.0.0/src/file_organizer/web/templates/marketplace/index.html +176 -0
  453. local_file_organizer-2.0.0/src/file_organizer/web/templates/marketplace/plugin_details.html +47 -0
  454. local_file_organizer-2.0.0/src/file_organizer/web/templates/organize/_history.html +40 -0
  455. local_file_organizer-2.0.0/src/file_organizer/web/templates/organize/_job_status.html +86 -0
  456. local_file_organizer-2.0.0/src/file_organizer/web/templates/organize/_plan.html +125 -0
  457. local_file_organizer-2.0.0/src/file_organizer/web/templates/organize/_stats.html +33 -0
  458. local_file_organizer-2.0.0/src/file_organizer/web/templates/organize/dashboard.html +143 -0
  459. local_file_organizer-2.0.0/src/file_organizer/web/templates/profile/_account_settings.html +42 -0
  460. local_file_organizer-2.0.0/src/file_organizer/web/templates/profile/_activity.html +12 -0
  461. local_file_organizer-2.0.0/src/file_organizer/web/templates/profile/_api_keys.html +48 -0
  462. local_file_organizer-2.0.0/src/file_organizer/web/templates/profile/_edit.html +39 -0
  463. local_file_organizer-2.0.0/src/file_organizer/web/templates/profile/_notifications.html +22 -0
  464. local_file_organizer-2.0.0/src/file_organizer/web/templates/profile/_shared.html +45 -0
  465. local_file_organizer-2.0.0/src/file_organizer/web/templates/profile/_team.html +52 -0
  466. local_file_organizer-2.0.0/src/file_organizer/web/templates/profile/_workspaces.html +49 -0
  467. local_file_organizer-2.0.0/src/file_organizer/web/templates/profile/forgot_password.html +29 -0
  468. local_file_organizer-2.0.0/src/file_organizer/web/templates/profile/index.html +98 -0
  469. local_file_organizer-2.0.0/src/file_organizer/web/templates/profile/login.html +26 -0
  470. local_file_organizer-2.0.0/src/file_organizer/web/templates/profile/register.html +30 -0
  471. local_file_organizer-2.0.0/src/file_organizer/web/templates/profile/reset_password.html +32 -0
  472. local_file_organizer-2.0.0/src/file_organizer/web/templates/settings/_advanced.html +68 -0
  473. local_file_organizer-2.0.0/src/file_organizer/web/templates/settings/_appearance.html +44 -0
  474. local_file_organizer-2.0.0/src/file_organizer/web/templates/settings/_general.html +68 -0
  475. local_file_organizer-2.0.0/src/file_organizer/web/templates/settings/_models.html +66 -0
  476. local_file_organizer-2.0.0/src/file_organizer/web/templates/settings/_organization.html +78 -0
  477. local_file_organizer-2.0.0/src/file_organizer/web/templates/settings/index.html +132 -0
  478. local_file_organizer-2.0.0/src/file_organizer/web/templates/setup_wizard.html +636 -0
  479. local_file_organizer-2.0.0/src/local_file_organizer.egg-info/PKG-INFO +435 -0
  480. local_file_organizer-2.0.0/src/local_file_organizer.egg-info/SOURCES.txt +482 -0
  481. local_file_organizer-2.0.0/src/local_file_organizer.egg-info/dependency_links.txt +1 -0
  482. local_file_organizer-2.0.0/src/local_file_organizer.egg-info/entry_points.txt +4 -0
  483. local_file_organizer-2.0.0/src/local_file_organizer.egg-info/requires.txt +150 -0
  484. local_file_organizer-2.0.0/src/local_file_organizer.egg-info/top_level.txt +1 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Yanhao Qiu
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,435 @@
1
+ Metadata-Version: 2.4
2
+ Name: local-file-organizer
3
+ Version: 2.0.0
4
+ Summary: AI-powered local file management with state-of-the-art models
5
+ Author-email: Local File Organizer Team <noreply@example.com>
6
+ License: MIT OR Apache-2.0
7
+ Project-URL: Homepage, https://github.com/curdriceaurora/Local-File-Organizer
8
+ Project-URL: Documentation, https://github.com/curdriceaurora/Local-File-Organizer#readme
9
+ Project-URL: Repository, https://github.com/curdriceaurora/Local-File-Organizer
10
+ Project-URL: Issues, https://github.com/curdriceaurora/Local-File-Organizer/issues
11
+ Project-URL: Changelog, https://github.com/curdriceaurora/Local-File-Organizer/releases
12
+ Keywords: file-management,ai,organization,local-llm,privacy
13
+ Classifier: Development Status :: 5 - Production/Stable
14
+ Classifier: Intended Audience :: End Users/Desktop
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: License :: OSI Approved :: Apache Software License
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Programming Language :: Python :: 3.14
22
+ Classifier: Topic :: Desktop Environment :: File Managers
23
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
24
+ Requires-Python: >=3.11
25
+ Description-Content-Type: text/markdown
26
+ License-File: LICENSE
27
+ Requires-Dist: ollama>=0.1.0
28
+ Requires-Dist: Pillow~=12.0
29
+ Requires-Dist: snowballstemmer>=2.2
30
+ Requires-Dist: numpy<2.5,>=1.26.4
31
+ Requires-Dist: tqdm~=4.66
32
+ Requires-Dist: defusedxml>=0.7
33
+ Requires-Dist: typer[all]<0.26,>=0.12
34
+ Requires-Dist: rich~=13.0
35
+ Requires-Dist: textual~=0.50
36
+ Requires-Dist: fastapi~=0.109
37
+ Requires-Dist: starlette~=1.3
38
+ Requires-Dist: aiofiles~=23.0
39
+ Requires-Dist: jinja2~=3.1
40
+ Requires-Dist: markupsafe~=3.0
41
+ Requires-Dist: uvicorn[standard]~=0.27
42
+ Requires-Dist: websockets<17,>=12.0
43
+ Requires-Dist: httpx~=0.26
44
+ Requires-Dist: python-multipart>=0.0.9
45
+ Requires-Dist: Pygments>=2.20.0
46
+ Requires-Dist: pyjwt~=2.8
47
+ Requires-Dist: bcrypt<6.0.0,>=4.0.0
48
+ Requires-Dist: sqlalchemy~=2.0
49
+ Requires-Dist: alembic~=1.13
50
+ Requires-Dist: redis~=8.0
51
+ Requires-Dist: pyyaml~=6.0
52
+ Requires-Dist: platformdirs~=4.10
53
+ Requires-Dist: pydantic~=2.5
54
+ Requires-Dist: pydantic-settings~=2.1
55
+ Requires-Dist: email-validator~=2.1
56
+ Requires-Dist: python-dotenv~=1.0
57
+ Requires-Dist: click~=8.1
58
+ Requires-Dist: watchdog<7,>=3.0
59
+ Requires-Dist: psutil<8,>=5.9
60
+ Requires-Dist: loguru>=0.7.0
61
+ Provides-Extra: parsers
62
+ Requires-Dist: PyMuPDF~=1.23; extra == "parsers"
63
+ Requires-Dist: python-docx~=1.0; extra == "parsers"
64
+ Requires-Dist: openpyxl~=3.1; extra == "parsers"
65
+ Requires-Dist: python-pptx>=0.6.0; extra == "parsers"
66
+ Requires-Dist: ebooklib<1,>=0.20; extra == "parsers"
67
+ Requires-Dist: beautifulsoup4~=4.12; extra == "parsers"
68
+ Requires-Dist: lxml~=6.1; extra == "parsers"
69
+ Provides-Extra: web
70
+ Requires-Dist: fastapi~=0.109; extra == "web"
71
+ Requires-Dist: jinja2~=3.1; extra == "web"
72
+ Requires-Dist: uvicorn[standard]~=0.27; extra == "web"
73
+ Requires-Dist: websockets<17,>=12.0; extra == "web"
74
+ Requires-Dist: httpx~=0.26; extra == "web"
75
+ Requires-Dist: python-multipart>=0.0.9; extra == "web"
76
+ Requires-Dist: Pygments>=2.20.0; extra == "web"
77
+ Requires-Dist: pyjwt~=2.8; extra == "web"
78
+ Requires-Dist: bcrypt<6.0.0,>=4.0.0; extra == "web"
79
+ Requires-Dist: redis~=8.0; extra == "web"
80
+ Provides-Extra: dev
81
+ Requires-Dist: pytest~=9.0.3; extra == "dev"
82
+ Requires-Dist: pytest-asyncio~=1.4; extra == "dev"
83
+ Requires-Dist: pytest-cov<8,>=4.1; extra == "dev"
84
+ Requires-Dist: pytest-mock~=3.12; extra == "dev"
85
+ Requires-Dist: pytest-timeout<2.5.0,>=2.2.0; extra == "dev"
86
+ Requires-Dist: pytest-xdist~=3.5; extra == "dev"
87
+ Requires-Dist: pytest-randomly~=3.15; extra == "dev"
88
+ Requires-Dist: mypy<1.20,>=1.8; extra == "dev"
89
+ Requires-Dist: types-PyYAML~=6.0; extra == "dev"
90
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
91
+ Requires-Dist: black<27.0,>=23.12; extra == "dev"
92
+ Requires-Dist: isort~=5.13; extra == "dev"
93
+ Requires-Dist: pre-commit~=3.6; extra == "dev"
94
+ Requires-Dist: codespell~=2.2; extra == "dev"
95
+ Requires-Dist: faker~=40.12; extra == "dev"
96
+ Requires-Dist: pytest-benchmark<6,>=4.0; extra == "dev"
97
+ Requires-Dist: interrogate~=1.5; extra == "dev"
98
+ Requires-Dist: pymarkdownlnt>=0.9.25; extra == "dev"
99
+ Requires-Dist: deptry>=0.16.0; extra == "dev"
100
+ Requires-Dist: diff-cover~=7.0; extra == "dev"
101
+ Requires-Dist: asgi-lifespan~=2.1; extra == "dev"
102
+ Requires-Dist: pytest-playwright>=0.5.0; extra == "dev"
103
+ Requires-Dist: axe-playwright-python>=0.1.7; extra == "dev"
104
+ Provides-Extra: cloud
105
+ Requires-Dist: openai~=2.44; extra == "cloud"
106
+ Provides-Extra: llama
107
+ Requires-Dist: llama-cpp-python>=0.2.0; extra == "llama"
108
+ Provides-Extra: mlx
109
+ Requires-Dist: mlx-lm>=0.0.19; platform_system == "Darwin" and extra == "mlx"
110
+ Provides-Extra: claude
111
+ Requires-Dist: anthropic>=0.20.0; extra == "claude"
112
+ Provides-Extra: gui
113
+ Requires-Dist: PyQt6~=6.6; extra == "gui"
114
+ Provides-Extra: desktop
115
+ Requires-Dist: pywebview>=4.4; extra == "desktop"
116
+ Requires-Dist: uvicorn[standard]~=0.27; extra == "desktop"
117
+ Provides-Extra: audio
118
+ Requires-Dist: faster-whisper~=1.0; extra == "audio"
119
+ Requires-Dist: torch~=2.1; extra == "audio"
120
+ Requires-Dist: mutagen~=1.47; extra == "audio"
121
+ Requires-Dist: tinytag<3.0,>=1.10; extra == "audio"
122
+ Requires-Dist: pydub>=0.25.0; extra == "audio"
123
+ Requires-Dist: audioop-lts; python_version >= "3.13" and extra == "audio"
124
+ Provides-Extra: video
125
+ Requires-Dist: opencv-python~=4.8; extra == "video"
126
+ Requires-Dist: scenedetect[opencv]>=0.6.0; extra == "video"
127
+ Provides-Extra: dedup
128
+ Requires-Dist: imagededup>=0.3.0; extra == "dedup"
129
+ Requires-Dist: scikit-learn~=1.4; extra == "dedup"
130
+ Requires-Dist: pypdf<7,>=4; extra == "dedup"
131
+ Requires-Dist: striprtf>=0.0.26; extra == "dedup"
132
+ Provides-Extra: archive
133
+ Requires-Dist: py7zr>=0.20.0; extra == "archive"
134
+ Requires-Dist: rarfile~=4.1; extra == "archive"
135
+ Provides-Extra: scientific
136
+ Requires-Dist: h5py~=3.10; extra == "scientific"
137
+ Requires-Dist: netCDF4~=1.6; extra == "scientific"
138
+ Requires-Dist: scipy~=1.11; extra == "scientific"
139
+ Provides-Extra: cad
140
+ Requires-Dist: ezdxf~=1.1; extra == "cad"
141
+ Provides-Extra: build
142
+ Requires-Dist: pyinstaller~=6.0; extra == "build"
143
+ Provides-Extra: docs
144
+ Requires-Dist: mkdocs~=1.5; extra == "docs"
145
+ Requires-Dist: mkdocs-material~=9.5; extra == "docs"
146
+ Requires-Dist: pymdown-extensions~=11.0; extra == "docs"
147
+ Requires-Dist: mkdocs-minify-plugin>=0.8.0; extra == "docs"
148
+ Requires-Dist: mkdocstrings[python]>=0.24.0; extra == "docs"
149
+ Provides-Extra: search
150
+ Requires-Dist: rank-bm25>=0.2.0; extra == "search"
151
+ Requires-Dist: scikit-learn~=1.4; extra == "search"
152
+ Provides-Extra: all
153
+ Requires-Dist: local-file-organizer[archive,audio,build,cad,claude,cloud,dedup,dev,gui,llama,mlx,parsers,scientific,search,video,web]; extra == "all"
154
+ Dynamic: license-file
155
+
156
+ # File Organizer v2.0
157
+
158
+ [![CI](https://github.com/curdriceaurora/Local-File-Organizer/actions/workflows/ci.yml/badge.svg)](https://github.com/curdriceaurora/Local-File-Organizer/actions/workflows/ci.yml)
159
+ [![Docs](https://img.shields.io/badge/docs-user%20guide-blue)](docs/USER_GUIDE.md)
160
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11+-3776AB?logo=python&logoColor=white)](https://www.python.org/)
161
+ [![License: MIT](https://img.shields.io/badge/license-MIT-green)](LICENSE)
162
+ [![Version](https://img.shields.io/badge/version-2.0.0-blue)](CHANGELOG.md)
163
+
164
+ > AI-powered local file management. Local-first by default (Ollama, no cloud required) --
165
+ > or connect any OpenAI-compatible endpoint or Anthropic Claude when you need it.
166
+
167
+ **840 tests** | **408 modules** | **39 file types**
168
+
169
+ ![TUI overview](docs/assets/tui-overview.svg)
170
+
171
+ ## Contents
172
+
173
+ - [Features](#features)
174
+ - [How It Works](#how-it-works)
175
+ - [Quick Start](#quick-start)
176
+ - [Web UI](#web-ui)
177
+ - [Documentation](#documentation)
178
+ - [Optional Feature Packs](#optional-feature-packs)
179
+ - [Project Structure](#project-structure)
180
+ - [Development](#development)
181
+ - [Contributing](#contributing)
182
+ - [Configuration](#configuration)
183
+ - [License](#license)
184
+
185
+ ## Features
186
+
187
+ ### AI and Analysis
188
+
189
+ - **AI-Powered Organization**: Qwen 2.5 3B (text) + Qwen 2.5-VL 7B (vision) via Ollama — or any OpenAI-compatible endpoint (OpenAI, LM Studio, vLLM) — or Anthropic Claude
190
+ - **Audio Transcription**: Local speech-to-text with faster-whisper (GPU-accelerated)
191
+ - **Video Analysis**: Scene detection and keyframe extraction
192
+ - **Intelligence**: Pattern learning, preference tracking, smart suggestions, auto-tagging
193
+
194
+ ### Interfaces
195
+
196
+ - **Terminal UI**: 8-view Textual TUI (Files, Analytics, Audio, History, Copilot, and more)
197
+ - **Web UI**: Browser-based interface via FastAPI and HTMX
198
+ - **Desktop App**: Native OS window via pywebview — single Python process, no Electron, no Rust
199
+ - **Full CLI**: Organize, rules, suggest, dedupe, daemon, analytics, update, api-keys
200
+ - **Copilot Chat**: Natural-language assistant -- "organize ./Downloads", "find report.pdf", "undo"
201
+
202
+ ### Organization
203
+
204
+ - **Organization Rules**: Automated sorting with conditions, preview, and YAML persistence
205
+ - **PARA + Johnny Decimal**: Built-in organizational methodologies
206
+ - **Deduplication**: Hash and semantic duplicate detection
207
+ - **Undo/Redo**: Full operation history
208
+ - **Auto-Update**: Linux AppImage self-updates from GitHub Releases (verified downloads + rollback); macOS/Windows update via `pip`/`pipx`
209
+ - **Cross-Platform**: Runs on macOS, Windows, and Linux (verified in CI). Linux ships a standalone AppImage plus executables; install on macOS/Windows via `pip`/`pipx`
210
+
211
+ ## How It Works
212
+
213
+ ```
214
+ Source Directory AI Analysis Organized Output
215
+ ┌──────────────┐ ┌──────────────────┐ ┌──────────────────┐
216
+ │ ./Downloads │ │ Content │ │ ./Organized │
217
+ │ │ │ Extraction │ │ │
218
+ │ report.pdf │────>│ (text, vision, │────>│ Work/ │
219
+ │ photo.jpg │ │ audio, video) │ │ Reports/ │
220
+ │ meeting.mp3 │ │ │ │ Photos/ │
221
+ │ clip.mp4 │ │ AI Categorize │ │ Vacation/ │
222
+ │ notes.txt │ │ (Ollama/OpenAI/ │ │ Audio/ │
223
+ │ │ │ Claude) │ │ Meetings/ │
224
+ └──────────────┘ └──────────────────┘ └──────────────────┘
225
+
226
+ ┌────────┴────────┐
227
+ │ Learn & Adapt │
228
+ │ (patterns, │
229
+ │ preferences, │
230
+ │ rules) │
231
+ └─────────────────┘
232
+ ```
233
+
234
+ 1. **Scan** — Reads files from a source directory, extracting text, metadata, and visual content per file type (80+ formats supported)
235
+ 2. **Analyze** — Sends extracted content to an AI model (Ollama, OpenAI, or Claude) for categorization and naming
236
+ 3. **Organize** — Moves or copies files into a structured folder hierarchy with AI-generated names
237
+ 4. **Learn** — Tracks your patterns and preferences over time for smarter future suggestions
238
+
239
+ ## Screenshots
240
+
241
+ ![TUI demo](docs/assets/tui-demo.gif)
242
+
243
+ ## Quick Start (Essentials)
244
+
245
+ ### With Ollama (local, default)
246
+
247
+ ```bash
248
+ # Install from PyPI — pipx keeps it isolated and on your PATH:
249
+ pipx install local-file-organizer
250
+ # or: pip install local-file-organizer
251
+
252
+ # 1) Configure defaults
253
+ fo setup
254
+
255
+ # 2) Preview a folder before changing anything
256
+ fo preview ~/Downloads
257
+
258
+ # 3) Run organization
259
+ fo organize ~/Downloads ~/Organized
260
+
261
+ # 4) Roll back the most recent organize run if needed
262
+ fo undo
263
+ ```
264
+
265
+ ### Prefer a browser?
266
+
267
+ ```bash
268
+ file-organizer serve --reload
269
+ ```
270
+
271
+ Then visit `http://localhost:8000/ui/`.
272
+
273
+ ### Need cloud providers instead of the default local flow?
274
+
275
+ Use the [AI Provider Setup guide](docs/setup/ai-providers.md) for OpenAI-compatible endpoints and Claude.
276
+
277
+ ```bash
278
+ # OpenAI-compatible providers
279
+ export FO_PROVIDER=openai
280
+
281
+ # Anthropic Claude
282
+ export FO_PROVIDER=claude
283
+ ```
284
+
285
+ ## Web UI
286
+
287
+ Start the FastAPI server and open the UI:
288
+
289
+ ```bash
290
+ file-organizer serve --reload
291
+ ```
292
+
293
+ Then visit `http://localhost:8000/ui/` for the HTMX interface.
294
+
295
+ ## Documentation
296
+
297
+ ### Essentials
298
+
299
+ - [Documentation Home](docs/index.md)
300
+ - [Getting Started](docs/getting-started.md)
301
+ - [CLI Reference](docs/cli-reference.md#core-first-run-commands)
302
+ - [User Guide Workflow Map](docs/USER_GUIDE.md#workflow-map-quick-paths)
303
+ - [Web UI Quick Start](docs/web-ui/getting-started.md)
304
+ - [Troubleshooting](docs/troubleshooting.md)
305
+
306
+ ### Advanced / Admin / Developer
307
+
308
+ - [Full CLI Reference](docs/cli-reference.md)
309
+ - [Terminal UI Guide](docs/tui.md)
310
+ - [Desktop App Guide](docs/desktop-app.md)
311
+ - [AI Provider Setup](docs/setup/ai-providers.md)
312
+ - [Audio & Video Processing Guide](docs/setup/audio-video.md)
313
+ - [Configuration Guide](docs/CONFIGURATION.md)
314
+ - [API Reference](docs/api/index.md)
315
+ - [File Format Reference](docs/admin/file-format-reference.md)
316
+ - [Path Standardization & Migration](docs/config/path-standardization.md)
317
+ - [Johnny Decimal User Guide](docs/methodologies/johnny-decimal/user-guide.md)
318
+ - [Johnny Decimal Migration Guide](docs/methodologies/johnny-decimal/migration.md)
319
+
320
+ ## Optional Feature Packs
321
+
322
+ Canonical extras matrix:
323
+
324
+ - [Dependencies & Optional Extras](docs/setup/dependencies.md#optional-extras-matrix)
325
+
326
+ Common installs:
327
+
328
+ ```bash
329
+ pip install "local-file-organizer[parsers,web]"
330
+ pip install "local-file-organizer[cloud,claude]"
331
+ pip install "local-file-organizer[all]"
332
+ ```
333
+
334
+ > **From source (development):** clone the repo and use an editable install
335
+ > instead, e.g. `pip install -e ".[all]"`.
336
+
337
+ ### Audio system dependencies
338
+
339
+ For full audio format support, the `[audio]` pack uses **FFmpeg** (all platforms) and optionally **CUDA + cuDNN** (NVIDIA GPU users).
340
+
341
+ **FFmpeg** — required for non-`.wav` formats (MP3, M4A, FLAC, OGG); optional if you only transcribe raw `.wav`:
342
+
343
+ ```bash
344
+ # macOS
345
+ brew install ffmpeg
346
+
347
+ # Ubuntu / Debian
348
+ sudo apt install ffmpeg
349
+
350
+ # Windows (winget)
351
+ winget install ffmpeg
352
+ ```
353
+
354
+ **CUDA + cuDNN** — optional, for significantly faster transcription (see [faster-whisper benchmarks](https://github.com/SYSTRAN/faster-whisper) for hardware-specific numbers):
355
+
356
+ ```bash
357
+ # Install CUDA Toolkit from https://developer.nvidia.com/cuda-downloads
358
+ # Install cuDNN from https://developer.nvidia.com/cudnn
359
+
360
+ # Verify the full transcription backend (not just PyTorch)
361
+ python3 -c "from faster_whisper import WhisperModel; print('faster-whisper OK')"
362
+ python3 -c "import torch; print('CUDA:', torch.cuda.is_available())"
363
+ ```
364
+
365
+ **Fallback behavior**: without FFmpeg, only `.wav` files are transcribed; other formats are organized by filename/metadata but not content-analyzed. Without CUDA, transcription runs on CPU (slower but fully functional).
366
+
367
+ See the [Installation Guide](docs/admin/installation.md) for troubleshooting and advanced configuration.
368
+
369
+ ## Project Structure
370
+
371
+ <details>
372
+ <summary>Click to expand</summary>
373
+
374
+ ```
375
+ src/file_organizer/
376
+ ├── api/ # FastAPI web backend
377
+ ├── cli/ # CLI commands and entry points
378
+ ├── client/ # HTTP client utilities
379
+ ├── config/ # Configuration management
380
+ ├── core/ # Organization engine and business logic
381
+ ├── daemon/ # Background file watcher daemon
382
+ ├── deploy/ # Deployment helpers
383
+ ├── desktop/ # Native desktop app (pywebview)
384
+ ├── events/ # Event system
385
+ ├── history/ # Operation history and undo/redo
386
+ ├── integrations/ # External service integrations
387
+ ├── interfaces/ # Abstract interfaces and protocols
388
+ ├── methodologies/ # PARA, Johnny Decimal implementations
389
+ ├── models/ # Data models
390
+ ├── optimization/ # Performance optimization
391
+ ├── parallel/ # Parallel processing
392
+ ├── pipeline/ # File processing pipeline
393
+ ├── plugins/ # Plugin system (audio, video, archives, etc.)
394
+ ├── review_regressions/ # Code quality detectors
395
+ ├── services/ # Core services (analytics, dedup, text, etc.)
396
+ ├── tui/ # Textual terminal UI (8 views)
397
+ ├── undo/ # Undo/redo infrastructure
398
+ ├── updater/ # Auto-update from GitHub Releases
399
+ ├── utils/ # Shared utilities
400
+ ├── watcher/ # File system watcher
401
+ └── web/ # HTMX web UI templates and assets
402
+ ```
403
+
404
+ </details>
405
+
406
+ ## Development
407
+
408
+ ```bash
409
+ # Run tests
410
+ pytest
411
+
412
+ # Lint
413
+ ruff check src/
414
+ ```
415
+
416
+ ## Contributing
417
+
418
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, coding standards, and how to submit changes.
419
+
420
+ ## Configuration
421
+
422
+ Configuration is stored in platform-appropriate locations using `platformdirs`:
423
+ - **macOS**: `~/Library/Application Support/file-organizer/`
424
+ - **Linux**: `~/.config/file-organizer/` (or `$XDG_CONFIG_HOME/file-organizer/`)
425
+ - **Windows**: `%APPDATA%/file-organizer/`
426
+
427
+ See [Configuration Guide](docs/CONFIGURATION.md) for details.
428
+
429
+ ## License
430
+
431
+ This project is licensed under the [MIT License](LICENSE).
432
+
433
+ ---
434
+
435
+ **Status**: Stable | **Version**: 2.0.0 | **Last Updated**: 2026-07-05