re-common 10.0.18__tar.gz → 10.0.21__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. {re_common-10.0.18/re_common.egg-info → re_common-10.0.21}/PKG-INFO +2 -10
  2. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/tools/hdfs_data_processer.py +4 -4
  3. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/utils/basehdfs.py +34 -0
  4. re_common-10.0.21/re_common/v2/baselibrary/utils/basetime.py +77 -0
  5. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/utils/json_cls.py +6 -1
  6. {re_common-10.0.18 → re_common-10.0.21/re_common.egg-info}/PKG-INFO +2 -10
  7. {re_common-10.0.18 → re_common-10.0.21}/re_common.egg-info/SOURCES.txt +1 -0
  8. {re_common-10.0.18 → re_common-10.0.21}/setup.py +1 -1
  9. {re_common-10.0.18 → re_common-10.0.21}/LICENSE +0 -0
  10. {re_common-10.0.18 → re_common-10.0.21}/README.md +0 -0
  11. {re_common-10.0.18 → re_common-10.0.21}/pyproject.toml +0 -0
  12. {re_common-10.0.18 → re_common-10.0.21}/re_common/__init__.py +0 -0
  13. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/__init__.py +0 -0
  14. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/baseabs/__init__.py +0 -0
  15. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/baseabs/baseabs.py +0 -0
  16. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/database/__init__.py +0 -0
  17. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/database/mbuilder.py +0 -0
  18. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/database/moudle.py +0 -0
  19. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/database/msqlite3.py +0 -0
  20. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/database/mysql.py +0 -0
  21. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/database/sql_factory.py +0 -0
  22. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/mthread/MThreadingRun.py +0 -0
  23. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/mthread/MThreadingRunEvent.py +0 -0
  24. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/mthread/__init__.py +0 -0
  25. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/mthread/mythreading.py +0 -0
  26. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/pakge_other/__init__.py +0 -0
  27. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/pakge_other/socks.py +0 -0
  28. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/readconfig/__init__.py +0 -0
  29. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/readconfig/config_factory.py +0 -0
  30. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/readconfig/ini_config.py +0 -0
  31. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/readconfig/toml_config.py +0 -0
  32. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/temporary/__init__.py +0 -0
  33. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/temporary/envdata.py +0 -0
  34. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/__init__.py +0 -0
  35. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/all_requests/__init__.py +0 -0
  36. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/all_requests/aiohttp_request.py +0 -0
  37. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/all_requests/httpx_requet.py +0 -0
  38. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/all_requests/mrequest.py +0 -0
  39. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/all_requests/requests_request.py +0 -0
  40. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/batch_compre/__init__.py +0 -0
  41. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/batch_compre/bijiao_batch.py +0 -0
  42. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/contrast_db3.py +0 -0
  43. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/copy_file.py +0 -0
  44. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/db3_2_sizedb3.py +0 -0
  45. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/foreachgz.py +0 -0
  46. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/get_attr.py +0 -0
  47. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/image_to_pdf.py +0 -0
  48. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/java_code_deal.py +0 -0
  49. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/javacode.py +0 -0
  50. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/mdb_db3.py +0 -0
  51. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/merge_file.py +0 -0
  52. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/merge_gz_file.py +0 -0
  53. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/mhdfstools/__init__.py +0 -0
  54. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/mhdfstools/down_hdfs_files.py +0 -0
  55. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/mhdfstools/hdfst.py +0 -0
  56. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/mhdfstools/up_hdfs_files.py +0 -0
  57. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/mongo_tools.py +0 -0
  58. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/move_file.py +0 -0
  59. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/move_mongo/__init__.py +0 -0
  60. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/move_mongo/mongo_table_to_file.py +0 -0
  61. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/move_mongo/move_mongo_table.py +0 -0
  62. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/move_mongo/use_mttf.py +0 -0
  63. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/move_mongo/use_mv.py +0 -0
  64. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/mpandas/__init__.py +0 -0
  65. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/mpandas/mpandasreadexcel.py +0 -0
  66. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/mpandas/pandas_visualization.py +0 -0
  67. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/myparsel.py +0 -0
  68. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/rename_dir_file.py +0 -0
  69. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/sequoiadb_utils.py +0 -0
  70. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/split_line_to_many.py +0 -0
  71. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/stringtodicts.py +0 -0
  72. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/tools/workwechant_bot.py +0 -0
  73. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/__init__.py +0 -0
  74. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/baseaiohttp.py +0 -0
  75. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/baseaiomysql.py +0 -0
  76. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/baseallstep.py +0 -0
  77. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/baseavro.py +0 -0
  78. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/baseboto3.py +0 -0
  79. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/basecsv.py +0 -0
  80. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/basedict.py +0 -0
  81. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/basedir.py +0 -0
  82. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/baseencode.py +0 -0
  83. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/baseencoding.py +0 -0
  84. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/baseesdsl.py +0 -0
  85. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/baseexcel.py +0 -0
  86. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/baseexcept.py +0 -0
  87. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/basefile.py +0 -0
  88. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/baseftp.py +0 -0
  89. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/basegzip.py +0 -0
  90. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/basehdfs.py +0 -0
  91. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/basehttpx.py +0 -0
  92. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/baseip.py +0 -0
  93. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/basejson.py +0 -0
  94. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/baselist.py +0 -0
  95. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/basemotor.py +0 -0
  96. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/basemssql.py +0 -0
  97. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/baseodbc.py +0 -0
  98. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/basepandas.py +0 -0
  99. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/basepeewee.py +0 -0
  100. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/basepika.py +0 -0
  101. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/basepydash.py +0 -0
  102. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/basepymongo.py +0 -0
  103. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/basequeue.py +0 -0
  104. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/baserar.py +0 -0
  105. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/baserequest.py +0 -0
  106. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/baseset.py +0 -0
  107. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/basesmb.py +0 -0
  108. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/basestring.py +0 -0
  109. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/basetime.py +0 -0
  110. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/basetuple.py +0 -0
  111. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/baseurl.py +0 -0
  112. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/basezip.py +0 -0
  113. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/core/__init__.py +0 -0
  114. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/core/bottomutils.py +0 -0
  115. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/core/mdeprecated.py +0 -0
  116. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/core/mlamada.py +0 -0
  117. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/core/msginfo.py +0 -0
  118. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/core/requests_core.py +0 -0
  119. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/fateadm.py +0 -0
  120. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/importfun.py +0 -0
  121. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/mfaker.py +0 -0
  122. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/my_abc/__init__.py +0 -0
  123. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/my_abc/better_abc.py +0 -0
  124. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/mylogger.py +0 -0
  125. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/myredisclient.py +0 -0
  126. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/pipupgrade.py +0 -0
  127. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/ringlist.py +0 -0
  128. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/version_compare.py +0 -0
  129. {re_common-10.0.18 → re_common-10.0.21}/re_common/baselibrary/utils/ydmhttp.py +0 -0
  130. {re_common-10.0.18 → re_common-10.0.21}/re_common/facade/__init__.py +0 -0
  131. {re_common-10.0.18 → re_common-10.0.21}/re_common/facade/lazy_import.py +0 -0
  132. {re_common-10.0.18 → re_common-10.0.21}/re_common/facade/loggerfacade.py +0 -0
  133. {re_common-10.0.18 → re_common-10.0.21}/re_common/facade/mysqlfacade.py +0 -0
  134. {re_common-10.0.18 → re_common-10.0.21}/re_common/facade/now.py +0 -0
  135. {re_common-10.0.18 → re_common-10.0.21}/re_common/facade/sqlite3facade.py +0 -0
  136. {re_common-10.0.18 → re_common-10.0.21}/re_common/facade/use/__init__.py +0 -0
  137. {re_common-10.0.18 → re_common-10.0.21}/re_common/facade/use/mq_use_facade.py +0 -0
  138. {re_common-10.0.18 → re_common-10.0.21}/re_common/facade/use/proxy_use_facade.py +0 -0
  139. {re_common-10.0.18 → re_common-10.0.21}/re_common/libtest/__init__.py +0 -0
  140. {re_common-10.0.18 → re_common-10.0.21}/re_common/libtest/base_dict_test.py +0 -0
  141. {re_common-10.0.18 → re_common-10.0.21}/re_common/libtest/baseavro_test.py +0 -0
  142. {re_common-10.0.18 → re_common-10.0.21}/re_common/libtest/basefile_test.py +0 -0
  143. {re_common-10.0.18 → re_common-10.0.21}/re_common/libtest/basemssql_test.py +0 -0
  144. {re_common-10.0.18 → re_common-10.0.21}/re_common/libtest/baseodbc_test.py +0 -0
  145. {re_common-10.0.18 → re_common-10.0.21}/re_common/libtest/basepandas_test.py +0 -0
  146. {re_common-10.0.18 → re_common-10.0.21}/re_common/libtest/get_attr_test/__init__.py +0 -0
  147. {re_common-10.0.18 → re_common-10.0.21}/re_common/libtest/get_attr_test/get_attr_test_settings.py +0 -0
  148. {re_common-10.0.18 → re_common-10.0.21}/re_common/libtest/get_attr_test/settings.py +0 -0
  149. {re_common-10.0.18 → re_common-10.0.21}/re_common/libtest/idencode_test.py +0 -0
  150. {re_common-10.0.18 → re_common-10.0.21}/re_common/libtest/iniconfig_test.py +0 -0
  151. {re_common-10.0.18 → re_common-10.0.21}/re_common/libtest/ip_test.py +0 -0
  152. {re_common-10.0.18 → re_common-10.0.21}/re_common/libtest/merge_file_test.py +0 -0
  153. {re_common-10.0.18 → re_common-10.0.21}/re_common/libtest/mfaker_test.py +0 -0
  154. {re_common-10.0.18 → re_common-10.0.21}/re_common/libtest/mm3_test.py +0 -0
  155. {re_common-10.0.18 → re_common-10.0.21}/re_common/libtest/mylogger_test.py +0 -0
  156. {re_common-10.0.18 → re_common-10.0.21}/re_common/libtest/myparsel_test.py +0 -0
  157. {re_common-10.0.18 → re_common-10.0.21}/re_common/libtest/mysql_test.py +0 -0
  158. {re_common-10.0.18 → re_common-10.0.21}/re_common/libtest/pymongo_test.py +0 -0
  159. {re_common-10.0.18 → re_common-10.0.21}/re_common/libtest/split_test.py +0 -0
  160. {re_common-10.0.18 → re_common-10.0.21}/re_common/libtest/sqlite3_merge_test.py +0 -0
  161. {re_common-10.0.18 → re_common-10.0.21}/re_common/libtest/sqlite3_test.py +0 -0
  162. {re_common-10.0.18 → re_common-10.0.21}/re_common/libtest/tomlconfig_test.py +0 -0
  163. {re_common-10.0.18 → re_common-10.0.21}/re_common/libtest/use_tools_test/__init__.py +0 -0
  164. {re_common-10.0.18 → re_common-10.0.21}/re_common/libtest/user/__init__.py +0 -0
  165. {re_common-10.0.18 → re_common-10.0.21}/re_common/studio/__init__.py +0 -0
  166. {re_common-10.0.18 → re_common-10.0.21}/re_common/studio/assignment_expressions.py +0 -0
  167. {re_common-10.0.18 → re_common-10.0.21}/re_common/studio/mydash/__init__.py +0 -0
  168. {re_common-10.0.18 → re_common-10.0.21}/re_common/studio/mydash/test1.py +0 -0
  169. {re_common-10.0.18 → re_common-10.0.21}/re_common/studio/pydashstudio/__init__.py +0 -0
  170. {re_common-10.0.18 → re_common-10.0.21}/re_common/studio/pydashstudio/first.py +0 -0
  171. {re_common-10.0.18 → re_common-10.0.21}/re_common/studio/streamlitstudio/__init__.py +0 -0
  172. {re_common-10.0.18 → re_common-10.0.21}/re_common/studio/streamlitstudio/first_app.py +0 -0
  173. {re_common-10.0.18 → re_common-10.0.21}/re_common/studio/streamlitstudio/uber_pickups.py +0 -0
  174. {re_common-10.0.18 → re_common-10.0.21}/re_common/studio/test.py +0 -0
  175. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/__init__.py +0 -0
  176. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/__init__.py +0 -0
  177. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/decorators/__init__.py +0 -0
  178. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/decorators/utils.py +0 -0
  179. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/helpers/__init__.py +0 -0
  180. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/s3object/__init__.py +0 -0
  181. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/s3object/baseboto3.py +0 -0
  182. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/tools/WeChatRobot.py +0 -0
  183. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/tools/__init__.py +0 -0
  184. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/tools/ac_ahocorasick.py +0 -0
  185. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/tools/dict_tools.py +0 -0
  186. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/tools/dolphinscheduler.py +0 -0
  187. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/tools/list_tools.py +0 -0
  188. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/tools/search_hash_tools.py +0 -0
  189. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/tools/text_matcher.py +0 -0
  190. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/tools/unionfind_tools.py +0 -0
  191. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/utils/BusinessStringUtil.py +0 -0
  192. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/utils/__init__.py +0 -0
  193. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/utils/author_smi.py +0 -0
  194. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/utils/base_string_similarity.py +0 -0
  195. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/utils/basedict.py +0 -0
  196. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/utils/basepika.py +0 -0
  197. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/utils/db.py +0 -0
  198. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/utils/mq.py +0 -0
  199. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/utils/n_ary_expression_tree.py +0 -0
  200. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/utils/string_bool.py +0 -0
  201. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/utils/string_clear.py +0 -0
  202. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/utils/string_smi.py +0 -0
  203. {re_common-10.0.18 → re_common-10.0.21}/re_common/v2/baselibrary/utils/stringutils.py +0 -0
  204. {re_common-10.0.18 → re_common-10.0.21}/re_common/vip/__init__.py +0 -0
  205. {re_common-10.0.18 → re_common-10.0.21}/re_common/vip/base_step_process.py +0 -0
  206. {re_common-10.0.18 → re_common-10.0.21}/re_common/vip/baseencodeid.py +0 -0
  207. {re_common-10.0.18 → re_common-10.0.21}/re_common/vip/changetaskname.py +0 -0
  208. {re_common-10.0.18 → re_common-10.0.21}/re_common/vip/core_var.py +0 -0
  209. {re_common-10.0.18 → re_common-10.0.21}/re_common/vip/mmh3Hash.py +0 -0
  210. {re_common-10.0.18 → re_common-10.0.21}/re_common/vip/proxy/__init__.py +0 -0
  211. {re_common-10.0.18 → re_common-10.0.21}/re_common/vip/proxy/allproxys.py +0 -0
  212. {re_common-10.0.18 → re_common-10.0.21}/re_common/vip/proxy/allproxys_thread.py +0 -0
  213. {re_common-10.0.18 → re_common-10.0.21}/re_common/vip/proxy/cnki_proxy.py +0 -0
  214. {re_common-10.0.18 → re_common-10.0.21}/re_common/vip/proxy/kuaidaili.py +0 -0
  215. {re_common-10.0.18 → re_common-10.0.21}/re_common/vip/proxy/proxy_all.py +0 -0
  216. {re_common-10.0.18 → re_common-10.0.21}/re_common/vip/proxy/update_kuaidaili_0.py +0 -0
  217. {re_common-10.0.18 → re_common-10.0.21}/re_common/vip/proxy/wanfang_proxy.py +0 -0
  218. {re_common-10.0.18 → re_common-10.0.21}/re_common/vip/proxy/wp_proxy_all.py +0 -0
  219. {re_common-10.0.18 → re_common-10.0.21}/re_common/vip/read_rawid_to_txt.py +0 -0
  220. {re_common-10.0.18 → re_common-10.0.21}/re_common/vip/title/__init__.py +0 -0
  221. {re_common-10.0.18 → re_common-10.0.21}/re_common/vip/title/transform/TransformBookTitleToZt.py +0 -0
  222. {re_common-10.0.18 → re_common-10.0.21}/re_common/vip/title/transform/TransformConferenceTitleToZt.py +0 -0
  223. {re_common-10.0.18 → re_common-10.0.21}/re_common/vip/title/transform/TransformCstadTitleToZt.py +0 -0
  224. {re_common-10.0.18 → re_common-10.0.21}/re_common/vip/title/transform/TransformJournalTitleToZt.py +0 -0
  225. {re_common-10.0.18 → re_common-10.0.21}/re_common/vip/title/transform/TransformPatentTitleToZt.py +0 -0
  226. {re_common-10.0.18 → re_common-10.0.21}/re_common/vip/title/transform/TransformRegulationTitleToZt.py +0 -0
  227. {re_common-10.0.18 → re_common-10.0.21}/re_common/vip/title/transform/TransformStandardTitleToZt.py +0 -0
  228. {re_common-10.0.18 → re_common-10.0.21}/re_common/vip/title/transform/TransformThesisTitleToZt.py +0 -0
  229. {re_common-10.0.18 → re_common-10.0.21}/re_common/vip/title/transform/__init__.py +0 -0
  230. {re_common-10.0.18 → re_common-10.0.21}/re_common.egg-info/dependency_links.txt +0 -0
  231. {re_common-10.0.18 → re_common-10.0.21}/re_common.egg-info/top_level.txt +0 -0
  232. {re_common-10.0.18 → re_common-10.0.21}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.1
