vools 0.7.2__tar.gz → 0.7.4__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 (237) hide show
  1. {vools-0.7.2/vools.egg-info → vools-0.7.4}/PKG-INFO +11 -5
  2. {vools-0.7.2 → vools-0.7.4}/pyproject.toml +10 -52
  3. {vools-0.7.2 → vools-0.7.4}/vools/__init__.py +21 -17
  4. vools-0.7.4/vools/config.py +135 -0
  5. {vools-0.7.2 → vools-0.7.4}/vools/data/itor_nim.py +15 -1
  6. {vools-0.7.2 → vools-0.7.4}/vools/data/table.py +12 -2
  7. {vools-0.7.2 → vools-0.7.4}/vools/decorators/curry_core.py +19 -0
  8. {vools-0.7.2 → vools-0.7.4}/vools/security/hash.py +23 -10
  9. {vools-0.7.2 → vools-0.7.4}/vools/security/safe_eval.py +22 -8
  10. {vools-0.7.2 → vools-0.7.4/vools.egg-info}/PKG-INFO +11 -5
  11. {vools-0.7.2 → vools-0.7.4}/vools.egg-info/SOURCES.txt +2 -62
  12. {vools-0.7.2 → vools-0.7.4}/vools.egg-info/requires.txt +12 -4
  13. vools-0.7.2/vools/dll32/__init__.py +0 -86
  14. vools-0.7.2/vools/dll32/_core/__init__.py +0 -14
  15. vools-0.7.2/vools/dll32/_core/_pipe_comm.py +0 -18
  16. vools-0.7.2/vools/dll32/_core/_spawn32.py +0 -342
  17. vools-0.7.2/vools/dll32/_dlls/DirectCOM.dll +0 -0
  18. vools-0.7.2/vools/dll32/_dlls/RC6.dll +0 -0
  19. vools-0.7.2/vools/dll32/_dlls/RC6Widgets.dll +0 -0
  20. vools-0.7.2/vools/dll32/_dlls/VB6MQTT.dll +0 -0
  21. vools-0.7.2/vools/dll32/_dlls/VB6OpenSSL.dll +0 -0
  22. vools-0.7.2/vools/dll32/_dlls/VB6Plus.dll +0 -0
  23. vools-0.7.2/vools/dll32/_dlls/WebView2Loader.dll +0 -0
  24. vools-0.7.2/vools/dll32/_dlls/cairo_sqlite.dll +0 -0
  25. vools-0.7.2/vools/dll32/_dlls/vbRichClient5.dll +0 -0
  26. vools-0.7.2/vools/dll32/_lib/__init__.py +0 -9
  27. vools-0.7.2/vools/dll32/_lib/clr/__init__.py +0 -8
  28. vools-0.7.2/vools/dll32/_lib/clr/_base.py +0 -89
  29. vools-0.7.2/vools/dll32/_lib/com/__init__.py +0 -9
  30. vools-0.7.2/vools/dll32/_lib/com/_base.py +0 -103
  31. vools-0.7.2/vools/dll32/_lib/com/directcom.py +0 -115
  32. vools-0.7.2/vools/dll32/_lib/com/rc6.py +0 -228
  33. vools-0.7.2/vools/dll32/_lib/com/rc6plus.py +0 -344
  34. vools-0.7.2/vools/dll32/_python32/__init__.py +0 -1
  35. vools-0.7.2/vools/dll32/_python32/python.exe +0 -0
  36. vools-0.7.2/vools/dll32/_python32/python3.dll +0 -0
  37. vools-0.7.2/vools/dll32/_python32/python32_launcher.py +0 -63
  38. vools-0.7.2/vools/dll32/_python32/python36._pth +0 -5
  39. vools-0.7.2/vools/dll32/_python32/python36.dll +0 -0
  40. vools-0.7.2/vools/dll32/_python32/python36.zip +0 -0
  41. vools-0.7.2/vools/dll32/_python32/pythonw.exe +0 -0
  42. vools-0.7.2/vools/dll32/_python32/sqlite3.dll +0 -0
  43. vools-0.7.2/vools/dll32/_python32/vcruntime140.dll +0 -0
  44. vools-0.7.2/vools/dll32/_signatures/__init__.py +0 -13
  45. vools-0.7.2/vools/dll32/_signatures/_registry.py +0 -50
  46. vools-0.7.2/vools/dll32/_signatures/mqtt.py +0 -46
  47. vools-0.7.2/vools/dll32/_signatures/openssl.py +0 -35
  48. vools-0.7.2/vools/dll32/_signatures/vb6plus.py +0 -299
  49. vools-0.7.2/vools/dll32/dll.py +0 -77
  50. vools-0.7.2/vools/dll32/examples/basic_usage.py +0 -74
  51. vools-0.7.2/vools/dll32/get-pip.py +0 -27079
  52. vools-0.7.2/vools/dll32/mqtt.py +0 -83
  53. vools-0.7.2/vools/dll32/openssl.py +0 -54
  54. vools-0.7.2/vools/dll32/tests/__init__.py +0 -1
  55. vools-0.7.2/vools/dll32/tests/test_dll32.py +0 -59
  56. vools-0.7.2/vools/dll32/vb6plus.py +0 -495
  57. vools-0.7.2/vools/xl/__init__.py +0 -101
  58. vools-0.7.2/vools/xl/_core/__init__.py +0 -9
  59. vools-0.7.2/vools/xl/_core/api.py +0 -836
  60. vools-0.7.2/vools/xl/_core/loader.py +0 -75
  61. vools-0.7.2/vools/xl/_dlls/__init__.py +0 -52
  62. vools-0.7.2/vools/xl/_dlls/libxl.dll +0 -0
  63. vools-0.7.2/vools/xl/_highlevel/__init__.py +0 -57
  64. vools-0.7.2/vools/xl/_highlevel/engines.py +0 -284
  65. vools-0.7.2/vools/xl/_highlevel/pandas_io.py +0 -150
  66. vools-0.7.2/vools/xl/_highlevel/utils.py +0 -344
  67. vools-0.7.2/vools/xl/_objects/__init__.py +0 -12
  68. vools-0.7.2/vools/xl/_objects/book.py +0 -483
  69. vools-0.7.2/vools/xl/_objects/font.py +0 -99
  70. vools-0.7.2/vools/xl/_objects/format.py +0 -262
  71. vools-0.7.2/vools/xl/_objects/sheet.py +0 -840
  72. vools-0.7.2/vools/xl/_utils/__init__.py +0 -200
  73. vools-0.7.2/vools/xl/_utils/helpers.py +0 -107
  74. {vools-0.7.2 → vools-0.7.4}/LICENSE +0 -0
  75. {vools-0.7.2 → vools-0.7.4}/NOTICE +0 -0
  76. {vools-0.7.2 → vools-0.7.4}/README.md +0 -0
  77. {vools-0.7.2 → vools-0.7.4}/setup.cfg +0 -0
  78. {vools-0.7.2 → vools-0.7.4}/tests/test_functions.py +0 -0
  79. {vools-0.7.2 → vools-0.7.4}/vools/README.md +0 -0
  80. {vools-0.7.2 → vools-0.7.4}/vools/__main__.py +0 -0
  81. {vools-0.7.2 → vools-0.7.4}/vools/api/__init__.py +0 -0
  82. {vools-0.7.2 → vools-0.7.4}/vools/api/curry_cmd.py +0 -0
  83. {vools-0.7.2 → vools-0.7.4}/vools/api/memoize_cmd.py +0 -0
  84. {vools-0.7.2 → vools-0.7.4}/vools/api/ops_cmd.py +0 -0
  85. {vools-0.7.2 → vools-0.7.4}/vools/api/seq_cmd.py +0 -0
  86. {vools-0.7.2 → vools-0.7.4}/vools/api/typer_app.py +0 -0
  87. {vools-0.7.2 → vools-0.7.4}/vools/cache/__init__.py +0 -0
  88. {vools-0.7.2 → vools-0.7.4}/vools/cache/memorize.py +0 -0
  89. {vools-0.7.2 → vools-0.7.4}/vools/cache/once.py +0 -0
  90. {vools-0.7.2 → vools-0.7.4}/vools/cache/persist.py +0 -0
  91. {vools-0.7.2 → vools-0.7.4}/vools/cache/sigcache.py +0 -0
  92. {vools-0.7.2 → vools-0.7.4}/vools/concurrent/__init__.py +0 -0
  93. {vools-0.7.2 → vools-0.7.4}/vools/concurrent/asyncio_mod.py +0 -0
  94. {vools-0.7.2 → vools-0.7.4}/vools/concurrent/bridges.py +0 -0
  95. {vools-0.7.2 → vools-0.7.4}/vools/concurrent/contextvars_mod.py +0 -0
  96. {vools-0.7.2 → vools-0.7.4}/vools/concurrent/delegates.py +0 -0
  97. {vools-0.7.2 → vools-0.7.4}/vools/concurrent/futures.py +0 -0
  98. {vools-0.7.2 → vools-0.7.4}/vools/concurrent/multiprocessing_mod.py +0 -0
  99. {vools-0.7.2 → vools-0.7.4}/vools/concurrent/queues.py +0 -0
  100. {vools-0.7.2 → vools-0.7.4}/vools/concurrent/sched_mod.py +0 -0
  101. {vools-0.7.2 → vools-0.7.4}/vools/concurrent/spawns.py +0 -0
  102. {vools-0.7.2 → vools-0.7.4}/vools/concurrent/subprocess_mod.py +0 -0
  103. {vools-0.7.2 → vools-0.7.4}/vools/concurrent/threading_mod.py +0 -0
  104. {vools-0.7.2 → vools-0.7.4}/vools/core/__init__.py +0 -0
  105. {vools-0.7.2 → vools-0.7.4}/vools/core/asyncio_compat.py +0 -0
  106. {vools-0.7.2 → vools-0.7.4}/vools/core/base.py +0 -0
  107. {vools-0.7.2 → vools-0.7.4}/vools/core/config.py +0 -0
  108. {vools-0.7.2 → vools-0.7.4}/vools/core/contextvars_compat.py +0 -0
  109. {vools-0.7.2 → vools-0.7.4}/vools/core/dataclass_compat.py +0 -0
  110. {vools-0.7.2 → vools-0.7.4}/vools/core/datetime_compat.py +0 -0
  111. {vools-0.7.2 → vools-0.7.4}/vools/core/exceptions.py +0 -0
  112. {vools-0.7.2 → vools-0.7.4}/vools/core/inspect_compat.py +0 -0
  113. {vools-0.7.2 → vools-0.7.4}/vools/crypto/__init__.py +0 -0
  114. {vools-0.7.2 → vools-0.7.4}/vools/crypto/core.py +0 -0
  115. {vools-0.7.2 → vools-0.7.4}/vools/curried/__init__.py +0 -0
  116. {vools-0.7.2 → vools-0.7.4}/vools/curried/collection.py +0 -0
  117. {vools-0.7.2 → vools-0.7.4}/vools/curried/composition.py +0 -0
  118. {vools-0.7.2 → vools-0.7.4}/vools/curried/core.py +0 -0
  119. {vools-0.7.2 → vools-0.7.4}/vools/curried/iteration.py +0 -0
  120. {vools-0.7.2 → vools-0.7.4}/vools/curried/math.py +0 -0
  121. {vools-0.7.2 → vools-0.7.4}/vools/curried/predicate.py +0 -0
  122. {vools-0.7.2 → vools-0.7.4}/vools/curried/string.py +0 -0
  123. {vools-0.7.2 → vools-0.7.4}/vools/data/__init__.py +0 -0
  124. {vools-0.7.2 → vools-0.7.4}/vools/data/itor.py +0 -0
  125. {vools-0.7.2 → vools-0.7.4}/vools/data/qax.py +0 -0
  126. {vools-0.7.2 → vools-0.7.4}/vools/data/seq.py +0 -0
  127. {vools-0.7.2 → vools-0.7.4}/vools/data/validator.py +0 -0
  128. {vools-0.7.2 → vools-0.7.4}/vools/data/vlist.py +0 -0
  129. {vools-0.7.2 → vools-0.7.4}/vools/data/vtext.py +0 -0
  130. {vools-0.7.2 → vools-0.7.4}/vools/datetime/__init__.py +0 -0
  131. {vools-0.7.2 → vools-0.7.4}/vools/datetime/dates_format.py +0 -0
  132. {vools-0.7.2 → vools-0.7.4}/vools/datetime/utils.py +0 -0
  133. {vools-0.7.2 → vools-0.7.4}/vools/datetime/vdate_class.py +0 -0
  134. {vools-0.7.2 → vools-0.7.4}/vools/decorators/__init__.py +0 -0
  135. {vools-0.7.2 → vools-0.7.4}/vools/decorators/bridge_decorator.py +0 -0
  136. {vools-0.7.2 → vools-0.7.4}/vools/decorators/cache.py +0 -0
  137. {vools-0.7.2 → vools-0.7.4}/vools/decorators/control.py +0 -0
  138. {vools-0.7.2 → vools-0.7.4}/vools/decorators/curried.py +0 -0
  139. {vools-0.7.2 → vools-0.7.4}/vools/decorators/curry_decorator.py +0 -0
  140. {vools-0.7.2 → vools-0.7.4}/vools/decorators/curry_delay.py +0 -0
  141. {vools-0.7.2 → vools-0.7.4}/vools/decorators/flex_pos.py +0 -0
  142. {vools-0.7.2 → vools-0.7.4}/vools/decorators/lazy.py +0 -0
  143. {vools-0.7.2 → vools-0.7.4}/vools/decorators/overcurry.py +0 -0
  144. {vools-0.7.2 → vools-0.7.4}/vools/decorators/overload.py +0 -0
  145. {vools-0.7.2 → vools-0.7.4}/vools/decorators/overloads.py +0 -0
  146. {vools-0.7.2 → vools-0.7.4}/vools/decorators/rself.py +0 -0
  147. {vools-0.7.2 → vools-0.7.4}/vools/decorators/selector.py +0 -0
  148. {vools-0.7.2 → vools-0.7.4}/vools/decorators/shotcut.py +0 -0
  149. {vools-0.7.2 → vools-0.7.4}/vools/decorators/trd.py +0 -0
  150. {vools-0.7.2 → vools-0.7.4}/vools/encoding/__init__.py +0 -0
  151. {vools-0.7.2 → vools-0.7.4}/vools/encoding/core.py +0 -0
  152. {vools-0.7.2 → vools-0.7.4}/vools/functional/__init__.py +0 -0
  153. {vools-0.7.2 → vools-0.7.4}/vools/functional/arrow_func.py +0 -0
  154. {vools-0.7.2 → vools-0.7.4}/vools/functional/box.py +0 -0
  155. {vools-0.7.2 → vools-0.7.4}/vools/functional/funcs.py +0 -0
  156. {vools-0.7.2 → vools-0.7.4}/vools/functional/iif.py +0 -0
  157. {vools-0.7.2 → vools-0.7.4}/vools/functional/pipe_ops.py +0 -0
  158. {vools-0.7.2 → vools-0.7.4}/vools/functional/placeholder.py +0 -0
  159. {vools-0.7.2 → vools-0.7.4}/vools/functional/placeholder_impl.py +0 -0
  160. {vools-0.7.2 → vools-0.7.4}/vools/functional/result.py +0 -0
  161. {vools-0.7.2 → vools-0.7.4}/vools/oop/__init__.py +0 -0
  162. {vools-0.7.2 → vools-0.7.4}/vools/oop/calltype.py +0 -0
  163. {vools-0.7.2 → vools-0.7.4}/vools/oop/extend.py +0 -0
  164. {vools-0.7.2 → vools-0.7.4}/vools/oop/fusion.py +0 -0
  165. {vools-0.7.2 → vools-0.7.4}/vools/oop/method_extend.py +0 -0
  166. {vools-0.7.2 → vools-0.7.4}/vools/oop/mixer.py +0 -0
  167. {vools-0.7.2 → vools-0.7.4}/vools/oop/selector.py +0 -0
  168. {vools-0.7.2 → vools-0.7.4}/vools/security/__init__.py +0 -0
  169. {vools-0.7.2 → vools-0.7.4}/vools/security/_constants.py +0 -0
  170. {vools-0.7.2 → vools-0.7.4}/vools/security/expression_handler.py +0 -0
  171. {vools-0.7.2 → vools-0.7.4}/vools/serialize/__init__.py +0 -0
  172. {vools-0.7.2 → vools-0.7.4}/vools/serialize/backends/__init__.py +0 -0
  173. {vools-0.7.2 → vools-0.7.4}/vools/serialize/backends/base.py +0 -0
  174. {vools-0.7.2 → vools-0.7.4}/vools/serialize/backends/json_backend.py +0 -0
  175. {vools-0.7.2 → vools-0.7.4}/vools/serialize/backends/msgpack_backend.py +0 -0
  176. {vools-0.7.2 → vools-0.7.4}/vools/serialize/backends/pickle_backend.py +0 -0
  177. {vools-0.7.2 → vools-0.7.4}/vools/serialize/backends/vb_json_backend.py +0 -0
  178. {vools-0.7.2 → vools-0.7.4}/vools/serialize/callable/__init__.py +0 -0
  179. {vools-0.7.2 → vools-0.7.4}/vools/serialize/callable/decorator_handler.py +0 -0
  180. {vools-0.7.2 → vools-0.7.4}/vools/serialize/callable/functional_handler.py +0 -0
  181. {vools-0.7.2 → vools-0.7.4}/vools/serialize/codec.py +0 -0
  182. {vools-0.7.2 → vools-0.7.4}/vools/serialize/config.py +0 -0
  183. {vools-0.7.2 → vools-0.7.4}/vools/serialize/context.py +0 -0
  184. {vools-0.7.2 → vools-0.7.4}/vools/serialize/core.py +0 -0
  185. {vools-0.7.2 → vools-0.7.4}/vools/serialize/decorators.py +0 -0
  186. {vools-0.7.2 → vools-0.7.4}/vools/serialize/sentinel.py +0 -0
  187. {vools-0.7.2 → vools-0.7.4}/vools/serialize/type_registry.py +0 -0
  188. {vools-0.7.2 → vools-0.7.4}/vools/sql/__init__.py +0 -0
  189. {vools-0.7.2 → vools-0.7.4}/vools/sql/core/__init__.py +0 -0
  190. {vools-0.7.2 → vools-0.7.4}/vools/sql/core/builder.py +0 -0
  191. {vools-0.7.2 → vools-0.7.4}/vools/sql/core/config.py +0 -0
  192. {vools-0.7.2 → vools-0.7.4}/vools/sql/core/connection.py +0 -0
  193. {vools-0.7.2 → vools-0.7.4}/vools/sql/core/decorators.py +0 -0
  194. {vools-0.7.2 → vools-0.7.4}/vools/sql/core/dialect.py +0 -0
  195. {vools-0.7.2 → vools-0.7.4}/vools/sql/core/result.py +0 -0
  196. {vools-0.7.2 → vools-0.7.4}/vools/sql/core/types.py +0 -0
  197. {vools-0.7.2 → vools-0.7.4}/vools/sql/manager.py +0 -0
  198. {vools-0.7.2 → vools-0.7.4}/vools/sql/postgres/__init__.py +0 -0
  199. {vools-0.7.2 → vools-0.7.4}/vools/sql/postgres/connection.py +0 -0
  200. {vools-0.7.2 → vools-0.7.4}/vools/sql/postgres/dialect.py +0 -0
  201. {vools-0.7.2 → vools-0.7.4}/vools/sql/spark/__init__.py +0 -0
  202. {vools-0.7.2 → vools-0.7.4}/vools/sql/spark/connection.py +0 -0
  203. {vools-0.7.2 → vools-0.7.4}/vools/sql/spark/dialect.py +0 -0
  204. {vools-0.7.2 → vools-0.7.4}/vools/sql/spark/scala_bridge.py +0 -0
  205. {vools-0.7.2 → vools-0.7.4}/vools/sql/sqlite/__init__.py +0 -0
  206. {vools-0.7.2 → vools-0.7.4}/vools/sql/sqlite/connection.py +0 -0
  207. {vools-0.7.2 → vools-0.7.4}/vools/sql/sqlite/dialect.py +0 -0
  208. {vools-0.7.2 → vools-0.7.4}/vools/sys/__init__.py +0 -0
  209. {vools-0.7.2 → vools-0.7.4}/vools/sys/cmd.py +0 -0
  210. {vools-0.7.2 → vools-0.7.4}/vools/sys/compile_cmd.py +0 -0
  211. {vools-0.7.2 → vools-0.7.4}/vools/sys/dll.py +0 -0
  212. {vools-0.7.2 → vools-0.7.4}/vools/sys/dll_cmd.py +0 -0
  213. {vools-0.7.2 → vools-0.7.4}/vools/sys/env.py +0 -0
  214. {vools-0.7.2 → vools-0.7.4}/vools/sys/env_cmd.py +0 -0
  215. {vools-0.7.2 → vools-0.7.4}/vools/sys/exe.py +0 -0
  216. {vools-0.7.2 → vools-0.7.4}/vools/sys/fire_app.py +0 -0
  217. {vools-0.7.2 → vools-0.7.4}/vools/sys/run_cmd.py +0 -0
  218. {vools-0.7.2 → vools-0.7.4}/vools/task/__init__.py +0 -0
  219. {vools-0.7.2 → vools-0.7.4}/vools/task/core/__init__.py +0 -0
  220. {vools-0.7.2 → vools-0.7.4}/vools/task/core/models.py +0 -0
  221. {vools-0.7.2 → vools-0.7.4}/vools/task/core/queue.py +0 -0
  222. {vools-0.7.2 → vools-0.7.4}/vools/task/core/storage.py +0 -0
  223. {vools-0.7.2 → vools-0.7.4}/vools/task/core/worker.py +0 -0
  224. {vools-0.7.2 → vools-0.7.4}/vools/task/decorators/__init__.py +0 -0
  225. {vools-0.7.2 → vools-0.7.4}/vools/task/decorators/task_decorator.py +0 -0
  226. {vools-0.7.2 → vools-0.7.4}/vools/task/rules/__init__.py +0 -0
  227. {vools-0.7.2 → vools-0.7.4}/vools/task/rules/dag.py +0 -0
  228. {vools-0.7.2 → vools-0.7.4}/vools/task/rules/engine.py +0 -0
  229. {vools-0.7.2 → vools-0.7.4}/vools/task/rules/rule.py +0 -0
  230. {vools-0.7.2 → vools-0.7.4}/vools/task/utils/__init__.py +0 -0
  231. {vools-0.7.2 → vools-0.7.4}/vools/utils/__init__.py +0 -0
  232. {vools-0.7.2 → vools-0.7.4}/vools/utils/hoder.py +0 -0
  233. {vools-0.7.2 → vools-0.7.4}/vools/utils/stuff.py +0 -0
  234. {vools-0.7.2 → vools-0.7.4}/vools/utils/tools.py +0 -0
  235. {vools-0.7.2 → vools-0.7.4}/vools.egg-info/dependency_links.txt +0 -0
  236. {vools-0.7.2 → vools-0.7.4}/vools.egg-info/entry_points.txt +0 -0
  237. {vools-0.7.2 → vools-0.7.4}/vools.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vools
