bertrend 0.4.4__tar.gz → 0.4.6__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 (331) hide show
  1. {bertrend-0.4.4 → bertrend-0.4.6}/PKG-INFO +1 -1
  2. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/BERTrend.py +7 -0
  3. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/prospective_demo/feeds_config.py +7 -0
  4. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/queue_management/bertrend_worker.py +48 -6
  5. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/config/bertopic_default_config.toml +1 -0
  6. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/scheduling/dashboard_scheduling.py +7 -3
  7. {bertrend-0.4.4 → bertrend-0.4.6}/pyproject.toml +1 -1
  8. {bertrend-0.4.4 → bertrend-0.4.6}/AUTHORS.txt +0 -0
  9. {bertrend-0.4.4 → bertrend-0.4.6}/LICENSE.md +0 -0
  10. {bertrend-0.4.4 → bertrend-0.4.6}/README.md +0 -0
  11. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/BERTopicModel.py +0 -0
  12. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/__init__.py +0 -0
  13. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/article_scoring/__init__.py +0 -0
  14. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/article_scoring/article_scoring.py +0 -0
  15. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/article_scoring/prompts.py +0 -0
  16. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/article_scoring/scoring_agent.py +0 -0
  17. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/__init__.py +0 -0
  18. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/common/__init__.py +0 -0
  19. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/common/apscheduler_utils.py +0 -0
  20. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/common/crontab_utils.py +0 -0
  21. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/common/date_utils.py +0 -0
  22. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/common/mail_utils.py +0 -0
  23. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/common/scheduler_utils.py +0 -0
  24. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/config/feeds/arxiv_feed.toml +0 -0
  25. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/config/feeds/decarbonation_feed.toml +0 -0
  26. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/config/feeds/feed_deep_research_example.toml +0 -0
  27. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/config/feeds/llm_en_feed.toml +0 -0
  28. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/config/feeds/llm_feed.toml +0 -0
  29. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/config/feeds/nlp_feed.toml +0 -0
  30. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/config/feeds/rte_feed.toml +0 -0
  31. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/config/newsletters/arxiv_newsletter_from_last.toml +0 -0
  32. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/config/newsletters/decarbonation_newsletter_from_last.toml +0 -0
  33. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/config/newsletters/llm_en_newsletter_from_last.toml +0 -0
  34. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/config/newsletters/llm_newsletter_from_last.toml +0 -0
  35. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/config/newsletters/nlp_newsletter_from_last.toml +0 -0
  36. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/config/newsletters/rte_newsletter_from_last.toml +0 -0
  37. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/data_provider/__init__.py +0 -0
  38. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/data_provider/__main__.py +0 -0
  39. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/data_provider/arxiv_provider.py +0 -0
  40. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/data_provider/atom_feed_provider.py +0 -0
  41. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/data_provider/bing_news_provider.py +0 -0
  42. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/data_provider/data_provider.py +0 -0
  43. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/data_provider/data_provider_utils.py +0 -0
  44. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/data_provider/deep_research_provider.py +0 -0
  45. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/data_provider/google_news_provider.py +0 -0
  46. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/data_provider/newscatcher_provider.py +0 -0
  47. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/data_provider/rss_feed_provider.py +0 -0
  48. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/data_provider/utils.py +0 -0
  49. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/exploration/__init__.py +0 -0
  50. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/exploration/curebot/.streamlit/config.toml +0 -0
  51. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/exploration/curebot/__init__.py +0 -0
  52. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/exploration/curebot/app.py +0 -0
  53. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/exploration/curebot/app_utils.py +0 -0
  54. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/exploration/curebot/config.toml +0 -0
  55. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/exploration/curebot/import_extraction_article.ipynb +0 -0
  56. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/exploration/curebot/prompts.py +0 -0
  57. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/exploration/curebot/start_newsletter_generator.sh +0 -0
  58. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/exploration/curebot/tabs/__init__.py +0 -0
  59. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/exploration/curebot/tabs/tab1.py +0 -0
  60. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/exploration/curebot/tabs/tab2.py +0 -0
  61. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/exploration/curebot/tabs/tab3.py +0 -0
  62. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/exploration/geoviz/.streamlit/config.toml +0 -0
  63. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/exploration/geoviz/__init__.py +0 -0
  64. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/exploration/geoviz/app.py +0 -0
  65. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/exploration/geoviz/backend.py +0 -0
  66. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/exploration/start_apps.sh +0 -0
  67. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/exploration/stop_apps.sh +0 -0
  68. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/install_feeds_and_newsletters.py +0 -0
  69. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/newsletters/__init__.py +0 -0
  70. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/newsletters/__main__.py +0 -0
  71. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/newsletters/newsletter_generation.py +0 -0
  72. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/newsletters/utils.py +0 -0
  73. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/prospective_demo/.streamlit/config.toml +0 -0
  74. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/prospective_demo/.streamlit/secrets.toml.example +0 -0
  75. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/prospective_demo/__init__.py +0 -0
  76. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/prospective_demo/app.py +0 -0
  77. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/prospective_demo/authentication.py +0 -0
  78. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/prospective_demo/automated_report_generation.py +0 -0
  79. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/prospective_demo/dashboard_analysis.py +0 -0
  80. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/prospective_demo/dashboard_common.py +0 -0
  81. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/prospective_demo/dashboard_comparative.py +0 -0
  82. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/prospective_demo/dashboard_signals.py +0 -0
  83. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/prospective_demo/data_model.py +0 -0
  84. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/prospective_demo/detailed_report_template.html +0 -0
  85. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/prospective_demo/feeds_common.py +0 -0
  86. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/prospective_demo/feeds_data.py +0 -0
  87. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/prospective_demo/i18n.py +0 -0
  88. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/prospective_demo/i18n_translations.py +0 -0
  89. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/prospective_demo/llm_utils.py +0 -0
  90. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/prospective_demo/models_info.py +0 -0
  91. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/prospective_demo/perf_utils.py +0 -0
  92. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/prospective_demo/process_new_data.py +0 -0
  93. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/prospective_demo/report_generation.py +0 -0
  94. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/prospective_demo/report_generation_utils.py +0 -0
  95. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/prospective_demo/start_demo.sh +0 -0
  96. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/prospective_demo/utils.py +0 -0
  97. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/__init__.py +0 -0
  98. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/bertrend/__init__.py +0 -0
  99. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/bertrend/bertrend_service.py +0 -0
  100. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/bertrend/config/__init__.py +0 -0
  101. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/bertrend/config/default_config.toml +0 -0
  102. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/bertrend/config/settings.py +0 -0
  103. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/bertrend/models/__init__.py +0 -0
  104. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/bertrend/models/bertrend_app_models.py +0 -0
  105. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/bertrend/models/data_provider_models.py +0 -0
  106. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/bertrend/models/newsletters_models.py +0 -0
  107. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/bertrend/routers/__init__.py +0 -0
  108. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/bertrend/routers/bertrend_app.py +0 -0
  109. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/bertrend/routers/data_provider.py +0 -0
  110. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/bertrend/routers/info.py +0 -0
  111. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/bertrend/routers/newsletters.py +0 -0
  112. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/bertrend/start.py +0 -0
  113. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/bertrend/status.py +0 -0
  114. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/bertrend/stop.py +0 -0
  115. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/queue_management/__init__.py +0 -0
  116. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/queue_management/client.py +0 -0
  117. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/queue_management/docker-compose-rabbitmq.yml +0 -0
  118. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/queue_management/queue_manager.py +0 -0
  119. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/queue_management/rabbitmq_config.py +0 -0
  120. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/queue_management/start_rabbitmq.sh +0 -0
  121. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/queue_monitor/.streamlit/config.toml +0 -0
  122. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/queue_monitor/__init__.py +0 -0
  123. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/queue_monitor/app.py +0 -0
  124. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/utils/__init__.py +0 -0
  125. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/bertrend_apps/services/utils/logging_utils.py +0 -0
  126. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/config/bertrend_default_config.toml +0 -0
  127. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/config/parameters.py +0 -0
  128. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/config/services_default_config.toml +0 -0
  129. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/__init__.py +0 -0
  130. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/demos_utils/__init__.py +0 -0
  131. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/demos_utils/data_loading_component.py +0 -0
  132. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/demos_utils/embed_documents_component.py +0 -0
  133. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/demos_utils/i18n.py +0 -0
  134. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/demos_utils/i18n_translations.py +0 -0
  135. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/demos_utils/icons.py +0 -0
  136. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/demos_utils/parameters_component.py +0 -0
  137. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/demos_utils/state_utils.py +0 -0
  138. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/start_summarizer_app.sh +0 -0
  139. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/start_topic_analysis_app.sh +0 -0
  140. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/start_weak_signals_app.sh +0 -0
  141. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/streamlit_components/__init__.py +0 -0
  142. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/streamlit_components/clickable_df_component.py +0 -0
  143. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/streamlit_components/input_with_pills_component.py +0 -0
  144. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/summarization/__init__.py +0 -0
  145. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/summarization/summarizer_app.py +0 -0
  146. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/topic_analysis/.streamlit/config.toml +0 -0
  147. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/topic_analysis/__init__.py +0 -0
  148. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/topic_analysis/app.py +0 -0
  149. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/topic_analysis/app_utils.py +0 -0
  150. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/topic_analysis/demo_pages/__init__.py +0 -0
  151. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/topic_analysis/demo_pages/explore_topics.py +0 -0
  152. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/topic_analysis/demo_pages/newsletters_generation.py +0 -0
  153. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/topic_analysis/demo_pages/temporal_visualizations.py +0 -0
  154. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/topic_analysis/demo_pages/topic_visualizations.py +0 -0
  155. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/topic_analysis/demo_pages/training_page.py +0 -0
  156. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/topic_analysis/i18n_translations.py +0 -0
  157. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/weak_signals/.streamlit/config.toml +0 -0
  158. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/weak_signals/__init__.py +0 -0
  159. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/weak_signals/app.py +0 -0
  160. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/weak_signals/i18n_translations.py +0 -0
  161. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/demos/weak_signals/visualizations_utils.py +0 -0
  162. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/llm_utils/__init__.py +0 -0
  163. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/llm_utils/agent_utils.py +0 -0
  164. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/llm_utils/newsletter.css +0 -0
  165. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/llm_utils/newsletter_features.py +0 -0
  166. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/llm_utils/newsletter_model.py +0 -0
  167. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/llm_utils/newsletter_outlook_template.html +0 -0
  168. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/llm_utils/newsletter_template.html +0 -0
  169. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/llm_utils/openai_client.py +0 -0
  170. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/llm_utils/prompts.py +0 -0
  171. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/metrics/__init__.py +0 -0
  172. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/metrics/temporal_metrics_embedding.py +0 -0
  173. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/metrics/topic_metrics.py +0 -0
  174. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/resources/common_ngrams.json +0 -0
  175. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/resources/stopwords-en.json +0 -0
  176. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/resources/stopwords-fr.json +0 -0
  177. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/resources/stopwords-rte.json +0 -0
  178. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/__init__.py +0 -0
  179. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/authentication.py +0 -0
  180. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/cert.pem +0 -0
  181. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/embedding_client.py +0 -0
  182. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/embedding_server/README.md +0 -0
  183. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/embedding_server/__init__.py +0 -0
  184. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/embedding_server/bertrend_client_registry.json +0 -0
  185. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/embedding_server/config/default_config.toml +0 -0
  186. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/embedding_server/config/settings.py +0 -0
  187. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/embedding_server/main.py +0 -0
  188. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/embedding_server/models.py +0 -0
  189. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/embedding_server/requirements.txt +0 -0
  190. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/embedding_server/routers/__init__.py +0 -0
  191. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/embedding_server/routers/authentication.py +0 -0
  192. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/embedding_server/routers/embeddings.py +0 -0
  193. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/embedding_server/routers/info.py +0 -0
  194. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/embedding_server/security.py +0 -0
  195. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/embedding_server/start.py +0 -0
  196. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/embedding_server/status.py +0 -0
  197. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/embedding_server/stop.py +0 -0
  198. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/embedding_service.py +0 -0
  199. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/key.pem +0 -0
  200. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/scheduling/.dockerignore +0 -0
  201. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/scheduling/Docker_setup.md +0 -0
  202. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/scheduling/Dockerfile +0 -0
  203. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/scheduling/__init__.py +0 -0
  204. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/scheduling/docker-compose.yml +0 -0
  205. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/scheduling/job_utils/__init__.py +0 -0
  206. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/scheduling/job_utils/job_functions.py +0 -0
  207. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/scheduling/models/__init__.py +0 -0
  208. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/scheduling/models/scheduling_models.py +0 -0
  209. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/scheduling/requirements.txt +0 -0
  210. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/scheduling/routers/info.py +0 -0
  211. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/scheduling/routers/scheduling.py +0 -0
  212. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/scheduling/scheduling_service.py +0 -0
  213. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/scheduling/start_docker_scheduling_service.sh +0 -0
  214. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/summarizer.py +0 -0
  215. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/summary/__init__.py +0 -0
  216. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/summary/abstractive_summarizer.py +0 -0
  217. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/summary/chatgpt_summarizer.py +0 -0
  218. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/summary/extractive_summarizer.py +0 -0
  219. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/summary/lexrank.py +0 -0
  220. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/summary/prompts.py +0 -0
  221. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/summary_client.py +0 -0
  222. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/summary_server/__init__.py +0 -0
  223. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/summary_server/config/__init__.py +0 -0
  224. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/summary_server/config/default_config.toml +0 -0
  225. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/summary_server/config/settings.py +0 -0
  226. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/summary_server/main.py +0 -0
  227. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/summary_server/models.py +0 -0
  228. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/summary_server/routers/__init__.py +0 -0
  229. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/summary_server/routers/info.py +0 -0
  230. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/summary_server/routers/summarize.py +0 -0
  231. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/services/summary_server/start.py +0 -0
  232. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/README_integration_tests.md +0 -0
  233. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/__init__.py +0 -0
  234. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/apps/__init__.py +0 -0
  235. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/apps/test_process_new_data.py +0 -0
  236. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/conftest.py +0 -0
  237. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/core/__init__.py +0 -0
  238. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/core/test_bertrend.py +0 -0
  239. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/core/test_data_structure.py +0 -0
  240. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/core/test_representative_docs.py +0 -0
  241. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/core/test_temporal_metrics_embedding.py +0 -0
  242. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/core/test_topic_description.py +0 -0
  243. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/core/test_topic_metrics.py +0 -0
  244. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/core/test_topic_model.py +0 -0
  245. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/core/test_trend_analysis_data_structure.py +0 -0
  246. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/core/test_trend_analysis_prompts.py +0 -0
  247. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/core/test_trend_analysis_visualizations.py +0 -0
  248. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/core/test_trend_analysis_weak_signals.py +0 -0
  249. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/core/test_visualizations.py +0 -0
  250. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/data_provider/__init__.py +0 -0
  251. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/data_provider/test_arxiv_provider.py +0 -0
  252. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/data_provider/test_bing_news_provider.py +0 -0
  253. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/data_provider/test_data_provider_base.py +0 -0
  254. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/data_provider/test_data_provider_utils.py +0 -0
  255. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/data_provider/test_deep_research_live.py +0 -0
  256. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/data_provider/test_deep_research_provider.py +0 -0
  257. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/data_provider/test_google_news_provider.py +0 -0
  258. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/data_provider/test_newscatcher_provider.py +0 -0
  259. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/data_provider/test_rss_atom_provider.py +0 -0
  260. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/demos/__init__.py +0 -0
  261. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/demos/summarization/__init__.py +0 -0
  262. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/demos/summarization/test_summarizer_app.py +0 -0
  263. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/llm/__init__.py +0 -0
  264. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/llm/test_agent_utils.py +0 -0
  265. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/llm/test_article_scoring.py +0 -0
  266. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/llm/test_article_scoring_models.py +0 -0
  267. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/llm/test_newsletter_features.py +0 -0
  268. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/llm/test_newsletter_model.py +0 -0
  269. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/llm/test_openai_client.py +0 -0
  270. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/__init__.py +0 -0
  271. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/bertrend/__init__.py +0 -0
  272. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/bertrend/test_bertrend_service.py +0 -0
  273. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/bertrend/test_models.py +0 -0
  274. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/bertrend/test_routers_bertrend_app.py +0 -0
  275. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/bertrend/test_routers_info.py +0 -0
  276. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/bertrend/test_routers_newsletters.py +0 -0
  277. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/embedding/__init__.py +0 -0
  278. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/embedding/test_embedding_client.py +0 -0
  279. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/embedding_server/__init__.py +0 -0
  280. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/embedding_server/test_models.py +0 -0
  281. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/embedding_server/test_routers.py +0 -0
  282. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/embedding_server/test_security.py +0 -0
  283. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/embedding_server/test_settings.py +0 -0
  284. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/queue/__init__.py +0 -0
  285. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/queue/test_bertrend_worker.py +0 -0
  286. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/queue/test_client.py +0 -0
  287. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/queue/test_queue_manager.py +0 -0
  288. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/scheduling/__init__.py +0 -0
  289. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/scheduling/test_job_exception_fix.py +0 -0
  290. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/scheduling/test_scheduling_service.py +0 -0
  291. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/scheduling/test_stress_test.py +0 -0
  292. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/summarizer/__init__.py +0 -0
  293. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/summarizer/test_abstractive_summarizer.py +0 -0
  294. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/summarizer/test_chatgpt_summarizer.py +0 -0
  295. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/summarizer/test_extractive_summarizer.py +0 -0
  296. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/summarizer/test_summarizer.py +0 -0
  297. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/summary/__init__.py +0 -0
  298. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/summary/test_summary_client.py +0 -0
  299. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/summary/test_summary_config.py +0 -0
  300. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/services/summary/test_summary_server.py +0 -0
  301. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/test_installation.py +0 -0
  302. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/test_integration.py +0 -0
  303. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/utils/__init__.py +0 -0
  304. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/utils/test_apscheduler_utils.py +0 -0
  305. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/utils/test_cache_utils.py +0 -0
  306. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/utils/test_config_utils.py +0 -0
  307. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/utils/test_crontab_utils.py +0 -0
  308. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/utils/test_data_loading.py +0 -0
  309. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/utils/test_date_utils.py +0 -0
  310. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/utils/test_lazy_scheduler.py +0 -0
  311. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/utils/test_mail_utils.py +0 -0
  312. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/utils/test_multiworker.py +0 -0
  313. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/utils/test_scheduler_utils.py +0 -0
  314. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/tests/utils/test_utils_init.py +0 -0
  315. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/topic_analysis/__init__.py +0 -0
  316. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/topic_analysis/data_structure.py +0 -0
  317. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/topic_analysis/prompts.py +0 -0
  318. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/topic_analysis/representative_docs.py +0 -0
  319. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/topic_analysis/topic_description.py +0 -0
  320. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/topic_analysis/visualizations.py +0 -0
  321. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/trend_analysis/__init__.py +0 -0
  322. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/trend_analysis/data_structure.py +0 -0
  323. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/trend_analysis/prompts.py +0 -0
  324. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/trend_analysis/signal_llm_template_en.html +0 -0
  325. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/trend_analysis/signal_llm_template_fr.html +0 -0
  326. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/trend_analysis/visualizations.py +0 -0
  327. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/trend_analysis/weak_signals.py +0 -0
  328. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/utils/__init__.py +0 -0
  329. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/utils/cache_utils.py +0 -0
  330. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/utils/config_utils.py +0 -0
  331. {bertrend-0.4.4 → bertrend-0.4.6}/bertrend/utils/data_loading.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bertrend
