datachain 0.8.6__tar.gz → 0.8.8__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.

Potentially problematic release.


This version of datachain might be problematic. Click here for more details.

Files changed (306) hide show
  1. {datachain-0.8.6 → datachain-0.8.8}/PKG-INFO +1 -1
  2. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/cache.py +3 -3
  3. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/catalog/catalog.py +1 -1
  4. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/client/azure.py +1 -1
  5. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/client/fsspec.py +1 -1
  6. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/client/gcs.py +1 -1
  7. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/client/s3.py +9 -6
  8. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/data_storage/sqlite.py +1 -1
  9. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/data_storage/warehouse.py +1 -1
  10. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/arrow.py +1 -1
  11. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/dc.py +15 -7
  12. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/hf.py +1 -1
  13. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/listing.py +1 -1
  14. datachain-0.8.8/src/datachain/progress.py +36 -0
  15. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/query/dataset.py +7 -2
  16. {datachain-0.8.6 → datachain-0.8.8}/src/datachain.egg-info/PKG-INFO +1 -1
  17. datachain-0.8.6/src/datachain/progress.py +0 -156
  18. {datachain-0.8.6 → datachain-0.8.8}/.cruft.json +0 -0
  19. {datachain-0.8.6 → datachain-0.8.8}/.gitattributes +0 -0
  20. {datachain-0.8.6 → datachain-0.8.8}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  21. {datachain-0.8.6 → datachain-0.8.8}/.github/ISSUE_TEMPLATE/empty_issue.md +0 -0
  22. {datachain-0.8.6 → datachain-0.8.8}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  23. {datachain-0.8.6 → datachain-0.8.8}/.github/codecov.yaml +0 -0
  24. {datachain-0.8.6 → datachain-0.8.8}/.github/dependabot.yml +0 -0
  25. {datachain-0.8.6 → datachain-0.8.8}/.github/workflows/benchmarks.yml +0 -0
  26. {datachain-0.8.6 → datachain-0.8.8}/.github/workflows/release.yml +0 -0
  27. {datachain-0.8.6 → datachain-0.8.8}/.github/workflows/tests-studio.yml +0 -0
  28. {datachain-0.8.6 → datachain-0.8.8}/.github/workflows/tests.yml +0 -0
  29. {datachain-0.8.6 → datachain-0.8.8}/.github/workflows/update-template.yaml +0 -0
  30. {datachain-0.8.6 → datachain-0.8.8}/.gitignore +0 -0
  31. {datachain-0.8.6 → datachain-0.8.8}/.pre-commit-config.yaml +0 -0
  32. {datachain-0.8.6 → datachain-0.8.8}/CODE_OF_CONDUCT.rst +0 -0
  33. {datachain-0.8.6 → datachain-0.8.8}/LICENSE +0 -0
  34. {datachain-0.8.6 → datachain-0.8.8}/README.rst +0 -0
  35. {datachain-0.8.6 → datachain-0.8.8}/docs/assets/captioned_cartoons.png +0 -0
  36. {datachain-0.8.6 → datachain-0.8.8}/docs/assets/datachain-white.svg +0 -0
  37. {datachain-0.8.6 → datachain-0.8.8}/docs/assets/datachain.svg +0 -0
  38. {datachain-0.8.6 → datachain-0.8.8}/docs/contributing.md +0 -0
  39. {datachain-0.8.6 → datachain-0.8.8}/docs/css/github-permalink-style.css +0 -0
  40. {datachain-0.8.6 → datachain-0.8.8}/docs/examples.md +0 -0
  41. {datachain-0.8.6 → datachain-0.8.8}/docs/index.md +0 -0
  42. {datachain-0.8.6 → datachain-0.8.8}/docs/overrides/main.html +0 -0
  43. {datachain-0.8.6 → datachain-0.8.8}/docs/quick-start.md +0 -0
  44. {datachain-0.8.6 → datachain-0.8.8}/docs/references/datachain.md +0 -0
  45. {datachain-0.8.6 → datachain-0.8.8}/docs/references/datatype.md +0 -0
  46. {datachain-0.8.6 → datachain-0.8.8}/docs/references/file.md +0 -0
  47. {datachain-0.8.6 → datachain-0.8.8}/docs/references/index.md +0 -0
  48. {datachain-0.8.6 → datachain-0.8.8}/docs/references/sql.md +0 -0
  49. {datachain-0.8.6 → datachain-0.8.8}/docs/references/torch.md +0 -0
  50. {datachain-0.8.6 → datachain-0.8.8}/docs/references/udf.md +0 -0
  51. {datachain-0.8.6 → datachain-0.8.8}/docs/tutorials.md +0 -0
  52. {datachain-0.8.6 → datachain-0.8.8}/examples/computer_vision/iptc_exif_xmp_lib.py +0 -0
  53. {datachain-0.8.6 → datachain-0.8.8}/examples/computer_vision/llava2_image_desc_lib.py +0 -0
  54. {datachain-0.8.6 → datachain-0.8.8}/examples/computer_vision/openimage-detect.py +0 -0
  55. {datachain-0.8.6 → datachain-0.8.8}/examples/computer_vision/ultralytics-bbox.py +0 -0
  56. {datachain-0.8.6 → datachain-0.8.8}/examples/computer_vision/ultralytics-pose.py +0 -0
  57. {datachain-0.8.6 → datachain-0.8.8}/examples/computer_vision/ultralytics-segment.py +0 -0
  58. {datachain-0.8.6 → datachain-0.8.8}/examples/get_started/common_sql_functions.py +0 -0
  59. {datachain-0.8.6 → datachain-0.8.8}/examples/get_started/json-csv-reader.py +0 -0
  60. {datachain-0.8.6 → datachain-0.8.8}/examples/get_started/torch-loader.py +0 -0
  61. {datachain-0.8.6 → datachain-0.8.8}/examples/get_started/udfs/parallel.py +0 -0
  62. {datachain-0.8.6 → datachain-0.8.8}/examples/get_started/udfs/simple.py +0 -0
  63. {datachain-0.8.6 → datachain-0.8.8}/examples/get_started/udfs/stateful.py +0 -0
  64. {datachain-0.8.6 → datachain-0.8.8}/examples/llm_and_nlp/claude-query.py +0 -0
  65. {datachain-0.8.6 → datachain-0.8.8}/examples/llm_and_nlp/hf-dataset-llm-eval.py +0 -0
  66. {datachain-0.8.6 → datachain-0.8.8}/examples/llm_and_nlp/unstructured-embeddings-gen.py +0 -0
  67. {datachain-0.8.6 → datachain-0.8.8}/examples/llm_and_nlp/unstructured-summary-map.py +0 -0
  68. {datachain-0.8.6 → datachain-0.8.8}/examples/multimodal/clip_inference.py +0 -0
  69. {datachain-0.8.6 → datachain-0.8.8}/examples/multimodal/hf_pipeline.py +0 -0
  70. {datachain-0.8.6 → datachain-0.8.8}/examples/multimodal/openai_image_desc_lib.py +0 -0
  71. {datachain-0.8.6 → datachain-0.8.8}/examples/multimodal/wds.py +0 -0
  72. {datachain-0.8.6 → datachain-0.8.8}/examples/multimodal/wds_filtered.py +0 -0
  73. {datachain-0.8.6 → datachain-0.8.8}/mkdocs.yml +0 -0
  74. {datachain-0.8.6 → datachain-0.8.8}/noxfile.py +0 -0
  75. {datachain-0.8.6 → datachain-0.8.8}/pyproject.toml +0 -0
  76. {datachain-0.8.6 → datachain-0.8.8}/setup.cfg +0 -0
  77. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/__init__.py +0 -0
  78. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/__main__.py +0 -0
  79. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/asyn.py +0 -0
  80. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/catalog/__init__.py +0 -0
  81. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/catalog/datasource.py +0 -0
  82. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/catalog/loader.py +0 -0
  83. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/cli/__init__.py +0 -0
  84. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/cli/commands/__init__.py +0 -0
  85. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/cli/commands/datasets.py +0 -0
  86. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/cli/commands/du.py +0 -0
  87. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/cli/commands/index.py +0 -0
  88. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/cli/commands/ls.py +0 -0
  89. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/cli/commands/misc.py +0 -0
  90. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/cli/commands/query.py +0 -0
  91. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/cli/commands/show.py +0 -0
  92. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/cli/parser/__init__.py +0 -0
  93. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/cli/parser/job.py +0 -0
  94. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/cli/parser/studio.py +0 -0
  95. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/cli/parser/utils.py +0 -0
  96. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/cli/utils.py +0 -0
  97. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/client/__init__.py +0 -0
  98. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/client/fileslice.py +0 -0
  99. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/client/hf.py +0 -0
  100. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/client/local.py +0 -0
  101. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/config.py +0 -0
  102. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/data_storage/__init__.py +0 -0
  103. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/data_storage/db_engine.py +0 -0
  104. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/data_storage/job.py +0 -0
  105. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/data_storage/metastore.py +0 -0
  106. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/data_storage/schema.py +0 -0
  107. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/data_storage/serializer.py +0 -0
  108. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/dataset.py +0 -0
  109. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/diff/__init__.py +0 -0
  110. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/error.py +0 -0
  111. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/func/__init__.py +0 -0
  112. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/func/aggregate.py +0 -0
  113. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/func/array.py +0 -0
  114. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/func/base.py +0 -0
  115. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/func/conditional.py +0 -0
  116. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/func/func.py +0 -0
  117. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/func/numeric.py +0 -0
  118. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/func/path.py +0 -0
  119. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/func/random.py +0 -0
  120. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/func/string.py +0 -0
  121. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/func/window.py +0 -0
  122. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/job.py +0 -0
  123. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/__init__.py +0 -0
  124. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/clip.py +0 -0
  125. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/convert/__init__.py +0 -0
  126. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/convert/flatten.py +0 -0
  127. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/convert/python_to_sql.py +0 -0
  128. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/convert/sql_to_python.py +0 -0
  129. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/convert/unflatten.py +0 -0
  130. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/convert/values_to_tuples.py +0 -0
  131. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/data_model.py +0 -0
  132. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/dataset_info.py +0 -0
  133. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/file.py +0 -0
  134. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/image.py +0 -0
  135. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/listing.py +0 -0
  136. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/listing_info.py +0 -0
  137. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/meta_formats.py +0 -0
  138. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/model_store.py +0 -0
  139. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/pytorch.py +0 -0
  140. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/settings.py +0 -0
  141. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/signal_schema.py +0 -0
  142. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/tar.py +0 -0
  143. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/text.py +0 -0
  144. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/udf.py +0 -0
  145. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/udf_signature.py +0 -0
  146. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/utils.py +0 -0
  147. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/vfile.py +0 -0
  148. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/webdataset.py +0 -0
  149. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/lib/webdataset_laion.py +0 -0
  150. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/model/__init__.py +0 -0
  151. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/model/bbox.py +0 -0
  152. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/model/pose.py +0 -0
  153. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/model/segment.py +0 -0
  154. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/model/ultralytics/__init__.py +0 -0
  155. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/model/ultralytics/bbox.py +0 -0
  156. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/model/ultralytics/pose.py +0 -0
  157. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/model/ultralytics/segment.py +0 -0
  158. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/node.py +0 -0
  159. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/nodes_fetcher.py +0 -0
  160. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/nodes_thread_pool.py +0 -0
  161. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/py.typed +0 -0
  162. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/query/__init__.py +0 -0
  163. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/query/batch.py +0 -0
  164. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/query/dispatch.py +0 -0
  165. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/query/metrics.py +0 -0
  166. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/query/params.py +0 -0
  167. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/query/queue.py +0 -0
  168. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/query/schema.py +0 -0
  169. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/query/session.py +0 -0
  170. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/query/udf.py +0 -0
  171. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/query/utils.py +0 -0
  172. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/remote/__init__.py +0 -0
  173. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/remote/studio.py +0 -0
  174. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/sql/__init__.py +0 -0
  175. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/sql/default/__init__.py +0 -0
  176. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/sql/default/base.py +0 -0
  177. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/sql/functions/__init__.py +0 -0
  178. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/sql/functions/aggregate.py +0 -0
  179. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/sql/functions/array.py +0 -0
  180. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/sql/functions/conditional.py +0 -0
  181. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/sql/functions/numeric.py +0 -0
  182. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/sql/functions/path.py +0 -0
  183. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/sql/functions/random.py +0 -0
  184. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/sql/functions/string.py +0 -0
  185. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/sql/selectable.py +0 -0
  186. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/sql/sqlite/__init__.py +0 -0
  187. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/sql/sqlite/base.py +0 -0
  188. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/sql/sqlite/types.py +0 -0
  189. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/sql/sqlite/vector.py +0 -0
  190. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/sql/types.py +0 -0
  191. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/sql/utils.py +0 -0
  192. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/studio.py +0 -0
  193. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/telemetry.py +0 -0
  194. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/toolkit/__init__.py +0 -0
  195. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/toolkit/split.py +0 -0
  196. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/torch/__init__.py +0 -0
  197. {datachain-0.8.6 → datachain-0.8.8}/src/datachain/utils.py +0 -0
  198. {datachain-0.8.6 → datachain-0.8.8}/src/datachain.egg-info/SOURCES.txt +0 -0
  199. {datachain-0.8.6 → datachain-0.8.8}/src/datachain.egg-info/dependency_links.txt +0 -0
  200. {datachain-0.8.6 → datachain-0.8.8}/src/datachain.egg-info/entry_points.txt +0 -0
  201. {datachain-0.8.6 → datachain-0.8.8}/src/datachain.egg-info/requires.txt +0 -0
  202. {datachain-0.8.6 → datachain-0.8.8}/src/datachain.egg-info/top_level.txt +0 -0
  203. {datachain-0.8.6 → datachain-0.8.8}/tests/__init__.py +0 -0
  204. {datachain-0.8.6 → datachain-0.8.8}/tests/benchmarks/__init__.py +0 -0
  205. {datachain-0.8.6 → datachain-0.8.8}/tests/benchmarks/conftest.py +0 -0
  206. {datachain-0.8.6 → datachain-0.8.8}/tests/benchmarks/datasets/.dvc/.gitignore +0 -0
  207. {datachain-0.8.6 → datachain-0.8.8}/tests/benchmarks/datasets/.dvc/config +0 -0
  208. {datachain-0.8.6 → datachain-0.8.8}/tests/benchmarks/datasets/.gitignore +0 -0
  209. {datachain-0.8.6 → datachain-0.8.8}/tests/benchmarks/datasets/laion-tiny.npz.dvc +0 -0
  210. {datachain-0.8.6 → datachain-0.8.8}/tests/benchmarks/test_datachain.py +0 -0
  211. {datachain-0.8.6 → datachain-0.8.8}/tests/benchmarks/test_ls.py +0 -0
  212. {datachain-0.8.6 → datachain-0.8.8}/tests/benchmarks/test_version.py +0 -0
  213. {datachain-0.8.6 → datachain-0.8.8}/tests/conftest.py +0 -0
  214. {datachain-0.8.6 → datachain-0.8.8}/tests/data.py +0 -0
  215. {datachain-0.8.6 → datachain-0.8.8}/tests/examples/__init__.py +0 -0
  216. {datachain-0.8.6 → datachain-0.8.8}/tests/examples/test_examples.py +0 -0
  217. {datachain-0.8.6 → datachain-0.8.8}/tests/examples/test_wds_e2e.py +0 -0
  218. {datachain-0.8.6 → datachain-0.8.8}/tests/examples/wds_data.py +0 -0
  219. {datachain-0.8.6 → datachain-0.8.8}/tests/func/__init__.py +0 -0
  220. {datachain-0.8.6 → datachain-0.8.8}/tests/func/fake-service-account-credentials.json +0 -0
  221. {datachain-0.8.6 → datachain-0.8.8}/tests/func/test_catalog.py +0 -0
  222. {datachain-0.8.6 → datachain-0.8.8}/tests/func/test_client.py +0 -0
  223. {datachain-0.8.6 → datachain-0.8.8}/tests/func/test_datachain.py +0 -0
  224. {datachain-0.8.6 → datachain-0.8.8}/tests/func/test_dataset_query.py +0 -0
  225. {datachain-0.8.6 → datachain-0.8.8}/tests/func/test_datasets.py +0 -0
  226. {datachain-0.8.6 → datachain-0.8.8}/tests/func/test_feature_pickling.py +0 -0
  227. {datachain-0.8.6 → datachain-0.8.8}/tests/func/test_listing.py +0 -0
  228. {datachain-0.8.6 → datachain-0.8.8}/tests/func/test_ls.py +0 -0
  229. {datachain-0.8.6 → datachain-0.8.8}/tests/func/test_meta_formats.py +0 -0
  230. {datachain-0.8.6 → datachain-0.8.8}/tests/func/test_metrics.py +0 -0
  231. {datachain-0.8.6 → datachain-0.8.8}/tests/func/test_pull.py +0 -0
  232. {datachain-0.8.6 → datachain-0.8.8}/tests/func/test_pytorch.py +0 -0
  233. {datachain-0.8.6 → datachain-0.8.8}/tests/func/test_query.py +0 -0
  234. {datachain-0.8.6 → datachain-0.8.8}/tests/func/test_session.py +0 -0
  235. {datachain-0.8.6 → datachain-0.8.8}/tests/func/test_toolkit.py +0 -0
  236. {datachain-0.8.6 → datachain-0.8.8}/tests/scripts/feature_class.py +0 -0
  237. {datachain-0.8.6 → datachain-0.8.8}/tests/scripts/feature_class_exception.py +0 -0
  238. {datachain-0.8.6 → datachain-0.8.8}/tests/scripts/feature_class_parallel.py +0 -0
  239. {datachain-0.8.6 → datachain-0.8.8}/tests/scripts/feature_class_parallel_data_model.py +0 -0
  240. {datachain-0.8.6 → datachain-0.8.8}/tests/scripts/name_len_slow.py +0 -0
  241. {datachain-0.8.6 → datachain-0.8.8}/tests/test_atomicity.py +0 -0
  242. {datachain-0.8.6 → datachain-0.8.8}/tests/test_cli_e2e.py +0 -0
  243. {datachain-0.8.6 → datachain-0.8.8}/tests/test_cli_studio.py +0 -0
  244. {datachain-0.8.6 → datachain-0.8.8}/tests/test_query_e2e.py +0 -0
  245. {datachain-0.8.6 → datachain-0.8.8}/tests/test_telemetry.py +0 -0
  246. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/__init__.py +0 -0
  247. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/lib/__init__.py +0 -0
  248. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/lib/conftest.py +0 -0
  249. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/lib/test_arrow.py +0 -0
  250. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/lib/test_clip.py +0 -0
  251. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/lib/test_datachain.py +0 -0
  252. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/lib/test_datachain_bootstrap.py +0 -0
  253. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/lib/test_datachain_merge.py +0 -0
  254. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/lib/test_diff.py +0 -0
  255. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/lib/test_feature.py +0 -0
  256. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/lib/test_feature_utils.py +0 -0
  257. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/lib/test_file.py +0 -0
  258. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/lib/test_hf.py +0 -0
  259. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/lib/test_image.py +0 -0
  260. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/lib/test_listing_info.py +0 -0
  261. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/lib/test_models.py +0 -0
  262. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/lib/test_schema.py +0 -0
  263. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/lib/test_signal_schema.py +0 -0
  264. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/lib/test_sql_to_python.py +0 -0
  265. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/lib/test_text.py +0 -0
  266. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/lib/test_udf_signature.py +0 -0
  267. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/lib/test_utils.py +0 -0
  268. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/lib/test_webdataset.py +0 -0
  269. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/sql/__init__.py +0 -0
  270. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/sql/sqlite/__init__.py +0 -0
  271. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/sql/sqlite/test_types.py +0 -0
  272. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/sql/sqlite/test_utils.py +0 -0
  273. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/sql/test_array.py +0 -0
  274. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/sql/test_conditional.py +0 -0
  275. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/sql/test_path.py +0 -0
  276. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/sql/test_random.py +0 -0
  277. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/sql/test_selectable.py +0 -0
  278. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/sql/test_string.py +0 -0
  279. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_asyn.py +0 -0
  280. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_cache.py +0 -0
  281. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_catalog.py +0 -0
  282. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_catalog_loader.py +0 -0
  283. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_cli_parsing.py +0 -0
  284. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_client.py +0 -0
  285. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_client_gcs.py +0 -0
  286. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_client_s3.py +0 -0
  287. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_config.py +0 -0
  288. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_data_storage.py +0 -0
  289. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_database_engine.py +0 -0
  290. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_dataset.py +0 -0
  291. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_diff.py +0 -0
  292. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_dispatch.py +0 -0
  293. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_fileslice.py +0 -0
  294. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_func.py +0 -0
  295. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_listing.py +0 -0
  296. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_metastore.py +0 -0
  297. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_module_exports.py +0 -0
  298. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_pytorch.py +0 -0
  299. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_query.py +0 -0
  300. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_query_metrics.py +0 -0
  301. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_query_params.py +0 -0
  302. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_serializer.py +0 -0
  303. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_session.py +0 -0
  304. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_utils.py +0 -0
  305. {datachain-0.8.6 → datachain-0.8.8}/tests/unit/test_warehouse.py +0 -0
  306. {datachain-0.8.6 → datachain-0.8.8}/tests/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: datachain