3
- Version: 0.7.2
3
+ Version: 0.7.4
4
4
  Summary: Python 函数式编程工具集
5
5
  Author-email: Victor <victortop921129@gmail.com>
6
6
  License: Apache License
@@ -239,12 +239,18 @@ Provides-Extra: serialize
239
239
  Requires-Dist: msgpack>=1.0; extra == "serialize"
240
240
  Requires-Dist: orjson>=3.9; extra == "serialize"
241
241
  Provides-Extra: rx
242
- Requires-Dist: vools-rx==0.7.2; extra == "rx"
242
+ Requires-Dist: vools-rx==0.7.4; extra == "rx"
243
243
  Provides-Extra: bridges
244
- Requires-Dist: vools-bridges==0.7.2; extra == "bridges"
244
+ Requires-Dist: vools-bridges==0.7.4; extra == "bridges"
245
+ Provides-Extra: dll32
246
+ Requires-Dist: vools-dll32==0.7.4; extra == "dll32"
247
+ Provides-Extra: xl
248
+ Requires-Dist: vools-xl==0.7.4; extra == "xl"
245
249
  Provides-Extra: all
246
- Requires-Dist: vools-rx==0.7.2; extra == "all"
247
- Requires-Dist: vools-bridges==0.7.2; extra == "all"
250
+ Requires-Dist: vools-rx==0.7.4; extra == "all"
251
+ Requires-Dist: vools-bridges==0.7.4; extra == "all"
252
+ Requires-Dist: vools-dll32==0.7.4; extra == "all"
253
+ Requires-Dist: vools-xl==0.7.4; extra == "all"
248
254
  Provides-Extra: cli