3
- Version: 0.4.4
3
+ Version: 0.4.6
4
4
  Summary: BERTrend analyses topic evolution over time using state-of-the-art transformer models: topic modelling and LLM
5
5
  License: LICENSE.md
6
6
  License-File: AUTHORS.txt
@@ -782,6 +782,13 @@ class BERTrend:
782
782
  # Unserialize BERTrend object (using dill as an improvement of pickle for complex objects)
783
783
  with open(models_path / BERTREND_FILE, "rb") as f:
784
784
  bertrend = dill.load(f)
785
+
786
+ # Ensure compatibility with older HDBSCAN versions: cluster_selection_persistence attribute
787
+ if getattr(bertrend, "last_topic_model", None) is not None and not hasattr(
788
+ bertrend.last_topic_model.hdbscan_model, "cluster_selection_persistence"
789
+ ):
790
+ bertrend.last_topic_model.hdbscan_model.cluster_selection_persistence = 0.0
791
+
785
792
  return bertrend
786
793
 
787
794
  @classmethod
@@ -342,6 +342,13 @@ def handle_delete(row_dict: dict):
342
342
  SCHEDULER_UTILS.remove_scheduled_training_for_user(
343
343
  model_id=feed_id, user=st.session_state.username
344
344
  )
345
+ # Also remove report generation if it was scheduled
346
+ if SCHEDULER_UTILS.check_if_report_generation_active_for_user(
347
+ model_id=feed_id, user=st.session_state.username
348
+ ):
349
+ SCHEDULER_UTILS.remove_scheduled_report_generation_for_user(
350
+ model_id=feed_id, user=st.session_state.username
351
+ )
345
352
  time.sleep(0.2)