3
- Version: 0.8.6
3
+ Version: 0.8.8
4
4
  Summary: Wrangle unstructured AI data at scale
5
5
  Author-email: Dmitry Petrov <support@dvc.org>
6
6
  License: Apache-2.0
@@ -9,8 +9,6 @@ from dvc_objects.fs.local import LocalFileSystem
9
9
  from dvc_objects.fs.utils import remove
10
10
  from fsspec.callbacks import Callback, TqdmCallback
11
11
 
12
- from .progress import Tqdm
13
-
14
12
  if TYPE_CHECKING:
15
13
  from datachain.client import Client
16
14
  from datachain.lib.file import File
@@ -86,9 +84,11 @@ class DataChainCache:
86
84
  size = file.size
87
85
  if size < 0:
88
86
  size = await client.get_size(from_path, version_id=file.version)
87
+ from tqdm.auto import tqdm
88
+
89
89
  cb = callback or TqdmCallback(
90
90
  tqdm_kwargs={"desc": odb_fs.name(from_path), "bytes": True, "leave": False},
91
- tqdm_cls=Tqdm,
91
+ tqdm_cls=tqdm,
92
92
  size=size,
93
93
  )
94
94
  try:
@@ -28,7 +28,7 @@ import requests
28
28
  import sqlalchemy as sa
