From 168a1a5cbc9850d6ffdcd0170561da41c4fa3380 Mon Sep 17 00:00:00 2001
From: safer-lgtm <git@code.fbi.h-da.de/safouan.erryfy>
Date: Mon, 27 May 2024 19:31:46 +0200
Subject: [PATCH] docs HTML generated and data transformed

---
 .gitignore                                    |   4 +
 docs/API.rst                                  |   2 +-
 docs/docHTMLs/.buildinfo                      |   4 +
 docs/docHTMLs/.doctrees/API.doctree           | Bin 0 -> 4378 bytes
 docs/docHTMLs/.doctrees/dynamodb.doctree      | Bin 0 -> 37971 bytes
 docs/docHTMLs/.doctrees/environment.pickle    | Bin 0 -> 157585 bytes
 .../dynamodb.dynamodb_helpers.doctree         | Bin 0 -> 16319 bytes
 .../.doctrees/generated/ergast.doctree        | Bin 0 -> 5620 bytes
 .../.doctrees/generated/sample.doctree        | Bin 0 -> 2465 bytes
 .../generated/sample.helpers.doctree          | Bin 0 -> 2505 bytes
 docs/docHTMLs/.doctrees/index.doctree         | Bin 0 -> 3574 bytes
 docs/docHTMLs/.doctrees/modules.doctree       | Bin 0 -> 2801 bytes
 docs/docHTMLs/.doctrees/usage.doctree         | Bin 0 -> 28497 bytes
 docs/docHTMLs/API.html                        | 119 +++
 docs/docHTMLs/_sources/API.rst.txt            |   7 +
 docs/docHTMLs/_sources/dynamodb.rst.txt       |  53 +
 .../dynamodb.dynamodb_helpers.rst.txt         |  38 +
 .../_sources/generated/ergast.rst.txt         |  22 +
 .../_sources/generated/sample.helpers.rst.txt |  31 +
 .../_sources/generated/sample.rst.txt         |  23 +
 docs/docHTMLs/_sources/index.rst.txt          |  14 +
 docs/docHTMLs/_sources/modules.rst.txt        |   7 +
 docs/docHTMLs/_sources/usage.rst.txt          |  47 +
 docs/docHTMLs/_static/basic.css               | 925 ++++++++++++++++++
 docs/docHTMLs/_static/classic.css             | 269 +++++
 docs/docHTMLs/_static/default.css             |   1 +
 docs/docHTMLs/_static/doctools.js             | 156 +++
 .../docHTMLs/_static/documentation_options.js |  13 +
 docs/docHTMLs/_static/file.png                | Bin 0 -> 286 bytes
 docs/docHTMLs/_static/language_data.js        | 199 ++++
 docs/docHTMLs/_static/minus.png               | Bin 0 -> 90 bytes
 docs/docHTMLs/_static/plus.png                | Bin 0 -> 90 bytes
 docs/docHTMLs/_static/pygments.css            |  75 ++
 docs/docHTMLs/_static/searchtools.js          | 619 ++++++++++++
 docs/docHTMLs/_static/sidebar.js              |  70 ++
 docs/docHTMLs/_static/sphinx_highlight.js     | 154 +++
 docs/docHTMLs/dynamodb.html                   | 297 ++++++
 .../generated/dynamodb.dynamodb_helpers.html  | 137 +++
 docs/docHTMLs/generated/ergast.html           | 110 +++
 docs/docHTMLs/generated/sample.helpers.html   |  88 ++
 docs/docHTMLs/generated/sample.html           |  88 ++
 docs/docHTMLs/genindex.html                   | 185 ++++
 docs/docHTMLs/index.html                      | 161 +++
 docs/docHTMLs/modules.html                    | 144 +++
 docs/docHTMLs/objects.inv                     |   8 +
 docs/docHTMLs/py-modindex.html                | 108 ++
 docs/docHTMLs/search.html                     | 100 ++
 docs/docHTMLs/searchindex.js                  |   1 +
 docs/docHTMLs/usage.html                      | 248 +++++
 docs/dynamodb.rst                             |  53 +
 docs/formulaone.rst                           |  61 --
 docs/modules.rst                              |   2 +-
 docs/usage.rst                                |  44 +-
 dynamodb/Data/RawData/rawdata.json            |   1 +
 dynamodb/Data/TidyData/current_race.parquet   | Bin 0 -> 9680 bytes
 {formulaone => dynamodb}/__init__.py          |   0
 dynamodb/core.py                              |  13 +
 {formulaone => dynamodb}/dynamodb_helpers.py  |  19 +
 dynamodb/load_movies.py                       |  21 +
 {formulaone => dynamodb}/prepare_data.py      |   2 +-
 dynamodb/tidy_data.py                         |  20 +
 formulaone/core.py                            |   6 -
 formulaone/helpers.py                         |  16 -
 formulaone/load_latest_race.py                |  20 -
 formulaone/tidy_data.py                       |  14 -
 setup.py                                      |  14 +-
 tests/test_basic.py                           |   2 +-
 tests/test_dynamodb.py                        |   2 +-
 68 files changed, 4700 insertions(+), 137 deletions(-)
 create mode 100644 docs/docHTMLs/.buildinfo
 create mode 100644 docs/docHTMLs/.doctrees/API.doctree
 create mode 100644 docs/docHTMLs/.doctrees/dynamodb.doctree
 create mode 100644 docs/docHTMLs/.doctrees/environment.pickle
 create mode 100644 docs/docHTMLs/.doctrees/generated/dynamodb.dynamodb_helpers.doctree
 create mode 100644 docs/docHTMLs/.doctrees/generated/ergast.doctree
 create mode 100644 docs/docHTMLs/.doctrees/generated/sample.doctree
 create mode 100644 docs/docHTMLs/.doctrees/generated/sample.helpers.doctree
 create mode 100644 docs/docHTMLs/.doctrees/index.doctree
 create mode 100644 docs/docHTMLs/.doctrees/modules.doctree
 create mode 100644 docs/docHTMLs/.doctrees/usage.doctree
 create mode 100644 docs/docHTMLs/API.html
 create mode 100644 docs/docHTMLs/_sources/API.rst.txt
 create mode 100644 docs/docHTMLs/_sources/dynamodb.rst.txt
 create mode 100644 docs/docHTMLs/_sources/generated/dynamodb.dynamodb_helpers.rst.txt
 create mode 100644 docs/docHTMLs/_sources/generated/ergast.rst.txt
 create mode 100644 docs/docHTMLs/_sources/generated/sample.helpers.rst.txt
 create mode 100644 docs/docHTMLs/_sources/generated/sample.rst.txt
 create mode 100644 docs/docHTMLs/_sources/index.rst.txt
 create mode 100644 docs/docHTMLs/_sources/modules.rst.txt
 create mode 100644 docs/docHTMLs/_sources/usage.rst.txt
 create mode 100644 docs/docHTMLs/_static/basic.css
 create mode 100644 docs/docHTMLs/_static/classic.css
 create mode 100644 docs/docHTMLs/_static/default.css
 create mode 100644 docs/docHTMLs/_static/doctools.js
 create mode 100644 docs/docHTMLs/_static/documentation_options.js
 create mode 100644 docs/docHTMLs/_static/file.png
 create mode 100644 docs/docHTMLs/_static/language_data.js
 create mode 100644 docs/docHTMLs/_static/minus.png
 create mode 100644 docs/docHTMLs/_static/plus.png
 create mode 100644 docs/docHTMLs/_static/pygments.css
 create mode 100644 docs/docHTMLs/_static/searchtools.js
 create mode 100644 docs/docHTMLs/_static/sidebar.js
 create mode 100644 docs/docHTMLs/_static/sphinx_highlight.js
 create mode 100644 docs/docHTMLs/dynamodb.html
 create mode 100644 docs/docHTMLs/generated/dynamodb.dynamodb_helpers.html
 create mode 100644 docs/docHTMLs/generated/ergast.html
 create mode 100644 docs/docHTMLs/generated/sample.helpers.html
 create mode 100644 docs/docHTMLs/generated/sample.html
 create mode 100644 docs/docHTMLs/genindex.html
 create mode 100644 docs/docHTMLs/index.html
 create mode 100644 docs/docHTMLs/modules.html
 create mode 100644 docs/docHTMLs/objects.inv
 create mode 100644 docs/docHTMLs/py-modindex.html
 create mode 100644 docs/docHTMLs/search.html
 create mode 100644 docs/docHTMLs/searchindex.js
 create mode 100644 docs/docHTMLs/usage.html
 create mode 100644 docs/dynamodb.rst
 delete mode 100644 docs/formulaone.rst
 create mode 100644 dynamodb/Data/RawData/rawdata.json
 create mode 100644 dynamodb/Data/TidyData/current_race.parquet
 rename {formulaone => dynamodb}/__init__.py (100%)
 create mode 100644 dynamodb/core.py
 rename {formulaone => dynamodb}/dynamodb_helpers.py (92%)
 create mode 100644 dynamodb/load_movies.py
 rename {formulaone => dynamodb}/prepare_data.py (94%)
 create mode 100644 dynamodb/tidy_data.py
 delete mode 100644 formulaone/core.py
 delete mode 100644 formulaone/helpers.py
 delete mode 100644 formulaone/load_latest_race.py
 delete mode 100644 formulaone/tidy_data.py

diff --git a/.gitignore b/.gitignore
index 250c32e..5c0af16 100644
--- a/.gitignore
+++ b/.gitignore
@@ -62,6 +62,7 @@ instance/
 
 # Sphinx documentation
 docs/_build/
+docs/generated/
 
 # PyBuilder
 target/
@@ -94,6 +95,7 @@ ENV/
 
 # My Data
 /Data
