scitex 2.1.3__py3-none-any.whl → 2.3.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1325) hide show
  1. scitex/__init__.py +90 -10
  2. scitex/__main__.py +0 -110
  3. scitex/__version__.py +1 -1
  4. scitex/_optional_deps.py +0 -0
  5. scitex/ai/_gen_ai/_BaseGenAI.py +1 -1
  6. scitex/ai/classification/examples/timeseries_cv_demo.py +0 -0
  7. scitex/ai/classification/reporters/_ClassificationReporter.py +1 -1
  8. scitex/ai/classification/reporters/__init__.py +0 -0
  9. scitex/ai/classification/reporters/reporter_utils/__init__.py +0 -0
  10. scitex/ai/classification/reporters/reporter_utils/aggregation.py +0 -0
  11. scitex/ai/classification/reporters/reporter_utils/data_models.py +0 -0
  12. scitex/ai/classification/reporters/reporter_utils/reporting.py +0 -0
  13. scitex/ai/classification/reporters/reporter_utils/validation.py +0 -0
  14. scitex/ai/classification/timeseries/_TimeSeriesBlockingSplit.py +2 -2
  15. scitex/ai/classification/timeseries/_TimeSeriesCalendarSplit.py +2 -2
  16. scitex/ai/classification/timeseries/_TimeSeriesSlidingWindowSplit.py +6 -6
  17. scitex/ai/classification/timeseries/_TimeSeriesSlidingWindowSplit_v01-not-using-n_splits.py +6 -6
  18. scitex/ai/classification/timeseries/_TimeSeriesStratifiedSplit.py +2 -2
  19. scitex/ai/classification/timeseries/_normalize_timestamp.py +1 -1
  20. scitex/ai/feature_extraction/vit.py +1 -1
  21. scitex/ai/feature_selection/__init__.py +0 -0
  22. scitex/ai/feature_selection/feature_selection.py +0 -0
  23. scitex/ai/loss/multi_task_loss.py +1 -1
  24. scitex/ai/metrics/_calc_bacc.py +0 -0
  25. scitex/ai/metrics/_calc_bacc_from_conf_mat.py +0 -0
  26. scitex/ai/metrics/_calc_clf_report.py +0 -0
  27. scitex/ai/metrics/_calc_conf_mat.py +0 -0
  28. scitex/ai/metrics/_calc_feature_importance.py +0 -0
  29. scitex/ai/metrics/_calc_mcc.py +0 -0
  30. scitex/ai/metrics/_calc_pre_rec_auc.py +0 -0
  31. scitex/ai/metrics/_calc_roc_auc.py +0 -0
  32. scitex/ai/metrics/_calc_seizure_prediction_metrics.py +1 -1
  33. scitex/ai/metrics/_normalize_labels.py +0 -0
  34. scitex/ai/plt/_plot_conf_mat.py +1 -1
  35. scitex/ai/plt/_plot_feature_importance.py +1 -1
  36. scitex/ai/plt/_plot_learning_curve.py +1 -1
  37. scitex/ai/plt/_plot_optuna_study.py +1 -1
  38. scitex/ai/plt/_plot_pre_rec_curve.py +1 -1
  39. scitex/ai/plt/_plot_roc_curve.py +1 -1
  40. scitex/ai/sampling/undersample.py +1 -1
  41. scitex/ai/training/_LearningCurveLogger.py +1 -1
  42. scitex/benchmark/__init__.py +3 -3
  43. scitex/benchmark/benchmark.py +0 -0
  44. scitex/benchmark/monitor.py +0 -0
  45. scitex/benchmark/profiler.py +0 -0
  46. scitex/browser/__init__.py +0 -0
  47. scitex/browser/automation/CookieHandler.py +1 -1
  48. scitex/browser/automation/__init__.py +0 -0
  49. scitex/browser/collaboration/__init__.py +0 -0
  50. scitex/browser/collaboration/auth_helpers.py +0 -0
  51. scitex/browser/collaboration/collaborative_agent.py +0 -0
  52. scitex/browser/collaboration/credential_manager.py +0 -0
  53. scitex/browser/collaboration/interactive_panel.py +0 -0
  54. scitex/browser/collaboration/persistent_browser.py +0 -0
  55. scitex/browser/collaboration/shared_session.py +0 -0
  56. scitex/browser/collaboration/standard_interactions.py +0 -0
  57. scitex/browser/collaboration/visual_feedback.py +0 -0
  58. scitex/browser/core/BrowserMixin.py +1 -1
  59. scitex/browser/core/ChromeProfileManager.py +1 -1
  60. scitex/browser/core/__init__.py +0 -0
  61. scitex/browser/debugging/_browser_logger.py +1 -1
  62. scitex/browser/debugging/_highlight_element.py +1 -1
  63. scitex/browser/debugging/_show_grid.py +1 -1
  64. scitex/browser/interaction/click_center.py +1 -1
  65. scitex/browser/interaction/click_with_fallbacks.py +1 -1
  66. scitex/browser/interaction/close_popups.py +1 -1
  67. scitex/browser/interaction/fill_with_fallbacks.py +1 -1
  68. scitex/browser/pdf/__init__.py +0 -0
  69. scitex/browser/pdf/click_download_for_chrome_pdf_viewer.py +1 -1
  70. scitex/browser/pdf/detect_chrome_pdf_viewer.py +1 -1
  71. scitex/browser/remote/CaptchaHandler.py +0 -0
  72. scitex/browser/remote/ZenRowsAPIClient.py +0 -0
  73. scitex/browser/remote/__init__.py +0 -0
  74. scitex/browser/stealth/HumanBehavior.py +1 -1
  75. scitex/browser/stealth/StealthManager.py +1 -1
  76. scitex/browser/stealth/__init__.py +0 -0
  77. scitex/cli/__init__.py +0 -0
  78. scitex/cli/cloud.py +200 -9
  79. scitex/cli/main.py +139 -10
  80. scitex/cli/scholar.py +0 -0
  81. scitex/cli/security.py +109 -0
  82. scitex/cli/web.py +409 -0
  83. scitex/cli/writer.py +270 -0
  84. scitex/cloud/__init__.py +131 -0
  85. scitex/cloud/_matplotlib_hook.py +146 -0
  86. scitex/db/_delete_duplicates.py +1 -1
  87. scitex/db/_inspect_optimized.py +0 -0
  88. scitex/db/_postgresql/_PostgreSQL.py +1 -1
  89. scitex/db/_sqlite3/_SQLite3.py +1 -1
  90. scitex/decorators/__init__.py +9 -0
  91. scitex/dict/_DotDict.py +65 -138
  92. scitex/dict/__init__.py +1 -0
  93. scitex/dict/_flatten.py +2 -10
  94. scitex/dict/_listed_dict.py +2 -3
  95. scitex/dict/_pop_keys.py +2 -3
  96. scitex/dict/_replace.py +1 -3
  97. scitex/dict/_safe_merge.py +6 -16
  98. scitex/dict/_to_str.py +6 -3
  99. scitex/dsp/_demo_sig.py +1 -1
  100. scitex/dsp/_detect_ripples.py +1 -1
  101. scitex/dsp/_ensure_3d.py +1 -1
  102. scitex/dsp/_hilbert.py +2 -2
  103. scitex/dsp/_misc.py +1 -1
  104. scitex/dsp/_modulation_index.py +2 -2
  105. scitex/dsp/_pac.py +3 -3
  106. scitex/dsp/_psd.py +2 -2
  107. scitex/dsp/_resample.py +1 -1
  108. scitex/dsp/_transform.py +1 -1
  109. scitex/dsp/_wavelet.py +2 -2
  110. scitex/dsp/add_noise.py +1 -1
  111. scitex/dsp/filt.py +6 -6
  112. scitex/dsp/norm.py +1 -1
  113. scitex/dsp/reference.py +1 -1
  114. scitex/dsp/utils/_differential_bandpass_filters.py +3 -3
  115. scitex/dsp/utils/_ensure_3d.py +1 -1
  116. scitex/dsp/utils/_zero_pad.py +1 -1
  117. scitex/dsp/utils/filter.py +2 -2
  118. scitex/dt/_normalize_timestamp.py +1 -1
  119. scitex/gen/_check_host.py +1 -1
  120. scitex/gen/_deprecated_close.py +3 -3
  121. scitex/gen/_deprecated_start.py +1 -1
  122. scitex/gen/_norm.py +2 -2
  123. scitex/gen/_norm_cache.py +1 -1
  124. scitex/gen/_symlink.py +1 -1
  125. scitex/gen/_to_rank.py +1 -1
  126. scitex/gen/_transpose.py +1 -1
  127. scitex/git/__init__.py +0 -0
  128. scitex/git/_branch.py +5 -3
  129. scitex/git/_clone.py +35 -6
  130. scitex/git/_commit.py +3 -2
  131. scitex/git/_constants.py +0 -0
  132. scitex/git/_init.py +0 -0
  133. scitex/git/_remote.py +1 -1
  134. scitex/git/_result.py +0 -0
  135. scitex/git/_retry.py +0 -0
  136. scitex/git/_session.py +1 -1
  137. scitex/git/_types.py +0 -0
  138. scitex/git/_utils.py +0 -0
  139. scitex/git/_validation.py +0 -0
  140. scitex/git/_workflow.py +1 -1
  141. scitex/io/README.md +65 -1
  142. scitex/io/__init__.py +12 -0
  143. scitex/io/_glob.py +1 -1
  144. scitex/io/_load.py +59 -9
  145. scitex/io/_load_cache.py +0 -0
  146. scitex/io/_load_configs.py +9 -4
  147. scitex/io/_load_modules/_image.py +48 -4
  148. scitex/io/_load_modules/_pdf.py +95 -32
  149. scitex/io/_load_modules/_sqlite3.py +1 -1
  150. scitex/io/_metadata.py +298 -0
  151. scitex/io/_path.py +2 -2
  152. scitex/io/_qr_utils.py +75 -0
  153. scitex/io/_save.py +211 -23
  154. scitex/io/_save_modules/_image.py +68 -16
  155. scitex/io/_save_modules/_tex.py +1 -1
  156. scitex/io/memo.md +2827 -0
  157. scitex/io/utils/h5_to_zarr.py +1 -1
  158. scitex/linalg/_distance.py +2 -2
  159. scitex/linalg/_geometric_median.py +1 -1
  160. scitex/logging/README.md +1 -1
  161. scitex/logging/_Tee.py +2 -2
  162. scitex/logging/_context.py +0 -0
  163. scitex/logging/_formatters.py +9 -2
  164. scitex/logging/_handlers.py +0 -0
  165. scitex/logging/_levels.py +0 -0
  166. scitex/logging/_logger.py +59 -20
  167. scitex/logging/_print_capture.py +0 -0
  168. scitex/ml/__init__.py +1 -1
  169. scitex/nn/_Filters.py +6 -6
  170. scitex/nn/_Spectrogram.py +1 -1
  171. scitex/nn/_Wavelet.py +2 -2
  172. scitex/pd/_force_df.py +1 -1
  173. scitex/plt/README.md +26 -1
  174. scitex/plt/__init__.py +103 -5
  175. scitex/plt/_subplots/_AxesWrapper.py +2 -1
  176. scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin.py +93 -4
  177. scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin.py +13 -3
  178. scitex/plt/_subplots/_AxisWrapperMixins/_UnitAwareMixin.py +2 -2
  179. scitex/plt/_subplots/_FigWrapper.py +104 -10
  180. scitex/plt/_subplots/_SubplotsWrapper.py +462 -2
  181. scitex/plt/_subplots/_export_as_csv.py +71 -4
  182. scitex/plt/_subplots/_export_as_csv_formatters/__init__.py +1 -0
  183. scitex/plt/_subplots/_export_as_csv_formatters/_format_annotate.py +0 -0
  184. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_imshow.py +40 -0
  185. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_scatter.py +0 -0
  186. scitex/plt/ax/__init__.py +9 -1
  187. scitex/plt/ax/_plot/__init__.py +2 -0
  188. scitex/plt/ax/_plot/_add_fitted_line.py +97 -0
  189. scitex/plt/ax/_plot/_plot_conf_mat.py +2 -2
  190. scitex/plt/ax/_plot/_plot_ecdf.py +1 -1
  191. scitex/plt/ax/_plot/_plot_heatmap.py +14 -3
  192. scitex/plt/ax/_plot/_plot_shaded_line.py +1 -1
  193. scitex/plt/ax/_style/__init__.py +1 -0
  194. scitex/plt/ax/_style/_auto_scale_axis.py +195 -0
  195. scitex/plt/ax/_style/_format_units.py +103 -0
  196. scitex/plt/ax/_style/_set_ticks.py +2 -2
  197. scitex/plt/ax/_style/_style_barplot.py +58 -0
  198. scitex/plt/ax/_style/_style_boxplot.py +98 -0
  199. scitex/plt/ax/_style/_style_errorbar.py +68 -0
  200. scitex/plt/ax/_style/_style_scatter.py +68 -0
  201. scitex/plt/ax/_style/_style_suptitles.py +76 -0
  202. scitex/plt/color/_PARAMS.py +2 -2
  203. scitex/plt/color/_colors.py +1 -1
  204. scitex/plt/presets.py +224 -0
  205. scitex/plt/utils/__init__.py +21 -0
  206. scitex/plt/utils/_calc_bacc_from_conf_mat.py +1 -1
  207. scitex/plt/utils/_collect_figure_metadata.py +478 -0
  208. scitex/plt/utils/_configure_mpl.py +98 -28
  209. scitex/plt/utils/_crop.py +232 -0
  210. scitex/plt/utils/_dimension_viewer.py +437 -0
  211. scitex/plt/utils/_figure_from_axes_mm.py +353 -0
  212. scitex/plt/utils/_figure_mm.py +342 -0
  213. scitex/plt/utils/_get_actual_font.py +56 -0
  214. scitex/plt/utils/_units.py +123 -0
  215. scitex/{rng/README.md → repro/README_RandomStateManager.md} +2 -2
  216. scitex/{rng → repro}/_RandomStateManager.py +99 -10
  217. scitex/repro/__init__.py +32 -50
  218. scitex/repro/_gen_ID.py +84 -0
  219. scitex/repro/_gen_timestamp.py +78 -0
  220. scitex/repro/_hash_array.py +143 -0
  221. scitex/reproduce/__init__.py +2 -2
  222. scitex/resource/_get_specs.py +1 -1
  223. scitex/resource/_log_processor_usages.py +4 -4
  224. scitex/rng/__init__.py +20 -27
  225. scitex/scholar/auth/core/__init__.py +0 -0
  226. scitex/scholar/auth/gateway/__init__.py +0 -0
  227. scitex/scholar/auth/providers/OpenAthensAuthenticator.py +3 -3
  228. scitex/scholar/auth/providers/__init__.py +0 -0
  229. scitex/scholar/auth/session/__init__.py +0 -0
  230. scitex/scholar/auth/sso/BaseSSOAutomator.py +1 -1
  231. scitex/scholar/auth/sso/__init__.py +0 -0
  232. scitex/scholar/browser/utils/__init__.py +0 -0
  233. scitex/scholar/cli/_CentralArgumentParser.py +0 -0
  234. scitex/scholar/cli/_argument_groups.py +0 -0
  235. scitex/scholar/cli/_doi_operations.py +0 -0
  236. scitex/scholar/cli/_url_utils.py +0 -0
  237. scitex/scholar/cli/handlers/__init__.py +0 -0
  238. scitex/scholar/cli/handlers/bibtex_handler.py +0 -0
  239. scitex/scholar/cli/handlers/doi_handler.py +0 -0
  240. scitex/scholar/cli/handlers/project_handler.py +0 -0
  241. scitex/scholar/cli/open_browser.py +0 -0
  242. scitex/scholar/cli/open_browser_auto.py +0 -0
  243. scitex/scholar/cli/open_browser_monitored.py +0 -0
  244. scitex/scholar/config/PublisherRules.py +0 -0
  245. scitex/scholar/config/core/_PathManager.py +42 -0
  246. scitex/scholar/core/__init__.py +0 -0
  247. scitex/scholar/docs/template.py +1 -1
  248. scitex/scholar/docs/to_claude/guidelines/python/env.md +1 -1
  249. scitex/scholar/docs/to_claude/guidelines/python/general.md +1 -1
  250. scitex/scholar/examples/07_storage_integration.py +1 -1
  251. scitex/scholar/examples/zotero_integration.py +0 -0
  252. scitex/scholar/impact_factor/estimation/ImpactFactorEstimationEngine.py +0 -0
  253. scitex/scholar/impact_factor/estimation/__init__.py +0 -0
  254. scitex/scholar/impact_factor/estimation/build_database.py +0 -0
  255. scitex/scholar/impact_factor/estimation/core/__init__.py +0 -0
  256. scitex/scholar/impact_factor/estimation/core/cache_manager.py +0 -0
  257. scitex/scholar/impact_factor/estimation/core/calculator.py +0 -0
  258. scitex/scholar/impact_factor/estimation/core/journal_matcher.py +0 -0
  259. scitex/scholar/impact_factor/jcr/ImpactFactorJCREngine.py +1 -1
  260. scitex/scholar/impact_factor/jcr/build_database.py +1 -1
  261. scitex/scholar/integration/__init__.py +0 -0
  262. scitex/scholar/integration/base.py +0 -0
  263. scitex/scholar/integration/mendeley/__init__.py +0 -0
  264. scitex/scholar/integration/mendeley/exporter.py +0 -0
  265. scitex/scholar/integration/mendeley/importer.py +0 -0
  266. scitex/scholar/integration/mendeley/linker.py +0 -0
  267. scitex/scholar/integration/mendeley/mapper.py +0 -0
  268. scitex/scholar/integration/zotero/__init__.py +0 -0
  269. scitex/scholar/integration/zotero/__main__.py +0 -0
  270. scitex/scholar/integration/zotero/exporter.py +0 -0
  271. scitex/scholar/integration/zotero/importer.py +0 -0
  272. scitex/scholar/integration/zotero/linker.py +0 -0
  273. scitex/scholar/integration/zotero/mapper.py +0 -0
  274. scitex/scholar/metadata_engines/individual/ArXivEngine.py +4 -1
  275. scitex/scholar/metadata_engines/individual/CrossRefEngine.py +20 -3
  276. scitex/scholar/metadata_engines/individual/__init__.py +0 -0
  277. scitex/scholar/metadata_engines/utils/_URLDOIExtractor.py +19 -1
  278. scitex/scholar/pdf_download/ScholarPDFDownloader.py +1 -1
  279. scitex/scholar/pdf_download/__init__.py +0 -0
  280. scitex/scholar/pipelines/ScholarPipelineBibTeX.py +1 -1
  281. scitex/scholar/pipelines/ScholarPipelineMetadataParallel.py +0 -0
  282. scitex/scholar/pipelines/ScholarPipelineMetadataSingle.py +102 -7
  283. scitex/scholar/pipelines/ScholarPipelineParallel.py +1 -1
  284. scitex/scholar/pipelines/ScholarPipelineSearchParallel.py +0 -0
  285. scitex/scholar/pipelines/ScholarPipelineSearchSingle.py +0 -0
  286. scitex/scholar/pipelines/ScholarPipelineSingle.py +1 -1
  287. scitex/scholar/pipelines/SearchQueryParser.py +0 -0
  288. scitex/scholar/pipelines/__init__.py +0 -0
  289. scitex/scholar/search_engines/ScholarSearchEngine.py +0 -0
  290. scitex/scholar/search_engines/_BaseSearchEngine.py +0 -0
  291. scitex/scholar/search_engines/__init__.py +0 -0
  292. scitex/scholar/search_engines/individual/ArXivSearchEngine.py +0 -0
  293. scitex/scholar/search_engines/individual/CrossRefSearchEngine.py +0 -0
  294. scitex/scholar/search_engines/individual/OpenAlexSearchEngine.py +0 -0
  295. scitex/scholar/search_engines/individual/PubMedSearchEngine.py +0 -0
  296. scitex/scholar/search_engines/individual/SemanticScholarSearchEngine.py +0 -0
  297. scitex/scholar/search_engines/individual/__init__.py +0 -0
  298. scitex/scholar/storage/BibTeXHandler.py +35 -5
  299. scitex/scholar/storage/PaperIO.py +1 -1
  300. scitex/scholar/storage/_DeduplicationManager.py +0 -0
  301. scitex/scholar/storage/_LibraryManager.py +0 -0
  302. scitex/scholar/storage/__init__.py +0 -0
  303. scitex/scholar/url_finder/strategies/find_pdf_urls_by_direct_links.py +0 -0
  304. scitex/scholar/url_finder/strategies/find_pdf_urls_by_dropdown.py +0 -0
  305. scitex/scholar/url_finder/strategies/find_pdf_urls_by_href.py +0 -0
  306. scitex/scholar/url_finder/translators/__init__.py +0 -0
  307. scitex/scholar/url_finder/translators/core/__init__.py +0 -0
  308. scitex/scholar/url_finder/translators/core/base.py +0 -0
  309. scitex/scholar/url_finder/translators/core/patterns.py +0 -0
  310. scitex/scholar/url_finder/translators/individual/BOFiP_Impots.py +0 -0
  311. scitex/scholar/url_finder/translators/individual/Baidu_Scholar.py +0 -0
  312. scitex/scholar/url_finder/translators/individual/Bangkok_Post.py +0 -0
  313. scitex/scholar/url_finder/translators/individual/Baruch_Foundation.py +0 -0
  314. scitex/scholar/url_finder/translators/individual/Beobachter.py +0 -0
  315. scitex/scholar/url_finder/translators/individual/Bezneng_Gajit.py +0 -0
  316. scitex/scholar/url_finder/translators/individual/BibLaTeX.py +0 -0
  317. scitex/scholar/url_finder/translators/individual/BibTeX.py +0 -0
  318. scitex/scholar/url_finder/translators/individual/Biblio_com.py +0 -0
  319. scitex/scholar/url_finder/translators/individual/Bibliontology_RDF.py +0 -0
  320. scitex/scholar/url_finder/translators/individual/CLASE.py +0 -0
  321. scitex/scholar/url_finder/translators/individual/COBISS.py +0 -0
  322. scitex/scholar/url_finder/translators/individual/COinS.py +0 -0
  323. scitex/scholar/url_finder/translators/individual/CQ_Press.py +0 -0
  324. scitex/scholar/url_finder/translators/individual/CROSBI.py +0 -0
  325. scitex/scholar/url_finder/translators/individual/CSL_JSON.py +0 -0
  326. scitex/scholar/url_finder/translators/individual/CSV.py +0 -0
  327. scitex/scholar/url_finder/translators/individual/CalMatters.py +0 -0
  328. scitex/scholar/url_finder/translators/individual/Calisphere.py +0 -0
  329. scitex/scholar/url_finder/translators/individual/Camara_Brasileira_do_Livro_ISBN.py +0 -0
  330. scitex/scholar/url_finder/translators/individual/CanLII.py +0 -0
  331. scitex/scholar/url_finder/translators/individual/Canada_com.py +0 -0
  332. scitex/scholar/url_finder/translators/individual/Canadian_Letters_and_Images.py +0 -0
  333. scitex/scholar/url_finder/translators/individual/Canadiana_ca.py +0 -0
  334. scitex/scholar/url_finder/translators/individual/Cascadilla_Proceedings_Project.py +0 -0
  335. scitex/scholar/url_finder/translators/individual/Central_and_Eastern_European_Online_Library_Journals.py +0 -0
  336. scitex/scholar/url_finder/translators/individual/Champlain_Society_Collection.py +0 -0
  337. scitex/scholar/url_finder/translators/individual/Chicago_Journal_of_Theoretical_Computer_Science.py +0 -0
  338. scitex/scholar/url_finder/translators/individual/Christian_Science_Monitor.py +0 -0
  339. scitex/scholar/url_finder/translators/individual/Columbia_University_Press.py +0 -0
  340. scitex/scholar/url_finder/translators/individual/Common_Place.py +0 -0
  341. scitex/scholar/url_finder/translators/individual/Cornell_LII.py +0 -0
  342. scitex/scholar/url_finder/translators/individual/Cornell_University_Press.py +0 -0
  343. scitex/scholar/url_finder/translators/individual/CourtListener.py +0 -0
  344. scitex/scholar/url_finder/translators/individual/DAI_Zenon.py +0 -0
  345. scitex/scholar/url_finder/translators/individual/__init__.py +0 -0
  346. scitex/scholar/url_finder/translators/individual/abc_news_australia.py +0 -0
  347. scitex/scholar/url_finder/translators/individual/access_engineering.py +0 -0
  348. scitex/scholar/url_finder/translators/individual/access_medicine.py +0 -0
  349. scitex/scholar/url_finder/translators/individual/access_science.py +0 -0
  350. scitex/scholar/url_finder/translators/individual/acls_humanities_ebook.py +0 -0
  351. scitex/scholar/url_finder/translators/individual/aclweb.py +0 -0
  352. scitex/scholar/url_finder/translators/individual/acm.py +0 -0
  353. scitex/scholar/url_finder/translators/individual/acm_digital_library.py +0 -0
  354. scitex/scholar/url_finder/translators/individual/acs.py +0 -0
  355. scitex/scholar/url_finder/translators/individual/acs_publications.py +0 -0
  356. scitex/scholar/url_finder/translators/individual/adam_matthew_digital.py +0 -0
  357. scitex/scholar/url_finder/translators/individual/ads_bibcode.py +0 -0
  358. scitex/scholar/url_finder/translators/individual/aea_web.py +0 -0
  359. scitex/scholar/url_finder/translators/individual/agencia_del_isbn.py +0 -0
  360. scitex/scholar/url_finder/translators/individual/agris.py +0 -0
  361. scitex/scholar/url_finder/translators/individual/ahval_news.py +0 -0
  362. scitex/scholar/url_finder/translators/individual/aip.py +0 -0
  363. scitex/scholar/url_finder/translators/individual/air_university_journals.py +0 -0
  364. scitex/scholar/url_finder/translators/individual/airiti.py +0 -0
  365. scitex/scholar/url_finder/translators/individual/alexander_street_press.py +0 -0
  366. scitex/scholar/url_finder/translators/individual/all_africa.py +0 -0
  367. scitex/scholar/url_finder/translators/individual/allafrica.py +0 -0
  368. scitex/scholar/url_finder/translators/individual/alsharekh.py +0 -0
  369. scitex/scholar/url_finder/translators/individual/alternet.py +0 -0
  370. scitex/scholar/url_finder/translators/individual/aluka.py +0 -0
  371. scitex/scholar/url_finder/translators/individual/amazon.py +0 -0
  372. scitex/scholar/url_finder/translators/individual/american_archive_public_broadcasting.py +0 -0
  373. scitex/scholar/url_finder/translators/individual/american_institute_aeronautics_astronautics.py +0 -0
  374. scitex/scholar/url_finder/translators/individual/american_prospect.py +0 -0
  375. scitex/scholar/url_finder/translators/individual/ams_journals.py +0 -0
  376. scitex/scholar/url_finder/translators/individual/ams_mathscinet.py +0 -0
  377. scitex/scholar/url_finder/translators/individual/ams_mathscinet_legacy.py +0 -0
  378. scitex/scholar/url_finder/translators/individual/ancestry_com_us_federal_census.py +0 -0
  379. scitex/scholar/url_finder/translators/individual/ancestry_us_federal_census.py +0 -0
  380. scitex/scholar/url_finder/translators/individual/annual_reviews.py +0 -0
  381. scitex/scholar/url_finder/translators/individual/antikvarium_hu.py +0 -0
  382. scitex/scholar/url_finder/translators/individual/aosic.py +0 -0
  383. scitex/scholar/url_finder/translators/individual/apa_psycnet.py +0 -0
  384. scitex/scholar/url_finder/translators/individual/apn_ru.py +0 -0
  385. scitex/scholar/url_finder/translators/individual/aps.py +0 -0
  386. scitex/scholar/url_finder/translators/individual/aps_physics.py +0 -0
  387. scitex/scholar/url_finder/translators/individual/aquadocs.py +0 -0
  388. scitex/scholar/url_finder/translators/individual/archeion.py +0 -0
  389. scitex/scholar/url_finder/translators/individual/archiv_fuer_sozialgeschichte.py +0 -0
  390. scitex/scholar/url_finder/translators/individual/ariana_news.py +0 -0
  391. scitex/scholar/url_finder/translators/individual/art_institute_of_chicago.py +0 -0
  392. scitex/scholar/url_finder/translators/individual/artefacts_canada.py +0 -0
  393. scitex/scholar/url_finder/translators/individual/artfl_encyclopedie.py +0 -0
  394. scitex/scholar/url_finder/translators/individual/artforum.py +0 -0
  395. scitex/scholar/url_finder/translators/individual/artnet.py +0 -0
  396. scitex/scholar/url_finder/translators/individual/artnews.py +0 -0
  397. scitex/scholar/url_finder/translators/individual/artstor.py +0 -0
  398. scitex/scholar/url_finder/translators/individual/arxiv.py +0 -0
  399. scitex/scholar/url_finder/translators/individual/asce.py +0 -0
  400. scitex/scholar/url_finder/translators/individual/asco_meeting_library.py +0 -0
  401. scitex/scholar/url_finder/translators/individual/astis.py +0 -0
  402. scitex/scholar/url_finder/translators/individual/atlanta_journal_constitution.py +0 -0
  403. scitex/scholar/url_finder/translators/individual/ats_international_journal.py +0 -0
  404. scitex/scholar/url_finder/translators/individual/atypon.py +0 -0
  405. scitex/scholar/url_finder/translators/individual/atypon_journals.py +0 -0
  406. scitex/scholar/url_finder/translators/individual/austlii_and_nzlii.py +0 -0
  407. scitex/scholar/url_finder/translators/individual/australian_dictionary_of_biography.py +0 -0
  408. scitex/scholar/url_finder/translators/individual/bailii.py +0 -0
  409. scitex/scholar/url_finder/translators/individual/bbc.py +0 -0
  410. scitex/scholar/url_finder/translators/individual/bbc_genome.py +0 -0
  411. scitex/scholar/url_finder/translators/individual/beck_online.py +0 -0
  412. scitex/scholar/url_finder/translators/individual/biblioteca_nacional_de_maestros.py +0 -0
  413. scitex/scholar/url_finder/translators/individual/bibliotheque_archives_nationale_quebec_pistard.py +0 -0
  414. scitex/scholar/url_finder/translators/individual/bibliotheque_archives_nationales_quebec.py +0 -0
  415. scitex/scholar/url_finder/translators/individual/bibliotheque_et_archives_nationale_du_quebec__pistard_.py +0 -0
  416. scitex/scholar/url_finder/translators/individual/bibliotheque_et_archives_nationales_du_quebec.py +0 -0
  417. scitex/scholar/url_finder/translators/individual/bibliotheque_nationale_de_france.py +0 -0
  418. scitex/scholar/url_finder/translators/individual/bibliotheque_nationale_france.py +0 -0
  419. scitex/scholar/url_finder/translators/individual/bibsys.py +0 -0
  420. scitex/scholar/url_finder/translators/individual/bioconductor.py +0 -0
  421. scitex/scholar/url_finder/translators/individual/biomed_central.py +0 -0
  422. scitex/scholar/url_finder/translators/individual/bioone.py +0 -0
  423. scitex/scholar/url_finder/translators/individual/biorxiv.py +0 -0
  424. scitex/scholar/url_finder/translators/individual/blaetter.py +0 -0
  425. scitex/scholar/url_finder/translators/individual/blogger.py +0 -0
  426. scitex/scholar/url_finder/translators/individual/bloomberg.py +0 -0
  427. scitex/scholar/url_finder/translators/individual/bloomsbury_food_library.py +0 -0
  428. scitex/scholar/url_finder/translators/individual/bluesky.py +0 -0
  429. scitex/scholar/url_finder/translators/individual/bnf_isbn.py +0 -0
  430. scitex/scholar/url_finder/translators/individual/bocc.py +0 -0
  431. scitex/scholar/url_finder/translators/individual/boe.py +0 -0
  432. scitex/scholar/url_finder/translators/individual/bookmarks.py +0 -0
  433. scitex/scholar/url_finder/translators/individual/bookshop_org.py +0 -0
  434. scitex/scholar/url_finder/translators/individual/boston_review.py +0 -0
  435. scitex/scholar/url_finder/translators/individual/bosworth_toller_anglo_saxon_dictionary.py +0 -0
  436. scitex/scholar/url_finder/translators/individual/bosworth_toller_s_anglo_saxon_dictionary_online.py +0 -0
  437. scitex/scholar/url_finder/translators/individual/bracero_history_archive.py +0 -0
  438. scitex/scholar/url_finder/translators/individual/brill.py +0 -0
  439. scitex/scholar/url_finder/translators/individual/brukerhandboken.py +0 -0
  440. scitex/scholar/url_finder/translators/individual/bryn_mawr_classical_review.py +0 -0
  441. scitex/scholar/url_finder/translators/individual/bundesgesetzblatt.py +0 -0
  442. scitex/scholar/url_finder/translators/individual/business_standard.py +0 -0
  443. scitex/scholar/url_finder/translators/individual/cabi___cab_abstracts.py +0 -0
  444. scitex/scholar/url_finder/translators/individual/cabi_cab_abstracts.py +0 -0
  445. scitex/scholar/url_finder/translators/individual/cairn.py +0 -0
  446. scitex/scholar/url_finder/translators/individual/cairn_info.py +0 -0
  447. scitex/scholar/url_finder/translators/individual/cambridge.py +0 -0
  448. scitex/scholar/url_finder/translators/individual/cambridge_core.py +0 -0
  449. scitex/scholar/url_finder/translators/individual/cambridge_engage_preprints.py +0 -0
  450. scitex/scholar/url_finder/translators/individual/caod.py +0 -0
  451. scitex/scholar/url_finder/translators/individual/cbc.py +0 -0
  452. scitex/scholar/url_finder/translators/individual/ccfr__bnf_.py +0 -0
  453. scitex/scholar/url_finder/translators/individual/ccfr_bnf.py +0 -0
  454. scitex/scholar/url_finder/translators/individual/cell_press.py +0 -0
  455. scitex/scholar/url_finder/translators/individual/cern_document_server.py +0 -0
  456. scitex/scholar/url_finder/translators/individual/ceur_workshop_proceedings.py +0 -0
  457. scitex/scholar/url_finder/translators/individual/cff.py +0 -0
  458. scitex/scholar/url_finder/translators/individual/cff_references.py +0 -0
  459. scitex/scholar/url_finder/translators/individual/champlain_society___collection.py +0 -0
  460. scitex/scholar/url_finder/translators/individual/chronicling_america.py +0 -0
  461. scitex/scholar/url_finder/translators/individual/cia_world_factbook.py +0 -0
  462. scitex/scholar/url_finder/translators/individual/cinii_research.py +0 -0
  463. scitex/scholar/url_finder/translators/individual/citavi_5_xml.py +0 -0
  464. scitex/scholar/url_finder/translators/individual/citeseer.py +0 -0
  465. scitex/scholar/url_finder/translators/individual/citizen_lab.py +0 -0
  466. scitex/scholar/url_finder/translators/individual/civilization_ca.py +0 -0
  467. scitex/scholar/url_finder/translators/individual/clacso.py +0 -0
  468. scitex/scholar/url_finder/translators/individual/climate_change_and_human_health_literature_portal.py +0 -0
  469. scitex/scholar/url_finder/translators/individual/climate_change_human_health.py +0 -0
  470. scitex/scholar/url_finder/translators/individual/clinical_key.py +0 -0
  471. scitex/scholar/url_finder/translators/individual/clinicaltrials_gov.py +0 -0
  472. scitex/scholar/url_finder/translators/individual/cnki.py +0 -0
  473. scitex/scholar/url_finder/translators/individual/code4lib_journal.py +0 -0
  474. scitex/scholar/url_finder/translators/individual/colorado_state_legislature.py +0 -0
  475. scitex/scholar/url_finder/translators/individual/computer_history_museum_archive.py +0 -0
  476. scitex/scholar/url_finder/translators/individual/copernicus.py +0 -0
  477. scitex/scholar/url_finder/translators/individual/crossref_rest.py +0 -0
  478. scitex/scholar/url_finder/translators/individual/crossref_unixref_xml.py +0 -0
  479. scitex/scholar/url_finder/translators/individual/csiro_publishing.py +0 -0
  480. scitex/scholar/url_finder/translators/individual/csiro_publishing_dup.py +0 -0
  481. scitex/scholar/url_finder/translators/individual/current_affairs.py +0 -0
  482. scitex/scholar/url_finder/translators/individual/dabi.py +0 -0
  483. scitex/scholar/url_finder/translators/individual/dagens_nyheter.py +0 -0
  484. scitex/scholar/url_finder/translators/individual/dagstuhl.py +0 -0
  485. scitex/scholar/url_finder/translators/individual/dagstuhl_research_online_publication_server.py +0 -0
  486. scitex/scholar/url_finder/translators/individual/dar_almandumah.py +0 -0
  487. scitex/scholar/url_finder/translators/individual/dart_europe.py +0 -0
  488. scitex/scholar/url_finder/translators/individual/data_gov.py +0 -0
  489. scitex/scholar/url_finder/translators/individual/databrary.py +0 -0
  490. scitex/scholar/url_finder/translators/individual/datacite_json.py +0 -0
  491. scitex/scholar/url_finder/translators/individual/dataverse.py +0 -0
  492. scitex/scholar/url_finder/translators/individual/daum_news.py +0 -0
  493. scitex/scholar/url_finder/translators/individual/dblp.py +0 -0
  494. scitex/scholar/url_finder/translators/individual/dblp_computer_science_bibliography.py +0 -0
  495. scitex/scholar/url_finder/translators/individual/dbpia.py +0 -0
  496. scitex/scholar/url_finder/translators/individual/de_gruyter_brill.py +0 -0
  497. scitex/scholar/url_finder/translators/individual/defense_technical_information_center.py +0 -0
  498. scitex/scholar/url_finder/translators/individual/dejure_org.py +0 -0
  499. scitex/scholar/url_finder/translators/individual/delpher.py +0 -0
  500. scitex/scholar/url_finder/translators/individual/demographic_research.py +0 -0
  501. scitex/scholar/url_finder/translators/individual/denik_cz.py +0 -0
  502. scitex/scholar/url_finder/translators/individual/depatisnet.py +0 -0
  503. scitex/scholar/url_finder/translators/individual/der_freitag.py +0 -0
  504. scitex/scholar/url_finder/translators/individual/der_spiegel.py +0 -0
  505. scitex/scholar/url_finder/translators/individual/desiring_god.py +0 -0
  506. scitex/scholar/url_finder/translators/individual/deutsche_fotothek.py +0 -0
  507. scitex/scholar/url_finder/translators/individual/deutsche_nationalbibliothek.py +0 -0
  508. scitex/scholar/url_finder/translators/individual/dhistory.py +0 -0
  509. scitex/scholar/url_finder/translators/individual/dialnet.py +0 -0
  510. scitex/scholar/url_finder/translators/individual/die_zeit.py +0 -0
  511. scitex/scholar/url_finder/translators/individual/digibib_net.py +0 -0
  512. scitex/scholar/url_finder/translators/individual/digital_humanities_quarterly.py +0 -0
  513. scitex/scholar/url_finder/translators/individual/digital_spy.py +0 -0
  514. scitex/scholar/url_finder/translators/individual/digizeitschriften.py +0 -0
  515. scitex/scholar/url_finder/translators/individual/dimensions.py +0 -0
  516. scitex/scholar/url_finder/translators/individual/dlibra.py +0 -0
  517. scitex/scholar/url_finder/translators/individual/doaj.py +0 -0
  518. scitex/scholar/url_finder/translators/individual/doi.py +0 -0
  519. scitex/scholar/url_finder/translators/individual/doi_content_negotiation.py +0 -0
  520. scitex/scholar/url_finder/translators/individual/douban.py +0 -0
  521. scitex/scholar/url_finder/translators/individual/dpla.py +0 -0
  522. scitex/scholar/url_finder/translators/individual/dreier_neuerscheinungsdienst.py +0 -0
  523. scitex/scholar/url_finder/translators/individual/drugbank_ca.py +0 -0
  524. scitex/scholar/url_finder/translators/individual/dryad.py +0 -0
  525. scitex/scholar/url_finder/translators/individual/dryad_digital_repository.py +0 -0
  526. scitex/scholar/url_finder/translators/individual/dspace.py +0 -0
  527. scitex/scholar/url_finder/translators/individual/dspace_intermediate_metadata.py +0 -0
  528. scitex/scholar/url_finder/translators/individual/duke_university_press_books.py +0 -0
  529. scitex/scholar/url_finder/translators/individual/e_periodica_switzerland.py +0 -0
  530. scitex/scholar/url_finder/translators/individual/eastview.py +0 -0
  531. scitex/scholar/url_finder/translators/individual/ebrary.py +0 -0
  532. scitex/scholar/url_finder/translators/individual/ebsco_discovery_layer.py +0 -0
  533. scitex/scholar/url_finder/translators/individual/ebscohost.py +0 -0
  534. scitex/scholar/url_finder/translators/individual/edinburgh_university_press_journals.py +0 -0
  535. scitex/scholar/url_finder/translators/individual/education_week.py +0 -0
  536. scitex/scholar/url_finder/translators/individual/eidr.py +0 -0
  537. scitex/scholar/url_finder/translators/individual/el_comercio__peru_.py +0 -0
  538. scitex/scholar/url_finder/translators/individual/el_pais.py +0 -0
  539. scitex/scholar/url_finder/translators/individual/electronic_colloquium_on_computational_complexity.py +0 -0
  540. scitex/scholar/url_finder/translators/individual/elibrary_ru.py +0 -0
  541. scitex/scholar/url_finder/translators/individual/elicit.py +0 -0
  542. scitex/scholar/url_finder/translators/individual/elife.py +0 -0
  543. scitex/scholar/url_finder/translators/individual/elsevier_health.py +0 -0
  544. scitex/scholar/url_finder/translators/individual/elsevier_health_journals.py +0 -0
  545. scitex/scholar/url_finder/translators/individual/elsevier_pure.py +0 -0
  546. scitex/scholar/url_finder/translators/individual/embedded_metadata.py +0 -0
  547. scitex/scholar/url_finder/translators/individual/emedicine.py +0 -0
  548. scitex/scholar/url_finder/translators/individual/emerald.py +0 -0
  549. scitex/scholar/url_finder/translators/individual/emerald_insight.py +0 -0
  550. scitex/scholar/url_finder/translators/individual/emja.py +0 -0
  551. scitex/scholar/url_finder/translators/individual/encyclopedia_of_chicago.py +0 -0
  552. scitex/scholar/url_finder/translators/individual/encyclopedia_of_korean_culture.py +0 -0
  553. scitex/scholar/url_finder/translators/individual/endnote_xml.py +0 -0
  554. scitex/scholar/url_finder/translators/individual/engineering_village.py +0 -0
  555. scitex/scholar/url_finder/translators/individual/envidat.py +0 -0
  556. scitex/scholar/url_finder/translators/individual/epa_national_library_catalog.py +0 -0
  557. scitex/scholar/url_finder/translators/individual/epicurious.py +0 -0
  558. scitex/scholar/url_finder/translators/individual/eprint_iacr.py +0 -0
  559. scitex/scholar/url_finder/translators/individual/eric.py +0 -0
  560. scitex/scholar/url_finder/translators/individual/erudit.py +0 -0
  561. scitex/scholar/url_finder/translators/individual/espacenet.py +0 -0
  562. scitex/scholar/url_finder/translators/individual/etatar_ru.py +0 -0
  563. scitex/scholar/url_finder/translators/individual/euclid.py +0 -0
  564. scitex/scholar/url_finder/translators/individual/eur_lex.py +0 -0
  565. scitex/scholar/url_finder/translators/individual/eurasianet.py +0 -0
  566. scitex/scholar/url_finder/translators/individual/eurogamerusgamer.py +0 -0
  567. scitex/scholar/url_finder/translators/individual/europe_pmc.py +0 -0
  568. scitex/scholar/url_finder/translators/individual/evernote.py +0 -0
  569. scitex/scholar/url_finder/translators/individual/f1000_research.py +0 -0
  570. scitex/scholar/url_finder/translators/individual/fachportal_padagogik.py +0 -0
  571. scitex/scholar/url_finder/translators/individual/factiva.py +0 -0
  572. scitex/scholar/url_finder/translators/individual/failed_architecture.py +0 -0
  573. scitex/scholar/url_finder/translators/individual/fairfax_australia.py +0 -0
  574. scitex/scholar/url_finder/translators/individual/fao_publications.py +0 -0
  575. scitex/scholar/url_finder/translators/individual/fatcat.py +0 -0
  576. scitex/scholar/url_finder/translators/individual/faz_net.py +0 -0
  577. scitex/scholar/url_finder/translators/individual/feb_web_ru.py +0 -0
  578. scitex/scholar/url_finder/translators/individual/figshare.py +0 -0
  579. scitex/scholar/url_finder/translators/individual/financial_times.py +0 -0
  580. scitex/scholar/url_finder/translators/individual/finna.py +0 -0
  581. scitex/scholar/url_finder/translators/individual/fishpond_co_nz.py +0 -0
  582. scitex/scholar/url_finder/translators/individual/flickr.py +0 -0
  583. scitex/scholar/url_finder/translators/individual/foreign_affairs.py +0 -0
  584. scitex/scholar/url_finder/translators/individual/foreign_policy.py +0 -0
  585. scitex/scholar/url_finder/translators/individual/fr_online_de.py +0 -0
  586. scitex/scholar/url_finder/translators/individual/freecite.py +0 -0
  587. scitex/scholar/url_finder/translators/individual/freepatentsonline.py +0 -0
  588. scitex/scholar/url_finder/translators/individual/frieze.py +0 -0
  589. scitex/scholar/url_finder/translators/individual/frontiers.py +0 -0
  590. scitex/scholar/url_finder/translators/individual/gale_databases.py +0 -0
  591. scitex/scholar/url_finder/translators/individual/galegdc.py +0 -0
  592. scitex/scholar/url_finder/translators/individual/galegroup.py +0 -0
  593. scitex/scholar/url_finder/translators/individual/gallica.py +0 -0
  594. scitex/scholar/url_finder/translators/individual/game_studies.py +0 -0
  595. scitex/scholar/url_finder/translators/individual/gamespot.py +0 -0
  596. scitex/scholar/url_finder/translators/individual/gamestar_gamepro.py +0 -0
  597. scitex/scholar/url_finder/translators/individual/gasyrlar_awazy.py +0 -0
  598. scitex/scholar/url_finder/translators/individual/gemeinsamer_bibliotheksverbund_isbn.py +0 -0
  599. scitex/scholar/url_finder/translators/individual/gene_ontology.py +0 -0
  600. scitex/scholar/url_finder/translators/individual/github.py +0 -0
  601. scitex/scholar/url_finder/translators/individual/globes.py +0 -0
  602. scitex/scholar/url_finder/translators/individual/gmail.py +0 -0
  603. scitex/scholar/url_finder/translators/individual/gms_german_medical_science.py +0 -0
  604. scitex/scholar/url_finder/translators/individual/goodreads.py +0 -0
  605. scitex/scholar/url_finder/translators/individual/google_books.py +0 -0
  606. scitex/scholar/url_finder/translators/individual/google_patents.py +0 -0
  607. scitex/scholar/url_finder/translators/individual/google_play.py +0 -0
  608. scitex/scholar/url_finder/translators/individual/google_presentation.py +0 -0
  609. scitex/scholar/url_finder/translators/individual/google_research.py +0 -0
  610. scitex/scholar/url_finder/translators/individual/google_scholar.py +0 -0
  611. scitex/scholar/url_finder/translators/individual/govinfo.py +0 -0
  612. scitex/scholar/url_finder/translators/individual/gpo_access_e_cfr.py +0 -0
  613. scitex/scholar/url_finder/translators/individual/gulag_many_days__many_lives.py +0 -0
  614. scitex/scholar/url_finder/translators/individual/haaretz.py +0 -0
  615. scitex/scholar/url_finder/translators/individual/habr.py +0 -0
  616. scitex/scholar/url_finder/translators/individual/hal.py +0 -0
  617. scitex/scholar/url_finder/translators/individual/hal_archives_ouvertes.py +0 -0
  618. scitex/scholar/url_finder/translators/individual/handelszeitung.py +0 -0
  619. scitex/scholar/url_finder/translators/individual/hanrei_watch.py +0 -0
  620. scitex/scholar/url_finder/translators/individual/harper_s_magazine.py +0 -0
  621. scitex/scholar/url_finder/translators/individual/harvard_business_review.py +0 -0
  622. scitex/scholar/url_finder/translators/individual/harvard_caselaw_access_project.py +0 -0
  623. scitex/scholar/url_finder/translators/individual/harvard_university_press_books.py +0 -0
  624. scitex/scholar/url_finder/translators/individual/hathitrust.py +0 -0
  625. scitex/scholar/url_finder/translators/individual/hcsp.py +0 -0
  626. scitex/scholar/url_finder/translators/individual/heinonline.py +0 -0
  627. scitex/scholar/url_finder/translators/individual/heise.py +0 -0
  628. scitex/scholar/url_finder/translators/individual/herder.py +0 -0
  629. scitex/scholar/url_finder/translators/individual/highbeam.py +0 -0
  630. scitex/scholar/url_finder/translators/individual/highwire.py +0 -0
  631. scitex/scholar/url_finder/translators/individual/highwire2.py +0 -0
  632. scitex/scholar/url_finder/translators/individual/highwire_2_0.py +0 -0
  633. scitex/scholar/url_finder/translators/individual/hindawi.py +0 -0
  634. scitex/scholar/url_finder/translators/individual/hindawi_publishers.py +0 -0
  635. scitex/scholar/url_finder/translators/individual/hispanic_american_periodical_index.py +0 -0
  636. scitex/scholar/url_finder/translators/individual/homeland_security_digital_library.py +0 -0
  637. scitex/scholar/url_finder/translators/individual/hudoc.py +0 -0
  638. scitex/scholar/url_finder/translators/individual/huff_post.py +0 -0
  639. scitex/scholar/url_finder/translators/individual/human_rights_watch.py +0 -0
  640. scitex/scholar/url_finder/translators/individual/ibisworld.py +0 -0
  641. scitex/scholar/url_finder/translators/individual/idea_alm.py +0 -0
  642. scitex/scholar/url_finder/translators/individual/idref.py +0 -0
  643. scitex/scholar/url_finder/translators/individual/ieee_computer_society.py +0 -0
  644. scitex/scholar/url_finder/translators/individual/ieee_xplore.py +0 -0
  645. scitex/scholar/url_finder/translators/individual/ietf.py +0 -0
  646. scitex/scholar/url_finder/translators/individual/ign.py +0 -0
  647. scitex/scholar/url_finder/translators/individual/imdb.py +0 -0
  648. scitex/scholar/url_finder/translators/individual/imf.py +0 -0
  649. scitex/scholar/url_finder/translators/individual/in_these_times.py +0 -0
  650. scitex/scholar/url_finder/translators/individual/informationssystem_medienpaedagogik.py +0 -0
  651. scitex/scholar/url_finder/translators/individual/informit_database.py +0 -0
  652. scitex/scholar/url_finder/translators/individual/infotrac.py +0 -0
  653. scitex/scholar/url_finder/translators/individual/ingenta_connect.py +0 -0
  654. scitex/scholar/url_finder/translators/individual/ingentaconnect.py +0 -0
  655. scitex/scholar/url_finder/translators/individual/inside_higher_ed.py +0 -0
  656. scitex/scholar/url_finder/translators/individual/insignia_opac.py +0 -0
  657. scitex/scholar/url_finder/translators/individual/inspire.py +0 -0
  658. scitex/scholar/url_finder/translators/individual/institute_of_contemporary_art.py +0 -0
  659. scitex/scholar/url_finder/translators/individual/institute_of_physics.py +0 -0
  660. scitex/scholar/url_finder/translators/individual/integrum.py +0 -0
  661. scitex/scholar/url_finder/translators/individual/intellixir.py +0 -0
  662. scitex/scholar/url_finder/translators/individual/inter_research_science_center.py +0 -0
  663. scitex/scholar/url_finder/translators/individual/international_nuclear_information_system.py +0 -0
  664. scitex/scholar/url_finder/translators/individual/internet_archive.py +0 -0
  665. scitex/scholar/url_finder/translators/individual/internet_archive_scholar.py +0 -0
  666. scitex/scholar/url_finder/translators/individual/internet_archive_wayback.py +0 -0
  667. scitex/scholar/url_finder/translators/individual/internet_archive_wayback_machine.py +0 -0
  668. scitex/scholar/url_finder/translators/individual/invenio_rdm.py +0 -0
  669. scitex/scholar/url_finder/translators/individual/inveniordm.py +0 -0
  670. scitex/scholar/url_finder/translators/individual/io_port.py +0 -0
  671. scitex/scholar/url_finder/translators/individual/iop.py +0 -0
  672. scitex/scholar/url_finder/translators/individual/ipcc.py +0 -0
  673. scitex/scholar/url_finder/translators/individual/isidore.py +0 -0
  674. scitex/scholar/url_finder/translators/individual/istc.py +0 -0
  675. scitex/scholar/url_finder/translators/individual/j_stage.py +0 -0
  676. scitex/scholar/url_finder/translators/individual/jahrbuch.py +0 -0
  677. scitex/scholar/url_finder/translators/individual/japan_times_online.py +0 -0
  678. scitex/scholar/url_finder/translators/individual/jets.py +0 -0
  679. scitex/scholar/url_finder/translators/individual/jisc_historical_texts.py +0 -0
  680. scitex/scholar/url_finder/translators/individual/journal_of_electronic_publishing.py +0 -0
  681. scitex/scholar/url_finder/translators/individual/journal_of_extension.py +0 -0
  682. scitex/scholar/url_finder/translators/individual/journal_of_machine_learning_research.py +0 -0
  683. scitex/scholar/url_finder/translators/individual/journal_of_religion_and_society.py +0 -0
  684. scitex/scholar/url_finder/translators/individual/jrc_publications_repository.py +0 -0
  685. scitex/scholar/url_finder/translators/individual/jstage.py +0 -0
  686. scitex/scholar/url_finder/translators/individual/juricaf.py +0 -0
  687. scitex/scholar/url_finder/translators/individual/jurion.py +0 -0
  688. scitex/scholar/url_finder/translators/individual/juris.py +0 -0
  689. scitex/scholar/url_finder/translators/individual/jurpc.py +0 -0
  690. scitex/scholar/url_finder/translators/individual/k10plus_isbn.py +0 -0
  691. scitex/scholar/url_finder/translators/individual/kanopy.py +0 -0
  692. scitex/scholar/url_finder/translators/individual/karger.py +0 -0
  693. scitex/scholar/url_finder/translators/individual/khaama_press.py +0 -0
  694. scitex/scholar/url_finder/translators/individual/kitapyurdu_com.py +0 -0
  695. scitex/scholar/url_finder/translators/individual/kommersant.py +0 -0
  696. scitex/scholar/url_finder/translators/individual/korean_national_library.py +0 -0
  697. scitex/scholar/url_finder/translators/individual/kstudy.py +0 -0
  698. scitex/scholar/url_finder/translators/individual/l_annee_philologique.py +0 -0
  699. scitex/scholar/url_finder/translators/individual/la_croix.py +0 -0
  700. scitex/scholar/url_finder/translators/individual/la_nacion__argentina_.py +0 -0
  701. scitex/scholar/url_finder/translators/individual/la_presse.py +0 -0
  702. scitex/scholar/url_finder/translators/individual/la_republica__peru_.py +0 -0
  703. scitex/scholar/url_finder/translators/individual/la_times.py +0 -0
  704. scitex/scholar/url_finder/translators/individual/lagen_nu.py +0 -0
  705. scitex/scholar/url_finder/translators/individual/landesbibliographie_baden_wurttemberg.py +0 -0
  706. scitex/scholar/url_finder/translators/individual/lapham_s_quarterly.py +0 -0
  707. scitex/scholar/url_finder/translators/individual/le_devoir.py +0 -0
  708. scitex/scholar/url_finder/translators/individual/le_figaro.py +0 -0
  709. scitex/scholar/url_finder/translators/individual/le_maitron.py +0 -0
  710. scitex/scholar/url_finder/translators/individual/le_monde.py +0 -0
  711. scitex/scholar/url_finder/translators/individual/le_monde_diplomatique.py +0 -0
  712. scitex/scholar/url_finder/translators/individual/legifrance.py +0 -0
  713. scitex/scholar/url_finder/translators/individual/legislative_insight.py +0 -0
  714. scitex/scholar/url_finder/translators/individual/lexis_.py +0 -0
  715. scitex/scholar/url_finder/translators/individual/lexisnexis.py +0 -0
  716. scitex/scholar/url_finder/translators/individual/libraries_tasmania.py +0 -0
  717. scitex/scholar/url_finder/translators/individual/library_catalog__aleph_.py +0 -0
  718. scitex/scholar/url_finder/translators/individual/library_catalog__amicus_.py +0 -0
  719. scitex/scholar/url_finder/translators/individual/library_catalog__aquabrowser_.py +0 -0
  720. scitex/scholar/url_finder/translators/individual/library_catalog__bibliocommons_.py +0 -0
  721. scitex/scholar/url_finder/translators/individual/library_catalog__blacklight_.py +0 -0
  722. scitex/scholar/url_finder/translators/individual/library_catalog__capita_prism_.py +0 -0
  723. scitex/scholar/url_finder/translators/individual/library_catalog__dra_.py +0 -0
  724. scitex/scholar/url_finder/translators/individual/library_catalog__dynix_.py +0 -0
  725. scitex/scholar/url_finder/translators/individual/library_catalog__encore_.py +0 -0
  726. scitex/scholar/url_finder/translators/individual/library_catalog__innopac_.py +0 -0
  727. scitex/scholar/url_finder/translators/individual/library_catalog__koha_.py +0 -0
  728. scitex/scholar/url_finder/translators/individual/library_catalog__mango_.py +0 -0
  729. scitex/scholar/url_finder/translators/individual/library_catalog__opals_.py +0 -0
  730. scitex/scholar/url_finder/translators/individual/library_catalog__pica2_.py +0 -0
  731. scitex/scholar/url_finder/translators/individual/library_catalog__pica_.py +0 -0
  732. scitex/scholar/url_finder/translators/individual/library_catalog__pika_.py +0 -0
  733. scitex/scholar/url_finder/translators/individual/library_catalog__polaris_.py +0 -0
  734. scitex/scholar/url_finder/translators/individual/library_catalog__quolto_.py +0 -0
  735. scitex/scholar/url_finder/translators/individual/library_catalog__rero_ils_.py +0 -0
  736. scitex/scholar/url_finder/translators/individual/library_catalog__sirsi_.py +0 -0
  737. scitex/scholar/url_finder/translators/individual/library_catalog__sirsi_elibrary_.py +0 -0
  738. scitex/scholar/url_finder/translators/individual/library_catalog__slims_.py +0 -0
  739. scitex/scholar/url_finder/translators/individual/library_catalog__tind_ils_.py +0 -0
  740. scitex/scholar/url_finder/translators/individual/library_catalog__tinread_.py +0 -0
  741. scitex/scholar/url_finder/translators/individual/library_catalog__tlcyouseemore_.py +0 -0
  742. scitex/scholar/url_finder/translators/individual/library_catalog__visual_library_2021_.py +0 -0
  743. scitex/scholar/url_finder/translators/individual/library_catalog__voyager_.py +0 -0
  744. scitex/scholar/url_finder/translators/individual/library_catalog__voyager_7_.py +0 -0
  745. scitex/scholar/url_finder/translators/individual/library_catalog__vtls_.py +0 -0
  746. scitex/scholar/url_finder/translators/individual/library_genesis.py +0 -0
  747. scitex/scholar/url_finder/translators/individual/library_hub_discover.py +0 -0
  748. scitex/scholar/url_finder/translators/individual/library_of_congress_digital_collections.py +0 -0
  749. scitex/scholar/url_finder/translators/individual/library_of_congress_isbn.py +0 -0
  750. scitex/scholar/url_finder/translators/individual/libris_isbn.py +0 -0
  751. scitex/scholar/url_finder/translators/individual/lingbuzz.py +0 -0
  752. scitex/scholar/url_finder/translators/individual/lippincott_williams_and_wilkins.py +0 -0
  753. scitex/scholar/url_finder/translators/individual/literary_hub.py +0 -0
  754. scitex/scholar/url_finder/translators/individual/litres.py +0 -0
  755. scitex/scholar/url_finder/translators/individual/livejournal.py +0 -0
  756. scitex/scholar/url_finder/translators/individual/livivo.py +0 -0
  757. scitex/scholar/url_finder/translators/individual/london_review_of_books.py +0 -0
  758. scitex/scholar/url_finder/translators/individual/lookus.py +0 -0
  759. scitex/scholar/url_finder/translators/individual/lulu.py +0 -0
  760. scitex/scholar/url_finder/translators/individual/lwn_net.py +0 -0
  761. scitex/scholar/url_finder/translators/individual/lww.py +0 -0
  762. scitex/scholar/url_finder/translators/individual/mab2.py +0 -0
  763. scitex/scholar/url_finder/translators/individual/magazines_russ_ru.py +0 -0
  764. scitex/scholar/url_finder/translators/individual/mailman.py +0 -0
  765. scitex/scholar/url_finder/translators/individual/mainichi_daily_news.py +0 -0
  766. scitex/scholar/url_finder/translators/individual/marc.py +0 -0
  767. scitex/scholar/url_finder/translators/individual/marcxml.py +0 -0
  768. scitex/scholar/url_finder/translators/individual/mastodon.py +0 -0
  769. scitex/scholar/url_finder/translators/individual/matbugat_ru.py +0 -0
  770. scitex/scholar/url_finder/translators/individual/max_planck_institute_for_the_history_of_science_virtual_laboratory_library.py +0 -0
  771. scitex/scholar/url_finder/translators/individual/mcv.py +0 -0
  772. scitex/scholar/url_finder/translators/individual/mdpi.py +0 -0
  773. scitex/scholar/url_finder/translators/individual/mdpi_journals.py +0 -0
  774. scitex/scholar/url_finder/translators/individual/medes.py +0 -0
  775. scitex/scholar/url_finder/translators/individual/medium.py +0 -0
  776. scitex/scholar/url_finder/translators/individual/medline_nbib.py +0 -0
  777. scitex/scholar/url_finder/translators/individual/medlinenbib.py +0 -0
  778. scitex/scholar/url_finder/translators/individual/medra.py +0 -0
  779. scitex/scholar/url_finder/translators/individual/metalib.py +0 -0
  780. scitex/scholar/url_finder/translators/individual/mets.py +0 -0
  781. scitex/scholar/url_finder/translators/individual/microbiology_society_journals.py +0 -0
  782. scitex/scholar/url_finder/translators/individual/microsoft_academic.py +0 -0
  783. scitex/scholar/url_finder/translators/individual/midas_journals.py +0 -0
  784. scitex/scholar/url_finder/translators/individual/mikromarc.py +0 -0
  785. scitex/scholar/url_finder/translators/individual/milli_kutuphane.py +0 -0
  786. scitex/scholar/url_finder/translators/individual/mit_press_books.py +0 -0
  787. scitex/scholar/url_finder/translators/individual/mods.py +0 -0
  788. scitex/scholar/url_finder/translators/individual/mpg_pure.py +0 -0
  789. scitex/scholar/url_finder/translators/individual/musee_du_louvre.py +0 -0
  790. scitex/scholar/url_finder/translators/individual/nagoya_university_opac.py +0 -0
  791. scitex/scholar/url_finder/translators/individual/nasa_ads.py +0 -0
  792. scitex/scholar/url_finder/translators/individual/nasa_ntrs.py +0 -0
  793. scitex/scholar/url_finder/translators/individual/national_academies_press.py +0 -0
  794. scitex/scholar/url_finder/translators/individual/national_agriculture_library.py +0 -0
  795. scitex/scholar/url_finder/translators/individual/national_archives_of_australia.py +0 -0
  796. scitex/scholar/url_finder/translators/individual/national_archives_of_south_africa.py +0 -0
  797. scitex/scholar/url_finder/translators/individual/national_bureau_of_economic_research.py +0 -0
  798. scitex/scholar/url_finder/translators/individual/national_diet_library_catalogue.py +0 -0
  799. scitex/scholar/url_finder/translators/individual/national_gallery_of_art___usa.py +0 -0
  800. scitex/scholar/url_finder/translators/individual/national_gallery_of_australia.py +0 -0
  801. scitex/scholar/url_finder/translators/individual/national_library_of_australia__new_catalog_.py +0 -0
  802. scitex/scholar/url_finder/translators/individual/national_library_of_belarus.py +0 -0
  803. scitex/scholar/url_finder/translators/individual/national_library_of_norway.py +0 -0
  804. scitex/scholar/url_finder/translators/individual/national_library_of_poland_isbn.py +0 -0
  805. scitex/scholar/url_finder/translators/individual/national_post.py +0 -0
  806. scitex/scholar/url_finder/translators/individual/national_technical_reports_library.py +0 -0
  807. scitex/scholar/url_finder/translators/individual/national_transportation_library_rosa_p.py +0 -0
  808. scitex/scholar/url_finder/translators/individual/nature.py +0 -0
  809. scitex/scholar/url_finder/translators/individual/nber.py +0 -0
  810. scitex/scholar/url_finder/translators/individual/ncbi_nucleotide.py +0 -0
  811. scitex/scholar/url_finder/translators/individual/neural_information_processing_systems.py +0 -0
  812. scitex/scholar/url_finder/translators/individual/new_left_review.py +0 -0
  813. scitex/scholar/url_finder/translators/individual/new_zealand_herald.py +0 -0
  814. scitex/scholar/url_finder/translators/individual/newlines_magazine.py +0 -0
  815. scitex/scholar/url_finder/translators/individual/news_corp_australia.py +0 -0
  816. scitex/scholar/url_finder/translators/individual/newsbank.py +0 -0
  817. scitex/scholar/url_finder/translators/individual/newshub_co_nz.py +0 -0
  818. scitex/scholar/url_finder/translators/individual/newsnettamedia.py +0 -0
  819. scitex/scholar/url_finder/translators/individual/newspapers_com.py +0 -0
  820. scitex/scholar/url_finder/translators/individual/noor_digital_library.py +0 -0
  821. scitex/scholar/url_finder/translators/individual/note_html.py +0 -0
  822. scitex/scholar/url_finder/translators/individual/note_markdown.py +0 -0
  823. scitex/scholar/url_finder/translators/individual/notre_dame_philosophical_reviews.py +0 -0
  824. scitex/scholar/url_finder/translators/individual/npr.py +0 -0
  825. scitex/scholar/url_finder/translators/individual/nrc_nl.py +0 -0
  826. scitex/scholar/url_finder/translators/individual/nrc_research_press.py +0 -0
  827. scitex/scholar/url_finder/translators/individual/ntsb_accident_reports.py +0 -0
  828. scitex/scholar/url_finder/translators/individual/nypl_menus.py +0 -0
  829. scitex/scholar/url_finder/translators/individual/nypl_research_catalog.py +0 -0
  830. scitex/scholar/url_finder/translators/individual/nytimes_com.py +0 -0
  831. scitex/scholar/url_finder/translators/individual/nzz_ch.py +0 -0
  832. scitex/scholar/url_finder/translators/individual/oapen.py +0 -0
  833. scitex/scholar/url_finder/translators/individual/oclc_worldcat_firstsearch.py +0 -0
  834. scitex/scholar/url_finder/translators/individual/oecd.py +0 -0
  835. scitex/scholar/url_finder/translators/individual/oecd_ilibrary.py +0 -0
  836. scitex/scholar/url_finder/translators/individual/ohiolink.py +0 -0
  837. scitex/scholar/url_finder/translators/individual/open_conf.py +0 -0
  838. scitex/scholar/url_finder/translators/individual/open_knowledge_repository.py +0 -0
  839. scitex/scholar/url_finder/translators/individual/open_worldcat.py +0 -0
  840. scitex/scholar/url_finder/translators/individual/openalex.py +0 -0
  841. scitex/scholar/url_finder/translators/individual/openalex_json.py +0 -0
  842. scitex/scholar/url_finder/translators/individual/openedition_books.py +0 -0
  843. scitex/scholar/url_finder/translators/individual/openedition_journals.py +0 -0
  844. scitex/scholar/url_finder/translators/individual/openjur.py +0 -0
  845. scitex/scholar/url_finder/translators/individual/optical_society_of_america.py +0 -0
  846. scitex/scholar/url_finder/translators/individual/optimization_online.py +0 -0
  847. scitex/scholar/url_finder/translators/individual/orcid.py +0 -0
  848. scitex/scholar/url_finder/translators/individual/osa.py +0 -0
  849. scitex/scholar/url_finder/translators/individual/osf_preprints.py +0 -0
  850. scitex/scholar/url_finder/translators/individual/osti_energy_citations.py +0 -0
  851. scitex/scholar/url_finder/translators/individual/ovid.py +0 -0
  852. scitex/scholar/url_finder/translators/individual/ovid_tagged.py +0 -0
  853. scitex/scholar/url_finder/translators/individual/oxford.py +0 -0
  854. scitex/scholar/url_finder/translators/individual/oxford_dictionaries_premium.py +0 -0
  855. scitex/scholar/url_finder/translators/individual/oxford_english_dictionary.py +0 -0
  856. scitex/scholar/url_finder/translators/individual/oxford_music_and_art_online.py +0 -0
  857. scitex/scholar/url_finder/translators/individual/oxford_reference.py +0 -0
  858. scitex/scholar/url_finder/translators/individual/oxford_university_press.py +0 -0
  859. scitex/scholar/url_finder/translators/individual/ozon_ru.py +0 -0
  860. scitex/scholar/url_finder/translators/individual/pajhwok_afghan_news.py +0 -0
  861. scitex/scholar/url_finder/translators/individual/papers_past.py +0 -0
  862. scitex/scholar/url_finder/translators/individual/paris_review.py +0 -0
  863. scitex/scholar/url_finder/translators/individual/pastebin.py +0 -0
  864. scitex/scholar/url_finder/translators/individual/patents___uspto.py +0 -0
  865. scitex/scholar/url_finder/translators/individual/pc_gamer.py +0 -0
  866. scitex/scholar/url_finder/translators/individual/pc_games.py +0 -0
  867. scitex/scholar/url_finder/translators/individual/peeters.py +0 -0
  868. scitex/scholar/url_finder/translators/individual/pei_archival_information_network.py +0 -0
  869. scitex/scholar/url_finder/translators/individual/pep_web.py +0 -0
  870. scitex/scholar/url_finder/translators/individual/perceiving_systems.py +0 -0
  871. scitex/scholar/url_finder/translators/individual/perlego.py +0 -0
  872. scitex/scholar/url_finder/translators/individual/philosopher_s_imprint.py +0 -0
  873. scitex/scholar/url_finder/translators/individual/philpapers.py +0 -0
  874. scitex/scholar/url_finder/translators/individual/pkp_catalog_systems.py +0 -0
  875. scitex/scholar/url_finder/translators/individual/pleade.py +0 -0
  876. scitex/scholar/url_finder/translators/individual/plos.py +0 -0
  877. scitex/scholar/url_finder/translators/individual/plos_journals.py +0 -0
  878. scitex/scholar/url_finder/translators/individual/pnas.py +0 -0
  879. scitex/scholar/url_finder/translators/individual/polygon.py +0 -0
  880. scitex/scholar/url_finder/translators/individual/potsdamer_neueste_nachrichten.py +0 -0
  881. scitex/scholar/url_finder/translators/individual/prc_history_review.py +0 -0
  882. scitex/scholar/url_finder/translators/individual/preprints_org.py +0 -0
  883. scitex/scholar/url_finder/translators/individual/primo.py +0 -0
  884. scitex/scholar/url_finder/translators/individual/primo_2018.py +0 -0
  885. scitex/scholar/url_finder/translators/individual/primo_normalized_xml.py +0 -0
  886. scitex/scholar/url_finder/translators/individual/probing_the_past.py +0 -0
  887. scitex/scholar/url_finder/translators/individual/project_gutenberg.py +0 -0
  888. scitex/scholar/url_finder/translators/individual/project_muse.py +0 -0
  889. scitex/scholar/url_finder/translators/individual/promed.py +0 -0
  890. scitex/scholar/url_finder/translators/individual/proquest.py +0 -0
  891. scitex/scholar/url_finder/translators/individual/proquest_ebook_central.py +0 -0
  892. scitex/scholar/url_finder/translators/individual/proquest_policyfile.py +0 -0
  893. scitex/scholar/url_finder/translators/individual/protein_data_bank.py +0 -0
  894. scitex/scholar/url_finder/translators/individual/pubfactory_journals.py +0 -0
  895. scitex/scholar/url_finder/translators/individual/public_record_office_victoria.py +0 -0
  896. scitex/scholar/url_finder/translators/individual/publications_du_quebec.py +0 -0
  897. scitex/scholar/url_finder/translators/individual/publications_office_of_the_european_union.py +0 -0
  898. scitex/scholar/url_finder/translators/individual/pubmed.py +0 -0
  899. scitex/scholar/url_finder/translators/individual/pubmed_central.py +0 -0
  900. scitex/scholar/url_finder/translators/individual/pubmed_xml.py +0 -0
  901. scitex/scholar/url_finder/translators/individual/pubpub.py +0 -0
  902. scitex/scholar/url_finder/translators/individual/pypi.py +0 -0
  903. scitex/scholar/url_finder/translators/individual/qatar_digital_library.py +0 -0
  904. scitex/scholar/url_finder/translators/individual/queensland_state_archives.py +0 -0
  905. scitex/scholar/url_finder/translators/individual/r_packages.py +0 -0
  906. scitex/scholar/url_finder/translators/individual/radio_free_europe__radio_liberty.py +0 -0
  907. scitex/scholar/url_finder/translators/individual/rand.py +0 -0
  908. scitex/scholar/url_finder/translators/individual/rdf.py +0 -0
  909. scitex/scholar/url_finder/translators/individual/rechtspraak_nl.py +0 -0
  910. scitex/scholar/url_finder/translators/individual/redalyc.py +0 -0
  911. scitex/scholar/url_finder/translators/individual/reddit.py +0 -0
  912. scitex/scholar/url_finder/translators/individual/referbibix.py +0 -0
  913. scitex/scholar/url_finder/translators/individual/refworks_tagged.py +0 -0
  914. scitex/scholar/url_finder/translators/individual/regeringskansliet.py +0 -0
  915. scitex/scholar/url_finder/translators/individual/repec___econpapers.py +0 -0
  916. scitex/scholar/url_finder/translators/individual/repec___ideas.py +0 -0
  917. scitex/scholar/url_finder/translators/individual/repec_ideas.py +0 -0
  918. scitex/scholar/url_finder/translators/individual/research_square.py +0 -0
  919. scitex/scholar/url_finder/translators/individual/researchgate.py +0 -0
  920. scitex/scholar/url_finder/translators/individual/retsinformation.py +0 -0
  921. scitex/scholar/url_finder/translators/individual/reuters.py +0 -0
  922. scitex/scholar/url_finder/translators/individual/ris.py +0 -0
  923. scitex/scholar/url_finder/translators/individual/rock__paper__shotgun.py +0 -0
  924. scitex/scholar/url_finder/translators/individual/roll_call.py +0 -0
  925. scitex/scholar/url_finder/translators/individual/rsc.py +0 -0
  926. scitex/scholar/url_finder/translators/individual/rsc_publishing.py +0 -0
  927. scitex/scholar/url_finder/translators/individual/russian_state_library.py +0 -0
  928. scitex/scholar/url_finder/translators/individual/sacramento_bee.py +0 -0
  929. scitex/scholar/url_finder/translators/individual/sae_papers.py +0 -0
  930. scitex/scholar/url_finder/translators/individual/safari_books_online.py +0 -0
  931. scitex/scholar/url_finder/translators/individual/sage.py +0 -0
  932. scitex/scholar/url_finder/translators/individual/sage_journals.py +0 -0
  933. scitex/scholar/url_finder/translators/individual/sage_knowledge.py +0 -0
  934. scitex/scholar/url_finder/translators/individual/saildart.py +0 -0
  935. scitex/scholar/url_finder/translators/individual/salt_research_archives.py +0 -0
  936. scitex/scholar/url_finder/translators/individual/sbn_it.py +0 -0
  937. scitex/scholar/url_finder/translators/individual/scholars_portal_journals.py +0 -0
  938. scitex/scholar/url_finder/translators/individual/scholia.py +0 -0
  939. scitex/scholar/url_finder/translators/individual/schweizer_radio_und_fernsehen_srf.py +0 -0
  940. scitex/scholar/url_finder/translators/individual/scielo.py +0 -0
  941. scitex/scholar/url_finder/translators/individual/sciencedirect.py +0 -0
  942. scitex/scholar/url_finder/translators/individual/scinapse.py +0 -0
  943. scitex/scholar/url_finder/translators/individual/scopus.py +0 -0
  944. scitex/scholar/url_finder/translators/individual/semantic_scholar.py +0 -0
  945. scitex/scholar/url_finder/translators/individual/semantics_visual_library.py +0 -0
  946. scitex/scholar/url_finder/translators/individual/sfu_ipinch.py +0 -0
  947. scitex/scholar/url_finder/translators/individual/silverchair.py +0 -0
  948. scitex/scholar/url_finder/translators/individual/sipri.py +0 -0
  949. scitex/scholar/url_finder/translators/individual/sirs_knowledge_source.py +0 -0
  950. scitex/scholar/url_finder/translators/individual/slate.py +0 -0
  951. scitex/scholar/url_finder/translators/individual/slideshare.py +0 -0
  952. scitex/scholar/url_finder/translators/individual/slub_dresden.py +0 -0
  953. scitex/scholar/url_finder/translators/individual/sora.py +0 -0
  954. scitex/scholar/url_finder/translators/individual/springer.py +0 -0
  955. scitex/scholar/url_finder/translators/individual/springer_link.py +0 -0
  956. scitex/scholar/url_finder/translators/individual/ssoar.py +0 -0
  957. scitex/scholar/url_finder/translators/individual/stack_exchange.py +0 -0
  958. scitex/scholar/url_finder/translators/individual/standard_ebooks.py +0 -0
  959. scitex/scholar/url_finder/translators/individual/stanford_encyclopedia_of_philosophy.py +0 -0
  960. scitex/scholar/url_finder/translators/individual/stanford_university_press.py +0 -0
  961. scitex/scholar/url_finder/translators/individual/state_records_office_of_western_australia.py +0 -0
  962. scitex/scholar/url_finder/translators/individual/state_records_office_wa.py +0 -0
  963. scitex/scholar/url_finder/translators/individual/stitcher.py +0 -0
  964. scitex/scholar/url_finder/translators/individual/store_norske_leksikon.py +0 -0
  965. scitex/scholar/url_finder/translators/individual/stuff_co_nz.py +0 -0
  966. scitex/scholar/url_finder/translators/individual/substack.py +0 -0
  967. scitex/scholar/url_finder/translators/individual/sud_ouest.py +0 -0
  968. scitex/scholar/url_finder/translators/individual/sueddeutsche_de.py +0 -0
  969. scitex/scholar/url_finder/translators/individual/summon_2.py +0 -0
  970. scitex/scholar/url_finder/translators/individual/superlib.py +0 -0
  971. scitex/scholar/url_finder/translators/individual/svenska_dagbladet.py +0 -0
  972. scitex/scholar/url_finder/translators/individual/sveriges_radio.py +0 -0
  973. scitex/scholar/url_finder/translators/individual/svt_nyheter.py +0 -0
  974. scitex/scholar/url_finder/translators/individual/tagesspiegel.py +0 -0
  975. scitex/scholar/url_finder/translators/individual/talis_aspire.py +0 -0
  976. scitex/scholar/url_finder/translators/individual/talisprism.py +0 -0
  977. scitex/scholar/url_finder/translators/individual/tatknigafund.py +0 -0
  978. scitex/scholar/url_finder/translators/individual/tatpressa_ru.py +0 -0
  979. scitex/scholar/url_finder/translators/individual/taylor___francis_ebooks.py +0 -0
  980. scitex/scholar/url_finder/translators/individual/taylor_and_francis_nejm.py +0 -0
  981. scitex/scholar/url_finder/translators/individual/taylor_francis.py +0 -0
  982. scitex/scholar/url_finder/translators/individual/taylor_francis_nejm.py +0 -0
  983. scitex/scholar/url_finder/translators/individual/taz_de.py +0 -0
  984. scitex/scholar/url_finder/translators/individual/tei.py +0 -0
  985. scitex/scholar/url_finder/translators/individual/tesis_doctorals_en_xarxa.py +0 -0
  986. scitex/scholar/url_finder/translators/individual/the_art_newspaper.py +0 -0
  987. scitex/scholar/url_finder/translators/individual/the_atlantic.py +0 -0
  988. scitex/scholar/url_finder/translators/individual/the_boston_globe.py +0 -0
  989. scitex/scholar/url_finder/translators/individual/the_chronicle_of_higher_education.py +0 -0
  990. scitex/scholar/url_finder/translators/individual/the_daily_beast.py +0 -0
  991. scitex/scholar/url_finder/translators/individual/the_economic_times___the_times_of_india.py +0 -0
  992. scitex/scholar/url_finder/translators/individual/the_economist.py +0 -0
  993. scitex/scholar/url_finder/translators/individual/the_free_dictionary.py +0 -0
  994. scitex/scholar/url_finder/translators/individual/the_globe_and_mail.py +0 -0
  995. scitex/scholar/url_finder/translators/individual/the_guardian.py +0 -0
  996. scitex/scholar/url_finder/translators/individual/the_hamilton_spectator.py +0 -0
  997. scitex/scholar/url_finder/translators/individual/the_hindu.py +0 -0
  998. scitex/scholar/url_finder/translators/individual/the_independent.py +0 -0
  999. scitex/scholar/url_finder/translators/individual/the_intercept.py +0 -0
  1000. scitex/scholar/url_finder/translators/individual/the_met.py +0 -0
  1001. scitex/scholar/url_finder/translators/individual/the_microfinance_gateway.py +0 -0
  1002. scitex/scholar/url_finder/translators/individual/the_nation.py +0 -0
  1003. scitex/scholar/url_finder/translators/individual/the_national_archives__uk_.py +0 -0
  1004. scitex/scholar/url_finder/translators/individual/the_new_republic.py +0 -0
  1005. scitex/scholar/url_finder/translators/individual/the_new_york_review_of_books.py +0 -0
  1006. scitex/scholar/url_finder/translators/individual/the_new_yorker.py +0 -0
  1007. scitex/scholar/url_finder/translators/individual/the_open_library.py +0 -0
  1008. scitex/scholar/url_finder/translators/individual/the_straits_times.py +0 -0
  1009. scitex/scholar/url_finder/translators/individual/the_telegraph.py +0 -0
  1010. scitex/scholar/url_finder/translators/individual/the_times_and_sunday_times.py +0 -0
  1011. scitex/scholar/url_finder/translators/individual/the_times_of_israel.py +0 -0
  1012. scitex/scholar/url_finder/translators/individual/themarker.py +0 -0
  1013. scitex/scholar/url_finder/translators/individual/theory_of_computing.py +0 -0
  1014. scitex/scholar/url_finder/translators/individual/thesesfr.py +0 -0
  1015. scitex/scholar/url_finder/translators/individual/thieme.py +0 -0
  1016. scitex/scholar/url_finder/translators/individual/time_com.py +0 -0
  1017. scitex/scholar/url_finder/translators/individual/timesmachine.py +0 -0
  1018. scitex/scholar/url_finder/translators/individual/tony_blair_institute.py +0 -0
  1019. scitex/scholar/url_finder/translators/individual/tony_blair_institute_for_global_change.py +0 -0
  1020. scitex/scholar/url_finder/translators/individual/toronto_star.py +0 -0
  1021. scitex/scholar/url_finder/translators/individual/transportation_research_board.py +0 -0
  1022. scitex/scholar/url_finder/translators/individual/treesearch.py +0 -0
  1023. scitex/scholar/url_finder/translators/individual/trove.py +0 -0
  1024. scitex/scholar/url_finder/translators/individual/tumblr.py +0 -0
  1025. scitex/scholar/url_finder/translators/individual/tv_by_the_numbers.py +0 -0
  1026. scitex/scholar/url_finder/translators/individual/tvnz.py +0 -0
  1027. scitex/scholar/url_finder/translators/individual/twitter.py +0 -0
  1028. scitex/scholar/url_finder/translators/individual/ubiquity_journals.py +0 -0
  1029. scitex/scholar/url_finder/translators/individual/uchicago_vufind.py +0 -0
  1030. scitex/scholar/url_finder/translators/individual/unapi.py +0 -0
  1031. scitex/scholar/url_finder/translators/individual/unesco.py +0 -0
  1032. scitex/scholar/url_finder/translators/individual/university_of_california_press_books.py +0 -0
  1033. scitex/scholar/url_finder/translators/individual/university_of_chicago_press_books.py +0 -0
  1034. scitex/scholar/url_finder/translators/individual/university_of_wisconsin_madison_libraries_catalog.py +0 -0
  1035. scitex/scholar/url_finder/translators/individual/university_press_scholarship.py +0 -0
  1036. scitex/scholar/url_finder/translators/individual/unqualified_dublin_core_rdf.py +0 -0
  1037. scitex/scholar/url_finder/translators/individual/unz_print_archive.py +0 -0
  1038. scitex/scholar/url_finder/translators/individual/upcommons.py +0 -0
  1039. scitex/scholar/url_finder/translators/individual/uptodate_references.py +0 -0
  1040. scitex/scholar/url_finder/translators/individual/us_national_archives_research_catalog.py +0 -0
  1041. scitex/scholar/url_finder/translators/individual/usenix.py +0 -0
  1042. scitex/scholar/url_finder/translators/individual/vanity_fair.py +0 -0
  1043. scitex/scholar/url_finder/translators/individual/verniana.py +0 -0
  1044. scitex/scholar/url_finder/translators/individual/verniana_jules_verne_studies.py +0 -0
  1045. scitex/scholar/url_finder/translators/individual/verso_books.py +0 -0
  1046. scitex/scholar/url_finder/translators/individual/vice.py +0 -0
  1047. scitex/scholar/url_finder/translators/individual/victoria___albert_museum.py +0 -0
  1048. scitex/scholar/url_finder/translators/individual/vimeo.py +0 -0
  1049. scitex/scholar/url_finder/translators/individual/vlex.py +0 -0
  1050. scitex/scholar/url_finder/translators/individual/voxeu.py +0 -0
  1051. scitex/scholar/url_finder/translators/individual/wall_street_journal.py +0 -0
  1052. scitex/scholar/url_finder/translators/individual/wanfang_data.py +0 -0
  1053. scitex/scholar/url_finder/translators/individual/washington_monthly.py +0 -0
  1054. scitex/scholar/url_finder/translators/individual/washington_post.py +0 -0
  1055. scitex/scholar/url_finder/translators/individual/web_of_science.py +0 -0
  1056. scitex/scholar/url_finder/translators/individual/web_of_science_nextgen.py +0 -0
  1057. scitex/scholar/url_finder/translators/individual/web_of_science_tagged.py +0 -0
  1058. scitex/scholar/url_finder/translators/individual/welt_online.py +0 -0
  1059. scitex/scholar/url_finder/translators/individual/westlaw_uk.py +0 -0
  1060. scitex/scholar/url_finder/translators/individual/who.py +0 -0
  1061. scitex/scholar/url_finder/translators/individual/wikidata.py +0 -0
  1062. scitex/scholar/url_finder/translators/individual/wikidata_quickstatements.py +0 -0
  1063. scitex/scholar/url_finder/translators/individual/wikileaks_plusd.py +0 -0
  1064. scitex/scholar/url_finder/translators/individual/wikimedia_commons.py +0 -0
  1065. scitex/scholar/url_finder/translators/individual/wikipedia.py +0 -0
  1066. scitex/scholar/url_finder/translators/individual/wikipedia_citation_templates.py +0 -0
  1067. scitex/scholar/url_finder/translators/individual/wikisource.py +0 -0
  1068. scitex/scholar/url_finder/translators/individual/wikiwand.py +0 -0
  1069. scitex/scholar/url_finder/translators/individual/wiktionary.py +0 -0
  1070. scitex/scholar/url_finder/translators/individual/wildlife_biology_in_practice.py +0 -0
  1071. scitex/scholar/url_finder/translators/individual/wiley.py +0 -0
  1072. scitex/scholar/url_finder/translators/individual/wiley_online_library.py +0 -0
  1073. scitex/scholar/url_finder/translators/individual/wilson_center_digital_archive.py +0 -0
  1074. scitex/scholar/url_finder/translators/individual/winnipeg_free_press.py +0 -0
  1075. scitex/scholar/url_finder/translators/individual/wipo.py +0 -0
  1076. scitex/scholar/url_finder/translators/individual/wired.py +0 -0
  1077. scitex/scholar/url_finder/translators/individual/wiso.py +0 -0
  1078. scitex/scholar/url_finder/translators/individual/womennews.py +0 -0
  1079. scitex/scholar/url_finder/translators/individual/world_bank.py +0 -0
  1080. scitex/scholar/url_finder/translators/individual/world_digital_library.py +0 -0
  1081. scitex/scholar/url_finder/translators/individual/world_history_connected.py +0 -0
  1082. scitex/scholar/url_finder/translators/individual/world_shakespeare_bibliography_online.py +0 -0
  1083. scitex/scholar/url_finder/translators/individual/worldcat_discovery_service.py +0 -0
  1084. scitex/scholar/url_finder/translators/individual/xml_contextobject.py +0 -0
  1085. scitex/scholar/url_finder/translators/individual/yandex_books.py +0 -0
  1086. scitex/scholar/url_finder/translators/individual/ynet.py +0 -0
  1087. scitex/scholar/url_finder/translators/individual/youtube.py +0 -0
  1088. scitex/scholar/url_finder/translators/individual/ypfs.py +0 -0
  1089. scitex/scholar/url_finder/translators/individual/ypsf.py +0 -0
  1090. scitex/scholar/url_finder/translators/individual/zbmath.py +0 -0
  1091. scitex/scholar/url_finder/translators/individual/zenodo.py +0 -0
  1092. scitex/scholar/url_finder/translators/individual/ziponline.py +0 -0
  1093. scitex/scholar/url_finder/translators/individual/zobodat.py +0 -0
  1094. scitex/scholar/url_finder/translators/individual/zotero_org.py +0 -0
  1095. scitex/scholar/url_finder/translators/individual/zotero_rdf.py +0 -0
  1096. scitex/scholar/url_finder/translators/individual/zoterobib.py +0 -0
  1097. scitex/scholar/utils/__init__.py +3 -0
  1098. scitex/scholar/utils/bibtex/__init__.py +0 -0
  1099. scitex/scholar/utils/cleanup/__init__.py +0 -0
  1100. scitex/scholar/utils/text/_TextNormalizer.py +0 -0
  1101. scitex/scholar/utils/text/__init__.py +0 -0
  1102. scitex/scholar/utils/validation/DOIValidator.py +289 -0
  1103. scitex/scholar/utils/validation/README.md +169 -0
  1104. scitex/scholar/utils/validation/__init__.py +13 -0
  1105. scitex/scholar/utils/validation/validate_library_dois.py +221 -0
  1106. scitex/scholar/zotero/__init__.py +0 -0
  1107. scitex/security/README.md +255 -0
  1108. scitex/security/__init__.py +35 -0
  1109. scitex/security/cli.py +140 -0
  1110. scitex/security/github.py +358 -0
  1111. scitex/session/README.md +95 -30
  1112. scitex/session/__init__.py +8 -3
  1113. scitex/session/_decorator.py +610 -0
  1114. scitex/session/_lifecycle.py +155 -62
  1115. scitex/session/_manager.py +0 -0
  1116. scitex/session/template.py +16 -110
  1117. scitex/sh/README.md +1 -1
  1118. scitex/sh/__init__.py +0 -0
  1119. scitex/stats/__init__.py +5 -3
  1120. scitex/stats/correct/_correct_bonferroni.py +3 -3
  1121. scitex/stats/correct/_correct_fdr.py +62 -62
  1122. scitex/stats/correct/_correct_fdr_.py +634 -0
  1123. scitex/stats/correct/_correct_holm.py +2 -2
  1124. scitex/stats/correct/_correct_sidak.py +2 -2
  1125. scitex/stats/descriptive/_circular.py +2 -2
  1126. scitex/stats/descriptive/_describe.py +2 -2
  1127. scitex/stats/descriptive/_nan.py +2 -2
  1128. scitex/stats/descriptive/_real.py +2 -2
  1129. scitex/stats/effect_sizes/_cliffs_delta.py +1 -1
  1130. scitex/stats/effect_sizes/_cohens_d.py +1 -1
  1131. scitex/stats/effect_sizes/_epsilon_squared.py +1 -1
  1132. scitex/stats/effect_sizes/_eta_squared.py +1 -1
  1133. scitex/stats/effect_sizes/_prob_superiority.py +1 -1
  1134. scitex/stats/posthoc/_dunnett.py +3 -3
  1135. scitex/stats/posthoc/_games_howell.py +3 -3
  1136. scitex/stats/posthoc/_tukey_hsd.py +3 -3
  1137. scitex/stats/power/_power.py +1 -1
  1138. scitex/stats/utils/_effect_size.py +1 -1
  1139. scitex/stats/utils/_formatters.py +1 -1
  1140. scitex/stats/utils/_normalizers.py +8 -5
  1141. scitex/stats/utils/_power.py +1 -1
  1142. scitex/str/_parse.py +1 -1
  1143. scitex/str/_replace.py +1 -1
  1144. scitex/template/_clone_project.py +58 -41
  1145. scitex/template/_copy.py +22 -15
  1146. scitex/template/_customize.py +9 -4
  1147. scitex/template/_git_strategy.py +32 -32
  1148. scitex/template/_logging_helpers.py +122 -0
  1149. scitex/template/clone_pip_project.py +24 -17
  1150. scitex/template/clone_research.py +26 -21
  1151. scitex/template/clone_singularity.py +25 -22
  1152. scitex/template/clone_writer_directory.py +24 -17
  1153. scitex/tex/_preview.py +2 -2
  1154. scitex/tex/_to_vec.py +1 -1
  1155. scitex/utils/_email.py +1 -1
  1156. scitex/utils/_verify_scitex_format.py +2 -2
  1157. scitex/utils/template.py +1 -1
  1158. scitex/vis/DJANGO_INTEGRATION.md +677 -0
  1159. scitex/vis/README.md +755 -0
  1160. scitex/vis/__init__.py +111 -0
  1161. scitex/vis/backend/__init__.py +56 -0
  1162. scitex/vis/backend/export.py +166 -0
  1163. scitex/vis/backend/parser.py +190 -0
  1164. scitex/vis/backend/render.py +385 -0
  1165. scitex/vis/io/__init__.py +36 -0
  1166. scitex/vis/io/load.py +168 -0
  1167. scitex/vis/io/save.py +131 -0
  1168. scitex/vis/model/__init__.py +118 -0
  1169. scitex/vis/model/annotations.py +118 -0
  1170. scitex/vis/model/axes.py +153 -0
  1171. scitex/vis/model/figure.py +139 -0
  1172. scitex/vis/model/guides.py +105 -0
  1173. scitex/vis/model/plot.py +126 -0
  1174. scitex/vis/model/plot_types.py +682 -0
  1175. scitex/vis/model/styles.py +246 -0
  1176. scitex/vis/tmp.txt +239 -0
  1177. scitex/vis/utils/__init__.py +75 -0
  1178. scitex/vis/utils/defaults.py +335 -0
  1179. scitex/vis/utils/validate.py +204 -0
  1180. scitex/web/__init__.py +4 -0
  1181. scitex/web/_scraping.py +373 -0
  1182. scitex/writer/README.md +11 -2
  1183. scitex/writer/Writer.py +75 -15
  1184. scitex/writer/_clone_writer_project.py +41 -28
  1185. scitex/writer/_compile/__init__.py +9 -67
  1186. scitex/writer/_compile/_parser.py +0 -0
  1187. scitex/writer/_compile/_runner.py +249 -28
  1188. scitex/writer/_compile/_validator.py +0 -0
  1189. scitex/writer/_compile/manuscript.py +109 -0
  1190. scitex/writer/_compile/revision.py +81 -0
  1191. scitex/writer/_compile/supplementary.py +99 -0
  1192. scitex/writer/_project/__init__.py +0 -0
  1193. scitex/writer/_project/_create.py +10 -12
  1194. scitex/writer/_project/_trees.py +0 -0
  1195. scitex/writer/_project/_validate.py +1 -1
  1196. scitex/writer/_validate_tree_structures.py +4 -4
  1197. scitex/writer/dataclasses/__init__.py +0 -0
  1198. scitex/writer/dataclasses/config/_WriterConfig.py +3 -3
  1199. scitex/writer/dataclasses/config/__init__.py +0 -0
  1200. scitex/writer/dataclasses/contents/_ManuscriptContents.py +4 -3
  1201. scitex/writer/dataclasses/contents/_RevisionContents.py +9 -5
  1202. scitex/writer/dataclasses/contents/_SupplementaryContents.py +7 -4
  1203. scitex/writer/dataclasses/contents/__init__.py +0 -0
  1204. scitex/writer/dataclasses/core/_Document.py +1 -1
  1205. scitex/writer/dataclasses/core/_DocumentSection.py +1 -1
  1206. scitex/writer/dataclasses/core/__init__.py +0 -0
  1207. scitex/writer/dataclasses/results/_CompilationResult.py +1 -1
  1208. scitex/writer/dataclasses/results/_LaTeXIssue.py +1 -1
  1209. scitex/writer/dataclasses/results/_SaveSectionsResponse.py +107 -0
  1210. scitex/writer/dataclasses/results/_SectionReadResponse.py +117 -0
  1211. scitex/writer/dataclasses/results/__init__.py +4 -0
  1212. scitex/writer/dataclasses/tree/_ConfigTree.py +3 -2
  1213. scitex/writer/dataclasses/tree/_ManuscriptTree.py +5 -3
  1214. scitex/writer/dataclasses/tree/_RevisionTree.py +7 -4
  1215. scitex/writer/dataclasses/tree/_ScriptsTree.py +5 -3
  1216. scitex/writer/dataclasses/tree/_SharedTree.py +5 -4
  1217. scitex/writer/dataclasses/tree/_SupplementaryTree.py +7 -4
  1218. scitex/writer/dataclasses/tree/__init__.py +0 -0
  1219. scitex/writer/tests/__init__.py +0 -0
  1220. scitex/writer/utils/.legacy_git_retry.py +1 -1
  1221. scitex/writer/utils/__init__.py +0 -0
  1222. scitex/writer/utils/_parse_latex_logs.py +1 -1
  1223. scitex/writer/utils/_parse_script_args.py +0 -0
  1224. scitex/writer/utils/_watch.py +0 -0
  1225. {scitex-2.1.3.dist-info → scitex-2.3.0.dist-info}/METADATA +361 -363
  1226. {scitex-2.1.3.dist-info → scitex-2.3.0.dist-info}/RECORD +299 -329
  1227. scitex-2.3.0.dist-info/licenses/LICENSE +661 -0
  1228. scitex/.claude/mcp-config.json +0 -42
  1229. scitex/_sh.py +0 -18
  1230. scitex/ai/training/legacy/early_stopping.py +0 -150
  1231. scitex/ai/training/legacy/learning_curve_logger.py +0 -557
  1232. scitex/ai/viewed-ai.md +0 -4984
  1233. scitex/browser/ARCHITECTURE_PROPOSAL.md +0 -795
  1234. scitex/browser/INTERACTIVE_COLLABORATION.md +0 -782
  1235. scitex/browser/SAFE_IMPLEMENTATION_PLAN.md +0 -363
  1236. scitex/browser/SHARED_BROWSER_SESSION.md +0 -652
  1237. scitex/browser/TODO.md +0 -11
  1238. scitex/browser/collaboration/CLIENTSERVER_ARCHITECTURE.md +0 -165
  1239. scitex/browser/collaboration/INTERACTION_STRATEGY.md +0 -547
  1240. scitex/browser/collaboration/NON_INTERFERING_LOGIC.md +0 -730
  1241. scitex/browser/template.py +0 -122
  1242. scitex/db/legacy/_inspect_v02.py +0 -171
  1243. scitex/db/legacy/_inspect_v03-not-optimized.py +0 -179
  1244. scitex/db/legacy/_inspect_v04-working-but-printing-both-scheme-and-first-row.py +0 -337
  1245. scitex/db/legacy/_inspect_v05-working-but-no-clear-separation-between-dtype-and-actual-values.py +0 -358
  1246. scitex/dict/_DotDict_v01-not-handling-recursive-instantiations.py +0 -442
  1247. scitex/dict/_DotDict_v02-not-serializing-Path-object.py +0 -446
  1248. scitex/plt/KNOWN_ISSUES.md +0 -68
  1249. scitex/plt/TODO.md +0 -7
  1250. scitex/project/DESIGN.md +0 -423
  1251. scitex/project/DJANGO_INTEGRATION.md +0 -546
  1252. scitex/project/NAMING.md +0 -251
  1253. scitex/project/README.md +0 -441
  1254. scitex/project/__init__.py +0 -80
  1255. scitex/project/core.py +0 -466
  1256. scitex/project/metadata.py +0 -345
  1257. scitex/project/storage.py +0 -321
  1258. scitex/project/validators.py +0 -296
  1259. scitex/reproduce/_hash_array.py +0 -22
  1260. scitex/rng/_RandomStateManager_v01-no-verbose-options.py +0 -414
  1261. scitex/scholar/.claude/agents/ArchitectAgent.md +0 -50
  1262. scitex/scholar/.claude/agents/BulletinBoardOrganizerAgent.md +0 -24
  1263. scitex/scholar/.claude/agents/DebuggerAgent.md +0 -38
  1264. scitex/scholar/.claude/agents/ExamplesDeveloperAgent.md +0 -49
  1265. scitex/scholar/.claude/agents/ExperimentationAgent.md +0 -13
  1266. scitex/scholar/.claude/agents/GitHandlerAgent.md +0 -38
  1267. scitex/scholar/.claude/agents/ResearcherAgent.md +0 -35
  1268. scitex/scholar/.claude/agents/ReviewerAgent.md +0 -70
  1269. scitex/scholar/.claude/agents/SciTeXTranslatorAgent.md +0 -55
  1270. scitex/scholar/.claude/agents/SourceDeveloperAgent.md +0 -48
  1271. scitex/scholar/.claude/agents/TestDeveloperAgent.md +0 -48
  1272. scitex/scholar/.claude/agents/TestResultsReportAgent.md +0 -52
  1273. scitex/scholar/.claude/agents/TestRunnerAgent.md +0 -48
  1274. scitex/scholar/.claude/mcp-config.json +0 -42
  1275. scitex/scholar/.legacy/metadata/doi/utils/legacy/_ConfigurationResolver.py +0 -387
  1276. scitex/scholar/.legacy/metadata/urls/.tmp/open_url/legacy/_MultiInstitutionalResolver.py +0 -397
  1277. scitex/scholar/.legacy/metadata/urls/.tmp/open_url/legacy/_OpenURLResolverWithZenRows.py +0 -718
  1278. scitex/scholar/.legacy/metadata/urls/.tmp/open_url/legacy/_ResumableOpenURLResolver.py +0 -298
  1279. scitex/scholar/.legacy/metadata/urls/.tmp/open_url/legacy/_UnimelbLibraryGoButtonSelector.py +0 -466
  1280. scitex/scholar/.legacy/metadata/urls/.tmp/open_url/legacy/_ZenRowsOpenURLResolver.py +0 -372
  1281. scitex/scholar/docs/to_claude/guidelines/.claude/mcp-config.json +0 -0
  1282. scitex/scholar/docs/to_claude/guidelines/.claude/settings.json +0 -231
  1283. scitex/scholar/url_finder/.tmp/open_url/legacy/_MultiInstitutionalResolver.py +0 -397
  1284. scitex/scholar/url_finder/.tmp/open_url/legacy/_OpenURLResolverWithZenRows.py +0 -718
  1285. scitex/scholar/url_finder/.tmp/open_url/legacy/_ResumableOpenURLResolver.py +0 -298
  1286. scitex/scholar/url_finder/.tmp/open_url/legacy/_UnimelbLibraryGoButtonSelector.py +0 -466
  1287. scitex/scholar/url_finder/.tmp/open_url/legacy/_ZenRowsOpenURLResolver.py +0 -372
  1288. scitex/stats/QUICKSTART.md +0 -260
  1289. scitex/stats/TODO.md +0 -19
  1290. scitex/stats/docs/API.md +0 -165
  1291. scitex/stats/docs/ARCHITECTURE.md +0 -732
  1292. scitex/stats/docs/MIGRATION_GUIDE.md +0 -253
  1293. scitex/stats/docs/PROGRESS.md +0 -635
  1294. scitex/stats/docs/SUMMARY.md +0 -241
  1295. scitex/stats/docs/TODO.md +0 -181
  1296. scitex/stats/docs/ax_parameter_migration.md +0 -125
  1297. scitex/stats/template.py +0 -119
  1298. scitex/stats/tests/categorical/__init__.py +0 -20
  1299. scitex/stats/tests/categorical/_test_chi2.py +0 -708
  1300. scitex/stats/tests/categorical/_test_cochran_q.py +0 -609
  1301. scitex/stats/tests/categorical/_test_fisher.py +0 -585
  1302. scitex/stats/tests/categorical/_test_mcnemar.py +0 -567
  1303. scitex/stats/tests/correlation/__init__.py +0 -32
  1304. scitex/stats/tests/correlation/_test_kendall.py +0 -508
  1305. scitex/stats/tests/correlation/_test_pearson.py +0 -588
  1306. scitex/stats/tests/correlation/_test_spearman.py +0 -485
  1307. scitex/stats/tests/correlation/_test_theilsen.py +0 -193
  1308. scitex/stats/tests/nonparametric/__init__.py +0 -23
  1309. scitex/stats/tests/nonparametric/_test_brunner_munzel.py +0 -559
  1310. scitex/stats/tests/nonparametric/_test_friedman.py +0 -595
  1311. scitex/stats/tests/nonparametric/_test_kruskal.py +0 -557
  1312. scitex/stats/tests/nonparametric/_test_mannwhitneyu.py +0 -518
  1313. scitex/stats/tests/nonparametric/_test_wilcoxon.py +0 -505
  1314. scitex/stats/tests/normality/__init__.py +0 -17
  1315. scitex/stats/tests/normality/_test_ks.py +0 -702
  1316. scitex/stats/tests/normality/_test_shapiro.py +0 -498
  1317. scitex/stats/tests/parametric/__init__.py +0 -27
  1318. scitex/stats/tests/parametric/_test_anova.py +0 -625
  1319. scitex/stats/tests/parametric/_test_anova_2way.py +0 -665
  1320. scitex/stats/tests/parametric/_test_anova_rm.py +0 -717
  1321. scitex/stats/tests/parametric/_test_ttest.py +0 -835
  1322. scitex/template/ANALYSIS.md +0 -202
  1323. scitex-2.1.3.dist-info/licenses/LICENSE +0 -21
  1324. {scitex-2.1.3.dist-info → scitex-2.3.0.dist-info}/WHEEL +0 -0
  1325. {scitex-2.1.3.dist-info → scitex-2.3.0.dist-info}/entry_points.txt +0 -0