29
29
  import yaml
30
30
  from sqlalchemy import Column
31
- from tqdm import tqdm
31
+ from tqdm.auto import tqdm
32
32
 
33
33
  from datachain.cache import DataChainCache
34
34
  from datachain.client import Client
@@ -2,7 +2,7 @@ from typing import Any, Optional
2
2
  from urllib.parse import parse_qs, urlsplit, urlunsplit
3
3
 
4
4
  from adlfs import AzureBlobFileSystem
5
- from tqdm import tqdm
5
+ from tqdm.auto import tqdm
6
6
 
7
7
  from datachain.lib.file import File
8
8
 
@@ -23,7 +23,7 @@ from botocore.exceptions import ClientError
23
23
  from dvc_objects.fs.system import reflink
24
24
  from fsspec.asyn import get_loop, sync
25
25
  from fsspec.callbacks import DEFAULT_CALLBACK, Callback
26
- from tqdm import tqdm
26
+ from tqdm.auto import tqdm
27
27
 
28
28
  from datachain.cache import DataChainCache
29
29
  from datachain.client.fileslice import FileWrapper
@@ -7,7 +7,7 @@ from typing import Any, Optional, cast
7
7
 
8
8
  from dateutil.parser import isoparse
9
9
  from gcsfs import GCSFileSystem