2
2
  Name: re_common
3
- Version: 10.0.18
3
+ Version: 10.0.21
4
4
  Summary: a library about all python projects
5
5
  Home-page: https://gitee.com/xujiangios/re-common
6
6
  Author: vic
@@ -11,14 +11,6 @@ Classifier: Operating System :: OS Independent
11
11
  Requires-Python: >=3.6
12
12
  Description-Content-Type: text/markdown
13
13
  License-File: LICENSE
14
- Dynamic: author
15
- Dynamic: author-email
16
- Dynamic: classifier
17
- Dynamic: description
18
- Dynamic: description-content-type
19
- Dynamic: home-page
20
- Dynamic: requires-python
21
- Dynamic: summary
22
14
 
23
15
 
24
16
  这是一个基础类,依赖很多的第三方包,是一个用得到的第三方库的封装,可以在此基础上迅速构建项目
@@ -109,12 +109,12 @@ class HDFSDataProcessor:
109
109
  retry_count = 0
110
110
  while retry_count < self.retry_limit:
111
111
  try:
112
- return await process_func(data) # 成功处理后退出
112
+ return await process_func(data) # 成功处理后退出
113
113
  except Exception as e:
114
114
  retry_count += 1
115
115
  print(f"处理数据时发生错误: {e}, 正在重试 {retry_count}/{self.retry_limit}, data: {data}")
