chutils 3.2.0__tar.gz → 3.3.1__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 (571) hide show
  1. {chutils-3.2.0 → chutils-3.3.1}/.chutilsignore +6 -6
  2. {chutils-3.2.0 → chutils-3.3.1}/PKG-INFO +4 -1
  3. {chutils-3.2.0 → chutils-3.3.1}/ai-lint.toml +6 -2
  4. {chutils-3.2.0 → chutils-3.3.1}/api_map.md +226 -212
  5. {chutils-3.2.0/conductor/tracks → chutils-3.3.1/conductor/archive}/dev_clean_20260707/plan.md +35 -35
  6. {chutils-3.2.0/conductor/archive/audit_20260702 → chutils-3.3.1/conductor/archive/http_streaming_20260720}/index.md +1 -1
  7. chutils-3.3.1/conductor/archive/http_streaming_20260720/metadata.json +8 -0
  8. chutils-3.3.1/conductor/archive/http_streaming_20260720/plan.md +34 -0
  9. chutils-3.3.1/conductor/archive/http_streaming_20260720/spec.md +36 -0
  10. {chutils-3.2.0/conductor/archive/db_manager_20260707 → chutils-3.3.1/conductor/archive/nodriver_interactions_20260720}/index.md +1 -1
  11. chutils-3.3.1/conductor/archive/nodriver_interactions_20260720/metadata.json +8 -0
  12. chutils-3.3.1/conductor/archive/nodriver_interactions_20260720/plan.md +30 -0
  13. chutils-3.3.1/conductor/archive/nodriver_interactions_20260720/spec.md +36 -0
  14. {chutils-3.2.0/conductor/archive/bulkhead_20260702 → chutils-3.3.1/conductor/archive/profile_warmer_20260720}/index.md +1 -1
  15. chutils-3.3.1/conductor/archive/profile_warmer_20260720/metadata.json +8 -0
  16. chutils-3.3.1/conductor/archive/profile_warmer_20260720/plan.md +31 -0
  17. chutils-3.3.1/conductor/archive/profile_warmer_20260720/spec.md +39 -0
  18. {chutils-3.2.0/conductor/tracks → chutils-3.3.1/conductor/archive}/store_20260702/plan.md +25 -25
  19. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks.md +4 -18
  20. {chutils-3.2.0 → chutils-3.3.1}/conductor/workflow.md +4 -0
  21. {chutils-3.2.0 → chutils-3.3.1}/docs/audit.md +119 -119
  22. {chutils-3.2.0 → chutils-3.3.1}/docs/cli/db.md +73 -73
  23. {chutils-3.2.0 → chutils-3.3.1}/docs/cli/dev.md +47 -0
  24. {chutils-3.2.0 → chutils-3.3.1}/docs/dependencies.md +8 -7
  25. chutils-3.3.1/docs/http.md +154 -0
  26. {chutils-3.2.0 → chutils-3.3.1}/docs/recipes.md +52 -4
  27. {chutils-3.2.0 → chutils-3.3.1}/docs/scraping.md +93 -2
  28. chutils-3.3.1/docs/store.md +98 -0
  29. {chutils-3.2.0 → chutils-3.3.1}/examples/16_cloud_secret_managers.py +76 -76
  30. {chutils-3.2.0 → chutils-3.3.1}/project_index.json +4292 -751
  31. {chutils-3.2.0 → chutils-3.3.1}/pyproject.toml +4 -1
  32. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/__init__.py +16 -0
  33. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/__init__.pyi +144 -11
  34. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/audit/__init__.py +44 -44
  35. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/audit/_hash.py +22 -22
  36. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/audit/api.py +193 -193
  37. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/audit/backends/__init__.py +6 -6
  38. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/audit/backends/base.py +46 -46
  39. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/audit/backends/file.py +123 -123
  40. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/audit/backends/postgres.py +224 -224
  41. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/audit/backends/sqlite.py +200 -200
  42. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/audit/schema.py +116 -116
  43. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/cache/base.py +35 -3
  44. chutils-3.3.1/src/chutils/cache/decorator.py +164 -0
  45. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/cache/in_memory.py +78 -7
  46. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/commands/dev/__init__.py +88 -0
  47. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/commands/dev/ai_lint.py +37 -0
  48. chutils-3.3.1/src/chutils/commands/dev/clean.py +124 -0
  49. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/commands/dev/dashboard.py +40 -40
  50. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/commands/dev/generate_context.py +98 -0
  51. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/commands/dev/hooks.py +41 -17
  52. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/commands/dev/profile_imports.py +47 -47
  53. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/commands/dev/setup_github_actions.py +147 -147
  54. chutils-3.3.1/src/chutils/commands/init.py +366 -0
  55. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/config/custom_providers.py +1 -1
  56. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/config/dev.py +125 -1
  57. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/config/getters.py +25 -15
  58. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/config/manager.py +1 -1
  59. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/config/utils.py +92 -0
  60. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/crypto.py +19 -4
  61. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/db.py +267 -267
  62. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/decorators.py +1 -1
  63. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/__init__.py +4 -1
  64. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/ai_lint.py +189 -33
  65. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/ast_indexer.py +1 -1
  66. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/changelog_parser.py +194 -194
  67. chutils-3.3.1/src/chutils/dev/cleaner.py +221 -0
  68. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/dashboard/__init__.py +20 -20
  69. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/dashboard/indexer.py +218 -218
  70. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/dashboard/input.py +146 -146
  71. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/dashboard/tui.py +593 -593
  72. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/github_actions.py +91 -91
  73. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/profile_imports.py +351 -351
  74. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/project_metadata.py +42 -4
  75. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/rules/api_map.py +28 -11
  76. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/rules/decomposition.py +63 -6
  77. chutils-3.3.1/src/chutils/dev/rules/docstring.py +292 -0
  78. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/rules/integration.py +27 -9
  79. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/rules/upgrade_check.py +116 -116
  80. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/upgrade_client.py +121 -121
  81. chutils-3.3.1/src/chutils/dev/version_detector.py +292 -0
  82. chutils-3.3.1/src/chutils/di/__init__.pyi +39 -0
  83. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/di/container.py +93 -35
  84. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/events/core.py +1 -1
  85. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/exceptions/audit.py +15 -15
  86. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/http/__init__.py +63 -51
  87. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/http/api.py +167 -167
  88. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/http/client.py +678 -678
  89. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/http/fallback.py +455 -455
  90. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/http/resilience.py +402 -402
  91. chutils-3.3.1/src/chutils/http/streaming.py +529 -0
  92. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/http/tracing.py +139 -139
  93. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/lifecycle.py +1 -1
  94. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/logger/core.py +5 -2
  95. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/metrics/__init__.py +1 -1
  96. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/metrics/prometheus.py +1 -1
  97. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/plugins/core.py +1 -1
  98. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/scraping/humanize/__init__.py +38 -33
  99. chutils-3.3.1/src/chutils/scraping/humanize/actions.py +438 -0
  100. chutils-3.3.1/src/chutils/scraping/humanize/antidetect.py +221 -0
  101. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/scraping/humanize/math_utils.py +1 -1
  102. chutils-3.3.1/src/chutils/scraping/humanize/warmer.py +204 -0
  103. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/secret_manager/core.py +2 -2
  104. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/secret_manager/providers/__init__.py +1 -1
  105. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/secret_manager/providers/aws.py +134 -134
  106. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/secret_manager/providers/gcp.py +168 -168
  107. chutils-3.3.1/src/chutils/store/__init__.py +10 -0
  108. chutils-3.3.1/src/chutils/store/backends/__init__.py +11 -0
  109. chutils-3.3.1/src/chutils/store/backends/base.py +131 -0
  110. chutils-3.3.1/src/chutils/store/backends/memcached.py +211 -0
  111. chutils-3.3.1/src/chutils/store/backends/memory.py +156 -0
  112. chutils-3.3.1/src/chutils/store/backends/redis.py +191 -0
  113. chutils-3.3.1/src/chutils/store/decorator.py +84 -0
  114. chutils-3.3.1/src/chutils/store/manager.py +351 -0
  115. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/tasks/__init__.pyi +49 -49
  116. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/tasks/core.py +17 -16
  117. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/time.py +16 -5
  118. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/tracing.py +1 -1
  119. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/validation.py +5 -0
  120. {chutils-3.2.0 → chutils-3.3.1}/tests/integration/test_setup_github_actions_integration.py +35 -35
  121. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/cli/test_cli_dev_cmd.py +4 -4
  122. chutils-3.3.1/tests/unit/cli/test_cli_init_interactive.py +76 -0
  123. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/cli/test_cli_setup_github_actions.py +92 -92
  124. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/config/test_config_validation_group.py +11 -0
  125. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/core/test_cache.py +129 -0
  126. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/core/test_time.py +7 -0
  127. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/dev/test_ai_lint.py +200 -0
  128. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/dev/test_changelog_parser.py +95 -95
  129. chutils-3.3.1/tests/unit/dev/test_cleaner.py +188 -0
  130. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/dev/test_setup_github_actions.py +75 -75
  131. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/dev/test_upgrade_check_rule.py +55 -55
  132. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/dev/test_upgrade_client.py +106 -106
  133. chutils-3.3.1/tests/unit/dev/test_version_detector.py +175 -0
  134. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/di/test_di.py +42 -0
  135. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/logger/test_basics.py +8 -0
  136. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/logger/test_configuration.py +2 -2
  137. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/tasks/test_scheduler.py +19 -0
  138. chutils-3.3.1/tests/unit/test_antidetect.py +133 -0
  139. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_audit.py +365 -365
  140. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_audit_phase2.py +363 -363
  141. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_crypto.py +17 -0
  142. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_dashboard.py +401 -401
  143. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_db_init.py +256 -256
  144. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_db_operations.py +258 -258
  145. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_decorators_bulkhead.py +269 -269
  146. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_http_api.py +213 -213
  147. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_http_client.py +344 -344
  148. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_http_fallback.py +407 -407
  149. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_http_resilience.py +330 -330
  150. chutils-3.3.1/tests/unit/test_http_streaming.py +385 -0
  151. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_http_tracing.py +226 -226
  152. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_install_hooks.py +6 -2
  153. chutils-3.3.1/tests/unit/test_nodriver_humanize.py +147 -0
  154. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_profile_imports.py +214 -214
  155. chutils-3.3.1/tests/unit/test_profile_warmer.py +132 -0
  156. chutils-3.3.1/tests/unit/test_store_backends_external.py +112 -0
  157. chutils-3.3.1/tests/unit/test_store_integrations.py +87 -0
  158. chutils-3.3.1/tests/unit/test_store_manager.py +76 -0
  159. chutils-3.3.1/tests/unit/test_store_memory.py +80 -0
  160. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_validation.py +9 -0
  161. {chutils-3.2.0 → chutils-3.3.1}/uv.lock +126 -2
  162. chutils-3.2.0/conductor/archive/audit_20260702/metadata.json +0 -8
  163. chutils-3.2.0/conductor/archive/audit_20260702/plan.md +0 -31
  164. chutils-3.2.0/conductor/archive/audit_20260702/spec.md +0 -53
  165. chutils-3.2.0/conductor/archive/bulkhead_20260702/metadata.json +0 -8
  166. chutils-3.2.0/conductor/archive/bulkhead_20260702/plan.md +0 -25
  167. chutils-3.2.0/conductor/archive/bulkhead_20260702/spec.md +0 -46
  168. chutils-3.2.0/conductor/archive/cloud_secret_managers_20260511/index.md +0 -5
  169. chutils-3.2.0/conductor/archive/cloud_secret_managers_20260511/metadata.json +0 -8
  170. chutils-3.2.0/conductor/archive/cloud_secret_managers_20260511/plan.md +0 -36
  171. chutils-3.2.0/conductor/archive/cloud_secret_managers_20260511/spec.md +0 -42
  172. chutils-3.2.0/conductor/archive/custom_config_providers_20260714/index.md +0 -5
  173. chutils-3.2.0/conductor/archive/custom_config_providers_20260714/metadata.json +0 -8
  174. chutils-3.2.0/conductor/archive/custom_config_providers_20260714/plan.md +0 -18
  175. chutils-3.2.0/conductor/archive/custom_config_providers_20260714/spec.md +0 -24
  176. chutils-3.2.0/conductor/archive/db_manager_20260707/metadata.json +0 -8
  177. chutils-3.2.0/conductor/archive/db_manager_20260707/plan.md +0 -29
  178. chutils-3.2.0/conductor/archive/db_manager_20260707/spec.md +0 -41
  179. chutils-3.2.0/conductor/archive/db_migrations_cli_20260707/index.md +0 -5
  180. chutils-3.2.0/conductor/archive/db_migrations_cli_20260707/metadata.json +0 -8
  181. chutils-3.2.0/conductor/archive/db_migrations_cli_20260707/plan.md +0 -27
  182. chutils-3.2.0/conductor/archive/db_migrations_cli_20260707/spec.md +0 -40
  183. chutils-3.2.0/conductor/archive/dev_dashboard_20260610/index.md +0 -5
  184. chutils-3.2.0/conductor/archive/dev_dashboard_20260610/metadata.json +0 -8
  185. chutils-3.2.0/conductor/archive/dev_dashboard_20260610/plan.md +0 -39
  186. chutils-3.2.0/conductor/archive/dev_dashboard_20260610/spec.md +0 -43
  187. chutils-3.2.0/conductor/archive/http_20260702/index.md +0 -5
  188. chutils-3.2.0/conductor/archive/http_20260702/metadata.json +0 -8
  189. chutils-3.2.0/conductor/archive/http_20260702/plan.md +0 -28
  190. chutils-3.2.0/conductor/archive/http_20260702/spec.md +0 -51
  191. chutils-3.2.0/conductor/archive/profile_imports_20260610/index.md +0 -5
  192. chutils-3.2.0/conductor/archive/profile_imports_20260610/metadata.json +0 -8
  193. chutils-3.2.0/conductor/archive/profile_imports_20260610/plan.md +0 -42
  194. chutils-3.2.0/conductor/archive/profile_imports_20260610/spec.md +0 -40
  195. chutils-3.2.0/conductor/archive/setup_github_actions_20260714/index.md +0 -5
  196. chutils-3.2.0/conductor/archive/setup_github_actions_20260714/metadata.json +0 -8
  197. chutils-3.2.0/conductor/archive/setup_github_actions_20260714/plan.md +0 -28
  198. chutils-3.2.0/conductor/archive/setup_github_actions_20260714/spec.md +0 -27
  199. chutils-3.2.0/src/chutils/cache/decorator.py +0 -94
  200. chutils-3.2.0/src/chutils/commands/init.py +0 -151
  201. chutils-3.2.0/src/chutils/dev/rules/docstring.py +0 -218
  202. chutils-3.2.0/src/chutils/dev/version_detector.py +0 -114
  203. chutils-3.2.0/src/chutils/scraping/humanize/actions.py +0 -268
  204. chutils-3.2.0/src/chutils/scraping/humanize/antidetect.py +0 -123
  205. chutils-3.2.0/tests/unit/dev/test_version_detector.py +0 -102
  206. chutils-3.2.0/tests/unit/test_antidetect.py +0 -41
  207. {chutils-3.2.0 → chutils-3.3.1}/.gitattributes +0 -0
  208. {chutils-3.2.0 → chutils-3.3.1}/.github/workflows/ci.yml +0 -0
  209. {chutils-3.2.0 → chutils-3.3.1}/.github/workflows/publish-docs.yml +0 -0
  210. {chutils-3.2.0 → chutils-3.3.1}/.gitignore +0 -0
  211. {chutils-3.2.0 → chutils-3.3.1}/CODE_OF_CONDUCT.md +0 -0
  212. {chutils-3.2.0 → chutils-3.3.1}/CONTRIBUTING.md +0 -0
  213. {chutils-3.2.0 → chutils-3.3.1}/GEMINI.md +0 -0
  214. {chutils-3.2.0 → chutils-3.3.1}/LICENSE +0 -0
  215. {chutils-3.2.0 → chutils-3.3.1}/README.md +0 -0
  216. {chutils-3.2.0 → chutils-3.3.1}/benchmarks/cold_start.py +0 -0
  217. {chutils-3.2.0 → chutils-3.3.1}/conductor/.gitignore +0 -0
  218. {chutils-3.2.0 → chutils-3.3.1}/conductor/GEMINI.md +0 -0
  219. {chutils-3.2.0/conductor/tracks → chutils-3.3.1/conductor/archive}/cache_invalidation_20260714/index.md +0 -0
  220. {chutils-3.2.0/conductor/tracks → chutils-3.3.1/conductor/archive}/cache_invalidation_20260714/metadata.json +0 -0
  221. {chutils-3.2.0/conductor/tracks → chutils-3.3.1/conductor/archive}/cache_invalidation_20260714/plan.md +0 -0
  222. {chutils-3.2.0/conductor/tracks → chutils-3.3.1/conductor/archive}/cache_invalidation_20260714/spec.md +0 -0
  223. {chutils-3.2.0/conductor/tracks → chutils-3.3.1/conductor/archive}/dev_clean_20260707/index.md +0 -0
  224. {chutils-3.2.0/conductor/tracks → chutils-3.3.1/conductor/archive}/dev_clean_20260707/metadata.json +0 -0
  225. {chutils-3.2.0/conductor/tracks → chutils-3.3.1/conductor/archive}/dev_clean_20260707/spec.md +0 -0
  226. {chutils-3.2.0/conductor/tracks → chutils-3.3.1/conductor/archive}/store_20260702/index.md +0 -0
  227. {chutils-3.2.0/conductor/tracks → chutils-3.3.1/conductor/archive}/store_20260702/metadata.json +0 -0
  228. {chutils-3.2.0/conductor/tracks → chutils-3.3.1/conductor/archive}/store_20260702/spec.md +0 -0
  229. {chutils-3.2.0 → chutils-3.3.1}/conductor/code_styleguides/python.md +0 -0
  230. {chutils-3.2.0 → chutils-3.3.1}/conductor/index.md +0 -0
  231. {chutils-3.2.0 → chutils-3.3.1}/conductor/product-guidelines.md +0 -0
  232. {chutils-3.2.0 → chutils-3.3.1}/conductor/product.md +0 -0
  233. {chutils-3.2.0 → chutils-3.3.1}/conductor/setup_state.json +0 -0
  234. {chutils-3.2.0 → chutils-3.3.1}/conductor/tech-stack.md +0 -0
  235. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/ai_manifests_few_shot_20260713/index.md +0 -0
  236. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/ai_manifests_few_shot_20260713/metadata.json +0 -0
  237. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/ai_manifests_few_shot_20260713/plan.md +0 -0
  238. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/ai_manifests_few_shot_20260713/spec.md +0 -0
  239. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/config_remote_push_20260702/index.md +0 -0
  240. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/config_remote_push_20260702/metadata.json +0 -0
  241. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/config_remote_push_20260702/plan.md +0 -0
  242. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/config_remote_push_20260702/spec.md +0 -0
  243. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/dev_watch_20260702/index.md +0 -0
  244. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/dev_watch_20260702/metadata.json +0 -0
  245. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/dev_watch_20260702/plan.md +0 -0
  246. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/dev_watch_20260702/spec.md +0 -0
  247. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/docstring_audit_20260521/index.md +0 -0
  248. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/docstring_audit_20260521/metadata.json +0 -0
  249. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/docstring_audit_20260521/plan.md +0 -0
  250. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/docstring_audit_20260521/spec.md +0 -0
  251. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/fallback_alias_20260707/index.md +0 -0
  252. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/fallback_alias_20260707/metadata.json +0 -0
  253. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/fallback_alias_20260707/plan.md +0 -0
  254. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/fallback_alias_20260707/spec.md +0 -0
  255. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/qt_integration_20260521/index.md +0 -0
  256. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/qt_integration_20260521/metadata.json +0 -0
  257. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/qt_integration_20260521/plan.md +0 -0
  258. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/qt_integration_20260521/spec.md +0 -0
  259. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/qt_typed_signals_20260521/index.md +0 -0
  260. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/qt_typed_signals_20260521/metadata.json +0 -0
  261. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/qt_typed_signals_20260521/plan.md +0 -0
  262. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/qt_typed_signals_20260521/spec.md +0 -0
  263. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/scraping_concurrency_20260707/index.md +0 -0
  264. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/scraping_concurrency_20260707/metadata.json +0 -0
  265. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/scraping_concurrency_20260707/plan.md +0 -0
  266. {chutils-3.2.0 → chutils-3.3.1}/conductor/tracks/scraping_concurrency_20260707/spec.md +0 -0
  267. {chutils-3.2.0 → chutils-3.3.1}/docs/CODE_OF_CONDUCT_RU.md +0 -0
  268. {chutils-3.2.0 → chutils-3.3.1}/docs/CONTRIBUTING_RU.md +0 -0
  269. {chutils-3.2.0 → chutils-3.3.1}/docs/INTEGRATION_AI.md +0 -0
  270. {chutils-3.2.0 → chutils-3.3.1}/docs/README_RU.md +0 -0
  271. {chutils-3.2.0 → chutils-3.3.1}/docs/ai_examples/README.md +0 -0
  272. {chutils-3.2.0 → chutils-3.3.1}/docs/ai_examples/configuration/README.md +0 -0
  273. {chutils-3.2.0 → chutils-3.3.1}/docs/ai_examples/configuration/bad_pattern.py +0 -0
  274. {chutils-3.2.0 → chutils-3.3.1}/docs/ai_examples/configuration/good_pattern.py +0 -0
  275. {chutils-3.2.0 → chutils-3.3.1}/docs/ai_examples/error_handling/README.md +0 -0
  276. {chutils-3.2.0 → chutils-3.3.1}/docs/ai_examples/error_handling/bad_pattern.py +0 -0
  277. {chutils-3.2.0 → chutils-3.3.1}/docs/ai_examples/error_handling/good_pattern.py +0 -0
  278. {chutils-3.2.0 → chutils-3.3.1}/docs/ai_examples/logging/README.md +0 -0
  279. {chutils-3.2.0 → chutils-3.3.1}/docs/ai_examples/logging/bad_pattern.py +0 -0
  280. {chutils-3.2.0 → chutils-3.3.1}/docs/ai_examples/logging/good_pattern.py +0 -0
  281. {chutils-3.2.0 → chutils-3.3.1}/docs/ai_examples/optional_deps/README.md +0 -0
  282. {chutils-3.2.0 → chutils-3.3.1}/docs/ai_examples/optional_deps/bad_pattern.py +0 -0
  283. {chutils-3.2.0 → chutils-3.3.1}/docs/ai_examples/optional_deps/good_pattern.py +0 -0
  284. {chutils-3.2.0 → chutils-3.3.1}/docs/ai_examples/secrets/README.md +0 -0
  285. {chutils-3.2.0 → chutils-3.3.1}/docs/ai_examples/secrets/bad_pattern.py +0 -0
  286. {chutils-3.2.0 → chutils-3.3.1}/docs/ai_examples/secrets/good_pattern.py +0 -0
  287. {chutils-3.2.0 → chutils-3.3.1}/docs/ai_hints.md +0 -0
  288. {chutils-3.2.0 → chutils-3.3.1}/docs/ai_lint.md +0 -0
  289. {chutils-3.2.0 → chutils-3.3.1}/docs/api.md +0 -0
  290. {chutils-3.2.0 → chutils-3.3.1}/docs/captcha.md +0 -0
  291. {chutils-3.2.0 → chutils-3.3.1}/docs/cli/config.md +0 -0
  292. {chutils-3.2.0 → chutils-3.3.1}/docs/cli/env.md +0 -0
  293. {chutils-3.2.0 → chutils-3.3.1}/docs/cli/index.md +0 -0
  294. {chutils-3.2.0 → chutils-3.3.1}/docs/cli/init.md +0 -0
  295. {chutils-3.2.0 → chutils-3.3.1}/docs/cli/pypi.md +0 -0
  296. {chutils-3.2.0 → chutils-3.3.1}/docs/cli/secrets.md +0 -0
  297. {chutils-3.2.0 → chutils-3.3.1}/docs/cli/show_paths.md +0 -0
  298. {chutils-3.2.0 → chutils-3.3.1}/docs/cli/template.md +0 -0
  299. {chutils-3.2.0 → chutils-3.3.1}/docs/cli/validate.md +0 -0
  300. {chutils-3.2.0 → chutils-3.3.1}/docs/custom_config_providers.md +0 -0
  301. {chutils-3.2.0 → chutils-3.3.1}/docs/index.md +0 -0
  302. {chutils-3.2.0 → chutils-3.3.1}/docs/migration.md +0 -0
  303. {chutils-3.2.0 → chutils-3.3.1}/docs/plugins.md +0 -0
  304. {chutils-3.2.0 → chutils-3.3.1}/docs/testing.md +0 -0
  305. {chutils-3.2.0 → chutils-3.3.1}/docs/web.md +0 -0
  306. {chutils-3.2.0 → chutils-3.3.1}/examples/.env +0 -0
  307. {chutils-3.2.0 → chutils-3.3.1}/examples/01_configuration.py +0 -0
  308. {chutils-3.2.0 → chutils-3.3.1}/examples/02_logging.py +0 -0
  309. {chutils-3.2.0 → chutils-3.3.1}/examples/03_secrets.py +0 -0
  310. {chutils-3.2.0 → chutils-3.3.1}/examples/04_full_example.py +0 -0
  311. {chutils-3.2.0 → chutils-3.3.1}/examples/05_different_log_levels.py +0 -0
  312. {chutils-3.2.0 → chutils-3.3.1}/examples/06_local_config_override.py +0 -0
  313. {chutils-3.2.0 → chutils-3.3.1}/examples/07_decorators_example.py +0 -0
  314. {chutils-3.2.0 → chutils-3.3.1}/examples/08_multiple_loggers_example.py +0 -0
  315. {chutils-3.2.0 → chutils-3.3.1}/examples/09_disable_keyring.py +0 -0
  316. {chutils-3.2.0 → chutils-3.3.1}/examples/10_universal_env_override.py +0 -0
  317. {chutils-3.2.0 → chutils-3.3.1}/examples/11_retry_decorator.py +0 -0
  318. {chutils-3.2.0 → chutils-3.3.1}/examples/12_secret_masking.py +0 -0
  319. {chutils-3.2.0 → chutils-3.3.1}/examples/13_pydantic_validation.py +0 -0
  320. {chutils-3.2.0 → chutils-3.3.1}/examples/15_context_logging.py +0 -0
  321. {chutils-3.2.0 → chutils-3.3.1}/examples/17_timeout_decorator.py +0 -0
  322. {chutils-3.2.0 → chutils-3.3.1}/examples/18_config_hot_reload.py +0 -0
  323. {chutils-3.2.0 → chutils-3.3.1}/examples/19_remote_config.py +0 -0
  324. {chutils-3.2.0 → chutils-3.3.1}/examples/20_opentelemetry_tracing.py +0 -0
  325. {chutils-3.2.0 → chutils-3.3.1}/examples/21_config_diagnostics.py +0 -0
  326. {chutils-3.2.0 → chutils-3.3.1}/examples/22_circuit_breaker_decorator.py +0 -0
  327. {chutils-3.2.0 → chutils-3.3.1}/examples/22_safe_path_resolution.py +0 -0
  328. {chutils-3.2.0 → chutils-3.3.1}/examples/23_event_bus.py +0 -0
  329. {chutils-3.2.0 → chutils-3.3.1}/examples/24_task_scheduler.py +0 -0
  330. {chutils-3.2.0 → chutils-3.3.1}/examples/25_testing_fixtures_example.py +0 -0
  331. {chutils-3.2.0 → chutils-3.3.1}/examples/26_metrics_prometheus.py +0 -0
  332. {chutils-3.2.0 → chutils-3.3.1}/examples/27_rate_limiting.py +0 -0
  333. {chutils-3.2.0 → chutils-3.3.1}/examples/28_dependency_injection.py +0 -0
  334. {chutils-3.2.0 → chutils-3.3.1}/examples/captcha_solvers_usage.py +0 -0
  335. {chutils-3.2.0 → chutils-3.3.1}/examples/config.yml +0 -0
  336. {chutils-3.2.0 → chutils-3.3.1}/examples/scraping_humanize_usage.py +0 -0
  337. {chutils-3.2.0 → chutils-3.3.1}/examples/web_client_usage.py +0 -0
  338. {chutils-3.2.0 → chutils-3.3.1}/mkdocs.yml +0 -0
  339. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/__main__.py +0 -0
  340. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/antigravity.md +0 -0
  341. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/cache/__init__.py +0 -0
  342. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/cache/utils.py +0 -0
  343. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/cli.py +0 -0
  344. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/cli_booster.py +0 -0
  345. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/cli_utils.py +0 -0
  346. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/commands/__init__.py +0 -0
  347. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/commands/base.py +0 -0
  348. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/commands/config.py +0 -0
  349. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/commands/db.py +0 -0
  350. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/commands/dev/base.py +0 -0
  351. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/commands/dev/chat_context.py +0 -0
  352. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/commands/dev/diagnostics.py +0 -0
  353. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/commands/dev/few_shot.py +0 -0
  354. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/commands/dev/mock.py +0 -0
  355. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/commands/dev/scaffold.py +0 -0
  356. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/commands/dev/sync_env.py +0 -0
  357. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/commands/env.py +0 -0
  358. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/commands/paths.py +0 -0
  359. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/commands/pypi.py +0 -0
  360. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/commands/secrets.py +0 -0
  361. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/commands/template.py +0 -0
  362. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/commands/utils.py +0 -0
  363. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/commands/validate.py +0 -0
  364. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/config/GEMINI.md +0 -0
  365. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/config/__init__.py +0 -0
  366. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/config/ast_fallback_parser.py +0 -0
  367. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/config/core.py +0 -0
  368. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/config/diagnostics.py +0 -0
  369. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/config/generator.py +0 -0
  370. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/config/providers.py +0 -0
  371. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/config/schema.py +0 -0
  372. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/config/watcher.py +0 -0
  373. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/context.py +0 -0
  374. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/chat_context.py +0 -0
  375. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/constants.py +0 -0
  376. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/env_parser.py +0 -0
  377. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/env_sync.py +0 -0
  378. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/few_shot/__init__.py +0 -0
  379. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/few_shot/detector.py +0 -0
  380. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/few_shot/models.py +0 -0
  381. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/few_shot/renderer.py +0 -0
  382. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/few_shot/writer.py +0 -0
  383. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/mock_server.py +0 -0
  384. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/models/__init__.py +0 -0
  385. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/models/base.py +0 -0
  386. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/models/index.py +0 -0
  387. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/models/node.py +0 -0
  388. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/models/symbol.py +0 -0
  389. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/rules/__init__.py +0 -0
  390. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/rules/dependency_sync.py +0 -0
  391. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/rules/env.py +0 -0
  392. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/rules/linter_coverage.py +0 -0
  393. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/rules/manifest.py +0 -0
  394. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/rules/security.py +0 -0
  395. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/dev/scaffold.py +0 -0
  396. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/di/__init__.py +0 -0
  397. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/diagnostics/__init__.py +0 -0
  398. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/diagnostics/manager.py +0 -0
  399. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/diagnostics/models.py +0 -0
  400. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/diagnostics/web.py +0 -0
  401. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/env.py +0 -0
  402. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/env.pyi +0 -0
  403. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/events/__init__.py +0 -0
  404. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/exceptions/__init__.py +0 -0
  405. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/exceptions/base.py +0 -0
  406. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/exceptions/cache.py +0 -0
  407. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/exceptions/config.py +0 -0
  408. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/exceptions/di.py +0 -0
  409. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/exceptions/events.py +0 -0
  410. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/exceptions/logger.py +0 -0
  411. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/exceptions/resilience.py +0 -0
  412. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/exceptions/secrets.py +0 -0
  413. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/exceptions/system.py +0 -0
  414. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/exceptions/validation.py +0 -0
  415. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/exceptions/watcher.py +0 -0
  416. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/features.py +0 -0
  417. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/fs.py +0 -0
  418. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/logger/GEMINI.md +0 -0
  419. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/logger/__init__.py +0 -0
  420. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/logger/formatters.py +0 -0
  421. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/logger/handlers.py +0 -0
  422. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/logger/internal/builder.py +0 -0
  423. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/logger/internal/levels.py +0 -0
  424. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/logger/internal/utils.py +0 -0
  425. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/logger/masking.py +0 -0
  426. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/metrics/base.py +0 -0
  427. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/metrics/in_memory.py +0 -0
  428. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/metrics/timer.py +0 -0
  429. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/plugins/__init__.py +0 -0
  430. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/plugins/interfaces.py +0 -0
  431. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/scraping/__init__.py +0 -0
  432. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/scraping/captcha/__init__.py +0 -0
  433. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/scraping/captcha/anticaptcha.py +0 -0
  434. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/scraping/captcha/base.py +0 -0
  435. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/scraping/captcha/capmonster.py +0 -0
  436. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/scraping/captcha/exceptions.py +0 -0
  437. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/scraping/captcha/rucaptcha.py +0 -0
  438. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/secret_manager/GEMINI.md +0 -0
  439. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/secret_manager/__init__.py +0 -0
  440. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/secret_manager/providers/base.py +0 -0
  441. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/secret_manager/providers/dotenv.py +0 -0
  442. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/secret_manager/providers/env.py +0 -0
  443. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/secret_manager/providers/keyring_provider.py +0 -0
  444. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/tasks/__init__.py +0 -0
  445. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/testing/__init__.py +0 -0
  446. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/testing/fixtures.py +0 -0
  447. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/text.py +0 -0
  448. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/typing.py +0 -0
  449. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/validation.pyi +0 -0
  450. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/web/__init__.py +0 -0
  451. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/web/client.py +0 -0
  452. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/web/proxy_pool.py +0 -0
  453. {chutils-3.2.0 → chutils-3.3.1}/src/chutils/web/user_agent.py +0 -0
  454. {chutils-3.2.0 → chutils-3.3.1}/tests/conftest.py +0 -0
  455. {chutils-3.2.0 → chutils-3.3.1}/tests/integration/__init__.py +0 -0
  456. {chutils-3.2.0 → chutils-3.3.1}/tests/integration/test_ai_lint_integration.py +0 -0
  457. {chutils-3.2.0 → chutils-3.3.1}/tests/integration/test_cli_e2e.py +0 -0
  458. {chutils-3.2.0 → chutils-3.3.1}/tests/integration/test_db_migrations.py +0 -0
  459. {chutils-3.2.0 → chutils-3.3.1}/tests/integration/test_event_loops.py +0 -0
  460. {chutils-3.2.0 → chutils-3.3.1}/tests/integration/test_examples.py +0 -0
  461. {chutils-3.2.0 → chutils-3.3.1}/tests/integration/test_hooks_integration.py +0 -0
  462. {chutils-3.2.0 → chutils-3.3.1}/tests/integration/test_masking_integration.py +0 -0
  463. {chutils-3.2.0 → chutils-3.3.1}/tests/integration/test_otel_tracing.py +0 -0
  464. {chutils-3.2.0 → chutils-3.3.1}/tests/integration/test_remote_config_integration.py +0 -0
  465. {chutils-3.2.0 → chutils-3.3.1}/tests/manual/manual_test_cli_booster.py +0 -0
  466. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/cli/conftest.py +0 -0
  467. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/cli/test_cli.py +0 -0
  468. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/cli/test_cli_booster.py +0 -0
  469. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/cli/test_cli_config.py +0 -0
  470. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/cli/test_cli_config_cmd.py +0 -0
  471. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/cli/test_cli_config_schema.py +0 -0
  472. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/cli/test_cli_dev.py +0 -0
  473. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/cli/test_cli_dev_tree.py +0 -0
  474. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/cli/test_cli_diagnostics.py +0 -0
  475. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/cli/test_cli_extras_suggestion.py +0 -0
  476. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/cli/test_cli_init.py +0 -0
  477. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/cli/test_cli_paths.py +0 -0
  478. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/cli/test_cli_pypi.py +0 -0
  479. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/cli/test_cli_rich.py +0 -0
  480. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/cli/test_cli_rich_width.py +0 -0
  481. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/cli/test_cli_secrets.py +0 -0
  482. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/cli/test_cli_template.py +0 -0
  483. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/cli/test_cli_utils_internal.py +0 -0
  484. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/cli/test_cli_validate.py +0 -0
  485. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/config/test_config.py +0 -0
  486. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/config/test_config_ast_parser.py +0 -0
  487. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/config/test_config_dev.py +0 -0
  488. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/config/test_config_diagnostics.py +0 -0
  489. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/config/test_config_env.py +0 -0
  490. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/config/test_config_env_loading.py +0 -0
  491. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/config/test_config_generator.py +0 -0
  492. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/config/test_config_json.py +0 -0
  493. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/config/test_config_pydantic.py +0 -0
  494. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/config/test_config_required.py +0 -0
  495. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/config/test_config_schema.py +0 -0
  496. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/config/test_config_tracing.py +0 -0
  497. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/config/test_config_universal_env.py +0 -0
  498. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/config/test_config_utils.py +0 -0
  499. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/config/test_config_watcher.py +0 -0
  500. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/config/test_custom_config_providers.py +0 -0
  501. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/config/test_priority_unification.py +0 -0
  502. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/config/test_remote_config.py +0 -0
  503. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/core/test_ast_indexer.py +0 -0
  504. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/core/test_ast_indexer_abstract.py +0 -0
  505. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/core/test_ast_indexer_graph.py +0 -0
  506. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/core/test_ast_indexer_layers.py +0 -0
  507. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/core/test_ast_indexer_metadata.py +0 -0
  508. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/core/test_dev_models.py +0 -0
  509. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/core/test_exceptions.py +0 -0
  510. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/core/test_features.py +0 -0
  511. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/core/test_fs.py +0 -0
  512. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/core/test_lifecycle.py +0 -0
  513. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/core/test_thread_safety.py +0 -0
  514. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/decorators/test_decorator_circuit_breaker.py +0 -0
  515. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/decorators/test_decorator_retry.py +0 -0
  516. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/decorators/test_decorator_timeout.py +0 -0
  517. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/decorators/test_decorators.py +0 -0
  518. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/decorators/test_rate_limit.py +0 -0
  519. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/dev/test_ai_lint_staged.py +0 -0
  520. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/dev/test_chat_context.py +0 -0
  521. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/dev/test_env_parser.py +0 -0
  522. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/dev/test_env_sync.py +0 -0
  523. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/dev/test_generate_few_shot.py +0 -0
  524. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/dev/test_linter_coverage_rule.py +0 -0
  525. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/dev/test_mock_server.py +0 -0
  526. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/dev/test_scaffold.py +0 -0
  527. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/events/test_event_bus.py +0 -0
  528. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/logger/conftest.py +0 -0
  529. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/logger/test_compression.py +0 -0
  530. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/logger/test_config_sections.py +0 -0
  531. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/logger/test_context.py +0 -0
  532. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/logger/test_env_control.py +0 -0
  533. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/logger/test_files.py +0 -0
  534. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/logger/test_json_format.py +0 -0
  535. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/logger/test_logger_rich_width.py +0 -0
  536. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/logger/test_masking.py +0 -0
  537. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/logger/test_performance_security.py +0 -0
  538. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/logger/test_rich.py +0 -0
  539. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/logger/test_rotation.py +0 -0
  540. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/metrics/test_metrics.py +0 -0
  541. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/plugins/test_integration.py +0 -0
  542. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/plugins/test_interfaces.py +0 -0
  543. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/plugins/test_plugins.py +0 -0
  544. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/secret_manager/test_secret_manager.py +0 -0
  545. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/secret_manager/test_secret_manager_env.py +0 -0
  546. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/secret_manager/test_secret_manager_providers.py +0 -0
  547. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/secret_manager/test_secrets_required.py +0 -0
  548. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_ai_lint_ignore.py +0 -0
  549. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_anticaptcha.py +0 -0
  550. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_async_web_client.py +0 -0
  551. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_capmonster.py +0 -0
  552. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_captcha_base.py +0 -0
  553. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_captcha_imports.py +0 -0
  554. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_cli_db.py +0 -0
  555. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_crypto_dependencies.py +0 -0
  556. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_diagnostics.py +0 -0
  557. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_env.py +0 -0
  558. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_events_exception_group.py +0 -0
  559. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_humanize_math.py +0 -0
  560. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_minimal_imports.py +0 -0
  561. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_playwright_humanize.py +0 -0
  562. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_proxy_pool.py +0 -0
  563. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_rucaptcha.py +0 -0
  564. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_scraping_imports.py +0 -0
  565. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_selenium_humanize.py +0 -0
  566. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_text.py +0 -0
  567. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_text_dependencies.py +0 -0
  568. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_user_agent.py +0 -0
  569. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_web_client.py +0 -0
  570. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/test_web_imports.py +0 -0
  571. {chutils-3.2.0 → chutils-3.3.1}/tests/unit/testing/test_fixtures.py +0 -0