10
- from tqdm import tqdm
10
+ from tqdm.auto import tqdm
11
11
 
12
12
  from datachain.lib.file import File
13
13
 
@@ -5,7 +5,7 @@ from urllib.parse import parse_qs, urlsplit, urlunsplit
5
5
 
6
6
  from botocore.exceptions import NoCredentialsError
7
7
  from s3fs import S3FileSystem
8
- from tqdm import tqdm
8
+ from tqdm.auto import tqdm
9
9
 
10
10
  from datachain.lib.file import File
11
11
 
@@ -32,17 +32,20 @@ class ClientS3(Client):
32
32
  if "aws_token" in kwargs:
33
33
  kwargs.setdefault("token", kwargs.pop("aws_token"))
34
34
 
35
+ # We want to use newer v4 signature version since regions added after
36
+ # 2014 are not going to support v2 which is the older one.
37
+ # All regions support v4.
38
+ kwargs.setdefault("config_kwargs", {}).setdefault("signature_version", "s3v4")
39
+
40
+ if "region_name" in kwargs:
41
+ kwargs["config_kwargs"].setdefault("region_name", kwargs.pop("region_name"))
42
+
35
43
  # remove this `if` when https://github.com/fsspec/s3fs/pull/929 lands
36
44
  if not os.environ.get("AWS_REGION") and not os.environ.get("AWS_ENDPOINT_URL"):
