From 8e62d1c0bafd1984be52c69215dca5aa00c90ced Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gratien=20D=C3=A9sormeaux?= Date: Thu, 12 Dec 2024 16:44:40 +0100 Subject: [PATCH] Init repo --- .github/ISSUE_TEMPLATE/bug_report.md | 37 + .github/ISSUE_TEMPLATE/config.yaml | 2 + .github/ISSUE_TEMPLATE/feature_request.md | 23 + .github/PULL_REQUEST_TEMPLATE.md | 18 + .github/workflows/ci-cd-mkdocs.yml | 52 + .gitignore | 73 + .pre-commit-config.yaml | 22 + CHANGELOG.md | 3 + LICENSE.md | 176 -- README.md | 67 + assets/token_api.png | Bin 0 -> 50886 bytes assets/vignette_exemple.png | Bin 0 -> 53398 bytes docs/mkdocs.yaml | 84 + docs/pages/assets/css/mkdocs_extra.css | 17 + docs/pages/assets/css/style.css | 314 +++ .../assets/img/contributing/meteole-clone.png | Bin 0 -> 25090 bytes .../img/contributing/meteole-compare-pr.png | Bin 0 -> 37156 bytes .../img/contributing/meteole-create-pr.png | Bin 0 -> 18420 bytes .../assets/img/contributing/meteole-fork.png | Bin 0 -> 33158 bytes .../img/contributing/meteole-pr-branch.png | Bin 0 -> 64758 bytes .../contributing/meteole-pr-description.png | Bin 0 -> 155407 bytes .../assets/img/contributing/meteole-pr.png | Bin 0 -> 21848 bytes .../pages/assets/img/png/vignette_exemple.png | Bin 0 -> 53398 bytes docs/pages/assets/img/svg/configure.svg | 1 + docs/pages/assets/img/svg/etiquette.svg | 1 + docs/pages/assets/img/svg/footer.svg | 237 +++ docs/pages/assets/img/svg/latency.svg | 1 + .../assets/img/svg/meteole-fond-clair.svg | 2 + docs/pages/assets/js/tarteaucitron/LICENSE | 21 + docs/pages/assets/js/tarteaucitron/README.md | 101 + .../assets/js/tarteaucitron/advertising.js | 1 + .../js/tarteaucitron/css/tarteaucitron.css | 545 +++++ .../js/tarteaucitron/lang/tarteaucitron.cs.js | 65 + .../js/tarteaucitron/lang/tarteaucitron.de.js | 65 + .../js/tarteaucitron/lang/tarteaucitron.en.js | 65 + .../js/tarteaucitron/lang/tarteaucitron.es.js | 65 + .../js/tarteaucitron/lang/tarteaucitron.fr.js | 65 + .../js/tarteaucitron/lang/tarteaucitron.it.js | 65 + .../js/tarteaucitron/lang/tarteaucitron.pl.js | 66 + .../js/tarteaucitron/lang/tarteaucitron.pt.js | 61 + .../js/tarteaucitron/lang/tarteaucitron.ru.js | 65 + .../assets/js/tarteaucitron/tarteaucitron.js | 1265 +++++++++++ .../tarteaucitron/tarteaucitron.services.js | 1849 +++++++++++++++++ docs/pages/home.md | 18 + docs/pages/how_to.md | 144 ++ docs/pages/index.html | 115 + docs/pages/installation.md | 21 + docs/pages/why.md | 23 + pyproject.toml | 75 + src/meteole/__init__.py | 31 + src/meteole/arome.py | 121 ++ src/meteole/arpege.py | 142 ++ src/meteole/client.py | 166 ++ src/meteole/const.py | 30 + src/meteole/errors.py | 58 + src/meteole/forecast.py | 547 +++++ src/meteole/raster.py | 67 + src/meteole/vigilance.py | 145 ++ tests/__init__.py | 0 tests/test_core.py | 111 + tests/test_forecast.py | 368 ++++ tests/test_vigilance.py | 69 + tutorial/access_viligance_bulletin.ipynb | 644 ++++++ tutorial/arome.ipynb | 267 +++ tutorial/arpege.ipynb | 297 +++ 65 files changed, 8777 insertions(+), 176 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/config.yaml create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/workflows/ci-cd-mkdocs.yml create mode 100644 .gitignore create mode 100644 .pre-commit-config.yaml create mode 100644 CHANGELOG.md delete mode 100644 LICENSE.md create mode 100644 README.md create mode 100644 assets/token_api.png create mode 100644 assets/vignette_exemple.png create mode 100644 docs/mkdocs.yaml create mode 100644 docs/pages/assets/css/mkdocs_extra.css create mode 100644 docs/pages/assets/css/style.css create mode 100644 docs/pages/assets/img/contributing/meteole-clone.png create mode 100644 docs/pages/assets/img/contributing/meteole-compare-pr.png create mode 100644 docs/pages/assets/img/contributing/meteole-create-pr.png create mode 100644 docs/pages/assets/img/contributing/meteole-fork.png create mode 100644 docs/pages/assets/img/contributing/meteole-pr-branch.png create mode 100644 docs/pages/assets/img/contributing/meteole-pr-description.png create mode 100644 docs/pages/assets/img/contributing/meteole-pr.png create mode 100644 docs/pages/assets/img/png/vignette_exemple.png create mode 100644 docs/pages/assets/img/svg/configure.svg create mode 100644 docs/pages/assets/img/svg/etiquette.svg create mode 100644 docs/pages/assets/img/svg/footer.svg create mode 100644 docs/pages/assets/img/svg/latency.svg create mode 100644 docs/pages/assets/img/svg/meteole-fond-clair.svg create mode 100644 docs/pages/assets/js/tarteaucitron/LICENSE create mode 100644 docs/pages/assets/js/tarteaucitron/README.md create mode 100644 docs/pages/assets/js/tarteaucitron/advertising.js create mode 100644 docs/pages/assets/js/tarteaucitron/css/tarteaucitron.css create mode 100644 docs/pages/assets/js/tarteaucitron/lang/tarteaucitron.cs.js create mode 100644 docs/pages/assets/js/tarteaucitron/lang/tarteaucitron.de.js create mode 100644 docs/pages/assets/js/tarteaucitron/lang/tarteaucitron.en.js create mode 100644 docs/pages/assets/js/tarteaucitron/lang/tarteaucitron.es.js create mode 100644 docs/pages/assets/js/tarteaucitron/lang/tarteaucitron.fr.js create mode 100644 docs/pages/assets/js/tarteaucitron/lang/tarteaucitron.it.js create mode 100644 docs/pages/assets/js/tarteaucitron/lang/tarteaucitron.pl.js create mode 100644 docs/pages/assets/js/tarteaucitron/lang/tarteaucitron.pt.js create mode 100644 docs/pages/assets/js/tarteaucitron/lang/tarteaucitron.ru.js create mode 100644 docs/pages/assets/js/tarteaucitron/tarteaucitron.js create mode 100644 docs/pages/assets/js/tarteaucitron/tarteaucitron.services.js create mode 100644 docs/pages/home.md create mode 100644 docs/pages/how_to.md create mode 100644 docs/pages/index.html create mode 100644 docs/pages/installation.md create mode 100644 docs/pages/why.md create mode 100644 pyproject.toml create mode 100644 src/meteole/__init__.py create mode 100644 src/meteole/arome.py create mode 100644 src/meteole/arpege.py create mode 100644 src/meteole/client.py create mode 100644 src/meteole/const.py create mode 100644 src/meteole/errors.py create mode 100644 src/meteole/forecast.py create mode 100644 src/meteole/raster.py create mode 100644 src/meteole/vigilance.py create mode 100644 tests/__init__.py create mode 100644 tests/test_core.py create mode 100644 tests/test_forecast.py create mode 100644 tests/test_vigilance.py create mode 100644 tutorial/access_viligance_bulletin.ipynb create mode 100644 tutorial/arome.ipynb create mode 100644 tutorial/arpege.ipynb diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..1bd4946 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,37 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: bug +assignees: '' +--- + +### Describe the bug + +A clear and concise description of what the bug is. + +### To Reproduce + +Steps to reproduce the behavior: + +1. Import '...' +2. Call '....' +3. See error + +### Expected behavior + +A clear and concise description of what you expected to happen. + +### Screenshots + +If applicable, add screenshots to help explain your problem. + +### Desktop (please complete the following information) + +- OS: `[e.g. linux]` +- Python version(s): `[e.g. 3.12]` +- Dependencies versions: `[e.g. pydantic 2.6.4]` + +### Additional context + +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/config.yaml b/.github/ISSUE_TEMPLATE/config.yaml new file mode 100644 index 0000000..4d3b612 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yaml @@ -0,0 +1,2 @@ +--- +blank_issues_enabled: false \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..61af533 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,23 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: enhancement +assignees: '' +--- + +### Is your feature request related to a problem? Please describe + +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +### Describe the solution you'd like + +A clear and concise description of what you want to happen. + +### Describe alternatives you've considered + +A clear and concise description of any alternative solutions or features you've considered. + +### Additional context + +Add any other context or screenshots about the feature request here. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..b932a9c --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,18 @@ +### What? + +Explain with one or more sentences what this change is doing. + +### Have you done? + +- [ ] Code tests +- [ ] Update documentation +- [ ] Update [changelog](https://github.com/MAIF/arta/blob/main/CHANGELOG.md) + +### Details to be checked: (optional) + +If needed, add some details here in order to verify the change (e.g., how to test). + +### Linked issues: (optional) + +- Close ... +- Close ... diff --git a/.github/workflows/ci-cd-mkdocs.yml b/.github/workflows/ci-cd-mkdocs.yml new file mode 100644 index 0000000..372c445 --- /dev/null +++ b/.github/workflows/ci-cd-mkdocs.yml @@ -0,0 +1,52 @@ +--- + name: Documentation CI/CD + on: + push: + branches: + - main + tags: + - '*' # Later: \b[0-9]\.[0-9]+\.[0-9]+[ab]?[0-9]?\b + pull_request: + types: + - opened + - synchronize + branches: + - main + + jobs: + build: + if: ${{ github.actor != 'dependabot[bot]' }} + name: Build doc + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Install Python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + - name: Install package with optional dependency 'doc' + run: | + python -m pip install --upgrade pip + pip install .[doc] + - name: Run MkDocs build + working-directory: ./docs + run: mkdocs build + - name: Upload Pages artifact + uses: actions/upload-pages-artifact@v3 + with: + path: "docs/site/" + publish: + if: success() && startsWith(github.ref, 'refs/tags') + name: Publish doc + needs: build + permissions: + pages: write + id-token: write + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e1d0d98 --- /dev/null +++ b/.gitignore @@ -0,0 +1,73 @@ +# Archives and compressed files +*.7z +*.7Z +*.gz +*.GZ +*.rar +*.RAR +*.tar +*.TAR +*.tar.* +*.TAR.* +*.tgz +*.TGZ +*.zip +*.ZIP + +# Packages +*.egg +*.egg-info/ +*.jar +*.war +*.ear + +# Executable binary files +*.exe +*.EXE +*.msi +*.MSI +*.dll +*.DLL + +# Log files +*.log +*.LOG +*.log.* +*.LOG.* +logs/* +LOGS/* + +# Build directories +build/ +target/* +*/target/* +cache/ + +# Crash files +hs_err_pid* + +# Jupyter Notebook checkpoints +.ipynb_checkpoints + +# Configuration files +.htaccess + +# macOS specific files +*.DS_Store + +# Data files +*.csv +data/ + +# Compiled Python files +*.pyc + +# Environments +.env + +# Development tools +.vscode +.coverage + +# mkdocs documentation +*/site \ No newline at end of file diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..023c8bf --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,22 @@ +default_language_version: + python: python3 +repos: +- repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.8.0 + hooks: + - id: ruff + args: [ --fix ] + - id: ruff-format +- repo: https://github.com/pre-commit/mirrors-mypy + rev: v1.13.0 + hooks: + - id: mypy + args: [--config-file=pyproject.toml] + files: src + additional_dependencies: [types-pytz,types-requests,types-python-dateutil] +- repo: https://github.com/compilerla/conventional-pre-commit + rev: v3.6.0 + hooks: + - id: conventional-pre-commit + stages: [commit-msg] + args: [] \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..5d60a79 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,3 @@ +# Changelog + +## TODO diff --git a/LICENSE.md b/LICENSE.md deleted file mode 100644 index d9a10c0..0000000 --- a/LICENSE.md +++ /dev/null @@ -1,176 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS diff --git a/README.md b/README.md new file mode 100644 index 0000000..fb31878 --- /dev/null +++ b/README.md @@ -0,0 +1,67 @@ +# Meteole + +**Meteole** provides utilities to facilitate data retrieval from the Météo-France APIs using Python. It specifically supports the AROME and ARPEGE forecast models and vigilance bulletins. + +## 🛠 Installation + +```python +pip install meteole +``` + +## 🕐 Quickstart + +### Obtain an API token or key + +Create an account on [the Météo-France API portal](https://portail-api.meteofrance.fr/). Next, subscribe to the desired APIs (Arome, Arpege, etc.). Retrieve the API token (or key) by going to “Mes APIs” and then “Générer token”. + +### 🌧️ AROME, ARPEGE + +The flagship weather forecasting models of Météo-France are accessible via the Météo-France APIs. + +| Characteristics | AROME | ARPEGE | +|------------------|----------------------|----------------------| +| Resolution | 1.3 km | 10 km | +| Update Frequency | Every 3 hours | Every 6 hours | +| Forecast Range | Up to 51 hours | Up to 114 hours | + +```python +from meteole import arome + +arome_client = arome.AromeForecast(application_id=APPLICATION_ID) # APPLICATION_ID found on portail.meteo-france.Fr + +# let's look at the latest wind gusts +indicator = 'V_COMPONENT_OF_WIND_GUST__SPECIFIC_HEIGHT_LEVEL_ABOVE_GROUND' + +# or check any other indicator in the list +print(arome_client.indicators) + +# get the latest MeteoFrance forecasts concerning this indicator +# all default parameters are printed to make sure you are in control +df_arome = arome_client.get_coverage(indicator) + +# default height doesn't suit you? change it easily +df_arome = arome_client.get_coverage(indicator, height=10) +``` + +### ⚠️ VIGILANCE METEO FRANCE + +Meteo France offers a vigilance bulletin that provides nationwide predictions of potential weather risks. + +For data usage, access the predicted phenomena to trigger modeling based on the forecasts. + +```python +from meteole import Vigilance + +client = Vigilance(application_id=APPLICATION_ID) + +df_phenomenon, df_timelaps = client.get_phenomenon() # pour accéder aux phénomènes prévus + +textes_vigilance = client.get_textes_vigilance() # pour accéder aux bulletins de vigilance + +client.get_vignette() # pour afficher les vignettes +``` + +vignette de vigilance + +To have more documentation from MeteoFrance in Vigilance Bulletin : +- [Meteo France Documentation](https://donneespubliques.meteofrance.fr/?fond=produit&id_produit=305&id_rubrique=50) diff --git a/assets/token_api.png b/assets/token_api.png new file mode 100644 index 0000000000000000000000000000000000000000..a06ef5b2958967574a93b4c41c58053882d3b386 GIT binary patch literal 50886 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