116
116
  await asyncio.sleep(2**retry_count)
117
- print(f"处理数据失败, 达到重试上限, data: {data}")
117
+ raise Exception(f"处理数据失败, 达到重试上限, data: {data}")
118
118
 
119
119
  async def process_file(self, hdfs_file_path, process_func, write_dir: str):
120
120
  """处理单个 gz 文件"""
@@ -132,7 +132,7 @@ class HDFSDataProcessor:
132
132
  data = json.loads(line)
133
133
  tasks.append(self.process_data(data, process_func))
134
134
  except json.JSONDecodeError as e:
135
- print(f"解析JSON失败: {e}, 行内容: {line.strip()}")
135
+ raise Exception(f"解析JSON失败: {e}, 行内容: {line.strip()}")
136
136
 
137
137
  # await AsyncTaskPool(self.batch_size).run(tasks) # AsyncTaskPool 适用于一次提交所有任务, 限制并发数执行
138
138
  results.extend(await asyncio.gather(*tasks))
@@ -236,7 +236,7 @@ class HDFSDataProcessor:
236
236
  data = json.loads(line)
237
237
  batch_data.append(data)
238
238
  except json.JSONDecodeError as e:
239
- print(f"解析JSON失败: {e}, 行内容: {line.strip()}")
239
+ raise Exception(f"解析JSON失败: {e}, 行内容: {line.strip()}")
240
240
 