37
45
  # caching bucket regions to use the right one in signed urls, otherwise
38
46
  # it tries to randomly guess and creates wrong signature
39
47
  kwargs.setdefault("cache_regions", True)
40
48
 
41
- # We want to use newer v4 signature version since regions added after
42
- # 2014 are not going to support v2 which is the older one.
43
- # All regions support v4.
44
- kwargs.setdefault("config_kwargs", {}).setdefault("signature_version", "s3v4")
45
-
46
49
  if not kwargs.get("anon"):
47
50
  try:
48
51
  # Run an inexpensive check to see if credentials are available
@@ -21,7 +21,7 @@ from sqlalchemy.schema import CreateIndex, CreateTable, DropTable
21
21
  from sqlalchemy.sql import func
22
22
  from sqlalchemy.sql.expression import bindparam, cast
23
23
  from sqlalchemy.sql.selectable import Select
24
- from tqdm import tqdm
24
+ from tqdm.auto import tqdm
25
25
 
26
26
  import datachain.sql.sqlite
27
27
  from datachain.data_storage import AbstractDBMetastore, AbstractWarehouse
@@ -14,7 +14,7 @@ import sqlalchemy as sa
14
14
  from sqlalchemy import Table, case, select
15
15
  from sqlalchemy.sql import func
