From 2bf13c78be12990e73df4c642f083b91051657e6 Mon Sep 17 00:00:00 2001 From: gwen Date: Thu, 29 Jun 2023 12:12:56 +0200 Subject: [PATCH] docs --- README.md | 10 +- actes-princiers/build-docs.sh | 14 +++ actes-princiers/clean_intermediate_data.sh | 1 + actes-princiers/docs/source/_static/logo.jpg | Bin 0 -> 72126 bytes .../docs/source/coding_standards.rst | 2 +- actes-princiers/docs/source/conf.py | 76 +++++++-------- actes-princiers/docs/source/index.rst | 8 +- .../src/actes_princiers/customcontext.py | 91 ++---------------- .../pipelines/xml_processing/pipeline.py | 17 ++-- actes-princiers/src/requirements.txt | 1 + 10 files changed, 79 insertions(+), 141 deletions(-) create mode 100755 actes-princiers/build-docs.sh create mode 100755 actes-princiers/clean_intermediate_data.sh create mode 100644 actes-princiers/docs/source/_static/logo.jpg diff --git a/README.md b/README.md index 5fb7c35..4268ca9 100644 --- a/README.md +++ b/README.md @@ -19,11 +19,13 @@ A best-practice setup includes initialising git and creating a virtual environme - install kedro `pip install kedro` - Install the packages and libraries `pip install -r src/requirements.txt` +**go to `actes-princiers`'s folder** + Then open a terminal in the `actes-princiers`'s folder and launch jupyter : `kedro jupyter notebook` or start the ipython prompt : `kedro ipython` -## Launching the pipeline +## Launching the pipelines Open a terminal in the `actes-princiers`'s folder and launch kedro @@ -41,6 +43,12 @@ or a search by tags with: `kedro viz` +## Building the docs + +`./build-docs.sh docs` + +the html built doc is `here `_ + ## Developper's rules and guidelines Declare any dependencies in `src/requirements.txt` for `pip` installation. diff --git a/actes-princiers/build-docs.sh b/actes-princiers/build-docs.sh new file mode 100755 index 0000000..d55076e --- /dev/null +++ b/actes-princiers/build-docs.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +set -e + +# Exit script if you try to use an uninitialized variable. +set -o nounset + +action=$1 + +if [ "$action" == "linkcheck" ]; then + sphinx-build -WETan -j auto -D language=en -b linkcheck -d docs/build/doctrees docs/source docs/build/linkcheck +elif [ "$action" == "docs" ]; then + sphinx-build -WETa -j auto -D language=en -b html -d docs/build/doctrees docs/source docs/build/html +fi diff --git a/actes-princiers/clean_intermediate_data.sh b/actes-princiers/clean_intermediate_data.sh new file mode 100755 index 0000000..9caa69c --- /dev/null +++ b/actes-princiers/clean_intermediate_data.sh @@ -0,0 +1 @@ +rm -rf data/02_intermediate/xml/* diff --git a/actes-princiers/docs/source/_static/logo.jpg b/actes-princiers/docs/source/_static/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..20942fdbf3a2e70568ef4f3a362f3d3354a62291 GIT binary patch literal 72126 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

