diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 11d5d0b3311322840ddc77d01effbec58f8cdc79..d88345c89f7a997feca27126dbad3d28c3bb3ad5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,6 +4,11 @@ workflow: when: never - when: always + + + + + # Functions that should be executed before the build script is run variables: @@ -15,6 +20,8 @@ variables: # prod HOST_PROD: 'defense-finder.pasteur.cloud' MEILI_HOST_PROD: 'defense-finder-meilisearch.pasteur.cloud' + PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" + cache: @@ -26,6 +33,7 @@ cache: stages: - delete-release - build-df-cli + - lint - get-data - deploy-meilisearch - update-meilisearch-indexes @@ -43,9 +51,17 @@ stages: # Build df-wiki-cli package +.df-wiki-cli-run: + image: python:3.11-bullseye + cache: # Pip's cache doesn't store the python packages + paths: # https://pip.pypa.io/en/stable/topics/caching/ + - .cache/pip + before_script: + - pip install df-wiki-cli --index-url https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.pasteur.fr/api/v4/projects/5222/packages/pypi/simple + build:df-wiki-cli: - stage: build-df-cli image: python:3.11-bullseye + stage: build-df-cli before_script: - cd packages/df-wiki-cli/ - pip install poetry @@ -61,10 +77,8 @@ build:df-wiki-cli: - echo "Build done ..." - poetry publish --repository gitlab --skip-existing - echo "Publishing done!" - rules: - - changes: - - packages/df-wiki-cli/**/*.{py, toml} # ... or whatever your file extension is - allow_failure: false + when: manual + allow_failure: true ################ DEPLOY MEILISEARCH ################# .deploy:meilisearch: @@ -163,15 +177,23 @@ delete-meili-helm-release:prod: - helm delete -n ${NAMESPACE} ${CI_PROJECT_NAME}-${CI_ENVIRONMENT_NAME}-meilisearch +# lint + +lint: + extends: .df-wiki-cli-run + stage: lint + script: + - cd content/3.defense-systems + - find . -name '*.md' ! -name '0.index.md' -print0 | xargs -0 -I {} df-wiki-cli content lint --file {} + when: manual + # Update Meili search indexes .update-meilisearch-index: + extends: .df-wiki-cli-run stage: update-meilisearch-indexes - image: python:3.11-bullseye variables: MEILI_HOST: "http://localhost:7700" - before_script: - - pip install df-wiki-cli --index-url https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.pasteur.fr/api/v4/projects/5222/packages/pypi/simple script: - > df-wiki-cli @@ -212,12 +234,10 @@ update-meilisearch-index:prod: ############# get-meili-key ############### .set-meili-env: - image: python:3.11-bullseye + extends: .df-wiki-cli-run stage: get-meili-key variables: MEILI_HOST: "http://localhost:7700" - before_script: - - pip install df-wiki-cli --index-url https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.pasteur.fr/api/v4/projects/5222/packages/pypi/simple script: - > df-wiki-cli @@ -249,10 +269,8 @@ set-meili-env:prod: ############################## get-zotero: - image: python:3.11-bullseye + extends: .df-wiki-cli-run stage: get-data - before_script: - - pip install df-wiki-cli --index-url https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.pasteur.fr/api/v4/projects/5222/packages/pypi/simple script: - df-wiki-cli articles --key ${ZOTERO_API_KEY} --output public/articles.json artifacts: @@ -261,18 +279,16 @@ get-zotero: rules: - if: $CI_COMMIT_BRANCH == "main" -get-pfam: - image: python:3.11-bullseye - stage: get-data - before_script: - - pip install df-wiki-cli --index-url https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.pasteur.fr/api/v4/projects/5222/packages/pypi/simple - script: - - df-wiki-cli pfam --output public/pfam-a-hmm.csv - artifacts: - paths: - - public/pfam-a-hmm.csv -# rules: -# - if: $CI_COMMIT_BRANCH == "main" +# get-pfam: +# extends: .df-wiki-cli-run +# stage: get-data +# script: +# - df-wiki-cli pfam --output public/pfam-a-hmm.csv +# artifacts: +# paths: +# - public/pfam-a-hmm.csv + # rules: + # - if: $CI_COMMIT_BRANCH == "main" @@ -303,7 +319,7 @@ build:dev:wiki: extends: .build needs: - set-meili-env:dev - - get-pfam + # - get-pfam variables: BASE_URL: /wiki/ rules: @@ -315,7 +331,7 @@ build:prod:wiki: needs: - set-meili-env:prod - get-zotero - - get-pfam + # - get-pfam variables: BASE_URL: /wiki/ rules: diff --git a/content/3.defense-systems/bunzi.md b/content/3.defense-systems/bunzi.md index fe6f66fecf8cdd51bab3386c066b6e815f13bd5f..54138d5816bf90dbac4544fd876617ebc3e0ba0a 100644 --- a/content/3.defense-systems/bunzi.md +++ b/content/3.defense-systems/bunzi.md @@ -12,7 +12,7 @@ tableColumns: contributors: - Aude Bernheim relevantAbstracts: - - doi:10.1016/j.chom.2022.09.017 + - doi: 10.1016/j.chom.2022.09.017 --- # Bunzi diff --git a/content/3.defense-systems/gabija.md b/content/3.defense-systems/gabija.md index df8a8f7254dc6f9679db7fbfe0c48774ef58a380..b8f9aee15bd99f816f32a9354fbfc2e373d5e6ee 100644 --- a/content/3.defense-systems/gabija.md +++ b/content/3.defense-systems/gabija.md @@ -10,18 +10,28 @@ tableColumns: Activator: Direct Effector: Degrading nucleic acids PFAM: PF00580, PF11398, PF13175, PF13245, PF13304, PF13361, PF13476 +contributors: + - Nathalie Bechon +relevantAbstracts: + - doi: 10.1093/nar/gkab277 + - doi: 10.1126/science.aar4120 + - doi: 10.1016/j.chom.2023.06.014 + - doi: 10.1101/2023.05.01.538945 + - doi: 10.1101/2023.05.01.538930 --- # Gabija -## Description -According to recent studies, GajA is a sequence-specific DNA nicking endonuclease, whose activity is inhibited by nucleotide concentration. Accordingly, GajA would be fully inhibited at cellular nucleotides concentrations. It was hypothesized that upon nucleotide depletion during phage infection, GajA would become activated (2). +## Description -Another study suggests that the *gajB* gene could encode for an NTPase, which would form a complex with GajA to achieve anti-phage defense (3). +Gabija is named after the Lithuanian spirit of fire, protector of home and family. It is a two gene defense system found in 8.5% of the 4360 bacterial and archeal genomes that were initially analyzed :ref{doi=10.1126/science.aar4120}. Both proteins are necessary for defense and are forming a heteromeric octamer complex: GajA forms a central tetramer surrounded by two GajB dimers ref:{doi=10.1101/2023.05.01.538945,10.1093/nar/gkad951}. A phage protein inhibiting Gabija function was described, Gabidja anti defense 1 (Gad1) :ref{doi=10.1101/2023.05.01.538945,10.1101/2023.05.01.538930}. ## Molecular mechanism -The precise mechanism of the Gabija system remains to be fully described, yet studies suggest that it could act either as a nucleic acid degrading system or as an abortive infection system. +The precise mechanism of the Gabija system remains to be fully described, yet studies suggest that it could act through a dual phage inhibition mechanism. +GajA was shown to be a sequence-specific DNA nicking endonuclease, whose activity is inhibited by nucleotide concentration. This nucleotide sensing is mediated by GajA ATPase-like domain. Accordingly, GajA would be fully inhibited at cellular nucleotides concentrations. It was hypothesized that upon nucleotide depletion during phage infection, GajA would become activated :ref{doi=10.1093/nar/gkab277}. +Moreover, a later study suggests that the *gajB* gene encode an NTPase, which would form a complex with GajA to achieve anti-phage defense. GajB is activated by DNA termini produced by GajA activity and then hydrolyzes (d)A/(d)GTP, depleting essential nucleotides and increasing GajA activity :ref{doi=10.1016/j.chom.2023.06.014}. +Therefore, both proteins would be cooperating to achieve both nucleotide depletion and DNA cleavage, causing abortive infection. ## Example of genomic structure @@ -105,14 +115,3 @@ end style Title3 fill:none,stroke:none,stroke-width:none style Title4 fill:none,stroke:none,stroke-width:none </mermaid> -## Relevant abstracts - -::relevant-abstracts ---- -items: - - doi: 10.1093/nar/gkab277 - - doi: 10.1126/science.aar4120 - ---- -:: - diff --git a/content/3.defense-systems/nixi.md b/content/3.defense-systems/nixi.md index 37bd0096b578ba84e9ccb778081b96574f7a33e3..6b4704c0c05cbdaca3d4e4853cc3f1e7379a26e6 100644 --- a/content/3.defense-systems/nixi.md +++ b/content/3.defense-systems/nixi.md @@ -3,15 +3,25 @@ title: NixI layout: article tableColumns: article: - doi: 10.1101/2021.07.12.452122 + doi: 10.1093/nar/gkac002 abstract: | - PLEs are phage parasites integrated into the chromosome of epidemic Vibrio cholerae. In response to infection by its viral host ICP1, PLE excises, replicates and hijacks ICP1 structural components for transduction. Through an unknown mechanism PLE prevents ICP1 from transitioning to rolling circle replication (RCR), a prerequisite for efficient packaging of the viral genome. Here, we characterize a PLE-encoded nuclease, NixI, that blocks phage development likely by nicking ICP1’s genome as it transitions to RCR. NixI-dependent cleavage sites appear in ICP1’s genome during infection of PLE(+) V. cholerae. Purified NixI demonstrates in vitro specificity for sites in ICP1’s genome and NixI activity is enhanced by a putative specificity determinant co-expressed with NixI during phage infection. Importantly, NixI is sufficient to limit ICP1 genome replication and eliminate progeny production. We identify distant NixI homologs in an expanded family of putative phage satellites in Vibrios that lack nucleotide homology to PLEs but nonetheless share genomic synteny with PLEs. More generally, our results reveal a previously unknown mechanism deployed by phage parasites to limit packaging of their viral hosts’ genome and highlight the prominent role of nuclease effectors as weapons in the arms race between antagonizing genomes. + PLEs (phage-inducible chromosomal island-like elements) are phage parasites integrated into the chromosome of epidemic Vibrio cholerae. In response to infection by its viral host ICP1, PLE excises, replicates and hijacks ICP1 structural components for transduction. Through an unknown mechanism, PLE prevents ICP1 from transitioning to rolling circle replication (RCR), a prerequisite for efficient packaging of the viral genome. Here, we characterize a PLE-encoded nuclease, NixI, that blocks phage development likely by nicking ICP1’s genome as it transitions to RCR. NixI-dependent cleavage sites appear in ICP1’s genome during infection of PLE(+) V. cholerae. Purified NixI demonstrates in vitro nuclease activity specifically for sites in ICP1’s genome and we identify a motif that is necessary for NixI-mediated cleavage. Importantly, NixI is sufficient to limit ICP1 genome replication and eliminate progeny production, representing the most inhibitory PLE-encoded mechanism revealed to date. We identify distant NixI homologs in an expanded family of putative phage parasites in vibrios that lack nucleotide homology to PLEs but nonetheless share genomic synteny with PLEs. More generally, our results reveal a previously unknown mechanism deployed by phage parasites to limit packaging of their viral hosts’ genome and highlight the prominent role of nuclease effectors as weapons in the arms race between antagonizing genomes. Sensor: Unknown Activator: Unknown Effector: Nucleic acid degrading +contributors: + - Marian Dominguez Mirazo +relevantAbstracts: + - doi: 10.1093/nar/gkac002 --- # NixI +## Description +Phage-inducible chromosomal island-like elements (PLEs) are chromosomally-integrated phage parasites described in *Vibrio cholerae* :ref{doi=10.7554/eLife.53200}. PLEs excise in response to infection by phage ICP1 and halt its progeny production. PLE halts ICP1 infection by means of redirecting virion packaging and interfiring with ICP1 genome replication :ref{doi=10.1093/nar/gkz1005}. NixI is a PLE-encoded nuclease that nicks the ICP1 genome at specific sites preventing transition to the rolling circle replication (RCR) :ref{doi=10.1093/nar/gkac002}. + +## Molecular mechanisms +The NixI endonuclease cleaves the ICP1 genome at the GNAANCTT motif :ref{doi=10.1093/nar/gkac002}. It creates nicks and does not cause double stranded breaks ref:{doi=10.1093/nar/gkac002}. + ## Example of genomic structure The NixI system is composed of 2 proteins: NixI and, Stix. @@ -67,12 +77,3 @@ end style Title3 fill:none,stroke:none,stroke-width:none style Title4 fill:none,stroke:none,stroke-width:none </mermaid> -## Relevant abstracts - -::relevant-abstracts ---- -items: - - doi: 10.1101/2021.07.12.452122 - ---- -:: diff --git a/content/3.defense-systems/pd-lambda-1.md b/content/3.defense-systems/pd-lambda-1.md index 4d1dd64a46710df95c293b9b3d668bd700618ddc..cf9aa0a4969da1bbb0b8bdd40dae4376ea232b2f 100644 --- a/content/3.defense-systems/pd-lambda-1.md +++ b/content/3.defense-systems/pd-lambda-1.md @@ -10,9 +10,23 @@ tableColumns: Activator: Unknown Effector: Unknown PFAM: PF10544, PF13250, PF13455 +contributors: + - Alba Herrero del Valle +relevantAbstracts: + - doi: 10.1038/s41564-022-01219-4 + --- # PD-Lambda-1 + +## Description + +The PD-Lambda-1 system is composed of one protein, PD-Lambda-1, and confers resistance to LambdaVir :ref{doi=10.1038/s41564-022-01219-4}. + +## Molecular mechanism + +As far as we are aware, the molecular mechanism is unknown. + ## Example of genomic structure The PD-Lambda-1 system is composed of one protein: PD-Lambda-1. @@ -68,13 +82,5 @@ end style Title3 fill:none,stroke:none,stroke-width:none style Title4 fill:none,stroke:none,stroke-width:none </mermaid> -## Relevant abstracts - -::relevant-abstracts ---- -items: - - doi: 10.1038/s41564-022-01219-4 ---- -:: diff --git a/content/3.defense-systems/pd-t4-7.md b/content/3.defense-systems/pd-t4-7.md index 3cab5dd3f132644ba4801bccf79e5840452717d1..b3871a3e40356b1d9976c7b662833039f9a90278 100644 --- a/content/3.defense-systems/pd-t4-7.md +++ b/content/3.defense-systems/pd-t4-7.md @@ -9,9 +9,23 @@ tableColumns: Sensor: Unknown Activator: Unknown Effector: Unknown +contributors: + - Ernest Mordret +relevantAbstracts: + - doi: 10.1038/s41564-022-01219-4 --- # PD-T4-7 + +## Description + +PD-T4-7 is a single gene system. Its protein contains a RelE domain and a phage Sheath. +protect against T2,T4,T6 + +## Molecular mechanism + +Vassalo et al. :ref{doi=10.1038/s41564-022-01219-4} state that PD-T4-7 functions through an abortive infection mechanism + ## Example of genomic structure The PD-T4-7 system is composed of one protein: PD-T4-7. @@ -69,12 +83,3 @@ end style Title3 fill:none,stroke:none,stroke-width:none style Title4 fill:none,stroke:none,stroke-width:none </mermaid> -## Relevant abstracts - -::relevant-abstracts ---- -items: - - doi: 10.1038/s41564-022-01219-4 - ---- -:: diff --git a/content/3.defense-systems/psyrta.md b/content/3.defense-systems/psyrta.md index 140db84251e537b86a26346d65de7eb6902ad3d7..71dfcf0d3636dee93c08db238f2bfe59c62e37c0 100644 --- a/content/3.defense-systems/psyrta.md +++ b/content/3.defense-systems/psyrta.md @@ -10,9 +10,41 @@ tableColumns: Activator: Unknown Effector: Unknown PFAM: PF00270, PF00271, PF02481, PF04851, PF18306 +contributors: + - Ernest Mordret +relevantAbstracts: + - doi: 10.1016/j.chom.2022.09.017 + - doi: 10.1016/j.molcel.2013.02.002 + - doi: 10.1371/journal.ppat.1005317 --- # PsyrTA + +## Description + +Originally found in a high throughput shotgun cloning of bacterial fragments in E. coli looking for Toxin-Antitoxin pairs. PsyrTA is composed of two proteins, PsyrT, the toxin, is a RecQ family DNA helicase, and PsyrA, the antitoxin, was shown to be a Nucleotide-binding protein. Note that that system is sometimes called RqlHI :ref{doi=10.1371/journal.ppat.1005317}, where RqlH refers to PsyrT and RqlI to PsyrA + +## Molecular mechanisms + +from :ref{doi=10.1016/j.molcel.2013.02.002} : + +> The psyrT shares homology with domains of the RecQ helicase, +> a family of proteins implicated in DNA repair (Bernstein et al., +> 2010); and the antitoxin of the same system, psyrA, has a nucle- +> otide binding domain (COG0758) that was previously described +> in proteins involved in DNA uptake + + +from :ref{doi=10.1016/j.chom.2022.09.017} : + +> Both systems encode an antitoxin +> with homology to DprA, a single-stranded DNA (ssDNA)-binding +> protein known to be involved in DNA transformation (Mortier- +> Barrière et al., 2007). The toxin contains a phosphoribosyl trans- +> ferase (PRTase) domain, which was previously found in effectors +> of retron abortive infection systems " + + ## Example of genomic structure The PsyrTA system is composed of 2 proteins: PsyrT and, PsyrA. @@ -77,14 +109,5 @@ end style Title3 fill:none,stroke:none,stroke-width:none style Title4 fill:none,stroke:none,stroke-width:none </mermaid> -## Relevant abstracts - -::relevant-abstracts ---- -items: - - doi: 10.1016/j.chom.2022.09.017 - - doi: 10.1016/j.molcel.2013.02.002 - ---- :: diff --git a/content/3.defense-systems/sefir.md b/content/3.defense-systems/sefir.md index fb73b3e68949a190225801dc2a259221cfcfc26e..dfae1a2285aa0ecb1fcfb18c8607df785c9d0c44 100644 --- a/content/3.defense-systems/sefir.md +++ b/content/3.defense-systems/sefir.md @@ -10,16 +10,26 @@ tableColumns: Activator: Unknown Effector: Unknown PFAM: PF08357, PF13676 +contributors: + - Helena Shomar + - Marie Guillaume +relevantAbstracts: + - doi: 10.1016/j.chom.2022.09.017 + - doi: 10.1016/S0968-0004(03)00067-7 + --- # SEFIR ## Description -The SEFIR defense system is composed of a single bacterial SEFIR (bSEFIR)-domain protein. bSEFIR-domain genes were identified in bacterial genomes, were shown to be enriched in defense islands and the activity of the defense system was first experimentally validated in *Bacillus sp.* NIO-1130 against phage phi29 [1]. +The SEFIR defense system is composed of a single bacterial SEFIR (bSEFIR)-domain protein. bSEFIR-domain genes were identified in bacterial genomes, were shown to be enriched in defense islands and the activity of the defense system was first experimentally validated in *Bacillus sp.* NIO-1130 against phage Phi29 :ref{doi=10.1016/j.chom.2022.09.017}. + +Bacterial SEFIR domains were named after their eukaryotic homologs which were already known to be part of several eukayrotic immune proteins (e.g. SEFs and Interleukin-17 Receptors):ref{doi=10.1016/S0968-0004(03)00067-7}. + +Homologs of SEFIR domain proteins were also found in archaeal species : _Methanosarcina barkeri_ and _Methanosarcina mazei_ :ref{doi=10.1016/j.chom.2022.09.017}. -Bacterial SEFIR domains were named after their eukaryotic homologs which were already known to be part of several eukayrotic immune proteins (e.g. SEFs and Interleukin-17 Receptors) [2]. ## Molecular mechanism -SEFIR was shown to protect against phage infection through an abortive infection mechanism *via* NAD+ depletion. This is similar to what can be observed in other defense systems containing a TIR domain which shares homology with the SEFIR domain (in eukaryotes, both domains are part of the STIR super family) [1]. +SEFIR was shown to protect against phage infection through an abortive infection mechanism *via* NAD+ depletion. This is similar to what can be observed in other defense systems containing a TIR domain which shares homology with the SEFIR domain (in eukaryotes, both domains are part of the STIR super family) :ref{doi=10.1016/j.chom.2022.09.017}. ## Example of genomic structure @@ -76,18 +86,5 @@ end style Title3 fill:none,stroke:none,stroke-width:none style Title4 fill:none,stroke:none,stroke-width:none </mermaid> -## Relevant abstracts - -::relevant-abstracts ---- -items: - - doi: 10.1016/j.chom.2022.09.017 - ---- -:: - -## References -[1] Millman, A. et al. An expanded arsenal of immune systems that protect bacteria from phages. Cell Host Microbe 30, 1556-1569.e5 (2022). -[2] Novatchkova, M., Leibbrandt, A., Werzowa, J., Neubüser, A., & Eisenhaber, F. (2003). The STIR-domain superfamily in signal transduction, development and immunity. _Trends in biochemical sciences_, _28_(5), 226-229. diff --git a/packages/df-wiki-cli/df_wiki_cli/content/__init__.py b/packages/df-wiki-cli/df_wiki_cli/content/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/packages/df-wiki-cli/df_wiki_cli/content/main.py b/packages/df-wiki-cli/df_wiki_cli/content/main.py new file mode 100644 index 0000000000000000000000000000000000000000..b869c6680935000cb1025d9f01b0e3caba6eb534 --- /dev/null +++ b/packages/df-wiki-cli/df_wiki_cli/content/main.py @@ -0,0 +1,78 @@ +import typer +import sys +from typing_extensions import Annotated +from typing import Optional, List +from pathlib import Path +from pydantic import BaseModel, ValidationError +import frontmatter +from enum import Enum +from rich.console import Console +from rich import print as rprint +from rich.layout import Layout +from rich.panel import Panel + + +console = Console() +app = typer.Typer() + + +class LayoutEnum(str, Enum): + article = "article" + db = "db" + + +class TableArticle(BaseModel): + doi: str + + +class TableColumns(BaseModel): + article: TableArticle + Sensor: str + Activator: str + Effector: str + PFAM: str + + +class RelevantAbstract(BaseModel): + doi: str + + +class FrontMatter(BaseModel): + title: str + layout: LayoutEnum + tableColumns: TableColumns + relevantAbstracts: List[RelevantAbstract] + contributors: List[str] + + +@app.command() +def lint( + file: Annotated[ + Path, + typer.Option( + exists=False, + file_okay=True, + writable=True, + ), + ], +): + console.rule(f"[bold blue]{file.name}", style="blue") + + with open(file) as f: + metadata, _ = frontmatter.parse(f.read()) + # print(metadata) + try: + FrontMatter.model_validate(metadata) + except ValidationError as exc: + # print(repr(exc.errors()[0]["type"])) + # print(repr(exc)) + # print(exc.errors()) + # pprint(exc.errors(), expand_all=True) + for err in exc.errors(): + console.print( + f"[red]{err['msg']} : {err['type']} {' -> '.join([str(l) for l in err['loc']])}" + ) + # raise + sys.exit(1) + else: + console.print("[green] Everything is alright") diff --git a/packages/df-wiki-cli/df_wiki_cli/main.py b/packages/df-wiki-cli/df_wiki_cli/main.py index b825d4341eb7abab051d900cbdfa44825703a53c..ace7d2e92bbc20738e98c10a7a882fe23523a121 100644 --- a/packages/df-wiki-cli/df_wiki_cli/main.py +++ b/packages/df-wiki-cli/df_wiki_cli/main.py @@ -3,11 +3,13 @@ from pathlib import Path from typing_extensions import Annotated from df_wiki_cli.articles import fetch_articles from df_wiki_cli.pfam import fetch_pfam -from df_wiki_cli.meilisearch import main +from df_wiki_cli.meilisearch import main as ms_main +from df_wiki_cli.content import main as content_main # from df_wiki_cli.ms import main as ms_main app = typer.Typer() -app.add_typer(main.app, name="meilisearch") +app.add_typer(ms_main.app, name="meilisearch") +app.add_typer(content_main.app, name="content") @app.callback() diff --git a/packages/df-wiki-cli/poetry.lock b/packages/df-wiki-cli/poetry.lock index 824af785fdb3029922717e5d6f05659b9cdfc5c1..95e4ca23f7e387c02a6506294ccee8110f161c08 100644 --- a/packages/df-wiki-cli/poetry.lock +++ b/packages/df-wiki-cli/poetry.lock @@ -241,6 +241,25 @@ files = [ {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, ] +[[package]] +name = "importlib-metadata" +version = "6.8.0" +description = "Read metadata from Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "importlib_metadata-6.8.0-py3-none-any.whl", hash = "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb"}, + {file = "importlib_metadata-6.8.0.tar.gz", hash = "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"}, +] + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +perf = ["ipython"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] + [[package]] name = "markdown-it-py" version = "3.0.0" @@ -588,6 +607,27 @@ files = [ [package.dependencies] typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" +[[package]] +name = "pydantic-yaml" +version = "1.2.0" +description = "Adds some YAML functionality to the excellent `pydantic` library." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic_yaml-1.2.0-py3-none-any.whl", hash = "sha256:196cd4286a66cbe913bcc2e463251cb6b73ebe5ac9c8af2ceed0b1c72ddc03a2"}, + {file = "pydantic_yaml-1.2.0.tar.gz", hash = "sha256:54bdaf4da25bca95bb9ba790b1a5c6b4b3e93f7cf218fcde46b3073b61779f81"}, +] + +[package.dependencies] +importlib-metadata = "*" +pydantic = ">=1.8" +"ruamel.yaml" = ">=0.16.0,<0.18.0" +typing-extensions = ">=4.5.0" + +[package.extras] +dev = ["black (==23.3.0)", "mypy (==1.5.1)", "pre-commit (==2.21.0)", "pytest (==7.4.2)", "ruff (==0.0.291)", "setuptools (>=61.0.0)", "setuptools-scm[toml] (>=6.2)"] +docs = ["mkdocs", "mkdocs-material", "mkdocstrings[python]", "pygments", "pymdown-extensions"] + [[package]] name = "pygments" version = "2.16.1" @@ -630,6 +670,24 @@ files = [ [package.dependencies] six = ">=1.5" +[[package]] +name = "python-frontmatter" +version = "1.0.1" +description = "Parse and manage posts with YAML (or other) frontmatter" +optional = false +python-versions = "*" +files = [ + {file = "python-frontmatter-1.0.1.tar.gz", hash = "sha256:a6a082844fc601f34e4dd576bed8fcb5ef19112166e087629e4d6ba9bf4f7c35"}, + {file = "python_frontmatter-1.0.1-py3-none-any.whl", hash = "sha256:0599198cc01b445e5d0be74ff35be0a6c7442dddbdb0803e018be4e055397f6a"}, +] + +[package.dependencies] +PyYAML = "*" + +[package.extras] +docs = ["sphinx"] +test = ["pyaml", "pytest", "toml"] + [[package]] name = "pytz" version = "2023.3.post1" @@ -641,6 +699,65 @@ files = [ {file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"}, ] +[[package]] +name = "pyyaml" +version = "6.0.1" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.6" +files = [ + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, +] + [[package]] name = "pyzotero" version = "1.5.18" @@ -700,6 +817,83 @@ pygments = ">=2.13.0,<3.0.0" [package.extras] jupyter = ["ipywidgets (>=7.5.1,<9)"] +[[package]] +name = "ruamel-yaml" +version = "0.17.40" +description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" +optional = false +python-versions = ">=3" +files = [ + {file = "ruamel.yaml-0.17.40-py3-none-any.whl", hash = "sha256:b16b6c3816dff0a93dca12acf5e70afd089fa5acb80604afd1ffa8b465b7722c"}, + {file = "ruamel.yaml-0.17.40.tar.gz", hash = "sha256:6024b986f06765d482b5b07e086cc4b4cd05dd22ddcbc758fa23d54873cf313d"}, +] + +[package.dependencies] +"ruamel.yaml.clib" = {version = ">=0.2.7", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.13\""} + +[package.extras] +docs = ["mercurial (>5.7)", "ryd"] +jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] + +[[package]] +name = "ruamel-yaml-clib" +version = "0.2.8" +description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" +optional = false +python-versions = ">=3.6" +files = [ + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b42169467c42b692c19cf539c38d4602069d8c1505e97b86387fcf7afb766e1d"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:07238db9cbdf8fc1e9de2489a4f68474e70dffcb32232db7c08fa61ca0c7c462"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fff3573c2db359f091e1589c3d7c5fc2f86f5bdb6f24252c2d8e539d4e45f412"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_24_aarch64.whl", hash = "sha256:aa2267c6a303eb483de8d02db2871afb5c5fc15618d894300b88958f729ad74f"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:840f0c7f194986a63d2c2465ca63af8ccbbc90ab1c6001b1978f05119b5e7334"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:024cfe1fc7c7f4e1aff4a81e718109e13409767e4f871443cbff3dba3578203d"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win32.whl", hash = "sha256:c69212f63169ec1cfc9bb44723bf2917cbbd8f6191a00ef3410f5a7fe300722d"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win_amd64.whl", hash = "sha256:cabddb8d8ead485e255fe80429f833172b4cadf99274db39abc080e068cbcc31"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bef08cd86169d9eafb3ccb0a39edb11d8e25f3dae2b28f5c52fd997521133069"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:b16420e621d26fdfa949a8b4b47ade8810c56002f5389970db4ddda51dbff248"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:25c515e350e5b739842fc3228d662413ef28f295791af5e5110b543cf0b57d9b"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_24_aarch64.whl", hash = "sha256:1707814f0d9791df063f8c19bb51b0d1278b8e9a2353abbb676c2f685dee6afe"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:46d378daaac94f454b3a0e3d8d78cafd78a026b1d71443f4966c696b48a6d899"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:09b055c05697b38ecacb7ac50bdab2240bfca1a0c4872b0fd309bb07dc9aa3a9"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win32.whl", hash = "sha256:53a300ed9cea38cf5a2a9b069058137c2ca1ce658a874b79baceb8f892f915a7"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win_amd64.whl", hash = "sha256:c2a72e9109ea74e511e29032f3b670835f8a59bbdc9ce692c5b4ed91ccf1eedb"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ebc06178e8821efc9692ea7544aa5644217358490145629914d8020042c24aa1"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:edaef1c1200c4b4cb914583150dcaa3bc30e592e907c01117c08b13a07255ec2"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d176b57452ab5b7028ac47e7b3cf644bcfdc8cacfecf7e71759f7f51a59e5c92"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_24_aarch64.whl", hash = "sha256:1dc67314e7e1086c9fdf2680b7b6c2be1c0d8e3a8279f2e993ca2a7545fecf62"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3213ece08ea033eb159ac52ae052a4899b56ecc124bb80020d9bbceeb50258e9"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aab7fd643f71d7946f2ee58cc88c9b7bfc97debd71dcc93e03e2d174628e7e2d"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win32.whl", hash = "sha256:5c365d91c88390c8d0a8545df0b5857172824b1c604e867161e6b3d59a827eaa"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win_amd64.whl", hash = "sha256:1758ce7d8e1a29d23de54a16ae867abd370f01b5a69e1a3ba75223eaa3ca1a1b"}, + {file = "ruamel.yaml.clib-0.2.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a5aa27bad2bb83670b71683aae140a1f52b0857a2deff56ad3f6c13a017a26ed"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c58ecd827313af6864893e7af0a3bb85fd529f862b6adbefe14643947cfe2942"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_12_0_arm64.whl", hash = "sha256:f481f16baec5290e45aebdc2a5168ebc6d35189ae6fea7a58787613a25f6e875"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_24_aarch64.whl", hash = "sha256:77159f5d5b5c14f7c34073862a6b7d34944075d9f93e681638f6d753606c6ce6"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7f67a1ee819dc4562d444bbafb135832b0b909f81cc90f7aa00260968c9ca1b3"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4ecbf9c3e19f9562c7fdd462e8d18dd902a47ca046a2e64dba80699f0b6c09b7"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:87ea5ff66d8064301a154b3933ae406b0863402a799b16e4a1d24d9fbbcbe0d3"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win32.whl", hash = "sha256:75e1ed13e1f9de23c5607fe6bd1aeaae21e523b32d83bb33918245361e9cc51b"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win_amd64.whl", hash = "sha256:3f215c5daf6a9d7bbed4a0a4f760f3113b10e82ff4c5c44bec20a68c8014f675"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1b617618914cb00bf5c34d4357c37aa15183fa229b24767259657746c9077615"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:a6a9ffd280b71ad062eae53ac1659ad86a17f59a0fdc7699fd9be40525153337"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:305889baa4043a09e5b76f8e2a51d4ffba44259f6b4c72dec8ca56207d9c6fe1"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:700e4ebb569e59e16a976857c8798aee258dceac7c7d6b50cab63e080058df91"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:e2b4c44b60eadec492926a7270abb100ef9f72798e18743939bdbf037aab8c28"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e79e5db08739731b0ce4850bed599235d601701d5694c36570a99a0c5ca41a9d"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win32.whl", hash = "sha256:955eae71ac26c1ab35924203fda6220f84dce57d6d7884f189743e2abe3a9fbe"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win_amd64.whl", hash = "sha256:56f4252222c067b4ce51ae12cbac231bce32aee1d33fbfc9d17e5b8d6966c312"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:03d1162b6d1df1caa3a4bd27aa51ce17c9afc2046c31b0ad60a0a96ec22f8001"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba64af9fa9cebe325a62fa398760f5c7206b215201b0ec825005f1b18b9bccf"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:a1a45e0bb052edf6a1d3a93baef85319733a888363938e1fc9924cb00c8df24c"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:da09ad1c359a728e112d60116f626cc9f29730ff3e0e7db72b9a2dbc2e4beed5"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:184565012b60405d93838167f425713180b949e9d8dd0bbc7b49f074407c5a8b"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a75879bacf2c987c003368cf14bed0ffe99e8e85acfa6c0bfffc21a090f16880"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win32.whl", hash = "sha256:84b554931e932c46f94ab306913ad7e11bba988104c5cff26d90d03f68258cd5"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win_amd64.whl", hash = "sha256:25ac8c08322002b06fa1d49d1646181f0b2c72f5cbc15a85e80b4c30a544bb15"}, + {file = "ruamel.yaml.clib-0.2.8.tar.gz", hash = "sha256:beb2e0404003de9a4cab9753a8805a8fe9320ee6673136ed7f04255fe60bb512"}, +] + [[package]] name = "sgmllib3k" version = "1.0.0" @@ -795,7 +989,22 @@ secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17. socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] +[[package]] +name = "zipp" +version = "3.17.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +optional = false +python-versions = ">=3.8" +files = [ + {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, + {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] + [metadata] lock-version = "2.0" python-versions = ">=3.11,<3.13" -content-hash = "eb33b534eafe8f673727680af356d1c796bc952e091a17618eea68b81deea73d" +content-hash = "c9d8bd4f2e93c88fa1a35ac2920570b033a8066b17dc2580f1544d807a94372e" diff --git a/packages/df-wiki-cli/pyproject.toml b/packages/df-wiki-cli/pyproject.toml index b73bacdc54951e6b83c19b69e84c6508efc5c7f0..1ff1b2b8909fc0236c9f68a81efd98cf468e9638 100644 --- a/packages/df-wiki-cli/pyproject.toml +++ b/packages/df-wiki-cli/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "df-wiki-cli" -version = "0.1.0" +version = "0.1.1" description = "" authors = ["Remi PLANEL <rplanel@pasteur.fr>"] readme = "README.md" @@ -15,6 +15,8 @@ pandas = "^2.1.2" requests = "^2.31.0" meilisearch = "^0.28.4" pydantic = "^2.4.2" +pydantic-yaml = "^1.2.0" +python-frontmatter = "^1.0.1" [tool.poetry.group.dev.dependencies] @@ -26,4 +28,4 @@ requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" [tool.poetry.scripts] -df-wiki-cli = "df_wiki_cli.main:app" \ No newline at end of file +df-wiki-cli = "df_wiki_cli.main:app"