241
241
  # 处理读取到的批次数据
242
242
  if batch_data:
@@ -107,6 +107,40 @@ class HDFSUtils(object):
107
107
  writer.write(content)
108
108
  print(f"文件写入成功: {hdfs_path}")
109
109
 
110
+ def write_file_kwargs(self, hdfs_path, content, **kwargs):
111
+ """
112
+ 向 HDFS 文件写入内容
113
+ 自定义参数实现更大的灵活性
114
+ """
115
+ with self.client.write(hdfs_path, **kwargs) as writer:
116
+ writer.write(content)
117
+ print(f"文件写入成功: {hdfs_path}")
118
+
119
+ def safe_append_hdfs(self, hdfs_path, content):
120
+ """
121
+ 更安全的追加写入方式,显式检查文件是否存在
122
+
123
+ :param content: 要写入的内容
124
+ :param hdfs_path: HDFS文件路径
125
+ """
126
+ try:
127
+ # 检查文件是否存在
128
+ file_exists = self.client.status(hdfs_path, strict=False) is not None
129
+
130
+ if not file_exists:
131
+ print(f"文件 {hdfs_path} 不存在,将创建新文件")
132
+ # 第一次写入不使用append模式
133
+ with self.client.write(hdfs_path, encoding='utf-8') as writer:
134
+ writer.write(content)
135
+ else:
136
+ # 追加模式写入
137
+ with self.client.write(hdfs_path, encoding='utf-8', append=True) as writer:
138
+ writer.write(content)
139
+
140
+ except Exception as e:
141
+ print(f"文件操作失败: {str(e)}")
142
+ raise
143
+
110
144
  def file_exists(self, hdfs_path):
