vools 0.2.3__tar.gz → 0.2.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 (321) hide show
  1. {vools-0.2.3 → vools-0.2.4}/PKG-INFO +1 -1
  2. {vools-0.2.3 → vools-0.2.4}/vools/__init__.py +1 -1
  3. {vools-0.2.3 → vools-0.2.4}/vools/bridge/probe.py +1 -1
  4. vools-0.2.4/vools/core/contextvars_compat.py +87 -0
  5. {vools-0.2.3 → vools-0.2.4}/vools/reactive/monitoring/clipboard.py +1 -1
  6. {vools-0.2.3 → vools-0.2.4}/vools/reactive/monitoring/file_watcher.py +1 -1
  7. {vools-0.2.3 → vools-0.2.4}/vools/reactive/monitoring/folder_watcher.py +1 -1
  8. {vools-0.2.3 → vools-0.2.4}/vools/reactive/monitoring/keyboard.py +3 -3
  9. {vools-0.2.3 → vools-0.2.4}/vools/reactive/monitoring/mouse.py +3 -3
  10. {vools-0.2.3 → vools-0.2.4}/vools/reactive/operators/extended_operators.py +13 -13
  11. {vools-0.2.3 → vools-0.2.4}/vools/reactive/operators/operators.py +1 -1
  12. {vools-0.2.3 → vools-0.2.4}/vools/serialize/context.py +5 -5
  13. {vools-0.2.3 → vools-0.2.4}/vools/sql/core/decorators.py +16 -2
  14. {vools-0.2.3 → vools-0.2.4}/vools/sql/manager.py +1 -1
  15. {vools-0.2.3 → vools-0.2.4}/vools.egg-info/PKG-INFO +1 -1
  16. {vools-0.2.3 → vools-0.2.4}/vools.egg-info/SOURCES.txt +1 -0
  17. {vools-0.2.3 → vools-0.2.4}/LICENSE +0 -0
  18. {vools-0.2.3 → vools-0.2.4}/NOTICE +0 -0
  19. {vools-0.2.3 → vools-0.2.4}/README.md +0 -0
  20. {vools-0.2.3 → vools-0.2.4}/autopypi/__init__.py +0 -0
  21. {vools-0.2.3 → vools-0.2.4}/autopypi/config.py +0 -0
  22. {vools-0.2.3 → vools-0.2.4}/autopypi/environment.py +0 -0
  23. {vools-0.2.3 → vools-0.2.4}/autopypi/fabfile.py +0 -0
  24. {vools-0.2.3 → vools-0.2.4}/autopypi/logger.py +0 -0
  25. {vools-0.2.3 → vools-0.2.4}/autopypi/packaging.py +0 -0
  26. {vools-0.2.3 → vools-0.2.4}/autopypi/publishing.py +0 -0
  27. {vools-0.2.3 → vools-0.2.4}/autopypi/release.py +0 -0
  28. {vools-0.2.3 → vools-0.2.4}/autopypi/versioning.py +0 -0
  29. {vools-0.2.3 → vools-0.2.4}/pyproject.toml +0 -0
  30. {vools-0.2.3 → vools-0.2.4}/setup.cfg +0 -0
  31. {vools-0.2.3 → vools-0.2.4}/tests/__init__.py +0 -0
  32. {vools-0.2.3 → vools-0.2.4}/tests/_serialize_helpers.py +0 -0
  33. {vools-0.2.3 → vools-0.2.4}/tests/conftest.py +0 -0
  34. {vools-0.2.3 → vools-0.2.4}/tests/test_functions.py +0 -0
  35. {vools-0.2.3 → vools-0.2.4}/vools/README.md +0 -0
  36. {vools-0.2.3 → vools-0.2.4}/vools/__main__.py +0 -0
  37. {vools-0.2.3 → vools-0.2.4}/vools/_logging.py +0 -0
  38. {vools-0.2.3 → vools-0.2.4}/vools/_nim_crypto.py +0 -0
  39. {vools-0.2.3 → vools-0.2.4}/vools/_nim_curried.py +0 -0
  40. {vools-0.2.3 → vools-0.2.4}/vools/_nim_datetime.py +0 -0
  41. {vools-0.2.3 → vools-0.2.4}/vools/_nim_encoding.py +0 -0
  42. {vools-0.2.3 → vools-0.2.4}/vools/_nim_loader.py +0 -0
  43. {vools-0.2.3 → vools-0.2.4}/vools/_nim_seq.py +0 -0
  44. {vools-0.2.3 → vools-0.2.4}/vools/api/__init__.py +0 -0
  45. {vools-0.2.3 → vools-0.2.4}/vools/api/curry_cmd.py +0 -0
  46. {vools-0.2.3 → vools-0.2.4}/vools/api/memoize_cmd.py +0 -0
  47. {vools-0.2.3 → vools-0.2.4}/vools/api/ops_cmd.py +0 -0
  48. {vools-0.2.3 → vools-0.2.4}/vools/api/seq_cmd.py +0 -0
  49. {vools-0.2.3 → vools-0.2.4}/vools/api/typer_app.py +0 -0
  50. {vools-0.2.3 → vools-0.2.4}/vools/bridge/__init__.py +0 -0
  51. {vools-0.2.3 → vools-0.2.4}/vools/bridge/_base.py +0 -0
  52. {vools-0.2.3 → vools-0.2.4}/vools/bridge/_examples.py +0 -0
  53. {vools-0.2.3 → vools-0.2.4}/vools/bridge/c/__init__.py +0 -0
  54. {vools-0.2.3 → vools-0.2.4}/vools/bridge/cangjie/__init__.py +0 -0
  55. {vools-0.2.3 → vools-0.2.4}/vools/bridge/cangjie/compiler.py +0 -0
  56. {vools-0.2.3 → vools-0.2.4}/vools/bridge/cangjie/loader.py +0 -0
  57. {vools-0.2.3 → vools-0.2.4}/vools/bridge/cangjie/templates.py +0 -0
  58. {vools-0.2.3 → vools-0.2.4}/vools/bridge/cangjie/types.py +0 -0
  59. {vools-0.2.3 → vools-0.2.4}/vools/bridge/core/__init__.py +0 -0
  60. {vools-0.2.3 → vools-0.2.4}/vools/bridge/core/decorators.py +0 -0
  61. {vools-0.2.3 → vools-0.2.4}/vools/bridge/core/loader.py +0 -0
  62. {vools-0.2.3 → vools-0.2.4}/vools/bridge/core/serialization.py +0 -0
  63. {vools-0.2.3 → vools-0.2.4}/vools/bridge/core/sigcache.py +0 -0
  64. {vools-0.2.3 → vools-0.2.4}/vools/bridge/core/types.py +0 -0
  65. {vools-0.2.3 → vools-0.2.4}/vools/bridge/cpp/__init__.py +0 -0
  66. {vools-0.2.3 → vools-0.2.4}/vools/bridge/csharp/__init__.py +0 -0
  67. {vools-0.2.3 → vools-0.2.4}/vools/bridge/csharp/compiler.py +0 -0
  68. {vools-0.2.3 → vools-0.2.4}/vools/bridge/csharp/loader.py +0 -0
  69. {vools-0.2.3 → vools-0.2.4}/vools/bridge/csharp/templates.py +0 -0
  70. {vools-0.2.3 → vools-0.2.4}/vools/bridge/csharp/types.py +0 -0
  71. {vools-0.2.3 → vools-0.2.4}/vools/bridge/dart/__init__.py +0 -0
  72. {vools-0.2.3 → vools-0.2.4}/vools/bridge/dart/compiler.py +0 -0
  73. {vools-0.2.3 → vools-0.2.4}/vools/bridge/dart/types.py +0 -0
  74. {vools-0.2.3 → vools-0.2.4}/vools/bridge/freebasic/__init__.py +0 -0
  75. {vools-0.2.3 → vools-0.2.4}/vools/bridge/freebasic/compiler.py +0 -0
  76. {vools-0.2.3 → vools-0.2.4}/vools/bridge/freebasic/loader.py +0 -0
  77. {vools-0.2.3 → vools-0.2.4}/vools/bridge/freebasic/transport.py +0 -0
  78. {vools-0.2.3 → vools-0.2.4}/vools/bridge/freebasic/types.py +0 -0
  79. {vools-0.2.3 → vools-0.2.4}/vools/bridge/go/__init__.py +0 -0
  80. {vools-0.2.3 → vools-0.2.4}/vools/bridge/go/compiler.py +0 -0
  81. {vools-0.2.3 → vools-0.2.4}/vools/bridge/java/__init__.py +0 -0
  82. {vools-0.2.3 → vools-0.2.4}/vools/bridge/java/compiler.py +0 -0
  83. {vools-0.2.3 → vools-0.2.4}/vools/bridge/java/decorator.py +0 -0
  84. {vools-0.2.3 → vools-0.2.4}/vools/bridge/java/loader.py +0 -0
  85. {vools-0.2.3 → vools-0.2.4}/vools/bridge/java/types.py +0 -0
  86. {vools-0.2.3 → vools-0.2.4}/vools/bridge/julia/__init__.py +0 -0
  87. {vools-0.2.3 → vools-0.2.4}/vools/bridge/julia/_loader.py +0 -0
  88. {vools-0.2.3 → vools-0.2.4}/vools/bridge/julia/compiler.py +0 -0
  89. {vools-0.2.3 → vools-0.2.4}/vools/bridge/julia/decorator.py +0 -0
  90. {vools-0.2.3 → vools-0.2.4}/vools/bridge/julia/templates.py +0 -0
  91. {vools-0.2.3 → vools-0.2.4}/vools/bridge/julia/types.py +0 -0
  92. {vools-0.2.3 → vools-0.2.4}/vools/bridge/kotlin/__init__.py +0 -0
  93. {vools-0.2.3 → vools-0.2.4}/vools/bridge/kotlin/compiler.py +0 -0
  94. {vools-0.2.3 → vools-0.2.4}/vools/bridge/kotlin/types.py +0 -0
  95. {vools-0.2.3 → vools-0.2.4}/vools/bridge/lua/__init__.py +0 -0
  96. {vools-0.2.3 → vools-0.2.4}/vools/bridge/lua/compiler.py +0 -0
  97. {vools-0.2.3 → vools-0.2.4}/vools/bridge/lua/types.py +0 -0
  98. {vools-0.2.3 → vools-0.2.4}/vools/bridge/manager.py +0 -0
  99. {vools-0.2.3 → vools-0.2.4}/vools/bridge/mojo/__init__.py +0 -0
  100. {vools-0.2.3 → vools-0.2.4}/vools/bridge/mojo/compiler.py +0 -0
  101. {vools-0.2.3 → vools-0.2.4}/vools/bridge/mojo/loader.py +0 -0
  102. {vools-0.2.3 → vools-0.2.4}/vools/bridge/mojo/templates.py +0 -0
  103. {vools-0.2.3 → vools-0.2.4}/vools/bridge/mojo/transport.py +0 -0
  104. {vools-0.2.3 → vools-0.2.4}/vools/bridge/mojo/types.py +0 -0
  105. {vools-0.2.3 → vools-0.2.4}/vools/bridge/moonbit/__init__.py +0 -0
  106. {vools-0.2.3 → vools-0.2.4}/vools/bridge/moonbit/compiler.py +0 -0
  107. {vools-0.2.3 → vools-0.2.4}/vools/bridge/moonbit/types.py +0 -0
  108. {vools-0.2.3 → vools-0.2.4}/vools/bridge/nim/__init__.py +0 -0
  109. {vools-0.2.3 → vools-0.2.4}/vools/bridge/nim/_loader.py +0 -0
  110. {vools-0.2.3 → vools-0.2.4}/vools/bridge/nim/compiler.py +0 -0
  111. {vools-0.2.3 → vools-0.2.4}/vools/bridge/nim/crypto.py +0 -0
  112. {vools-0.2.3 → vools-0.2.4}/vools/bridge/nim/curried.py +0 -0
  113. {vools-0.2.3 → vools-0.2.4}/vools/bridge/nim/datetime.py +0 -0
  114. {vools-0.2.3 → vools-0.2.4}/vools/bridge/nim/encoding.py +0 -0
  115. {vools-0.2.3 → vools-0.2.4}/vools/bridge/nim/seq.py +0 -0
  116. {vools-0.2.3 → vools-0.2.4}/vools/bridge/perl/__init__.py +0 -0
  117. {vools-0.2.3 → vools-0.2.4}/vools/bridge/perl/compiler.py +0 -0
  118. {vools-0.2.3 → vools-0.2.4}/vools/bridge/perl/types.py +0 -0
  119. {vools-0.2.3 → vools-0.2.4}/vools/bridge/php/__init__.py +0 -0
  120. {vools-0.2.3 → vools-0.2.4}/vools/bridge/php/compiler.py +0 -0
  121. {vools-0.2.3 → vools-0.2.4}/vools/bridge/php/types.py +0 -0
  122. {vools-0.2.3 → vools-0.2.4}/vools/bridge/powershell/__init__.py +0 -0
  123. {vools-0.2.3 → vools-0.2.4}/vools/bridge/powershell/compiler.py +0 -0
  124. {vools-0.2.3 → vools-0.2.4}/vools/bridge/powershell/types.py +0 -0
  125. {vools-0.2.3 → vools-0.2.4}/vools/bridge/r/__init__.py +0 -0
  126. {vools-0.2.3 → vools-0.2.4}/vools/bridge/r/compiler.py +0 -0
  127. {vools-0.2.3 → vools-0.2.4}/vools/bridge/r/loader.py +0 -0
  128. {vools-0.2.3 → vools-0.2.4}/vools/bridge/r/templates.py +0 -0
  129. {vools-0.2.3 → vools-0.2.4}/vools/bridge/r/types.py +0 -0
  130. {vools-0.2.3 → vools-0.2.4}/vools/bridge/ruby/__init__.py +0 -0
  131. {vools-0.2.3 → vools-0.2.4}/vools/bridge/ruby/compiler.py +0 -0
  132. {vools-0.2.3 → vools-0.2.4}/vools/bridge/rust/__init__.py +0 -0
  133. {vools-0.2.3 → vools-0.2.4}/vools/bridge/rust/_loader.py +0 -0
  134. {vools-0.2.3 → vools-0.2.4}/vools/bridge/rust/compiler.py +0 -0
  135. {vools-0.2.3 → vools-0.2.4}/vools/bridge/rust/decorator.py +0 -0
  136. {vools-0.2.3 → vools-0.2.4}/vools/bridge/rust/templates.py +0 -0
  137. {vools-0.2.3 → vools-0.2.4}/vools/bridge/rust/types.py +0 -0
  138. {vools-0.2.3 → vools-0.2.4}/vools/bridge/scala/__init__.py +0 -0
  139. {vools-0.2.3 → vools-0.2.4}/vools/bridge/scala/compiler.py +0 -0
  140. {vools-0.2.3 → vools-0.2.4}/vools/bridge/scala/decorator.py +0 -0
  141. {vools-0.2.3 → vools-0.2.4}/vools/bridge/scala/loader.py +0 -0
  142. {vools-0.2.3 → vools-0.2.4}/vools/bridge/scala/types.py +0 -0
  143. {vools-0.2.3 → vools-0.2.4}/vools/bridge/scala/utils.py +0 -0
  144. {vools-0.2.3 → vools-0.2.4}/vools/bridge/shell/__init__.py +0 -0
  145. {vools-0.2.3 → vools-0.2.4}/vools/bridge/shell/compiler.py +0 -0
  146. {vools-0.2.3 → vools-0.2.4}/vools/bridge/shell/types.py +0 -0
  147. {vools-0.2.3 → vools-0.2.4}/vools/bridge/swift/__init__.py +0 -0
  148. {vools-0.2.3 → vools-0.2.4}/vools/bridge/swift/compiler.py +0 -0
  149. {vools-0.2.3 → vools-0.2.4}/vools/bridge/swift/types.py +0 -0
  150. {vools-0.2.3 → vools-0.2.4}/vools/bridge/typescript/__init__.py +0 -0
  151. {vools-0.2.3 → vools-0.2.4}/vools/bridge/typescript/compiler.py +0 -0
  152. {vools-0.2.3 → vools-0.2.4}/vools/bridge/vbnet/__init__.py +0 -0
  153. {vools-0.2.3 → vools-0.2.4}/vools/bridge/vbnet/compiler.py +0 -0
  154. {vools-0.2.3 → vools-0.2.4}/vools/bridge/vbnet/templates.py +0 -0
  155. {vools-0.2.3 → vools-0.2.4}/vools/bridge/vbnet/types.py +0 -0
  156. {vools-0.2.3 → vools-0.2.4}/vools/bridge/vbscript/__init__.py +0 -0
  157. {vools-0.2.3 → vools-0.2.4}/vools/bridge/vbscript/compiler.py +0 -0
  158. {vools-0.2.3 → vools-0.2.4}/vools/bridge/vbscript/types.py +0 -0
  159. {vools-0.2.3 → vools-0.2.4}/vools/bridge/zig/__init__.py +0 -0
  160. {vools-0.2.3 → vools-0.2.4}/vools/bridge/zig/compiler.py +0 -0
  161. {vools-0.2.3 → vools-0.2.4}/vools/bridge/zig/types.py +0 -0
  162. {vools-0.2.3 → vools-0.2.4}/vools/cache/__init__.py +0 -0
  163. {vools-0.2.3 → vools-0.2.4}/vools/cache/memorize.py +0 -0
  164. {vools-0.2.3 → vools-0.2.4}/vools/cache/once.py +0 -0
  165. {vools-0.2.3 → vools-0.2.4}/vools/cache/persist.py +0 -0
  166. {vools-0.2.3 → vools-0.2.4}/vools/cache/sigcache.py +0 -0
  167. {vools-0.2.3 → vools-0.2.4}/vools/config.py +0 -0
  168. {vools-0.2.3 → vools-0.2.4}/vools/config.template.py +0 -0
  169. {vools-0.2.3 → vools-0.2.4}/vools/core/__init__.py +0 -0
  170. {vools-0.2.3 → vools-0.2.4}/vools/core/asyncio_compat.py +0 -0
  171. {vools-0.2.3 → vools-0.2.4}/vools/core/base.py +0 -0
  172. {vools-0.2.3 → vools-0.2.4}/vools/core/config.py +0 -0
  173. {vools-0.2.3 → vools-0.2.4}/vools/core/dataclass_compat.py +0 -0
  174. {vools-0.2.3 → vools-0.2.4}/vools/core/datetime_compat.py +0 -0
  175. {vools-0.2.3 → vools-0.2.4}/vools/core/exceptions.py +0 -0
  176. {vools-0.2.3 → vools-0.2.4}/vools/core/inspect_compat.py +0 -0
  177. {vools-0.2.3 → vools-0.2.4}/vools/crypto/__init__.py +0 -0
  178. {vools-0.2.3 → vools-0.2.4}/vools/crypto/core.py +0 -0
  179. {vools-0.2.3 → vools-0.2.4}/vools/curried/__init__.py +0 -0
  180. {vools-0.2.3 → vools-0.2.4}/vools/curried/collection.py +0 -0
  181. {vools-0.2.3 → vools-0.2.4}/vools/curried/composition.py +0 -0
  182. {vools-0.2.3 → vools-0.2.4}/vools/curried/core.py +0 -0
  183. {vools-0.2.3 → vools-0.2.4}/vools/curried/iteration.py +0 -0
  184. {vools-0.2.3 → vools-0.2.4}/vools/curried/math.py +0 -0
  185. {vools-0.2.3 → vools-0.2.4}/vools/curried/predicate.py +0 -0
  186. {vools-0.2.3 → vools-0.2.4}/vools/curried/string.py +0 -0
  187. {vools-0.2.3 → vools-0.2.4}/vools/data/__init__.py +0 -0
  188. {vools-0.2.3 → vools-0.2.4}/vools/data/itor.py +0 -0
  189. {vools-0.2.3 → vools-0.2.4}/vools/data/seq.py +0 -0
  190. {vools-0.2.3 → vools-0.2.4}/vools/data/vlist.py +0 -0
  191. {vools-0.2.3 → vools-0.2.4}/vools/data/vtext.py +0 -0
  192. {vools-0.2.3 → vools-0.2.4}/vools/datetime/__init__.py +0 -0
  193. {vools-0.2.3 → vools-0.2.4}/vools/datetime/dates_format.py +0 -0
  194. {vools-0.2.3 → vools-0.2.4}/vools/datetime/utils.py +0 -0
  195. {vools-0.2.3 → vools-0.2.4}/vools/datetime/vdate_class.py +0 -0
  196. {vools-0.2.3 → vools-0.2.4}/vools/decorators/__init__.py +0 -0
  197. {vools-0.2.3 → vools-0.2.4}/vools/decorators/cache.py +0 -0
  198. {vools-0.2.3 → vools-0.2.4}/vools/decorators/control.py +0 -0
  199. {vools-0.2.3 → vools-0.2.4}/vools/decorators/curried.py +0 -0
  200. {vools-0.2.3 → vools-0.2.4}/vools/decorators/curry_core.py +0 -0
  201. {vools-0.2.3 → vools-0.2.4}/vools/decorators/curry_decorator.py +0 -0
  202. {vools-0.2.3 → vools-0.2.4}/vools/decorators/curry_delay.py +0 -0
  203. {vools-0.2.3 → vools-0.2.4}/vools/decorators/lazy.py +0 -0
  204. {vools-0.2.3 → vools-0.2.4}/vools/decorators/overcurry.py +0 -0
  205. {vools-0.2.3 → vools-0.2.4}/vools/decorators/overload.py +0 -0
  206. {vools-0.2.3 → vools-0.2.4}/vools/decorators/overloads.py +0 -0
  207. {vools-0.2.3 → vools-0.2.4}/vools/decorators/rself.py +0 -0
  208. {vools-0.2.3 → vools-0.2.4}/vools/decorators/selector.py +0 -0
  209. {vools-0.2.3 → vools-0.2.4}/vools/decorators/shotcut.py +0 -0
  210. {vools-0.2.3 → vools-0.2.4}/vools/decorators/trd.py +0 -0
  211. {vools-0.2.3 → vools-0.2.4}/vools/encoding/__init__.py +0 -0
  212. {vools-0.2.3 → vools-0.2.4}/vools/encoding/core.py +0 -0
  213. {vools-0.2.3 → vools-0.2.4}/vools/functional/__init__.py +0 -0
  214. {vools-0.2.3 → vools-0.2.4}/vools/functional/arrow_func.py +0 -0
  215. {vools-0.2.3 → vools-0.2.4}/vools/functional/box.py +0 -0
  216. {vools-0.2.3 → vools-0.2.4}/vools/functional/funcs.py +0 -0
  217. {vools-0.2.3 → vools-0.2.4}/vools/functional/iif.py +0 -0
  218. {vools-0.2.3 → vools-0.2.4}/vools/functional/pipe_ops.py +0 -0
  219. {vools-0.2.3 → vools-0.2.4}/vools/functional/placeholder.py +0 -0
  220. {vools-0.2.3 → vools-0.2.4}/vools/functional/placeholder_impl.py +0 -0
  221. {vools-0.2.3 → vools-0.2.4}/vools/functional/result.py +0 -0
  222. {vools-0.2.3 → vools-0.2.4}/vools/lib/libgcc_s_seh-1.dll +0 -0
  223. {vools-0.2.3 → vools-0.2.4}/vools/lib/libstdc++-6.dll +0 -0
  224. {vools-0.2.3 → vools-0.2.4}/vools/lib/libwinpthread-1.dll +0 -0
  225. {vools-0.2.3 → vools-0.2.4}/vools/lib/linux/libvools_crypto.so +0 -0
  226. {vools-0.2.3 → vools-0.2.4}/vools/lib/linux/libvools_curried.so +0 -0
  227. {vools-0.2.3 → vools-0.2.4}/vools/lib/linux/libvools_datetime.so +0 -0
  228. {vools-0.2.3 → vools-0.2.4}/vools/lib/linux/libvools_encoding.so +0 -0
  229. {vools-0.2.3 → vools-0.2.4}/vools/lib/linux/libvools_seq.so +0 -0
  230. {vools-0.2.3 → vools-0.2.4}/vools/lib/vools_crypto.dll +0 -0
  231. {vools-0.2.3 → vools-0.2.4}/vools/lib/vools_curried.dll +0 -0
  232. {vools-0.2.3 → vools-0.2.4}/vools/lib/vools_datetime.dll +0 -0
  233. {vools-0.2.3 → vools-0.2.4}/vools/lib/vools_encoding.dll +0 -0
  234. {vools-0.2.3 → vools-0.2.4}/vools/lib/vools_seq.dll +0 -0
  235. {vools-0.2.3 → vools-0.2.4}/vools/oop/__init__.py +0 -0
  236. {vools-0.2.3 → vools-0.2.4}/vools/oop/calltype.py +0 -0
  237. {vools-0.2.3 → vools-0.2.4}/vools/oop/extend.py +0 -0
  238. {vools-0.2.3 → vools-0.2.4}/vools/oop/fusion.py +0 -0
  239. {vools-0.2.3 → vools-0.2.4}/vools/oop/method_extend.py +0 -0
  240. {vools-0.2.3 → vools-0.2.4}/vools/oop/mixer.py +0 -0
  241. {vools-0.2.3 → vools-0.2.4}/vools/oop/selector.py +0 -0
  242. {vools-0.2.3 → vools-0.2.4}/vools/reactive/__init__.py +0 -0
  243. {vools-0.2.3 → vools-0.2.4}/vools/reactive/core/__init__.py +0 -0
  244. {vools-0.2.3 → vools-0.2.4}/vools/reactive/core/connectable.py +0 -0
  245. {vools-0.2.3 → vools-0.2.4}/vools/reactive/core/object_pool.py +0 -0
  246. {vools-0.2.3 → vools-0.2.4}/vools/reactive/core/observable.py +0 -0
  247. {vools-0.2.3 → vools-0.2.4}/vools/reactive/core/schedulers.py +0 -0
  248. {vools-0.2.3 → vools-0.2.4}/vools/reactive/core/subject.py +0 -0
  249. {vools-0.2.3 → vools-0.2.4}/vools/reactive/monitoring/__init__.py +0 -0
  250. {vools-0.2.3 → vools-0.2.4}/vools/reactive/monitoring/_monitoring.py +0 -0
  251. {vools-0.2.3 → vools-0.2.4}/vools/reactive/monitoring/monitor_observer.py +0 -0
  252. {vools-0.2.3 → vools-0.2.4}/vools/reactive/monitoring/monitor_subject.py +0 -0
  253. {vools-0.2.3 → vools-0.2.4}/vools/reactive/operators/__init__.py +0 -0
  254. {vools-0.2.3 → vools-0.2.4}/vools/reactive/operators/monitor_operators.py +0 -0
  255. {vools-0.2.3 → vools-0.2.4}/vools/reactive/operators/stats_operators.py +0 -0
  256. {vools-0.2.3 → vools-0.2.4}/vools/security/__init__.py +0 -0
  257. {vools-0.2.3 → vools-0.2.4}/vools/security/_constants.py +0 -0
  258. {vools-0.2.3 → vools-0.2.4}/vools/security/expression_handler.py +0 -0
  259. {vools-0.2.3 → vools-0.2.4}/vools/security/safe_eval.py +0 -0
  260. {vools-0.2.3 → vools-0.2.4}/vools/serialize/__init__.py +0 -0
  261. {vools-0.2.3 → vools-0.2.4}/vools/serialize/backends/__init__.py +0 -0
  262. {vools-0.2.3 → vools-0.2.4}/vools/serialize/backends/base.py +0 -0
  263. {vools-0.2.3 → vools-0.2.4}/vools/serialize/backends/json_backend.py +0 -0
  264. {vools-0.2.3 → vools-0.2.4}/vools/serialize/backends/msgpack_backend.py +0 -0
  265. {vools-0.2.3 → vools-0.2.4}/vools/serialize/backends/pickle_backend.py +0 -0
  266. {vools-0.2.3 → vools-0.2.4}/vools/serialize/callable/__init__.py +0 -0
  267. {vools-0.2.3 → vools-0.2.4}/vools/serialize/callable/decorator_handler.py +0 -0
  268. {vools-0.2.3 → vools-0.2.4}/vools/serialize/callable/functional_handler.py +0 -0
  269. {vools-0.2.3 → vools-0.2.4}/vools/serialize/codec.py +0 -0
  270. {vools-0.2.3 → vools-0.2.4}/vools/serialize/config.py +0 -0
  271. {vools-0.2.3 → vools-0.2.4}/vools/serialize/core.py +0 -0
  272. {vools-0.2.3 → vools-0.2.4}/vools/serialize/decorators.py +0 -0
  273. {vools-0.2.3 → vools-0.2.4}/vools/serialize/sentinel.py +0 -0
  274. {vools-0.2.3 → vools-0.2.4}/vools/serialize/type_registry.py +0 -0
  275. {vools-0.2.3 → vools-0.2.4}/vools/sql/__init__.py +0 -0
  276. {vools-0.2.3 → vools-0.2.4}/vools/sql/core/__init__.py +0 -0
  277. {vools-0.2.3 → vools-0.2.4}/vools/sql/core/builder.py +0 -0
  278. {vools-0.2.3 → vools-0.2.4}/vools/sql/core/config.py +0 -0
  279. {vools-0.2.3 → vools-0.2.4}/vools/sql/core/connection.py +0 -0
  280. {vools-0.2.3 → vools-0.2.4}/vools/sql/core/dialect.py +0 -0
  281. {vools-0.2.3 → vools-0.2.4}/vools/sql/core/result.py +0 -0
  282. {vools-0.2.3 → vools-0.2.4}/vools/sql/core/types.py +0 -0
  283. {vools-0.2.3 → vools-0.2.4}/vools/sql/postgres/__init__.py +0 -0
  284. {vools-0.2.3 → vools-0.2.4}/vools/sql/postgres/connection.py +0 -0
  285. {vools-0.2.3 → vools-0.2.4}/vools/sql/postgres/dialect.py +0 -0
  286. {vools-0.2.3 → vools-0.2.4}/vools/sql/spark/__init__.py +0 -0
  287. {vools-0.2.3 → vools-0.2.4}/vools/sql/spark/connection.py +0 -0
  288. {vools-0.2.3 → vools-0.2.4}/vools/sql/spark/dialect.py +0 -0
  289. {vools-0.2.3 → vools-0.2.4}/vools/sql/spark/scala_bridge.py +0 -0
  290. {vools-0.2.3 → vools-0.2.4}/vools/sql/sqlite/__init__.py +0 -0
  291. {vools-0.2.3 → vools-0.2.4}/vools/sql/sqlite/connection.py +0 -0
  292. {vools-0.2.3 → vools-0.2.4}/vools/sql/sqlite/dialect.py +0 -0
  293. {vools-0.2.3 → vools-0.2.4}/vools/sys/__init__.py +0 -0
  294. {vools-0.2.3 → vools-0.2.4}/vools/sys/compile_cmd.py +0 -0
  295. {vools-0.2.3 → vools-0.2.4}/vools/sys/dll.py +0 -0
  296. {vools-0.2.3 → vools-0.2.4}/vools/sys/dll_cmd.py +0 -0
  297. {vools-0.2.3 → vools-0.2.4}/vools/sys/env_cmd.py +0 -0
  298. {vools-0.2.3 → vools-0.2.4}/vools/sys/exe.py +0 -0
  299. {vools-0.2.3 → vools-0.2.4}/vools/sys/fire_app.py +0 -0
  300. {vools-0.2.3 → vools-0.2.4}/vools/sys/run_cmd.py +0 -0
  301. {vools-0.2.3 → vools-0.2.4}/vools/task/__init__.py +0 -0
  302. {vools-0.2.3 → vools-0.2.4}/vools/task/core/__init__.py +0 -0
  303. {vools-0.2.3 → vools-0.2.4}/vools/task/core/models.py +0 -0
  304. {vools-0.2.3 → vools-0.2.4}/vools/task/core/queue.py +0 -0
  305. {vools-0.2.3 → vools-0.2.4}/vools/task/core/storage.py +0 -0
  306. {vools-0.2.3 → vools-0.2.4}/vools/task/core/worker.py +0 -0
  307. {vools-0.2.3 → vools-0.2.4}/vools/task/decorators/__init__.py +0 -0
  308. {vools-0.2.3 → vools-0.2.4}/vools/task/decorators/task_decorator.py +0 -0
  309. {vools-0.2.3 → vools-0.2.4}/vools/task/rules/__init__.py +0 -0
  310. {vools-0.2.3 → vools-0.2.4}/vools/task/rules/dag.py +0 -0
  311. {vools-0.2.3 → vools-0.2.4}/vools/task/rules/engine.py +0 -0
  312. {vools-0.2.3 → vools-0.2.4}/vools/task/rules/rule.py +0 -0
  313. {vools-0.2.3 → vools-0.2.4}/vools/task/utils/__init__.py +0 -0
  314. {vools-0.2.3 → vools-0.2.4}/vools/utils/__init__.py +0 -0
  315. {vools-0.2.3 → vools-0.2.4}/vools/utils/hoder.py +0 -0
  316. {vools-0.2.3 → vools-0.2.4}/vools/utils/stuff.py +0 -0
  317. {vools-0.2.3 → vools-0.2.4}/vools/utils/tools.py +0 -0
  318. {vools-0.2.3 → vools-0.2.4}/vools.egg-info/dependency_links.txt +0 -0
  319. {vools-0.2.3 → vools-0.2.4}/vools.egg-info/entry_points.txt +0 -0
  320. {vools-0.2.3 → vools-0.2.4}/vools.egg-info/requires.txt +0 -0
  321. {vools-0.2.3 → vools-0.2.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.2.3
3
+ Version: 0.2.4
4
4
  Summary: Python 函数式编程工具集
5
5
  Author-email: Victor <victortop921129@gmail.com>
6
6
  License: Apache License
@@ -7,7 +7,7 @@ vools - Python 函数式编程工具集
7
7
  import importlib
8
8
  from typing import Any
9
9
 
10
- __version__ = "0.2.3"
10
+ __version__ = "0.2.4"
11
11
  __author__ = "Victor"
12
12
  __license__ = "Apache 2.0"
13
13
 
@@ -24,7 +24,7 @@ import subprocess
24
24
  import shutil
25
25
  import json
26
26
  from typing import Dict, List, Optional, Tuple, Any
27
- from ...core.dataclass_compat import dataclass, field, asdict
27
+ from ..core.dataclass_compat import dataclass, field, asdict
28
28
 
29
29
  _IS_WINDOWS = platform.system() == 'Windows'
30
30
  _IS_LINUX = platform.system() == 'Linux'
@@ -0,0 +1,87 @@
1
+ """
2
+ vools.core.contextvars_compat - contextvars 兼容性模块
3
+
4
+ Python 3.7 引入了 contextvars,但 Python 3.6 没有此模块。
5
+ 本模块提供兼容实现,在 3.6 中使用 threading.local 模拟基础功能。
6
+
7
+ 注意:由于 3.6 没有真正的 contextvars,模拟版本不是 async-safe 的,
8
+ 仅保证线程内有效。在 3.6 环境下,如果异步代码和同步代码混用,
9
+ 可能需要额外注意上下文隔离。
10
+ """
11
+
12
+ import sys
13
+ import threading
14
+ from typing import TypeVar, Generic, Optional, Any
15
+
16
+ _T = TypeVar('_T')
17
+
18
+ # Python 版本检测
19
+ _PY37_PLUS = sys.version_info >= (3, 7)
20
+
21
+ if _PY37_PLUS:
22
+ import contextvars as _ctx
23
+ ContextVar = _ctx.ContextVar
24
+ Context = _ctx.Context
25
+ copy_context = _ctx.copy_context
26
+ Token = _ctx.Token
27
+ else:
28
+ # Python 3.6 兼容实现
29
+ # 使用简单的类来模拟 ContextVar 的基本行为
30
+
31
+ class Token:
32
+ """Token 用于重置 ContextVar(模拟)"""
33
+ __slots__ = ('_value',)
34
+
35
+ def __init__(self, value):
36
+ self._value = value
37
+
38
+
39
+ class ContextVar:
40
+ """
41
+ ContextVar 兼容实现(Python 3.6)
42
+
43
+ 使用 threading.local 存储每个线程的上下文,
44
+ 不保证 async-safe,仅作为基础替代。
45
+ """
46
+ __slots__ = ('_name', '_default', '_local')
47
+
48
+ def __init__(self, name: str, default: _T = None):
49
+ self._name = name
50
+ self._default = default
51
+ self._local = threading.local()
52
+
53
+ @property
54
+ def name(self) -> str:
55
+ return self._name
56
+
57
+ def get(self, default: _T = None) -> _T:
58
+ """
59
+ 获取当前线程的 ContextVar 值。
60
+
61
+ 如果当前线程未设置值,返回默认值。
62
+ """
63
+ value = getattr(self._local, 'value', self)
64
+ if value is self:
65
+ return self._default if self._default is not None else default
66
+ return value
67
+
68
+ def set(self, value: _T):
69
+ """
70
+ 设置当前线程的 ContextVar 值。
71
+
72
+ 返回 Token 用于后续 reset。
73
+ """
74
+ old_value = getattr(self._local, 'value', self)
75
+ self._local.value = value
76
+ return Token(old_value)
77
+
78
+ def reset(self, token: Token):
79
+ """
80
+ 重置 ContextVar 到设置前的值。
81
+
82
+ 注意:这不是真正的 reset,仅用于兼容 API。
83
+ """
84
+ self._local.value = token._value
85
+
86
+
87
+ __all__ = ['ContextVar', 'Context', 'copy_context', 'Token']
@@ -32,7 +32,7 @@ import time
32
32
  import tkinter as tk
33
33
  from collections import deque
34
34
  from ctypes import wintypes as wt
35
- from ....core.dataclass_compat import dataclass
35
+ from ...core.dataclass_compat import dataclass
36
36
  from datetime import datetime
37
37
  from enum import IntEnum
38
38
  from typing import (
@@ -30,7 +30,7 @@ import threading
30
30
  import time
31
31
  from collections import deque
32
32
  from ctypes import wintypes as wt
33
- from ....core.dataclass_compat import dataclass
33
+ from ...core.dataclass_compat import dataclass
34
34
  from datetime import datetime
35
35
  from enum import IntEnum
36
36
  from typing import (
@@ -30,7 +30,7 @@ import threading
30
30
  import time
31
31
  from collections import deque
32
32
  from ctypes import wintypes as wt
33
- from ....core.dataclass_compat import dataclass
33
+ from ...core.dataclass_compat import dataclass
34
34
  from datetime import datetime
35
35
  from enum import IntEnum
36
36
  from typing import (
@@ -12,7 +12,7 @@ import logging
12
12
  import pickle
13
13
  import sys
14
14
  import time
15
- from ....core.dataclass_compat import dataclass, field, asdict
15
+ from ...core.dataclass_compat import dataclass, field, asdict
16
16
  from enum import IntEnum, IntFlag
17
17
  from typing import (
18
18
  Any, Callable, Dict, List, Optional, Tuple,
@@ -878,7 +878,7 @@ class KeyboardDispatcher:
878
878
  tags: Tuple[str, ...] = (),
879
879
  metadata: Optional[Dict[str, Any]] = None,
880
880
  ) -> None:
881
- from ...core.subject import Subject
881
+ from ..core.subject import Subject
882
882
  self._backend_name: str = ""
883
883
  self._backend: Optional[_BaseBackend] = None
884
884
  self._filter_self = bool(filter_self)
@@ -1268,7 +1268,7 @@ class _WriteKeyboardOperator:
1268
1268
  else:
1269
1269
  self._dispatcher.release(key)
1270
1270
 
1271
- from ..reactive import operators as _ops
1271
+ from ...reactive import operators as _ops
1272
1272
  return source.pipe(
1273
1273
  _ops.map(lambda x: (on_next(x) or x))
1274
1274
  )
@@ -11,7 +11,7 @@ import logging
11
11
  import pickle
12
12
  import sys
13
13
  import time
14
- from ....core.dataclass_compat import dataclass, field, asdict
14
+ from ...core.dataclass_compat import dataclass, field, asdict
15
15
  from enum import IntEnum
16
16
  from typing import (
17
17
  Any, Callable, Dict, List, Optional, Tuple,
@@ -804,7 +804,7 @@ class MouseDispatcher:
804
804
  tags: Tuple[str, ...] = (),
805
805
  metadata: Optional[Dict[str, Any]] = None,
806
806
  ) -> None:
807
- from ...core.subject import Subject
807
+ from ..core.subject import Subject
808
808
  self._backend_name: str = ""
809
809
  self._backend: Optional[_BaseBackend] = None
810
810
  self._filter_self = bool(filter_self)
@@ -1260,7 +1260,7 @@ class _WriteMouseOperator:
1260
1260
  elif et in ("scroll", "SCROLL"):
1261
1261
  self._dispatcher.scroll(item.get("delta", 1))
1262
1262
 
1263
- from ..reactive import operators as _ops
1263
+ from ...reactive import operators as _ops
1264
1264
  return source.pipe(
1265
1265
  _ops.map(lambda x: (on_next(x) or x))
1266
1266
  )
@@ -52,7 +52,7 @@ def from_range(start: int, stop: int = None, step: int = 1) -> Callable:
52
52
  except Exception as e:
53
53
  observer.on_error(e)
54
54
 
55
- from .observable import Subscription
55
+ from ..core.observable import Subscription
56
56
  return Subscription(lambda: None)
57
57
 
58
58
  return Observable(subscribe)
@@ -176,7 +176,7 @@ def sample(period: float) -> Callable:
176
176
  task[0].cancel()
177
177
  source_sub.unsubscribe()
178
178
 
179
- from .observable import Subscription
179
+ from ..core.observable import Subscription
180
180
  return Subscription(unsubscribe)
181
181
 
182
182
  return Observable(subscribe)
@@ -306,7 +306,7 @@ def throttle_latest(period: float) -> Callable:
306
306
  task[0].cancel()
307
307
  source_sub.unsubscribe()
308
308
 
309
- from .observable import Subscription
309
+ from ..core.observable import Subscription
310
310
  return Subscription(unsubscribe)
311
311
 
312
312
  return Observable(subscribe)
@@ -457,7 +457,7 @@ def subscribe_on(scheduler) -> Callable:
457
457
 
458
458
  scheduler.schedule(subscribe_inner)
459
459
 
460
- from .observable import Subscription
460
+ from ..core.observable import Subscription
461
461
  return Subscription(lambda: None)
462
462
 
463
463
  return Observable(subscribe)
@@ -636,7 +636,7 @@ def flat_map_latest(fn: Callable[[T], Observable]) -> Callable:
636
636
  inner_sub[0].unsubscribe()
637
637
  source_sub.unsubscribe()
638
638
 
639
- from .observable import Subscription
639
+ from ..core.observable import Subscription
640
640
  return Subscription(unsubscribe)
641
641
 
642
642
  return Observable(subscribe)
@@ -735,7 +735,7 @@ def amb() -> Callable:
735
735
  if winner_sub[0]:
736
736
  winner_sub[0].unsubscribe()
737
737
 
738
- from .observable import Subscription
738
+ from ..core.observable import Subscription
739
739
  return Subscription(unsubscribe)
740
740
 
741
741
  return Observable(subscribe)
@@ -784,7 +784,7 @@ def switch() -> Callable:
784
784
  inner_sub[0].unsubscribe()
785
785
  source_sub.unsubscribe()
786
786
 
787
- from .observable import Subscription
787
+ from ..core.observable import Subscription
788
788
  return Subscription(unsubscribe)
789
789
 
790
790
  return Observable(subscribe)
@@ -800,7 +800,7 @@ class ConnectableObservable(Generic[T]):
800
800
  __slots__ = ('_source', '_subject', '_connection', '_ref_count')
801
801
 
802
802
  def __init__(self, source, subject=None):
803
- from .subject import Subject
803
+ from ..core.subject import Subject
804
804
  self._source = source
805
805
  self._subject = subject or Subject()
806
806
  self._connection = None
@@ -818,7 +818,7 @@ class ConnectableObservable(Generic[T]):
818
818
  connection = [None]
819
819
  subject = None
820
820
 
821
- from .subject import Subject
821
+ from ..core.subject import Subject
822
822
 
823
823
  def get_subject():
824
824
  nonlocal subject
@@ -843,7 +843,7 @@ class ConnectableObservable(Generic[T]):
843
843
  connection[0] = None
844
844
  subject = None
845
845
 
846
- from .observable import Subscription
846
+ from ..core.observable import Subscription
847
847
  return Subscription(unsubscribe)
848
848
 
849
849
  from ..core.observable import Observable
@@ -856,7 +856,7 @@ class ConnectableObservable(Generic[T]):
856
856
  def operator(source):
857
857
  subject = None
858
858
 
859
- from .subject import Subject
859
+ from ..core.subject import Subject
860
860
 
861
861
  def subscribe(observer):
862
862
  nonlocal subject
@@ -1248,7 +1248,7 @@ def cache(duration: float = None, max_size: int = None) -> Callable:
1248
1248
  if sub in subscriptions:
1249
1249
  subscriptions.remove(sub)
1250
1250
 
1251
- from .observable import Subscription
1251
+ from ..core.observable import Subscription
1252
1252
  return Subscription(unsubscribe)
1253
1253
 
1254
1254
  return Observable(subscribe)
@@ -1325,7 +1325,7 @@ def parallel(max_concurrent: int = 4) -> Callable:
1325
1325
  executor.shutdown(wait=False)
1326
1326
  source_sub.unsubscribe()
1327
1327
 
1328
- from .observable import Subscription
1328
+ from ..core.observable import Subscription
1329
1329
  return Subscription(unsubscribe)
1330
1330
 
1331
1331
  return Observable(subscribe)
@@ -2073,7 +2073,7 @@ def lazy_flat_map(lazy_fn: Callable[[T], Any] = None, **kwargs) -> Callable[[Obs
2073
2073
  def seq_bridge(seq_op: Callable) -> Callable[[Observable[T]], Observable[Any]]:
2074
2074
  """Seq 操作桥接器"""
2075
2075
  def operator(source: Observable[T]) -> Observable[Any]:
2076
- from ..data import Seq
2076
+ from ...data import Seq
2077
2077
 
2078
2078
  def subscribe(observer: Observer[Any]) -> Subscription:
2079
2079
  buf = []
@@ -3,9 +3,11 @@
3
3
 
4
4
  提供 contextvars.ContextVar 机制,让 __getstate__ 方法感知当前序列化协议。
5
5
  Serializer.dumps/loads 在调用后端前设置上下文,调用后重置。
6
+
7
+ 注意:Python 3.6 使用兼容实现,不是 async-safe 的。
6
8
  """
7
9
 
8
- import contextvars
10
+ from vools.core.contextvars_compat import ContextVar
9
11
  from ..core import dataclass
10
12
  from typing import Optional, Any
11
13
  __all__ = ['SerializeContext', 'get_context', 'get_protocol', 'set_context', 'reset_context', 'get_current_serializer']
@@ -18,10 +20,8 @@ class SerializeContext:
18
20
  serializer: Optional[Any] = None # Serializer 实例引用(用于 handler 回退)
19
21
 
20
22
 
21
- # 使用 contextvars 保证 async-safe
22
- _ctx: contextvars.ContextVar[Optional[SerializeContext]] = contextvars.ContextVar(
23
- 'vools_serialize_ctx', default=None
24
- )
23
+ # 使用 ContextVar 保证线程内上下文隔离
24
+ _ctx = ContextVar('vools_serialize_ctx', default=None)
25
25
 
26
26
 
27
27
  def get_context() -> Optional[SerializeContext]:
@@ -8,6 +8,7 @@ vools.sql.core.decorators - SQL 装饰器
8
8
  import functools
9
9
  import inspect
10
10
  import typing
11
+ import sys
11
12
 
12
13
  from .types import SqlTypeMapper
13
14
  from .result import ResultSet, Row
@@ -16,6 +17,19 @@ from .result import ResultSet, Row
16
17
  _FUNC_NAME_ATTR = '_sql_func_name'
17
18
  _SQL_INFO_ATTR = '_sql_info'
18
19
 
20
+ # Python 3.6 兼容:typing.get_origin/get_args 是 3.8+ 才有的
21
+ if sys.version_info >= (3, 8):
22
+ _get_origin = typing.get_origin
23
+ _get_args = typing.get_args
24
+ else:
25
+ def _get_origin(tp):
26
+ """获取类型的 origin(兼容 Python 3.6)"""
27
+ return getattr(tp, '__origin__', None)
28
+
29
+ def _get_args(tp):
30
+ """获取类型的 args(兼容 Python 3.6)"""
31
+ return getattr(tp, '__args__', None)
32
+
19
33
 
20
34
  def _get_signature_info(func):
21
35
  """
@@ -125,8 +139,8 @@ def _convert_result(result, return_type):
125
139
  if not isinstance(result, ResultSet):
126
140
  return SqlTypeMapper.convert_result(result, return_type)
127
141
 
128
- origin = typing.get_origin(return_type)
129
- args = typing.get_args(return_type)
142
+ origin = _get_origin(return_type)
143
+ args = _get_args(return_type)
130
144
 
131
145
  if return_type is list or origin is list:
132
146
  return result.to_list()
@@ -36,7 +36,7 @@ import json
36
36
  import importlib
37
37
  from typing import Dict, List, Optional, Type, Any
38
38
 
39
- from ...core.dataclass_compat import asdict
39
+ from ..core.dataclass_compat import asdict
40
40
 
41
41
  from .core.config import DialectConfig
42
42
  from .core.dialect import Dialect
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vools
3
- Version: 0.2.3
3
+ Version: 0.2.4
4
4
  Summary: Python 函数式编程工具集
5
5
  Author-email: Victor <victortop921129@gmail.com>
6
6
  License: Apache License
@@ -161,6 +161,7 @@ vools/core/__init__.py
161
161
  vools/core/asyncio_compat.py
162
162
  vools/core/base.py
163
163
  vools/core/config.py
164
+ vools/core/contextvars_compat.py
164
165
  vools/core/dataclass_compat.py
165
166
  vools/core/datetime_compat.py
166
167
  vools/core/exceptions.py
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes