From 0faf4448b7894a46079e5bed47c1106d548a0b62 Mon Sep 17 00:00:00 2001 From: Diego Quintana Date: Wed, 21 Feb 2024 07:39:00 +0100 Subject: [PATCH] Change docs, changelog generation and mkdocs container (et/somenergia-jardiner!112) * add edit and view raw features to mkdocs * fix bad references between articles in docs * change mkdocs container workflow and add plugins Some plugins for mkdocs needed extra dependencies, and this commit simplifies the process based on learnings from mercat. The new image does not need the app builder image. The mkdocs image uses python 3.11 so pyproject.toml now is scoped to <3.12 to include this fact. * Change information about using ORMs as admonition * fix typo in docs * add plant reader to documentation index * change documentation structure and format a little this reorder directories, update links and sometimes format a little more. * Change project version to calver and formalize changelog generation This updates README.md and creates a CONTRIBUTING.md and updates CHANGELOG.md file while stablishing a changelog generation workflow with `make changelog` --- .editorconfig | 4 + .git-changelog.toml | 13 +++ CHANGELOG.md | 91 +++++++++++++++---- CONTRIBUTING.md | 69 ++++++++++++++ Makefile | 14 +-- README.md | 57 +----------- containers/mkdocs/Dockerfile | 13 +-- containers/mkdocs/README.md | 8 +- containers/mkdocs/docker-compose.mkdocs.yml | 4 +- containers/mkdocs/example.mkdocs.env | 8 -- .../2022-10-11-dbt_workflow_meter_alarms.md | 2 +- .../adr/2023-06-13-pipeline_dades_llargues.md | 6 +- .../{desenvolupadors => }/deprecated/TODOs.md | 3 +- ...ns.md => 2023-02-08-novu_notifications.md} | 4 + .../2023-06-10-overview-devs.md | 17 +++- ..._utils.md => 2023-07-10-dbt_cmds_utils.md} | 10 +- ...lable.md => 2023-07-13-codi_reciclable.md} | 4 + .../2023-08-28-afegir-planta-a-superset.md | 37 ++++++++ .../2023-08-28-afegir-planta.md | 33 ------- ...ta_planta.md => 2023-08-28-alta_planta.md} | 43 ++++----- .../2024-01-11-incremental-dedup.md | 76 ++++++++++------ .../2024-02-16-row-level-security.md | 34 +++++-- docs/index.md | 6 ++ docs/projecte/2023-06-03-macrofase roadmap.md | 39 ++++---- docs/projecte/2023-06-03-overview.md | 32 +++---- jardiner/__init__.py | 2 +- mkdocs.yml | 26 +++++- poetry-mkdocs-requirements.txt | 60 +++++++----- poetry.lock | 62 ++++--------- pyproject.toml | 5 +- 30 files changed, 458 insertions(+), 324 deletions(-) create mode 100644 .git-changelog.toml create mode 100644 CONTRIBUTING.md delete mode 100644 containers/mkdocs/example.mkdocs.env rename docs/{desenvolupadors => }/deprecated/TODOs.md (99%) rename docs/desenvolupadors/{tutorials/novu_notifications.md => 2023-02-08-novu_notifications.md} (96%) rename docs/desenvolupadors/{tutorials/dbt_cmds_utils.md => 2023-07-10-dbt_cmds_utils.md} (68%) rename docs/desenvolupadors/{tutorials/codi_reciclable.md => 2023-07-13-codi_reciclable.md} (88%) create mode 100644 docs/desenvolupadors/2023-08-28-afegir-planta-a-superset.md delete mode 100644 docs/desenvolupadors/2023-08-28-afegir-planta.md rename docs/desenvolupadors/{tutorials/alta_planta.md => 2023-08-28-alta_planta.md} (82%) diff --git a/.editorconfig b/.editorconfig index 6567a33c..f405a09e 100644 --- a/.editorconfig +++ b/.editorconfig @@ -19,3 +19,7 @@ indent_size = 2 [*.md] trim_trailing_whitespace = true + +[Makefile] +indent_style = tab + diff --git a/.git-changelog.toml b/.git-changelog.toml new file mode 100644 index 00000000..9ddf3f55 --- /dev/null +++ b/.git-changelog.toml @@ -0,0 +1,13 @@ +bump = "auto" +convention = "basic" +in-place = false +# filter-commits = "0.5.0.." +# marker-line = "" +parse-refs = true +parse-trailers = true +repository = "." +sections = ["add","remove","fix","doc"] +template = "keepachangelog" +version-regex = "^## \\\\[(?Pv?[^\\\\]]+)" +provider = "gitlab" +zerover = true diff --git a/CHANGELOG.md b/CHANGELOG.md index 26da0726..9eeb7119 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,16 +6,70 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). -## Unreleased +## [v2024.02.19](https://gitlab.somenergia.coop/et/somenergia-jardiner/tags/v2024.02.19) - 2024-02-16 -[Compare with latest](https://gitlab.somenergia.coop/et/somenergia-jardiner/compare/v0.1.1...HEAD) +[Compare with v0.1.1](https://gitlab.somenergia.coop/et/somenergia-jardiner/compare/v0.1.1...v2024.02.19) + +### Added + +- add dset postman docs url ([8935dd9](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/8935dd9272fa5493b56dd0c7291c0e289e90ae61) by pol). +- add dupes test on materialized table, dedup on ts,signal_uuid instead of signal_id (et/somenergia-jardiner!69) ([9fb42f6](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/9fb42f69decd0d7e3f5718ed84d4212be851a177) by Pol Monsó Purtí). +- added new plant paramenters source ([2cf86ec](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/2cf86ec9e55f4afd481fcc397d998278fa53fc7a) by Lugadur). +- add dset basics raw + signals receiver check (et/somenergia-jardiner!5) ([608fd7b](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/608fd7be18581010a3feaf6fb8ab9a20e0f8cb4a) by Roger Sanjaume). ### Fixed -- fix: add missing packages.yml to dbt containers (#13) ([0199954](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/01999541bbc1e2f3762887eb7bf6e3560ed1c221) by Diego Quintana). -- fix: docker makefile commands (#10) ([a4bf6b9](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/a4bf6b9fb188332efe114fddf39c0985ba968e1a) by Diego Quintana). +- Fix/instant data (et/somenergia-jardiner!106) ([b8a92d5](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/b8a92d569a3511e53716cab3ea23822340ae36f1) by Lucía). +- fix: change daily inverter energy calculation (et/somenergia-jardiner!103) ([c4c7e56](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/c4c7e56f58d2f9843d5712ec5caed32e31590ef1) by Lucía). +- fix: update tests in dbt after refactoring (et/somenergia-jardiner!100) ([3bd01a3](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/3bd01a33d36f32c70fea49fe4b2da8bdb155ccb0) by Diego Quintana). +- fix: use trigger_rule=all_done in edr task ([2cf0dca](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/2cf0dca0565cd2799c76ea047c924aff6395f022) by Diego Quintana). +- fix: rename files to avoid airflow script name collisions ([1dffd92](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/1dffd927cf2050abeffcae11283e33f73f9950d4) by Diego Quintana). +- fix: delete old models, change dag cron (et/somenergia-jardiner!98) ([74c9102](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/74c9102fb2d422b3cb88d0814785f9369ce3ea55) by Pol Monsó Purtí). +- fix: dm_blabla_5m change parent from spined to values_incremental (et/somenergia-jardiner!97) ([d76728e](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/d76728ededc774656a35b7f6499d87e00d950192) by Pol Monsó Purtí). +- fix: Wrong energy units in instant dm (et/somenergia-jardiner!92) ([4223b3b](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/4223b3bd6e679a5e6be3c600cc2f7c0ffec4368d) by Pol Monsó Purtí). +- fix: dset meters energy is wrong (et/somenergia-jardiner!88) ([7b4c90f](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/7b4c90f83b8afc2c5ce6a2bf6d6bf0e3dff7d033) by Pol Monsó Purtí). Related issues/PRs: [#102](https://gitlab.somenergia.coop/et/somenergia-jardiner/issues/102) +- Fix: revert to erp_meters, fix pr_hourly formula (et/somenergia-jardiner!87) ([1fb21ed](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/1fb21edc8a800b9bb27c035c95ec7dd3b875e3b7) by Pol Monsó Purtí). +- fix: change job artifact used in dbt-build in ci (et/somenergia-jardiner!85) ([ba3e932](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/ba3e932b5778b84dfd793217ebb2a391ee54cd35) by Diego Quintana). Related issues/PRs: [#152](https://gitlab.somenergia.coop/et/somenergia-jardiner/issues/152) +- fix: avoid bumps between daily and hourly dags writing to db (et/somenergia-jardiner!83) ([5a28e7e](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/5a28e7efde4d24efa82460ebeff40091ac8250ea) by Diego Quintana). +- fix: inverter monthly agg (et/somenergia-jardiner!60) ([568e806](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/568e80649801ad682bb3521eb9d3b646892c8d79) by Pol Monsó Purtí). Related issues/PRs: [#24](https://gitlab.somenergia.coop/et/somenergia-jardiner/issues/24), [#99](https://gitlab.somenergia.coop/et/somenergia-jardiner/issues/99) +- fix: fail fast on merge request (but not on prod) (et/somenergia-jardiner!67) ([cdb0c71](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/cdb0c71c77e30bbfedf9e1fb12d6410d7acee7fe) by Pol Monsó Purtí). +- fix: on schema change should be sync_all_columns (et/somenergia-jardiner!66) ([af90c1a](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/af90c1ae9c029ac9a94f796eabcbf9defcccbe7e) by Pol Monsó Purtí). +- fix/dades fixes de plantes (et/somenergia-jardiner!63) ([6f42763](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/6f42763ab415fed7bebaea49f162b44c9798b7e4) by Lucía). +- fix: inverter monthly aggregate is wrong (et/somenergia-jardiner!58) ([31d058c](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/31d058c63975262edac786423f249271229c7b93) by Pol Monsó Purtí). * fix: wrong capitalization on model +- fix: add metric to dm_metrics_production_5min (et/somenergia-jardiner!57) ([93df4e3](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/93df4e36a1bc81d78f9e27772aae0882e92c7dd0) by Pol Monsó Purtí). * fix: add metric_name to dm_metrics_production_5min +- fix: we want also signals dset has not mapped and we expect (et/somenergia-jardiner!54) ([aa64f4c](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/aa64f4c2f3dc7ba491d55dc98a2b0c9ee0a8e67a) by Pol Monsó Purtí). * fix: full outer join in latest batch +- fix: spined dset with metadata is way too slow (et/somenergia-jardiner!52) ([bc3f7c3](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/bc3f7c32e336e2c1ab3708e754be1a8d3d4a3c01) by Pol Monsó Purtí). +- fix: make minio wait for nas (contd. et/somenergia-jardiner!46)(et/somenergia-jardiner!49) ([1bdaed9](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/1bdaed9204f139fb44059ced1dc584a4e537f356) by Diego Quintana). * fix: add sleep to minio task to wait for nas +- fix: make minio mirror task wait for nas volume (et/somenergia-jardiner!46) ([f35659b](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/f35659ba8e3e8908707fee7de467ce6e255bb52d) by Diego Quintana). +- fix: update bad references between models (et/somenergia-jardiner!47) ([0afc8dc](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/0afc8dc950a4235345d6c291240fb85ce5cfc1ad) by Diego Quintana). +- fix: make unique source of truth for plant name from table `plant_parameters` (et/somenergia-jardiner!36) ([f7b03cd](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/f7b03cda479ee640b09d9a2ee98be07d864bbc11) by Pol Monsó Purtí). +- fix: make dbt model with dset joined data point to union instead of raw dbt model (et/somenergia-jardiner!34) ([4bd01b5](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/4bd01b5f2a6447ee91f3eb706954b0e36da3f776) by Diego Quintana). * change: make dbt model with dset joined data point to union instead of raw dbt model +- fix: chown artifacts and refactor pages task in gitlab CI (et/somenergia-jardiner!22) ([5eaf7e3](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/5eaf7e3bfa774507f37d1e1ac2a850fc6d746e17) by Diego Quintana). * change: add chown task and refactor pages task +- fix documentation ([37534c2](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/37534c2a664f1d5fc8a9e164a811be00136a60d7) by Lugadur). +- fix omie price from €/kwh to €/MWh ([6821d77](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/6821d777c27a440a115ef8c98a76c68aa485e20e) by Lugadur). +- Fix/dset changes (et/somenergia-jardiner!19) ([78e2907](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/78e2907b046f94c54a4051520169fcf3c7301d13) by Pol Monsó Purtí). +- fix: multiple last ts within a metric of several device (et/somenergia-jardiner!18) ([a432745](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/a432745c3a68c2dba860ed27a7eba44e17819c23) by Lucía). +- Fix MR !16 (et/somenergia-jardiner!17) ([987f2cc](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/987f2cc35346f83cd4f552a79e50eca615073db9) by Lucía). +- fix: limit the length of API signal_uuid to 36 characters ([126e7bd](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/126e7bd1574ef0453c6164855a33405b00c82170) by Lugadur). +- fix: missing f-strings and task id ([0f12e1b](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/0f12e1b41d19cbff1eea8abc8d3272998d78497c) by Diego Quintana). +- fix: temporary revert registry and image for plant_production_datasets_dag.py ([9b1068c](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/9b1068c93f9efb52abde52dc0828e0d60cb9d5a1) by Diego Quintana). +- fix: entrypoint at Dockerfiles breaking jardiner dags (et/somenergia-jardiner!9) ([b716049](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/b716049a079e108222bf4e1f3b978b6646a9d535) by Diego Quintana). * dev: add max_active_runs=1 to jardiner dags +- fix: update .gitlab-ci.yml with non-deprecated envvars ([f5cf286](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/f5cf2869ca86d034b7a9c4ac6166e0424e707aac) by Diego Quintana). +- fix: update .rsyncignore ([3828f7c](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/3828f7caa373e0ddac3a6a7b8e8338739aff7f33) by Diego Quintana). +- fix: add dbt logs to .rsyncignore ([2d45b32](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/2d45b321ce58778d642ccdc2cae982cf03856c03) by Diego Quintana). +- fix: add dbt_packages to .rsyncignore ([14f2505](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/14f25055f830301e61604ba8bce13e5488da8dba) by Diego Quintana). +- fix: update dbt model with better date_trunc usage (et/somenergia-jardiner!1) ([73551e3](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/73551e34865b99ae75108f6bbffeafd27e60a8ab) by Diego Quintana). * fix: update dbt model with better date_trunc usage +- fix: add dbt target to .rsyncignore ([44b3991](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/44b3991ebd797796a44f238cb62929bbcddca095) by Diego Quintana). +- fix: add missing packages.yml to dbt containers (#13) ([0199954](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/01999541bbc1e2f3762887eb7bf6e3560ed1c221) by Diego Quintana). Co-authored-by: Lugadur +- fix: docker makefile commands (#10) ([a4bf6b9](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/a4bf6b9fb188332efe114fddf39c0985ba968e1a) by Diego Quintana). * containers: update docker cache at compose + +### Documented + +- docs: add colors brilli brilli to the dbt lineage graph (et/somenergia-jardiner!48) ([639752c](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/639752c21e15bcf2763f77599aa179b8b78df544) by Pol Monsó Purtí). * docs: add colors to nodes in dbt lineage graph +- docs: add merge requests templates (et/somenergia-jardiner!21) ([ca8b51c](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/ca8b51c06c91ba1760a58d406750e5fa1a41e75f) by Diego Quintana). Co-authored-by: Pol Monsó Purtí +- docs: update urls of the CHANGELOG to gitlab ([87fe866](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/87fe866ef85a6154158acde4fc58f106ee050b67) by Diego Quintana). +- docs: add CHANGELOG.md and git-changelog dependency (#11) ([b522370](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/b52237031e7124e72dd37ef6cb833e4f8431d41f) by Diego Quintana). - ## [v0.1.1](https://gitlab.somenergia.coop/et/somenergia-jardiner/tags/v0.1.1) - 2023-08-09 [Compare with v0.1.0](https://gitlab.somenergia.coop/et/somenergia-jardiner/compare/v0.1.0...v0.1.1) @@ -57,6 +111,16 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - add env example ([74adfad](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/74adfade1de387f9f8700b67156c663447404915) by pol). - add documentation and requirements.txt because airflow does not poetry ([944b4a8](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/944b4a831c2ce80e59ffe3c89b7ce3f188198474) by pol). +### Removed + +- remove this branch to the docs build ([6780c54](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/6780c54f63db272541c239f633580a73d58a07f2) by pol). +- Remove timezone(utc,now),make stringregistry_denormalized use all readings instead of just last hour ([4d7395c](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/4d7395c02b2131e452a4d8ed48e497d98bf0810b) by pol). +- remove accented directory ([3866067](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/38660674bbd7498e7306e7497d509d7a4539c21e) by pol). +- remove receiver email from dags python call ([a760161](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/a760161efd64f9fc9418c8e8601f0fb7626d7680) by Lugadur). +- remove all order by time ([869419b](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/869419bb3a9a4c9c8891b0b5869c48f6d17b60f4) by pol). +- remove old comments ([dfa03bd](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/dfa03bdfcc087f01256311916554d216f0e5fcc2) by Lugadur). +- remove timezoned now, lateral on true ([d73886c](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/d73886cdc972247940b9acd64f771f548ae324f7) by pol). + ### Fixed - fix links ([2b481bf](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/2b481bfde09974a7ace131b2c9229925c1b8ad95) by pol). @@ -72,20 +136,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - FIX payload must be a dictionary not array ([eab6c27](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/eab6c27154aac721101012036ea5c557be1496c9) by pol). - fix spine join ([5aee6ef](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/5aee6efc21d5606188cd1ae926de9b2118427701) by pol). -### Changed - -- change to point to dbdades instead of plantmonitor ([cefc611](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/cefc61199bf663f055d5f4b78adee536547cbdd6) by pol). -- change inverter_intensity to stringregistry_multisource ([1e1ce75](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/1e1ce755f7f4190acab81ff1f0d4b0cebae9f9d2) by pol). -- change command to quoted && ([2f10c8c](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/2f10c8cbbed451943052c72cb2ee135fdcd0cc6b) by Lugadur). -- change to update_docker_image, parametrize repo_name ([bc64cb4](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/bc64cb46e51e8aa37ace463d14d1fa4a3d33e0bf) by pol). +### Documented -### Removed - -- remove this branch to the docs build ([6780c54](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/6780c54f63db272541c239f633580a73d58a07f2) by pol). -- Remove timezone(utc,now),make stringregistry_denormalized use all readings instead of just last hour ([4d7395c](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/4d7395c02b2131e452a4d8ed48e497d98bf0810b) by pol). -- remove accented directory ([3866067](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/38660674bbd7498e7306e7497d509d7a4539c21e) by pol). -- remove receiver email from dags python call ([a760161](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/a760161efd64f9fc9418c8e8601f0fb7626d7680) by Lugadur). -- remove all order by time ([869419b](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/869419bb3a9a4c9c8891b0b5869c48f6d17b60f4) by pol). -- remove old comments ([dfa03bd](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/dfa03bdfcc087f01256311916554d216f0e5fcc2) by Lugadur). -- remove timezoned now, lateral on true ([d73886c](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/d73886cdc972247940b9acd64f771f548ae324f7) by pol). +- docs: small fixes on graph, better roadmap ([e11fa2a](https://gitlab.somenergia.coop/et/somenergia-jardiner/commit/e11fa2a09fa76ea27f71a9a1880583f239190e06) by pol). diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..fe38db32 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,69 @@ +# Contributing to this project + +This project is a data pipeline that takes data from the Som Energia plants and processes it to be used in the BI tools. This documentation serves as an onboarding guide for new developers and as a reference for the current ones. + +## Using `make` + +Check the `Makefile` for the available commands. You can use `make` to run the tests, serve the documentation, and more. Use `make help` to see the available commands. + +## Project versioning (experimental) + +Since jardiner is not a library but rather a complex system, we version the project using the `git` tags. We use the (`calendar versioning`)[https://calver.org/] to tag the releases. We also use the `CHANGELOG.md` to keep track of the changes along with `git-changelog` to generate the changelog. + +Git changelog is a tool that generates a changelog from git tags and the commit messages. We _try_ to follow the [Basic convention](https://pawamoy.github.io/git-changelog/usage/#basic-convention) format. + +A way to tag a release is to use the following commands: + +```bash +$ git tag $(date +'%Y.%m.%d') -m "$(date +'%Y.%m.%d')" +$ make changelog > CHANGELOG.md +``` + +## Install dependencies + +We use `poetry` to manage the dependencies. You can install it via pipx or the official installer. Check the poetry documentation for more. + +In short, + +- `poetry add ` to add package +- `poetry install` to install `poetry.lock` packages +- `poetry show --tree` will show the dependencies tree. +- Additionally `deptry .` will analyze the project and find inconsistencies between project and dependencies. + +### Known issues + +If you get wheel errors on manylinux2014, update your `pip` to solve it. `poetry` doesn't fetch wheels from manylinux2014. `orjson` will cause this issue with pip 20 for example. + +## Testing + +Run `pytest` on the root directory. Also, you can test the data models with `dbt test --target pre --target-dir dbt_jardiner` + +## Run + +`typer` will tell you what arguments you need to run the notify_alarms script. You will have to provide a dbapi string or the placeholders `prod` or `pre` which will read `.env.prod` and `.env.pre` respectivelly + +```bash +python ./jardiner/notify_alarms --help +``` + +## Deploy + +We deploy using local gitlab runners as part of the CI/CD pipeline. Check the `.gitlab-ci.yml` file for more information. + +This project features many docker images hosted in our private registry at . Check the `docker-compose.yml` files for more information. + +## Update requirements + +We use poetry to maintain the requirements, but we can update the requirements like so: + +```bash +poetry export --without=dev --without-hashes --format=requirements.txt > requirements.txt +``` + +## Update documentation + +We use mkdocs to serve extra documentation and ADRs (Architecture Decision Records). You can serve the documentation with the following command + +```bash +make mkdocs.serve +``` diff --git a/Makefile b/Makefile index 3c7997fa..2da3f796 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,6 @@ app_compose_env_file := ./.env local_airflow_compose_file := containers/airflow-local/docker-compose.airflow-local.yml local_airflow_compose_env_file := containers/airflow-local/.airflow-local.env mkdocs_compose_file := containers/mkdocs/docker-compose.mkdocs.yml -mkdocs_compose_env_file := containers/mkdocs/.mkdocs.env # taken from https://container-solutions.com/tagging-docker-images-the-right-way/ @@ -46,19 +45,19 @@ mkdocs.requirements.txt: ## update requirements.txt file from pyproject.toml @echo "poetry-mkdocs-requirements.txt file updated" mkdocs.serve: ## serve the mkdocs documentation - @docker compose -f $(mkdocs_compose_file) --env-file $(mkdocs_compose_env_file) up + @docker compose --env-file $(mkdocs_compose_env_file) up mkdocs.build_image: ## build the mkdocs image - @docker compose -f $(mkdocs_compose_file) --env-file $(mkdocs_compose_env_file) build mkdocs + @docker compose --env-file $(mkdocs_compose_env_file) build mkdocs mkdocs.push_image: ## push the mkdocs image with tag: latest - @docker compose -f $(mkdocs_compose_file) --env-file $(mkdocs_compose_env_file) push mkdocs + @docker compose --env-file $(mkdocs_compose_env_file) push mkdocs mkdocs.build_docs: ## build the mkdocs documentation - @docker compose -f $(mkdocs_compose_file) --env-file $(mkdocs_compose_env_file) run --rm mkdocs build + @docker compose --env-file $(mkdocs_compose_env_file) run --rm mkdocs build mkdocs.logs: ## show the logs of the mkdocs container - @docker compose -f $(mkdocs_compose_file) --env-file $(mkdocs_compose_env_file) logs -ft mkdocs + @docker compose --env-file $(mkdocs_compose_env_file) logs -ft mkdocs # ---------------------------------------------------------------------------- # # dbt-docs commands # @@ -86,4 +85,5 @@ dbt_docs.logs: ## show the logs of the dbt-docs container local.re_data_models.dev: ## Run re_data models @(cd dbt_jardiner && dbt run --target dev --models package:re_data) - +changelog: ## generate changelog + @docker compose -f $(app_compose_file) --env-file $(app_compose_env_file) run --rm -it --entrypoint git-changelog app-dev diff --git a/README.md b/README.md index c5d42970..9d6d5103 100644 --- a/README.md +++ b/README.md @@ -6,61 +6,10 @@ Mending and nurturing of green energy plants. See its changelog at [CHANGELOG.md - [Mkdocs documentation](https://et.pages.somenergia.coop/somenergia-jardiner/docs/) - [dbt documentation](https://et.pages.somenergia.coop/somenergia-jardiner/dbt_docs/) -- [Elementary documentation](https://et.pages.somenergia.coop/somenergia-jardiner/elementary_docs/) +- [Elementary documentation](https://jardiner-elementary.moll.somenergia.coop/) ## Usuàries de Gestió d'actius -Gestió d'actius! Aneu [aquí](/somenergia-jardiner/projecte/2023-06-03-macrofase roadmap/) +- Gestió d'actius! Aneu [aquí](/somenergia-jardiner/projecte/2023-06-03-macrofase roadmap/) +- SomEnergia Devs! Aneu [aquí](/somenergia-jardiner/desenvolupadors/2023-06-10-overview-devs/) -SomEnergia Devs! Aneu [aquí](/somenergia-jardiner/desenvolupadors/2023-06-10-overview-devs/) - -## install dependencies - -The appropriate way to install poetry is in its own isolated environment - -```bash -curl -sSL https://install.python-poetry.org | python3 - -``` - -Otherwise [poetry will delete itself](https://github.com/python-poetry/poetry/issues/3957) when running `poetry install --sync` - -alternativelly you can do - -```bash -pip install -r requirements.txt -``` - -Check the poetry documentation for more, shortlist `poetry add ` to add package, `poetry install` to install `poetry.lock` packages -and `poetry show --tree` will show the dependencies tree. Additionally `deptry .` will analyze the project and find inconsistencies between project and dependencies. - -If you get wheel errors on manylinux2014, update your `pip` to solve it. `poetry` doesn't fetch wheels from manylinux2014. `orjson` will cause this issue with pip 20 for example. - -## testing - -just run `pytest` on the root directory - -also you can test the data models with `dbt test --target pre --target-dir dbt_jardiner` - -## run - -`typer` will tell you what arguments you need to run the notify_alarms script. You will have to provide a dbapi string or the placeholders `prod` or `pre` which will read `.env.prod` and `.env.pre` respectivelly - -`python ./jardiner/notify_alarms --help` - -## deploy - -deploy is in continuos delivery on main branch, but dbt models must be manually ran at the moment. - -`dbt run --target prod --target-dir dbt_jardiner` - -## update requirements - -We use poetry to maintain the requirements, but we can update the requirements like so: - -`poetry export --without=dev --without-hashes --format=requirements.txt > requirements.txt` - -## update documentation - -We use mkdocs to serve extra documentation and adrs - -`mkdocs serve` diff --git a/containers/mkdocs/Dockerfile b/containers/mkdocs/Dockerfile index 53782cff..4a2bb8b7 100644 --- a/containers/mkdocs/Dockerfile +++ b/containers/mkdocs/Dockerfile @@ -1,10 +1,5 @@ -ARG WORKDIR="/app" - -FROM harbor.somenergia.coop/dades/somenergia-jardiner-builder:latest as builder -ARG WORKDIR -RUN poetry export -f requirements.txt --output ${WORKDIR}/mkdocs-requirements.txt --without-hashes - FROM squidfunk/mkdocs-material:latest -ARG WORKDIR -COPY --from=builder ${WORKDIR}/mkdocs-requirements.txt . -RUN pip install --no-cache-dir -r mkdocs-requirements.txt \ No newline at end of file + +# Install dependencies +COPY poetry-mkdocs-requirements.txt . +RUN pip install --no-cache-dir -r poetry-mkdocs-requirements.txt diff --git a/containers/mkdocs/README.md b/containers/mkdocs/README.md index e77f5844..3ea9a64b 100644 --- a/containers/mkdocs/README.md +++ b/containers/mkdocs/README.md @@ -1,3 +1,9 @@ # About -Deploy a mkdocs site to a container. \ No newline at end of file +Deploy a mkdocs site to a container. + +Dependencies are managed by poetry. At the root level of the repo, run: + +```bash +make mkdocs.requirements.txt +``` diff --git a/containers/mkdocs/docker-compose.mkdocs.yml b/containers/mkdocs/docker-compose.mkdocs.yml index ba1403e6..478b3b85 100644 --- a/containers/mkdocs/docker-compose.mkdocs.yml +++ b/containers/mkdocs/docker-compose.mkdocs.yml @@ -2,7 +2,7 @@ version: "3.7" services: mkdocs: - image: ${SOMENERGIA_REGISTRY}/${SOMENERGIA_PROJECT_NAME?Variable not set}-mkdocs:${SOMENERGIA_DOCKER_TAG?Variable not set} + image: harbor.somenergia.coop/dades/somenergia-jardiner-mkdocs:${SOMENERGIA_DOCKER_TAG-latest} build: context: ../../ dockerfile: containers/mkdocs/Dockerfile @@ -13,4 +13,4 @@ services: - ../../mkdocs.yml:/docs/mkdocs.yml - ../../docs:/docs/docs - ./README.md:/docs/README.md - - ../../git:/docs/.git:ro # needed for plugins \ No newline at end of file + - ../../.git:/docs/.git:ro # needed for plugins diff --git a/containers/mkdocs/example.mkdocs.env b/containers/mkdocs/example.mkdocs.env deleted file mode 100644 index f72a7598..00000000 --- a/containers/mkdocs/example.mkdocs.env +++ /dev/null @@ -1,8 +0,0 @@ -# -------------------------------------------------------------------------- # -# registry settings # -# -------------------------------------------------------------------------- # - -SOMENERGIA_REGISTRY=harbor.somenergia.coop/dades -SOMENERGIA_PROJECT_NAME=somenergia-jardiner -SOMENERGIA_DOCKER_TAG=latest -SOMENERGIA_PROJECT_ENVIRONMENT=development diff --git a/docs/adr/2022-10-11-dbt_workflow_meter_alarms.md b/docs/adr/2022-10-11-dbt_workflow_meter_alarms.md index 45b48ae8..5620e8d4 100644 --- a/docs/adr/2022-10-11-dbt_workflow_meter_alarms.md +++ b/docs/adr/2022-10-11-dbt_workflow_meter_alarms.md @@ -81,4 +81,4 @@ Chosen option: triem l'opció 2. per suportar calcular alarmes en el passat ### Negative Consequences * Requereix materialitzar una taula amb la última lectura processada (o tenir un staging on s'inserten les noves) -* Incrementa la complexitat de la query SQL \ No newline at end of file +* Incrementa la complexitat de la query SQL diff --git a/docs/adr/2023-06-13-pipeline_dades_llargues.md b/docs/adr/2023-06-13-pipeline_dades_llargues.md index 82896cbe..f67ed921 100644 --- a/docs/adr/2023-06-13-pipeline_dades_llargues.md +++ b/docs/adr/2023-06-13-pipeline_dades_llargues.md @@ -10,7 +10,7 @@ https://trello.com/c/rmCTOJrH/205-decidir-com-farem-lobt-i-el-cincminutal-r%C3%A Passem a una macrotaula de dades llargues clau-valor per a les dades cincminutals? -Com serà la obt? horaria calculada un cop cada hora? I quan passem a comptadors 15-minutals, segurem amb dbt run 15-minutal? Quina frescor de les dades cal? --> posem la discussió de la obt a [un adr diferent](/somenergia-jardiner/adr/2023-06-13-obt_plantes) +Com serà la obt? horaria calculada un cop cada hora? I quan passem a comptadors 15-minutals, segurem amb dbt run 15-minutal? Quina frescor de les dades cal? --> posem la discussió de la obt a [un adr diferent](../adr/2023-06-13-obt_plantes.md) ## Context and Problem Statement @@ -31,7 +31,7 @@ Ara que sabem molt més dbt i que incorporarem un proveïdor de dades cincminuta ## Decision Outcome Chosen option: opció 3 - + * [e.g., improvement of quality attribute satisfaction, follow-up decisions required, …] @@ -74,4 +74,4 @@ Chosen option: opció 3 ## Links * [Link type] [Link to ADR] -* … +* … numbers of links can vary --> diff --git a/docs/desenvolupadors/deprecated/TODOs.md b/docs/deprecated/TODOs.md similarity index 99% rename from docs/desenvolupadors/deprecated/TODOs.md rename to docs/deprecated/TODOs.md index 003e4b0d..9d36f60b 100644 --- a/docs/desenvolupadors/deprecated/TODOs.md +++ b/docs/deprecated/TODOs.md @@ -37,7 +37,6 @@ sum(a/x) + sum(b/y) ... mensual wrong sum((a+b+c)/(x+y+z)) -- mensual correct - # views per limitar l'accés a la info dels tècnics No cal fer-ho, limitarem l'accés a la wide table o farem servir els permisos del superset o ja veurem @@ -68,4 +67,4 @@ view_sensorirradiationregistry_ercam.sql ``` zero_inverter_power_at_daylight.sql zero_sonda_irradiation_at_daylight.sql -``` \ No newline at end of file +``` diff --git a/docs/desenvolupadors/tutorials/novu_notifications.md b/docs/desenvolupadors/2023-02-08-novu_notifications.md similarity index 96% rename from docs/desenvolupadors/tutorials/novu_notifications.md rename to docs/desenvolupadors/2023-02-08-novu_notifications.md index 5b28f62c..4b421b8f 100644 --- a/docs/desenvolupadors/tutorials/novu_notifications.md +++ b/docs/desenvolupadors/2023-02-08-novu_notifications.md @@ -1,3 +1,7 @@ +title: Gestionar notificacions a Novu +description: Com interactuar amb el sistema de notificacions Novu +date: 2023-07-10 + # Novu helpers and quickstart ## Swagger API diff --git a/docs/desenvolupadors/2023-06-10-overview-devs.md b/docs/desenvolupadors/2023-06-10-overview-devs.md index a29e113d..550533f5 100644 --- a/docs/desenvolupadors/2023-06-10-overview-devs.md +++ b/docs/desenvolupadors/2023-06-10-overview-devs.md @@ -1,13 +1,20 @@ +title: Overview for devs +description: Overview of the project for developers +date: 2023-06-10 +tags: dbt, airflow, plantmonitor, plantreader, jardiner + # Overview for devs ## quickstart -To fully deploy the dbt models you can do +To fully deploy the dbt models to the production schema you can do ```bash dbt build -s tag:jardiner,tag:legacy --store-failures --full-refresh --target prod ``` +You will need to have the `prod` profile in your `~/.dbt/profiles.yml` file. + ## Current State of the project ### Pieces @@ -18,7 +25,9 @@ dbt build -s tag:jardiner,tag:legacy --store-failures --full-refresh --target pr Fa d'ORM de les plantes, conté la api i és codi de les raspberrypis. A més a més també té el codi d'ingesta d'apis de tercers. -La meitat del plantmonitor acabarà deprecated pel proveïdor de dades. +!!! warning + + La meitat del plantmonitor acabarà deprecated pel proveïdor de dades [Plant Reader](https://github.com/Som-Energia/somenergia-plant-reader) @@ -92,6 +101,6 @@ union -- notify.py --> alerts obt --> datasets ``` -Després de l'[ADR d'estructura de pipeline](/somenergia-jardiner/adr/2023-06-13-pipeline_dades_llargues) +Després de l'[ADR d'estructura de pipeline](../adr/2023-06-13-pipeline_dades_llargues.md) -See [Roadmap](/somenergia-jardiner/projecte/2023-06-03-macrofase roadmap/) +See [Roadmap](""../projecte/2023-06-03-macrofase roadmap.md") diff --git a/docs/desenvolupadors/tutorials/dbt_cmds_utils.md b/docs/desenvolupadors/2023-07-10-dbt_cmds_utils.md similarity index 68% rename from docs/desenvolupadors/tutorials/dbt_cmds_utils.md rename to docs/desenvolupadors/2023-07-10-dbt_cmds_utils.md index 12c431ee..4e0144ec 100644 --- a/docs/desenvolupadors/tutorials/dbt_cmds_utils.md +++ b/docs/desenvolupadors/2023-07-10-dbt_cmds_utils.md @@ -1,11 +1,15 @@ +title: Comandes de dbt comunes +description: Comandes de dbt que es fan servir sovint +date: 2023-07-10 + # dbt commands 1. Generar i servir la documentació per a poder veure el directed graph. ```bash -dbt docs generate --project-dir dbt_jardiner --target pre +$ dbt docs generate --project-dir dbt_jardiner --target pre -dbt docs serve --project-dir dbt_jardiner --target pre --port 8010 +$ dbt docs serve --project-dir dbt_jardiner --target pre --port 8010 ``` 2. Pujar tots els CSVs de seeds @@ -23,4 +27,4 @@ Per fer testing amb un csv determinat: ```bash dbt run --project-dir project_x --target testing --vars '{"test_sample":"nom_del_csv"}' -m model_x -``` \ No newline at end of file +``` diff --git a/docs/desenvolupadors/tutorials/codi_reciclable.md b/docs/desenvolupadors/2023-07-13-codi_reciclable.md similarity index 88% rename from docs/desenvolupadors/tutorials/codi_reciclable.md rename to docs/desenvolupadors/2023-07-13-codi_reciclable.md index d18ff9b3..1faafb75 100644 --- a/docs/desenvolupadors/tutorials/codi_reciclable.md +++ b/docs/desenvolupadors/2023-07-13-codi_reciclable.md @@ -1,3 +1,7 @@ +title: SQL reutilitzable +description: SQLs que es poden reutilitzar en diferents contexts +date: 2023-07-10 + # Reusuable sqls ## dbt sql for rolling window diff --git a/docs/desenvolupadors/2023-08-28-afegir-planta-a-superset.md b/docs/desenvolupadors/2023-08-28-afegir-planta-a-superset.md new file mode 100644 index 00000000..824af128 --- /dev/null +++ b/docs/desenvolupadors/2023-08-28-afegir-planta-a-superset.md @@ -0,0 +1,37 @@ +title: Afegir dades de planta des de DSET a dashboards +description: Com afegir una planta (dset) +date: 2023-08-28 + +# Com afegir dades d'una planta nova a instància de superset + +Tenim una instància de [superset](https://indicadors.somenergia.coop) que mostra dades de plantes des de el pipe de transformació de dades arribant del nostre proveïdor de dades. + +Per afegir una nova planta a la visualització, cal seguir un protocol documentat al [Formulari d’inscripció de noves plantes a Superset](https://docs.google.com/document/d/172qofxlvavQhdQhyJ9HE73CX6YLVYA2u6Mq3w_NOzyA/edit#heading=h.mcehna5jn0kc) + +Un cop aquest formulari estigui completat, cal seguir els següents passos: + +!!! warning "Necessites permisos d'administrador" + + Aquesta tasca és per a desenvolupadors que treballen amb el pipe de transformació de dades. Si no ets un desenvolupador, no cal que facis aquesta tasca. + +1. Verificar que estem rebent dades dels senyals de la planta nova des de l'API del proveïdor. Si no, avisar a l'equip de gestió d'actius per que facin incidència al proveïdor. +2. Executar la tasca de sync de l'airbyte d'uuids + 1. [Dades fixes de plantes noves](https://airbyte.moll.somenergia.coop/workspaces/12f265b4-e398-44b4-9c95-1b5b165d6883/connections/e3301299-f721-4efb-b864-0e5b0233b145) + 2. [Objectius de producció](https://airbyte.moll.somenergia.coop/workspaces/12f265b4-e398-44b4-9c95-1b5b165d6883/connections/e5a12532-7c8b-4e12-a7ee-9b71f47c655a/status) + 3. [Relacions entre UUIDs de senyals, aparells i plantes](https://airbyte.moll.somenergia.coop/workspaces/12f265b4-e398-44b4-9c95-1b5b165d6883/connections/6ee76168-27ab-4ac4-9f50-b619664191db/status) +3. Executar `dbt snapshot` per tractar canvis a les plantes segons SCD2, si ni ha hagut. Tenir cura que al actualitzar les dades de la planta, s'ha de modificar les columnes del tipus `updated_at` dins dels documents a omplir. +4. Verificar que les dades apareixen a la visualització de superset. +5. Actualitzar els filtres i els rols de seguretat de la nova planta a superset. Veure [Row Level Security](2024-02-16-row-level-security.md) per més informació. + +!!! info Per què no un ORM? + + Tenim al roadmap fer-ho amb un model normalitzat, però està al roadmap del ERP i no tenim una data concreta. + + Com que ja no tenim ORM que verifiqui la integritat de les dades, tenim tests que compleixen aquesta funció. + + Si algun senyal d'un device no té una definició igual de device (per uuid), els tests no passaran. + Per a veure quin senyal és el transgressor, executeu amb el flag `--store-failures` + i així guardarà el resultat de la query del test en una taula sota l'schema `_dbt_test__audit` + + En particular, podeu veure `test_to_debug_device_uuid_errors` per veure les senyals que no quadren. + diff --git a/docs/desenvolupadors/2023-08-28-afegir-planta.md b/docs/desenvolupadors/2023-08-28-afegir-planta.md deleted file mode 100644 index 11bebb78..00000000 --- a/docs/desenvolupadors/2023-08-28-afegir-planta.md +++ /dev/null @@ -1,33 +0,0 @@ -# Com afegir una planta (dset) - -Una nova planta afegirà signals al paquet de dset amb llurs devices. Per tant cal - -Anirem al directori [sincronització airbyte](https://drive.google.com/drive/folders/1xeGCcfYTTFo9p0cPEmi9RKT9e1HOWIlR?usp=drive_link) i omplir els tres documents - -1. [] Mirar si ja és a [airbyte_Dades fixes de planta]() -2. [] Producció anual -3. [] Buscar el seu Mapeig de comunicacions al drive i posar un enllaç a [mapejos_plantes](https://drive.google.com/drive/u/0/folders/1LePhB83sKLQZ58onEluj4PyN_sjgD8aQ) -4. [] Modificar el csv `airbyte_signal_device_relation` copiant les columnes - - ``` - signal_description -> signal - device_description -> device - metric -> metric - device_type -> device_type - device_uuid -> device_uuid - signal_uuid -> signal_uuid - ``` - - I copiant el plant i plant_uuid de les dades fixes, posant l'inserted_at a ara - -5. [] Executar la tasca de sync de l'airbyte d'uuids -6. [] Executar `dbt snapshot` -7. [] Executar un `dbt build --target prod` o fer un push a main - -Com que ja no tenim ORM que verifiqui la integritat de les dades, tenim tests que compleixen aquesta funció. - -Si algun senyal d'un device no té una definició igual de device (per uuid), els tests no passaran. -Per a veure quin senyal és el transgressor, executeu amb el flag `--store-failures` -i així guardarà el resultat de la query del test en una taula sota l'schema `_dbt_test__audit` - -En particular, podeu veure `test_to_debug_device_uuid_errors` per verue les senyals que no quadren. diff --git a/docs/desenvolupadors/tutorials/alta_planta.md b/docs/desenvolupadors/2023-08-28-alta_planta.md similarity index 82% rename from docs/desenvolupadors/tutorials/alta_planta.md rename to docs/desenvolupadors/2023-08-28-alta_planta.md index 5c637355..a52d3430 100644 --- a/docs/desenvolupadors/tutorials/alta_planta.md +++ b/docs/desenvolupadors/2023-08-28-alta_planta.md @@ -1,29 +1,29 @@ -# Procediment a seguir a l’incorporar una nova planta fotovoltaica +title: Alta d'una planta fotovoltaica a +description: Procediment a seguir a l’incorporar una nova planta fotovoltaica +date: 2023-08-28 +# Procediment a seguir a l’incorporar una nova planta fotovoltaica -Dades ------ +## Dades Les dades necessàries per a donar d'alta una planta són [Unificació Noms Projectes Generació](https://docs.google.com/spreadsheets/d/1JwHmZ_FuIs7em8nLrdSNg052O_0IA9Fm1qGp_hz8QlU/edit#gid=0) -Càlcul Rendiment de Planta_ (buscar-ho al cercador de drive) +Càlcul Rendiment de Planta\_ (buscar-ho al cercador de drive) [Modelos contadores_inversores_SCADAS](https://docs.google.com/spreadsheets/d/1Z7_QpzestHBzVf9o78IC3hdGWMDH6dlyUr8f9LewO1o/edit#gid=904950265) -Xarxa ------ +## Xarxa -1. Conectar-se a la ip del router de la planta i afegir el port forwarding que calgui (raspberrypi o aparells) +1. Conectar-se a la ip del router de la planta i afegir el port forwarding que calgui (raspberrypi o aparells) 2. Demanar a sistemes que afegeixi la planta al dns e.g. planta-.somenergia.coop Tot això ha de quedar escrit en el document Mapeig de Planta -Aparells --------- +## Aparells -**Comptador** +### Comptador Agafar les dades de [Modelos contadores_inversores_SCADAS](https://docs.google.com/spreadsheets/d/1Z7_QpzestHBzVf9o78IC3hdGWMDH6dlyUr8f9LewO1o/edit#gid=904950265) @@ -31,16 +31,15 @@ ip lan, port, porta d’enllaç i contrasenya telèfon si s'escau -**Inversor** +### Inversor ip -**Raspberrypi** +### Raspberrypi ip lan, usuari, password -Prèvia ------- +## Prèvia Tots els scripts fan referència al repositori de github `plantmonitor`. @@ -51,7 +50,6 @@ afegir la plantlocation, plantparameters i moduleparameters. Un exemple [a plant PLANTMONITOR_MODULE_SETTINGS='conf.settings.prod' python addPlant.py data/plant-asomada.yaml ``` - De moment manualment cal afegir els registres de plantestimatedmonthlyenergy. L'any és irrellevant. Si tenim històrics d'energia objectiu, els podeu afegir. @@ -85,30 +83,27 @@ whitelistejar la ip pública al plantmonitor per a què pugui pujar lectures Afegir les dades al diccionari de solargis (quan deixi de ser hard-coded ja no caldrà aquest pas) +## Serveis de SomEnergia addicionals -Serveis de SomEnergia addicionals ---------------------------------- +### nagios -**nagios** afegir-la al nagios o modificar-la en cas de canvi d’ip pública -**opendata** +### opendata Cal afegir la info de la nova planta a taula literal que es fa servir a somenergia-opendata/som_opendata/queries/plantpower.sql (Un cop aquesta info estigui a plantmonitor, l’opendata podrà agafar-la directament per sql i no caldrà fer aquest pas) -**generationkwh** +### generationkwh Si la planta està inclosa al generation, és important afegir-la a l’erp abans de la mitja nit del dia de posada a producció. Si no, cal descartar càlculs de drets del generation per a que incloguin els resultats. Si, a més, els drets s’han començat a gastar (15 dies de marge de facturació), cal reperfilar els nous drets amb la producció afegida perquè no superi els drets ja atorgats. La nova planta es crea fent servir l’script: somenergia-generationkwh/scripts/genkwh_plants.sh -Un exemple complert de com afegir una planta amb aquest script: https://github.com/Som-Energia/somenergia-generationkwh/blob/master/scripts/genkwh_migrate_plantmeter_1_7_0_newplant.sh +Un exemple complert de com afegir una planta amb aquest script: Es recomana provar primer a un ERP de testing o local, i, després aplicar-ho a producció. -Un exemple d’script de migració en la que vam haver de reperfilar: https://github.com/Som-Energia/somenergia-generationkwh/blob/master/scripts/genkwh_migrate_plantmeter_1_7_2_fontivsolarfix.sh - - +Un exemple d’script de migració en la que vam haver de reperfilar: diff --git a/docs/desenvolupadors/2024-01-11-incremental-dedup.md b/docs/desenvolupadors/2024-01-11-incremental-dedup.md index da4c434e..2ab00994 100644 --- a/docs/desenvolupadors/2024-01-11-incremental-dedup.md +++ b/docs/desenvolupadors/2024-01-11-incremental-dedup.md @@ -1,4 +1,11 @@ +title: Incremental Dedup +description: How to deduplicate incremental loads in dbt +date: 2024-01-11 +tags: dbt, incremental +# Incremental Dedup + +Exemple de com fer un incremental amb deduplicació en dbt. ```sql {{ @@ -20,48 +27,57 @@ where {%- endif %} ``` +| source senyal | ts | valor | queried_at | +| ----------------- | ----- | ----- | ---------- | +| energia_comptador | 03:00 | 80 | +1d 04:00 | +| energia_comptador | 03:00 | null | 04:00 | +| potencia_inversor | 03:00 | 50 | +1d 04:00 | +| potencia_inversor | 03:00 | 50 | 04:00 | + +Son ara les 15:04. en la materialitzada tindrem +| source senyal | ts | valor | +| ----------------- | ----- | ----- | +| potencia_inversor | 14:00 | 67 | +| energia_comptador | 14:00 | null | -source -senyal ts valor queried_at -energia_comptador 03:00 80 +1d 04:00 -energia_comptador 03:00 null 04:00 -potencia_inversor 03:00 50 +1d 04:00 -potencia_inversor 03:00 50 04:00 +o bien, la última fila no hi serà: +| source senyal | ts | valor | +| ----------------- | ----- | ----- | +| potencia_inversor | 14:00 | 67 | -son ara les 15:04 -en la materialitzada tindrem -potencia_inversor 14:00 67 -energia_comptador 14:00 null -- o aquesta fila no hi serà +# Explicació -where max(ts) = 14:00: -potencia_inversor 14:00 67 -energia_comptador 14:00 null +`where max(ts) = 14:00`: -where max(ts) - 24h: -energia_comptador 03:00 80 +1d 04:00 -potencia_inversor 03:00 50 +1d 04:00 -potencia_inversor 03:00 50 04:00 -potencia_inversor 14:00 67 -energia_comptador 14:00 null +| source senyal | ts | valor | +| ----------------- | ----- | ----- | +| potencia_inversor | 14:00 | 67 | +| energia_comptador | 14:00 | null | +`where max(ts) - 24h`: -unique (signal_uuid, ts) +| source senyal | ts | valor | queried_at | +| ----------------- | ----- | ----- | ---------- | +| energia_comptador | 03:00 | 80 | +1d 04:00 | +| potencia_inversor | 03:00 | 50 | +1d 04:00 | +| potencia_inversor | 03:00 | 50 | 04:00 | +| potencia_inversor | 14:00 | 67 | | +| energia_comptador | 14:00 | null | | -source -energia_comptador 03:00 80 +1d 04:00 +`unique (signal_uuid, ts)`: +| source senyal | ts | valor | queried_at | +| ----------------- | ----- | ----- | ---------- | +| energia_comptador | 03:00 | 80 | +1d 04:00 | # prova pràctica Abans d'executar l'incremental tenim aquest tres últims registres a materialized one hour late -|group_name|queried_at|ts|signal_code|signal_device_type|signal_device_uuid|signal_frequency|signal_id|signal_is_virtual|signal_last_ts|signal_last_value|signal_type|signal_tz|signal_unit|signal_uuid|signal_uuid_raw|signal_value|materialized_at| -|----------|----------|--|-----------|------------------|------------------|----------------|---------|-----------------|--------------|-----------------|-----------|---------|-----------|-----------|---------------|------------|---------------| -|SE_vallehermoso|2024-01-09 13:24:42.488123+01|2024-01-05 23:15:00+01|ce_eactexp|meter|08bc8d88-4ea2-4ee9-b817-00e1f07debba|15 minutes|983894|false|2024-01-08 23:45:00+01|0|absolute|Europe/Madrid|kWh|646d1ec2-0ca2-4c22-9739-8161aafb224e|646d1ec2-0ca2-4c22-9739-8161aafb224e|0.0|2024-01-09 13:36:52.925381+01| -|SE_asomada|2024-01-09 13:24:42.488123+01|2024-01-05 23:00:00+01|s8102|meter|c5ed9fab-e73c-40a5-acb3-113e22052fd6|5 minutes|1031060|false|2024-01-09 11:47:00+01|60.2|absolute|Europe/Madrid|V|dd065f6a-4ded-41a8-98d3-ba239f9a2a47|dd065f6a-4ded-41a8-98d3-ba239f9a2a47|60.2|2024-01-09 13:36:52.925381+01| -|SE_tahal|2024-01-09 13:24:42.488123+01|2024-01-05 23:45:00+01|ce_ercapexp_er3|meter|5deb3780-02e2-4dcf-a6a7-de646991762c|15 minutes|983890|false|2024-01-08 23:45:00+01|0|absolute|Europe/Madrid|kVArh|31ae7d09-95db-447d-b5bf-358b056ef5bf|31ae7d09-95db-447d-b5bf-358b056ef5bf|0.0|2024-01-09 13:36:52.925381+01| - - - +| group_name | queried_at | ts | signal_code | signal_device_type | signal_device_uuid | signal_frequency | signal_id | signal_is_virtual | signal_last_ts | signal_last_value | signal_type | signal_tz | signal_unit | signal_uuid | signal_uuid_raw | signal_value | materialized_at | +| --------------- | ----------------------------- | ---------------------- | --------------- | ------------------ | ------------------------------------ | ---------------- | --------- | ----------------- | ---------------------- | ----------------- | ----------- | ------------- | ----------- | ------------------------------------ | ------------------------------------ | ------------ | ----------------------------- | +| SE_vallehermoso | 2024-01-09 13:24:42.488123+01 | 2024-01-05 23:15:00+01 | ce_eactexp | meter | 08bc8d88-4ea2-4ee9-b817-00e1f07debba | 15 minutes | 983894 | false | 2024-01-08 23:45:00+01 | 0 | absolute | Europe/Madrid | kWh | 646d1ec2-0ca2-4c22-9739-8161aafb224e | 646d1ec2-0ca2-4c22-9739-8161aafb224e | 0.0 | 2024-01-09 13:36:52.925381+01 | +| SE_asomada | 2024-01-09 13:24:42.488123+01 | 2024-01-05 23:00:00+01 | s8102 | meter | c5ed9fab-e73c-40a5-acb3-113e22052fd6 | 5 minutes | 1031060 | false | 2024-01-09 11:47:00+01 | 60.2 | absolute | Europe/Madrid | V | dd065f6a-4ded-41a8-98d3-ba239f9a2a47 | dd065f6a-4ded-41a8-98d3-ba239f9a2a47 | 60.2 | 2024-01-09 13:36:52.925381+01 | +| SE_tahal | 2024-01-09 13:24:42.488123+01 | 2024-01-05 23:45:00+01 | ce_ercapexp_er3 | meter | 5deb3780-02e2-4dcf-a6a7-de646991762c | 15 minutes | 983890 | false | 2024-01-08 23:45:00+01 | 0 | absolute | Europe/Madrid | kVArh | 31ae7d09-95db-447d-b5bf-358b056ef5bf | 31ae7d09-95db-447d-b5bf-358b056ef5bf | 0.0 | 2024-01-09 13:36:52.925381+01 | diff --git a/docs/desenvolupadors/2024-02-16-row-level-security.md b/docs/desenvolupadors/2024-02-16-row-level-security.md index 77ba99d6..12d11d25 100644 --- a/docs/desenvolupadors/2024-02-16-row-level-security.md +++ b/docs/desenvolupadors/2024-02-16-row-level-security.md @@ -1,17 +1,33 @@ -El procés és: +short_title: Row Level Security +title: Row Level Security +description: Com afegir Row Level Security a Superset +date: 2024-02-16 -1. Crear un rol `Manteniment_` +## Context + +Tenim usuaris externs que necessiten mirar dades de plantes, però només de les plantes que gestionen. Això ho podem fer amb [Row Level Security a Superset](https://superset.apache.org/docs/security/#row-level-security). + +El procés és el següent: + +1. Crear un rol `Manteniment_` si no existeix, pel cas de noves plantes. 1. Afegir una regla [Row Level Security](https://indicadors.somenergia.coop/rowlevelsecurity/list/)
-![image](https://gitlab.somenergia.coop/et/somenergia-jardiner/uploads/b9ed42b43f95f2c9a527db63ebb18113/image.png)
-Pareu atenció al camp "clause", s'afegirà com a condició where exclusiva (and) als datasets que seleccionem. + ![image](https://gitlab.somenergia.coop/et/somenergia-jardiner/uploads/b9ed42b43f95f2c9a527db63ebb18113/image.png)
+ Pareu atenció al camp "clause", s'afegirà com a condició where exclusiva (and) als datasets que seleccionem. 1. Donar accés als charts d'un dashboard
-![image](https://gitlab.somenergia.coop/et/somenergia-jardiner/uploads/238587e65493d666317a60fee0521fa4/image.png) + ![image](https://gitlab.somenergia.coop/et/somenergia-jardiner/uploads/238587e65493d666317a60fee0521fa4/image.png) 1. [Afegir la o les usuàries](https://indicadors.somenergia.coop/users/list/) i assignar-los els rols [Gamma] i `[Manteniment_]` -easy peasy. Ho he fet amb energes amb la clause `nom_planta in (noms plantes)` +I ja ho tens. Ho he fet amb energes amb la clause `nom_planta in (noms plantes)` + +## Decisions + +Hem decidit a 02/2024 que no val la pena propagar l'empresa de manteniment en el pipe per a cobrir aquest use case, ja que no cal afegir 5m aquestes metadadades per a un tema de visualització i permisos. _Ho gestionem en la capa de visualització._ + +!!! warning "Canvis d'empresa de manteniment" -Hem decidit a 02/2024 que no val la pena propagar l'empresa de manteniment en el pipe per a cobrir aquest use case, ja que no cal afegir 5m aquestes metadadades per a un tema de visualització i permisos. Ho gestionem en la capa de visualització. + Canvis d'empresa de manteniment s'hauran de fer al Superset (i a les metadades de la planta, per coherència). -:warning: Canvis d'empresa de manteniment s'hauran de fer al Superset (i a les metadades de la planta, per coherència). +## Referències -Més Context: [#101](https://gitlab.somenergia.coop/et/somenergia-jardiner/-/issues/101) i [Trello](https://trello.com/c/mPOAsMe8/211-spike-superset) +- [Issue #101 a gitlab](https://gitlab.somenergia.coop/et/somenergia-jardiner/-/issues/101) +- [Targeta Trello](https://trello.com/c/mPOAsMe8/211-spike-superset) diff --git a/docs/index.md b/docs/index.md index 8e845337..50c77b7e 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,3 +1,9 @@ # Sobre Som Energia Jardiner Documentació per eines desenvolupades en el context del projecte `somenergia-jardiner` de Som Energia. + +## Repositoris + +- [Jardiner](https://gitlab.somenergia.coop/et/somenergia-jardiner/) +- [Mirror a Github](https://github.com/Som-Energia/somenergia-jardiner/) +- [Plant reader](https://gitlab.somenergia.coop/et/somenergia-plant-reader) per la lectura de la API del proveïdor de dades. diff --git a/docs/projecte/2023-06-03-macrofase roadmap.md b/docs/projecte/2023-06-03-macrofase roadmap.md index bbb14392..f77b7b2a 100644 --- a/docs/projecte/2023-06-03-macrofase roadmap.md +++ b/docs/projecte/2023-06-03-macrofase roadmap.md @@ -1,11 +1,8 @@ # Macrofase Jardiner 2023 -[Roadmap](https://docs.google.com/spreadsheets/d/11dNYUeBwkIjPpcYOHmcOoNDpLoUxH9qfcm6h2YXRtoI/edit#gid=1971023159) - -### Roadmap overview - - +[Document de Roadmap](https://docs.google.com/spreadsheets/d/11dNYUeBwkIjPpcYOHmcOoNDpLoUxH9qfcm6h2YXRtoI/edit#gid=1971023159) +## Roadmap overview ### Flux de dades @@ -39,17 +36,18 @@ Pulir el dashboard de tècnics per a Asomada i Llanillos. DoD: TODO -### Obtenció de dades de tots els equips i totes les plantes +### Obtenció de dades de tots els equips i totes les plantes - [x] Definir estratègia d'obtenció de dades (remot/hardware/api's a plataformes...) (1) - [x] Coordinació amb altres equips de la cooperativa per veure altres alternatives (6) - [x] Proves pilot amb algún proveïdor (8) -- [-] Analisi de proveïdors/alternatives i selecció de partner per externalitzar l'obtenció de dades dels inversors i sondes (2) +- [-] Analisi de proveïdors/alternatives i selecció de partner per externalitzar l'obtenció de dades dels inversors i sondes (2) - [-] Obtenció de dades tots els comptadors per IP. - - [ ] Adaptació a frequència quarthoraria. (3) + + - [ ] Adaptació a frequència quarthoraria. (3) - [-] Suport a la integració de prova pilot (6) - - Falta saber com es diferencien les plantes + - Falta saber com es diferencien les plantes DoD: @@ -71,21 +69,20 @@ En funcionament normal són delays de màxim un dia. Amb incidència poden ser 1 ### Aterració de tot plegat - [ ] Intro per devs - - Més doc? + - Més doc? - [ ] Afegit la proveïdora de dades al pipe - - Decidir com (multisource/sol) + - Decidir com (multisource/sol) - [ ] Refer el pipe (fast+slow) - - Que no tardi 30s - - DBT standards + - Que no tardi 30s + - DBT standards - [ ] Definir el dashboard de tècnics - - Volem fer servir redash? - - ~Parlar amb GA per si volen el Dashboard diferent [al actual]()~ El volen tal com són - - [ ] Dashboard tecnics Exiom amb Asomada - - [ ] Dashboard tecnics Exiom amb Llanillos (source original és dset) + - Volem fer servir redash? + - ~Parlar amb GA per si volen el Dashboard diferent [al actual]()~ El volen tal com són + - [ ] Dashboard tecnics Exiom amb Asomada + - [ ] Dashboard tecnics Exiom amb Llanillos (source original és dset) - [ ] Deute tècnic Dev - - CDD - - Private doc github project - + - CDD + - Private doc github project ## Fita 2: Dashboard Overview plantes @@ -136,4 +133,4 @@ Prioritat 8 ## Fita 7: Dashboard GURB -Prioritat 9 \ No newline at end of file +Prioritat 9 diff --git a/docs/projecte/2023-06-03-overview.md b/docs/projecte/2023-06-03-overview.md index e05f905a..6ee00a47 100644 --- a/docs/projecte/2023-06-03-overview.md +++ b/docs/projecte/2023-06-03-overview.md @@ -4,26 +4,18 @@ Descripció del projecte des del punt de vista de l'usuari ## Context de naixement -* A quin objectiu respon? *Guanyar autonomia dins del mercat elèctric** - -* Context: per què és important? per guanyar en eficiència i optimitzar la producció (problema) - -* Intenció: on volem arribar? tenir un sistema de monitorització unificat per a totes les plantes de producció (solució) - -* Criteris d’èxit: com mesurar progrés i èxit? - - - Número de plantes que poden gestionar per persona (20-25 plantes/persona) - - Agilitat en detectar incidències (1.800 €/dia per pèrdues de producció seria el cas més extrem per una planta de 5MW. Si triguem una setmana en detectar-ho serien 12.600 €) +- A quin objectiu respon? **Guanyar autonomia dins del mercat elèctric**. +- Context: per què és important? per guanyar en eficiència i optimitzar la producció (problema) +- Intenció: on volem arribar? tenir un sistema de monitorització unificat per a totes les plantes de producció (solució) +- Criteris d’èxit: com mesurar progrés i èxit? + - Número de plantes que poden gestionar per persona (20-25 plantes/persona) + - Agilitat en detectar incidències (1.800 €/dia per pèrdues de producció seria el cas més extrem per una planta de 5MW. Si triguem una setmana en detectar-ho serien 12.600 €) ## Peces -Usuaris: Tècnics de planta, Gestió d'Actius, Altres àmbits de l'ET, IT - -Altres Rols: Proveïdors d'internet - -Interfícies de contacte: - -- redash -- Helpscout/notificacions -- erp - +- Usuaris: Tècnics de planta, Gestió d'Actius, Altres àmbits de l'ET, IT +- Altres Rols: Proveïdors d'internet +- Interfícies de contacte: + - redash + - Helpscout/notificacions + - erp diff --git a/jardiner/__init__.py b/jardiner/__init__.py index 95e0723d..2d62d357 100644 --- a/jardiner/__init__.py +++ b/jardiner/__init__.py @@ -1,4 +1,4 @@ -__version__ = "0.1.1" +__version__ = "0.2.0" from .jardiner_utils import get_dbapi # noqa from .jardineria import get_alarms # noqa diff --git a/mkdocs.yml b/mkdocs.yml index fd08209a..022cd9e5 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,8 +1,25 @@ -site_name: Jardiner +site_name: Jardiner de Som Energia +repo_url: https://gitlab.somenergia.coop/et/somenergia-jardiner +edit_uri: edit/main/docs/ + +extra: + homepage: https://gitlab.somenergia.coop/et/somenergia-jardiner theme: name: material + features: + - navigation.path + - navigation.indexes + - navigation.top + - content.action.edit + - content.action.view + - content.code.copy + - content.code.annotate + icon: + edit: material/pencil + view: material/eye + palette: - media: '(prefers-color-scheme: light)' scheme: default @@ -21,6 +38,8 @@ theme: markdown_extensions: - attr_list + - admonition + - pymdownx.details - pymdownx.emoji: emoji_index: !!python/name:material.extensions.emoji.twemoji emoji_generator: !!python/name:material.extensions.emoji.to_svg @@ -34,3 +53,8 @@ markdown_extensions: - name: mermaid class: mermaid format: !!python/name:pymdownx.superfences.fence_code_format + +plugins: + - search + - git-revision-date-localized + diff --git a/poetry-mkdocs-requirements.txt b/poetry-mkdocs-requirements.txt index 42430e64..eb9b5539 100644 --- a/poetry-mkdocs-requirements.txt +++ b/poetry-mkdocs-requirements.txt @@ -1,25 +1,35 @@ -certifi==2023.5.7 ; python_version >= "3.8" and python_version < "3.11" -charset-normalizer==3.2.0 ; python_version >= "3.8" and python_version < "3.11" -click==8.1.6 ; python_version >= "3.8" and python_version < "3.11" -colorama==0.4.6 ; python_version >= "3.8" and python_version < "3.11" and platform_system == "Windows" -ghp-import==2.1.0 ; python_version >= "3.8" and python_version < "3.11" -idna==3.4 ; python_version >= "3.8" and python_version < "3.11" -importlib-metadata==6.8.0 ; python_version >= "3.8" and python_version < "3.10" -jinja2==3.1.2 ; python_version >= "3.8" and python_version < "3.11" -markdown==3.3.7 ; python_version >= "3.8" and python_version < "3.11" -markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "3.11" -mergedeep==1.3.4 ; python_version >= "3.8" and python_version < "3.11" -mkdocs-material-extensions==1.1.1 ; python_version >= "3.8" and python_version < "3.11" -mkdocs-material==8.5.11 ; python_version >= "3.8" and python_version < "3.11" -mkdocs==1.4.3 ; python_version >= "3.8" and python_version < "3.11" -packaging==23.1 ; python_version >= "3.8" and python_version < "3.11" -pygments==2.15.1 ; python_version >= "3.8" and python_version < "3.11" -pymdown-extensions==9.11 ; python_version >= "3.8" and python_version < "3.11" -python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "3.11" -pyyaml-env-tag==0.1 ; python_version >= "3.8" and python_version < "3.11" -pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "3.11" -requests==2.31.0 ; python_version >= "3.8" and python_version < "3.11" -six==1.16.0 ; python_version >= "3.8" and python_version < "3.11" -urllib3==2.0.3 ; python_version >= "3.8" and python_version < "3.11" -watchdog==3.0.0 ; python_version >= "3.8" and python_version < "3.11" -zipp==3.16.2 ; python_version >= "3.8" and python_version < "3.10" +babel==2.14.0 ; python_version >= "3.8" and python_version < "3.12" +certifi==2024.2.2 ; python_version >= "3.8" and python_version < "3.12" +charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "3.12" +click==8.1.3 ; python_version >= "3.8" and python_version < "3.12" +colorama==0.4.6 ; python_version >= "3.8" and python_version < "3.12" +ghp-import==2.1.0 ; python_version >= "3.8" and python_version < "3.12" +gitdb==4.0.11 ; python_version >= "3.8" and python_version < "3.12" +gitpython==3.1.42 ; python_version >= "3.8" and python_version < "3.12" +idna==3.6 ; python_version >= "3.8" and python_version < "3.12" +importlib-metadata==6.11.0 ; python_version >= "3.8" and python_version < "3.10" +jinja2==3.1.3 ; python_version >= "3.8" and python_version < "3.12" +markdown==3.5.2 ; python_version >= "3.8" and python_version < "3.12" +markupsafe==2.1.5 ; python_version >= "3.8" and python_version < "3.12" +mergedeep==1.3.4 ; python_version >= "3.8" and python_version < "3.12" +mkdocs-git-revision-date-localized-plugin==1.2.4 ; python_version >= "3.8" and python_version < "3.12" +mkdocs-material-extensions==1.3.1 ; python_version >= "3.8" and python_version < "3.12" +mkdocs-material==9.5.9 ; python_version >= "3.8" and python_version < "3.12" +mkdocs==1.5.3 ; python_version >= "3.8" and python_version < "3.12" +packaging==23.1 ; python_version >= "3.8" and python_version < "3.12" +paginate==0.5.6 ; python_version >= "3.8" and python_version < "3.12" +pathspec==0.11.2 ; python_version >= "3.8" and python_version < "3.12" +platformdirs==4.2.0 ; python_version >= "3.8" and python_version < "3.12" +pygments==2.17.2 ; python_version >= "3.8" and python_version < "3.12" +pymdown-extensions==10.7 ; python_version >= "3.8" and python_version < "3.12" +python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "3.12" +pytz==2024.1 ; python_version >= "3.8" and python_version < "3.12" +pyyaml-env-tag==0.1 ; python_version >= "3.8" and python_version < "3.12" +pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "3.12" +regex==2023.12.25 ; python_version >= "3.8" and python_version < "3.12" +requests==2.31.0 ; python_version >= "3.8" and python_version < "3.12" +six==1.16.0 ; python_version >= "3.8" and python_version < "3.12" +smmap==5.0.1 ; python_version >= "3.8" and python_version < "3.12" +urllib3==1.26.18 ; python_version >= "3.8" and python_version < "3.12" +watchdog==4.0.0 ; python_version >= "3.8" and python_version < "3.12" +zipp==3.17.0 ; python_version >= "3.8" and python_version < "3.10" diff --git a/poetry.lock b/poetry.lock index 154a60dd..1eea351f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -3448,6 +3448,23 @@ watchdog = ">=2.0" i18n = ["babel (>=2.9.0)"] min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-import (==1.0)", "importlib-metadata (==4.3)", "jinja2 (==2.11.1)", "markdown (==3.2.1)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "packaging (==20.5)", "pathspec (==0.11.1)", "platformdirs (==2.2.0)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "typing-extensions (==3.10)", "watchdog (==2.0)"] +[[package]] +name = "mkdocs-git-revision-date-localized-plugin" +version = "1.2.4" +description = "Mkdocs plugin that enables displaying the localized date of the last git modification of a markdown file." +optional = false +python-versions = ">=3.8" +files = [ + {file = "mkdocs-git-revision-date-localized-plugin-1.2.4.tar.gz", hash = "sha256:08fd0c6f33c8da9e00daf40f7865943113b3879a1c621b2bbf0fa794ffe997d3"}, + {file = "mkdocs_git_revision_date_localized_plugin-1.2.4-py3-none-any.whl", hash = "sha256:1f94eb510862ef94e982a2910404fa17a1657ecf29f45a07b0f438c00767fc85"}, +] + +[package.dependencies] +babel = ">=2.7.0" +GitPython = "*" +mkdocs = ">=1.0" +pytz = "*" + [[package]] name = "mkdocs-material" version = "9.5.9" @@ -4316,7 +4333,6 @@ files = [ {file = "psycopg2_binary-2.9.9-cp311-cp311-win32.whl", hash = "sha256:dc4926288b2a3e9fd7b50dc6a1909a13bbdadfc67d93f3374d984e56f885579d"}, {file = "psycopg2_binary-2.9.9-cp311-cp311-win_amd64.whl", hash = "sha256:b76bedd166805480ab069612119ea636f5ab8f8771e640ae103e05a4aae3e417"}, {file = "psycopg2_binary-2.9.9-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8532fd6e6e2dc57bcb3bc90b079c60de896d2128c5d9d6f24a63875a95a088cf"}, - {file = "psycopg2_binary-2.9.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b0605eaed3eb239e87df0d5e3c6489daae3f7388d455d0c0b4df899519c6a38d"}, {file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f8544b092a29a6ddd72f3556a9fcf249ec412e10ad28be6a0c0d948924f2212"}, {file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d423c8d8a3c82d08fe8af900ad5b613ce3632a1249fd6a223941d0735fce493"}, {file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e5afae772c00980525f6d6ecf7cbca55676296b580c0e6abb407f15f3706996"}, @@ -4325,8 +4341,6 @@ files = [ {file = "psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:cb16c65dcb648d0a43a2521f2f0a2300f40639f6f8c1ecbc662141e4e3e1ee07"}, {file = "psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:911dda9c487075abd54e644ccdf5e5c16773470a6a5d3826fda76699410066fb"}, {file = "psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:57fede879f08d23c85140a360c6a77709113efd1c993923c59fde17aa27599fe"}, - {file = "psycopg2_binary-2.9.9-cp312-cp312-win32.whl", hash = "sha256:64cf30263844fa208851ebb13b0732ce674d8ec6a0c86a4e160495d299ba3c93"}, - {file = "psycopg2_binary-2.9.9-cp312-cp312-win_amd64.whl", hash = "sha256:81ff62668af011f9a48787564ab7eded4e9fb17a4a6a74af5ffa6a457400d2ab"}, {file = "psycopg2_binary-2.9.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2293b001e319ab0d869d660a704942c9e2cce19745262a8aba2115ef41a0a42a"}, {file = "psycopg2_binary-2.9.9-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03ef7df18daf2c4c07e2695e8cfd5ee7f748a1d54d802330985a78d2a5a6dca9"}, {file = "psycopg2_binary-2.9.9-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a602ea5aff39bb9fac6308e9c9d82b9a35c2bf288e184a816002c9fae930b77"}, @@ -4722,7 +4736,6 @@ files = [ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, @@ -4730,15 +4743,8 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, - {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, - {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, - {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, @@ -4755,7 +4761,6 @@ files = [ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, @@ -4763,7 +4768,6 @@ files = [ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, @@ -5247,50 +5251,30 @@ files = [ {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b42169467c42b692c19cf539c38d4602069d8c1505e97b86387fcf7afb766e1d"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:07238db9cbdf8fc1e9de2489a4f68474e70dffcb32232db7c08fa61ca0c7c462"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fff3573c2db359f091e1589c3d7c5fc2f86f5bdb6f24252c2d8e539d4e45f412"}, - {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_24_aarch64.whl", hash = "sha256:aa2267c6a303eb483de8d02db2871afb5c5fc15618d894300b88958f729ad74f"}, - {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:840f0c7f194986a63d2c2465ca63af8ccbbc90ab1c6001b1978f05119b5e7334"}, - {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:024cfe1fc7c7f4e1aff4a81e718109e13409767e4f871443cbff3dba3578203d"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win32.whl", hash = "sha256:c69212f63169ec1cfc9bb44723bf2917cbbd8f6191a00ef3410f5a7fe300722d"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win_amd64.whl", hash = "sha256:cabddb8d8ead485e255fe80429f833172b4cadf99274db39abc080e068cbcc31"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bef08cd86169d9eafb3ccb0a39edb11d8e25f3dae2b28f5c52fd997521133069"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:b16420e621d26fdfa949a8b4b47ade8810c56002f5389970db4ddda51dbff248"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:25c515e350e5b739842fc3228d662413ef28f295791af5e5110b543cf0b57d9b"}, - {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_24_aarch64.whl", hash = "sha256:1707814f0d9791df063f8c19bb51b0d1278b8e9a2353abbb676c2f685dee6afe"}, - {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:46d378daaac94f454b3a0e3d8d78cafd78a026b1d71443f4966c696b48a6d899"}, - {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:09b055c05697b38ecacb7ac50bdab2240bfca1a0c4872b0fd309bb07dc9aa3a9"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win32.whl", hash = "sha256:53a300ed9cea38cf5a2a9b069058137c2ca1ce658a874b79baceb8f892f915a7"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win_amd64.whl", hash = "sha256:c2a72e9109ea74e511e29032f3b670835f8a59bbdc9ce692c5b4ed91ccf1eedb"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ebc06178e8821efc9692ea7544aa5644217358490145629914d8020042c24aa1"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:edaef1c1200c4b4cb914583150dcaa3bc30e592e907c01117c08b13a07255ec2"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d176b57452ab5b7028ac47e7b3cf644bcfdc8cacfecf7e71759f7f51a59e5c92"}, - {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_24_aarch64.whl", hash = "sha256:1dc67314e7e1086c9fdf2680b7b6c2be1c0d8e3a8279f2e993ca2a7545fecf62"}, - {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3213ece08ea033eb159ac52ae052a4899b56ecc124bb80020d9bbceeb50258e9"}, - {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aab7fd643f71d7946f2ee58cc88c9b7bfc97debd71dcc93e03e2d174628e7e2d"}, - {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win32.whl", hash = "sha256:5c365d91c88390c8d0a8545df0b5857172824b1c604e867161e6b3d59a827eaa"}, - {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win_amd64.whl", hash = "sha256:1758ce7d8e1a29d23de54a16ae867abd370f01b5a69e1a3ba75223eaa3ca1a1b"}, {file = "ruamel.yaml.clib-0.2.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a5aa27bad2bb83670b71683aae140a1f52b0857a2deff56ad3f6c13a017a26ed"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c58ecd827313af6864893e7af0a3bb85fd529f862b6adbefe14643947cfe2942"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_12_0_arm64.whl", hash = "sha256:f481f16baec5290e45aebdc2a5168ebc6d35189ae6fea7a58787613a25f6e875"}, - {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_24_aarch64.whl", hash = "sha256:77159f5d5b5c14f7c34073862a6b7d34944075d9f93e681638f6d753606c6ce6"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7f67a1ee819dc4562d444bbafb135832b0b909f81cc90f7aa00260968c9ca1b3"}, - {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4ecbf9c3e19f9562c7fdd462e8d18dd902a47ca046a2e64dba80699f0b6c09b7"}, - {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:87ea5ff66d8064301a154b3933ae406b0863402a799b16e4a1d24d9fbbcbe0d3"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win32.whl", hash = "sha256:75e1ed13e1f9de23c5607fe6bd1aeaae21e523b32d83bb33918245361e9cc51b"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win_amd64.whl", hash = "sha256:3f215c5daf6a9d7bbed4a0a4f760f3113b10e82ff4c5c44bec20a68c8014f675"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1b617618914cb00bf5c34d4357c37aa15183fa229b24767259657746c9077615"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:a6a9ffd280b71ad062eae53ac1659ad86a17f59a0fdc7699fd9be40525153337"}, - {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:305889baa4043a09e5b76f8e2a51d4ffba44259f6b4c72dec8ca56207d9c6fe1"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:700e4ebb569e59e16a976857c8798aee258dceac7c7d6b50cab63e080058df91"}, - {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:e2b4c44b60eadec492926a7270abb100ef9f72798e18743939bdbf037aab8c28"}, - {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e79e5db08739731b0ce4850bed599235d601701d5694c36570a99a0c5ca41a9d"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win32.whl", hash = "sha256:955eae71ac26c1ab35924203fda6220f84dce57d6d7884f189743e2abe3a9fbe"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win_amd64.whl", hash = "sha256:56f4252222c067b4ce51ae12cbac231bce32aee1d33fbfc9d17e5b8d6966c312"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:03d1162b6d1df1caa3a4bd27aa51ce17c9afc2046c31b0ad60a0a96ec22f8001"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba64af9fa9cebe325a62fa398760f5c7206b215201b0ec825005f1b18b9bccf"}, - {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:a1a45e0bb052edf6a1d3a93baef85319733a888363938e1fc9924cb00c8df24c"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:da09ad1c359a728e112d60116f626cc9f29730ff3e0e7db72b9a2dbc2e4beed5"}, - {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:184565012b60405d93838167f425713180b949e9d8dd0bbc7b49f074407c5a8b"}, - {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a75879bacf2c987c003368cf14bed0ffe99e8e85acfa6c0bfffc21a090f16880"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win32.whl", hash = "sha256:84b554931e932c46f94ab306913ad7e11bba988104c5cff26d90d03f68258cd5"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win_amd64.whl", hash = "sha256:25ac8c08322002b06fa1d49d1646181f0b2c72f5cbc15a85e80b4c30a544bb15"}, {file = "ruamel.yaml.clib-0.2.8.tar.gz", hash = "sha256:beb2e0404003de9a4cab9753a8805a8fe9320ee6673136ed7f04255fe60bb512"}, @@ -5509,7 +5493,6 @@ files = [ {file = "SQLAlchemy-1.4.49-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:03db81b89fe7ef3857b4a00b63dedd632d6183d4ea5a31c5d8a92e000a41fc71"}, {file = "SQLAlchemy-1.4.49-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:95b9df9afd680b7a3b13b38adf6e3a38995da5e162cc7524ef08e3be4e5ed3e1"}, {file = "SQLAlchemy-1.4.49-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a63e43bf3f668c11bb0444ce6e809c1227b8f067ca1068898f3008a273f52b09"}, - {file = "SQLAlchemy-1.4.49-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca46de16650d143a928d10842939dab208e8d8c3a9a8757600cae9b7c579c5cd"}, {file = "SQLAlchemy-1.4.49-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f835c050ebaa4e48b18403bed2c0fda986525896efd76c245bdd4db995e51a4c"}, {file = "SQLAlchemy-1.4.49-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c21b172dfb22e0db303ff6419451f0cac891d2e911bb9fbf8003d717f1bcf91"}, {file = "SQLAlchemy-1.4.49-cp310-cp310-win32.whl", hash = "sha256:5fb1ebdfc8373b5a291485757bd6431de8d7ed42c27439f543c81f6c8febd729"}, @@ -5519,35 +5502,26 @@ files = [ {file = "SQLAlchemy-1.4.49-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5debe7d49b8acf1f3035317e63d9ec8d5e4d904c6e75a2a9246a119f5f2fdf3d"}, {file = "SQLAlchemy-1.4.49-cp311-cp311-win32.whl", hash = "sha256:82b08e82da3756765c2e75f327b9bf6b0f043c9c3925fb95fb51e1567fa4ee87"}, {file = "SQLAlchemy-1.4.49-cp311-cp311-win_amd64.whl", hash = "sha256:171e04eeb5d1c0d96a544caf982621a1711d078dbc5c96f11d6469169bd003f1"}, - {file = "SQLAlchemy-1.4.49-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f23755c384c2969ca2f7667a83f7c5648fcf8b62a3f2bbd883d805454964a800"}, - {file = "SQLAlchemy-1.4.49-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8396e896e08e37032e87e7fbf4a15f431aa878c286dc7f79e616c2feacdb366c"}, - {file = "SQLAlchemy-1.4.49-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66da9627cfcc43bbdebd47bfe0145bb662041472393c03b7802253993b6b7c90"}, - {file = "SQLAlchemy-1.4.49-cp312-cp312-win32.whl", hash = "sha256:9a06e046ffeb8a484279e54bda0a5abfd9675f594a2e38ef3133d7e4d75b6214"}, - {file = "SQLAlchemy-1.4.49-cp312-cp312-win_amd64.whl", hash = "sha256:7cf8b90ad84ad3a45098b1c9f56f2b161601e4670827d6b892ea0e884569bd1d"}, {file = "SQLAlchemy-1.4.49-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:36e58f8c4fe43984384e3fbe6341ac99b6b4e083de2fe838f0fdb91cebe9e9cb"}, {file = "SQLAlchemy-1.4.49-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b31e67ff419013f99ad6f8fc73ee19ea31585e1e9fe773744c0f3ce58c039c30"}, - {file = "SQLAlchemy-1.4.49-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ebc22807a7e161c0d8f3da34018ab7c97ef6223578fcdd99b1d3e7ed1100a5db"}, {file = "SQLAlchemy-1.4.49-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c14b29d9e1529f99efd550cd04dbb6db6ba5d690abb96d52de2bff4ed518bc95"}, {file = "SQLAlchemy-1.4.49-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c40f3470e084d31247aea228aa1c39bbc0904c2b9ccbf5d3cfa2ea2dac06f26d"}, {file = "SQLAlchemy-1.4.49-cp36-cp36m-win32.whl", hash = "sha256:706bfa02157b97c136547c406f263e4c6274a7b061b3eb9742915dd774bbc264"}, {file = "SQLAlchemy-1.4.49-cp36-cp36m-win_amd64.whl", hash = "sha256:a7f7b5c07ae5c0cfd24c2db86071fb2a3d947da7bd487e359cc91e67ac1c6d2e"}, {file = "SQLAlchemy-1.4.49-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:4afbbf5ef41ac18e02c8dc1f86c04b22b7a2125f2a030e25bbb4aff31abb224b"}, {file = "SQLAlchemy-1.4.49-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24e300c0c2147484a002b175f4e1361f102e82c345bf263242f0449672a4bccf"}, - {file = "SQLAlchemy-1.4.49-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:393cd06c3b00b57f5421e2133e088df9cabcececcea180327e43b937b5a7caa5"}, {file = "SQLAlchemy-1.4.49-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:201de072b818f8ad55c80d18d1a788729cccf9be6d9dc3b9d8613b053cd4836d"}, {file = "SQLAlchemy-1.4.49-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7653ed6817c710d0c95558232aba799307d14ae084cc9b1f4c389157ec50df5c"}, {file = "SQLAlchemy-1.4.49-cp37-cp37m-win32.whl", hash = "sha256:647e0b309cb4512b1f1b78471fdaf72921b6fa6e750b9f891e09c6e2f0e5326f"}, {file = "SQLAlchemy-1.4.49-cp37-cp37m-win_amd64.whl", hash = "sha256:ab73ed1a05ff539afc4a7f8cf371764cdf79768ecb7d2ec691e3ff89abbc541e"}, {file = "SQLAlchemy-1.4.49-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:37ce517c011560d68f1ffb28af65d7e06f873f191eb3a73af5671e9c3fada08a"}, {file = "SQLAlchemy-1.4.49-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1878ce508edea4a879015ab5215546c444233881301e97ca16fe251e89f1c55"}, - {file = "SQLAlchemy-1.4.49-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95ab792ca493891d7a45a077e35b418f68435efb3e1706cb8155e20e86a9013c"}, {file = "SQLAlchemy-1.4.49-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0e8e608983e6f85d0852ca61f97e521b62e67969e6e640fe6c6b575d4db68557"}, {file = "SQLAlchemy-1.4.49-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ccf956da45290df6e809ea12c54c02ace7f8ff4d765d6d3dfb3655ee876ce58d"}, {file = "SQLAlchemy-1.4.49-cp38-cp38-win32.whl", hash = "sha256:f167c8175ab908ce48bd6550679cc6ea20ae169379e73c7720a28f89e53aa532"}, {file = "SQLAlchemy-1.4.49-cp38-cp38-win_amd64.whl", hash = "sha256:45806315aae81a0c202752558f0df52b42d11dd7ba0097bf71e253b4215f34f4"}, {file = "SQLAlchemy-1.4.49-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:b6d0c4b15d65087738a6e22e0ff461b407533ff65a73b818089efc8eb2b3e1de"}, {file = "SQLAlchemy-1.4.49-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a843e34abfd4c797018fd8d00ffffa99fd5184c421f190b6ca99def4087689bd"}, - {file = "SQLAlchemy-1.4.49-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:738d7321212941ab19ba2acf02a68b8ee64987b248ffa2101630e8fccb549e0d"}, {file = "SQLAlchemy-1.4.49-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1c890421651b45a681181301b3497e4d57c0d01dc001e10438a40e9a9c25ee77"}, {file = "SQLAlchemy-1.4.49-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d26f280b8f0a8f497bc10573849ad6dc62e671d2468826e5c748d04ed9e670d5"}, {file = "SQLAlchemy-1.4.49-cp39-cp39-win32.whl", hash = "sha256:ec2268de67f73b43320383947e74700e95c6770d0c68c4e615e9897e46296294"}, @@ -6236,4 +6210,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = ">=3.8,<3.11" -content-hash = "c6689ad895e308d3e91c09e2759c20d71d7ef0277c6ccd95fdcfc0dae3ba9fc3" +content-hash = "a616c6c82a2dc816fabc8998f0c3221724494054e744cda32f3f0aec9d6ed2ea" diff --git a/pyproject.toml b/pyproject.toml index b96a670c..071b1258 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,13 +3,13 @@ authors = ["Dades "] description = "" name = "jardiner" readme = "README.md" -version = "0.1.1" +version = "0.2.0" [tool.poetry.dependencies] dbt-postgres = "^1.2.2" pandas = "^1.5.0" pendulum = "^2.1.2" -python = ">=3.8,<3.11" +python = ">=3.8,<3.12" python-dotenv = "^0.21.0" requests = "^2.28.1" sqlalchemy = "^1.4.41,!=1.4.50,!=1.4.51" @@ -39,6 +39,7 @@ mkdocs = "^1.5.3" mkdocs-material = "^9.5.9" mkdocs-material-extensions = "^1.1.1" pymdown-extensions = "^10.7" +mkdocs-git-revision-date-localized-plugin = "^1.2.4" [tool.poetry.group.dbt-docs.dependencies] dbt-osmosis = "^0.11.22"