16
16
  from sqlalchemy.sql.expression import true
17
- from tqdm import tqdm
17
+ from tqdm.auto import tqdm
18
18
 
19
19
  from datachain.client import Client
20
20
  from datachain.data_storage.schema import convert_rows_custom_column_types
@@ -7,7 +7,7 @@ import orjson
7
7
  import pyarrow as pa
8
8
  from fsspec.core import split_protocol
9
9
  from pyarrow.dataset import CsvFileFormat, dataset
10
- from tqdm import tqdm
10
+ from tqdm.auto import tqdm
11
11
 
12
12
  from datachain.lib.data_model import dict_to_data_model
13
13
  from datachain.lib.file import ArrowRow, File
@@ -1330,19 +1330,27 @@ class DataChain:
1330
1330
 
1331
1331
  Parameters:
1332
1332
  right_ds: Chain to join with.
1333
- on: Predicate or list of Predicates to join on. If both chains have the
1334
- same predicates then this predicate is enough for the join. Otherwise,
1335
- `right_on` parameter has to specify the predicates for the other chain.
1336
- right_on: Optional predicate or list of Predicates
1337
- for the `right_ds` to join.
1333
+ on: Predicate ("column.name", C("column.name"), or Func) or list of
1334
+ Predicates to join on. If both chains have the same predicates then
1335
+ this predicate is enough for the join. Otherwise, `right_on` parameter
1336
+ has to specify the predicates for the other chain.
1337
+ right_on: Optional predicate or list of Predicates for the `right_ds`
1338
+ to join.
1338
1339
  inner (bool): Whether to run inner join or outer join.
1339
- rname (str): name prefix for conflicting signal names.
1340
+ rname (str): Name prefix for conflicting signal names.
1340
1341
 
1341
- Example:
1342
+ Examples:
1342
1343
  ```py
1343
1344
  meta = meta_emd.merge(meta_pq, on=(C.name, C.emd__index),
1344
1345
  right_on=(C.name, C.pq__index))
1345
1346
  ```