`Sn@7P4 z9^P)Y9SWCqZDda3jg_0>{$!M=dVAEm_kihHqJj1a6)AyYP`JdMUt8(!6v)t7TkkGV zhPGOvy}A^Ke>#wiFv;DgAZzK-!Ozj)EB(VG@!r+^reF z`nw53KHXsc{a#(mA=IJ~$@3?7>jvt*4vkmjXcU@0nr!=Y&zWn@4tv^5gyiFCe_T?S zxT>j~2j)m*7xmpK5ZDcZNdC3*ihANtO9x=)ZPDl1SvQz#|8_`yuPkNf=As=d9X;`& z4SiaSOSmzi{gw3i9Z60K&zgFEuJ+yT!o+cRjUqK=NpSE_Qr2#ydYn7=QP-m$6h7-h z84RkGaULXyl((~l@H7?U349^sWrb{Y``lJLkR<=1Z4AmoSWt>AO!D@%KSQg;X~-jt(3OTP7& zFCh0WKgZ7m#juiUb|a5W%k1>}&~y;KNeIzwnYB1T8P#~M?ijYLvNE9oOUn-O=|?Ub zV}nUIr)2SZhb0d4M86}qvmue>Ww?k=e1QK^KuCJ(rg~gGuh277;36v0dwehnU?98d zN*I$|Xlg9=tV^5tY1fPI-l^oUJJSsD!&-CvHwf;}tScrJZ6vo>eIH=bubZq`NX>=e ziENUDm$<2~nxKk|MVv1P(ksEFez0D1!<~`);}o~?Z(i1_ytE9W>KagRI)chO%JB5Z zZ>GhbsfUaN-yMqZ538f3IXW~b3r!%}T#m=lo&+L!J!QYmV*e3!RBx{v! zUzezi0BWqmat>iVA3m(AeiLfgGmWxKX#GY&Ly175PaiMtE)2y>UFM924XyosJ@={dsK_v85*Lu2!wsc2tbPEn2=}I!3a>8mgGP zvn(fv$ntwj9ZgD@Yzc+4R_DXT3kFNCPgoFbi@G-#XLSfTx?Jm zGnCzo{`>C)VkU&+!jn!5bj33ng-07N%fXmk-x5oPzX}NAOd_aT)jBp$FmGS}dXGVn z?S0}$TU3|fb)rU@x~4!me*%R$kT|?JsAfN}_uEfM)Rsq~pYk|_9wVntT=%yN8geZz zWzhQW2=IRCh7|$u`vzmRMjRLRhVqYxyt#OcF}H9t8vIX`n?n(PxR{K#f#7-=pZEtb z{x6NDn$;4=6n=YVs5aqENeab&E|S3~bH~GQkF~f6C*fZ)CmzUse4*%S`}{#zm|@BbV5hW~1$f+v^wx0FQl{MG&6qJB&J z-{3nuut%2hZ$c6Ld>H?K?N|rIN6Y+woyWuoCKavY?09KSxuPsC(juZBzjEPWJT|EBo3V$A18AY7q7wpi$o`Xf zoqXVkZP-_DtTC)?K<;GxfG4_8Yc=BN6XZH>6r^N$aBzUyt*M{H#~i!PHN5Dj{7>H#fJEz?HC128Ht4_;Bf>je)fP z=JK6jgSo)T|J}Sy0G!!QA%`;;OB1whP8UV2kp6v|4U0X847*WBT>RwN#zWgvGcy_^ zBO`ujlq(ufY{K3Z^`G$L5Y$}$|GFvsS37WKB^$!1gnt%F#lPW~*?sBc9@dk*mFxJ? ze3^}l)B1>isKM}EVD!>PWX$2&1x|tQ)=sGy&GI?$s-*^UsYto6Mhwj-E8#B3Py zqgRr12)tkLf5S362pRm>N+v6<{B8^j@PqnlPoCCl?XAEc-&wzV2x8H*kfC>XnF09g z^PfUN!3grL9sR4b@`{JCy7!O9H}GTaas*|PrbymR`M(9Zo%I%Kwsfd}uR-gtHs!Z* zDaW^Cf3W^};BJnc8J>$>b&ve5to_tLy-w93`u_tR`xKA> literal 0 HcmV?d00001 diff --git a/assets/vignette_exemple.png b/assets/vignette_exemple.png new file mode 100644 index 0000000000000000000000000000000000000000..18cfd5694a79d14de70d3f9879319543d52e4d7c GIT binary patch literal 53398 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