@@ -35,7 +35,7 @@ from typing import Optional, Union, Dict, Any, List, Tuple
35
35
  import warnings
36
36
  from tqdm import tqdm
37
37
 
38
- from ...errors import (
38
+ from scitex.errors import (
39
39
  IOError as SciTeXIOError,
40
40
  FileFormatError,
41
41
  PathNotFoundError,
@@ -6,8 +6,8 @@
6
6
  import numpy as np
7
7
  import scipy.spatial.distance as _distance
8
8
 
9
- from ..decorators._numpy_fn import numpy_fn
10
- from ..decorators._wrap import wrap
9
+ from scitex.decorators._numpy_fn import numpy_fn
10
+ from scitex.decorators._wrap import wrap
11
11
 
12
12
 
13
13
  @numpy_fn
@@ -10,7 +10,7 @@ This script does XYZ.
10
10
 
11
11
  import torch
12
12
  from geom_median.torch import compute_geometric_median
13
- from ..decorators import torch_fn
13
+ from scitex.decorators import torch_fn
14
14
 
15
15
  # @torch_fn
16
16
  # def geometric_median(xx, dim=-1):
scitex/logging/README.md CHANGED
@@ -231,7 +231,7 @@ logger.success("Extra emphasis", c="light_green") # Light green
231
231
 
232
232
  **Available Colors**:
233
233
  - Basic: `black`, `red`, `green`, `yellow`, `blue`, `magenta`, `cyan`, `white`, `grey`
234
- - Light variants: `light_red`, `light_green`, `light_yellow`, `light_blue`, `light_magenta`, `light_cyan`
234
+ - Light variants: `light_red`, `light_green`, `light_yellow`, `lightblue`, `light_magenta`, `light_cyan`
235
235
 
236
236
  **Use Cases**:
237
237
  - Highlight critical information in INFO logs: `logger.info("msg", c="red")`
scitex/logging/_Tee.py CHANGED
@@ -35,8 +35,8 @@ import re
35
35
  import sys
36
36
  from typing import Any, TextIO
37
37
 
38
- from ..str._clean_path import clean_path
39
- from ..str._printc import printc
38
+ from scitex.str._clean_path import clean_path
39
+ from scitex.str._printc import printc
40
40
 
41
41
  """Functions & Classes"""
42
42
  def _get_logger():
File without changes
@@ -60,7 +60,7 @@ class SciTeXConsoleFormatter(logging.Formatter):
60
60
  "light_red": "\033[91m",
61
61
  "light_green": "\033[92m",
62
62
  "light_yellow": "\033[93m",
63
- "light_blue": "\033[94m",
63
+ "lightblue": "\033[94m",
64
64
  "light_magenta": "\033[95m",
65
65
  "light_cyan": "\033[96m",
66
66
  }
@@ -90,7 +90,14 @@ class SciTeXConsoleFormatter(logging.Formatter):
90
90
  # Use parent formatter to apply template
91
91
  formatted = super().format(record)
92
92
 
93
- if hasattr(sys.stdout, "isatty") and sys.stdout.isatty():
93
+ # Check if we can use colors (stdout is a tty and not closed)
94
+ try:
95
+ use_colors = hasattr(sys.stdout, "isatty") and sys.stdout.isatty()
96
+ except ValueError:
97
+ # stdout/stderr is closed
98
+ use_colors = False
99
+
100
+ if use_colors:
94
101
  # Check for custom color override
95
102
  custom_color = getattr(record, "color", None)
96
103
 
File without changes
scitex/logging/_levels.py CHANGED
File without changes
scitex/logging/_logger.py CHANGED
@@ -16,6 +16,7 @@ __FILE__ = __file__
16
16
  """Enhanced logger class for SciTeX."""
17
17
 
18
18
  import logging
19
+ import pprint as _pprint
19
20
 
20
21
  from ._levels import FAIL, SUCCESS
21
22
 
@@ -31,10 +32,46 @@ class SciTeXLogger(logging.Logger):
31
32
  sep=None,
32
33
  n_sep=40,
33
34
  c=None,
35
+ pprint=False,
34
36
  *args,
35
37
  **kwargs,
36
38
  ):
