scitex 2.0.0__py2.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 (572) hide show
  1. scitex/__init__.py +73 -0
  2. scitex/__main__.py +89 -0
  3. scitex/__version__.py +14 -0
  4. scitex/_sh.py +59 -0
  5. scitex/ai/_LearningCurveLogger.py +583 -0
  6. scitex/ai/__Classifiers.py +101 -0
  7. scitex/ai/__init__.py +55 -0
  8. scitex/ai/_gen_ai/_Anthropic.py +173 -0
  9. scitex/ai/_gen_ai/_BaseGenAI.py +336 -0
  10. scitex/ai/_gen_ai/_DeepSeek.py +175 -0
  11. scitex/ai/_gen_ai/_Google.py +161 -0
  12. scitex/ai/_gen_ai/_Groq.py +97 -0
  13. scitex/ai/_gen_ai/_Llama.py +142 -0
  14. scitex/ai/_gen_ai/_OpenAI.py +230 -0
  15. scitex/ai/_gen_ai/_PARAMS.py +565 -0
  16. scitex/ai/_gen_ai/_Perplexity.py +191 -0
  17. scitex/ai/_gen_ai/__init__.py +32 -0
  18. scitex/ai/_gen_ai/_calc_cost.py +78 -0
  19. scitex/ai/_gen_ai/_format_output_func.py +183 -0
  20. scitex/ai/_gen_ai/_genai_factory.py +71 -0
  21. scitex/ai/act/__init__.py +8 -0
  22. scitex/ai/act/_define.py +11 -0
  23. scitex/ai/classification/__init__.py +7 -0
  24. scitex/ai/classification/classification_reporter.py +1137 -0
  25. scitex/ai/classification/classifier_server.py +131 -0
  26. scitex/ai/classification/classifiers.py +101 -0
  27. scitex/ai/classification_reporter.py +1161 -0
  28. scitex/ai/classifier_server.py +131 -0
  29. scitex/ai/clustering/__init__.py +11 -0
  30. scitex/ai/clustering/_pca.py +115 -0
  31. scitex/ai/clustering/_umap.py +376 -0
  32. scitex/ai/early_stopping.py +149 -0
  33. scitex/ai/feature_extraction/__init__.py +56 -0
  34. scitex/ai/feature_extraction/vit.py +148 -0
  35. scitex/ai/genai/__init__.py +277 -0
  36. scitex/ai/genai/anthropic.py +177 -0
  37. scitex/ai/genai/anthropic_provider.py +320 -0
  38. scitex/ai/genai/anthropic_refactored.py +109 -0
  39. scitex/ai/genai/auth_manager.py +200 -0
  40. scitex/ai/genai/base_genai.py +336 -0
  41. scitex/ai/genai/base_provider.py +291 -0
  42. scitex/ai/genai/calc_cost.py +78 -0
  43. scitex/ai/genai/chat_history.py +307 -0
  44. scitex/ai/genai/cost_tracker.py +276 -0
  45. scitex/ai/genai/deepseek.py +188 -0
  46. scitex/ai/genai/deepseek_provider.py +251 -0
  47. scitex/ai/genai/format_output_func.py +183 -0
  48. scitex/ai/genai/genai_factory.py +71 -0
  49. scitex/ai/genai/google.py +169 -0
  50. scitex/ai/genai/google_provider.py +228 -0
  51. scitex/ai/genai/groq.py +104 -0
  52. scitex/ai/genai/groq_provider.py +248 -0
  53. scitex/ai/genai/image_processor.py +250 -0
  54. scitex/ai/genai/llama.py +155 -0
  55. scitex/ai/genai/llama_provider.py +214 -0
  56. scitex/ai/genai/mock_provider.py +127 -0
  57. scitex/ai/genai/model_registry.py +304 -0
  58. scitex/ai/genai/openai.py +230 -0
  59. scitex/ai/genai/openai_provider.py +293 -0
  60. scitex/ai/genai/params.py +565 -0
  61. scitex/ai/genai/perplexity.py +202 -0
  62. scitex/ai/genai/perplexity_provider.py +205 -0
  63. scitex/ai/genai/provider_base.py +302 -0
  64. scitex/ai/genai/provider_factory.py +370 -0
  65. scitex/ai/genai/response_handler.py +235 -0
  66. scitex/ai/layer/_Pass.py +21 -0
  67. scitex/ai/layer/__init__.py +10 -0
  68. scitex/ai/layer/_switch.py +8 -0
  69. scitex/ai/loss/_L1L2Losses.py +34 -0
  70. scitex/ai/loss/__init__.py +12 -0
  71. scitex/ai/loss/multi_task_loss.py +47 -0
  72. scitex/ai/metrics/__init__.py +9 -0
  73. scitex/ai/metrics/_bACC.py +51 -0
  74. scitex/ai/metrics/silhoute_score_block.py +496 -0
  75. scitex/ai/optim/Ranger_Deep_Learning_Optimizer/__init__.py +0 -0
  76. scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/__init__.py +3 -0
  77. scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/ranger.py +207 -0
  78. scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/ranger2020.py +238 -0
  79. scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/ranger913A.py +215 -0
  80. scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/rangerqh.py +184 -0
  81. scitex/ai/optim/Ranger_Deep_Learning_Optimizer/setup.py +24 -0
  82. scitex/ai/optim/__init__.py +13 -0
  83. scitex/ai/optim/_get_set.py +31 -0
  84. scitex/ai/optim/_optimizers.py +71 -0
  85. scitex/ai/plt/__init__.py +21 -0
  86. scitex/ai/plt/_conf_mat.py +592 -0
  87. scitex/ai/plt/_learning_curve.py +194 -0
  88. scitex/ai/plt/_optuna_study.py +111 -0
  89. scitex/ai/plt/aucs/__init__.py +2 -0
  90. scitex/ai/plt/aucs/example.py +60 -0
  91. scitex/ai/plt/aucs/pre_rec_auc.py +223 -0
  92. scitex/ai/plt/aucs/roc_auc.py +246 -0
  93. scitex/ai/sampling/undersample.py +29 -0
  94. scitex/ai/sk/__init__.py +11 -0
  95. scitex/ai/sk/_clf.py +58 -0
  96. scitex/ai/sk/_to_sktime.py +100 -0
  97. scitex/ai/sklearn/__init__.py +26 -0
  98. scitex/ai/sklearn/clf.py +58 -0
  99. scitex/ai/sklearn/to_sktime.py +100 -0
  100. scitex/ai/training/__init__.py +7 -0
  101. scitex/ai/training/early_stopping.py +150 -0
  102. scitex/ai/training/learning_curve_logger.py +555 -0
  103. scitex/ai/utils/__init__.py +22 -0
  104. scitex/ai/utils/_check_params.py +50 -0
  105. scitex/ai/utils/_default_dataset.py +46 -0
  106. scitex/ai/utils/_format_samples_for_sktime.py +26 -0
  107. scitex/ai/utils/_label_encoder.py +134 -0
  108. scitex/ai/utils/_merge_labels.py +22 -0
  109. scitex/ai/utils/_sliding_window_data_augmentation.py +11 -0
  110. scitex/ai/utils/_under_sample.py +51 -0
  111. scitex/ai/utils/_verify_n_gpus.py +16 -0
  112. scitex/ai/utils/grid_search.py +148 -0
  113. scitex/context/__init__.py +9 -0
  114. scitex/context/_suppress_output.py +38 -0
  115. scitex/db/_BaseMixins/_BaseBackupMixin.py +30 -0
  116. scitex/db/_BaseMixins/_BaseBatchMixin.py +31 -0
  117. scitex/db/_BaseMixins/_BaseBlobMixin.py +81 -0
  118. scitex/db/_BaseMixins/_BaseConnectionMixin.py +43 -0
  119. scitex/db/_BaseMixins/_BaseImportExportMixin.py +39 -0
  120. scitex/db/_BaseMixins/_BaseIndexMixin.py +29 -0
  121. scitex/db/_BaseMixins/_BaseMaintenanceMixin.py +33 -0
  122. scitex/db/_BaseMixins/_BaseQueryMixin.py +52 -0
  123. scitex/db/_BaseMixins/_BaseRowMixin.py +32 -0
  124. scitex/db/_BaseMixins/_BaseSchemaMixin.py +44 -0
  125. scitex/db/_BaseMixins/_BaseTableMixin.py +66 -0
  126. scitex/db/_BaseMixins/_BaseTransactionMixin.py +52 -0
  127. scitex/db/_BaseMixins/__init__.py +30 -0
  128. scitex/db/_PostgreSQL.py +126 -0
  129. scitex/db/_PostgreSQLMixins/_BackupMixin.py +166 -0
  130. scitex/db/_PostgreSQLMixins/_BatchMixin.py +82 -0
  131. scitex/db/_PostgreSQLMixins/_BlobMixin.py +231 -0
  132. scitex/db/_PostgreSQLMixins/_ConnectionMixin.py +92 -0
  133. scitex/db/_PostgreSQLMixins/_ImportExportMixin.py +59 -0
  134. scitex/db/_PostgreSQLMixins/_IndexMixin.py +64 -0
  135. scitex/db/_PostgreSQLMixins/_MaintenanceMixin.py +175 -0
  136. scitex/db/_PostgreSQLMixins/_QueryMixin.py +108 -0
  137. scitex/db/_PostgreSQLMixins/_RowMixin.py +75 -0
  138. scitex/db/_PostgreSQLMixins/_SchemaMixin.py +126 -0
  139. scitex/db/_PostgreSQLMixins/_TableMixin.py +176 -0
  140. scitex/db/_PostgreSQLMixins/_TransactionMixin.py +57 -0
  141. scitex/db/_PostgreSQLMixins/__init__.py +34 -0
  142. scitex/db/_SQLite3.py +2136 -0
  143. scitex/db/_SQLite3Mixins/_BatchMixin.py +243 -0
  144. scitex/db/_SQLite3Mixins/_BlobMixin.py +229 -0
  145. scitex/db/_SQLite3Mixins/_ConnectionMixin.py +108 -0
  146. scitex/db/_SQLite3Mixins/_ImportExportMixin.py +80 -0
  147. scitex/db/_SQLite3Mixins/_IndexMixin.py +32 -0
  148. scitex/db/_SQLite3Mixins/_MaintenanceMixin.py +176 -0
  149. scitex/db/_SQLite3Mixins/_QueryMixin.py +83 -0
  150. scitex/db/_SQLite3Mixins/_RowMixin.py +75 -0
  151. scitex/db/_SQLite3Mixins/_TableMixin.py +183 -0
  152. scitex/db/_SQLite3Mixins/_TransactionMixin.py +71 -0
  153. scitex/db/_SQLite3Mixins/__init__.py +30 -0
  154. scitex/db/__init__.py +14 -0
  155. scitex/db/_delete_duplicates.py +397 -0
  156. scitex/db/_inspect.py +163 -0
  157. scitex/decorators/__init__.py +54 -0
  158. scitex/decorators/_auto_order.py +172 -0
  159. scitex/decorators/_batch_fn.py +127 -0
  160. scitex/decorators/_cache_disk.py +32 -0
  161. scitex/decorators/_cache_mem.py +12 -0
  162. scitex/decorators/_combined.py +98 -0
  163. scitex/decorators/_converters.py +282 -0
  164. scitex/decorators/_deprecated.py +26 -0
  165. scitex/decorators/_not_implemented.py +30 -0
  166. scitex/decorators/_numpy_fn.py +86 -0
  167. scitex/decorators/_pandas_fn.py +121 -0
  168. scitex/decorators/_preserve_doc.py +19 -0
  169. scitex/decorators/_signal_fn.py +95 -0
  170. scitex/decorators/_timeout.py +55 -0
  171. scitex/decorators/_torch_fn.py +136 -0
  172. scitex/decorators/_wrap.py +39 -0
  173. scitex/decorators/_xarray_fn.py +88 -0
  174. scitex/dev/__init__.py +15 -0
  175. scitex/dev/_analyze_code_flow.py +284 -0
  176. scitex/dev/_reload.py +59 -0
  177. scitex/dict/_DotDict.py +442 -0
  178. scitex/dict/__init__.py +18 -0
  179. scitex/dict/_listed_dict.py +42 -0
  180. scitex/dict/_pop_keys.py +36 -0
  181. scitex/dict/_replace.py +13 -0
  182. scitex/dict/_safe_merge.py +62 -0
  183. scitex/dict/_to_str.py +32 -0
  184. scitex/dsp/__init__.py +72 -0
  185. scitex/dsp/_crop.py +122 -0
  186. scitex/dsp/_demo_sig.py +331 -0
  187. scitex/dsp/_detect_ripples.py +212 -0
  188. scitex/dsp/_ensure_3d.py +18 -0
  189. scitex/dsp/_hilbert.py +78 -0
  190. scitex/dsp/_listen.py +702 -0
  191. scitex/dsp/_misc.py +30 -0
  192. scitex/dsp/_mne.py +32 -0
  193. scitex/dsp/_modulation_index.py +79 -0
  194. scitex/dsp/_pac.py +319 -0
  195. scitex/dsp/_psd.py +102 -0
  196. scitex/dsp/_resample.py +65 -0
  197. scitex/dsp/_time.py +36 -0
  198. scitex/dsp/_transform.py +68 -0
  199. scitex/dsp/_wavelet.py +212 -0
  200. scitex/dsp/add_noise.py +111 -0
  201. scitex/dsp/example.py +253 -0
  202. scitex/dsp/filt.py +155 -0
  203. scitex/dsp/norm.py +18 -0
  204. scitex/dsp/params.py +51 -0
  205. scitex/dsp/reference.py +43 -0
  206. scitex/dsp/template.py +25 -0
  207. scitex/dsp/utils/__init__.py +15 -0
  208. scitex/dsp/utils/_differential_bandpass_filters.py +120 -0
  209. scitex/dsp/utils/_ensure_3d.py +18 -0
  210. scitex/dsp/utils/_ensure_even_len.py +10 -0
  211. scitex/dsp/utils/_zero_pad.py +48 -0
  212. scitex/dsp/utils/filter.py +408 -0
  213. scitex/dsp/utils/pac.py +177 -0
  214. scitex/dt/__init__.py +8 -0
  215. scitex/dt/_linspace.py +130 -0
  216. scitex/etc/__init__.py +15 -0
  217. scitex/etc/wait_key.py +34 -0
  218. scitex/gen/_DimHandler.py +196 -0
  219. scitex/gen/_TimeStamper.py +244 -0
  220. scitex/gen/__init__.py +95 -0
  221. scitex/gen/_alternate_kwarg.py +13 -0
  222. scitex/gen/_cache.py +11 -0
  223. scitex/gen/_check_host.py +34 -0
  224. scitex/gen/_ci.py +12 -0
  225. scitex/gen/_close.py +222 -0
  226. scitex/gen/_embed.py +78 -0
  227. scitex/gen/_inspect_module.py +257 -0
  228. scitex/gen/_is_ipython.py +12 -0
  229. scitex/gen/_less.py +48 -0
  230. scitex/gen/_list_packages.py +139 -0
  231. scitex/gen/_mat2py.py +88 -0
  232. scitex/gen/_norm.py +170 -0
  233. scitex/gen/_paste.py +18 -0
  234. scitex/gen/_print_config.py +84 -0
  235. scitex/gen/_shell.py +48 -0
  236. scitex/gen/_src.py +111 -0
  237. scitex/gen/_start.py +451 -0
  238. scitex/gen/_symlink.py +55 -0
  239. scitex/gen/_symlog.py +27 -0
  240. scitex/gen/_tee.py +238 -0
  241. scitex/gen/_title2path.py +60 -0
  242. scitex/gen/_title_case.py +88 -0
  243. scitex/gen/_to_even.py +84 -0
  244. scitex/gen/_to_odd.py +34 -0
  245. scitex/gen/_to_rank.py +39 -0
  246. scitex/gen/_transpose.py +37 -0
  247. scitex/gen/_type.py +78 -0
  248. scitex/gen/_var_info.py +73 -0
  249. scitex/gen/_wrap.py +17 -0
  250. scitex/gen/_xml2dict.py +76 -0
  251. scitex/gen/misc.py +730 -0
  252. scitex/gen/path.py +0 -0
  253. scitex/general/__init__.py +5 -0
  254. scitex/gists/_SigMacro_processFigure_S.py +128 -0
  255. scitex/gists/_SigMacro_toBlue.py +172 -0
  256. scitex/gists/__init__.py +12 -0
  257. scitex/io/_H5Explorer.py +292 -0
  258. scitex/io/__init__.py +82 -0
  259. scitex/io/_cache.py +101 -0
  260. scitex/io/_flush.py +24 -0
  261. scitex/io/_glob.py +103 -0
  262. scitex/io/_json2md.py +113 -0
  263. scitex/io/_load.py +168 -0
  264. scitex/io/_load_configs.py +146 -0
  265. scitex/io/_load_modules/__init__.py +38 -0
  266. scitex/io/_load_modules/_catboost.py +66 -0
  267. scitex/io/_load_modules/_con.py +20 -0
  268. scitex/io/_load_modules/_db.py +24 -0
  269. scitex/io/_load_modules/_docx.py +42 -0
  270. scitex/io/_load_modules/_eeg.py +110 -0
  271. scitex/io/_load_modules/_hdf5.py +196 -0
  272. scitex/io/_load_modules/_image.py +19 -0
  273. scitex/io/_load_modules/_joblib.py +19 -0
  274. scitex/io/_load_modules/_json.py +18 -0
  275. scitex/io/_load_modules/_markdown.py +103 -0
  276. scitex/io/_load_modules/_matlab.py +37 -0
  277. scitex/io/_load_modules/_numpy.py +39 -0
  278. scitex/io/_load_modules/_optuna.py +155 -0
  279. scitex/io/_load_modules/_pandas.py +69 -0
  280. scitex/io/_load_modules/_pdf.py +31 -0
  281. scitex/io/_load_modules/_pickle.py +24 -0
  282. scitex/io/_load_modules/_torch.py +16 -0
  283. scitex/io/_load_modules/_txt.py +126 -0
  284. scitex/io/_load_modules/_xml.py +49 -0
  285. scitex/io/_load_modules/_yaml.py +23 -0
  286. scitex/io/_mv_to_tmp.py +19 -0
  287. scitex/io/_path.py +286 -0
  288. scitex/io/_reload.py +78 -0
  289. scitex/io/_save.py +539 -0
  290. scitex/io/_save_modules/__init__.py +66 -0
  291. scitex/io/_save_modules/_catboost.py +22 -0
  292. scitex/io/_save_modules/_csv.py +89 -0
  293. scitex/io/_save_modules/_excel.py +49 -0
  294. scitex/io/_save_modules/_hdf5.py +249 -0
  295. scitex/io/_save_modules/_html.py +48 -0
  296. scitex/io/_save_modules/_image.py +140 -0
  297. scitex/io/_save_modules/_joblib.py +25 -0
  298. scitex/io/_save_modules/_json.py +25 -0
  299. scitex/io/_save_modules/_listed_dfs_as_csv.py +57 -0
  300. scitex/io/_save_modules/_listed_scalars_as_csv.py +42 -0
  301. scitex/io/_save_modules/_matlab.py +24 -0
  302. scitex/io/_save_modules/_mp4.py +29 -0
  303. scitex/io/_save_modules/_numpy.py +57 -0
  304. scitex/io/_save_modules/_optuna_study_as_csv_and_pngs.py +38 -0
  305. scitex/io/_save_modules/_pickle.py +45 -0
  306. scitex/io/_save_modules/_plotly.py +27 -0
  307. scitex/io/_save_modules/_text.py +23 -0
  308. scitex/io/_save_modules/_torch.py +26 -0
  309. scitex/io/_save_modules/_yaml.py +29 -0
  310. scitex/life/__init__.py +10 -0
  311. scitex/life/_monitor_rain.py +49 -0
  312. scitex/linalg/__init__.py +17 -0
  313. scitex/linalg/_distance.py +63 -0
  314. scitex/linalg/_geometric_median.py +64 -0
  315. scitex/linalg/_misc.py +73 -0
  316. scitex/nn/_AxiswiseDropout.py +27 -0
  317. scitex/nn/_BNet.py +126 -0
  318. scitex/nn/_BNet_Res.py +164 -0
  319. scitex/nn/_ChannelGainChanger.py +44 -0
  320. scitex/nn/_DropoutChannels.py +50 -0
  321. scitex/nn/_Filters.py +489 -0
  322. scitex/nn/_FreqGainChanger.py +110 -0
  323. scitex/nn/_GaussianFilter.py +48 -0
  324. scitex/nn/_Hilbert.py +111 -0
  325. scitex/nn/_MNet_1000.py +157 -0
  326. scitex/nn/_ModulationIndex.py +221 -0
  327. scitex/nn/_PAC.py +414 -0
  328. scitex/nn/_PSD.py +40 -0
  329. scitex/nn/_ResNet1D.py +120 -0
  330. scitex/nn/_SpatialAttention.py +25 -0
  331. scitex/nn/_Spectrogram.py +161 -0
  332. scitex/nn/_SwapChannels.py +50 -0
  333. scitex/nn/_TransposeLayer.py +19 -0
  334. scitex/nn/_Wavelet.py +183 -0
  335. scitex/nn/__init__.py +63 -0
  336. scitex/os/__init__.py +8 -0
  337. scitex/os/_mv.py +50 -0
  338. scitex/parallel/__init__.py +8 -0
  339. scitex/parallel/_run.py +151 -0
  340. scitex/path/__init__.py +33 -0
  341. scitex/path/_clean.py +52 -0
  342. scitex/path/_find.py +108 -0
  343. scitex/path/_get_module_path.py +51 -0
  344. scitex/path/_get_spath.py +35 -0
  345. scitex/path/_getsize.py +18 -0
  346. scitex/path/_increment_version.py +87 -0
  347. scitex/path/_mk_spath.py +51 -0
  348. scitex/path/_path.py +19 -0
  349. scitex/path/_split.py +23 -0
  350. scitex/path/_this_path.py +19 -0
  351. scitex/path/_version.py +101 -0
  352. scitex/pd/__init__.py +41 -0
  353. scitex/pd/_find_indi.py +126 -0
  354. scitex/pd/_find_pval.py +113 -0
  355. scitex/pd/_force_df.py +154 -0
  356. scitex/pd/_from_xyz.py +71 -0
  357. scitex/pd/_ignore_SettingWithCopyWarning.py +34 -0
  358. scitex/pd/_melt_cols.py +81 -0
  359. scitex/pd/_merge_columns.py +221 -0
  360. scitex/pd/_mv.py +63 -0
  361. scitex/pd/_replace.py +62 -0
  362. scitex/pd/_round.py +93 -0
  363. scitex/pd/_slice.py +63 -0
  364. scitex/pd/_sort.py +91 -0
  365. scitex/pd/_to_numeric.py +53 -0
  366. scitex/pd/_to_xy.py +59 -0
  367. scitex/pd/_to_xyz.py +110 -0
  368. scitex/plt/__init__.py +36 -0
  369. scitex/plt/_subplots/_AxesWrapper.py +182 -0
  370. scitex/plt/_subplots/_AxisWrapper.py +249 -0
  371. scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin.py +414 -0
  372. scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin.py +896 -0
  373. scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin.py +368 -0
  374. scitex/plt/_subplots/_AxisWrapperMixins/_TrackingMixin.py +185 -0
  375. scitex/plt/_subplots/_AxisWrapperMixins/__init__.py +16 -0
  376. scitex/plt/_subplots/_FigWrapper.py +226 -0
  377. scitex/plt/_subplots/_SubplotsWrapper.py +171 -0
  378. scitex/plt/_subplots/__init__.py +111 -0
  379. scitex/plt/_subplots/_export_as_csv.py +232 -0
  380. scitex/plt/_subplots/_export_as_csv_formatters/__init__.py +61 -0
  381. scitex/plt/_subplots/_export_as_csv_formatters/_format_bar.py +90 -0
  382. scitex/plt/_subplots/_export_as_csv_formatters/_format_barh.py +49 -0
  383. scitex/plt/_subplots/_export_as_csv_formatters/_format_boxplot.py +46 -0
  384. scitex/plt/_subplots/_export_as_csv_formatters/_format_contour.py +39 -0
  385. scitex/plt/_subplots/_export_as_csv_formatters/_format_errorbar.py +125 -0
  386. scitex/plt/_subplots/_export_as_csv_formatters/_format_eventplot.py +72 -0
  387. scitex/plt/_subplots/_export_as_csv_formatters/_format_fill.py +34 -0
  388. scitex/plt/_subplots/_export_as_csv_formatters/_format_fill_between.py +36 -0
  389. scitex/plt/_subplots/_export_as_csv_formatters/_format_hist.py +79 -0
  390. scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow.py +59 -0
  391. scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow2d.py +32 -0
  392. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot.py +79 -0
  393. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_box.py +75 -0
  394. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_conf_mat.py +64 -0
  395. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_ecdf.py +44 -0
  396. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_fillv.py +70 -0
  397. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_heatmap.py +66 -0
  398. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_image.py +95 -0
  399. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_joyplot.py +67 -0
  400. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_kde.py +52 -0
  401. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_line.py +46 -0
  402. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_mean_ci.py +46 -0
  403. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_mean_std.py +46 -0
  404. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_median_iqr.py +46 -0
  405. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_raster.py +44 -0
  406. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_rectangle.py +103 -0
  407. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_scatter_hist.py +82 -0
  408. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_shaded_line.py +58 -0
  409. scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_violin.py +117 -0
  410. scitex/plt/_subplots/_export_as_csv_formatters/_format_scatter.py +30 -0
  411. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_barplot.py +51 -0
  412. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_boxplot.py +93 -0
  413. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_heatmap.py +94 -0
  414. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_histplot.py +92 -0
  415. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_jointplot.py +65 -0
  416. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_kdeplot.py +59 -0
  417. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_lineplot.py +58 -0
  418. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_pairplot.py +45 -0
  419. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_scatterplot.py +70 -0
  420. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_stripplot.py +75 -0
  421. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_swarmplot.py +75 -0
  422. scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_violinplot.py +155 -0
  423. scitex/plt/_subplots/_export_as_csv_formatters/_format_violin.py +64 -0
  424. scitex/plt/_subplots/_export_as_csv_formatters/_format_violinplot.py +77 -0
  425. scitex/plt/_subplots/_export_as_csv_formatters/test_formatters.py +210 -0
  426. scitex/plt/_subplots/_export_as_csv_formatters/verify_formatters.py +342 -0
  427. scitex/plt/_subplots/_export_as_csv_formatters.py +115 -0
  428. scitex/plt/_tpl.py +28 -0
  429. scitex/plt/ax/__init__.py +114 -0
  430. scitex/plt/ax/_plot/__init__.py +53 -0
  431. scitex/plt/ax/_plot/_plot_circular_hist.py +124 -0
  432. scitex/plt/ax/_plot/_plot_conf_mat.py +136 -0
  433. scitex/plt/ax/_plot/_plot_cube.py +57 -0
  434. scitex/plt/ax/_plot/_plot_ecdf.py +84 -0
  435. scitex/plt/ax/_plot/_plot_fillv.py +55 -0
  436. scitex/plt/ax/_plot/_plot_heatmap.py +266 -0
  437. scitex/plt/ax/_plot/_plot_image.py +94 -0
  438. scitex/plt/ax/_plot/_plot_joyplot.py +76 -0
  439. scitex/plt/ax/_plot/_plot_raster.py +172 -0
  440. scitex/plt/ax/_plot/_plot_rectangle.py +69 -0
  441. scitex/plt/ax/_plot/_plot_scatter_hist.py +133 -0
  442. scitex/plt/ax/_plot/_plot_shaded_line.py +142 -0
  443. scitex/plt/ax/_plot/_plot_statistical_shaded_line.py +221 -0
  444. scitex/plt/ax/_plot/_plot_violin.py +343 -0
  445. scitex/plt/ax/_style/__init__.py +38 -0
  446. scitex/plt/ax/_style/_add_marginal_ax.py +44 -0
  447. scitex/plt/ax/_style/_add_panel.py +92 -0
  448. scitex/plt/ax/_style/_extend.py +64 -0
  449. scitex/plt/ax/_style/_force_aspect.py +37 -0
  450. scitex/plt/ax/_style/_format_label.py +23 -0
  451. scitex/plt/ax/_style/_hide_spines.py +84 -0
  452. scitex/plt/ax/_style/_map_ticks.py +182 -0
  453. scitex/plt/ax/_style/_rotate_labels.py +215 -0
  454. scitex/plt/ax/_style/_sci_note.py +279 -0
  455. scitex/plt/ax/_style/_set_log_scale.py +299 -0
  456. scitex/plt/ax/_style/_set_meta.py +261 -0
  457. scitex/plt/ax/_style/_set_n_ticks.py +37 -0
  458. scitex/plt/ax/_style/_set_size.py +16 -0
  459. scitex/plt/ax/_style/_set_supxyt.py +116 -0
  460. scitex/plt/ax/_style/_set_ticks.py +276 -0
  461. scitex/plt/ax/_style/_set_xyt.py +121 -0
  462. scitex/plt/ax/_style/_share_axes.py +264 -0
  463. scitex/plt/ax/_style/_shift.py +139 -0
  464. scitex/plt/ax/_style/_show_spines.py +333 -0
  465. scitex/plt/color/_PARAMS.py +70 -0
  466. scitex/plt/color/__init__.py +52 -0
  467. scitex/plt/color/_add_hue_col.py +41 -0
  468. scitex/plt/color/_colors.py +205 -0
  469. scitex/plt/color/_get_colors_from_cmap.py +134 -0
  470. scitex/plt/color/_interpolate.py +29 -0
  471. scitex/plt/color/_vizualize_colors.py +54 -0
  472. scitex/plt/utils/__init__.py +44 -0
  473. scitex/plt/utils/_calc_bacc_from_conf_mat.py +46 -0
  474. scitex/plt/utils/_calc_nice_ticks.py +101 -0
  475. scitex/plt/utils/_close.py +68 -0
  476. scitex/plt/utils/_colorbar.py +96 -0
  477. scitex/plt/utils/_configure_mpl.py +295 -0
  478. scitex/plt/utils/_histogram_utils.py +132 -0
  479. scitex/plt/utils/_im2grid.py +70 -0
  480. scitex/plt/utils/_is_valid_axis.py +78 -0
  481. scitex/plt/utils/_mk_colorbar.py +65 -0
  482. scitex/plt/utils/_mk_patches.py +26 -0
  483. scitex/plt/utils/_scientific_captions.py +638 -0
  484. scitex/plt/utils/_scitex_config.py +223 -0
  485. scitex/reproduce/__init__.py +14 -0
  486. scitex/reproduce/_fix_seeds.py +45 -0
  487. scitex/reproduce/_gen_ID.py +55 -0
  488. scitex/reproduce/_gen_timestamp.py +35 -0
  489. scitex/res/__init__.py +5 -0
  490. scitex/resource/__init__.py +13 -0
  491. scitex/resource/_get_processor_usages.py +281 -0
  492. scitex/resource/_get_specs.py +280 -0
  493. scitex/resource/_log_processor_usages.py +190 -0
  494. scitex/resource/_utils/__init__.py +31 -0
  495. scitex/resource/_utils/_get_env_info.py +481 -0
  496. scitex/resource/limit_ram.py +33 -0
  497. scitex/scholar/__init__.py +24 -0
  498. scitex/scholar/_local_search.py +454 -0
  499. scitex/scholar/_paper.py +244 -0
  500. scitex/scholar/_pdf_downloader.py +325 -0
  501. scitex/scholar/_search.py +393 -0
  502. scitex/scholar/_vector_search.py +370 -0
  503. scitex/scholar/_web_sources.py +457 -0
  504. scitex/stats/__init__.py +31 -0
  505. scitex/stats/_calc_partial_corr.py +17 -0
  506. scitex/stats/_corr_test_multi.py +94 -0
  507. scitex/stats/_corr_test_wrapper.py +115 -0
  508. scitex/stats/_describe_wrapper.py +90 -0
  509. scitex/stats/_multiple_corrections.py +63 -0
  510. scitex/stats/_nan_stats.py +93 -0
  511. scitex/stats/_p2stars.py +116 -0
  512. scitex/stats/_p2stars_wrapper.py +56 -0
  513. scitex/stats/_statistical_tests.py +73 -0
  514. scitex/stats/desc/__init__.py +40 -0
  515. scitex/stats/desc/_describe.py +189 -0
  516. scitex/stats/desc/_nan.py +289 -0
  517. scitex/stats/desc/_real.py +94 -0
  518. scitex/stats/multiple/__init__.py +14 -0
  519. scitex/stats/multiple/_bonferroni_correction.py +72 -0
  520. scitex/stats/multiple/_fdr_correction.py +400 -0
  521. scitex/stats/multiple/_multicompair.py +28 -0
  522. scitex/stats/tests/__corr_test.py +277 -0
  523. scitex/stats/tests/__corr_test_multi.py +343 -0
  524. scitex/stats/tests/__corr_test_single.py +277 -0
  525. scitex/stats/tests/__init__.py +22 -0
  526. scitex/stats/tests/_brunner_munzel_test.py +192 -0
  527. scitex/stats/tests/_nocorrelation_test.py +28 -0
  528. scitex/stats/tests/_smirnov_grubbs.py +98 -0
  529. scitex/str/__init__.py +113 -0
  530. scitex/str/_clean_path.py +75 -0
  531. scitex/str/_color_text.py +52 -0
  532. scitex/str/_decapitalize.py +58 -0
  533. scitex/str/_factor_out_digits.py +281 -0
  534. scitex/str/_format_plot_text.py +498 -0
  535. scitex/str/_grep.py +48 -0
  536. scitex/str/_latex.py +155 -0
  537. scitex/str/_latex_fallback.py +471 -0
  538. scitex/str/_mask_api.py +39 -0
  539. scitex/str/_mask_api_key.py +8 -0
  540. scitex/str/_parse.py +158 -0
  541. scitex/str/_print_block.py +47 -0
  542. scitex/str/_print_debug.py +68 -0
  543. scitex/str/_printc.py +62 -0
  544. scitex/str/_readable_bytes.py +38 -0
  545. scitex/str/_remove_ansi.py +23 -0
  546. scitex/str/_replace.py +134 -0
  547. scitex/str/_search.py +125 -0
  548. scitex/str/_squeeze_space.py +36 -0
  549. scitex/tex/__init__.py +10 -0
  550. scitex/tex/_preview.py +103 -0
  551. scitex/tex/_to_vec.py +116 -0
  552. scitex/torch/__init__.py +18 -0
  553. scitex/torch/_apply_to.py +34 -0
  554. scitex/torch/_nan_funcs.py +77 -0
  555. scitex/types/_ArrayLike.py +44 -0
  556. scitex/types/_ColorLike.py +21 -0
  557. scitex/types/__init__.py +14 -0
  558. scitex/types/_is_listed_X.py +70 -0
  559. scitex/utils/__init__.py +22 -0
  560. scitex/utils/_compress_hdf5.py +116 -0
  561. scitex/utils/_email.py +120 -0
  562. scitex/utils/_grid.py +148 -0
  563. scitex/utils/_notify.py +247 -0
  564. scitex/utils/_search.py +121 -0
  565. scitex/web/__init__.py +38 -0
  566. scitex/web/_search_pubmed.py +438 -0
  567. scitex/web/_summarize_url.py +158 -0
  568. scitex-2.0.0.dist-info/METADATA +307 -0
  569. scitex-2.0.0.dist-info/RECORD +572 -0
  570. scitex-2.0.0.dist-info/WHEEL +6 -0
  571. scitex-2.0.0.dist-info/licenses/LICENSE +7 -0
  572. scitex-2.0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,81 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-25 01:45:48 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/db/_BaseMixins/_BaseBlobMixin.py
