datadoc-cli 0.2.0__tar.gz → 0.4.0__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 (264) hide show
  1. {datadoc_cli-0.2.0 → datadoc_cli-0.4.0}/.gitignore +2 -0
  2. datadoc_cli-0.4.0/FULL_DOCUMENTATION.md +216 -0
  3. {datadoc_cli-0.2.0 → datadoc_cli-0.4.0}/LICENSE +1 -1
  4. datadoc_cli-0.4.0/MIGRATION.md +16 -0
  5. datadoc_cli-0.4.0/PKG-INFO +217 -0
  6. datadoc_cli-0.4.0/PROJECT_IMPLEMENTATION_GUIDE.md +546 -0
  7. datadoc_cli-0.4.0/README.md +174 -0
  8. datadoc_cli-0.4.0/datadoc/__init__.py +3 -0
  9. {datadoc_cli-0.2.0 → datadoc_cli-0.4.0}/datadoc/cli/app.py +945 -819
  10. datadoc_cli-0.4.0/datadoc/cli/ui_server.py +297 -0
  11. datadoc_cli-0.4.0/datadoc/core/__init__.py +25 -0
  12. datadoc_cli-0.4.0/datadoc/core/agent.py +103 -0
  13. datadoc_cli-0.4.0/datadoc/core/engine.py +336 -0
  14. datadoc_cli-0.4.0/datadoc/core/pipeline.py +873 -0
  15. {datadoc_cli-0.2.0 → datadoc_cli-0.4.0}/datadoc/plugins/base.py +15 -21
  16. {datadoc_cli-0.2.0 → datadoc_cli-0.4.0}/datadoc/plugins/datetime_feat.py +59 -26
  17. datadoc_cli-0.4.0/datadoc/plugins/encoders.py +99 -0
  18. {datadoc_cli-0.2.0 → datadoc_cli-0.4.0}/datadoc/plugins/missing_values.py +4 -8
  19. {datadoc_cli-0.2.0 → datadoc_cli-0.4.0}/datadoc/plugins/outliers.py +35 -29
  20. datadoc_cli-0.4.0/datadoc/plugins/scaling.py +116 -0
  21. {datadoc_cli-0.2.0 → datadoc_cli-0.4.0}/pyproject.toml +28 -6
  22. datadoc_cli-0.4.0/web/README.md +23 -0
  23. datadoc_cli-0.4.0/web/node_modules/@babel/runtime/LICENSE +22 -0
  24. datadoc_cli-0.4.0/web/node_modules/@babel/runtime/README.md +19 -0
  25. datadoc_cli-0.4.0/web/node_modules/@emnapi/core/LICENSE +21 -0
  26. datadoc_cli-0.4.0/web/node_modules/@emnapi/core/README.md +1 -0
  27. datadoc_cli-0.4.0/web/node_modules/@emnapi/runtime/LICENSE +21 -0
  28. datadoc_cli-0.4.0/web/node_modules/@emnapi/runtime/README.md +1 -0
  29. datadoc_cli-0.4.0/web/node_modules/@emnapi/wasi-threads/LICENSE +21 -0
  30. datadoc_cli-0.4.0/web/node_modules/@emnapi/wasi-threads/README.md +203 -0
  31. datadoc_cli-0.4.0/web/node_modules/@hello-pangea/dnd/LICENSE +15 -0
  32. datadoc_cli-0.4.0/web/node_modules/@hello-pangea/dnd/README.md +172 -0
  33. datadoc_cli-0.4.0/web/node_modules/@jridgewell/gen-mapping/LICENSE +19 -0
  34. datadoc_cli-0.4.0/web/node_modules/@jridgewell/gen-mapping/README.md +227 -0
  35. datadoc_cli-0.4.0/web/node_modules/@jridgewell/remapping/LICENSE +19 -0
  36. datadoc_cli-0.4.0/web/node_modules/@jridgewell/remapping/README.md +218 -0
  37. datadoc_cli-0.4.0/web/node_modules/@jridgewell/resolve-uri/LICENSE +19 -0
  38. datadoc_cli-0.4.0/web/node_modules/@jridgewell/resolve-uri/README.md +40 -0
  39. datadoc_cli-0.4.0/web/node_modules/@jridgewell/sourcemap-codec/LICENSE +19 -0
  40. datadoc_cli-0.4.0/web/node_modules/@jridgewell/sourcemap-codec/README.md +264 -0
  41. datadoc_cli-0.4.0/web/node_modules/@jridgewell/trace-mapping/LICENSE +19 -0
  42. datadoc_cli-0.4.0/web/node_modules/@jridgewell/trace-mapping/README.md +348 -0
  43. datadoc_cli-0.4.0/web/node_modules/@oxc-project/types/LICENSE +22 -0
  44. datadoc_cli-0.4.0/web/node_modules/@oxc-project/types/README.md +3 -0
  45. datadoc_cli-0.4.0/web/node_modules/@oxlint/binding-win32-x64-msvc/README.md +3 -0
  46. datadoc_cli-0.4.0/web/node_modules/@reduxjs/toolkit/LICENSE +21 -0
  47. datadoc_cli-0.4.0/web/node_modules/@reduxjs/toolkit/README.md +112 -0
  48. datadoc_cli-0.4.0/web/node_modules/@rolldown/binding-win32-x64-msvc/README.md +3 -0
  49. datadoc_cli-0.4.0/web/node_modules/@rolldown/pluginutils/LICENSE +21 -0
  50. datadoc_cli-0.4.0/web/node_modules/@rolldown/pluginutils/README.md +145 -0
  51. datadoc_cli-0.4.0/web/node_modules/@standard-schema/spec/LICENSE +21 -0
  52. datadoc_cli-0.4.0/web/node_modules/@standard-schema/spec/README.md +198 -0
  53. datadoc_cli-0.4.0/web/node_modules/@standard-schema/utils/LICENSE +21 -0
  54. datadoc_cli-0.4.0/web/node_modules/@standard-schema/utils/README.md +61 -0
  55. datadoc_cli-0.4.0/web/node_modules/@tailwindcss/node/LICENSE +21 -0
  56. datadoc_cli-0.4.0/web/node_modules/@tailwindcss/node/README.md +36 -0
  57. datadoc_cli-0.4.0/web/node_modules/@tailwindcss/node/node_modules/lightningcss/LICENSE +373 -0
  58. datadoc_cli-0.4.0/web/node_modules/@tailwindcss/node/node_modules/lightningcss/README.md +105 -0
  59. datadoc_cli-0.4.0/web/node_modules/@tailwindcss/node/node_modules/lightningcss-win32-x64-msvc/LICENSE +373 -0
  60. datadoc_cli-0.4.0/web/node_modules/@tailwindcss/node/node_modules/lightningcss-win32-x64-msvc/README.md +1 -0
  61. datadoc_cli-0.4.0/web/node_modules/@tailwindcss/oxide/LICENSE +21 -0
  62. datadoc_cli-0.4.0/web/node_modules/@tailwindcss/oxide-win32-x64-msvc/LICENSE +21 -0
  63. datadoc_cli-0.4.0/web/node_modules/@tailwindcss/oxide-win32-x64-msvc/README.md +3 -0
  64. datadoc_cli-0.4.0/web/node_modules/@tailwindcss/vite/LICENSE +21 -0
  65. datadoc_cli-0.4.0/web/node_modules/@tailwindcss/vite/README.md +76 -0
  66. datadoc_cli-0.4.0/web/node_modules/@tybys/wasm-util/README.md +193 -0
  67. datadoc_cli-0.4.0/web/node_modules/@types/d3-array/LICENSE +21 -0
  68. datadoc_cli-0.4.0/web/node_modules/@types/d3-array/README.md +15 -0
  69. datadoc_cli-0.4.0/web/node_modules/@types/d3-color/LICENSE +21 -0
  70. datadoc_cli-0.4.0/web/node_modules/@types/d3-color/README.md +15 -0
  71. datadoc_cli-0.4.0/web/node_modules/@types/d3-ease/LICENSE +21 -0
  72. datadoc_cli-0.4.0/web/node_modules/@types/d3-ease/README.md +15 -0
  73. datadoc_cli-0.4.0/web/node_modules/@types/d3-interpolate/LICENSE +21 -0
  74. datadoc_cli-0.4.0/web/node_modules/@types/d3-interpolate/README.md +15 -0
  75. datadoc_cli-0.4.0/web/node_modules/@types/d3-path/LICENSE +21 -0
  76. datadoc_cli-0.4.0/web/node_modules/@types/d3-path/README.md +15 -0
  77. datadoc_cli-0.4.0/web/node_modules/@types/d3-scale/LICENSE +21 -0
  78. datadoc_cli-0.4.0/web/node_modules/@types/d3-scale/README.md +15 -0
  79. datadoc_cli-0.4.0/web/node_modules/@types/d3-shape/LICENSE +21 -0
  80. datadoc_cli-0.4.0/web/node_modules/@types/d3-shape/README.md +15 -0
  81. datadoc_cli-0.4.0/web/node_modules/@types/d3-time/LICENSE +21 -0
  82. datadoc_cli-0.4.0/web/node_modules/@types/d3-time/README.md +15 -0
  83. datadoc_cli-0.4.0/web/node_modules/@types/d3-timer/LICENSE +21 -0
  84. datadoc_cli-0.4.0/web/node_modules/@types/d3-timer/README.md +15 -0
  85. datadoc_cli-0.4.0/web/node_modules/@types/react/LICENSE +21 -0
  86. datadoc_cli-0.4.0/web/node_modules/@types/react/README.md +15 -0
  87. datadoc_cli-0.4.0/web/node_modules/@types/react-dom/LICENSE +21 -0
  88. datadoc_cli-0.4.0/web/node_modules/@types/react-dom/README.md +16 -0
  89. datadoc_cli-0.4.0/web/node_modules/@types/use-sync-external-store/LICENSE +21 -0
  90. datadoc_cli-0.4.0/web/node_modules/@types/use-sync-external-store/README.md +15 -0
  91. datadoc_cli-0.4.0/web/node_modules/@vitejs/plugin-react/LICENSE +21 -0
  92. datadoc_cli-0.4.0/web/node_modules/@vitejs/plugin-react/README.md +169 -0
  93. datadoc_cli-0.4.0/web/node_modules/agent-base/README.md +145 -0
  94. datadoc_cli-0.4.0/web/node_modules/asynckit/LICENSE +21 -0
  95. datadoc_cli-0.4.0/web/node_modules/asynckit/README.md +233 -0
  96. datadoc_cli-0.4.0/web/node_modules/axios/LICENSE +7 -0
  97. datadoc_cli-0.4.0/web/node_modules/axios/README.md +2559 -0
  98. datadoc_cli-0.4.0/web/node_modules/axios/lib/adapters/README.md +36 -0
  99. datadoc_cli-0.4.0/web/node_modules/axios/lib/core/README.md +8 -0
  100. datadoc_cli-0.4.0/web/node_modules/axios/lib/helpers/README.md +7 -0
  101. datadoc_cli-0.4.0/web/node_modules/call-bind-apply-helpers/LICENSE +21 -0
  102. datadoc_cli-0.4.0/web/node_modules/call-bind-apply-helpers/README.md +62 -0
  103. datadoc_cli-0.4.0/web/node_modules/css-box-model/LICENSE +21 -0
  104. datadoc_cli-0.4.0/web/node_modules/css-box-model/README.md +290 -0
  105. datadoc_cli-0.4.0/web/node_modules/csstype/LICENSE +19 -0
  106. datadoc_cli-0.4.0/web/node_modules/csstype/README.md +291 -0
  107. datadoc_cli-0.4.0/web/node_modules/d3-array/LICENSE +13 -0
  108. datadoc_cli-0.4.0/web/node_modules/d3-array/README.md +954 -0
  109. datadoc_cli-0.4.0/web/node_modules/d3-color/LICENSE +13 -0
  110. datadoc_cli-0.4.0/web/node_modules/d3-color/README.md +203 -0
  111. datadoc_cli-0.4.0/web/node_modules/d3-ease/LICENSE +28 -0
  112. datadoc_cli-0.4.0/web/node_modules/d3-ease/README.md +253 -0
  113. datadoc_cli-0.4.0/web/node_modules/d3-format/LICENSE +13 -0
  114. datadoc_cli-0.4.0/web/node_modules/d3-format/README.md +12 -0
  115. datadoc_cli-0.4.0/web/node_modules/d3-interpolate/LICENSE +13 -0
  116. datadoc_cli-0.4.0/web/node_modules/d3-interpolate/README.md +268 -0
  117. datadoc_cli-0.4.0/web/node_modules/d3-path/LICENSE +13 -0
  118. datadoc_cli-0.4.0/web/node_modules/d3-path/README.md +94 -0
  119. datadoc_cli-0.4.0/web/node_modules/d3-scale/LICENSE +13 -0
  120. datadoc_cli-0.4.0/web/node_modules/d3-scale/README.md +1003 -0
  121. datadoc_cli-0.4.0/web/node_modules/d3-shape/LICENSE +13 -0
  122. datadoc_cli-0.4.0/web/node_modules/d3-shape/README.md +1227 -0
  123. datadoc_cli-0.4.0/web/node_modules/d3-time/LICENSE +13 -0
  124. datadoc_cli-0.4.0/web/node_modules/d3-time/README.md +380 -0
  125. datadoc_cli-0.4.0/web/node_modules/d3-time-format/LICENSE +13 -0
  126. datadoc_cli-0.4.0/web/node_modules/d3-time-format/README.md +209 -0
  127. datadoc_cli-0.4.0/web/node_modules/d3-timer/LICENSE +13 -0
  128. datadoc_cli-0.4.0/web/node_modules/d3-timer/README.md +87 -0
  129. datadoc_cli-0.4.0/web/node_modules/debug/LICENSE +20 -0
  130. datadoc_cli-0.4.0/web/node_modules/debug/README.md +481 -0
  131. datadoc_cli-0.4.0/web/node_modules/decimal.js-light/README.md +92 -0
  132. datadoc_cli-0.4.0/web/node_modules/detect-libc/LICENSE +201 -0
  133. datadoc_cli-0.4.0/web/node_modules/detect-libc/README.md +163 -0
  134. datadoc_cli-0.4.0/web/node_modules/dunder-proto/LICENSE +21 -0
  135. datadoc_cli-0.4.0/web/node_modules/dunder-proto/README.md +54 -0
  136. datadoc_cli-0.4.0/web/node_modules/enhanced-resolve/LICENSE +20 -0
  137. datadoc_cli-0.4.0/web/node_modules/enhanced-resolve/README.md +862 -0
  138. datadoc_cli-0.4.0/web/node_modules/es-define-property/LICENSE +21 -0
  139. datadoc_cli-0.4.0/web/node_modules/es-define-property/README.md +49 -0
  140. datadoc_cli-0.4.0/web/node_modules/es-errors/LICENSE +21 -0
  141. datadoc_cli-0.4.0/web/node_modules/es-errors/README.md +55 -0
  142. datadoc_cli-0.4.0/web/node_modules/es-object-atoms/LICENSE +21 -0
  143. datadoc_cli-0.4.0/web/node_modules/es-object-atoms/README.md +63 -0
  144. datadoc_cli-0.4.0/web/node_modules/es-set-tostringtag/LICENSE +21 -0
  145. datadoc_cli-0.4.0/web/node_modules/es-set-tostringtag/README.md +53 -0
  146. datadoc_cli-0.4.0/web/node_modules/es-toolkit/LICENSE +21 -0
  147. datadoc_cli-0.4.0/web/node_modules/es-toolkit/README.md +69 -0
  148. datadoc_cli-0.4.0/web/node_modules/eventemitter3/LICENSE +21 -0
  149. datadoc_cli-0.4.0/web/node_modules/eventemitter3/README.md +85 -0
  150. datadoc_cli-0.4.0/web/node_modules/fdir/LICENSE +7 -0
  151. datadoc_cli-0.4.0/web/node_modules/fdir/README.md +91 -0
  152. datadoc_cli-0.4.0/web/node_modules/follow-redirects/LICENSE +18 -0
  153. datadoc_cli-0.4.0/web/node_modules/follow-redirects/README.md +157 -0
  154. datadoc_cli-0.4.0/web/node_modules/form-data/README.md +355 -0
  155. datadoc_cli-0.4.0/web/node_modules/function-bind/LICENSE +20 -0
  156. datadoc_cli-0.4.0/web/node_modules/function-bind/README.md +46 -0
  157. datadoc_cli-0.4.0/web/node_modules/get-intrinsic/LICENSE +21 -0
  158. datadoc_cli-0.4.0/web/node_modules/get-intrinsic/README.md +71 -0
  159. datadoc_cli-0.4.0/web/node_modules/get-proto/LICENSE +21 -0
  160. datadoc_cli-0.4.0/web/node_modules/get-proto/README.md +50 -0
  161. datadoc_cli-0.4.0/web/node_modules/gopd/LICENSE +21 -0
  162. datadoc_cli-0.4.0/web/node_modules/gopd/README.md +40 -0
  163. datadoc_cli-0.4.0/web/node_modules/graceful-fs/LICENSE +15 -0
  164. datadoc_cli-0.4.0/web/node_modules/graceful-fs/README.md +143 -0
  165. datadoc_cli-0.4.0/web/node_modules/has-symbols/LICENSE +21 -0
  166. datadoc_cli-0.4.0/web/node_modules/has-symbols/README.md +46 -0
  167. datadoc_cli-0.4.0/web/node_modules/has-tostringtag/LICENSE +21 -0
  168. datadoc_cli-0.4.0/web/node_modules/has-tostringtag/README.md +46 -0
  169. datadoc_cli-0.4.0/web/node_modules/hasown/LICENSE +21 -0
  170. datadoc_cli-0.4.0/web/node_modules/hasown/README.md +40 -0
  171. datadoc_cli-0.4.0/web/node_modules/https-proxy-agent/README.md +137 -0
  172. datadoc_cli-0.4.0/web/node_modules/immer/LICENSE +21 -0
  173. datadoc_cli-0.4.0/web/node_modules/internmap/LICENSE +13 -0
  174. datadoc_cli-0.4.0/web/node_modules/internmap/README.md +94 -0
  175. datadoc_cli-0.4.0/web/node_modules/jiti/LICENSE +21 -0
  176. datadoc_cli-0.4.0/web/node_modules/jiti/README.md +258 -0
  177. datadoc_cli-0.4.0/web/node_modules/lightningcss/LICENSE +373 -0
  178. datadoc_cli-0.4.0/web/node_modules/lightningcss/README.md +105 -0
  179. datadoc_cli-0.4.0/web/node_modules/lightningcss-win32-x64-msvc/LICENSE +373 -0
  180. datadoc_cli-0.4.0/web/node_modules/lightningcss-win32-x64-msvc/README.md +1 -0
  181. datadoc_cli-0.4.0/web/node_modules/lucide-react/LICENSE +43 -0
  182. datadoc_cli-0.4.0/web/node_modules/lucide-react/README.md +87 -0
  183. datadoc_cli-0.4.0/web/node_modules/magic-string/LICENSE +7 -0
  184. datadoc_cli-0.4.0/web/node_modules/magic-string/README.md +325 -0
  185. datadoc_cli-0.4.0/web/node_modules/math-intrinsics/LICENSE +21 -0
  186. datadoc_cli-0.4.0/web/node_modules/math-intrinsics/README.md +50 -0
  187. datadoc_cli-0.4.0/web/node_modules/mime-db/LICENSE +23 -0
  188. datadoc_cli-0.4.0/web/node_modules/mime-db/README.md +100 -0
  189. datadoc_cli-0.4.0/web/node_modules/mime-types/LICENSE +23 -0
  190. datadoc_cli-0.4.0/web/node_modules/mime-types/README.md +113 -0
  191. datadoc_cli-0.4.0/web/node_modules/nanoid/LICENSE +20 -0
  192. datadoc_cli-0.4.0/web/node_modules/nanoid/README.md +36 -0
  193. datadoc_cli-0.4.0/web/node_modules/oxlint/LICENSE +22 -0
  194. datadoc_cli-0.4.0/web/node_modules/oxlint/README.md +58 -0
  195. datadoc_cli-0.4.0/web/node_modules/picocolors/LICENSE +15 -0
  196. datadoc_cli-0.4.0/web/node_modules/picocolors/README.md +21 -0
  197. datadoc_cli-0.4.0/web/node_modules/picomatch/LICENSE +21 -0
  198. datadoc_cli-0.4.0/web/node_modules/picomatch/README.md +743 -0
  199. datadoc_cli-0.4.0/web/node_modules/postcss/LICENSE +20 -0
  200. datadoc_cli-0.4.0/web/node_modules/postcss/README.md +24 -0
  201. datadoc_cli-0.4.0/web/node_modules/proxy-from-env/LICENSE +20 -0
  202. datadoc_cli-0.4.0/web/node_modules/proxy-from-env/README.md +163 -0
  203. datadoc_cli-0.4.0/web/node_modules/raf-schd/LICENSE +21 -0
  204. datadoc_cli-0.4.0/web/node_modules/raf-schd/README.md +154 -0
  205. datadoc_cli-0.4.0/web/node_modules/react/LICENSE +21 -0
  206. datadoc_cli-0.4.0/web/node_modules/react/README.md +37 -0
  207. datadoc_cli-0.4.0/web/node_modules/react-dom/LICENSE +21 -0
  208. datadoc_cli-0.4.0/web/node_modules/react-dom/README.md +60 -0
  209. datadoc_cli-0.4.0/web/node_modules/react-is/LICENSE +21 -0
  210. datadoc_cli-0.4.0/web/node_modules/react-is/README.md +103 -0
  211. datadoc_cli-0.4.0/web/node_modules/react-redux/README.md +63 -0
  212. datadoc_cli-0.4.0/web/node_modules/recharts/LICENSE +22 -0
  213. datadoc_cli-0.4.0/web/node_modules/recharts/README.md +98 -0
  214. datadoc_cli-0.4.0/web/node_modules/redux/README.md +157 -0
  215. datadoc_cli-0.4.0/web/node_modules/redux-thunk/README.md +403 -0
  216. datadoc_cli-0.4.0/web/node_modules/reselect/LICENSE +21 -0
  217. datadoc_cli-0.4.0/web/node_modules/reselect/README.md +206 -0
  218. datadoc_cli-0.4.0/web/node_modules/rolldown/LICENSE +25 -0
  219. datadoc_cli-0.4.0/web/node_modules/rolldown/README.md +11 -0
  220. datadoc_cli-0.4.0/web/node_modules/scheduler/LICENSE +21 -0
  221. datadoc_cli-0.4.0/web/node_modules/scheduler/README.md +9 -0
  222. datadoc_cli-0.4.0/web/node_modules/source-map-js/LICENSE +28 -0
  223. datadoc_cli-0.4.0/web/node_modules/source-map-js/README.md +765 -0
  224. datadoc_cli-0.4.0/web/node_modules/tailwindcss/LICENSE +21 -0
  225. datadoc_cli-0.4.0/web/node_modules/tailwindcss/README.md +36 -0
  226. datadoc_cli-0.4.0/web/node_modules/tapable/LICENSE +21 -0
  227. datadoc_cli-0.4.0/web/node_modules/tapable/README.md +715 -0
  228. datadoc_cli-0.4.0/web/node_modules/tiny-invariant/LICENSE +21 -0
  229. datadoc_cli-0.4.0/web/node_modules/tiny-invariant/README.md +109 -0
  230. datadoc_cli-0.4.0/web/node_modules/tinyglobby/LICENSE +21 -0
  231. datadoc_cli-0.4.0/web/node_modules/tinyglobby/README.md +25 -0
  232. datadoc_cli-0.4.0/web/node_modules/tslib/README.md +164 -0
  233. datadoc_cli-0.4.0/web/node_modules/use-sync-external-store/LICENSE +21 -0
  234. datadoc_cli-0.4.0/web/node_modules/use-sync-external-store/README.md +5 -0
  235. datadoc_cli-0.4.0/web/node_modules/victory-vendor/README.md +70 -0
  236. datadoc_cli-0.4.0/web/node_modules/victory-vendor/lib-vendor/d3-array/LICENSE +13 -0
  237. datadoc_cli-0.4.0/web/node_modules/victory-vendor/lib-vendor/d3-color/LICENSE +13 -0
  238. datadoc_cli-0.4.0/web/node_modules/victory-vendor/lib-vendor/d3-ease/LICENSE +28 -0
  239. datadoc_cli-0.4.0/web/node_modules/victory-vendor/lib-vendor/d3-format/LICENSE +13 -0
  240. datadoc_cli-0.4.0/web/node_modules/victory-vendor/lib-vendor/d3-interpolate/LICENSE +13 -0
  241. datadoc_cli-0.4.0/web/node_modules/victory-vendor/lib-vendor/d3-path/LICENSE +13 -0
  242. datadoc_cli-0.4.0/web/node_modules/victory-vendor/lib-vendor/d3-scale/LICENSE +13 -0
  243. datadoc_cli-0.4.0/web/node_modules/victory-vendor/lib-vendor/d3-shape/LICENSE +13 -0
  244. datadoc_cli-0.4.0/web/node_modules/victory-vendor/lib-vendor/d3-time/LICENSE +13 -0
  245. datadoc_cli-0.4.0/web/node_modules/victory-vendor/lib-vendor/d3-time-format/LICENSE +13 -0
  246. datadoc_cli-0.4.0/web/node_modules/victory-vendor/lib-vendor/d3-timer/LICENSE +13 -0
  247. datadoc_cli-0.4.0/web/node_modules/victory-vendor/lib-vendor/d3-voronoi/LICENSE +50 -0
  248. datadoc_cli-0.4.0/web/node_modules/victory-vendor/lib-vendor/internmap/LICENSE +13 -0
  249. datadoc_cli-0.4.0/web/node_modules/vite/README.md +20 -0
  250. datadoc_cli-0.2.0/.github/workflows/ci.yml +0 -52
  251. datadoc_cli-0.2.0/CONTRIBUTING.md +0 -98
  252. datadoc_cli-0.2.0/FULL_DOCUMENTATION.md +0 -144
  253. datadoc_cli-0.2.0/PKG-INFO +0 -206
  254. datadoc_cli-0.2.0/README.md +0 -172
  255. datadoc_cli-0.2.0/datadoc/core/__init__.py +0 -0
  256. datadoc_cli-0.2.0/datadoc/core/engine.py +0 -271
  257. datadoc_cli-0.2.0/datadoc/plugins/__init__.py +0 -0
  258. datadoc_cli-0.2.0/datadoc/plugins/encoders.py +0 -73
  259. datadoc_cli-0.2.0/datadoc/plugins/scaling.py +0 -103
  260. datadoc_cli-0.2.0/test.csv +0 -6
  261. datadoc_cli-0.2.0/tests/__init__.py +0 -1
  262. datadoc_cli-0.2.0/tests/test_core.py +0 -355
  263. {datadoc_cli-0.2.0/datadoc → datadoc_cli-0.4.0/datadoc/cli}/__init__.py +0 -0
  264. {datadoc_cli-0.2.0/datadoc/cli → datadoc_cli-0.4.0/datadoc/plugins}/__init__.py +0 -0