37
- """Internal method to log with indent, separator, and color support."""
39
+ """Internal method to log with indent, separator, color, and pprint support.
40
+
41
+ Args:
42
+ level: Logging level
43
+ message: Message to log
44
+ indent: Number of spaces to indent
45
+ sep: Separator character (e.g., '=', '-')
46
+ n_sep: Number of separator characters
47
+ c: Color code
48
+ pprint: If True, format message using pprint for better readability
49
+ *args: Additional arguments
50
+ **kwargs: Additional keyword arguments
51
+ """
52
+ # Apply pprint formatting if requested
53
+ if pprint:
54
+ # If message is a string, keep it as is
55
+ # Otherwise, format it with pprint
56
+ if not isinstance(message, str):
57
+ # Convert DotDict to regular dict for better pprint support
58
+ # Exclude private keys (starting with _) by default
59
+ if hasattr(message, 'to_dict'):
60
+ message = message.to_dict(include_private=False)
61
+ message = _pprint.pformat(message, indent=2, width=80, compact=False)
62
+
63
+ # For multi-line messages, indent all lines after the first
64
+ # to align with the log level prefix (e.g., "INFO: ") plus any indent
65
+ if '\n' in message:
66
+ lines = message.split('\n')
67
+ # Calculate the indent needed:
68
+ # - 6 chars for "INFO: " or "ERRO: " prefix
69
+ # - Plus the indent parameter for additional spacing
70
+ total_indent = 6 + indent
71
+ prefix_indent = ' ' * total_indent
72
+ # Join lines with proper indentation
73
+ message = lines[0] + '\n' + '\n'.join(prefix_indent + line for line in lines[1:])
74
+
38
75
  # Add separator lines if requested