@@ -1,6 +1,6 @@
1
- .idea/
2
- .pytest_cache/
3
- .venv/
4
- dist/
5
- build/
6
- *.egg-info/
1
+ .idea/
2
+ .pytest_cache/
3
+ .venv/
4
+ dist/
5
+ build/
6
+ *.egg-info/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: chutils
3
- Version: 3.2.0
3
+ Version: 3.3.1
4
4
  Summary: Набор простых и удобных утилит для Python, который избавляет от рутины при работе с конфигурацией и логированием в новых проектах.
5
5
  Author-email: Chu4hel <sergeiivanov636@gmail.com>
6
6
  License-Expression: MIT
@@ -41,6 +41,7 @@ Requires-Dist: rapidfuzz>=3.9.0; extra == 'full'
41
41
  Requires-Dist: rich>=15.0.0; extra == 'full'
42
42
  Requires-Dist: selenium>=4.27.0; extra == 'full'
43
43
  Requires-Dist: watchdog>=6.0.0; extra == 'full'
44
+ Requires-Dist: websockets>=14.0.0; extra == 'full'
44
45
  Provides-Extra: gcp
45
46
  Requires-Dist: google-cloud-secret-manager>=2.20.0; extra == 'gcp'
46
47
  Provides-Extra: json
@@ -68,6 +69,8 @@ Provides-Extra: watch
68
69
  Requires-Dist: watchdog>=6.0.0; extra == 'watch'