249
255
  Requires-Dist: typer>=0.12.0; extra == "cli"
250
256
  Requires-Dist: typing-extensions>=4.0.0; extra == "cli"
@@ -46,9 +46,11 @@ serialize = [
46
46
  "msgpack>=1.0",
47
47
  "orjson>=3.9",
48
48
  ]
49
- rx = ["vools-rx==0.7.2"]
50
- bridges = ["vools-bridges==0.7.2"]
51
- all = ["vools-rx==0.7.2", "vools-bridges==0.7.2"]
49
+ rx = ["vools-rx==0.7.4"]
50
+ bridges = ["vools-bridges==0.7.4"]
51
+ dll32 = ["vools-dll32==0.7.4"]
52
+ xl = ["vools-xl==0.7.4"]
53
+ all = ["vools-rx==0.7.4", "vools-bridges==0.7.4", "vools-dll32==0.7.4", "vools-xl==0.7.4"]
52
54
  cli = [
53
55
  "typer>=0.12.0",
54
56
  "typing-extensions>=4.0.0",
@@ -75,10 +77,8 @@ include = ["vools*"]
75
77
  exclude = [
76
78
  "vools.__pycache__",
77
79
  "vools.*.__pycache__",
78
- "vools.dll32._python32",
79
- "vools.dll32._python32.*",
80
- "vools.dll32._dlls",
81
- "vools.dll32._dlls.*",
80
+ "vools.dll32*",
81
+ "vools.xl*",
82
82
  "vools.bridge*",
83
83
  "vools.reactive*",
84
84
  ]
@@ -94,50 +94,8 @@ version = { attr = "vools.__version__" }
94
94
  "lib/*.so",
95
95
  "lib/windows/*.dll",
96
96
  "lib/linux/*.so",
97
- "xl/_dlls/*.dll",
98
- ]
99
- "vools.dll32" = [
100
- "_dlls/*.dll",
101
- "_dlls/*.tlb",
102
- "_dlls/*.ocx",
103
- "_python32/python.exe",
104
- "_python32/pythonw.exe",
105
- "_python32/python3.dll",
106
- "_python32/python3*.dll",
107
- "_python32/python3*.pyd",
108
- "_python32/python3*.zip",
109
- "_python32/python3*._pth",
110
- "_python32/vcruntime140.dll",
111
- "_python32/sqlite3.dll",
112
- "_python32/pyexpat.pyd",
113
- "_python32/select.pyd",
114
- "_python32/unicodedata.pyd",
115
- "_python32/winsound.pyd",
116
- "_python32/_asyncio.pyd",
117
- "_python32/_bz2.pyd",
118
- "_python32/_ctypes.pyd",
119
- "_python32/_decimal.pyd",
120
- "_python32/_distutils_findvs.pyd",
121
- "_python32/_elementtree.pyd",
122
- "_python32/_hashlib.pyd",
123
- "_python32/_lzma.pyd",
124
- "_python32/_msi.pyd",
125
- "_python32/_multiprocessing.pyd",
126
- "_python32/_overlapped.pyd",
127
- "_python32/_socket.pyd",
128
- "_python32/_sqlite3.pyd",
129
- "_python32/_ssl.pyd",
130
- "_python32/__init__.py",
131
- "_python32/python32_launcher.py",
132
- ]
133
-
134
- [tool.setuptools.exclude-package-data]
135
- "vools.dll32" = [
136
- "_python32/Lib/**/*",
137
- "_python32/Lib/*",
138
- "_python32/**/__pycache__/*",
139
- "_python32/**/*.pyc",
140
- "_python32/**/*.pyo",
97
+ "data/*.dll",
98
+ "data/*.so",
141
99
  ]