39
76
  if sep is not None:
40
77
  separator = sep * n_sep
@@ -51,27 +88,27 @@ class SciTeXLogger(logging.Logger):
51
88
  self._log(level, message, args, **kwargs)
52
89
 
53
90
  def debug(
54
- self, message, *args, indent=0, sep=None, n_sep=40, c=None, **kwargs
91
+ self, message, *args, indent=0, sep=None, n_sep=40, c=None, pprint=False, **kwargs
55
92
  ):
56
- """Log a debug message with optional indent, separator, and color."""
93
+ """Log a debug message with optional indent, separator, color, and pprint."""
57
94
  if self.isEnabledFor(logging.DEBUG):
58
95
  self._log_with_indent(
59
- logging.DEBUG, message, indent, sep, n_sep, c, *args, **kwargs
96
+ logging.DEBUG, message, indent, sep, n_sep, c, pprint, *args, **kwargs
60
97
  )
61
98
 
62
99
  def info(
63
- self, message, *args, indent=0, sep=None, n_sep=40, c=None, **kwargs
100
+ self, message, *args, indent=0, sep=None, n_sep=40, c=None, pprint=False, **kwargs
64
101
  ):
65
- """Log an info message with optional indent, separator, and color."""
102
+ """Log an info message with optional indent, separator, color, and pprint."""
66
103
  if self.isEnabledFor(logging.INFO):