5
+
6
+ THIS_FILE = "/home/ywatanabe/proj/scitex_repo/src/scitex/db/_BaseMixins/_BaseBlobMixin.py"
7
+
8
+ from abc import ABC, abstractmethod
9
+ from typing import Any, Dict, List, Optional, Tuple, Union
10
+ import numpy as np
11
+ import pandas as pd
12
+
13
+
14
+ class _BaseBlobMixin(ABC):
15
+ """Base class for BLOB data handling functionality"""
16
+
17
+ @abstractmethod
18
+ def save_array(
19
+ self,
20
+ table_name: str,
21
+ data: np.ndarray,
22
+ column: str = "data",
23
+ ids: Optional[Union[int, List[int]]] = None,
24
+ where: str = None,
25
+ additional_columns: Dict[str, Any] = None,
26
+ batch_size: int = 1000,
27
+ ) -> None:
28
+ """Save numpy array(s) to database"""
29
+ pass
30
+
31
+ @abstractmethod
32
+ def load_array(
33
+ self,
34
+ table_name: str,
35
+ column: str,
36
+ ids: Union[int, List[int], str] = "all",
37
+ where: str = None,
38
+ order_by: str = None,
39
+ batch_size: int = 128,
40
+ dtype: np.dtype = None,
41
+ shape: Optional[Tuple] = None,
42
+ ) -> Optional[np.ndarray]:
43
+ """Load numpy array(s) from database"""
44
+ pass
45
+
46
+ @abstractmethod
47
+ def binary_to_array(
48
+ self,
49
+ binary_data,
50
+ dtype_str=None,
51
+ shape_str=None,
52
+ dtype=None,
53
+ shape=None,
54
+ ) -> Optional[np.ndarray]:
55
+ """Convert binary data to numpy array"""
56
+ pass
57
+
58
+ @abstractmethod
59
+ def get_array_dict(
60
+ self,
61
+ df: pd.DataFrame,
62
+ columns: Optional[List[str]] = None,
63
+ dtype: Optional[np.dtype] = None,
64
+ shape: Optional[Tuple] = None,
65
+ ) -> Dict[str, np.ndarray]:
66
+ """Convert DataFrame columns to dictionary of arrays"""
67
+ pass
68
+
69
+ @abstractmethod
70
+ def decode_array_columns(
71
+ self,
72
+ df: pd.DataFrame,
73
+ columns: Optional[List[str]] = None,
74
+ dtype: Optional[np.dtype] = None,
75
+ shape: Optional[Tuple] = None,
76
+ ) -> pd.DataFrame:
77
+ """Decode binary columns in DataFrame to numpy arrays"""
78
+ pass
79
+
80
+
81
+ # EOF
@@ -0,0 +1,43 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-25 06:02:43 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/db/_BaseMixins/_BaseConnectionMixin.py
5
+
6
+ THIS_FILE = (
7
+ "/home/ywatanabe/proj/scitex_repo/src/scitex/db/_BaseMixins/_BaseConnectionMixin.py"
8
+ )
9
+
10
+ import threading
11
+ from typing import Optional
12
+
13
+
14
+ class _BaseConnectionMixin:
15
+ def __init__(self):
16
+ self.lock = threading.Lock()
17
+ self._maintenance_lock = threading.Lock()
18
+ self.conn = None
19
+ self.cursor = None
20
+
21
+ def __enter__(self):
22
+ return self
23
+
24
+ def __exit__(self, exc_type, exc_val, exc_tb):
25
+ self.close()
26
+
27
+ def connect(self):
28
+ raise NotImplementedError
29
+
30
+ def close(self):
31
+ raise NotImplementedError
32
+
33
+ def reconnect(self):
34
+ raise NotImplementedError
35
+
36
+ def execute(self, query: str, parameters=()) -> None:
37
+ raise NotImplementedError
38
+
39
+ def executemany(self, query: str, parameters) -> None:
40
+ raise NotImplementedError
41
+
42
+
43
+ # EOF
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-24 22:20:15 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/db/_Basemodules/_BaseImportExportMixin.py
5
+
6
+ THIS_FILE = (
7
+ "/home/ywatanabe/proj/scitex_repo/src/scitex/db/_Basemodules/_BaseImportExportMixin.py"
8
+ )
9
+
10
+
11
+ #!/usr/bin/env python3
12
+ # -*- coding: utf-8 -*-
13
+
14
+ from typing import List
15
+
16
+
17
+ class _BaseImportExportMixin:
18
+ def load_from_csv(
19
+ self,
20
+ table_name: str,
21
+ csv_path: str,
22
+ if_exists: str = "append",
23
+ batch_size: int = 10_000,
24
+ chunk_size: int = 100_000,
25
+ ) -> None:
26
+ raise NotImplementedError
27
+
28
+ def save_to_csv(
29
+ self,
30
+ table_name: str,
31
+ output_path: str,
32
+ columns: List[str] = ["*"],
33
+ where: str = None,
34
+ batch_size: int = 10_000,
35
+ ) -> None:
36
+ raise NotImplementedError
37
+
38
+
39
+ # EOF
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-24 22:20:26 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/db/_Basemodules/_BaseIndexMixin.py
5
+
6
+ THIS_FILE = "/home/ywatanabe/proj/scitex_repo/src/scitex/db/_Basemodules/_BaseIndexMixin.py"
7
+
8
+
9
+ #!/usr/bin/env python3
10
+ # -*- coding: utf-8 -*-
11
+
12
+ from typing import List
13
+
14
+
15
+ class _BaseIndexMixin:
16
+ def create_index(
17
+ self,
18
+ table_name: str,
19
+ column_names: List[str],
20
+ index_name: str = None,
21
+ unique: bool = False,
22
+ ) -> None:
23
+ raise NotImplementedError
24
+
25
+ def drop_index(self, index_name: str) -> None:
26
+ raise NotImplementedError
27
+
28
+
29
+ # EOF
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-24 22:12:07 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/db/_Basemodules/_BaseMaintenanceMixin.py
5
+
6
+ THIS_FILE = (
7
+ "/home/ywatanabe/proj/scitex_repo/src/scitex/db/_Basemodules/_BaseMaintenanceMixin.py"
8
+ )
9
+
10
+ from typing import Optional, List, Dict
11
+
12
+
13
+ class _BaseMaintenanceMixin:
14
+ def vacuum(self, table: Optional[str] = None):
15
+ raise NotImplementedError
16
+
17
+ def analyze(self, table: Optional[str] = None):
18
+ raise NotImplementedError
19
+
20
+ def reindex(self, table: Optional[str] = None):
21
+ raise NotImplementedError
22
+
23
+ def get_table_size(self, table: str):
24
+ raise NotImplementedError
25
+
26
+ def get_database_size(self):
27
+ raise NotImplementedError
28
+
29
+ def get_table_info(self) -> List[Dict]:
30
+ raise NotImplementedError
31
+
32
+
33
+ # EOF
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-24 22:17:03 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/db/_Basemodules/_BaseQueryMixin.py
5
+
6
+ THIS_FILE = "/home/ywatanabe/proj/scitex_repo/src/scitex/db/_Basemodules/_BaseQueryMixin.py"
7
+
8
+ #!/usr/bin/env python3
9
+ # -*- coding: utf-8 -*-
10
+
11
+ from typing import List, Dict, Any, Optional, Union, Tuple
12
+
13
+
14
+ class _BaseQueryMixin:
15
+ def select(
16
+ self,
17
+ table: str,
18
+ columns: Optional[List[str]] = None,
19
+ where: Optional[str] = None,
20
+ params: Optional[tuple] = None,
21
+ order_by: Optional[str] = None,
22
+ limit: Optional[int] = None,
23
+ ) -> List[Dict[str, Any]]:
24
+ raise NotImplementedError
25
+
26
+ def insert(self, table: str, data: Dict[str, Any]) -> None:
27
+ raise NotImplementedError
28
+
29
+ def update(
30
+ self,
31
+ table: str,
32
+ data: Dict[str, Any],
33
+ where: str,
34
+ params: Optional[tuple] = None,
35
+ ) -> int:
36
+ raise NotImplementedError
37
+
38
+ def delete(self, table: str, where: str, params: Optional[tuple] = None) -> int:
39
+ raise NotImplementedError
40
+
41
+ def execute_query(
42
+ self, query: str, params: Optional[tuple] = None
43
+ ) -> List[Dict[str, Any]]:
44
+ raise NotImplementedError
45
+
46
+ def count(
47
+ self, table: str, where: Optional[str] = None, params: Optional[tuple] = None
48
+ ) -> int:
49
+ raise NotImplementedError
50
+
51
+
52
+ # EOF
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-24 22:21:03 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/db/_Basemodules/_BaseRowMixin.py
5
+
6
+ THIS_FILE = "/home/ywatanabe/proj/scitex_repo/src/scitex/db/_Basemodules/_BaseRowMixin.py"
7
+
8
+
9
+ #!/usr/bin/env python3
10
+ # -*- coding: utf-8 -*-
11
+
12
+ from typing import List, Optional
13
+
14
+
15
+ class _BaseRowMixin:
16
+ def get_rows(
17
+ self,
18
+ table_name: str,
19
+ columns: List[str] = None,
20
+ where: str = None,
21
+ order_by: str = None,
22
+ limit: Optional[int] = None,
23
+ offset: Optional[int] = None,
24
+ return_as: str = "dataframe",
25
+ ):
26
+ raise NotImplementedError
27
+
28
+ def get_row_count(self, table_name: str = None, where: str = None) -> int:
29
+ raise NotImplementedError
30
+
31
+
32
+ # EOF
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-24 22:14:24 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/db/_Basemodules/_BaseSchemaMixin.py
5
+
6
+ THIS_FILE = (
7
+ "/home/ywatanabe/proj/scitex_repo/src/scitex/db/_Basemodules/_BaseSchemaMixin.py"
8
+ )
9
+
10
+ from typing import List, Dict, Any, Optional
11
+
12
+
13
+ class _BaseSchemaMixin:
14
+ def get_tables(self) -> List[str]:
15
+ raise NotImplementedError
16
+
17
+ def get_columns(self, table: str) -> List[Dict[str, Any]]:
18
+ raise NotImplementedError
19
+
20
+ def get_primary_keys(self, table: str) -> List[str]:
21
+ raise NotImplementedError
22
+
23
+ def get_foreign_keys(self, table: str) -> List[Dict[str, Any]]:
24
+ raise NotImplementedError
25
+
26
+ def get_indexes(self, table: str) -> List[Dict[str, Any]]:
27
+ raise NotImplementedError
28
+
29
+ def table_exists(self, table: str) -> bool:
30
+ raise NotImplementedError
31
+
32
+ def column_exists(self, table: str, column: str) -> bool:
33
+ raise NotImplementedError
34
+
35
+ def create_index(
36
+ self, table: str, columns: List[str], index_name: Optional[str] = None
37
+ ) -> None:
38
+ raise NotImplementedError
39
+
40
+ def drop_index(self, index_name: str) -> None:
41
+ raise NotImplementedError
42
+
43
+
44
+ # EOF
@@ -0,0 +1,66 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-24 22:21:17 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/db/_Basemodules/_BaseTableMixin.py
5
+
6
+ THIS_FILE = "/home/ywatanabe/proj/scitex_repo/src/scitex/db/_Basemodules/_BaseTableMixin.py"
7
+
8
+
9
+ #!/usr/bin/env python3
10
+ # -*- coding: utf-8 -*-
11
+
12
+ from typing import Any, Dict, List, Union
13
+
14
+
15
+ class _BaseTableMixin:
16
+ def create_table(
17
+ self,
18
+ table_name: str,
19
+ columns: Dict[str, str],
20
+ foreign_keys: List[Dict[str, str]] = None,
21
+ if_not_exists: bool = True,
22
+ ) -> None:
23
+ raise NotImplementedError
24
+
25
+ def drop_table(self, table_name: str, if_exists: bool = True) -> None:
26
+ raise NotImplementedError
27
+
28
+ def rename_table(self, old_name: str, new_name: str) -> None:
29
+ raise NotImplementedError
30
+
31
+ def add_columns(
32
+ self,
33
+ table_name: str,
34
+ columns: Dict[str, str],
35
+ default_values: Dict[str, Any] = None,
36
+ ) -> None:
37
+ raise NotImplementedError
38
+
39
+ def add_column(
40
+ self,
41
+ table_name: str,
42
+ column_name: str,
43
+ column_type: str,
44
+ default_value: Any = None,
45
+ ) -> None:
46
+ raise NotImplementedError
47
+
48
+ def drop_columns(
49
+ self, table_name: str, columns: Union[str, List[str]], if_exists: bool = True
50
+ ) -> None:
51
+ raise NotImplementedError
52
+
53
+ def get_table_names(self) -> List[str]:
54
+ raise NotImplementedError
55
+
56
+ def get_table_schema(self, table_name: str):
57
+ raise NotImplementedError
58
+
59
+ def get_primary_key(self, table_name: str) -> str:
60
+ raise NotImplementedError
61
+
62
+ def get_table_stats(self, table_name: str) -> Dict[str, int]:
63
+ raise NotImplementedError
64
+
65
+
66
+ # EOF
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-24 22:08:33 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/db/_Basemodules/_BaseTransactionMixin.py
5
+
6
+ THIS_FILE = (
7
+ "/home/ywatanabe/proj/scitex_repo/src/scitex/db/_Basemodules/_BaseTransactionMixin.py"
8
+ )
9
+
10
+
11
+ #!/usr/bin/env python3
12
+ # -*- coding: utf-8 -*-
13
+
14
+ import contextlib
15
+
16
+
17
+ class _BaseTransactionMixin:
18
+ @contextlib.contextmanager
19
+ def transaction(self):
20
+ try:
21
+ self.begin()
22
+ yield
23
+ self.commit()
24
+ except Exception as e:
25
+ self.rollback()
26
+ raise e
27
+
28
+ def begin(self):
29
+ raise NotImplementedError
30
+
31
+ def commit(self):
32
+ raise NotImplementedError
33
+
34
+ def rollback(self):
35
+ raise NotImplementedError
36
+
37
+ def enable_foreign_keys(self):
38
+ raise NotImplementedError
39
+
40
+ def disable_foreign_keys(self):
41
+ raise NotImplementedError
42
+
43
+ @property
44
+ def writable(self):
45
+ raise NotImplementedError
46
+
47
+ @writable.setter
48
+ def writable(self, state: bool):
49
+ raise NotImplementedError
50
+
51
+
52
+ # EOF
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env python3
2
+ """Base mixins for database functionality."""
3
+
4
+ from ._BaseBackupMixin import _BaseBackupMixin
5
+ from ._BaseBatchMixin import _BaseBatchMixin
6
+ from ._BaseBlobMixin import _BaseBlobMixin
7
+ from ._BaseConnectionMixin import _BaseConnectionMixin
8
+ from ._BaseImportExportMixin import _BaseImportExportMixin
9
+ from ._BaseIndexMixin import _BaseIndexMixin
10
+ from ._BaseMaintenanceMixin import _BaseMaintenanceMixin
11
+ from ._BaseQueryMixin import _BaseQueryMixin
12
+ from ._BaseRowMixin import _BaseRowMixin
13
+ from ._BaseSchemaMixin import _BaseSchemaMixin
14
+ from ._BaseTableMixin import _BaseTableMixin
15
+ from ._BaseTransactionMixin import _BaseTransactionMixin
16
+
17
+ __all__ = [
18
+ "_BaseBackupMixin",
19
+ "_BaseBatchMixin",
20
+ "_BaseBlobMixin",
21
+ "_BaseConnectionMixin",
22
+ "_BaseImportExportMixin",
23
+ "_BaseIndexMixin",
24
+ "_BaseMaintenanceMixin",
25
+ "_BaseQueryMixin",
26
+ "_BaseRowMixin",
27
+ "_BaseSchemaMixin",
28
+ "_BaseTableMixin",
29
+ "_BaseTransactionMixin",
30
+ ]
@@ -0,0 +1,126 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # Time-stamp: "2024-11-25 02:00:06 (ywatanabe)"
4
+ # File: ./scitex_repo/src/scitex/db/_PostgreSQL.py
5
+
6
+ THIS_FILE = "/home/ywatanabe/proj/scitex_repo/src/scitex/db/_PostgreSQL.py"
7
+
8
+ from typing import List, Optional
9
+
10
+ from ..str import printc as _printc
11
+ from typing import Optional
12
+ import psycopg2
13
+ from ._PostgreSQLMixins._BackupMixin import _BackupMixin
14
+ from ._PostgreSQLMixins._BatchMixin import _BatchMixin
15
+ from ._PostgreSQLMixins._ConnectionMixin import _ConnectionMixin
16
+ from ._PostgreSQLMixins._ImportExportMixin import _ImportExportMixin
17
+ from ._PostgreSQLMixins._IndexMixin import _IndexMixin
18
+ from ._PostgreSQLMixins._MaintenanceMixin import _MaintenanceMixin
19
+ from ._PostgreSQLMixins._QueryMixin import _QueryMixin
20
+ from ._PostgreSQLMixins._RowMixin import _RowMixin
21
+ from ._PostgreSQLMixins._SchemaMixin import _SchemaMixin
22
+ from ._PostgreSQLMixins._TableMixin import _TableMixin
23
+ from ._PostgreSQLMixins._TransactionMixin import _TransactionMixin
24
+ from ._PostgreSQLMixins._BlobMixin import _BlobMixin
25
+
26
+
27
+ class PostgreSQL(
28
+ _BackupMixin,
29
+ _BatchMixin,
30
+ _ConnectionMixin,
31
+ _ImportExportMixin,
32
+ _IndexMixin,
33
+ _MaintenanceMixin,
34
+ _QueryMixin,
35
+ _RowMixin,
36
+ _SchemaMixin,
37
+ _TableMixin,
38
+ _TransactionMixin,
39
+ _BlobMixin,
40
+ ):
41
+
42
+ def __init__(
43
+ self,
44
+ dbname: Optional[str] = None,
45
+ user: str = None,
46
+ password: str = None,
47
+ host: str = "localhost",
48
+ port: int = 5432,
49
+ ):
50
+ super().__init__(
51
+ dbname=dbname, user=user, password=password, host=host, port=port
52
+ )
53
+
54
+ def __call__(
55
+ self,
56
+ return_summary=False,
57
+ print_summary=True,
58
+ table_names: Optional[List[str]] = None,
59
+ verbose: bool = True,
60
+ limit: int = 5,
61
+ ):
62
+ """Display or return database summary."""
63
+ summary = self.get_summaries(
64
+ table_names=table_names,
65
+ verbose=verbose,
66
+ limit=limit,
67
+ )
68
+
69
+ if print_summary:
70
+ for k, v in summary.items():
71
+ _printc(f"{k}\n{v}")
72
+
73
+ if return_summary:
74
+ return summary
75
+
76
+ @property
77
+ def summary(self):
78
+ """Property to quickly access database summary."""
79
+ self()
80
+
81
+
82
+ # class BaseSQLiteDB(
83
+ # _ConnectionMixin,
84
+ # _QueryMixin,
85
+ # _TransactionMixin,
86
+ # _TableMixin,
87
+ # _IndexMixin,
88
+ # _RowMixin,
89
+ # _BatchMixin,
90
+ # _BlobMixin,
91
+ # _ImportExportMixin,
92
+ # _MaintenanceMixin,
93
+ # ):
94
+ # """Comprehensive SQLite database management class."""
95
+
96
+ # def __init__(self, db_path: str, use_temp: bool = False):
97
+ # """Initializes database with option for temporary copy."""
98
+ # _ConnectionMixin.__init__(self, db_path, use_temp)
99
+
100
+ # def __call__(
101
+ # self,
102
+ # return_summary=False,
103
+ # print_summary=True,
104
+ # table_names: Optional[List[str]] = None,
105
+ # verbose: bool = True,
106
+ # limit: int = 5,
107
+ # ):
108
+ # summary = self.get_summaries(
109
+ # table_names=table_names,
110
+ # verbose=verbose,
111
+ # limit=limit,
112
+ # )
113
+
114
+ # if print_summary:
115
+ # for k, v in summary.items():
116
+ # _printc(f"{k}\n{v}")
117
+
118
+ # if return_summary:
119
+ # return summary
120
+
121
+ # @property
122
+ # def summary(self):
123
+ # self()
124
+
125
+
126
+ # EOF