346
353
  st.rerun()
347
354
  with col2:
@@ -19,13 +19,17 @@ import aio_pika
19
19
  import pandas as pd
20
20
  from loguru import logger
21
21
 
22
+ from bertrend import load_toml_config
22
23
  from bertrend.bertrend_apps.data_provider.data_provider_utils import (
23
24
  auto_scrape,
24
25
  generate_query_file,
25
26
  scrape,
26
27
  scrape_feed_from_config,
27
28
  )
28
- from bertrend.bertrend_apps.newsletters.newsletter_generation import process_newsletter
29
+ from bertrend.bertrend_apps.newsletters.newsletter_generation import (
30
+ NEWSLETTER_SECTION,
31
+ process_newsletter,
32
+ )
29
33
  from bertrend.bertrend_apps.prospective_demo.automated_report_generation import (
30
34
  generate_automated_report,
31
35
  )
@@ -51,6 +55,7 @@ from bertrend.bertrend_apps.services.queue_management.queue_manager import Queue
51
55
  from bertrend.bertrend_apps.services.queue_management.rabbitmq_config import (
52
56
  RabbitMQConfig,
53
57
  )
58
+ from bertrend.bertrend_apps.services.utils.logging_utils import get_file_logger
54
59
 
55
60
 
56
61
  # Wrapper functions to match the core logic with the request models