67
104
  self._log_with_indent(
68
- logging.INFO, message, indent, sep, n_sep, c, *args, **kwargs
105
+ logging.INFO, message, indent, sep, n_sep, c, pprint, *args, **kwargs
69
106
  )
70
107
 
71
108
  def warning(
72
- self, message, *args, indent=0, sep=None, n_sep=40, c=None, **kwargs
109
+ self, message, *args, indent=0, sep=None, n_sep=40, c=None, pprint=False, **kwargs
73
110
  ):
74
- """Log a warning message with optional indent, separator, and color."""
111
+ """Log a warning message with optional indent, separator, color, and pprint."""
75
112
  if self.isEnabledFor(logging.WARNING):
76
113
  self._log_with_indent(
77
114
  logging.WARNING,
@@ -80,23 +117,24 @@ class SciTeXLogger(logging.Logger):
80
117
  sep,
81
118
  n_sep,
82
119
  c,
120
+ pprint,
83
121
  *args,
84
122
  **kwargs,
85
123
  )
86
124
 
87
125
  def error(
88
- self, message, *args, indent=0, sep=None, n_sep=40, c=None, **kwargs
126
+ self, message, *args, indent=0, sep=None, n_sep=40, c=None, pprint=False, **kwargs
89
127
  ):
90
- """Log an error message with optional indent, separator, and color."""
128
+ """Log an error message with optional indent, separator, color, and pprint."""
91
129
  if self.isEnabledFor(logging.ERROR):