xE@5*r`4W5 z?2TrXLi0~3jo;#_e!xpqQ4@FZp83YTk$BbO{{Wm3RxMCHs+_&xr3mR9>@W3+ps+eA z)g8anh>aIhfkR=@lwiKV1$>d9`1r-$9b89^zb(w)-he}DsE7P|6y&C*B-yAbuQLGY zC8AU$nlYLJ(g1$DW-WzAKsYx(cjwk3(hkHfoSRO(equ?&8+E7FvWr>=1pfdyWylmF zUmtm6=slehL^*zqayp#m+bLT}=!-WEt|y4v``=#}P?3lYyx+?{uqDgD50^#=hzk_y zr95ng^y9w>J&0_ontMFpB(M(Adpl?24Mjk>f0E>szN<0lC$KBah|ne*Y3Kg)j?67h zID+hH?tgeviR(^W)&Ve2<(B&d_Uis|ss&P?tPs|UBVi{Pp-~n(6bbJKHKiWjcLkozMH~eLiScvHgxOWPw3;V&;Y5!w2a}9iX{Nn`+p`UbR`Ec z!oqXm))*faPfs&kdND{%gFwUuy||B=^N3_f0=f6&&Lv{xl6AW^8UFJ`p~!)takqPX zpIfQWn+jC-=jR&c5IY|@lNWg#{{Y+^7XV&O0NZ{#%jyeYP~;+n?eIA=6Ja%gbWXa> zLJk{ik--2nV|drc7)*RuDnWHOJL@*AV8q%NkRDEH?8v|d0CYbG8O?9JBnQIqz>^PK zx&Eg=K;_wWf-D-+@_vYVeyCzl&*oAGQ+{N>mu3z02BGf)esdApNtrF^U8Ln019cK z1@iv@8A!z&*VZao02Ab8?C$~z&}PU&K3kf97}Ti@3(6lRAv03hq}8R@jxeOQgcq~? zesUiaz!Wb#`aZs}L;#$D3qEs|Ejw^yBNPG%@Hfx%it$uJeN7Xr(`a;~%&?hIhJ!2tb>GPYPyAdwI{*vbj3IXIjmz(j{ z9bra|2f)3Z;{eGQW9gf=xkj8`yygQ5e3uufw?T9rD4wY0z5=M0`2PUA#Y+9GL=^9s z`CQ+P&j}FdrjrnN4`NQWoMYR5OpbtU1b@6r0+qE~F-=l-be_H71R|-kjvPQjR6bng zA}R+V?=^K&6+O860Ks7OuknQ80$q{y@qpEf9Sq<8;h<;;rt+uSX?RDRX`_aG^!!~j zd&6y7fu!fc`pGPrIDE5$R3pG%{{Zs>q?<;^iQWOAOHJd&e|Xk3AB1<~3^a5fA9^^r zp($8UamB)peIm!N*La60ZBE5CZyz};!~!?ANiq!wMY^1L%G{`ikao_$oTAX7A~;LW z$2h?7WLeA(u*~N)Ygt}EQv=GX;yuwZNhW2u$^n^4_9SV2hB*gh`51^`_U z>-GNty=LGP2Q zD7)L}$XtM+-MnE3=b&ZvxjM;xL&9NY7(O*M-K%n+{_7)6-WL#Eh!H|*yvDJDbSW0O~7h~s!R z9U|BqeB+Rnj)F~LU?}Q$&i*k1I>T}8ezJWPQ<>z$bR*T*Gc=|hGLy%gL{;W@Mn}#> zLhUFjTpuV+FT?DUPrH*U!)SsnkHgMPa0nDNofDG)QB$i#LE-#$mdJX54*QwuLX9lp zHO?JTP3+#f=OK~vn6&X<&N~6HYL5jKz|_(=R=S73oB&(;l;@9H!Ip9lE9MK<@!u*%d%o2|RvHLxYSO*a|)fOJUm+c7BEv7zzS0+mo<#q*LuTFbQci4HgonRbQI zfzMy8fJUW!V4@8l4tU8Is)qOS{Ny6G(Z;{y>mU_`mr<@+m5}B{m(PFB05Fg!d*7UL zh)8sMpR5Ui%JO(`8BpBqRo&n3H%wGyJsb*=gG@bo=Pd!)8ux+1+7>V0{mv*b>pObM zm`x%yI1~W20I2dV{{Zb` zmLi;QU2~8b4GJB&))A;$)Tg`zK)1;Zr;ay@QOeMSyl|iN%fPKW>#s%Y5f*{z-J!MU z53?3e&@M)CCzo$ta&p`S4m-TBmu@MhDHH?V6l;DcGdn=gHD4*4#n}kC`^PH4d5)(z z1hdxK{GW_VK$VUsyg#jOA>!+G>sZo~P$D1W1c}WyON@!C)v5C{N-P$xvC#$X{_!-a z*m!hd@PJ=pN?_M03Jbj55@uz00LY$K!%~Gk?$F>mO&2{h8IO0rB!R1SH6lu z(LV7`R1_^@UQ(&N;)dV@j4bMWzmJ_1@(hBqBp4I&1=&TzCEruox| z5gm5%g?kWJPjB&zfq<|bKYU{L#H3`2t(>K|oHjWqJQl}(O(otJ6CMCX*17#;{9#y# zK7Xu2j%JHonXeR$hp<&N*2kVB_{VfEbb+o{ul1ZFg+rs=@2ph{OaWlHPS3m?>mK3?&6e>z zrL)(g?cHen7FQ66rd%wfU_Asokp`oj58TOTJZ-RX$%*S&uZJWHifz~6YPXpQQ- ziLcHg;v!RqZ+?igonV`~F)beF^_-b0ztZ{5!J$df-+nMI1C%Yq>(3qX<>=)~tdh51 zPfi$dAW;-zG2GkdtO7_X0vBV)d_88i6+*3(P`(*}%2#r)KuUe#P!r{%$mns%zKl#8 z53$RWcUS8Tq=4~$G81fx80>RZRMa@Tr#GIlXbXXOK3?%bK}heDj8l|`9X|eEKN(`k zwcGyyI1XclNqEF+jL>;M_YD+DH4*Ih->fQz5bPZl?bbDbno)f{Ijmtz9N+Ky!b%_! zLF|T~oN1$C-H)6up$Ai&gP1PSB7b;?MWXt9-t%_dd^pWYN_M=s(XDewP0dgHdDY{q zWp(`Q!A&M2-jjcy&OdTqF0b)%H?Zw>$Z_|b5Q@!in%}HIP93>~!GT-&1Xw>u;}lX4 zw_nZ<%URHhl=r6uXrs*Vn8aT;2X4CI^PEA{1?QW9io}Us(Ejkq1m~FIPU>M!JDAJ0 z<`N5z5#NM6SEu zATE)7jNUQhs&G`lU3ts&awfzEIK*p&;QwWszy!# literal 0 HcmV?d00001 diff --git a/actes-princiers/docs/source/coding_standards.rst b/actes-princiers/docs/source/coding_standards.rst index e940bc4..0c98755 100644 --- a/actes-princiers/docs/source/coding_standards.rst +++ b/actes-princiers/docs/source/coding_standards.rst @@ -11,7 +11,7 @@ Import ordering .. rubric:: Sample -.. block-code:: python +.. code-block:: python from typing import Dict from pathlib import Path diff --git a/actes-princiers/docs/source/conf.py b/actes-princiers/docs/source/conf.py index 683f842..bee65d2 100644 --- a/actes-princiers/docs/source/conf.py +++ b/actes-princiers/docs/source/conf.py @@ -1,27 +1,9 @@ -#!/usr/bin/env python3 - - # actes_princiers documentation build # configuration file, created by sphinx-quickstart. # -# This file is execfile()d with the current directory set to its -# containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# # All configuration values have a default; values that are commented out # serve to show the default. -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# -import re - -from kedro.framework.cli.utils import find_stylesheets - -#from actes_princiers import __version__ as release release = "0.1" # -- Project information ----------------------------------------------------- @@ -30,14 +12,10 @@ project = "actes_princiers" author = "Jean-Damien" # The short X.Y version. -version = re.match(r"^([0-9]+\.[0-9]+).*", release).group(1) +version = "0.1" # -- General configuration --------------------------------------------------- -# If your documentation needs a minimal Sphinx version, state it here. -# -# needs_sphinx = '1.0' - # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. @@ -55,7 +33,7 @@ extensions = [ # enable autosummary plugin (table of contents for modules/classes/class # methods) -autosummary_generate = True +#autosummary_generate = True # Add any paths that contain templates here, relative to this directory. templates_path = ["_templates"] @@ -82,20 +60,34 @@ exclude_patterns = ["_build", "**.ipynb_checkpoints"] # The name of the Pygments (syntax highlighting) style to use. pygments_style = "sphinx" +default_role = 'code' # -- Options for HTML output ------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # -# html_theme = "sphinx_rtd_theme" -html_theme = "bizstyle" +html_theme = "sphinx_rtd_theme" + +html_title = "Actes Princiers" +html_short_title = "Actes Princiers" +html_show_sourcelink = False +html_show_sphinx = False +html_show_copyright = True +html_logo = "_static/logo.jpg" +copyright = '2020, Jean-Damien Genero' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. # -html_theme_options = {"collapse_navigation": False, "style_external_links": True} +html_theme_options = { + "collapse_navigation": False, + "style_external_links": True, + 'display_version': False, + 'logo_only': True, +# 'style_nav_header_background': 'white' + } # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, @@ -199,24 +191,24 @@ todo_include_todos = False nbsphinx_kernel_name = "python3" -def remove_arrows_in_examples(lines): - for i, line in enumerate(lines): - lines[i] = line.replace(">>>", "") +#def remove_arrows_in_examples(lines): +# for i, line in enumerate(lines): +# lines[i] = line.replace(">>>", "") -def autodoc_process_docstring(app, what, name, obj, options, lines): - remove_arrows_in_examples(lines) +#def autodoc_process_docstring(app, what, name, obj, options, lines): +# remove_arrows_in_examples(lines) -def skip(app, what, name, obj, skip, options): - if name == "__init__": - return False - return skip +#def skip(app, what, name, obj, skip, options): +# if name == "__init__": +# return False +# return skip -def setup(app): - app.connect("autodoc-process-docstring", autodoc_process_docstring) - app.connect("autodoc-skip-member", skip) - # add Kedro stylesheets - for stylesheet in find_stylesheets(): - app.add_css_file(stylesheet) +#def setup(app): +# app.connect("autodoc-process-docstring", autodoc_process_docstring) +# app.connect("autodoc-skip-member", skip) +# # add Kedro stylesheets +# for stylesheet in find_stylesheets(): +# app.add_css_file(stylesheet) diff --git a/actes-princiers/docs/source/index.rst b/actes-princiers/docs/source/index.rst index e0632c7..b7955b3 100644 --- a/actes-princiers/docs/source/index.rst +++ b/actes-princiers/docs/source/index.rst @@ -1,5 +1,5 @@ -Documentation technique du projet Actes princiers -==================================================== +Projet Actes Princiers +========================= .. toctree:: :maxdepth: 1 @@ -7,8 +7,6 @@ Documentation technique du projet Actes princiers data coding_standards -Indices and tables -================== +.. rubric:: Index * :ref:`genindex` -* :ref:`search` diff --git a/actes-princiers/src/actes_princiers/customcontext.py b/actes-princiers/src/actes_princiers/customcontext.py index ca60bb0..b2c2fd4 100644 --- a/actes-princiers/src/actes_princiers/customcontext.py +++ b/actes-princiers/src/actes_princiers/customcontext.py @@ -7,9 +7,8 @@ from kedro.pipeline import Pipeline, node, pipeline from actesdataset import XMLDataSet -#from actes_princiers.pipelines.xml_processing.nodes import parse_xsl - def tree(directory, relative_to=None): + "helper that returns a directory tree structure" trees = dict() for path in sorted(directory.rglob("*.xml")): trees[path.stem] = str(path.relative_to(relative_to)) @@ -46,97 +45,27 @@ def house_dataset_loader(catalog): nodes_description.append(node_description) return nodes_description -# TODO : next step, pipeline step -#def create_pipeline(**kwargs) -> Dict[str, Pipeline]: -# """ -# :return: a mapping "pipeline_name", Pipeline() object -# """ -# nodes_description = kwargs['nodes_description'] -# dataset_pipeline = pipeline(nodes_factory(nodes_description)) -# return { -# "__default__": Pipeline( -# dataset_pipeline -# ) -# } - class ProjectContext(KedroContext): project_name = "actes princiers" project_version = "0.1" package_name = "actes_princiers" -# def get_houses_config(self): -# """loading from generic configuration file -# (that is, the global houses `houses.yaml`)""" -# houses_file = self.config_loader.get("houses*") -# return houses_file['houses'] - -# def houses_data_catalog_loader(self): -# "generic houses PartitionedDataSet" -# houses = self.get_houses_config() -# for house in houses: -# house_name = house['name'] -# # FIXME : absolutely not necessary. -# # just retrieve the data's tree directory -## self.custom_catalog.add(house_name, PartitionedDataSet( -## # FIXME put this path in the project's configuration -## dataset=XMLDataSet, -## filename_suffix='.xml')) -# path='data/01_raw/xml/' + house_name, - -# def houses_dataset_factory(self): -# "loads all the datasets corresponding to the programmatically loaded catalogs" -# houses = self.get_houses_config() -# for house in houses: -# house_name = house['name'] -# self._house_dataset_loader(house_name) - -# def house_dataset_loader(self): -# # FIXME : just dataset catalog, not PartitionedCatalog -# # **or** a custom DataSet Catalog that lists -# # copied on the partitionedDataSet -# #input_catalog = self.custom_catalog.load(house_name) -# #for dataset_name, in_catalog_load_func in input_catalog.items(): - -# # FIXME : retrieve root path from config -# # or make an autopath function helper -# data_root_path = Path.cwd() / 'data' / '01_raw' / 'xml' -# # FIXME : remove the str() function here -# for dataset_name, dataset_path in tree(str(data_root_path)).items(): -## for dataset_name, in_catalog_load_func in input_catalog.items(): -## in_catalog_value = in_catalog_load_func() -# # adding programmatically an input catalog entry -## dataset_name = house_name + "_" + dataset_name -# # FIXME : how to set this filename ? -## dataset_path = "data/01_raw/xml/" + house_name + "/" + dataset_name + ".xml" -# -# self.custom_catalog.add(data_set_name=dataset_name, -# data_set=XMLDataSet(filepath=dataset_path), -# replace=True) -# # adding an output catalog entry -# output_dataset_name = + "_output" -# # FIXME pas propre : faire ça avec la pathlib... -# # pas la peine de mettre une extension ".html" ici -# output_dataset_path = dataset_path.replace("01_raw", "02_intermediate") -# self.custom_catalog.add(data_set_name=output_dataset_name, -# data_set=XMLDataSet(filepath=output_dataset_path), -# replace=True) -# # usefull information for the next stage (the pipeline stage) -# self.nodes_description = dict( -# inputs=dataset_name, -# outputs=output_dataset_name, -# name=dataset_name) + def get_houses_config(self): + """loading from generic configuration file + (that is, the global houses `houses.yaml`)""" + houses_file = self.config_loader.get("houses*") + # FIXME : put this in attribute in the context + return houses_file['houses'] def _get_catalog(self, *args, **kwargs): "catalog loader entry point" # loading yaml defined catalogs catalog = super()._get_catalog(*args, **kwargs) # kedro.io.data_catalog.DataCatalog - # si je veux vraiment mettre ça dans le catalog global - # adding houses generic catalog -# self.houses_data_catalog_loader() - # adding the datasets that corresponds to the generic catalogs -# self.houses_dataset_factory() # adding data sets self.nodes_description = house_dataset_loader(catalog) return catalog + def prepare_pipeline_creation(self): + return self.nodes_description + diff --git a/actes-princiers/src/actes_princiers/pipelines/xml_processing/pipeline.py b/actes-princiers/src/actes_princiers/pipelines/xml_processing/pipeline.py index 0c95d30..b48a16b 100755 --- a/actes-princiers/src/actes_princiers/pipelines/xml_processing/pipeline.py +++ b/actes-princiers/src/actes_princiers/pipelines/xml_processing/pipeline.py @@ -3,15 +3,15 @@ from kedro.framework.session import KedroSession from .nodes import parse_xsl +# we need the context here in order to access to prepare_pipeline_creation() with KedroSession.create() as session: context = session.load_context() + # we have to call the catalog attribute, + # because it makes a call to the _get_catalog() of the context method catalog = context.catalog -# print("----------------------------") -# print(context.nodes_description) -# print(catalog.list()) - def nodes_factory(nodes_description): + "nodes creation" nodes = [] for node_description in nodes_description: nodes.append(node( @@ -23,11 +23,6 @@ def nodes_factory(nodes_description): )) return nodes -def pipeline_factory(nodes_description): - return pipeline(nodes_factory(nodes_description)) - - def create_pipeline(**kwargs): - return pipeline(pipeline_factory(context.nodes_description)) - - + "pipeline entry point needed by the global pipeline registry" + return pipeline(nodes_factory(context.prepare_pipeline_creation())) diff --git a/actes-princiers/src/requirements.txt b/actes-princiers/src/requirements.txt index 127ecc8..921783a 100644 --- a/actes-princiers/src/requirements.txt +++ b/actes-princiers/src/requirements.txt @@ -2,6 +2,7 @@ pandas>=2.0.2 nbsphinx>=0.9.2 lxml>=4.6.3 python-slugify>=8.0.1 +sphinx-rtd-theme>=1.2.2 black~=22.0 flake8>=3.7.9, <5.0 ipython>=7.31.1, <8.0; python_version < '3.8'