@@ -81,7 +86,14 @@ async def handle_auto_scrape(req: AutoScrapeRequest):
81
86
 
82
87
 
83
88
  async def handle_scrape_feed(req: ScrapeFeedRequest):
84
- return await asyncio.to_thread(scrape_feed_from_config, req.feed_cfg)
89
+ # Create a unique log file for this call
90
+ user = "" if not req.user else req.user
91
+ model_id = "" if not req.model_id else req.model_id
92
+ logger_id = get_file_logger(id="scrape_feed", user_name=user, model_id=model_id)
93
+ result = await asyncio.to_thread(scrape_feed_from_config, req.feed_cfg)
94
+ # Remove the logger to prevent writing to this file for other calls
95
+ logger.remove(logger_id)
96
+ return result
85
97
 
86
98
 
87
99
  async def handle_generate_query_file(req: GenerateQueryFileRequest):
@@ -96,34 +108,64 @@ async def handle_generate_query_file(req: GenerateQueryFileRequest):
96
108
 
97
109
 
98
110
  async def handle_train_new(req: TrainNewModelRequest):
99
- return await asyncio.to_thread(
111
+ # Create a unique log file for this call
112
+ logger_id = get_file_logger(
113
+ id="train_new_model", user_name=req.user, model_id=req.model_id
114
+ )
115
+ result = await asyncio.to_thread(
100
116
  train_new_model, model_id=req.model_id, user_name=req.user
101
117
  )
118
+ # Remove the logger to prevent writing to this file for other calls
119
+ logger.remove(logger_id)
120
+ return result
102
121
 
103
122
 
104
123
  async def handle_regenerate(req: RegenerateRequest):
105
- return await asyncio.to_thread(
124
+ # Create a unique log file for this call
125
+ logger_id = get_file_logger(
126
+ id="regenerate", user_name=req.user, model_id=req.model_id
127
+ )
128
+ result = await asyncio.to_thread(
106
129
  regenerate_models,
107
130
  model_id=req.model_id,
108
131
  user=req.user,
109
132
  with_analysis=req.with_analysis,
110
133
  since=pd.Timestamp(req.since) if req.since else None,
111
134
  )
135
+ # Remove the logger to prevent writing to this file for other calls
136
+ logger.remove(logger_id)
137
+ return result
112
138
 
113
139
 
114
140
  async def handle_generate_report(req: GenerateReportRequest):
115
- return await asyncio.to_thread(
141
+ # Create a unique log file for this call
142
+ logger_id = get_file_logger(
143
+ id="generate_report", user_name=req.user, model_id=req.model_id
144
+ )
145
+ result = await asyncio.to_thread(
116
146
  generate_automated_report,
117
147
  user=req.user,
118
148
  model_id=req.model_id,
119
149
  reference_date=req.reference_date,
120
150
  )
151
+ # Remove the logger to prevent writing to this file for other calls
152
+ logger.remove(logger_id)
153
+ return result
121
154
 
122
155
 
123
156
  async def handle_generate_newsletters(req: NewsletterRequest):
124
- return await asyncio.to_thread(
157
+ config = load_toml_config(req.newsletter_toml_path)
158
+ model_id = config.get(NEWSLETTER_SECTION).get("id")
159
+ # Create a unique log file for this call
160
+ logger_id = get_file_logger(
161
+ id="generate_newsletters", user_name="", model_id=model_id
162
+ )
163
+ result = await asyncio.to_thread(
125
164
  process_newsletter, req.newsletter_toml_path, req.data_feed_toml_path
126
165
  )
166
+ # Remove the logger to prevent writing to this file for other calls
167
+ logger.remove(logger_id)
168
+ return result
127
169
 
128
170
 
129
171
  # Mapping of endpoints to their handler functions and request models
@@ -27,6 +27,7 @@ min_samples = 5
27
27
  metric = "euclidean"
28
28
  cluster_selection_method = "eom"
29
29
  prediction_data = true
30
+ cluster_selection_persistence = 0.0
30
31
 
31
32
  # CountVectorizer: https://scikit-learn.org/1.5/modules/generated/sklearn.feature_extraction.text.CountVectorizer.html
32
33
  [vectorizer_model]
@@ -103,7 +103,6 @@ async def main_page():
103
103
  ui.colors(primary="#0052a1")
104
104
  dashboard = JobDashboard()
105
105
 
106
- # --- LOGIC ---
107
106
  def update_display():
108
107
  f_users = user_filter.value
109
108
  f_models = model_filter.value
@@ -139,7 +138,7 @@ async def main_page():
139
138
  # 1. Update Chart Dashboard
140
139
  with chart_container:
141
140
  chart_options = {
142
- "chart": {"type": "timeline", "height": 350, "zoomType": "x"},
141
+ "chart": {"type": "timeline", "height": 400, "zoomType": "x"},
143
142
  "title": {
144
143
  "text": "Job Schedule Timeline",
145
144
  "style": {"fontSize": "14px"},
@@ -155,6 +154,11 @@ async def main_page():
155
154
  "name": f"/{j['endpoint']}",
156
155
  "label": f"{j['user']} | {j['model_id']}",
157
156
  "color": j["color"],
157
+ "dataLabels": {
158
+ "style": {
159
+ "fontSize": "10px",
160
+ }
161
+ },
158
162
  }
159
163
  for j in dashboard.filtered_jobs
160
164
  if j["time"]
@@ -189,7 +193,7 @@ async def main_page():
189
193
  for job in dashboard.filtered_jobs:
190
194
  custom_color_name = f"c_{job['color'].lstrip('#')}"
191
195
  ui.timeline_entry(
192
- f"Model: {job['model_id']}",
196
+ f"Model: {job['model_id']} | (Job ID: {job['job_id']})",
193
197
  title=f"/{job['endpoint']} ({job['user']})",
194
198
  subtitle=job["time"],
195
199
  color=custom_color_name,
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "bertrend"
3
- version = "0.4.4"
3
+ version = "0.4.6"
4
4
  description = "BERTrend analyses topic evolution over time using state-of-the-art transformer models: topic modelling and LLM"
5
5
  license = "LICENSE.md"
6
6
  readme = "README.md"
File without changes
File without changes
File without changes
File without changes