92
130
  self._log_with_indent(
93
- logging.ERROR, message, indent, sep, n_sep, c, *args, **kwargs
131
+ logging.ERROR, message, indent, sep, n_sep, c, pprint, *args, **kwargs
94
132
  )
95
133
 
96
134
  def critical(
97
- self, message, *args, indent=0, sep=None, n_sep=40, c=None, **kwargs
135
+ self, message, *args, indent=0, sep=None, n_sep=40, c=None, pprint=False, **kwargs
98
136
  ):
99
- """Log a critical message with optional indent, separator, and color."""
137
+ """Log a critical message with optional indent, separator, color, and pprint."""
100
138
  if self.isEnabledFor(logging.CRITICAL):
101
139
  self._log_with_indent(
102
140
  logging.CRITICAL,
@@ -105,26 +143,27 @@ class SciTeXLogger(logging.Logger):
105
143
  sep,
106
144
  n_sep,
107
145
  c,
146
+ pprint,
108
147
  *args,
109
148
  **kwargs,
110
149
  )
111
150
 
112
151
  def success(
113
- self, message, *args, indent=0, sep=None, n_sep=40, c=None, **kwargs
152
+ self, message, *args, indent=0, sep=None, n_sep=40, c=None, pprint=False, **kwargs
114
153
  ):