111
145
  """
112
146
  检查 HDFS 文件或目录是否存在。
@@ -0,0 +1,77 @@
1
+ from datetime import datetime, timezone, timedelta
2
+ from typing import Optional
3
+
4
+
5
+ class BaseTime(object):
6
+ @staticmethod
7
+ def get_utc_now() -> datetime:
8
+ """获取当前UTC时间"""
9
+ return datetime.now(timezone.utc)
10
+
11
+ @staticmethod
12
+ def to_beijing_time(dt: datetime) -> datetime:
13
+ """将datetime对象转换为北京时间(UTC+8)"""
14
+ return dt.astimezone(timezone(timedelta(hours=8)))
15
+
16
+ @staticmethod
17
+ def get_current_beijing_time() -> datetime:
18
+ """获取当前北京时间"""
19
+ return BaseTime.to_beijing_time(BaseTime.get_utc_now())
20
+
21
+ @staticmethod
22
+ def get_beijing_time_str(format: str = "%Y-%m-%d %H:%M:%S") -> str:
23
+ """
24
+ 获取当前北京时间的字符串表示
25
+ :param format: 时间字符串的格式 格式为'YYYY-MM-DD HH:MM:SS'
26
+ """
27
+ beijing_time = BaseTime.get_current_beijing_time()
28
+ return beijing_time.strftime(format)
29
+
30
+ @staticmethod
31
+ def get_current_month_str() -> str:
32
+ """获取当前月份的字符串表示,格式为'YYYYMM'"""
33
+ beijing_time = BaseTime.get_current_beijing_time()
34
+ return beijing_time.strftime("%Y%m")
35
+
36
+ @staticmethod
37
+ def parse_beijing_time(time_str: str, format: str = "%Y-%m-%d %H:%M:%S") -> datetime:
38
+ """
39
+ 解析时间字符串为北京时间的datetime对象
40
+
41
+ :param time_str: 时间字符串
42
+ :param format: 时间字符串的格式
43
+ :return: 带有时区信息的datetime对象(UTC+8)
44
+ """
45
+ dt = datetime.strptime(time_str, format)
46
+ return dt.replace(tzinfo=timezone(timedelta(hours=8)))
47
+
48
+ @staticmethod
49
+ def get_time_difference(time_str: str) -> timedelta:
50
+ """
51
+ 计算当前时间与给定时间字符串的时间差
52
+
53
+ :param time_str: 时间字符串,格式为"YYYY-MM-DD HH:MM:SS"
54
+ :return: timedelta对象,表示时间差
55
+ """
56
+ current_time = BaseTime.get_current_beijing_time()
57
+ target_time = BaseTime.parse_beijing_time(time_str)
58
+ difference = current_time - target_time
59
+ # print(f"时间差: {difference}")
60
+ # print(f"总秒数: {difference.total_seconds()}秒")
61
+ # print(f"天数: {difference.days}天")
62
+ # print(f"小时数: {difference.total_seconds() / 3600:.2f}小时")
63
+ # print(f"分钟数: {difference.total_seconds() / 60:.2f}分钟")
64
+
65
+ return difference
66
+
67
+ @staticmethod
68
+ def is_hour_changed(last_time_str: str) -> bool:
69
+ """
70
+ 检查最后一次记录时间与当前时间是否跨越了小时边界
71
+
72
+ :param last_time_str: 最后一次记录的时间字符串,格式为"YYYY-MM-DD HH:MM:SS"
73
+ :return: True表示跨越了小时边界,False表示仍在同一小时内
74
+ """
75
+ current_time = BaseTime.get_current_beijing_time()
76
+ last_time = BaseTime.parse_beijing_time(last_time_str)
77
+ return current_time.hour != last_time.hour
@@ -1,6 +1,9 @@
1
1
  import base64
2
+ import functools
2
3
  import json
3
4
 
5
+ json_dumps = functools.partial(json.dumps, ensure_ascii=False)
6
+
4
7
 
5
8
  class BytesEncoder(json.JSONEncoder):
6
9
  def default(self, obj):
@@ -8,4 +11,6 @@ class BytesEncoder(json.JSONEncoder):
8
11
  return base64.b64encode(obj).decode('utf-8')
9
12
  return super().default(obj)
10
13
 
11
- # json.dumps(x, ensure_ascii=False, cls=BytesEncoder)
14
+
15
+ def base64_to_bytes(base64_str, encoding="utf-8") -> bytes:
16
+ return base64.b64decode(base64_str.encode(encoding))
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.1
2
2
  Name: re_common
3
- Version: 10.0.18
3
+ Version: 10.0.21
4
4
  Summary: a library about all python projects
5
5
  Home-page: https://gitee.com/xujiangios/re-common
6
6
  Author: vic
@@ -11,14 +11,6 @@ Classifier: Operating System :: OS Independent
11
11
  Requires-Python: >=3.6
12
12
  Description-Content-Type: text/markdown
13
13
  License-File: LICENSE
14
- Dynamic: author
15
- Dynamic: author-email
16
- Dynamic: classifier
17
- Dynamic: description
18
- Dynamic: description-content-type
19
- Dynamic: home-page
20
- Dynamic: requires-python
21
- Dynamic: summary
22
14
 
23
15
 
24
16
  这是一个基础类,依赖很多的第三方包,是一个用得到的第三方库的封装,可以在此基础上迅速构建项目
@@ -193,6 +193,7 @@ re_common/v2/baselibrary/utils/base_string_similarity.py
193
193
  re_common/v2/baselibrary/utils/basedict.py
194
194
  re_common/v2/baselibrary/utils/basehdfs.py
195
195
  re_common/v2/baselibrary/utils/basepika.py
196
+ re_common/v2/baselibrary/utils/basetime.py
196
197
  re_common/v2/baselibrary/utils/db.py
197
198
  re_common/v2/baselibrary/utils/json_cls.py
198
199
  re_common/v2/baselibrary/utils/mq.py
@@ -34,7 +34,7 @@ long_description = """
34
34
  """
35
35
  setuptools.setup(
36
36
  name="re_common",
37
- version="10.0.18",
37
+ version="10.0.21",
38
38
  author="vic",
39
39
  author_email="xujiang5@163.com",
40
40
  description="a library about all python projects",
File without changes
File without changes
File without changes
File without changes