@@ -26,9 +26,11 @@ Thumbs.db
26
26
  clean_*.csv
27
27
  pipeline_*.py
28
28
  report_*.md
29
+ .release-verify/
29
30
 
30
31
  # Testing
31
32
  .pytest_cache/
33
+ .playwright-cli/
32
34
  htmlcov/
33
35
  .coverage
34
36
 
@@ -0,0 +1,216 @@
1
+ # DATADOC: Complete User and Developer Guide
2
+
3
+ DATADOC is a local-first open-source toolkit for preparing tabular datasets for supervised machine learning. It profiles a dataset, explains possible data-quality problems, creates a transformation plan, fits that plan only on training data, and reuses the fitted rules for validation, test, and inference data.
4
+
5
+ The central idea is simple:
6
+
7
+ ```text
8
+ profile → plan → fit on train → transform validation/test/new data → evaluate
9
+ ```
10
+
11
+ DATADOC does not promise that cleaning always improves model performance. When a target is supplied and the optional ML dependency is installed, it measures the result against a reproducible baseline and can honestly report that no improvement was found.
12
+
13
+ For the implementation explanation, read [PROJECT_IMPLEMENTATION_GUIDE.md](PROJECT_IMPLEMENTATION_GUIDE.md). For migration from the original mutable API, read [MIGRATION.md](MIGRATION.md). The visual documentation site is in [`docs/`](docs/) and begins at [`docs/index.html`](docs/index.html).
14
+
15
+ For maintainers, [RELEASE_CHECKLIST.md](RELEASE_CHECKLIST.md) describes the CI, artifact, Git tag, and PyPI upload steps.
16
+
17
+ ## 1. Installation
18
+
19
+ The core package is intentionally small and works without an AI provider, web server, or scikit-learn:
20
+
21
+ ```bash
22
+ pip install datadoc-cli
23
+ ```
24
+
25
+ Optional capabilities are installed only when needed:
26
+
27
+ ```bash
28
+ pip install "datadoc-cli[ml]" # model benchmarking
29
+ pip install "datadoc-cli[ui]" # local FastAPI dashboard
30
+ pip install "datadoc-cli[ai]" # constrained advisory AI planner
31
+ pip install "datadoc-cli[dev]" # contributor tooling
32
+ ```
33
+
34
+ DATADOC supports Python 3.10, 3.11, and 3.12. Input and output formats are CSV and Parquet.
35
+
36
+ ## 2. The mental model
37
+
38
+ Imagine a dataset with a numeric `age`, a categorical `plan`, a timestamp, missing values, and a target called `churn`.
39
+
40
+ 1. `profile` looks at the columns and reports facts: null counts, cardinality, duplicates, constants, suspicious identifiers, parse confidence, and warnings.
41
+ 2. `plan` turns those facts into proposed operations. It does not modify the dataset.
42
+ 3. `fit` learns reusable values from training data: numeric medians, category vocabularies, missing-value indicators, outlier bounds when enabled, and scaling centers/spreads.
43
+ 4. `transform` applies those frozen values to another dataset. It never recalculates them from validation, test, or inference rows.
44
+ 5. `evaluate` can compare a minimal baseline with a candidate pipeline for a declared classification or regression task.
45
+
46
+ This separation prevents data leakage. For example, a validation row cannot change the median used to fill a training feature, and a category appearing only in validation cannot enlarge the training feature schema.
47
+
48
+ ## 3. The recommended CLI workflow
49
+
50
+ ### Step 1: profile
51
+
52
+ ```bash
53
+ datadoc profile data.csv --target churn --output profile.json
54
+ ```
55
+
56
+ This is read-only. A declared target is protected and is never treated as a feature. The output contains schema, null counts, cardinality, confidence-scored roles, findings, duplicate-row count, and a schema fingerprint.
57
+
58
+ ### Step 2: review a plan
59
+
60
+ ```bash
61
+ datadoc plan data.csv --target churn --task classification --output plan.json
62
+ ```
63
+
64
+ The plan lists operations such as numeric median imputation, categorical missing-value handling, one-hot encoding, optional missingness indicators, and optional scaling. Identifier suggestions are findings; they are not silently dropped.
65
+
66
+ ### Step 3: fit on training data
67
+
68
+ ```bash
69
+ datadoc fit train.csv \
70
+ --target churn \
71
+ --task classification \
72
+ --output artifacts/churn-pipeline.json
73
+ ```
74
+
75
+ Only `train.csv` is used to learn pipeline state. The JSON artifact includes the input schema, output schema, configuration, profile, plan, artifact version, and fitted state.
76
+
77
+ ### Step 4: transform later data
78
+
79
+ ```bash
80
+ datadoc transform validation.csv \
81
+ --pipeline artifacts/churn-pipeline.json \
82
+ --output validation-features.parquet
83
+
84
+ datadoc transform test.csv \
85
+ --pipeline artifacts/churn-pipeline.json \
86
+ --output test-features.parquet
87
+ ```
88
+
89
+ The pipeline checks compatibility before transforming. Missing required columns or incompatible artifact versions produce actionable errors. Unseen categories are handled without changing the output schema.
90
+
91
+ ### Step 5: evaluate when a target exists
92
+
93
+ ```bash
94
+ pip install "datadoc-cli[ml]"
95
+ datadoc evaluate train.csv \
96
+ --target churn \
97
+ --task classification \
98
+ --estimator linear \
99
+ --output evaluation.json
100
+ ```
101
+
102
+ Classification uses balanced accuracy as the primary comparison. Regression uses RMSE. The report names the estimator family, metric, split strategy, baseline score, selected score, improvement, selected pipeline, feature count, and warnings. Use `--time-column` for ordered evaluation and `--group-column` when rows must stay grouped.
103
+
104
+ For benchmarking, DATADOC passes numeric transformed features to the estimator. Retained text or identifier columns remain visible in the prepared output but are excluded from the model matrix with a warning. Any remaining numeric missing values are filled with medians learned from the current training fold, never from the validation fold.
105
+
106
+ ### One-command run
107
+
108
+ ```bash
109
+ datadoc run data.csv \
110
+ --target churn \
111
+ --task classification \
112
+ --output-dir runs/churn-v1 \
113
+ --evaluate
114
+ ```
115
+
116
+ This creates `profile.json`, `plan.json`, `pipeline.json`, `transformed.parquet`, and `manifest.json`; `evaluation.json` is added when evaluation is requested and the ML extra is available. For a production model decision, keep an untouched external test set and do not treat the convenience run as a replacement for a deliberate train/validation/test split.
117
+
118
+ ### Export code
119
+
120
+ ```bash
121
+ datadoc export \
122
+ --pipeline artifacts/churn-pipeline.json \
123
+ --output pipeline.py
124
+ ```
125
+
126
+ The export is a small executable wrapper that loads the same artifact and calls the same runtime implementation. It is intended for transparent deployment and review; it does not duplicate or reinterpret fitted statistics.
127
+
128
+ ## 4. Python SDK
129
+
130
+ ```python
131
+ import polars as pl
132
+ from datadoc import DataDocPipeline, PipelineConfig
133
+
134
+ train = pl.read_csv("train.csv")
135
+ validation = pl.read_csv("validation.csv")
136
+
137
+ config = PipelineConfig(
138
+ target="churn",
139
+ task="classification",
140
+ scaling="standard",
141
+ clip_outliers=False,
142
+ random_seed=42,
143
+ )
144
+
145
+ pipeline = DataDocPipeline(config)
146
+ profile = pipeline.profile(train)
147
+ plan = pipeline.plan(train)
148
+ pipeline.fit(train)
149
+
150
+ validation_features = pipeline.transform(validation)
151
+ pipeline.save("artifacts/churn-pipeline.json")
152
+
153
+ loaded = DataDocPipeline.load("artifacts/churn-pipeline.json")
154
+ same_features = loaded.transform(validation)
155
+ assert same_features.columns == validation_features.columns
156
+
157
+ # Optional model-oriented evidence:
158
+ report = DataDocPipeline(config).evaluate(train, target="churn")
159
+ print(report.to_dict())
160
+ ```
161
+
162
+ Use `profile` and `plan` before `fit` when you want to inspect decisions. Use `load` in a separate inference process. The target remains in the transformed frame so callers can separate labels from features explicitly.
163
+
164
+ ## 5. What is protected and what is configurable?
165
+
166
+ - A declared target is not imputed, encoded, scaled, clipped, or dropped as a feature.
167
+ - Numeric missing values use a training median; categorical missing values use a configured marker.
168
+ - Invalid numeric infinities become missing before imputation.
169
+ - Missingness indicators can preserve signal carried by the fact that a value was absent.
170
+ - One-hot vocabularies are learned on training data; unseen inference categories are safe.
171
+ - High-cardinality strings are reported and can use frequency encoding; they are not silently deleted.
172
+ - Outlier clipping is opt-in and is not applied to binary, target, identifier, or datetime-derived fields.
173
+ - Scaling is configurable and defaults according to estimator family; tree-style models do not need it.
174
+ - Date-like fields are parsed only when confidence is sufficient; parse warnings remain visible.
175
+ - Numeric uniqueness alone never proves that a column is an identifier. Name and value evidence are combined.
176
+ - Unsupported text, joins, images, geospatial features, and distributed processing are outside the stable tabular scope and are reported rather than guessed.
177
+
178
+ ## 6. Legacy compatibility
179
+
180
+ The original `DATADOC(file).analyze()`, `.recommend()`, `.engineer()`, `.compare()`, `.visualize()`, `.report()`, and `.pipeline()` commands remain available as compatibility paths. New work should use `DataDocPipeline`.
181
+
182
+ `engineer()` is deprecated for production use because fitting and transforming in one mutable operation makes train/test boundaries easy to misuse. It now warns that it cannot make a model-performance claim without an explicit target and validation setup. The old arbitrary-code execution path is not part of the production workflow.
183
+
184
+ ## 7. Local web UI
185
+
186
+ Install the UI extra and start the dashboard with a local file:
187
+
188
+ ```bash
189
+ pip install "datadoc-cli[ui]"
190
+ datadoc ui data.csv
191
+ ```
192
+
193
+ The UI consumes the same profile, plan, fit, transform-preview, and code-export concepts as the CLI. It uses session-scoped state, binds locally by default, restricts CORS to configured local origins, and does not execute AI-generated code. The frontend is in `web/src/App.jsx`; build it with `npm ci` and `npm run build` from `web/`.
194
+
195
+ ## 8. Open-source development
196
+
197
+ Install contributor dependencies and run the checks:
198
+
199
+ ```bash
200
+ pip install -e ".[dev,ml,ui]"
201
+ pytest -q
202
+ ruff check datadoc tests
203
+ ruff format --check datadoc tests
204
+ python -m compileall -q datadoc
205
+ python -m build
206
+ ```
207
+
208
+ Transformation contributions must prove four things: learned values come from training data only, the transform is stable for unseen or missing values, the artifact round-trips, and the generated wrapper agrees with runtime output. Prefer small focused pull requests, document behavior changes, and keep optional dependencies optional.
209
+
210
+ ## 9. Current boundaries and future work
211
+
212
+ The stable product is tabular classification and regression preparation. Future work can add out-of-fold target encoding, richer repeated cross-validation, calibrated uncertainty, stronger artifact schemas, text and geospatial adapters, and distributed execution. Those additions should preserve the same safety contract rather than make automation more aggressive.
213
+
214
+ ## 10. License
215
+
216
+ DATADOC is licensed under the MIT License. See [LICENSE](LICENSE).
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2024 narain-karti
3
+ Copyright (c) 2026 narain-karti
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -0,0 +1,16 @@
1
+ # Migrating to DATADOC's fitted pipeline API
2
+
3
+ Version 0.3 keeps the original `DATADOC` facade for compatibility, but new projects should use `DataDocPipeline`.
4
+
5
+ ```python
6
+ from datadoc import DataDocPipeline, PipelineConfig
7
+
8
+ pipeline = DataDocPipeline(PipelineConfig(target="label"))
9
+ pipeline.fit(train_df)
10
+ validation_features = pipeline.transform(validation_df)
11
+ pipeline.save("pipeline.json")
12
+ ```
13
+
14
+ `DATADOC.engineer()` fits and transforms the same file and is therefore only suitable for exploratory cleaning. It emits a deprecation warning for supervised work. Use `fit()` on a training split and `transform()` on validation, test, and inference data instead.
15
+
16
+ The legacy AI code-execution path has been removed. AI planning, when installed with `datadoc-cli[ai]`, is limited to registered transformations and never executes provider-generated Python.
@@ -0,0 +1,217 @@
1
+ Metadata-Version: 2.4
2
+ Name: datadoc-cli
3
+ Version: 0.4.0
4
+ Summary: Leakage-safe, local-first preparation pipelines for tabular machine learning.
5
+ Project-URL: Homepage, https://github.com/narain-karti/DATADOC
6
+ Project-URL: Repository, https://github.com/narain-karti/DATADOC
7
+ Project-URL: Issues, https://github.com/narain-karti/DATADOC/issues
8
+ Author: narain-karti
9
+ License-Expression: MIT
10
+ License-File: LICENSE
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Topic :: Scientific/Engineering
20
+ Requires-Python: >=3.10
21
+ Requires-Dist: numpy>=1.24.0
22
+ Requires-Dist: plotext>=5.2.8
23
+ Requires-Dist: polars>=0.20.0
24
+ Requires-Dist: pydantic>=2.0.0
25
+ Requires-Dist: python-dotenv>=1.0.0
26
+ Requires-Dist: rich>=13.7.0
27
+ Requires-Dist: typer>=0.12.0
28
+ Provides-Extra: ai
29
+ Requires-Dist: litellm>=1.40.0; extra == 'ai'
30
+ Provides-Extra: dev
31
+ Requires-Dist: build>=1.2.0; extra == 'dev'
32
+ Requires-Dist: hatchling>=1.25.0; extra == 'dev'
33
+ Requires-Dist: pytest>=8.0.0; extra == 'dev'
34
+ Requires-Dist: ruff>=0.4.0; extra == 'dev'
35
+ Requires-Dist: scikit-learn>=1.4.0; extra == 'dev'
36
+ Provides-Extra: ml
37
+ Requires-Dist: scikit-learn>=1.4.0; extra == 'ml'
38
+ Provides-Extra: ui
39
+ Requires-Dist: fastapi>=0.115.0; extra == 'ui'
40
+ Requires-Dist: python-multipart>=0.0.20; extra == 'ui'
41
+ Requires-Dist: uvicorn>=0.30.0; extra == 'ui'
42
+ Description-Content-Type: text/markdown
43
+
44
+ <p align="center">
45
+ <pre align="center">
46
+ ____ _ _____ _ ____ ___ ____
47
+ | _ \ / \|_ _|/ \ | _ \ / _ \ / ___|
48
+ | | | |/ _ \ | | / _ \ | | | | | | | |
49
+ | |_| / ___ \| |/ ___ \| |_| | |_| | |___
50
+ |____/_/ \_\_/_/ \_\____/ \___/ \____|
51
+ </pre>
52
+ </p>
53
+
54
+ <h3 align="center">The Open Source Operating System for Dataset Engineering.</h3>
55
+
56
+ <p align="center">
57
+ <a href="https://narain-karti.github.io/DATADOC/"><b>&#x1F4D6; View Official Documentation Website</b></a>
58
+ </p>
59
+
60
+ <p align="center">
61
+ <a href="https://pypi.org/project/datadoc-cli/"><img alt="PyPI version" src="https://img.shields.io/pypi/v/datadoc-cli.svg"></a>
62
+ <a href="https://pypi.org/project/datadoc-cli/"><img alt="Python Versions" src="https://img.shields.io/pypi/pyversions/datadoc-cli.svg"></a>
63
+ <a href="https://github.com/narain-karti/DATADOC/blob/main/LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg"></a>
64
+ </p>
65
+
66
+ <p align="center">
67
+ <a href="#installation"><b>Install</b></a> &bull;
68
+ <a href="#why-datadoc"><b>Why DATADOC?</b></a> &bull;
69
+ <a href="#quick-start"><b>Quick Start</b></a> &bull;
70
+ <a href="#cli-commands"><b>CLI Commands</b></a> &bull;
71
+ <a href="#architecture--plugins"><b>Architecture</b></a>
72
+ </p>
73
+
74
+ <hr>
75
+
76
+ ## 🚀 What is DATADOC?
77
+
78
+ **DATADOC** is a local-first CLI and Python library for preparing tabular data for machine learning. It profiles dataset risks, creates explainable transformation plans, and saves fitted pipelines that apply the same training-derived rules to validation, test, and inference data.
79
+
80
+ Powered by **Polars**, DATADOC reads CSV and Parquet files, diagnoses missing values, identifiers, schema issues, duplicates, constants, and unsafe feature types. It does not promise model improvement: optional evaluation reports the observed result against a baseline under a reproducible split.
81
+
82
+ **DATADOC is NOT just another EDA (Exploratory Data Analysis) tool.** It profiles data quality, lets you review a plan, fits transformations from training data, and hands you a portable artifact and Python wrapper for reuse.
83
+
84
+ ### ⚡ The Impact: Why Industry Professionals Use DATADOC
85
+
86
+ Data Scientists and ML Engineers repeatedly rebuild the same preparation steps across projects.
87
+ DATADOC turns those steps into a reviewable, reusable pipeline.
88
+
89
+ - **Save boilerplate:** Review recommendations for imputing nulls, encoding categories, and optional scaling or clipping before applying them.
90
+ - **Explainable by default:** The deterministic core records roles, findings, operations, protected columns, and fitted statistics in an inspectable artifact.
91
+ - **Local-first:** The core package works offline. Optional ML, UI, and AI features are separate extras.
92
+ - **Optional AI planning:** AI can help explain or rank a constrained plan; it is never allowed to execute arbitrary generated code.
93
+ - **Leakage-safe workflows:** Fitted statistics for imputation, categorical vocabularies, clipping, and scaling are learned from training data and saved as an artifact.
94
+
95
+ ---
96
+
97
+ ## 📦 Installation
98
+
99
+ DATADOC is published on PyPI. You can install it globally via `pip` or `uv`:
100
+
101
+ ```bash
102
+ pip install datadoc-cli
103
+ ```
104
+
105
+ *(Requires Python 3.10+)*
106
+
107
+ ---
108
+
109
+ ## 🛠️ Quick Start (CLI)
110
+
111
+ You don't need to write a single line of Python to clean your data. Just use the CLI.
112
+
113
+ ```bash
114
+ # 1. Inspect data-quality findings and column roles
115
+ datadoc profile raw_data.csv --target churn --output profile.json
116
+
117
+ # 2. Review the proposed transformations before applying them
118
+ datadoc plan raw_data.csv --target churn --output plan.json
119
+
120
+ # 3. Fit only on a training dataset, then save a reusable artifact
121
+ datadoc fit train.csv --target churn --output artifacts/churn-pipeline.json
122
+
123
+ # 4. Apply the fitted artifact to validation, test, or new data
124
+ datadoc transform validation.csv --pipeline artifacts/churn-pipeline.json --output validation-features.parquet
125
+
126
+ # 5. Optionally benchmark a safe candidate pipeline against a baseline
127
+ pip install "datadoc-cli[ml]"
128
+ datadoc evaluate train.csv --target churn --task classification
129
+
130
+ # 6. Export a small executable wrapper around the fitted artifact
131
+ datadoc export --pipeline artifacts/churn-pipeline.json --output pipeline.py
132
+
133
+
134
+ ```
135
+
136
+ ---
137
+
138
+ ## 🐍 Python SDK (Library Usage)
139
+
140
+ DATADOC is also a Python library. The stable workflow is `profile → plan → fit → transform`; the same fitted artifact can be used in notebooks, services, and batch jobs:
141
+
142
+ ```python
143
+ from datadoc import DataDocPipeline, PipelineConfig
144
+ import polars as pl
145
+
146
+ # Fit only on the training split. The target is protected from feature transforms.
147
+ train_df = pl.read_csv("train.csv")
148
+ pipeline = DataDocPipeline(PipelineConfig(target="churn")).fit(train_df)
149
+ pipeline.save("artifacts/churn-pipeline.json")
150
+
151
+ # Transform data that was never used to fit statistics.
152
+ validation_df = pl.read_csv("validation.csv")
153
+ validation_features = pipeline.transform(validation_df)
154
+ ```
155
+
156
+ For an observed model comparison, install the optional ML extra and call `pipeline.evaluate(train_df)` or `datadoc evaluate`. Evaluation is evidence for the declared task and split strategy; it is not a promise that cleaning always improves a model.
157
+
158
+ ---
159
+
160
+ ## 💻 CLI Commands Reference
161
+
162
+ | Command | Description |
163
+ |---------|-------------|
164
+ | `datadoc profile <file>` | Produces a data-quality report and confidence-scored column roles |
165
+ | `datadoc plan <file>` | Outputs an explainable transformation plan without modifying data |
166
+ | `datadoc fit <train>` | Learns a pipeline only from training data and saves JSON state |
167
+ | `datadoc transform <file>` | Applies a saved pipeline to validation, test, or inference data |
168
+ | `datadoc evaluate <file>` | Optionally compares a candidate pipeline with a baseline using leakage-aware splits |
169
+ | `datadoc export` | Creates an executable wrapper for a saved pipeline artifact |
170
+ | `datadoc run <file>` | Writes a profile, plan, artifact, transformed data, and lineage manifest |
171
+
172
+
173
+
174
+ ---
175
+
176
+ ## 🧩 Architecture & Plugins
177
+
178
+ DATADOC operates as a fitted pipeline. Every transformation learns state only from training data, saves that state to JSON, and reuses it unchanged for later datasets.
179
+
180
+ | Priority | Plugin | Action Performed |
181
+ |----------|--------|-------------|
182
+ | 10 | **MissingValuePlugin** | Imputes missing numeric values with median, categorical with mode |
183
+ | 20 | **OutlierPlugin** | Offers optional IQR clipping; clipping is not forced by default |
184
+ | 30 | **DatetimePlugin** | Detects date strings and extracts year, month, day, day_of_week |
185
+ | 40 | **CategoricalEncoderPlugin** | Encodes categories using training vocabularies and handles unseen values |
186
+ | 45 | **ScalingPlugin** | Applies configured standard or robust scaling, fit on training data only |
187
+
188
+ The fitted pipeline is the production source of truth. Plugin work should follow the lifecycle `analyze → fit → transform → validate → export_code`, with all learned state serializable and testable.
189
+
190
+ Want to build your own? See [CONTRIBUTING.md](CONTRIBUTING.md) to learn how to create and register custom plugins!
191
+
192
+ ---
193
+
194
+ ## 🗺️ Roadmap
195
+
196
+ - [x] Core Engine with plugin orchestration
197
+ - [x] 5 Built-in deterministic plugins
198
+ - [x] Stunning Rich Terminal UI
199
+ - [x] Pipeline export capability
200
+ - [x] Polars backend and local-first pipeline artifacts
201
+ - [x] PyPI Release (`pip install datadoc-cli`)
202
+ - [x] Constrained optional AI planning path
203
+ - [x] Session-scoped local FastAPI dashboard
204
+ - [ ] Export targets for `dbt` and Apache Airflow
205
+ - [x] Local FastAPI dashboard/API companion
206
+
207
+ ---
208
+
209
+ ## ⚖️ License
210
+
211
+ This project is licensed under the MIT License. See [LICENSE](LICENSE) for details.
212
+
213
+ ## 🤝 Contributing
214
+
215
+ We welcome contributions from the community! If you'd like to add a new plugin or improve the core engine, please see [CONTRIBUTING.md](CONTRIBUTING.md).
216
+
217
+ Maintainers can use the [0.4.0 release checklist](RELEASE_CHECKLIST.md) when preparing a tag and PyPI upload.