@@ -90,7 +99,7 @@
-
© Copyright 2025, jujangchoi.
+
© Copyright 2025, Seo Jae Oh.
Built with
Sphinx using a
diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js
index 2d6e6e8..b78a68e 100644
--- a/docs/build/html/searchindex.js
+++ b/docs/build/html/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"alltitles":{"API Reference":[[5,null]],"Atio Documentation":[[5,null]],"Atio \ud83d\udee1\ufe0f":[[5,"atio"]],"Modules":[[4,null]],"atio":[[0,null]],"atio.core":[[1,null]],"atio.plugins":[[2,null]],"atio.utils":[[3,null]],"atomicwriter (\ubcf8 \ud504\ub85c\uc81d\ud2b8)":[[5,"atomicwriter"]],"python-atomicwrites":[[5,"python-atomicwrites"]],"\u2699\ufe0f \uc124\uce58":[[5,"id6"]],"\u2705 \ub77c\uc774\uc120\uc2a4":[[5,"id9"]],"\u2728 \uc694\uc57d":[[5,"id10"]],"\uae30\ubcf8 \uc0ac\uc6a9\ubc95 (\uac04\ub2e8\ud55c \uc815\ubcf4\ub9cc):":[[5,"id2"]],"\uc0c1\uc138 \uc9c4\ub2e8 \ubaa8\ub4dc (verbose=True):":[[5,"verbose-true"]],"\uc624\ub958 \ubc1c\uc0dd \uc2dc (verbose=True):":[[5,"id4"]],"\uc624\ub958 \ubc1c\uc0dd \uc2dc (\uae30\ubcf8 \uc0ac\uc6a9\ubc95):":[[5,"id3"]],"\ud83c\udf1f \uc8fc\uc694 \uae30\ub2a5":[[5,"id1"]],"\ud83d\udca1 \ube45\ub370\uc774\ud130 \uc6cc\ud06c\ud50c\ub85c\uc6b0\uc5d0\uc11c \ud65c\uc6a9 \uc2dc\ub098\ub9ac\uc624":[[5,"id7"]],"\ud83d\udd04 \ube44\uad50 \u2013 \uc720\uc0ac \ub77c\uc774\ube0c\ub7ec\ub9ac \ud2b9\uc9d5 \uc815\ub9ac":[[5,"id8"]],"\ud83d\udd0d \uc131\ub2a5 \uc9c4\ub2e8 \ub85c\uae45 (NEW!)":[[5,"new"]],"\ud83e\udde0 \uc65c \uc774 \ub3c4\uad6c\uac00 \uc815\ub9d0 \uc911\uc694\ud55c\uac00\uc694?":[[5,"id5"]]},"docnames":["api/_autosummary/atio","api/_autosummary/atio.core","api/_autosummary/atio.plugins","api/_autosummary/atio.utils","api/modules","index"],"envversion":{"sphinx":65,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.viewcode":1},"filenames":["api/_autosummary/atio.rst","api/_autosummary/atio.core.rst","api/_autosummary/atio.plugins.rst","api/_autosummary/atio.utils.rst","api/modules.rst","index.md"],"indexentries":{"atio":[[0,"module-atio",false]],"atio.core":[[1,"module-atio.core",false]],"atio.plugins":[[2,"module-atio.plugins",false]],"atio.utils":[[3,"module-atio.utils",false]],"module":[[0,"module-atio",false],[1,"module-atio.core",false],[2,"module-atio.plugins",false],[3,"module-atio.utils",false]]},"objects":{"":[[0,0,0,"-","atio"]],"atio":[[1,0,0,"-","core"],[2,0,0,"-","plugins"],[3,0,0,"-","utils"]]},"objnames":{"0":["py","module","Python module"]},"objtypes":{"0":"py:module"},"terms":{"0":5,"0001":5,"0012":5,"1":5,"1234":5,"1246":5,"2":5,"2345":5,"2359":5,"28":5,"3":5,"3mb\ub9cc":5,"4":5,"50mb":5,"A":5,"No":5,"_success":5,"apach":5,"atio\ub294":5,"atom":5,"atomicwriter\ub294":5,"atomicwriter\ub85c":5,"aw":5,"class":3,"commit":5,"complet":5,"condit":5,"connectionerror\uac00":5,"contentrefer":5,"csv":5,"datafram":5,"dataframe\uc744":5,"debug":5,"devic":5,"df":5,"dure":5,"errno":5,"error":5,"error_typ":5,"etl":5,"fail":5,"format":5,"fsync":5,"function":[1,2,3],"import":5,"index":5,"info":5,"instal":5,"json":5,"keyboardinterrupt":5,"left":5,"linux":5,"macos\uc5d0\uc11c":5,"modul":[0,5],"movefileex":5,"multiprocess":5,"n":5,"numpi":5,"numpy\ub098":5,"o":5,"oaicit":5,"oserror":5,"output":5,"output_ful":5,"output_progress":5,"output_verbos":5,"panda":5,"pandas\ub294":5,"pandas\ub85c":5,"parquet":5,"pd":5,"pip":5,"polar":5,"posix":5,"progress":1,"race":5,"renam":5,"replac":5,"s3":5,"s3\ub85c":5,"s3\uc5d0":5,"s3\uc5d0\ub294":5,"s3\uc5d0\uc11c":5,"setup":5,"show_progress":5,"space":5,"stage":5,"step":5,"success":5,"success_flag":5,"successfulli":5,"time":5,"tmp":5,"tmp_xxx":5,"to_parquet":5,"took":5,"total":5,"v":5,"window":5,"windows\uc640":5,"write":[1,5],"write_cal":5,"writer":5,"\uac00\ub2a5":5,"\uac00\uc774\ub4dc":5,"\uac01":5,"\uac04":5,"\uac04\ud3b8\ud55c":5,"\uac15\ub825\ud55c":5,"\uac15\uc81c":5,"\uac19\uc740":5,"\uac1d\uccb4":5,"\uac80\uc99d":5,"\uacb0\uacfc":5,"\uacb0\uacfc\ub97c":5,"\uacb0\uacfc\uc801\uc73c\ub85c":5,"\uacb0\uce21\uac12\uc774":5,"\uacbd\ub7c9":5,"\uacbd\ub85c":5,"\uacbd\ub85c\ub85c":5,"\uacbd\uc6b0\uc5d0\ub9cc":5,"\uacbd\uc7c1":5,"\uacf5\uac04":5,"\uad50\uccb4":5,"\uad50\uccb4\uac00":5,"\uad50\uccb4\ub429\ub2c8\ub2e4":5,"\uad6c\ub3d9\ud560":5,"\uad6c\ubd84":5,"\uad8c\ud55c":5,"\uadf8\ub300\ub85c":5,"\uae30\ub2a5\uc744":5,"\uae30\ub85d":5,"\uae30\ubc18":5,"\uae30\uc5c5":5,"\uae30\uc874":5,"\uae30\uc900\uc73c\ub85c":5,"\uae68\uc9c4":5,"\uae68\uc9c8":5,"\uae68\uc9d0":5,"\uaebc\uc838\ub3c4":5,"\ub124\ud2b8\uc6cc\ud06c":5,"\ub204\ub77d\ub418\uac70\ub098":5,"\ub294":5,"\ub2e4\ub984":5,"\ub2e4\uc591\ud55c":5,"\ub2e4\uc74c":5,"\ub2e8\uacc4":5,"\ub2e8\uacc4\ub294":5,"\ub2e8\uacc4\ub97c":5,"\ub2e8\uacc4\ubcc4":5,"\ub2e8\uacc4\uc5d0\uc11c":5,"\ub2e8\uc77c":5,"\ub2e8\ucd95":5,"\ub300\ubd80\ubd84\uc758":5,"\ub300\uc6a9\ub7c9":5,"\ub36e\uc5b4\uc4f0\uc5ec":5,"\ub370\uc774\ud130":5,"\ub370\uc774\ud130\ub97c":5,"\ub370\uc774\ud130\uc5d0":5,"\ub3c4\uad6c\uc785\ub2c8\ub2e4":5,"\ub3d9\uc2dc":5,"\ub3d9\uc2dc\uc5d0":5,"\ub3d9\uc791":5,"\ub3d9\uc791\uc774":5,"\ub418\uc9c0":5,"\ub429\ub2c8\ub2e4":5,"\ub4dc\ub77c\uc774\ube0c":5,"\ub4f1":5,"\ub514\ub809\ud1a0\ub9ac":5,"\ub514\ubc84\uae45":5,"\ub514\uc2a4\ud06c":5,"\ub530\ub77c\uc11c":5,"\ub54c\ub294":5,"\ub610\ub294":5,"\ub77c\uc774\ube0c\ub7ec\ub9ac":0,"\ub77c\uc774\ube0c\ub7ec\ub9ac\uc785\ub2c8\ub2e4":5,"\ub85c\uadf8":5,"\ub85c\uceec":5,"\ub97c":5,"\ub9ce\uc774":5,"\uba38\uc2e0\ub7ec\ub2dd":5,"\uba3c\uc800":5,"\uba40\ud2f0\uc2a4\ub808\ub529":5,"\uba40\ud2f0\ud504\ub85c\uc138\uc2a4":5,"\uba54\ubaa8\ub9ac":5,"\uba85\ud655\ud788":5,"\ubaa8\ub2c8\ud130\ub9c1":5,"\ubaa8\ub378":5,"\ubaa8\ub450":5,"\ubaa8\ub4e0":5,"\ubabb\ud55c":5,"\ubb34\uacb0\uc131\uc774":5,"\ubb38\uc81c":5,"\ubb38\uc81c\uc758":5,"\ubbf8\uc644\uc131\ub41c":5,"\ubc0f":5,"\ubc1c\uc0dd\ud558\uc5ec":5,"\ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4":5,"\ubc29\ubc95":5,"\ubc29\uc2dd":5,"\ubc29\uc2dd\uc73c\ub85c":5,"\ubc29\uc2dd\uc740":5,"\ubc29\uc9c0":5,"\ubc30\uce58":5,"\ubc88":5,"\ubc88\uc5d0":5,"\ubcd1\ub82c":5,"\ubcd1\ubaa9\uc810":5,"\ubcd1\ubaa9\uc810\uc744":5,"\ubcf4\uc7a5":5,"\ubcf4\uc7a5\ub429\ub2c8\ub2e4":5,"\ubcf4\uc7a5\ud558\uba70":5,"\ubcf4\uc874":5,"\ubcf4\uc874\ub418\uace0":5,"\ubd80\ubd84\uc801\uc73c\ub85c":5,"\ubd80\uc871":5,"\ubd84\uc11d":5,"\ubd84\uc11d\ub9cc\ud07c":5,"\ubd84\uc11d\uc5d0\uc11c\ub294":5,"\ubd88\uac00":5,"\ube60\ub974\uac8c":5,"\uc0ac\uc6a9":5,"\uc0ac\uc6a9\uc790\uac00":5,"\uc0ac\uc6a9\ud558\uba74":5,"\uc0ac\uc6a9\ud560":5,"\uc0ac\uc6a9\ud588\uc2b5\ub2c8\ub2e4":5,"\uc0c1\uc138\ud55c":5,"\uc0c1\ud0dc":5,"\uc0c1\ud0dc\ub85c\ub9cc":5,"\uc0c1\ud669":5,"\uc0c1\ud669\uc5d0\uc11c\ub3c4":5,"\uc0dd\uc131":5,"\uc0dd\uc131\ud558\ub3c4\ub85d":5,"\uc124\uc815":5,"\uc124\uc815\ud560":5,"\uc131\uacf5":5,"\uc131\uacf5\uc801\uc73c\ub85c":5,"\uc131\uacf5\ud574\uc57c\ub9cc":5,"\uc18c\uc694":5,"\uc18c\uc694\ub418\ub294\uc9c0":5,"\uc190\uc0c1":5,"\uc190\uc0c1\ub418\uac70\ub098":5,"\uc190\uc0c1\ub418\uc5c8\uace0":5,"\uc190\uc0c1\ub41c":5,"\uc218":5,"\uc218\uc9d1":5,"\uc218\ud589\ub429\ub2c8\ub2e4":5,"\uc218\ud589\ud558\uba74":5,"\uc2a4\ud14c\uc774\uc9d5":5,"\uc2dc\uac04":5,"\uc2dc\uac04\uc744":5,"\uc2dc\uac04\uc774":5,"\uc2dc\uc2a4\ud15c":5,"\uc2dc\uc2a4\ud15c\uc774":5,"\uc2dc\uc810":5,"\uc2dc\uc810\uacfc":5,"\uc2e4\uc2dc\uac04":5,"\uc2e4\uc81c":5,"\uc2e4\ud328":5,"\uc2e4\ud589":5,"\uc2e4\ud589\uc5d0\uc11c":5,"\uc4f0\uace0":5,"\uc4f0\uae30":[0,5],"\uc4f0\uae30\uac00":5,"\uc4f0\uae30\ub97c":5,"\uc544\ub798\uc640":5,"\uc544\ud0a4\ud14d\ucc98":5,"\uc544\ud0a4\ud14d\ucc98\ub85c":5,"\uc548\uc804":5,"\uc548\uc804\ud558\uac8c":5,"\uc548\uc804\ud558\uace0":5,"\uc548\uc804\ud55c":0,"\uc548\uc815\uc131\uc744":5,"\uc54a\ub294":5,"\uc54a\uc558\uc2b5\ub2c8\ub2e4":5,"\uc555\ubc15":5,"\uc5b4\ub290":5,"\uc5c5\ub85c\ub4dc":5,"\uc5c6\ub294":5,"\uc5c6\uc5b4":5,"\uc5c6\uc774":5,"\uc5c9\ud0ac":5,"\uc5ec\ub7ec":5,"\uc5ec\ubd80":5,"\uc5ec\ubd80\ub97c":5,"\uc608":5,"\uc608\uc0c1\uce58":5,"\uc608\uc2dc":5,"\uc608\uc678":5,"\uc608\uc81c":5,"\uc624\ub958\ub97c":5,"\uc624\ub958\uc5d0\ub3c4":5,"\uc624\ubc84\ud5e4\ub4dc":5,"\uc62c\ub77c\uac14\uc2b5\ub2c8\ub2e4":5,"\uc635\uc158":5,"\uc635\uc158\uc744":5,"\uc644\ub8cc":5,"\uc644\ub8cc\ub410\ub294\uc9c0":5,"\uc644\ub8cc\ub41c":5,"\uc644\uc804\uc131":5,"\uc644\uc804\ud55c":5,"\uc644\uc804\ud788":5,"\uc6d0\ubcf8":5,"\uc6d0\ubcf8\uacfc":5,"\uc6d0\uc778\uacfc":5,"\uc6d0\uc778\uc744":5,"\uc6d0\uc790\uc131":5,"\uc6d0\uc790\uc801":[0,5],"\uc6d0\uc790\uc801\uc778":5,"\uc704\ud5d8":5,"\uc720\ubb34\ub97c":5,"\uc720\ubc1c\ud588\uc2b5\ub2c8\ub2e4":5,"\uc720\uc9c0\ud558\ub3c4\ub85d":5,"\uc744":5,"\uc774\ub3d9\ud560":5,"\uc774\ub85c\uc368":5,"\uc774\uc288\ub098":5,"\uc774\uc81c":5,"\uc774\ud6c4":5,"\uc778\ud130\ub7fd\ud2b8":5,"\uc77c\uad00\ub41c":5,"\uc77c\ubd80":5,"\uc77c\ubd80\ub9cc":5,"\uc77d\uae30\ub3c4":5,"\uc784\uc2dc":5,"\uc788\uc2b5\ub2c8\ub2e4":5,"\uc788\uc74c":5,"\uc790\ub3d9":5,"\uc790\uc720\ub86d\uac8c":5,"\uc791\uc131":5,"\uc791\uc5c5":5,"\uc791\uc5c5\uc5d0\uc11c":5,"\uc791\uc5c5\uc73c\ub85c":5,"\uc791\uc9c0\ub9cc":5,"\uc798\ubabb\ub41c":5,"\uc7a5\uc810":5,"\uc7ac\uc0ac\uc6a9\ud558\ub824":5,"\uc800\uc7a5":5,"\uc800\uc7a5\ub410\uc2b5\ub2c8\ub2e4":5,"\uc800\uc7a5\ub418\uac70\ub098":5,"\uc800\uc7a5\ub418\uc5b4":5,"\uc800\uc7a5\ub418\uc9c0":5,"\uc800\uc7a5\ub41c":5,"\uc800\uc7a5\uc774":5,"\uc800\uc7a5\ud558\ub294":5,"\uc800\uc7a5\ud558\ub358":5,"\uc800\uc7a5\ud558\uba70":5,"\uc800\uc7a5\ud560":5,"\uc800\ud558\uac00":5,"\uc801\uc6a9":1,"\uc804\uc6d0":5,"\uc804\uccb4":5,"\uc804\ud600":5,"\uc811\uadfc":5,"\uc815\ub9ac\ub418\uc5b4":5,"\uc815\ubcf4":5,"\uc815\ud655\ud55c":5,"\uc815\ud655\ud788":5,"\uc81c\uacf5\ud569\ub2c8\ub2e4":5,"\uc870\uac74":5,"\uc870\ud569":5,"\uc874\uc7ac\ud558\uac8c":5,"\uc874\uc7ac\ud574":5,"\uc885\ub8cc\uac00":5,"\uc885\ub8cc\ub098":5,"\uc88b\uc74c":5,"\uc911":5,"\uc911\uac04\uc5d0":5,"\uc911\ub2e8":5,"\uc911\uc2ec":5,"\uc911\uc694":5,"\uc911\uc694\ud55c":5,"\uc9c0\uc6d0":5,"\uc9c0\uc6d0\ud558\ub294":5,"\uc9c0\uc6d0\ud558\uc9c0":5,"\uc9c0\uc815":5,"\uc9c1\uc811":5,"\uc9c4\ud589\ub3c4":5,"\ucc28\ub2e8\uc774\ub098":5,"\ucc28\uc774":5,"\ucc44":5,"\ucc44\ub85c":5,"\ucc98\ub9ac":5,"\ucd08\uae30":5,"\ucd5c\uc801\uc774\uc9c0\ub9cc":5,"\ucd5c\uc801\ud654":5,"\ucd5c\uc885":5,"\ucd94\uc801":5,"\ucd9c\ub825":5,"\ucda9\ub3cc":5,"\ucda9\ub3cc\uc774":5,"\uce21\uc815":5,"\uce21\uc815\ub418\ub294":5,"\uce21\uc815\ud558\uc5ec":5,"\ucee4\ub110":5,"\ucee4\ubba4\ub2c8\ud2f0":5,"\ud06c\ub85c\uc2a4":5,"\ud2b8\ub79c\uc7ad\uc158\ucc98\ub7fc":5,"\ud2b9\ud788":5,"\ud30c\uc2f1\ud560":5,"\ud30c\uc545":5,"\ud30c\uc545\ud560":5,"\ud30c\uc774\ud504\ub77c\uc778":5,"\ud30c\uc774\ud504\ub77c\uc778\uc5d0\uc11c":5,"\ud30c\uc774\ud504\ub77c\uc778\uc744":5,"\ud30c\uc77c":[0,5],"\ud30c\uc77c\ub85c":5,"\ud30c\uc77c\uc5d0":5,"\ud30c\uc77c\uc740":5,"\ud30c\uc77c\uc744":5,"\ud30c\uc77c\uc774":5,"\ud310\ub2e8\ud560":5,"\ud3ec\ud568\ub418\uc5b4":5,"\ud3f4\ub354":5,"\ud45c\uc2dc":5,"\ud45c\uc2dc\uc640":5,"\ud488\uc9c8":5,"\ud504\ub85c\uc138\uc2a4\uac00":5,"\ud504\ub85c\uc138\uc2a4\ub9cc":5,"\ud50c\ub798\uadf8":5,"\ud50c\ub7ab\ud3fc":5,"\ud50c\ub7ec\uadf8\uc778":5,"\ud558\ub098\uc758":5,"\ud558\ub294":5,"\ud559\uc2b5":5,"\ud55c":5,"\ud560":5,"\ud568\uaed8":5,"\ud568\uc218":[1,5],"\ud569\ub2c8\ub2e4":5,"\ud56d\uc0c1":5,"\ud574\uacb0":5,"\ud574\uacb0\ucc45":5,"\ud588\uc9c0\ub9cc":5,"\ud615\uc2dd":5,"\ud615\ud0dc\ub85c":5,"\ud638\ucd9c":5,"\ud638\ud658":5,"\ud655\ubcf4\ud560":5,"\ud655\uc778":5,"\ud655\uc7a5\uc131":5,"\ud658\uacbd\uc5d0\uc11c":5,"\ud658\uacbd\uc5d0\uc11c\uc758":5,"\ud65c\uc131\ud654":5,"\ud65c\uc6a9\ud558\uc5ec":5,"\ud6c4":[1,5],"\ud6c4\uc18d":5,"\ud6c4\uc5d0\ub9cc":5},"titles":["atio","atio.core","atio.plugins","atio.utils","Modules","Atio Documentation"],"titleterms":{"api":5,"atio":[0,1,2,3,5],"atomicwrit":5,"core":1,"document":5,"modul":4,"new":5,"plugin":2,"python":5,"refer":5,"true":5,"util":3,"verbos":5,"\uac04\ub2e8\ud55c":5,"\uae30\ub2a5":5,"\uae30\ubcf8":5,"\ub3c4\uad6c\uac00":5,"\ub77c\uc774\ube0c\ub7ec\ub9ac":5,"\ub77c\uc774\uc120\uc2a4":5,"\ub85c\uae45":5,"\ubaa8\ub4dc":5,"\ubc1c\uc0dd":5,"\ubcf8":5,"\ube44\uad50":5,"\ube45\ub370\uc774\ud130":5,"\uc0ac\uc6a9\ubc95":5,"\uc0c1\uc138":5,"\uc124\uce58":5,"\uc131\ub2a5":5,"\uc2dc":5,"\uc2dc\ub098\ub9ac\uc624":5,"\uc624\ub958":5,"\uc65c":5,"\uc694\uc57d":5,"\uc6cc\ud06c\ud50c\ub85c\uc6b0\uc5d0\uc11c":5,"\uc720\uc0ac":5,"\uc774":5,"\uc815\ub9ac":5,"\uc815\ub9d0":5,"\uc815\ubcf4\ub9cc":5,"\uc8fc\uc694":5,"\uc911\uc694\ud55c\uac00\uc694":5,"\uc9c4\ub2e8":5,"\ud2b9\uc9d5":5,"\ud504\ub85c\uc81d\ud2b8":5,"\ud65c\uc6a9":5}})
\ No newline at end of file
+Search.setIndex({"alltitles":{"API Reference":[[5,"api-reference"]],"API \ucc38\uc870":[[1,null]],"API \ucc38\uc870:":[[5,null]],"Atio Documentation":[[5,null]],"Avro":[[4,"avro"]],"CSV":[[4,"csv"],[4,"id5"]],"CSV (Comma-Separated Values)":[[4,"csv-comma-separated-values"]],"CSV \ud615\uc2dd":[[1,"csv"]],"Conda \uc0ac\uc6a9":[[6,"conda"]],"Core \ubaa8\ub4c8":[[1,"core"]],"Database":[[4,"database"]],"ETL \ud30c\uc774\ud504\ub77c\uc778":[[0,"etl"]],"Excel":[[4,"excel"],[4,"id4"]],"Excel \ud615\uc2dd":[[1,"excel"]],"HTML":[[4,"html"]],"IPC (Arrow)":[[4,"ipc-arrow"]],"Indices and tables":[[5,"indices-and-tables"]],"JSON":[[4,"json"],[4,"id3"]],"JSON \uc124\uc815 \ud30c\uc77c":[[2,"json"]],"JSON \ud615\uc2dd":[[1,"json"]],"NPY (NumPy Binary)":[[4,"npy-numpy-binary"]],"NPZ (NumPy Compressed)":[[4,"npz-numpy-compressed"]],"NumPy \ubc30\uc5f4 \ucc98\ub9ac":[[0,"numpy"]],"NumPy \ubc30\uc5f4 \ud615\uc2dd":[[4,"numpy"]],"Pandas DataFrame \ud615\uc2dd":[[4,"pandas-dataframe"]],"Pandas SQL \uc5f0\ub3d9":[[0,"pandas-sql"]],"Parquet":[[4,"parquet"],[4,"id2"]],"Parquet \ud615\uc2dd":[[1,"parquet"]],"Pickle":[[4,"pickle"]],"Plugins \ubaa8\ub4c8":[[1,"plugins"]],"Polars DataFrame \uc9c0\uc6d0":[[7,"polars-dataframe"]],"Polars DataFrame \ud615\uc2dd":[[4,"polars-dataframe"]],"Polars DataFrame \ud65c\uc6a9":[[3,"polars-dataframe"]],"Polars \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc5f0\ub3d9":[[0,"polars"]],"PostgreSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc800\uc7a5":[[3,"postgresql"]],"PyPI\ub97c \ud1b5\ud55c \uc124\uce58":[[6,"pypi"]],"SQL":[[4,"sql"]],"SQL \ud615\uc2dd":[[1,"sql"]],"Utils \ubaa8\ub4c8":[[1,"utils"]],"YAML \uc124\uc815 \ud30c\uc77c":[[2,"yaml"]],"expire_snapshots()":[[1,"expire-snapshots"]],"read_table()":[[1,"read-table"]],"write()":[[1,"write"]],"write_snapshot()":[[1,"write-snapshot"]],"\uac00\uc0c1\ud658\uacbd \uc0ac\uc6a9 \uad8c\uc7a5":[[6,"id9"]],"\uac04\ub2e8\ud55c \ub370\uc774\ud130 \uc800\uc7a5":[[3,"id3"]],"\uac1c\ubc1c \ubc84\uc804 \uc124\uce58":[[6,"id3"]],"\uac1c\ubc1c \ud658\uacbd \uc124\uc815":[[2,"id32"]],"\uace0\uae09 \uc0ac\uc6a9\ubc95":[[0,null]],"\uace0\uc131\ub2a5 \ub370\uc774\ud130 \ucc98\ub9ac":[[3,"id9"]],"\uad8c\uc7a5 \uc0ac\uc6a9 \uc0ac\ub840":[[4,"id10"]],"\uae30\ubcf8 \uac80\uc99d":[[2,"id34"]],"\uae30\ubcf8 \ub85c\uae45":[[2,"id3"]],"\uae30\ubcf8 \uc0ac\uc6a9\ubc95":[[7,"id2"]],"\uae30\ubcf8 \uc2a4\ub0c5\uc0f7 \uc4f0\uae30":[[0,"id3"]],"\uae30\ubcf8 \uc608\uc81c":[[3,"id2"]],"\uae30\ubcf8 \uc9c4\ud589\ub3c4 \ud45c\uc2dc":[[2,"id6"]],"\ub2e4\uc591\ud55c \ud615\uc2dd \uc9c0\uc6d0":[[7,"id3"]],"\ub2e4\uc74c \ub2e8\uacc4":[[7,"id8"]],"\ub2e8\uc77c \ubc30\uc5f4 \uc800\uc7a5":[[0,"id16"]],"\ub300\uc6a9\ub7c9 \ub370\uc774\ud130 \ucc98\ub9ac":[[3,"id4"]],"\ub370\uc774\ud130 \ubc84\uc804 \uad00\ub9ac":[[3,"id8"]],"\ub370\uc774\ud130 \ubd84\uc11d \ubc0f \uba38\uc2e0\ub7ec\ub2dd":[[4,"id11"]],"\ub370\uc774\ud130 \ud30c\uc774\ud504\ub77c\uc778":[[3,"id17"],[4,"id13"]],"\ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc5d0\ub7ec":[[0,"id13"]],"\ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc5f0\ub3d9":[[0,"id6"],[3,"id6"]],"\ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc800\uc7a5":[[7,"id6"]],"\ub85c\uae45 \ub808\ubca8 \uc124\uc815":[[2,"id23"]],"\ub85c\uae45 \uc124\uc815":[[2,"id2"]],"\ub864\ubc31 \ub3d9\uc791":[[2,"id14"]],"\uba38\uc2e0\ub7ec\ub2dd \ud30c\uc774\ud504\ub77c\uc778":[[0,"id19"]],"\uba54\ubaa8\ub9ac \uc0ac\uc6a9\ub7c9 \ucd5c\uc801\ud654":[[2,"id9"]],"\ubaa8\ub4e0 \uc758\uc874\uc131 \uc124\uce58":[[6,"id7"]],"\ubaa8\ubc94 \uc0ac\ub840":[[2,"id30"]],"\ubaa9\ucc28":[[5,"id7"]],"\ubb38\uc81c \ud574\uacb0":[[6,"id10"]],"\ubc30\uce58 \ucc98\ub9ac":[[3,"id12"]],"\ubc31\uc5c5 \ud30c\uc77c \uad00\ub9ac":[[2,"id15"]],"\ube44\uc988\ub2c8\uc2a4 \ubcf4\uace0\uc11c":[[4,"id14"]],"\ube60\ub978 \uc2dc\uc791":[[5,"id4"],[7,null]],"\uc0ac\uc6a9 \uc0ac\ub840":[[5,"id6"]],"\uc0ac\uc6a9 \uc608\uc81c":[[3,null]],"\uc0ac\uc6a9\uc790 \uac00\uc774\ub4dc:":[[5,null]],"\uc0ac\uc6a9\uc790 \uc815\uc758 \uc784\uc2dc \ub514\ub809\ud1a0\ub9ac":[[2,"id12"]],"\uc0c1\uc138 \ub85c\uae45":[[0,"id9"],[2,"id4"]],"\uc120\ud0dd\uc801 \uc758\uc874\uc131":[[6,"id6"]],"\uc124\uc815 \uac80\uc99d":[[2,"id33"]],"\uc124\uc815 \ubc0f \uad6c\uc131":[[2,null]],"\uc124\uc815 \ud30c\uc77c \uc0ac\uc6a9":[[2,"id29"]],"\uc124\uce58 \uac00\uc774\ub4dc":[[6,null]],"\uc131\ub2a5 \ubaa8\ub2c8\ud130\ub9c1":[[7,"id5"]],"\uc131\ub2a5 \ubaa8\ub2c8\ud130\ub9c1 \uc124\uc815":[[2,"id25"]],"\uc131\ub2a5 \ucd5c\uc801\ud654":[[0,"id7"],[3,"id14"]],"\uc131\ub2a5 \ucd5c\uc801\ud654 \uc124\uc815":[[2,"id8"]],"\uc131\ub2a5 \ud14c\uc2a4\ud2b8":[[2,"id35"]],"\uc18d\ub3c4 \ube44\uad50":[[4,"id7"]],"\uc2a4\ub0c5\uc0f7 \uae30\ub2a5":[[7,"id7"]],"\uc2a4\ub0c5\uc0f7 \uae30\ubc18 \ubc84\uc804 \uad00\ub9ac":[[0,"id2"],[3,"id7"]],"\uc2a4\ub0c5\uc0f7 \ubaa8\ub4dc":[[2,"id20"]],"\uc2a4\ub0c5\uc0f7 \uc124\uc815":[[2,"id19"]],"\uc2a4\ub0c5\uc0f7 \uc77d\uae30":[[0,"id4"]],"\uc2a4\ub0c5\uc0f7 \uc815\ub9ac":[[0,"id5"]],"\uc2a4\ub0c5\uc0f7 \uc815\ub9ac \uc124\uc815":[[2,"id21"]],"\uc2e4\uc81c \uc0ac\uc6a9 \uc0ac\ub840":[[0,"id18"],[3,"id16"]],"\uc548\uc804\ud55c \ub370\uc774\ud130 \ucc98\ub9ac":[[3,"id11"]],"\uc555\ucd95 \ubc0f \ucd5c\uc801\ud654 \uc124\uc815":[[3,"id15"]],"\uc555\ucd95 \uc124\uc815":[[2,"id10"]],"\uc5c5\uadf8\ub808\uc774\ub4dc":[[6,"id11"]],"\uc5d0\ub7ec \ucc98\ub9ac":[[0,"id10"]],"\uc5d0\ub7ec \ucc98\ub9ac \ubc0f \ubcf5\uad6c":[[3,"id10"]],"\uc5d0\ub7ec \ucc98\ub9ac \uc124\uc815":[[2,"id13"]],"\uc5ec\ub7ec \ubc30\uc5f4 \uc800\uc7a5":[[0,"id17"]],"\uc5ec\ub7ec \ud30c\uc77c \ub3d9\uc2dc \ucc98\ub9ac":[[3,"id13"]],"\uc608\uc678 \ucc98\ub9ac":[[1,"id9"]],"\uc644\ub8cc \ud50c\ub798\uadf8 \uc2dc\uc2a4\ud15c":[[2,"id16"]],"\uc6a9\ub7c9 \ube44\uad50":[[4,"id8"]],"\uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158":[[4,"id12"]],"\uc758\uc874\uc131":[[6,"id4"]],"\uc784\uc2dc \ub514\ub809\ud1a0\ub9ac \uc124\uc815":[[2,"id11"],[2,"id24"]],"\uc81c\uac70":[[6,"id12"]],"\uc8fc\uc694 \uae30\ub2a5":[[5,"id3"]],"\uc8fc\uc694 \ud568\uc218":[[1,"id1"]],"\uc9c0\uc6d0\ud558\ub294 \ud30c\uc77c \ud615\uc2dd":[[4,null],[5,"id9"]],"\uc9c0\uc6d0\ud558\ub294 \ud615\uc2dd":[[1,"id8"],[5,"id5"]],"\uc9c4\ud589\ub3c4 \ud45c\uc2dc":[[0,"id8"],[2,"id5"]],"\uc9c4\ud589\ub3c4 \ud45c\uc2dc \uc635\uc158":[[2,"id7"]],"\uc9c4\ud589\ub960 \ud45c\uc2dc":[[7,"id4"]],"\uc9c4\ud589\ub960 \ud45c\uc2dc\uc640 \uc131\ub2a5 \ubaa8\ub2c8\ud130\ub9c1":[[3,"id5"]],"\ucee4\uc2a4\ud140 \ud615\uc2dd \ub4f1\ub85d":[[0,"id15"]],"\ud2b9\uc815 \ubc84\uc804 \uc124\uce58":[[6,"id2"]],"\ud30c\uc77c \uc2dc\uc2a4\ud15c \uc5d0\ub7ec":[[0,"id11"]],"\ud3ec\ub9f7 \uc5d0\ub7ec":[[0,"id12"]],"\ud504\ub85c\ub355\uc158 \ud658\uacbd \uc124\uc815":[[2,"id31"]],"\ud50c\ub798\uadf8 \ud30c\uc77c \ud655\uc778":[[2,"id17"]],"\ud50c\ub798\uadf8 \ud30c\uc77c \ud65c\uc6a9":[[2,"id18"]],"\ud50c\ub7ec\uadf8\uc778 \ub4f1\ub85d":[[2,"id27"]],"\ud50c\ub7ec\uadf8\uc778 \uc124\uc815":[[2,"id26"]],"\ud50c\ub7ec\uadf8\uc778 \ud655\uc778":[[2,"id28"]],"\ud50c\ub7ec\uadf8\uc778 \ud655\uc7a5":[[0,"id14"]],"\ud544\uc218 \uc758\uc874\uc131":[[6,"id5"]],"\ud575\uc2ec \ud568\uc218\ub4e4":[[5,"module-atio"]],"\ud615\uc2dd \ud655\uc7a5\ud558\uae30":[[4,"id15"]],"\ud615\uc2dd\ubcc4 \uc131\ub2a5 \ube44\uad50":[[4,"id6"]],"\ud638\ud658\uc131 \ube44\uad50":[[4,"id9"]],"\ud658\uacbd \ubcc0\uc218 \uc124\uc815":[[2,"id22"]],"\ud658\uacbd \ud655\uc778":[[6,"id8"]]},"docnames":["advanced_usage","api","configuration","examples","formats","index","installation","quickstart"],"envversion":{"sphinx":65,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,"sphinx.ext.viewcode":1},"filenames":["advanced_usage.rst","api.rst","configuration.rst","examples.rst","formats.rst","index.rst","installation.rst","quickstart.rst"],"indexentries":{"__init__() (atio.utils.progressbar \uba54\uc11c\ub4dc)":[[1,"atio.utils.ProgressBar.__init__",false],[5,"atio.utils.ProgressBar.__init__",false]],"atio":[[1,"module-atio",false],[5,"module-atio",false]],"atio.core":[[1,"module-atio.core",false],[5,"module-atio.core",false]],"atio.expire_snapshots() (atio.core \ubaa8\ub4c8)":[[1,"atio.core.atio.expire_snapshots",false]],"atio.plugins":[[1,"module-atio.plugins",false],[5,"module-atio.plugins",false]],"atio.read_table() (atio.core \ubaa8\ub4c8)":[[1,"atio.core.atio.read_table",false]],"atio.utils":[[1,"module-atio.utils",false],[5,"module-atio.utils",false]],"atio.write() (atio.core \ubaa8\ub4c8)":[[1,"atio.core.atio.write",false]],"atio.write_snapshot() (atio.core \ubaa8\ub4c8)":[[1,"atio.core.atio.write_snapshot",false]],"check_file_exists() (atio.utils \ubaa8\ub4c8)":[[1,"atio.utils.check_file_exists",false],[5,"atio.utils.check_file_exists",false]],"expire_snapshots() (atio.core \ubaa8\ub4c8)":[[1,"atio.core.expire_snapshots",false],[5,"atio.core.expire_snapshots",false]],"get_writer() (atio.plugins \ubaa8\ub4c8)":[[1,"atio.plugins.get_writer",false],[5,"atio.plugins.get_writer",false]],"module":[[1,"module-atio",false],[1,"module-atio.core",false],[1,"module-atio.plugins",false],[1,"module-atio.utils",false],[5,"module-atio",false],[5,"module-atio.core",false],[5,"module-atio.plugins",false],[5,"module-atio.utils",false]],"progressbar (atio.utils \ud074\ub798\uc2a4)":[[1,"atio.utils.ProgressBar",false],[5,"atio.utils.ProgressBar",false]],"read_json() (atio.utils \ubaa8\ub4c8)":[[1,"atio.utils.read_json",false],[5,"atio.utils.read_json",false]],"read_table() (atio.core \ubaa8\ub4c8)":[[1,"atio.core.read_table",false],[5,"atio.core.read_table",false]],"register_writer() (atio.plugins \ubaa8\ub4c8)":[[1,"atio.plugins.register_writer",false],[5,"atio.plugins.register_writer",false]],"run() (atio.utils.progressbar \uba54\uc11c\ub4dc)":[[1,"atio.utils.ProgressBar.run",false],[5,"atio.utils.ProgressBar.run",false]],"setup_logger() (atio.utils \ubaa8\ub4c8)":[[1,"atio.utils.setup_logger",false],[5,"atio.utils.setup_logger",false]],"write() (atio.core \ubaa8\ub4c8)":[[1,"atio.core.write",false],[5,"atio.core.write",false]],"write_json() (atio.utils \ubaa8\ub4c8)":[[1,"atio.utils.write_json",false],[5,"atio.utils.write_json",false]],"write_snapshot() (atio.core \ubaa8\ub4c8)":[[1,"atio.core.write_snapshot",false],[5,"atio.core.write_snapshot",false]]},"objects":{"":[[5,0,0,"-","atio"]],"atio":[[5,0,0,"-","core"],[5,0,0,"-","plugins"],[5,0,0,"-","utils"]],"atio.core":[[5,1,1,"","expire_snapshots"],[5,1,1,"","read_table"],[5,1,1,"","write"],[5,1,1,"","write_snapshot"]],"atio.core.atio":[[1,1,1,"","expire_snapshots"],[1,1,1,"","read_table"],[1,1,1,"","write"],[1,1,1,"","write_snapshot"]],"atio.plugins":[[5,1,1,"","get_writer"],[5,1,1,"","register_writer"]],"atio.utils":[[5,2,1,"","ProgressBar"],[5,1,1,"","check_file_exists"],[5,1,1,"","read_json"],[5,1,1,"","setup_logger"],[5,1,1,"","write_json"]],"atio.utils.ProgressBar":[[5,3,1,"","__init__"],[5,3,1,"","run"]]},"objnames":{"0":["py","module","Python \ubaa8\ub4c8"],"1":["py","function","Python \ud568\uc218"],"2":["py","class","Python \ud074\ub798\uc2a4"],"3":["py","method","Python \uba54\uc11c\ub4dc"]},"objtypes":{"0":"py:module","1":"py:function","2":"py:class","3":"py:method"},"terms":{"":[2,3],"0":[0,2,3,4,6],"00":2,"0001":2,"0012":2,"01":3,"03":2,"05":2,"07":2,"0987":2,"1":[0,1,2,3,4,6,7],"10":[0,2,4],"100":3,"1000":[0,3,4],"10000":3,"100000":[2,3],"1000000":[0,2,3],"1000001":3,"100001":3,"10001":3,"1001":[2,3],"1002":3,"1003":3,"1004":3,"1005":3,"100\ub9cc":3,"1024":[2,3],"11":2,"12":2,"1200":3,"1234":2,"150":3,"2":[0,1,2,3,4,6,7],"200":3,"2024":3,"20240101_120000":1,"25":[3,4,5,7],"28":3,"2f":[2,3,4],"3":[0,1,2,3,4,6,7],"30":[1,2,3,4,5,7],"300":3,"30\uc77c":[1,2],"32":3,"35":[3,4,5,7],"4":[0,3,4,7],"45":2,"4e":4,"5":[0,3,4,7],"50":3,"50000":3,"5432":3,"55000":3,"6":[0,4,7],"60000":3,"65000":3,"67":2,"7":[0,1,2,3,5],"70000":3,"75":3,"7\uc77c":[0,2,3],"8":[1,2,4,6],"89":2,"9":2,"A":3,"__init__":[1,3,5],"__name__":2,"__version__":6,"_backup":2,"_latest":3,"_success":[2,7],"activ":[3,6],"actual":0,"ag":[3,4,5,7],"agg":3,"aggregated_data":3,"aggregated_df":3,"alia":3,"alic":[0,3,4,5,7],"all":6,"amount":3,"api":[3,4,7],"api_data":4,"api\ub098":3,"append":[0,1,2,3,4],"arr":[0,4],"arrai":[0,4],"atio":[0,1,2,3,4,6,7],"atio_config":2,"atio_env":6,"atio_log_level":2,"atio_performance_monitor":2,"atio_temp_dir":2,"atio\ub294":[0,1,2,4,7],"atio\ub97c":[6,7],"atio\uc758":[0,1,2,3],"atom":[2,5],"auto":5,"automat":5,"avg_scor":3,"avg_valu":3,"avro":6,"axi":0,"b":[3,7],"backup_fil":2,"balanced_compress":3,"base":5,"base_path":3,"bash":6,"big_data":7,"bin":6,"block":6,"bob":[0,3,4,5,7],"bool":[1,5],"brotli":[1,3,4],"busan":[3,4,5,7],"bz2":4,"c":3,"cach":6,"categori":3,"charli":[0,3,4,5,7],"check_file_exist":[1,5],"choic":3,"citi":[3,4,5,7],"class":[1,3,4,5],"cleaned_data":0,"cleanup":5,"code":6,"col":3,"column":[1,4],"com":6,"comment":4,"complet":2,"compress":[1,2,3],"compression_set":3,"con":[0,1,3,4,5,7],"conda":5,"conda\ub97c":6,"config":2,"connection_uri":[0,1,4,5],"connectorx":[4,6],"continu":3,"core":5,"creat":6,"create_engin":[0,3,4,7],"css":4,"csv":[0,3,5,7],"csv\ub85c":4,"custom":[0,2],"custom_writ":[0,2],"d":3,"daegu":3,"daejeon":3,"dai":[0,1,2,3,5,7],"daily_process":0,"daily_stat":3,"dashboard":4,"dashboard_data":4,"data":[0,1,2,3,4,5,7],"data1":2,"data2":2,"data3":2,"databas":[0,1,5],"databaseerror":1,"datafram":[0,1,2,5,6],"dataframe\ub3c4":7,"dataframe\uc5d0":0,"dataframe\uc740":4,"datapipelin":3,"dataset":4,"date":3,"date_format":4,"date_rang":3,"datetim":[0,1,2,3,5],"david":0,"dbname":[0,4,7],"db\uc5d0":5,"debug":2,"debug_level":[1,5],"def":[0,2,3,4],"default":[1,5],"default_format":2,"delet":5,"deleted_count":[1,3],"delimit":4,"descript":[1,5],"dev_writ":2,"df":[0,1,2,3,4,5,6,7],"df_new":0,"diana":3,"dict":[1,5],"dir":6,"direct":5,"displai":5,"drop":0,"dropna":0,"dry":0,"dry_run":[0,1,2,5],"dt":3,"dump":[2,4],"e":[0,1,2,3,5],"easi":5,"els":2,"employe":3,"encod":[1,4],"end_tim":2,"engin":[0,1,3,4,7],"ensembl":0,"environ":2,"error":5,"etc":5,"etl":5,"ev":3,"event":[1,5],"excel":[3,5,6,7],"except":[0,1,2,3],"exist":[2,3],"exist_ok":[2,3],"experiment_result":4,"expire_snapshot":[0,2,3,5,7],"extract_data":3,"f":[0,1,2,3,4,6],"fail":[1,4],"fals":[0,1,2,3,4,5,7],"fast_compress":3,"fastavro":[4,6],"fastparquet":[1,6],"featur":[0,4],"file":[2,4,5],"file_info":3,"file_path":3,"file_s":[2,3],"filenam":3,"filepath":[1,5],"files_to_process":[2,3],"filter":3,"filtered_df":3,"final_data":4,"fit":0,"flag_fil":2,"fmt":[1,2,4,5],"forc":6,"format":[0,1,2,3,4,5,6,7],"freq":3,"from":[0,2,3,4,7],"function":5,"g":[1,5],"get":2,"get_writ":[1,5],"getsiz":[2,3],"gettempdir":2,"git":6,"github":6,"group_bi":3,"groupbi":3,"gzip":[1,2,3,4],"h":3,"handler":[1,2,5],"header":4,"headphon":3,"here":3,"high_compress":3,"hour":3,"html":5,"http":6,"i":2,"id":[0,1,3,4],"if_exist":[0,1,3,4,7],"ignore_index":3,"import":[0,1,2,3,4,5,6,7],"important_data":3,"importerror":1,"inact":3,"incheon":[3,4,5,7],"include_head":4,"indent":[2,4],"index":[1,2,3,4,7],"info":2,"initial_data":3,"initial_df":3,"instal":[4,6],"interfac":5,"intermediate_data":4,"intuit":5,"invalid_connect":0,"ioerror":1,"item":2,"json":[5,7],"json\uc73c\ub85c":4,"keep_for":[0,1,2,5],"keyboard":3,"kwarg":[0,1,2,4,5],"label":[0,4],"laptop":3,"larg":5,"large_data":[0,2,3],"large_dataset":[3,4],"large_df":[0,2,3,7],"latest":[1,7],"latest_data":0,"latest_df":3,"latest_path":3,"len":3,"linux":6,"listdir":3,"load":2,"load_data":3,"loc":3,"localhost":[0,3,4,7],"lz4":4,"lz4raw":4,"m":6,"maco":6,"makedir":2,"manag":5,"max":3,"mb":[2,3],"mean":3,"metadata":[0,4],"min":3,"mkdir":3,"mode":[0,1,2,5],"model":0,"model_select":0,"model_weight":4,"monitor":[3,5],"monthly_report":4,"mous":3,"multipl":5,"mydb":3,"n":[0,2,3,6],"na":1,"na_rep":1,"name":[0,1,3,4,5,7],"ndarrai":[1,5],"none":[1,2,4,5],"nosql":5,"now":3,"np":[0,1,2,3,4,5],"npy":[0,5],"npz":[0,5],"npz_compress":[0,4],"numpi":[1,2,3,5,6],"o":[2,3],"obj":[1,5],"obj_typ":[1,2,5],"object":[1,2],"occur":5,"old":5,"open":[0,2,4],"openpyxl":[1,4,6],"option":[1,5],"order":3,"order_d":3,"order_id":3,"orient":[1,4,7],"output":4,"output_a":[0,1,5],"overwrit":[1,2,5],"panda":[1,2,3,5,6,7],"pandas\uc640":0,"parquet":[0,2,3,5,6,7],"parquet_success":3,"pass":3,"password":[0,3,4,7],"path":[0,1,2,3,4,5],"pathlib":3,"pd":[0,1,2,3,4,5,6,7],"performance_test":2,"period":3,"permissionerror":0,"pickl":5,"pip":[4,6],"pipelin":3,"pkl":4,"pl":[0,3,4,7],"plugin":[0,2,4,5],"polar":[1,5,6],"polars_data":[0,3],"polars_df":[3,7],"polars\ub294":4,"polars\ub85c":0,"polars\ub97c":0,"postgresql":[0,4,7],"predict":0,"price":3,"print":[0,1,2,3,6],"process":5,"process_multiple_fil":3,"processed_data":[0,3],"processed_t":0,"product":3,"product_nam":3,"progress":[1,5],"progressbar":[1,5],"pyarrow":[1,6],"pypi\ub97c":5,"python":[4,5,6],"python3":6,"quantiti":3,"r":2,"rais":1,"randint":[0,4],"randn":[0,2,3,4],"random":[0,2,3,4],"randomforestclassifi":0,"rang":3,"raw_data":[0,3],"read_csv":0,"read_json":[1,5],"read_tabl":[0,3,5,7],"record":[1,4,7],"recoveri":5,"register_writ":[0,1,2,4,5],"reinstal":6,"remov":3,"replac":[0,1,2,3,4,7],"report_data":4,"respons":4,"result":4,"results_df":0,"return":[2,3],"rollback":5,"root":0,"round":3,"run":[0,1,5],"run_pipelin":3,"safe":5,"safe_data_process":3,"safe_load":2,"safe_writ":2,"salari":3,"sales_data":3,"sales_df":3,"sales_ord":3,"sampl":3,"score":3,"script":6,"self":3,"seojaeohcod":6,"seoul":[3,4,5,7],"sep":[1,4],"setup":2,"setup_logg":[1,5],"sheet1":[1,4],"sheet_nam":[1,3,4,7],"show_progress":[0,1,2,3,5,7],"simpl":5,"sklearn":0,"snappi":[1,2,3,4],"snapshot":5,"snapshot_id":[1,3,7],"snapshot_id_1":3,"snapshot_id_2":3,"sourc":[3,6],"source_data":0,"split":[1,4],"sql":[3,5,6,7],"sqlalchemi":[0,3,4,6,7],"ssd\ub97c":2,"start_tim":2,"startswith":3,"statu":3,"std":3,"step":2,"step1":4,"stop_ev":[1,5],"str":[1,3,5],"stripe":4,"success":[2,3],"success_flag":2,"successfulli":2,"support":5,"tabl":[1,4],"table_nam":[0,1,3,4,5],"table_path":[1,2,5],"target":0,"target_path":[1,5],"temp":2,"temp_dir":2,"temp_fil":3,"tempdir":2,"tempfil":2,"temporari":5,"test":[2,6],"test_config":2,"test_data":0,"test_siz":0,"text":3,"time":2,"timedelta":[0,1,2,3,5],"timestamp":3,"tmp":[2,3],"tmp12345":2,"tmpdir":2,"to_dict":4,"to_parquet":2,"to_sql":[1,5],"to_str":[0,2],"took":2,"total":2,"train":4,"train_test_split":0,"training_data":[0,4],"transform_data":3,"true":[0,1,2,3,4,5,7],"try":[0,1,2,3],"type":2,"uniform":3,"uninstal":6,"unknown":0,"upgrad":6,"uri":4,"us":5,"user":[0,1,3,4,5,6,7],"user_id":3,"usernam":3,"users_t":0,"utf":[1,4],"util":5,"valu":[0,1,3],"valueerror":[0,1],"var":2,"venv":6,"verbos":[0,1,2,3,5,7],"version":[0,1,5],"version_1_data":0,"w":[0,2,4],"warehous":0,"weight":4,"when":5,"window":6,"write":[0,2,3,4,5,6,7],"write_cal":2,"write_databas":[1,5],"write_json":[1,5],"write_snapshot":[0,2,3,5,7],"writer":2,"writer_map":2,"x_test":0,"x_train":0,"xlsx":[1,3,4,7],"xlsx2csv":[4,6],"xlsxwriter":[1,4,6],"xz":4,"y_test":0,"y_train":0,"yaml":4,"yaml_writ":4,"zstd":4,"\uac00":[1,5],"\uac00\ub3c5\uc131":4,"\uac00\uc0c1\ud658\uacbd":5,"\uac00\uc774\ub4dc":7,"\uac00\uc7a5":[4,6,7],"\uac00\uc838\uc634":3,"\uac00\uc911\uce58":4,"\uac01":[0,1,3,4,5],"\uac04\ub2e8\ud55c":[5,6,7],"\uac12":1,"\uac19\uc740":[0,1,2,7],"\uac1c":3,"\uac1c\ubc1c\uc6a9":2,"\uac1c\ubcc4\uc801\uc73c\ub85c":6,"\uac1d\uccb4":[1,4,5],"\uac1d\uccb4\uc758":[1,5],"\uac80\uc0c9":5,"\uac80\uc99d":5,"\uac83\uc785\ub2c8\ub2e4":6,"\uacb0\uacfc":4,"\uacb0\uacfc\ub97c":0,"\uacb0\uacfc\uc758":5,"\uacbd\uacfc":[1,2,5],"\uacbd\uacfc\ud55c":2,"\uacbd\ub7c9":5,"\uacbd\ub85c":[1,2,5],"\uacbd\ub85c\uc785\ub2c8\ub2e4":[1,5],"\uacbd\uc6b0":[1,2,6],"\uace0\uae09":[3,5,7],"\uacf5\uac04":4,"\uacf5\uac04\uc774":2,"\uacfc\uc815":0,"\uacfc\uc815\uc5d0\uc11c":5,"\uacfc\uc815\uc744":2,"\uad00\ub9ac":5,"\uad00\ub9ac\ub97c":[1,7],"\uad00\ub9ac\ud558\uc5ec":2,"\uad00\ub9ac\ud560":0,"\uad50\uccb4":[0,2,7],"\uad6c\ubd84\uc790":[1,4],"\uad6c\ubd84\uc790\uc640":4,"\uad6c\uc131":5,"\uad6c\uc870":4,"\uad6c\uc870\ud654":4,"\uad8c\uc7a5":[5,7],"\uad8c\uc7a5\ud569\ub2c8\ub2e4":[2,6],"\uad8c\ud55c":[0,6],"\uad8c\ud55c\uc774":[0,2],"\uade0\ud615":2,"\uadf8\ub300\ub85c":0,"\uae30\uac04":[1,5],"\uae30\ub2a5":6,"\uae30\ub2a5\ub4e4\uc744":0,"\uae30\ub2a5\uc744":[3,6],"\uae30\ub2a5\uc774":[1,5],"\uae30\ubc18":[1,4,5],"\uae30\ubcf8":[1,4,5,6],"\uae30\ubcf8\uac12":[1,2,4],"\uae30\ubcf8\uc801\uc73c\ub85c":2,"\uae30\uc874":2,"\ub0a0\uc9dc":4,"\ub0a8\uc544\uc788\ub294":2,"\ub290\ub9b0":4,"\ub294":5,"\ub2e4\ub8f9\ub2c8\ub2e4":0,"\ub2e4\uc591\ud55c":[0,2,3,4,5],"\ub2e4\uc6b4\uadf8\ub808\uc774\ub4dc":6,"\ub2e4\uc74c":5,"\ub2e4\uc74c\uacfc":[0,1,2,7],"\ub2e8\uacc4":5,"\ub2e8\uacc4\ubcc4":0,"\ub2e8\uc21c\ud55c":4,"\ub2e8\uc77c":4,"\ub300\uc2dc\ubcf4\ub4dc":4,"\ub300\uc6a9\ub7c9":[0,2,4,5,7],"\ub300\ud55c":[0,1],"\ub300\ud574":[0,2],"\ub354":[1,5],"\ub370\uc774\ud130":[0,1,2,5,7],"\ub370\uc774\ud130\uac00":[1,3,5],"\ub370\uc774\ud130\ub3c4":3,"\ub370\uc774\ud130\ub85c":0,"\ub370\uc774\ud130\ub97c":[0,1,3,5],"\ub370\uc774\ud130\ubca0\uc774\uc2a4":[1,4,5,6],"\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0":[0,1,3,4,5,7],"\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c":3,"\ub370\uc774\ud130\uc5d0":2,"\ub370\uc774\ud130\uc758":0,"\ub3c5\ub9bd\uc801\uc778":6,"\ub3d9\uc791":[1,4],"\ub3d9\uc791\uc744":2,"\ub41c":[0,1,2],"\ub4e4\uc5ec\uc4f0\uae30":4,"\ub4e4\uc5ec\uc4f0\uae30\uc640":4,"\ub4f1":[1,5],"\ub4f1\ub85d":[1,4,5],"\ub4f1\ub85d\ub41c":2,"\ub4f1\ub85d\ud558\uc5ec":2,"\ub514\ub809\ud1a0\ub9ac":5,"\ub514\ub809\ud1a0\ub9ac\ub294":2,"\ub514\ub809\ud1a0\ub9ac\ub97c":2,"\ub514\ub809\ud1a0\ub9ac\uba85":1,"\ub514\ub809\ud1a0\ub9ac\uc5d0":0,"\ub514\uc2a4\ud06c":2,"\ub515\uc154\ub108\ub9ac":4,"\ub515\uc154\ub108\ub9ac\ub85c":[0,4],"\ub54c":4,"\ub610\ub294":[1,2,5,6],"\ub77c\uc774\ube0c\ub7ec\ub9ac":[1,4,5],"\ub77c\uc774\ube0c\ub7ec\ub9ac\uac00":6,"\ub77c\uc774\ube0c\ub7ec\ub9ac\uc640":4,"\ub77c\uc774\ube0c\ub7ec\ub9ac\uc785\ub2c8\ub2e4":[4,5],"\ub808\ubca8\ub85c":2,"\ub85c\uae45":5,"\ub85c\uae45\uc744":[0,2],"\ub85c\ub4dc":[0,3],"\ub85c\uc9c1":[0,2],"\ub864\ubc31":[0,1,5],"\ub864\ubc31\uc774":2,"\ub8e8\ud504":[1,5],"\ub97c":[1,5],"\ub9c9\ub300\ub97c":[1,5],"\ub9ce\uc740":4,"\ub9de\ub294":[1,5],"\ub9e4\uac1c\ubcc0\uc218":[1,5],"\ub9e4\uac1c\ubcc0\uc218\ub098":1,"\uba38\uc2e0\ub7ec\ub2dd":5,"\uba3c\uc800":7,"\uba54\uc778":[1,5],"\uba54\ud0c0\ub370\uc774\ud130\uc640":4,"\ubaa8\ub2c8\ud130\ub9c1":[1,5],"\ubaa8\ub378":[0,4],"\ubaa8\ub4c8":5,"\ubaa8\ub4dc\ub85c":0,"\ubaa8\ub4e0":[1,4],"\ubaa8\ubc94":5,"\ubaa9\ub85d":[3,5],"\ubabb\ud55c":1,"\ubb38\uc11c\uc785\ub2c8\ub2e4":1,"\ubb38\uc790":4,"\ubb38\uc81c":5,"\ubb38\uc81c\uac00":[2,6],"\ubc0f":[0,5],"\ubc18\ud658":1,"\ubc1c\uc0dd":[2,3],"\ubc1c\uc0dd\uc2dc\ud0ac":1,"\ubc1c\uc0dd\ud558\ub294":6,"\ubc29\ubc95\uc740":6,"\ubc29\ubc95\uc744":[2,6],"\ubc29\uc2dd":[1,4],"\ubc29\uc2dd\uc744":0,"\ubc29\ud5a5":1,"\ubc30\uc5f4":5,"\ubc30\uc5f4\ub85c":4,"\ubc30\uc5f4\uc740":4,"\ubc30\uc5f4\uc744":[0,4],"\ubc30\uc5f4\uc758":0,"\ubc30\uce58":[2,5],"\ubc31\uc5c5":0,"\ubc84\uc804":[1,5,7],"\ubc84\uc804\uc73c\ub85c":6,"\ubc84\uc804\uc744":[0,6],"\ubcc0\uc218":5,"\ubcc0\uc218\ub4e4\uc744":2,"\ubcc0\ud658":3,"\ubcc4\ub3c4":3,"\ubcd1\ubaa9\uc810":0,"\ubcf4\uad00":[1,5],"\ubcf4\uad00\ud560":1,"\ubcf4\ub2e4":[1,5],"\ubcf4\uc874":7,"\ubcf4\uc874\ub418\uc5c8\uc2b5\ub2c8\ub2e4":3,"\ubcf4\uc874\ub428":0,"\ubcf4\uc874\ub429\ub2c8\ub2e4":2,"\ubcf5\uad6c":5,"\ubcf5\uc7a1\ub3c4":4,"\ubcf5\uc7a1\ud55c":4,"\ubd84\uc11d":0,"\ubd84\ud560":0,"\ubd84\ud560\ub41c":0,"\ube44\uad50":3,"\ube44\uad50\ud574\ubcf4\uaca0\uc2b5\ub2c8\ub2e4":4,"\ube44\ud65c\uc131\ud654":2,"\ube45\ub370\uc774\ud130":4,"\ube60\ub978":[2,4],"\uc0ac\ub840\uc640":3,"\uc0ac\uc6a9":[1,7],"\uc0ac\uc6a9\ub418\uc9c0":[1,5],"\uc0ac\uc6a9\ubc95":[1,5],"\uc0ac\uc6a9\ubc95\ubd80\ud130":7,"\uc0ac\uc6a9\ubc95\uc744":4,"\uc0ac\uc6a9\uc744":6,"\uc0ac\uc6a9\ud558\ub294":6,"\uc0ac\uc6a9\ud558\ub824\uba74":6,"\uc0ac\uc6a9\ud558\uc138\uc694":4,"\uc0ac\uc6a9\ud558\uc5ec":[0,7],"\uc0ac\uc6a9\ud560":2,"\uc0ac\uc6a9\ud569\ub2c8\ub2e4":2,"\uc0ad\uc81c":[0,2],"\uc0ad\uc81c\ub41c":[1,3],"\uc0ad\uc81c\ub429\ub2c8\ub2e4":2,"\uc0ad\uc81c\ud569\ub2c8\ub2e4":[1,5],"\uc0b4\ud3b4\ubcf4\uc138\uc694":3,"\uc0c1\ub300\uc801\uc73c\ub85c":4,"\uc0c1\uc138":1,"\uc0c1\uc138\ud55c":[0,1,2,5,7],"\uc0c1\ud0dc\ub97c":2,"\uc0c1\ud669\uc5d0":[0,2],"\uc0c1\ud669\uc744":[0,1,2,5],"\uc0c8\ub85c\uc6b4":[0,2,4],"\uc0c9\uc778":5,"\uc0d8\ud50c":[3,7],"\uc0dd\uc131":[0,1,2,3,5,6,7],"\uc0dd\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4":3,"\uc0dd\uc131\ub41c":1,"\uc0dd\uc131\ud558\uc5ec":1,"\uc0dd\uc131\ud569\ub2c8\ub2e4":2,"\uc0dd\ud0dc\uacc4":4,"\uc124\uba85\ud569\ub2c8\ub2e4":[2,4],"\uc124\uc815":5,"\uc124\uc815\ub41c":[1,5],"\uc124\uc815\uc5d0":2,"\uc124\uc815\uc73c\ub85c":3,"\uc124\uc815\uc744":2,"\uc124\uc815\uc774":2,"\uc124\uc815\ud560":2,"\uc124\uce58":[5,7],"\uc124\uce58\uac00":6,"\uc124\uce58\ub418\uc9c0":1,"\uc124\uce58\ud558\ub294":6,"\uc124\uce58\ud558\ub824\uba74":6,"\uc131\uacf5":2,"\uc131\uacf5\uc801\uc73c\ub85c":[2,6],"\uc131\ub2a5":[1,5],"\uc131\ub2a5\uc744":2,"\uc139\uc158\uc5d0\uc11c\ub294":0,"\uc18c\uc2a4":[1,5],"\uc18c\uc694":0,"\uc18d\ub3c4":[1,2,5],"\uc190\uc0c1":5,"\uc218":[0,1,2,3,5,7],"\uc218\ub3c4":7,"\uc218\ub3d9":2,"\uc218\ub3d9\uc73c\ub85c":2,"\uc218\uce58":4,"\uc218\ud589\ub429\ub2c8\ub2e4":2,"\uc218\ud589\ud558\ub294":1,"\uc218\ud589\ud569\ub2c8\ub2e4":[1,5],"\uc22b\uc790":4,"\uc27d\uac8c":0,"\uc2a4\ub0c5\uc0f7":[1,5],"\uc2a4\ub0c5\uc0f7\uacfc":[1,5],"\uc2a4\ub0c5\uc0f7\uc5d0\uc11c":1,"\uc2a4\ub0c5\uc0f7\uc73c\ub85c":0,"\uc2a4\ub0c5\uc0f7\uc744":1,"\uc2a4\ub808\ub4dc\uc5d0\uc11c":[1,5],"\uc2a4\ud0c0\uc77c\uacfc":4,"\uc2a4\ud53c\ub108":[1,2,5],"\uc2dc":[0,1,2,5,7],"\uc2dc\uac01\uc801\uc73c\ub85c":2,"\uc2dc\uac04":[0,2],"\uc2dc\uac04\ubcc4":3,"\uc2dc\uac04\uc744":[1,5],"\uc2dc\ub3c4":0,"\uc2dc\ubbac\ub808\uc774\uc158":3,"\uc2dc\uc2a4\ud15c":[1,5],"\uc2dc\uc2a4\ud15c\uc5d0\uc11c":4,"\uc2dc\uc2a4\ud15c\uc744":[0,4],"\uc2dc\uc2a4\ud15c\uc758":2,"\uc2dc\uc5d0\ub294":2,"\uc2dc\uc791":[2,3],"\uc2dc\uc791\ud574\ubcf4\uaca0\uc2b5\ub2c8\ub2e4":7,"\uc2dc\uc791\ud574\ubcf4\uc138\uc694":7,"\uc2dc\ud2b8":[1,4],"\uc2dc\ud2b8\uba85\uacfc":4,"\uc2e4\uc2dc\uac04\uc73c\ub85c":[0,2],"\uc2e4\uc81c":[2,5],"\uc2e4\uc81c\ub85c\ub294":3,"\uc2e4\ud328":[2,3,7],"\uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4":2,"\uc2e4\ud589":[0,3],"\uc2e4\ud589\ub429\ub2c8\ub2e4":[1,5],"\uc2e4\ud589\ud558\ub294":[1,5],"\uc2e4\ud5d8":[4,5],"\uc30d\uc73c\ub85c":[1,5],"\uc4f0\uae30":[1,2,4,5,7],"\uc4f0\uae30\ub97c":[1,4,5,7],"\uc4f0\uae30\uc5d0":[1,5],"\uc544\ud0a4\ud14d\ucc98\ub97c":0,"\uc548\ub0b4\ud569\ub2c8\ub2e4":6,"\uc548\uc804\uc7a5\uce58\ub97c":7,"\uc548\uc804\ud558\uac8c":[0,1,2,3,5],"\uc548\uc804\ud558\uace0":5,"\uc548\uc804\ud55c":[1,5,7],"\uc54a\ub294":[0,1,5],"\uc54a\uc2b5\ub2c8\ub2e4":[1,5],"\uc54a\uc558\uac70\ub098":2,"\uc54a\uc558\uc2b5\ub2c8\ub2e4":2,"\uc54a\uc740":[1,4],"\uc555\ucd95":[1,4],"\uc555\ucd95\uacfc":4,"\uc555\ucd95\ub418\uc9c0":4,"\uc555\ucd95\ub41c":[0,4],"\uc555\ucd95\uc73c\ub85c":3,"\uc591":2,"\uc5c5\uadf8\ub808\uc774\ub4dc":5,"\uc5c5\ub370\uc774\ud2b8":[0,3],"\uc5c5\ub370\uc774\ud2b8\ub41c":3,"\uc5c6\ub294":0,"\uc5c6\uc74c":2,"\uc5c6\uc74c\uc73c\ub85c":2,"\uc5c6\uc774":5,"\uc5d0\ub7ec":5,"\uc5d1\uc140":4,"\uc5d4\uc9c4":[1,4],"\uc5ec\ub7ec":4,"\uc5ec\ubd80":[1,2,4,5],"\uc5f0\uacb0":[0,1,3,4,7],"\uc5f0\ub3d9":5,"\uc608":4,"\uc608\uc0c1\uce58":1,"\uc608\uc2dc":2,"\uc608\uc678":5,"\uc608\uc678\ub97c":1,"\uc608\uc81c":[1,5,7],"\uc608\uce21":0,"\uc624\ub798\ub41c":[1,3,5,7],"\uc624\ub958":[1,3,6],"\uc62c\ubc14\ub974\uac8c":2,"\uc635\uc158":4,"\uc635\uc158\uacfc":[2,4],"\uc635\uc158\uc73c\ub85c":4,"\uc635\uc158\uc744":2,"\uc644\ub8cc":[3,5,7],"\uc644\ub8cc\ub418\uc5c8\ub294\uc9c0":6,"\uc644\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4":[2,6],"\uc644\ub8cc\ub418\uc9c0":2,"\uc644\ub8cc\ub97c":2,"\uc6a9\ub7c9":[1,2,5],"\uc6b0\uc120":2,"\uc6d0\ubcf8":[0,2,3,7],"\uc6d0\uc790\uc801":[1,2,5],"\uc6d0\uc790\uc801\uc73c\ub85c":7,"\uc6d0\uc790\uc801\uc778":5,"\uc704\ud55c":[0,2,4,7],"\uc704\ud574":[2,4,6],"\uc720\uc9c0\ud558\uae30":6,"\uc720\uc9c0\ud560":2,"\uc751\ub2f5":4,"\uc758\uc874\uc131":5,"\uc774":[0,1,5,7],"\uc774\ub97c":0,"\uc774\ub984":[1,4],"\uc774\uc0c1":[0,1,2,3,5],"\uc778\ub371\uc2a4":[1,2,4],"\uc778\ub371\uc2a4\ub97c":4,"\uc778\uc790":[1,5],"\uc778\uc790\ub4e4\uc785\ub2c8\ub2e4":[1,5],"\uc778\ucf54\ub529":[1,4],"\uc77c\uad00\ub41c":2,"\uc77c\ubcc4":3,"\uc77c\uc218":1,"\uc77d\uae30":[1,2,3,4,7],"\uc77d\uc5b4\uc635\ub2c8\ub2e4":1,"\uc77d\uc744":1,"\uc784\uc2dc":[0,3,5,7],"\uc788\ub294":[0,1,2,5],"\uc788\ub294\uc9c0":3,"\uc788\uc2b5\ub2c8\ub2e4":[0,1,2,5,7],"\uc788\uc5b4\uc57c":2,"\uc788\uc744":2,"\uc790\ub3d9\uc73c\ub85c":2,"\uc791\ub3d9\ud569\ub2c8\ub2e4":2,"\uc791\uc5c5":2,"\uc791\uc740":4,"\uc798\ubabb\ub41c":[0,1],"\uc7ac\ucc98\ub9ac":2,"\uc800\uc7a5":[1,2,4,5],"\uc800\uc7a5\ub418\uc5c8\uc2b5\ub2c8\ub2e4":3,"\uc800\uc7a5\ub41c":2,"\uc800\uc7a5\ub420":[1,5],"\uc800\uc7a5\uc774":2,"\uc800\uc7a5\ud560":[0,1,5,7],"\uc800\uc7a5\ud569\ub2c8\ub2e4":[1,5],"\uc801\uc6a9":[1,2,5],"\uc801\uc6a9\ub418\uc5c8\ub294\uc9c0":2,"\uc804":2,"\uc804\ub2ec\ub420":[1,5],"\uc804\uc6a9":2,"\uc804\ucc98\ub9ac":0,"\uc804\ucc98\ub9ac\ub41c":0,"\uc804\uccb4":7,"\uc808\uc57d":[2,4],"\uc815\ub9ac":[1,3,7],"\uc815\ub9ac\ub41c":3,"\uc815\ub9ac\ub429\ub2c8\ub2e4":2,"\uc815\ub9ac\ud569\ub2c8\ub2e4":1,"\uc815\ubcf4":[0,1,2,5,7],"\uc815\ubcf4\ub97c":[0,2,7],"\uc815\uc81c":0,"\uc815\uc81c\ub41c":0,"\uc81c\uac70":5,"\uc81c\uac70\ud558\ub824\uba74":6,"\uc81c\uacf5\ud569\ub2c8\ub2e4":[0,2,7],"\uc81c\uc5b4\ud558\ub294":2,"\uc81c\uc678\ub85c":2,"\uc81c\ud55c\uc801":4,"\uc870\ud68c":[1,5],"\uc874\uc7ac":1,"\uc874\uc7ac\ud560":4,"\uc874\uc7ac\ud569\ub2c8\ub2e4":[2,3],"\uc88b\uc740":4,"\uc8fc\uc11d":4,"\uc8fc\uc758\uc0ac\ud56d":2,"\uc911":[3,6],"\uc911\uac04":[4,5],"\uc9c0\uc6d0":[1,4,5,6],"\uc9c0\uc6d0\ud558\uc9c0":0,"\uc9c0\uc6d0\ud560":2,"\uc9c0\uc6d0\ud569\ub2c8\ub2e4":[0,4,7],"\uc9c0\uc815":4,"\uc9c1\uc811":7,"\uc9c4\ub2e8":[1,5],"\uc9c4\ub2e8\uc744":0,"\uc9c4\ud589":[0,1,2,5],"\uc9c4\ud589\ub3c4":[1,5],"\uc9c4\ud589\ub960":[1,5],"\uc9c4\ud589\ub960\uc744":7,"\uc9d1\uacc4":3,"\ucc38\uc870":7,"\ucc38\uc870\ub418\uc9c0":[1,5],"\ucc98\ub9ac":[5,7],"\ucc98\ub9ac\uac00":2,"\ucc98\ub9ac\ub418\ub294":2,"\ucc98\ub9ac\ub41c":[1,3,5],"\ucc98\ub9ac\ub97c":4,"\ucc98\ub9ac\uc5d0":4,"\ucc98\ub9ac\uc5d0\uc11c":2,"\ucc98\ub9ac\ud560":3,"\ucc98\ub9ac\ud569\ub2c8\ub2e4":[0,2],"\ucd08":2,"\ucd08\uae30":3,"\ucd08\ub2f9":2,"\ucd5c\uace0":4,"\ucd5c\uc2e0":[0,1,3,6],"\ucd5c\uc801\ud654":5,"\ucd5c\uc801\ud654\ub41c":4,"\ucd5c\uc885":4,"\ucd94\uac00":[0,1,2,4,5,6],"\ucd94\uac00\ud558\ub824\uba74":4,"\ucd94\uac00\ud560":0,"\ucd94\uc801\ud560":2,"\ucd94\ucd9c":3,"\ucd94\ucd9c\ub41c":3,"\ucd9c\ub825":[0,1,2,5,7],"\ucda9\ub3cc":6,"\ucda9\ubd84\ud55c":2,"\uce21\uc815":2,"\uce90\uc2dc":6,"\ucee4\ub125\uc158":[1,5],"\ucee4\uc2a4\ud140":[2,4],"\uceec\ub7fc":4,"\uceec\ub7fc\uc73c\ub85c":4,"\ucf54\ub4dc\ub294":7,"\ucf58\uc194\uc5d0":[1,5],"\ud06c\uae30":[2,3,4],"\ud070":4,"\ud074\ub798\uc2a4":[1,4,5],"\ud074\ub798\uc2a4\uc5d0":1,"\ud0a4\uc6cc\ub4dc":[1,5],"\ud0c0\uc785":[1,5],"\ud0c0\uc785\uacfc":[1,5],"\ud14c\uc2a4\ud2b8":[0,6],"\ud14c\uc774\ube14":[1,4],"\ud14c\uc774\ube14\ub85c":4,"\ud14c\uc774\ube14\uba85":[1,5],"\ud14c\uc774\ube14\uc774":4,"\ud14d\uc2a4\ud2b8":4,"\ud1b5\uacc4":3,"\ud1b5\ud55c":5,"\ud1b5\ud574":[0,2],"\ud2b8\ub79c\uc7ad\uc158\ucc98\ub7fc":5,"\ud2b9\uc131\uc744":4,"\ud2b9\uc815":[0,1,3],"\ud2b9\uc9d5":4,"\ud2b9\ud654":4,"\ud30c\uc774\ud504\ub77c\uc778":5,"\ud30c\uc77c":[1,7],"\ud30c\uc77c\ub85c":[0,2,4],"\ud30c\uc77c\ubcc4":4,"\ud30c\uc77c\uc5d0":[2,4,7],"\ud30c\uc77c\uc740":[0,2],"\ud30c\uc77c\uc744":[1,2,3,5],"\ud30c\uc77c\uc758":5,"\ud30c\uc77c\uc774":[2,3],"\ud328\ud0a4\uc9c0\uac00":1,"\ud398\uc774\uc9c0":5,"\ud3ec\ub9f7":[1,5],"\ud3ec\ub9f7\uc5d0":[1,5],"\ud3ec\ud568":[1,4],"\ud45c\uc2dc":[1,5],"\ud45c\uc2dc\ub294":2,"\ud45c\uc2dc\uc640":[0,2,5],"\ud45c\uc2dc\ud558\ub294":[1,5],"\ud45c\uc2dc\ud569\ub2c8\ub2e4":[1,5],"\ud45c\uc900":4,"\ud45c\ud604":1,"\ud504\ub85c\uc81d\ud2b8\ubcc4\ub85c":6,"\ud50c\ub798\uadf8":[5,7],"\ud50c\ub798\uadf8\uac00":3,"\ud50c\ub7ec\uadf8\uc778":[4,5],"\ud50c\ub7ec\uadf8\uc778\uc744":2,"\ud544\uc218":[1,4,5],"\ud544\uc218\uc785\ub2c8\ub2e4":[1,5],"\ud544\uc694":4,"\ud544\uc694\ud55c":[1,5],"\ud544\uc694\ud560":2,"\ud544\uc694\ud569\ub2c8\ub2e4":6,"\ud558\ub098\uc758":4,"\ud559\uc2b5":[0,4],"\ud560":5,"\ud568\uaed8":[0,2,4,5],"\ud568\uc218":5,"\ud568\uc218\uac00":[1,5],"\ud568\uc218\uc5d0":[1,5],"\ud568\uc218\uc640":1,"\ud568\uc218\uc785\ub2c8\ub2e4":1,"\ud569\ub2c8\ub2e4":2,"\ud574\uacb0":5,"\ud578\ub4e4\ub7ec\ub97c":[1,5],"\ud589":3,"\ud5e4\ub354":4,"\ud604\ub300\uc801\uc778":4,"\ud604\uc7ac\uae4c\uc9c0":2,"\ud615\uc2dd":[2,6],"\ud615\uc2dd\ubcc4":1,"\ud615\uc2dd\ubcc4\ub85c":4,"\ud615\uc2dd\uc73c\ub85c":[3,4],"\ud615\uc2dd\uc744":[0,2,4,6,7],"\ud615\uc2dd\uc758":4,"\ud615\ud0dc\ub85c":4,"\ud638\ud658\uc131\uc744":4,"\ud655\uc778":[3,5],"\ud655\uc778\uc774":2,"\ud655\uc778\ud558\ub294":2,"\ud655\uc778\ud558\ub824\uba74":[6,7],"\ud655\uc778\ud560":[0,2,7],"\ud655\uc7a5":5,"\ud658\uacbd":[4,5],"\ud658\uacbd\uc744":[2,6],"\ud65c\uc131\ud654":[2,3,6,7],"\ud65c\uc131\ud654\ud560":0,"\ud65c\uc6a9":5,"\ud6a8\uc728\uc801\uc73c\ub85c":4,"\ud6a8\uc728\uc801\uc778":2,"\ud6c4":[1,2,3,5,7]},"titles":["\uace0\uae09 \uc0ac\uc6a9\ubc95","API \ucc38\uc870","\uc124\uc815 \ubc0f \uad6c\uc131","\uc0ac\uc6a9 \uc608\uc81c","\uc9c0\uc6d0\ud558\ub294 \ud30c\uc77c \ud615\uc2dd","Atio Documentation","\uc124\uce58 \uac00\uc774\ub4dc","\ube60\ub978 \uc2dc\uc791"],"titleterms":{"api":[1,5],"arrow":4,"atio":5,"avro":4,"binari":4,"comma":4,"compress":4,"conda":6,"core":1,"csv":[1,4],"databas":4,"datafram":[3,4,7],"document":5,"etl":0,"excel":[1,4],"expire_snapshot":1,"html":4,"indic":5,"ipc":4,"json":[1,2,4],"npy":4,"npz":4,"numpi":[0,4],"panda":[0,4],"parquet":[1,4],"pickl":4,"plugin":1,"polar":[0,3,4,7],"postgresql":3,"pypi\ub97c":6,"read_tabl":1,"refer":5,"separ":4,"sql":[0,1,4],"tabl":5,"util":1,"valu":4,"write":1,"write_snapshot":1,"yaml":2,"\uac00\uc0c1\ud658\uacbd":6,"\uac00\uc774\ub4dc":[5,6],"\uac04\ub2e8\ud55c":3,"\uac1c\ubc1c":[2,6],"\uac80\uc99d":2,"\uace0\uae09":0,"\uace0\uc131\ub2a5":3,"\uad00\ub9ac":[0,2,3],"\uad6c\uc131":2,"\uad8c\uc7a5":[4,6],"\uae30\ub2a5":[5,7],"\uae30\ubc18":[0,3],"\uae30\ubcf8":[0,2,3,7],"\ub2e4\uc591\ud55c":7,"\ub2e4\uc74c":7,"\ub2e8\uacc4":7,"\ub2e8\uc77c":0,"\ub300\uc6a9\ub7c9":3,"\ub370\uc774\ud130":[3,4],"\ub370\uc774\ud130\ubca0\uc774\uc2a4":[0,3,7],"\ub3d9\uc2dc":3,"\ub3d9\uc791":2,"\ub4f1\ub85d":[0,2],"\ub514\ub809\ud1a0\ub9ac":2,"\ub808\ubca8":2,"\ub85c\uae45":[0,2],"\ub864\ubc31":2,"\uba38\uc2e0\ub7ec\ub2dd":[0,4],"\uba54\ubaa8\ub9ac":2,"\ubaa8\ub2c8\ud130\ub9c1":[2,3,7],"\ubaa8\ub4c8":1,"\ubaa8\ub4dc":2,"\ubaa8\ub4e0":6,"\ubaa8\ubc94":2,"\ubaa9\ucc28":5,"\ubb38\uc81c":6,"\ubc0f":[2,3,4],"\ubc30\uc5f4":[0,4],"\ubc30\uce58":3,"\ubc31\uc5c5":2,"\ubc84\uc804":[0,3,6],"\ubcc0\uc218":2,"\ubcf4\uace0\uc11c":4,"\ubcf5\uad6c":3,"\ubd84\uc11d":4,"\ube44\uad50":4,"\ube44\uc988\ub2c8\uc2a4":4,"\ube60\ub978":[5,7],"\uc0ac\ub840":[0,2,3,4,5],"\uc0ac\uc6a9":[0,2,3,4,5,6],"\uc0ac\uc6a9\ub7c9":2,"\uc0ac\uc6a9\ubc95":[0,7],"\uc0ac\uc6a9\uc790":[2,5],"\uc0c1\uc138":[0,2],"\uc120\ud0dd\uc801":6,"\uc124\uc815":[2,3],"\uc124\uce58":6,"\uc131\ub2a5":[0,2,3,4,7],"\uc18d\ub3c4":4,"\uc2a4\ub0c5\uc0f7":[0,2,3,7],"\uc2dc\uc2a4\ud15c":[0,2],"\uc2dc\uc791":[5,7],"\uc2e4\uc81c":[0,3],"\uc4f0\uae30":0,"\uc548\uc804\ud55c":3,"\uc555\ucd95":[2,3],"\uc560\ud50c\ub9ac\ucf00\uc774\uc158":4,"\uc5c5\uadf8\ub808\uc774\ub4dc":6,"\uc5d0\ub7ec":[0,2,3],"\uc5ec\ub7ec":[0,3],"\uc5f0\ub3d9":[0,3],"\uc608\uc678":1,"\uc608\uc81c":3,"\uc635\uc158":2,"\uc644\ub8cc":2,"\uc6a9\ub7c9":4,"\uc6f9":4,"\uc758\uc874\uc131":6,"\uc77d\uae30":0,"\uc784\uc2dc":2,"\uc800\uc7a5":[0,3,7],"\uc815\ub9ac":[0,2],"\uc815\uc758":2,"\uc81c\uac70":6,"\uc8fc\uc694":[1,5],"\uc9c0\uc6d0":7,"\uc9c0\uc6d0\ud558\ub294":[1,4,5],"\uc9c4\ud589\ub3c4":[0,2],"\uc9c4\ud589\ub960":[3,7],"\ucc38\uc870":[1,5],"\ucc98\ub9ac":[0,1,2,3],"\ucd5c\uc801\ud654":[0,2,3],"\ucee4\uc2a4\ud140":0,"\ud14c\uc2a4\ud2b8":2,"\ud1b5\ud55c":6,"\ud2b9\uc815":6,"\ud30c\uc774\ud504\ub77c\uc778":[0,3,4],"\ud30c\uc77c":[0,2,3,4,5],"\ud3ec\ub9f7":0,"\ud45c\uc2dc":[0,2,7],"\ud45c\uc2dc\uc640":3,"\ud504\ub85c\ub355\uc158":2,"\ud50c\ub798\uadf8":2,"\ud50c\ub7ec\uadf8\uc778":[0,2],"\ud544\uc218":6,"\ud568\uc218":1,"\ud568\uc218\ub4e4":5,"\ud574\uacb0":6,"\ud575\uc2ec":5,"\ud615\uc2dd":[0,1,4,5,7],"\ud615\uc2dd\ubcc4":4,"\ud638\ud658\uc131":4,"\ud655\uc778":[2,6],"\ud655\uc7a5":0,"\ud655\uc7a5\ud558\uae30":4,"\ud658\uacbd":[2,6],"\ud65c\uc6a9":[2,3]}})
\ No newline at end of file
diff --git a/docs/source/_static/custom.css b/docs/source/_static/custom.css
new file mode 100644
index 0000000..b5198bd
--- /dev/null
+++ b/docs/source/_static/custom.css
@@ -0,0 +1 @@
+/* 기본 상태로 복원 - 커스텀 스타일 제거 */
\ No newline at end of file
diff --git a/docs/source/advanced_usage.rst b/docs/source/advanced_usage.rst
new file mode 100644
index 0000000..f8eafc9
--- /dev/null
+++ b/docs/source/advanced_usage.rst
@@ -0,0 +1,323 @@
+고급 사용법
+==========
+
+이 섹션에서는 Atio의 고급 기능들을 다룹니다.
+
+스냅샷 기반 버전 관리
+--------------------
+
+Atio는 데이터의 버전을 관리할 수 있는 스냅샷 시스템을 제공합니다.
+
+기본 스냅샷 쓰기
+~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ import atio
+ import pandas as pd
+
+ # 데이터 생성
+ df = pd.DataFrame({
+ "id": [1, 2, 3],
+ "name": ["Alice", "Bob", "Charlie"]
+ })
+
+ # 스냅샷으로 저장 (버전 관리)
+ atio.write_snapshot(df, "users_table", format="parquet")
+
+ # 새로운 데이터로 업데이트
+ df_new = pd.DataFrame({
+ "id": [1, 2, 3, 4],
+ "name": ["Alice", "Bob", "Charlie", "David"]
+ })
+
+ # append 모드로 스냅샷 추가
+ atio.write_snapshot(df_new, "users_table", mode="append", format="parquet")
+
+스냅샷 읽기
+~~~~~~~~~~
+
+.. code-block:: python
+
+ # 최신 버전 읽기
+ latest_data = atio.read_table("users_table")
+
+ # 특정 버전 읽기
+ version_1_data = atio.read_table("users_table", version=1)
+
+ # Polars로 읽기
+ polars_data = atio.read_table("users_table", output_as="polars")
+
+스냅샷 정리
+~~~~~~~~~~
+
+.. code-block:: python
+
+ from datetime import timedelta
+
+ # 7일 이상 된 스냅샷 삭제 (dry run)
+ atio.expire_snapshots("users_table", keep_for=timedelta(days=7), dry_run=True)
+
+ # 실제 삭제 실행
+ atio.expire_snapshots("users_table", keep_for=timedelta(days=7), dry_run=False)
+
+데이터베이스 연동
+----------------
+
+Pandas와 Polars를 사용하여 데이터베이스에 안전하게 데이터를 저장할 수 있습니다.
+
+Pandas SQL 연동
+~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ import atio
+ import pandas as pd
+ from sqlalchemy import create_engine
+
+ # 데이터베이스 연결
+ engine = create_engine('postgresql://user:password@localhost/dbname')
+
+ df = pd.DataFrame({
+ "id": [1, 2, 3],
+ "name": ["Alice", "Bob", "Charlie"]
+ })
+
+ # SQL 데이터베이스에 저장
+ atio.write(df, format="sql", name="users", con=engine)
+
+Polars 데이터베이스 연동
+~~~~~~~~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ import atio
+ import polars as pl
+
+ df = pl.DataFrame({
+ "id": [1, 2, 3],
+ "name": ["Alice", "Bob", "Charlie"]
+ })
+
+ # 데이터베이스에 저장
+ atio.write(df, format="database",
+ table_name="users",
+ connection_uri="postgresql://user:password@localhost/dbname")
+
+성능 최적화
+-----------
+
+진행도 표시
+~~~~~~~~~~
+
+대용량 파일 처리 시 진행 상황을 실시간으로 확인할 수 있습니다.
+
+.. code-block:: python
+
+ import atio
+ import pandas as pd
+ import numpy as np
+
+ # 대용량 데이터 생성
+ large_df = pd.DataFrame(np.random.randn(1000000, 10))
+
+ # 진행도 표시와 함께 저장
+ atio.write(large_df, "large_data.parquet",
+ format="parquet",
+ show_progress=True)
+
+상세 로깅
+~~~~~~~~~
+
+성능 진단을 위한 상세한 로깅을 활성화할 수 있습니다.
+
+.. code-block:: python
+
+ # 상세한 성능 정보 출력
+ atio.write(df, "data.parquet", format="parquet", verbose=True)
+
+이를 통해 다음과 같은 정보를 확인할 수 있습니다:
+
+- 각 단계별 소요 시간
+- 임시 파일 생성 및 교체 과정
+- 백업 및 롤백 과정
+- 성능 병목점 분석
+
+에러 처리
+---------
+
+Atio는 다양한 에러 상황에 대해 안전하게 처리합니다.
+
+파일 시스템 에러
+~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ import atio
+ import pandas as pd
+
+ df = pd.DataFrame({"a": [1, 2, 3]})
+
+ try:
+ # 권한이 없는 디렉토리에 저장 시도
+ atio.write(df, "/root/data.parquet", format="parquet")
+ except PermissionError as e:
+ print(f"권한 에러: {e}")
+ # 원본 파일은 그대로 보존됨
+
+포맷 에러
+~~~~~~~~~
+
+.. code-block:: python
+
+ try:
+ # 지원하지 않는 포맷 사용
+ atio.write(df, "data.unknown", format="unknown")
+ except ValueError as e:
+ print(f"지원하지 않는 포맷: {e}")
+
+데이터베이스 에러
+~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ try:
+ # 잘못된 데이터베이스 연결 정보
+ atio.write(df, format="sql",
+ name="users",
+ con="invalid_connection")
+ except Exception as e:
+ print(f"데이터베이스 에러: {e}")
+
+플러그인 확장
+------------
+
+Atio는 플러그인 아키텍처를 통해 새로운 형식을 쉽게 추가할 수 있습니다.
+
+커스텀 형식 등록
+~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ from atio.plugins import register_writer
+ import pandas as pd
+
+ # 커스텀 형식 등록
+ def custom_writer(df, path, **kwargs):
+ # 커스텀 저장 로직
+ with open(path, 'w') as f:
+ f.write("Custom format\n")
+ f.write(df.to_string())
+
+ # Pandas DataFrame에 대한 커스텀 형식 등록
+ register_writer(pd.DataFrame, "custom", custom_writer)
+
+ # 사용
+ df = pd.DataFrame({"a": [1, 2, 3]})
+ atio.write(df, "data.custom", format="custom")
+
+NumPy 배열 처리
+--------------
+
+NumPy 배열의 다양한 저장 방식을 지원합니다.
+
+단일 배열 저장
+~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ import atio
+ import numpy as np
+
+ arr = np.array([[1, 2, 3], [4, 5, 6]])
+
+ # .npy 파일로 저장
+ atio.write(arr, "array.npy", format="npy")
+
+ # .csv 파일로 저장
+ atio.write(arr, "array.csv", format="csv")
+
+여러 배열 저장
+~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ # 여러 배열을 딕셔너리로 저장
+ arrays = {
+ "features": np.random.randn(1000, 10),
+ "labels": np.random.randint(0, 2, 1000),
+ "metadata": np.array([1, 2, 3, 4, 5])
+ }
+
+ # 압축된 .npz 파일로 저장
+ atio.write(arrays, "data.npz", format="npz_compressed")
+
+실제 사용 사례
+-------------
+
+머신러닝 파이프라인
+~~~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ import atio
+ import pandas as pd
+ from sklearn.model_selection import train_test_split
+ from sklearn.ensemble import RandomForestClassifier
+
+ # 데이터 로드 및 전처리
+ df = pd.read_csv("raw_data.csv")
+
+ # 전처리된 데이터를 안전하게 저장
+ atio.write(df, "processed_data.parquet", format="parquet")
+
+ # 학습/테스트 분할
+ X_train, X_test, y_train, y_test = train_test_split(
+ df.drop('target', axis=1), df['target'], test_size=0.2
+ )
+
+ # 분할된 데이터를 스냅샷으로 저장
+ atio.write_snapshot(X_train, "training_data", format="parquet")
+ atio.write_snapshot(X_test, "test_data", format="parquet")
+
+ # 모델 학습
+ model = RandomForestClassifier()
+ model.fit(X_train, y_train)
+
+ # 예측 결과를 안전하게 저장
+ predictions = model.predict(X_test)
+ results_df = pd.DataFrame({
+ 'actual': y_test,
+ 'predicted': predictions
+ })
+
+ atio.write(results_df, "predictions.parquet", format="parquet")
+
+ETL 파이프라인
+~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ import atio
+ import pandas as pd
+ from sqlalchemy import create_engine
+
+ # 1. 원본 데이터 로드
+ raw_data = pd.read_csv("source_data.csv")
+
+ # 2. 데이터 정제
+ cleaned_data = raw_data.dropna()
+ cleaned_data = cleaned_data[cleaned_data['value'] > 0]
+
+ # 3. 안전하게 정제된 데이터 저장
+ atio.write(cleaned_data, "cleaned_data.parquet", format="parquet")
+
+ # 4. 데이터베이스에 저장
+ engine = create_engine('postgresql://user:password@localhost/warehouse')
+ atio.write(cleaned_data, format="sql",
+ name="processed_table",
+ con=engine,
+ if_exists='replace')
+
+ # 5. 스냅샷으로 버전 관리
+ atio.write_snapshot(cleaned_data, "daily_processed", format="parquet")
\ No newline at end of file
diff --git a/docs/source/api.rst b/docs/source/api.rst
new file mode 100644
index 0000000..2e0f4f9
--- /dev/null
+++ b/docs/source/api.rst
@@ -0,0 +1,222 @@
+API 참조
+========
+
+Atio의 모든 함수와 클래스에 대한 상세한 API 문서입니다.
+
+주요 함수
+--------
+
+.. automodule:: atio
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+Core 모듈
+--------
+
+.. automodule:: atio.core
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+write()
+-------
+
+안전한 원자적 파일 쓰기를 수행하는 메인 함수입니다.
+
+.. function:: atio.write(obj, target_path=None, format='parquet', **kwargs)
+
+ :param obj: 저장할 데이터 객체 (pandas.DataFrame, polars.DataFrame, numpy.ndarray)
+ :param target_path: 저장할 파일 경로 (파일 저장 시 필수)
+ :param format: 저장 형식 ('csv', 'parquet', 'excel', 'json', 'sql', 'database')
+ :param show_progress: 진행률 표시 여부 (기본값: False)
+ :param verbose: 상세 성능 정보 출력 여부 (기본값: False)
+ :param **kwargs: 형식별 추가 매개변수
+
+ :returns: None
+
+ :raises: ValueError, IOError, DatabaseError
+
+ **사용 예제:**
+
+ .. code-block:: python
+
+ import atio
+ import pandas as pd
+
+ df = pd.DataFrame({"a": [1, 2, 3]})
+
+ # 기본 사용법
+ atio.write(df, "data.parquet", format="parquet")
+
+ # 진행률 표시
+ atio.write(df, "data.parquet", format="parquet", show_progress=True)
+
+ # 성능 정보 출력
+ atio.write(df, "data.parquet", format="parquet", verbose=True)
+
+write_snapshot()
+---------------
+
+데이터 스냅샷을 생성하여 버전 관리를 수행합니다.
+
+.. function:: atio.write_snapshot(obj, table_name, format='parquet', **kwargs)
+
+ :param obj: 저장할 데이터 객체
+ :param table_name: 테이블 이름 (스냅샷 디렉토리명)
+ :param format: 저장 형식
+ :param **kwargs: 추가 매개변수
+
+ :returns: 생성된 스냅샷 ID
+
+ **사용 예제:**
+
+ .. code-block:: python
+
+ # 스냅샷 생성
+ snapshot_id = atio.write_snapshot(df, "users", format="parquet")
+ print(f"생성된 스냅샷 ID: {snapshot_id}")
+
+read_table()
+-----------
+
+스냅샷에서 데이터를 읽어옵니다.
+
+.. function:: atio.read_table(table_name, snapshot_id='latest', format='parquet', **kwargs)
+
+ :param table_name: 테이블 이름
+ :param snapshot_id: 스냅샷 ID (기본값: 'latest')
+ :param format: 읽을 형식
+ :param **kwargs: 추가 매개변수
+
+ :returns: 데이터 객체
+
+ **사용 예제:**
+
+ .. code-block:: python
+
+ # 최신 스냅샷 읽기
+ df = atio.read_table("users", format="parquet")
+
+ # 특정 스냅샷 읽기
+ df = atio.read_table("users", snapshot_id="20240101_120000", format="parquet")
+
+expire_snapshots()
+-----------------
+
+오래된 스냅샷을 정리합니다.
+
+.. function:: atio.expire_snapshots(table_name, days=30, format='parquet')
+
+ :param table_name: 테이블 이름
+ :param days: 보관할 일수 (기본값: 30)
+ :param format: 형식
+
+ :returns: 삭제된 스냅샷 수
+
+ **사용 예제:**
+
+ .. code-block:: python
+
+ # 30일 이상 된 스냅샷 정리
+ deleted_count = atio.expire_snapshots("users", days=30)
+ print(f"삭제된 스냅샷 수: {deleted_count}")
+
+Plugins 모듈
+-----------
+
+.. automodule:: atio.plugins
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+Utils 모듈
+---------
+
+.. automodule:: atio.utils
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+지원하는 형식
+-----------
+
+CSV 형식
+~~~~~~~
+
+.. code-block:: python
+
+ atio.write(df, "data.csv", format="csv", index=False, encoding='utf-8')
+
+**지원 매개변수:**
+- `index`: 인덱스 포함 여부
+- `encoding`: 인코딩 방식
+- `sep`: 구분자
+- `na_rep`: NA 값 표현
+
+Parquet 형식
+~~~~~~~~~~~
+
+.. code-block:: python
+
+ atio.write(df, "data.parquet", format="parquet", compression='snappy')
+
+**지원 매개변수:**
+- `compression`: 압축 방식 ('snappy', 'gzip', 'brotli')
+- `engine`: 엔진 ('pyarrow', 'fastparquet')
+
+Excel 형식
+~~~~~~~~~
+
+.. code-block:: python
+
+ atio.write(df, "data.xlsx", format="excel", sheet_name="Sheet1")
+
+**지원 매개변수:**
+- `sheet_name`: 시트 이름
+- `engine`: 엔진 ('openpyxl', 'xlsxwriter')
+
+JSON 형식
+~~~~~~~~~
+
+.. code-block:: python
+
+ atio.write(df, "data.json", format="json", orient="records")
+
+**지원 매개변수:**
+- `orient`: 방향 ('records', 'split', 'index', 'columns', 'values', 'table')
+
+SQL 형식
+~~~~~~~~
+
+.. code-block:: python
+
+ atio.write(df, format="sql", name="table_name", con=engine, if_exists="replace")
+
+**지원 매개변수:**
+- `name`: 테이블 이름
+- `con`: 데이터베이스 연결
+- `if_exists`: 테이블 존재 시 동작 ('fail', 'replace', 'append')
+
+예외 처리
+--------
+
+Atio는 다음과 같은 예외를 발생시킬 수 있습니다:
+
+- **ValueError**: 잘못된 매개변수나 형식
+- **IOError**: 파일 시스템 오류
+- **DatabaseError**: 데이터베이스 연결 오류
+- **ImportError**: 필요한 패키지가 설치되지 않은 경우
+
+**예외 처리 예제:**
+
+.. code-block:: python
+
+ try:
+ atio.write(df, "data.parquet", format="parquet")
+ except ValueError as e:
+ print(f"매개변수 오류: {e}")
+ except IOError as e:
+ print(f"파일 시스템 오류: {e}")
+ except Exception as e:
+ print(f"예상치 못한 오류: {e}")
\ No newline at end of file
diff --git a/docs/source/configuration.rst b/docs/source/configuration.rst
new file mode 100644
index 0000000..6d805cc
--- /dev/null
+++ b/docs/source/configuration.rst
@@ -0,0 +1,491 @@
+설정 및 구성
+============
+
+Atio의 다양한 설정 옵션과 구성 방법을 설명합니다.
+
+로깅 설정
+--------
+
+Atio는 상세한 로깅을 통해 작업 과정을 추적할 수 있습니다.
+
+기본 로깅
+~~~~~~~~~
+
+.. code-block:: python
+
+ import atio
+ import pandas as pd
+
+ df = pd.DataFrame({"a": [1, 2, 3]})
+
+ # 기본 로깅 (INFO 레벨)
+ atio.write(df, "data.parquet", format="parquet")
+
+**출력 예시:**
+```
+[INFO] 임시 디렉토리 생성: /tmp/tmp12345
+[INFO] 임시 파일 경로: /tmp/tmp12345/data.parquet
+[INFO] 사용할 writer: to_parquet (format: parquet)
+[INFO] 데이터 임시 파일에 저장 완료: /tmp/tmp12345/data.parquet
+[INFO] 원자적 교체 완료: /tmp/tmp12345/data.parquet -> data.parquet
+[INFO] _SUCCESS 플래그 파일 생성: .data.parquet._SUCCESS
+[INFO] ✅ Atomic write completed successfully (took 0.1234s)
+```
+
+상세 로깅
+~~~~~~~~~
+
+.. code-block:: python
+
+ # 상세한 성능 정보 출력 (DEBUG 레벨)
+ atio.write(df, "data.parquet", format="parquet", verbose=True)
+
+**출력 예시:**
+```
+[INFO] 임시 디렉토리 생성: /tmp/tmp12345
+[INFO] 임시 파일 경로: /tmp/tmp12345/data.parquet
+[INFO] 사용할 writer: to_parquet (format: parquet)
+[INFO] 데이터 임시 파일에 저장 완료: /tmp/tmp12345/data.parquet
+[INFO] 원자적 교체 완료: /tmp/tmp12345/data.parquet -> data.parquet
+[INFO] _SUCCESS 플래그 파일 생성: .data.parquet._SUCCESS
+[DEBUG] Atomic write step timings (SUCCESS): setup=0.0012s, write_call=0.0987s, replace=0.0001s, success_flag=0.0001s, total=0.1001s
+[INFO] ✅ Atomic write completed successfully (took 0.1001s)
+```
+
+진행도 표시
+----------
+
+대용량 파일 처리 시 진행 상황을 실시간으로 확인할 수 있습니다.
+
+기본 진행도 표시
+~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ import atio
+ import pandas as pd
+ import numpy as np
+
+ # 대용량 데이터 생성
+ large_df = pd.DataFrame(np.random.randn(1000000, 10))
+
+ # 진행도 표시와 함께 저장
+ atio.write(large_df, "large_data.parquet",
+ format="parquet",
+ show_progress=True)
+
+**출력 예시:**
+```
+⠋ Writing large_data.parquet... [ 45.2 MB | 12.3 MB/s | 00:03 ]
+⠙ Writing large_data.parquet... [ 67.8 MB | 11.9 MB/s | 00:05 ]
+⠹ Writing large_data.parquet... [ 89.1 MB | 12.1 MB/s | 00:07 ]
+✅ Writing completed successfully (89.1 MB in 7s)
+```
+
+진행도 표시 옵션
+~~~~~~~~~~~~~~~
+
+진행도 표시는 다음과 같은 정보를 제공합니다:
+
+- **스피너**: 작업 진행 상태를 시각적으로 표시
+- **파일 크기**: 현재까지 저장된 데이터 크기
+- **처리 속도**: 초당 처리되는 데이터 양
+- **경과 시간**: 작업 시작 후 경과한 시간
+
+성능 최적화 설정
+----------------
+
+메모리 사용량 최적화
+~~~~~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ # 대용량 데이터 처리 시 메모리 효율적인 설정
+ atio.write(large_df, "data.parquet", format="parquet",
+ compression='snappy', # 빠른 압축
+ index=False) # 인덱스 제외로 메모리 절약
+
+압축 설정
+~~~~~~~~~
+
+.. code-block:: python
+
+ # 속도 우선 (압축 없음)
+ atio.write(df, "data.parquet", format="parquet", compression=None)
+
+ # 균형 (snappy 압축)
+ atio.write(df, "data.parquet", format="parquet", compression='snappy')
+
+ # 용량 우선 (gzip 압축)
+ atio.write(df, "data.parquet", format="parquet", compression='gzip')
+
+임시 디렉토리 설정
+-----------------
+
+기본적으로 Atio는 시스템의 임시 디렉토리를 사용합니다.
+
+사용자 정의 임시 디렉토리
+~~~~~~~~~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ import os
+ import tempfile
+
+ # 임시 디렉토리 설정
+ tempfile.tempdir = "/path/to/custom/temp"
+
+ # 또는 환경 변수 설정
+ os.environ['TMPDIR'] = "/path/to/custom/temp"
+
+**주의사항:**
+- 임시 디렉토리는 충분한 디스크 공간이 있어야 합니다
+- 쓰기 권한이 있어야 합니다
+- 빠른 I/O 성능을 위해 SSD를 권장합니다
+
+에러 처리 설정
+--------------
+
+Atio는 다양한 에러 상황에 대해 안전하게 처리합니다.
+
+롤백 동작
+~~~~~~~~~
+
+.. code-block:: python
+
+ # 기본적으로 롤백이 자동으로 수행됩니다
+ try:
+ atio.write(df, "data.parquet", format="parquet")
+ except Exception as e:
+ # 에러 발생 시 원본 파일은 보존됩니다
+ print(f"저장 실패: {e}")
+ # 임시 파일은 자동으로 정리됩니다
+
+백업 파일 관리
+~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ # 백업 파일은 작업 성공 시 자동으로 삭제됩니다
+ # 실패 시에는 롤백 후 삭제됩니다
+
+ # 백업 파일이 남아있는 경우 수동으로 확인
+ import os
+ backup_file = "data.parquet._backup"
+ if os.path.exists(backup_file):
+ print("백업 파일이 존재합니다. 수동 확인이 필요할 수 있습니다.")
+
+완료 플래그 시스템
+------------------
+
+Atio는 작업 완료를 확인할 수 있는 플래그 파일을 생성합니다.
+
+플래그 파일 확인
+~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ import os
+
+ # 저장 완료 후 플래그 파일 확인
+ atio.write(df, "data.parquet", format="parquet")
+
+ # 플래그 파일 경로
+ flag_file = ".data.parquet._SUCCESS"
+
+ if os.path.exists(flag_file):
+ print("저장이 성공적으로 완료되었습니다.")
+ else:
+ print("저장이 완료되지 않았거나 실패했습니다.")
+
+플래그 파일 활용
+~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ # 배치 처리에서 완료 여부 확인
+ files_to_process = ["data1.parquet", "data2.parquet", "data3.parquet"]
+
+ for file in files_to_process:
+ flag_file = f".{file}._SUCCESS"
+ if not os.path.exists(flag_file):
+ print(f"{file} 처리가 완료되지 않았습니다.")
+ # 재처리 로직
+
+스냅샷 설정
+----------
+
+스냅샷 시스템의 다양한 설정 옵션을 설명합니다.
+
+스냅샷 모드
+~~~~~~~~~~
+
+.. code-block:: python
+
+ # overwrite 모드 (기본값)
+ atio.write_snapshot(df, "table_path", mode="overwrite", format="parquet")
+
+ # append 모드 (기존 데이터에 추가)
+ atio.write_snapshot(df, "table_path", mode="append", format="parquet")
+
+스냅샷 정리 설정
+~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ from datetime import timedelta
+
+ # 7일 이상 된 스냅샷 삭제
+ atio.expire_snapshots("table_path",
+ keep_for=timedelta(days=7),
+ dry_run=True) # 실제 삭제 전 확인
+
+ # 30일 이상 된 스냅샷 삭제
+ atio.expire_snapshots("table_path",
+ keep_for=timedelta(days=30),
+ dry_run=False) # 실제 삭제
+
+환경 변수 설정
+-------------
+
+Atio의 동작을 제어하는 환경 변수들을 설정할 수 있습니다.
+
+로깅 레벨 설정
+~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ import os
+
+ # DEBUG 레벨로 로깅 설정
+ os.environ['ATIO_LOG_LEVEL'] = 'DEBUG'
+
+ # INFO 레벨로 로깅 설정 (기본값)
+ os.environ['ATIO_LOG_LEVEL'] = 'INFO'
+
+임시 디렉토리 설정
+~~~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ # 임시 디렉토리 경로 설정
+ os.environ['ATIO_TEMP_DIR'] = '/path/to/temp'
+
+ # 또는 시스템 임시 디렉토리 설정
+ os.environ['TMPDIR'] = '/path/to/temp'
+
+성능 모니터링 설정
+~~~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ # 성능 모니터링 활성화
+ os.environ['ATIO_PERFORMANCE_MONITORING'] = 'true'
+
+ # 성능 모니터링 비활성화
+ os.environ['ATIO_PERFORMANCE_MONITORING'] = 'false'
+
+플러그인 설정
+------------
+
+커스텀 플러그인을 등록하여 새로운 형식을 지원할 수 있습니다.
+
+플러그인 등록
+~~~~~~~~~~~~
+
+.. code-block:: python
+
+ from atio.plugins import register_writer
+ import pandas as pd
+
+ # 커스텀 형식 등록
+ def custom_writer(df, path, **kwargs):
+ # 커스텀 저장 로직
+ with open(path, 'w') as f:
+ f.write("Custom format\n")
+ f.write(df.to_string())
+
+ # 등록
+ register_writer(pd.DataFrame, "custom", custom_writer)
+
+플러그인 확인
+~~~~~~~~~~~~
+
+.. code-block:: python
+
+ from atio.plugins import WRITER_MAPPING
+
+ # 등록된 플러그인 확인
+ for obj_type, formats in WRITER_MAPPING.items():
+ print(f"Object type: {obj_type.__name__}")
+ for fmt, handler in formats.items():
+ print(f" - {fmt}: {handler}")
+
+설정 파일 사용
+-------------
+
+설정을 파일로 관리하여 일관된 설정을 유지할 수 있습니다.
+
+JSON 설정 파일
+~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ import json
+
+ # 설정 파일 생성
+ config = {
+ "default_format": "parquet",
+ "compression": "snappy",
+ "show_progress": True,
+ "verbose": False,
+ "temp_dir": "/path/to/temp"
+ }
+
+ with open("atio_config.json", "w") as f:
+ json.dump(config, f, indent=2)
+
+ # 설정 파일 읽기
+ with open("atio_config.json", "r") as f:
+ config = json.load(f)
+
+ # 설정 적용
+ atio.write(df, "data.parquet",
+ format=config.get("default_format", "parquet"),
+ compression=config.get("compression", "snappy"),
+ show_progress=config.get("show_progress", False),
+ verbose=config.get("verbose", False))
+
+YAML 설정 파일
+~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ import yaml
+
+ # 설정 파일 생성
+ config = {
+ "default_format": "parquet",
+ "compression": "snappy",
+ "show_progress": True,
+ "verbose": False,
+ "temp_dir": "/path/to/temp"
+ }
+
+ with open("atio_config.yaml", "w") as f:
+ yaml.dump(config, f)
+
+ # 설정 파일 읽기
+ with open("atio_config.yaml", "r") as f:
+ config = yaml.safe_load(f)
+
+모범 사례
+--------
+
+프로덕션 환경 설정
+~~~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ # 프로덕션 환경을 위한 설정
+ import os
+ import tempfile
+
+ # 1. 전용 임시 디렉토리 설정
+ tempfile.tempdir = "/var/tmp/atio"
+ os.makedirs(tempfile.tempdir, exist_ok=True)
+
+ # 2. 로깅 레벨 설정
+ os.environ['ATIO_LOG_LEVEL'] = 'INFO'
+
+ # 3. 성능 최적화 설정
+ def safe_write(df, path, **kwargs):
+ return atio.write(df, path,
+ format="parquet",
+ compression="snappy",
+ show_progress=True,
+ verbose=False,
+ **kwargs)
+
+개발 환경 설정
+~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ # 개발 환경을 위한 설정
+ import os
+
+ # 1. 상세 로깅 활성화
+ os.environ['ATIO_LOG_LEVEL'] = 'DEBUG'
+
+ # 2. 성능 모니터링 활성화
+ os.environ['ATIO_PERFORMANCE_MONITORING'] = 'true'
+
+ # 3. 개발용 설정
+ def dev_write(df, path, **kwargs):
+ return atio.write(df, path,
+ format="parquet",
+ compression=None, # 압축 없음으로 빠른 처리
+ show_progress=True,
+ verbose=True, # 상세 정보 출력
+ **kwargs)
+
+설정 검증
+--------
+
+설정이 올바르게 적용되었는지 확인하는 방법을 설명합니다.
+
+기본 검증
+~~~~~~~~~
+
+.. code-block:: python
+
+ import atio
+ import pandas as pd
+ import tempfile
+
+ # 테스트 데이터 생성
+ df = pd.DataFrame({"test": [1, 2, 3]})
+
+ # 설정 테스트
+ def test_config():
+ # 임시 디렉토리 확인
+ print(f"임시 디렉토리: {tempfile.gettempdir()}")
+
+ # 로깅 테스트
+ atio.write(df, "test.parquet", format="parquet", verbose=True)
+
+ # 플래그 파일 확인
+ import os
+ if os.path.exists(".test.parquet._SUCCESS"):
+ print("설정이 올바르게 작동합니다.")
+ else:
+ print("설정에 문제가 있을 수 있습니다.")
+
+성능 테스트
+~~~~~~~~~~
+
+.. code-block:: python
+
+ import time
+ import pandas as pd
+ import numpy as np
+
+ # 성능 테스트
+ def performance_test():
+ # 대용량 데이터 생성
+ large_df = pd.DataFrame(np.random.randn(100000, 10))
+
+ # 성능 측정
+ start_time = time.time()
+ atio.write(large_df, "performance_test.parquet",
+ format="parquet",
+ show_progress=True)
+ end_time = time.time()
+
+ print(f"처리 시간: {end_time - start_time:.2f}초")
+
+ # 파일 크기 확인
+ import os
+ file_size = os.path.getsize("performance_test.parquet")
+ print(f"파일 크기: {file_size / 1024 / 1024:.2f} MB")
\ No newline at end of file
diff --git a/docs/source/examples.rst b/docs/source/examples.rst
new file mode 100644
index 0000000..64cd264
--- /dev/null
+++ b/docs/source/examples.rst
@@ -0,0 +1,395 @@
+사용 예제
+=========
+
+Atio의 다양한 사용 사례와 고급 기능을 살펴보세요.
+
+기본 예제
+--------
+
+간단한 데이터 저장
+~~~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ import atio
+ import pandas as pd
+
+ # 샘플 데이터 생성
+ data = {
+ "id": [1, 2, 3, 4, 5],
+ "name": ["Alice", "Bob", "Charlie", "Diana", "Eve"],
+ "age": [25, 30, 35, 28, 32],
+ "city": ["Seoul", "Busan", "Incheon", "Daegu", "Daejeon"],
+ "salary": [50000, 60000, 70000, 55000, 65000]
+ }
+
+ df = pd.DataFrame(data)
+
+ # 다양한 형식으로 저장
+ atio.write(df, "employees.parquet", format="parquet")
+ atio.write(df, "employees.csv", format="csv", index=False)
+ atio.write(df, "employees.xlsx", format="excel", sheet_name="Employees")
+
+대용량 데이터 처리
+----------------
+
+진행률 표시와 성능 모니터링
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ import numpy as np
+ import pandas as pd
+ import atio
+
+ # 대용량 데이터 생성 (100만 행)
+ large_data = {
+ "id": range(1, 1000001),
+ "value": np.random.randn(1000000),
+ "category": np.random.choice(["A", "B", "C"], 1000000),
+ "timestamp": pd.date_range("2024-01-01", periods=1000000, freq="S")
+ }
+
+ large_df = pd.DataFrame(large_data)
+
+ # 진행률 표시와 성능 모니터링 활성화
+ atio.write(
+ large_df,
+ "large_dataset.parquet",
+ format="parquet",
+ show_progress=True,
+ verbose=True,
+ compression='snappy'
+ )
+
+데이터베이스 연동
+---------------
+
+PostgreSQL 데이터베이스 저장
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ import atio
+ import pandas as pd
+ from sqlalchemy import create_engine
+
+ # 데이터베이스 연결
+ engine = create_engine('postgresql://username:password@localhost:5432/mydb')
+
+ # 샘플 데이터
+ sales_data = {
+ "order_id": [1001, 1002, 1003, 1004, 1005],
+ "product_name": ["Laptop", "Mouse", "Keyboard", "Monitor", "Headphones"],
+ "quantity": [1, 2, 1, 1, 3],
+ "price": [1200, 25, 75, 300, 150],
+ "order_date": pd.date_range("2024-01-01", periods=5)
+ }
+
+ sales_df = pd.DataFrame(sales_data)
+
+ # 데이터베이스에 안전하게 저장
+ atio.write(
+ sales_df,
+ format="sql",
+ name="sales_orders",
+ con=engine,
+ if_exists="replace",
+ index=False
+ )
+
+스냅샷 기반 버전 관리
+-------------------
+
+데이터 버전 관리
+~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ import atio
+ import pandas as pd
+ from datetime import datetime, timedelta
+
+ # 초기 데이터
+ initial_data = {
+ "user_id": [1, 2, 3],
+ "name": ["Alice", "Bob", "Charlie"],
+ "status": ["active", "active", "inactive"]
+ }
+
+ df = pd.DataFrame(initial_data)
+
+ # 초기 스냅샷 생성
+ snapshot_id_1 = atio.write_snapshot(df, "users", format="parquet")
+ print(f"초기 스냅샷 생성: {snapshot_id_1}")
+
+ # 데이터 업데이트
+ df.loc[df['user_id'] == 3, 'status'] = 'active'
+ df = df.append({"user_id": 4, "name": "Diana", "status": "active"}, ignore_index=True)
+
+ # 업데이트된 스냅샷 생성
+ snapshot_id_2 = atio.write_snapshot(df, "users", format="parquet")
+ print(f"업데이트 스냅샷 생성: {snapshot_id_2}")
+
+ # 최신 데이터 읽기
+ latest_df = atio.read_table("users", format="parquet")
+ print("최신 데이터:")
+ print(latest_df)
+
+ # 특정 스냅샷 읽기
+ initial_df = atio.read_table("users", snapshot_id=snapshot_id_1, format="parquet")
+ print("초기 데이터:")
+ print(initial_df)
+
+ # 오래된 스냅샷 정리 (7일 이상)
+ deleted_count = atio.expire_snapshots("users", days=7, format="parquet")
+ print(f"삭제된 스냅샷 수: {deleted_count}")
+
+Polars DataFrame 활용
+-------------------
+
+고성능 데이터 처리
+~~~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ import atio
+ import polars as pl
+ import numpy as np
+
+ # Polars DataFrame 생성
+ polars_data = {
+ "id": range(1, 10001),
+ "value": np.random.randn(10000),
+ "category": np.random.choice(["A", "B", "C", "D"], 10000),
+ "score": np.random.uniform(0, 100, 10000)
+ }
+
+ polars_df = pl.DataFrame(polars_data)
+
+ # Polars DataFrame 저장
+ atio.write(
+ polars_df,
+ "polars_data.parquet",
+ format="parquet",
+ compression='snappy',
+ show_progress=True
+ )
+
+ # 데이터 변환 후 저장
+ filtered_df = polars_df.filter(pl.col("score") > 50)
+ aggregated_df = filtered_df.group_by("category").agg(
+ pl.col("value").mean().alias("avg_value"),
+ pl.col("score").mean().alias("avg_score")
+ )
+
+ atio.write(aggregated_df, "aggregated_data.parquet", format="parquet")
+
+에러 처리 및 복구
+---------------
+
+안전한 데이터 처리
+~~~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ import atio
+ import pandas as pd
+ import os
+
+ def safe_data_processing():
+ try:
+ # 원본 파일이 있는지 확인
+ if os.path.exists("important_data.parquet"):
+ print("원본 파일이 존재합니다.")
+
+ # 데이터 처리 및 저장
+ df = pd.DataFrame({
+ "id": [1, 2, 3],
+ "data": ["important", "data", "here"]
+ })
+
+ atio.write(df, "important_data.parquet", format="parquet")
+ print("데이터가 안전하게 저장되었습니다.")
+
+ # SUCCESS 파일 확인
+ if os.path.exists("important_data.parquet_SUCCESS"):
+ print("저장 완료 플래그가 생성되었습니다.")
+
+ except Exception as e:
+ print(f"오류 발생: {e}")
+ print("원본 파일이 보존되었습니다.")
+
+ # 임시 파일 정리
+ temp_files = [f for f in os.listdir(".") if f.startswith("important_data.parquet.tmp")]
+ for temp_file in temp_files:
+ try:
+ os.remove(temp_file)
+ print(f"임시 파일 정리: {temp_file}")
+ except:
+ pass
+
+ # 안전한 데이터 처리 실행
+ safe_data_processing()
+
+배치 처리
+-------
+
+여러 파일 동시 처리
+~~~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ import atio
+ import pandas as pd
+ import os
+ from pathlib import Path
+
+ def process_multiple_files():
+ # 처리할 파일 목록
+ files_to_process = [
+ {"name": "users", "data": pd.DataFrame({"id": [1, 2], "name": ["Alice", "Bob"]})},
+ {"name": "products", "data": pd.DataFrame({"id": [1, 2], "product": ["Laptop", "Mouse"]})},
+ {"name": "orders", "data": pd.DataFrame({"id": [1, 2], "amount": [100, 200]})}
+ ]
+
+ # 각 파일을 안전하게 처리
+ for file_info in files_to_process:
+ try:
+ file_path = f"{file_info['name']}.parquet"
+ atio.write(
+ file_info['data'],
+ file_path,
+ format="parquet",
+ show_progress=True
+ )
+ print(f"{file_info['name']} 파일 처리 완료")
+
+ except Exception as e:
+ print(f"{file_info['name']} 파일 처리 실패: {e}")
+ continue
+
+ # 배치 처리 실행
+ process_multiple_files()
+
+성능 최적화
+---------
+
+압축 및 최적화 설정
+~~~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ import atio
+ import pandas as pd
+ import numpy as np
+
+ # 대용량 데이터 생성
+ large_df = pd.DataFrame({
+ "id": range(1, 100001),
+ "value": np.random.randn(100000),
+ "text": ["sample text"] * 100000
+ })
+
+ # 다양한 압축 설정으로 성능 비교
+ compression_settings = [
+ ("snappy", "fast_compression.parquet"),
+ ("gzip", "balanced_compression.parquet"),
+ ("brotli", "high_compression.parquet")
+ ]
+
+ for compression, filename in compression_settings:
+ print(f"\n{compression} 압축으로 저장 중...")
+ atio.write(
+ large_df,
+ filename,
+ format="parquet",
+ compression=compression,
+ show_progress=True,
+ verbose=True
+ )
+
+ # 파일 크기 확인
+ file_size = os.path.getsize(filename) / (1024 * 1024) # MB
+ print(f"파일 크기: {file_size:.2f} MB")
+
+실제 사용 사례
+------------
+
+데이터 파이프라인
+~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ import atio
+ import pandas as pd
+ from datetime import datetime, timedelta
+
+ class DataPipeline:
+ def __init__(self, base_path="data"):
+ self.base_path = Path(base_path)
+ self.base_path.mkdir(exist_ok=True)
+
+ def extract_data(self):
+ """데이터 추출 (시뮬레이션)"""
+ # 실제로는 API나 데이터베이스에서 데이터를 가져옴
+ data = {
+ "timestamp": pd.date_range(datetime.now(), periods=1000, freq="H"),
+ "value": np.random.randn(1000),
+ "source": ["api"] * 1000
+ }
+ return pd.DataFrame(data)
+
+ def transform_data(self, df):
+ """데이터 변환"""
+ # 시간별 집계
+ df['hour'] = df['timestamp'].dt.hour
+ df['day'] = df['timestamp'].dt.date
+
+ # 일별 통계
+ daily_stats = df.groupby('day').agg({
+ 'value': ['mean', 'std', 'min', 'max']
+ }).round(2)
+
+ return daily_stats
+
+ def load_data(self, df, table_name):
+ """데이터 로드"""
+ # 스냅샷 생성
+ snapshot_id = atio.write_snapshot(
+ df,
+ table_name,
+ format="parquet"
+ )
+
+ # 최신 데이터도 별도 저장
+ latest_path = self.base_path / f"{table_name}_latest.parquet"
+ atio.write(df, str(latest_path), format="parquet")
+
+ return snapshot_id
+
+ def run_pipeline(self):
+ """파이프라인 실행"""
+ print("데이터 파이프라인 시작...")
+
+ # 1. 데이터 추출
+ raw_data = self.extract_data()
+ print(f"추출된 데이터: {len(raw_data)} 행")
+
+ # 2. 데이터 변환
+ processed_data = self.transform_data(raw_data)
+ print(f"처리된 데이터: {len(processed_data)} 행")
+
+ # 3. 데이터 로드
+ snapshot_id = self.load_data(processed_data, "daily_stats")
+ print(f"스냅샷 생성 완료: {snapshot_id}")
+
+ # 4. 오래된 스냅샷 정리
+ deleted_count = atio.expire_snapshots("daily_stats", days=30)
+ print(f"정리된 스냅샷: {deleted_count}개")
+
+ print("파이프라인 완료!")
+
+ # 파이프라인 실행
+ pipeline = DataPipeline()
+ pipeline.run_pipeline()
\ No newline at end of file
diff --git a/docs/source/formats.rst b/docs/source/formats.rst
new file mode 100644
index 0000000..488620c
--- /dev/null
+++ b/docs/source/formats.rst
@@ -0,0 +1,456 @@
+지원하는 파일 형식
+==================
+
+Atio는 다양한 데이터 형식을 지원합니다. 각 형식별로 지원하는 라이브러리와 사용법을 설명합니다.
+
+Pandas DataFrame 형식
+--------------------
+
+Pandas DataFrame은 가장 많은 형식을 지원합니다.
+
+CSV (Comma-Separated Values)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ import atio
+ import pandas as pd
+
+ df = pd.DataFrame({
+ "name": ["Alice", "Bob", "Charlie"],
+ "age": [25, 30, 35],
+ "city": ["Seoul", "Busan", "Incheon"]
+ })
+
+ # 기본 CSV 저장
+ atio.write(df, "users.csv", format="csv")
+
+ # 추가 옵션과 함께 저장
+ atio.write(df, "users.csv", format="csv",
+ index=False,
+ encoding='utf-8',
+ sep=';')
+
+**지원 옵션:**
+- `index`: 인덱스 포함 여부 (기본값: True)
+- `encoding`: 인코딩 방식 (기본값: 'utf-8')
+- `sep`: 구분자 (기본값: ',')
+- `header`: 헤더 포함 여부 (기본값: True)
+
+Parquet
+~~~~~~~
+
+.. code-block:: python
+
+ # Parquet 형식으로 저장
+ atio.write(df, "users.parquet", format="parquet")
+
+ # 압축 옵션과 함께 저장
+ atio.write(df, "users.parquet", format="parquet",
+ compression='snappy')
+
+**지원 옵션:**
+- `compression`: 압축 방식 ('snappy', 'gzip', 'brotli', None)
+- `index`: 인덱스 포함 여부 (기본값: True)
+
+Excel
+~~~~~
+
+.. code-block:: python
+
+ # Excel 파일로 저장
+ atio.write(df, "users.xlsx", format="excel")
+
+ # 시트명과 옵션 지정
+ atio.write(df, "users.xlsx", format="excel",
+ sheet_name="Users",
+ index=False)
+
+**지원 옵션:**
+- `sheet_name`: 시트 이름 (기본값: 'Sheet1')
+- `index`: 인덱스 포함 여부 (기본값: True)
+- `engine`: 엔진 ('openpyxl', 'xlsxwriter')
+
+**필요 라이브러리:** `pip install openpyxl`
+
+JSON
+~~~~
+
+.. code-block:: python
+
+ # JSON 형식으로 저장
+ atio.write(df, "users.json", format="json")
+
+ # 들여쓰기와 함께 저장
+ atio.write(df, "users.json", format="json",
+ indent=2,
+ orient='records')
+
+**지원 옵션:**
+- `orient`: JSON 구조 ('split', 'records', 'index', 'columns', 'values', 'table')
+- `indent`: 들여쓰기 크기
+- `date_format`: 날짜 형식
+
+Pickle
+~~~~~~
+
+.. code-block:: python
+
+ # Pickle 형식으로 저장
+ atio.write(df, "users.pkl", format="pickle")
+
+ # 압축과 함께 저장
+ atio.write(df, "users.pkl", format="pickle",
+ compression='gzip')
+
+**지원 옵션:**
+- `compression`: 압축 방식 ('gzip', 'bz2', 'xz', None)
+
+HTML
+~~~~
+
+.. code-block:: python
+
+ # HTML 테이블로 저장
+ atio.write(df, "users.html", format="html")
+
+ # 스타일과 함께 저장
+ atio.write(df, "users.html", format="html",
+ index=False,
+ classes='table table-striped')
+
+**지원 옵션:**
+- `classes`: CSS 클래스
+- `index`: 인덱스 포함 여부 (기본값: True)
+
+SQL
+~~~
+
+.. code-block:: python
+
+ import atio
+ import pandas as pd
+ from sqlalchemy import create_engine
+
+ # 데이터베이스 연결
+ engine = create_engine('postgresql://user:password@localhost/dbname')
+
+ df = pd.DataFrame({
+ "id": [1, 2, 3],
+ "name": ["Alice", "Bob", "Charlie"]
+ })
+
+ # SQL 데이터베이스에 저장
+ atio.write(df, format="sql",
+ name="users",
+ con=engine,
+ if_exists='replace')
+
+**지원 옵션:**
+- `name`: 테이블 이름 (필수)
+- `con`: 데이터베이스 연결 객체 (필수)
+- `if_exists`: 테이블이 존재할 때 동작 ('fail', 'replace', 'append')
+- `index`: 인덱스를 컬럼으로 저장 여부 (기본값: True)
+
+**필요 라이브러리:** `pip install sqlalchemy`
+
+Polars DataFrame 형식
+--------------------
+
+Polars는 빠른 데이터 처리를 위한 현대적인 DataFrame 라이브러리입니다.
+
+CSV
+~~~
+
+.. code-block:: python
+
+ import atio
+ import polars as pl
+
+ df = pl.DataFrame({
+ "name": ["Alice", "Bob", "Charlie"],
+ "age": [25, 30, 35],
+ "city": ["Seoul", "Busan", "Incheon"]
+ })
+
+ # CSV 저장
+ atio.write(df, "users.csv", format="csv")
+
+ # 구분자와 함께 저장
+ atio.write(df, "users.csv", format="csv",
+ separator=';')
+
+**지원 옵션:**
+- `separator`: 구분자 (기본값: ',')
+- `include_header`: 헤더 포함 여부 (기본값: True)
+
+Parquet
+~~~~~~~
+
+.. code-block:: python
+
+ # Parquet 저장
+ atio.write(df, "users.parquet", format="parquet")
+
+ # 압축과 함께 저장
+ atio.write(df, "users.parquet", format="parquet",
+ compression="snappy")
+
+**지원 옵션:**
+- `compression`: 압축 방식 ('snappy', 'gzip', 'brotli', 'lz4raw', 'zstd', None)
+
+JSON
+~~~~
+
+.. code-block:: python
+
+ # JSON 저장
+ atio.write(df, "users.json", format="json")
+
+ # 파일별 저장
+ atio.write(df, "users.json", format="json",
+ file=True)
+
+**지원 옵션:**
+- `file`: 파일별 저장 여부 (기본값: False)
+
+IPC (Arrow)
+~~~~~~~~~~~
+
+.. code-block:: python
+
+ # IPC (Arrow) 형식으로 저장
+ atio.write(df, "users.arrow", format="ipc")
+
+ # 압축과 함께 저장
+ atio.write(df, "users.arrow", format="ipc",
+ compression="lz4")
+
+**지원 옵션:**
+- `compression`: 압축 방식 ('lz4', 'zstd', None)
+
+Avro
+~~~~
+
+.. code-block:: python
+
+ # Avro 형식으로 저장
+ atio.write(df, "users.avro", format="avro")
+
+**필요 라이브러리:** `pip install fastavro`
+
+Excel
+~~~~~
+
+.. code-block:: python
+
+ # Excel 저장
+ atio.write(df, "users.xlsx", format="excel")
+
+**필요 라이브러리:** `pip install xlsx2csv openpyxl`
+
+Database
+~~~~~~~~
+
+.. code-block:: python
+
+ # 데이터베이스에 저장
+ atio.write(df, format="database",
+ table_name="users",
+ connection_uri="postgresql://user:password@localhost/dbname")
+
+**지원 옵션:**
+- `table_name`: 테이블 이름 (필수)
+- `connection_uri`: 데이터베이스 연결 URI (필수)
+
+**필요 라이브러리:** `pip install connectorx`
+
+NumPy 배열 형식
+--------------
+
+NumPy 배열은 수치 데이터 처리에 최적화된 형식을 지원합니다.
+
+NPY (NumPy Binary)
+~~~~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ import atio
+ import numpy as np
+
+ arr = np.array([[1, 2, 3], [4, 5, 6]])
+
+ # .npy 파일로 저장
+ atio.write(arr, "array.npy", format="npy")
+
+**특징:**
+- 단일 배열을 효율적으로 저장
+- 메타데이터와 함께 저장
+- 빠른 읽기/쓰기 속도
+
+NPZ (NumPy Compressed)
+~~~~~~~~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ # 여러 배열을 딕셔너리로 저장
+ arrays = {
+ "features": np.random.randn(1000, 10),
+ "labels": np.random.randint(0, 2, 1000),
+ "metadata": np.array([1, 2, 3, 4, 5])
+ }
+
+ # 압축되지 않은 .npz 파일로 저장
+ atio.write(arrays, "data.npz", format="npz")
+
+ # 압축된 .npz 파일로 저장
+ atio.write(arrays, "data.npz", format="npz_compressed")
+
+**특징:**
+- 여러 배열을 하나의 파일에 저장
+- 압축 옵션으로 저장 공간 절약
+- 딕셔너리 형태로 데이터 구조화
+
+CSV
+~~~
+
+.. code-block:: python
+
+ # CSV로 저장
+ atio.write(arr, "array.csv", format="csv")
+
+ # 구분자와 함께 저장
+ atio.write(arr, "array.csv", format="csv",
+ delimiter=';',
+ fmt='%.2f')
+
+**지원 옵션:**
+- `delimiter`: 구분자 (기본값: ',')
+- `fmt`: 숫자 형식 (예: '%.2f', '%.4e')
+- `header`: 헤더 포함 여부
+- `comments`: 주석 문자
+
+형식별 성능 비교
+----------------
+
+다양한 형식의 성능 특성을 비교해보겠습니다.
+
+속도 비교
+~~~~~~~~~
+
+1. **가장 빠른 형식:**
+ - NumPy: `.npy`, `.npz`
+ - Polars: `.ipc` (Arrow)
+ - Pandas: `.parquet` (snappy 압축)
+
+2. **중간 속도:**
+ - CSV (단순한 구조)
+ - JSON (중간 복잡도)
+
+3. **상대적으로 느린 형식:**
+ - Excel (복잡한 구조)
+ - Pickle (Python 특화)
+
+용량 비교
+~~~~~~~~~
+
+1. **가장 작은 용량:**
+ - `.parquet` (컬럼 기반 압축)
+ - `.npz_compressed` (압축된 NumPy)
+ - `.ipc` (Arrow 압축)
+
+2. **중간 용량:**
+ - `.npy` (단일 배열)
+ - JSON (텍스트 기반)
+
+3. **상대적으로 큰 용량:**
+ - CSV (텍스트 기반)
+ - Excel (복잡한 구조)
+
+호환성 비교
+~~~~~~~~~~~
+
+1. **최고 호환성:**
+ - CSV (모든 시스템에서 지원)
+ - JSON (웹 표준)
+
+2. **좋은 호환성:**
+ - Excel (비즈니스 환경)
+ - Parquet (빅데이터 생태계)
+
+3. **제한적 호환성:**
+ - `.npy`/`.npz` (Python/NumPy 특화)
+ - `.ipc` (Arrow 생태계)
+
+권장 사용 사례
+-------------
+
+데이터 분석 및 머신러닝
+~~~~~~~~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ # 학습 데이터: 빠른 읽기/쓰기를 위해 Parquet 사용
+ atio.write(training_data, "train.parquet", format="parquet")
+
+ # 모델 가중치: NumPy 배열로 저장
+ atio.write(model_weights, "weights.npy", format="npy")
+
+ # 실험 결과: JSON으로 저장 (가독성)
+ atio.write(results, "experiment_results.json", format="json")
+
+웹 애플리케이션
+~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ # API 응답: JSON 형식
+ atio.write(api_data, "response.json", format="json")
+
+ # 대용량 데이터: Parquet 형식
+ atio.write(large_dataset, "dataset.parquet", format="parquet")
+
+데이터 파이프라인
+~~~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ # 중간 결과: 빠른 처리를 위해 IPC 사용
+ atio.write(intermediate_data, "step1.arrow", format="ipc")
+
+ # 최종 결과: 호환성을 위해 CSV 사용
+ atio.write(final_data, "output.csv", format="csv")
+
+비즈니스 보고서
+~~~~~~~~~~~~~~
+
+.. code-block:: python
+
+ # 엑셀 보고서
+ atio.write(report_data, "monthly_report.xlsx", format="excel")
+
+ # HTML 대시보드
+ atio.write(dashboard_data, "dashboard.html", format="html")
+
+형식 확장하기
+------------
+
+새로운 형식을 추가하려면 플러그인 시스템을 사용하세요.
+
+.. code-block:: python
+
+ from atio.plugins import register_writer
+ import pandas as pd
+
+ # 커스텀 형식 등록
+ def yaml_writer(df, path, **kwargs):
+ import yaml
+ data = df.to_dict('records')
+ with open(path, 'w') as f:
+ yaml.dump(data, f, **kwargs)
+
+ # 등록
+ register_writer(pd.DataFrame, "yaml", yaml_writer)
+
+ # 사용
+ atio.write(df, "data.yaml", format="yaml")
\ No newline at end of file
diff --git a/docs/source/index.rst b/docs/source/index.rst
index 6cf814e..b078eb6 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -8,12 +8,29 @@ Pandas, Polars, NumPy 등 데이터 객체 저장 시 **파일 손상 없이**,
주요 기능
---------
-- ✅ 임시 디렉토리 스테이징 후 **원자적 파일 교체**
-- 📦 Pandas, Polars, NumPy 등 다양한 데이터 객체 지원
-- 📍 `_SUCCESS` 플래그 파일 생성 — 저장 완료 여부 표시
-- 🛠 실패 시 **원본 파일 보존**, 임시 파일 자동 정리
-- 🧩 플러그인 아키텍처로 **확장성 좋음**
-- 🔍 **성능 진단 로깅** — 각 단계별 실행 시간 측정 및 병목점 분석
+🔒 **Atomic File Writing**
+ Safe writing using temporary files
+
+📊 **Multiple Format Support**
+ CSV, Parquet, Excel, JSON, etc.
+
+🗄️ **Database Support**
+ Direct SQL and Database writing
+
+📈 **Progress Display**
+ Progress monitoring for large data processing
+
+🔄 **Rollback Function**
+ Automatic recovery when errors occur
+
+🎯 **Simple API**
+ Intuitive and easy-to-use interface
+
+📋 **Version Management**
+ Snapshot-based data version management
+
+🧹 **Auto Cleanup**
+ Automatic deletion of old data
빠른 시작
---------
@@ -23,37 +40,122 @@ Pandas, Polars, NumPy 등 데이터 객체 저장 시 **파일 손상 없이**,
import atio
import pandas as pd
- df = pd.DataFrame({"a": [1, 2, 3]})
+ # 간단한 DataFrame 생성
+ df = pd.DataFrame({
+ "name": ["Alice", "Bob", "Charlie"],
+ "age": [25, 30, 35],
+ "city": ["Seoul", "Busan", "Incheon"]
+ })
# 안전한 파일 쓰기
- atio.write(df, target_path="data.parquet", format="parquet")
+ atio.write(df, "users.parquet", format="parquet")
+
+ # 진행도 표시와 함께 저장
+ atio.write(df, "users.csv", format="csv", show_progress=True)
+
+지원하는 형식
+------------
+
+.. list-table:: 지원하는 파일 형식
+ :widths: 20 20 20 20
+ :header-rows: 1
+
+ * - 형식
+ - Pandas
+ - Polars
+ - NumPy
+ * - CSV
+ - ✅
+ - ✅
+ - ✅
+ * - Parquet
+ - ✅
+ - ✅
+ - ❌
+ * - Excel
+ - ✅
+ - ✅
+ - ❌
+ * - JSON
+ - ✅
+ - ✅
+ - ❌
+ * - Pickle
+ - ✅
+ - ❌
+ - ❌
+ * - HTML
+ - ✅
+ - ❌
+ - ❌
+ * - SQL
+ - ✅
+ - ❌
+ - ❌
+ * - Database
+ - ❌
+ - ✅
+ - ❌
+ * - NPY/NPZ
+ - ❌
+ - ❌
+ - ✅
+
+사용 사례
+--------
+
+🔹 **데이터 파이프라인**
+ ETL 과정에서 중간 데이터 안전하게 저장
+
+🔹 **실험 데이터 관리**
+ 머신러닝 실험 결과의 버전 관리
+
+🔹 **대용량 데이터 처리**
+ 대용량 파일의 안전한 저장 및 진행도 모니터링
+
+🔹 **데이터베이스 연동**
+ Pandas/Polars 데이터를 SQL/NoSQL DB에 안전하게 저장
목차
----
.. toctree::
:maxdepth: 2
- :caption: Contents:
+ :caption: 사용자 가이드:
installation
quickstart
- api
examples
+ advanced_usage
+
+.. toctree::
+ :maxdepth: 2
+ :caption: API 참조:
+
+ api
+ configuration
API Reference
=============
+핵심 함수들
+-----------
+
.. automodule:: atio
:members:
+ :undoc-members:
.. automodule:: atio.core
:members:
+ :undoc-members:
.. automodule:: atio.plugins
:members:
+ :undoc-members:
.. automodule:: atio.utils
:members:
+ :undoc-members:
Indices and tables
==================
diff --git a/docs/source/installation.rst b/docs/source/installation.rst
new file mode 100644
index 0000000..eb0162b
--- /dev/null
+++ b/docs/source/installation.rst
@@ -0,0 +1,199 @@
+설치 가이드
+==========
+
+Atio를 설치하는 방법을 안내합니다.
+
+PyPI를 통한 설치
+----------------
+
+가장 간단한 설치 방법은 PyPI를 사용하는 것입니다:
+
+.. code-block:: bash
+
+ pip install atio
+
+특정 버전 설치
+~~~~~~~~~~~~~
+
+특정 버전을 설치하려면:
+
+.. code-block:: bash
+
+ pip install atio==2.0.0
+
+개발 버전 설치
+~~~~~~~~~~~~~
+
+최신 개발 버전을 설치하려면:
+
+.. code-block:: bash
+
+ pip install git+https://github.com/seojaeohcode/atio.git
+
+의존성
+------
+
+필수 의존성
+~~~~~~~~~~
+
+- Python 3.8+
+- pandas
+- numpy
+
+선택적 의존성
+~~~~~~~~~~~~
+
+특정 형식을 사용하려면 추가 라이브러리가 필요합니다:
+
+**Parquet 형식:**
+.. code-block:: bash
+
+ pip install pyarrow
+ # 또는
+ pip install fastparquet
+
+**Excel 형식:**
+.. code-block:: bash
+
+ pip install openpyxl
+ # 또는
+ pip install xlsxwriter
+
+**SQL 데이터베이스:**
+.. code-block:: bash
+
+ pip install sqlalchemy
+
+**Polars 지원:**
+.. code-block:: bash
+
+ pip install polars
+
+**Avro 형식 (Polars):**
+.. code-block:: bash
+
+ pip install fastavro
+
+**Polars Excel 지원:**
+.. code-block:: bash
+
+ pip install xlsx2csv openpyxl
+
+**Polars 데이터베이스 지원:**
+.. code-block:: bash
+
+ pip install connectorx
+
+모든 의존성 설치
+~~~~~~~~~~~~~~~
+
+모든 기능을 사용하려면:
+
+.. code-block:: bash
+
+ pip install atio[all]
+
+또는 개별적으로:
+
+.. code-block:: bash
+
+ pip install atio
+ pip install pyarrow openpyxl sqlalchemy polars fastavro xlsx2csv connectorx
+
+환경 확인
+---------
+
+설치가 완료되었는지 확인하려면:
+
+.. code-block:: python
+
+ import atio
+ print(f"Atio 버전: {atio.__version__}")
+
+ # 기본 기능 테스트
+ import pandas as pd
+ df = pd.DataFrame({"test": [1, 2, 3]})
+ atio.write(df, "test.parquet", format="parquet")
+ print("설치가 성공적으로 완료되었습니다!")
+
+가상환경 사용 권장
+-----------------
+
+프로젝트별로 독립적인 환경을 유지하기 위해 가상환경 사용을 권장합니다:
+
+.. code-block:: bash
+
+ # 가상환경 생성
+ python -m venv atio_env
+
+ # 가상환경 활성화 (Windows)
+ atio_env\Scripts\activate
+
+ # 가상환경 활성화 (macOS/Linux)
+ source atio_env/bin/activate
+
+ # Atio 설치
+ pip install atio
+
+Conda 사용
+---------
+
+Conda를 사용하는 경우:
+
+.. code-block:: bash
+
+ # Conda 환경 생성
+ conda create -n atio_env python=3.8
+ conda activate atio_env
+
+ # Atio 설치
+ pip install atio
+
+문제 해결
+---------
+
+설치 중 문제가 발생하는 경우:
+
+**권한 오류:**
+.. code-block:: bash
+
+ pip install atio --user
+
+**캐시 문제:**
+.. code-block:: bash
+
+ pip install atio --no-cache-dir
+
+**의존성 충돌:**
+.. code-block:: bash
+
+ pip install atio --force-reinstall
+
+**특정 Python 버전:**
+.. code-block:: bash
+
+ python3.8 -m pip install atio
+
+업그레이드
+----------
+
+최신 버전으로 업그레이드:
+
+.. code-block:: bash
+
+ pip install --upgrade atio
+
+특정 버전으로 다운그레이드:
+
+.. code-block:: bash
+
+ pip install atio==1.0.0
+
+제거
+----
+
+Atio를 제거하려면:
+
+.. code-block:: bash
+
+ pip uninstall atio
\ No newline at end of file
diff --git a/docs/source/quickstart.rst b/docs/source/quickstart.rst
new file mode 100644
index 0000000..12b7060
--- /dev/null
+++ b/docs/source/quickstart.rst
@@ -0,0 +1,126 @@
+빠른 시작
+==========
+
+Atio를 사용하여 안전한 파일 쓰기를 시작해보세요.
+
+기본 사용법
+----------
+
+가장 간단한 사용법부터 시작해보겠습니다:
+
+.. code-block:: python
+
+ import atio
+ import pandas as pd
+
+ # 샘플 데이터 생성
+ df = pd.DataFrame({
+ "name": ["Alice", "Bob", "Charlie"],
+ "age": [25, 30, 35],
+ "city": ["Seoul", "Busan", "Incheon"]
+ })
+
+ # 안전한 파일 쓰기
+ atio.write(df, "users.parquet", format="parquet")
+
+이 코드는 다음과 같은 안전장치를 제공합니다:
+
+- ✅ 임시 파일에 먼저 저장
+- ✅ 저장 완료 후 원자적으로 파일 교체
+- ✅ 실패 시 원본 파일 보존
+- ✅ `_SUCCESS` 플래그 파일 생성
+
+다양한 형식 지원
+---------------
+
+Atio는 다양한 데이터 형식을 지원합니다:
+
+.. code-block:: python
+
+ # CSV 형식
+ atio.write(df, "users.csv", format="csv", index=False)
+
+ # Excel 형식
+ atio.write(df, "users.xlsx", format="excel", sheet_name="Users")
+
+ # JSON 형식
+ atio.write(df, "users.json", format="json", orient="records")
+
+ # Parquet 형식 (권장)
+ atio.write(df, "users.parquet", format="parquet")
+
+진행률 표시
+----------
+
+대용량 데이터 처리 시 진행률을 확인할 수 있습니다:
+
+.. code-block:: python
+
+ # 진행률 표시 활성화
+ atio.write(large_df, "big_data.parquet", format="parquet", show_progress=True)
+
+성능 모니터링
+------------
+
+상세한 성능 정보를 확인하려면:
+
+.. code-block:: python
+
+ # 성능 정보 출력
+ atio.write(df, "data.parquet", format="parquet", verbose=True)
+
+Polars DataFrame 지원
+-------------------
+
+Polars DataFrame도 지원합니다:
+
+.. code-block:: python
+
+ import polars as pl
+
+ # Polars DataFrame 생성
+ polars_df = pl.DataFrame({
+ "a": [1, 2, 3],
+ "b": [4, 5, 6]
+ })
+
+ # Polars DataFrame 저장
+ atio.write(polars_df, "data.parquet", format="parquet")
+
+데이터베이스 저장
+---------------
+
+SQL 데이터베이스에 직접 저장할 수도 있습니다:
+
+.. code-block:: python
+
+ from sqlalchemy import create_engine
+
+ # 데이터베이스 연결
+ engine = create_engine('postgresql://user:password@localhost/dbname')
+
+ # 데이터베이스에 저장
+ atio.write(df, format="sql", name="users", con=engine, if_exists="replace")
+
+스냅샷 기능
+----------
+
+데이터 버전 관리를 위한 스냅샷 기능:
+
+.. code-block:: python
+
+ # 스냅샷 생성
+ atio.write_snapshot(df, "users", format="parquet")
+
+ # 스냅샷 읽기
+ df = atio.read_table("users", snapshot_id="latest")
+
+ # 오래된 스냅샷 정리
+ atio.expire_snapshots("users", days=30)
+
+다음 단계
+--------
+
+- :doc:`api` - 전체 API 참조
+- :doc:`examples` - 고급 사용 예제
+- :doc:`installation` - 설치 가이드
\ No newline at end of file