115
- """Log a success message with optional indent, separator, and color."""
154
+ """Log a success message with optional indent, separator, color, and pprint."""
116
155
  if self.isEnabledFor(SUCCESS):
117
156
  self._log_with_indent(
118
- SUCCESS, message, indent, sep, n_sep, c, *args, **kwargs
157
+ SUCCESS, message, indent, sep, n_sep, c, pprint, *args, **kwargs
119
158
  )
120
159
 
121
160
  def fail(
122
- self, message, *args, indent=0, sep=None, n_sep=40, c=None, **kwargs
161
+ self, message, *args, indent=0, sep=None, n_sep=40, c=None, pprint=False, **kwargs
123
162
  ):
124
- """Log a failure message with optional indent, separator, and color."""
163
+ """Log a failure message with optional indent, separator, color, and pprint."""
125
164
  if self.isEnabledFor(FAIL):
126
165
  self._log_with_indent(
127
- FAIL, message, indent, sep, n_sep, c, *args, **kwargs
166
+ FAIL, message, indent, sep, n_sep, c, pprint, *args, **kwargs
128
167
  )
129
168
 
130
169
  def to(self, file_path, level=None, mode="w"):
File without changes
scitex/ml/__init__.py CHANGED
@@ -11,7 +11,7 @@ Usage:
11
11
  """
12
12
 
13
13
  # Re-export everything from ai module
14
- from ..ai import * # noqa: F403,F401
14
+ from scitex.ai import * # noqa: F403,F401
15
15
 
16
16
  __all__ = [
17
17
  "classification",
scitex/nn/_Filters.py CHANGED
@@ -36,12 +36,12 @@ import torch
36
36
  import torch.nn as nn
37
37
  import torch.nn.functional as F
38
38
 
39
- from ..dsp.utils import build_bandpass_filters, init_bandpass_filters
40
- from ..dsp.utils._ensure_3d import ensure_3d
41
- from ..dsp.utils._ensure_even_len import ensure_even_len
42
- from ..dsp.utils._zero_pad import zero_pad
43
- from ..dsp.utils.filter import design_filter
44
- from ..gen._to_even import to_even
39
+ from scitex.dsp.utils import build_bandpass_filters, init_bandpass_filters
40
+ from scitex.dsp.utils._ensure_3d import ensure_3d
41
+ from scitex.dsp.utils._ensure_even_len import ensure_even_len
42
+ from scitex.dsp.utils._zero_pad import zero_pad
43
+ from scitex.dsp.utils.filter import design_filter
44
+ from scitex.gen._to_even import to_even
45
45
 
46
46
 
47
47
  class BaseFilter1D(nn.Module):
scitex/nn/_Spectrogram.py CHANGED
@@ -8,7 +8,7 @@ import torch.nn.functional as F
8
8
  import numpy as np
9
9
  import matplotlib.pyplot as plt
10
10
  import scitex
11
- from ..decorators import numpy_fn, torch_fn
11
+ from scitex.decorators import numpy_fn, torch_fn
12
12
 
13
13
 
14
14
  class Spectrogram(nn.Module):
scitex/nn/_Wavelet.py CHANGED
@@ -13,8 +13,8 @@ import numpy as np
13
13
  import torch
14
14
  import torch.nn as nn
15
15
  import torch.nn.functional as F
16
- from ..gen._to_even import to_even
17
- from ..gen._to_odd import to_odd
16
+ from scitex.gen._to_even import to_even
17
+ from scitex.gen._to_odd import to_odd
18
18
 
19
19
 
20
20
  class Wavelet(nn.Module):
scitex/pd/_force_df.py CHANGED
@@ -12,7 +12,7 @@ __DIR__ = os.path.dirname(__FILE__)
12
12
  import numpy as np
13
13
  import pandas as pd
14
14
 
15
- from ..types import is_listed_X
15
+ from scitex.types import is_listed_X
16
16
 
17
17
 
18
18
  def force_df(data, filler=np.nan):
scitex/plt/README.md CHANGED
@@ -1580,7 +1580,7 @@ manuscript.generate_submission_package() # Journal-ready submission
1580
1580
  ## Best Practices
1581
1581
 
1582
1582
  1. **Always use tracking** - It's enabled by default, don't disable it
1583
- 2. **Assign unique IDs** - Use the `id` parameter for easy data identification
1583
+ 2. **Assign unique IDs** - Use the `id` parameter for easy data identification
1584
1584
  3. **Separate styling from metadata** - Use `set_xyt()` for labels, `set_meta()` for scientific metadata
1585
1585
  4. **Structure experimental details** - Use dictionaries for machine-readable experimental parameters
1586
1586
  5. **Include comprehensive keywords** - Enable AI agents to categorize and process figures automatically
@@ -1590,6 +1590,31 @@ manuscript.generate_submission_package() # Journal-ready submission
1590
1590
  9. **Use figure-level metadata** - Apply `set_figure_meta()` for multi-panel comprehensive descriptions
1591
1591
  10. **Export YAML for reproducibility** - All metadata automatically preserved for AI agent processing
1592
1592
 
1593
+ ### ⚠️ File Format Best Practices
1594
+
1595
+ **NEVER use JPEG for scientific figures!**
1596
+
1597
+ JPEG uses lossy compression that creates visible artifacts around text, lines, and sharp edges.
1598
+
1599
+ **Use these formats:**
1600
+ - **PNG** ✅ Lossless raster (perfect for figures with text/lines)
1601
+ - **PDF** ✅ Vector format (infinite zoom, required by journals)
1602
+ - **JPEG** ❌ NEVER for scientific plots (only for photographs)
1603
+
1604
+ ```python
1605
+ # Correct - Publication-ready formats
1606
+ scitex.io.save(fig, 'figure.png', dpi=300, auto_crop=True) # Lossless
1607
+ scitex.io.save(fig, 'figure.pdf') # Vector
1608
+
1609
+ # Wrong - Creates artifacts around text and lines
1610
+ # scitex.io.save(fig, 'figure.jpg') # ❌ NEVER do this!
1611
+ ```
1612
+
1613
+ **Auto-cropping** is enabled by default and preserves:
1614
+ - Image quality (PNG: lossless, PDF: vector)
1615
+ - DPI metadata (300 DPI for publication)
1616
+ - Scitex metadata (version, style, dimensions, padding, etc.)
1617
+
1593
1618
  ### SciTeX Ecosystem Workflow
1594
1619
  ```python
1595
1620
  # Optimal workflow for AI-powered scientific automation
scitex/plt/__init__.py CHANGED
@@ -9,14 +9,61 @@ __DIR__ = os.path.dirname(__FILE__)
9
9
  # ----------------------------------------
10
10
  """Scitex plt module."""
11
11
 
12
+ # Register Arial fonts eagerly (before lazy imports)
13
+ import matplotlib.font_manager as fm
14
+ import matplotlib as mpl
15
+
16
+ _arial_enabled = False
17
+ try:
18
+ fm.findfont("Arial", fallback_to_default=False)
19
+ _arial_enabled = True
20
+ except Exception:
21
+ # Search for Arial font files and register them
22
+ arial_paths = [
23
+ f for f in fm.findSystemFonts()
24
+ if os.path.basename(f).lower().startswith("arial")
25
+ ]
26
+
27
+ if arial_paths:
28
+ for path in arial_paths:
29
+ try:
30
+ fm.fontManager.addfont(path)
31
+ except Exception:
32
+ pass
33
+
34
+ # Verify Arial is now available
35
+ try:
36
+ fm.findfont("Arial", fallback_to_default=False)
37
+ _arial_enabled = True
38
+ except Exception:
39
+ pass
40
+
41
+ # Configure matplotlib to use Arial if available
42
+ if _arial_enabled:
43
+ mpl.rcParams["font.family"] = "Arial"
44
+ mpl.rcParams["font.sans-serif"] = ["Arial", "Helvetica", "DejaVu Sans", "Liberation Sans"]
45
+ else:
46
+ # Warn about missing Arial
47
+ try:
48
+ from scitex.logging import getLogger
49
+ _logger = getLogger(__name__)
50
+ _logger.warning(
51
+ "Arial font not found. Using fallback fonts (Helvetica/DejaVu Sans). "
52
+ "For publication figures with Arial: sudo apt-get install ttf-mscorefonts-installer && fc-cache -fv"
53
+ )
54
+ except:
55
+ pass # Skip warning if logging not available
56
+
12
57
  from ._tpl import termplot
13
58
  from . import color
14
59
  from . import utils
15
60
  from . import ax
61
+ from . import presets
16
62
 
17
63
  # Lazy import for subplots to avoid circular dependencies
18
64
  _subplots = None
19
65
  _figure = None
66
+ _crop = None
20
67
 
21
68
  def subplots(*args, **kwargs):
22
69
  """Lazy-loaded subplots function."""
@@ -38,13 +85,56 @@ def figure(*args, **kwargs):
38
85
  _figure = _figure_func
39
86
  return _figure(*args, **kwargs)
40
87
 
88
+ def crop(input_path, output_path=None, margin=12, overwrite=False, verbose=False):
89
+ """
90
+ Auto-crop a figure to its content area.
91
+
92
+ This function automatically detects the content area of a saved figure
93
+ and crops it, removing excess whitespace. Designed for publication figures
94
+ created with large margins.
95
+
96
+ Parameters
97
+ ----------
98
+ input_path : str
99
+ Path to the input image
100
+ output_path : str, optional
101
+ Path to save cropped image. If None and overwrite=True, overwrites input.
102
+ If None and overwrite=False, adds '_cropped' suffix.
103
+ margin : int, optional
104
+ Margin in pixels around content (default: 12, ~1mm at 300 DPI)
105
+ overwrite : bool, optional
106
+ Overwrite input file (default: False)
107
+ verbose : bool, optional
108
+ Print detailed information (default: False)
109
+
110
+ Returns
111
+ -------
112
+ str
113
+ Path to the saved cropped image
114
+
115
+ Examples
116
+ --------
117
+ >>> fig, ax = stx.plt.subplots(**stx.plt.presets.SCITEX_STYLE)
118
+ >>> ax.plot([1, 2, 3], [1, 2, 3])
119
+ >>> stx.io.save(fig, "figure.png")
120
+ >>> stx.plt.crop("figure.png", "figure_cropped.png") # 1mm margin
121
+ """
122
+ global _crop
123
+ if _crop is None:
124
+ from .utils._crop import crop as _crop_func
125
+ _crop = _crop_func
126
+ return _crop(input_path, output_path, margin, overwrite, verbose)
127
+
41
128
  def tight_layout(**kwargs):
42
129
  """