69
70
  Provides-Extra: web
70
71
  Requires-Dist: httpx>=0.27.0; extra == 'web'
72
+ Provides-Extra: websockets
73
+ Requires-Dist: websockets>=14.0.0; extra == 'websockets'
71
74
  Description-Content-Type: text/markdown
72
75
 
73
76
  [Русская версия](docs/README_RU.md)
@@ -26,11 +26,13 @@
26
26
  "src/chutils/secret_manager/**/*.py" = ["docs/api.md"]
27
27
 
28
28
  # ---------------------------------------------------------------------------
29
- # Модуль cache
29
+ # Модуль cache и store
30
30
  # ---------------------------------------------------------------------------
31
31
 
32
32
  # Изменения кэша влияют на API и рецепты (там есть примеры использования)
33
33
  "src/chutils/cache/**/*.py" = ["docs/api.md", "docs/recipes.md"]
34
+ "src/chutils/store/**/*.py" = ["docs/store.md", "docs/api.md"]
35
+ "new:src/chutils/store/**/*.py" = ["docs/store.md"]
34
36
 
35
37
  # ---------------------------------------------------------------------------
36
38
  # Модуль events (шина событий)
@@ -144,9 +146,11 @@
144
146
  "src/chutils/testing/**/*.py" = ["docs/testing.md"]
145
147
 
146
148
  # ---------------------------------------------------------------------------
147
- # HTTP-клиент
149
+ # HTTP-клиент и Стриминг
148
150
  # ---------------------------------------------------------------------------
149
151
 
152
+ "src/chutils/http/**/*.py" = ["docs/http.md", "docs/api.md"]
153
+ "new:src/chutils/http/streaming.py" = ["docs/http.md"]
150
154
  "src/chutils/web/**/*.py" = ["docs/web.md"]
151
155
 
152
156
  # ---------------------------------------------------------------------------