From 939e8d1e31c854c0d2cc8e04c5bc904eef24dbd9 Mon Sep 17 00:00:00 2001 From: Hugo Lecuyer Date: Thu, 23 Jan 2025 16:56:48 +0100 Subject: [PATCH 1/9] wip --- docs/index.md | 3 + docs/jinja_test.md | 983 +++++++++++++++++++++++ mkdocs.yml | 28 + pyproject.toml | 1 + schemas/service.json | 21 +- src/data_inclusion/schema/__main__.py | 84 +- src/data_inclusion/schema/services.py | 38 +- src/data_inclusion/schema/template.md.j2 | 66 ++ 8 files changed, 1213 insertions(+), 11 deletions(-) create mode 100644 docs/index.md create mode 100644 docs/jinja_test.md create mode 100644 mkdocs.yml create mode 100644 src/data_inclusion/schema/template.md.j2 diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..e626d48 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,3 @@ +# Home + +blabla diff --git a/docs/jinja_test.md b/docs/jinja_test.md new file mode 100644 index 0000000..f29816b --- /dev/null +++ b/docs/jinja_test.md @@ -0,0 +1,983 @@ +Test L'adresse du service + +## **:material-hand-pointing-right: id** +Type: `string` + + +Default: `9fe85aab-bc7a-49c3-ab10-233b1c92379e` + + +Titre: Identifiant + + +Description: Identifiant unique du service. + + + +## **:material-hand-pointing-right: structure_id** +:green_circle: {++Requis++} + +Type: `string` + + + +Titre: Structure Id + + + + +## **:material-hand-pointing-right: source** +:green_circle: {++Requis++} + +Type: `string` + + + +Titre: Source + + + + +## **:material-hand-pointing-right: nom** +:green_circle: {++Requis++} + +Type: `string` + + + +Titre: Nom + + + + +## **:material-hand-pointing-right: presentation_resume** +Type: `string` + + + +Titre: Presentation Resume + + + + +## **:material-hand-pointing-right: presentation_detail** +Type: `string` + + + +Titre: Presentation Detail + + + + +## **:material-hand-pointing-right: types** +Type: +`array` + +| format | pattern | +| :------: | :---------------------------------------------------------------------------------: | +| `enum` | None | +??? abstract "Valeurs possibles" + + `accompagnement` + + `accueil` + + `aide-financiere` + + `aide-materielle` + + `atelier` + + `formation` + + `information` + + `numerique` + + `autonomie` + + `delegation` + + `financement` + + + + +Titre: Types + + + + +## **:material-hand-pointing-right: thematiques** +Type: +`array` + +| format | pattern | +| :------: | :---------------------------------------------------------------------------------: | +| `enum` | None | +??? abstract "Valeurs possibles" + + `acces-aux-droits-et-citoyennete` + + `acces-aux-droits-et-citoyennete--accompagnement-dans-les-demarches-administratives` + + `acces-aux-droits-et-citoyennete--accompagnement-juridique` + + `acces-aux-droits-et-citoyennete--aide-aux-victimes` + + `acces-aux-droits-et-citoyennete--connaitre-ses-droits` + + `acces-aux-droits-et-citoyennete--demandeurs-dasile-et-naturalisation` + + `acces-aux-droits-et-citoyennete--developpement-durable` + + `acces-aux-droits-et-citoyennete--faciliter-laction-citoyenne` + + `accompagnement-social-et-professionnel-personnalise` + + `accompagnement-social-et-professionnel-personnalise--decrochage-scolaire` + + `accompagnement-social-et-professionnel-personnalise--definition-du-projet-professionnel` + + `accompagnement-social-et-professionnel-personnalise--parcours-d-insertion-socioprofessionnel` + + `apprendre-francais` + + `apprendre-francais--accompagnement-insertion-pro` + + `apprendre-francais--communiquer-vie-tous-les-jours` + + `apprendre-francais--suivre-formation` + + `choisir-un-metier` + + `choisir-un-metier--confirmer-son-choix-de-metier` + + `choisir-un-metier--connaitre-les-opportunites-demploi` + + `choisir-un-metier--decouvrir-un-metier-ou-un-secteur-dactivite` + + `choisir-un-metier--identifier-ses-points-forts-et-ses-competences` + + `creation-activite` + + `creation-activite--definir-son-projet-de-creation-dentreprise` + + `creation-activite--developper-son-entreprise` + + `creation-activite--financer-son-projet` + + `creation-activite--reseautage-pour-createurs-dentreprise` + + `creation-activite--structurer-son-projet-de-creation-dentreprise` + + `equipement-et-alimentation` + + `equipement-et-alimentation--acces-a-du-materiel-informatique` + + `equipement-et-alimentation--acces-a-un-telephone-et-un-abonnement` + + `equipement-et-alimentation--alimentation` + + `equipement-et-alimentation--aide-menagere` + + `equipement-et-alimentation--electromenager` + + `equipement-et-alimentation--habillement` + + `famille` + + `famille--accompagnement-femme-enceinte-bebe-jeune-enfant` + + `famille--garde-denfants` + + `famille--information-et-accompagnement-des-parents` + + `famille--jeunes-sans-soutien-familial` + + `famille--soutien-a-la-parentalite` + + `famille--soutien-aux-familles` + + `famille--violences-intrafamiliales` + + `gestion-financiere` + + `gestion-financiere--accompagnement-aux-personnes-en-difficultes-financieres` + + `gestion-financiere--acces-au-micro-credit` + + `gestion-financiere--apprendre-a-gerer-son-budget` + + `gestion-financiere--beneficier-daides-financieres` + + `gestion-financiere--creation-et-utilisation-dun-compte-bancaire` + + `gestion-financiere--obtenir-une-aide-alimentaire` + + `gestion-financiere--prevention-et-gestion-du-surendettement` + + `handicap` + + `handicap--accompagnement-par-une-structure-specialisee` + + `handicap--adaptation-au-poste-de-travail` + + `handicap--adapter-son-logement` + + `handicap--aide-a-la-personne` + + `handicap--connaissance-des-droits-des-travailleurs` + + `handicap--faire-reconnaitre-un-handicap` + + `handicap--favoriser-le-retour-et-le-maintien-dans-lemploi` + + `handicap--gerer-le-depart-a-la-retraite-des-personnes-en-situation-de-handicap` + + `handicap--mobilite-des-personnes-en-situation-de-handicap` + + `illettrisme` + + `illettrisme--accompagner-scolarite` + + `illettrisme--ameliorer-vocabulaire` + + `illettrisme--etre-autonome` + + `illettrisme--info-acquisition-connaissances` + + `illettrisme--permis-conduire` + + `illettrisme--reperer-situation-illettrisme` + + `illettrisme--surmonter-trouble-apprentissage` + + `illettrisme--trouver-emploi-formation` + + `illettrisme--utiliser-numerique` + + `illettrisme--valider-certification-clea` + + `logement-hebergement` + + `logement-hebergement--aides-financieres-investissement-locatif` + + `logement-hebergement--besoin-dadapter-mon-logement` + + `logement-hebergement--connaissance-de-ses-droits-et-interlocuteurs` + + `logement-hebergement--demenagement` + + `logement-hebergement--etre-accompagne-dans-son-projet-accession` + + `logement-hebergement--etre-accompagne-en cas-de-difficultes-financieres` + + `logement-hebergement--etre-accompagne-pour-se-loger` + + `logement-hebergement--financer-son-projet-travaux` + + `logement-hebergement--gerer-son-budget` + + `logement-hebergement--mal-loges-sans-logis` + + `logement-hebergement--probleme-avec-son-logement` + + `logement-hebergement--reprendre-un-emploi-ou-une-formation` + + `mobilite` + + `mobilite--acheter-un-vehicule-motorise` + + `mobilite--acheter-un-velo` + + `mobilite--aides-a-la-reprise-demploi-ou-a-la-formation` + + `mobilite--apprendre-a-utiliser-un-deux-roues` + + `mobilite--comprendre-et-utiliser-les-transports-en-commun` + + `mobilite--entretenir-reparer-son-vehicule` + + `mobilite--etre-accompagne-dans-son-parcours-mobilite` + + `mobilite--louer-un-vehicule` + + `mobilite--financer-mon-projet-mobilite` + + `mobilite--preparer-son-permis-de-conduire-se-reentrainer-a-la-conduite` + + `numerique` + + `numerique--acceder-a-du-materiel` + + `numerique--acceder-a-une-connexion-internet` + + `numerique--accompagner-les-demarches-de-sante` + + `numerique--approfondir-ma-culture-numerique` + + `numerique--creer-avec-le-numerique` + + `numerique--creer-et-developper-mon-entreprise` + + `numerique--devenir-autonome-dans-les-demarches-administratives` + + `numerique--favoriser-mon-insertion-professionnelle` + + `numerique--prendre-en-main-un-ordinateur` + + `numerique--prendre-en-main-un-smartphone-ou-une-tablette` + + `numerique--promouvoir-la-citoyennete-numerique` + + `numerique--realiser-des-demarches-administratives-avec-un-accompagnement` + + `numerique--s-equiper-en-materiel-informatique` + + `numerique--soutenir-la-parentalite-et-l-education-avec-le-numerique` + + `numerique--utiliser-le-numerique-au-quotidien` + + `preparer-sa-candidature` + + `preparer-sa-candidature--developper-son-reseau` + + `preparer-sa-candidature--organiser-ses-demarches-de-recherche-demploi` + + `preparer-sa-candidature--realiser-un-cv-et-ou-une-lettre-de-motivation` + + `preparer-sa-candidature--valoriser-ses-competences` + + `remobilisation` + + `remobilisation--bien-etre` + + `remobilisation--decouvrir-son-potentiel-via-le-sport-et-la-culture` + + `remobilisation--discrimination` + + `remobilisation--identifier-ses-competences-et-aptitudes` + + `remobilisation--lien-social` + + `remobilisation--participer-a-des-actions-solidaires-ou-de-benevolat` + + `remobilisation--pression-sociale` + + `remobilisation--restaurer-sa-confiance-son-image-de-soi` + + `sante` + + `sante--acces-aux-soins` + + `sante--accompagnement-de-la-femme-enceinte-du-bebe-et-du-jeune-enfant` + + `sante--accompagner-les-traumatismes` + + `sante--bien-etre-psychologique` + + `sante--diagnostic-et-accompagnement-a-lemployabilite` + + `sante--faire-face-a-une-situation-daddiction` + + `sante--obtenir-la-prise-en-charge-de-frais-medicaux` + + `sante--prevention-et-acces-aux-soins` + + `sante--se-soigner-et-prevenir-la-maladie` + + `sante--vie-relationnelle-et-affective` + + `se-former` + + `se-former--monter-son-dossier-de-formation` + + `se-former--trouver-sa-formation` + + `se-former--utiliser-le-numerique` + + `souvrir-a-linternational` + + `souvrir-a-linternational--connaitre-les-opportunites-demploi-a-letranger` + + `souvrir-a-linternational--sinformer-sur-les-aides-pour-travailler-a-letranger` + + `souvrir-a-linternational--sorganiser-suite-a-son-retour-en-france` + + `trouver-un-emploi` + + `trouver-un-emploi--convaincre-un-recruteur-en-entretien` + + `trouver-un-emploi--faire-des-candidatures-spontanees` + + `trouver-un-emploi--repondre-a-des-offres-demploi` + + `trouver-un-emploi--suivre-ses-candidatures-et-relancer-les-employeurs` + + + + +Titre: Thematiques + + + + +## **:material-hand-pointing-right: prise_rdv** +Type: `string` + +| format | pattern | +| :------------: | :---------------------------------------------------------------------------: | +| `uri` |None | + + + +Titre: Prise Rdv + + + + +## **:material-hand-pointing-right: frais** +Type: +`array` + +| format | pattern | +| :------: | :---------------------------------------------------------------------------------: | +| `enum` | None | +??? abstract "Valeurs possibles" + + `gratuit` + + `gratuit-sous-conditions` + + `payant` + + `adhesion` + + `pass-numerique` + + + + +Titre: Frais + + + + +## **:material-hand-pointing-right: frais_autres** +Type: `string` + + + +Titre: Frais Autres + + + + +## **:material-hand-pointing-right: profils** +Type: +`array` + +| format | pattern | +| :------: | :---------------------------------------------------------------------------------: | +| `enum` | None | +??? abstract "Valeurs possibles" + + `adultes` + + `alternants` + + `beneficiaires-rsa` + + `deficience-visuelle` + + `demandeurs-demploi` + + `familles-enfants` + + `etudiants` + + `femmes` + + `handicaps-mentaux` + + `handicaps-psychiques` + + `jeunes` + + `jeunes-16-26` + + `locataires` + + `personnes-de-nationalite-etrangere` + + `personnes-en-situation-de-handicap` + + `personnes-en-situation-illettrisme` + + `personnes-handicapees` + + `proprietaires` + + `public-langues-etrangeres` + + `retraites` + + `salaries` + + `sans-domicile-fixe` + + `seniors-65` + + `sortants-de-detention` + + `surdite` + + `victimes` + + `tous-publics` + + `personnes-en-situation-durgence` + + + + +Titre: Profils + + + + +## **:material-hand-pointing-right: profils_precisions** +Type: `string` + + + +Titre: Profils Precisions + + + + +## **:material-hand-pointing-right: pre_requis** +Type: `array` + + + +Titre: Pre Requis + + + + +## **:material-hand-pointing-right: cumulable** +Type: `boolean` + + + +Titre: Cumulable + + + + +## **:material-hand-pointing-right: justificatifs** +Type: `array` + + + +Titre: Justificatifs + + + + +## **:material-hand-pointing-right: formulaire_en_ligne** +Type: `string` + +| format | pattern | +| :------------: | :---------------------------------------------------------------------------: | +| `uri` |None | + + + +Titre: Formulaire En Ligne + + + + +## **:material-hand-pointing-right: commune** +Type: `string` + + + +Titre: Commune + + + + +## **:material-hand-pointing-right: code_postal** +Type: `string` + +| format | pattern | +| :------------: | :---------------------------------------------------------------------------: | +| None | `^\d{5}$` | + + + +Titre: Code Postal + + + + +## **:material-hand-pointing-right: code_insee** +:green_circle: {++Requis++} + +Type: `string` + +| format | pattern | +| :------------: | :---------------------------------------------------------------------------: | +| None | `^\w{5}$` | + + + +Titre: Code Insee + + +Description: [Deprecated] + + + +## **:material-hand-pointing-right: adresse** +:green_circle: {++Requis++} + +???+ warning "Deprecated" + Ce champs est deprecie. Cf le change log pour plus d'information. +Type: `string` + + + +Titre: L'adresse du service + + +Description: Adresse du service. Doit être renseignée si le service est diffusé. + + +Examples: + +``` +17 rue du mollard 38160 Saint Marcellin +``` + +``` +56 rue de la république 69002 Lyon +``` + + + +## **:material-hand-pointing-right: complement_adresse** +Type: `string` + + + +Titre: Complement Adresse + + + + +## **:material-hand-pointing-right: longitude** +Type: `number` + + + +Titre: Longitude + + + + +## **:material-hand-pointing-right: latitude** +Type: `number` + + + +Titre: Latitude + + + + +## **:material-hand-pointing-right: recurrence** +Type: `string` + + + +Titre: Recurrence + + + + +## **:material-hand-pointing-right: date_creation** +Type: `string` + +| format | pattern | +| :------------: | :---------------------------------------------------------------------------: | +| `date` |None | + + + +Titre: Date Creation + + + + +## **:material-hand-pointing-right: date_suspension** +Type: `string` + +| format | pattern | +| :------------: | :---------------------------------------------------------------------------: | +| `date` |None | + + + +Titre: Date Suspension + + + + +## **:material-hand-pointing-right: lien_source** +Type: `string` + +| format | pattern | +| :------------: | :---------------------------------------------------------------------------: | +| `uri` |None | + + + +Titre: Lien Source + + + + +## **:material-hand-pointing-right: telephone** +Type: `string` + + + +Titre: Telephone + + + + +## **:material-hand-pointing-right: courriel** +Type: `string` + +| format | pattern | +| :------------: | :---------------------------------------------------------------------------: | +| `email` |None | + + + +Titre: Courriel + + + + +## **:material-hand-pointing-right: contact_public** +Type: `boolean` + + + +Titre: Contact Public + + + + +## **:material-hand-pointing-right: date_maj** +Type: `string` + +| format | pattern | +| :------------: | :---------------------------------------------------------------------------: | +| `date`, `date-time`|None | + + + +Titre: Date Maj + + + + +## **:material-hand-pointing-right: modes_accueil** +Type: +`array` + +| format | pattern | +| :------: | :---------------------------------------------------------------------------------: | +| `enum` | None | +??? abstract "Valeurs possibles" + + `a-distance` + + `en-presentiel` + + + + +Titre: Modes Accueil + + + + +## **:material-hand-pointing-right: zone_diffusion_type** +Type: +`string` + +| format | pattern | +| :------: | :---------------------------------------------------------------------------------: | +| `enum` | None | +??? abstract "Valeurs possibles" + + `commune` + + `epci` + + `region` + + `departement` + + `pays` + + + + + + + +## **:material-hand-pointing-right: zone_diffusion_code** +Type: `string` + +| format | pattern | +| :------------: | :---------------------------------------------------------------------------: | +| None | `^\w{5}$`, `^\d{9}$`, `^\w{2,3}$`, `^\d{2}$` | + + + +Titre: Zone Diffusion Code + + + + +## **:material-hand-pointing-right: zone_diffusion_nom** +Type: `string` + + + +Titre: Zone Diffusion Nom + + + + +## **:material-hand-pointing-right: contact_nom_prenom** +Type: `string` + + + +Titre: Contact Nom Prenom + + + + +## **:material-hand-pointing-right: page_web** +Type: `string` + +| format | pattern | +| :------------: | :---------------------------------------------------------------------------: | +| `uri` |None | + + + +Titre: Page Web + + +Description: Lien vers une page web dédiée au service sur le site web de la structure. Ce champ n'est pas destiné à recevoir un lien vers le site d'un producteur de donnée. + + +Examples: + +``` +https://insersol.fr/biclou-atelier-reparation-participatif-solidaire/ +``` + + + +## **:material-hand-pointing-right: modes_orientation_beneficiaire** +Type: +`array` + +| format | pattern | +| :------: | :---------------------------------------------------------------------------------: | +| `enum` | None | +??? abstract "Valeurs possibles" + + `completer-le-formulaire-dadhesion` + + `envoyer-un-mail` + + `se-presenter` + + `telephoner` + + `prendre-rdv` + + `autre` + + + + +Titre: Modes Orientation Beneficiaire + + + + +## **:material-hand-pointing-right: modes_orientation_beneficiaire_autres** +Type: `string` + + + +Titre: Modes Orientation Beneficiaire Autres + + + + +## **:material-hand-pointing-right: modes_orientation_accompagnateur** +Type: +`array` + +| format | pattern | +| :------: | :---------------------------------------------------------------------------------: | +| `enum` | None | +??? abstract "Valeurs possibles" + + `completer-le-formulaire-dadhesion` + + `envoyer-un-mail` + + `envoyer-un-mail-avec-une-fiche-de-prescription` + + `telephoner` + + `prendre-rdv` + + `autre` + + + + +Titre: Modes Orientation Accompagnateur + + + + +## **:material-hand-pointing-right: modes_orientation_accompagnateur_autres** +Type: `string` + + + +Titre: Modes Orientation Accompagnateur Autres + + + diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..96713e6 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,28 @@ +site_name: My Docs +site_url: https://mydomain.org/mysite +theme: + name: material +nav: + - Home: index.md + - JinjaTest: jinja_test.md +plugins: +- search +- mkdocstrings +markdown_extensions: + - def_list + - pymdownx.tasklist: + custom_checkbox: true + - tables + - attr_list + - pymdownx.emoji: + emoji_index: !!python/name:material.extensions.emoji.twemoji + emoji_generator: !!python/name:material.extensions.emoji.to_svg + - md_in_html + - pymdownx.superfences + - admonition + - pymdownx.details + - pymdownx.critic + - pymdownx.caret + - pymdownx.keys + - pymdownx.mark + - pymdownx.tilde \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 68b4d37..3638b71 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,6 +16,7 @@ classifiers = [ dependencies = [ "pydantic[email]>=2.1.1,<3.0.0", "pendulum~=3.0", + "mkdocs-material==9.*", ] diff --git a/schemas/service.json b/schemas/service.json index e39c1bc..4cf7468 100644 --- a/schemas/service.json +++ b/schemas/service.json @@ -261,6 +261,7 @@ "type": "string" } }, + "description": "Service.\n\nAttributes:\n id: Identifiant unique du service\n structure_id: Identifiant de la structure\n source: Source de la donnée\n nom: Nom du service\n presentation_resume: Présentation résumée du service\n presentation_detail: Présentation détaillée du service\n types: Types de service\n thematiques: Thématiques du\n prise_rdv: Prise de rendez-vous\n frais: Frais", "properties": { "adresse": { "anyOf": [ @@ -271,8 +272,13 @@ "type": "null" } ], - "default": null, - "title": "Adresse" + "deprecated": true, + "description": "Adresse du service. Doit être renseignée si le service est diffusé.", + "examples": [ + "17 rue du mollard 38160 Saint Marcellin", + "56 rue de la république 69002 Lyon" + ], + "title": "L'adresse du service" }, "code_insee": { "anyOf": [ @@ -286,7 +292,7 @@ "type": "null" } ], - "default": null, + "description": "[Deprecated]", "title": "Code Insee" }, "code_postal": { @@ -464,7 +470,9 @@ "title": "Frais Autres" }, "id": { - "title": "Id", + "default": "9fe85aab-bc7a-49c3-ab10-233b1c92379e", + "description": "Identifiant unique du service.", + "title": "Identifiant", "type": "string" }, "justificatifs": { @@ -823,10 +831,11 @@ } }, "required": [ - "id", "structure_id", "source", - "nom" + "nom", + "code_insee", + "adresse" ], "title": "Service", "type": "object" diff --git a/src/data_inclusion/schema/__main__.py b/src/data_inclusion/schema/__main__.py index 8b37b98..634bcad 100644 --- a/src/data_inclusion/schema/__main__.py +++ b/src/data_inclusion/schema/__main__.py @@ -1,5 +1,7 @@ import json import pathlib +import jinja2 +import os from data_inclusion.schema import ( Frais, @@ -27,14 +29,84 @@ def json_dump(obj, file): ) +def extract_type_from_any_of(field_schema: dict, model_json_schema: dict): + field_types = {} + for field_type in field_schema["anyOf"]: + if "$ref" in field_type and "type" not in field_type: + path = field_type["$ref"].split("/") + item = model_json_schema[path[1]][path[2]] + field_types[item["type"]] = {"enum": item["enum"], "title": item["title"]} + elif field_type["type"] == "array" and "$ref" in field_type["items"]: + path = field_type["items"]["$ref"].split("/") + field_types["array"] = model_json_schema[path[1]][path[2]] + elif field_type["type"] == "array": + field_types["array"] = field_type["items"]["type"] + elif field_type["type"] == "null": + continue + else: + if field_type["type"] not in field_types: + extra = {} + if "format" in field_type: + extra["format"] = [field_type["format"]] + if "pattern" in field_type: + extra["pattern"] = [field_type["pattern"]] + field_types[field_type["type"]] = extra + else: + if ( + "format" in field_type + and "format" in field_types[field_type["type"]] + ): + field_types[field_type["type"]]["format"].append( + field_type["format"] + ) + if ( + "pattern" in field_type + and "pattern" in field_types[field_type["type"]] + ): + field_types[field_type["type"]]["pattern"].append( + field_type["pattern"] + ) + if ( + "format" in field_type + and "format" not in field_types[field_type["type"]] + ): + field_types[field_type["type"]]["format"] = [field_type["format"]] + if ( + "pattern" in field_type + and "pattern" not in field_types[field_type["type"]] + ): + field_types[field_type["type"]]["pattern"] = [field_type["pattern"]] + + return field_types + + +def extract_type_from_model(model_json_schema: dict): + fields_types = {} + for field_name, field in model_json_schema["properties"].items(): + if "type" in field: + fields_types[field_name] = {} + extra = {} + if "format" in field: + extra["format"] = field["format"] + if "pattern" in field: + extra["pattern"] = field["pattern"] + fields_types[field_name][field["type"]] = extra + if "anyOf" in field: + fields_types[field_name] = extract_type_from_any_of( + field, model_json_schema + ) + return fields_types + + def main(): output_dir = pathlib.Path() / "schemas" output_dir.mkdir(exist_ok=True) for model in [Structure, Service]: + model_json_schema = model.model_json_schema() with (output_dir / f"{model.__name__.lower()}.json").open("w") as file: json.dump( - model.model_json_schema(), + model_json_schema, file, indent=2, ensure_ascii=False, @@ -62,6 +134,16 @@ def main(): with (output_dir / "extra" / filename).open("w") as file: json_dump(enum.as_dict_list(), file) + fields_types = extract_type_from_model(model_json_schema) + + with open("./docs/jinja_test.md", "w+") as file: + print(fields_types) + file.write( + jinja2.Template( + open("./src/data_inclusion/schema/template.md.j2").read() + ).render(model=model_json_schema, field_types=fields_types) + ) + if __name__ == "__main__": """ diff --git a/src/data_inclusion/schema/services.py b/src/data_inclusion/schema/services.py index 1aabdde..d33ae8a 100644 --- a/src/data_inclusion/schema/services.py +++ b/src/data_inclusion/schema/services.py @@ -18,8 +18,26 @@ class Service(BaseModel): - # fields - id: str + """Service. + + Attributes: + id: Identifiant unique du service + structure_id: Identifiant de la structure + source: Source de la donnée + nom: Nom du service + presentation_resume: Présentation résumée du service + presentation_detail: Présentation détaillée du service + types: Types de service + thematiques: Thématiques du + prise_rdv: Prise de rendez-vous + frais: Frais + """ + + id: str = Field( + default="9fe85aab-bc7a-49c3-ab10-233b1c92379e", + title="Identifiant", + description="Identifiant unique du service.", + ) structure_id: str source: str nom: str @@ -40,8 +58,20 @@ class Service(BaseModel): formulaire_en_ligne: Optional[HttpUrl] = None commune: Optional[str] = None code_postal: Optional[common.CodePostal] = None - code_insee: Optional[common.CodeCommune] = None - adresse: Optional[str] = None + code_insee: Optional[common.CodeCommune] = Field( + description="[Deprecated]", + ) + adresse: Optional[str] = Field( + examples=[ + "17 rue du mollard 38160 Saint Marcellin", + "56 rue de la république 69002 Lyon", + ], + title="L'adresse du service", + description="Adresse du service. Doit être renseignée si le service est diffusé.", + json_schema_extra={ + "deprecated": True, + }, + ) complement_adresse: Optional[str] = None longitude: Optional[float] = None latitude: Optional[float] = None diff --git a/src/data_inclusion/schema/template.md.j2 b/src/data_inclusion/schema/template.md.j2 new file mode 100644 index 0000000..9ae268b --- /dev/null +++ b/src/data_inclusion/schema/template.md.j2 @@ -0,0 +1,66 @@ +Test {{ model.properties.adresse.title }} +{% for property_name, property in model.properties.items() %} +## **:material-hand-pointing-right: {{ property_name }}** + {%- if property_name in model.required %} +:green_circle: {++Requis++} + {% endif %} + {%- if property.deprecated %} +???+ warning "Deprecated" + Ce champs est deprecie. Cf le change log pour plus d'information. + {%- endif %} +Type:{%- for field_type, fields_info in field_types[property_name].items() %} + {%- if "enum" in fields_info %} + {%- for value in fields_info['enum'] %} + {%- if loop.first %} +`{{ field_type }}` + +| format | pattern | +| :------: | :---------------------------------------------------------------------------------: | +| `enum` | None | +??? abstract "Valeurs possibles" + {# | Valeurs possibles | +| :--------------------------------------------------------------------------------------------: | #} + {%- endif %} + `{{ value }}` + {# {% set count_letter = value | length %}{% set spaces = 93 - count_letter %}| `{{ value }}`{{ ' ' * spaces }}| #} + {%- endfor %} + {%- else %} `{{ field_type }}` + {%- if "format" in fields_info or "pattern" in fields_info %} + +| format | pattern | +| :------------: | :---------------------------------------------------------------------------: | + {%- if "format" in fields_info %} +{%- set formats = fields_info["format"]|join("`, `") %} +{%- set count_letter = formats | length %} +{%- set spaces = 11 - count_letter %} +| `{{ formats }}`{{ ' ' * spaces }}| + {%- else %} +| None | + {%- endif %} + {%- if "pattern" in fields_info %} +{%- set patterns = fields_info["pattern"]|join("`, `") %} +{%- set count_letter = patterns | length %} +{%- set spaces = 73 - count_letter %} `{{ patterns }}`{{ ' ' * spaces }}| + {%- else %}None{{ ' ' * 70 }}| + {%- endif %} + {%- endif %} + {%- endif %} +{% endfor %} +{% if property.default %} +Default: `{{ property.default }}` +{% endif %} +{% if property.title %} +Titre: {{ property.title }} +{% endif %} +{% if property.description %} +Description: {{ property.description }} +{% endif %} +{% if property.examples %} +Examples: + {% for example in property.examples %} +``` +{{ example }} +``` + {% endfor %} +{% endif %} +{% endfor %} From 8752fddde7a601887a0d4c3dbc1ce909bc7f1155 Mon Sep 17 00:00:00 2001 From: Valentin Matton Date: Mon, 27 Jan 2025 10:27:07 +0100 Subject: [PATCH 2/9] wip --- docs/model.md.j2 | 40 ++ docs/schema.md | 973 ++++++++++++++++++++++++++ docs/service.md | 973 ++++++++++++++++++++++++++ docs/structure.md | 589 ++++++++++++++++ mkdocs.yml | 21 +- schemas/service.json | 21 +- src/data_inclusion/schema/__main__.py | 147 ++-- src/data_inclusion/schema/services.py | 38 +- 8 files changed, 2655 insertions(+), 147 deletions(-) create mode 100644 docs/model.md.j2 create mode 100644 docs/schema.md create mode 100644 docs/service.md create mode 100644 docs/structure.md diff --git a/docs/model.md.j2 b/docs/model.md.j2 new file mode 100644 index 0000000..0d0722c --- /dev/null +++ b/docs/model.md.j2 @@ -0,0 +1,40 @@ +!!! info "Les champs marqués d'une astérisque (*) sont obligatoires." + +{% for property_name, property_schema in schema.properties.items() %} + +### `{{ property_name }}`{{ ' *' if property_name in schema.required }} + +{{ property_schema.description|default('', boolean=True) }} + +{{ '!!! warning "Ce champ est déprécié."' if property_schema.deprecated }} + +Type : `{{ get_property_type_data(property_schema).type }}` + +{% set property_type_data = get_property_type_data(property_schema) %} + +{% if property_type_data.format %}Format : `{{ property_type_data.format }}`{% endif %} + +{% if property_type_data.regex %}Regex : `{{ property_type_data.regex }}`{% endif %} + +{% if property_type_data.referentiel %} +{% set referentiel = schema.get("$defs").get(property_type_data.referentiel) %} +{% if referentiel.enum|length <= 5 %} +Valeurs acceptées : `"{{ referentiel.enum|join('", "') }}"` +{% else %} +Valeurs acceptées : voir les [{{ referentiel.title }}]({{ snake_case(property_type_data.referentiel) }}.md) +{% endif %} +{% endif %} + +{% if property_schema.examples %} +Exemples : + +```json +{% for example in property_schema.examples -%} +{{ example|tojson }} +{% endfor %} +``` +{% endif %} + + +--- +{% endfor %} diff --git a/docs/schema.md b/docs/schema.md new file mode 100644 index 0000000..e274926 --- /dev/null +++ b/docs/schema.md @@ -0,0 +1,973 @@ +!!! info "Les champs marqués d'une astérisque (*) sont obligatoires." + + + +### `id` * + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `structure_id` * + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `source` * + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `nom` * + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `presentation_resume` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `presentation_detail` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `types` + + + + + +Type : `array[string]` + + + + + + + + + + +Valeurs acceptées : voir les [TypologieService](typologie_service.md) + + + + + + +--- + + +### `thematiques` + + + + + +Type : `array[string]` + + + + + + + + + + +Valeurs acceptées : voir les [Thematique](thematique.md) + + + + + + +--- + + +### `prise_rdv` + + + + + +Type : `string` + + + +Format : `uri` + + + + + + + + +--- + + +### `frais` + + + + + +Type : `array[string]` + + + + + + + + + + +Valeurs acceptées : `"gratuit", "gratuit-sous-conditions", "payant", "adhesion", "pass-numerique"` + + + + + + +--- + + +### `frais_autres` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `profils` + + + + + +Type : `array[string]` + + + + + + + + + + +Valeurs acceptées : voir les [Profil](profil.md) + + + + + + +--- + + +### `profils_precisions` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `pre_requis` + + + + + +Type : `array` + + + + + + + + + + + + +--- + + +### `cumulable` + + + + + +Type : `boolean` + + + + + + + + + + + + +--- + + +### `justificatifs` + + + + + +Type : `array` + + + + + + + + + + + + +--- + + +### `formulaire_en_ligne` + + + + + +Type : `string` + + + +Format : `uri` + + + + + + + + +--- + + +### `commune` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `code_postal` + + + + + +Type : `string` + + + + + +Regex : `^\d{5}$` + + + + + + +--- + + +### `code_insee` + + + + + +Type : `string` + + + + + +Regex : `^\w{5}$` + + + + + + +--- + + +### `adresse` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `complement_adresse` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `longitude` + + + + + +Type : `number` + + + + + + + + + + + + +--- + + +### `latitude` + + + + + +Type : `number` + + + + + + + + + + + + +--- + + +### `recurrence` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `date_creation` + + + + + +Type : `string` + + + +Format : `date` + + + + + + + + +--- + + +### `date_suspension` + + + + + +Type : `string` + + + +Format : `date` + + + + + + + + +--- + + +### `lien_source` + + + + + +Type : `string` + + + +Format : `uri` + + + + + + + + +--- + + +### `telephone` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `courriel` + + + + + +Type : `string` + + + +Format : `email` + + + + + + + + +--- + + +### `contact_public` + + + + + +Type : `boolean` + + + + + + + + + + + + +--- + + +### `date_maj` + + + + + +Type : `string` + + + +Format : `date | date-time` + + + + + + + + +--- + + +### `modes_accueil` + + + + + +Type : `array[string]` + + + + + + + + + + +Valeurs acceptées : `"a-distance", "en-presentiel"` + + + + + + +--- + + +### `zone_diffusion_type` + + + + + +Type : `string` + + + + + + + + + + +Valeurs acceptées : `"commune", "epci", "region", "departement", "pays"` + + + + + + +--- + + +### `zone_diffusion_code` + + + + + +Type : `string` + + + + + +Regex : `^\d{9}$ | ^\w{2,3}$ | ^\w{5}$ | ^\d{2}$` + + + + + + +--- + + +### `zone_diffusion_nom` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `contact_nom_prenom` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `page_web` + +Lien vers une page web dédiée au service sur le site web de la structure. Ce champ n'est pas destiné à recevoir un lien vers le site d'un producteur de donnée. + + + +Type : `string` + + + +Format : `uri` + + + + + + +Exemples : + +```json +"https://insersol.fr/biclou-atelier-reparation-participatif-solidaire/" + +``` + + + +--- + + +### `modes_orientation_beneficiaire` + + + + + +Type : `array[string]` + + + + + + + + + + +Valeurs acceptées : voir les [ModeOrientationBeneficiaire](mode_orientation_beneficiaire.md) + + + + + + +--- + + +### `modes_orientation_beneficiaire_autres` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `modes_orientation_accompagnateur` + + + + + +Type : `array[string]` + + + + + + + + + + +Valeurs acceptées : voir les [ModeOrientationAccompagnateur](mode_orientation_accompagnateur.md) + + + + + + +--- + + +### `modes_orientation_accompagnateur_autres` + + + + + +Type : `string` + + + + + + + + + + + + +--- diff --git a/docs/service.md b/docs/service.md new file mode 100644 index 0000000..4e28197 --- /dev/null +++ b/docs/service.md @@ -0,0 +1,973 @@ +!!! info "Les champs marqués d'une astérisque (*) sont obligatoires." + + + +### `id` * + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `structure_id` * + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `source` * + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `nom` * + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `presentation_resume` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `presentation_detail` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `types` + + + + + +Type : `array[string]` + + + + + + + + + + +Valeurs acceptées : voir les [TypologieService](typologie_service.md) + + + + + + +--- + + +### `thematiques` + + + + + +Type : `array[string]` + + + + + + + + + + +Valeurs acceptées : voir les [Thematique](thematique.md) + + + + + + +--- + + +### `prise_rdv` + + + + + +Type : `string` + + + +Format : `uri` + + + + + + + + +--- + + +### `frais` + + + + + +Type : `array[string]` + + + + + + + + + + +Valeurs acceptées : `"gratuit", "gratuit-sous-conditions", "payant", "adhesion", "pass-numerique"` + + + + + + +--- + + +### `frais_autres` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `profils` + + + + + +Type : `array[string]` + + + + + + + + + + +Valeurs acceptées : voir les [Profil](profil.md) + + + + + + +--- + + +### `profils_precisions` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `pre_requis` + + + + + +Type : `array` + + + + + + + + + + + + +--- + + +### `cumulable` + + + + + +Type : `boolean` + + + + + + + + + + + + +--- + + +### `justificatifs` + + + + + +Type : `array` + + + + + + + + + + + + +--- + + +### `formulaire_en_ligne` + + + + + +Type : `string` + + + +Format : `uri` + + + + + + + + +--- + + +### `commune` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `code_postal` + + + + + +Type : `string` + + + + + +Regex : `^\d{5}$` + + + + + + +--- + + +### `code_insee` + + + + + +Type : `string` + + + + + +Regex : `^\w{5}$` + + + + + + +--- + + +### `adresse` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `complement_adresse` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `longitude` + + + + + +Type : `number` + + + + + + + + + + + + +--- + + +### `latitude` + + + + + +Type : `number` + + + + + + + + + + + + +--- + + +### `recurrence` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `date_creation` + + + + + +Type : `string` + + + +Format : `date` + + + + + + + + +--- + + +### `date_suspension` + + + + + +Type : `string` + + + +Format : `date` + + + + + + + + +--- + + +### `lien_source` + + + + + +Type : `string` + + + +Format : `uri` + + + + + + + + +--- + + +### `telephone` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `courriel` + + + + + +Type : `string` + + + +Format : `email` + + + + + + + + +--- + + +### `contact_public` + + + + + +Type : `boolean` + + + + + + + + + + + + +--- + + +### `date_maj` + + + + + +Type : `string` + + + +Format : `date | date-time` + + + + + + + + +--- + + +### `modes_accueil` + + + + + +Type : `array[string]` + + + + + + + + + + +Valeurs acceptées : `"a-distance", "en-presentiel"` + + + + + + +--- + + +### `zone_diffusion_type` + + + + + +Type : `string` + + + + + + + + + + +Valeurs acceptées : `"commune", "epci", "region", "departement", "pays"` + + + + + + +--- + + +### `zone_diffusion_code` + + + + + +Type : `string` + + + + + +Regex : `^\d{2}$ | ^\d{9}$ | ^\w{2,3}$ | ^\w{5}$` + + + + + + +--- + + +### `zone_diffusion_nom` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `contact_nom_prenom` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `page_web` + +Lien vers une page web dédiée au service sur le site web de la structure. Ce champ n'est pas destiné à recevoir un lien vers le site d'un producteur de donnée. + + + +Type : `string` + + + +Format : `uri` + + + + + + +Exemples : + +```json +"https://insersol.fr/biclou-atelier-reparation-participatif-solidaire/" + +``` + + + +--- + + +### `modes_orientation_beneficiaire` + + + + + +Type : `array[string]` + + + + + + + + + + +Valeurs acceptées : voir les [ModeOrientationBeneficiaire](mode_orientation_beneficiaire.md) + + + + + + +--- + + +### `modes_orientation_beneficiaire_autres` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `modes_orientation_accompagnateur` + + + + + +Type : `array[string]` + + + + + + + + + + +Valeurs acceptées : voir les [ModeOrientationAccompagnateur](mode_orientation_accompagnateur.md) + + + + + + +--- + + +### `modes_orientation_accompagnateur_autres` + + + + + +Type : `string` + + + + + + + + + + + + +--- diff --git a/docs/structure.md b/docs/structure.md new file mode 100644 index 0000000..2ff163a --- /dev/null +++ b/docs/structure.md @@ -0,0 +1,589 @@ +!!! info "Les champs marqués d'une astérisque (*) sont obligatoires." + + + +### `id` * + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `siret` + + + + + +Type : `string` + + + + + +Regex : `^\d{14}$` + + + + + + +--- + + +### `rna` + + + + + +Type : `string` + + + + + +Regex : `^W\d{9}$` + + + + + + +--- + + +### `nom` * + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `commune` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `code_postal` + + + + + +Type : `string` + + + + + +Regex : `^\d{5}$` + + + + + + +--- + + +### `code_insee` + + + + + +Type : `string` + + + + + +Regex : `^\w{5}$` + + + + + + +--- + + +### `adresse` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `complement_adresse` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `longitude` + + + + + +Type : `number` + + + + + + + + + + + + +--- + + +### `latitude` + + + + + +Type : `number` + + + + + + + + + + + + +--- + + +### `typologie` + + + + + +Type : `string` + + + + + + + + + + +Valeurs acceptées : voir les [Typologie](typologie.md) + + + + + + +--- + + +### `telephone` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `courriel` + + + + + +Type : `string` + + + +Format : `email` + + + + + + + + +--- + + +### `site_web` + + + + + +Type : `string` + + + +Format : `uri` + + + + + + + + +--- + + +### `presentation_resume` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `presentation_detail` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `source` * + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `date_maj` * + + + + + +Type : `` + + + + + + + + + + + + +--- + + +### `antenne` + + + + + +Type : `boolean` + + + + + + + + + + + + +--- + + +### `lien_source` + + + + + +Type : `string` + + + +Format : `uri` + + + + + + + + +--- + + +### `horaires_ouverture` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `accessibilite` + + + + + +Type : `string` + + + +Format : `uri` + + + + + + + + +--- + + +### `labels_nationaux` + + + + + +Type : `array[string]` + + + + + + + + + + +Valeurs acceptées : voir les [LabelNational](label_national.md) + + + + + + +--- + + +### `labels_autres` + + + + + +Type : `array` + + + + + + + + + + + + +--- + + +### `thematiques` + + + + + +Type : `array[string]` + + + + + + + + + + +Valeurs acceptées : voir les [Thematique](thematique.md) + + + + + + +--- diff --git a/mkdocs.yml b/mkdocs.yml index 96713e6..5a9b782 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -5,24 +5,9 @@ theme: nav: - Home: index.md - JinjaTest: jinja_test.md -plugins: -- search -- mkdocstrings + - Structure: structure.md + - Service: service.md + - Thematiques: thematiques.md markdown_extensions: - - def_list - - pymdownx.tasklist: - custom_checkbox: true - - tables - - attr_list - - pymdownx.emoji: - emoji_index: !!python/name:material.extensions.emoji.twemoji - emoji_generator: !!python/name:material.extensions.emoji.to_svg - - md_in_html - pymdownx.superfences - admonition - - pymdownx.details - - pymdownx.critic - - pymdownx.caret - - pymdownx.keys - - pymdownx.mark - - pymdownx.tilde \ No newline at end of file diff --git a/schemas/service.json b/schemas/service.json index 4cf7468..e39c1bc 100644 --- a/schemas/service.json +++ b/schemas/service.json @@ -261,7 +261,6 @@ "type": "string" } }, - "description": "Service.\n\nAttributes:\n id: Identifiant unique du service\n structure_id: Identifiant de la structure\n source: Source de la donnée\n nom: Nom du service\n presentation_resume: Présentation résumée du service\n presentation_detail: Présentation détaillée du service\n types: Types de service\n thematiques: Thématiques du\n prise_rdv: Prise de rendez-vous\n frais: Frais", "properties": { "adresse": { "anyOf": [ @@ -272,13 +271,8 @@ "type": "null" } ], - "deprecated": true, - "description": "Adresse du service. Doit être renseignée si le service est diffusé.", - "examples": [ - "17 rue du mollard 38160 Saint Marcellin", - "56 rue de la république 69002 Lyon" - ], - "title": "L'adresse du service" + "default": null, + "title": "Adresse" }, "code_insee": { "anyOf": [ @@ -292,7 +286,7 @@ "type": "null" } ], - "description": "[Deprecated]", + "default": null, "title": "Code Insee" }, "code_postal": { @@ -470,9 +464,7 @@ "title": "Frais Autres" }, "id": { - "default": "9fe85aab-bc7a-49c3-ab10-233b1c92379e", - "description": "Identifiant unique du service.", - "title": "Identifiant", + "title": "Id", "type": "string" }, "justificatifs": { @@ -831,11 +823,10 @@ } }, "required": [ + "id", "structure_id", "source", - "nom", - "code_insee", - "adresse" + "nom" ], "title": "Service", "type": "object" diff --git a/src/data_inclusion/schema/__main__.py b/src/data_inclusion/schema/__main__.py index 634bcad..ff3bdc2 100644 --- a/src/data_inclusion/schema/__main__.py +++ b/src/data_inclusion/schema/__main__.py @@ -1,7 +1,8 @@ import json import pathlib +import re + import jinja2 -import os from data_inclusion.schema import ( Frais, @@ -29,84 +30,14 @@ def json_dump(obj, file): ) -def extract_type_from_any_of(field_schema: dict, model_json_schema: dict): - field_types = {} - for field_type in field_schema["anyOf"]: - if "$ref" in field_type and "type" not in field_type: - path = field_type["$ref"].split("/") - item = model_json_schema[path[1]][path[2]] - field_types[item["type"]] = {"enum": item["enum"], "title": item["title"]} - elif field_type["type"] == "array" and "$ref" in field_type["items"]: - path = field_type["items"]["$ref"].split("/") - field_types["array"] = model_json_schema[path[1]][path[2]] - elif field_type["type"] == "array": - field_types["array"] = field_type["items"]["type"] - elif field_type["type"] == "null": - continue - else: - if field_type["type"] not in field_types: - extra = {} - if "format" in field_type: - extra["format"] = [field_type["format"]] - if "pattern" in field_type: - extra["pattern"] = [field_type["pattern"]] - field_types[field_type["type"]] = extra - else: - if ( - "format" in field_type - and "format" in field_types[field_type["type"]] - ): - field_types[field_type["type"]]["format"].append( - field_type["format"] - ) - if ( - "pattern" in field_type - and "pattern" in field_types[field_type["type"]] - ): - field_types[field_type["type"]]["pattern"].append( - field_type["pattern"] - ) - if ( - "format" in field_type - and "format" not in field_types[field_type["type"]] - ): - field_types[field_type["type"]]["format"] = [field_type["format"]] - if ( - "pattern" in field_type - and "pattern" not in field_types[field_type["type"]] - ): - field_types[field_type["type"]]["pattern"] = [field_type["pattern"]] - - return field_types - - -def extract_type_from_model(model_json_schema: dict): - fields_types = {} - for field_name, field in model_json_schema["properties"].items(): - if "type" in field: - fields_types[field_name] = {} - extra = {} - if "format" in field: - extra["format"] = field["format"] - if "pattern" in field: - extra["pattern"] = field["pattern"] - fields_types[field_name][field["type"]] = extra - if "anyOf" in field: - fields_types[field_name] = extract_type_from_any_of( - field, model_json_schema - ) - return fields_types - - def main(): output_dir = pathlib.Path() / "schemas" output_dir.mkdir(exist_ok=True) for model in [Structure, Service]: - model_json_schema = model.model_json_schema() with (output_dir / f"{model.__name__.lower()}.json").open("w") as file: json.dump( - model_json_schema, + model.model_json_schema(), file, indent=2, ensure_ascii=False, @@ -134,15 +65,71 @@ def main(): with (output_dir / "extra" / filename).open("w") as file: json_dump(enum.as_dict_list(), file) - fields_types = extract_type_from_model(model_json_schema) + # fields_types = extract_type_from_model(model.Service) - with open("./docs/jinja_test.md", "w+") as file: - print(fields_types) - file.write( - jinja2.Template( - open("./src/data_inclusion/schema/template.md.j2").read() - ).render(model=model_json_schema, field_types=fields_types) - ) + for model in [Structure, Service]: + docs_dir = pathlib.Path() / "docs" + docs_dir.mkdir(exist_ok=True) + model_name = model.__name__.lower() + with (docs_dir / f"{model_name}.md").open("w") as file: + file.write( + jinja2.Template(open(docs_dir / "model.md.j2").read()).render( + schema=model.model_json_schema(), + get_property_type_data=get_property_type_data, + snake_case=snake_case, + ) + ) + + +def snake_case(txt: str) -> str: + return re.sub(r"(? dict | None: + match property_schema: + case {"type": json_type}: + return { + "type": json_type, + } + case {"anyOf": [{"type": "array", "items": {"$ref": ref}}, {"type": "null"}]}: + return { + "type": "array[string]", + "referentiel": ref.split("/")[-1], + } + case {"anyOf": [{"$ref": ref}, {"type": "null"}]}: + return { + "type": "string", + "referentiel": ref.split("/")[-1], + } + case {"anyOf": [*json_type_dict_list, {"type": "null"}]}: + return { + "type": " | ".join( + sorted( + { + json_type_dict["type"] + for json_type_dict in json_type_dict_list + } + ) + ), + "format": " | ".join( + sorted( + { + json_type_dict["format"] + for json_type_dict in json_type_dict_list + if "format" in json_type_dict + } + ) + ), + "regex": " | ".join( + sorted( + { + json_type_dict["pattern"] + for json_type_dict in json_type_dict_list + if "pattern" in json_type_dict + } + ) + ), + } if __name__ == "__main__": diff --git a/src/data_inclusion/schema/services.py b/src/data_inclusion/schema/services.py index d33ae8a..1aabdde 100644 --- a/src/data_inclusion/schema/services.py +++ b/src/data_inclusion/schema/services.py @@ -18,26 +18,8 @@ class Service(BaseModel): - """Service. - - Attributes: - id: Identifiant unique du service - structure_id: Identifiant de la structure - source: Source de la donnée - nom: Nom du service - presentation_resume: Présentation résumée du service - presentation_detail: Présentation détaillée du service - types: Types de service - thematiques: Thématiques du - prise_rdv: Prise de rendez-vous - frais: Frais - """ - - id: str = Field( - default="9fe85aab-bc7a-49c3-ab10-233b1c92379e", - title="Identifiant", - description="Identifiant unique du service.", - ) + # fields + id: str structure_id: str source: str nom: str @@ -58,20 +40,8 @@ class Service(BaseModel): formulaire_en_ligne: Optional[HttpUrl] = None commune: Optional[str] = None code_postal: Optional[common.CodePostal] = None - code_insee: Optional[common.CodeCommune] = Field( - description="[Deprecated]", - ) - adresse: Optional[str] = Field( - examples=[ - "17 rue du mollard 38160 Saint Marcellin", - "56 rue de la république 69002 Lyon", - ], - title="L'adresse du service", - description="Adresse du service. Doit être renseignée si le service est diffusé.", - json_schema_extra={ - "deprecated": True, - }, - ) + code_insee: Optional[common.CodeCommune] = None + adresse: Optional[str] = None complement_adresse: Optional[str] = None longitude: Optional[float] = None latitude: Optional[float] = None From def537706361ed159311f39cd62207bfd8a9971f Mon Sep 17 00:00:00 2001 From: Valentin Matton Date: Tue, 28 Jan 2025 19:37:07 +0100 Subject: [PATCH 3/9] chore: retire l'url de doc pypi --- pyproject.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 3638b71..2b9f5d2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,7 +22,6 @@ dependencies = [ [project.urls] Home = "https://data.inclusion.gouv.fr" -Documentation = "https://data.inclusion.gouv.fr/schemas-de-donnees-de-loffre/schema-des-structures-et-services-dinsertion" Source = "https://github.com/gip-inclusion/data-inclusion-schema" [project.optional-dependencies] From fd57fb42a9ae6809becbe005e0879607ec874f1e Mon Sep 17 00:00:00 2001 From: Valentin Matton Date: Tue, 28 Jan 2025 19:28:20 +0100 Subject: [PATCH 4/9] chore: utilisation de uv --- .github/workflows/publish.yml | 16 +- .pre-commit-config.yaml | 10 +- CONTRIBUTING.md | 22 +- pyproject.toml | 14 +- uv.lock | 580 ++++++++++++++++++++++++++++++++++ 5 files changed, 609 insertions(+), 33 deletions(-) create mode 100644 uv.lock diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index c1c55f1..68833af 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -11,14 +11,8 @@ jobs: steps: - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 - with: - python-version: '3.10' - - name: install build dependencies - run: pip install build - - name: build dist - run: python -m build - - name: publish - uses: pypa/gh-action-pypi-publish@v1.5.1 - with: - password: ${{ secrets.PYPI_API_TOKEN }} + - uses: astral-sh/setup-uv@v5 + - run: uv build + - run: uv publish + env: + UV_PUBLISH_TOKEN: ${{ secrets.PYPI_API_TOKEN }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 97ff34f..7176bb6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,13 +1,17 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.2.2 + rev: v0.9.3 hooks: - id: ruff - id: ruff-format +- repo: https://github.com/astral-sh/uv-pre-commit + rev: 0.5.24 + hooks: + - id: uv-lock - repo: local hooks: - id: compile-schema name: compile-schema - language: python - entry: data-inclusion-schema + language: system + entry: uv run data-inclusion-schema always_run: true diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3fa5795..b4a814f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,11 +2,7 @@ ## Prérequis -### `python` - -Le projet utilise `python3.10`. - -[`pyenv`](https://github.com/pyenv/pyenv-installer) est un bon moyen d'installer python localement. +* `uv` : pour la gestion de l'environnement python, les dépendances, le build. Voir [les instructions d'installation](https://docs.astral.sh/uv/getting-started/installation/#standalone-installer). ## Installation @@ -14,11 +10,11 @@ Le projet utilise `python3.10`. # Cloner le dépôt git clone git@github.com:gip-inclusion/data-inclusion-schema.git -# Initialiser un virtual env à la racine du repo -python3.10 -m venv .venv && source .venv/bin/activate && pip install -U pip setuptools wheel && pip install -e '.[dev]' +# Initialiser l'environnement +uv sync # Installer les outils de qualité de codes -pre-commit install +uv run pre-commit install ``` ## Proposer une modification @@ -54,21 +50,21 @@ src/ ### 2. Regénérer le json schéma -Lancer la commande suivante à la racine du repo. +Lancer la commande suivante à la racine du repo : ```bash -data-inclusion-schema +uv run data-inclusion-schema ``` ### 3. Ouvrir une PR avec les changements -Ajouter ses modifications au [CHANGELOG](CHANGELOG.md) dans la partie a venir +Ajouter ses modifications au [CHANGELOG](CHANGELOG.md) dans la section "à venir". ## Faire une release 1. Sur une PR: - - modif du numéro de version du package sur [pyproject.toml](pyproject.toml) et [schemas.yml](schemas.yml) + - modif du numéro de version du package sur [pyproject.toml](pyproject.toml) - Passer les changements de ## À venir dans la section de la nouvelle release 2. `git tag {my-tag} & git tag -f latest & git push --tags` -3. release sur git hub en pointant sur le tag \ No newline at end of file +3. release sur git hub en pointant sur le tag diff --git a/pyproject.toml b/pyproject.toml index 2b9f5d2..44a6277 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,8 +1,9 @@ [build-system] -requires = ["flit_core >=3.2,<4"] +requires = ["flit_core>=3.2,<4"] build-backend = "flit_core.buildapi" [project] +requires-python = ">=3.10" name = "data-inclusion-schema" version = "0.20.0" description = "Schéma de l'offre d'insertion" @@ -24,14 +25,14 @@ dependencies = [ Home = "https://data.inclusion.gouv.fr" Source = "https://github.com/gip-inclusion/data-inclusion-schema" -[project.optional-dependencies] +[dependency-groups] dev = [ - "pre-commit~=2.20", - "ruff~=0.2", + "pre-commit>=2.21.0", + "ruff>=0.9.3", ] test = [ - "pytest~=8.3", - "freezegun~=1.5", + "pytest>=8.3.4", + "freezegun>=1.5.1", ] [project.scripts] @@ -57,4 +58,5 @@ combine-as-imports = true known-first-party = ["data_inclusion"] [tool.flit.module] +# this is the import name name = "data_inclusion.schema" diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..8c9172b --- /dev/null +++ b/uv.lock @@ -0,0 +1,580 @@ +version = 1 +requires-python = ">=3.10" + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, +] + +[[package]] +name = "cfgv" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249 }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, +] + +[[package]] +name = "data-inclusion-schema" +version = "0.20.0" +source = { editable = "." } +dependencies = [ + { name = "pendulum" }, + { name = "pydantic", extra = ["email"] }, +] + +[package.dev-dependencies] +dev = [ + { name = "pre-commit" }, + { name = "ruff" }, +] +test = [ + { name = "freezegun" }, + { name = "pytest" }, +] + +[package.metadata] +requires-dist = [ + { name = "pendulum", specifier = "~=3.0" }, + { name = "pydantic", extras = ["email"], specifier = ">=2.1.1,<3.0.0" }, +] + +[package.metadata.requires-dev] +dev = [ + { name = "pre-commit", specifier = ">=2.21.0" }, + { name = "ruff", specifier = ">=0.9.3" }, +] +test = [ + { name = "freezegun", specifier = ">=1.5.1" }, + { name = "pytest", specifier = ">=8.3.4" }, +] + +[[package]] +name = "distlib" +version = "0.3.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0d/dd/1bec4c5ddb504ca60fc29472f3d27e8d4da1257a854e1d96742f15c1d02d/distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403", size = 613923 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973 }, +] + +[[package]] +name = "dnspython" +version = "2.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b5/4a/263763cb2ba3816dd94b08ad3a33d5fdae34ecb856678773cc40a3605829/dnspython-2.7.0.tar.gz", hash = "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1", size = 345197 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/1b/e0a87d256e40e8c888847551b20a017a6b98139178505dc7ffb96f04e954/dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86", size = 313632 }, +] + +[[package]] +name = "email-validator" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "dnspython" }, + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/48/ce/13508a1ec3f8bb981ae4ca79ea40384becc868bfae97fd1c942bb3a001b1/email_validator-2.2.0.tar.gz", hash = "sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7", size = 48967 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/ee/bf0adb559ad3c786f12bcbc9296b3f5675f529199bef03e2df281fa1fadb/email_validator-2.2.0-py3-none-any.whl", hash = "sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631", size = 33521 }, +] + +[[package]] +name = "exceptiongroup" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/09/35/2495c4ac46b980e4ca1f6ad6db102322ef3ad2410b79fdde159a4b0f3b92/exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc", size = 28883 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", size = 16453 }, +] + +[[package]] +name = "filelock" +version = "3.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/dc/9c/0b15fb47b464e1b663b1acd1253a062aa5feecb07d4e597daea542ebd2b5/filelock-3.17.0.tar.gz", hash = "sha256:ee4e77401ef576ebb38cd7f13b9b28893194acc20a8e68e18730ba9c0e54660e", size = 18027 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/89/ec/00d68c4ddfedfe64159999e5f8a98fb8442729a63e2077eb9dcd89623d27/filelock-3.17.0-py3-none-any.whl", hash = "sha256:533dc2f7ba78dc2f0f531fc6c4940addf7b70a481e269a5a3b93be94ffbe8338", size = 16164 }, +] + +[[package]] +name = "freezegun" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2c/ef/722b8d71ddf4d48f25f6d78aa2533d505bf3eec000a7cacb8ccc8de61f2f/freezegun-1.5.1.tar.gz", hash = "sha256:b29dedfcda6d5e8e083ce71b2b542753ad48cfec44037b3fc79702e2980a89e9", size = 33697 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/0b/0d7fee5919bccc1fdc1c2a7528b98f65c6f69b223a3fd8f809918c142c36/freezegun-1.5.1-py3-none-any.whl", hash = "sha256:bf111d7138a8abe55ab48a71755673dbaa4ab87f4cff5634a4442dfec34c15f1", size = 17569 }, +] + +[[package]] +name = "identify" +version = "2.6.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/bf/c68c46601bacd4c6fb4dd751a42b6e7087240eaabc6487f2ef7a48e0e8fc/identify-2.6.6.tar.gz", hash = "sha256:7bec12768ed44ea4761efb47806f0a41f86e7c0a5fdf5950d4648c90eca7e251", size = 99217 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/74/a1/68a395c17eeefb04917034bd0a1bfa765e7654fa150cca473d669aa3afb5/identify-2.6.6-py2.py3-none-any.whl", hash = "sha256:cbd1810bce79f8b671ecb20f53ee0ae8e86ae84b557de31d89709dc2a48ba881", size = 99083 }, +] + +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, +] + +[[package]] +name = "iniconfig" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", size = 4646 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892 }, +] + +[[package]] +name = "nodeenv" +version = "1.9.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314 }, +] + +[[package]] +name = "packaging" +version = "24.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, +] + +[[package]] +name = "pendulum" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, + { name = "time-machine", marker = "implementation_name != 'pypy'" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b8/fe/27c7438c6ac8b8f8bef3c6e571855602ee784b85d072efddfff0ceb1cd77/pendulum-3.0.0.tar.gz", hash = "sha256:5d034998dea404ec31fae27af6b22cff1708f830a1ed7353be4d1019bb9f584e", size = 84524 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/2f/2f4719366d16f1e444b4e400d3de5021bc4b09965f97e45c81e08348cbdf/pendulum-3.0.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2cf9e53ef11668e07f73190c805dbdf07a1939c3298b78d5a9203a86775d1bfd", size = 362284 }, + { url = "https://files.pythonhosted.org/packages/30/ff/70a8f47e622e641de15b7ed8a8b66c3aa895fabc182a7d520a0c33ec850e/pendulum-3.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fb551b9b5e6059377889d2d878d940fd0bbb80ae4810543db18e6f77b02c5ef6", size = 352957 }, + { url = "https://files.pythonhosted.org/packages/f4/cd/4e2fb7d071e81a9b07719203fd1d329febaded59981b8709663341f758f4/pendulum-3.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c58227ac260d5b01fc1025176d7b31858c9f62595737f350d22124a9a3ad82d", size = 335784 }, + { url = "https://files.pythonhosted.org/packages/0f/e5/9fc684c59b6f3425cf597d9489c24c47dc96d391be9eb8c9a3c543cd7646/pendulum-3.0.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60fb6f415fea93a11c52578eaa10594568a6716602be8430b167eb0d730f3332", size = 362215 }, + { url = "https://files.pythonhosted.org/packages/5a/ba/4dbb1ae42775010249ba29d01829353a9b59d9c3caf97df14d548a3b7d4c/pendulum-3.0.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b69f6b4dbcb86f2c2fe696ba991e67347bcf87fe601362a1aba6431454b46bde", size = 448632 }, + { url = "https://files.pythonhosted.org/packages/10/a9/0932bd7cd677bee8bdc9cb898448e47ada0f74e41f434f4ff687d03a3ea9/pendulum-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:138afa9c373ee450ede206db5a5e9004fd3011b3c6bbe1e57015395cd076a09f", size = 384881 }, + { url = "https://files.pythonhosted.org/packages/31/a9/8c9887ce8bfb8ab0db068ac2f1fe679b713f728c116bd136301c303893cd/pendulum-3.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:83d9031f39c6da9677164241fd0d37fbfc9dc8ade7043b5d6d62f56e81af8ad2", size = 559554 }, + { url = "https://files.pythonhosted.org/packages/f4/7e/70596b098b97799c78e3fc2f89394decca6f5443cac28c54082daf2d48eb/pendulum-3.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0c2308af4033fa534f089595bcd40a95a39988ce4059ccd3dc6acb9ef14ca44a", size = 558246 }, + { url = "https://files.pythonhosted.org/packages/67/5e/e646afbd1632bfbacdae79289d7d5879efdeeb5f5e58327bc5c698731107/pendulum-3.0.0-cp310-none-win_amd64.whl", hash = "sha256:9a59637cdb8462bdf2dbcb9d389518c0263799189d773ad5c11db6b13064fa79", size = 293456 }, + { url = "https://files.pythonhosted.org/packages/7b/f0/d60be6058657bf71281eeaa12bee85e87bac18acf6dbb7b5197bb8416537/pendulum-3.0.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3725245c0352c95d6ca297193192020d1b0c0f83d5ee6bb09964edc2b5a2d508", size = 362283 }, + { url = "https://files.pythonhosted.org/packages/68/e5/0f9d8351242ddb119a40b41c0cf1d0c74cc243829eea6811f753a8ecf15f/pendulum-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6c035f03a3e565ed132927e2c1b691de0dbf4eb53b02a5a3c5a97e1a64e17bec", size = 352957 }, + { url = "https://files.pythonhosted.org/packages/30/43/70d0a08e5d6ca434ba139d19ec2a4847b0a3e461fbb82e680a9b6a4237ef/pendulum-3.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:597e66e63cbd68dd6d58ac46cb7a92363d2088d37ccde2dae4332ef23e95cd00", size = 335784 }, + { url = "https://files.pythonhosted.org/packages/fc/a3/7d4c0b3f57bf7b543da9088a78a6bd6c786808ca4098bd5db649fdf9f6a2/pendulum-3.0.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99a0f8172e19f3f0c0e4ace0ad1595134d5243cf75985dc2233e8f9e8de263ca", size = 362217 }, + { url = "https://files.pythonhosted.org/packages/8b/03/8c451d569e7f4d9898f155e793f46970eed256c5ae353ecb355584890d8a/pendulum-3.0.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:77d8839e20f54706aed425bec82a83b4aec74db07f26acd039905d1237a5e1d4", size = 448630 }, + { url = "https://files.pythonhosted.org/packages/84/3a/5e36479e199a034adcf6a1a95c691f0a2781ea55b9ac3bcb887e2f97d82b/pendulum-3.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afde30e8146292b059020fbc8b6f8fd4a60ae7c5e6f0afef937bbb24880bdf01", size = 384882 }, + { url = "https://files.pythonhosted.org/packages/4c/25/beff911dda686e0cf169bc3dbe5d10416b376a6dde94eb1bf04aa4035409/pendulum-3.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:660434a6fcf6303c4efd36713ca9212c753140107ee169a3fc6c49c4711c2a05", size = 559556 }, + { url = "https://files.pythonhosted.org/packages/e9/e8/f2aaa470adb6c720645f9f9ef30d5b223407ee327e12c6127eccf4218cb8/pendulum-3.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dee9e5a48c6999dc1106eb7eea3e3a50e98a50651b72c08a87ee2154e544b33e", size = 558249 }, + { url = "https://files.pythonhosted.org/packages/60/19/c13307ea8504d2c02c63c9dffdae1cefbd068b636ec7b18ccf2ec064d246/pendulum-3.0.0-cp311-none-win_amd64.whl", hash = "sha256:d4cdecde90aec2d67cebe4042fd2a87a4441cc02152ed7ed8fb3ebb110b94ec4", size = 293463 }, + { url = "https://files.pythonhosted.org/packages/6b/36/252d48610295c11c0f18e791dcc133d38c545b0bd19a5c3981652a9acb3c/pendulum-3.0.0-cp311-none-win_arm64.whl", hash = "sha256:773c3bc4ddda2dda9f1b9d51fe06762f9200f3293d75c4660c19b2614b991d83", size = 288057 }, + { url = "https://files.pythonhosted.org/packages/1e/37/17c8f0e7481a32f21b9002dd68912a8813f2c1d77b984e00af56eb9ae31b/pendulum-3.0.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:409e64e41418c49f973d43a28afe5df1df4f1dd87c41c7c90f1a63f61ae0f1f7", size = 362284 }, + { url = "https://files.pythonhosted.org/packages/12/e6/08f462f6ea87e2159f19b43ff88231d26e02bda31c10bcb29290a617ace4/pendulum-3.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a38ad2121c5ec7c4c190c7334e789c3b4624798859156b138fcc4d92295835dc", size = 352964 }, + { url = "https://files.pythonhosted.org/packages/47/29/b6877f6b53b91356c2c56d19ddab17b165ca994ad1e57b32c089e79f3fb5/pendulum-3.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fde4d0b2024b9785f66b7f30ed59281bd60d63d9213cda0eb0910ead777f6d37", size = 335848 }, + { url = "https://files.pythonhosted.org/packages/2b/77/62ca666f30b2558342deadda26290a575459a7b59248ea1e978b84175227/pendulum-3.0.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b2c5675769fb6d4c11238132962939b960fcb365436b6d623c5864287faa319", size = 362215 }, + { url = "https://files.pythonhosted.org/packages/e0/29/ce37593f5ea51862c60dadf4e863d604f954478b3abbcc60a14dc05e242c/pendulum-3.0.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8af95e03e066826f0f4c65811cbee1b3123d4a45a1c3a2b4fc23c4b0dff893b5", size = 448673 }, + { url = "https://files.pythonhosted.org/packages/72/6a/68a8c7b8f1977d89aabfd0e2becb0921e5515dfb365097e98a522334a151/pendulum-3.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2165a8f33cb15e06c67070b8afc87a62b85c5a273e3aaa6bc9d15c93a4920d6f", size = 384891 }, + { url = "https://files.pythonhosted.org/packages/30/e6/edd699300f47a3c53c0d8ed26e905b9a31057c3646211e58cc540716a440/pendulum-3.0.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ad5e65b874b5e56bd942546ea7ba9dd1d6a25121db1c517700f1c9de91b28518", size = 559558 }, + { url = "https://files.pythonhosted.org/packages/d4/97/95a44aa5e1763d3a966551ed0e12f56508d8dfcc60e1f0395909b6a08626/pendulum-3.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:17fe4b2c844bbf5f0ece69cfd959fa02957c61317b2161763950d88fed8e13b9", size = 558240 }, + { url = "https://files.pythonhosted.org/packages/9a/91/fcd992eb36b77ab43f2cf44307b72c01a6fbb27f55c1bb2d4af30e9a6cb7/pendulum-3.0.0-cp312-none-win_amd64.whl", hash = "sha256:78f8f4e7efe5066aca24a7a57511b9c2119f5c2b5eb81c46ff9222ce11e0a7a5", size = 293456 }, + { url = "https://files.pythonhosted.org/packages/3b/60/ba8aa296ca6d76603d58146b4a222cd99e7da33831158b8c00240a896a56/pendulum-3.0.0-cp312-none-win_arm64.whl", hash = "sha256:28f49d8d1e32aae9c284a90b6bb3873eee15ec6e1d9042edd611b22a94ac462f", size = 288054 }, + { url = "https://files.pythonhosted.org/packages/0f/7f/24d8c167937d663a9cf6d5fc5e87a87bfa320c3f002d4fbbc7bd5ff3b6f8/pendulum-3.0.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3b1f74d1e6ffe5d01d6023870e2ce5c2191486928823196f8575dcc786e107b1", size = 362388 }, + { url = "https://files.pythonhosted.org/packages/55/e1/33775ee68f8bbb0da967dfd818706ee69e0a054f663ee6111d5c7639f67a/pendulum-3.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:729e9f93756a2cdfa77d0fc82068346e9731c7e884097160603872686e570f07", size = 353062 }, + { url = "https://files.pythonhosted.org/packages/3e/1b/c3e399148c0d69c2c84c2eda45cd3580990b13f36d0c96516591bf4def56/pendulum-3.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e586acc0b450cd21cbf0db6bae386237011b75260a3adceddc4be15334689a9a", size = 335871 }, + { url = "https://files.pythonhosted.org/packages/32/6b/23dde8bd3fb78f693b81bd8fc67769b2a461918d51ed6ddf486a1a97e199/pendulum-3.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22e7944ffc1f0099a79ff468ee9630c73f8c7835cd76fdb57ef7320e6a409df4", size = 384859 }, + { url = "https://files.pythonhosted.org/packages/1d/1b/a3e0387f586d6121a15e6d02f7ae8cc3cd1ebb136fd243c1c191136ed518/pendulum-3.0.0-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:fa30af36bd8e50686846bdace37cf6707bdd044e5cb6e1109acbad3277232e04", size = 559441 }, + { url = "https://files.pythonhosted.org/packages/d7/23/91dea81265d5d11af0cd5053ca76730cc2c5ac14085c9a923d448e74c67f/pendulum-3.0.0-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:440215347b11914ae707981b9a57ab9c7b6983ab0babde07063c6ee75c0dc6e7", size = 558189 }, + { url = "https://files.pythonhosted.org/packages/7a/8a/166625d30f927e800e99f3f6556d8b3f4ad952c62d6a774844d73542b84b/pendulum-3.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:314c4038dc5e6a52991570f50edb2f08c339debdf8cea68ac355b32c4174e820", size = 293657 }, +] + +[[package]] +name = "platformdirs" +version = "4.3.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/13/fc/128cc9cb8f03208bdbf93d3aa862e16d376844a14f9a0ce5cf4507372de4/platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907", size = 21302 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb", size = 18439 }, +] + +[[package]] +name = "pluggy" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, +] + +[[package]] +name = "pre-commit" +version = "2.21.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cfgv" }, + { name = "identify" }, + { name = "nodeenv" }, + { name = "pyyaml" }, + { name = "virtualenv" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6b/00/1637ae945c6e10838ef5c41965f1c864e59301811bb203e979f335608e7c/pre_commit-2.21.0.tar.gz", hash = "sha256:31ef31af7e474a8d8995027fefdfcf509b5c913ff31f2015b4ec4beb26a6f658", size = 174966 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/6b/6cfe3a8b351b54f4b6c6d2ad4286804e3367f628dce379c603d3b96635f4/pre_commit-2.21.0-py2.py3-none-any.whl", hash = "sha256:e2f91727039fc39a92f58a588a25b87f936de6567eed4f0e673e0507edc75bad", size = 201938 }, +] + +[[package]] +name = "pydantic" +version = "2.10.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b7/ae/d5220c5c52b158b1de7ca89fc5edb72f304a70a4c540c84c8844bf4008de/pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236", size = 761681 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/3c/8cc1cc84deffa6e25d2d0c688ebb80635dfdbf1dbea3e30c541c8cf4d860/pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584", size = 431696 }, +] + +[package.optional-dependencies] +email = [ + { name = "email-validator" }, +] + +[[package]] +name = "pydantic-core" +version = "2.27.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/01/f3e5ac5e7c25833db5eb555f7b7ab24cd6f8c322d3a3ad2d67a952dc0abc/pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39", size = 413443 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/bc/fed5f74b5d802cf9a03e83f60f18864e90e3aed7223adaca5ffb7a8d8d64/pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa", size = 1895938 }, + { url = "https://files.pythonhosted.org/packages/71/2a/185aff24ce844e39abb8dd680f4e959f0006944f4a8a0ea372d9f9ae2e53/pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c", size = 1815684 }, + { url = "https://files.pythonhosted.org/packages/c3/43/fafabd3d94d159d4f1ed62e383e264f146a17dd4d48453319fd782e7979e/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a", size = 1829169 }, + { url = "https://files.pythonhosted.org/packages/a2/d1/f2dfe1a2a637ce6800b799aa086d079998959f6f1215eb4497966efd2274/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5", size = 1867227 }, + { url = "https://files.pythonhosted.org/packages/7d/39/e06fcbcc1c785daa3160ccf6c1c38fea31f5754b756e34b65f74e99780b5/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c", size = 2037695 }, + { url = "https://files.pythonhosted.org/packages/7a/67/61291ee98e07f0650eb756d44998214231f50751ba7e13f4f325d95249ab/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7", size = 2741662 }, + { url = "https://files.pythonhosted.org/packages/32/90/3b15e31b88ca39e9e626630b4c4a1f5a0dfd09076366f4219429e6786076/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a", size = 1993370 }, + { url = "https://files.pythonhosted.org/packages/ff/83/c06d333ee3a67e2e13e07794995c1535565132940715931c1c43bfc85b11/pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236", size = 1996813 }, + { url = "https://files.pythonhosted.org/packages/7c/f7/89be1c8deb6e22618a74f0ca0d933fdcb8baa254753b26b25ad3acff8f74/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962", size = 2005287 }, + { url = "https://files.pythonhosted.org/packages/b7/7d/8eb3e23206c00ef7feee17b83a4ffa0a623eb1a9d382e56e4aa46fd15ff2/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9", size = 2128414 }, + { url = "https://files.pythonhosted.org/packages/4e/99/fe80f3ff8dd71a3ea15763878d464476e6cb0a2db95ff1c5c554133b6b83/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af", size = 2155301 }, + { url = "https://files.pythonhosted.org/packages/2b/a3/e50460b9a5789ca1451b70d4f52546fa9e2b420ba3bfa6100105c0559238/pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4", size = 1816685 }, + { url = "https://files.pythonhosted.org/packages/57/4c/a8838731cb0f2c2a39d3535376466de6049034d7b239c0202a64aaa05533/pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31", size = 1982876 }, + { url = "https://files.pythonhosted.org/packages/c2/89/f3450af9d09d44eea1f2c369f49e8f181d742f28220f88cc4dfaae91ea6e/pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc", size = 1893421 }, + { url = "https://files.pythonhosted.org/packages/9e/e3/71fe85af2021f3f386da42d291412e5baf6ce7716bd7101ea49c810eda90/pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7", size = 1814998 }, + { url = "https://files.pythonhosted.org/packages/a6/3c/724039e0d848fd69dbf5806894e26479577316c6f0f112bacaf67aa889ac/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15", size = 1826167 }, + { url = "https://files.pythonhosted.org/packages/2b/5b/1b29e8c1fb5f3199a9a57c1452004ff39f494bbe9bdbe9a81e18172e40d3/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306", size = 1865071 }, + { url = "https://files.pythonhosted.org/packages/89/6c/3985203863d76bb7d7266e36970d7e3b6385148c18a68cc8915fd8c84d57/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99", size = 2036244 }, + { url = "https://files.pythonhosted.org/packages/0e/41/f15316858a246b5d723f7d7f599f79e37493b2e84bfc789e58d88c209f8a/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459", size = 2737470 }, + { url = "https://files.pythonhosted.org/packages/a8/7c/b860618c25678bbd6d1d99dbdfdf0510ccb50790099b963ff78a124b754f/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048", size = 1992291 }, + { url = "https://files.pythonhosted.org/packages/bf/73/42c3742a391eccbeab39f15213ecda3104ae8682ba3c0c28069fbcb8c10d/pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d", size = 1994613 }, + { url = "https://files.pythonhosted.org/packages/94/7a/941e89096d1175d56f59340f3a8ebaf20762fef222c298ea96d36a6328c5/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b", size = 2002355 }, + { url = "https://files.pythonhosted.org/packages/6e/95/2359937a73d49e336a5a19848713555605d4d8d6940c3ec6c6c0ca4dcf25/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474", size = 2126661 }, + { url = "https://files.pythonhosted.org/packages/2b/4c/ca02b7bdb6012a1adef21a50625b14f43ed4d11f1fc237f9d7490aa5078c/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6", size = 2153261 }, + { url = "https://files.pythonhosted.org/packages/72/9d/a241db83f973049a1092a079272ffe2e3e82e98561ef6214ab53fe53b1c7/pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c", size = 1812361 }, + { url = "https://files.pythonhosted.org/packages/e8/ef/013f07248041b74abd48a385e2110aa3a9bbfef0fbd97d4e6d07d2f5b89a/pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc", size = 1982484 }, + { url = "https://files.pythonhosted.org/packages/10/1c/16b3a3e3398fd29dca77cea0a1d998d6bde3902fa2706985191e2313cc76/pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4", size = 1867102 }, + { url = "https://files.pythonhosted.org/packages/d6/74/51c8a5482ca447871c93e142d9d4a92ead74de6c8dc5e66733e22c9bba89/pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0", size = 1893127 }, + { url = "https://files.pythonhosted.org/packages/d3/f3/c97e80721735868313c58b89d2de85fa80fe8dfeeed84dc51598b92a135e/pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef", size = 1811340 }, + { url = "https://files.pythonhosted.org/packages/9e/91/840ec1375e686dbae1bd80a9e46c26a1e0083e1186abc610efa3d9a36180/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7", size = 1822900 }, + { url = "https://files.pythonhosted.org/packages/f6/31/4240bc96025035500c18adc149aa6ffdf1a0062a4b525c932065ceb4d868/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934", size = 1869177 }, + { url = "https://files.pythonhosted.org/packages/fa/20/02fbaadb7808be578317015c462655c317a77a7c8f0ef274bc016a784c54/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6", size = 2038046 }, + { url = "https://files.pythonhosted.org/packages/06/86/7f306b904e6c9eccf0668248b3f272090e49c275bc488a7b88b0823444a4/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c", size = 2685386 }, + { url = "https://files.pythonhosted.org/packages/8d/f0/49129b27c43396581a635d8710dae54a791b17dfc50c70164866bbf865e3/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2", size = 1997060 }, + { url = "https://files.pythonhosted.org/packages/0d/0f/943b4af7cd416c477fd40b187036c4f89b416a33d3cc0ab7b82708a667aa/pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4", size = 2004870 }, + { url = "https://files.pythonhosted.org/packages/35/40/aea70b5b1a63911c53a4c8117c0a828d6790483f858041f47bab0b779f44/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3", size = 1999822 }, + { url = "https://files.pythonhosted.org/packages/f2/b3/807b94fd337d58effc5498fd1a7a4d9d59af4133e83e32ae39a96fddec9d/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4", size = 2130364 }, + { url = "https://files.pythonhosted.org/packages/fc/df/791c827cd4ee6efd59248dca9369fb35e80a9484462c33c6649a8d02b565/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57", size = 2158303 }, + { url = "https://files.pythonhosted.org/packages/9b/67/4e197c300976af185b7cef4c02203e175fb127e414125916bf1128b639a9/pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc", size = 1834064 }, + { url = "https://files.pythonhosted.org/packages/1f/ea/cd7209a889163b8dcca139fe32b9687dd05249161a3edda62860430457a5/pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9", size = 1989046 }, + { url = "https://files.pythonhosted.org/packages/bc/49/c54baab2f4658c26ac633d798dab66b4c3a9bbf47cff5284e9c182f4137a/pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b", size = 1885092 }, + { url = "https://files.pythonhosted.org/packages/41/b1/9bc383f48f8002f99104e3acff6cba1231b29ef76cfa45d1506a5cad1f84/pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b", size = 1892709 }, + { url = "https://files.pythonhosted.org/packages/10/6c/e62b8657b834f3eb2961b49ec8e301eb99946245e70bf42c8817350cbefc/pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154", size = 1811273 }, + { url = "https://files.pythonhosted.org/packages/ba/15/52cfe49c8c986e081b863b102d6b859d9defc63446b642ccbbb3742bf371/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9", size = 1823027 }, + { url = "https://files.pythonhosted.org/packages/b1/1c/b6f402cfc18ec0024120602bdbcebc7bdd5b856528c013bd4d13865ca473/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9", size = 1868888 }, + { url = "https://files.pythonhosted.org/packages/bd/7b/8cb75b66ac37bc2975a3b7de99f3c6f355fcc4d89820b61dffa8f1e81677/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1", size = 2037738 }, + { url = "https://files.pythonhosted.org/packages/c8/f1/786d8fe78970a06f61df22cba58e365ce304bf9b9f46cc71c8c424e0c334/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a", size = 2685138 }, + { url = "https://files.pythonhosted.org/packages/a6/74/d12b2cd841d8724dc8ffb13fc5cef86566a53ed358103150209ecd5d1999/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e", size = 1997025 }, + { url = "https://files.pythonhosted.org/packages/a0/6e/940bcd631bc4d9a06c9539b51f070b66e8f370ed0933f392db6ff350d873/pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4", size = 2004633 }, + { url = "https://files.pythonhosted.org/packages/50/cc/a46b34f1708d82498c227d5d80ce615b2dd502ddcfd8376fc14a36655af1/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27", size = 1999404 }, + { url = "https://files.pythonhosted.org/packages/ca/2d/c365cfa930ed23bc58c41463bae347d1005537dc8db79e998af8ba28d35e/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee", size = 2130130 }, + { url = "https://files.pythonhosted.org/packages/f4/d7/eb64d015c350b7cdb371145b54d96c919d4db516817f31cd1c650cae3b21/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1", size = 2157946 }, + { url = "https://files.pythonhosted.org/packages/a4/99/bddde3ddde76c03b65dfd5a66ab436c4e58ffc42927d4ff1198ffbf96f5f/pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130", size = 1834387 }, + { url = "https://files.pythonhosted.org/packages/71/47/82b5e846e01b26ac6f1893d3c5f9f3a2eb6ba79be26eef0b759b4fe72946/pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee", size = 1990453 }, + { url = "https://files.pythonhosted.org/packages/51/b2/b2b50d5ecf21acf870190ae5d093602d95f66c9c31f9d5de6062eb329ad1/pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b", size = 1885186 }, + { url = "https://files.pythonhosted.org/packages/46/72/af70981a341500419e67d5cb45abe552a7c74b66326ac8877588488da1ac/pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e", size = 1891159 }, + { url = "https://files.pythonhosted.org/packages/ad/3d/c5913cccdef93e0a6a95c2d057d2c2cba347815c845cda79ddd3c0f5e17d/pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8", size = 1768331 }, + { url = "https://files.pythonhosted.org/packages/f6/f0/a3ae8fbee269e4934f14e2e0e00928f9346c5943174f2811193113e58252/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3", size = 1822467 }, + { url = "https://files.pythonhosted.org/packages/d7/7a/7bbf241a04e9f9ea24cd5874354a83526d639b02674648af3f350554276c/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f", size = 1979797 }, + { url = "https://files.pythonhosted.org/packages/4f/5f/4784c6107731f89e0005a92ecb8a2efeafdb55eb992b8e9d0a2be5199335/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133", size = 1987839 }, + { url = "https://files.pythonhosted.org/packages/6d/a7/61246562b651dff00de86a5f01b6e4befb518df314c54dec187a78d81c84/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc", size = 1998861 }, + { url = "https://files.pythonhosted.org/packages/86/aa/837821ecf0c022bbb74ca132e117c358321e72e7f9702d1b6a03758545e2/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50", size = 2116582 }, + { url = "https://files.pythonhosted.org/packages/81/b0/5e74656e95623cbaa0a6278d16cf15e10a51f6002e3ec126541e95c29ea3/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9", size = 2151985 }, + { url = "https://files.pythonhosted.org/packages/63/37/3e32eeb2a451fddaa3898e2163746b0cffbbdbb4740d38372db0490d67f3/pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151", size = 2004715 }, +] + +[[package]] +name = "pytest" +version = "8.3.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/05/35/30e0d83068951d90a01852cb1cef56e5d8a09d20c7f511634cc2f7e0372a/pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761", size = 1445919 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/92/76a1c94d3afee238333bc0a42b82935dd8f9cf8ce9e336ff87ee14d9e1cf/pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6", size = 343083 }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/95/a3fac87cb7158e231b5a6012e438c647e1a87f09f8e0d123acec8ab8bf71/PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086", size = 184199 }, + { url = "https://files.pythonhosted.org/packages/c7/7a/68bd47624dab8fd4afbfd3c48e3b79efe09098ae941de5b58abcbadff5cb/PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf", size = 171758 }, + { url = "https://files.pythonhosted.org/packages/49/ee/14c54df452143b9ee9f0f29074d7ca5516a36edb0b4cc40c3f280131656f/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237", size = 718463 }, + { url = "https://files.pythonhosted.org/packages/4d/61/de363a97476e766574650d742205be468921a7b532aa2499fcd886b62530/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b", size = 719280 }, + { url = "https://files.pythonhosted.org/packages/6b/4e/1523cb902fd98355e2e9ea5e5eb237cbc5f3ad5f3075fa65087aa0ecb669/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed", size = 751239 }, + { url = "https://files.pythonhosted.org/packages/b7/33/5504b3a9a4464893c32f118a9cc045190a91637b119a9c881da1cf6b7a72/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180", size = 695802 }, + { url = "https://files.pythonhosted.org/packages/5c/20/8347dcabd41ef3a3cdc4f7b7a2aff3d06598c8779faa189cdbf878b626a4/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68", size = 720527 }, + { url = "https://files.pythonhosted.org/packages/be/aa/5afe99233fb360d0ff37377145a949ae258aaab831bde4792b32650a4378/PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99", size = 144052 }, + { url = "https://files.pythonhosted.org/packages/b5/84/0fa4b06f6d6c958d207620fc60005e241ecedceee58931bb20138e1e5776/PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e", size = 161774 }, + { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612 }, + { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040 }, + { url = "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", size = 736829 }, + { url = "https://files.pythonhosted.org/packages/51/16/6af8d6a6b210c8e54f1406a6b9481febf9c64a3109c541567e35a49aa2e7/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", size = 764167 }, + { url = "https://files.pythonhosted.org/packages/75/e4/2c27590dfc9992f73aabbeb9241ae20220bd9452df27483b6e56d3975cc5/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", size = 762952 }, + { url = "https://files.pythonhosted.org/packages/9b/97/ecc1abf4a823f5ac61941a9c00fe501b02ac3ab0e373c3857f7d4b83e2b6/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4", size = 735301 }, + { url = "https://files.pythonhosted.org/packages/45/73/0f49dacd6e82c9430e46f4a027baa4ca205e8b0a9dce1397f44edc23559d/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", size = 756638 }, + { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850 }, + { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980 }, + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873 }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302 }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154 }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223 }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542 }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164 }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611 }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428 }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, +] + +[[package]] +name = "ruff" +version = "0.9.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1e/7f/60fda2eec81f23f8aa7cbbfdf6ec2ca11eb11c273827933fb2541c2ce9d8/ruff-0.9.3.tar.gz", hash = "sha256:8293f89985a090ebc3ed1064df31f3b4b56320cdfcec8b60d3295bddb955c22a", size = 3586740 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/77/4fb790596d5d52c87fd55b7160c557c400e90f6116a56d82d76e95d9374a/ruff-0.9.3-py3-none-linux_armv6l.whl", hash = "sha256:7f39b879064c7d9670197d91124a75d118d00b0990586549949aae80cdc16624", size = 11656815 }, + { url = "https://files.pythonhosted.org/packages/a2/a8/3338ecb97573eafe74505f28431df3842c1933c5f8eae615427c1de32858/ruff-0.9.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:a187171e7c09efa4b4cc30ee5d0d55a8d6c5311b3e1b74ac5cb96cc89bafc43c", size = 11594821 }, + { url = "https://files.pythonhosted.org/packages/8e/89/320223c3421962762531a6b2dd58579b858ca9916fb2674874df5e97d628/ruff-0.9.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:c59ab92f8e92d6725b7ded9d4a31be3ef42688a115c6d3da9457a5bda140e2b4", size = 11040475 }, + { url = "https://files.pythonhosted.org/packages/b2/bd/1d775eac5e51409535804a3a888a9623e87a8f4b53e2491580858a083692/ruff-0.9.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2dc153c25e715be41bb228bc651c1e9b1a88d5c6e5ed0194fa0dfea02b026439", size = 11856207 }, + { url = "https://files.pythonhosted.org/packages/7f/c6/3e14e09be29587393d188454064a4aa85174910d16644051a80444e4fd88/ruff-0.9.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:646909a1e25e0dc28fbc529eab8eb7bb583079628e8cbe738192853dbbe43af5", size = 11420460 }, + { url = "https://files.pythonhosted.org/packages/ef/42/b7ca38ffd568ae9b128a2fa76353e9a9a3c80ef19746408d4ce99217ecc1/ruff-0.9.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a5a46e09355695fbdbb30ed9889d6cf1c61b77b700a9fafc21b41f097bfbba4", size = 12605472 }, + { url = "https://files.pythonhosted.org/packages/a6/a1/3167023f23e3530fde899497ccfe239e4523854cb874458ac082992d206c/ruff-0.9.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:c4bb09d2bbb394e3730d0918c00276e79b2de70ec2a5231cd4ebb51a57df9ba1", size = 13243123 }, + { url = "https://files.pythonhosted.org/packages/d0/b4/3c600758e320f5bf7de16858502e849f4216cb0151f819fa0d1154874802/ruff-0.9.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:96a87ec31dc1044d8c2da2ebbed1c456d9b561e7d087734336518181b26b3aa5", size = 12744650 }, + { url = "https://files.pythonhosted.org/packages/be/38/266fbcbb3d0088862c9bafa8b1b99486691d2945a90b9a7316336a0d9a1b/ruff-0.9.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bb7554aca6f842645022fe2d301c264e6925baa708b392867b7a62645304df4", size = 14458585 }, + { url = "https://files.pythonhosted.org/packages/63/a6/47fd0e96990ee9b7a4abda62de26d291bd3f7647218d05b7d6d38af47c30/ruff-0.9.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cabc332b7075a914ecea912cd1f3d4370489c8018f2c945a30bcc934e3bc06a6", size = 12419624 }, + { url = "https://files.pythonhosted.org/packages/84/5d/de0b7652e09f7dda49e1a3825a164a65f4998175b6486603c7601279baad/ruff-0.9.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:33866c3cc2a575cbd546f2cd02bdd466fed65118e4365ee538a3deffd6fcb730", size = 11843238 }, + { url = "https://files.pythonhosted.org/packages/9e/be/3f341ceb1c62b565ec1fb6fd2139cc40b60ae6eff4b6fb8f94b1bb37c7a9/ruff-0.9.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:006e5de2621304c8810bcd2ee101587712fa93b4f955ed0985907a36c427e0c2", size = 11484012 }, + { url = "https://files.pythonhosted.org/packages/a3/c8/ff8acbd33addc7e797e702cf00bfde352ab469723720c5607b964491d5cf/ruff-0.9.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:ba6eea4459dbd6b1be4e6bfc766079fb9b8dd2e5a35aff6baee4d9b1514ea519", size = 12038494 }, + { url = "https://files.pythonhosted.org/packages/73/b1/8d9a2c0efbbabe848b55f877bc10c5001a37ab10aca13c711431673414e5/ruff-0.9.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:90230a6b8055ad47d3325e9ee8f8a9ae7e273078a66401ac66df68943ced029b", size = 12473639 }, + { url = "https://files.pythonhosted.org/packages/cb/44/a673647105b1ba6da9824a928634fe23186ab19f9d526d7bdf278cd27bc3/ruff-0.9.3-py3-none-win32.whl", hash = "sha256:eabe5eb2c19a42f4808c03b82bd313fc84d4e395133fb3fc1b1516170a31213c", size = 9834353 }, + { url = "https://files.pythonhosted.org/packages/c3/01/65cadb59bf8d4fbe33d1a750103e6883d9ef302f60c28b73b773092fbde5/ruff-0.9.3-py3-none-win_amd64.whl", hash = "sha256:040ceb7f20791dfa0e78b4230ee9dce23da3b64dd5848e40e3bf3ab76468dcf4", size = 10821444 }, + { url = "https://files.pythonhosted.org/packages/69/cb/b3fe58a136a27d981911cba2f18e4b29f15010623b79f0f2510fd0d31fd3/ruff-0.9.3-py3-none-win_arm64.whl", hash = "sha256:800d773f6d4d33b0a3c60e2c6ae8f4c202ea2de056365acfa519aa48acf28e0b", size = 10038168 }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, +] + +[[package]] +name = "time-machine" +version = "2.16.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fb/dd/5022939b9cadefe3af04f4012186c29b8afbe858b1ec2cfa38baeec94dab/time_machine-2.16.0.tar.gz", hash = "sha256:4a99acc273d2f98add23a89b94d4dd9e14969c01214c8514bfa78e4e9364c7e2", size = 24626 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/47/32fdb8e70122edbc8be9db1f032d22b38e3d9ef0bf52c64470d0815cdb62/time_machine-2.16.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:09531af59fdfb39bfd24d28bd1e837eff5a5d98318509a31b6cfd57d27801e52", size = 20493 }, + { url = "https://files.pythonhosted.org/packages/b1/e6/f3bc391d5642e69299f2d1f0a46e7f98d1669e82b1e16c8cf3c6e4615059/time_machine-2.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:92d0b0f3c49f34dd76eb462f0afdc61ed1cb318c06c46d03e99b44ebb489bdad", size = 16757 }, + { url = "https://files.pythonhosted.org/packages/d4/7f/3a78d50fec64edd9964bf42b66a2e659a9846669ac8f705acc363ee79d3a/time_machine-2.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c29616e18e2349a8766d5b6817920fc74e39c00fa375d202231e9d525a1b882", size = 34527 }, + { url = "https://files.pythonhosted.org/packages/61/00/7cf1324d8f8db8f5dab71c44ed1e9c11c4f1cecca9d4363abf44154aa13b/time_machine-2.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c1ceb6035a64cb00650e3ab203cf3faffac18576a3f3125c24df468b784077c7", size = 32537 }, + { url = "https://files.pythonhosted.org/packages/8e/c2/edf5ccb2fa529251eb7f1cfb34098c0ef236dbb88f0a6564d06f6f8378f5/time_machine-2.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64c205ea37b8c4ba232645335fc3b75bc2d03ce30f0a34649e36cae85652ee96", size = 34353 }, + { url = "https://files.pythonhosted.org/packages/a9/1e/178b9e3d0054300a4dd0485747c89359e5f719f090ae5165c88618793700/time_machine-2.16.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:dfe92412bd11104c4f0fb2da68653e6c45b41f7217319a83a8b66ed4f20148b3", size = 34045 }, + { url = "https://files.pythonhosted.org/packages/e5/4d/068ad9660f00f88a54f3ff7e9d423ed5c08a5f8147518f6c66fd0393dde7/time_machine-2.16.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d5fe7a6284e3dce87ae13a25029c53542dd27a28d151f3ef362ec4dd9c3e45fd", size = 32356 }, + { url = "https://files.pythonhosted.org/packages/a5/25/c0f26294808946ec5b665f17a0072049a3f9e2468abc18aa8fe22580b4cf/time_machine-2.16.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c0fca3025266d88d1b48be162a43b7c2d91c81cc5b3bee9f01194678ffb9969a", size = 33737 }, + { url = "https://files.pythonhosted.org/packages/8b/d4/ae909a269828eaa7672e1201403976e794ea679ae7ba04fe0c0c0c65c2b6/time_machine-2.16.0-cp310-cp310-win32.whl", hash = "sha256:4149e17018af07a5756a1df84aea71e6e178598c358c860c6bfec42170fa7970", size = 19133 }, + { url = "https://files.pythonhosted.org/packages/7e/e7/5946d62d49e79b97c6772fe2918eccbd069d74effa8d50bdca4056502aeb/time_machine-2.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:01bc257e9418980a4922de94775be42a966e1a082fb01a1635917f9afc7b84ca", size = 19995 }, + { url = "https://files.pythonhosted.org/packages/54/cb/6507c6594f086bc955ff200cc4fd415d2ab229371ca3ba8fc3d27429a9cc/time_machine-2.16.0-cp310-cp310-win_arm64.whl", hash = "sha256:6895e3e84119594ab12847c928f619d40ae9cedd0755515dc154a5b5dc6edd9f", size = 18109 }, + { url = "https://files.pythonhosted.org/packages/38/7b/34aad93f75f86503dd1fa53bc120d8129fe4de83aef58ffa78c62b044ef9/time_machine-2.16.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8f936566ef9f09136a3d5db305961ef6d897b76b240c9ff4199144aed6dd4fe5", size = 20169 }, + { url = "https://files.pythonhosted.org/packages/68/cb/7d020d5c05d0460a4a96232b0777882ef989c1e6144d11ba984c4b0b4d1a/time_machine-2.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5886e23ede3478ca2a3e0a641f5d09dd784dfa9e48c96e8e5e31fc4fe77b6dc0", size = 16614 }, + { url = "https://files.pythonhosted.org/packages/0d/24/ce1ff76c9a4f3be88c2b947f2411a5a8019390734597d3106a151f8a9416/time_machine-2.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c76caf539fa4941e1817b7c482c87c65c52a1903fea761e84525955c6106fafb", size = 32507 }, + { url = "https://files.pythonhosted.org/packages/08/d7/ba1135587bd2ed105e59ed7e05969c913277d110fecc0ed871006ea3f763/time_machine-2.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:298aa423e07c8b21b991782f01d7749c871c792319c2af3e9755f9ab49033212", size = 30627 }, + { url = "https://files.pythonhosted.org/packages/da/c6/f490aaddc80c54238f4b8fe97870bbfe0d2c70fe4a57269badc94f5f38a6/time_machine-2.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391ae9c484736850bb44ef125cbad52fe2d1b69e42c95dc88c43af8ead2cc7", size = 32362 }, + { url = "https://files.pythonhosted.org/packages/b1/f7/2522ae1c1995a39d6d8b7ee7efed47ec8bd7ff3240fdb2662a8b7e11b84a/time_machine-2.16.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:503e7ff507c2089699d91885fc5b9c8ff16774a7b6aff48b4dcee0c0a0685b61", size = 32188 }, + { url = "https://files.pythonhosted.org/packages/e9/53/b1ccb55f39e7e62660f852d7aedef438d2872ea9c73f64be46d0d3b3f3d7/time_machine-2.16.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:eee7b0fc4fbab2c6585ea17606c6548be83919c70deea0865409fe9fc2d8cdce", size = 30600 }, + { url = "https://files.pythonhosted.org/packages/19/1f/37a5a9333a2da35b0fc43e8ac693b82dd5492892131bc3cc0c8f5835af94/time_machine-2.16.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9db5e5b3ccdadaafa5730c2f9db44c38b013234c9ad01f87738907e19bdba268", size = 31896 }, + { url = "https://files.pythonhosted.org/packages/fc/97/e1a8bd64e5432adf47859cb63847b4472efc644b508602141c60ccf52112/time_machine-2.16.0-cp311-cp311-win32.whl", hash = "sha256:2552f0767bc10c9d668f108fef9b487809cdeb772439ce932e74136365c69baf", size = 19030 }, + { url = "https://files.pythonhosted.org/packages/34/c9/f4764e447aa9da4031c89da60fa69f4f73fd45571415788c298cbd4620e9/time_machine-2.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:12474fcdbc475aa6fe5275fe7224e685c5b9777f5939647f35980e9614ae7558", size = 19924 }, + { url = "https://files.pythonhosted.org/packages/8a/c0/788500d33656a044e3289b814106c2277209ac73316c00b9668012ce6027/time_machine-2.16.0-cp311-cp311-win_arm64.whl", hash = "sha256:ac2df0fa564356384515ed62cb6679f33f1f529435b16b0ec0f88414635dbe39", size = 17993 }, + { url = "https://files.pythonhosted.org/packages/4a/f4/603a84e7ae6427a53953db9f61b689dc6adf233e03c5f5ca907a901452fd/time_machine-2.16.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:84788f4d62a8b1bf5e499bb9b0e23ceceea21c415ad6030be6267ce3d639842f", size = 20155 }, + { url = "https://files.pythonhosted.org/packages/d8/94/dbe69aecb4b84be52d34814e63176c5ca61f38ee9e6ecda11104653405b5/time_machine-2.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:15ec236b6571730236a193d9d6c11d472432fc6ab54e85eac1c16d98ddcd71bf", size = 16640 }, + { url = "https://files.pythonhosted.org/packages/da/13/27f11be25d7bd298e033b9da93217e5b68309bf724b6e494cdadb471d00d/time_machine-2.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cedc989717c8b44a3881ac3d68ab5a95820448796c550de6a2149ed1525157f0", size = 33721 }, + { url = "https://files.pythonhosted.org/packages/e6/9d/70e4640fed1fd8122204ae825c688d0ef8c04f515ec6bf3c5f3086d6510e/time_machine-2.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9d26d79de1c63a8c6586c75967e09b0ff306aa7e944a1eaddb74595c9b1839ca", size = 31646 }, + { url = "https://files.pythonhosted.org/packages/a1/cb/93bc0e51bea4e171a85151dbba3c3b3f612b50b953cd3076f5b4f0db9e14/time_machine-2.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:317b68b56a9c3731e0cf8886e0f94230727159e375988b36c60edce0ddbcb44a", size = 33403 }, + { url = "https://files.pythonhosted.org/packages/89/71/2c6a63ad4fbce3d62d46bbd9ac4433f30bade7f25978ce00815b905bcfcf/time_machine-2.16.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:43e1e18279759897be3293a255d53e6b1cb0364b69d9591d0b80c51e461c94b0", size = 33327 }, + { url = "https://files.pythonhosted.org/packages/68/4e/205c2b26763b8817cd6b8868242843800a1fbf275f2af35f5ba35ff2b01a/time_machine-2.16.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e43adb22def972a29d2b147999b56897116085777a0fea182fd93ee45730611e", size = 31454 }, + { url = "https://files.pythonhosted.org/packages/d7/95/44c1aa3994919f93534244c40cfd2fb9416d7686dc0c8b9b262c751b5118/time_machine-2.16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0c766bea27a0600e36806d628ebc4b47178b12fcdfb6c24dc0a566a9c06bfe7f", size = 32972 }, + { url = "https://files.pythonhosted.org/packages/d4/ee/75243df9c7cf30f108758e887141a58e6544baaa46e2e647b9ccc56db819/time_machine-2.16.0-cp312-cp312-win32.whl", hash = "sha256:6dae82ab647d107817e013db82223e20a9853fa88543fec853ae326382d03c2e", size = 19078 }, + { url = "https://files.pythonhosted.org/packages/d4/7c/d4e67cc031f9653c92167ccf87d241e3208653d191c96ac79281c273ab92/time_machine-2.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:265462c77dc9576267c3c7f20707780a171a9fdbac93ac22e608c309efd68c33", size = 19923 }, + { url = "https://files.pythonhosted.org/packages/aa/b6/7047226fcb9afefe47fc80f605530535bf71ad99b6797f057abbfa4cd9a5/time_machine-2.16.0-cp312-cp312-win_arm64.whl", hash = "sha256:ef768e14768eebe3bb1196c0dece8e14c1c6991605721214a0c3c68cf77eb216", size = 18003 }, + { url = "https://files.pythonhosted.org/packages/a6/18/3087d0eb185cedbc82385f46bf16032ec7102a0e070205a2c88c4ecf9952/time_machine-2.16.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7751bf745d54e9e8b358c0afa332815da9b8a6194b26d0fd62876ab6c4d5c9c0", size = 20209 }, + { url = "https://files.pythonhosted.org/packages/03/a3/fcc3eaf69390402ecf491d718e533b6d0e06d944d77fc8d87be3a2839102/time_machine-2.16.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1784edf173ca840ba154de6eed000b5727f65ab92972c2f88cec5c4d6349c5f2", size = 16681 }, + { url = "https://files.pythonhosted.org/packages/a2/96/8b76d264014bf9dc21873218de50d67223c71736f87fe6c65e582f7c29ac/time_machine-2.16.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f5876a5682ce1f517e55d7ace2383432627889f6f7e338b961f99d684fd9e8d", size = 33768 }, + { url = "https://files.pythonhosted.org/packages/5c/13/59ae8259be02b6c657ef6e3b6952bf274b43849f6f35cc61a576c68ce301/time_machine-2.16.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:806672529a2e255cd901f244c9033767dc1fa53466d0d3e3e49565a1572a64fe", size = 31685 }, + { url = "https://files.pythonhosted.org/packages/3e/c1/9f142beb4d373a2a01ebb58d5117289315baa5131d880ec804db49e94bf7/time_machine-2.16.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:667b150fedb54acdca2a4bea5bf6da837b43e6dd12857301b48191f8803ba93f", size = 33447 }, + { url = "https://files.pythonhosted.org/packages/95/f7/ed9ecd93c2d38dca77d0a28e070020f3ce0fb23e0d4a6edb14bcfffa5526/time_machine-2.16.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:da3ae1028af240c0c46c79adf9c1acffecc6ed1701f2863b8132f5ceae6ae4b5", size = 33408 }, + { url = "https://files.pythonhosted.org/packages/91/40/d0d274d70fa2c4cad531745deb8c81346365beb0a2736be05a3acde8b94a/time_machine-2.16.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:520a814ea1b2706c89ab260a54023033d3015abef25c77873b83e3d7c1fafbb2", size = 31526 }, + { url = "https://files.pythonhosted.org/packages/1d/ba/a27cdbb324d9a6d779cde0d514d47b696b5a6a653705d4b511fd65ef1514/time_machine-2.16.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8243664438bb468408b29c6865958662d75e51f79c91842d2794fa22629eb697", size = 33042 }, + { url = "https://files.pythonhosted.org/packages/72/63/64e9156c9e38c18720d0cc41378168635241de44013ffe3dd5b099447eb0/time_machine-2.16.0-cp313-cp313-win32.whl", hash = "sha256:32d445ce20d25c60ab92153c073942b0bac9815bfbfd152ce3dcc225d15ce988", size = 19108 }, + { url = "https://files.pythonhosted.org/packages/3d/40/27f5738fbd50b78dcc0682c14417eac5a49ccf430525dd0c5a058be125a2/time_machine-2.16.0-cp313-cp313-win_amd64.whl", hash = "sha256:f6927dda86425f97ffda36131f297b1a601c64a6ee6838bfa0e6d3149c2f0d9f", size = 19935 }, + { url = "https://files.pythonhosted.org/packages/35/75/c4d8b2f0fe7dac22854d88a9c509d428e78ac4bf284bc54cfe83f75cc13b/time_machine-2.16.0-cp313-cp313-win_arm64.whl", hash = "sha256:4d3843143c46dddca6491a954bbd0abfd435681512ac343169560e9bab504129", size = 18047 }, +] + +[[package]] +name = "tomli" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077 }, + { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429 }, + { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067 }, + { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030 }, + { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898 }, + { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894 }, + { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319 }, + { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273 }, + { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310 }, + { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309 }, + { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762 }, + { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453 }, + { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486 }, + { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349 }, + { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159 }, + { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243 }, + { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645 }, + { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584 }, + { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875 }, + { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418 }, + { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708 }, + { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582 }, + { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543 }, + { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691 }, + { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170 }, + { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530 }, + { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666 }, + { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954 }, + { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724 }, + { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383 }, + { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257 }, +] + +[[package]] +name = "typing-extensions" +version = "4.12.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 }, +] + +[[package]] +name = "tzdata" +version = "2025.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/0f/fa4723f22942480be4ca9527bbde8d43f6c3f2fe8412f00e7f5f6746bc8b/tzdata-2025.1.tar.gz", hash = "sha256:24894909e88cdb28bd1636c6887801df64cb485bd593f2fd83ef29075a81d694", size = 194950 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/dd/84f10e23edd882c6f968c21c2434fe67bd4a528967067515feca9e611e5e/tzdata-2025.1-py2.py3-none-any.whl", hash = "sha256:7e127113816800496f027041c570f50bcd464a020098a3b6b199517772303639", size = 346762 }, +] + +[[package]] +name = "virtualenv" +version = "20.29.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "distlib" }, + { name = "filelock" }, + { name = "platformdirs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a7/ca/f23dcb02e161a9bba141b1c08aa50e8da6ea25e6d780528f1d385a3efe25/virtualenv-20.29.1.tar.gz", hash = "sha256:b8b8970138d32fb606192cb97f6cd4bb644fa486be9308fb9b63f81091b5dc35", size = 7658028 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/89/9b/599bcfc7064fbe5740919e78c5df18e5dceb0887e676256a1061bb5ae232/virtualenv-20.29.1-py3-none-any.whl", hash = "sha256:4e4cb403c0b0da39e13b46b1b2476e505cb0046b25f242bee80f62bf990b2779", size = 4282379 }, +] From 1b7956d6c7b82d8040d676af7ec569e2819172c0 Mon Sep 17 00:00:00 2001 From: Hugo Lecuyer Date: Wed, 29 Jan 2025 14:28:24 +0100 Subject: [PATCH 5/9] wip --- .github/workflows/doc.yml | 34 + docs/model.md.j2 | 2 +- docs/referentiel.md.j2 | 10 + docs/referentiels/labels_nationaux.md | 595 ++++++++++ .../modes_orientation_accompagnateur.md | 52 + .../modes_orientation_beneficiaire.md | 52 + docs/referentiels/profils.md | 202 ++++ docs/referentiels/thematiques.md | 1043 +++++++++++++++++ docs/referentiels/typologies_de_services.md | 99 ++ docs/referentiels/typologies_de_structures.md | 637 ++++++++++ docs/service.md | 16 +- docs/structure.md | 8 +- mkdocs.yml | 9 +- schemas/structure.json | 6 +- src/data_inclusion/schema/__init__.py | 4 +- src/data_inclusion/schema/__main__.py | 86 +- src/data_inclusion/schema/services.py | 12 +- src/data_inclusion/schema/structures.py | 10 +- .../schema/typologies_de_structures.py | 2 +- uv.lock | 439 +++++++ 20 files changed, 3267 insertions(+), 51 deletions(-) create mode 100644 .github/workflows/doc.yml create mode 100644 docs/referentiel.md.j2 create mode 100644 docs/referentiels/labels_nationaux.md create mode 100644 docs/referentiels/modes_orientation_accompagnateur.md create mode 100644 docs/referentiels/modes_orientation_beneficiaire.md create mode 100644 docs/referentiels/profils.md create mode 100644 docs/referentiels/thematiques.md create mode 100644 docs/referentiels/typologies_de_services.md create mode 100644 docs/referentiels/typologies_de_structures.md diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml new file mode 100644 index 0000000..73d5639 --- /dev/null +++ b/.github/workflows/doc.yml @@ -0,0 +1,34 @@ +name: publish_doc + +on: + push: + branches: + - main + +permissions: + contents: write +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Configure Git Credentials + run: | + git config user.name github-actions[bot] + git config user.email 41898282+github-actions[bot]@users.noreply.github.com + - uses: actions/setup-python@v5 + with: + python-version: 3.x + - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV + + + - uses: actions/cache@v4 + with: + key: mkdocs-material-${{ env.cache_id }} + path: .cache + restore-keys: | + mkdocs-material- + - run: pip install mkdocs-material + + + - run: mkdocs gh-deploy --force \ No newline at end of file diff --git a/docs/model.md.j2 b/docs/model.md.j2 index 0d0722c..5a6019c 100644 --- a/docs/model.md.j2 +++ b/docs/model.md.j2 @@ -21,7 +21,7 @@ Type : `{{ get_property_type_data(property_schema).type }}` {% if referentiel.enum|length <= 5 %} Valeurs acceptées : `"{{ referentiel.enum|join('", "') }}"` {% else %} -Valeurs acceptées : voir les [{{ referentiel.title }}]({{ snake_case(property_type_data.referentiel) }}.md) +Valeurs acceptées : voir les [{{ referentiel.title }}](../referentiels/{{ property_type_data.referentiel }}.md) {% endif %} {% endif %} diff --git a/docs/referentiel.md.j2 b/docs/referentiel.md.j2 new file mode 100644 index 0000000..f86bf25 --- /dev/null +++ b/docs/referentiel.md.j2 @@ -0,0 +1,10 @@ +{% for referential_item in referential %} +### `{{ referential_item.value }}` + +Label: {{ referential_item.label }} + +{% if referential_item.description %} +Description: {{ referential_item.description }} +{% endif %} + +{% endfor %} diff --git a/docs/referentiels/labels_nationaux.md b/docs/referentiels/labels_nationaux.md new file mode 100644 index 0000000..9c55966 --- /dev/null +++ b/docs/referentiels/labels_nationaux.md @@ -0,0 +1,595 @@ + +### `60000-rebonds` + +Label: 60 000 rebonds + + + + +### `action-logement` + +Label: Action logement + + + + +### `adie` + +Label: Adie + + + + +### `afpa` + +Label: AFPA + + + + +### `agefiph` + +Label: AGEFIPH + + + + +### `aidants-connect` + +Label: Aidants Connect + + + + +### `alliance-villes-emploi` + +Label: Alliance villes emploi + + + + +### `anlci` + +Label: ANLCI + + + + +### `apec` + +Label: APEC + + + + +### `apels` + +Label: APELS Agence Pour l’Education par Le Sport + + + + +### `apprentis-dauteuil` + +Label: Apprentis d’Auteuil + + + + +### `aptic` + +Label: APTIC + + + + +### `banques-alimentaires` + +Label: Banques alimentaires + + + + +### `bge` + +Label: BGE + + + + +### `caf` + +Label: CAF + + + + +### `campus-connecte` + +Label: Campus connecté + + + + +### `cap-emploi-reseau-cheops` + +Label: CAP Emploi - Réseau CHEOPS + + + + +### `cci` + +Label: CCI + + + + +### `chantier-ecole` + +Label: Chantier école + + + + +### `cidff` + +Label: CIDFF + + + + +### `cnam` + +Label: CNAM + + + + +### `collectif-emploi` + +Label: Collectif emploi + + + + +### `conseiller-numerique` + +Label: Conseiller numérique + + + + +### `coorace` + +Label: Coorace + + + + +### `crepi` + +Label: CREPI + + + + +### `cresus` + +Label: Crésus + + + + +### `croix-rouge` + +Label: Croix rouge + + + + +### `dihal` + +Label: DIHAL + + + + +### `duo-for-a-job` + +Label: Duo for a job + + + + +### `ecoles-de-la-deuxieme-chance` + +Label: E2C - École de la 2e chance + + + + +### `egee` + +Label: EGEE + + + + +### `emmaus` + +Label: Emmaus + + + + +### `envie` + +Label: Envie + + + + +### `epide` + +Label: EPIDE + + + + +### `espace-emploi-agric-arrco` + +Label: Espace Emploi Agirc Arrco + + + + +### `etcld` + +Label: Expérimentation territoriale contre le chômage de longue durée + + + + +### `fabrique-de-territoire` + +Label: Fabrique de Territoire + + + + +### `face` + +Label: Fondation FACE + + + + +### `fede-pro-fem` + +Label: Federation Professionnelle Pour les Femmes + + + + +### `federation-des-acteurs-de-la-solidarite` + +Label: Fédération des acteurs de la solidarité + + + + +### `federation-des-entreprises-dinsertion` + +Label: Fédération des entreprises d’insertion + + + + +### `force-femmes` + +Label: Force Femmes + + + + +### `france-active` + +Label: France Active + + + + +### `france-service` + +Label: France service + + + + +### `france-travail` + +Label: France Travail + + + + +### `french-tech` + +Label: French Tech + + + + +### `geiq` + +Label: GEIQ + + + + +### `grand-test-couveuse-dentreprise` + +Label: Grandes écoles du numérique + + + + +### `grandes-ecoles-du-numerique` + +Label: Grand Test Couveuse d’entreprise + + + + +### `hup` + +Label: H’UP + + + + +### `inae` + +Label: INAE + + + + +### `initiative-france` + +Label: Initiative France + + + + +### `konexio` + +Label: Konexio + + + + +### `la-cravate-solidaire` + +Label: La Cravate Solidaire + + + + +### `la-ressourcerie` + +Label: La ressourcerie + + + + +### `les-premieres` + +Label: Les Premières + + + + +### `linklusion` + +Label: Linklusion + + + + +### `maisons-de-lemploi` + +Label: Maisons de l’Emploi + + + + +### `mdph` + +Label: MDPH + + + + +### `mission-locale` + +Label: Mission Locale + + + + +### `mobin` + +Label: Adhérent au Réseau Mob’In + + + + +### `nqt` + +Label: NQT + + + + +### `point-conseil-budget` + +Label: Point conseil budget + + + + +### `point-justice` + +Label: Points Justice + + + + +### `positive-planet` + +Label: Positive Planet + + + + +### `proxite` + +Label: Proxité + + + + +### `reseau-app` + +Label: Réseau APP + + + + +### `reseau-entreprendre` + +Label: Réseau Entreprendre + + + + +### `ressourceries` + +Label: Ressourceries + + + + +### `restos-du-coeur` + +Label: Restos du coeur + + + + +### `scconseil` + +Label: SC Conseil + + + + +### `secours-populaire` + +Label: Secours populaire + + + + +### `siao` + +Label: SIAO + + + + +### `simplon` + +Label: Simplon + + + + +### `sinca` + +Label: SINGA + + + + +### `snc` + +Label: SNC - Solidarité Nouvelle Face au Chômage + + + + +### `sport-dans-la-ville` + +Label: Sport Dans La Ville + + + + +### `tous-tes-possible` + +Label: Tous Tes Possibles + + + + +### `tzcld` + +Label: TZCLD - Territoire Zero Chomeur Longue Durée + + + + +### `unaf` + +Label: Union nationale de l’aide aux familles + + + + +### `unai` + +Label: UNAI + + + + +### `unccas` + +Label: Union nationale des centres communaux d’action sociale + + + + +### `unea` + +Label: UNEA + + + + +### `unis-cite` + +Label: Unis-Cité + + + + +### `wimoov` + +Label: Wimoov + + + diff --git a/docs/referentiels/modes_orientation_accompagnateur.md b/docs/referentiels/modes_orientation_accompagnateur.md new file mode 100644 index 0000000..cc36203 --- /dev/null +++ b/docs/referentiels/modes_orientation_accompagnateur.md @@ -0,0 +1,52 @@ + +### `autre` + +Label: Autre + + + + +### `completer-le-formulaire-dadhesion` + +Label: Compléter le formulaire d’adhésion + + +Description: Compléter le formulaire d’adhésion associé. + + + +### `envoyer-un-mail` + +Label: Envoyer un courriel + + +Description: Envoyer un courriel à l’adresse indiquée. + + + +### `envoyer-un-mail-avec-une-fiche-de-prescription` + +Label: Envoyer un courriel avec une fiche de prescription + + +Description: Envoyer un courriel à l’adresse indiquée avec une fiche de prescription. + + + +### `prendre-rdv` + +Label: Prendre rendez-vous + + +Description: Prendre rendez-vous auprès de la structure + + + +### `telephoner` + +Label: Téléphoner + + +Description: Téléphoner au numéro indiqué. + + diff --git a/docs/referentiels/modes_orientation_beneficiaire.md b/docs/referentiels/modes_orientation_beneficiaire.md new file mode 100644 index 0000000..469a1e3 --- /dev/null +++ b/docs/referentiels/modes_orientation_beneficiaire.md @@ -0,0 +1,52 @@ + +### `autre` + +Label: Autre + + + + +### `completer-le-formulaire-dadhesion` + +Label: Compléter le formulaire d’adhésion + + +Description: Compléter le formulaire d’adhésion associé. + + + +### `envoyer-un-mail` + +Label: Envoyer un courriel + + +Description: Envoyer un courriel à l’adresse indiquée. + + + +### `prendre-rdv` + +Label: Prendre rendez-vous + + +Description: Prendre rendez-vous auprès de la structure + + + +### `se-presenter` + +Label: Se présenter + + +Description: Se présenter à l’adresse indiquée. + + + +### `telephoner` + +Label: Téléphoner + + +Description: Téléphoner au numéro indiqué. + + diff --git a/docs/referentiels/profils.md b/docs/referentiels/profils.md new file mode 100644 index 0000000..e24bb53 --- /dev/null +++ b/docs/referentiels/profils.md @@ -0,0 +1,202 @@ + +### `adultes` + +Label: Adultes + + + + +### `alternants` + +Label: Alternants + + + + +### `beneficiaires-rsa` + +Label: Bénéficiaires du Revenu de Solidarité Active (RSA) + + + + +### `deficience-visuelle` + +Label: Déficience visuelle + + + + +### `demandeurs-demploi` + +Label: Demandeurs ou demandeuses d’emploi + + + + +### `etudiants` + +Label: Étudiants + + + + +### `familles-enfants` + +Label: Familles/enfants + + + + +### `femmes` + +Label: Femmes + + +Description: Le lieu propose des accompagnements réservés aux femmes. + + + +### `handicaps-mentaux` + +Label: Handicaps mentaux : déficiences limitant les activités d’une personne + + + + +### `handicaps-psychiques` + +Label: Handicaps psychiques : troubles psychiatriques donnant lieu à des atteintes comportementales + + + + +### `jeunes` + +Label: Jeunes + + + + +### `jeunes-16-26` + +Label: Jeunes (16-26 ans) + + + + +### `locataires` + +Label: Locataires + + + + +### `personnes-de-nationalite-etrangere` + +Label: Personnes de nationalité étrangère + + + + +### `personnes-en-situation-de-handicap` + +Label: Personnes en situation de handicap + + +Description: Une personne se déplaçant temporairement en béquilles des suites d’une intervention médicale est en situation de handicap sans toutefois être handicapée. + + + +### `personnes-en-situation-durgence` + +Label: Victimes + + + + +### `personnes-en-situation-illettrisme` + +Label: Personnes en situation d’illettrisme + + + + +### `personnes-handicapees` + +Label: Personnes handicapées + + +Description: Ce terme est privilégié pour désigner une incapacité persistante et significative subie par une personne dans son environnement. + + + +### `proprietaires` + +Label: Propriétaires + + + + +### `public-langues-etrangeres` + +Label: Public langues étrangères + + + + +### `retraites` + +Label: Retraités + + + + +### `salaries` + +Label: Salariés + + + + +### `sans-domicile-fixe` + +Label: Sans domicile fixe + + + + +### `seniors-65` + +Label: Seniors (+ 65 ans) + + + + +### `sortants-de-detention` + +Label: Sortants de détention + + + + +### `surdite` + +Label: Surdité + + + + +### `tous-publics` + +Label: Tout publics + + + + +### `victimes` + +Label: Victimes + + + diff --git a/docs/referentiels/thematiques.md b/docs/referentiels/thematiques.md new file mode 100644 index 0000000..f7d99fe --- /dev/null +++ b/docs/referentiels/thematiques.md @@ -0,0 +1,1043 @@ + +### `acces-aux-droits-et-citoyennete` + +Label: Accès aux droits & citoyenneté + + + + +### `acces-aux-droits-et-citoyennete--accompagnement-dans-les-demarches-administratives` + +Label: Accompagnement dans les démarches administratives + + + + +### `acces-aux-droits-et-citoyennete--accompagnement-juridique` + +Label: Accompagnement juridique + + + + +### `acces-aux-droits-et-citoyennete--aide-aux-victimes` + +Label: Aide aux victimes + + + + +### `acces-aux-droits-et-citoyennete--connaitre-ses-droits` + +Label: Connaître ses droits + + + + +### `acces-aux-droits-et-citoyennete--demandeurs-dasile-et-naturalisation` + +Label: Demandeurs d’asile et naturalisation + + + + +### `acces-aux-droits-et-citoyennete--developpement-durable` + +Label: Développement durable + + + + +### `acces-aux-droits-et-citoyennete--faciliter-laction-citoyenne` + +Label: Faciliter l’action citoyenne + + + + +### `accompagnement-social-et-professionnel-personnalise` + +Label: Accompagnement social et professionnel personnalisé + + + + +### `accompagnement-social-et-professionnel-personnalise--decrochage-scolaire` + +Label: Décrochage scolaire + + + + +### `accompagnement-social-et-professionnel-personnalise--definition-du-projet-professionnel` + +Label: Définition du projet professionnel + + + + +### `accompagnement-social-et-professionnel-personnalise--parcours-d-insertion-socioprofessionnel` + +Label: Parcours d’insertion socio-professionnel + + + + +### `apprendre-francais` + +Label: Apprendre le Français + + + + +### `apprendre-francais--accompagnement-insertion-pro` + +Label: Accompagnement vers l’insertion professionnelle + + + + +### `apprendre-francais--communiquer-vie-tous-les-jours` + +Label: Communiquer dans la vie de tous les jours + + + + +### `apprendre-francais--suivre-formation` + +Label: Suivre une formation + + + + +### `choisir-un-metier` + +Label: Choisir un métier + + + + +### `choisir-un-metier--confirmer-son-choix-de-metier` + +Label: Confirmer son choix de métier + + + + +### `choisir-un-metier--connaitre-les-opportunites-demploi` + +Label: Connaître les opportunités d’emploi + + + + +### `choisir-un-metier--decouvrir-un-metier-ou-un-secteur-dactivite` + +Label: Découvrir un métier ou un secteur d’activité + + + + +### `choisir-un-metier--identifier-ses-points-forts-et-ses-competences` + +Label: Identifier ses points forts et ses compétences + + + + +### `creation-activite` + +Label: Création d’activité + + + + +### `creation-activite--definir-son-projet-de-creation-dentreprise` + +Label: Définir son projet de création d’entreprise + + + + +### `creation-activite--developper-son-entreprise` + +Label: Développer son entreprise + + + + +### `creation-activite--financer-son-projet` + +Label: Financer son projet + + + + +### `creation-activite--reseautage-pour-createurs-dentreprise` + +Label: Réseautage pour créateurs d’entreprise + + + + +### `creation-activite--structurer-son-projet-de-creation-dentreprise` + +Label: Structurer son projet de création d’entreprise + + + + +### `equipement-et-alimentation` + +Label: Équipement et alimentation + + + + +### `equipement-et-alimentation--acces-a-du-materiel-informatique` + +Label: Accès à du matériel informatique + + + + +### `equipement-et-alimentation--acces-a-un-telephone-et-un-abonnement` + +Label: Accès à un téléphone et un abonnement + + + + +### `equipement-et-alimentation--aide-menagere` + +Label: Aide ménagère + + + + +### `equipement-et-alimentation--alimentation` + +Label: Alimentation + + + + +### `equipement-et-alimentation--electromenager` + +Label: Électroménager + + + + +### `equipement-et-alimentation--habillement` + +Label: Habillement + + + + +### `famille` + +Label: Famille + + + + +### `famille--accompagnement-femme-enceinte-bebe-jeune-enfant` + +Label: Accompagnement femme enceinte, bébé, jeune enfant + + + + +### `famille--garde-denfants` + +Label: Garde d’enfants + + + + +### `famille--information-et-accompagnement-des-parents` + +Label: Information et accompagnement des parents + + + + +### `famille--jeunes-sans-soutien-familial` + +Label: Jeunes sans soutien familial + + + + +### `famille--soutien-a-la-parentalite` + +Label: Soutien à la parentalité + + + + +### `famille--soutien-aux-familles` + +Label: Soutien aux familles + + + + +### `famille--violences-intrafamiliales` + +Label: Violences intrafamiliales + + + + +### `gestion-financiere` + +Label: Gestion financière + + + + +### `gestion-financiere--acces-au-micro-credit` + +Label: Accès au micro-crédit + + + + +### `gestion-financiere--accompagnement-aux-personnes-en-difficultes-financieres` + +Label: Accompagnement aux personnes en difficultés financières + + + + +### `gestion-financiere--apprendre-a-gerer-son-budget` + +Label: Apprendre à gérer son budget + + + + +### `gestion-financiere--beneficier-daides-financieres` + +Label: Bénéficier d’aides financières + + + + +### `gestion-financiere--creation-et-utilisation-dun-compte-bancaire` + +Label: Création et utilisation d’un compte bancaire + + + + +### `gestion-financiere--obtenir-une-aide-alimentaire` + +Label: Obtenir une aide alimentaire + + + + +### `gestion-financiere--prevention-et-gestion-du-surendettement` + +Label: Prévention et gestion du surendettement + + + + +### `handicap` + +Label: Handicap + + + + +### `handicap--accompagnement-par-une-structure-specialisee` + +Label: Accompagnement par une structure spécialisée + + + + +### `handicap--adaptation-au-poste-de-travail` + +Label: Adaptation au poste de travail + + + + +### `handicap--adapter-son-logement` + +Label: Adapter son logement + + + + +### `handicap--aide-a-la-personne` + +Label: Aide à la personne en situation de handicap ou malade + + + + +### `handicap--connaissance-des-droits-des-travailleurs` + +Label: Connaissance des droits des travailleurs + + + + +### `handicap--faire-reconnaitre-un-handicap` + +Label: Faire reconnaître un handicap + + + + +### `handicap--favoriser-le-retour-et-le-maintien-dans-lemploi` + +Label: Favoriser le retour et le maintien dans l’emploi + + + + +### `handicap--gerer-le-depart-a-la-retraite-des-personnes-en-situation-de-handicap` + +Label: Gérer le départ à la retraite des personnes en situation de handicap + + + + +### `handicap--mobilite-des-personnes-en-situation-de-handicap` + +Label: Mobilité des personnes en situation de handicap + + + + +### `illettrisme` + +Label: Illettrisme + + + + +### `illettrisme--accompagner-scolarite` + +Label: Accompagner la scolarité d’un enfant + + + + +### `illettrisme--ameliorer-vocabulaire` + +Label: Améliorer un niveau de vocabulaire + + + + +### `illettrisme--etre-autonome` + +Label: Être autonome dans la vie de tous les jours + + + + +### `illettrisme--info-acquisition-connaissances` + +Label: Être informé(e) sur l’acquisition des compétences de base + + + + +### `illettrisme--permis-conduire` + +Label: Passer le permis de conduire + + + + +### `illettrisme--reperer-situation-illettrisme` + +Label: Repérer des situations d’illettrisme + + + + +### `illettrisme--surmonter-trouble-apprentissage` + +Label: Surmonter un trouble de l’apprentissage + + + + +### `illettrisme--trouver-emploi-formation` + +Label: Trouver un emploi ou une formation + + + + +### `illettrisme--utiliser-numerique` + +Label: Savoir utiliser les outils numériques + + + + +### `illettrisme--valider-certification-clea` + +Label: Valider une certification Cléa + + + + +### `logement-hebergement` + +Label: Logement et hébergement + + + + +### `logement-hebergement--aides-financieres-investissement-locatif` + +Label: Aides financières pour l’investissement locatif + + + + +### `logement-hebergement--besoin-dadapter-mon-logement` + +Label: Besoin d’adapter mon logement + + + + +### `logement-hebergement--connaissance-de-ses-droits-et-interlocuteurs` + +Label: Connaissance de ses droits et interlocuteurs + + + + +### `logement-hebergement--demenagement` + +Label: Déménagement + + + + +### `logement-hebergement--etre-accompagne-dans-son-projet-accession` + +Label: Être accompagné(e) dans son projet d’accession + + + + +### `logement-hebergement--etre-accompagne-en cas-de-difficultes-financieres` + +Label: Être accompagné(e) en cas de difficultés financières + + + + +### `logement-hebergement--etre-accompagne-pour-se-loger` + +Label: Être accompagné(e) pour se loger + + + + +### `logement-hebergement--financer-son-projet-travaux` + +Label: Financer son projet de travaux + + + + +### `logement-hebergement--gerer-son-budget` + +Label: Gérer son budget + + + + +### `logement-hebergement--mal-loges-sans-logis` + +Label: Mal logé/sans logis + + + + +### `logement-hebergement--probleme-avec-son-logement` + +Label: Problème avec son logement + + + + +### `logement-hebergement--reprendre-un-emploi-ou-une-formation` + +Label: Reprendre un emploi ou une formation + + + + +### `mobilite` + +Label: Mobilité + + + + +### `mobilite--acheter-un-vehicule-motorise` + +Label: Acheter un véhicule motorisé + + + + +### `mobilite--acheter-un-velo` + +Label: Acheter un vélo + + + + +### `mobilite--aides-a-la-reprise-demploi-ou-a-la-formation` + +Label: Aides à la reprise d’emploi ou à la formation + + + + +### `mobilite--apprendre-a-utiliser-un-deux-roues` + +Label: Apprendre à utiliser un deux roues + + + + +### `mobilite--comprendre-et-utiliser-les-transports-en-commun` + +Label: Comprendre et utiliser les transports en commun + + + + +### `mobilite--entretenir-reparer-son-vehicule` + +Label: Entretenir ou réparer son véhicule + + + + +### `mobilite--etre-accompagne-dans-son-parcours-mobilite` + +Label: Être accompagné(e) dans son parcours mobilité + + + + +### `mobilite--financer-mon-projet-mobilite` + +Label: Financer mon projet mobilité + + + + +### `mobilite--louer-un-vehicule` + +Label: Louer un véhicule (voiture, vélo, scooter..) + + + + +### `mobilite--preparer-son-permis-de-conduire-se-reentrainer-a-la-conduite` + +Label: Préparer son permis de conduire, se réentraîner à la conduite + + + + +### `numerique` + +Label: Numérique + + + + +### `numerique--acceder-a-du-materiel` + +Label: Accéder à du matériel + + + + +### `numerique--acceder-a-une-connexion-internet` + +Label: Accéder à une connexion internet + + + + +### `numerique--accompagner-les-demarches-de-sante` + +Label: Accompagner les démarches de santé + + + + +### `numerique--approfondir-ma-culture-numerique` + +Label: Approfondir ma culture numérique + + + + +### `numerique--creer-avec-le-numerique` + +Label: Créer avec le numérique + + + + +### `numerique--creer-et-developper-mon-entreprise` + +Label: Créer et développer mon entreprise + + + + +### `numerique--devenir-autonome-dans-les-demarches-administratives` + +Label: Devenir autonome dans les démarches administratives + + + + +### `numerique--favoriser-mon-insertion-professionnelle` + +Label: Favoriser mon insertion professionnelle + + + + +### `numerique--prendre-en-main-un-ordinateur` + +Label: Prendre en main un ordinateur + + + + +### `numerique--prendre-en-main-un-smartphone-ou-une-tablette` + +Label: Prendre en main un smartphone ou une tablette + + + + +### `numerique--promouvoir-la-citoyennete-numerique` + +Label: Promouvoir la citoyenneté numérique + + + + +### `numerique--realiser-des-demarches-administratives-avec-un-accompagnement` + +Label: Réaliser des démarches administratives avec un accompagnement + + + + +### `numerique--s-equiper-en-materiel-informatique` + +Label: S’équiper en matériel informatique + + + + +### `numerique--soutenir-la-parentalite-et-l-education-avec-le-numerique` + +Label: Soutenir la parentalité et l’éducation avec le numérique + + + + +### `numerique--utiliser-le-numerique-au-quotidien` + +Label: Utiliser le numérique au quotidien + + + + +### `preparer-sa-candidature` + +Label: Préparer sa candidature + + + + +### `preparer-sa-candidature--developper-son-reseau` + +Label: Développer son réseau + + + + +### `preparer-sa-candidature--organiser-ses-demarches-de-recherche-demploi` + +Label: Organiser ses démarches de recherche d’emploi + + + + +### `preparer-sa-candidature--realiser-un-cv-et-ou-une-lettre-de-motivation` + +Label: Réaliser un CV et/ou une lettre de motivation + + + + +### `preparer-sa-candidature--valoriser-ses-competences` + +Label: Valoriser ses compétences + + + + +### `remobilisation` + +Label: Remobilisation + + + + +### `remobilisation--bien-etre` + +Label: Bien être + + + + +### `remobilisation--decouvrir-son-potentiel-via-le-sport-et-la-culture` + +Label: Découvrir son potentiel via le sport et la culture + + + + +### `remobilisation--discrimination` + +Label: Discrimination + + + + +### `remobilisation--identifier-ses-competences-et-aptitudes` + +Label: Identifier ses compétences et aptitudes + + + + +### `remobilisation--lien-social` + +Label: Lien social + + + + +### `remobilisation--participer-a-des-actions-solidaires-ou-de-benevolat` + +Label: Participer à des actions solidaires ou de bénévolat + + + + +### `remobilisation--pression-sociale` + +Label: Pression sociale + + + + +### `remobilisation--restaurer-sa-confiance-son-image-de-soi` + +Label: Restaurer sa confiance, son image de soi + + + + +### `sante` + +Label: Santé + + + + +### `sante--acces-aux-soins` + +Label: Accès aux soins + + + + +### `sante--accompagnement-de-la-femme-enceinte-du-bebe-et-du-jeune-enfant` + +Label: Accompagnement de la femme enceinte, du bébé et du jeune enfant + + + + +### `sante--accompagner-les-traumatismes` + +Label: Accompagner les traumatismes + + + + +### `sante--bien-etre-psychologique` + +Label: Bien être psychologique + + + + +### `sante--diagnostic-et-accompagnement-a-lemployabilite` + +Label: Diagnostic et accompagnement à l’employabilité + + + + +### `sante--faire-face-a-une-situation-daddiction` + +Label: Faire face à une situation d’addiction + + + + +### `sante--obtenir-la-prise-en-charge-de-frais-medicaux` + +Label: Obtenir la prise en charge de frais médicaux + + + + +### `sante--prevention-et-acces-aux-soins` + +Label: Prévention et accès aux soins (vaccination, éducation à la santé, lutte contre la tuberculose…). + + + + +### `sante--se-soigner-et-prevenir-la-maladie` + +Label: Se soigner et prévenir la maladie + + + + +### `sante--vie-relationnelle-et-affective` + +Label: Vie relationnelle et affective, dépistage et prévention des IST/VIH… + + + + +### `se-former` + +Label: Se former + + + + +### `se-former--monter-son-dossier-de-formation` + +Label: Monter son dossier de formation + + + + +### `se-former--trouver-sa-formation` + +Label: Trouver sa formation + + + + +### `se-former--utiliser-le-numerique` + +Label: Utiliser le numérique + + + + +### `souvrir-a-linternational` + +Label: S’ouvrir à l’international + + + + +### `souvrir-a-linternational--connaitre-les-opportunites-demploi-a-letranger` + +Label: Connaître les opportunités d’emploi à l’étranger + + + + +### `souvrir-a-linternational--sinformer-sur-les-aides-pour-travailler-a-letranger` + +Label: S’informer sur les aides pour travailler à l’étranger + + + + +### `souvrir-a-linternational--sorganiser-suite-a-son-retour-en-france` + +Label: S’organiser suite à son retour en France + + + + +### `trouver-un-emploi` + +Label: Trouver un emploi + + + + +### `trouver-un-emploi--convaincre-un-recruteur-en-entretien` + +Label: Convaincre un recruteur en entretien + + + + +### `trouver-un-emploi--faire-des-candidatures-spontanees` + +Label: Faire des candidatures spontanées + + + + +### `trouver-un-emploi--repondre-a-des-offres-demploi` + +Label: Répondre à des offres d’emploi + + + + +### `trouver-un-emploi--suivre-ses-candidatures-et-relancer-les-employeurs` + +Label: Suivre ses candidatures et relancer les employeurs + + + diff --git a/docs/referentiels/typologies_de_services.md b/docs/referentiels/typologies_de_services.md new file mode 100644 index 0000000..2ee90b4 --- /dev/null +++ b/docs/referentiels/typologies_de_services.md @@ -0,0 +1,99 @@ + +### `accompagnement` + +Label: Accompagnement + + +Description: Etre accompagné·e dans ses démarches ou son retour à l’emploi durable + + + +### `accueil` + +Label: Accueil + + +Description: Lieux d’écoute et d’évaluation des besoins de la personne qui se présente afin de la guider vers le ou les organismes les plus susceptibles de répondre à ses besoins + + + +### `aide-financiere` + +Label: Aide financière + + +Description: Prise en charge financière, aide ou rémunération visant à aider une personne à accéder à un service + + + +### `aide-materielle` + +Label: Aide materielle + + +Description: Accéder à du matériel, voiture, vélo, ordinateur, alimentation + + + +### `atelier` + +Label: Atelier + + +Description: Etre accompagné·e dans sa montée en compétence sur un sujet spécifique + + + +### `autonomie` + +Label: En autonomie + + +Description: Réaliser des démarches en toute autonomie + + + +### `delegation` + +Label: Délégation + + +Description: Une personne fait les démarches à ma place. + + + +### `financement` + +Label: Financement + + +Description: Crédit solidaire, prêts à taux zéro pour le financement d’un projet + + + +### `formation` + +Label: Formation + + +Description: Formation dispensée par des professionnels pour les bénéficiaires + + + +### `information` + +Label: Information + + +Description: Premier niveau d’information apporté par des professionnels du secteur + + + +### `numerique` + +Label: Service numérique + + +Description: Service en ligne qui renvoi vers un site dédié + + diff --git a/docs/referentiels/typologies_de_structures.md b/docs/referentiels/typologies_de_structures.md new file mode 100644 index 0000000..16c8c54 --- /dev/null +++ b/docs/referentiels/typologies_de_structures.md @@ -0,0 +1,637 @@ + +### `ACI` + +Label: Structures porteuses d’ateliers et chantiers d’insertion (ACI) + + + + +### `ACIPHC` + +Label: SIAE — Atelier chantier d’insertion premières heures en chantier + + + + +### `AFPA` + +Label: Agence nationale pour la formation professionnelle des adultes (AFPA) + + + + +### `AI` + +Label: Associations intermédiaires (AI) + + + + +### `ASE` + +Label: Aide sociale à l’enfance (ASE) + + + + +### `ASSO` + +Label: Associations + + + + +### `ASSO_CHOMEUR` + +Label: Associations de chômeurs + + + + +### `AVIP` + +Label: Crèche À Vocation d’Insertion Professionnelle (AVIP) + + + + +### `Autre` + +Label: Autre + + + + +### `BIB` + +Label: Bibliothèque / Médiathèque + + + + +### `CAARUD` + +Label: CAARUD - Centre d’accueil et d’accompagnement à la réduction de risques pour usagers de drogues + + + + +### `CADA` + +Label: Centres d’accueil de demandeurs d’asile (CADA) + + + + +### `CAF` + +Label: Caisses d’allocation familiale (CAF) + + + + +### `CAP_EMPLOI` + +Label: Cap Emploi + + + + +### `CAVA` + +Label: Centres d’adaptation à la vie active (CAVA) + + + + +### `CC` + +Label: Communautés de Commune + + + + +### `CCAS` + +Label: Centres communaux d’action sociale (CCAS) + + + + +### `CCONS` + +Label: Chambres consulaires (CCI, CMA, CA) + + + + +### `CD` + +Label: Conseils Départementaux (CD) + + + + +### `CDAS` + +Label: Centre Départementale d'Action Sociale (CDAS) + + + + +### `CFP` + +Label: Centre des Finances Publiques (CFP) + + + + +### `CHRS` + +Label: Centres d’hébergement et de réinsertion sociale (CHRS) + + + + +### `CHU` + +Label: Centres d’hébergement d’urgence (CHU) + + + + +### `CIAS` + +Label: Centres intercommunaux d’action sociale (CIAS) + + + + +### `CIDFF` + +Label: Centres d’information sur les droits des femmes et des familles (CIDFF) + + + + +### `CITMET` + +Label: Cité des métiers + + + + +### `CMP` + +Label: Centre Médico-Psychologique (CMP) + + + + +### `CMS` + +Label: Centre Médico-Social (CMS) + + + + +### `CPAM` + +Label: Caisse Primaire d'Assurance Maladie (CPAM) + + + + +### `CPH` + +Label: Centres provisoires d’hébergement (CPH) + + + + +### `CS` + +Label: Centre social + + + + +### `CSAPA` + +Label: CSAPA - Centre de soins, d’accompagnement et de prévention en addictologie + + + + +### `CSC` + +Label: Centre Socio-Culturel (CSC) + + + + +### `DEETS` + +Label: Directions de l’Economie, de l’Emploi, du Travail et des Solidarités (DEETS) + + + + +### `DEPT` + +Label: Services sociaux du Conseil départemental + + + + +### `DIPLP` + +Label: Délégation interministérielles à la prévention et à la lutte contre la pauvreté + + + + +### `E2C` + +Label: E2C - École de la 2e chance + + + + +### `EA` + +Label: Entreprise adaptée (EA) + + + + +### `EATT` + +Label: Entreprise Adaptée (EATT) + + + + +### `EI` + +Label: Entreprises d’insertion (EI) + + + + +### `EITI` + +Label: Entreprises d’insertion par le travail indépendant (EITI) + + + + +### `ENM` + +Label: Espace Numérique Mobile (ENM) + + + + +### `EPCI` + +Label: Intercommunalité (EPCI) + + + + +### `EPI` + +Label: Espace Public Internet (EPI) + + + + +### `EPIDE` + +Label: EPIDE - Établissement pour l’insertion dans l’emploi + + + + +### `EPN` + +Label: Espace Public Numérique (EPN) + + + + +### `ES` + +Label: Épicerie Solidaire + + + + +### `ESS` + +Label: Entreprise de l’Économie Sociale et Solidaire + + + + +### `ETABL_PRI` + +Label: Établissement privé + + + + +### `ETABL_PUB` + +Label: Établissement public + + + + +### `ETAT` + +Label: Service de l'État + + + + +### `ETTI` + +Label: Entreprises de travail temporaire d’insertion (ETTI) + + + + +### `EVS` + +Label: Espace de Vie Sociale (EVS) + + + + +### `FABLAB` + +Label: Fablab / Atelier partagé + + + + +### `FAIS` + +Label: Fédérations d’acteurs de l’insertion et de la solidarité + + + + +### `FT` + +Label: France Travail + + + + +### `GEIQ` + +Label: Groupements d’employeurs pour l’insertion et la qualification (GEIQ) + + + + +### `HUDA` + +Label: HUDA - Hébergement d’urgence pour demandeurs d’asile + + + + +### `LA_POSTE` + +Label: Bureau de poste / Agence postale + + + + +### `MDE` + +Label: Maison de l’emploi + + + + +### `MDEF` + +Label: Maison de l’emploi et de la formation + + + + +### `MDPH` + +Label: Maison Départementale des Personnes Handicapées + + + + +### `MDS` + +Label: Maison Départementale des Solidarités + + + + +### `MJC` + +Label: Maison des jeunes et de la culture + + + + +### `ML` + +Label: Mission Locale + + + + +### `MQ` + +Label: Maison de quartier + + + + +### `MSA` + +Label: Mutualité Sociale Agricole + + + + +### `MSAP` + +Label: Maison de Services Au Public (MSAP) + + + + +### `MUNI` + +Label: Municipalités + + + + +### `OACAS` + +Label: Structures agréées Organisme d’accueil communautaire et d’activité solidaire (OACAS) + + + + +### `ODC` + +Label: Organisation délégataire d’un CD + + + + +### `OF` + +Label: Organisme de formations + + + + +### `OIL` + +Label: Opérateur d’intermédiation locative + + + + +### `OPCS` + +Label: Organisation porteuse de la clause sociale + + + + +### `PAD` + +Label: Point d’Accès au Droit + + + + +### `PENSION` + +Label: Pension de famille / résidence accueil + + + + +### `PI` + +Label: Point Information (PI) + + + + +### `PIJ_BIJ` + +Label: Points et bureaux information jeunesse (PIJ/BIJ) + + + + +### `PIMMS` + +Label: Point Information Médiation Multi Services (PIMMS) + + + + +### `PJJ` + +Label: Protection judiciaire de la jeunesse (PJJ) + + + + +### `PLIE` + +Label: Plans locaux pour l’insertion et l’emploi (PLIE) + + + + +### `PREF` + +Label: Préfecture, Sous-Préfecture + + + + +### `PREVENTION` + +Label: Service ou club de prévention + + + + +### `REG` + +Label: Région + + + + +### `RESSOURCERIE` + +Label: Ressourcerie + + + + +### `RFS` + +Label: Réseau France Services + + + + +### `RS_FJT` + +Label: Résidence sociale / FJT - Foyer de Jeunes Travailleurs + + + + +### `SCP` + +Label: Services et clubs de prévention + + + + +### `SPIP` + +Label: Services pénitentiaires d’insertion et de probation (SPIP) + + + + +### `TIERS_LIEUX` + +Label: Tiers lieu & coworking + + + + +### `UDAF` + +Label: Union Départementale d’Aide aux Familles (UDAF) + + + diff --git a/docs/service.md b/docs/service.md index 4e28197..5bb0071 100644 --- a/docs/service.md +++ b/docs/service.md @@ -151,7 +151,7 @@ Type : `array[string]` -Valeurs acceptées : voir les [TypologieService](typologie_service.md) +Valeurs acceptées : `""` @@ -178,7 +178,7 @@ Type : `array[string]` -Valeurs acceptées : voir les [Thematique](thematique.md) +Valeurs acceptées : `""` @@ -227,7 +227,7 @@ Type : `array[string]` -Valeurs acceptées : `"gratuit", "gratuit-sous-conditions", "payant", "adhesion", "pass-numerique"` +Valeurs acceptées : `""` @@ -276,7 +276,7 @@ Type : `array[string]` -Valeurs acceptées : voir les [Profil](profil.md) +Valeurs acceptées : `""` @@ -743,7 +743,7 @@ Type : `array[string]` -Valeurs acceptées : `"a-distance", "en-presentiel"` +Valeurs acceptées : `""` @@ -770,7 +770,7 @@ Type : `string` -Valeurs acceptées : `"commune", "epci", "region", "departement", "pays"` +Valeurs acceptées : `""` @@ -892,7 +892,7 @@ Type : `array[string]` -Valeurs acceptées : voir les [ModeOrientationBeneficiaire](mode_orientation_beneficiaire.md) +Valeurs acceptées : `""` @@ -941,7 +941,7 @@ Type : `array[string]` -Valeurs acceptées : voir les [ModeOrientationAccompagnateur](mode_orientation_accompagnateur.md) +Valeurs acceptées : `""` diff --git a/docs/structure.md b/docs/structure.md index 2ff163a..2aacf10 100644 --- a/docs/structure.md +++ b/docs/structure.md @@ -261,7 +261,7 @@ Type : `string` -Valeurs acceptées : voir les [Typologie](typologie.md) +Valeurs acceptées : `""` @@ -413,7 +413,7 @@ Type : `` - +Format : `date | date-time` @@ -530,7 +530,7 @@ Type : `array[string]` -Valeurs acceptées : voir les [LabelNational](label_national.md) +Valeurs acceptées : `""` @@ -579,7 +579,7 @@ Type : `array[string]` -Valeurs acceptées : voir les [Thematique](thematique.md) +Valeurs acceptées : `""` diff --git a/mkdocs.yml b/mkdocs.yml index 5a9b782..0ed558e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -7,7 +7,14 @@ nav: - JinjaTest: jinja_test.md - Structure: structure.md - Service: service.md - - Thematiques: thematiques.md + - Referentiels: + - Thematiques: referentiels/thematiques.md + - Labels nationaux: referentiels/labels_nationaux.md + - Modes orientation accompagnateur: referentiels/modes_orientation_accompagnateur.md + - Modes orientation beneficiaire: referentiels/modes_orientation_beneficiaire.md + - Profils: referentiels/profils.md + - Typologies de services: referentiels/typologies_de_services.md + - Typologie de structures: referentiels/typologies_de_structures.md markdown_extensions: - pymdownx.superfences - admonition diff --git a/schemas/structure.json b/schemas/structure.json index 7128a9a..367e837 100644 --- a/schemas/structure.json +++ b/schemas/structure.json @@ -246,7 +246,7 @@ "title": "Thematique", "type": "string" }, - "Typologie": { + "TypologieStructure": { "enum": [ "ACI", "ACIPHC", @@ -340,7 +340,7 @@ "TIERS_LIEUX", "UDAF" ], - "title": "Typologie", + "title": "TypologieStructure", "type": "string" } }, @@ -660,7 +660,7 @@ "typologie": { "anyOf": [ { - "$ref": "#/$defs/Typologie" + "$ref": "#/$defs/TypologieStructure" }, { "type": "null" diff --git a/src/data_inclusion/schema/__init__.py b/src/data_inclusion/schema/__init__.py index 38084d0..40cc408 100644 --- a/src/data_inclusion/schema/__init__.py +++ b/src/data_inclusion/schema/__init__.py @@ -20,7 +20,7 @@ from data_inclusion.schema.structures import Structure from data_inclusion.schema.thematiques import Thematique from data_inclusion.schema.typologies_de_services import TypologieService -from data_inclusion.schema.typologies_de_structures import Typologie +from data_inclusion.schema.typologies_de_structures import TypologieStructure from data_inclusion.schema.zones_de_diffusion import ZoneDiffusionType __all__ = [ @@ -42,6 +42,6 @@ "Structure", "Thematique", "TypologieService", - "Typologie", + "TypologieStructure", "ZoneDiffusionType", ] diff --git a/src/data_inclusion/schema/__main__.py b/src/data_inclusion/schema/__main__.py index ff3bdc2..bab3496 100644 --- a/src/data_inclusion/schema/__main__.py +++ b/src/data_inclusion/schema/__main__.py @@ -1,4 +1,5 @@ import json +import os import pathlib import re @@ -14,11 +15,24 @@ Service, Structure, Thematique, - Typologie, TypologieService, + TypologieStructure, ZoneDiffusionType, ) +ENUM_X_FILE_TUPLE_LIST = [ + ("frais", Frais), + ("labels_nationaux", LabelNational), + ("modes_accueil", ModeAccueil), + ("modes_orientation_accompagnateur", ModeOrientationAccompagnateur), + ("modes_orientation_beneficiaire", ModeOrientationBeneficiaire), + ("profils", Profil), + ("thematiques", Thematique), + ("typologies_de_services", TypologieService), + ("typologies_de_structures", TypologieStructure), + ("zones_de_diffusion_types", ZoneDiffusionType), +] + def json_dump(obj, file): json.dump( @@ -30,6 +44,14 @@ def json_dump(obj, file): ) +def map_ref(ref: str) -> str: + for filename, enum in ENUM_X_FILE_TUPLE_LIST: + if ref.split("/")[-1] == enum.__name__: + return filename + + return "error" + + def main(): output_dir = pathlib.Path() / "schemas" output_dir.mkdir(exist_ok=True) @@ -48,28 +70,18 @@ def main(): (output_dir / "extra").mkdir(exist_ok=True) - enum_x_file_tuples_list = [ - ("frais.json", Frais), - ("labels-nationaux.json", LabelNational), - ("modes-accueil.json", ModeAccueil), - ("modes-orientation-accompagnateur.json", ModeOrientationAccompagnateur), - ("modes-orientation-beneficiaire.json", ModeOrientationBeneficiaire), - ("profils.json", Profil), - ("thematiques.json", Thematique), - ("typologies-de-services.json", TypologieService), - ("typologies-de-structures.json", Typologie), - ("zones-de-diffusion-types.json", ZoneDiffusionType), - ] - - for filename, enum in enum_x_file_tuples_list: - with (output_dir / "extra" / filename).open("w") as file: + for filename, enum in ENUM_X_FILE_TUPLE_LIST: + with (output_dir / "extra" / f"{filename.replace('_', '-')}.json").open( + "w" + ) as file: json_dump(enum.as_dict_list(), file) # fields_types = extract_type_from_model(model.Service) + limit_referential_list = 5 + docs_dir = pathlib.Path() / "docs" + docs_dir.mkdir(exist_ok=True) for model in [Structure, Service]: - docs_dir = pathlib.Path() / "docs" - docs_dir.mkdir(exist_ok=True) model_name = model.__name__.lower() with (docs_dir / f"{model_name}.md").open("w") as file: file.write( @@ -77,9 +89,31 @@ def main(): schema=model.model_json_schema(), get_property_type_data=get_property_type_data, snake_case=snake_case, + limit_referential_list=limit_referential_list, ) ) + files = [f for f in os.listdir("schemas/extra")] + + for file_name in files: + # remove extension from file name + referential_name = os.path.splitext(file_name)[0].replace("-", "_") + generate_referential_docs(file_name, referential_name, docs_dir) + + +def generate_referential_docs(file_name, referential_name, docs_dir): + with open(f"schemas/extra/{file_name}") as json_file: + json_data = json.load(json_file) + if len(json_data) > 5: + ref_dir = pathlib.Path() / "docs/referentiels" + ref_dir.mkdir(exist_ok=True) + with (ref_dir / f"{referential_name}.md").open("w") as file: + file.write( + jinja2.Template(open(docs_dir / "referentiel.md.j2").read()).render( + referential=json_data, + ) + ) + def snake_case(txt: str) -> str: return re.sub(r"(? dict | None: case {"anyOf": [{"type": "array", "items": {"$ref": ref}}, {"type": "null"}]}: return { "type": "array[string]", - "referentiel": ref.split("/")[-1], + "referentiel": map_ref(ref), } case {"anyOf": [{"$ref": ref}, {"type": "null"}]}: return { "type": "string", - "referentiel": ref.split("/")[-1], + "referentiel": map_ref(ref), } case {"anyOf": [*json_type_dict_list, {"type": "null"}]}: return { @@ -130,6 +164,18 @@ def get_property_type_data(property_schema: dict) -> dict | None: ) ), } + case {"anyOf": [*json_type_dict_list]}: + return { + "format": " | ".join( + sorted( + { + json_type_dict["format"] + for json_type_dict in json_type_dict_list + if "format" in json_type_dict + } + ) + ) + } if __name__ == "__main__": diff --git a/src/data_inclusion/schema/services.py b/src/data_inclusion/schema/services.py index 1aabdde..2efa016 100644 --- a/src/data_inclusion/schema/services.py +++ b/src/data_inclusion/schema/services.py @@ -23,9 +23,9 @@ class Service(BaseModel): structure_id: str source: str nom: str - presentation_resume: Optional[ - Annotated[str, StringConstraints(max_length=280)] - ] = None + presentation_resume: Optional[Annotated[str, StringConstraints(max_length=280)]] = ( + None + ) presentation_detail: Optional[str] = None types: Optional[set[TypologieService]] = None thematiques: Optional[set[Thematique]] = None @@ -78,7 +78,7 @@ class Service(BaseModel): ] = None modes_orientation_beneficiaire: Optional[set[ModeOrientationBeneficiaire]] = None modes_orientation_beneficiaire_autres: Optional[str] = None - modes_orientation_accompagnateur: Optional[ - set[ModeOrientationAccompagnateur] - ] = None + modes_orientation_accompagnateur: Optional[set[ModeOrientationAccompagnateur]] = ( + None + ) modes_orientation_accompagnateur_autres: Optional[str] = None diff --git a/src/data_inclusion/schema/structures.py b/src/data_inclusion/schema/structures.py index 463544c..b40ddd1 100644 --- a/src/data_inclusion/schema/structures.py +++ b/src/data_inclusion/schema/structures.py @@ -7,7 +7,7 @@ from data_inclusion.schema.base import BaseModel from data_inclusion.schema.labels_nationaux import LabelNational from data_inclusion.schema.thematiques import Thematique -from data_inclusion.schema.typologies_de_structures import Typologie +from data_inclusion.schema.typologies_de_structures import TypologieStructure class Structure(BaseModel): @@ -23,13 +23,13 @@ class Structure(BaseModel): complement_adresse: Optional[str] = None longitude: Optional[float] = None latitude: Optional[float] = None - typologie: Optional[Typologie] = None + typologie: Optional[TypologieStructure] = None telephone: Optional[str] = None courriel: Optional[EmailStr] = None site_web: Optional[HttpUrl] = None - presentation_resume: Optional[ - Annotated[str, StringConstraints(max_length=280)] - ] = None + presentation_resume: Optional[Annotated[str, StringConstraints(max_length=280)]] = ( + None + ) presentation_detail: Optional[str] = None source: str date_maj: date | datetime diff --git a/src/data_inclusion/schema/typologies_de_structures.py b/src/data_inclusion/schema/typologies_de_structures.py index 20c128b..2d5453f 100644 --- a/src/data_inclusion/schema/typologies_de_structures.py +++ b/src/data_inclusion/schema/typologies_de_structures.py @@ -1,7 +1,7 @@ from data_inclusion.schema.base import EnhancedEnum -class Typologie(EnhancedEnum): +class TypologieStructure(EnhancedEnum): ACI = ( "ACI", "Structures porteuses d’ateliers et chantiers d’insertion (ACI)", diff --git a/uv.lock b/uv.lock index 8c9172b..61152e1 100644 --- a/uv.lock +++ b/uv.lock @@ -10,6 +10,24 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, ] +[[package]] +name = "babel" +version = "2.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2a/74/f1bc80f23eeba13393b7222b11d95ca3af2c1e28edca18af487137eefed9/babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316", size = 9348104 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/20/bc79bc575ba2e2a7f70e8a1155618bb1301eaa5132a8271373a6903f73f8/babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b", size = 9587599 }, +] + +[[package]] +name = "certifi" +version = "2024.12.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/bd/1d41ee578ce09523c81a15426705dd20969f5abf006d1afe8aeff0dd776a/certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db", size = 166010 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/32/8f6669fc4798494966bf446c8c4a162e0b5d893dff088afddf76414f70e1/certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56", size = 164927 }, +] + [[package]] name = "cfgv" version = "3.4.0" @@ -19,6 +37,79 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249 }, ] +[[package]] +name = "charset-normalizer" +version = "3.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3", size = 123188 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/58/5580c1716040bc89206c77d8f74418caf82ce519aae06450393ca73475d1/charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de", size = 198013 }, + { url = "https://files.pythonhosted.org/packages/d0/11/00341177ae71c6f5159a08168bcb98c6e6d196d372c94511f9f6c9afe0c6/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176", size = 141285 }, + { url = "https://files.pythonhosted.org/packages/01/09/11d684ea5819e5a8f5100fb0b38cf8d02b514746607934134d31233e02c8/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037", size = 151449 }, + { url = "https://files.pythonhosted.org/packages/08/06/9f5a12939db324d905dc1f70591ae7d7898d030d7662f0d426e2286f68c9/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f", size = 143892 }, + { url = "https://files.pythonhosted.org/packages/93/62/5e89cdfe04584cb7f4d36003ffa2936681b03ecc0754f8e969c2becb7e24/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a", size = 146123 }, + { url = "https://files.pythonhosted.org/packages/a9/ac/ab729a15c516da2ab70a05f8722ecfccc3f04ed7a18e45c75bbbaa347d61/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a", size = 147943 }, + { url = "https://files.pythonhosted.org/packages/03/d2/3f392f23f042615689456e9a274640c1d2e5dd1d52de36ab8f7955f8f050/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247", size = 142063 }, + { url = "https://files.pythonhosted.org/packages/f2/e3/e20aae5e1039a2cd9b08d9205f52142329f887f8cf70da3650326670bddf/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408", size = 150578 }, + { url = "https://files.pythonhosted.org/packages/8d/af/779ad72a4da0aed925e1139d458adc486e61076d7ecdcc09e610ea8678db/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb", size = 153629 }, + { url = "https://files.pythonhosted.org/packages/c2/b6/7aa450b278e7aa92cf7732140bfd8be21f5f29d5bf334ae987c945276639/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d", size = 150778 }, + { url = "https://files.pythonhosted.org/packages/39/f4/d9f4f712d0951dcbfd42920d3db81b00dd23b6ab520419626f4023334056/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807", size = 146453 }, + { url = "https://files.pythonhosted.org/packages/49/2b/999d0314e4ee0cff3cb83e6bc9aeddd397eeed693edb4facb901eb8fbb69/charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f", size = 95479 }, + { url = "https://files.pythonhosted.org/packages/2d/ce/3cbed41cff67e455a386fb5e5dd8906cdda2ed92fbc6297921f2e4419309/charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f", size = 102790 }, + { url = "https://files.pythonhosted.org/packages/72/80/41ef5d5a7935d2d3a773e3eaebf0a9350542f2cab4eac59a7a4741fbbbbe/charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125", size = 194995 }, + { url = "https://files.pythonhosted.org/packages/7a/28/0b9fefa7b8b080ec492110af6d88aa3dea91c464b17d53474b6e9ba5d2c5/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1", size = 139471 }, + { url = "https://files.pythonhosted.org/packages/71/64/d24ab1a997efb06402e3fc07317e94da358e2585165930d9d59ad45fcae2/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3", size = 149831 }, + { url = "https://files.pythonhosted.org/packages/37/ed/be39e5258e198655240db5e19e0b11379163ad7070962d6b0c87ed2c4d39/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd", size = 142335 }, + { url = "https://files.pythonhosted.org/packages/88/83/489e9504711fa05d8dde1574996408026bdbdbd938f23be67deebb5eca92/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00", size = 143862 }, + { url = "https://files.pythonhosted.org/packages/c6/c7/32da20821cf387b759ad24627a9aca289d2822de929b8a41b6241767b461/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12", size = 145673 }, + { url = "https://files.pythonhosted.org/packages/68/85/f4288e96039abdd5aeb5c546fa20a37b50da71b5cf01e75e87f16cd43304/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77", size = 140211 }, + { url = "https://files.pythonhosted.org/packages/28/a3/a42e70d03cbdabc18997baf4f0227c73591a08041c149e710045c281f97b/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146", size = 148039 }, + { url = "https://files.pythonhosted.org/packages/85/e4/65699e8ab3014ecbe6f5c71d1a55d810fb716bbfd74f6283d5c2aa87febf/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd", size = 151939 }, + { url = "https://files.pythonhosted.org/packages/b1/82/8e9fe624cc5374193de6860aba3ea8070f584c8565ee77c168ec13274bd2/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6", size = 149075 }, + { url = "https://files.pythonhosted.org/packages/3d/7b/82865ba54c765560c8433f65e8acb9217cb839a9e32b42af4aa8e945870f/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8", size = 144340 }, + { url = "https://files.pythonhosted.org/packages/b5/b6/9674a4b7d4d99a0d2df9b215da766ee682718f88055751e1e5e753c82db0/charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b", size = 95205 }, + { url = "https://files.pythonhosted.org/packages/1e/ab/45b180e175de4402dcf7547e4fb617283bae54ce35c27930a6f35b6bef15/charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76", size = 102441 }, + { url = "https://files.pythonhosted.org/packages/0a/9a/dd1e1cdceb841925b7798369a09279bd1cf183cef0f9ddf15a3a6502ee45/charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545", size = 196105 }, + { url = "https://files.pythonhosted.org/packages/d3/8c/90bfabf8c4809ecb648f39794cf2a84ff2e7d2a6cf159fe68d9a26160467/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7", size = 140404 }, + { url = "https://files.pythonhosted.org/packages/ad/8f/e410d57c721945ea3b4f1a04b74f70ce8fa800d393d72899f0a40526401f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757", size = 150423 }, + { url = "https://files.pythonhosted.org/packages/f0/b8/e6825e25deb691ff98cf5c9072ee0605dc2acfca98af70c2d1b1bc75190d/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa", size = 143184 }, + { url = "https://files.pythonhosted.org/packages/3e/a2/513f6cbe752421f16d969e32f3583762bfd583848b763913ddab8d9bfd4f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d", size = 145268 }, + { url = "https://files.pythonhosted.org/packages/74/94/8a5277664f27c3c438546f3eb53b33f5b19568eb7424736bdc440a88a31f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616", size = 147601 }, + { url = "https://files.pythonhosted.org/packages/7c/5f/6d352c51ee763623a98e31194823518e09bfa48be2a7e8383cf691bbb3d0/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b", size = 141098 }, + { url = "https://files.pythonhosted.org/packages/78/d4/f5704cb629ba5ab16d1d3d741396aec6dc3ca2b67757c45b0599bb010478/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d", size = 149520 }, + { url = "https://files.pythonhosted.org/packages/c5/96/64120b1d02b81785f222b976c0fb79a35875457fa9bb40827678e54d1bc8/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a", size = 152852 }, + { url = "https://files.pythonhosted.org/packages/84/c9/98e3732278a99f47d487fd3468bc60b882920cef29d1fa6ca460a1fdf4e6/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9", size = 150488 }, + { url = "https://files.pythonhosted.org/packages/13/0e/9c8d4cb99c98c1007cc11eda969ebfe837bbbd0acdb4736d228ccaabcd22/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1", size = 146192 }, + { url = "https://files.pythonhosted.org/packages/b2/21/2b6b5b860781a0b49427309cb8670785aa543fb2178de875b87b9cc97746/charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35", size = 95550 }, + { url = "https://files.pythonhosted.org/packages/21/5b/1b390b03b1d16c7e382b561c5329f83cc06623916aab983e8ab9239c7d5c/charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f", size = 102785 }, + { url = "https://files.pythonhosted.org/packages/38/94/ce8e6f63d18049672c76d07d119304e1e2d7c6098f0841b51c666e9f44a0/charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda", size = 195698 }, + { url = "https://files.pythonhosted.org/packages/24/2e/dfdd9770664aae179a96561cc6952ff08f9a8cd09a908f259a9dfa063568/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313", size = 140162 }, + { url = "https://files.pythonhosted.org/packages/24/4e/f646b9093cff8fc86f2d60af2de4dc17c759de9d554f130b140ea4738ca6/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9", size = 150263 }, + { url = "https://files.pythonhosted.org/packages/5e/67/2937f8d548c3ef6e2f9aab0f6e21001056f692d43282b165e7c56023e6dd/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b", size = 142966 }, + { url = "https://files.pythonhosted.org/packages/52/ed/b7f4f07de100bdb95c1756d3a4d17b90c1a3c53715c1a476f8738058e0fa/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11", size = 144992 }, + { url = "https://files.pythonhosted.org/packages/96/2c/d49710a6dbcd3776265f4c923bb73ebe83933dfbaa841c5da850fe0fd20b/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f", size = 147162 }, + { url = "https://files.pythonhosted.org/packages/b4/41/35ff1f9a6bd380303dea55e44c4933b4cc3c4850988927d4082ada230273/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd", size = 140972 }, + { url = "https://files.pythonhosted.org/packages/fb/43/c6a0b685fe6910d08ba971f62cd9c3e862a85770395ba5d9cad4fede33ab/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2", size = 149095 }, + { url = "https://files.pythonhosted.org/packages/4c/ff/a9a504662452e2d2878512115638966e75633519ec11f25fca3d2049a94a/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886", size = 152668 }, + { url = "https://files.pythonhosted.org/packages/6c/71/189996b6d9a4b932564701628af5cee6716733e9165af1d5e1b285c530ed/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601", size = 150073 }, + { url = "https://files.pythonhosted.org/packages/e4/93/946a86ce20790e11312c87c75ba68d5f6ad2208cfb52b2d6a2c32840d922/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd", size = 145732 }, + { url = "https://files.pythonhosted.org/packages/cd/e5/131d2fb1b0dddafc37be4f3a2fa79aa4c037368be9423061dccadfd90091/charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407", size = 95391 }, + { url = "https://files.pythonhosted.org/packages/27/f2/4f9a69cc7712b9b5ad8fdb87039fd89abba997ad5cbe690d1835d40405b0/charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971", size = 102702 }, + { url = "https://files.pythonhosted.org/packages/0e/f6/65ecc6878a89bb1c23a086ea335ad4bf21a588990c3f535a227b9eea9108/charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85", size = 49767 }, +] + +[[package]] +name = "click" +version = "8.1.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 }, +] + [[package]] name = "colorama" version = "0.4.6" @@ -33,6 +124,7 @@ name = "data-inclusion-schema" version = "0.20.0" source = { editable = "." } dependencies = [ + { name = "mkdocs-material" }, { name = "pendulum" }, { name = "pydantic", extra = ["email"] }, ] @@ -49,6 +141,7 @@ test = [ [package.metadata] requires-dist = [ + { name = "mkdocs-material", specifier = "==9.*" }, { name = "pendulum", specifier = "~=3.0" }, { name = "pydantic", extras = ["email"], specifier = ">=2.1.1,<3.0.0" }, ] @@ -124,6 +217,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/51/0b/0d7fee5919bccc1fdc1c2a7528b98f65c6f69b223a3fd8f809918c142c36/freezegun-1.5.1-py3-none-any.whl", hash = "sha256:bf111d7138a8abe55ab48a71755673dbaa4ab87f4cff5634a4442dfec34c15f1", size = 17569 }, ] +[[package]] +name = "ghp-import" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034 }, +] + [[package]] name = "identify" version = "2.6.6" @@ -151,6 +256,163 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892 }, ] +[[package]] +name = "jinja2" +version = "3.1.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/af/92/b3130cbbf5591acf9ade8708c365f3238046ac7cb8ccba6e81abccb0ccff/jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb", size = 244674 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/0f/2ba5fbcd631e3e88689309dbe978c5769e883e4b84ebfe7da30b43275c5a/jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb", size = 134596 }, +] + +[[package]] +name = "markdown" +version = "3.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/28/3af612670f82f4c056911fbbbb42760255801b3068c48de792d354ff4472/markdown-3.7.tar.gz", hash = "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2", size = 357086 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/08/83871f3c50fc983b88547c196d11cf8c3340e37c32d2e9d6152abe2c61f7/Markdown-3.7-py3-none-any.whl", hash = "sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803", size = 106349 }, +] + +[[package]] +name = "markupsafe" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/90/d08277ce111dd22f77149fd1a5d4653eeb3b3eaacbdfcbae5afb2600eebd/MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8", size = 14357 }, + { url = "https://files.pythonhosted.org/packages/04/e1/6e2194baeae0bca1fae6629dc0cbbb968d4d941469cbab11a3872edff374/MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158", size = 12393 }, + { url = "https://files.pythonhosted.org/packages/1d/69/35fa85a8ece0a437493dc61ce0bb6d459dcba482c34197e3efc829aa357f/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579", size = 21732 }, + { url = "https://files.pythonhosted.org/packages/22/35/137da042dfb4720b638d2937c38a9c2df83fe32d20e8c8f3185dbfef05f7/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d", size = 20866 }, + { url = "https://files.pythonhosted.org/packages/29/28/6d029a903727a1b62edb51863232152fd335d602def598dade38996887f0/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb", size = 20964 }, + { url = "https://files.pythonhosted.org/packages/cc/cd/07438f95f83e8bc028279909d9c9bd39e24149b0d60053a97b2bc4f8aa51/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b", size = 21977 }, + { url = "https://files.pythonhosted.org/packages/29/01/84b57395b4cc062f9c4c55ce0df7d3108ca32397299d9df00fedd9117d3d/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c", size = 21366 }, + { url = "https://files.pythonhosted.org/packages/bd/6e/61ebf08d8940553afff20d1fb1ba7294b6f8d279df9fd0c0db911b4bbcfd/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171", size = 21091 }, + { url = "https://files.pythonhosted.org/packages/11/23/ffbf53694e8c94ebd1e7e491de185124277964344733c45481f32ede2499/MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50", size = 15065 }, + { url = "https://files.pythonhosted.org/packages/44/06/e7175d06dd6e9172d4a69a72592cb3f7a996a9c396eee29082826449bbc3/MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a", size = 15514 }, + { url = "https://files.pythonhosted.org/packages/6b/28/bbf83e3f76936960b850435576dd5e67034e200469571be53f69174a2dfd/MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d", size = 14353 }, + { url = "https://files.pythonhosted.org/packages/6c/30/316d194b093cde57d448a4c3209f22e3046c5bb2fb0820b118292b334be7/MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93", size = 12392 }, + { url = "https://files.pythonhosted.org/packages/f2/96/9cdafba8445d3a53cae530aaf83c38ec64c4d5427d975c974084af5bc5d2/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832", size = 23984 }, + { url = "https://files.pythonhosted.org/packages/f1/a4/aefb044a2cd8d7334c8a47d3fb2c9f328ac48cb349468cc31c20b539305f/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84", size = 23120 }, + { url = "https://files.pythonhosted.org/packages/8d/21/5e4851379f88f3fad1de30361db501300d4f07bcad047d3cb0449fc51f8c/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca", size = 23032 }, + { url = "https://files.pythonhosted.org/packages/00/7b/e92c64e079b2d0d7ddf69899c98842f3f9a60a1ae72657c89ce2655c999d/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798", size = 24057 }, + { url = "https://files.pythonhosted.org/packages/f9/ac/46f960ca323037caa0a10662ef97d0a4728e890334fc156b9f9e52bcc4ca/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e", size = 23359 }, + { url = "https://files.pythonhosted.org/packages/69/84/83439e16197337b8b14b6a5b9c2105fff81d42c2a7c5b58ac7b62ee2c3b1/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4", size = 23306 }, + { url = "https://files.pythonhosted.org/packages/9a/34/a15aa69f01e2181ed8d2b685c0d2f6655d5cca2c4db0ddea775e631918cd/MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", size = 15094 }, + { url = "https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", size = 15521 }, + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274 }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348 }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149 }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118 }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993 }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178 }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319 }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352 }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097 }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601 }, + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274 }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352 }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122 }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085 }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978 }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208 }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357 }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344 }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101 }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603 }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510 }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486 }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480 }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914 }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796 }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473 }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114 }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098 }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208 }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, +] + +[[package]] +name = "mergedeep" +version = "1.3.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354 }, +] + +[[package]] +name = "mkdocs" +version = "1.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "ghp-import" }, + { name = "jinja2" }, + { name = "markdown" }, + { name = "markupsafe" }, + { name = "mergedeep" }, + { name = "mkdocs-get-deps" }, + { name = "packaging" }, + { name = "pathspec" }, + { name = "pyyaml" }, + { name = "pyyaml-env-tag" }, + { name = "watchdog" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451 }, +] + +[[package]] +name = "mkdocs-get-deps" +version = "0.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mergedeep" }, + { name = "platformdirs" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521 }, +] + +[[package]] +name = "mkdocs-material" +version = "9.5.50" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "babel" }, + { name = "colorama" }, + { name = "jinja2" }, + { name = "markdown" }, + { name = "mkdocs" }, + { name = "mkdocs-material-extensions" }, + { name = "paginate" }, + { name = "pygments" }, + { name = "pymdown-extensions" }, + { name = "regex" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c7/16/c48d5a28bc4a67c49808180b6009d4d1b4c0753739ffee3cc37046ab29d7/mkdocs_material-9.5.50.tar.gz", hash = "sha256:ae5fe16f3d7c9ccd05bb6916a7da7420cf99a9ce5e33debd9d40403a090d5825", size = 3923354 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ee/b5/1bf29cd744896ae83bd38c72970782c843ba13e0240b1a85277bd3928637/mkdocs_material-9.5.50-py3-none-any.whl", hash = "sha256:f24100f234741f4d423a9d672a909d859668a4f404796be3cf035f10d6050385", size = 8645274 }, +] + +[[package]] +name = "mkdocs-material-extensions" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728 }, +] + [[package]] name = "nodeenv" version = "1.9.1" @@ -169,6 +431,24 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, ] +[[package]] +name = "paginate" +version = "0.5.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746 }, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, +] + [[package]] name = "pendulum" version = "3.0.0" @@ -346,6 +626,28 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/63/37/3e32eeb2a451fddaa3898e2163746b0cffbbdbb4740d38372db0490d67f3/pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151", size = 2004715 }, ] +[[package]] +name = "pygments" +version = "2.19.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293 }, +] + +[[package]] +name = "pymdown-extensions" +version = "10.14.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/aa/7b/de388047c577e43dc45ce35c23b9b349ec3df8c7023c3e3c4d413a850982/pymdown_extensions-10.14.2.tar.gz", hash = "sha256:7a77b8116dc04193f2c01143760a43387bd9dc4aa05efacb7d838885a7791253", size = 846777 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/a3/61527d80d84e9fd4d97649322e83bd7efde8200fc07fe34469c8c2bd0d91/pymdown_extensions-10.14.2-py3-none-any.whl", hash = "sha256:f45bc5892410e54fd738ab8ccd736098b7ff0cb27fdb4bf24d0a0c6584bc90e1", size = 264459 }, +] + [[package]] name = "pytest" version = "8.3.4" @@ -419,6 +721,102 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, ] +[[package]] +name = "pyyaml-env-tag" +version = "0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fb/8e/da1c6c58f751b70f8ceb1eb25bc25d524e8f14fe16edcce3f4e3ba08629c/pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb", size = 5631 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/66/bbb1dd374f5c870f59c5bb1db0e18cbe7fa739415a24cbd95b2d1f5ae0c4/pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069", size = 3911 }, +] + +[[package]] +name = "regex" +version = "2024.11.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8e/5f/bd69653fbfb76cf8604468d3b4ec4c403197144c7bfe0e6a5fc9e02a07cb/regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519", size = 399494 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/3c/4651f6b130c6842a8f3df82461a8950f923925db8b6961063e82744bddcc/regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91", size = 482674 }, + { url = "https://files.pythonhosted.org/packages/15/51/9f35d12da8434b489c7b7bffc205c474a0a9432a889457026e9bc06a297a/regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0", size = 287684 }, + { url = "https://files.pythonhosted.org/packages/bd/18/b731f5510d1b8fb63c6b6d3484bfa9a59b84cc578ac8b5172970e05ae07c/regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e", size = 284589 }, + { url = "https://files.pythonhosted.org/packages/78/a2/6dd36e16341ab95e4c6073426561b9bfdeb1a9c9b63ab1b579c2e96cb105/regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde", size = 782511 }, + { url = "https://files.pythonhosted.org/packages/1b/2b/323e72d5d2fd8de0d9baa443e1ed70363ed7e7b2fb526f5950c5cb99c364/regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e", size = 821149 }, + { url = "https://files.pythonhosted.org/packages/90/30/63373b9ea468fbef8a907fd273e5c329b8c9535fee36fc8dba5fecac475d/regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2", size = 809707 }, + { url = "https://files.pythonhosted.org/packages/f2/98/26d3830875b53071f1f0ae6d547f1d98e964dd29ad35cbf94439120bb67a/regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf", size = 781702 }, + { url = "https://files.pythonhosted.org/packages/87/55/eb2a068334274db86208ab9d5599ffa63631b9f0f67ed70ea7c82a69bbc8/regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c", size = 771976 }, + { url = "https://files.pythonhosted.org/packages/74/c0/be707bcfe98254d8f9d2cff55d216e946f4ea48ad2fd8cf1428f8c5332ba/regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86", size = 697397 }, + { url = "https://files.pythonhosted.org/packages/49/dc/bb45572ceb49e0f6509f7596e4ba7031f6819ecb26bc7610979af5a77f45/regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67", size = 768726 }, + { url = "https://files.pythonhosted.org/packages/5a/db/f43fd75dc4c0c2d96d0881967897926942e935d700863666f3c844a72ce6/regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d", size = 775098 }, + { url = "https://files.pythonhosted.org/packages/99/d7/f94154db29ab5a89d69ff893159b19ada89e76b915c1293e98603d39838c/regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2", size = 839325 }, + { url = "https://files.pythonhosted.org/packages/f7/17/3cbfab1f23356fbbf07708220ab438a7efa1e0f34195bf857433f79f1788/regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008", size = 843277 }, + { url = "https://files.pythonhosted.org/packages/7e/f2/48b393b51900456155de3ad001900f94298965e1cad1c772b87f9cfea011/regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62", size = 773197 }, + { url = "https://files.pythonhosted.org/packages/45/3f/ef9589aba93e084cd3f8471fded352826dcae8489b650d0b9b27bc5bba8a/regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e", size = 261714 }, + { url = "https://files.pythonhosted.org/packages/42/7e/5f1b92c8468290c465fd50c5318da64319133231415a8aa6ea5ab995a815/regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519", size = 274042 }, + { url = "https://files.pythonhosted.org/packages/58/58/7e4d9493a66c88a7da6d205768119f51af0f684fe7be7bac8328e217a52c/regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638", size = 482669 }, + { url = "https://files.pythonhosted.org/packages/34/4c/8f8e631fcdc2ff978609eaeef1d6994bf2f028b59d9ac67640ed051f1218/regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7", size = 287684 }, + { url = "https://files.pythonhosted.org/packages/c5/1b/f0e4d13e6adf866ce9b069e191f303a30ab1277e037037a365c3aad5cc9c/regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20", size = 284589 }, + { url = "https://files.pythonhosted.org/packages/25/4d/ab21047f446693887f25510887e6820b93f791992994f6498b0318904d4a/regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114", size = 792121 }, + { url = "https://files.pythonhosted.org/packages/45/ee/c867e15cd894985cb32b731d89576c41a4642a57850c162490ea34b78c3b/regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3", size = 831275 }, + { url = "https://files.pythonhosted.org/packages/b3/12/b0f480726cf1c60f6536fa5e1c95275a77624f3ac8fdccf79e6727499e28/regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f", size = 818257 }, + { url = "https://files.pythonhosted.org/packages/bf/ce/0d0e61429f603bac433910d99ef1a02ce45a8967ffbe3cbee48599e62d88/regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0", size = 792727 }, + { url = "https://files.pythonhosted.org/packages/e4/c1/243c83c53d4a419c1556f43777ccb552bccdf79d08fda3980e4e77dd9137/regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55", size = 780667 }, + { url = "https://files.pythonhosted.org/packages/c5/f4/75eb0dd4ce4b37f04928987f1d22547ddaf6c4bae697623c1b05da67a8aa/regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89", size = 776963 }, + { url = "https://files.pythonhosted.org/packages/16/5d/95c568574e630e141a69ff8a254c2f188b4398e813c40d49228c9bbd9875/regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d", size = 784700 }, + { url = "https://files.pythonhosted.org/packages/8e/b5/f8495c7917f15cc6fee1e7f395e324ec3e00ab3c665a7dc9d27562fd5290/regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34", size = 848592 }, + { url = "https://files.pythonhosted.org/packages/1c/80/6dd7118e8cb212c3c60b191b932dc57db93fb2e36fb9e0e92f72a5909af9/regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d", size = 852929 }, + { url = "https://files.pythonhosted.org/packages/11/9b/5a05d2040297d2d254baf95eeeb6df83554e5e1df03bc1a6687fc4ba1f66/regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45", size = 781213 }, + { url = "https://files.pythonhosted.org/packages/26/b7/b14e2440156ab39e0177506c08c18accaf2b8932e39fb092074de733d868/regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9", size = 261734 }, + { url = "https://files.pythonhosted.org/packages/80/32/763a6cc01d21fb3819227a1cc3f60fd251c13c37c27a73b8ff4315433a8e/regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60", size = 274052 }, + { url = "https://files.pythonhosted.org/packages/ba/30/9a87ce8336b172cc232a0db89a3af97929d06c11ceaa19d97d84fa90a8f8/regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a", size = 483781 }, + { url = "https://files.pythonhosted.org/packages/01/e8/00008ad4ff4be8b1844786ba6636035f7ef926db5686e4c0f98093612add/regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9", size = 288455 }, + { url = "https://files.pythonhosted.org/packages/60/85/cebcc0aff603ea0a201667b203f13ba75d9fc8668fab917ac5b2de3967bc/regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2", size = 284759 }, + { url = "https://files.pythonhosted.org/packages/94/2b/701a4b0585cb05472a4da28ee28fdfe155f3638f5e1ec92306d924e5faf0/regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4", size = 794976 }, + { url = "https://files.pythonhosted.org/packages/4b/bf/fa87e563bf5fee75db8915f7352e1887b1249126a1be4813837f5dbec965/regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577", size = 833077 }, + { url = "https://files.pythonhosted.org/packages/a1/56/7295e6bad94b047f4d0834e4779491b81216583c00c288252ef625c01d23/regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3", size = 823160 }, + { url = "https://files.pythonhosted.org/packages/fb/13/e3b075031a738c9598c51cfbc4c7879e26729c53aa9cca59211c44235314/regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e", size = 796896 }, + { url = "https://files.pythonhosted.org/packages/24/56/0b3f1b66d592be6efec23a795b37732682520b47c53da5a32c33ed7d84e3/regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe", size = 783997 }, + { url = "https://files.pythonhosted.org/packages/f9/a1/eb378dada8b91c0e4c5f08ffb56f25fcae47bf52ad18f9b2f33b83e6d498/regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e", size = 781725 }, + { url = "https://files.pythonhosted.org/packages/83/f2/033e7dec0cfd6dda93390089864732a3409246ffe8b042e9554afa9bff4e/regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29", size = 789481 }, + { url = "https://files.pythonhosted.org/packages/83/23/15d4552ea28990a74e7696780c438aadd73a20318c47e527b47a4a5a596d/regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39", size = 852896 }, + { url = "https://files.pythonhosted.org/packages/e3/39/ed4416bc90deedbfdada2568b2cb0bc1fdb98efe11f5378d9892b2a88f8f/regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51", size = 860138 }, + { url = "https://files.pythonhosted.org/packages/93/2d/dd56bb76bd8e95bbce684326302f287455b56242a4f9c61f1bc76e28360e/regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad", size = 787692 }, + { url = "https://files.pythonhosted.org/packages/0b/55/31877a249ab7a5156758246b9c59539abbeba22461b7d8adc9e8475ff73e/regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54", size = 262135 }, + { url = "https://files.pythonhosted.org/packages/38/ec/ad2d7de49a600cdb8dd78434a1aeffe28b9d6fc42eb36afab4a27ad23384/regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b", size = 273567 }, + { url = "https://files.pythonhosted.org/packages/90/73/bcb0e36614601016552fa9344544a3a2ae1809dc1401b100eab02e772e1f/regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84", size = 483525 }, + { url = "https://files.pythonhosted.org/packages/0f/3f/f1a082a46b31e25291d830b369b6b0c5576a6f7fb89d3053a354c24b8a83/regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4", size = 288324 }, + { url = "https://files.pythonhosted.org/packages/09/c9/4e68181a4a652fb3ef5099e077faf4fd2a694ea6e0f806a7737aff9e758a/regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0", size = 284617 }, + { url = "https://files.pythonhosted.org/packages/fc/fd/37868b75eaf63843165f1d2122ca6cb94bfc0271e4428cf58c0616786dce/regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0", size = 795023 }, + { url = "https://files.pythonhosted.org/packages/c4/7c/d4cd9c528502a3dedb5c13c146e7a7a539a3853dc20209c8e75d9ba9d1b2/regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7", size = 833072 }, + { url = "https://files.pythonhosted.org/packages/4f/db/46f563a08f969159c5a0f0e722260568425363bea43bb7ae370becb66a67/regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7", size = 823130 }, + { url = "https://files.pythonhosted.org/packages/db/60/1eeca2074f5b87df394fccaa432ae3fc06c9c9bfa97c5051aed70e6e00c2/regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c", size = 796857 }, + { url = "https://files.pythonhosted.org/packages/10/db/ac718a08fcee981554d2f7bb8402f1faa7e868c1345c16ab1ebec54b0d7b/regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3", size = 784006 }, + { url = "https://files.pythonhosted.org/packages/c2/41/7da3fe70216cea93144bf12da2b87367590bcf07db97604edeea55dac9ad/regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07", size = 781650 }, + { url = "https://files.pythonhosted.org/packages/a7/d5/880921ee4eec393a4752e6ab9f0fe28009435417c3102fc413f3fe81c4e5/regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e", size = 789545 }, + { url = "https://files.pythonhosted.org/packages/dc/96/53770115e507081122beca8899ab7f5ae28ae790bfcc82b5e38976df6a77/regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6", size = 853045 }, + { url = "https://files.pythonhosted.org/packages/31/d3/1372add5251cc2d44b451bd94f43b2ec78e15a6e82bff6a290ef9fd8f00a/regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4", size = 860182 }, + { url = "https://files.pythonhosted.org/packages/ed/e3/c446a64984ea9f69982ba1a69d4658d5014bc7a0ea468a07e1a1265db6e2/regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d", size = 787733 }, + { url = "https://files.pythonhosted.org/packages/2b/f1/e40c8373e3480e4f29f2692bd21b3e05f296d3afebc7e5dcf21b9756ca1c/regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff", size = 262122 }, + { url = "https://files.pythonhosted.org/packages/45/94/bc295babb3062a731f52621cdc992d123111282e291abaf23faa413443ea/regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a", size = 273545 }, +] + +[[package]] +name = "requests" +version = "2.32.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, +] + [[package]] name = "ruff" version = "0.9.3" @@ -565,6 +963,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0f/dd/84f10e23edd882c6f968c21c2434fe67bd4a528967067515feca9e611e5e/tzdata-2025.1-py2.py3-none-any.whl", hash = "sha256:7e127113816800496f027041c570f50bcd464a020098a3b6b199517772303639", size = 346762 }, ] +[[package]] +name = "urllib3" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/63/e53da845320b757bf29ef6a9062f5c669fe997973f966045cb019c3f4b66/urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d", size = 307268 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/19/4ec628951a74043532ca2cf5d97b7b14863931476d117c471e8e2b1eb39f/urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", size = 128369 }, +] + [[package]] name = "virtualenv" version = "20.29.1" @@ -578,3 +985,35 @@ sdist = { url = "https://files.pythonhosted.org/packages/a7/ca/f23dcb02e161a9bba wheels = [ { url = "https://files.pythonhosted.org/packages/89/9b/599bcfc7064fbe5740919e78c5df18e5dceb0887e676256a1061bb5ae232/virtualenv-20.29.1-py3-none-any.whl", hash = "sha256:4e4cb403c0b0da39e13b46b1b2476e505cb0046b25f242bee80f62bf990b2779", size = 4282379 }, ] + +[[package]] +name = "watchdog" +version = "6.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/56/90994d789c61df619bfc5ce2ecdabd5eeff564e1eb47512bd01b5e019569/watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26", size = 96390 }, + { url = "https://files.pythonhosted.org/packages/55/46/9a67ee697342ddf3c6daa97e3a587a56d6c4052f881ed926a849fcf7371c/watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112", size = 88389 }, + { url = "https://files.pythonhosted.org/packages/44/65/91b0985747c52064d8701e1075eb96f8c40a79df889e59a399453adfb882/watchdog-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3", size = 89020 }, + { url = "https://files.pythonhosted.org/packages/e0/24/d9be5cd6642a6aa68352ded4b4b10fb0d7889cb7f45814fb92cecd35f101/watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c", size = 96393 }, + { url = "https://files.pythonhosted.org/packages/63/7a/6013b0d8dbc56adca7fdd4f0beed381c59f6752341b12fa0886fa7afc78b/watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2", size = 88392 }, + { url = "https://files.pythonhosted.org/packages/d1/40/b75381494851556de56281e053700e46bff5b37bf4c7267e858640af5a7f/watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c", size = 89019 }, + { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471 }, + { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449 }, + { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054 }, + { url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480 }, + { url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451 }, + { url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057 }, + { url = "https://files.pythonhosted.org/packages/30/ad/d17b5d42e28a8b91f8ed01cb949da092827afb9995d4559fd448d0472763/watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881", size = 87902 }, + { url = "https://files.pythonhosted.org/packages/5c/ca/c3649991d140ff6ab67bfc85ab42b165ead119c9e12211e08089d763ece5/watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11", size = 88380 }, + { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079 }, + { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076 }, + { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077 }, + { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077 }, + { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065 }, + { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070 }, + { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067 }, +] From 7cbef1f9f4088ab0d8072722885d7a49d954c2b7 Mon Sep 17 00:00:00 2001 From: Hugo Lecuyer Date: Wed, 29 Jan 2025 16:02:55 +0100 Subject: [PATCH 6/9] wip --- .github/workflows/doc.yml | 2 +- docs/index.md | 3 - docs/jinja_test.md | 983 ----------------------- docs/model.md.j2 | 2 +- docs/schema.md | 973 ---------------------- docs/service.md | 30 +- docs/structure.md | 10 +- mkdocs.yml | 2 - src/data_inclusion/schema/__main__.py | 8 +- src/data_inclusion/schema/template.md.j2 | 66 -- 10 files changed, 27 insertions(+), 2052 deletions(-) delete mode 100644 docs/index.md delete mode 100644 docs/jinja_test.md delete mode 100644 docs/schema.md delete mode 100644 src/data_inclusion/schema/template.md.j2 diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index 73d5639..21d3788 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -3,7 +3,7 @@ name: publish_doc on: push: branches: - - main + - hlecuyer/feat/generate-automatic-documentation permissions: contents: write diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index e626d48..0000000 --- a/docs/index.md +++ /dev/null @@ -1,3 +0,0 @@ -# Home - -blabla diff --git a/docs/jinja_test.md b/docs/jinja_test.md deleted file mode 100644 index f29816b..0000000 --- a/docs/jinja_test.md +++ /dev/null @@ -1,983 +0,0 @@ -Test L'adresse du service - -## **:material-hand-pointing-right: id** -Type: `string` - - -Default: `9fe85aab-bc7a-49c3-ab10-233b1c92379e` - - -Titre: Identifiant - - -Description: Identifiant unique du service. - - - -## **:material-hand-pointing-right: structure_id** -:green_circle: {++Requis++} - -Type: `string` - - - -Titre: Structure Id - - - - -## **:material-hand-pointing-right: source** -:green_circle: {++Requis++} - -Type: `string` - - - -Titre: Source - - - - -## **:material-hand-pointing-right: nom** -:green_circle: {++Requis++} - -Type: `string` - - - -Titre: Nom - - - - -## **:material-hand-pointing-right: presentation_resume** -Type: `string` - - - -Titre: Presentation Resume - - - - -## **:material-hand-pointing-right: presentation_detail** -Type: `string` - - - -Titre: Presentation Detail - - - - -## **:material-hand-pointing-right: types** -Type: -`array` - -| format | pattern | -| :------: | :---------------------------------------------------------------------------------: | -| `enum` | None | -??? abstract "Valeurs possibles" - - `accompagnement` - - `accueil` - - `aide-financiere` - - `aide-materielle` - - `atelier` - - `formation` - - `information` - - `numerique` - - `autonomie` - - `delegation` - - `financement` - - - - -Titre: Types - - - - -## **:material-hand-pointing-right: thematiques** -Type: -`array` - -| format | pattern | -| :------: | :---------------------------------------------------------------------------------: | -| `enum` | None | -??? abstract "Valeurs possibles" - - `acces-aux-droits-et-citoyennete` - - `acces-aux-droits-et-citoyennete--accompagnement-dans-les-demarches-administratives` - - `acces-aux-droits-et-citoyennete--accompagnement-juridique` - - `acces-aux-droits-et-citoyennete--aide-aux-victimes` - - `acces-aux-droits-et-citoyennete--connaitre-ses-droits` - - `acces-aux-droits-et-citoyennete--demandeurs-dasile-et-naturalisation` - - `acces-aux-droits-et-citoyennete--developpement-durable` - - `acces-aux-droits-et-citoyennete--faciliter-laction-citoyenne` - - `accompagnement-social-et-professionnel-personnalise` - - `accompagnement-social-et-professionnel-personnalise--decrochage-scolaire` - - `accompagnement-social-et-professionnel-personnalise--definition-du-projet-professionnel` - - `accompagnement-social-et-professionnel-personnalise--parcours-d-insertion-socioprofessionnel` - - `apprendre-francais` - - `apprendre-francais--accompagnement-insertion-pro` - - `apprendre-francais--communiquer-vie-tous-les-jours` - - `apprendre-francais--suivre-formation` - - `choisir-un-metier` - - `choisir-un-metier--confirmer-son-choix-de-metier` - - `choisir-un-metier--connaitre-les-opportunites-demploi` - - `choisir-un-metier--decouvrir-un-metier-ou-un-secteur-dactivite` - - `choisir-un-metier--identifier-ses-points-forts-et-ses-competences` - - `creation-activite` - - `creation-activite--definir-son-projet-de-creation-dentreprise` - - `creation-activite--developper-son-entreprise` - - `creation-activite--financer-son-projet` - - `creation-activite--reseautage-pour-createurs-dentreprise` - - `creation-activite--structurer-son-projet-de-creation-dentreprise` - - `equipement-et-alimentation` - - `equipement-et-alimentation--acces-a-du-materiel-informatique` - - `equipement-et-alimentation--acces-a-un-telephone-et-un-abonnement` - - `equipement-et-alimentation--alimentation` - - `equipement-et-alimentation--aide-menagere` - - `equipement-et-alimentation--electromenager` - - `equipement-et-alimentation--habillement` - - `famille` - - `famille--accompagnement-femme-enceinte-bebe-jeune-enfant` - - `famille--garde-denfants` - - `famille--information-et-accompagnement-des-parents` - - `famille--jeunes-sans-soutien-familial` - - `famille--soutien-a-la-parentalite` - - `famille--soutien-aux-familles` - - `famille--violences-intrafamiliales` - - `gestion-financiere` - - `gestion-financiere--accompagnement-aux-personnes-en-difficultes-financieres` - - `gestion-financiere--acces-au-micro-credit` - - `gestion-financiere--apprendre-a-gerer-son-budget` - - `gestion-financiere--beneficier-daides-financieres` - - `gestion-financiere--creation-et-utilisation-dun-compte-bancaire` - - `gestion-financiere--obtenir-une-aide-alimentaire` - - `gestion-financiere--prevention-et-gestion-du-surendettement` - - `handicap` - - `handicap--accompagnement-par-une-structure-specialisee` - - `handicap--adaptation-au-poste-de-travail` - - `handicap--adapter-son-logement` - - `handicap--aide-a-la-personne` - - `handicap--connaissance-des-droits-des-travailleurs` - - `handicap--faire-reconnaitre-un-handicap` - - `handicap--favoriser-le-retour-et-le-maintien-dans-lemploi` - - `handicap--gerer-le-depart-a-la-retraite-des-personnes-en-situation-de-handicap` - - `handicap--mobilite-des-personnes-en-situation-de-handicap` - - `illettrisme` - - `illettrisme--accompagner-scolarite` - - `illettrisme--ameliorer-vocabulaire` - - `illettrisme--etre-autonome` - - `illettrisme--info-acquisition-connaissances` - - `illettrisme--permis-conduire` - - `illettrisme--reperer-situation-illettrisme` - - `illettrisme--surmonter-trouble-apprentissage` - - `illettrisme--trouver-emploi-formation` - - `illettrisme--utiliser-numerique` - - `illettrisme--valider-certification-clea` - - `logement-hebergement` - - `logement-hebergement--aides-financieres-investissement-locatif` - - `logement-hebergement--besoin-dadapter-mon-logement` - - `logement-hebergement--connaissance-de-ses-droits-et-interlocuteurs` - - `logement-hebergement--demenagement` - - `logement-hebergement--etre-accompagne-dans-son-projet-accession` - - `logement-hebergement--etre-accompagne-en cas-de-difficultes-financieres` - - `logement-hebergement--etre-accompagne-pour-se-loger` - - `logement-hebergement--financer-son-projet-travaux` - - `logement-hebergement--gerer-son-budget` - - `logement-hebergement--mal-loges-sans-logis` - - `logement-hebergement--probleme-avec-son-logement` - - `logement-hebergement--reprendre-un-emploi-ou-une-formation` - - `mobilite` - - `mobilite--acheter-un-vehicule-motorise` - - `mobilite--acheter-un-velo` - - `mobilite--aides-a-la-reprise-demploi-ou-a-la-formation` - - `mobilite--apprendre-a-utiliser-un-deux-roues` - - `mobilite--comprendre-et-utiliser-les-transports-en-commun` - - `mobilite--entretenir-reparer-son-vehicule` - - `mobilite--etre-accompagne-dans-son-parcours-mobilite` - - `mobilite--louer-un-vehicule` - - `mobilite--financer-mon-projet-mobilite` - - `mobilite--preparer-son-permis-de-conduire-se-reentrainer-a-la-conduite` - - `numerique` - - `numerique--acceder-a-du-materiel` - - `numerique--acceder-a-une-connexion-internet` - - `numerique--accompagner-les-demarches-de-sante` - - `numerique--approfondir-ma-culture-numerique` - - `numerique--creer-avec-le-numerique` - - `numerique--creer-et-developper-mon-entreprise` - - `numerique--devenir-autonome-dans-les-demarches-administratives` - - `numerique--favoriser-mon-insertion-professionnelle` - - `numerique--prendre-en-main-un-ordinateur` - - `numerique--prendre-en-main-un-smartphone-ou-une-tablette` - - `numerique--promouvoir-la-citoyennete-numerique` - - `numerique--realiser-des-demarches-administratives-avec-un-accompagnement` - - `numerique--s-equiper-en-materiel-informatique` - - `numerique--soutenir-la-parentalite-et-l-education-avec-le-numerique` - - `numerique--utiliser-le-numerique-au-quotidien` - - `preparer-sa-candidature` - - `preparer-sa-candidature--developper-son-reseau` - - `preparer-sa-candidature--organiser-ses-demarches-de-recherche-demploi` - - `preparer-sa-candidature--realiser-un-cv-et-ou-une-lettre-de-motivation` - - `preparer-sa-candidature--valoriser-ses-competences` - - `remobilisation` - - `remobilisation--bien-etre` - - `remobilisation--decouvrir-son-potentiel-via-le-sport-et-la-culture` - - `remobilisation--discrimination` - - `remobilisation--identifier-ses-competences-et-aptitudes` - - `remobilisation--lien-social` - - `remobilisation--participer-a-des-actions-solidaires-ou-de-benevolat` - - `remobilisation--pression-sociale` - - `remobilisation--restaurer-sa-confiance-son-image-de-soi` - - `sante` - - `sante--acces-aux-soins` - - `sante--accompagnement-de-la-femme-enceinte-du-bebe-et-du-jeune-enfant` - - `sante--accompagner-les-traumatismes` - - `sante--bien-etre-psychologique` - - `sante--diagnostic-et-accompagnement-a-lemployabilite` - - `sante--faire-face-a-une-situation-daddiction` - - `sante--obtenir-la-prise-en-charge-de-frais-medicaux` - - `sante--prevention-et-acces-aux-soins` - - `sante--se-soigner-et-prevenir-la-maladie` - - `sante--vie-relationnelle-et-affective` - - `se-former` - - `se-former--monter-son-dossier-de-formation` - - `se-former--trouver-sa-formation` - - `se-former--utiliser-le-numerique` - - `souvrir-a-linternational` - - `souvrir-a-linternational--connaitre-les-opportunites-demploi-a-letranger` - - `souvrir-a-linternational--sinformer-sur-les-aides-pour-travailler-a-letranger` - - `souvrir-a-linternational--sorganiser-suite-a-son-retour-en-france` - - `trouver-un-emploi` - - `trouver-un-emploi--convaincre-un-recruteur-en-entretien` - - `trouver-un-emploi--faire-des-candidatures-spontanees` - - `trouver-un-emploi--repondre-a-des-offres-demploi` - - `trouver-un-emploi--suivre-ses-candidatures-et-relancer-les-employeurs` - - - - -Titre: Thematiques - - - - -## **:material-hand-pointing-right: prise_rdv** -Type: `string` - -| format | pattern | -| :------------: | :---------------------------------------------------------------------------: | -| `uri` |None | - - - -Titre: Prise Rdv - - - - -## **:material-hand-pointing-right: frais** -Type: -`array` - -| format | pattern | -| :------: | :---------------------------------------------------------------------------------: | -| `enum` | None | -??? abstract "Valeurs possibles" - - `gratuit` - - `gratuit-sous-conditions` - - `payant` - - `adhesion` - - `pass-numerique` - - - - -Titre: Frais - - - - -## **:material-hand-pointing-right: frais_autres** -Type: `string` - - - -Titre: Frais Autres - - - - -## **:material-hand-pointing-right: profils** -Type: -`array` - -| format | pattern | -| :------: | :---------------------------------------------------------------------------------: | -| `enum` | None | -??? abstract "Valeurs possibles" - - `adultes` - - `alternants` - - `beneficiaires-rsa` - - `deficience-visuelle` - - `demandeurs-demploi` - - `familles-enfants` - - `etudiants` - - `femmes` - - `handicaps-mentaux` - - `handicaps-psychiques` - - `jeunes` - - `jeunes-16-26` - - `locataires` - - `personnes-de-nationalite-etrangere` - - `personnes-en-situation-de-handicap` - - `personnes-en-situation-illettrisme` - - `personnes-handicapees` - - `proprietaires` - - `public-langues-etrangeres` - - `retraites` - - `salaries` - - `sans-domicile-fixe` - - `seniors-65` - - `sortants-de-detention` - - `surdite` - - `victimes` - - `tous-publics` - - `personnes-en-situation-durgence` - - - - -Titre: Profils - - - - -## **:material-hand-pointing-right: profils_precisions** -Type: `string` - - - -Titre: Profils Precisions - - - - -## **:material-hand-pointing-right: pre_requis** -Type: `array` - - - -Titre: Pre Requis - - - - -## **:material-hand-pointing-right: cumulable** -Type: `boolean` - - - -Titre: Cumulable - - - - -## **:material-hand-pointing-right: justificatifs** -Type: `array` - - - -Titre: Justificatifs - - - - -## **:material-hand-pointing-right: formulaire_en_ligne** -Type: `string` - -| format | pattern | -| :------------: | :---------------------------------------------------------------------------: | -| `uri` |None | - - - -Titre: Formulaire En Ligne - - - - -## **:material-hand-pointing-right: commune** -Type: `string` - - - -Titre: Commune - - - - -## **:material-hand-pointing-right: code_postal** -Type: `string` - -| format | pattern | -| :------------: | :---------------------------------------------------------------------------: | -| None | `^\d{5}$` | - - - -Titre: Code Postal - - - - -## **:material-hand-pointing-right: code_insee** -:green_circle: {++Requis++} - -Type: `string` - -| format | pattern | -| :------------: | :---------------------------------------------------------------------------: | -| None | `^\w{5}$` | - - - -Titre: Code Insee - - -Description: [Deprecated] - - - -## **:material-hand-pointing-right: adresse** -:green_circle: {++Requis++} - -???+ warning "Deprecated" - Ce champs est deprecie. Cf le change log pour plus d'information. -Type: `string` - - - -Titre: L'adresse du service - - -Description: Adresse du service. Doit être renseignée si le service est diffusé. - - -Examples: - -``` -17 rue du mollard 38160 Saint Marcellin -``` - -``` -56 rue de la république 69002 Lyon -``` - - - -## **:material-hand-pointing-right: complement_adresse** -Type: `string` - - - -Titre: Complement Adresse - - - - -## **:material-hand-pointing-right: longitude** -Type: `number` - - - -Titre: Longitude - - - - -## **:material-hand-pointing-right: latitude** -Type: `number` - - - -Titre: Latitude - - - - -## **:material-hand-pointing-right: recurrence** -Type: `string` - - - -Titre: Recurrence - - - - -## **:material-hand-pointing-right: date_creation** -Type: `string` - -| format | pattern | -| :------------: | :---------------------------------------------------------------------------: | -| `date` |None | - - - -Titre: Date Creation - - - - -## **:material-hand-pointing-right: date_suspension** -Type: `string` - -| format | pattern | -| :------------: | :---------------------------------------------------------------------------: | -| `date` |None | - - - -Titre: Date Suspension - - - - -## **:material-hand-pointing-right: lien_source** -Type: `string` - -| format | pattern | -| :------------: | :---------------------------------------------------------------------------: | -| `uri` |None | - - - -Titre: Lien Source - - - - -## **:material-hand-pointing-right: telephone** -Type: `string` - - - -Titre: Telephone - - - - -## **:material-hand-pointing-right: courriel** -Type: `string` - -| format | pattern | -| :------------: | :---------------------------------------------------------------------------: | -| `email` |None | - - - -Titre: Courriel - - - - -## **:material-hand-pointing-right: contact_public** -Type: `boolean` - - - -Titre: Contact Public - - - - -## **:material-hand-pointing-right: date_maj** -Type: `string` - -| format | pattern | -| :------------: | :---------------------------------------------------------------------------: | -| `date`, `date-time`|None | - - - -Titre: Date Maj - - - - -## **:material-hand-pointing-right: modes_accueil** -Type: -`array` - -| format | pattern | -| :------: | :---------------------------------------------------------------------------------: | -| `enum` | None | -??? abstract "Valeurs possibles" - - `a-distance` - - `en-presentiel` - - - - -Titre: Modes Accueil - - - - -## **:material-hand-pointing-right: zone_diffusion_type** -Type: -`string` - -| format | pattern | -| :------: | :---------------------------------------------------------------------------------: | -| `enum` | None | -??? abstract "Valeurs possibles" - - `commune` - - `epci` - - `region` - - `departement` - - `pays` - - - - - - - -## **:material-hand-pointing-right: zone_diffusion_code** -Type: `string` - -| format | pattern | -| :------------: | :---------------------------------------------------------------------------: | -| None | `^\w{5}$`, `^\d{9}$`, `^\w{2,3}$`, `^\d{2}$` | - - - -Titre: Zone Diffusion Code - - - - -## **:material-hand-pointing-right: zone_diffusion_nom** -Type: `string` - - - -Titre: Zone Diffusion Nom - - - - -## **:material-hand-pointing-right: contact_nom_prenom** -Type: `string` - - - -Titre: Contact Nom Prenom - - - - -## **:material-hand-pointing-right: page_web** -Type: `string` - -| format | pattern | -| :------------: | :---------------------------------------------------------------------------: | -| `uri` |None | - - - -Titre: Page Web - - -Description: Lien vers une page web dédiée au service sur le site web de la structure. Ce champ n'est pas destiné à recevoir un lien vers le site d'un producteur de donnée. - - -Examples: - -``` -https://insersol.fr/biclou-atelier-reparation-participatif-solidaire/ -``` - - - -## **:material-hand-pointing-right: modes_orientation_beneficiaire** -Type: -`array` - -| format | pattern | -| :------: | :---------------------------------------------------------------------------------: | -| `enum` | None | -??? abstract "Valeurs possibles" - - `completer-le-formulaire-dadhesion` - - `envoyer-un-mail` - - `se-presenter` - - `telephoner` - - `prendre-rdv` - - `autre` - - - - -Titre: Modes Orientation Beneficiaire - - - - -## **:material-hand-pointing-right: modes_orientation_beneficiaire_autres** -Type: `string` - - - -Titre: Modes Orientation Beneficiaire Autres - - - - -## **:material-hand-pointing-right: modes_orientation_accompagnateur** -Type: -`array` - -| format | pattern | -| :------: | :---------------------------------------------------------------------------------: | -| `enum` | None | -??? abstract "Valeurs possibles" - - `completer-le-formulaire-dadhesion` - - `envoyer-un-mail` - - `envoyer-un-mail-avec-une-fiche-de-prescription` - - `telephoner` - - `prendre-rdv` - - `autre` - - - - -Titre: Modes Orientation Accompagnateur - - - - -## **:material-hand-pointing-right: modes_orientation_accompagnateur_autres** -Type: `string` - - - -Titre: Modes Orientation Accompagnateur Autres - - - diff --git a/docs/model.md.j2 b/docs/model.md.j2 index 5a6019c..d110802 100644 --- a/docs/model.md.j2 +++ b/docs/model.md.j2 @@ -21,7 +21,7 @@ Type : `{{ get_property_type_data(property_schema).type }}` {% if referentiel.enum|length <= 5 %} Valeurs acceptées : `"{{ referentiel.enum|join('", "') }}"` {% else %} -Valeurs acceptées : voir les [{{ referentiel.title }}](../referentiels/{{ property_type_data.referentiel }}.md) +Valeurs acceptées : voir les [{{ referentiel.title }}](../referentiels/{{ property_type_data.referentiel_file_name }}/) {% endif %} {% endif %} diff --git a/docs/schema.md b/docs/schema.md deleted file mode 100644 index e274926..0000000 --- a/docs/schema.md +++ /dev/null @@ -1,973 +0,0 @@ -!!! info "Les champs marqués d'une astérisque (*) sont obligatoires." - - - -### `id` * - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `structure_id` * - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `source` * - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `nom` * - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `presentation_resume` - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `presentation_detail` - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `types` - - - - - -Type : `array[string]` - - - - - - - - - - -Valeurs acceptées : voir les [TypologieService](typologie_service.md) - - - - - - ---- - - -### `thematiques` - - - - - -Type : `array[string]` - - - - - - - - - - -Valeurs acceptées : voir les [Thematique](thematique.md) - - - - - - ---- - - -### `prise_rdv` - - - - - -Type : `string` - - - -Format : `uri` - - - - - - - - ---- - - -### `frais` - - - - - -Type : `array[string]` - - - - - - - - - - -Valeurs acceptées : `"gratuit", "gratuit-sous-conditions", "payant", "adhesion", "pass-numerique"` - - - - - - ---- - - -### `frais_autres` - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `profils` - - - - - -Type : `array[string]` - - - - - - - - - - -Valeurs acceptées : voir les [Profil](profil.md) - - - - - - ---- - - -### `profils_precisions` - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `pre_requis` - - - - - -Type : `array` - - - - - - - - - - - - ---- - - -### `cumulable` - - - - - -Type : `boolean` - - - - - - - - - - - - ---- - - -### `justificatifs` - - - - - -Type : `array` - - - - - - - - - - - - ---- - - -### `formulaire_en_ligne` - - - - - -Type : `string` - - - -Format : `uri` - - - - - - - - ---- - - -### `commune` - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `code_postal` - - - - - -Type : `string` - - - - - -Regex : `^\d{5}$` - - - - - - ---- - - -### `code_insee` - - - - - -Type : `string` - - - - - -Regex : `^\w{5}$` - - - - - - ---- - - -### `adresse` - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `complement_adresse` - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `longitude` - - - - - -Type : `number` - - - - - - - - - - - - ---- - - -### `latitude` - - - - - -Type : `number` - - - - - - - - - - - - ---- - - -### `recurrence` - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `date_creation` - - - - - -Type : `string` - - - -Format : `date` - - - - - - - - ---- - - -### `date_suspension` - - - - - -Type : `string` - - - -Format : `date` - - - - - - - - ---- - - -### `lien_source` - - - - - -Type : `string` - - - -Format : `uri` - - - - - - - - ---- - - -### `telephone` - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `courriel` - - - - - -Type : `string` - - - -Format : `email` - - - - - - - - ---- - - -### `contact_public` - - - - - -Type : `boolean` - - - - - - - - - - - - ---- - - -### `date_maj` - - - - - -Type : `string` - - - -Format : `date | date-time` - - - - - - - - ---- - - -### `modes_accueil` - - - - - -Type : `array[string]` - - - - - - - - - - -Valeurs acceptées : `"a-distance", "en-presentiel"` - - - - - - ---- - - -### `zone_diffusion_type` - - - - - -Type : `string` - - - - - - - - - - -Valeurs acceptées : `"commune", "epci", "region", "departement", "pays"` - - - - - - ---- - - -### `zone_diffusion_code` - - - - - -Type : `string` - - - - - -Regex : `^\d{9}$ | ^\w{2,3}$ | ^\w{5}$ | ^\d{2}$` - - - - - - ---- - - -### `zone_diffusion_nom` - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `contact_nom_prenom` - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `page_web` - -Lien vers une page web dédiée au service sur le site web de la structure. Ce champ n'est pas destiné à recevoir un lien vers le site d'un producteur de donnée. - - - -Type : `string` - - - -Format : `uri` - - - - - - -Exemples : - -```json -"https://insersol.fr/biclou-atelier-reparation-participatif-solidaire/" - -``` - - - ---- - - -### `modes_orientation_beneficiaire` - - - - - -Type : `array[string]` - - - - - - - - - - -Valeurs acceptées : voir les [ModeOrientationBeneficiaire](mode_orientation_beneficiaire.md) - - - - - - ---- - - -### `modes_orientation_beneficiaire_autres` - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `modes_orientation_accompagnateur` - - - - - -Type : `array[string]` - - - - - - - - - - -Valeurs acceptées : voir les [ModeOrientationAccompagnateur](mode_orientation_accompagnateur.md) - - - - - - ---- - - -### `modes_orientation_accompagnateur_autres` - - - - - -Type : `string` - - - - - - - - - - - - ---- diff --git a/docs/service.md b/docs/service.md index 5bb0071..4b470fe 100644 --- a/docs/service.md +++ b/docs/service.md @@ -140,7 +140,7 @@ Type : `string` -Type : `array[string]` +Type : `string` @@ -151,7 +151,7 @@ Type : `array[string]` -Valeurs acceptées : `""` +Valeurs acceptées : voir les [TypologieService](../referentiels/typologies_de_services/) @@ -167,7 +167,7 @@ Valeurs acceptées : `""` -Type : `array[string]` +Type : `string` @@ -178,7 +178,7 @@ Type : `array[string]` -Valeurs acceptées : `""` +Valeurs acceptées : voir les [Thematique](../referentiels/thematiques/) @@ -216,7 +216,7 @@ Format : `uri` -Type : `array[string]` +Type : `string` @@ -227,7 +227,7 @@ Type : `array[string]` -Valeurs acceptées : `""` +Valeurs acceptées : `"gratuit", "gratuit-sous-conditions", "payant", "adhesion", "pass-numerique"` @@ -265,7 +265,7 @@ Type : `string` -Type : `array[string]` +Type : `string` @@ -276,7 +276,7 @@ Type : `array[string]` -Valeurs acceptées : `""` +Valeurs acceptées : voir les [Profil](../referentiels/profils/) @@ -732,7 +732,7 @@ Format : `date | date-time` -Type : `array[string]` +Type : `string` @@ -743,7 +743,7 @@ Type : `array[string]` -Valeurs acceptées : `""` +Valeurs acceptées : `"a-distance", "en-presentiel"` @@ -770,7 +770,7 @@ Type : `string` -Valeurs acceptées : `""` +Valeurs acceptées : `"commune", "epci", "region", "departement", "pays"` @@ -881,7 +881,7 @@ Exemples : -Type : `array[string]` +Type : `string` @@ -892,7 +892,7 @@ Type : `array[string]` -Valeurs acceptées : `""` +Valeurs acceptées : voir les [ModeOrientationBeneficiaire](../referentiels/modes_orientation_beneficiaire/) @@ -930,7 +930,7 @@ Type : `string` -Type : `array[string]` +Type : `string` @@ -941,7 +941,7 @@ Type : `array[string]` -Valeurs acceptées : `""` +Valeurs acceptées : voir les [ModeOrientationAccompagnateur](../referentiels/modes_orientation_accompagnateur/) diff --git a/docs/structure.md b/docs/structure.md index 2aacf10..2b6ca04 100644 --- a/docs/structure.md +++ b/docs/structure.md @@ -261,7 +261,7 @@ Type : `string` -Valeurs acceptées : `""` +Valeurs acceptées : voir les [TypologieStructure](../referentiels/typologies_de_structures/) @@ -519,7 +519,7 @@ Format : `uri` -Type : `array[string]` +Type : `string` @@ -530,7 +530,7 @@ Type : `array[string]` -Valeurs acceptées : `""` +Valeurs acceptées : voir les [LabelNational](../referentiels/labels_nationaux/) @@ -568,7 +568,7 @@ Type : `array` -Type : `array[string]` +Type : `string` @@ -579,7 +579,7 @@ Type : `array[string]` -Valeurs acceptées : `""` +Valeurs acceptées : voir les [Thematique](../referentiels/thematiques/) diff --git a/mkdocs.yml b/mkdocs.yml index 0ed558e..0fcdf77 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -3,8 +3,6 @@ site_url: https://mydomain.org/mysite theme: name: material nav: - - Home: index.md - - JinjaTest: jinja_test.md - Structure: structure.md - Service: service.md - Referentiels: diff --git a/src/data_inclusion/schema/__main__.py b/src/data_inclusion/schema/__main__.py index bab3496..4005eef 100644 --- a/src/data_inclusion/schema/__main__.py +++ b/src/data_inclusion/schema/__main__.py @@ -127,13 +127,15 @@ def get_property_type_data(property_schema: dict) -> dict | None: } case {"anyOf": [{"type": "array", "items": {"$ref": ref}}, {"type": "null"}]}: return { - "type": "array[string]", - "referentiel": map_ref(ref), + "type": "string", + "referentiel_file_name": map_ref(ref), + "referentiel": ref.split("/")[-1], } case {"anyOf": [{"$ref": ref}, {"type": "null"}]}: return { "type": "string", - "referentiel": map_ref(ref), + "referentiel_file_name": map_ref(ref), + "referentiel": ref.split("/")[-1], } case {"anyOf": [*json_type_dict_list, {"type": "null"}]}: return { diff --git a/src/data_inclusion/schema/template.md.j2 b/src/data_inclusion/schema/template.md.j2 deleted file mode 100644 index 9ae268b..0000000 --- a/src/data_inclusion/schema/template.md.j2 +++ /dev/null @@ -1,66 +0,0 @@ -Test {{ model.properties.adresse.title }} -{% for property_name, property in model.properties.items() %} -## **:material-hand-pointing-right: {{ property_name }}** - {%- if property_name in model.required %} -:green_circle: {++Requis++} - {% endif %} - {%- if property.deprecated %} -???+ warning "Deprecated" - Ce champs est deprecie. Cf le change log pour plus d'information. - {%- endif %} -Type:{%- for field_type, fields_info in field_types[property_name].items() %} - {%- if "enum" in fields_info %} - {%- for value in fields_info['enum'] %} - {%- if loop.first %} -`{{ field_type }}` - -| format | pattern | -| :------: | :---------------------------------------------------------------------------------: | -| `enum` | None | -??? abstract "Valeurs possibles" - {# | Valeurs possibles | -| :--------------------------------------------------------------------------------------------: | #} - {%- endif %} - `{{ value }}` - {# {% set count_letter = value | length %}{% set spaces = 93 - count_letter %}| `{{ value }}`{{ ' ' * spaces }}| #} - {%- endfor %} - {%- else %} `{{ field_type }}` - {%- if "format" in fields_info or "pattern" in fields_info %} - -| format | pattern | -| :------------: | :---------------------------------------------------------------------------: | - {%- if "format" in fields_info %} -{%- set formats = fields_info["format"]|join("`, `") %} -{%- set count_letter = formats | length %} -{%- set spaces = 11 - count_letter %} -| `{{ formats }}`{{ ' ' * spaces }}| - {%- else %} -| None | - {%- endif %} - {%- if "pattern" in fields_info %} -{%- set patterns = fields_info["pattern"]|join("`, `") %} -{%- set count_letter = patterns | length %} -{%- set spaces = 73 - count_letter %} `{{ patterns }}`{{ ' ' * spaces }}| - {%- else %}None{{ ' ' * 70 }}| - {%- endif %} - {%- endif %} - {%- endif %} -{% endfor %} -{% if property.default %} -Default: `{{ property.default }}` -{% endif %} -{% if property.title %} -Titre: {{ property.title }} -{% endif %} -{% if property.description %} -Description: {{ property.description }} -{% endif %} -{% if property.examples %} -Examples: - {% for example in property.examples %} -``` -{{ example }} -``` - {% endfor %} -{% endif %} -{% endfor %} From c4345d183cadfc8ca28d5cce26cff6367aa94ba1 Mon Sep 17 00:00:00 2001 From: Hugo Lecuyer Date: Wed, 29 Jan 2025 16:14:48 +0100 Subject: [PATCH 7/9] test --- docs/index.md | 4 + docs/schema.md | 973 +++++++++++++++++++++++++++++++++++++++++++++++++ mkdocs.yml | 1 + 3 files changed, 978 insertions(+) create mode 100644 docs/index.md create mode 100644 docs/schema.md diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..2b76524 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,4 @@ +# Data inclusion documentation + +- [Structure](structure.md) +- [Service](service.md) \ No newline at end of file diff --git a/docs/schema.md b/docs/schema.md new file mode 100644 index 0000000..e274926 --- /dev/null +++ b/docs/schema.md @@ -0,0 +1,973 @@ +!!! info "Les champs marqués d'une astérisque (*) sont obligatoires." + + + +### `id` * + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `structure_id` * + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `source` * + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `nom` * + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `presentation_resume` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `presentation_detail` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `types` + + + + + +Type : `array[string]` + + + + + + + + + + +Valeurs acceptées : voir les [TypologieService](typologie_service.md) + + + + + + +--- + + +### `thematiques` + + + + + +Type : `array[string]` + + + + + + + + + + +Valeurs acceptées : voir les [Thematique](thematique.md) + + + + + + +--- + + +### `prise_rdv` + + + + + +Type : `string` + + + +Format : `uri` + + + + + + + + +--- + + +### `frais` + + + + + +Type : `array[string]` + + + + + + + + + + +Valeurs acceptées : `"gratuit", "gratuit-sous-conditions", "payant", "adhesion", "pass-numerique"` + + + + + + +--- + + +### `frais_autres` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `profils` + + + + + +Type : `array[string]` + + + + + + + + + + +Valeurs acceptées : voir les [Profil](profil.md) + + + + + + +--- + + +### `profils_precisions` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `pre_requis` + + + + + +Type : `array` + + + + + + + + + + + + +--- + + +### `cumulable` + + + + + +Type : `boolean` + + + + + + + + + + + + +--- + + +### `justificatifs` + + + + + +Type : `array` + + + + + + + + + + + + +--- + + +### `formulaire_en_ligne` + + + + + +Type : `string` + + + +Format : `uri` + + + + + + + + +--- + + +### `commune` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `code_postal` + + + + + +Type : `string` + + + + + +Regex : `^\d{5}$` + + + + + + +--- + + +### `code_insee` + + + + + +Type : `string` + + + + + +Regex : `^\w{5}$` + + + + + + +--- + + +### `adresse` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `complement_adresse` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `longitude` + + + + + +Type : `number` + + + + + + + + + + + + +--- + + +### `latitude` + + + + + +Type : `number` + + + + + + + + + + + + +--- + + +### `recurrence` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `date_creation` + + + + + +Type : `string` + + + +Format : `date` + + + + + + + + +--- + + +### `date_suspension` + + + + + +Type : `string` + + + +Format : `date` + + + + + + + + +--- + + +### `lien_source` + + + + + +Type : `string` + + + +Format : `uri` + + + + + + + + +--- + + +### `telephone` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `courriel` + + + + + +Type : `string` + + + +Format : `email` + + + + + + + + +--- + + +### `contact_public` + + + + + +Type : `boolean` + + + + + + + + + + + + +--- + + +### `date_maj` + + + + + +Type : `string` + + + +Format : `date | date-time` + + + + + + + + +--- + + +### `modes_accueil` + + + + + +Type : `array[string]` + + + + + + + + + + +Valeurs acceptées : `"a-distance", "en-presentiel"` + + + + + + +--- + + +### `zone_diffusion_type` + + + + + +Type : `string` + + + + + + + + + + +Valeurs acceptées : `"commune", "epci", "region", "departement", "pays"` + + + + + + +--- + + +### `zone_diffusion_code` + + + + + +Type : `string` + + + + + +Regex : `^\d{9}$ | ^\w{2,3}$ | ^\w{5}$ | ^\d{2}$` + + + + + + +--- + + +### `zone_diffusion_nom` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `contact_nom_prenom` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `page_web` + +Lien vers une page web dédiée au service sur le site web de la structure. Ce champ n'est pas destiné à recevoir un lien vers le site d'un producteur de donnée. + + + +Type : `string` + + + +Format : `uri` + + + + + + +Exemples : + +```json +"https://insersol.fr/biclou-atelier-reparation-participatif-solidaire/" + +``` + + + +--- + + +### `modes_orientation_beneficiaire` + + + + + +Type : `array[string]` + + + + + + + + + + +Valeurs acceptées : voir les [ModeOrientationBeneficiaire](mode_orientation_beneficiaire.md) + + + + + + +--- + + +### `modes_orientation_beneficiaire_autres` + + + + + +Type : `string` + + + + + + + + + + + + +--- + + +### `modes_orientation_accompagnateur` + + + + + +Type : `array[string]` + + + + + + + + + + +Valeurs acceptées : voir les [ModeOrientationAccompagnateur](mode_orientation_accompagnateur.md) + + + + + + +--- + + +### `modes_orientation_accompagnateur_autres` + + + + + +Type : `string` + + + + + + + + + + + + +--- diff --git a/mkdocs.yml b/mkdocs.yml index 0fcdf77..592c520 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -3,6 +3,7 @@ site_url: https://mydomain.org/mysite theme: name: material nav: + - Accueil: index.md - Structure: structure.md - Service: service.md - Referentiels: From 997b04e265ddb1279321e9d0e3918a255dec7b00 Mon Sep 17 00:00:00 2001 From: Hugo Lecuyer Date: Wed, 29 Jan 2025 16:16:54 +0100 Subject: [PATCH 8/9] git-workflow-ok --- .github/workflows/doc.yml | 2 +- docs/service.md | 14 +++++++------- docs/structure.md | 4 ++-- src/data_inclusion/schema/__main__.py | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index 21d3788..c29ca58 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -3,7 +3,7 @@ name: publish_doc on: push: branches: - - hlecuyer/feat/generate-automatic-documentation + - release permissions: contents: write diff --git a/docs/service.md b/docs/service.md index 4b470fe..95846f7 100644 --- a/docs/service.md +++ b/docs/service.md @@ -140,7 +140,7 @@ Type : `string` -Type : `string` +Type : `array[string]` @@ -167,7 +167,7 @@ Valeurs acceptées : voir les [TypologieService](../referentiels/typologies_de_s -Type : `string` +Type : `array[string]` @@ -216,7 +216,7 @@ Format : `uri` -Type : `string` +Type : `array[string]` @@ -265,7 +265,7 @@ Type : `string` -Type : `string` +Type : `array[string]` @@ -732,7 +732,7 @@ Format : `date | date-time` -Type : `string` +Type : `array[string]` @@ -881,7 +881,7 @@ Exemples : -Type : `string` +Type : `array[string]` @@ -930,7 +930,7 @@ Type : `string` -Type : `string` +Type : `array[string]` diff --git a/docs/structure.md b/docs/structure.md index 2b6ca04..7c8c176 100644 --- a/docs/structure.md +++ b/docs/structure.md @@ -519,7 +519,7 @@ Format : `uri` -Type : `string` +Type : `array[string]` @@ -568,7 +568,7 @@ Type : `array` -Type : `string` +Type : `array[string]` diff --git a/src/data_inclusion/schema/__main__.py b/src/data_inclusion/schema/__main__.py index 4005eef..d864da3 100644 --- a/src/data_inclusion/schema/__main__.py +++ b/src/data_inclusion/schema/__main__.py @@ -127,7 +127,7 @@ def get_property_type_data(property_schema: dict) -> dict | None: } case {"anyOf": [{"type": "array", "items": {"$ref": ref}}, {"type": "null"}]}: return { - "type": "string", + "type": "array[string]", "referentiel_file_name": map_ref(ref), "referentiel": ref.split("/")[-1], } From 3aa20edad8921d504e951c75c1d578bff01f14cf Mon Sep 17 00:00:00 2001 From: Hugo Lecuyer Date: Thu, 30 Jan 2025 11:35:45 +0100 Subject: [PATCH 9/9] review-val --- .github/workflows/doc.yml | 2 +- .../assets/DataInclusion-Monogramme-Blanc.png | Bin 0 -> 29949 bytes .../DataInclusion-Monogramme-Couleur.png | Bin 0 -> 32669 bytes docs/index.md | 31 +- docs/referentiel.md.j2 | 6 +- docs/referentiels/labels_nationaux.md | 170 +-- .../modes_orientation_accompagnateur.md | 32 +- .../modes_orientation_beneficiaire.md | 32 +- docs/referentiels/profils.md | 68 +- docs/referentiels/thematiques.md | 298 +++--- docs/referentiels/typologies_de_services.md | 66 +- docs/referentiels/typologies_de_structures.md | 182 ++-- docs/schema.md | 973 ------------------ mkdocs.yml | 16 +- 14 files changed, 491 insertions(+), 1385 deletions(-) create mode 100644 docs/assets/DataInclusion-Monogramme-Blanc.png create mode 100644 docs/assets/DataInclusion-Monogramme-Couleur.png delete mode 100644 docs/schema.md diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index c29ca58..21d3788 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -3,7 +3,7 @@ name: publish_doc on: push: branches: - - release + - hlecuyer/feat/generate-automatic-documentation permissions: contents: write diff --git a/docs/assets/DataInclusion-Monogramme-Blanc.png b/docs/assets/DataInclusion-Monogramme-Blanc.png new file mode 100644 index 0000000000000000000000000000000000000000..b753427a2f12a8d7ff9321f417e0fb21fd13c759 GIT binary patch literal 29949 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 H0+Rj%@!ME= literal 0 HcmV?d00001 diff --git a/docs/assets/DataInclusion-Monogramme-Couleur.png b/docs/assets/DataInclusion-Monogramme-Couleur.png new file mode 100644 index 0000000000000000000000000000000000000000..35d48f4da51b8e9b81a604f13687f77a47411c0f GIT binary patch literal 32669 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 DO)Drr literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/index.md index 2b76524..e4b88b6 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,4 +1,31 @@ -# Data inclusion documentation +Cette documentation dépôt contient le schéma de l'offre d'insertion. Il est issu de la collaboration d'acteurs de l'insertion. Il comprend deux éléments principaux: - [Structure](structure.md) -- [Service](service.md) \ No newline at end of file +- [Service](service.md) + +## Contexte + +La démarche a été initiée par l'équipe [Dora](https://beta.gouv.fr/startups/dora.html), portée le GIP Plateforme de l'inclusion. + +Il a été constaté l'existence d'une multitude de portails en ligne ou simulateurs, mais pas de langage commun pour décrire l’offre d’insertion et peu de partage des informations. La diffusion des aides et des dispositifs en est diminuée. Des informations sur les aides ou dispositifs deviennent obsolètes. Les efforts de saisie et de développement sont multipliés. + +Ce schéma a été créé avec la collaboration des acteurs de l'insertion afin d'harmoniser les données et de permettre l'intéropérabilité entre les différents acteurs et leurs outils. + +## Le schéma + +Le schéma définit les structures de l'insertion et devraient à terme inclure les services proposés par ces structures. Il comprend les informations essentielles permettant de décrire l'offre d'insertion et la réutilisation par les acteurs de l'insertion. + +Le schéma est pour le moment formalisé dans le format JSON schema. Nous veillions néanmoins à maintenir la possibilité de représenter les données au format csv. + + +## Consolidation + +data.inclusion réalise une consolidation et publie la base consolidée, aux formats json et csv, sur [data.gouv.fr](https://www.data.gouv.fr/en/datasets/referentiel-de-loffre-dinsertion-liste-des-structures-et-services-dinsertion/). + +## Aide à la saisie + +Les structures qui partagent leurs données via l'outil [Dora](https://dora.inclusion.beta.gouv.fr/) sont incluses par défaut dans la base consolidée. + +## Contribuer + +Vous pouvez créer un [nouveau ticket](https://github.com/gip-inclusion/data-inclusion-schema/issues/new) sur le dépôt ouvert du schéma pour proposer une modification ou une amélioration ou poser une question. diff --git a/docs/referentiel.md.j2 b/docs/referentiel.md.j2 index f86bf25..24ea2fa 100644 --- a/docs/referentiel.md.j2 +++ b/docs/referentiel.md.j2 @@ -1,10 +1,12 @@ {% for referential_item in referential %} ### `{{ referential_item.value }}` -Label: {{ referential_item.label }} +**Label :** {{ referential_item.label }} {% if referential_item.description %} -Description: {{ referential_item.description }} +!!! abstract "Description" + + {{ referential_item.description }} {% endif %} {% endfor %} diff --git a/docs/referentiels/labels_nationaux.md b/docs/referentiels/labels_nationaux.md index 9c55966..b2648cf 100644 --- a/docs/referentiels/labels_nationaux.md +++ b/docs/referentiels/labels_nationaux.md @@ -1,595 +1,595 @@ ### `60000-rebonds` -Label: 60 000 rebonds +**Label :** 60 000 rebonds ### `action-logement` -Label: Action logement +**Label :** Action logement ### `adie` -Label: Adie +**Label :** Adie ### `afpa` -Label: AFPA +**Label :** AFPA ### `agefiph` -Label: AGEFIPH +**Label :** AGEFIPH ### `aidants-connect` -Label: Aidants Connect +**Label :** Aidants Connect ### `alliance-villes-emploi` -Label: Alliance villes emploi +**Label :** Alliance villes emploi ### `anlci` -Label: ANLCI +**Label :** ANLCI ### `apec` -Label: APEC +**Label :** APEC ### `apels` -Label: APELS Agence Pour l’Education par Le Sport +**Label :** APELS Agence Pour l’Education par Le Sport ### `apprentis-dauteuil` -Label: Apprentis d’Auteuil +**Label :** Apprentis d’Auteuil ### `aptic` -Label: APTIC +**Label :** APTIC ### `banques-alimentaires` -Label: Banques alimentaires +**Label :** Banques alimentaires ### `bge` -Label: BGE +**Label :** BGE ### `caf` -Label: CAF +**Label :** CAF ### `campus-connecte` -Label: Campus connecté +**Label :** Campus connecté ### `cap-emploi-reseau-cheops` -Label: CAP Emploi - Réseau CHEOPS +**Label :** CAP Emploi - Réseau CHEOPS ### `cci` -Label: CCI +**Label :** CCI ### `chantier-ecole` -Label: Chantier école +**Label :** Chantier école ### `cidff` -Label: CIDFF +**Label :** CIDFF ### `cnam` -Label: CNAM +**Label :** CNAM ### `collectif-emploi` -Label: Collectif emploi +**Label :** Collectif emploi ### `conseiller-numerique` -Label: Conseiller numérique +**Label :** Conseiller numérique ### `coorace` -Label: Coorace +**Label :** Coorace ### `crepi` -Label: CREPI +**Label :** CREPI ### `cresus` -Label: Crésus +**Label :** Crésus ### `croix-rouge` -Label: Croix rouge +**Label :** Croix rouge ### `dihal` -Label: DIHAL +**Label :** DIHAL ### `duo-for-a-job` -Label: Duo for a job +**Label :** Duo for a job ### `ecoles-de-la-deuxieme-chance` -Label: E2C - École de la 2e chance +**Label :** E2C - École de la 2e chance ### `egee` -Label: EGEE +**Label :** EGEE ### `emmaus` -Label: Emmaus +**Label :** Emmaus ### `envie` -Label: Envie +**Label :** Envie ### `epide` -Label: EPIDE +**Label :** EPIDE ### `espace-emploi-agric-arrco` -Label: Espace Emploi Agirc Arrco +**Label :** Espace Emploi Agirc Arrco ### `etcld` -Label: Expérimentation territoriale contre le chômage de longue durée +**Label :** Expérimentation territoriale contre le chômage de longue durée ### `fabrique-de-territoire` -Label: Fabrique de Territoire +**Label :** Fabrique de Territoire ### `face` -Label: Fondation FACE +**Label :** Fondation FACE ### `fede-pro-fem` -Label: Federation Professionnelle Pour les Femmes +**Label :** Federation Professionnelle Pour les Femmes ### `federation-des-acteurs-de-la-solidarite` -Label: Fédération des acteurs de la solidarité +**Label :** Fédération des acteurs de la solidarité ### `federation-des-entreprises-dinsertion` -Label: Fédération des entreprises d’insertion +**Label :** Fédération des entreprises d’insertion ### `force-femmes` -Label: Force Femmes +**Label :** Force Femmes ### `france-active` -Label: France Active +**Label :** France Active ### `france-service` -Label: France service +**Label :** France service ### `france-travail` -Label: France Travail +**Label :** France Travail ### `french-tech` -Label: French Tech +**Label :** French Tech ### `geiq` -Label: GEIQ +**Label :** GEIQ ### `grand-test-couveuse-dentreprise` -Label: Grandes écoles du numérique +**Label :** Grandes écoles du numérique ### `grandes-ecoles-du-numerique` -Label: Grand Test Couveuse d’entreprise +**Label :** Grand Test Couveuse d’entreprise ### `hup` -Label: H’UP +**Label :** H’UP ### `inae` -Label: INAE +**Label :** INAE ### `initiative-france` -Label: Initiative France +**Label :** Initiative France ### `konexio` -Label: Konexio +**Label :** Konexio ### `la-cravate-solidaire` -Label: La Cravate Solidaire +**Label :** La Cravate Solidaire ### `la-ressourcerie` -Label: La ressourcerie +**Label :** La ressourcerie ### `les-premieres` -Label: Les Premières +**Label :** Les Premières ### `linklusion` -Label: Linklusion +**Label :** Linklusion ### `maisons-de-lemploi` -Label: Maisons de l’Emploi +**Label :** Maisons de l’Emploi ### `mdph` -Label: MDPH +**Label :** MDPH ### `mission-locale` -Label: Mission Locale +**Label :** Mission Locale ### `mobin` -Label: Adhérent au Réseau Mob’In +**Label :** Adhérent au Réseau Mob’In ### `nqt` -Label: NQT +**Label :** NQT ### `point-conseil-budget` -Label: Point conseil budget +**Label :** Point conseil budget ### `point-justice` -Label: Points Justice +**Label :** Points Justice ### `positive-planet` -Label: Positive Planet +**Label :** Positive Planet ### `proxite` -Label: Proxité +**Label :** Proxité ### `reseau-app` -Label: Réseau APP +**Label :** Réseau APP ### `reseau-entreprendre` -Label: Réseau Entreprendre +**Label :** Réseau Entreprendre ### `ressourceries` -Label: Ressourceries +**Label :** Ressourceries ### `restos-du-coeur` -Label: Restos du coeur +**Label :** Restos du coeur ### `scconseil` -Label: SC Conseil +**Label :** SC Conseil ### `secours-populaire` -Label: Secours populaire +**Label :** Secours populaire ### `siao` -Label: SIAO +**Label :** SIAO ### `simplon` -Label: Simplon +**Label :** Simplon ### `sinca` -Label: SINGA +**Label :** SINGA ### `snc` -Label: SNC - Solidarité Nouvelle Face au Chômage +**Label :** SNC - Solidarité Nouvelle Face au Chômage ### `sport-dans-la-ville` -Label: Sport Dans La Ville +**Label :** Sport Dans La Ville ### `tous-tes-possible` -Label: Tous Tes Possibles +**Label :** Tous Tes Possibles ### `tzcld` -Label: TZCLD - Territoire Zero Chomeur Longue Durée +**Label :** TZCLD - Territoire Zero Chomeur Longue Durée ### `unaf` -Label: Union nationale de l’aide aux familles +**Label :** Union nationale de l’aide aux familles ### `unai` -Label: UNAI +**Label :** UNAI ### `unccas` -Label: Union nationale des centres communaux d’action sociale +**Label :** Union nationale des centres communaux d’action sociale ### `unea` -Label: UNEA +**Label :** UNEA ### `unis-cite` -Label: Unis-Cité +**Label :** Unis-Cité ### `wimoov` -Label: Wimoov +**Label :** Wimoov diff --git a/docs/referentiels/modes_orientation_accompagnateur.md b/docs/referentiels/modes_orientation_accompagnateur.md index cc36203..3ef1fdd 100644 --- a/docs/referentiels/modes_orientation_accompagnateur.md +++ b/docs/referentiels/modes_orientation_accompagnateur.md @@ -1,52 +1,62 @@ ### `autre` -Label: Autre +**Label :** Autre ### `completer-le-formulaire-dadhesion` -Label: Compléter le formulaire d’adhésion +**Label :** Compléter le formulaire d’adhésion -Description: Compléter le formulaire d’adhésion associé. +!!! abstract "Description" + + Compléter le formulaire d’adhésion associé. ### `envoyer-un-mail` -Label: Envoyer un courriel +**Label :** Envoyer un courriel + +!!! abstract "Description" -Description: Envoyer un courriel à l’adresse indiquée. + Envoyer un courriel à l’adresse indiquée. ### `envoyer-un-mail-avec-une-fiche-de-prescription` -Label: Envoyer un courriel avec une fiche de prescription +**Label :** Envoyer un courriel avec une fiche de prescription + +!!! abstract "Description" -Description: Envoyer un courriel à l’adresse indiquée avec une fiche de prescription. + Envoyer un courriel à l’adresse indiquée avec une fiche de prescription. ### `prendre-rdv` -Label: Prendre rendez-vous +**Label :** Prendre rendez-vous -Description: Prendre rendez-vous auprès de la structure +!!! abstract "Description" + + Prendre rendez-vous auprès de la structure ### `telephoner` -Label: Téléphoner +**Label :** Téléphoner + +!!! abstract "Description" -Description: Téléphoner au numéro indiqué. + Téléphoner au numéro indiqué. diff --git a/docs/referentiels/modes_orientation_beneficiaire.md b/docs/referentiels/modes_orientation_beneficiaire.md index 469a1e3..84724af 100644 --- a/docs/referentiels/modes_orientation_beneficiaire.md +++ b/docs/referentiels/modes_orientation_beneficiaire.md @@ -1,52 +1,62 @@ ### `autre` -Label: Autre +**Label :** Autre ### `completer-le-formulaire-dadhesion` -Label: Compléter le formulaire d’adhésion +**Label :** Compléter le formulaire d’adhésion -Description: Compléter le formulaire d’adhésion associé. +!!! abstract "Description" + + Compléter le formulaire d’adhésion associé. ### `envoyer-un-mail` -Label: Envoyer un courriel +**Label :** Envoyer un courriel + +!!! abstract "Description" -Description: Envoyer un courriel à l’adresse indiquée. + Envoyer un courriel à l’adresse indiquée. ### `prendre-rdv` -Label: Prendre rendez-vous +**Label :** Prendre rendez-vous + +!!! abstract "Description" -Description: Prendre rendez-vous auprès de la structure + Prendre rendez-vous auprès de la structure ### `se-presenter` -Label: Se présenter +**Label :** Se présenter -Description: Se présenter à l’adresse indiquée. +!!! abstract "Description" + + Se présenter à l’adresse indiquée. ### `telephoner` -Label: Téléphoner +**Label :** Téléphoner + +!!! abstract "Description" -Description: Téléphoner au numéro indiqué. + Téléphoner au numéro indiqué. diff --git a/docs/referentiels/profils.md b/docs/referentiels/profils.md index e24bb53..948fdc3 100644 --- a/docs/referentiels/profils.md +++ b/docs/referentiels/profils.md @@ -1,202 +1,208 @@ ### `adultes` -Label: Adultes +**Label :** Adultes ### `alternants` -Label: Alternants +**Label :** Alternants ### `beneficiaires-rsa` -Label: Bénéficiaires du Revenu de Solidarité Active (RSA) +**Label :** Bénéficiaires du Revenu de Solidarité Active (RSA) ### `deficience-visuelle` -Label: Déficience visuelle +**Label :** Déficience visuelle ### `demandeurs-demploi` -Label: Demandeurs ou demandeuses d’emploi +**Label :** Demandeurs ou demandeuses d’emploi ### `etudiants` -Label: Étudiants +**Label :** Étudiants ### `familles-enfants` -Label: Familles/enfants +**Label :** Familles/enfants ### `femmes` -Label: Femmes +**Label :** Femmes -Description: Le lieu propose des accompagnements réservés aux femmes. +!!! abstract "Description" + + Le lieu propose des accompagnements réservés aux femmes. ### `handicaps-mentaux` -Label: Handicaps mentaux : déficiences limitant les activités d’une personne +**Label :** Handicaps mentaux : déficiences limitant les activités d’une personne ### `handicaps-psychiques` -Label: Handicaps psychiques : troubles psychiatriques donnant lieu à des atteintes comportementales +**Label :** Handicaps psychiques : troubles psychiatriques donnant lieu à des atteintes comportementales ### `jeunes` -Label: Jeunes +**Label :** Jeunes ### `jeunes-16-26` -Label: Jeunes (16-26 ans) +**Label :** Jeunes (16-26 ans) ### `locataires` -Label: Locataires +**Label :** Locataires ### `personnes-de-nationalite-etrangere` -Label: Personnes de nationalité étrangère +**Label :** Personnes de nationalité étrangère ### `personnes-en-situation-de-handicap` -Label: Personnes en situation de handicap +**Label :** Personnes en situation de handicap + +!!! abstract "Description" -Description: Une personne se déplaçant temporairement en béquilles des suites d’une intervention médicale est en situation de handicap sans toutefois être handicapée. + Une personne se déplaçant temporairement en béquilles des suites d’une intervention médicale est en situation de handicap sans toutefois être handicapée. ### `personnes-en-situation-durgence` -Label: Victimes +**Label :** Victimes ### `personnes-en-situation-illettrisme` -Label: Personnes en situation d’illettrisme +**Label :** Personnes en situation d’illettrisme ### `personnes-handicapees` -Label: Personnes handicapées +**Label :** Personnes handicapées + +!!! abstract "Description" -Description: Ce terme est privilégié pour désigner une incapacité persistante et significative subie par une personne dans son environnement. + Ce terme est privilégié pour désigner une incapacité persistante et significative subie par une personne dans son environnement. ### `proprietaires` -Label: Propriétaires +**Label :** Propriétaires ### `public-langues-etrangeres` -Label: Public langues étrangères +**Label :** Public langues étrangères ### `retraites` -Label: Retraités +**Label :** Retraités ### `salaries` -Label: Salariés +**Label :** Salariés ### `sans-domicile-fixe` -Label: Sans domicile fixe +**Label :** Sans domicile fixe ### `seniors-65` -Label: Seniors (+ 65 ans) +**Label :** Seniors (+ 65 ans) ### `sortants-de-detention` -Label: Sortants de détention +**Label :** Sortants de détention ### `surdite` -Label: Surdité +**Label :** Surdité ### `tous-publics` -Label: Tout publics +**Label :** Tout publics ### `victimes` -Label: Victimes +**Label :** Victimes diff --git a/docs/referentiels/thematiques.md b/docs/referentiels/thematiques.md index f7d99fe..c70c730 100644 --- a/docs/referentiels/thematiques.md +++ b/docs/referentiels/thematiques.md @@ -1,1043 +1,1043 @@ ### `acces-aux-droits-et-citoyennete` -Label: Accès aux droits & citoyenneté +**Label :** Accès aux droits & citoyenneté ### `acces-aux-droits-et-citoyennete--accompagnement-dans-les-demarches-administratives` -Label: Accompagnement dans les démarches administratives +**Label :** Accompagnement dans les démarches administratives ### `acces-aux-droits-et-citoyennete--accompagnement-juridique` -Label: Accompagnement juridique +**Label :** Accompagnement juridique ### `acces-aux-droits-et-citoyennete--aide-aux-victimes` -Label: Aide aux victimes +**Label :** Aide aux victimes ### `acces-aux-droits-et-citoyennete--connaitre-ses-droits` -Label: Connaître ses droits +**Label :** Connaître ses droits ### `acces-aux-droits-et-citoyennete--demandeurs-dasile-et-naturalisation` -Label: Demandeurs d’asile et naturalisation +**Label :** Demandeurs d’asile et naturalisation ### `acces-aux-droits-et-citoyennete--developpement-durable` -Label: Développement durable +**Label :** Développement durable ### `acces-aux-droits-et-citoyennete--faciliter-laction-citoyenne` -Label: Faciliter l’action citoyenne +**Label :** Faciliter l’action citoyenne ### `accompagnement-social-et-professionnel-personnalise` -Label: Accompagnement social et professionnel personnalisé +**Label :** Accompagnement social et professionnel personnalisé ### `accompagnement-social-et-professionnel-personnalise--decrochage-scolaire` -Label: Décrochage scolaire +**Label :** Décrochage scolaire ### `accompagnement-social-et-professionnel-personnalise--definition-du-projet-professionnel` -Label: Définition du projet professionnel +**Label :** Définition du projet professionnel ### `accompagnement-social-et-professionnel-personnalise--parcours-d-insertion-socioprofessionnel` -Label: Parcours d’insertion socio-professionnel +**Label :** Parcours d’insertion socio-professionnel ### `apprendre-francais` -Label: Apprendre le Français +**Label :** Apprendre le Français ### `apprendre-francais--accompagnement-insertion-pro` -Label: Accompagnement vers l’insertion professionnelle +**Label :** Accompagnement vers l’insertion professionnelle ### `apprendre-francais--communiquer-vie-tous-les-jours` -Label: Communiquer dans la vie de tous les jours +**Label :** Communiquer dans la vie de tous les jours ### `apprendre-francais--suivre-formation` -Label: Suivre une formation +**Label :** Suivre une formation ### `choisir-un-metier` -Label: Choisir un métier +**Label :** Choisir un métier ### `choisir-un-metier--confirmer-son-choix-de-metier` -Label: Confirmer son choix de métier +**Label :** Confirmer son choix de métier ### `choisir-un-metier--connaitre-les-opportunites-demploi` -Label: Connaître les opportunités d’emploi +**Label :** Connaître les opportunités d’emploi ### `choisir-un-metier--decouvrir-un-metier-ou-un-secteur-dactivite` -Label: Découvrir un métier ou un secteur d’activité +**Label :** Découvrir un métier ou un secteur d’activité ### `choisir-un-metier--identifier-ses-points-forts-et-ses-competences` -Label: Identifier ses points forts et ses compétences +**Label :** Identifier ses points forts et ses compétences ### `creation-activite` -Label: Création d’activité +**Label :** Création d’activité ### `creation-activite--definir-son-projet-de-creation-dentreprise` -Label: Définir son projet de création d’entreprise +**Label :** Définir son projet de création d’entreprise ### `creation-activite--developper-son-entreprise` -Label: Développer son entreprise +**Label :** Développer son entreprise ### `creation-activite--financer-son-projet` -Label: Financer son projet +**Label :** Financer son projet ### `creation-activite--reseautage-pour-createurs-dentreprise` -Label: Réseautage pour créateurs d’entreprise +**Label :** Réseautage pour créateurs d’entreprise ### `creation-activite--structurer-son-projet-de-creation-dentreprise` -Label: Structurer son projet de création d’entreprise +**Label :** Structurer son projet de création d’entreprise ### `equipement-et-alimentation` -Label: Équipement et alimentation +**Label :** Équipement et alimentation ### `equipement-et-alimentation--acces-a-du-materiel-informatique` -Label: Accès à du matériel informatique +**Label :** Accès à du matériel informatique ### `equipement-et-alimentation--acces-a-un-telephone-et-un-abonnement` -Label: Accès à un téléphone et un abonnement +**Label :** Accès à un téléphone et un abonnement ### `equipement-et-alimentation--aide-menagere` -Label: Aide ménagère +**Label :** Aide ménagère ### `equipement-et-alimentation--alimentation` -Label: Alimentation +**Label :** Alimentation ### `equipement-et-alimentation--electromenager` -Label: Électroménager +**Label :** Électroménager ### `equipement-et-alimentation--habillement` -Label: Habillement +**Label :** Habillement ### `famille` -Label: Famille +**Label :** Famille ### `famille--accompagnement-femme-enceinte-bebe-jeune-enfant` -Label: Accompagnement femme enceinte, bébé, jeune enfant +**Label :** Accompagnement femme enceinte, bébé, jeune enfant ### `famille--garde-denfants` -Label: Garde d’enfants +**Label :** Garde d’enfants ### `famille--information-et-accompagnement-des-parents` -Label: Information et accompagnement des parents +**Label :** Information et accompagnement des parents ### `famille--jeunes-sans-soutien-familial` -Label: Jeunes sans soutien familial +**Label :** Jeunes sans soutien familial ### `famille--soutien-a-la-parentalite` -Label: Soutien à la parentalité +**Label :** Soutien à la parentalité ### `famille--soutien-aux-familles` -Label: Soutien aux familles +**Label :** Soutien aux familles ### `famille--violences-intrafamiliales` -Label: Violences intrafamiliales +**Label :** Violences intrafamiliales ### `gestion-financiere` -Label: Gestion financière +**Label :** Gestion financière ### `gestion-financiere--acces-au-micro-credit` -Label: Accès au micro-crédit +**Label :** Accès au micro-crédit ### `gestion-financiere--accompagnement-aux-personnes-en-difficultes-financieres` -Label: Accompagnement aux personnes en difficultés financières +**Label :** Accompagnement aux personnes en difficultés financières ### `gestion-financiere--apprendre-a-gerer-son-budget` -Label: Apprendre à gérer son budget +**Label :** Apprendre à gérer son budget ### `gestion-financiere--beneficier-daides-financieres` -Label: Bénéficier d’aides financières +**Label :** Bénéficier d’aides financières ### `gestion-financiere--creation-et-utilisation-dun-compte-bancaire` -Label: Création et utilisation d’un compte bancaire +**Label :** Création et utilisation d’un compte bancaire ### `gestion-financiere--obtenir-une-aide-alimentaire` -Label: Obtenir une aide alimentaire +**Label :** Obtenir une aide alimentaire ### `gestion-financiere--prevention-et-gestion-du-surendettement` -Label: Prévention et gestion du surendettement +**Label :** Prévention et gestion du surendettement ### `handicap` -Label: Handicap +**Label :** Handicap ### `handicap--accompagnement-par-une-structure-specialisee` -Label: Accompagnement par une structure spécialisée +**Label :** Accompagnement par une structure spécialisée ### `handicap--adaptation-au-poste-de-travail` -Label: Adaptation au poste de travail +**Label :** Adaptation au poste de travail ### `handicap--adapter-son-logement` -Label: Adapter son logement +**Label :** Adapter son logement ### `handicap--aide-a-la-personne` -Label: Aide à la personne en situation de handicap ou malade +**Label :** Aide à la personne en situation de handicap ou malade ### `handicap--connaissance-des-droits-des-travailleurs` -Label: Connaissance des droits des travailleurs +**Label :** Connaissance des droits des travailleurs ### `handicap--faire-reconnaitre-un-handicap` -Label: Faire reconnaître un handicap +**Label :** Faire reconnaître un handicap ### `handicap--favoriser-le-retour-et-le-maintien-dans-lemploi` -Label: Favoriser le retour et le maintien dans l’emploi +**Label :** Favoriser le retour et le maintien dans l’emploi ### `handicap--gerer-le-depart-a-la-retraite-des-personnes-en-situation-de-handicap` -Label: Gérer le départ à la retraite des personnes en situation de handicap +**Label :** Gérer le départ à la retraite des personnes en situation de handicap ### `handicap--mobilite-des-personnes-en-situation-de-handicap` -Label: Mobilité des personnes en situation de handicap +**Label :** Mobilité des personnes en situation de handicap ### `illettrisme` -Label: Illettrisme +**Label :** Illettrisme ### `illettrisme--accompagner-scolarite` -Label: Accompagner la scolarité d’un enfant +**Label :** Accompagner la scolarité d’un enfant ### `illettrisme--ameliorer-vocabulaire` -Label: Améliorer un niveau de vocabulaire +**Label :** Améliorer un niveau de vocabulaire ### `illettrisme--etre-autonome` -Label: Être autonome dans la vie de tous les jours +**Label :** Être autonome dans la vie de tous les jours ### `illettrisme--info-acquisition-connaissances` -Label: Être informé(e) sur l’acquisition des compétences de base +**Label :** Être informé(e) sur l’acquisition des compétences de base ### `illettrisme--permis-conduire` -Label: Passer le permis de conduire +**Label :** Passer le permis de conduire ### `illettrisme--reperer-situation-illettrisme` -Label: Repérer des situations d’illettrisme +**Label :** Repérer des situations d’illettrisme ### `illettrisme--surmonter-trouble-apprentissage` -Label: Surmonter un trouble de l’apprentissage +**Label :** Surmonter un trouble de l’apprentissage ### `illettrisme--trouver-emploi-formation` -Label: Trouver un emploi ou une formation +**Label :** Trouver un emploi ou une formation ### `illettrisme--utiliser-numerique` -Label: Savoir utiliser les outils numériques +**Label :** Savoir utiliser les outils numériques ### `illettrisme--valider-certification-clea` -Label: Valider une certification Cléa +**Label :** Valider une certification Cléa ### `logement-hebergement` -Label: Logement et hébergement +**Label :** Logement et hébergement ### `logement-hebergement--aides-financieres-investissement-locatif` -Label: Aides financières pour l’investissement locatif +**Label :** Aides financières pour l’investissement locatif ### `logement-hebergement--besoin-dadapter-mon-logement` -Label: Besoin d’adapter mon logement +**Label :** Besoin d’adapter mon logement ### `logement-hebergement--connaissance-de-ses-droits-et-interlocuteurs` -Label: Connaissance de ses droits et interlocuteurs +**Label :** Connaissance de ses droits et interlocuteurs ### `logement-hebergement--demenagement` -Label: Déménagement +**Label :** Déménagement ### `logement-hebergement--etre-accompagne-dans-son-projet-accession` -Label: Être accompagné(e) dans son projet d’accession +**Label :** Être accompagné(e) dans son projet d’accession ### `logement-hebergement--etre-accompagne-en cas-de-difficultes-financieres` -Label: Être accompagné(e) en cas de difficultés financières +**Label :** Être accompagné(e) en cas de difficultés financières ### `logement-hebergement--etre-accompagne-pour-se-loger` -Label: Être accompagné(e) pour se loger +**Label :** Être accompagné(e) pour se loger ### `logement-hebergement--financer-son-projet-travaux` -Label: Financer son projet de travaux +**Label :** Financer son projet de travaux ### `logement-hebergement--gerer-son-budget` -Label: Gérer son budget +**Label :** Gérer son budget ### `logement-hebergement--mal-loges-sans-logis` -Label: Mal logé/sans logis +**Label :** Mal logé/sans logis ### `logement-hebergement--probleme-avec-son-logement` -Label: Problème avec son logement +**Label :** Problème avec son logement ### `logement-hebergement--reprendre-un-emploi-ou-une-formation` -Label: Reprendre un emploi ou une formation +**Label :** Reprendre un emploi ou une formation ### `mobilite` -Label: Mobilité +**Label :** Mobilité ### `mobilite--acheter-un-vehicule-motorise` -Label: Acheter un véhicule motorisé +**Label :** Acheter un véhicule motorisé ### `mobilite--acheter-un-velo` -Label: Acheter un vélo +**Label :** Acheter un vélo ### `mobilite--aides-a-la-reprise-demploi-ou-a-la-formation` -Label: Aides à la reprise d’emploi ou à la formation +**Label :** Aides à la reprise d’emploi ou à la formation ### `mobilite--apprendre-a-utiliser-un-deux-roues` -Label: Apprendre à utiliser un deux roues +**Label :** Apprendre à utiliser un deux roues ### `mobilite--comprendre-et-utiliser-les-transports-en-commun` -Label: Comprendre et utiliser les transports en commun +**Label :** Comprendre et utiliser les transports en commun ### `mobilite--entretenir-reparer-son-vehicule` -Label: Entretenir ou réparer son véhicule +**Label :** Entretenir ou réparer son véhicule ### `mobilite--etre-accompagne-dans-son-parcours-mobilite` -Label: Être accompagné(e) dans son parcours mobilité +**Label :** Être accompagné(e) dans son parcours mobilité ### `mobilite--financer-mon-projet-mobilite` -Label: Financer mon projet mobilité +**Label :** Financer mon projet mobilité ### `mobilite--louer-un-vehicule` -Label: Louer un véhicule (voiture, vélo, scooter..) +**Label :** Louer un véhicule (voiture, vélo, scooter..) ### `mobilite--preparer-son-permis-de-conduire-se-reentrainer-a-la-conduite` -Label: Préparer son permis de conduire, se réentraîner à la conduite +**Label :** Préparer son permis de conduire, se réentraîner à la conduite ### `numerique` -Label: Numérique +**Label :** Numérique ### `numerique--acceder-a-du-materiel` -Label: Accéder à du matériel +**Label :** Accéder à du matériel ### `numerique--acceder-a-une-connexion-internet` -Label: Accéder à une connexion internet +**Label :** Accéder à une connexion internet ### `numerique--accompagner-les-demarches-de-sante` -Label: Accompagner les démarches de santé +**Label :** Accompagner les démarches de santé ### `numerique--approfondir-ma-culture-numerique` -Label: Approfondir ma culture numérique +**Label :** Approfondir ma culture numérique ### `numerique--creer-avec-le-numerique` -Label: Créer avec le numérique +**Label :** Créer avec le numérique ### `numerique--creer-et-developper-mon-entreprise` -Label: Créer et développer mon entreprise +**Label :** Créer et développer mon entreprise ### `numerique--devenir-autonome-dans-les-demarches-administratives` -Label: Devenir autonome dans les démarches administratives +**Label :** Devenir autonome dans les démarches administratives ### `numerique--favoriser-mon-insertion-professionnelle` -Label: Favoriser mon insertion professionnelle +**Label :** Favoriser mon insertion professionnelle ### `numerique--prendre-en-main-un-ordinateur` -Label: Prendre en main un ordinateur +**Label :** Prendre en main un ordinateur ### `numerique--prendre-en-main-un-smartphone-ou-une-tablette` -Label: Prendre en main un smartphone ou une tablette +**Label :** Prendre en main un smartphone ou une tablette ### `numerique--promouvoir-la-citoyennete-numerique` -Label: Promouvoir la citoyenneté numérique +**Label :** Promouvoir la citoyenneté numérique ### `numerique--realiser-des-demarches-administratives-avec-un-accompagnement` -Label: Réaliser des démarches administratives avec un accompagnement +**Label :** Réaliser des démarches administratives avec un accompagnement ### `numerique--s-equiper-en-materiel-informatique` -Label: S’équiper en matériel informatique +**Label :** S’équiper en matériel informatique ### `numerique--soutenir-la-parentalite-et-l-education-avec-le-numerique` -Label: Soutenir la parentalité et l’éducation avec le numérique +**Label :** Soutenir la parentalité et l’éducation avec le numérique ### `numerique--utiliser-le-numerique-au-quotidien` -Label: Utiliser le numérique au quotidien +**Label :** Utiliser le numérique au quotidien ### `preparer-sa-candidature` -Label: Préparer sa candidature +**Label :** Préparer sa candidature ### `preparer-sa-candidature--developper-son-reseau` -Label: Développer son réseau +**Label :** Développer son réseau ### `preparer-sa-candidature--organiser-ses-demarches-de-recherche-demploi` -Label: Organiser ses démarches de recherche d’emploi +**Label :** Organiser ses démarches de recherche d’emploi ### `preparer-sa-candidature--realiser-un-cv-et-ou-une-lettre-de-motivation` -Label: Réaliser un CV et/ou une lettre de motivation +**Label :** Réaliser un CV et/ou une lettre de motivation ### `preparer-sa-candidature--valoriser-ses-competences` -Label: Valoriser ses compétences +**Label :** Valoriser ses compétences ### `remobilisation` -Label: Remobilisation +**Label :** Remobilisation ### `remobilisation--bien-etre` -Label: Bien être +**Label :** Bien être ### `remobilisation--decouvrir-son-potentiel-via-le-sport-et-la-culture` -Label: Découvrir son potentiel via le sport et la culture +**Label :** Découvrir son potentiel via le sport et la culture ### `remobilisation--discrimination` -Label: Discrimination +**Label :** Discrimination ### `remobilisation--identifier-ses-competences-et-aptitudes` -Label: Identifier ses compétences et aptitudes +**Label :** Identifier ses compétences et aptitudes ### `remobilisation--lien-social` -Label: Lien social +**Label :** Lien social ### `remobilisation--participer-a-des-actions-solidaires-ou-de-benevolat` -Label: Participer à des actions solidaires ou de bénévolat +**Label :** Participer à des actions solidaires ou de bénévolat ### `remobilisation--pression-sociale` -Label: Pression sociale +**Label :** Pression sociale ### `remobilisation--restaurer-sa-confiance-son-image-de-soi` -Label: Restaurer sa confiance, son image de soi +**Label :** Restaurer sa confiance, son image de soi ### `sante` -Label: Santé +**Label :** Santé ### `sante--acces-aux-soins` -Label: Accès aux soins +**Label :** Accès aux soins ### `sante--accompagnement-de-la-femme-enceinte-du-bebe-et-du-jeune-enfant` -Label: Accompagnement de la femme enceinte, du bébé et du jeune enfant +**Label :** Accompagnement de la femme enceinte, du bébé et du jeune enfant ### `sante--accompagner-les-traumatismes` -Label: Accompagner les traumatismes +**Label :** Accompagner les traumatismes ### `sante--bien-etre-psychologique` -Label: Bien être psychologique +**Label :** Bien être psychologique ### `sante--diagnostic-et-accompagnement-a-lemployabilite` -Label: Diagnostic et accompagnement à l’employabilité +**Label :** Diagnostic et accompagnement à l’employabilité ### `sante--faire-face-a-une-situation-daddiction` -Label: Faire face à une situation d’addiction +**Label :** Faire face à une situation d’addiction ### `sante--obtenir-la-prise-en-charge-de-frais-medicaux` -Label: Obtenir la prise en charge de frais médicaux +**Label :** Obtenir la prise en charge de frais médicaux ### `sante--prevention-et-acces-aux-soins` -Label: Prévention et accès aux soins (vaccination, éducation à la santé, lutte contre la tuberculose…). +**Label :** Prévention et accès aux soins (vaccination, éducation à la santé, lutte contre la tuberculose…). ### `sante--se-soigner-et-prevenir-la-maladie` -Label: Se soigner et prévenir la maladie +**Label :** Se soigner et prévenir la maladie ### `sante--vie-relationnelle-et-affective` -Label: Vie relationnelle et affective, dépistage et prévention des IST/VIH… +**Label :** Vie relationnelle et affective, dépistage et prévention des IST/VIH… ### `se-former` -Label: Se former +**Label :** Se former ### `se-former--monter-son-dossier-de-formation` -Label: Monter son dossier de formation +**Label :** Monter son dossier de formation ### `se-former--trouver-sa-formation` -Label: Trouver sa formation +**Label :** Trouver sa formation ### `se-former--utiliser-le-numerique` -Label: Utiliser le numérique +**Label :** Utiliser le numérique ### `souvrir-a-linternational` -Label: S’ouvrir à l’international +**Label :** S’ouvrir à l’international ### `souvrir-a-linternational--connaitre-les-opportunites-demploi-a-letranger` -Label: Connaître les opportunités d’emploi à l’étranger +**Label :** Connaître les opportunités d’emploi à l’étranger ### `souvrir-a-linternational--sinformer-sur-les-aides-pour-travailler-a-letranger` -Label: S’informer sur les aides pour travailler à l’étranger +**Label :** S’informer sur les aides pour travailler à l’étranger ### `souvrir-a-linternational--sorganiser-suite-a-son-retour-en-france` -Label: S’organiser suite à son retour en France +**Label :** S’organiser suite à son retour en France ### `trouver-un-emploi` -Label: Trouver un emploi +**Label :** Trouver un emploi ### `trouver-un-emploi--convaincre-un-recruteur-en-entretien` -Label: Convaincre un recruteur en entretien +**Label :** Convaincre un recruteur en entretien ### `trouver-un-emploi--faire-des-candidatures-spontanees` -Label: Faire des candidatures spontanées +**Label :** Faire des candidatures spontanées ### `trouver-un-emploi--repondre-a-des-offres-demploi` -Label: Répondre à des offres d’emploi +**Label :** Répondre à des offres d’emploi ### `trouver-un-emploi--suivre-ses-candidatures-et-relancer-les-employeurs` -Label: Suivre ses candidatures et relancer les employeurs +**Label :** Suivre ses candidatures et relancer les employeurs diff --git a/docs/referentiels/typologies_de_services.md b/docs/referentiels/typologies_de_services.md index 2ee90b4..cca833b 100644 --- a/docs/referentiels/typologies_de_services.md +++ b/docs/referentiels/typologies_de_services.md @@ -1,99 +1,121 @@ ### `accompagnement` -Label: Accompagnement +**Label :** Accompagnement -Description: Etre accompagné·e dans ses démarches ou son retour à l’emploi durable +!!! abstract "Description" + + Etre accompagné·e dans ses démarches ou son retour à l’emploi durable ### `accueil` -Label: Accueil +**Label :** Accueil + +!!! abstract "Description" -Description: Lieux d’écoute et d’évaluation des besoins de la personne qui se présente afin de la guider vers le ou les organismes les plus susceptibles de répondre à ses besoins + Lieux d’écoute et d’évaluation des besoins de la personne qui se présente afin de la guider vers le ou les organismes les plus susceptibles de répondre à ses besoins ### `aide-financiere` -Label: Aide financière +**Label :** Aide financière + +!!! abstract "Description" -Description: Prise en charge financière, aide ou rémunération visant à aider une personne à accéder à un service + Prise en charge financière, aide ou rémunération visant à aider une personne à accéder à un service ### `aide-materielle` -Label: Aide materielle +**Label :** Aide materielle -Description: Accéder à du matériel, voiture, vélo, ordinateur, alimentation +!!! abstract "Description" + + Accéder à du matériel, voiture, vélo, ordinateur, alimentation ### `atelier` -Label: Atelier +**Label :** Atelier + +!!! abstract "Description" -Description: Etre accompagné·e dans sa montée en compétence sur un sujet spécifique + Etre accompagné·e dans sa montée en compétence sur un sujet spécifique ### `autonomie` -Label: En autonomie +**Label :** En autonomie + +!!! abstract "Description" -Description: Réaliser des démarches en toute autonomie + Réaliser des démarches en toute autonomie ### `delegation` -Label: Délégation +**Label :** Délégation -Description: Une personne fait les démarches à ma place. +!!! abstract "Description" + + Une personne fait les démarches à ma place. ### `financement` -Label: Financement +**Label :** Financement + +!!! abstract "Description" -Description: Crédit solidaire, prêts à taux zéro pour le financement d’un projet + Crédit solidaire, prêts à taux zéro pour le financement d’un projet ### `formation` -Label: Formation +**Label :** Formation + +!!! abstract "Description" -Description: Formation dispensée par des professionnels pour les bénéficiaires + Formation dispensée par des professionnels pour les bénéficiaires ### `information` -Label: Information +**Label :** Information -Description: Premier niveau d’information apporté par des professionnels du secteur +!!! abstract "Description" + + Premier niveau d’information apporté par des professionnels du secteur ### `numerique` -Label: Service numérique +**Label :** Service numérique + +!!! abstract "Description" -Description: Service en ligne qui renvoi vers un site dédié + Service en ligne qui renvoi vers un site dédié diff --git a/docs/referentiels/typologies_de_structures.md b/docs/referentiels/typologies_de_structures.md index 16c8c54..bcdfd27 100644 --- a/docs/referentiels/typologies_de_structures.md +++ b/docs/referentiels/typologies_de_structures.md @@ -1,637 +1,637 @@ ### `ACI` -Label: Structures porteuses d’ateliers et chantiers d’insertion (ACI) +**Label :** Structures porteuses d’ateliers et chantiers d’insertion (ACI) ### `ACIPHC` -Label: SIAE — Atelier chantier d’insertion premières heures en chantier +**Label :** SIAE — Atelier chantier d’insertion premières heures en chantier ### `AFPA` -Label: Agence nationale pour la formation professionnelle des adultes (AFPA) +**Label :** Agence nationale pour la formation professionnelle des adultes (AFPA) ### `AI` -Label: Associations intermédiaires (AI) +**Label :** Associations intermédiaires (AI) ### `ASE` -Label: Aide sociale à l’enfance (ASE) +**Label :** Aide sociale à l’enfance (ASE) ### `ASSO` -Label: Associations +**Label :** Associations ### `ASSO_CHOMEUR` -Label: Associations de chômeurs +**Label :** Associations de chômeurs ### `AVIP` -Label: Crèche À Vocation d’Insertion Professionnelle (AVIP) +**Label :** Crèche À Vocation d’Insertion Professionnelle (AVIP) ### `Autre` -Label: Autre +**Label :** Autre ### `BIB` -Label: Bibliothèque / Médiathèque +**Label :** Bibliothèque / Médiathèque ### `CAARUD` -Label: CAARUD - Centre d’accueil et d’accompagnement à la réduction de risques pour usagers de drogues +**Label :** CAARUD - Centre d’accueil et d’accompagnement à la réduction de risques pour usagers de drogues ### `CADA` -Label: Centres d’accueil de demandeurs d’asile (CADA) +**Label :** Centres d’accueil de demandeurs d’asile (CADA) ### `CAF` -Label: Caisses d’allocation familiale (CAF) +**Label :** Caisses d’allocation familiale (CAF) ### `CAP_EMPLOI` -Label: Cap Emploi +**Label :** Cap Emploi ### `CAVA` -Label: Centres d’adaptation à la vie active (CAVA) +**Label :** Centres d’adaptation à la vie active (CAVA) ### `CC` -Label: Communautés de Commune +**Label :** Communautés de Commune ### `CCAS` -Label: Centres communaux d’action sociale (CCAS) +**Label :** Centres communaux d’action sociale (CCAS) ### `CCONS` -Label: Chambres consulaires (CCI, CMA, CA) +**Label :** Chambres consulaires (CCI, CMA, CA) ### `CD` -Label: Conseils Départementaux (CD) +**Label :** Conseils Départementaux (CD) ### `CDAS` -Label: Centre Départementale d'Action Sociale (CDAS) +**Label :** Centre Départementale d'Action Sociale (CDAS) ### `CFP` -Label: Centre des Finances Publiques (CFP) +**Label :** Centre des Finances Publiques (CFP) ### `CHRS` -Label: Centres d’hébergement et de réinsertion sociale (CHRS) +**Label :** Centres d’hébergement et de réinsertion sociale (CHRS) ### `CHU` -Label: Centres d’hébergement d’urgence (CHU) +**Label :** Centres d’hébergement d’urgence (CHU) ### `CIAS` -Label: Centres intercommunaux d’action sociale (CIAS) +**Label :** Centres intercommunaux d’action sociale (CIAS) ### `CIDFF` -Label: Centres d’information sur les droits des femmes et des familles (CIDFF) +**Label :** Centres d’information sur les droits des femmes et des familles (CIDFF) ### `CITMET` -Label: Cité des métiers +**Label :** Cité des métiers ### `CMP` -Label: Centre Médico-Psychologique (CMP) +**Label :** Centre Médico-Psychologique (CMP) ### `CMS` -Label: Centre Médico-Social (CMS) +**Label :** Centre Médico-Social (CMS) ### `CPAM` -Label: Caisse Primaire d'Assurance Maladie (CPAM) +**Label :** Caisse Primaire d'Assurance Maladie (CPAM) ### `CPH` -Label: Centres provisoires d’hébergement (CPH) +**Label :** Centres provisoires d’hébergement (CPH) ### `CS` -Label: Centre social +**Label :** Centre social ### `CSAPA` -Label: CSAPA - Centre de soins, d’accompagnement et de prévention en addictologie +**Label :** CSAPA - Centre de soins, d’accompagnement et de prévention en addictologie ### `CSC` -Label: Centre Socio-Culturel (CSC) +**Label :** Centre Socio-Culturel (CSC) ### `DEETS` -Label: Directions de l’Economie, de l’Emploi, du Travail et des Solidarités (DEETS) +**Label :** Directions de l’Economie, de l’Emploi, du Travail et des Solidarités (DEETS) ### `DEPT` -Label: Services sociaux du Conseil départemental +**Label :** Services sociaux du Conseil départemental ### `DIPLP` -Label: Délégation interministérielles à la prévention et à la lutte contre la pauvreté +**Label :** Délégation interministérielles à la prévention et à la lutte contre la pauvreté ### `E2C` -Label: E2C - École de la 2e chance +**Label :** E2C - École de la 2e chance ### `EA` -Label: Entreprise adaptée (EA) +**Label :** Entreprise adaptée (EA) ### `EATT` -Label: Entreprise Adaptée (EATT) +**Label :** Entreprise Adaptée (EATT) ### `EI` -Label: Entreprises d’insertion (EI) +**Label :** Entreprises d’insertion (EI) ### `EITI` -Label: Entreprises d’insertion par le travail indépendant (EITI) +**Label :** Entreprises d’insertion par le travail indépendant (EITI) ### `ENM` -Label: Espace Numérique Mobile (ENM) +**Label :** Espace Numérique Mobile (ENM) ### `EPCI` -Label: Intercommunalité (EPCI) +**Label :** Intercommunalité (EPCI) ### `EPI` -Label: Espace Public Internet (EPI) +**Label :** Espace Public Internet (EPI) ### `EPIDE` -Label: EPIDE - Établissement pour l’insertion dans l’emploi +**Label :** EPIDE - Établissement pour l’insertion dans l’emploi ### `EPN` -Label: Espace Public Numérique (EPN) +**Label :** Espace Public Numérique (EPN) ### `ES` -Label: Épicerie Solidaire +**Label :** Épicerie Solidaire ### `ESS` -Label: Entreprise de l’Économie Sociale et Solidaire +**Label :** Entreprise de l’Économie Sociale et Solidaire ### `ETABL_PRI` -Label: Établissement privé +**Label :** Établissement privé ### `ETABL_PUB` -Label: Établissement public +**Label :** Établissement public ### `ETAT` -Label: Service de l'État +**Label :** Service de l'État ### `ETTI` -Label: Entreprises de travail temporaire d’insertion (ETTI) +**Label :** Entreprises de travail temporaire d’insertion (ETTI) ### `EVS` -Label: Espace de Vie Sociale (EVS) +**Label :** Espace de Vie Sociale (EVS) ### `FABLAB` -Label: Fablab / Atelier partagé +**Label :** Fablab / Atelier partagé ### `FAIS` -Label: Fédérations d’acteurs de l’insertion et de la solidarité +**Label :** Fédérations d’acteurs de l’insertion et de la solidarité ### `FT` -Label: France Travail +**Label :** France Travail ### `GEIQ` -Label: Groupements d’employeurs pour l’insertion et la qualification (GEIQ) +**Label :** Groupements d’employeurs pour l’insertion et la qualification (GEIQ) ### `HUDA` -Label: HUDA - Hébergement d’urgence pour demandeurs d’asile +**Label :** HUDA - Hébergement d’urgence pour demandeurs d’asile ### `LA_POSTE` -Label: Bureau de poste / Agence postale +**Label :** Bureau de poste / Agence postale ### `MDE` -Label: Maison de l’emploi +**Label :** Maison de l’emploi ### `MDEF` -Label: Maison de l’emploi et de la formation +**Label :** Maison de l’emploi et de la formation ### `MDPH` -Label: Maison Départementale des Personnes Handicapées +**Label :** Maison Départementale des Personnes Handicapées ### `MDS` -Label: Maison Départementale des Solidarités +**Label :** Maison Départementale des Solidarités ### `MJC` -Label: Maison des jeunes et de la culture +**Label :** Maison des jeunes et de la culture ### `ML` -Label: Mission Locale +**Label :** Mission Locale ### `MQ` -Label: Maison de quartier +**Label :** Maison de quartier ### `MSA` -Label: Mutualité Sociale Agricole +**Label :** Mutualité Sociale Agricole ### `MSAP` -Label: Maison de Services Au Public (MSAP) +**Label :** Maison de Services Au Public (MSAP) ### `MUNI` -Label: Municipalités +**Label :** Municipalités ### `OACAS` -Label: Structures agréées Organisme d’accueil communautaire et d’activité solidaire (OACAS) +**Label :** Structures agréées Organisme d’accueil communautaire et d’activité solidaire (OACAS) ### `ODC` -Label: Organisation délégataire d’un CD +**Label :** Organisation délégataire d’un CD ### `OF` -Label: Organisme de formations +**Label :** Organisme de formations ### `OIL` -Label: Opérateur d’intermédiation locative +**Label :** Opérateur d’intermédiation locative ### `OPCS` -Label: Organisation porteuse de la clause sociale +**Label :** Organisation porteuse de la clause sociale ### `PAD` -Label: Point d’Accès au Droit +**Label :** Point d’Accès au Droit ### `PENSION` -Label: Pension de famille / résidence accueil +**Label :** Pension de famille / résidence accueil ### `PI` -Label: Point Information (PI) +**Label :** Point Information (PI) ### `PIJ_BIJ` -Label: Points et bureaux information jeunesse (PIJ/BIJ) +**Label :** Points et bureaux information jeunesse (PIJ/BIJ) ### `PIMMS` -Label: Point Information Médiation Multi Services (PIMMS) +**Label :** Point Information Médiation Multi Services (PIMMS) ### `PJJ` -Label: Protection judiciaire de la jeunesse (PJJ) +**Label :** Protection judiciaire de la jeunesse (PJJ) ### `PLIE` -Label: Plans locaux pour l’insertion et l’emploi (PLIE) +**Label :** Plans locaux pour l’insertion et l’emploi (PLIE) ### `PREF` -Label: Préfecture, Sous-Préfecture +**Label :** Préfecture, Sous-Préfecture ### `PREVENTION` -Label: Service ou club de prévention +**Label :** Service ou club de prévention ### `REG` -Label: Région +**Label :** Région ### `RESSOURCERIE` -Label: Ressourcerie +**Label :** Ressourcerie ### `RFS` -Label: Réseau France Services +**Label :** Réseau France Services ### `RS_FJT` -Label: Résidence sociale / FJT - Foyer de Jeunes Travailleurs +**Label :** Résidence sociale / FJT - Foyer de Jeunes Travailleurs ### `SCP` -Label: Services et clubs de prévention +**Label :** Services et clubs de prévention ### `SPIP` -Label: Services pénitentiaires d’insertion et de probation (SPIP) +**Label :** Services pénitentiaires d’insertion et de probation (SPIP) ### `TIERS_LIEUX` -Label: Tiers lieu & coworking +**Label :** Tiers lieu & coworking ### `UDAF` -Label: Union Départementale d’Aide aux Familles (UDAF) +**Label :** Union Départementale d’Aide aux Familles (UDAF) diff --git a/docs/schema.md b/docs/schema.md deleted file mode 100644 index e274926..0000000 --- a/docs/schema.md +++ /dev/null @@ -1,973 +0,0 @@ -!!! info "Les champs marqués d'une astérisque (*) sont obligatoires." - - - -### `id` * - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `structure_id` * - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `source` * - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `nom` * - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `presentation_resume` - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `presentation_detail` - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `types` - - - - - -Type : `array[string]` - - - - - - - - - - -Valeurs acceptées : voir les [TypologieService](typologie_service.md) - - - - - - ---- - - -### `thematiques` - - - - - -Type : `array[string]` - - - - - - - - - - -Valeurs acceptées : voir les [Thematique](thematique.md) - - - - - - ---- - - -### `prise_rdv` - - - - - -Type : `string` - - - -Format : `uri` - - - - - - - - ---- - - -### `frais` - - - - - -Type : `array[string]` - - - - - - - - - - -Valeurs acceptées : `"gratuit", "gratuit-sous-conditions", "payant", "adhesion", "pass-numerique"` - - - - - - ---- - - -### `frais_autres` - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `profils` - - - - - -Type : `array[string]` - - - - - - - - - - -Valeurs acceptées : voir les [Profil](profil.md) - - - - - - ---- - - -### `profils_precisions` - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `pre_requis` - - - - - -Type : `array` - - - - - - - - - - - - ---- - - -### `cumulable` - - - - - -Type : `boolean` - - - - - - - - - - - - ---- - - -### `justificatifs` - - - - - -Type : `array` - - - - - - - - - - - - ---- - - -### `formulaire_en_ligne` - - - - - -Type : `string` - - - -Format : `uri` - - - - - - - - ---- - - -### `commune` - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `code_postal` - - - - - -Type : `string` - - - - - -Regex : `^\d{5}$` - - - - - - ---- - - -### `code_insee` - - - - - -Type : `string` - - - - - -Regex : `^\w{5}$` - - - - - - ---- - - -### `adresse` - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `complement_adresse` - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `longitude` - - - - - -Type : `number` - - - - - - - - - - - - ---- - - -### `latitude` - - - - - -Type : `number` - - - - - - - - - - - - ---- - - -### `recurrence` - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `date_creation` - - - - - -Type : `string` - - - -Format : `date` - - - - - - - - ---- - - -### `date_suspension` - - - - - -Type : `string` - - - -Format : `date` - - - - - - - - ---- - - -### `lien_source` - - - - - -Type : `string` - - - -Format : `uri` - - - - - - - - ---- - - -### `telephone` - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `courriel` - - - - - -Type : `string` - - - -Format : `email` - - - - - - - - ---- - - -### `contact_public` - - - - - -Type : `boolean` - - - - - - - - - - - - ---- - - -### `date_maj` - - - - - -Type : `string` - - - -Format : `date | date-time` - - - - - - - - ---- - - -### `modes_accueil` - - - - - -Type : `array[string]` - - - - - - - - - - -Valeurs acceptées : `"a-distance", "en-presentiel"` - - - - - - ---- - - -### `zone_diffusion_type` - - - - - -Type : `string` - - - - - - - - - - -Valeurs acceptées : `"commune", "epci", "region", "departement", "pays"` - - - - - - ---- - - -### `zone_diffusion_code` - - - - - -Type : `string` - - - - - -Regex : `^\d{9}$ | ^\w{2,3}$ | ^\w{5}$ | ^\d{2}$` - - - - - - ---- - - -### `zone_diffusion_nom` - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `contact_nom_prenom` - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `page_web` - -Lien vers une page web dédiée au service sur le site web de la structure. Ce champ n'est pas destiné à recevoir un lien vers le site d'un producteur de donnée. - - - -Type : `string` - - - -Format : `uri` - - - - - - -Exemples : - -```json -"https://insersol.fr/biclou-atelier-reparation-participatif-solidaire/" - -``` - - - ---- - - -### `modes_orientation_beneficiaire` - - - - - -Type : `array[string]` - - - - - - - - - - -Valeurs acceptées : voir les [ModeOrientationBeneficiaire](mode_orientation_beneficiaire.md) - - - - - - ---- - - -### `modes_orientation_beneficiaire_autres` - - - - - -Type : `string` - - - - - - - - - - - - ---- - - -### `modes_orientation_accompagnateur` - - - - - -Type : `array[string]` - - - - - - - - - - -Valeurs acceptées : voir les [ModeOrientationAccompagnateur](mode_orientation_accompagnateur.md) - - - - - - ---- - - -### `modes_orientation_accompagnateur_autres` - - - - - -Type : `string` - - - - - - - - - - - - ---- diff --git a/mkdocs.yml b/mkdocs.yml index 592c520..1c1a299 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,19 +1,21 @@ -site_name: My Docs -site_url: https://mydomain.org/mysite +site_name: Schéma data·inclusion +site_url: https://gip-inclusion.github.io/data-inclusion-schema/ theme: name: material + logo: assets/DataInclusion-Monogramme-Blanc.png + favicon: assets/DataInclusion-Monogramme-Couleur.png nav: - Accueil: index.md - Structure: structure.md - Service: service.md - - Referentiels: - - Thematiques: referentiels/thematiques.md + - Référentiel: + - Thématiques: referentiels/thematiques.md - Labels nationaux: referentiels/labels_nationaux.md - - Modes orientation accompagnateur: referentiels/modes_orientation_accompagnateur.md - - Modes orientation beneficiaire: referentiels/modes_orientation_beneficiaire.md + - Modes d'orientation accompagnateur: referentiels/modes_orientation_accompagnateur.md + - Modes d'orientation bénéficiaire: referentiels/modes_orientation_beneficiaire.md - Profils: referentiels/profils.md - Typologies de services: referentiels/typologies_de_services.md - - Typologie de structures: referentiels/typologies_de_structures.md + - Typologies de structures: referentiels/typologies_de_structures.md markdown_extensions: - pymdownx.superfences - admonition