From b2b74d99fd17dbf076c7423333761bdfdec4ae34 Mon Sep 17 00:00:00 2001 From: Luiz Irber Date: Tue, 13 Feb 2024 21:40:46 -0800 Subject: [PATCH] deploy docs scaffold --- docs/conf.py | 3 +- docs/deploy.md | 74 +++++++++++++++++ docs/index.md | 2 + docs/requirements.txt | 1 + flake.nix | 1 + pixi.lock | 182 ++++++++++++++++++++++++++++-------------- pixi.toml | 15 +++- tox.ini | 21 +++++ 8 files changed, 235 insertions(+), 64 deletions(-) create mode 100644 docs/deploy.md create mode 100644 tox.ini diff --git a/docs/conf.py b/docs/conf.py index 25b7ec4..511fb84 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -25,7 +25,8 @@ "myst_parser", "sphinx_copybutton", "sphinx_design", - "sphinx_inline_tabs" + "sphinx_inline_tabs", + "sphinxcontrib.mermaid" ] templates_path = ['_templates'] diff --git a/docs/deploy.md b/docs/deploy.md new file mode 100644 index 0000000..fad0df8 --- /dev/null +++ b/docs/deploy.md @@ -0,0 +1,74 @@ +# Deploying a new branchwater instance + +Deploying a new `branchwater` instance involves bringing up a couple of components: +- `branchwater-web`, the web frontend at [https://branchwater.sourmash.bio](https://branchwater.sourmash.bio) +- `branchwater-server`, the backend serving the RocksDB inverted index for sourmash signatures +- a [mongo](https://www.mongodb.com/) database for the SRA metadata used for + `branchwater-web` results + +A diagram of how these components are connected: + +::: {mermaid} +graph LR; +classDef server fill:#4A902A,stroke:#333,stroke-width:4px,color:#fff; +classDef web fill:#dc6c11,stroke:#333,stroke-width:4px,color:#fff; +classDef index fill:#3c48cc,stroke:#333,stroke-width:4px,color:#fff; +classDef mongodb fill:#6980e9,stroke:#333,stroke-width:4px,color:#fff; +classDef client fill:#8450e1,stroke:#333,stroke-width:4px,color:#fff; + +A01(browser):::client --> B01(web):::web +B01 --> C01(server):::server +B01 --> D01[(mongo)]:::mongodb +C01 --> E01[(index)]:::index +::: + +Be it for development or production usage, +a [`docker-compose`](https://docs.docker.com/compose/) +configuration is [available in the repo](https://github.com/sourmash-bio/branchwater/blob/main/docker-compose.yml) +that can bring up these components in the appropriate order. + +## Bringing up branchwater with demo dataset + +### Clone the repo + +``` +git clone https://github.com/sourmash-bio/branchwater +``` + +### Set up dependencies + +``` +pixi shell + +``` + +### The demo dataset + +``` +cat buildmongo/sra.runinfo.csv +``` +(will probably move this into `experiments/` instead?) + +### Download signatures and prepare search index + +``` +pixi run index +``` + +### Bring up mongo for data loading + +``` +podman-compose up -d mongodb +``` + +### Download the SRA metadata from bigquery and load into mongo + +``` +pixi run metadata +``` + +### Bring up search index and web frontend + +``` +podman-compose up -d +``` diff --git a/docs/index.md b/docs/index.md index 5a9923b..e4d28f5 100644 --- a/docs/index.md +++ b/docs/index.md @@ -11,6 +11,8 @@ hide-toc: true ```{toctree} :hidden: + +deploy ``` ```{toctree} diff --git a/docs/requirements.txt b/docs/requirements.txt index 60bc06c..4537a85 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -4,3 +4,4 @@ sphinx-copybutton sphinx-design sphinx-inline-tabs sphinx-tabs +sphinxcontrib-mermaid diff --git a/flake.nix b/flake.nix index 99293f0..a1f0248 100644 --- a/flake.nix +++ b/flake.nix @@ -190,6 +190,7 @@ sphinx-design sphinx-inline-tabs sphinx-tabs + tox ])) ] ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security diff --git a/pixi.lock b/pixi.lock index 72aba81..0b3aace 100644 --- a/pixi.lock +++ b/pixi.lock @@ -5,17 +5,49 @@ environments: - url: https://conda.anaconda.org/conda-forge/ - url: https://conda.anaconda.org/bioconda/ packages: {} - snakemake: + deploy: channels: - url: https://conda.anaconda.org/conda-forge/ - url: https://conda.anaconda.org/bioconda/ packages: linux-64: - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-8.4.3-hdfd78af_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hd590300_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.2.2-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-h41732ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.5.0-hcb278e6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h807b86a_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.45.1-h2797004_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-hd590300_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.4-h59595ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.2.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.1-hab00c5b_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-4_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py312h98912ed_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/podman-compose-1.0.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + prepare: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.anaconda.org/bioconda/ + packages: + linux-64: + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-8.4.8-hdfd78af_0.tar.bz2 - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-common-1.15.3-pyhdfd78af_0.tar.bz2 - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-executor-plugins-8.2.0-pyhdfd78af_0.tar.bz2 - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-storage-plugins-3.0.0-pyhdfd78af_0.tar.bz2 - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-8.4.3-pyhdfd78af_0.tar.bz2 + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-8.4.8-pyhdfd78af_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h30efb56_1.conda @@ -43,14 +75,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-21_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.26-pthreads_h413a1c8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.44.2-h2797004_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.45.1-h2797004_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-hd590300_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.5-py312h98912ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.4-h59595ed_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.3-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.2.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.0-py312hfb8ada1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.8-py312h98912ed_0.conda @@ -69,7 +101,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/argparse-dataclass-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attmap-0.13.2-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-23.2.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2023.11.17-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/coincbc-2.10.10-0_metapackage.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 @@ -104,7 +136,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2023.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.33.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda @@ -112,8 +144,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-69.0.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/slack-sdk-3.26.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/slack_sdk-3.26.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/slack-sdk-3.27.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/slack_sdk-3.27.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/smart_open-6.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/stopit-1.1.2-py_0.tar.bz2 @@ -284,18 +316,18 @@ packages: timestamp: 1706843687645 - kind: conda name: certifi - version: 2023.11.17 + version: 2024.2.2 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/certifi-2023.11.17-pyhd8ed1ab_0.conda - sha256: afa22b77128a812cb57bc707c297d926561bd225a3d9dd74205d87a3b2d14a96 - md5: 2011bcf45376341dd1d690263fdbc789 + url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.2.2-pyhd8ed1ab_0.conda + sha256: f1faca020f988696e6b6ee47c82524c7806380b37cfdd1def32f92c326caca54 + md5: 0876280e409658fc6f9e75d035960333 depends: - python >=3.7 license: ISC - size: 158939 - timestamp: 1700303562512 + size: 160559 + timestamp: 1707022289175 - kind: conda name: charset-normalizer version: 3.3.2 @@ -1001,18 +1033,18 @@ packages: timestamp: 1704950143521 - kind: conda name: libsqlite - version: 3.44.2 + version: 3.45.1 build: h2797004_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.44.2-h2797004_0.conda - sha256: ee2c4d724a3ed60d5b458864d66122fb84c6ce1df62f735f90d8db17b66cd88a - md5: 3b6a9f225c3dbe0d24f4fedd4625c5bf + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.45.1-h2797004_0.conda + sha256: 1b379d1c652b25d0540251d422ef767472e768fd36b77261045e97f9ba6d3faa + md5: fc4ccadfbf6d4784de88c41704792562 depends: - libgcc-ng >=12 - libzlib >=1.2.13,<1.3.0a0 license: Unlicense - size: 845830 - timestamp: 1700863204572 + size: 859346 + timestamp: 1707495156652 - kind: conda name: libstdcxx-ng version: 13.2.0 @@ -1170,12 +1202,12 @@ packages: timestamp: 1698751260967 - kind: conda name: numpy - version: 1.26.3 + version: 1.26.4 build: py312heda63a1_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.3-py312heda63a1_0.conda - sha256: 6390aadc421c1059f8361d11e9127eb5b6ea38bda74d27abc696536f4bbb12b0 - md5: 8b63634568b70ed9110f4d03dca20988 + url: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 @@ -1188,8 +1220,8 @@ packages: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD - size: 7491807 - timestamp: 1704280741972 + size: 7484186 + timestamp: 1707225809722 - kind: conda name: openssl version: 3.2.1 @@ -1324,6 +1356,23 @@ packages: license_family: MIT size: 23384 timestamp: 1706116931972 +- kind: conda + name: podman-compose + version: 1.0.6 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/podman-compose-1.0.6-pyhd8ed1ab_0.conda + sha256: 43315af2ca8f11387f6d8d4da426f24b10253586cd77765124cf47110f0b95a1 + md5: b670e2d683a55794e791633f68ede856 + depends: + - python >=3.5 + - python-dotenv + - pyyaml + license: GPL-2.0-only + license_family: GPL + size: 43937 + timestamp: 1681059468664 - kind: conda name: psutil version: 5.9.8 @@ -1474,6 +1523,21 @@ packages: license_family: APACHE size: 245987 timestamp: 1626286448716 +- kind: conda + name: python-dotenv + version: 1.0.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + sha256: 2d4c80364f03315d606a50eddd493dbacc078e21412c2462c0f781eec49b572c + md5: c2997ea9360ac4e015658804a7a84f94 + depends: + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + size: 24278 + timestamp: 1706018281544 - kind: conda name: python-fastjsonschema version: 2.19.1 @@ -1491,19 +1555,19 @@ packages: timestamp: 1703781171097 - kind: conda name: python-tzdata - version: '2023.4' + version: '2024.1' build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2023.4-pyhd8ed1ab_0.conda - sha256: d2381037bf362c78654a8ece0e0f54715e09113448ddd7ed837f688536cbf176 - md5: c79cacf8a06a51552fc651652f170208 + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + sha256: 9da9a849d53705dee450b83507df1ca8ffea5f83bd21a215202221f1c492f8ad + md5: 98206ea9954216ee7540f0c773f2104d depends: - python >=3.6 license: Apache-2.0 license_family: APACHE - size: 146007 - timestamp: 1703878849208 + size: 144024 + timestamp: 1707747742930 - kind: conda name: python_abi version: '3.12' @@ -1687,34 +1751,34 @@ packages: timestamp: 1620240338595 - kind: conda name: slack-sdk - version: 3.26.2 + version: 3.27.0 build: pyha770c72_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/slack-sdk-3.26.2-pyha770c72_0.conda - sha256: 8d7a9659e4d9912db590cb6d6ae7c6ebd5e72db0539329beca0e93a4d1b63562 - md5: 92e17f98cf7d1eb53cef3e5260cbab89 + url: https://conda.anaconda.org/conda-forge/noarch/slack-sdk-3.27.0-pyha770c72_0.conda + sha256: d55f004f21ddc3ffd7830c8170732a0e938f8e0e67f0cfb723901650a3a8beef + md5: 72a30cb842d392cd5169b8b952e962f6 depends: - python >=3.6 license: MIT license_family: MIT - size: 144399 - timestamp: 1704787366538 + size: 145842 + timestamp: 1707808462213 - kind: conda name: slack_sdk - version: 3.26.2 + version: 3.27.0 build: hd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/slack_sdk-3.26.2-hd8ed1ab_0.conda - sha256: ca1f575dc1239eac5e43b6e8f19485d58827a46bbfda1f3ba3e2de1cea736f23 - md5: 3eff2de31b65488b59faf5fc5b020c24 + url: https://conda.anaconda.org/conda-forge/noarch/slack_sdk-3.27.0-hd8ed1ab_0.conda + sha256: 6cc2c7de14e94ce5df8d26e35d22079df4f14c5273c1dbcc77006858f434867a + md5: e809bc71c98d1ebddd018dee3c0a61c7 depends: - - slack-sdk 3.26.2 pyha770c72_0 + - slack-sdk 3.27.0 pyha770c72_0 license: MIT license_family: MIT - size: 6428 - timestamp: 1704787376372 + size: 6375 + timestamp: 1707808472526 - kind: conda name: smart_open version: 6.4.0 @@ -1747,23 +1811,23 @@ packages: timestamp: 1634310465482 - kind: conda name: snakemake - version: 8.4.3 + version: 8.4.8 build: hdfd78af_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/bioconda/noarch/snakemake-8.4.3-hdfd78af_0.tar.bz2 - sha256: 10673ea4587f175294bb9a56cbd2152e4f8cebe9f8dcfd672d0fde5f09943b06 - md5: 1b9ffa8e999583d9d85a0afdee9338ea + url: https://conda.anaconda.org/bioconda/noarch/snakemake-8.4.8-hdfd78af_0.tar.bz2 + sha256: b8871807298e71f3e98f662c13c78283abf877dd46e9916722c18043d1107c78 + md5: 833308b3e7e943eb12ff956373e15cc3 depends: - eido - pandas - peppy - pygments - slack_sdk - - snakemake-minimal 8.4.3.* + - snakemake-minimal 8.4.8.* license: MIT - size: 8780 - timestamp: 1706873388154 + size: 8792 + timestamp: 1707499493195 - kind: conda name: snakemake-interface-common version: 1.15.3 @@ -1819,13 +1883,13 @@ packages: timestamp: 1702992209726 - kind: conda name: snakemake-minimal - version: 8.4.3 + version: 8.4.8 build: pyhdfd78af_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-8.4.3-pyhdfd78af_0.tar.bz2 - sha256: edc55cd5712d6c251a3fe0e18876b4fbc89bff543ce7a86c7b25fe52d40bac58 - md5: 721c6163ed5f3f6a139456570f346bf3 + url: https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-8.4.8-pyhdfd78af_0.tar.bz2 + sha256: f75a50c3651ad0636cba6cf80ee9a16832cce07f4149f7cd0aab25467c809ca6 + md5: b7174e4f0a1eed5f3379356e9f6a69d3 depends: - appdirs - conda-inject >=1.3.1,<2.0 @@ -1858,8 +1922,8 @@ packages: - wrapt - yte >=1.5.1,<2.0 license: MIT - size: 210904 - timestamp: 1706873376343 + size: 214427 + timestamp: 1707499481467 - kind: conda name: stopit version: 1.1.2 diff --git a/pixi.toml b/pixi.toml index c734739..d863f04 100644 --- a/pixi.toml +++ b/pixi.toml @@ -3,13 +3,20 @@ name = "branchwater" channels = ["conda-forge", "bioconda"] platforms = ["linux-64"] +[environments] +prepare = ["prepare"] +deploy = ["deploy"] + [dependencies] [feature.prepare.tasks] -snakemake = { cmd = ["snakemake"] } +index = { cmd = ["snakemake"] } +metadata = { cmd = ["podman-compose", + "exec", "mongo", + "python3", "/docker-entrypoint-initdb.d/bqtomongo.py"] } [feature.prepare.dependencies] -snakemake = "*" +snakemake = ">=8,<9" -[environments] -snakemake = ["prepare"] +[feature.deploy.dependencies] +podman-compose = "*" diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..c339563 --- /dev/null +++ b/tox.ini @@ -0,0 +1,21 @@ +[tox] +isolated_build = true +skip_missing_interpreters = true +env_list = + docs, +min_version = 3.27 + +[testenv:docs] +description = invoke sphinx-build to build the HTML docs +basepython = python3.11 +deps = + -r docs/requirements.txt +commands = + sphinx-build -d "{toxworkdir}/docs_doctree" docs "{toxworkdir}/docs_out" --color -bhtml {posargs} + python -c 'import pathlib; print("documentation available under file://\{0\}".format(pathlib.Path(r"{toxworkdir}") / "docs_out" / "index.html"))' +allowlist_externals = pandoc +change_dir = {toxinidir} +pass_env = + HOME + LC_ALL + LOCALE_*