1347
+
1348
+ ```py
1349
+ imgs.merge(captions,
1350
+ on=func.path.file_stem(imgs.c("file.path")),
1351
+ right_on=func.path.file_stem(captions.c("file.path"))
1352
+ ```
1353
+ )
1346
1354
  """
1347
1355
  if on is None:
1348
1356
  raise DatasetMergeError(["None"], None, "'on' must be specified")
@@ -29,7 +29,7 @@ from io import BytesIO
29
29
  from typing import TYPE_CHECKING, Any, Union
30
30
 
31
31
  import PIL
32
- from tqdm import tqdm
32
+ from tqdm.auto import tqdm
33
33
 
34
34
  from datachain.lib.arrow import arrow_type_mapper
35
35
  from datachain.lib.data_model import DataModel, DataType, dict_to_data_model
@@ -7,7 +7,7 @@ from typing import TYPE_CHECKING, Optional
7
7
 
8
8
  from sqlalchemy import Column
9
9
  from sqlalchemy.sql import func
10
- from tqdm import tqdm
10
+ from tqdm.auto import tqdm
11
11
 
12
12
  from datachain.node import DirType, Node, NodeWithPath
13
13
  from datachain.sql.functions import path as pathfunc
@@ -0,0 +1,36 @@
1
+ """Manages progress bars."""
2
+
3
+ import logging
4
+ from threading import RLock
5
+
6
+ from fsspec import Callback
7
+ from fsspec.callbacks import TqdmCallback
8
+ from tqdm.auto import tqdm
9
+
10
+ logger = logging.getLogger(__name__)
11
+ tqdm.set_lock(RLock())
12
+
13
+
14
+ class CombinedDownloadCallback(Callback):
15
+ def set_size(self, size):
16
+ # This is a no-op to prevent fsspec's .get_file() from setting the combined
17
+ # download size to the size of the current file.
18
+ pass
19
+
20
+ def increment_file_count(self, n: int = 1) -> None:
21
+ pass
22
+
23
+
24
+ class TqdmCombinedDownloadCallback(CombinedDownloadCallback, TqdmCallback):
25
+ def __init__(self, tqdm_kwargs=None, *args, **kwargs):
26
+ self.files_count = 0
27
+ tqdm_kwargs = tqdm_kwargs or {}
28
+ tqdm_kwargs.setdefault("postfix", {}).setdefault("files", self.files_count)
29
+ kwargs = kwargs or {}
30
+ kwargs["tqdm_cls"] = tqdm
31
+ super().__init__(tqdm_kwargs, *args, **kwargs)
32
+
33
+ def increment_file_count(self, n: int = 1) -> None:
34
+ self.files_count += n
35
+ if self.tqdm is not None:
36
+ self.tqdm.postfix = f"{self.files_count} files"
@@ -33,6 +33,7 @@ from sqlalchemy.sql.elements import ColumnClause, ColumnElement
33
33
  from sqlalchemy.sql.expression import label
34
34
  from sqlalchemy.sql.schema import TableClause
35
35
  from sqlalchemy.sql.selectable import Select
36
+ from tqdm.auto import tqdm
36
37
 
37
38
  from datachain.asyn import ASYNC_WORKERS, AsyncMapper, OrderedMapper
38
39
  from datachain.catalog.catalog import clone_catalog_with_cache
@@ -366,12 +367,16 @@ def get_download_callback(suffix: str = "", **kwargs) -> CombinedDownloadCallbac
366
367
 
367
368
 
368
369
  def get_processed_callback() -> Callback:
369
- return TqdmCallback({"desc": "Processed", "unit": " rows", "leave": False})
370
+ return TqdmCallback(
371
+ {"desc": "Processed", "unit": " rows", "leave": False}, tqdm_cls=tqdm
372
+ )
370
373
 
371
374
 
372
375
  def get_generated_callback(is_generator: bool = False) -> Callback:
373
376
  if is_generator:
374
- return TqdmCallback({"desc": "Generated", "unit": " rows", "leave": False})
377
+ return TqdmCallback(
378
+ {"desc": "Generated", "unit": " rows", "leave": False}, tqdm_cls=tqdm
379
+ )
375
380
  return DEFAULT_CALLBACK
376
381
 
377
382
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: datachain
3
- Version: 0.8.6
3
+ Version: 0.8.8
4
4
  Summary: Wrangle unstructured AI data at scale
5
5
  Author-email: Dmitry Petrov <support@dvc.org>
6
6
  License: Apache-2.0
@@ -1,156 +0,0 @@
1
- """Manages progress bars."""
2
-
3
- import logging
4
- import sys
5
- from threading import RLock
6
- from typing import Any, ClassVar
7
-
8
- from fsspec import Callback
9
- from fsspec.callbacks import TqdmCallback
10
- from tqdm import tqdm
11
-
12
- from datachain.utils import env2bool
13
-
14
- logger = logging.getLogger(__name__)
15
- tqdm.set_lock(RLock())
16
-
17
-
18
- class Tqdm(tqdm):
19
- """
20
- maximum-compatibility tqdm-based progressbars
21
- """
22
-
23
- BAR_FMT_DEFAULT = (
24
- "{percentage:3.0f}% {desc}|{bar}|"
25
- "{postfix[info]}{n_fmt}/{total_fmt}"
26
- " [{elapsed}<{remaining}, {rate_fmt:>11}]"
27
- )
28
- # nested bars should have fixed bar widths to align nicely
29
- BAR_FMT_DEFAULT_NESTED = (
30
- "{percentage:3.0f}%|{bar:10}|{desc:{ncols_desc}.{ncols_desc}}"
31
- "{postfix[info]}{n_fmt}/{total_fmt}"
32
- " [{elapsed}<{remaining}, {rate_fmt:>11}]"
33
- )
34
- BAR_FMT_NOTOTAL = "{desc}{bar:b}|{postfix[info]}{n_fmt} [{elapsed}, {rate_fmt:>11}]"
35
- BYTES_DEFAULTS: ClassVar[dict[str, Any]] = {
36
- "unit": "B",
37
- "unit_scale": True,
38
- "unit_divisor": 1024,
39
- "miniters": 1,
40
- }
41
-
42
- def __init__(
43
- self,
44
- iterable=None,
45
- disable=None,
46
- level=logging.ERROR,
47
- desc=None,
48
- leave=False,
49
- bar_format=None,
50
- bytes=False,
51
- file=None,
52
- total=None,
53
- postfix=None,
54
- **kwargs,
55
- ):
56
- """
57
- bytes : shortcut for
58
- `unit='B', unit_scale=True, unit_divisor=1024, miniters=1`
59
- desc : persists after `close()`
60
- level : effective logging level for determining `disable`;
61
- used only if `disable` is unspecified
62
- disable : If (default: None) or False,
63
- will be determined by logging level.
64
- May be overridden to `True` due to non-TTY status.
65
- Skip override by specifying env var `DATACHAIN_IGNORE_ISATTY`.
66
- kwargs : anything accepted by `tqdm.tqdm()`
67
- """
68
- kwargs = kwargs.copy()
69
- if bytes:
70
- kwargs = self.BYTES_DEFAULTS | kwargs
71
- else:
72
- kwargs.setdefault("unit_scale", total > 999 if total else True)
73
- if file is None:
74
- file = sys.stderr
75
- # auto-disable based on `logger.level`
76
- if not disable:
77
- disable = logger.getEffectiveLevel() > level
78
- # auto-disable based on TTY
79
- if (
80
- not disable
81
- and not env2bool("DATACHAIN_IGNORE_ISATTY")
82
- and hasattr(file, "isatty")
83
- ):
84
- disable = not file.isatty()
85
- super().__init__(
86
- iterable=iterable,
87
- disable=disable,
88
- leave=leave,
89
- desc=desc,
90
- bar_format="!",
91
- lock_args=(False,),
92
- total=total,
93
- **kwargs,
94
- )
95
- self.postfix = postfix or {"info": ""}
96
- if bar_format is None:
97
- if self.__len__():
98
- self.bar_format = (
99
- self.BAR_FMT_DEFAULT_NESTED if self.pos else self.BAR_FMT_DEFAULT
100
- )
101
- else:
102
- self.bar_format = self.BAR_FMT_NOTOTAL
103
- else:
104
- self.bar_format = bar_format
105
- self.refresh()
106
-
107
- def close(self):
108
- self.postfix["info"] = ""
109
- # remove ETA (either unknown or zero); remove completed bar
110
- self.bar_format = self.bar_format.replace("<{remaining}", "").replace(
111
- "|{bar:10}|", " "
112
- )
113
- super().close()
114
-
115
- @property
116
- def format_dict(self):
117
- """inject `ncols_desc` to fill the display width (`ncols`)"""
118
- d = super().format_dict
119
- ncols = d["ncols"] or 80
120
- # assumes `bar_format` has max one of ("ncols_desc" & "ncols_info")
121
-
122
- meter = self.format_meter( # type: ignore[call-arg]
123
- ncols_desc=1, ncols_info=1, **d
124
- )
125
- ncols_left = ncols - len(meter) + 1
126
- ncols_left = max(ncols_left, 0)
127
- if ncols_left:
128
- d["ncols_desc"] = d["ncols_info"] = ncols_left
129
- else:
130
- # work-around for zero-width description
131
- d["ncols_desc"] = d["ncols_info"] = 1
132
- d["prefix"] = ""
133
- return d
134
-
135
-
136
- class CombinedDownloadCallback(Callback):
137
- def set_size(self, size):
138
- # This is a no-op to prevent fsspec's .get_file() from setting the combined
139
- # download size to the size of the current file.
140
- pass
141
-
142
- def increment_file_count(self, n: int = 1) -> None:
143
- pass
144
-
145
-
146
- class TqdmCombinedDownloadCallback(CombinedDownloadCallback, TqdmCallback):
147
- def __init__(self, tqdm_kwargs=None, *args, **kwargs):
148
- self.files_count = 0
149
- tqdm_kwargs = tqdm_kwargs or {}
150
- tqdm_kwargs.setdefault("postfix", {}).setdefault("files", self.files_count)
151
- super().__init__(tqdm_kwargs, *args, **kwargs)
152
-
153
- def increment_file_count(self, n: int = 1) -> None:
154
- self.files_count += n
155
- if self.tqdm is not None:
156
- self.tqdm.postfix = f"{self.files_count} files"
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