142
100
 
143
101
  # ============ pytest ============
@@ -147,7 +105,7 @@ testpaths = ["tests"]
147
105
  # 默认不运行(需要外部资源/平台特定):dll32, xl, monitoring, benchmarks, archive, other
148
106
  # 如需运行全部测试,使用: pytest --override-ini="addopts=--tb=short -q"
149
107
  # 如需运行特定子项目测试,使用: pytest bridges/tests/ 或 pytest rx/tests/
150
- addopts = "--tb=short -q --ignore=tests/dll32 --ignore=tests/xl --ignore=tests/monitoring --ignore=tests/benchmarks --ignore=tests/archive --ignore=tests/other --ignore=tests/__rust__ --ignore=tests/__persist__ --ignore=tests/__pycache__"
108
+ addopts = "--tb=short -q --ignore=tests/monitoring --ignore=tests/benchmarks --ignore=tests/archive --ignore=tests/other --ignore=tests/__rust__ --ignore=tests/__persist__ --ignore=tests/__pycache__"
151
109
  markers = [
152
110
  "integration: 标记集成测试(依赖外部资源,如剪贴板、文件系统、键鼠)",
153
111
  "windows_only: 仅在 Windows 上可运行的测试",
@@ -32,7 +32,7 @@ if not hasattr(subprocess.Popen.__init__, '_vools_patched'):
32
32
  import importlib
33
33
  from typing import Any
34
34
 
35
- __version__ = "0.7.2"
35
+ __version__ = "0.7.4"
36
36
  __author__ = "Victor"
37
37
  __license__ = "Apache 2.0"
38
38
 
@@ -142,7 +142,6 @@ _lazy_modules = {
142
142
  'trd': '.decorators',
143
143
  'proc': '.decorators',
144
144
  'extend': '.decorators',
145
- 'smart_partial': '.decorators',
146
145
  'delay_curry': '.decorators',
147
146
 
148
147
  'Pipe': '.functional',
@@ -163,11 +162,9 @@ _lazy_modules = {
163
162
  'pipe': '.utils',
164
163
 
165
164
  'shotcut': '.decorators',
166
- 'shotcutEx': '.decorators',
167
165
  'hoder': '.utils',
168
166
  'Hoder': '.utils',
169
167
  'timeit': '.decorators',
170
- 'asyncify': '.decorators',
171
168
  'safe': '.decorators',
172
169
  'throttle': '.decorators',
173
170
  'debounce': '.decorators',
@@ -178,7 +175,6 @@ _lazy_modules = {
178
175
  'with_timeout': '.decorators',
179
176
  'validate': '.decorators',
180
177
  'rate_limit': '.decorators',
181
- 'log_calls': '.decorators',
182
178
  'cache_with_ttl': '.decorators',
183
179
  'hybrid_method': '.decorators',
184
180
  'classproperty': '.decorators',
@@ -190,10 +186,6 @@ _lazy_modules = {
190
186
  'oop': '.oop',
191
187
  'calltype': '.oop',
192
188
 
193
- 'vicTools': '.vic',
194
- 'vicDate': '.vic',
195
- 'vicText': '.vic',
196
- 'vicList': '.vic',
197
189
 
198
190
  'datetime': '.datetime',
199
191
 
@@ -266,6 +258,8 @@ OOP_AVAILABLE = True
266
258
  DATETIME_AVAILABLE = True
267
259
  BRIDGE_AVAILABLE = False
268
260
  REACTIVE_AVAILABLE = False
261
+ DLL32_AVAILABLE = False
262
+ XL_AVAILABLE = False
269
263
 
270
264
  VIC_AVAILABLE = True
271
265
 
@@ -305,6 +299,24 @@ def __getattr__(name: str) -> Any:
305
299
  except Exception:
306
300
  raise AttributeError("vools.reactive is not installed; use pip install 'vools[rx]' or pip install vools-rx")
307
301
 
302
+ if name == 'dll32':
303
+ global DLL32_AVAILABLE
304
+ try:
305
+ module = importlib.import_module('.dll32', package='vools')
306
+ DLL32_AVAILABLE = True
307
+ return module
308
+ except Exception:
309
+ raise AttributeError("vools.dll32 is not installed; use pip install 'vools[dll32]' or pip install vools-dll32")
310
+
311
+ if name == 'xl':
312
+ global XL_AVAILABLE
313
+ try:
314
+ module = importlib.import_module('.xl', package='vools')
315
+ XL_AVAILABLE = True
316
+ return module
317
+ except Exception:
318
+ raise AttributeError("vools.xl is not installed; use pip install 'vools[xl]' or pip install vools-xl")
319
+
308
320
  if name in _lazy_modules:
309
321
  module_path = _lazy_modules[name]
310
322
  try:
@@ -349,7 +361,6 @@ __all__ = [
349
361
  'trd',
350
362
  'proc',
351
363
  'extend',
352
- 'smart_partial',
353
364
  'delay_curry',
354
365
  'overload',
355
366
  'OverloadManager', 'OverloadMode', 'reset_registry',
@@ -390,11 +401,9 @@ __all__ = [
390
401
  'pipe',
391
402
 
392
403
  'shotcut',
393
- 'shotcutEx',
394
404
  'hoder',
395
405
  'Hoder',
396
406
  'timeit',
397
- 'asyncify',
398
407
  'safe',
399
408
  'throttle',
400
409
  'debounce',
@@ -405,7 +414,6 @@ __all__ = [
405
414
  'with_timeout',
406
415
  'validate',
407
416
  'rate_limit',
408
- 'log_calls',
409
417
  'cache_with_ttl',
410
418
  'hybrid_method',
411
419
  'classproperty',
@@ -418,10 +426,6 @@ __all__ = [
418
426
  'calltype',
419
427
  'OOP_AVAILABLE',
420
428
 
421
- 'vicTools',
422
- 'vicDate',
423
- 'vicText',
424
- 'vicList',
425
429
 
426
430
  'vDate',
427
431
  'get_week',
@@ -0,0 +1,135 @@
1
+ """
2
+ vools 配置模块
3
+
4
+ 提供全局配置管理功能,支持数据库连接、缓存策略、线程池等配置项。
5
+
6
+ 所有配置项都有详细说明,包括:
7
+ - 配置项用途
8
+ - 默认值
9
+ - 应用模块
10
+ - 可选值范围
11
+ """
12
+
13
+ __all__ = ['DATABASE_CONFIG', 'OTHER_CONFIG', 'PATHS', 'ConfigManager', 'config']
14
+
15
+ # ============================================================================
16
+ # 数据库配置
17
+ # ============================================================================
18
+ # 用于数据库相关功能(如 persist 装饰器的持久化存储)
19
+ # 当前主要作为预留配置,实际使用时需要填写真实连接信息
20
+ # ============================================================================
21
+
22
+ DATABASE_CONFIG = {
23
+ 'host': None, # 数据库主机地址,如 'localhost' 或 '127.0.0.1'
24
+ 'port': None, # 数据库端口,如 MySQL 默认 3306,PostgreSQL 默认 5432
25
+ 'user': None, # 数据库用户名
26
+ 'password': None, # 数据库密码
27
+ 'database': None, # 数据库名称
28
+ }
29
+
30
+ # ============================================================================
31
+ # 运行时配置
32
+ # ============================================================================
33
+ # 控制 vools 库的运行时行为,影响多个模块的默认行为
34
+ # ============================================================================
35
+
36
+ OTHER_CONFIG = {
37
+ # 缓存相关
38
+ 'cache_duration': 3, # 缓存持续时间(秒),应用于 memorize 装饰器的默认缓存时长
39
+ 'default_force_when': None, # 默认强制刷新条件,应用于 cache.py 的 persist 装饰器
40
+ 'default_target_folder': None, # 默认目标文件夹,应用于 cache.py 的 persist 装饰器
41
+
42
+ # 并发相关
43
+ 'max_workers': 10, # 最大工作线程数,应用于 TaskQueue 和 WorkerPool 的默认值
44
+
45
+ # 重试相关
46
+ 'retry_times': 3, # 默认重试次数,应用于 retry 装饰器的默认值
47
+
48
+ # 数据处理相关
49
+ 'NONE_is_None': False, # 是否将 NONE 占位符视为 None,应用于 data/seq.py 的 Seq 类
50
+ }
51
+
52
+ # ============================================================================
53
+ # 路径配置
54
+ # ============================================================================
55
+ # 用于文件操作相关功能,指定数据存储和输出的基础路径
56
+ # ============================================================================
57
+
58
+ PATHS = {
59
+ 'base_path': None, # 项目基础路径,所有相对路径的基准目录
60
+ 'data_path': None, # 数据文件存储路径,如 CSV、JSON 文件的读取位置
61
+ 'output_path': None, # 输出文件路径,如生成报告、导出数据的保存位置
62
+ }
63
+
64
+ # ============================================================================
65
+ # 配置管理器类
66
+ # ============================================================================
67
+ # 提供统一的配置访问接口,支持属性式访问
68
+ # ============================================================================
69
+
70
+ class ConfigManager:
71
+ """
72
+ 配置管理器
73
+
74
+ 提供全局配置的统一访问接口,支持通过属性方式访问各配置项。
75
+
76
+ Example:
77
+ from vools.config import config
78
+
79
+ # 访问配置
80
+ print(config.database.host)
81
+ print(config.other.cache_duration)
82
+ print(config.paths.base_path)
83
+
84
+ # 修改配置
85
+ config.other.cache_duration = 5
86
+ config.paths.base_path = '/data'
87
+ """
88
+
89
+ def do(self, f=print, pre_f=None, sub_f=None):
90
+ """Apply a function for side effects, return self for chaining.
91
+
92
+ Args:
93
+ f: Function to apply (default print)
94
+ pre_f: Pre-processing function
95
+ sub_f: Post-processing function (no return value expected)
96
+
97
+ Returns:
98
+ self, for chaining
99
+ """
100
+ rs = self
101
+ if pre_f:
102
+ rs = pre_f(rs)
103
+ rs = f(rs)
104
+ if sub_f:
105
+ sub_f(rs)
106
+ return self
107
+
108
+ def __init__(self):
109
+ self.database = DATABASE_CONFIG
110
+ self.other = OTHER_CONFIG
111
+ self.paths = PATHS
112
+
113
+ # ============================================================================
114
+ # 全局配置实例
115
+ # ============================================================================
116
+ # 推荐使用此实例访问和修改配置
117
+ # ============================================================================
118
+
119
+ config = ConfigManager()
120
+ # Global config instance, unified config access interface.
121
+ # Usage: from vools.config import config
122
+
123
+ # ============================================================================
124
+ # 配置项影响的模块汇总
125
+ # ============================================================================
126
+ # | 配置项 | 影响模块 | 说明 |
127
+ # |--------|----------|------|
128
+ # | cache_duration | decorators/cache.py | memorize 装饰器默认缓存时长 |
129
+ # | max_workers | task/core/queue.py | TaskQueue 和 WorkerPool 默认线程数 |
130
+ # | retry_times | decorators/control.py | retry 装饰器默认重试次数 |
131
+ # | default_force_when | decorators/cache.py | persist 装饰器默认强制刷新条件 |
132
+ # | default_target_folder | decorators/cache.py | persist 装饰器默认目标文件夹 |
133
+ # | NONE_is_None | data/seq.py | Seq 类处理 NONE 占位符的方式 |
134
+ # | database.* | decorators/cache.py | persist 装饰器数据库持久化(预留) |
135
+ # | paths.* | 多个模块 | 文件读写操作的基础路径 |
@@ -54,6 +54,7 @@ class NimItor:
54
54
  self._queue = deque()
55
55
  self._jump_queue = deque()
56
56
  self._source_exhausted = False
57
+ self._started = False
57
58
 
58
59
  self._handle = self._dll.newItor()
59
60
 
@@ -61,7 +62,15 @@ class NimItor:
61
62
  def state(self) -> ItorState:
62
63
  if self._handle is None:
63
64
  return ItorState.STOPPED
64
- return ItorState(self._dll.state(self._handle))
65
+ dll_state = self._dll.state(self._handle)
66
+ if dll_state == ItorState.STOPPED.value:
67
+ return ItorState.STOPPED
68
+ if dll_state == ItorState.PAUSED.value:
69
+ return ItorState.PAUSED
70
+ # DLL 无法区分 PENDING / ITERRING,由 Python 端维护起始标志
71
+ if self._source_exhausted and not self._queue and not self._jump_queue:
72
+ return ItorState.STOPPED
73
+ return ItorState.ITERRING if self._started else ItorState.PENDING
65
74
 
66
75
  def send(self, jump: Any, jump_when: Optional[Callable[['NimItor'], bool]] = None) -> 'NimItor':
67
76
  if jump_when is not None:
@@ -109,6 +118,10 @@ class NimItor:
109
118
 
110
119
  def __next__(self) -> Any:
111
120
  while True:
121
+ # 已停止的迭代器立即终止(无论队列中是否还有缓存值)
122
+ if self._handle is not None and self._dll.state(self._handle) == ItorState.STOPPED.value:
123
+ raise StopIteration
124
+
112
125
  if self._jump_queue:
113
126
  return self._jump_queue.popleft()
114
127
 
@@ -120,6 +133,7 @@ class NimItor:
120
133
 
121
134
  if self._iterator is None:
122
135
  self._iterator = iter(self._iterable)
136
+ self._started = True
123
137
 
124
138
  try:
125
139
  item = next(self._iterator)
@@ -1900,7 +1900,12 @@ class Table(Seq):
1900
1900
 
1901
1901
  table = Table.read_excel('data.xlsx')
1902
1902
  """
1903
- from ..xl import Book
1903
+ try:
1904
+ from ..xl import Book
1905
+ except ImportError as exc:
1906
+ raise ImportError(
1907
+ "vools.xl is not installed; use pip install 'vools[xl]' or pip install vools-xl"
1908
+ ) from exc
1904
1909
 
1905
1910
  if not os.path.exists(filename):
1906
1911
  raise FileNotFoundError(f'File not found: {filename}')
@@ -1974,7 +1979,12 @@ class Table(Seq):
1974
1979
 
1975
1980
  table.write_excel('output.xlsx')
1976
1981
  """
1977
- from ..xl import Book
1982
+ try:
1983
+ from ..xl import Book
1984
+ except ImportError as exc:
1985
+ raise ImportError(
1986
+ "vools.xl is not installed; use pip install 'vools[xl]' or pip install vools-xl"
1987
+ ) from exc
1978
1988
 
1979
1989
  with Book() as book:
1980
1990
  sheet = book.add_sheet(sheet_name)
@@ -215,6 +215,25 @@ class CurryDescriptor:
215
215
  Returns:
216
216
  如果 instance 为 None 返回 Curried,否则返回绑定后的 Curried
217
217
  """
218
+ # classmethod 委托场景:Python 的 classmethod.__get__ 会把类本身作为
219
+ # instance 传给 descriptor(instance is owner),此时需将第一个参数 (cls)
220
+ # 绑定为 owner 并从 required_args 中剔除。
221
+ is_classmethod_delegation = (
222
+ owner is not None
223
+ and isinstance(instance, type)
224
+ and instance is owner
225
+ and isinstance(getattr(owner, '__dict__', {}).get(self._name), classmethod)
226
+ )
227
+ if is_classmethod_delegation:
228
+ bound_func = self.func.__get__(owner, owner)
229
+ pre_attrs = self.pre_attrs.copy()
230
+ required_args = pre_attrs.get('required_args', [])
231
+ params = pre_attrs.get('params', {})
232
+ if required_args:
233
+ first = required_args[0]
234
+ pre_attrs['required_args'] = required_args[1:]
235
+ pre_attrs['params'] = {k: v for k, v in params.items() if k != first}
236
+ return Curried(bound_func, is_strict=self.is_strict, delaied=self.delaied, **pre_attrs)
218
237
  if instance is None:
219
238
  return Curried(self.func, is_strict=self.is_strict, delaied=self.delaied, **self.pre_attrs)
220
239
  bound_func = self.func.__get__(instance, owner)
@@ -28,16 +28,29 @@ __all__ = [
28
28
 
29
29
  # 优先使用 Nim 桥接库(来自 vools.bridge.nim.crypto)
30
30
  # crypto.py 已经正确实现了 _nim_sha256/_py_sha256 的自动切换
31
- try:
32
- from ..bridge.nim import sha256 as _nim_sha256_impl
33
- from ..bridge.nim import md5 as _nim_md5_impl
34
- from ..bridge.nim import sha1 as _nim_sha1_impl
35
- _nim_available = True
36
- except ImportError:
37
- _nim_sha256_impl = None
38
- _nim_md5_impl = None
39
- _nim_sha1_impl = None
40
- _nim_available = False
31
+ # 注意:必须延迟导入,避免 import vools 时预加载 vools.bridge 子包,
32
+ # 否则 vools.BRIDGE_AVAILABLE 标志的翻转逻辑永远不执行。
33
+ _nim_available = False
34
+ _nim_sha256_impl = None
35
+ _nim_md5_impl = None
36
+ _nim_sha1_impl = None
37
+
38
+
39
+ def _load_nim_impls() -> None:
40
+ """延迟加载 Nim 桥接实现(仅在需要时导入 vools.bridge)。"""
41
+ global _nim_available, _nim_sha256_impl, _nim_md5_impl, _nim_sha1_impl
42
+ if _nim_available:
43
+ return
44
+ try:
45
+ from ..bridge.nim import sha256 as _sha256_impl
46
+ from ..bridge.nim import md5 as _md5_impl
47
+ from ..bridge.nim import sha1 as _sha1_impl
48
+ _nim_sha256_impl = _sha256_impl
49
+ _nim_md5_impl = _md5_impl
50
+ _nim_sha1_impl = _sha1_impl
51
+ _nim_available = True
52
+ except ImportError:
53
+ _nim_available = False
41
54
 
42
55
 
43
56
  def _py_sha256_hex(data: bytes) -> str:
@@ -209,10 +209,22 @@ def safe_eval(expr: str, vars: Optional[Dict[str, Any]] = None) -> Any:
209
209
 
210
210
  # 导入 shim(shim 不引用 vools 子包,避免循环导入)。
211
211
  # 当 vools-bridges 未安装时回退到 None,保证核心 safe_eval 仍然可用。
212
- try:
213
- from ..bridge.rust import safe_eval_shim as _safe_eval_shim
214
- except Exception:
215
- _safe_eval_shim = None
212
+ # 注意:必须延迟导入,避免 import vools 时预加载 vools.bridge 子包,
213
+ # 否则 vools.BRIDGE_AVAILABLE 标志的翻转逻辑永远不执行。
214
+ _safe_eval_shim = None
215
+
216
+
217
+ def _load_safe_eval_shim():
218
+ """延迟加载 Rust safe_eval shim(首次需要时导入 vools.bridge)。"""
219
+ global _safe_eval_shim
220
+ if _safe_eval_shim is not None:
221
+ return _safe_eval_shim
222
+ try:
223
+ from ..bridge.rust import safe_eval_shim as _shim
224
+ _safe_eval_shim = _shim
225
+ except Exception:
226
+ _safe_eval_shim = None
227
+ return _safe_eval_shim
216
228
 
217
229
 
218
230
  def _safe_eval_rust_impl(expr: str, vars: Optional[Dict[str, Any]] = None, timeout_ms: int = 1000) -> Any:
@@ -236,16 +248,17 @@ def _safe_eval_rust_impl(expr: str, vars: Optional[Dict[str, Any]] = None, timeo
236
248
  SafeEvalError: 当表达式包含不安全内容时
237
249
  """
238
250
  # 检查 Rust 是否可用
239
- if _safe_eval_shim is None or not _safe_eval_shim.is_rust_available():
251
+ _shim = _load_safe_eval_shim()
252
+ if _shim is None or not _shim.is_rust_available():
240
253
  raise SafeEvalError("Rust 桥接库不可用")
241
254
 
242
255
  # 编译表达式为 VM 指令
243
- instructions, compile_err = _safe_eval_shim.compile_to_instructions(expr)
256
+ instructions, compile_err = _shim.compile_to_instructions(expr)
244
257
  if compile_err:
245
258
  raise SafeEvalError(compile_err)
246
259
 
247
260
  # 执行指令
248
- result = _safe_eval_shim.eval_instructions(instructions, timeout_ms)
261
+ result = _shim.eval_instructions(instructions, timeout_ms)
249
262
 
250
263
  if not result.get("ok", False):
251
264
  error = result.get("error", {})
@@ -300,7 +313,8 @@ def safe_eval_rust(expr: str, vars: Optional[Dict[str, Any]] = None, timeout_ms:
300
313
 
301
314
  def is_rust_safe_eval_available() -> bool:
302
315
  """检查 Rust 安全沙箱是否可用"""
303
- return _safe_eval_shim is not None and _safe_eval_shim.is_rust_available()
316
+ _shim = _load_safe_eval_shim()
317
+ return _shim is not None and _shim.is_rust_available()
304
318
 
305
319
 
306
320
  DANGEROUS_PATTERNS = [
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vools
3
- Version: 0.7.2
3
+ Version: 0.7.4
4
4
  Summary: Python 函数式编程工具集
5
5
  Author-email: Victor <victortop921129@gmail.com>
6
6
  License: Apache License
@@ -239,12 +239,18 @@ Provides-Extra: serialize
239
239
  Requires-Dist: msgpack>=1.0; extra == "serialize"
240
240
  Requires-Dist: orjson>=3.9; extra == "serialize"
241
241
  Provides-Extra: rx
242
- Requires-Dist: vools-rx==0.7.2; extra == "rx"
242
+ Requires-Dist: vools-rx==0.7.4; extra == "rx"
243
243
  Provides-Extra: bridges
244
- Requires-Dist: vools-bridges==0.7.2; extra == "bridges"
244
+ Requires-Dist: vools-bridges==0.7.4; extra == "bridges"
245
+ Provides-Extra: dll32
246
+ Requires-Dist: vools-dll32==0.7.4; extra == "dll32"
247
+ Provides-Extra: xl
248
+ Requires-Dist: vools-xl==0.7.4; extra == "xl"
245
249
  Provides-Extra: all
246
- Requires-Dist: vools-rx==0.7.2; extra == "all"
247
- Requires-Dist: vools-bridges==0.7.2; extra == "all"
250
+ Requires-Dist: vools-rx==0.7.4; extra == "all"
251
+ Requires-Dist: vools-bridges==0.7.4; extra == "all"
252
+ Requires-Dist: vools-dll32==0.7.4; extra == "all"
253
+ Requires-Dist: vools-xl==0.7.4; extra == "all"
248
254
  Provides-Extra: cli
249
255
  Requires-Dist: typer>=0.12.0; extra == "cli"
250
256
  Requires-Dist: typing-extensions>=4.0.0; extra == "cli"