43
- Wrapper for matplotlib.pyplot.tight_layout that suppresses the layout change warning.
130
+ Wrapper for matplotlib.pyplot.tight_layout that handles colorbar layout compatibility.
131
+
132
+ This function calls tight_layout on the current figure and gracefully handles:
133
+ 1. UserWarning: "The figure layout has changed to tight" - informational only
134
+ 2. RuntimeError: Colorbar layout incompatibility - occurs when colorbars exist with old engine
44
135
 
45
- This function calls tight_layout on the current figure and suppresses the common
46
- UserWarning: "The figure layout has changed to tight" which is informational
47
- and typically not actionable.
136
+ When a colorbar layout error occurs, the function silently continues as the layout
137
+ is still functional even if the engine cannot be changed.
48
138
 
49
139
  Parameters
50
140
  ----------
@@ -56,7 +146,14 @@ def tight_layout(**kwargs):
56
146
 
57
147
  with warnings.catch_warnings():
58
148
  warnings.filterwarnings("ignore", message="The figure layout has changed to tight")
59
- plt.tight_layout(**kwargs)
149
+ try:
150
+ plt.tight_layout(**kwargs)
151
+ except RuntimeError as e:
152
+ # Silently handle colorbar layout engine incompatibility
153
+ # This occurs when colorbars were created before tight_layout is called
154
+ # The layout is still usable, so we can safely ignore this error
155
+ if "Colorbar layout" not in str(e):
156
+ raise
60
157
 
61
158
 
62
159
  def colorbar(mappable=None, cax=None, ax=None, **kwargs):
@@ -109,6 +206,7 @@ __all__ = [
109
206
  "tight_layout",
110
207
  "utils",
111
208
  "color",
209
+ "presets",
112
210
  ]
113
211
 
114
212
  def __getattr__(name):
@@ -127,7 +127,8 @@ class AxesWrapper:
127
127
  array_compatible[idx] = ax
128
128
  return array_compatible.reshape(self._axes_scitex.shape)
129
129
 
130
- def legend(self, loc="upper left"):
130
+ def legend(self, loc="best"):
131
+ """Add legend to all axes with 'best' automatic placement by default."""
131
132
  return [ax.legend(loc=loc) for ax in self._axes_scitex.flat]
132
133
 
133
134
  @property
@@ -60,7 +60,7 @@ class AdjustmentMixin:
60
60
  tight_layout=tight_layout
61
61
  )
62
62
 
63
- def legend(self, *args, loc: str = "upper left", **kwargs) -> None:
63
+ def legend(self, *args, loc: str = "best", check_overlap: bool = False, **kwargs) -> None:
64
64
  """Places legend at specified location, with support for outside positions.
65
65
 
66
66
  Parameters
@@ -68,13 +68,18 @@ class AdjustmentMixin:
68
68
  *args : tuple
69
69
  Positional arguments (handles, labels) as in matplotlib
70
70
  loc : str
71
- Legend position. Standard matplotlib positions plus:
71
+ Legend position. Default is "best" (matplotlib auto-placement).
72
+ Standard matplotlib positions plus:
73
+ - "best": Matplotlib automatic placement (default)
72
74
  - "outer": Automatically place legend outside plot area (right side)
73
75
  - "separate": Save legend as a separate figure file
74
76
  - upper/lower/center variants: e.g. "upper right out", "lower left out"
75
77
  - directional shortcuts: "right", "left", "upper", "lower"
76
78
  - center variants: "center right out", "center left out"
77
79
  - alternative formats: "right upper out", "left lower out" etc.
80
+ check_overlap : bool
81
+ If True, checks for overlap between legend and data after placement.
82
+ Issues warning with suggestion if significant overlap detected.
78
83
  **kwargs : dict
79
84
  Additional keyword arguments passed to legend()
80
85
  For "separate": can include 'filename' (default: 'legend.png')
@@ -202,10 +207,94 @@ class AdjustmentMixin:
202
207
  "lower out": ("upper center", (0.5, -0.25)),
203
208
  }
204
209
 
210
+ # Place the legend
205
211
  if loc in outside_positions:
206
212
  location, bbox = outside_positions[loc]
207
- return self._axis_mpl.legend(*args, loc=location, bbox_to_anchor=bbox, **kwargs)
208
- return self._axis_mpl.legend(*args, loc=loc, **kwargs)
213
+ legend_obj = self._axis_mpl.legend(*args, loc=location, bbox_to_anchor=bbox, **kwargs)
214
+ else:
215
+ legend_obj = self._axis_mpl.legend(*args, loc=loc, **kwargs)
216
+
217
+ # Check for overlap if requested
218
+ if check_overlap and legend_obj is not None:
219
+ self._check_legend_overlap(legend_obj)
220
+
221
+ return legend_obj
222
+
223
+ def _check_legend_overlap(self, legend_obj):
224
+ """Check if legend overlaps with plotted data and issue warning if needed.
225
+
226
+ Parameters
227
+ ----------
228
+ legend_obj : matplotlib.legend.Legend
229
+ The legend object to check for overlap
230
+ """
231
+ import warnings
232
+ import matplotlib.transforms as transforms
233
+
234
+ try:
235
+ # Get the legend's bounding box in display coordinates
236
+ fig = self._axis_mpl.get_figure()
237
+ fig.canvas.draw() # Force draw to get accurate bounding boxes
238
+
239
+ legend_bbox = legend_obj.get_window_extent(fig.canvas.get_renderer())
240
+
241
+ # Convert to axis coordinates for easier comparison
242
+ inv_transform = self._axis_mpl.transData.inverted()
243
+ legend_bbox_data = legend_bbox.transformed(inv_transform)
244
+
245
+ # Get data bounding boxes for all artists (lines, scatter, etc.)
246
+ data_bboxes = []
247
+
248
+ for line in self._axis_mpl.get_lines():
249
+ if line.get_visible():
250
+ try:
251
+ data = line.get_xydata()
252
+ if len(data) > 0:
253
+ data_bboxes.append(data)
254
+ except:
255
+ pass
256
+
257
+ for collection in self._axis_mpl.collections:
258
+ if collection.get_visible():
259
+ try:
260
+ offsets = collection.get_offsets()
261
+ if len(offsets) > 0:
262
+ data_bboxes.append(offsets)
263
+ except:
264
+ pass
265
+
266
+ # Check for overlap
267
+ if data_bboxes:
268
+ import numpy as np
269
+ all_data = np.vstack(data_bboxes)
270
+
271
+ # Count how many data points fall within legend bbox
272
+ x_overlap = (all_data[:, 0] >= legend_bbox_data.x0) & (all_data[:, 0] <= legend_bbox_data.x1)
273
+ y_overlap = (all_data[:, 1] >= legend_bbox_data.y0) & (all_data[:, 1] <= legend_bbox_data.y1)
274
+ overlap_points = np.sum(x_overlap & y_overlap)
275
+
276
+ # Calculate overlap percentage
277
+ overlap_pct = (overlap_points / len(all_data)) * 100
278
+
279
+ # Warn if significant overlap (>5% of data points)
280
+ if overlap_pct > 5:
281
+ warnings.warn(
282
+ f"Legend overlaps with {overlap_pct:.1f}% of data points. "
283
+ f"Consider using:\n"
284
+ f" - ax.legend(loc='outer') # Place outside plot area\n"
285
+ f" - ax.legend(loc='separate') # Save as separate file\n"
286
+ f" - Manually adjust with loc='upper left', 'lower right', etc.",
287
+ UserWarning,
288
+ stacklevel=3
289
+ )
290
+ return True # Overlap detected
291
+
292
+ except Exception as e:
293
+ # Silently fail if overlap detection doesn't work
294
+ # (Some plot types may not support this)
295
+ pass
296
+
297
+ return False # No significant overlap
209
298
 
210
299
  def set_xyt(
211
300
  self,
@@ -17,8 +17,8 @@ import numpy as np
17
17
  import pandas as pd
18
18
  from scipy.stats import gaussian_kde
19
19
 
20
- from ....pd import to_xyz
21
- from ....types import ArrayLike
20
+ from scitex.pd import to_xyz
21
+ from scitex.types import ArrayLike
22
22
 
23
23
 
24
24
  class MatplotlibPlotMixin:
@@ -92,15 +92,25 @@ class MatplotlibPlotMixin:
92
92
 
93
93
  # Plotting with pure matplotlib methods under non-tracking context
94
94
  with self._no_tracking():
95
+ # Get line width from kwargs or use default (0.2mm for KDE)
96
+ from scitex.plt.utils import mm_to_pt
97
+ if 'linewidth' not in kwargs and 'lw' not in kwargs:
98
+ kwargs['linewidth'] = mm_to_pt(0.2) # Default 0.2mm for KDE
99
+
100
+ # Set default color to black (customizable via color kwarg)
101
+ if 'color' not in kwargs and 'c' not in kwargs:
102
+ kwargs['color'] = 'black'
103
+
95
104
  # Filled Line
96
105
  if fill:
97
106
  self._axis_mpl.fill_between(
98
107
  xx,
99
108
  density,
109
+ **kwargs,
100
110
  )
101
111
  # Simple Line
102
112
  else:
103
- self._axis_mpl.plot(xx, density)
113
+ self._axis_mpl.plot(xx, density, **kwargs)
104
114
 
105
115
  # Tracking
106
116
  tracked_dict = {