+/Data/*
 
 # Vs code Setting
 .vscode/
@@ -103,3 +105,5 @@ ENV/
 
 # Ignore config file with sensitive information
 config.ini
+
+.DS_Store
\ No newline at end of file
diff --git a/docs/API.rst b/docs/API.rst
index 7e32988..5d63826 100644
--- a/docs/API.rst
+++ b/docs/API.rst
@@ -4,4 +4,4 @@ API
 .. autosummary::
    :toctree: generated
 
-   formulaone.helpers
\ No newline at end of file
+   dynamodb.dynamodb_helpers
\ No newline at end of file
diff --git a/docs/docHTMLs/.buildinfo b/docs/docHTMLs/.buildinfo
new file mode 100644
index 0000000..876e047
--- /dev/null
+++ b/docs/docHTMLs/.buildinfo
@@ -0,0 +1,4 @@
+# Sphinx build info version 1
+# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
+config: 192e42e872864313c12dcb7e3a4cfed8
+tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/docs/docHTMLs/.doctrees/API.doctree b/docs/docHTMLs/.doctrees/API.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..546978c04f55ecc26fb087e95874c78a93c876ba
GIT binary patch
literal 4378
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

literal 0
HcmV?d00001

diff --git a/docs/docHTMLs/.doctrees/dynamodb.doctree b/docs/docHTMLs/.doctrees/dynamodb.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..7fa800294212a04688cf9897b1ebbeb489635d62
GIT binary patch
literal 37971
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
P)c61g))YTTi0T0V9t_XR

literal 0
HcmV?d00001

diff --git a/docs/docHTMLs/.doctrees/environment.pickle b/docs/docHTMLs/.doctrees/environment.pickle
new file mode 100644
index 0000000000000000000000000000000000000000..96ad11b212bba7eccd02323e3329dcffc5378a5e
GIT binary patch
literal 157585
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%0AfG|f^$JiD
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
ZJz}Vu^OLelDht4kZ7fnS$Cf7P0RT2Y)HwhE

literal 0
HcmV?d00001

diff --git a/docs/docHTMLs/.doctrees/generated/dynamodb.dynamodb_helpers.doctree b/docs/docHTMLs/.doctrees/generated/dynamodb.dynamodb_helpers.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..6ba927740e6c71bbafe675f0509981790e4f5833
GIT binary patch
literal 16319
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
ASO5S3

literal 0
HcmV?d00001

diff --git a/docs/docHTMLs/.doctrees/generated/ergast.doctree b/docs/docHTMLs/.doctrees/generated/ergast.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..e67f2a97ae1a743dbe450d0b09c4e1b213252567
GIT binary patch
literal 5620
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

literal 0
HcmV?d00001

diff --git a/docs/docHTMLs/.doctrees/generated/sample.doctree b/docs/docHTMLs/.doctrees/generated/sample.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..863b88638ea0d6b6fbbf997584b29d06cbe2d31c
GIT binary patch
literal 2465
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
bNsZ6RPY1;oR|=?T0|(X=KTzdenxqE+X0G1y

literal 0
HcmV?d00001

diff --git a/docs/docHTMLs/.doctrees/generated/sample.helpers.doctree b/docs/docHTMLs/.doctrees/generated/sample.helpers.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..2aaba718360a31200d4e761c0c0fbd95cd33e95c
GIT binary patch
literal 2505
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

literal 0
HcmV?d00001

diff --git a/docs/docHTMLs/.doctrees/index.doctree b/docs/docHTMLs/.doctrees/index.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..d454fcad5398e2075259ed36f20126d4b7b63fdf
GIT binary patch
literal 3574
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
GNe=+8f_ixX

literal 0
HcmV?d00001

diff --git a/docs/docHTMLs/.doctrees/modules.doctree b/docs/docHTMLs/.doctrees/modules.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..5cd4dd34821f8fdb376eeee66353fcc2dc3a07f5
GIT binary patch
literal 2801
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
Yocwf9Y;mQ4iZ*ayP4NR&-la);028@j9RL6T

literal 0
HcmV?d00001

diff --git a/docs/docHTMLs/.doctrees/usage.doctree b/docs/docHTMLs/.doctrees/usage.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..86fc7e9ff99323f83860271ec5bd7a7085c08ab1
GIT binary patch
literal 28497
zcmZo*o$8j)00uq$#RVCec@=tzDJgmRDXGO%dN@+@lS^|`^Gc>no}$?}rFM!&4`)$g
zd2xPeQF7{(9)>AB9LX7(IVnY{c~fGi^zea{mt^J?>p}Ii7pEqdWaj6=wP&zquw}5v
zPSMEV>|rg*EXhellImd%Elx~NodQyj!P&zSl3D?>7$)301>yp>g2W<_lQIN*IO9P!
zf*qK_+`|TSmtPM{PG(-}6u;7>#2&81l9Hm#q|%bqVzB#}GgFE|Ze>r-Nh~f-1+!W6
z5_2Iej+D{@1ScsmIlCw|4Wy>DhrJ{*9V9g+gFiz$gC|2KgE>RCC&<|<CbT%Us5qvm
zGOf}u#wE2lyClCL#w9r3H?g=RwJ65THO9?VH=rmnyCgHaG&d%oC_gJTxg;hnzbLmf
zCow-SH6|rLxj3d2<afQI;*u#Da^6g(Ng3Rb5Jv==08F5V-6J)pAhoC%5>#RcJ~WIn
zq%#a44)n{A0|i5deC-sC48_<f8OpI!GE`%yWT?kZ$<U0QQktO+_Kz+^d4^7goHuJ}
zQU+%aXF+07VtP?xK?ZUZc}3=zDkLZ7DU=qcDwJfTDkLPNROTh-=BFg-!5Hxw5ZCFY
zr<TMQB$i~vm*mH%B$gy<XeJ~mq?P7@(}We+@fsOoJp$-vPC<CX0pc!*H!?VT*mE*V
zQi~FEklkcJsvE#IXNdLaz+6m>(~%tIh3u$AykYB+A)Vn+nv@~d!-eE?9R5qiYm{Av
zEI4}DGo&-X(N&t1!O+8+nU|7UffO8&42ILB9`@9{lA=s-a@Xi#E6&VI&q<xqV}Ti0
z3L2St3c2|yr8%hzI0H&^N{<#!NsI(AC4<ecWJ)3^(Ivrrks;eNgDRN_nhaxL&VeVx
zf=Vk;4l60j%u83uPs8mQEbay6o(zT_mXy@uWQ;)8$YAK<1Ife}XQt;RmXsEu6lX%1
zVG2%pAZ<KgZJ?4iF&9OX6wLXUX%ehCL#zj%5=6>s#GObrdbo=-({&4qQo#jU4=>0u
z;PMd6Pem>udN?a`bF7LB5<vw%M?q0)acWUnD!AOJ&ydcjhS)NwqtKfXoKrYKzKjR^
z5LTOIu=WU`M-nWQF(nXTI}PG%NU4Nc0BH1ZfWj7RO%DgiN-z^8Ofx2COakSBDTn~f
zn4BR8b*B(WQ#`2j%}p&yEy~F(2GxS_vY$yq6XHZ%MLNv%WtgTT6)=T~psGNlhq*X2
zeM%1($j$jlpo(b<ic@>oa=|6QlpaZ(33EyhD>(5?$zbc@NGr|B0sA;(Mh{nfNq#cO
zCnd#GGInRoXq(c*2^In?=)smhK*3U(AqxqP4C#zAP)LKL50Yb&^YcnTl|Lc|q2--D
zJb*-kQcFsU@)STdk3vbl0;uNEg9Mpa4|YjJ%pM2Xmm!NSW|4CR$eEz>xEK^`8PXX?
zK-x-^P?G|>hC?v_!2DO5gcKplu~Rg9m<lSVfWi<`MWRPVN`7u)X5N&Hdp+#=Nm(V8
z1*uaq?n4q8oRgQY3#k!0d)V{xVN5=lur8?dubk4^!vmFs@dfkpb)kV<3|GXTmk$$z
zsRNk=vaC3@q$D#heM%=NC`v%y2N&qF8O7ihM+PE3qJk33!I7YlmY<W7TBML!tWX4w
zqSO?Hq)LJ<h@!-DaO(lwl)%x1kSAaVQsw;?>{e(DXL!PsjUk~{1cp0cX-XGo&Hz^^
zX!?+x@)g-B_|p!k9q|@VI|9X5sHqA)8G_O+sF}wNjxd=F=F+5$WLPjja}%zz1*P?n
zk>6tpDm~FWs6b@9L7RkN!_jb<IhYy_D8VoVk_$>v!&M`r3MSAaj3wy6DM}-w0j>yN
zRS)ha5!o8ZQf6dez@6GOGI}z4QObQ-B~qUuoh1*~+cT&G99(}+g@>IWMgW6@H$$uk
ziwwL5$TEWa7F#8tk+Cpi5!R5Jf)Y|$h9F}gRr+$clSrw%k%Aq`FhthQl4N9HfK=ic
zTQjzyx@i}_>N;aj23yA7EEA9m_hkhzGBAMIZBsH1U{95xBEB+17VeA;=`0zLW=Pp_
z80I}_*?}neCD3Z(B4|YbuZ?jlK*UEF)Fz@U<t%BC4moee4C$<35EJZ7{Ke}bBrhR(
zl(Y&u<8f9l$i638c_8X3gnHJQ@w_wRMQ6s#&Wu-`8LvAt-k{f+P#61^CLvXufv{e2
zVoq^B(cSHm%#=!kwWTOlqY)KTRuRbk-~kRu9zd!ljR;kfm@a^2J9v)<&VYB(Kv@-C
zBa(Zn(A<MRGCeY+!9KuUU4o^Ni$g@V0=0^9)tI1xA6U<u+#1sgn^%dgG6@V=poSoh
zI&;=wsx#4D4DN2@sWe5fg&sJ4(WKT~fj8aZuQivz_4W+zAV;e<!M!r{cwvv7k|74^
zu%SsI3hM1}4?_wK)J%%M;zR^i);5qa6jhv94MXJcta%hxoI61-+?RC~RB?jX;EEG_
z%7oRNFi&MjXDtNj23JWLxNA;Hw3-tX=-@sSyz0cG0ud#*p>`2pcP;?wfYhBgKuoYh
zQDYLlbOhC%Fi&O3BE=sf$U%iF{?2X2<E&30`<`Td22oET6ft!t#KnHdRdo+LbOd?|
zxP1h2FtQNR&^H%iC?7nw3L5&xGw#me0v=>^aRL`P8Dc#M0YsoPG2v@!gB*i4_@4D2
z<YjPm3wDGEN;@DWBwr!9C^fMpRUuIUX1_vFDrB-lhv=38thW^p(~5O0UY$tWkSb>Z
zH2)$s7K{ls7O*%97PR^>Iqa<km@M2oNG_5<a}oaZ3u-Qa{D7yq0FoxXxgeGy4Ubw1
z`q;LhIuFCU8k)p58b}UEltFs94`5|T2A=9!9EVfEaY~aK+7)k9<FBC|;d*=K4yHyC
zMqGnt1VLlih`y~T)_?{FbB0(C4p~GI6$1A;=~Xo%)Utv>#!ysMV>Jv>Z)DjpQP#%|
z1G#WtRuK~eLl%e)uBvgSQdn&b^H+v+mL13da3zRdTWcWo)r_3M1#~gC5?Y}YG{**>
zD|HMHRwzy_F3!x)gV*EaXhlS11=M-4%!$9Gv&)bj3MoB9I;#}wFYrt>e@bdvW?m*}
zAwfLaYzTD7fwM;hO-+1eNop?Agk6sTq(xP1#RbV;@Or~aAtWOevtorr5NMqOOG#=G
zicuUeqhR?BA%KXPDNr8}6*F0rK&oZ4+CY??H*<z`Rv!}s1K9Um2%jPO2kLReSc^I-
z-pUZ`AzD4cOUps712<E!l^W;`8@mj+e^@f4vzCDUgExI<Edp79q6-oVhynrBkVLa6
zs|Q6FDC|0ku&W(I7b4B!wJ!tI-h~wl8L~))AgVTk?cEC?7d*+j2%?@sC<5(WNL>t@
zx<JHzVo1IMC}Suj=Hwt!a!F!RPHHi64MdRcct{FLNs5Q)#M(YoCCVzKw%ApW_mC0|
zQtJ@!P!e_*!EzkDO$cYehmx>qL~_qvH22_5kr|-2A;<@K+J+!$(%Xho)M*>qVDl~U
zO+$F-!5R32k^GjSDprR=QXIS}hD>bJq@BpcjIUFMzn#bi*V{8^u(T7g1t(@RQ3Sg(
z$Y>6BNknlk3HLU(;vWBa4kF01BtXWXHxl{LVjhyOVXJB2Yafs*ydGRyz>8Nv3ve)&
zc3{^bhG`PQ&&D9fB9&ICr9%&6-jqc2>c<eIMLJ8D8B|}Rsz+7|olwithA3AjLV1s5
zZfQ<QW;|#yBWM*xB6vLrqzMF`LRgj|orN`|5j9a3BQs?!Xlamp_hp4LGcaU<*x(kl
z7`Ak!p$T3U1ez#<#d(Hw7Bfgc!3MOJPiApRF}VJMR6YusdEh29#()Q;U6vu%Ly8te
z1V=-iLsYXY1Jqz1{8>IjIx7O|t<t2d4kiW$)EPOAtX?Fs9zDmRbmE)AT;Qy!ku@3F
z2v)EWV3`cD9w-kH$c0eX5EaO<wr?g#6Qu2%3(g!_i;=7xi1uz1$VE5{1LVvN>NtYh
zyHG!X+Pn2&Kj1D8N;9-!?Oh~Y5T7HmFP`=;R2Qhdn+3KDHI|iOofIxmUbRvHWiZg<
zM{xF104=~OhGZqQs73T;pz8||0*DA+KuXA<MKD{2bk-b*gYibN6ajaG7DD1tf^h6c
zQXC7)@>$TJWzUe#S_gJ1DbWbh1@Rv#(Fh6^P&9&ClE_2Z*b)G=>jHHpC;=d{KVCb*
zT^Cq^oFR);HKS@H*mb!D3eqQ8w?WiX2t{VsB|RixAw9JOT-N92mu03FD?n0cT2X#3
zye~ssCk8Yo1~CKDgTdN?(I?SDq^`q#kav;F1Ej8u9-)D5RCmEjP6A7(ku@Q?<2jl;
z@TN|17Y5{VJY5)&G$`T0%4^irfTf@VPgBTIrwapKd5-K;;=3=T1Rwcb7e(}RrGeIX
zrD3;4goXTWivV2j;98xH9M_m#7VxrbR3(t^3Z?|2h*yStmGrI(BABw2K*kW&Rmsv}
zMzpdpI~1U*Gs}pek_^0k5lfJ3kcu1BY@THYZrG!4<;j9}Mod{q>Wml?p*+ivnSlY`
z>%balh+-p)n}xDohbqYL`?4Zg7#OlZY;dmwyfOhfX(07DU{RMLoy7~%OR&eG;+|Sk
zOrY9<G>|gHdWchuNRRPQC%_6+)TqN!pbqjJnjxJP1NGA2=wXyXT|-m=!y2HuAWe`S
zMj<%G4|orw4df!6SsY6`$%6U;)Wc{7`vGs#g7q+vbU}QM$g0>Hn9vb*s4h?gGY@PR
zY7fI4-opU5*wE%tz+&)a3JPiYMGBCt3&~XE^g5Q15?W}H4r*U7fOrCLuR{;)Zqodc
zA=X2xHbhael@w2bdneFn0rfLBfqg_u5&-Ffgaau_02F$lBmin864^U}x)PLl5Jd-G
zJHfpZSmB)^i&Pt<Y9rV?xd#f;Ct3GF)KdsWX73~h+F3|cC@x4%&P>Zph9qJI(Ci|K
zof7bjB-Sp88gaHD^#C4&yoOY6AoWCai0X+z9Rur!KwGr9_V9u;E?5ha8(yQi0dFb<
z_d-Cf#?uP{NrMs?tV~CZbu5J;xEG>ConD9;ypa#~C-Hp{;)9O-9*7c}<G^K<jzVQ>
zVv&vlco#hlyC4#*<aa?t;Cg$e4VIY`)Ud?tfbgL!fOJ35g%KsVI^2__cRmmSl%)nT
z2EFqkgc;S~Jgb4)0bvCz1IwUxJCGzm1GNxk2&dbE>_jR@Q1dX}E`}v5NnH$6uyRya
zvw#vX7Dpq*GsJoz9E6iY$#-%f*bS(DL@rj)rf9G^8G2>~X8#UJ0vyobqb(4w&L!W~
zndG<{ci9Q@Bx+v{YZ^otkj2kRSzk^Q<oA79y{rrjSs*sJFDHPS%aD3<uzZjqoh1m;
zNw6oU1@6fuBGt?a;K4)C=@jtkBXG)xG(ACcM<i%LMB-$qb6^z|?vw<b4;a*iUWRnm
z1gM9I>C>fwr+m1;;fS|+tj7h))(|Bi7I@MjBNY-odR*Y@3L*<;qDg~`1GLTobbbkx
z=|Fi4>=2}e$V#X$h>8|iw_qVi6QnP=6r92E_XQyX$`EIxrYU$Aha!K2y`3S}Lvwo&
zsd*PD1aOx9$mJq5HD^J?4Al4B4h}QC835MzMA8KbX++V2r|${X1?oO50^5b!_mqS8
zJySB1OCa$AZl!`-=8$}jmWmMbSkQ!o5I_XV4N?LHEiG|mNM~JvxD{^~Qxvz8L2Gxh
z%Oafkk`yO`JB-k<<jj!HdIokMDe(r<1@RRr@dgSDP`rWK^F($Sp{@kQIHFv_YbUtF
z2&*G9WRY4>sM-j27=_pv7&4w@34^Go5Q@wWV{AyiLSboYQ6;3fD+Zl!04fBD>nnnF
z#)H#waePu`JV+<j9-|^bYmmxEageu=GCERc5$_5-?5=^8RPYsJa0Yzo7&eVa?vY1x
z58l)W?l^*cfT!aKk_II-SOtI@`&ddcaK}-NIvqzFY`!JF`v?y`I0Jt$lHZ9`#OhFR
zeGchL(y$NdgEz|YufFqu>m59+@2~|WW=~QCyD~_B61ya#n2&~goAh2KBFM6$K*pf=
zD!Gwj9h{%3)SWB@S%y^7pyq76-N{@wlDd<bVC7WkPIi*-<W{g7Q2mHp*noOkpjAH5
z6@L&X<1U*(%27LJSfdePK$bHbWgW9vkl*)Ztz=_h$O5s!9Wya(i597Q21`&G(pjz`
z{RF#b`hlgXp!4R?YD9v4G?Mip^3Hmw!(bHx?l^)rZHGX~k|CY72I?(hx@*qhUJ^Oo
zwGwCxMvt78e@CHCBr4=#?dQE9O_09WL2#bJ-xsq1mtK%IKe2r=xTnCyU4~c>WriS<
z+BJ~daTa;V#Q`*_WkG!l>P1}!`xbBNg!Q73bV0%hQ4ZkgML~6e+SL2NcA@s74B@>f
z)P;1A7ASbm4m608o>`Wf2Oe!Ezhm`<lyE{z7@#?;4-n_$?O17$<ckck9^y41BAk^S
z-*7md2nThEnAq{xa-ix0x(Nyzbs$|3zmpQ-pb!H^IH*-jWcLedA1J9H${D<Ng1cX^
zIv_(9si}dgjbQgn4-}+Nvh+dJQwT*$_X}ZL4+msrR!S1m#(!inJUjnEo9^-K{1<jf
zEJ;)dDN4*M1|8g+2-=JYD@(A-AySMT$X`Sk5&Rj_S=MkJ;GT*$%6R}qA^8d=Fn1_`
zj#L6?SMcc&3YmE&`3i{&;Nv1dE_N$Q%uOY(^9j-e>3f3D55n5-w5Gsrq#mFT+<%a^
zEmDtE7vJ<Hh7(~ipb3k2%w80l9wb+Upt%BXISlTHg4~U#9}1EN<v3X7he()MifGWt
z3^;amks_ReQv%G<JW6~Ql!U-T?R_GWDKr}KoeY5PJaD2dreUA65pVS3?{n6|_4Z63
zEc2FV0f^b%<i}6}>1kq!BZ{U8aDPH#5H$<n-{OS`qpW_AG3cF4Hb@MEvnXmu4MhfJ
zl_auEh8XDVS<s4bq&&L}WE0M^6mJi65rMiF)c*q2ztHa5JR+2%cGs{52%-$gs$i$A
zyEX~r_kCH%*clkIKx}Y#O%N^8k$P&dSjmvissd>x*i$osS8tGok;K$3kQQNvSPyxc
z5lQh3)QPad6E!JfX;%&IoS7k=brR|$V!CU(knS2J%P4@`rJ9I6JE##sR>$lS)G<T_
zFRcB23#19sF}nxO4){A}YQ#AoTq0zM^$@EZkw!j)+=DasV@V@fP#=IgTOYtaz?-aK
zoh>9?5Pu_bF_xMfb^rlX7pMh&8*CS9XUh`a*@8FBtQ0~rQz{kUe1+uvypqJsJkUAy
z;IITY>L6K+oY^cv4ifq*Xps(D^2f^o>aO6AbOX5SN%2jFSP$tM5eY$w6pw*gTCjuw
z>KMs`eML$_0O^8+1t|#u6oR0H0BRBv*$G2RLWt4>ubtpd7_4~DkVUGBQMD25gn5I4
z^huTvh<Xa42zA21?LX*g6bRdTgh2<c>%zMzkggKqAU3cxq6Y($#?v*^Mh?9mR`5kB
zNF6-50GbiZpn!+onZbnbY<Bp?F&R2NB4BstfL#?|P?Voulv)hAIEJ+(za%kdiZ??K
z7felR$`o&gQqaH-V-H_)X%XmJns~^$Y*YMtcwi!+{o7OgdN`m*rWa4?5d>XZ1HLFH
zttcOKpnb}e9=5Q=oYK@{_?Gt`w*1nPg3^*Hei{6JJ)G&Od8tK-CHX~D{CYT35=&Bx
zOA>Pnrug-67v<-d#1|B$re#)4>0#8L(!&jL0%+fO_7uM!E-1IOC})aa4=?CQe$d4>
zIhlFc#Z!7%AqTtn2&Lucm*nM_q{bs8J9>CQ7x?6r=Ehfmdc9LRdiaV<iZTo0lk;;y
zx9${A@#~R>h@|GEf<@xXGfOh!!S?~Af~0vN(g*>bqSS)?qLTQW)Uwo^Dc(#yTp5Wu
za4u_)U}{BXNqlihVo7N+Oc84jYf5TTY5Eku9=`I#B2WPtUtCg@nwSd;jgq3o<W!KW
zLGH`UD=00APt8ltPXQfI-@{p2lBR2+3%=z*230aXwWuh+C_W=GFC{0nXi5(o$f?OC
zQ+oIzA&+DVE7+7NJ+f#rXhvjpaWF9S@IlN)xB;eH22}!0bB_SX55+l&#TiAZ1v%gg
zH+XXr^U_Nb(^KP<^HWl%^f0C7P3aLXN=?o$N{LTNElABvNzF?J-R9!g!<L+%mzD_%
zBhJheSc1r4>)}f*Ey<5Z2=y>!rcCMKO)1SSh=(UhzaBoYKxSS^YEfQd4k+sQ!6M+q
z4vKw*P(g8OX-a;4MJ^~o38YpO<QJ#LBkKgGlH`*3vdrR4NRs7`PsuC>9Y_-ocO^S4
zt7Pc(@WiL27MEn^f%6?Gl|q%pr)B1Vud3-01F_;W^NLf8Kw~fQsd*sNQl@nDaDxtB
zhjG0bdjvuGEj}kTFTErqJ|{Cbvt){|fO-#KL25yKQEFOhQEFZ?IBD{LM3NGVQ{zEd
zqemj6q@<wON?*SqwV+t9pt2+*KTj{eC|!R_k0?kb*a4+QIq@Z_xdl0iC8<+-I0{k=
zbX5&ZQl|9q6{RJk84nUc7_SC19#lMnl5BQrkzQtMNgCLWl>B7<jFQ|O{V6@1C5cJ#
z<(VlZ8B@GDdSpwAGIQhMnG^1Tc*vD3ojn4@m3bwJ74aFF=@~hh=@}(cdRTJu^U|mE
z@D%4J7L~*omga*lzv}1_2J<1@_?-OYL}<{;CTAoTB_@}o7D4h`d}bav2y+vQvP%o5
zbb{~o0x#Br76Y9<yeav~nR#jXP=SsfAy7e4T$+TYEHf9Bc60I*A(;_$FIV=I9)Z-{
zq|}u7;*!do)Z&cP)RHNkJ)+4u`H9)_skw=nIq``pDWGyUwRlQLk08k8%>2Cg;?$fp
zNSW5z!<?E|2D;y?hXYcYq=Je?fy}&=%%arflK7IuqV&{~V$eNbg2kmt#U+^~rQlSP
z0=mtsc1n*BiYRzD{FK@$Ak)&|95zsqngS~Pd)PsOpo_z5r)XrwaxgGtMS+Mvpc7z!
zf(Q#xr_2;Ygn}f3KuwGuPLM9}T^XR8$H4kJvp{+}vq0)Qvp{M)OEVNfrh*L2;K>4+
zmZ6(bm{AQr-yM7iJov!cEYPX8Szs$b$AyAV#>)a7p9enS1AGh!c-LJPXlovL&1M#8
zVJCQ!Fbg!3m<4hacxVya6U_p3S4(?%ky94fue`~bCE#obO3e@vPyqr{2MJVU5s13j
zDWH^?o0OjePpn|2BE^*`f^gNGC?;~kYz1o)LNUL%B(bPuiZ^4AD7slt8HOIN%#`@#
z{8CWiHKm6;IX@={a`9a8lpc0xsQBb5wNqNB1WoDTD@ZIVPL0n^Ee2h=2C)!c%Ap8z
m!-c^Kj5{+gIj1xwH9jXl9hA1XQa}YUIIyPpfm$1-NqPVdT9aG=

literal 0
HcmV?d00001

diff --git a/docs/docHTMLs/API.html b/docs/docHTMLs/API.html
new file mode 100644
index 0000000..2b82e3d
--- /dev/null
+++ b/docs/docHTMLs/API.html
@@ -0,0 +1,119 @@
+<!DOCTYPE html>
+
+<html lang="en" data-content_root="./">
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
+
+    <title>API &#8212; sample v0.0.1 documentation</title>
+    <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
+    <link rel="stylesheet" type="text/css" href="_static/classic.css?v=def86cc0" />
+    
+    <script src="_static/documentation_options.js?v=2fea6348"></script>
+    <script src="_static/doctools.js?v=9a2dae69"></script>
+    <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
+    
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="search.html" />
+    <link rel="next" title="dynamodb.dynamodb_helpers" href="generated/dynamodb.dynamodb_helpers.html" />
+    <link rel="prev" title="Usage" href="usage.html" /> 
+  </head><body>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="generated/dynamodb.dynamodb_helpers.html" title="dynamodb.dynamodb_helpers"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="usage.html" title="Usage"
+             accesskey="P">previous</a> |</li>
+        <li class="nav-item nav-item-0"><a href="index.html">sample v0.0.1 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-this"><a href="">API</a></li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body" role="main">
+            
+  <section id="api">
+<h1>API<a class="headerlink" href="#api" title="Link to this heading">¶</a></h1>
+<table class="autosummary longtable docutils align-default">
+<tbody>
+<tr class="row-odd"><td><p><a class="reference internal" href="generated/dynamodb.dynamodb_helpers.html#module-dynamodb.dynamodb_helpers" title="dynamodb.dynamodb_helpers"><code class="xref py py-obj docutils literal notranslate"><span class="pre">dynamodb.dynamodb_helpers</span></code></a></p></td>
+<td><p></p></td>
+</tr>
+</tbody>
+</table>
+</section>
+
+
+            <div class="clearer"></div>
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+        <div class="sphinxsidebarwrapper">
+  <div>
+    <h4>Previous topic</h4>
+    <p class="topless"><a href="usage.html"
+                          title="previous chapter">Usage</a></p>
+  </div>
+  <div>
+    <h4>Next topic</h4>
+    <p class="topless"><a href="generated/dynamodb.dynamodb_helpers.html"
+                          title="next chapter">dynamodb.dynamodb_helpers</a></p>
+  </div>
+  <div role="note" aria-label="source link">
+    <h3>This Page</h3>
+    <ul class="this-page-menu">
+      <li><a href="_sources/API.rst.txt"
+            rel="nofollow">Show Source</a></li>
+    </ul>
+   </div>
+<search id="searchbox" style="display: none" role="search">
+  <h3 id="searchlabel">Quick search</h3>
+    <div class="searchformwrapper">
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
+      <input type="submit" value="Go" />
+    </form>
+    </div>
+</search>
+<script>document.getElementById('searchbox').style.display = "block"</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="generated/dynamodb.dynamodb_helpers.html" title="dynamodb.dynamodb_helpers"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="usage.html" title="Usage"
+             >previous</a> |</li>
+        <li class="nav-item nav-item-0"><a href="index.html">sample v0.0.1 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-this"><a href="">API</a></li> 
+      </ul>
+    </div>
+    <div class="footer" role="contentinfo">
+    &#169; Copyright 2012, Kenneth Reitz.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/docs/docHTMLs/_sources/API.rst.txt b/docs/docHTMLs/_sources/API.rst.txt
new file mode 100644
index 0000000..5d63826
--- /dev/null
+++ b/docs/docHTMLs/_sources/API.rst.txt
@@ -0,0 +1,7 @@
+API
+===
+
+.. autosummary::
+   :toctree: generated
+
+   dynamodb.dynamodb_helpers
\ No newline at end of file
diff --git a/docs/docHTMLs/_sources/dynamodb.rst.txt b/docs/docHTMLs/_sources/dynamodb.rst.txt
new file mode 100644
index 0000000..356bcf3
--- /dev/null
+++ b/docs/docHTMLs/_sources/dynamodb.rst.txt
@@ -0,0 +1,53 @@
+dynamodb package
+================
+
+Submodules
+----------
+
+dynamodb.core module
+--------------------
+
+.. automodule:: dynamodb.core
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+dynamodb.dynamodb\_helpers module
+---------------------------------
+
+.. automodule:: dynamodb.dynamodb_helpers
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+dynamodb.load\_movies module
+----------------------------
+
+.. automodule:: dynamodb.load_movies
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+dynamodb.prepare\_data module
+-----------------------------
+
+.. automodule:: dynamodb.prepare_data
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+dynamodb.tidy\_data module
+--------------------------
+
+.. automodule:: dynamodb.tidy_data
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: dynamodb
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/docHTMLs/_sources/generated/dynamodb.dynamodb_helpers.rst.txt b/docs/docHTMLs/_sources/generated/dynamodb.dynamodb_helpers.rst.txt
new file mode 100644
index 0000000..592c1d4
--- /dev/null
+++ b/docs/docHTMLs/_sources/generated/dynamodb.dynamodb_helpers.rst.txt
@@ -0,0 +1,38 @@
+dynamodb.dynamodb\_helpers
+==========================
+
+.. automodule:: dynamodb.dynamodb_helpers
+
+   
+   
+   
+
+   
+   
+   .. rubric:: Functions
+
+   .. autosummary::
+   
+      get_config
+      get_dynamodb_resource
+      get_movie_item
+      get_movies_table
+      get_path_to_data
+      get_raw_data_path
+      get_tidy_data_path
+      list_dynamodb_tables
+      query_movies_by_year
+      tidy_movie_data
+   
+   
+
+   
+   
+   
+
+   
+   
+   
+
+
+
diff --git a/docs/docHTMLs/_sources/generated/ergast.rst.txt b/docs/docHTMLs/_sources/generated/ergast.rst.txt
new file mode 100644
index 0000000..c072d53
--- /dev/null
+++ b/docs/docHTMLs/_sources/generated/ergast.rst.txt
@@ -0,0 +1,22 @@
+.. _ergast:
+
+Ergast API Interface
+====================
+
+.. currentmodule::
+  fastf1.ergast
+
+Introduction
+------------
+
+This module can be used to interface with the Ergast F1 API
+(https://ergast.com/mrd/). All Ergast endpoints are supported.
+
+The :class:`Ergast` object provides access to all API Endpoints of the
+Ergast API.
+
+The terms of use of Ergast apply (https://ergast.com/mrd/terms/).
+Especially take care not to exceed the specified rate limits.
+FastF1 will handle caching and it will try to enforce rate limits where
+possible. Make sure to know what limits apply. For more information on how
+FastF1 handles caching and rate limiting see :ref:`requests-and-caching`.
diff --git a/docs/docHTMLs/_sources/generated/sample.helpers.rst.txt b/docs/docHTMLs/_sources/generated/sample.helpers.rst.txt
new file mode 100644
index 0000000..c75d5e6
--- /dev/null
+++ b/docs/docHTMLs/_sources/generated/sample.helpers.rst.txt
@@ -0,0 +1,31 @@
+sample.helpers
+==============
+
+.. automodule:: sample.helpers
+
+   
+   
+   
+
+   
+   
+   .. rubric:: Functions
+
+   .. autosummary::
+   
+      get_path_to_data
+      get_raw_data_path
+      get_tidy_data_path
+   
+   
+
+   
+   
+   
+
+   
+   
+   
+
+
+
diff --git a/docs/docHTMLs/_sources/generated/sample.rst.txt b/docs/docHTMLs/_sources/generated/sample.rst.txt
new file mode 100644
index 0000000..12cd9db
--- /dev/null
+++ b/docs/docHTMLs/_sources/generated/sample.rst.txt
@@ -0,0 +1,23 @@
+sample
+======
+
+.. automodule:: sample
+
+   
+   
+   
+
+   
+   
+   
+
+   
+   
+   
+
+   
+   
+   
+
+
+
diff --git a/docs/docHTMLs/_sources/index.rst.txt b/docs/docHTMLs/_sources/index.rst.txt
new file mode 100644
index 0000000..5b22772
--- /dev/null
+++ b/docs/docHTMLs/_sources/index.rst.txt
@@ -0,0 +1,14 @@
+.. sample documentation master file, created by
+   sphinx-quickstart on Mon Apr 16 21:22:43 2012.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+Welcome to sample's documentation!
+==================================
+
+Contents:
+
+.. toctree::
+   modules
+   usage
+   API
diff --git a/docs/docHTMLs/_sources/modules.rst.txt b/docs/docHTMLs/_sources/modules.rst.txt
new file mode 100644
index 0000000..09e5b15
--- /dev/null
+++ b/docs/docHTMLs/_sources/modules.rst.txt
@@ -0,0 +1,7 @@
+formulaone
+==========
+
+.. toctree::
+   :maxdepth: 4
+
+   dynamodb
diff --git a/docs/docHTMLs/_sources/usage.rst.txt b/docs/docHTMLs/_sources/usage.rst.txt
new file mode 100644
index 0000000..ee6f0a6
--- /dev/null
+++ b/docs/docHTMLs/_sources/usage.rst.txt
@@ -0,0 +1,47 @@
+Usage
+=====
+
+Helpers
+-------
+
+You can use the ``dynamodb.dynamodb_helpers.get_path_to_data()`` function:
+
+.. autofunction:: dynamodb.dynamodb_helpers.get_path_to_data
+
+Raw data folder is returned by ``dynamodb.dynamodb_helpers.get_raw_data_path()`` function:
+
+.. autofunction:: dynamodb.dynamodb_helpers.get_raw_data_path
+
+You can also use the ``dynamodb.dynamodb_helpers.get_tidy_data_path()`` function:
+
+.. autofunction:: dynamodb.dynamodb_helpers.get_tidy_data_path
+
+DynamoDB
+--------
+
+To create a DynamoDB resource, use the ``dynamodb.dynamodb_helpers.get_dynamodb_resource`` function:
+
+.. autofunction:: dynamodb.dynamodb_helpers.get_dynamodb_resource
+
+To list all DynamoDB tables, use the ``dynamodb.dynamodb_helpers.list_dynamodb_tables`` function:
+
+.. autofunction:: dynamodb.dynamodb_helpers.list_dynamodb_tables
+
+To get the movies table from DynamoDB, use the ``dynamodb.dynamodb_helpers.get_movies_table`` function:
+
+.. autofunction:: dynamodb.dynamodb_helpers.get_movies_table
+
+To get a specific movie item, use the ``dynamodb.dynamodb_helpers.get_movie_item`` function:
+
+.. autofunction:: dynamodb.dynamodb_helpers.get_movie_item
+
+To query movies by year, use the ``dynamodb.dynamodb_helpers.query_movies_by_year`` function:
+
+.. autofunction:: dynamodb.dynamodb_helpers.query_movies_by_year
+
+Data Transformation
+-------------------
+
+To transform raw movie data into a tidy DataFrame, use the ``dynamodb.dynamodb_helpers.tidy_movie_data`` function:
+
+.. autofunction:: dynamodb.dynamodb_helpers.tidy_movie_data
diff --git a/docs/docHTMLs/_static/basic.css b/docs/docHTMLs/_static/basic.css
new file mode 100644
index 0000000..f316efc
--- /dev/null
+++ b/docs/docHTMLs/_static/basic.css
@@ -0,0 +1,925 @@
+/*
+ * basic.css
+ * ~~~~~~~~~
+ *
+ * Sphinx stylesheet -- basic theme.
+ *
+ * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/* -- main layout ----------------------------------------------------------- */
+
+div.clearer {
+    clear: both;
+}
+
+div.section::after {
+    display: block;
+    content: '';
+    clear: left;
+}
+
+/* -- relbar ---------------------------------------------------------------- */
+
+div.related {
+    width: 100%;
+    font-size: 90%;
+}
+
+div.related h3 {
+    display: none;
+}
+
+div.related ul {
+    margin: 0;
+    padding: 0 0 0 10px;
+    list-style: none;
+}
+
+div.related li {
+    display: inline;
+}
+
+div.related li.right {
+    float: right;
+    margin-right: 5px;
+}
+
+/* -- sidebar --------------------------------------------------------------- */
+
+div.sphinxsidebarwrapper {
+    padding: 10px 5px 0 10px;
+}
+
+div.sphinxsidebar {
+    float: left;
+    width: 230px;
+    margin-left: -100%;
+    font-size: 90%;
+    word-wrap: break-word;
+    overflow-wrap : break-word;
+}
+
+div.sphinxsidebar ul {
+    list-style: none;
+}
+
+div.sphinxsidebar ul ul,
+div.sphinxsidebar ul.want-points {
+    margin-left: 20px;
+    list-style: square;
+}
+
+div.sphinxsidebar ul ul {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+div.sphinxsidebar form {
+    margin-top: 10px;
+}
+
+div.sphinxsidebar input {
+    border: 1px solid #98dbcc;
+    font-family: sans-serif;
+    font-size: 1em;
+}
+
+div.sphinxsidebar #searchbox form.search {
+    overflow: hidden;
+}
+
+div.sphinxsidebar #searchbox input[type="text"] {
+    float: left;
+    width: 80%;
+    padding: 0.25em;
+    box-sizing: border-box;
+}
+
+div.sphinxsidebar #searchbox input[type="submit"] {
+    float: left;
+    width: 20%;
+    border-left: none;
+    padding: 0.25em;
+    box-sizing: border-box;
+}
+
+
+img {
+    border: 0;
+    max-width: 100%;
+}
+
+/* -- search page ----------------------------------------------------------- */
+
+ul.search {
+    margin: 10px 0 0 20px;
+    padding: 0;
+}
+
+ul.search li {
+    padding: 5px 0 5px 20px;
+    background-image: url(file.png);
+    background-repeat: no-repeat;
+    background-position: 0 7px;
+}
+
+ul.search li a {
+    font-weight: bold;
+}
+
+ul.search li p.context {
+    color: #888;
+    margin: 2px 0 0 30px;
+    text-align: left;
+}
+
+ul.keywordmatches li.goodmatch a {
+    font-weight: bold;
+}
+
+/* -- index page ------------------------------------------------------------ */
+
+table.contentstable {
+    width: 90%;
+    margin-left: auto;
+    margin-right: auto;
+}
+
+table.contentstable p.biglink {
+    line-height: 150%;
+}
+
+a.biglink {
+    font-size: 1.3em;
+}
+
+span.linkdescr {
+    font-style: italic;
+    padding-top: 5px;
+    font-size: 90%;
+}
+
+/* -- general index --------------------------------------------------------- */
+
+table.indextable {
+    width: 100%;
+}
+
+table.indextable td {
+    text-align: left;
+    vertical-align: top;
+}
+
+table.indextable ul {
+    margin-top: 0;
+    margin-bottom: 0;
+    list-style-type: none;
+}
+
+table.indextable > tbody > tr > td > ul {
+    padding-left: 0em;
+}
+
+table.indextable tr.pcap {
+    height: 10px;
+}
+
+table.indextable tr.cap {
+    margin-top: 10px;
+    background-color: #f2f2f2;
+}
+
+img.toggler {
+    margin-right: 3px;
+    margin-top: 3px;
+    cursor: pointer;
+}
+
+div.modindex-jumpbox {
+    border-top: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+    margin: 1em 0 1em 0;
+    padding: 0.4em;
+}
+
+div.genindex-jumpbox {
+    border-top: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+    margin: 1em 0 1em 0;
+    padding: 0.4em;
+}
+
+/* -- domain module index --------------------------------------------------- */
+
+table.modindextable td {
+    padding: 2px;
+    border-collapse: collapse;
+}
+
+/* -- general body styles --------------------------------------------------- */
+
+div.body {
+    min-width: 360px;
+    max-width: 800px;
+}
+
+div.body p, div.body dd, div.body li, div.body blockquote {
+    -moz-hyphens: auto;
+    -ms-hyphens: auto;
+    -webkit-hyphens: auto;
+    hyphens: auto;
+}
+
+a.headerlink {
+    visibility: hidden;
+}
+
+a:visited {
+    color: #551A8B;
+}
+
+h1:hover > a.headerlink,
+h2:hover > a.headerlink,
+h3:hover > a.headerlink,
+h4:hover > a.headerlink,
+h5:hover > a.headerlink,
+h6:hover > a.headerlink,
+dt:hover > a.headerlink,
+caption:hover > a.headerlink,
+p.caption:hover > a.headerlink,
+div.code-block-caption:hover > a.headerlink {
+    visibility: visible;
+}
+
+div.body p.caption {
+    text-align: inherit;
+}
+
+div.body td {
+    text-align: left;
+}
+
+.first {
+    margin-top: 0 !important;
+}
+
+p.rubric {
+    margin-top: 30px;
+    font-weight: bold;
+}
+
+img.align-left, figure.align-left, .figure.align-left, object.align-left {
+    clear: left;
+    float: left;
+    margin-right: 1em;
+}
+
+img.align-right, figure.align-right, .figure.align-right, object.align-right {
+    clear: right;
+    float: right;
+    margin-left: 1em;
+}
+
+img.align-center, figure.align-center, .figure.align-center, object.align-center {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+img.align-default, figure.align-default, .figure.align-default {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.align-left {
+    text-align: left;
+}
+
+.align-center {
+    text-align: center;
+}
+
+.align-default {
+    text-align: center;
+}
+
+.align-right {
+    text-align: right;
+}
+
+/* -- sidebars -------------------------------------------------------------- */
+
+div.sidebar,
+aside.sidebar {
+    margin: 0 0 0.5em 1em;
+    border: 1px solid #ddb;
+    padding: 7px;
+    background-color: #ffe;
+    width: 40%;
+    float: right;
+    clear: right;
+    overflow-x: auto;
+}
+
+p.sidebar-title {
+    font-weight: bold;
+}
+
+nav.contents,
+aside.topic,
+div.admonition, div.topic, blockquote {
+    clear: left;
+}
+
+/* -- topics ---------------------------------------------------------------- */
+
+nav.contents,
+aside.topic,
+div.topic {
+    border: 1px solid #ccc;
+    padding: 7px;
+    margin: 10px 0 10px 0;
+}
+
+p.topic-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    margin-top: 10px;
+}
+
+/* -- admonitions ----------------------------------------------------------- */
+
+div.admonition {
+    margin-top: 10px;
+    margin-bottom: 10px;
+    padding: 7px;
+}
+
+div.admonition dt {
+    font-weight: bold;
+}
+
+p.admonition-title {
+    margin: 0px 10px 5px 0px;
+    font-weight: bold;
+}
+
+div.body p.centered {
+    text-align: center;
+    margin-top: 25px;
+}
+
+/* -- content of sidebars/topics/admonitions -------------------------------- */
+
+div.sidebar > :last-child,
+aside.sidebar > :last-child,
+nav.contents > :last-child,
+aside.topic > :last-child,
+div.topic > :last-child,
+div.admonition > :last-child {
+    margin-bottom: 0;
+}
+
+div.sidebar::after,
+aside.sidebar::after,
+nav.contents::after,
+aside.topic::after,
+div.topic::after,
+div.admonition::after,
+blockquote::after {
+    display: block;
+    content: '';
+    clear: both;
+}
+
+/* -- tables ---------------------------------------------------------------- */
+
+table.docutils {
+    margin-top: 10px;
+    margin-bottom: 10px;
+    border: 0;
+    border-collapse: collapse;
+}
+
+table.align-center {
+    margin-left: auto;
+    margin-right: auto;
+}
+
+table.align-default {
+    margin-left: auto;
+    margin-right: auto;
+}
+
+table caption span.caption-number {
+    font-style: italic;
+}
+
+table caption span.caption-text {
+}
+
+table.docutils td, table.docutils th {
+    padding: 1px 8px 1px 5px;
+    border-top: 0;
+    border-left: 0;
+    border-right: 0;
+    border-bottom: 1px solid #aaa;
+}
+
+th {
+    text-align: left;
+    padding-right: 5px;
+}
+
+table.citation {
+    border-left: solid 1px gray;
+    margin-left: 1px;
+}
+
+table.citation td {
+    border-bottom: none;
+}
+
+th > :first-child,
+td > :first-child {
+    margin-top: 0px;
+}
+
+th > :last-child,
+td > :last-child {
+    margin-bottom: 0px;
+}
+
+/* -- figures --------------------------------------------------------------- */
+
+div.figure, figure {
+    margin: 0.5em;
+    padding: 0.5em;
+}
+
+div.figure p.caption, figcaption {
+    padding: 0.3em;
+}
+
+div.figure p.caption span.caption-number,
+figcaption span.caption-number {
+    font-style: italic;
+}
+
+div.figure p.caption span.caption-text,
+figcaption span.caption-text {
+}
+
+/* -- field list styles ----------------------------------------------------- */
+
+table.field-list td, table.field-list th {
+    border: 0 !important;
+}
+
+.field-list ul {
+    margin: 0;
+    padding-left: 1em;
+}
+
+.field-list p {
+    margin: 0;
+}
+
+.field-name {
+    -moz-hyphens: manual;
+    -ms-hyphens: manual;
+    -webkit-hyphens: manual;
+    hyphens: manual;
+}
+
+/* -- hlist styles ---------------------------------------------------------- */
+
+table.hlist {
+    margin: 1em 0;
+}
+
+table.hlist td {
+    vertical-align: top;
+}
+
+/* -- object description styles --------------------------------------------- */
+
+.sig {
+	font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
+}
+
+.sig-name, code.descname {
+    background-color: transparent;
+    font-weight: bold;
+}
+
+.sig-name {
+	font-size: 1.1em;
+}
+
+code.descname {
+    font-size: 1.2em;
+}
+
+.sig-prename, code.descclassname {
+    background-color: transparent;
+}
+
+.optional {
+    font-size: 1.3em;
+}
+
+.sig-paren {
+    font-size: larger;
+}
+
+.sig-param.n {
+	font-style: italic;
+}
+
+/* C++ specific styling */
+
+.sig-inline.c-texpr,
+.sig-inline.cpp-texpr {
+	font-family: unset;
+}
+
+.sig.c   .k, .sig.c   .kt,
+.sig.cpp .k, .sig.cpp .kt {
+	color: #0033B3;
+}
+
+.sig.c   .m,
+.sig.cpp .m {
+	color: #1750EB;
+}
+
+.sig.c   .s, .sig.c   .sc,
+.sig.cpp .s, .sig.cpp .sc {
+	color: #067D17;
+}
+
+
+/* -- other body styles ----------------------------------------------------- */
+
+ol.arabic {
+    list-style: decimal;
+}
+
+ol.loweralpha {
+    list-style: lower-alpha;
+}
+
+ol.upperalpha {
+    list-style: upper-alpha;
+}
+
+ol.lowerroman {
+    list-style: lower-roman;
+}
+
+ol.upperroman {
+    list-style: upper-roman;
+}
+
+:not(li) > ol > li:first-child > :first-child,
+:not(li) > ul > li:first-child > :first-child {
+    margin-top: 0px;
+}
+
+:not(li) > ol > li:last-child > :last-child,
+:not(li) > ul > li:last-child > :last-child {
+    margin-bottom: 0px;
+}
+
+ol.simple ol p,
+ol.simple ul p,
+ul.simple ol p,
+ul.simple ul p {
+    margin-top: 0;
+}
+
+ol.simple > li:not(:first-child) > p,
+ul.simple > li:not(:first-child) > p {
+    margin-top: 0;
+}
+
+ol.simple p,
+ul.simple p {
+    margin-bottom: 0;
+}
+
+aside.footnote > span,
+div.citation > span {
+    float: left;
+}
+aside.footnote > span:last-of-type,
+div.citation > span:last-of-type {
+  padding-right: 0.5em;
+}
+aside.footnote > p {
+  margin-left: 2em;
+}
+div.citation > p {
+  margin-left: 4em;
+}
+aside.footnote > p:last-of-type,
+div.citation > p:last-of-type {
+    margin-bottom: 0em;
+}
+aside.footnote > p:last-of-type:after,
+div.citation > p:last-of-type:after {
+    content: "";
+    clear: both;
+}
+
+dl.field-list {
+    display: grid;
+    grid-template-columns: fit-content(30%) auto;
+}
+
+dl.field-list > dt {
+    font-weight: bold;
+    word-break: break-word;
+    padding-left: 0.5em;
+    padding-right: 5px;
+}
+
+dl.field-list > dd {
+    padding-left: 0.5em;
+    margin-top: 0em;
+    margin-left: 0em;
+    margin-bottom: 0em;
+}
+
+dl {
+    margin-bottom: 15px;
+}
+
+dd > :first-child {
+    margin-top: 0px;
+}
+
+dd ul, dd table {
+    margin-bottom: 10px;
+}
+
+dd {
+    margin-top: 3px;
+    margin-bottom: 10px;
+    margin-left: 30px;
+}
+
+.sig dd {
+    margin-top: 0px;
+    margin-bottom: 0px;
+}
+
+.sig dl {
+    margin-top: 0px;
+    margin-bottom: 0px;
+}
+
+dl > dd:last-child,
+dl > dd:last-child > :last-child {
+    margin-bottom: 0;
+}
+
+dt:target, span.highlighted {
+    background-color: #fbe54e;
+}
+
+rect.highlighted {
+    fill: #fbe54e;
+}
+
+dl.glossary dt {
+    font-weight: bold;
+    font-size: 1.1em;
+}
+
+.versionmodified {
+    font-style: italic;
+}
+
+.system-message {
+    background-color: #fda;
+    padding: 5px;
+    border: 3px solid red;
+}
+
+.footnote:target  {
+    background-color: #ffa;
+}
+
+.line-block {
+    display: block;
+    margin-top: 1em;
+    margin-bottom: 1em;
+}
+
+.line-block .line-block {
+    margin-top: 0;
+    margin-bottom: 0;
+    margin-left: 1.5em;
+}
+
+.guilabel, .menuselection {
+    font-family: sans-serif;
+}
+
+.accelerator {
+    text-decoration: underline;
+}
+
+.classifier {
+    font-style: oblique;
+}
+
+.classifier:before {
+    font-style: normal;
+    margin: 0 0.5em;
+    content: ":";
+    display: inline-block;
+}
+
+abbr, acronym {
+    border-bottom: dotted 1px;
+    cursor: help;
+}
+
+.translated {
+    background-color: rgba(207, 255, 207, 0.2)
+}
+
+.untranslated {
+    background-color: rgba(255, 207, 207, 0.2)
+}
+
+/* -- code displays --------------------------------------------------------- */
+
+pre {
+    overflow: auto;
+    overflow-y: hidden;  /* fixes display issues on Chrome browsers */
+}
+
+pre, div[class*="highlight-"] {
+    clear: both;
+}
+
+span.pre {
+    -moz-hyphens: none;
+    -ms-hyphens: none;
+    -webkit-hyphens: none;
+    hyphens: none;
+    white-space: nowrap;
+}
+
+div[class*="highlight-"] {
+    margin: 1em 0;
+}
+
+td.linenos pre {
+    border: 0;
+    background-color: transparent;
+    color: #aaa;
+}
+
+table.highlighttable {
+    display: block;
+}
+
+table.highlighttable tbody {
+    display: block;
+}
+
+table.highlighttable tr {
+    display: flex;
+}
+
+table.highlighttable td {
+    margin: 0;
+    padding: 0;
+}
+
+table.highlighttable td.linenos {
+    padding-right: 0.5em;
+}
+
+table.highlighttable td.code {
+    flex: 1;
+    overflow: hidden;
+}
+
+.highlight .hll {
+    display: block;
+}
+
+div.highlight pre,
+table.highlighttable pre {
+    margin: 0;
+}
+
+div.code-block-caption + div {
+    margin-top: 0;
+}
+
+div.code-block-caption {
+    margin-top: 1em;
+    padding: 2px 5px;
+    font-size: small;
+}
+
+div.code-block-caption code {
+    background-color: transparent;
+}
+
+table.highlighttable td.linenos,
+span.linenos,
+div.highlight span.gp {  /* gp: Generic.Prompt */
+  user-select: none;
+  -webkit-user-select: text; /* Safari fallback only */
+  -webkit-user-select: none; /* Chrome/Safari */
+  -moz-user-select: none; /* Firefox */
+  -ms-user-select: none; /* IE10+ */
+}
+
+div.code-block-caption span.caption-number {
+    padding: 0.1em 0.3em;
+    font-style: italic;
+}
+
+div.code-block-caption span.caption-text {
+}
+
+div.literal-block-wrapper {
+    margin: 1em 0;
+}
+
+code.xref, a code {
+    background-color: transparent;
+    font-weight: bold;
+}
+
+h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
+    background-color: transparent;
+}
+
+.viewcode-link {
+    float: right;
+}
+
+.viewcode-back {
+    float: right;
+    font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+    margin: -1px -10px;
+    padding: 0 10px;
+}
+
+/* -- math display ---------------------------------------------------------- */
+
+img.math {
+    vertical-align: middle;
+}
+
+div.body div.math p {
+    text-align: center;
+}
+
+span.eqno {
+    float: right;
+}
+
+span.eqno a.headerlink {
+    position: absolute;
+    z-index: 1;
+}
+
+div.math:hover a.headerlink {
+    visibility: visible;
+}
+
+/* -- printout stylesheet --------------------------------------------------- */
+
+@media print {
+    div.document,
+    div.documentwrapper,
+    div.bodywrapper {
+        margin: 0 !important;
+        width: 100%;
+    }
+
+    div.sphinxsidebar,
+    div.related,
+    div.footer,
+    #top-link {
+        display: none;
+    }
+}
\ No newline at end of file
diff --git a/docs/docHTMLs/_static/classic.css b/docs/docHTMLs/_static/classic.css
new file mode 100644
index 0000000..5530147
--- /dev/null
+++ b/docs/docHTMLs/_static/classic.css
@@ -0,0 +1,269 @@
+/*
+ * classic.css_t
+ * ~~~~~~~~~~~~~
+ *
+ * Sphinx stylesheet -- classic theme.
+ *
+ * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+@import url("basic.css");
+
+/* -- page layout ----------------------------------------------------------- */
+
+html {
+    /* CSS hack for macOS's scrollbar (see #1125) */
+    background-color: #FFFFFF;
+}
+
+body {
+    font-family: sans-serif;
+    font-size: 100%;
+    background-color: #11303d;
+    color: #000;
+    margin: 0;
+    padding: 0;
+}
+
+div.document {
+    display: flex;
+    background-color: #1c4e63;
+}
+
+div.documentwrapper {
+    float: left;
+    width: 100%;
+}
+
+div.bodywrapper {
+    margin: 0 0 0 230px;
+}
+
+div.body {
+    background-color: #ffffff;
+    color: #000000;
+    padding: 0 20px 30px 20px;
+}
+
+div.footer {
+    color: #ffffff;
+    width: 100%;
+    padding: 9px 0 9px 0;
+    text-align: center;
+    font-size: 75%;
+}
+
+div.footer a {
+    color: #ffffff;
+    text-decoration: underline;
+}
+
+div.related {
+    background-color: #133f52;
+    line-height: 30px;
+    color: #ffffff;
+}
+
+div.related a {
+    color: #ffffff;
+}
+
+div.sphinxsidebar {
+}
+
+div.sphinxsidebar h3 {
+    font-family: 'Trebuchet MS', sans-serif;
+    color: #ffffff;
+    font-size: 1.4em;
+    font-weight: normal;
+    margin: 0;
+    padding: 0;
+}
+
+div.sphinxsidebar h3 a {
+    color: #ffffff;
+}
+
+div.sphinxsidebar h4 {
+    font-family: 'Trebuchet MS', sans-serif;
+    color: #ffffff;
+    font-size: 1.3em;
+    font-weight: normal;
+    margin: 5px 0 0 0;
+    padding: 0;
+}
+
+div.sphinxsidebar p {
+    color: #ffffff;
+}
+
+div.sphinxsidebar p.topless {
+    margin: 5px 10px 10px 10px;
+}
+
+div.sphinxsidebar ul {
+    margin: 10px;
+    padding: 0;
+    color: #ffffff;
+}
+
+div.sphinxsidebar a {
+    color: #98dbcc;
+}
+
+div.sphinxsidebar input {
+    border: 1px solid #98dbcc;
+    font-family: sans-serif;
+    font-size: 1em;
+}
+
+
+
+/* -- hyperlink styles ------------------------------------------------------ */
+
+a {
+    color: #355f7c;
+    text-decoration: none;
+}
+
+a:visited {
+    color: #551a8b;
+    text-decoration: none;
+}
+
+a:hover {
+    text-decoration: underline;
+}
+
+
+
+/* -- body styles ----------------------------------------------------------- */
+
+div.body h1,
+div.body h2,
+div.body h3,
+div.body h4,
+div.body h5,
+div.body h6 {
+    font-family: 'Trebuchet MS', sans-serif;
+    background-color: #f2f2f2;
+    font-weight: normal;
+    color: #20435c;
+    border-bottom: 1px solid #ccc;
+    margin: 20px -20px 10px -20px;
+    padding: 3px 0 3px 10px;
+}
+
+div.body h1 { margin-top: 0; font-size: 200%; }
+div.body h2 { font-size: 160%; }
+div.body h3 { font-size: 140%; }
+div.body h4 { font-size: 120%; }
+div.body h5 { font-size: 110%; }
+div.body h6 { font-size: 100%; }
+
+a.headerlink {
+    color: #c60f0f;
+    font-size: 0.8em;
+    padding: 0 4px 0 4px;
+    text-decoration: none;
+}
+
+a.headerlink:hover {
+    background-color: #c60f0f;
+    color: white;
+}
+
+div.body p, div.body dd, div.body li, div.body blockquote {
+    text-align: justify;
+    line-height: 130%;
+}
+
+div.admonition p.admonition-title + p {
+    display: inline;
+}
+
+div.admonition p {
+    margin-bottom: 5px;
+}
+
+div.admonition pre {
+    margin-bottom: 5px;
+}
+
+div.admonition ul, div.admonition ol {
+    margin-bottom: 5px;
+}
+
+div.note {
+    background-color: #eee;
+    border: 1px solid #ccc;
+}
+
+div.seealso {
+    background-color: #ffc;
+    border: 1px solid #ff6;
+}
+
+nav.contents,
+aside.topic,
+div.topic {
+    background-color: #eee;
+}
+
+div.warning {
+    background-color: #ffe4e4;
+    border: 1px solid #f66;
+}
+
+p.admonition-title {
+    display: inline;
+}
+
+p.admonition-title:after {
+    content: ":";
+}
+
+pre {
+    padding: 5px;
+    background-color: unset;
+    color: unset;
+    line-height: 120%;
+    border: 1px solid #ac9;
+    border-left: none;
+    border-right: none;
+}
+
+code {
+    background-color: #ecf0f3;
+    padding: 0 1px 0 1px;
+    font-size: 0.95em;
+}
+
+th, dl.field-list > dt {
+    background-color: #ede;
+}
+
+.warning code {
+    background: #efc2c2;
+}
+
+.note code {
+    background: #d6d6d6;
+}
+
+.viewcode-back {
+    font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+    background-color: #f4debf;
+    border-top: 1px solid #ac9;
+    border-bottom: 1px solid #ac9;
+}
+
+div.code-block-caption {
+    color: #efefef;
+    background-color: #1c4e63;
+}
\ No newline at end of file
diff --git a/docs/docHTMLs/_static/default.css b/docs/docHTMLs/_static/default.css
new file mode 100644
index 0000000..81b9363
--- /dev/null
+++ b/docs/docHTMLs/_static/default.css
@@ -0,0 +1 @@
+@import url("classic.css");
diff --git a/docs/docHTMLs/_static/doctools.js b/docs/docHTMLs/_static/doctools.js
new file mode 100644
index 0000000..4d67807
--- /dev/null
+++ b/docs/docHTMLs/_static/doctools.js
@@ -0,0 +1,156 @@
+/*
+ * doctools.js
+ * ~~~~~~~~~~~
+ *
+ * Base JavaScript utilities for all Sphinx HTML documentation.
+ *
+ * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+"use strict";
+
+const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([
+  "TEXTAREA",
+  "INPUT",
+  "SELECT",
+  "BUTTON",
+]);
+
+const _ready = (callback) => {
+  if (document.readyState !== "loading") {
+    callback();
+  } else {
+    document.addEventListener("DOMContentLoaded", callback);
+  }
+};
+
+/**
+ * Small JavaScript module for the documentation.
+ */
+const Documentation = {
+  init: () => {
+    Documentation.initDomainIndexTable();
+    Documentation.initOnKeyListeners();
+  },
+
+  /**
+   * i18n support
+   */
+  TRANSLATIONS: {},
+  PLURAL_EXPR: (n) => (n === 1 ? 0 : 1),
+  LOCALE: "unknown",
+
+  // gettext and ngettext don't access this so that the functions
+  // can safely bound to a different name (_ = Documentation.gettext)
+  gettext: (string) => {
+    const translated = Documentation.TRANSLATIONS[string];
+    switch (typeof translated) {
+      case "undefined":
+        return string; // no translation
+      case "string":
+        return translated; // translation exists
+      default:
+        return translated[0]; // (singular, plural) translation tuple exists
+    }
+  },
+
+  ngettext: (singular, plural, n) => {
+    const translated = Documentation.TRANSLATIONS[singular];
+    if (typeof translated !== "undefined")
+      return translated[Documentation.PLURAL_EXPR(n)];
+    return n === 1 ? singular : plural;
+  },
+
+  addTranslations: (catalog) => {
+    Object.assign(Documentation.TRANSLATIONS, catalog.messages);
+    Documentation.PLURAL_EXPR = new Function(
+      "n",
+      `return (${catalog.plural_expr})`
+    );
+    Documentation.LOCALE = catalog.locale;
+  },
+
+  /**
+   * helper function to focus on search bar
+   */
+  focusSearchBar: () => {
+    document.querySelectorAll("input[name=q]")[0]?.focus();
+  },
+
+  /**
+   * Initialise the domain index toggle buttons
+   */
+  initDomainIndexTable: () => {
+    const toggler = (el) => {
+      const idNumber = el.id.substr(7);
+      const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`);
+      if (el.src.substr(-9) === "minus.png") {
+        el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`;
+        toggledRows.forEach((el) => (el.style.display = "none"));
+      } else {
+        el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`;
+        toggledRows.forEach((el) => (el.style.display = ""));
+      }
+    };
+
+    const togglerElements = document.querySelectorAll("img.toggler");
+    togglerElements.forEach((el) =>
+      el.addEventListener("click", (event) => toggler(event.currentTarget))
+    );
+    togglerElements.forEach((el) => (el.style.display = ""));
+    if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler);
+  },
+
+  initOnKeyListeners: () => {
+    // only install a listener if it is really needed
+    if (
+      !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS &&
+      !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS
+    )
+      return;
+
+    document.addEventListener("keydown", (event) => {
+      // bail for input elements
+      if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return;
+      // bail with special keys
+      if (event.altKey || event.ctrlKey || event.metaKey) return;
+
+      if (!event.shiftKey) {
+        switch (event.key) {
+          case "ArrowLeft":
+            if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;
+
+            const prevLink = document.querySelector('link[rel="prev"]');
+            if (prevLink && prevLink.href) {
+              window.location.href = prevLink.href;
+              event.preventDefault();
+            }
+            break;
+          case "ArrowRight":
+            if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;
+
+            const nextLink = document.querySelector('link[rel="next"]');
+            if (nextLink && nextLink.href) {
+              window.location.href = nextLink.href;
+              event.preventDefault();
+            }
+            break;
+        }
+      }
+
+      // some keyboard layouts may need Shift to get /
+      switch (event.key) {
+        case "/":
+          if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break;
+          Documentation.focusSearchBar();
+          event.preventDefault();
+      }
+    });
+  },
+};
+
+// quick alias for translations
+const _ = Documentation.gettext;
+
+_ready(Documentation.init);
diff --git a/docs/docHTMLs/_static/documentation_options.js b/docs/docHTMLs/_static/documentation_options.js
new file mode 100644
index 0000000..5c18e31
--- /dev/null
+++ b/docs/docHTMLs/_static/documentation_options.js
@@ -0,0 +1,13 @@
+const DOCUMENTATION_OPTIONS = {
+    VERSION: 'v0.0.1',
+    LANGUAGE: 'en',
+    COLLAPSE_INDEX: false,
+    BUILDER: 'html',
+    FILE_SUFFIX: '.html',
+    LINK_SUFFIX: '.html',
+    HAS_SOURCE: true,
+    SOURCELINK_SUFFIX: '.txt',
+    NAVIGATION_WITH_KEYS: false,
+    SHOW_SEARCH_SUMMARY: true,
+    ENABLE_SEARCH_SHORTCUTS: true,
+};
\ No newline at end of file
diff --git a/docs/docHTMLs/_static/file.png b/docs/docHTMLs/_static/file.png
new file mode 100644
index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3
GIT binary patch
literal 286
zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7o_e}ChEy=Fo!lJ6#wgPI
zU9-A1=eok}ZEQDX(r(*2tb58m$7=u1ea82H)jeO=^6%fjou57xMW{G_5a*B3{pP}1
zS6~0}?_b_epFayX9PiZV3J_7<*U-z(&Te62!(wS=#r62dj~f93Q(yV3O;UNueM4ey
zPF+*P_cxDwe?L<@A-VUOYxn_?IFqgAjDfX>&K+iC+ZOj{hWM55XBY3QXXIt>UXl5V
zY32J_2KpZQFCE-8U%FHkYESx{HDO9L>%8Dl(|ry6XI@BV%vz@ZVSj$)G){LlpS0qd
r#>Mpuckiw~`|AFW`^Ks}LhH4IH@r-6bi2gBz`)??>gTe~DWM4fp;vuF

literal 0
HcmV?d00001

diff --git a/docs/docHTMLs/_static/language_data.js b/docs/docHTMLs/_static/language_data.js
new file mode 100644
index 0000000..367b8ed
--- /dev/null
+++ b/docs/docHTMLs/_static/language_data.js
@@ -0,0 +1,199 @@
+/*
+ * language_data.js
+ * ~~~~~~~~~~~~~~~~
+ *
+ * This script contains the language-specific data used by searchtools.js,
+ * namely the list of stopwords, stemmer, scorer and splitter.
+ *
+ * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"];
+
+
+/* Non-minified version is copied as a separate JS file, if available */
+
+/**
+ * Porter Stemmer
+ */
+var Stemmer = function() {
+
+  var step2list = {
+    ational: 'ate',
+    tional: 'tion',
+    enci: 'ence',
+    anci: 'ance',
+    izer: 'ize',
+    bli: 'ble',
+    alli: 'al',
+    entli: 'ent',
+    eli: 'e',
+    ousli: 'ous',
+    ization: 'ize',
+    ation: 'ate',
+    ator: 'ate',
+    alism: 'al',
+    iveness: 'ive',
+    fulness: 'ful',
+    ousness: 'ous',
+    aliti: 'al',
+    iviti: 'ive',
+    biliti: 'ble',
+    logi: 'log'
+  };
+
+  var step3list = {
+    icate: 'ic',
+    ative: '',
+    alize: 'al',
+    iciti: 'ic',
+    ical: 'ic',
+    ful: '',
+    ness: ''
+  };
+
+  var c = "[^aeiou]";          // consonant
+  var v = "[aeiouy]";          // vowel
+  var C = c + "[^aeiouy]*";    // consonant sequence
+  var V = v + "[aeiou]*";      // vowel sequence
+
+  var mgr0 = "^(" + C + ")?" + V + C;                      // [C]VC... is m>0
+  var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$";    // [C]VC[V] is m=1
+  var mgr1 = "^(" + C + ")?" + V + C + V + C;              // [C]VCVC... is m>1
+  var s_v   = "^(" + C + ")?" + v;                         // vowel in stem
+
+  this.stemWord = function (w) {
+    var stem;
+    var suffix;
+    var firstch;
+    var origword = w;
+
+    if (w.length < 3)
+      return w;
+
+    var re;
+    var re2;
+    var re3;
+    var re4;
+
+    firstch = w.substr(0,1);
+    if (firstch == "y")
+      w = firstch.toUpperCase() + w.substr(1);
+
+    // Step 1a
+    re = /^(.+?)(ss|i)es$/;
+    re2 = /^(.+?)([^s])s$/;
+
+    if (re.test(w))
+      w = w.replace(re,"$1$2");
+    else if (re2.test(w))
+      w = w.replace(re2,"$1$2");
+
+    // Step 1b
+    re = /^(.+?)eed$/;
+    re2 = /^(.+?)(ed|ing)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      re = new RegExp(mgr0);
+      if (re.test(fp[1])) {
+        re = /.$/;
+        w = w.replace(re,"");
+      }
+    }
+    else if (re2.test(w)) {
+      var fp = re2.exec(w);
+      stem = fp[1];
+      re2 = new RegExp(s_v);
+      if (re2.test(stem)) {
+        w = stem;
+        re2 = /(at|bl|iz)$/;
+        re3 = new RegExp("([^aeiouylsz])\\1$");
+        re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+        if (re2.test(w))
+          w = w + "e";
+        else if (re3.test(w)) {
+          re = /.$/;
+          w = w.replace(re,"");
+        }
+        else if (re4.test(w))
+          w = w + "e";
+      }
+    }
+
+    // Step 1c
+    re = /^(.+?)y$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      re = new RegExp(s_v);
+      if (re.test(stem))
+        w = stem + "i";
+    }
+
+    // Step 2
+    re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      suffix = fp[2];
+      re = new RegExp(mgr0);
+      if (re.test(stem))
+        w = stem + step2list[suffix];
+    }
+
+    // Step 3
+    re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      suffix = fp[2];
+      re = new RegExp(mgr0);
+      if (re.test(stem))
+        w = stem + step3list[suffix];
+    }
+
+    // Step 4
+    re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
+    re2 = /^(.+?)(s|t)(ion)$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      re = new RegExp(mgr1);
+      if (re.test(stem))
+        w = stem;
+    }
+    else if (re2.test(w)) {
+      var fp = re2.exec(w);
+      stem = fp[1] + fp[2];
+      re2 = new RegExp(mgr1);
+      if (re2.test(stem))
+        w = stem;
+    }
+
+    // Step 5
+    re = /^(.+?)e$/;
+    if (re.test(w)) {
+      var fp = re.exec(w);
+      stem = fp[1];
+      re = new RegExp(mgr1);
+      re2 = new RegExp(meq1);
+      re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+      if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
+        w = stem;
+    }
+    re = /ll$/;
+    re2 = new RegExp(mgr1);
+    if (re.test(w) && re2.test(w)) {
+      re = /.$/;
+      w = w.replace(re,"");
+    }
+
+    // and turn initial Y back to y
+    if (firstch == "y")
+      w = firstch.toLowerCase() + w.substr(1);
+    return w;
+  }
+}
+
diff --git a/docs/docHTMLs/_static/minus.png b/docs/docHTMLs/_static/minus.png
new file mode 100644
index 0000000000000000000000000000000000000000..d96755fdaf8bb2214971e0db9c1fd3077d7c419d
GIT binary patch
literal 90
zcmeAS@N?(olHy`uVBq!ia0y~yVBiK}4h9AWhMwaZzZe)86g^!WLn;`PEt(m4((N1$
qT5J54Rote=BCz_OtVqKR4hDwUH)%$B(trFwnmk?oT-G@yGywom%@%0@

literal 0
HcmV?d00001

diff --git a/docs/docHTMLs/_static/plus.png b/docs/docHTMLs/_static/plus.png
new file mode 100644
index 0000000000000000000000000000000000000000..7107cec93a979b9a5f64843235a16651d563ce2d
GIT binary patch
literal 90
zcmeAS@N?(olHy`uVBq!ia0y~yVBiK}4h9AWhMwaZzZe)86g^!WLn;`PEt(m4((N1$
pT5Cj47Kj#R>InVM$K{a2!oZ-bm^kJ02L~3ACQnyCmvv4FO#meY6wUwu

literal 0
HcmV?d00001

diff --git a/docs/docHTMLs/_static/pygments.css b/docs/docHTMLs/_static/pygments.css
new file mode 100644
index 0000000..0d49244
--- /dev/null
+++ b/docs/docHTMLs/_static/pygments.css
@@ -0,0 +1,75 @@
+pre { line-height: 125%; }
+td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #eeffcc; }
+.highlight .c { color: #408090; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #007020; font-weight: bold } /* Keyword */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #007020 } /* Comment.Preproc */
+.highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #333333 } /* Generic.Output */
+.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #007020 } /* Keyword.Pseudo */
+.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #902000 } /* Keyword.Type */
+.highlight .m { color: #208050 } /* Literal.Number */
+.highlight .s { color: #4070a0 } /* Literal.String */
+.highlight .na { color: #4070a0 } /* Name.Attribute */
+.highlight .nb { color: #007020 } /* Name.Builtin */
+.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
+.highlight .no { color: #60add5 } /* Name.Constant */
+.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #007020 } /* Name.Exception */
+.highlight .nf { color: #06287e } /* Name.Function */
+.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
+.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #bb60d5 } /* Name.Variable */
+.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #208050 } /* Literal.Number.Bin */
+.highlight .mf { color: #208050 } /* Literal.Number.Float */
+.highlight .mh { color: #208050 } /* Literal.Number.Hex */
+.highlight .mi { color: #208050 } /* Literal.Number.Integer */
+.highlight .mo { color: #208050 } /* Literal.Number.Oct */
+.highlight .sa { color: #4070a0 } /* Literal.String.Affix */
+.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
+.highlight .sc { color: #4070a0 } /* Literal.String.Char */
+.highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */
+.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
+.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
+.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
+.highlight .sx { color: #c65d09 } /* Literal.String.Other */
+.highlight .sr { color: #235388 } /* Literal.String.Regex */
+.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
+.highlight .ss { color: #517918 } /* Literal.String.Symbol */
+.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #06287e } /* Name.Function.Magic */
+.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
+.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
+.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
+.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */
+.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/docs/docHTMLs/_static/searchtools.js b/docs/docHTMLs/_static/searchtools.js
new file mode 100644
index 0000000..92da3f8
--- /dev/null
+++ b/docs/docHTMLs/_static/searchtools.js
@@ -0,0 +1,619 @@
+/*
+ * searchtools.js
+ * ~~~~~~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilities for the full-text search.
+ *
+ * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+"use strict";
+
+/**
+ * Simple result scoring code.
+ */
+if (typeof Scorer === "undefined") {
+  var Scorer = {
+    // Implement the following function to further tweak the score for each result
+    // The function takes a result array [docname, title, anchor, descr, score, filename]
+    // and returns the new score.
+    /*
+    score: result => {
+      const [docname, title, anchor, descr, score, filename] = result
+      return score
+    },
+    */
+
+    // query matches the full name of an object
+    objNameMatch: 11,
+    // or matches in the last dotted part of the object name
+    objPartialMatch: 6,
+    // Additive scores depending on the priority of the object
+    objPrio: {
+      0: 15, // used to be importantResults
+      1: 5, // used to be objectResults
+      2: -5, // used to be unimportantResults
+    },
+    //  Used when the priority is not in the mapping.
+    objPrioDefault: 0,
+
+    // query found in title
+    title: 15,
+    partialTitle: 7,
+    // query found in terms
+    term: 5,
+    partialTerm: 2,
+  };
+}
+
+const _removeChildren = (element) => {
+  while (element && element.lastChild) element.removeChild(element.lastChild);
+};
+
+/**
+ * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping
+ */
+const _escapeRegExp = (string) =>
+  string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
+
+const _displayItem = (item, searchTerms, highlightTerms) => {
+  const docBuilder = DOCUMENTATION_OPTIONS.BUILDER;
+  const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX;
+  const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX;
+  const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY;
+  const contentRoot = document.documentElement.dataset.content_root;
+
+  const [docName, title, anchor, descr, score, _filename] = item;
+
+  let listItem = document.createElement("li");
+  let requestUrl;
+  let linkUrl;
+  if (docBuilder === "dirhtml") {
+    // dirhtml builder
+    let dirname = docName + "/";
+    if (dirname.match(/\/index\/$/))
+      dirname = dirname.substring(0, dirname.length - 6);
+    else if (dirname === "index/") dirname = "";
+    requestUrl = contentRoot + dirname;
+    linkUrl = requestUrl;
+  } else {
+    // normal html builders
+    requestUrl = contentRoot + docName + docFileSuffix;
+    linkUrl = docName + docLinkSuffix;
+  }
+  let linkEl = listItem.appendChild(document.createElement("a"));
+  linkEl.href = linkUrl + anchor;
+  linkEl.dataset.score = score;
+  linkEl.innerHTML = title;
+  if (descr) {
+    listItem.appendChild(document.createElement("span")).innerHTML =
+      " (" + descr + ")";
+    // highlight search terms in the description
+    if (SPHINX_HIGHLIGHT_ENABLED)  // set in sphinx_highlight.js
+      highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted"));
+  }
+  else if (showSearchSummary)
+    fetch(requestUrl)
+      .then((responseData) => responseData.text())
+      .then((data) => {
+        if (data)
+          listItem.appendChild(
+            Search.makeSearchSummary(data, searchTerms, anchor)
+          );
+        // highlight search terms in the summary
+        if (SPHINX_HIGHLIGHT_ENABLED)  // set in sphinx_highlight.js
+          highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted"));
+      });
+  Search.output.appendChild(listItem);
+};
+const _finishSearch = (resultCount) => {
+  Search.stopPulse();
+  Search.title.innerText = _("Search Results");
+  if (!resultCount)
+    Search.status.innerText = Documentation.gettext(
+      "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories."
+    );
+  else
+    Search.status.innerText = _(
+      "Search finished, found ${resultCount} page(s) matching the search query."
+    ).replace('${resultCount}', resultCount);
+};
+const _displayNextItem = (
+  results,
+  resultCount,
+  searchTerms,
+  highlightTerms,
+) => {
+  // results left, load the summary and display it
+  // this is intended to be dynamic (don't sub resultsCount)
+  if (results.length) {
+    _displayItem(results.pop(), searchTerms, highlightTerms);
+    setTimeout(
+      () => _displayNextItem(results, resultCount, searchTerms, highlightTerms),
+      5
+    );
+  }
+  // search finished, update title and status message
+  else _finishSearch(resultCount);
+};
+// Helper function used by query() to order search results.
+// Each input is an array of [docname, title, anchor, descr, score, filename].
+// Order the results by score (in opposite order of appearance, since the
+// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically.
+const _orderResultsByScoreThenName = (a, b) => {
+  const leftScore = a[4];
+  const rightScore = b[4];
+  if (leftScore === rightScore) {
+    // same score: sort alphabetically
+    const leftTitle = a[1].toLowerCase();
+    const rightTitle = b[1].toLowerCase();
+    if (leftTitle === rightTitle) return 0;
+    return leftTitle > rightTitle ? -1 : 1; // inverted is intentional
+  }
+  return leftScore > rightScore ? 1 : -1;
+};
+
+/**
+ * Default splitQuery function. Can be overridden in ``sphinx.search`` with a
+ * custom function per language.
+ *
+ * The regular expression works by splitting the string on consecutive characters
+ * that are not Unicode letters, numbers, underscores, or emoji characters.
+ * This is the same as ``\W+`` in Python, preserving the surrogate pair area.
+ */
+if (typeof splitQuery === "undefined") {
+  var splitQuery = (query) => query
+      .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu)
+      .filter(term => term)  // remove remaining empty strings
+}
+
+/**
+ * Search Module
+ */
+const Search = {
+  _index: null,
+  _queued_query: null,
+  _pulse_status: -1,
+
+  htmlToText: (htmlString, anchor) => {
+    const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html');
+    for (const removalQuery of [".headerlinks", "script", "style"]) {
+      htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() });
+    }
+    if (anchor) {
+      const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`);
+      if (anchorContent) return anchorContent.textContent;
+
+      console.warn(
+        `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.`
+      );
+    }
+
+    // if anchor not specified or not found, fall back to main content
+    const docContent = htmlElement.querySelector('[role="main"]');
+    if (docContent) return docContent.textContent;
+
+    console.warn(
+      "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template."
+    );
+    return "";
+  },
+
+  init: () => {
+    const query = new URLSearchParams(window.location.search).get("q");
+    document
+      .querySelectorAll('input[name="q"]')
+      .forEach((el) => (el.value = query));
+    if (query) Search.performSearch(query);
+  },
+
+  loadIndex: (url) =>
+    (document.body.appendChild(document.createElement("script")).src = url),
+
+  setIndex: (index) => {
+    Search._index = index;
+    if (Search._queued_query !== null) {
+      const query = Search._queued_query;
+      Search._queued_query = null;
+      Search.query(query);
+    }
+  },
+
+  hasIndex: () => Search._index !== null,
+
+  deferQuery: (query) => (Search._queued_query = query),
+
+  stopPulse: () => (Search._pulse_status = -1),
+
+  startPulse: () => {
+    if (Search._pulse_status >= 0) return;
+
+    const pulse = () => {
+      Search._pulse_status = (Search._pulse_status + 1) % 4;
+      Search.dots.innerText = ".".repeat(Search._pulse_status);
+      if (Search._pulse_status >= 0) window.setTimeout(pulse, 500);
+    };
+    pulse();
+  },
+
+  /**
+   * perform a search for something (or wait until index is loaded)
+   */
+  performSearch: (query) => {
+    // create the required interface elements
+    const searchText = document.createElement("h2");
+    searchText.textContent = _("Searching");
+    const searchSummary = document.createElement("p");
+    searchSummary.classList.add("search-summary");
+    searchSummary.innerText = "";
+    const searchList = document.createElement("ul");
+    searchList.classList.add("search");
+
+    const out = document.getElementById("search-results");
+    Search.title = out.appendChild(searchText);
+    Search.dots = Search.title.appendChild(document.createElement("span"));
+    Search.status = out.appendChild(searchSummary);
+    Search.output = out.appendChild(searchList);
+
+    const searchProgress = document.getElementById("search-progress");
+    // Some themes don't use the search progress node
+    if (searchProgress) {
+      searchProgress.innerText = _("Preparing search...");
+    }
+    Search.startPulse();
+
+    // index already loaded, the browser was quick!
+    if (Search.hasIndex()) Search.query(query);
+    else Search.deferQuery(query);
+  },
+
+  _parseQuery: (query) => {
+    // stem the search terms and add them to the correct list
+    const stemmer = new Stemmer();
+    const searchTerms = new Set();
+    const excludedTerms = new Set();
+    const highlightTerms = new Set();
+    const objectTerms = new Set(splitQuery(query.toLowerCase().trim()));
+    splitQuery(query.trim()).forEach((queryTerm) => {
+      const queryTermLower = queryTerm.toLowerCase();
+
+      // maybe skip this "word"
+      // stopwords array is from language_data.js
+      if (
+        stopwords.indexOf(queryTermLower) !== -1 ||
+        queryTerm.match(/^\d+$/)
+      )
+        return;
+
+      // stem the word
+      let word = stemmer.stemWord(queryTermLower);
+      // select the correct list
+      if (word[0] === "-") excludedTerms.add(word.substr(1));
+      else {
+        searchTerms.add(word);
+        highlightTerms.add(queryTermLower);
+      }
+    });
+
+    if (SPHINX_HIGHLIGHT_ENABLED) {  // set in sphinx_highlight.js
+      localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" "))
+    }
+
+    // console.debug("SEARCH: searching for:");
+    // console.info("required: ", [...searchTerms]);
+    // console.info("excluded: ", [...excludedTerms]);
+
+    return [query, searchTerms, excludedTerms, highlightTerms, objectTerms];
+  },
+
+  /**
+   * execute search (requires search index to be loaded)
+   */
+  _performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => {
+    const filenames = Search._index.filenames;
+    const docNames = Search._index.docnames;
+    const titles = Search._index.titles;
+    const allTitles = Search._index.alltitles;
+    const indexEntries = Search._index.indexentries;
+
+    // Collect multiple result groups to be sorted separately and then ordered.
+    // Each is an array of [docname, title, anchor, descr, score, filename].
+    const normalResults = [];
+    const nonMainIndexResults = [];
+
+    _removeChildren(document.getElementById("search-progress"));
+
+    const queryLower = query.toLowerCase().trim();
+    for (const [title, foundTitles] of Object.entries(allTitles)) {
+      if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) {
+        for (const [file, id] of foundTitles) {
+          let score = Math.round(100 * queryLower.length / title.length)
+          normalResults.push([
+            docNames[file],
+            titles[file] !== title ? `${titles[file]} > ${title}` : title,
+            id !== null ? "#" + id : "",
+            null,
+            score,
+            filenames[file],
+          ]);
+        }
+      }
+    }
+
+    // search for explicit entries in index directives
+    for (const [entry, foundEntries] of Object.entries(indexEntries)) {
+      if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) {
+        for (const [file, id, isMain] of foundEntries) {
+          const score = Math.round(100 * queryLower.length / entry.length);
+          const result = [
+            docNames[file],
+            titles[file],
+            id ? "#" + id : "",
+            null,
+            score,
+            filenames[file],
+          ];
+          if (isMain) {
+            normalResults.push(result);
+          } else {
+            nonMainIndexResults.push(result);
+          }
+        }
+      }
+    }
+
+    // lookup as object
+    objectTerms.forEach((term) =>
+      normalResults.push(...Search.performObjectSearch(term, objectTerms))
+    );
+
+    // lookup as search terms in fulltext
+    normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms));
+
+    // let the scorer override scores with a custom scoring function
+    if (Scorer.score) {
+      normalResults.forEach((item) => (item[4] = Scorer.score(item)));
+      nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item)));
+    }
+
+    // Sort each group of results by score and then alphabetically by name.
+    normalResults.sort(_orderResultsByScoreThenName);
+    nonMainIndexResults.sort(_orderResultsByScoreThenName);
+
+    // Combine the result groups in (reverse) order.
+    // Non-main index entries are typically arbitrary cross-references,
+    // so display them after other results.
+    let results = [...nonMainIndexResults, ...normalResults];
+
+    // remove duplicate search results
+    // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept
+    let seen = new Set();
+    results = results.reverse().reduce((acc, result) => {
+      let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(',');
+      if (!seen.has(resultStr)) {
+        acc.push(result);
+        seen.add(resultStr);
+      }
+      return acc;
+    }, []);
+
+    return results.reverse();
+  },
+
+  query: (query) => {
+    const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query);
+    const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms);
+
+    // for debugging
+    //Search.lastresults = results.slice();  // a copy
+    // console.info("search results:", Search.lastresults);
+
+    // print the results
+    _displayNextItem(results, results.length, searchTerms, highlightTerms);
+  },
+
+  /**
+   * search for object names
+   */
+  performObjectSearch: (object, objectTerms) => {
+    const filenames = Search._index.filenames;
+    const docNames = Search._index.docnames;
+    const objects = Search._index.objects;
+    const objNames = Search._index.objnames;
+    const titles = Search._index.titles;
+
+    const results = [];
+
+    const objectSearchCallback = (prefix, match) => {
+      const name = match[4]
+      const fullname = (prefix ? prefix + "." : "") + name;
+      const fullnameLower = fullname.toLowerCase();
+      if (fullnameLower.indexOf(object) < 0) return;
+
+      let score = 0;
+      const parts = fullnameLower.split(".");
+
+      // check for different match types: exact matches of full name or
+      // "last name" (i.e. last dotted part)
+      if (fullnameLower === object || parts.slice(-1)[0] === object)
+        score += Scorer.objNameMatch;
+      else if (parts.slice(-1)[0].indexOf(object) > -1)
+        score += Scorer.objPartialMatch; // matches in last name
+
+      const objName = objNames[match[1]][2];
+      const title = titles[match[0]];
+
+      // If more than one term searched for, we require other words to be
+      // found in the name/title/description
+      const otherTerms = new Set(objectTerms);
+      otherTerms.delete(object);
+      if (otherTerms.size > 0) {
+        const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase();
+        if (
+          [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0)
+        )
+          return;
+      }
+
+      let anchor = match[3];
+      if (anchor === "") anchor = fullname;
+      else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname;
+
+      const descr = objName + _(", in ") + title;
+
+      // add custom score for some objects according to scorer
+      if (Scorer.objPrio.hasOwnProperty(match[2]))
+        score += Scorer.objPrio[match[2]];
+      else score += Scorer.objPrioDefault;
+
+      results.push([
+        docNames[match[0]],
+        fullname,
+        "#" + anchor,
+        descr,
+        score,
+        filenames[match[0]],
+      ]);
+    };
+    Object.keys(objects).forEach((prefix) =>
+      objects[prefix].forEach((array) =>
+        objectSearchCallback(prefix, array)
+      )
+    );
+    return results;
+  },
+
+  /**
+   * search for full-text terms in the index
+   */
+  performTermsSearch: (searchTerms, excludedTerms) => {
+    // prepare search
+    const terms = Search._index.terms;
+    const titleTerms = Search._index.titleterms;
+    const filenames = Search._index.filenames;
+    const docNames = Search._index.docnames;
+    const titles = Search._index.titles;
+
+    const scoreMap = new Map();
+    const fileMap = new Map();
+
+    // perform the search on the required terms
+    searchTerms.forEach((word) => {
+      const files = [];
+      const arr = [
+        { files: terms[word], score: Scorer.term },
+        { files: titleTerms[word], score: Scorer.title },
+      ];
+      // add support for partial matches
+      if (word.length > 2) {
+        const escapedWord = _escapeRegExp(word);
+        if (!terms.hasOwnProperty(word)) {
+          Object.keys(terms).forEach((term) => {
+            if (term.match(escapedWord))
+              arr.push({ files: terms[term], score: Scorer.partialTerm });
+          });
+        }
+        if (!titleTerms.hasOwnProperty(word)) {
+          Object.keys(titleTerms).forEach((term) => {
+            if (term.match(escapedWord))
+              arr.push({ files: titleTerms[term], score: Scorer.partialTitle });
+          });
+        }
+      }
+
+      // no match but word was a required one
+      if (arr.every((record) => record.files === undefined)) return;
+
+      // found search word in contents
+      arr.forEach((record) => {
+        if (record.files === undefined) return;
+
+        let recordFiles = record.files;
+        if (recordFiles.length === undefined) recordFiles = [recordFiles];
+        files.push(...recordFiles);
+
+        // set score for the word in each file
+        recordFiles.forEach((file) => {
+          if (!scoreMap.has(file)) scoreMap.set(file, {});
+          scoreMap.get(file)[word] = record.score;
+        });
+      });
+
+      // create the mapping
+      files.forEach((file) => {
+        if (!fileMap.has(file)) fileMap.set(file, [word]);
+        else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word);
+      });
+    });
+
+    // now check if the files don't contain excluded terms
+    const results = [];
+    for (const [file, wordList] of fileMap) {
+      // check if all requirements are matched
+
+      // as search terms with length < 3 are discarded
+      const filteredTermCount = [...searchTerms].filter(
+        (term) => term.length > 2
+      ).length;
+      if (
+        wordList.length !== searchTerms.size &&
+        wordList.length !== filteredTermCount
+      )
+        continue;
+
+      // ensure that none of the excluded terms is in the search result
+      if (
+        [...excludedTerms].some(
+          (term) =>
+            terms[term] === file ||
+            titleTerms[term] === file ||
+            (terms[term] || []).includes(file) ||
+            (titleTerms[term] || []).includes(file)
+        )
+      )
+        break;
+
+      // select one (max) score for the file.
+      const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w]));
+      // add result to the result list
+      results.push([
+        docNames[file],
+        titles[file],
+        "",
+        null,
+        score,
+        filenames[file],
+      ]);
+    }
+    return results;
+  },
+
+  /**
+   * helper function to return a node containing the
+   * search summary for a given text. keywords is a list
+   * of stemmed words.
+   */
+  makeSearchSummary: (htmlText, keywords, anchor) => {
+    const text = Search.htmlToText(htmlText, anchor);
+    if (text === "") return null;
+
+    const textLower = text.toLowerCase();
+    const actualStartPosition = [...keywords]
+      .map((k) => textLower.indexOf(k.toLowerCase()))
+      .filter((i) => i > -1)
+      .slice(-1)[0];
+    const startWithContext = Math.max(actualStartPosition - 120, 0);
+
+    const top = startWithContext === 0 ? "" : "...";
+    const tail = startWithContext + 240 < text.length ? "..." : "";
+
+    let summary = document.createElement("p");
+    summary.classList.add("context");
+    summary.textContent = top + text.substr(startWithContext, 240).trim() + tail;
+
+    return summary;
+  },
+};
+
+_ready(Search.init);
diff --git a/docs/docHTMLs/_static/sidebar.js b/docs/docHTMLs/_static/sidebar.js
new file mode 100644
index 0000000..f28c206
--- /dev/null
+++ b/docs/docHTMLs/_static/sidebar.js
@@ -0,0 +1,70 @@
+/*
+ * sidebar.js
+ * ~~~~~~~~~~
+ *
+ * This script makes the Sphinx sidebar collapsible.
+ *
+ * .sphinxsidebar contains .sphinxsidebarwrapper.  This script adds
+ * in .sphixsidebar, after .sphinxsidebarwrapper, the #sidebarbutton
+ * used to collapse and expand the sidebar.
+ *
+ * When the sidebar is collapsed the .sphinxsidebarwrapper is hidden
+ * and the width of the sidebar and the margin-left of the document
+ * are decreased. When the sidebar is expanded the opposite happens.
+ * This script saves a per-browser/per-session cookie used to
+ * remember the position of the sidebar among the pages.
+ * Once the browser is closed the cookie is deleted and the position
+ * reset to the default (expanded).
+ *
+ * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+const initialiseSidebar = () => {
+  
+    
+  
+
+  // global elements used by the functions.
+  const bodyWrapper = document.getElementsByClassName("bodywrapper")[0]
+  const sidebar = document.getElementsByClassName("sphinxsidebar")[0]
+  const sidebarWrapper = document.getElementsByClassName('sphinxsidebarwrapper')[0]
+  const sidebarButton = document.getElementById("sidebarbutton")
+  const sidebarArrow = sidebarButton.querySelector('span')
+
+  // for some reason, the document has no sidebar; do not run into errors
+  if (typeof sidebar === "undefined") return;
+
+  const flipArrow = element => element.innerText = (element.innerText === "»") ? "«" : "»"
+
+  const collapse_sidebar = () => {
+    bodyWrapper.style.marginLeft = ".8em";
+    sidebar.style.width = ".8em"
+    sidebarWrapper.style.display = "none"
+    flipArrow(sidebarArrow)
+    sidebarButton.title = _('Expand sidebar')
+    window.localStorage.setItem("sidebar", "collapsed")
+  }
+
+  const expand_sidebar = () => {
+    bodyWrapper.style.marginLeft = ""
+    sidebar.style.removeProperty("width")
+    sidebarWrapper.style.display = ""
+    flipArrow(sidebarArrow)
+    sidebarButton.title = _('Collapse sidebar')
+    window.localStorage.setItem("sidebar", "expanded")
+  }
+
+  sidebarButton.addEventListener("click", () => {
+    (sidebarWrapper.style.display === "none") ? expand_sidebar() : collapse_sidebar()
+  })
+
+  if (!window.localStorage.getItem("sidebar")) return
+  const value = window.localStorage.getItem("sidebar")
+  if (value === "collapsed") collapse_sidebar();
+  else if (value === "expanded") expand_sidebar();
+}
+
+if (document.readyState !== "loading") initialiseSidebar()
+else document.addEventListener("DOMContentLoaded", initialiseSidebar)
\ No newline at end of file
diff --git a/docs/docHTMLs/_static/sphinx_highlight.js b/docs/docHTMLs/_static/sphinx_highlight.js
new file mode 100644
index 0000000..8a96c69
--- /dev/null
+++ b/docs/docHTMLs/_static/sphinx_highlight.js
@@ -0,0 +1,154 @@
+/* Highlighting utilities for Sphinx HTML documentation. */
+"use strict";
+
+const SPHINX_HIGHLIGHT_ENABLED = true
+
+/**
+ * highlight a given string on a node by wrapping it in
+ * span elements with the given class name.
+ */
+const _highlight = (node, addItems, text, className) => {
+  if (node.nodeType === Node.TEXT_NODE) {
+    const val = node.nodeValue;
+    const parent = node.parentNode;
+    const pos = val.toLowerCase().indexOf(text);
+    if (
+      pos >= 0 &&
+      !parent.classList.contains(className) &&
+      !parent.classList.contains("nohighlight")
+    ) {
+      let span;
+
+      const closestNode = parent.closest("body, svg, foreignObject");
+      const isInSVG = closestNode && closestNode.matches("svg");
+      if (isInSVG) {
+        span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
+      } else {
+        span = document.createElement("span");
+        span.classList.add(className);
+      }
+
+      span.appendChild(document.createTextNode(val.substr(pos, text.length)));
+      const rest = document.createTextNode(val.substr(pos + text.length));
+      parent.insertBefore(
+        span,
+        parent.insertBefore(
+          rest,
+          node.nextSibling
+        )
+      );
+      node.nodeValue = val.substr(0, pos);
+      /* There may be more occurrences of search term in this node. So call this
+       * function recursively on the remaining fragment.
+       */
+      _highlight(rest, addItems, text, className);
+
+      if (isInSVG) {
+        const rect = document.createElementNS(
+          "http://www.w3.org/2000/svg",
+          "rect"
+        );
+        const bbox = parent.getBBox();
+        rect.x.baseVal.value = bbox.x;
+        rect.y.baseVal.value = bbox.y;
+        rect.width.baseVal.value = bbox.width;
+        rect.height.baseVal.value = bbox.height;
+        rect.setAttribute("class", className);
+        addItems.push({ parent: parent, target: rect });
+      }
+    }
+  } else if (node.matches && !node.matches("button, select, textarea")) {
+    node.childNodes.forEach((el) => _highlight(el, addItems, text, className));
+  }
+};
+const _highlightText = (thisNode, text, className) => {
+  let addItems = [];
+  _highlight(thisNode, addItems, text, className);
+  addItems.forEach((obj) =>
+    obj.parent.insertAdjacentElement("beforebegin", obj.target)
+  );
+};
+
+/**
+ * Small JavaScript module for the documentation.
+ */
+const SphinxHighlight = {
+
+  /**
+   * highlight the search words provided in localstorage in the text
+   */
+  highlightSearchWords: () => {
+    if (!SPHINX_HIGHLIGHT_ENABLED) return;  // bail if no highlight
+
+    // get and clear terms from localstorage
+    const url = new URL(window.location);
+    const highlight =
+        localStorage.getItem("sphinx_highlight_terms")
+        || url.searchParams.get("highlight")
+        || "";
+    localStorage.removeItem("sphinx_highlight_terms")
+    url.searchParams.delete("highlight");
+    window.history.replaceState({}, "", url);
+
+    // get individual terms from highlight string
+    const terms = highlight.toLowerCase().split(/\s+/).filter(x => x);
+    if (terms.length === 0) return; // nothing to do
+
+    // There should never be more than one element matching "div.body"
+    const divBody = document.querySelectorAll("div.body");
+    const body = divBody.length ? divBody[0] : document.querySelector("body");
+    window.setTimeout(() => {
+      terms.forEach((term) => _highlightText(body, term, "highlighted"));
+    }, 10);
+
+    const searchBox = document.getElementById("searchbox");
+    if (searchBox === null) return;
+    searchBox.appendChild(
+      document
+        .createRange()
+        .createContextualFragment(
+          '<p class="highlight-link">' +
+            '<a href="javascript:SphinxHighlight.hideSearchWords()">' +
+            _("Hide Search Matches") +
+            "</a></p>"
+        )
+    );
+  },
+
+  /**
+   * helper function to hide the search marks again
+   */
+  hideSearchWords: () => {
+    document
+      .querySelectorAll("#searchbox .highlight-link")
+      .forEach((el) => el.remove());
+    document
+      .querySelectorAll("span.highlighted")
+      .forEach((el) => el.classList.remove("highlighted"));
+    localStorage.removeItem("sphinx_highlight_terms")
+  },
+
+  initEscapeListener: () => {
+    // only install a listener if it is really needed
+    if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return;
+
+    document.addEventListener("keydown", (event) => {
+      // bail for input elements
+      if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return;
+      // bail with special keys
+      if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return;
+      if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) {
+        SphinxHighlight.hideSearchWords();
+        event.preventDefault();
+      }
+    });
+  },
+};
+
+_ready(() => {
+  /* Do not call highlightSearchWords() when we are on the search page.
+   * It will highlight words from the *previous* search query.
+   */
+  if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords();
+  SphinxHighlight.initEscapeListener();
+});
diff --git a/docs/docHTMLs/dynamodb.html b/docs/docHTMLs/dynamodb.html
new file mode 100644
index 0000000..c27e9d2
--- /dev/null
+++ b/docs/docHTMLs/dynamodb.html
@@ -0,0 +1,297 @@
+<!DOCTYPE html>
+
+<html lang="en" data-content_root="./">
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
+
+    <title>dynamodb package &#8212; sample v0.0.1 documentation</title>
+    <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
+    <link rel="stylesheet" type="text/css" href="_static/classic.css?v=def86cc0" />
+    
+    <script src="_static/documentation_options.js?v=2fea6348"></script>
+    <script src="_static/doctools.js?v=9a2dae69"></script>
+    <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
+    
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="search.html" />
+    <link rel="next" title="Usage" href="usage.html" />
+    <link rel="prev" title="formulaone" href="modules.html" /> 
+  </head><body>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="usage.html" title="Usage"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="modules.html" title="formulaone"
+             accesskey="P">previous</a> |</li>
+        <li class="nav-item nav-item-0"><a href="index.html">sample v0.0.1 documentation</a> &#187;</li>
+          <li class="nav-item nav-item-1"><a href="modules.html" accesskey="U">formulaone</a> &#187;</li>
+        <li class="nav-item nav-item-this"><a href="">dynamodb package</a></li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body" role="main">
+            
+  <section id="dynamodb-package">
+<h1>dynamodb package<a class="headerlink" href="#dynamodb-package" title="Link to this heading">¶</a></h1>
+<section id="submodules">
+<h2>Submodules<a class="headerlink" href="#submodules" title="Link to this heading">¶</a></h2>
+</section>
+<section id="module-dynamodb.core">
+<span id="dynamodb-core-module"></span><h2>dynamodb.core module<a class="headerlink" href="#module-dynamodb.core" title="Link to this heading">¶</a></h2>
+<dl class="py class">
+<dt class="sig sig-object py" id="dynamodb.core.DecimalEncoder">
+<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">dynamodb.core.</span></span><span class="sig-name descname"><span class="pre">DecimalEncoder</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">skipkeys</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ensure_ascii</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">check_circular</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">allow_nan</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sort_keys</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">indent</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">separators</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">default</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#dynamodb.core.DecimalEncoder" title="Link to this definition">¶</a></dt>
+<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">JSONEncoder</span></code></p>
+<dl class="py method">
+<dt class="sig sig-object py" id="dynamodb.core.DecimalEncoder.default">
+<span class="sig-name descname"><span class="pre">default</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">obj</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#dynamodb.core.DecimalEncoder.default" title="Link to this definition">¶</a></dt>
+<dd><p>Implement this method in a subclass such that it returns
+a serializable object for <code class="docutils literal notranslate"><span class="pre">o</span></code>, or calls the base implementation
+(to raise a <code class="docutils literal notranslate"><span class="pre">TypeError</span></code>).</p>
+<p>For example, to support arbitrary iterators, you could
+implement default like this:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">default</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">o</span><span class="p">):</span>
+    <span class="k">try</span><span class="p">:</span>
+        <span class="n">iterable</span> <span class="o">=</span> <span class="nb">iter</span><span class="p">(</span><span class="n">o</span><span class="p">)</span>
+    <span class="k">except</span> <span class="ne">TypeError</span><span class="p">:</span>
+        <span class="k">pass</span>
+    <span class="k">else</span><span class="p">:</span>
+        <span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="n">iterable</span><span class="p">)</span>
+    <span class="c1"># Let the base class default method raise the TypeError</span>
+    <span class="k">return</span> <span class="n">JSONEncoder</span><span class="o">.</span><span class="n">default</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">o</span><span class="p">)</span>
+</pre></div>
+</div>
+</dd></dl>
+
+</dd></dl>
+
+</section>
+<section id="module-dynamodb.dynamodb_helpers">
+<span id="dynamodb-dynamodb-helpers-module"></span><h2>dynamodb.dynamodb_helpers module<a class="headerlink" href="#module-dynamodb.dynamodb_helpers" title="Link to this heading">¶</a></h2>
+<dl class="py function">
+<dt class="sig sig-object py" id="dynamodb.dynamodb_helpers.get_config">
+<span class="sig-prename descclassname"><span class="pre">dynamodb.dynamodb_helpers.</span></span><span class="sig-name descname"><span class="pre">get_config</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#dynamodb.dynamodb_helpers.get_config" title="Link to this definition">¶</a></dt>
+<dd><p>Reads the configuration file and returns the config object.</p>
+<dl class="simple">
+<dt>Returns:</dt><dd><p>config: The config object.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="dynamodb.dynamodb_helpers.get_dynamodb_resource">
+<span class="sig-prename descclassname"><span class="pre">dynamodb.dynamodb_helpers.</span></span><span class="sig-name descname"><span class="pre">get_dynamodb_resource</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#dynamodb.dynamodb_helpers.get_dynamodb_resource" title="Link to this definition">¶</a></dt>
+<dd><p>Creates a DynamoDB resource using the AWS session.</p>
+<dl class="simple">
+<dt>Returns:</dt><dd><p>dynamo_resource: The DynamoDB resource.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="dynamodb.dynamodb_helpers.get_movie_item">
+<span class="sig-prename descclassname"><span class="pre">dynamodb.dynamodb_helpers.</span></span><span class="sig-name descname"><span class="pre">get_movie_item</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">table</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">year</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">title</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#dynamodb.dynamodb_helpers.get_movie_item" title="Link to this definition">¶</a></dt>
+<dd><p>Gets a movie item from the DynamoDB table.</p>
+<dl class="simple">
+<dt>Args:</dt><dd><p>table: The DynamoDB table resource.
+year: The year of the movie.
+title: The title of the movie.</p>
+</dd>
+<dt>Returns:</dt><dd><p>dict: The movie item.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="dynamodb.dynamodb_helpers.get_movies_table">
+<span class="sig-prename descclassname"><span class="pre">dynamodb.dynamodb_helpers.</span></span><span class="sig-name descname"><span class="pre">get_movies_table</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dynamo_resource</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#dynamodb.dynamodb_helpers.get_movies_table" title="Link to this definition">¶</a></dt>
+<dd><p>Gets the movies table from DynamoDB.</p>
+<dl class="simple">
+<dt>Args:</dt><dd><p>dynamo_resource: The DynamoDB resource.</p>
+</dd>
+<dt>Returns:</dt><dd><p>table: The DynamoDB table resource for movies.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="dynamodb.dynamodb_helpers.get_path_to_data">
+<span class="sig-prename descclassname"><span class="pre">dynamodb.dynamodb_helpers.</span></span><span class="sig-name descname"><span class="pre">get_path_to_data</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#dynamodb.dynamodb_helpers.get_path_to_data" title="Link to this definition">¶</a></dt>
+<dd><p>Return path to data.</p>
+</dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="dynamodb.dynamodb_helpers.get_raw_data_path">
+<span class="sig-prename descclassname"><span class="pre">dynamodb.dynamodb_helpers.</span></span><span class="sig-name descname"><span class="pre">get_raw_data_path</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#dynamodb.dynamodb_helpers.get_raw_data_path" title="Link to this definition">¶</a></dt>
+<dd><p>Return path to raw data.</p>
+</dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="dynamodb.dynamodb_helpers.get_tidy_data_path">
+<span class="sig-prename descclassname"><span class="pre">dynamodb.dynamodb_helpers.</span></span><span class="sig-name descname"><span class="pre">get_tidy_data_path</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#dynamodb.dynamodb_helpers.get_tidy_data_path" title="Link to this definition">¶</a></dt>
+<dd><p>Return path to tidy data.</p>
+</dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="dynamodb.dynamodb_helpers.list_dynamodb_tables">
+<span class="sig-prename descclassname"><span class="pre">dynamodb.dynamodb_helpers.</span></span><span class="sig-name descname"><span class="pre">list_dynamodb_tables</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dynamo_resource</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#dynamodb.dynamodb_helpers.list_dynamodb_tables" title="Link to this definition">¶</a></dt>
+<dd><p>Lists all tables in the DynamoDB resource.</p>
+<dl class="simple">
+<dt>Args:</dt><dd><p>dynamo_resource: The DynamoDB resource.</p>
+</dd>
+<dt>Returns:</dt><dd><p>list: List of table names.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="dynamodb.dynamodb_helpers.query_movies_by_year">
+<span class="sig-prename descclassname"><span class="pre">dynamodb.dynamodb_helpers.</span></span><span class="sig-name descname"><span class="pre">query_movies_by_year</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">table</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">year</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#dynamodb.dynamodb_helpers.query_movies_by_year" title="Link to this definition">¶</a></dt>
+<dd><p>Queries movies by year from the DynamoDB table.</p>
+<dl class="simple">
+<dt>Args:</dt><dd><p>table: The DynamoDB table resource.
+year: The year to query.</p>
+</dd>
+<dt>Returns:</dt><dd><p>list: List of movies for the given year.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="py function">
+<dt class="sig sig-object py" id="dynamodb.dynamodb_helpers.tidy_movie_data">
+<span class="sig-prename descclassname"><span class="pre">dynamodb.dynamodb_helpers.</span></span><span class="sig-name descname"><span class="pre">tidy_movie_data</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">movies</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#dynamodb.dynamodb_helpers.tidy_movie_data" title="Link to this definition">¶</a></dt>
+<dd><p>Transforms the raw movie data into a tidy DataFrame.</p>
+<dl class="simple">
+<dt>Args:</dt><dd><p>movies (list): List of raw movie data.</p>
+</dd>
+<dt>Returns:</dt><dd><p>DataFrame: Tidy DataFrame containing movie data.</p>
+</dd>
+</dl>
+</dd></dl>
+
+</section>
+<section id="dynamodb-load-movies-module">
+<h2>dynamodb.load_movies module<a class="headerlink" href="#dynamodb-load-movies-module" title="Link to this heading">¶</a></h2>
+</section>
+<section id="dynamodb-prepare-data-module">
+<h2>dynamodb.prepare_data module<a class="headerlink" href="#dynamodb-prepare-data-module" title="Link to this heading">¶</a></h2>
+</section>
+<section id="dynamodb-tidy-data-module">
+<h2>dynamodb.tidy_data module<a class="headerlink" href="#dynamodb-tidy-data-module" title="Link to this heading">¶</a></h2>
+</section>
+<section id="module-dynamodb">
+<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-dynamodb" title="Link to this heading">¶</a></h2>
+</section>
+</section>
+
+
+            <div class="clearer"></div>
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+        <div class="sphinxsidebarwrapper">
+  <div>
+    <h3><a href="index.html">Table of Contents</a></h3>
+    <ul>
+<li><a class="reference internal" href="#">dynamodb package</a><ul>
+<li><a class="reference internal" href="#submodules">Submodules</a></li>
+<li><a class="reference internal" href="#module-dynamodb.core">dynamodb.core module</a><ul>
+<li><a class="reference internal" href="#dynamodb.core.DecimalEncoder"><code class="docutils literal notranslate"><span class="pre">DecimalEncoder</span></code></a><ul>
+<li><a class="reference internal" href="#dynamodb.core.DecimalEncoder.default"><code class="docutils literal notranslate"><span class="pre">DecimalEncoder.default()</span></code></a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a class="reference internal" href="#module-dynamodb.dynamodb_helpers">dynamodb.dynamodb_helpers module</a><ul>
+<li><a class="reference internal" href="#dynamodb.dynamodb_helpers.get_config"><code class="docutils literal notranslate"><span class="pre">get_config()</span></code></a></li>
+<li><a class="reference internal" href="#dynamodb.dynamodb_helpers.get_dynamodb_resource"><code class="docutils literal notranslate"><span class="pre">get_dynamodb_resource()</span></code></a></li>
+<li><a class="reference internal" href="#dynamodb.dynamodb_helpers.get_movie_item"><code class="docutils literal notranslate"><span class="pre">get_movie_item()</span></code></a></li>
+<li><a class="reference internal" href="#dynamodb.dynamodb_helpers.get_movies_table"><code class="docutils literal notranslate"><span class="pre">get_movies_table()</span></code></a></li>
+<li><a class="reference internal" href="#dynamodb.dynamodb_helpers.get_path_to_data"><code class="docutils literal notranslate"><span class="pre">get_path_to_data()</span></code></a></li>
+<li><a class="reference internal" href="#dynamodb.dynamodb_helpers.get_raw_data_path"><code class="docutils literal notranslate"><span class="pre">get_raw_data_path()</span></code></a></li>
+<li><a class="reference internal" href="#dynamodb.dynamodb_helpers.get_tidy_data_path"><code class="docutils literal notranslate"><span class="pre">get_tidy_data_path()</span></code></a></li>
+<li><a class="reference internal" href="#dynamodb.dynamodb_helpers.list_dynamodb_tables"><code class="docutils literal notranslate"><span class="pre">list_dynamodb_tables()</span></code></a></li>
+<li><a class="reference internal" href="#dynamodb.dynamodb_helpers.query_movies_by_year"><code class="docutils literal notranslate"><span class="pre">query_movies_by_year()</span></code></a></li>
+<li><a class="reference internal" href="#dynamodb.dynamodb_helpers.tidy_movie_data"><code class="docutils literal notranslate"><span class="pre">tidy_movie_data()</span></code></a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#dynamodb-load-movies-module">dynamodb.load_movies module</a></li>
+<li><a class="reference internal" href="#dynamodb-prepare-data-module">dynamodb.prepare_data module</a></li>
+<li><a class="reference internal" href="#dynamodb-tidy-data-module">dynamodb.tidy_data module</a></li>
+<li><a class="reference internal" href="#module-dynamodb">Module contents</a></li>
+</ul>
+</li>
+</ul>
+
+  </div>
+  <div>
+    <h4>Previous topic</h4>
+    <p class="topless"><a href="modules.html"
+                          title="previous chapter">formulaone</a></p>
+  </div>
+  <div>
+    <h4>Next topic</h4>
+    <p class="topless"><a href="usage.html"
+                          title="next chapter">Usage</a></p>
+  </div>
+  <div role="note" aria-label="source link">
+    <h3>This Page</h3>
+    <ul class="this-page-menu">
+      <li><a href="_sources/dynamodb.rst.txt"
+            rel="nofollow">Show Source</a></li>
+    </ul>
+   </div>
+<search id="searchbox" style="display: none" role="search">
+  <h3 id="searchlabel">Quick search</h3>
+    <div class="searchformwrapper">
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
+      <input type="submit" value="Go" />
+    </form>
+    </div>
+</search>
+<script>document.getElementById('searchbox').style.display = "block"</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="usage.html" title="Usage"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="modules.html" title="formulaone"
+             >previous</a> |</li>
+        <li class="nav-item nav-item-0"><a href="index.html">sample v0.0.1 documentation</a> &#187;</li>
+          <li class="nav-item nav-item-1"><a href="modules.html" >formulaone</a> &#187;</li>
+        <li class="nav-item nav-item-this"><a href="">dynamodb package</a></li> 
+      </ul>
+    </div>
+    <div class="footer" role="contentinfo">
+    &#169; Copyright 2012, Kenneth Reitz.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/docs/docHTMLs/generated/dynamodb.dynamodb_helpers.html b/docs/docHTMLs/generated/dynamodb.dynamodb_helpers.html
new file mode 100644
index 0000000..eba6919
--- /dev/null
+++ b/docs/docHTMLs/generated/dynamodb.dynamodb_helpers.html
@@ -0,0 +1,137 @@
+<!DOCTYPE html>
+
+<html lang="en" data-content_root="../">
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
+
+    <title>dynamodb.dynamodb_helpers &#8212; sample v0.0.1 documentation</title>
+    <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=fa44fd50" />
+    <link rel="stylesheet" type="text/css" href="../_static/classic.css?v=def86cc0" />
+    
+    <script src="../_static/documentation_options.js?v=2fea6348"></script>
+    <script src="../_static/doctools.js?v=9a2dae69"></script>
+    <script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
+    
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="prev" title="API" href="../API.html" /> 
+  </head><body>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="../API.html" title="API"
+             accesskey="P">previous</a> |</li>
+        <li class="nav-item nav-item-0"><a href="../index.html">sample v0.0.1 documentation</a> &#187;</li>
+          <li class="nav-item nav-item-1"><a href="../API.html" accesskey="U">API</a> &#187;</li>
+        <li class="nav-item nav-item-this"><a href="">dynamodb.dynamodb_helpers</a></li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body" role="main">
+            
+  <section id="module-dynamodb.dynamodb_helpers">
+<span id="dynamodb-dynamodb-helpers"></span><h1>dynamodb.dynamodb_helpers<a class="headerlink" href="#module-dynamodb.dynamodb_helpers" title="Link to this heading">¶</a></h1>
+<p class="rubric">Functions</p>
+<table class="autosummary longtable docutils align-default">
+<tbody>
+<tr class="row-odd"><td><p><a class="reference internal" href="../dynamodb.html#dynamodb.dynamodb_helpers.get_config" title="dynamodb.dynamodb_helpers.get_config"><code class="xref py py-obj docutils literal notranslate"><span class="pre">get_config</span></code></a>()</p></td>
+<td><p>Reads the configuration file and returns the config object.</p></td>
+</tr>
+<tr class="row-even"><td><p><a class="reference internal" href="../usage.html#dynamodb.dynamodb_helpers.get_dynamodb_resource" title="dynamodb.dynamodb_helpers.get_dynamodb_resource"><code class="xref py py-obj docutils literal notranslate"><span class="pre">get_dynamodb_resource</span></code></a>()</p></td>
+<td><p>Creates a DynamoDB resource using the AWS session.</p></td>
+</tr>
+<tr class="row-odd"><td><p><a class="reference internal" href="../usage.html#dynamodb.dynamodb_helpers.get_movie_item" title="dynamodb.dynamodb_helpers.get_movie_item"><code class="xref py py-obj docutils literal notranslate"><span class="pre">get_movie_item</span></code></a>(table, year, title)</p></td>
+<td><p>Gets a movie item from the DynamoDB table.</p></td>
+</tr>
+<tr class="row-even"><td><p><a class="reference internal" href="../usage.html#dynamodb.dynamodb_helpers.get_movies_table" title="dynamodb.dynamodb_helpers.get_movies_table"><code class="xref py py-obj docutils literal notranslate"><span class="pre">get_movies_table</span></code></a>(dynamo_resource)</p></td>
+<td><p>Gets the movies table from DynamoDB.</p></td>
+</tr>
+<tr class="row-odd"><td><p><a class="reference internal" href="../usage.html#dynamodb.dynamodb_helpers.get_path_to_data" title="dynamodb.dynamodb_helpers.get_path_to_data"><code class="xref py py-obj docutils literal notranslate"><span class="pre">get_path_to_data</span></code></a>()</p></td>
+<td><p>Return path to data.</p></td>
+</tr>
+<tr class="row-even"><td><p><a class="reference internal" href="../usage.html#dynamodb.dynamodb_helpers.get_raw_data_path" title="dynamodb.dynamodb_helpers.get_raw_data_path"><code class="xref py py-obj docutils literal notranslate"><span class="pre">get_raw_data_path</span></code></a>()</p></td>
+<td><p>Return path to raw data.</p></td>
+</tr>
+<tr class="row-odd"><td><p><a class="reference internal" href="../usage.html#dynamodb.dynamodb_helpers.get_tidy_data_path" title="dynamodb.dynamodb_helpers.get_tidy_data_path"><code class="xref py py-obj docutils literal notranslate"><span class="pre">get_tidy_data_path</span></code></a>()</p></td>
+<td><p>Return path to tidy data.</p></td>
+</tr>
+<tr class="row-even"><td><p><a class="reference internal" href="../usage.html#dynamodb.dynamodb_helpers.list_dynamodb_tables" title="dynamodb.dynamodb_helpers.list_dynamodb_tables"><code class="xref py py-obj docutils literal notranslate"><span class="pre">list_dynamodb_tables</span></code></a>(dynamo_resource)</p></td>
+<td><p>Lists all tables in the DynamoDB resource.</p></td>
+</tr>
+<tr class="row-odd"><td><p><a class="reference internal" href="../usage.html#dynamodb.dynamodb_helpers.query_movies_by_year" title="dynamodb.dynamodb_helpers.query_movies_by_year"><code class="xref py py-obj docutils literal notranslate"><span class="pre">query_movies_by_year</span></code></a>(table, year)</p></td>
+<td><p>Queries movies by year from the DynamoDB table.</p></td>
+</tr>
+<tr class="row-even"><td><p><a class="reference internal" href="../usage.html#dynamodb.dynamodb_helpers.tidy_movie_data" title="dynamodb.dynamodb_helpers.tidy_movie_data"><code class="xref py py-obj docutils literal notranslate"><span class="pre">tidy_movie_data</span></code></a>(movies)</p></td>
+<td><p>Transforms the raw movie data into a tidy DataFrame.</p></td>
+</tr>
+</tbody>
+</table>
+</section>
+
+
+            <div class="clearer"></div>
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+        <div class="sphinxsidebarwrapper">
+  <div>
+    <h4>Previous topic</h4>
+    <p class="topless"><a href="../API.html"
+                          title="previous chapter">API</a></p>
+  </div>
+  <div role="note" aria-label="source link">
+    <h3>This Page</h3>
+    <ul class="this-page-menu">
+      <li><a href="../_sources/generated/dynamodb.dynamodb_helpers.rst.txt"
+            rel="nofollow">Show Source</a></li>
+    </ul>
+   </div>
+<search id="searchbox" style="display: none" role="search">
+  <h3 id="searchlabel">Quick search</h3>
+    <div class="searchformwrapper">
+    <form class="search" action="../search.html" method="get">
+      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
+      <input type="submit" value="Go" />
+    </form>
+    </div>
+</search>
+<script>document.getElementById('searchbox').style.display = "block"</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="../API.html" title="API"
+             >previous</a> |</li>
+        <li class="nav-item nav-item-0"><a href="../index.html">sample v0.0.1 documentation</a> &#187;</li>
+          <li class="nav-item nav-item-1"><a href="../API.html" >API</a> &#187;</li>
+        <li class="nav-item nav-item-this"><a href="">dynamodb.dynamodb_helpers</a></li> 
+      </ul>
+    </div>
+    <div class="footer" role="contentinfo">
+    &#169; Copyright 2012, Kenneth Reitz.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/docs/docHTMLs/generated/ergast.html b/docs/docHTMLs/generated/ergast.html
new file mode 100644
index 0000000..0d2166e
--- /dev/null
+++ b/docs/docHTMLs/generated/ergast.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+
+<html lang="en" data-content_root="../">
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
+
+    <title>Ergast API Interface &#8212; sample v0.0.1 documentation</title>
+    <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=fa44fd50" />
+    <link rel="stylesheet" type="text/css" href="../_static/classic.css?v=def86cc0" />
+    
+    <script src="../_static/documentation_options.js?v=2fea6348"></script>
+    <script src="../_static/doctools.js?v=9a2dae69"></script>
+    <script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
+    
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" /> 
+  </head><body>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="nav-item nav-item-0"><a href="../index.html">sample v0.0.1 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-this"><a href="">Ergast API Interface</a></li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body" role="main">
+            
+  <section id="ergast-api-interface">
+<span id="ergast"></span><h1>Ergast API Interface<a class="headerlink" href="#ergast-api-interface" title="Link to this heading">¶</a></h1>
+<section id="introduction">
+<h2>Introduction<a class="headerlink" href="#introduction" title="Link to this heading">¶</a></h2>
+<p>This module can be used to interface with the Ergast F1 API
+(<a class="reference external" href="https://ergast.com/mrd/">https://ergast.com/mrd/</a>). All Ergast endpoints are supported.</p>
+<p>The <code class="xref py py-class docutils literal notranslate"><span class="pre">Ergast</span></code> object provides access to all API Endpoints of the
+Ergast API.</p>
+<p>The terms of use of Ergast apply (<a class="reference external" href="https://ergast.com/mrd/terms/">https://ergast.com/mrd/terms/</a>).
+Especially take care not to exceed the specified rate limits.
+FastF1 will handle caching and it will try to enforce rate limits where
+possible. Make sure to know what limits apply. For more information on how
+FastF1 handles caching and rate limiting see <span class="xref std std-ref">requests-and-caching</span>.</p>
+</section>
+</section>
+
+
+            <div class="clearer"></div>
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+        <div class="sphinxsidebarwrapper">
+  <div>
+    <h3><a href="../index.html">Table of Contents</a></h3>
+    <ul>
+<li><a class="reference internal" href="#">Ergast API Interface</a><ul>
+<li><a class="reference internal" href="#introduction">Introduction</a></li>
+</ul>
+</li>
+</ul>
+
+  </div>
+  <div role="note" aria-label="source link">
+    <h3>This Page</h3>
+    <ul class="this-page-menu">
+      <li><a href="../_sources/generated/ergast.rst.txt"
+            rel="nofollow">Show Source</a></li>
+    </ul>
+   </div>
+<search id="searchbox" style="display: none" role="search">
+  <h3 id="searchlabel">Quick search</h3>
+    <div class="searchformwrapper">
+    <form class="search" action="../search.html" method="get">
+      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
+      <input type="submit" value="Go" />
+    </form>
+    </div>
+</search>
+<script>document.getElementById('searchbox').style.display = "block"</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="nav-item nav-item-0"><a href="../index.html">sample v0.0.1 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-this"><a href="">Ergast API Interface</a></li> 
+      </ul>
+    </div>
+    <div class="footer" role="contentinfo">
+    &#169; Copyright 2012, Kenneth Reitz.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/docs/docHTMLs/generated/sample.helpers.html b/docs/docHTMLs/generated/sample.helpers.html
new file mode 100644
index 0000000..479bafe
--- /dev/null
+++ b/docs/docHTMLs/generated/sample.helpers.html
@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+
+<html lang="en" data-content_root="../">
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
+
+    <title>sample.helpers &#8212; sample v0.0.1 documentation</title>
+    <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=fa44fd50" />
+    <link rel="stylesheet" type="text/css" href="../_static/classic.css?v=def86cc0" />
+    
+    <script src="../_static/documentation_options.js?v=2fea6348"></script>
+    <script src="../_static/doctools.js?v=9a2dae69"></script>
+    <script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
+    
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" /> 
+  </head><body>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="nav-item nav-item-0"><a href="../index.html">sample v0.0.1 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-this"><a href="">sample.helpers</a></li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body" role="main">
+            
+  <section id="sample-helpers">
+<h1>sample.helpers<a class="headerlink" href="#sample-helpers" title="Link to this heading">¶</a></h1>
+</section>
+
+
+            <div class="clearer"></div>
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+        <div class="sphinxsidebarwrapper">
+  <div role="note" aria-label="source link">
+    <h3>This Page</h3>
+    <ul class="this-page-menu">
+      <li><a href="../_sources/generated/sample.helpers.rst.txt"
+            rel="nofollow">Show Source</a></li>
+    </ul>
+   </div>
+<search id="searchbox" style="display: none" role="search">
+  <h3 id="searchlabel">Quick search</h3>
+    <div class="searchformwrapper">
+    <form class="search" action="../search.html" method="get">
+      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
+      <input type="submit" value="Go" />
+    </form>
+    </div>
+</search>
+<script>document.getElementById('searchbox').style.display = "block"</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="nav-item nav-item-0"><a href="../index.html">sample v0.0.1 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-this"><a href="">sample.helpers</a></li> 
+      </ul>
+    </div>
+    <div class="footer" role="contentinfo">
+    &#169; Copyright 2012, Kenneth Reitz.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/docs/docHTMLs/generated/sample.html b/docs/docHTMLs/generated/sample.html
new file mode 100644
index 0000000..024151f
--- /dev/null
+++ b/docs/docHTMLs/generated/sample.html
@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+
+<html lang="en" data-content_root="../">
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
+
+    <title>sample &#8212; sample v0.0.1 documentation</title>
+    <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=fa44fd50" />
+    <link rel="stylesheet" type="text/css" href="../_static/classic.css?v=def86cc0" />
+    
+    <script src="../_static/documentation_options.js?v=2fea6348"></script>
+    <script src="../_static/doctools.js?v=9a2dae69"></script>
+    <script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
+    
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" /> 
+  </head><body>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="../py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="nav-item nav-item-0"><a href="../index.html">sample v0.0.1 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-this"><a href="">sample</a></li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body" role="main">
+            
+  <section id="sample">
+<h1>sample<a class="headerlink" href="#sample" title="Link to this heading">¶</a></h1>
+</section>
+
+
+            <div class="clearer"></div>
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+        <div class="sphinxsidebarwrapper">
+  <div role="note" aria-label="source link">
+    <h3>This Page</h3>
+    <ul class="this-page-menu">
+      <li><a href="../_sources/generated/sample.rst.txt"
+            rel="nofollow">Show Source</a></li>
+    </ul>
+   </div>
+<search id="searchbox" style="display: none" role="search">
+  <h3 id="searchlabel">Quick search</h3>
+    <div class="searchformwrapper">
+    <form class="search" action="../search.html" method="get">
+      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
+      <input type="submit" value="Go" />
+    </form>
+    </div>
+</search>
+<script>document.getElementById('searchbox').style.display = "block"</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="../py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="nav-item nav-item-0"><a href="../index.html">sample v0.0.1 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-this"><a href="">sample</a></li> 
+      </ul>
+    </div>
+    <div class="footer" role="contentinfo">
+    &#169; Copyright 2012, Kenneth Reitz.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/docs/docHTMLs/genindex.html b/docs/docHTMLs/genindex.html
new file mode 100644
index 0000000..0b1c0d3
--- /dev/null
+++ b/docs/docHTMLs/genindex.html
@@ -0,0 +1,185 @@
+<!DOCTYPE html>
+
+<html lang="en" data-content_root="./">
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Index &#8212; sample v0.0.1 documentation</title>
+    <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
+    <link rel="stylesheet" type="text/css" href="_static/classic.css?v=def86cc0" />
+    
+    <script src="_static/documentation_options.js?v=2fea6348"></script>
+    <script src="_static/doctools.js?v=9a2dae69"></script>
+    <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
+    
+    <link rel="index" title="Index" href="#" />
+    <link rel="search" title="Search" href="search.html" /> 
+  </head><body>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="#" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="nav-item nav-item-0"><a href="index.html">sample v0.0.1 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-this"><a href="">Index</a></li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body" role="main">
+            
+
+<h1 id="index">Index</h1>
+
+<div class="genindex-jumpbox">
+ <a href="#D"><strong>D</strong></a>
+ | <a href="#G"><strong>G</strong></a>
+ | <a href="#L"><strong>L</strong></a>
+ | <a href="#M"><strong>M</strong></a>
+ | <a href="#Q"><strong>Q</strong></a>
+ | <a href="#T"><strong>T</strong></a>
+ 
+</div>
+<h2 id="D">D</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="dynamodb.html#dynamodb.core.DecimalEncoder">DecimalEncoder (class in dynamodb.core)</a>
+</li>
+      <li><a href="dynamodb.html#dynamodb.core.DecimalEncoder.default">default() (dynamodb.core.DecimalEncoder method)</a>
+</li>
+      <li>
+    dynamodb
+
+      <ul>
+        <li><a href="dynamodb.html#module-dynamodb">module</a>
+</li>
+      </ul></li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li>
+    dynamodb.core
+
+      <ul>
+        <li><a href="dynamodb.html#module-dynamodb.core">module</a>
+</li>
+      </ul></li>
+      <li>
+    dynamodb.dynamodb_helpers
+
+      <ul>
+        <li><a href="dynamodb.html#module-dynamodb.dynamodb_helpers">module</a>, <a href="generated/dynamodb.dynamodb_helpers.html#module-dynamodb.dynamodb_helpers">[1]</a>
+</li>
+      </ul></li>
+  </ul></td>
+</tr></table>
+
+<h2 id="G">G</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="dynamodb.html#dynamodb.dynamodb_helpers.get_config">get_config() (in module dynamodb.dynamodb_helpers)</a>
+</li>
+      <li><a href="dynamodb.html#dynamodb.dynamodb_helpers.get_dynamodb_resource">get_dynamodb_resource() (in module dynamodb.dynamodb_helpers)</a>, <a href="usage.html#dynamodb.dynamodb_helpers.get_dynamodb_resource">[1]</a>
+</li>
+      <li><a href="dynamodb.html#dynamodb.dynamodb_helpers.get_movie_item">get_movie_item() (in module dynamodb.dynamodb_helpers)</a>, <a href="usage.html#dynamodb.dynamodb_helpers.get_movie_item">[1]</a>
+</li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="dynamodb.html#dynamodb.dynamodb_helpers.get_movies_table">get_movies_table() (in module dynamodb.dynamodb_helpers)</a>, <a href="usage.html#dynamodb.dynamodb_helpers.get_movies_table">[1]</a>
+</li>
+      <li><a href="dynamodb.html#dynamodb.dynamodb_helpers.get_path_to_data">get_path_to_data() (in module dynamodb.dynamodb_helpers)</a>, <a href="usage.html#dynamodb.dynamodb_helpers.get_path_to_data">[1]</a>
+</li>
+      <li><a href="dynamodb.html#dynamodb.dynamodb_helpers.get_raw_data_path">get_raw_data_path() (in module dynamodb.dynamodb_helpers)</a>, <a href="usage.html#dynamodb.dynamodb_helpers.get_raw_data_path">[1]</a>
+</li>
+      <li><a href="dynamodb.html#dynamodb.dynamodb_helpers.get_tidy_data_path">get_tidy_data_path() (in module dynamodb.dynamodb_helpers)</a>, <a href="usage.html#dynamodb.dynamodb_helpers.get_tidy_data_path">[1]</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="L">L</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="dynamodb.html#dynamodb.dynamodb_helpers.list_dynamodb_tables">list_dynamodb_tables() (in module dynamodb.dynamodb_helpers)</a>, <a href="usage.html#dynamodb.dynamodb_helpers.list_dynamodb_tables">[1]</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="M">M</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li>
+    module
+
+      <ul>
+        <li><a href="dynamodb.html#module-dynamodb">dynamodb</a>
+</li>
+        <li><a href="dynamodb.html#module-dynamodb.core">dynamodb.core</a>
+</li>
+        <li><a href="dynamodb.html#module-dynamodb.dynamodb_helpers">dynamodb.dynamodb_helpers</a>, <a href="generated/dynamodb.dynamodb_helpers.html#module-dynamodb.dynamodb_helpers">[1]</a>
+</li>
+      </ul></li>
+  </ul></td>
+</tr></table>
+
+<h2 id="Q">Q</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="dynamodb.html#dynamodb.dynamodb_helpers.query_movies_by_year">query_movies_by_year() (in module dynamodb.dynamodb_helpers)</a>, <a href="usage.html#dynamodb.dynamodb_helpers.query_movies_by_year">[1]</a>
+</li>
+  </ul></td>
+</tr></table>
+
+<h2 id="T">T</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="dynamodb.html#dynamodb.dynamodb_helpers.tidy_movie_data">tidy_movie_data() (in module dynamodb.dynamodb_helpers)</a>, <a href="usage.html#dynamodb.dynamodb_helpers.tidy_movie_data">[1]</a>
+</li>
+  </ul></td>
+</tr></table>
+
+
+
+            <div class="clearer"></div>
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+        <div class="sphinxsidebarwrapper">
+<search id="searchbox" style="display: none" role="search">
+  <h3 id="searchlabel">Quick search</h3>
+    <div class="searchformwrapper">
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
+      <input type="submit" value="Go" />
+    </form>
+    </div>
+</search>
+<script>document.getElementById('searchbox').style.display = "block"</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="#" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="nav-item nav-item-0"><a href="index.html">sample v0.0.1 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-this"><a href="">Index</a></li> 
+      </ul>
+    </div>
+    <div class="footer" role="contentinfo">
+    &#169; Copyright 2012, Kenneth Reitz.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/docs/docHTMLs/index.html b/docs/docHTMLs/index.html
new file mode 100644
index 0000000..f619320
--- /dev/null
+++ b/docs/docHTMLs/index.html
@@ -0,0 +1,161 @@
+<!DOCTYPE html>
+
+<html lang="en" data-content_root="./">
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
+
+    <title>Welcome to sample’s documentation! &#8212; sample v0.0.1 documentation</title>
+    <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
+    <link rel="stylesheet" type="text/css" href="_static/classic.css?v=def86cc0" />
+    
+    <script src="_static/documentation_options.js?v=2fea6348"></script>
+    <script src="_static/doctools.js?v=9a2dae69"></script>
+    <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
+    
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="search.html" />
+    <link rel="next" title="formulaone" href="modules.html" /> 
+  </head><body>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="modules.html" title="formulaone"
+             accesskey="N">next</a> |</li>
+        <li class="nav-item nav-item-0"><a href="#">sample v0.0.1 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-this"><a href="">Welcome to sample’s documentation!</a></li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body" role="main">
+            
+  <section id="welcome-to-sample-s-documentation">
+<h1>Welcome to sample’s documentation!<a class="headerlink" href="#welcome-to-sample-s-documentation" title="Link to this heading">¶</a></h1>
+<p>Contents:</p>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="modules.html">formulaone</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="dynamodb.html">dynamodb package</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="dynamodb.html#submodules">Submodules</a></li>
+<li class="toctree-l3"><a class="reference internal" href="dynamodb.html#module-dynamodb.core">dynamodb.core module</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="dynamodb.html#dynamodb.core.DecimalEncoder"><code class="docutils literal notranslate"><span class="pre">DecimalEncoder</span></code></a><ul>
+<li class="toctree-l5"><a class="reference internal" href="dynamodb.html#dynamodb.core.DecimalEncoder.default"><code class="docutils literal notranslate"><span class="pre">DecimalEncoder.default()</span></code></a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l3"><a class="reference internal" href="dynamodb.html#module-dynamodb.dynamodb_helpers">dynamodb.dynamodb_helpers module</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="dynamodb.html#dynamodb.dynamodb_helpers.get_config"><code class="docutils literal notranslate"><span class="pre">get_config()</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" href="dynamodb.html#dynamodb.dynamodb_helpers.get_dynamodb_resource"><code class="docutils literal notranslate"><span class="pre">get_dynamodb_resource()</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" href="dynamodb.html#dynamodb.dynamodb_helpers.get_movie_item"><code class="docutils literal notranslate"><span class="pre">get_movie_item()</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" href="dynamodb.html#dynamodb.dynamodb_helpers.get_movies_table"><code class="docutils literal notranslate"><span class="pre">get_movies_table()</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" href="dynamodb.html#dynamodb.dynamodb_helpers.get_path_to_data"><code class="docutils literal notranslate"><span class="pre">get_path_to_data()</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" href="dynamodb.html#dynamodb.dynamodb_helpers.get_raw_data_path"><code class="docutils literal notranslate"><span class="pre">get_raw_data_path()</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" href="dynamodb.html#dynamodb.dynamodb_helpers.get_tidy_data_path"><code class="docutils literal notranslate"><span class="pre">get_tidy_data_path()</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" href="dynamodb.html#dynamodb.dynamodb_helpers.list_dynamodb_tables"><code class="docutils literal notranslate"><span class="pre">list_dynamodb_tables()</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" href="dynamodb.html#dynamodb.dynamodb_helpers.query_movies_by_year"><code class="docutils literal notranslate"><span class="pre">query_movies_by_year()</span></code></a></li>
+<li class="toctree-l4"><a class="reference internal" href="dynamodb.html#dynamodb.dynamodb_helpers.tidy_movie_data"><code class="docutils literal notranslate"><span class="pre">tidy_movie_data()</span></code></a></li>
+</ul>
+</li>
+<li class="toctree-l3"><a class="reference internal" href="dynamodb.html#dynamodb-load-movies-module">dynamodb.load_movies module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="dynamodb.html#dynamodb-prepare-data-module">dynamodb.prepare_data module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="dynamodb.html#dynamodb-tidy-data-module">dynamodb.tidy_data module</a></li>
+<li class="toctree-l3"><a class="reference internal" href="dynamodb.html#module-dynamodb">Module contents</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="usage.html">Usage</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="usage.html#helpers">Helpers</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="usage.html#dynamodb.dynamodb_helpers.get_path_to_data"><code class="docutils literal notranslate"><span class="pre">get_path_to_data()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="usage.html#dynamodb.dynamodb_helpers.get_raw_data_path"><code class="docutils literal notranslate"><span class="pre">get_raw_data_path()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="usage.html#dynamodb.dynamodb_helpers.get_tidy_data_path"><code class="docutils literal notranslate"><span class="pre">get_tidy_data_path()</span></code></a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="usage.html#dynamodb">DynamoDB</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="usage.html#dynamodb.dynamodb_helpers.get_dynamodb_resource"><code class="docutils literal notranslate"><span class="pre">get_dynamodb_resource()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="usage.html#dynamodb.dynamodb_helpers.list_dynamodb_tables"><code class="docutils literal notranslate"><span class="pre">list_dynamodb_tables()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="usage.html#dynamodb.dynamodb_helpers.get_movies_table"><code class="docutils literal notranslate"><span class="pre">get_movies_table()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="usage.html#dynamodb.dynamodb_helpers.get_movie_item"><code class="docutils literal notranslate"><span class="pre">get_movie_item()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="usage.html#dynamodb.dynamodb_helpers.query_movies_by_year"><code class="docutils literal notranslate"><span class="pre">query_movies_by_year()</span></code></a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="usage.html#data-transformation">Data Transformation</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="usage.html#dynamodb.dynamodb_helpers.tidy_movie_data"><code class="docutils literal notranslate"><span class="pre">tidy_movie_data()</span></code></a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="API.html">API</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="generated/dynamodb.dynamodb_helpers.html">dynamodb.dynamodb_helpers</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</section>
+
+
+            <div class="clearer"></div>
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+        <div class="sphinxsidebarwrapper">
+  <div>
+    <h4>Next topic</h4>
+    <p class="topless"><a href="modules.html"
+                          title="next chapter">formulaone</a></p>
+  </div>
+  <div role="note" aria-label="source link">
+    <h3>This Page</h3>
+    <ul class="this-page-menu">
+      <li><a href="_sources/index.rst.txt"
+            rel="nofollow">Show Source</a></li>
+    </ul>
+   </div>
+<search id="searchbox" style="display: none" role="search">
+  <h3 id="searchlabel">Quick search</h3>
+    <div class="searchformwrapper">
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
+      <input type="submit" value="Go" />
+    </form>
+    </div>
+</search>
+<script>document.getElementById('searchbox').style.display = "block"</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="modules.html" title="formulaone"
+             >next</a> |</li>
+        <li class="nav-item nav-item-0"><a href="#">sample v0.0.1 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-this"><a href="">Welcome to sample’s documentation!</a></li> 
+      </ul>
+    </div>
+    <div class="footer" role="contentinfo">
+    &#169; Copyright 2012, Kenneth Reitz.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/docs/docHTMLs/modules.html b/docs/docHTMLs/modules.html
new file mode 100644
index 0000000..37e3eb6
--- /dev/null
+++ b/docs/docHTMLs/modules.html
@@ -0,0 +1,144 @@
+<!DOCTYPE html>
+
+<html lang="en" data-content_root="./">
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
+
+    <title>formulaone &#8212; sample v0.0.1 documentation</title>
+    <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
+    <link rel="stylesheet" type="text/css" href="_static/classic.css?v=def86cc0" />
+    
+    <script src="_static/documentation_options.js?v=2fea6348"></script>
+    <script src="_static/doctools.js?v=9a2dae69"></script>
+    <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
+    
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="search.html" />
+    <link rel="next" title="dynamodb package" href="dynamodb.html" />
+    <link rel="prev" title="Welcome to sample’s documentation!" href="index.html" /> 
+  </head><body>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="dynamodb.html" title="dynamodb package"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="index.html" title="Welcome to sample’s documentation!"
+             accesskey="P">previous</a> |</li>
+        <li class="nav-item nav-item-0"><a href="index.html">sample v0.0.1 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-this"><a href="">formulaone</a></li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body" role="main">
+            
+  <section id="formulaone">
+<h1>formulaone<a class="headerlink" href="#formulaone" title="Link to this heading">¶</a></h1>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="dynamodb.html">dynamodb package</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="dynamodb.html#submodules">Submodules</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dynamodb.html#module-dynamodb.core">dynamodb.core module</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="dynamodb.html#dynamodb.core.DecimalEncoder"><code class="docutils literal notranslate"><span class="pre">DecimalEncoder</span></code></a><ul>
+<li class="toctree-l4"><a class="reference internal" href="dynamodb.html#dynamodb.core.DecimalEncoder.default"><code class="docutils literal notranslate"><span class="pre">DecimalEncoder.default()</span></code></a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="dynamodb.html#module-dynamodb.dynamodb_helpers">dynamodb.dynamodb_helpers module</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="dynamodb.html#dynamodb.dynamodb_helpers.get_config"><code class="docutils literal notranslate"><span class="pre">get_config()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="dynamodb.html#dynamodb.dynamodb_helpers.get_dynamodb_resource"><code class="docutils literal notranslate"><span class="pre">get_dynamodb_resource()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="dynamodb.html#dynamodb.dynamodb_helpers.get_movie_item"><code class="docutils literal notranslate"><span class="pre">get_movie_item()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="dynamodb.html#dynamodb.dynamodb_helpers.get_movies_table"><code class="docutils literal notranslate"><span class="pre">get_movies_table()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="dynamodb.html#dynamodb.dynamodb_helpers.get_path_to_data"><code class="docutils literal notranslate"><span class="pre">get_path_to_data()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="dynamodb.html#dynamodb.dynamodb_helpers.get_raw_data_path"><code class="docutils literal notranslate"><span class="pre">get_raw_data_path()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="dynamodb.html#dynamodb.dynamodb_helpers.get_tidy_data_path"><code class="docutils literal notranslate"><span class="pre">get_tidy_data_path()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="dynamodb.html#dynamodb.dynamodb_helpers.list_dynamodb_tables"><code class="docutils literal notranslate"><span class="pre">list_dynamodb_tables()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="dynamodb.html#dynamodb.dynamodb_helpers.query_movies_by_year"><code class="docutils literal notranslate"><span class="pre">query_movies_by_year()</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal" href="dynamodb.html#dynamodb.dynamodb_helpers.tidy_movie_data"><code class="docutils literal notranslate"><span class="pre">tidy_movie_data()</span></code></a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="dynamodb.html#dynamodb-load-movies-module">dynamodb.load_movies module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dynamodb.html#dynamodb-prepare-data-module">dynamodb.prepare_data module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dynamodb.html#dynamodb-tidy-data-module">dynamodb.tidy_data module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="dynamodb.html#module-dynamodb">Module contents</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</section>
+
+
+            <div class="clearer"></div>
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+        <div class="sphinxsidebarwrapper">
+  <div>
+    <h4>Previous topic</h4>
+    <p class="topless"><a href="index.html"
+                          title="previous chapter">Welcome to sample’s documentation!</a></p>
+  </div>
+  <div>
+    <h4>Next topic</h4>
+    <p class="topless"><a href="dynamodb.html"
+                          title="next chapter">dynamodb package</a></p>
+  </div>
+  <div role="note" aria-label="source link">
+    <h3>This Page</h3>
+    <ul class="this-page-menu">
+      <li><a href="_sources/modules.rst.txt"
+            rel="nofollow">Show Source</a></li>
+    </ul>
+   </div>
+<search id="searchbox" style="display: none" role="search">
+  <h3 id="searchlabel">Quick search</h3>
+    <div class="searchformwrapper">
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
+      <input type="submit" value="Go" />
+    </form>
+    </div>
+</search>
+<script>document.getElementById('searchbox').style.display = "block"</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="dynamodb.html" title="dynamodb package"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="index.html" title="Welcome to sample’s documentation!"
+             >previous</a> |</li>
+        <li class="nav-item nav-item-0"><a href="index.html">sample v0.0.1 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-this"><a href="">formulaone</a></li> 
+      </ul>
+    </div>
+    <div class="footer" role="contentinfo">
+    &#169; Copyright 2012, Kenneth Reitz.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/docs/docHTMLs/objects.inv b/docs/docHTMLs/objects.inv
new file mode 100644
index 0000000..1ecabc8
--- /dev/null
+++ b/docs/docHTMLs/objects.inv
@@ -0,0 +1,8 @@
+# Sphinx inventory version 2
+# Project: sample
+# Version: v0.0.1
+# The remainder of this file is compressed using zlib.
+xڥ��n�0��|
+��Nrͭ@s�!��"�Q��墒�$��5�z}�J�lS^b�:���(%;�ʜ7�C�l�;.G�"��G��/��!��+R�?Q�ԣV�B���~p.s)��VQЀTY�9b��*T
:?�^�A���d��"K�LXS��P�h��ښ����ѡ����k=�x)Lۗ��PϦ�� W��4@UF6�@0���50p�j��'��'�-쒿���E�m6<��]�
+��p~��Wܓ|�V��=�_�/)��'�z��z*CW���� G5���-z7�c�Pe]���ʹt��I7ۗw�H?'܃n�q9�����kv����iL
+Z&
�F���W֘��l6�I"~�V#';���x�ǵ
�p���~#��j���YO��E�:io4���:�*�Y:Sa���3-��	�41�bί�_�6�D*i7$�yX���䠂
\ No newline at end of file
diff --git a/docs/docHTMLs/py-modindex.html b/docs/docHTMLs/py-modindex.html
new file mode 100644
index 0000000..7cf4466
--- /dev/null
+++ b/docs/docHTMLs/py-modindex.html
@@ -0,0 +1,108 @@
+<!DOCTYPE html>
+
+<html lang="en" data-content_root="./">
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Python Module Index &#8212; sample v0.0.1 documentation</title>
+    <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
+    <link rel="stylesheet" type="text/css" href="_static/classic.css?v=def86cc0" />
+    
+    <script src="_static/documentation_options.js?v=2fea6348"></script>
+    <script src="_static/doctools.js?v=9a2dae69"></script>
+    <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
+    
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="search.html" />
+ 
+
+
+  </head><body>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="#" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="nav-item nav-item-0"><a href="index.html">sample v0.0.1 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-this"><a href="">Python Module Index</a></li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body" role="main">
+            
+
+   <h1>Python Module Index</h1>
+
+   <div class="modindex-jumpbox">
+   <a href="#cap-d"><strong>d</strong></a>
+   </div>
+
+   <table class="indextable modindextable">
+     <tr class="pcap"><td></td><td>&#160;</td><td></td></tr>
+     <tr class="cap" id="cap-d"><td></td><td>
+       <strong>d</strong></td><td></td></tr>
+     <tr>
+       <td><img src="_static/minus.png" class="toggler"
+              id="toggle-1" style="display: none" alt="-" /></td>
+       <td>
+       <a href="dynamodb.html#module-dynamodb"><code class="xref">dynamodb</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="dynamodb.html#module-dynamodb.core"><code class="xref">dynamodb.core</code></a></td><td>
+       <em></em></td></tr>
+     <tr class="cg-1">
+       <td></td>
+       <td>&#160;&#160;&#160;
+       <a href="generated/dynamodb.dynamodb_helpers.html#module-dynamodb.dynamodb_helpers"><code class="xref">dynamodb.dynamodb_helpers</code></a></td><td>
+       <em></em></td></tr>
+   </table>
+
+
+            <div class="clearer"></div>
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+        <div class="sphinxsidebarwrapper">
+<search id="searchbox" style="display: none" role="search">
+  <h3 id="searchlabel">Quick search</h3>
+    <div class="searchformwrapper">
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
+      <input type="submit" value="Go" />
+    </form>
+    </div>
+</search>
+<script>document.getElementById('searchbox').style.display = "block"</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="#" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="nav-item nav-item-0"><a href="index.html">sample v0.0.1 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-this"><a href="">Python Module Index</a></li> 
+      </ul>
+    </div>
+    <div class="footer" role="contentinfo">
+    &#169; Copyright 2012, Kenneth Reitz.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/docs/docHTMLs/search.html b/docs/docHTMLs/search.html
new file mode 100644
index 0000000..b711ced
--- /dev/null
+++ b/docs/docHTMLs/search.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html>
+
+<html lang="en" data-content_root="./">
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Search &#8212; sample v0.0.1 documentation</title>
+    <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
+    <link rel="stylesheet" type="text/css" href="_static/classic.css?v=def86cc0" />
+    
+    
+    <script src="_static/documentation_options.js?v=2fea6348"></script>
+    <script src="_static/doctools.js?v=9a2dae69"></script>
+    <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
+    
+    <script src="_static/searchtools.js"></script>
+    <script src="_static/language_data.js"></script>
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="#" />
+    <script src="searchindex.js" defer="defer"></script>
+    <meta name="robots" content="noindex" />
+     
+
+  </head><body>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="nav-item nav-item-0"><a href="index.html">sample v0.0.1 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-this"><a href="">Search</a></li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body" role="main">
+            
+  <h1 id="search-documentation">Search</h1>
+  
+  <noscript>
+  <div class="admonition warning">
+  <p>
+    Please activate JavaScript to enable the search
+    functionality.
+  </p>
+  </div>
+  </noscript>
+  
+  
+  <p>
+    Searching for multiple words only shows matches that contain
+    all words.
+  </p>
+  
+  
+  <form action="" method="get">
+    <input type="text" name="q" aria-labelledby="search-documentation" value="" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
+    <input type="submit" value="search" />
+    <span id="search-progress" style="padding-left: 10px"></span>
+  </form>
+  
+  
+  <div id="search-results"></div>
+  
+
+            <div class="clearer"></div>
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+        <div class="sphinxsidebarwrapper">
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="nav-item nav-item-0"><a href="index.html">sample v0.0.1 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-this"><a href="">Search</a></li> 
+      </ul>
+    </div>
+    <div class="footer" role="contentinfo">
+    &#169; Copyright 2012, Kenneth Reitz.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/docs/docHTMLs/searchindex.js b/docs/docHTMLs/searchindex.js
new file mode 100644
index 0000000..140d5df
--- /dev/null
+++ b/docs/docHTMLs/searchindex.js
@@ -0,0 +1 @@
+Search.setIndex({"alltitles": {"API": [[0, "api"]], "Data Transformation": [[8, "data-transformation"]], "DynamoDB": [[8, "dynamodb"]], "Ergast API Interface": [[3, "ergast-api-interface"]], "Helpers": [[8, "helpers"]], "Introduction": [[3, "introduction"]], "Module contents": [[1, "module-dynamodb"]], "Submodules": [[1, "submodules"]], "Usage": [[8, "usage"]], "Welcome to sample\u2019s documentation!": [[6, "welcome-to-sample-s-documentation"]], "dynamodb package": [[1, "dynamodb-package"]], "dynamodb.core module": [[1, "module-dynamodb.core"]], "dynamodb.dynamodb_helpers": [[2, "module-dynamodb.dynamodb_helpers"]], "dynamodb.dynamodb_helpers module": [[1, "module-dynamodb.dynamodb_helpers"]], "dynamodb.load_movies module": [[1, "dynamodb-load-movies-module"]], "dynamodb.prepare_data module": [[1, "dynamodb-prepare-data-module"]], "dynamodb.tidy_data module": [[1, "dynamodb-tidy-data-module"]], "formulaone": [[7, "formulaone"]], "sample": [[4, "sample"]], "sample.helpers": [[5, "sample-helpers"]]}, "docnames": ["API", "dynamodb", "generated/dynamodb.dynamodb_helpers", "generated/ergast", "generated/sample", "generated/sample.helpers", "index", "modules", "usage"], "envversion": {"sphinx": 61, "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}, "filenames": ["API.rst", "dynamodb.rst", "generated/dynamodb.dynamodb_helpers.rst", "generated/ergast.rst", "generated/sample.rst", "generated/sample.helpers.rst", "index.rst", "modules.rst", "usage.rst"], "indexentries": {"decimalencoder (class in dynamodb.core)": [[1, "dynamodb.core.DecimalEncoder", false]], "default() (dynamodb.core.decimalencoder method)": [[1, "dynamodb.core.DecimalEncoder.default", false]], "dynamodb": [[1, "module-dynamodb", false]], "dynamodb.core": [[1, "module-dynamodb.core", false]], "dynamodb.dynamodb_helpers": [[1, "module-dynamodb.dynamodb_helpers", false], [2, "module-dynamodb.dynamodb_helpers", false]], "get_config() (in module dynamodb.dynamodb_helpers)": [[1, "dynamodb.dynamodb_helpers.get_config", false]], "get_dynamodb_resource() (in module dynamodb.dynamodb_helpers)": [[1, "dynamodb.dynamodb_helpers.get_dynamodb_resource", false], [8, "dynamodb.dynamodb_helpers.get_dynamodb_resource", false]], "get_movie_item() (in module dynamodb.dynamodb_helpers)": [[1, "dynamodb.dynamodb_helpers.get_movie_item", false], [8, "dynamodb.dynamodb_helpers.get_movie_item", false]], "get_movies_table() (in module dynamodb.dynamodb_helpers)": [[1, "dynamodb.dynamodb_helpers.get_movies_table", false], [8, "dynamodb.dynamodb_helpers.get_movies_table", false]], "get_path_to_data() (in module dynamodb.dynamodb_helpers)": [[1, "dynamodb.dynamodb_helpers.get_path_to_data", false], [8, "dynamodb.dynamodb_helpers.get_path_to_data", false]], "get_raw_data_path() (in module dynamodb.dynamodb_helpers)": [[1, "dynamodb.dynamodb_helpers.get_raw_data_path", false], [8, "dynamodb.dynamodb_helpers.get_raw_data_path", false]], "get_tidy_data_path() (in module dynamodb.dynamodb_helpers)": [[1, "dynamodb.dynamodb_helpers.get_tidy_data_path", false], [8, "dynamodb.dynamodb_helpers.get_tidy_data_path", false]], "list_dynamodb_tables() (in module dynamodb.dynamodb_helpers)": [[1, "dynamodb.dynamodb_helpers.list_dynamodb_tables", false], [8, "dynamodb.dynamodb_helpers.list_dynamodb_tables", false]], "module": [[1, "module-dynamodb", false], [1, "module-dynamodb.core", false], [1, "module-dynamodb.dynamodb_helpers", false], [2, "module-dynamodb.dynamodb_helpers", false]], "query_movies_by_year() (in module dynamodb.dynamodb_helpers)": [[1, "dynamodb.dynamodb_helpers.query_movies_by_year", false], [8, "dynamodb.dynamodb_helpers.query_movies_by_year", false]], "tidy_movie_data() (in module dynamodb.dynamodb_helpers)": [[1, "dynamodb.dynamodb_helpers.tidy_movie_data", false], [8, "dynamodb.dynamodb_helpers.tidy_movie_data", false]]}, "objects": {"": [[1, 0, 0, "-", "dynamodb"]], "dynamodb": [[1, 0, 0, "-", "core"], [2, 0, 0, "-", "dynamodb_helpers"]], "dynamodb.core": [[1, 1, 1, "", "DecimalEncoder"]], "dynamodb.core.DecimalEncoder": [[1, 2, 1, "", "default"]], "dynamodb.dynamodb_helpers": [[1, 3, 1, "", "get_config"], [8, 3, 1, "", "get_dynamodb_resource"], [8, 3, 1, "", "get_movie_item"], [8, 3, 1, "", "get_movies_table"], [8, 3, 1, "", "get_path_to_data"], [8, 3, 1, "", "get_raw_data_path"], [8, 3, 1, "", "get_tidy_data_path"], [8, 3, 1, "", "list_dynamodb_tables"], [8, 3, 1, "", "query_movies_by_year"], [8, 3, 1, "", "tidy_movie_data"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "function", "Python function"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:function"}, "terms": {"For": [1, 3], "The": [1, 3, 8], "To": 8, "access": 3, "all": [1, 3, 8], "allow_nan": 1, "also": 8, "api": 6, "appli": 3, "ar": 3, "arbitrari": 1, "arg": [1, 8], "aw": [1, 8], "base": 1, "cach": 3, "call": 1, "can": [3, 8], "care": 3, "check_circular": 1, "class": 1, "com": 3, "config": 1, "configur": 1, "contain": [1, 8], "content": [6, 7], "core": [6, 7], "could": 1, "creat": [1, 8], "data": [1, 6], "datafram": [1, 8], "decimalencod": [1, 6, 7], "def": 1, "default": [1, 6, 7], "dict": [1, 8], "dynamo_resourc": [1, 8], "dynamodb": [6, 7], "dynamodb_help": [6, 7, 8], "els": 1, "endpoint": 3, "enforc": 3, "ensure_ascii": 1, "especi": 3, "exampl": 1, "exce": 3, "except": 1, "f1": 3, "fals": 1, "fastf1": 3, "file": 1, "folder": 8, "formulaon": 6, "from": [1, 8], "function": [2, 8], "get": [1, 8], "get_config": [1, 6, 7], "get_dynamodb_resourc": [1, 6, 7, 8], "get_movie_item": [1, 6, 7, 8], "get_movies_t": [1, 6, 7, 8], "get_path_to_data": [1, 6, 7, 8], "get_raw_data_path": [1, 6, 7, 8], "get_tidy_data_path": [1, 6, 7, 8], "given": [1, 8], "handl": 3, "helper": 6, "how": 3, "http": 3, "i": 8, "implement": 1, "indent": 1, "inform": 3, "item": [1, 8], "iter": 1, "jsonencod": 1, "know": 3, "let": 1, "like": 1, "limit": 3, "list": [1, 8], "list_dynamodb_t": [1, 6, 7, 8], "load_movi": [6, 7], "make": 3, "method": 1, "modul": [3, 6, 7], "more": 3, "movi": [1, 8], "mrd": 3, "name": [1, 8], "none": 1, "o": 1, "obj": 1, "object": [1, 3], "packag": [6, 7], "pass": 1, "path": [1, 8], "possibl": 3, "prepare_data": [6, 7], "provid": 3, "queri": [1, 8], "query_movies_by_year": [1, 6, 7, 8], "rais": 1, "rate": 3, "raw": [1, 8], "read": 1, "request": 3, "resourc": [1, 8], "return": [1, 8], "see": 3, "self": 1, "separ": 1, "serializ": 1, "session": [1, 8], "skipkei": 1, "sort_kei": 1, "specif": 8, "specifi": 3, "subclass": 1, "submodul": [6, 7], "support": [1, 3], "sure": 3, "tabl": [1, 8], "take": 3, "term": 3, "thi": [1, 3], "tidi": [1, 8], "tidy_data": [6, 7], "tidy_movie_data": [1, 6, 7, 8], "titl": [1, 8], "transform": [1, 6], "true": 1, "try": [1, 3], "typeerror": 1, "us": [1, 3, 8], "usag": 6, "what": 3, "where": 3, "year": [1, 8], "you": [1, 8]}, "titles": ["API", "dynamodb package", "dynamodb.dynamodb_helpers", "Ergast API Interface", "sample", "sample.helpers", "Welcome to sample\u2019s documentation!", "formulaone", "Usage"], "titleterms": {"": 6, "api": [0, 3], "content": 1, "core": 1, "data": 8, "document": 6, "dynamodb": [1, 2, 8], "dynamodb_help": [1, 2], "ergast": 3, "formulaon": 7, "helper": [5, 8], "interfac": 3, "introduct": 3, "load_movi": 1, "modul": 1, "packag": 1, "prepare_data": 1, "sampl": [4, 5, 6], "submodul": 1, "tidy_data": 1, "transform": 8, "usag": 8, "welcom": 6}})
\ No newline at end of file
diff --git a/docs/docHTMLs/usage.html b/docs/docHTMLs/usage.html
new file mode 100644
index 0000000..5e6bc0e
--- /dev/null
+++ b/docs/docHTMLs/usage.html
@@ -0,0 +1,248 @@
+<!DOCTYPE html>
+
+<html lang="en" data-content_root="./">
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
+
+    <title>Usage &#8212; sample v0.0.1 documentation</title>
+    <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
+    <link rel="stylesheet" type="text/css" href="_static/classic.css?v=def86cc0" />
+    
+    <script src="_static/documentation_options.js?v=2fea6348"></script>
+    <script src="_static/doctools.js?v=9a2dae69"></script>
+    <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
+    
+    <link rel="index" title="Index" href="genindex.html" />
+    <link rel="search" title="Search" href="search.html" />
+    <link rel="next" title="API" href="API.html" />
+    <link rel="prev" title="dynamodb package" href="dynamodb.html" /> 
+  </head><body>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="API.html" title="API"
+             accesskey="N">next</a> |</li>
+        <li class="right" >
+          <a href="dynamodb.html" title="dynamodb package"
+             accesskey="P">previous</a> |</li>
+        <li class="nav-item nav-item-0"><a href="index.html">sample v0.0.1 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-this"><a href="">Usage</a></li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body" role="main">
+            
+  <section id="usage">
+<h1>Usage<a class="headerlink" href="#usage" title="Link to this heading">¶</a></h1>
+<section id="helpers">
+<h2>Helpers<a class="headerlink" href="#helpers" title="Link to this heading">¶</a></h2>
+<p>You can use the <code class="docutils literal notranslate"><span class="pre">dynamodb.dynamodb_helpers.get_path_to_data()</span></code> function:</p>
+<dl class="py function">
+<dt class="sig sig-object py" id="dynamodb.dynamodb_helpers.get_path_to_data">
+<span class="sig-prename descclassname"><span class="pre">dynamodb.dynamodb_helpers.</span></span><span class="sig-name descname"><span class="pre">get_path_to_data</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#dynamodb.dynamodb_helpers.get_path_to_data" title="Link to this definition">¶</a></dt>
+<dd><p>Return path to data.</p>
+</dd></dl>
+
+<p>Raw data folder is returned by <code class="docutils literal notranslate"><span class="pre">dynamodb.dynamodb_helpers.get_raw_data_path()</span></code> function:</p>
+<dl class="py function">
+<dt class="sig sig-object py" id="dynamodb.dynamodb_helpers.get_raw_data_path">
+<span class="sig-prename descclassname"><span class="pre">dynamodb.dynamodb_helpers.</span></span><span class="sig-name descname"><span class="pre">get_raw_data_path</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#dynamodb.dynamodb_helpers.get_raw_data_path" title="Link to this definition">¶</a></dt>
+<dd><p>Return path to raw data.</p>
+</dd></dl>
+
+<p>You can also use the <code class="docutils literal notranslate"><span class="pre">dynamodb.dynamodb_helpers.get_tidy_data_path()</span></code> function:</p>
+<dl class="py function">
+<dt class="sig sig-object py" id="dynamodb.dynamodb_helpers.get_tidy_data_path">
+<span class="sig-prename descclassname"><span class="pre">dynamodb.dynamodb_helpers.</span></span><span class="sig-name descname"><span class="pre">get_tidy_data_path</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#dynamodb.dynamodb_helpers.get_tidy_data_path" title="Link to this definition">¶</a></dt>
+<dd><p>Return path to tidy data.</p>
+</dd></dl>
+
+</section>
+<section id="dynamodb">
+<h2>DynamoDB<a class="headerlink" href="#dynamodb" title="Link to this heading">¶</a></h2>
+<p>To create a DynamoDB resource, use the <code class="docutils literal notranslate"><span class="pre">dynamodb.dynamodb_helpers.get_dynamodb_resource</span></code> function:</p>
+<dl class="py function">
+<dt class="sig sig-object py" id="dynamodb.dynamodb_helpers.get_dynamodb_resource">
+<span class="sig-prename descclassname"><span class="pre">dynamodb.dynamodb_helpers.</span></span><span class="sig-name descname"><span class="pre">get_dynamodb_resource</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#dynamodb.dynamodb_helpers.get_dynamodb_resource" title="Link to this definition">¶</a></dt>
+<dd><p>Creates a DynamoDB resource using the AWS session.</p>
+<dl class="simple">
+<dt>Returns:</dt><dd><p>dynamo_resource: The DynamoDB resource.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<p>To list all DynamoDB tables, use the <code class="docutils literal notranslate"><span class="pre">dynamodb.dynamodb_helpers.list_dynamodb_tables</span></code> function:</p>
+<dl class="py function">
+<dt class="sig sig-object py" id="dynamodb.dynamodb_helpers.list_dynamodb_tables">
+<span class="sig-prename descclassname"><span class="pre">dynamodb.dynamodb_helpers.</span></span><span class="sig-name descname"><span class="pre">list_dynamodb_tables</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dynamo_resource</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#dynamodb.dynamodb_helpers.list_dynamodb_tables" title="Link to this definition">¶</a></dt>
+<dd><p>Lists all tables in the DynamoDB resource.</p>
+<dl class="simple">
+<dt>Args:</dt><dd><p>dynamo_resource: The DynamoDB resource.</p>
+</dd>
+<dt>Returns:</dt><dd><p>list: List of table names.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<p>To get the movies table from DynamoDB, use the <code class="docutils literal notranslate"><span class="pre">dynamodb.dynamodb_helpers.get_movies_table</span></code> function:</p>
+<dl class="py function">
+<dt class="sig sig-object py" id="dynamodb.dynamodb_helpers.get_movies_table">
+<span class="sig-prename descclassname"><span class="pre">dynamodb.dynamodb_helpers.</span></span><span class="sig-name descname"><span class="pre">get_movies_table</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">dynamo_resource</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#dynamodb.dynamodb_helpers.get_movies_table" title="Link to this definition">¶</a></dt>
+<dd><p>Gets the movies table from DynamoDB.</p>
+<dl class="simple">
+<dt>Args:</dt><dd><p>dynamo_resource: The DynamoDB resource.</p>
+</dd>
+<dt>Returns:</dt><dd><p>table: The DynamoDB table resource for movies.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<p>To get a specific movie item, use the <code class="docutils literal notranslate"><span class="pre">dynamodb.dynamodb_helpers.get_movie_item</span></code> function:</p>
+<dl class="py function">
+<dt class="sig sig-object py" id="dynamodb.dynamodb_helpers.get_movie_item">
+<span class="sig-prename descclassname"><span class="pre">dynamodb.dynamodb_helpers.</span></span><span class="sig-name descname"><span class="pre">get_movie_item</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">table</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">year</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">title</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#dynamodb.dynamodb_helpers.get_movie_item" title="Link to this definition">¶</a></dt>
+<dd><p>Gets a movie item from the DynamoDB table.</p>
+<dl class="simple">
+<dt>Args:</dt><dd><p>table: The DynamoDB table resource.
+year: The year of the movie.
+title: The title of the movie.</p>
+</dd>
+<dt>Returns:</dt><dd><p>dict: The movie item.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<p>To query movies by year, use the <code class="docutils literal notranslate"><span class="pre">dynamodb.dynamodb_helpers.query_movies_by_year</span></code> function:</p>
+<dl class="py function">
+<dt class="sig sig-object py" id="dynamodb.dynamodb_helpers.query_movies_by_year">
+<span class="sig-prename descclassname"><span class="pre">dynamodb.dynamodb_helpers.</span></span><span class="sig-name descname"><span class="pre">query_movies_by_year</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">table</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">year</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#dynamodb.dynamodb_helpers.query_movies_by_year" title="Link to this definition">¶</a></dt>
+<dd><p>Queries movies by year from the DynamoDB table.</p>
+<dl class="simple">
+<dt>Args:</dt><dd><p>table: The DynamoDB table resource.
+year: The year to query.</p>
+</dd>
+<dt>Returns:</dt><dd><p>list: List of movies for the given year.</p>
+</dd>
+</dl>
+</dd></dl>
+
+</section>
+<section id="data-transformation">
+<h2>Data Transformation<a class="headerlink" href="#data-transformation" title="Link to this heading">¶</a></h2>
+<p>To transform raw movie data into a tidy DataFrame, use the <code class="docutils literal notranslate"><span class="pre">dynamodb.dynamodb_helpers.tidy_movie_data</span></code> function:</p>
+<dl class="py function">
+<dt class="sig sig-object py" id="dynamodb.dynamodb_helpers.tidy_movie_data">
+<span class="sig-prename descclassname"><span class="pre">dynamodb.dynamodb_helpers.</span></span><span class="sig-name descname"><span class="pre">tidy_movie_data</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">movies</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#dynamodb.dynamodb_helpers.tidy_movie_data" title="Link to this definition">¶</a></dt>
+<dd><p>Transforms the raw movie data into a tidy DataFrame.</p>
+<dl class="simple">
+<dt>Args:</dt><dd><p>movies (list): List of raw movie data.</p>
+</dd>
+<dt>Returns:</dt><dd><p>DataFrame: Tidy DataFrame containing movie data.</p>
+</dd>
+</dl>
+</dd></dl>
+
+</section>
+</section>
+
+
+            <div class="clearer"></div>
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+        <div class="sphinxsidebarwrapper">
+  <div>
+    <h3><a href="index.html">Table of Contents</a></h3>
+    <ul>
+<li><a class="reference internal" href="#">Usage</a><ul>
+<li><a class="reference internal" href="#helpers">Helpers</a><ul>
+<li><a class="reference internal" href="#dynamodb.dynamodb_helpers.get_path_to_data"><code class="docutils literal notranslate"><span class="pre">get_path_to_data()</span></code></a></li>
+<li><a class="reference internal" href="#dynamodb.dynamodb_helpers.get_raw_data_path"><code class="docutils literal notranslate"><span class="pre">get_raw_data_path()</span></code></a></li>
+<li><a class="reference internal" href="#dynamodb.dynamodb_helpers.get_tidy_data_path"><code class="docutils literal notranslate"><span class="pre">get_tidy_data_path()</span></code></a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#dynamodb">DynamoDB</a><ul>
+<li><a class="reference internal" href="#dynamodb.dynamodb_helpers.get_dynamodb_resource"><code class="docutils literal notranslate"><span class="pre">get_dynamodb_resource()</span></code></a></li>
+<li><a class="reference internal" href="#dynamodb.dynamodb_helpers.list_dynamodb_tables"><code class="docutils literal notranslate"><span class="pre">list_dynamodb_tables()</span></code></a></li>
+<li><a class="reference internal" href="#dynamodb.dynamodb_helpers.get_movies_table"><code class="docutils literal notranslate"><span class="pre">get_movies_table()</span></code></a></li>
+<li><a class="reference internal" href="#dynamodb.dynamodb_helpers.get_movie_item"><code class="docutils literal notranslate"><span class="pre">get_movie_item()</span></code></a></li>
+<li><a class="reference internal" href="#dynamodb.dynamodb_helpers.query_movies_by_year"><code class="docutils literal notranslate"><span class="pre">query_movies_by_year()</span></code></a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#data-transformation">Data Transformation</a><ul>
+<li><a class="reference internal" href="#dynamodb.dynamodb_helpers.tidy_movie_data"><code class="docutils literal notranslate"><span class="pre">tidy_movie_data()</span></code></a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+
+  </div>
+  <div>
+    <h4>Previous topic</h4>
+    <p class="topless"><a href="dynamodb.html"
+                          title="previous chapter">dynamodb package</a></p>
+  </div>
+  <div>
+    <h4>Next topic</h4>
+    <p class="topless"><a href="API.html"
+                          title="next chapter">API</a></p>
+  </div>
+  <div role="note" aria-label="source link">
+    <h3>This Page</h3>
+    <ul class="this-page-menu">
+      <li><a href="_sources/usage.rst.txt"
+            rel="nofollow">Show Source</a></li>
+    </ul>
+   </div>
+<search id="searchbox" style="display: none" role="search">
+  <h3 id="searchlabel">Quick search</h3>
+    <div class="searchformwrapper">
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
+      <input type="submit" value="Go" />
+    </form>
+    </div>
+</search>
+<script>document.getElementById('searchbox').style.display = "block"</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related" role="navigation" aria-label="related navigation">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li class="right" >
+          <a href="py-modindex.html" title="Python Module Index"
+             >modules</a> |</li>
+        <li class="right" >
+          <a href="API.html" title="API"
+             >next</a> |</li>
+        <li class="right" >
+          <a href="dynamodb.html" title="dynamodb package"
+             >previous</a> |</li>
+        <li class="nav-item nav-item-0"><a href="index.html">sample v0.0.1 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-this"><a href="">Usage</a></li> 
+      </ul>
+    </div>
+    <div class="footer" role="contentinfo">
+    &#169; Copyright 2012, Kenneth Reitz.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/docs/dynamodb.rst b/docs/dynamodb.rst
new file mode 100644
index 0000000..356bcf3
--- /dev/null
+++ b/docs/dynamodb.rst
@@ -0,0 +1,53 @@
+dynamodb package
+================
+
+Submodules
+----------
+
+dynamodb.core module
+--------------------
+
+.. automodule:: dynamodb.core
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+dynamodb.dynamodb\_helpers module
+---------------------------------
+
+.. automodule:: dynamodb.dynamodb_helpers
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+dynamodb.load\_movies module
+----------------------------
+
+.. automodule:: dynamodb.load_movies
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+dynamodb.prepare\_data module
+-----------------------------
+
+.. automodule:: dynamodb.prepare_data
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+dynamodb.tidy\_data module
+--------------------------
+
+.. automodule:: dynamodb.tidy_data
+   :members:
+   :undoc-members:
+   :show-inheritance:
+
+Module contents
+---------------
+
+.. automodule:: dynamodb
+   :members:
+   :undoc-members:
+   :show-inheritance:
diff --git a/docs/formulaone.rst b/docs/formulaone.rst
deleted file mode 100644
index 35c40f6..0000000
--- a/docs/formulaone.rst
+++ /dev/null
@@ -1,61 +0,0 @@
-formulaone package
-==================
-
-Submodules
-----------
-
-formulaone.core module
-----------------------
-
-.. automodule:: formulaone.core
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-formulaone.dynamodb\_helpers module
------------------------------------
-
-.. automodule:: formulaone.dynamodb_helpers
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-formulaone.helpers module
--------------------------
-
-.. automodule:: formulaone.helpers
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-formulaone.load\_latest\_race module
-------------------------------------
-
-.. automodule:: formulaone.load_latest_race
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-formulaone.prepare\_data module
--------------------------------
-
-.. automodule:: formulaone.prepare_data
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-formulaone.tidy\_data module
-----------------------------
-
-.. automodule:: formulaone.tidy_data
-   :members:
-   :undoc-members:
-   :show-inheritance:
-
-Module contents
----------------
-
-.. automodule:: formulaone
-   :members:
-   :undoc-members:
-   :show-inheritance:
diff --git a/docs/modules.rst b/docs/modules.rst
index b2a413d..09e5b15 100644
--- a/docs/modules.rst
+++ b/docs/modules.rst
@@ -4,4 +4,4 @@ formulaone
 .. toctree::
    :maxdepth: 4
 
-   formulaone
+   dynamodb
diff --git a/docs/usage.rst b/docs/usage.rst
index bd80d08..ee6f0a6 100644
--- a/docs/usage.rst
+++ b/docs/usage.rst
@@ -2,16 +2,46 @@ Usage
 =====
 
 Helpers
-------------
+-------
 
-you can use the ``formulaone.helpers.get_path_to_data()`` function:
+You can use the ``dynamodb.dynamodb_helpers.get_path_to_data()`` function:
 
-.. autofunction:: formulaone.helpers.get_path_to_data
+.. autofunction:: dynamodb.dynamodb_helpers.get_path_to_data
 
-Raw data folder is returned by ``formulaone.helpers.get_raw_data_path()`` function:
+Raw data folder is returned by ``dynamodb.dynamodb_helpers.get_raw_data_path()`` function:
 
-.. autofunction:: formulaone.helpers.get_raw_data_path
+.. autofunction:: dynamodb.dynamodb_helpers.get_raw_data_path
 
-you can also use the ``formulaone.helpers.get_tidy_data_path()`` function:
+You can also use the ``dynamodb.dynamodb_helpers.get_tidy_data_path()`` function:
 
-.. autofunction:: formulaone.helpers.get_tidy_data_path
\ No newline at end of file
+.. autofunction:: dynamodb.dynamodb_helpers.get_tidy_data_path
+
+DynamoDB
+--------
+
+To create a DynamoDB resource, use the ``dynamodb.dynamodb_helpers.get_dynamodb_resource`` function:
+
+.. autofunction:: dynamodb.dynamodb_helpers.get_dynamodb_resource
+
+To list all DynamoDB tables, use the ``dynamodb.dynamodb_helpers.list_dynamodb_tables`` function:
+
+.. autofunction:: dynamodb.dynamodb_helpers.list_dynamodb_tables
+
+To get the movies table from DynamoDB, use the ``dynamodb.dynamodb_helpers.get_movies_table`` function:
+
+.. autofunction:: dynamodb.dynamodb_helpers.get_movies_table
+
+To get a specific movie item, use the ``dynamodb.dynamodb_helpers.get_movie_item`` function:
+
+.. autofunction:: dynamodb.dynamodb_helpers.get_movie_item
+
+To query movies by year, use the ``dynamodb.dynamodb_helpers.query_movies_by_year`` function:
+
+.. autofunction:: dynamodb.dynamodb_helpers.query_movies_by_year
+
+Data Transformation
+-------------------
+
+To transform raw movie data into a tidy DataFrame, use the ``dynamodb.dynamodb_helpers.tidy_movie_data`` function:
+
+.. autofunction:: dynamodb.dynamodb_helpers.tidy_movie_data
diff --git a/dynamodb/Data/RawData/rawdata.json b/dynamodb/Data/RawData/rawdata.json
new file mode 100644
index 0000000..5e12214
--- /dev/null
+++ b/dynamodb/Data/RawData/rawdata.json
@@ -0,0 +1 @@
+{"year": 1994.0, "info": {"actors": ["Tim Robbins", "Morgan Freeman", "Bob Gunton"], "release_date": "1994-09-10T00:00:00Z", "plot": "Two imprisoned men bond over a number of years, finding solace and eventual redemption through acts of common decency.", "genres": ["Crime", "Drama"], "image_url": "http://ia.media-imdb.com/images/M/MV5BODU4MjU4NjIwNl5BMl5BanBnXkFtZTgwMDU2MjEyMDE@._V1_SX400_.jpg", "directors": ["Frank Darabont"], "rating": 9.3, "rank": 80.0, "running_time_secs": 8520.0}, "title": "The Shawshank Redemption"}
\ No newline at end of file
diff --git a/dynamodb/Data/TidyData/current_race.parquet b/dynamodb/Data/TidyData/current_race.parquet
new file mode 100644
index 0000000000000000000000000000000000000000..1db8f03f3c65cc07c34c580879917c11998990b9
GIT binary patch
literal 9680
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
CGk)0s

literal 0
HcmV?d00001

diff --git a/formulaone/__init__.py b/dynamodb/__init__.py
similarity index 100%
rename from formulaone/__init__.py
rename to dynamodb/__init__.py
diff --git a/dynamodb/core.py b/dynamodb/core.py
new file mode 100644
index 0000000..05ba7a2
--- /dev/null
+++ b/dynamodb/core.py
@@ -0,0 +1,13 @@
+# -*- coding: utf-8 -*-
+
+import json
+from decimal import Decimal
+
+
+# Custom JSON Encoder for Decimal
+class DecimalEncoder(json.JSONEncoder):
+    def default(self, obj):
+        if isinstance(obj, Decimal):
+            return float(obj)
+        return super(DecimalEncoder, self).default(obj)
+    
\ No newline at end of file
diff --git a/formulaone/dynamodb_helpers.py b/dynamodb/dynamodb_helpers.py
similarity index 92%
rename from formulaone/dynamodb_helpers.py
rename to dynamodb/dynamodb_helpers.py
index dc18e09..6c80308 100644
--- a/formulaone/dynamodb_helpers.py
+++ b/dynamodb/dynamodb_helpers.py
@@ -9,6 +9,25 @@ import pandas as pd
 from decimal import Decimal
 
 
+from pathlib import Path
+
+
+def get_path_to_data():
+    """Return path to data."""
+    return Path('Data/')
+
+
+def get_raw_data_path():
+    """Return path to raw data."""
+    return get_path_to_data() / 'RawData'
+
+
+def get_tidy_data_path():
+    """Return path to tidy data."""
+    return get_path_to_data() / 'TidyData'
+
+
+
 def get_config():
     """
     Reads the configuration file and returns the config object.
diff --git a/dynamodb/load_movies.py b/dynamodb/load_movies.py
new file mode 100644
index 0000000..77071f0
--- /dev/null
+++ b/dynamodb/load_movies.py
@@ -0,0 +1,21 @@
+import json
+
+from dynamodb_helpers import *
+from core import DecimalEncoder
+dynamo_resource = get_dynamodb_resource()
+
+movies_table = get_movies_table(dynamo_resource)
+
+movie_item = get_movie_item(movies_table, 1994, "The Shawshank Redemption")
+
+#movies_by_year = query_movies_by_year(movies_table, 1994)
+# Load data from DynamoDB
+raw_data_path = get_raw_data_path()
+raw_data_path.mkdir(parents=True, exist_ok=True)
+
+dec_encoder= DecimalEncoder()
+# Save data in JSON 
+with open(raw_data_path / 'rawdata.json', 'w') as f:
+    json.dump(movie_item, f, cls=dec_encoder)
+
+print(f"Movie data saved to {raw_data_path / 'rawdata.json'}")
\ No newline at end of file
diff --git a/formulaone/prepare_data.py b/dynamodb/prepare_data.py
similarity index 94%
rename from formulaone/prepare_data.py
rename to dynamodb/prepare_data.py
index 61ddfb2..951dbf2 100644
--- a/formulaone/prepare_data.py
+++ b/dynamodb/prepare_data.py
@@ -3,7 +3,7 @@ from numpy import save
 from sklearn.preprocessing import StandardScaler, OneHotEncoder
 from sklearn.compose import ColumnTransformer
 
-from helpers import get_tidy_data_path
+from dynamodb_helpers import get_tidy_data_path
 
 df = pd.read_parquet(get_tidy_data_path() / 'current_race.parquet')
 
diff --git a/dynamodb/tidy_data.py b/dynamodb/tidy_data.py
new file mode 100644
index 0000000..3032d2b
--- /dev/null
+++ b/dynamodb/tidy_data.py
@@ -0,0 +1,20 @@
+import json
+
+from dynamodb_helpers import *
+
+raw_data_path = get_raw_data_path()
+raw_data_path.mkdir(parents=True, exist_ok=True)
+
+tidy_data_path = get_tidy_data_path()
+tidy_data_path.mkdir(parents=True, exist_ok=True)
+
+
+with open(get_raw_data_path() / 'rawdata.json', 'r') as f:
+    movie_item = json.load(f)
+
+if not isinstance(movie_item, list):
+    movie_item = [movie_item]
+
+tidy_movies = tidy_movie_data(movie_item)
+
+tidy_movies.to_parquet(tidy_data_path / 'current_race.parquet')
diff --git a/formulaone/core.py b/formulaone/core.py
deleted file mode 100644
index d76c319..0000000
--- a/formulaone/core.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- coding: utf-8 -*-
-
-
-def get_hmm():
-    """Get a thought."""
-    return 'hmmm...'
diff --git a/formulaone/helpers.py b/formulaone/helpers.py
deleted file mode 100644
index a172cd4..0000000
--- a/formulaone/helpers.py
+++ /dev/null
@@ -1,16 +0,0 @@
-from pathlib import Path
-
-
-def get_path_to_data():
-    """Return path to data."""
-    return Path('Data/')
-
-
-def get_raw_data_path():
-    """Return path to raw data."""
-    return get_path_to_data() / 'RawData'
-
-
-def get_tidy_data_path():
-    """Return path to tidy data."""
-    return get_path_to_data() / 'TidyData'
diff --git a/formulaone/load_latest_race.py b/formulaone/load_latest_race.py
deleted file mode 100644
index eddffc4..0000000
--- a/formulaone/load_latest_race.py
+++ /dev/null
@@ -1,20 +0,0 @@
-import json
-import requests
-
-from helpers import get_raw_data_path
-
-base_url = 'http://ergast.com/api/f1/'
-endpoint = 'current/last/results.json'
-
-
-response = requests.get(
-    url=base_url + endpoint
-)
-
-data = response.json()
-
-raw_data_path = get_raw_data_path()
-raw_data_path.mkdir(parents=True, exist_ok=True)
-
-with open(raw_data_path / 'current.json', 'w') as f:
-    json.dump(data, f)
diff --git a/formulaone/tidy_data.py b/formulaone/tidy_data.py
deleted file mode 100644
index 29caf33..0000000
--- a/formulaone/tidy_data.py
+++ /dev/null
@@ -1,14 +0,0 @@
-import json
-import pandas as pd
-
-from helpers import get_raw_data_path, get_tidy_data_path
-
-tidy_data_path = get_tidy_data_path()
-tidy_data_path.mkdir(parents=True, exist_ok=True)
-
-with open(get_raw_data_path() / 'current.json', 'r') as f:
-    d = json.load(f)
-
-df = pd.json_normalize(d['MRData']['RaceTable']['Races'][0]['Results'])
-
-df.to_parquet(tidy_data_path / 'current_race.parquet')
diff --git a/setup.py b/setup.py
index 8afcb48..b9a2afe 100755
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,5 @@
 # -*- coding: utf-8 -*-
 
-# Learn more: https://github.com/kennethreitz/setup.py
-
 from setuptools import setup, find_packages
 
 
@@ -12,13 +10,13 @@ with open('LICENSE') as f:
     license = f.read()
 
 setup(
-    name='formulaone',
-    version='0.1.1', # increase version by 0.0.1
-    description='Downloads and prepares formula one data',
+    name='dynamodb',
+    version='0.1.2', # increase version by 0.0.1
+    description='Downloads and prepares db movie data',
     long_description=readme,
-    author='Timo Schuerg',
-    author_email='t.schuerg@th-bingen.de',
-    url='https://github.com/kennethreitz/samplemod',
+    author='Safouan Er-Ryfy',
+    author_email='safouan.erryfy@stud.h-da.de',
+    url='https://code.fbi.h-da.de/safouan.erryfy/dynamodb',
     license=license,
     packages=find_packages(exclude=('tests', 'docs'))
 )
diff --git a/tests/test_basic.py b/tests/test_basic.py
index c28980f..013452b 100644
--- a/tests/test_basic.py
+++ b/tests/test_basic.py
@@ -6,7 +6,7 @@ import sys
 sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
 
 #from formulaone.sample.helpers import get_tidy_data_path
-from formulaone.helpers import get_tidy_data_path
+from dynamodb.helpers import get_tidy_data_path
 
 
 import pandas as pd
diff --git a/tests/test_dynamodb.py b/tests/test_dynamodb.py
index 8d47739..883d1f1 100644
--- a/tests/test_dynamodb.py
+++ b/tests/test_dynamodb.py
@@ -12,7 +12,7 @@ module_path = os.path.abspath(os.path.join(os.getcwd(), 'formulaone'))
 sys.path.insert(0, module_path)
 print(sys.path.insert(0, module_path))
 
-from formulaone.dynamodb_helpers import *
+from dynamodb.dynamodb_helpers import *
 
 def test_aws_config_keys():
     """Test the necessary AWS config keys."""
-- 
GitLab