From aafd9792af95b047cbcc9d111d61e3a4bd74971f Mon Sep 17 00:00:00 2001 From: Graham Hudgins Date: Thu, 5 Sep 2024 17:27:37 -0400 Subject: [PATCH 01/12] docs: add fish to examples (#633) Inspired by https://discourse.flox.dev/t/how-can-i-make-fish-my-default-shell-without-a-nest-of-shells/949/7 --------- Co-authored-by: Zach Mitchell --- docs/tutorials/layering-multiple-environments.md | 6 +++++- docs/tutorials/sharing-environments.md | 8 ++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/docs/tutorials/layering-multiple-environments.md b/docs/tutorials/layering-multiple-environments.md index dc68a10..e9d2e75 100644 --- a/docs/tutorials/layering-multiple-environments.md +++ b/docs/tutorials/layering-multiple-environments.md @@ -80,10 +80,14 @@ flox [default] $ vim ~/.zshrc Add the following line to the bottom of the file: -``` bash +``` bash title="For bash .bashrc or zsh .zshrc" eval "$(flox activate --dir ~)" ``` +``` fish title="For fish config.fish" +eval (flox activate --dir=$HOME) | source +``` + Save and exit the file. Open a new terminal window and you should see the `default` environment is now active! diff --git a/docs/tutorials/sharing-environments.md b/docs/tutorials/sharing-environments.md index 5000f7f..329b660 100644 --- a/docs/tutorials/sharing-environments.md +++ b/docs/tutorials/sharing-environments.md @@ -142,12 +142,16 @@ Edit your rc file using an editor of choice. $ vim ~/.zshrc ``` -Append this line to your rc file at the bottom. +Append this line to your shell's rc file or `fish.config` at the bottom. -``` console +``` bash title="For bash .bashrc or zsh .zshrc" eval "$(flox activate -r youruser/example-project)" ``` +``` fish title="For fish config.fish" +eval (flox activate -r youruser/example-project) | source +``` + Don't forget to open a new terminal window or, for zsh, reload your RC file. ``` console $ source ~/.zshrc From 5332c76e4018dd71ee46fa1c7b32cdc6e6a88169 Mon Sep 17 00:00:00 2001 From: Rok Garbas Date: Fri, 30 Aug 2024 17:30:25 +0200 Subject: [PATCH 02/12] feat: floxify --- .envrc | 51 +- .flox/.gitignore | 4 + .flox/env.json | 4 + .flox/env/manifest.lock | 1185 ++++++++++++++++++++++++++++++++++++++ .flox/env/manifest.toml | 159 +++++ .github/workflows/ci.yml | 48 +- README.md | 26 +- check_links.sh | 11 + docs/install-flox.md | 12 +- docs/tutorials/ci-cd.md | 61 ++ flake.lock | 443 -------------- flake.nix | 155 ----- mkdocs.yml | 1 + pyproject.toml | 1 + tesh.sh | 11 + 15 files changed, 1518 insertions(+), 654 deletions(-) create mode 100644 .flox/.gitignore create mode 100644 .flox/env.json create mode 100644 .flox/env/manifest.lock create mode 100644 .flox/env/manifest.toml create mode 100755 check_links.sh create mode 100644 docs/tutorials/ci-cd.md delete mode 100644 flake.lock delete mode 100644 flake.nix create mode 100755 tesh.sh diff --git a/.envrc b/.envrc index 3550a30..35788f5 100644 --- a/.envrc +++ b/.envrc @@ -1 +1,50 @@ -use flake +# Usage: use_flox [...] +# +# Loads the environment variables from a Flox envrionment +# By default, uses the ".flox" directory to load the envrionment from +# You can also specify a remote envrionment as follows +# +# ``` +# use_flox --remote=/ +# ``` +# or +# ``` +# use_flox --trust --remote=/ +# ``` +# +# Where / is the name of the remote environment on FloxHub +# +# You can also specify another directory to load the environment from +# +# ``` +# use_flox --dir= +# ``` +# +# Where is the path to a directory containing a ".flox" directory +# +# Custom commands aren't supported, since we use the `flox activate` command to dump and load the environment +# +function use_flox() { + if [[ ! -d ".flox" ]]; then + printf "direnv(use_flox): \`.flox\` directory not found\n" >&2 + printf "direnv(use_flox): Did you run \`flox init\` in this directory?\n" >&2 + return 1 + fi + + echo "" + echo "Loading \`floxdocs\` environment ..." + echo "" + + direnv_load flox activate "$@" -- "$direnv" dump + + if [[ $# == 0 ]]; then + watch_dir ".flox/env/" + watch_file ".flox/env.json" + watch_file ".flox/env.lock" + fi +} + +use_flox + +watch_file "pyproject.toml" +watch_file "poetry.lock" diff --git a/.flox/.gitignore b/.flox/.gitignore new file mode 100644 index 0000000..15d71a1 --- /dev/null +++ b/.flox/.gitignore @@ -0,0 +1,4 @@ +run/ +cache/ +lib/ +log/ diff --git a/.flox/env.json b/.flox/env.json new file mode 100644 index 0000000..590eb0f --- /dev/null +++ b/.flox/env.json @@ -0,0 +1,4 @@ +{ + "name": "floxdocs", + "version": 1 +} \ No newline at end of file diff --git a/.flox/env/manifest.lock b/.flox/env/manifest.lock new file mode 100644 index 0000000..39c6ae2 --- /dev/null +++ b/.flox/env/manifest.lock @@ -0,0 +1,1185 @@ +{ + "lockfile-version": 1, + "manifest": { + "version": 1, + "install": { + "coreutils": { + "pkg-path": "coreutils" + }, + "findutils": { + "pkg-path": "findutils" + }, + "gnused": { + "pkg-path": "gnused" + }, + "gnutar": { + "pkg-path": "gnutar" + }, + "lychee": { + "pkg-path": "lychee" + }, + "pandoc": { + "pkg-path": "pandoc" + }, + "pngquant": { + "pkg-path": "pngquant" + }, + "poetry": { + "pkg-path": "poetry" + }, + "python": { + "pkg-path": "python3", + "version": "3.11.*" + } + }, + "vars": {}, + "hook": { + "on-activate": "\n#\n# Python environment activation and installation\n#\nexport POETRY_VIRTUALENVS_PATH=\"$FLOX_ENV_CACHE/poetry/virtualenvs\"\nif [ -z \"$(poetry env info --path)\" ]; then\n poetry env use python &> /dev/null\nfi\nsource \"$(poetry env info --path)/bin/activate\" &> /dev/null\npoetry install --quiet &> /dev/null\necho \"1. πŸ‘‰ Python environment activated\"\n\n\n# \n# Set the version of Flox to the latest stable version\n#\nexport FLOX_VERSION=$(curl -s https://downloads.flox.dev/by-env/stable/LATEST_VERSION | xargs)\necho \"2. πŸ‘‰ FLOX_VERSION set to $FLOX_VERSION\"\n\n\n# \n# Copy and process Flox man pages\n# \nexport FLOX_SRC_ARCHIVE=\"$FLOX_ENV_CACHE/flox-v$FLOX_VERSION.tar.gz\"\nif [ ! -e \"$FLOX_SRC_ARCHIVE\" ]; then\n curl -sL \"https://github.com/flox/flox/archive/refs/tags/v$FLOX_VERSION.tar.gz\" -o $FLOX_SRC_ARCHIVE\nfi\necho \"3. πŸ‘‰ Downloaded Flox source archive\"\n\nexport FLOX_SRC_DIR=\"$FLOX_ENV_CACHE/flox-src-$FLOX_VERSION\"\nif [ ! -d \"$FLOX_SRC_DIR\" ]; then\n mkdir -p $FLOX_SRC_DIR\n tar -zx --strip-components=1 --file=$FLOX_SRC_ARCHIVE --directory=$FLOX_SRC_DIR;\nfi\necho \"4. πŸ‘‰ Extracted Flox source archive\"\n\nexport FLOX_MAN_PAGES_DIR=\"$PWD/docs/reference/command-reference\"\nif [ -d \"$FLOX_MAN_PAGES_DIR\" ]; then\n rm -rf \"$FLOX_MAN_PAGES_DIR/*\"\nfi\nmkdir -p $FLOX_MAN_PAGES_DIR\npushd \"$FLOX_SRC_DIR/cli/flox/doc\" > /dev/null\n find . -maxdepth 1 -iname \"*.md\" -exec \\\n sh -c \"\n pandoc -t gfm \\\n -L $FLOX_SRC_DIR/pkgs/flox-manpages/pandoc-filters/include-files.lua \\\n --standalone \\\n {} |\n # remove current title\n tail -n +6 |\n # indent all markdown levels by one, e.g. \"#\" -> \"##\"\n sed -e 's/^#/##/' > \\\"$FLOX_MAN_PAGES_DIR/{}\\\"\n \" \\;\npopd > /dev/null\npushd $FLOX_MAN_PAGES_DIR > /dev/null\n for commandPage in ./*.md; do\n # All other man page files have names of the form\n # 'flox*.md'\n if [ \"$commandPage\" = \"./manifest.toml.md\" ]; then\n continue\n fi\n command=$(basename $commandPage .md | sed -e \"s|-| |g\")\n echo -e \"\\n# \\`$command\\` command\\n$(cat $commandPage)\" > $commandPage\n echo -e \"---\\n$(cat $commandPage)\" > $commandPage\n echo -e \"description: Command reference for the \\`$command\\` command.\\n$(cat $commandPage)\" > $commandPage\n echo -e \"title: $command\\n$(cat $commandPage)\" > $commandPage\n echo -e \"---\\n$(cat $commandPage)\" > $commandPage\n done\n\n manifestPage=\"manifest.toml.md\"\n echo -e \"\\n# \\`manifest.toml\\`\\n$(cat $manifestPage)\" > $manifestPage\n echo -e \"---\\n$(cat $manifestPage)\" > $manifestPage\n echo -e \"description: Reference for the manifest.toml format.\\n$(cat $manifestPage)\" > $manifestPage\n echo -e \"title: manifest.toml\\n$(cat $manifestPage)\" > $manifestPage\n echo -e \"---\\n$(cat $manifestPage)\" > $manifestPage\npopd > /dev/null\necho \"5. πŸ‘‰ Copy man pages from Flox source archive\"\n\necho \"\"\necho \" ╔═══════════════════════════════════╗\"\necho \" β•‘ β•‘\"\necho \" β•‘ To build a production docs run: β•‘\"\necho \" β•‘ > mkdocs build β•‘\"\necho \" β•‘ β•‘\"\necho \" β•‘ To write docs locally run: β•‘\"\necho \" β•‘ > mkdocs serve β•‘\"\necho \" β•‘ β•‘\"\necho \" β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•\"\necho \"\"\n\n" + }, + "profile": { + "bash": " source \"$(poetry env info --path)/bin/activate\"\n", + "zsh": " source \"$(poetry env info --path)/bin/activate\"\n", + "fish": " source \"$(poetry env info --path)/bin/activate.fish\"\n", + "tcsh": " source \"$(poetry env info --path)/bin/activate.csh\"\n" + }, + "options": { + "systems": [ + "aarch64-darwin", + "aarch64-linux", + "x86_64-darwin", + "x86_64-linux" + ], + "allow": { + "licenses": [] + }, + "semver": {}, + "cuda-detection": false + }, + "services": { + "mkdocs": { + "command": "mkdocs serve", + "vars": null, + "is-daemon": false, + "shutdown": null + } + } + }, + "packages": [ + { + "attr_path": "coreutils", + "broken": false, + "derivation": "/nix/store/8p2qkx08p8skiw6xz3bp3yj19b804dnr-coreutils-9.5.drv", + "description": "GNU Core Utilities", + "install_id": "coreutils", + "license": "GPL-3.0-or-later", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "coreutils-9.5", + "pname": "coreutils", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "9.5", + "outputs_to_install": [ + "out" + ], + "outputs": { + "info": "/nix/store/synvgqgdhvbj2b37ja3bn56f2yx08r2r-coreutils-9.5-info", + "out": "/nix/store/47zwbmparr2g3b0hci44vma95k1j8a3v-coreutils-9.5" + }, + "system": "aarch64-darwin", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "coreutils", + "broken": false, + "derivation": "/nix/store/xi1l0agghjxldrsf03vrsydbzgd0p9ph-coreutils-9.5.drv", + "description": "GNU Core Utilities", + "install_id": "coreutils", + "license": "GPL-3.0-or-later", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "coreutils-9.5", + "pname": "coreutils", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "9.5", + "outputs_to_install": [ + "out" + ], + "outputs": { + "debug": "/nix/store/4nhkjwjckrypgfbg781gap2irradpcn4-coreutils-9.5-debug", + "info": "/nix/store/n62qzcipxl2060qyq8h79wa94mq81cdr-coreutils-9.5-info", + "out": "/nix/store/84yg60swk80b04apprb1432kir41bvzj-coreutils-9.5" + }, + "system": "aarch64-linux", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "coreutils", + "broken": false, + "derivation": "/nix/store/nvpqj2ahl0qj49bzwqiz4j7k1d80qxv5-coreutils-9.5.drv", + "description": "GNU Core Utilities", + "install_id": "coreutils", + "license": "GPL-3.0-or-later", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "coreutils-9.5", + "pname": "coreutils", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "9.5", + "outputs_to_install": [ + "out" + ], + "outputs": { + "info": "/nix/store/k9g3chvxb1zff1la6fvswp0dxvriii3g-coreutils-9.5-info", + "out": "/nix/store/nx7b6wz48p7lli49ms54zp9j4s4yjjf5-coreutils-9.5" + }, + "system": "x86_64-darwin", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "coreutils", + "broken": false, + "derivation": "/nix/store/mapdfbh230kblpdhxrg77zramjaj9nmk-coreutils-9.5.drv", + "description": "GNU Core Utilities", + "install_id": "coreutils", + "license": "GPL-3.0-or-later", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "coreutils-9.5", + "pname": "coreutils", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "9.5", + "outputs_to_install": [ + "out" + ], + "outputs": { + "debug": "/nix/store/8467bx2i423s8d2dnl0529q9q8mpr9h2-coreutils-9.5-debug", + "info": "/nix/store/d33w475g5g30crnr2in1w3b9ifpm46h5-coreutils-9.5-info", + "out": "/nix/store/i7qhgc0bs725qw3wdanznfkdna4z2ns2-coreutils-9.5" + }, + "system": "x86_64-linux", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "findutils", + "broken": false, + "derivation": "/nix/store/34mznky1yr6ifk0p2rvnvakvx870xwbf-findutils-4.9.0.drv", + "description": "GNU Find Utilities, the basic directory searching utilities of the GNU operating system", + "install_id": "findutils", + "license": "GPL-3.0-or-later", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "findutils-4.9.0", + "pname": "findutils", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "4.9.0", + "outputs_to_install": [ + "out" + ], + "outputs": { + "info": "/nix/store/wvckvi462k8j3kblijjfp1yc9nplg07z-findutils-4.9.0-info", + "locate": "/nix/store/1h9sn0in9zs89cwmq4qj4ggbx2ll1wn1-findutils-4.9.0-locate", + "out": "/nix/store/dj4z6gimsxzlw0b4dnpcgv4b6wxijx13-findutils-4.9.0" + }, + "system": "aarch64-darwin", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "findutils", + "broken": false, + "derivation": "/nix/store/f2655m6yzyzlld6i4498xfffz7mi0251-findutils-4.9.0.drv", + "description": "GNU Find Utilities, the basic directory searching utilities of the GNU operating system", + "install_id": "findutils", + "license": "GPL-3.0-or-later", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "findutils-4.9.0", + "pname": "findutils", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "4.9.0", + "outputs_to_install": [ + "out" + ], + "outputs": { + "info": "/nix/store/xs9ckiq93dggjzyawyr0qrj2b4l7n13l-findutils-4.9.0-info", + "locate": "/nix/store/rz0b7pk50qm5x4gg04skk29jxf5vxzqq-findutils-4.9.0-locate", + "out": "/nix/store/lxj7k5g73inw4h9jw7cw99jwig93fyqx-findutils-4.9.0" + }, + "system": "aarch64-linux", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "findutils", + "broken": false, + "derivation": "/nix/store/a02h7gr010fn1m4nir5d0z0f2z9gycin-findutils-4.9.0.drv", + "description": "GNU Find Utilities, the basic directory searching utilities of the GNU operating system", + "install_id": "findutils", + "license": "GPL-3.0-or-later", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "findutils-4.9.0", + "pname": "findutils", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "4.9.0", + "outputs_to_install": [ + "out" + ], + "outputs": { + "info": "/nix/store/7jhwg8qmdwl2vhlkxpay16x1swjdfh8y-findutils-4.9.0-info", + "locate": "/nix/store/mk1da83ikvbh8g40l93rfg6p4r8jq3dj-findutils-4.9.0-locate", + "out": "/nix/store/dk47w6iis8fd0hsrc687j5vi2vymsb68-findutils-4.9.0" + }, + "system": "x86_64-darwin", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "findutils", + "broken": false, + "derivation": "/nix/store/1kl0ncwffim3yihd319n153dzf4cs0y8-findutils-4.9.0.drv", + "description": "GNU Find Utilities, the basic directory searching utilities of the GNU operating system", + "install_id": "findutils", + "license": "GPL-3.0-or-later", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "findutils-4.9.0", + "pname": "findutils", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "4.9.0", + "outputs_to_install": [ + "out" + ], + "outputs": { + "info": "/nix/store/qn4dsjr6kgrf05ihhjlpjrcb0bwkjv7d-findutils-4.9.0-info", + "locate": "/nix/store/rgpwyrh67rk79s6lyn8qixjmkw5vvgzk-findutils-4.9.0-locate", + "out": "/nix/store/rr1yixvn0z63mgq9s04ig9j9qlz23s2g-findutils-4.9.0" + }, + "system": "x86_64-linux", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "gnused", + "broken": false, + "derivation": "/nix/store/hblnll0nvpirs0myznvikg3sm0i25fx6-gnused-4.9.drv", + "description": "GNU sed, a batch stream editor", + "install_id": "gnused", + "license": "GPL-3.0-or-later", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "gnused-4.9", + "pname": "gnused", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "4.9", + "outputs_to_install": [ + "out" + ], + "outputs": { + "info": "/nix/store/76cicdasxxlkj3r1q879ld478w8dlb2g-gnused-4.9-info", + "out": "/nix/store/qxhcgmw2va7wdqz551bg1wn2h0m5ggy4-gnused-4.9" + }, + "system": "aarch64-darwin", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "gnused", + "broken": false, + "derivation": "/nix/store/5pp99718map4knj5gdnzzlzk8bppl8n0-gnused-4.9.drv", + "description": "GNU sed, a batch stream editor", + "install_id": "gnused", + "license": "GPL-3.0-or-later", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "gnused-4.9", + "pname": "gnused", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "4.9", + "outputs_to_install": [ + "out" + ], + "outputs": { + "info": "/nix/store/im8j09sxh1qba15523p8vqfq54fyf4gz-gnused-4.9-info", + "out": "/nix/store/yxjfnwjn4azs2b5781ddnhmafmixpfic-gnused-4.9" + }, + "system": "aarch64-linux", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "gnused", + "broken": false, + "derivation": "/nix/store/j2xdc6jcq6lqhm0fl62p7cx3qcghgqf9-gnused-4.9.drv", + "description": "GNU sed, a batch stream editor", + "install_id": "gnused", + "license": "GPL-3.0-or-later", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "gnused-4.9", + "pname": "gnused", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "4.9", + "outputs_to_install": [ + "out" + ], + "outputs": { + "info": "/nix/store/naxf5k1l52437m89m4m97nf84h11nsgq-gnused-4.9-info", + "out": "/nix/store/nxmz3hrywbyrnirpi6kkiwb9j89lrqfm-gnused-4.9" + }, + "system": "x86_64-darwin", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "gnused", + "broken": false, + "derivation": "/nix/store/m3spvz5g4x85db76x6vlqpjm85gjada5-gnused-4.9.drv", + "description": "GNU sed, a batch stream editor", + "install_id": "gnused", + "license": "GPL-3.0-or-later", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "gnused-4.9", + "pname": "gnused", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "4.9", + "outputs_to_install": [ + "out" + ], + "outputs": { + "info": "/nix/store/i5siv2j9ccda8h9na76xgn510xpxmqma-gnused-4.9-info", + "out": "/nix/store/ks6c62g0m3gqrs5i7m0cv6d6aqhdvirn-gnused-4.9" + }, + "system": "x86_64-linux", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "gnutar", + "broken": false, + "derivation": "/nix/store/a79j00lc3cvsqzwd5nx5n7pwvvpjq30l-gnutar-1.35.drv", + "description": "GNU implementation of the `tar' archiver", + "install_id": "gnutar", + "license": "GPL-3.0-or-later", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "gnutar-1.35", + "pname": "gnutar", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "1.35", + "outputs_to_install": [ + "out" + ], + "outputs": { + "info": "/nix/store/ckzg4qng19pjkxmqwljlxyqakxjhdv0f-gnutar-1.35-info", + "out": "/nix/store/vd6i09s9gbb6d9dgvcwkhd7h680laayv-gnutar-1.35" + }, + "system": "aarch64-darwin", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "gnutar", + "broken": false, + "derivation": "/nix/store/gasyj37ifzjhhwv5qrg1p4zhnqgxizgm-gnutar-1.35.drv", + "description": "GNU implementation of the `tar' archiver", + "install_id": "gnutar", + "license": "GPL-3.0-or-later", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "gnutar-1.35", + "pname": "gnutar", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "1.35", + "outputs_to_install": [ + "out" + ], + "outputs": { + "info": "/nix/store/rb7r09fp9bgcjq544yqxp8bp1qrwcp30-gnutar-1.35-info", + "out": "/nix/store/1cqyddnhggg6xcxni7k13pwlh3pygxyn-gnutar-1.35" + }, + "system": "aarch64-linux", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "gnutar", + "broken": false, + "derivation": "/nix/store/jjv5992qivxwzjjh4ahfh2lrl6s0lsan-gnutar-1.35.drv", + "description": "GNU implementation of the `tar' archiver", + "install_id": "gnutar", + "license": "GPL-3.0-or-later", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "gnutar-1.35", + "pname": "gnutar", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "1.35", + "outputs_to_install": [ + "out" + ], + "outputs": { + "info": "/nix/store/rkr4fsxsfn0dbhvh1vb7m48056wpvmgv-gnutar-1.35-info", + "out": "/nix/store/mdrdg0c883305fbh7zmkdlqsk5pid21c-gnutar-1.35" + }, + "system": "x86_64-darwin", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "gnutar", + "broken": false, + "derivation": "/nix/store/zq07jh6cwzvgi992qfmgk4gpj3cw6z1q-gnutar-1.35.drv", + "description": "GNU implementation of the `tar' archiver", + "install_id": "gnutar", + "license": "GPL-3.0-or-later", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "gnutar-1.35", + "pname": "gnutar", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "1.35", + "outputs_to_install": [ + "out" + ], + "outputs": { + "info": "/nix/store/96sapma38sp22qn8j2x0q3k4ryii0c89-gnutar-1.35-info", + "out": "/nix/store/95ljdxg4drk1iq8jkjfq2c0z5vbwv8vm-gnutar-1.35" + }, + "system": "x86_64-linux", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "lychee", + "broken": false, + "derivation": "/nix/store/iwnxlyb7kgyah9w1ama9y12b1xs6s1nz-lychee-0.15.1.drv", + "description": "Fast, async, stream-based link checker written in Rust", + "install_id": "lychee", + "license": "[ Apache-2.0, MIT ]", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "lychee-0.15.1", + "pname": "lychee", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "0.15.1", + "outputs_to_install": [ + "out" + ], + "outputs": { + "out": "/nix/store/gs0b4f8bms0gr30n4ba9bjlpj3zhd9a1-lychee-0.15.1" + }, + "system": "aarch64-darwin", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "lychee", + "broken": false, + "derivation": "/nix/store/p91bd930psw666kchxqpkm6v0nla431g-lychee-0.15.1.drv", + "description": "Fast, async, stream-based link checker written in Rust", + "install_id": "lychee", + "license": "[ Apache-2.0, MIT ]", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "lychee-0.15.1", + "pname": "lychee", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "0.15.1", + "outputs_to_install": [ + "out" + ], + "outputs": { + "out": "/nix/store/c027wvw59f7fsx98gi46j9myzh80m83n-lychee-0.15.1" + }, + "system": "aarch64-linux", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "lychee", + "broken": false, + "derivation": "/nix/store/j9l5vgw3zi5i8s8yj7rb2dbd9h1875m6-lychee-0.15.1.drv", + "description": "Fast, async, stream-based link checker written in Rust", + "install_id": "lychee", + "license": "[ Apache-2.0, MIT ]", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "lychee-0.15.1", + "pname": "lychee", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "0.15.1", + "outputs_to_install": [ + "out" + ], + "outputs": { + "out": "/nix/store/4h1x38h1v075599k9wvjvzj0wa32fkz5-lychee-0.15.1" + }, + "system": "x86_64-darwin", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "lychee", + "broken": false, + "derivation": "/nix/store/2mw8jd8a0d9x7vn6hpv9c7rnvqbxvdc2-lychee-0.15.1.drv", + "description": "Fast, async, stream-based link checker written in Rust", + "install_id": "lychee", + "license": "[ Apache-2.0, MIT ]", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "lychee-0.15.1", + "pname": "lychee", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "0.15.1", + "outputs_to_install": [ + "out" + ], + "outputs": { + "out": "/nix/store/rvrz40d17n04dxapsrhrpwis3bbfs1nx-lychee-0.15.1" + }, + "system": "x86_64-linux", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "pandoc", + "broken": false, + "derivation": "/nix/store/wm2kcq4fhy0xpgwy8s3rcn22fjwfw9fa-pandoc-cli-3.1.11.1.drv", + "description": "Conversion between documentation formats", + "install_id": "pandoc", + "license": "GPL-2.0-or-later", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "pandoc-cli-3.1.11.1", + "pname": "pandoc", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "cli-3.1.11.1", + "outputs_to_install": [ + "out" + ], + "outputs": { + "out": "/nix/store/3pvicdf934j5akqd4ikn6vff5ils87k7-pandoc-cli-3.1.11.1" + }, + "system": "aarch64-darwin", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "pandoc", + "broken": false, + "derivation": "/nix/store/firzgrgizhrpgnzz2w18z1srx9jc4rrg-pandoc-cli-3.1.11.1.drv", + "description": "Conversion between documentation formats", + "install_id": "pandoc", + "license": "GPL-2.0-or-later", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "pandoc-cli-3.1.11.1", + "pname": "pandoc", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "cli-3.1.11.1", + "outputs_to_install": [ + "out" + ], + "outputs": { + "out": "/nix/store/1hv8pc04p82ydgc7635bljdmpygy1j6k-pandoc-cli-3.1.11.1" + }, + "system": "aarch64-linux", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "pandoc", + "broken": false, + "derivation": "/nix/store/aw4zzzr2f97y7jns85p1clyww3l3kvvr-pandoc-cli-3.1.11.1.drv", + "description": "Conversion between documentation formats", + "install_id": "pandoc", + "license": "GPL-2.0-or-later", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "pandoc-cli-3.1.11.1", + "pname": "pandoc", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "cli-3.1.11.1", + "outputs_to_install": [ + "out" + ], + "outputs": { + "out": "/nix/store/igq51z44zn6m8hfmpidza2cvjv9xll77-pandoc-cli-3.1.11.1" + }, + "system": "x86_64-darwin", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "pandoc", + "broken": false, + "derivation": "/nix/store/kblqdjs91z5hkkmz3mvd7hgj4nwp4q0l-pandoc-cli-3.1.11.1.drv", + "description": "Conversion between documentation formats", + "install_id": "pandoc", + "license": "GPL-2.0-or-later", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "pandoc-cli-3.1.11.1", + "pname": "pandoc", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "cli-3.1.11.1", + "outputs_to_install": [ + "out" + ], + "outputs": { + "out": "/nix/store/wiy0p3afb32irskbxrwqqk6d51wqdi53-pandoc-cli-3.1.11.1" + }, + "system": "x86_64-linux", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "pngquant", + "broken": false, + "derivation": "/nix/store/7qinmyvzcvv6r49xv0md5cln7gn8hslw-pngquant-3.0.3.drv", + "description": "Tool to convert 24/32-bit RGBA PNGs to 8-bit palette with alpha channel preserved", + "install_id": "pngquant", + "license": "[ GPL-3.0-or-later, HPND, BSD-2-Clause ]", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "pngquant-3.0.3", + "pname": "pngquant", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "3.0.3", + "outputs_to_install": [ + "out", + "man" + ], + "outputs": { + "man": "/nix/store/6di2fcz9kddfzll0rzpm1inbivk9n8cg-pngquant-3.0.3-man", + "out": "/nix/store/ldniglz3qmrkgcmhw0ir7iwwlc70r16l-pngquant-3.0.3" + }, + "system": "aarch64-darwin", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "pngquant", + "broken": false, + "derivation": "/nix/store/brvpabw3h3zi1hyzrbljdyaha72cwnx0-pngquant-3.0.3.drv", + "description": "Tool to convert 24/32-bit RGBA PNGs to 8-bit palette with alpha channel preserved", + "install_id": "pngquant", + "license": "[ GPL-3.0-or-later, HPND, BSD-2-Clause ]", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "pngquant-3.0.3", + "pname": "pngquant", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "3.0.3", + "outputs_to_install": [ + "out", + "man" + ], + "outputs": { + "man": "/nix/store/naybg8k679cl07v85zx9dd0y7ly2i26l-pngquant-3.0.3-man", + "out": "/nix/store/r56jz7mp2drjdl3zg9mmp0aw8y6n32il-pngquant-3.0.3" + }, + "system": "aarch64-linux", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "pngquant", + "broken": false, + "derivation": "/nix/store/wdq6015zmflv1rxc8p6w4x8z6j4kawc9-pngquant-3.0.3.drv", + "description": "Tool to convert 24/32-bit RGBA PNGs to 8-bit palette with alpha channel preserved", + "install_id": "pngquant", + "license": "[ GPL-3.0-or-later, HPND, BSD-2-Clause ]", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "pngquant-3.0.3", + "pname": "pngquant", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "3.0.3", + "outputs_to_install": [ + "out", + "man" + ], + "outputs": { + "man": "/nix/store/i5gndyvlr539jrhjzcf4jw2c6mgpbfaj-pngquant-3.0.3-man", + "out": "/nix/store/g9g5bjg8dligi2k7h91r25mg480zxsl7-pngquant-3.0.3" + }, + "system": "x86_64-darwin", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "pngquant", + "broken": false, + "derivation": "/nix/store/z2g1a8y75vp71v7svgnma4pp6j9hcxq3-pngquant-3.0.3.drv", + "description": "Tool to convert 24/32-bit RGBA PNGs to 8-bit palette with alpha channel preserved", + "install_id": "pngquant", + "license": "[ GPL-3.0-or-later, HPND, BSD-2-Clause ]", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "pngquant-3.0.3", + "pname": "pngquant", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "3.0.3", + "outputs_to_install": [ + "out", + "man" + ], + "outputs": { + "man": "/nix/store/jl62563bywg4prhc4nk5lbiszcs76x88-pngquant-3.0.3-man", + "out": "/nix/store/l4pqbslrmjxcmp1rr73b0g7f9nynr3ad-pngquant-3.0.3" + }, + "system": "x86_64-linux", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "poetry", + "broken": false, + "derivation": "/nix/store/hgmdvc1wj6ks6brrhjzvwck0brf1pjlf-python3.11-poetry-1.8.3.drv", + "description": "Python dependency management and packaging made easy", + "install_id": "poetry", + "license": "MIT", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "poetry-1.8.3", + "pname": "poetry", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "1.8.3", + "outputs_to_install": [ + "out" + ], + "outputs": { + "dist": "/nix/store/85badakychn4bmpiaqqhlxjnvc4kvl66-python3.11-poetry-1.8.3-dist", + "out": "/nix/store/rxzn7qsm3hpkg4za3z3lcpj514fm7kjv-python3.11-poetry-1.8.3" + }, + "system": "aarch64-darwin", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "poetry", + "broken": false, + "derivation": "/nix/store/rpw6hnfjbbxnb26vacz1k2i2h98jyl5l-python3.11-poetry-1.8.3.drv", + "description": "Python dependency management and packaging made easy", + "install_id": "poetry", + "license": "MIT", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "poetry-1.8.3", + "pname": "poetry", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "1.8.3", + "outputs_to_install": [ + "out" + ], + "outputs": { + "dist": "/nix/store/swa3b2frx31vrclcs8y77n92fyn4nvwa-python3.11-poetry-1.8.3-dist", + "out": "/nix/store/8402rkyi0s8bsfssmdhq5s183gah79dk-python3.11-poetry-1.8.3" + }, + "system": "aarch64-linux", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "poetry", + "broken": false, + "derivation": "/nix/store/16vq0d3j6r9wda5ng73f5p1wcqzkmv05-python3.11-poetry-1.8.3.drv", + "description": "Python dependency management and packaging made easy", + "install_id": "poetry", + "license": "MIT", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "poetry-1.8.3", + "pname": "poetry", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "1.8.3", + "outputs_to_install": [ + "out" + ], + "outputs": { + "dist": "/nix/store/2l6xhvdqfan07ib7lh81rnchnw52360r-python3.11-poetry-1.8.3-dist", + "out": "/nix/store/i01nj2xbsdslq7rh9v58318741y6ics3-python3.11-poetry-1.8.3" + }, + "system": "x86_64-darwin", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "poetry", + "broken": false, + "derivation": "/nix/store/964q94rf5lai0v3kgyyl352v03r0z9g1-python3.11-poetry-1.8.3.drv", + "description": "Python dependency management and packaging made easy", + "install_id": "poetry", + "license": "MIT", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "poetry-1.8.3", + "pname": "poetry", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "1.8.3", + "outputs_to_install": [ + "out" + ], + "outputs": { + "dist": "/nix/store/4i14gkdh2pjckkvb0yjwhziin9ykf8lb-python3.11-poetry-1.8.3-dist", + "out": "/nix/store/jp27zm8lg646mm4qihs4xr7h2s83ykz0-python3.11-poetry-1.8.3" + }, + "system": "x86_64-linux", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "python3", + "broken": false, + "derivation": "/nix/store/wfykwnxr7b3yf52iq1mvrj6xsyki9xh3-python3-3.11.9.drv", + "description": "High-level dynamically-typed programming language", + "install_id": "python", + "license": "Python-2.0", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "python3-3.11.9", + "pname": "python3", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "3.11.9", + "outputs_to_install": [ + "out" + ], + "outputs": { + "out": "/nix/store/327bf08j5b7l9cnzink3g4vp32y5352j-python3-3.11.9" + }, + "system": "aarch64-darwin", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "python3", + "broken": false, + "derivation": "/nix/store/k8rfpimvg8943kffa0dhlfc0fcswp6sf-python3-3.11.9.drv", + "description": "High-level dynamically-typed programming language", + "install_id": "python", + "license": "Python-2.0", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "python3-3.11.9", + "pname": "python3", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "3.11.9", + "outputs_to_install": [ + "out" + ], + "outputs": { + "debug": "/nix/store/kl8hjhf6x7dz7brs1ylkxy26qb8argaq-python3-3.11.9-debug", + "out": "/nix/store/q3x28mimkawkdjlvd78jxv3s0fk25vz8-python3-3.11.9" + }, + "system": "aarch64-linux", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "python3", + "broken": false, + "derivation": "/nix/store/23x4lr8y0y7d2gch5vnhmxw927ciqm60-python3-3.11.9.drv", + "description": "High-level dynamically-typed programming language", + "install_id": "python", + "license": "Python-2.0", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "python3-3.11.9", + "pname": "python3", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "3.11.9", + "outputs_to_install": [ + "out" + ], + "outputs": { + "out": "/nix/store/9lcbaggnygcqpgzakib5lwisks8gnn5i-python3-3.11.9" + }, + "system": "x86_64-darwin", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "python3", + "broken": false, + "derivation": "/nix/store/9v1jlbifgwgfw0l9v745kifpj9zdpl60-python3-3.11.9.drv", + "description": "High-level dynamically-typed programming language", + "install_id": "python", + "license": "Python-2.0", + "locked_url": "https://github.com/flox/nixpkgs?rev=9f4128e00b0ae8ec65918efeba59db998750ead6", + "name": "python3-3.11.9", + "pname": "python3", + "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev_count": 647193, + "rev_date": "2024-07-03T18:27:49Z", + "scrape_date": "2024-07-05T00:14:29Z", + "stabilities": [ + "staging", + "unstable" + ], + "unfree": false, + "version": "3.11.9", + "outputs_to_install": [ + "out" + ], + "outputs": { + "debug": "/nix/store/61rzpp3v8dsf6h17h3jnnwlm5hwc2brr-python3-3.11.9-debug", + "out": "/nix/store/6b1fqdwb3g56j5pazv8zkx9qd0mv3wiz-python3-3.11.9" + }, + "system": "x86_64-linux", + "group": "toplevel", + "priority": 5 + } + ] +} \ No newline at end of file diff --git a/.flox/env/manifest.toml b/.flox/env/manifest.toml new file mode 100644 index 0000000..5202da1 --- /dev/null +++ b/.flox/env/manifest.toml @@ -0,0 +1,159 @@ +# +# This is a Flox environment manifest. +# Visit flox.dev/docs/concepts/manifest/ +# or see flox-edit(1), manifest.toml(5) for more information. +# +version = 1 + +# List packages you wish to install in your environment inside +# the `[install]` section. +[install] +coreutils.pkg-path = "coreutils" +findutils.pkg-path = "findutils" +gnutar.pkg-path = "gnutar" +lychee.pkg-path = "lychee" +pandoc.pkg-path = "pandoc" +poetry.pkg-path = "poetry" +python.pkg-path = "python3" +python.version = "3.11.*" +pngquant.pkg-path = "pngquant" +gnused.pkg-path = "gnused" + +# Set environment variables in the `[vars]` section. These variables may not +# reference one another, and are added to the environment without first +# expanding them. They are available for use in the `[profile]` and `[hook]` +# scripts. +[vars] +# message = "Howdy" + +# The `hook.on-activate` script is run by the *bash* shell immediately upon +# activating an environment, and will not be invoked if Flox detects that the +# environment has previously been activated. Variables set by the script will +# be inherited by `[profile]` scripts defined below. Note that any stdout +# generated by the script will be redirected to stderr. +[hook] +on-activate = ''' + +# +# Python environment activation and installation +# +export POETRY_VIRTUALENVS_PATH="$FLOX_ENV_CACHE/poetry/virtualenvs" +if [ -z "$(poetry env info --path)" ]; then + poetry env use python &> /dev/null +fi +source "$(poetry env info --path)/bin/activate" &> /dev/null +poetry install --quiet &> /dev/null +echo "1. πŸ‘‰ Python environment activated" + + +# +# Set the version of Flox to the latest stable version +# +export FLOX_VERSION=$(curl -s https://downloads.flox.dev/by-env/stable/LATEST_VERSION | xargs) +echo "2. πŸ‘‰ FLOX_VERSION set to $FLOX_VERSION" + + +# +# Copy and process Flox man pages +# +export FLOX_SRC_ARCHIVE="$FLOX_ENV_CACHE/flox-v$FLOX_VERSION.tar.gz" +if [ ! -e "$FLOX_SRC_ARCHIVE" ]; then + curl -sL "https://github.com/flox/flox/archive/refs/tags/v$FLOX_VERSION.tar.gz" -o $FLOX_SRC_ARCHIVE +fi +echo "3. πŸ‘‰ Downloaded Flox source archive" + +export FLOX_SRC_DIR="$FLOX_ENV_CACHE/flox-src-$FLOX_VERSION" +if [ ! -d "$FLOX_SRC_DIR" ]; then + mkdir -p $FLOX_SRC_DIR + tar -zx --strip-components=1 --file=$FLOX_SRC_ARCHIVE --directory=$FLOX_SRC_DIR; +fi +echo "4. πŸ‘‰ Extracted Flox source archive" + +export FLOX_MAN_PAGES_DIR="$PWD/docs/reference/command-reference" +if [ -d "$FLOX_MAN_PAGES_DIR" ]; then + rm -rf "$FLOX_MAN_PAGES_DIR/*" +fi +mkdir -p $FLOX_MAN_PAGES_DIR +pushd "$FLOX_SRC_DIR/cli/flox/doc" > /dev/null + find . -maxdepth 1 -iname "*.md" -exec \ + sh -c " + pandoc -t gfm \ + -L $FLOX_SRC_DIR/pkgs/flox-manpages/pandoc-filters/include-files.lua \ + --standalone \ + {} | + # remove current title + tail -n +6 | + # indent all markdown levels by one, e.g. "#" -> "##" + sed -e 's/^#/##/' > \"$FLOX_MAN_PAGES_DIR/{}\" + " \; +popd > /dev/null +pushd $FLOX_MAN_PAGES_DIR > /dev/null + for commandPage in ./*.md; do + # All other man page files have names of the form + # 'flox*.md' + if [ "$commandPage" = "./manifest.toml.md" ]; then + continue + fi + command=$(basename $commandPage .md | sed -e "s|-| |g") + echo -e "\n# \`$command\` command\n$(cat $commandPage)" > $commandPage + echo -e "---\n$(cat $commandPage)" > $commandPage + echo -e "description: Command reference for the \`$command\` command.\n$(cat $commandPage)" > $commandPage + echo -e "title: $command\n$(cat $commandPage)" > $commandPage + echo -e "---\n$(cat $commandPage)" > $commandPage + done + + manifestPage="manifest.toml.md" + echo -e "\n# \`manifest.toml\`\n$(cat $manifestPage)" > $manifestPage + echo -e "---\n$(cat $manifestPage)" > $manifestPage + echo -e "description: Reference for the manifest.toml format.\n$(cat $manifestPage)" > $manifestPage + echo -e "title: manifest.toml\n$(cat $manifestPage)" > $manifestPage + echo -e "---\n$(cat $manifestPage)" > $manifestPage +popd > /dev/null +echo "5. πŸ‘‰ Copy man pages from Flox source archive" + +echo "" +echo " ╔═══════════════════════════════════╗" +echo " β•‘ β•‘" +echo " β•‘ To build a production docs run: β•‘" +echo " β•‘ > mkdocs build β•‘" +echo " β•‘ β•‘" +echo " β•‘ To write docs locally run: β•‘" +echo " β•‘ > mkdocs serve β•‘" +echo " β•‘ β•‘" +echo " β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•" +echo "" + +''' + +# Scripts defined in the `[profile]` section are *sourced* by *your shell* and +# inherit environment variables set in the `[vars]` section and by `[hook]` scripts. +# The `profile.common` script is sourced by all shells and special care should be +# taken to ensure compatibility with all shells, after which exactly one of +# `profile.{bash,fish,tcsh,zsh}` is sourced by the corresponding shell. +[profile] +bash = ''' + source "$(poetry env info --path)/bin/activate" +''' +fish = ''' + source "$(poetry env info --path)/bin/activate.fish" +''' +tcsh = ''' + source "$(poetry env info --path)/bin/activate.csh" +''' +zsh = ''' + source "$(poetry env info --path)/bin/activate" +''' + +# The `[services]` section of the manifest allows you to define services. +# Services defined here use the packages provided by the `[install]` section +# and any variables you've defined in the `[vars]` section or `hook.on-activate` script. +[services] +mkdocs.command = "mkdocs serve" +mkdocs.is-daemon = false + +# Additional options can be set in the `[options]` section. Refer to +# manifest.toml(5) for a list of available options. +[options] +systems = ["aarch64-darwin", "aarch64-linux", "x86_64-darwin", "x86_64-linux"] +# Uncomment to disable CUDA detection. +cuda-detection = false diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 382c8be..25328f4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,40 +30,24 @@ jobs: with: fetch-depth: 0 - - name: "Install newer Nix" - uses: "cachix/install-nix-action@V27" - - - name: "Setup" - uses: "./.github/actions/common-setup" - with: - GITHUB_ACCESS_TOKEN: "${{ secrets.MANAGED_GITHUB_ACCESS_TOKEN }}" - SUBSTITUTER: "${{ vars.MANAGED_CACHE_PRIVATE_S3_BUCKET }}" - SUBSTITUTER_KEY: "${{ secrets.MANAGED_CACHE_PRIVATE_SECRET_KEY }}" - AWS_ACCESS_KEY_ID: "${{ secrets.MANAGED_CACHE_PRIVATE_AWS_ACCESS_KEY_ID }}" - AWS_SECRET_ACCESS_KEY: "${{ secrets.MANAGED_CACHE_PRIVATE_AWS_SECRET_ACCESS_KEY }}" - SSH_KEY: "${{ secrets.MANAGED_FLOXBOT_SSH_KEY }}" + - name: "Install Flox" + uses: "flox/install-flox-action@main" - name: "Build" - run: | - nix build -L \ - --extra-experimental-features "nix-command flakes" \ - '.#default' - mkdir -p ./public/docs - cp -R ./result/* ./public/docs/ - chmod -R +w ./public/docs - cp netlify.toml ./public/netlify.toml - - - name: "Check external links" - run: | - nix run \ - --extra-experimental-features "nix-command flakes" \ - 'nixpkgs#lychee' -- docs -nv --exclude file:// --exclude-mail --exclude s3:// --exclude https://alpha.floxsdlc.com - - - name: "Check code examples" - run: | - nix build -L \ - --extra-experimental-features "nix-command flakes" \ - '.#check-code-examples' + uses: "flox/activate-action@main" + with: + command: | + mkdocs build + mkdir -p ./public/docs + cp -R ./site/* ./public/docs/ + chmod -R +w ./public/docs + cp netlify.toml ./public/netlify.toml + + # TODO: need to run service in order to test links + #- name: "Check external links" + # uses: "flox/activate-action@main" + # with: + # command: "./check_links.sh" - name: "Publish to Netlify" if: ${{ github.repository_owner == 'flox' }} diff --git a/README.md b/README.md index 0e4864e..88636e6 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,20 @@ -# flox Documentation +# flox documentation Live at: [flox.dev/docs](https://flox.dev/docs). ## Usage ``` -$ nix develop -Welcome to floxDocs +$ flox activate +βœ… You are now using the environment 'floxdocs'. -For local preview run: - mkdocs serve +Ξ» (floxdocs) $ flox services start mkdocs +βœ… Service 'mkdocs' started. -For production build run: - mkdocs build - -Happy documenting! - -flox $ mkdocs serve ``` +Once mkdocs service started you can preview the documentation at +`https://127.0.0.1:8000`. + ## Guidelines @@ -75,18 +72,13 @@ summary: "#") so that the title can be governed by the master index in mkdocs.yml. The document will inherit the title from the index. -## Hydra Server -Automated building and publishing is controlled by a -[hydra server](https://hydra.floxsdlc.com) and a -[GitHub Action](https://github.com/flox/floxdocs/blob/main/.github/workflows/ci.yml). - ## External link checking You can run a check for external link breakage with this command ``` -lychee docs -nv --exclude file:// --exclude-mail +$ flox activate -- ./check_links.sh ``` ## Update mkdocs-material-insiders archive diff --git a/check_links.sh b/check_links.sh new file mode 100755 index 0000000..482f5a6 --- /dev/null +++ b/check_links.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +set -euo pipefail + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) + +lychee $SCRIPT_DIR/site \ + -nv \ + --exclude "file://" \ + --exclude "s3://" \ + --exclude "https://alpha.floxsdlc.com" diff --git a/docs/install-flox.md b/docs/install-flox.md index 82ed8f3..4a189f3 100644 --- a/docs/install-flox.md +++ b/docs/install-flox.md @@ -831,11 +831,11 @@ Here's how to **completely remove `flox` from your system**. Or, if you've declared Flox using a flake, remove the Flake [flox]: https://flox.dev -[flox_x86_64_deb_install]: https://downloads.flox.dev/by-env/stable/deb/flox-1.3.1.x86_64-linux.deb -[flox_aarch64_deb_install]: https://downloads.flox.dev/by-env/stable/deb/flox-1.3.1.aarch64-linux.deb -[flox_x86_64_rpm_install]: https://downloads.flox.dev/by-env/stable/rpm/flox-1.3.1.x86_64-linux.rpm -[flox_aarch64_rpm_install]: https://downloads.flox.dev/by-env/stable/rpm/flox-1.3.1.aarch64-linux.rpm -[flox_mac_m1_install]: https://downloads.flox.dev/by-env/stable/osx/flox-1.3.1.aarch64-darwin.pkg -[flox_mac_intel_install]: https://downloads.flox.dev/by-env/stable/osx/flox-1.3.1.x86_64-darwin.pkg +[flox_x86_64_deb_install]: https://downloads.flox.dev/by-env/stable/deb/flox-{{ FLOX_VERSION }}.x86_64-linux.deb +[flox_aarch64_deb_install]: https://downloads.flox.dev/by-env/stable/deb/flox-{{ FLOX_VERSION }}.aarch64-linux.deb +[flox_x86_64_rpm_install]: https://downloads.flox.dev/by-env/stable/rpm/flox-{{ FLOX_VERSION }}.x86_64-linux.rpm +[flox_aarch64_rpm_install]: https://downloads.flox.dev/by-env/stable/rpm/flox-{{ FLOX_VERSION }}.aarch64-linux.rpm +[flox_mac_m1_install]: https://downloads.flox.dev/by-env/stable/osx/flox-{{ FLOX_VERSION }}.aarch64-darwin.pkg +[flox_mac_intel_install]: https://downloads.flox.dev/by-env/stable/osx/flox-{{ FLOX_VERSION }}.x86_64-darwin.pkg [flox_discourse]: https://discourse.flox.dev [release_notes]: https://github.com/flox/flox/releases diff --git a/docs/tutorials/ci-cd.md b/docs/tutorials/ci-cd.md new file mode 100644 index 0000000..a05509e --- /dev/null +++ b/docs/tutorials/ci-cd.md @@ -0,0 +1,61 @@ +--- +title: Continuous integration/delivery (CI/CD) +description: Integrate with yout favorite CI/CD platform. +--- + +# Continuous integration/delivery (CI/CD) + +Continuous integration (CI) and Continuous delivery (CD) is essetial in todays +software development cycle. Flox environments can take you CI/CD pipelines to +the next level, making them robust and reproducible. Let us look how can you +use Flox with some of the CI/CD platforms. + + +## Github Actions + +An example GitHub workflow. + +```yaml title=".github/workflows/ci.yml" +name: "CI" + +... # (1)! + +jobs: + + build: + name: "Build website" + runs-on: "ubuntu-latest" + steps: + - name: "Checkout" + uses: "actions/checkout@v4" + + - name: "Install Flox" # (2)! + uses: "flox/install-flox-action@main" + + - name: "Build" # (3)! + uses: "flox/activate-action@main" + with: + command: npm run build + + ... + +``` + +1. You are looking at an example project, your project will probably look a + little different. Important parts of how to integrate Flox with Github + Actions are highlighted bellow. +2. `flox/install-flox-action` will install latest version Flox. +3. `flox/activate-action` allows you to run a command inside the Flox + environment. + + + +## GitLab CI/CD + +TODO + +## CircleCI + +TODO + + diff --git a/flake.lock b/flake.lock deleted file mode 100644 index e51bdfb..0000000 --- a/flake.lock +++ /dev/null @@ -1,443 +0,0 @@ -{ - "nodes": { - "crane": { - "inputs": { - "nixpkgs": [ - "flox", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1703439018, - "narHash": "sha256-VT+06ft/x3eMZ1MJxWzQP3zXFGcrxGo5VR2rB7t88hs=", - "owner": "ipetkov", - "repo": "crane", - "rev": "afdcd41180e3dfe4dac46b5ee396e3b12ccc967a", - "type": "github" - }, - "original": { - "owner": "ipetkov", - "repo": "crane", - "type": "github" - } - }, - "fenix": { - "inputs": { - "nixpkgs": [ - "flox", - "nixpkgs" - ], - "rust-analyzer-src": "rust-analyzer-src" - }, - "locked": { - "lastModified": 1713939967, - "narHash": "sha256-3YQSEYvAIHE40tx5nM9dgeEe0gsHjf15+gurUpyDYNw=", - "owner": "nix-community", - "repo": "fenix", - "rev": "5c3ff469526a6ca54a887fbda9d67aef4dd4a921", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" - } - }, - "flake-compat": { - "flake": false, - "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_2": { - "inputs": { - "systems": "systems_2" - }, - "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_3": { - "inputs": { - "systems": "systems_3" - }, - "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flox": { - "inputs": { - "crane": "crane", - "fenix": "fenix", - "nixpkgs": "nixpkgs", - "nixpkgs-bear": "nixpkgs-bear", - "nixpkgs-process-compose": "nixpkgs-process-compose", - "pre-commit-hooks": "pre-commit-hooks", - "sqlite3pp": "sqlite3pp" - }, - "locked": { - "lastModified": 1724089105, - "narHash": "sha256-dnsnZKSpK8Iug70TXfUbiyoInT98koDUpv2wo9KCMP8=", - "ref": "refs/tags/v1.3.0", - "rev": "bc686dd5fac31e82dac56820946a93fa226a165c", - "revCount": 1592, - "type": "git", - "url": "ssh://git@github.com/flox/flox" - }, - "original": { - "ref": "refs/tags/v1.3.0", - "type": "git", - "url": "ssh://git@github.com/flox/flox" - } - }, - "gitignore": { - "inputs": { - "nixpkgs": [ - "flox", - "pre-commit-hooks", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "nix-github-actions": { - "inputs": { - "nixpkgs": [ - "poetry2nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1698974481, - "narHash": "sha256-yPncV9Ohdz1zPZxYHQf47S8S0VrnhV7nNhCawY46hDA=", - "owner": "nix-community", - "repo": "nix-github-actions", - "rev": "4bb5e752616262457bc7ca5882192a564c0472d2", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nix-github-actions", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1704300003, - "narHash": "sha256-FRC/OlLVvKkrdm+RtrODQPufD0vVZYA0hpH9RPaHmp4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ab5fd150146dcfe41fda501134e6503932cc8dfd", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "release-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-bear": { - "locked": { - "lastModified": 1705957679, - "narHash": "sha256-Q8LJaVZGJ9wo33wBafvZSzapYsjOaNjP/pOnSiKVGHY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9a333eaa80901efe01df07eade2c16d183761fa3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "release-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-process-compose": { - "locked": { - "lastModified": 1722415718, - "narHash": "sha256-5US0/pgxbMksF92k1+eOa8arJTJiPvsdZj9Dl+vJkM4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c3392ad349a5227f4a3464dce87bcc5046692fce", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable": { - "locked": { - "lastModified": 1685801374, - "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_2": { - "locked": { - "lastModified": 1699838902, - "narHash": "sha256-gtaGIer0Fg7QUvsUFsKIjrns32lhnd+o6FvIyokzcKQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6c986b681d6b35affcc4eda42db63595ab01860e", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "master", - "repo": "nixpkgs", - "type": "github" - } - }, - "poetry2nix": { - "inputs": { - "flake-utils": "flake-utils_3", - "nix-github-actions": "nix-github-actions", - "nixpkgs": "nixpkgs_2", - "systems": "systems_4", - "treefmt-nix": "treefmt-nix" - }, - "locked": { - "lastModified": 1708175019, - "narHash": "sha256-B7wY2pNrLc3X9uYRo1LUmVzI6oH6fX8oi+96GdUpayU=", - "owner": "nix-community", - "repo": "poetry2nix", - "rev": "403d923ea8e2e6cedce3a0f04a9394c4244cb806", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "poetry2nix", - "type": "github" - } - }, - "pre-commit-hooks": { - "inputs": { - "flake-compat": "flake-compat", - "flake-utils": "flake-utils_2", - "gitignore": "gitignore", - "nixpkgs": [ - "flox", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable" - }, - "locked": { - "lastModified": 1703939133, - "narHash": "sha256-Gxe+mfOT6bL7wLC/tuT2F+V+Sb44jNr8YsJ3cyIl4Mo=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "9d3d7e18c6bc4473d7520200d4ddab12f8402d38", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "root": { - "inputs": { - "flake-utils": "flake-utils", - "flox": "flox", - "nixpkgs": [ - "poetry2nix", - "nixpkgs" - ], - "poetry2nix": "poetry2nix" - } - }, - "rust-analyzer-src": { - "flake": false, - "locked": { - "lastModified": 1713801366, - "narHash": "sha256-VmzP5s59kb6//mj+ES+hslTLuugjd7OluGIXXcwuyHg=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "e31c9f3fe11148514c3ad254b639b2ed7dbe35de", - "type": "github" - }, - "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" - } - }, - "sqlite3pp": { - "inputs": { - "nixpkgs": [ - "flox", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1691154329, - "narHash": "sha256-nMtwh/G1/Zt70rl540jn+nFVJuju0NdXJwk2Y3pNB+k=", - "owner": "aakropotkin", - "repo": "sqlite3pp", - "rev": "775e48a6c7a63a51585cd628f6c9816ba634a246", - "type": "github" - }, - "original": { - "owner": "aakropotkin", - "repo": "sqlite3pp", - "type": "github" - } - }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_2": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_3": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_4": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "id": "systems", - "type": "indirect" - } - }, - "treefmt-nix": { - "inputs": { - "nixpkgs": [ - "poetry2nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1699786194, - "narHash": "sha256-3h3EH1FXQkIeAuzaWB+nK0XK54uSD46pp+dMD3gAcB4=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "e82f32aa7f06bbbd56d7b12186d555223dc399d1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "treefmt-nix", - "type": "github" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/flake.nix b/flake.nix deleted file mode 100644 index 9ce5739..0000000 --- a/flake.nix +++ /dev/null @@ -1,155 +0,0 @@ -{ - description = "Flox documentation - flox.dev/docs"; - - nixConfig.extra-substituters = [ - "https://cache.flox.dev" - "s3://flox-cache-private" - ]; - nixConfig.extra-trusted-public-keys = [ - "flox-cache-public-1:7F4OyH7ZCnFhcze3fJdfyXYLQw/aV7GEed86nQ7IsOs=" - "flox-cache-private-1:11kWWMbsoFjVfz0lSvRr8PRkFShcmvHDfnSGphvWKnk=" - ]; - - inputs.nixpkgs.follows = "poetry2nix/nixpkgs"; - inputs.flake-utils.url = "github:numtide/flake-utils"; - inputs.poetry2nix.url = "github:nix-community/poetry2nix"; - - inputs.flox.url = "git+ssh://git@github.com/flox/flox?ref=refs/tags/v1.3.0"; - - outputs = { - self, - nixpkgs, - flake-utils, - poetry2nix, - flox, - }: - flake-utils.lib.eachDefaultSystem - (system: let - pkgs = nixpkgs.legacyPackages.${system}; - - inherit (pkgs) stdenv writeScriptBin runtimeShell lib fd gnused pandoc lychee poetry pngquant; - - inherit (poetry2nix.lib.mkPoetry2Nix {inherit pkgs;}) mkPoetryEnv overrides; - - pyEnv = mkPoetryEnv { - projectDir = ./.; - overrides = overrides.withDefaults (import ./overrides.nix); - }; - - pyProject = lib.importTOML ./pyproject.toml; - - checkCodeExamplesDeps = with pkgs; [ - git - jq - openssh - ]; - in { - packages.check-code-examples = writeScriptBin "check-code-examples" '' - #!${runtimeShell} - export PATH=${lib.makeBinPath checkCodeExamplesDeps}:$PATH - exec ${pyEnv}/bin/tesh --verbose --no-debug \ - $PWD/docs/index.md \ - $PWD/docs/cookbook/validate-identical.md \ - $PWD/docs/tutorials/build-container-images.md \ - $PWD/docs/tutorials/managed-environments.md - ''; - packages.default = stdenv.mkDerivation rec { - name = pyProject.tool.poetry.name; - version = pyProject.tool.poetry.version; - - src = self; - - FLOX_VERSION = flox.packages.${system}.flox-cli.version; - - postPatch = '' - commandReferenceDir="$PWD/docs/reference/command-reference" - mkdir -p "$commandReferenceDir" - # includes in .md are relative - pushd "${flox}/cli/flox/doc" - fd "flox.*\.md" ./ -x \ - sh -c " - pandoc -t gfm \ - -L ${flox}/pkgs/flox-manpages/pandoc-filters/include-files.lua \ - --standalone \ - {} | - # remove current title - tail -n +6 | - # indent all markdown levels by one, e.g. "#" -> "##" - sed -e 's/^#/##/' > \"$commandReferenceDir/{/.}.md\" - " - fd "manifest.toml.md" ./ -x \ - sh -c " - pandoc -t gfm \ - -L ${flox}/pkgs/flox-manpages/pandoc-filters/include-files.lua \ - --standalone \ - {} | - # remove current title - tail -n +6 | - # indent all markdown levels by one, e.g. "#" -> "##" - sed -e 's/^#/##/' > \"$commandReferenceDir/{/.}.md\" - " - popd - - pushd $commandReferenceDir - for commandPage in ./*.md; do - # All other man page files have names of the form - # 'flox*.md' - if [ "$commandPage" = "./manifest.toml.md" ]; then - continue - fi - command=$(basename $commandPage .md | sed -e "s|-| |g") - echo -e "\n# \`$command\` command\n$(cat $commandPage)" > $commandPage - echo -e "---\n$(cat $commandPage)" > $commandPage - echo -e "description: Command reference for the \`$command\` command.\n$(cat $commandPage)" > $commandPage - echo -e "title: $command\n$(cat $commandPage)" > $commandPage - echo -e "---\n$(cat $commandPage)" > $commandPage - done - - manifestPage="manifest.toml.md" - echo -e "\n# \`manifest.toml\`\n$(cat $manifestPage)" > $manifestPage - echo -e "---\n$(cat $manifestPage)" > $manifestPage - echo -e "description: Reference for the manifest.toml format.\n$(cat $manifestPage)" > $manifestPage - echo -e "title: manifest.toml\n$(cat $manifestPage)" > $manifestPage - echo -e "---\n$(cat $manifestPage)" > $manifestPage - popd - ''; - - shellHook = - postPatch - + '' - echo Welcome to floxDocs - echo - echo For local preview run: - echo mkdocs serve - echo - echo For production build run: - echo mkdocs build - echo - echo Happy documenting! - ''; - - nativeBuildInputs = [ - pyEnv - poetry - gnused - pandoc - fd - lychee - ]; - - buildInputs = [ - pngquant - ]; - - buildPhase = '' - mkdocs build - ''; - - installPhase = '' - lastmod=$(date -d @${builtins.toString self.lastModified} +"%Y-%m-%d") - sed -i -e "s|1980-01-01|$lastmod|" site/sitemap.xml - cp -R site $out - ''; - }; - }); -} diff --git a/mkdocs.yml b/mkdocs.yml index ccfb932..0147530 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -40,6 +40,7 @@ nav: - Layering multiple environments: tutorials/layering-multiple-environments.md - Customizing the environment shell hook: tutorials/customizing-environments.md - Designing multi-arch environments: tutorials/multi-arch-environments.md + - Continuous integration/delivery (CI/CD): tutorials/ci-cd.md - Concepts: - Environments: concepts/environments.md - Environment manifest: concepts/manifest.md diff --git a/pyproject.toml b/pyproject.toml index 136d9aa..512c0e5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,6 +5,7 @@ description = "Documentation for flox" authors = ["Rok Garbas "] license = "TODO" readme = "README.md" +package-mode = false [tool.poetry.dependencies] python = "3.11.*" diff --git a/tesh.sh b/tesh.sh new file mode 100755 index 0000000..4540485 --- /dev/null +++ b/tesh.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +set -euo pipefail + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) + +exec tesh --verbose --no-debug \ + $SCRIPT_DIR/docs/index.md \ + $SCRIPT_DIR/docs/cookbook/validate-identical.md \ + $SCRIPT_DIR/docs/tutorials/build-container-images.md \ + $SCRIPT_DIR/docs/tutorials/managed-environments.md From 601754bb0bf51c16b4acb7093daf0d33c4495d58 Mon Sep 17 00:00:00 2001 From: Zach Mitchell Date: Mon, 9 Sep 2024 21:41:10 -0600 Subject: [PATCH 03/12] feat: add Rust cookbook page (#1) --- docs/cookbook/languages/rust.md | 166 ++++++++++++++++++++++++++++++++ mkdocs.yml | 5 +- 2 files changed, 170 insertions(+), 1 deletion(-) create mode 100644 docs/cookbook/languages/rust.md diff --git a/docs/cookbook/languages/rust.md b/docs/cookbook/languages/rust.md new file mode 100644 index 0000000..7a5b189 --- /dev/null +++ b/docs/cookbook/languages/rust.md @@ -0,0 +1,166 @@ +--- +title: Rust +description: Common questions and solutions for using Rust with Flox +--- + +# Rust + +## What do I need for a basic environment? + +First we'll show you the answer, and then we'll explain. + +A manifest that provides you a Rust development environment would look like +this: + +```toml title="Rust development environment" +version = 1 + +[install] +# Rust toolchain +cargo.pkg-path = "cargo" +cargo.pkg-group = "rust-toolchain" +rustc.pkg-path = "rustc" +rustc.pkg-group = "rust-toolchain" +clippy.pkg-path = "clippy" +clippy.pkg-group = "rust-toolchain" +rustfmt.pkg-path = "rustfmt" +rustfmt.pkg-group = "rust-toolchain" +rust-lib-src.pkg-path = "rustPlatform.rustLibSrc" +rust-lib-src.pkg-group = "rust-toolchain" + +# rust-analyzer goes in its own group because it's updated +# on a different cadence from the compiler and doesn't need +# to match versions +rust-analyzer.pkg-path = "rust-analyzer" +rust-analyzer.pkg-group = "rust-analyzer" + +# Linker +gcc.pkg-path = "gcc" +gcc.systems = ["aarch64-linux", "x86_64-linux"] +clang.pkg-path = "clang" +clang.systems = ["aarch64-darwin", "x86_64-darwin"] + +[vars] + +[hook] + +[profile] + +[options] +systems = ["aarch64-darwin", "x86_64-darwin", "aarch64-linux", "x86_64-linux"] +``` + +The typical Rust developer probably uses [rustup][rustup] to manage their +toolchains. +Flox aims to be an all-in-one solution, so you'll use Flox instead of `rustup`. +The main difference here is that the toolchain components are unbundled in +Flox, +so you'll need to install `cargo` and `rustc` as independent packages. +Some common packages you'll want to install are: + +- `cargo` +- `rustc` +- `rustfmt` +- `clippy` +- `gcc` on Linux, `clang` on macOS +- `libiconv` on macOS +- `rustPlatform.rustLibSrc` +- `rust-analyzer` + +Let's explain some of those packages. + +`cargo` is self-explanatory, it's the default build tool for Rust. +However, all Flox packages automatically install all of their dependencies, +so `cargo` also installs `rustc` on its own. +If that's the case, why do we need a `rustc` package? +The short answer is build scripts (`build.rs` files). + +One of the ways that Flox makes environments deterministic and reproducible +is that packages don't expose their dependencies to `PATH`, +so `cargo` doesn't expose its `rustc` to `PATH`. +This is fine in most cases since you often don't need to call `rustc` yourself, +but this becomes an issue for crates that contain `build.rs` build scripts that +manually invoke `rustc`. +However, even if your crate doesn't have a `build.rs`, +it is very common for a transitive dependency to need to link to system +libraries such as `openssl`. +This is why we install a separate `rustc` package. +You may also find that you need to install a `pkg-config` package if some +system libraries aren't found. + +Build scripts are also why we install the `gcc` or `clang` package: +build scripts often call out to linkers in addition to `rustc`. + +The `libiconv` package is necessary on macOS because the Rust standard library +links against it on macOS. +The `rustPlatform.rustLibSrc` provides the source code for `std` so that +`rust-analyzer` can provide diagnostics and documentation for standard library +code. + +As a final step, you want to make sure that your Rust toolchain componenents +share the same exact versions of their dependencies, +so you'll want to add them to a package group +(`rust-toolchain` in the example above). + +## How do I use nightly compilers? + +Nightly compilers aren't currently packaged in the Flox Catalog. +If you need to use nightly compilers, +you can use our Nix flake support to prepare a flake that provides a nightly +compiler. +You would need to prepare that flake, call it `github:rust-dev/my-nightly`, +and add it to the manifest as a flake package: + +```toml +[install] +rust-nightly.flake = "github:rust-dev/my-nightly" +``` + +Popular projects used by the Nix community for this purpose are: + +- [nix-community/fenix][fenix] +- [oxalica/rust-overlay][rust-overlay] + +[rustup]: https://rustup.rs +[fenix]: https://github.com/nix-community/fenix +[rust-overlay]: https://github.com/oxalica/rust-overlay + +## Add the `target` directory to `PATH` + +If you're developing a binary instead of a library, +you may find it useful to add the `target/debug` or `target/release` +directories to your `PATH` for interactive testing. +That is very simple to do with the `hook.on-activate` section of the manifest: + +```toml +[hook] +on-activate = ''' + export PATH="$PWD/target/debug:$PATH" +''' +``` + +Now if you were developing a binary called `mybin`, +you could call it directly instead of via `target/debug/mybin`, +and it will automatically be kept up to date on every `cargo build`. + +## Add `cargo` aliases + +The `[profile]` section allows you to add aliases to your development shell +that are available after activating your environment. +If you currently use `make`, `just`, or a `.cargo/config.toml` file to set +provide simple aliaes in your development environment, +you may be able to remove those dependencies and just use the Flox manifest +instead: + +```toml +[profile] +bash = ''' + alias build="cargo build" +''' +zsh = ''' + alias build="cargo build" +''' +fish = ''' + alias build "cargo build" +''' +``` diff --git a/mkdocs.yml b/mkdocs.yml index 0147530..f60a79a 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -48,6 +48,9 @@ nav: - Generations: concepts/generations.md - Catalog and Packages: concepts/packages-and-catalog.md - Services: concepts/services.md + - Cookbook: + - Languages: + - ... | flat | cookbook/languages/* - Reference: - Flox manual: - reference/command-reference/flox.md @@ -115,7 +118,7 @@ theme: # - navigation.indexes # Section index pages - navigation.top # Back-to-top button - toc.follow # Anchor following - - toc.integrate # Navigation integration + # - toc.integrate # Navigation integration - navigation.footer # The search will display the likeliest completion for the last word From 4225f22b7c5b192d420b47e1bb54517654082202 Mon Sep 17 00:00:00 2001 From: Rok Garbas Date: Tue, 10 Sep 2024 17:34:13 +0200 Subject: [PATCH 04/12] Use managed netlify token and site id (#17) --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 25328f4..3bcf48d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -53,8 +53,8 @@ jobs: if: ${{ github.repository_owner == 'flox' }} uses: "nwtgck/actions-netlify@v3.0" env: - NETLIFY_AUTH_TOKEN: "${{ secrets.NETLIFY_AUTH_TOKEN }}" - NETLIFY_SITE_ID: "${{ secrets.NETLIFY_SITE_ID }}" + NETLIFY_AUTH_TOKEN: "${{ secrets.MANAGED_NETLIFY_TOKEN }}" + NETLIFY_SITE_ID: "${{ vars.MANAGED_NETLIFY_FLOXDOCS_ID }}" with: github-token: "${{ secrets.GITHUB_TOKEN }}" deploy-message: "Published from GitHub Actions" From 50b4dedb72fca44ba57518d3d175abe1bf530061 Mon Sep 17 00:00:00 2001 From: Rok Garbas Date: Thu, 12 Sep 2024 14:39:26 +0200 Subject: [PATCH 05/12] docs: Document how to use Flox in CircleCI (#18) Co-authored-by: Bryan Honof --- docs/tutorials/ci-cd.md | 37 ++++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/docs/tutorials/ci-cd.md b/docs/tutorials/ci-cd.md index a05509e..5a7ef58 100644 --- a/docs/tutorials/ci-cd.md +++ b/docs/tutorials/ci-cd.md @@ -13,7 +13,11 @@ use Flox with some of the CI/CD platforms. ## Github Actions -An example GitHub workflow. +There are two actions that you can use in a Github workflow: +- `flox/install-flox-action` (r +- `flox/activate-action` (runs command in the context of Flox environment) + +An example GitHub workflow: ```yaml title=".github/workflows/ci.yml" name: "CI" @@ -30,10 +34,10 @@ jobs: uses: "actions/checkout@v4" - name: "Install Flox" # (2)! - uses: "flox/install-flox-action@main" + uses: "flox/install-flox-action@2" - name: "Build" # (3)! - uses: "flox/activate-action@main" + uses: "flox/activate-action@1" with: command: npm run build @@ -49,13 +53,32 @@ jobs: environment. +## CircleCI + +There is a [Flox Orb](https://github.com/flox/flox-orb) that can help you use +Flox inside CircleCI. -## GitLab CI/CD +An example CircleCI workflox: -TODO -## CircleCI +```yaml title=".circleci/config.yml" +version: 2.1 + +orbs: + flox: flox/orb@1.0.0 + +workflows: + build-website: + jobs: + - flox/install # (1)! + - flox/activate: # (2)! + command: "npm run build" +``` + +1. The `install` command will install the latest Flox version. You can change + the `channel` and `version` option which allows you to select excatly which + version of Flox to install. +2. The `activate` command runs a command in the context of a Flox environment. -TODO From 0f706b7c995f363c0179b45d6f2199fa233edba1 Mon Sep 17 00:00:00 2001 From: Rok Garbas Date: Thu, 12 Sep 2024 15:22:28 +0200 Subject: [PATCH 06/12] Also build floxdocs on CircleCI (#19) Co-authored-by: Zach Mitchell Co-authored-by: Bryan Honof --- .circleci/config.yml | 14 ++++++++++++++ README.md | 1 + docs/tutorials/ci-cd.md | 14 +++++++------- 3 files changed, 22 insertions(+), 7 deletions(-) create mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..c12b7e3 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,14 @@ +version: 2.1 + +orbs: + flox: flox/orb@1.0.0 + +jobs: + build: + machine: + image: ubuntu-2204:current + steps: + - checkout + - flox/install + - flox/activate: + command: mkdocs build diff --git a/README.md b/README.md index 88636e6..23a92d9 100644 --- a/README.md +++ b/README.md @@ -90,3 +90,4 @@ $ ./env/bin/pip install --upgrade build twine $ ./env/bin/python -m build $ cp dist/mkdocs_material-*.tar.gz path/to/floxdocs ``` + diff --git a/docs/tutorials/ci-cd.md b/docs/tutorials/ci-cd.md index 5a7ef58..2bd12f5 100644 --- a/docs/tutorials/ci-cd.md +++ b/docs/tutorials/ci-cd.md @@ -67,9 +67,12 @@ version: 2.1 orbs: flox: flox/orb@1.0.0 -workflows: - build-website: - jobs: +jobs: + build: + machine: + image: ubuntu-2204:current + steps: + - checkout - flox/install # (1)! - flox/activate: # (2)! command: "npm run build" @@ -78,7 +81,4 @@ workflows: 1. The `install` command will install the latest Flox version. You can change the `channel` and `version` option which allows you to select excatly which version of Flox to install. -2. The `activate` command runs a command in the context of a Flox environment. - - - +2. The `activate` command runs a command in the context of a Flox environment. \ No newline at end of file From 1ac1b4f1c8b86e4def01a5dede9c26f461e10914 Mon Sep 17 00:00:00 2001 From: Zach Mitchell Date: Thu, 12 Sep 2024 10:32:07 -0400 Subject: [PATCH 07/12] chore: add libiconv for rust cookbook (#20) This is necessary on macOS and was just left out by mistake --- docs/cookbook/languages/rust.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/cookbook/languages/rust.md b/docs/cookbook/languages/rust.md index 7a5b189..92a8841 100644 --- a/docs/cookbook/languages/rust.md +++ b/docs/cookbook/languages/rust.md @@ -27,6 +27,8 @@ rustfmt.pkg-path = "rustfmt" rustfmt.pkg-group = "rust-toolchain" rust-lib-src.pkg-path = "rustPlatform.rustLibSrc" rust-lib-src.pkg-group = "rust-toolchain" +libiconv.pkg-path = "libiconv" +libiconv.systems = ["aarch64-darwin", "x86_64-darwin"] # rust-analyzer goes in its own group because it's updated # on a different cadence from the compiler and doesn't need From ab4b8c8e916f3e0fe60fd9d5de844ef1f38723ec Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 18:23:02 +0200 Subject: [PATCH 08/12] chore(deps-dev): bump trove-classifiers from 2024.7.2 to 2024.9.12 in the all group (#21) Bumps the all group with 1 update: [trove-classifiers](https://github.com/pypa/trove-classifiers). Updates `trove-classifiers` from 2024.7.2 to 2024.9.12
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=trove-classifiers&package-manager=pip&previous-version=2024.7.2&new-version=2024.9.12)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore ` will remove the ignore condition of the specified dependency and ignore conditions
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 9c260b2..55cc3de 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1085,13 +1085,13 @@ test = ["flake8", "isort", "pytest"] [[package]] name = "trove-classifiers" -version = "2024.7.2" +version = "2024.9.12" description = "Canonical source for classifiers on PyPI (pypi.org)." optional = false python-versions = "*" files = [ - {file = "trove_classifiers-2024.7.2-py3-none-any.whl", hash = "sha256:ccc57a33717644df4daca018e7ec3ef57a835c48e96a1e71fc07eb7edac67af6"}, - {file = "trove_classifiers-2024.7.2.tar.gz", hash = "sha256:8328f2ac2ce3fd773cbb37c765a0ed7a83f89dc564c7d452f039b69249d0ac35"}, + {file = "trove_classifiers-2024.9.12-py3-none-any.whl", hash = "sha256:f88a27a892891c87c5f8bbdf110710ae9e0a4725ea8e0fb45f1bcadf088a491f"}, + {file = "trove_classifiers-2024.9.12.tar.gz", hash = "sha256:4b46b3e134a4d01999ac5bc6e528afcc10cc48f0f724f185f267e276005768f4"}, ] [[package]] From 54c9c5bd63f8b8c4bf3817dd8e35d26c04b1a64c Mon Sep 17 00:00:00 2001 From: Rok Garbas Date: Tue, 17 Sep 2024 00:18:27 +0200 Subject: [PATCH 09/12] Document how to use Gitlab (#22) --- .gitlab-ci.yml | 10 ++++++++++ docs/tutorials/ci-cd.md | 36 +++++++++++++++++++++++++++++++++--- 2 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..2423779 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,10 @@ + +build: + stage: build + image: ghcr.io/flox/flox:latest + script: + - flox activate -- mkdocs build + artifacts: + name: floxdocs + paths: + - site/ diff --git a/docs/tutorials/ci-cd.md b/docs/tutorials/ci-cd.md index 2bd12f5..be58170 100644 --- a/docs/tutorials/ci-cd.md +++ b/docs/tutorials/ci-cd.md @@ -14,7 +14,7 @@ use Flox with some of the CI/CD platforms. ## Github Actions There are two actions that you can use in a Github workflow: -- `flox/install-flox-action` (r +- `flox/install-flox-action` (installs Flox CLI) - `flox/activate-action` (runs command in the context of Flox environment) An example GitHub workflow: @@ -58,7 +58,7 @@ jobs: There is a [Flox Orb](https://github.com/flox/flox-orb) that can help you use Flox inside CircleCI. -An example CircleCI workflox: +An example CircleCI workflow: ```yaml title=".circleci/config.yml" @@ -81,4 +81,34 @@ jobs: 1. The `install` command will install the latest Flox version. You can change the `channel` and `version` option which allows you to select excatly which version of Flox to install. -2. The `activate` command runs a command in the context of a Flox environment. \ No newline at end of file +2. The `activate` command runs a command in the context of a Flox environment. + + +## GitLab + +An example GitLab pipeline: + +```yaml title=".gitlab-ci.yml" +build: + stage: build + image: ghcr.io/flox/flox:latest # (1)! + script: + - flox activate -- npm run build # (2)! +``` + +1. Use `ghcr.io/flox/flox` that already comes with Flox. +2. Run command in a Flox environment. + + +## Where to next? + +- :simple-readme:{ .flox-purple .flox-heart } [Sharing environments][sharing_guide] + +- :simple-readme:{ .flox-purple .flox-heart } [Layering multiple environments][layering_guide] + +- :simple-readme:{ .flox-purple .flox-heart } [Customizing the shell hook][customizing_guide] + + +[sharing_guide]: ./sharing-environments.md +[layering_guide]: ./layering-multiple-environments.md +[customizing_guide]: ./customizing-environments.md From 8ac641008582adaf8cfb93b0131064420940f143 Mon Sep 17 00:00:00 2001 From: Rok Garbas Date: Tue, 17 Sep 2024 17:08:33 +0200 Subject: [PATCH 10/12] Add a weekly cron job to update flox environment (#23) --- .github/workflows/update.yml | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .github/workflows/update.yml diff --git a/.github/workflows/update.yml b/.github/workflows/update.yml new file mode 100644 index 0000000..545e8ea --- /dev/null +++ b/.github/workflows/update.yml @@ -0,0 +1,36 @@ +name: "Update Flox environment" + +on: + workflow_dispatch: + schedule: + - cron: "30 0 * * 1" + +jobs: + + upgrade: + name: "Upgrade Flox environment" + runs-on: "ubuntu-latest" + + steps: + - name: "Checkout" + uses: "actions/checkout@v4" + + - name: "Install flox" + uses: "flox/install-flox-action@main" + + - name: "Run upgrade" + run: "flox -vvv upgrade" + + - name: "Create Pull Request" + uses: "peter-evans/create-pull-request@v6" + with: + token: "${{ secrets.MANAGED_FLOXBOT_GITHUB_ACCESS_TOKEN_REPO_SCOPE }}" + add-paths: ".flox" + commit-message: "chore: Update Flox environment" + commiter: "FloxBot " + author: "FloxBot " + branch: "chore-update-flox-environment" + delete-branch: true + title: "chore: Update Flox environment" + body: "This PR was automatically created by [Update workflow](https://github.com/flox/floxdocs/actions/workflows/update.yml)." + labels: "team-developer-support" From 97eabeebe2a8b3b888fcfe96d12a65f7b2af8cfc Mon Sep 17 00:00:00 2001 From: Brendan Magee Date: Tue, 17 Sep 2024 17:40:17 +0100 Subject: [PATCH 11/12] Brendan/add link validation (#16) This PR adds link validation to the build process. --- .flox/env/manifest.lock | 2 +- mkdocs.yml | 15 +- poetry.lock | 642 ++++++++++++++++++++-------------------- pyproject.toml | 1 - 4 files changed, 340 insertions(+), 320 deletions(-) diff --git a/.flox/env/manifest.lock b/.flox/env/manifest.lock index 39c6ae2..1aa571b 100644 --- a/.flox/env/manifest.lock +++ b/.flox/env/manifest.lock @@ -1182,4 +1182,4 @@ "priority": 5 } ] -} \ No newline at end of file +} diff --git a/mkdocs.yml b/mkdocs.yml index f60a79a..328012a 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -56,6 +56,17 @@ nav: - reference/command-reference/flox.md - ... | flat | reference/command-reference/* +strict: true +validation: + nav: + omitted_files: info + not_found: warn + absolute_links: info + links: + not_found: warn + absolute_links: warn + unrecognized_links: warn + extra_css: - css/extra.css @@ -262,10 +273,6 @@ plugins: # https://github.com/lukasgeiter/mkdocs-awesome-pages-plugin - awesome-pages - # Include directory to navigation - # https://github.com/mysiki/mkdocs_include_dir_to_nav - - include_dir_to_nav - # Enables markdown files to be included in other markdown files # https://github.com/mondeja/mkdocs-include-markdown-plugin - include-markdown diff --git a/poetry.lock b/poetry.lock index 55cc3de..450bcae 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2,13 +2,13 @@ [[package]] name = "babel" -version = "2.14.0" +version = "2.16.0" description = "Internationalization utilities" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"}, - {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"}, + {file = "babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b"}, + {file = "babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316"}, ] [package.extras] @@ -16,24 +16,24 @@ dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] [[package]] name = "bracex" -version = "2.4" +version = "2.5" description = "Bash style brace expander." optional = false python-versions = ">=3.8" files = [ - {file = "bracex-2.4-py3-none-any.whl", hash = "sha256:efdc71eff95eaff5e0f8cfebe7d01adf2c8637c8c92edaf63ef348c241a82418"}, - {file = "bracex-2.4.tar.gz", hash = "sha256:a27eaf1df42cf561fed58b7a8f3fdf129d1ea16a81e1fadd1d17989bc6384beb"}, + {file = "bracex-2.5-py3-none-any.whl", hash = "sha256:d2fcf4b606a82ac325471affe1706dd9bbaa3536c91ef86a31f6b766f3dad1d0"}, + {file = "bracex-2.5.tar.gz", hash = "sha256:0725da5045e8d37ea9592ab3614d8b561e22c3c5fde3964699be672e072ab611"}, ] [[package]] name = "cairocffi" -version = "1.6.1" +version = "1.7.1" description = "cffi-based cairo bindings for Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "cairocffi-1.6.1-py3-none-any.whl", hash = "sha256:aa78ee52b9069d7475eeac457389b6275aa92111895d78fbaa2202a52dac112e"}, - {file = "cairocffi-1.6.1.tar.gz", hash = "sha256:78e6bbe47357640c453d0be929fa49cd05cce2e1286f3d2a1ca9cbda7efdb8b7"}, + {file = "cairocffi-1.7.1-py3-none-any.whl", hash = "sha256:9803a0e11f6c962f3b0ae2ec8ba6ae45e957a146a004697a1ac1bbf16b073b3f"}, + {file = "cairocffi-1.7.1.tar.gz", hash = "sha256:2e48ee864884ec4a3a34bfa8c9ab9999f688286eb714a15a43ec9d068c36557b"}, ] [package.dependencies] @@ -41,7 +41,7 @@ cffi = ">=1.1.0" [package.extras] doc = ["sphinx", "sphinx_rtd_theme"] -test = ["flake8", "isort", "numpy", "pikepdf", "pytest"] +test = ["numpy", "pikepdf", "pytest", "ruff"] xcb = ["xcffib (>=1.4.0)"] [[package]] @@ -68,74 +68,89 @@ test = ["flake8", "isort", "pytest"] [[package]] name = "certifi" -version = "2024.2.2" +version = "2024.8.30" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, - {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, + {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, + {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, ] [[package]] name = "cffi" -version = "1.16.0" +version = "1.17.1" description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" files = [ - {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"}, - {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"}, - {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"}, - {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"}, - {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"}, - {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"}, - {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, - {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, - {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, - {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, - {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, - {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, - {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"}, - {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"}, - {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"}, - {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"}, - {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"}, - {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"}, - {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"}, - {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"}, - {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"}, - {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"}, - {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"}, - {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"}, - {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"}, - {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, - {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, + {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, + {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, + {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, + {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, + {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, + {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, + {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, + {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, + {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, + {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, + {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, + {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, + {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, + {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, ] [package.dependencies] @@ -314,24 +329,27 @@ dev = ["flake8", "markdown", "twine", "wheel"] [[package]] name = "idna" -version = "3.6" +version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" files = [ - {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, - {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + [[package]] name = "jinja2" -version = "3.1.3" +version = "3.1.4" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" files = [ - {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, - {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, ] [package.dependencies] @@ -342,13 +360,13 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "markdown" -version = "3.6" +version = "3.7" description = "Python implementation of John Gruber's Markdown." optional = false python-versions = ">=3.8" files = [ - {file = "Markdown-3.6-py3-none-any.whl", hash = "sha256:48f276f4d8cfb8ce6527c8f79e2ee29708508bf4d40aa410fbc3b4ee832c850f"}, - {file = "Markdown-3.6.tar.gz", hash = "sha256:ed4f41f6daecbeeb96e576ce414c41d2d876daa9a16cb35fa8ed8c2ddfad0224"}, + {file = "Markdown-3.7-py3-none-any.whl", hash = "sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803"}, + {file = "markdown-3.7.tar.gz", hash = "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2"}, ] [package.extras] @@ -492,20 +510,6 @@ files = [ {file = "mkdocs_glightbox-0.4.0-py3-none-any.whl", hash = "sha256:e0107beee75d3eb7380ac06ea2d6eac94c999eaa49f8c3cbab0e7be2ac006ccf"}, ] -[[package]] -name = "mkdocs-include-dir-to-nav" -version = "1.2.0" -description = "A MkDocs plugin include all file in dir to navigation" -optional = false -python-versions = ">=3.6" -files = [ - {file = "mkdocs_include_dir_to_nav-1.2.0-py3-none-any.whl", hash = "sha256:b09de17ad754aa93aec7ba64acf8fdd53f7a2ceb92e8cffe21646b0e97f4ddf0"}, - {file = "mkdocs_include_dir_to_nav-1.2.0.tar.gz", hash = "sha256:2d7b0bb581471fce6f215b6381f1f4d90a3a069829281b7f5d01a5b7abee15d0"}, -] - -[package.dependencies] -mkdocs = ">=1.0.4" - [[package]] name = "mkdocs-include-markdown-plugin" version = "6.2.2" @@ -526,18 +530,19 @@ cache = ["platformdirs"] [[package]] name = "mkdocs-macros-plugin" -version = "1.0.5" +version = "1.2.0" description = "Unleash the power of MkDocs with macros and variables" optional = false python-versions = ">=3.8" files = [ - {file = "mkdocs-macros-plugin-1.0.5.tar.gz", hash = "sha256:fe348d75f01c911f362b6d998c57b3d85b505876dde69db924f2c512c395c328"}, - {file = "mkdocs_macros_plugin-1.0.5-py3-none-any.whl", hash = "sha256:f60e26f711f5a830ddf1e7980865bf5c0f1180db56109803cdd280073c1a050a"}, + {file = "mkdocs-macros-plugin-1.2.0.tar.gz", hash = "sha256:7603b85cb336d669e29a8a9cc3af8b90767ffdf6021b3e023d5ec2e0a1f927a7"}, + {file = "mkdocs_macros_plugin-1.2.0-py3-none-any.whl", hash = "sha256:3e442f8f37aa69710a69b5389e6b6cd0f54f4fcaee354aa57a61735ba8f97d27"}, ] [package.dependencies] jinja2 = "*" mkdocs = ">=0.17" +packaging = "*" python-dateutil = "*" pyyaml = "*" termcolor = "*" @@ -606,25 +611,30 @@ icu = ["PyICU (>=1.0.0)"] [[package]] name = "packaging" -version = "23.2" +version = "24.1" description = "Core utilities for Python packages" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, - {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, + {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, + {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, ] [[package]] name = "paginate" -version = "0.5.6" +version = "0.5.7" description = "Divides large result sets into pages for easier browsing" optional = false python-versions = "*" files = [ - {file = "paginate-0.5.6.tar.gz", hash = "sha256:5e6007b6a9398177a7e1648d04fdd9f8c9766a1a945bceac82f1929e8c78af2d"}, + {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"}, + {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"}, ] +[package.extras] +dev = ["pytest", "tox"] +lint = ["black"] + [[package]] name = "pathspec" version = "0.12.1" @@ -742,18 +752,19 @@ tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "pa [[package]] name = "platformdirs" -version = "4.2.0" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +version = "4.3.3" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, - {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, + {file = "platformdirs-4.3.3-py3-none-any.whl", hash = "sha256:50a5450e2e84f44539718293cbb1da0a0885c9d14adf21b77bae4e66fc99d9b5"}, + {file = "platformdirs-4.3.3.tar.gz", hash = "sha256:d4e0b7d8ec176b341fb03cb11ca12d0276faa8c485f9cd218f613840463fc2c0"}, ] [package.extras] -docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] [[package]] name = "ptyprocess" @@ -768,28 +779,27 @@ files = [ [[package]] name = "pycparser" -version = "2.21" +version = "2.22" description = "C parser in Python" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.8" files = [ - {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, - {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, ] [[package]] name = "pygments" -version = "2.17.2" +version = "2.18.0" description = "Pygments is a syntax highlighting package written in Python." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"}, - {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"}, + {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, + {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, ] [package.extras] -plugins = ["importlib-metadata"] windows-terminal = ["colorama (>=0.4.6)"] [[package]] @@ -812,13 +822,13 @@ extra = ["pygments (>=2.12)"] [[package]] name = "python-dateutil" -version = "2.8.2" +version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, - {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, ] [package.dependencies] @@ -826,62 +836,64 @@ six = ">=1.5" [[package]] name = "pyyaml" -version = "6.0.1" +version = "6.0.2" description = "YAML parser and emitter for Python" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" 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_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, - {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"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] [[package]] @@ -900,115 +912,116 @@ pyyaml = "*" [[package]] name = "regex" -version = "2023.12.25" +version = "2024.9.11" description = "Alternative regular expression module, to replace re." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5"}, - {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8"}, - {file = "regex-2023.12.25-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d865984b3f71f6d0af64d0d88f5733521698f6c16f445bb09ce746c92c97c586"}, - {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e0eabac536b4cc7f57a5f3d095bfa557860ab912f25965e08fe1545e2ed8b4c"}, - {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c25a8ad70e716f96e13a637802813f65d8a6760ef48672aa3502f4c24ea8b400"}, - {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9b6d73353f777630626f403b0652055ebfe8ff142a44ec2cf18ae470395766e"}, - {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9cc99d6946d750eb75827cb53c4371b8b0fe89c733a94b1573c9dd16ea6c9e4"}, - {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88d1f7bef20c721359d8675f7d9f8e414ec5003d8f642fdfd8087777ff7f94b5"}, - {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cb3fe77aec8f1995611f966d0c656fdce398317f850d0e6e7aebdfe61f40e1cd"}, - {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7aa47c2e9ea33a4a2a05f40fcd3ea36d73853a2aae7b4feab6fc85f8bf2c9704"}, - {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:df26481f0c7a3f8739fecb3e81bc9da3fcfae34d6c094563b9d4670b047312e1"}, - {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c40281f7d70baf6e0db0c2f7472b31609f5bc2748fe7275ea65a0b4601d9b392"}, - {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:d94a1db462d5690ebf6ae86d11c5e420042b9898af5dcf278bd97d6bda065423"}, - {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ba1b30765a55acf15dce3f364e4928b80858fa8f979ad41f862358939bdd1f2f"}, - {file = "regex-2023.12.25-cp310-cp310-win32.whl", hash = "sha256:150c39f5b964e4d7dba46a7962a088fbc91f06e606f023ce57bb347a3b2d4630"}, - {file = "regex-2023.12.25-cp310-cp310-win_amd64.whl", hash = "sha256:09da66917262d9481c719599116c7dc0c321ffcec4b1f510c4f8a066f8768105"}, - {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1b9d811f72210fa9306aeb88385b8f8bcef0dfbf3873410413c00aa94c56c2b6"}, - {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d902a43085a308cef32c0d3aea962524b725403fd9373dea18110904003bac97"}, - {file = "regex-2023.12.25-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d166eafc19f4718df38887b2bbe1467a4f74a9830e8605089ea7a30dd4da8887"}, - {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7ad32824b7f02bb3c9f80306d405a1d9b7bb89362d68b3c5a9be53836caebdb"}, - {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:636ba0a77de609d6510235b7f0e77ec494d2657108f777e8765efc060094c98c"}, - {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fda75704357805eb953a3ee15a2b240694a9a514548cd49b3c5124b4e2ad01b"}, - {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f72cbae7f6b01591f90814250e636065850c5926751af02bb48da94dfced7baa"}, - {file = "regex-2023.12.25-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db2a0b1857f18b11e3b0e54ddfefc96af46b0896fb678c85f63fb8c37518b3e7"}, - {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7502534e55c7c36c0978c91ba6f61703faf7ce733715ca48f499d3dbbd7657e0"}, - {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e8c7e08bb566de4faaf11984af13f6bcf6a08f327b13631d41d62592681d24fe"}, - {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:283fc8eed679758de38fe493b7d7d84a198b558942b03f017b1f94dda8efae80"}, - {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f44dd4d68697559d007462b0a3a1d9acd61d97072b71f6d1968daef26bc744bd"}, - {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:67d3ccfc590e5e7197750fcb3a2915b416a53e2de847a728cfa60141054123d4"}, - {file = "regex-2023.12.25-cp311-cp311-win32.whl", hash = "sha256:68191f80a9bad283432385961d9efe09d783bcd36ed35a60fb1ff3f1ec2efe87"}, - {file = "regex-2023.12.25-cp311-cp311-win_amd64.whl", hash = "sha256:7d2af3f6b8419661a0c421584cfe8aaec1c0e435ce7e47ee2a97e344b98f794f"}, - {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8a0ccf52bb37d1a700375a6b395bff5dd15c50acb745f7db30415bae3c2b0715"}, - {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c3c4a78615b7762740531c27cf46e2f388d8d727d0c0c739e72048beb26c8a9d"}, - {file = "regex-2023.12.25-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ad83e7545b4ab69216cef4cc47e344d19622e28aabec61574b20257c65466d6a"}, - {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7a635871143661feccce3979e1727c4e094f2bdfd3ec4b90dfd4f16f571a87a"}, - {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d498eea3f581fbe1b34b59c697512a8baef88212f92e4c7830fcc1499f5b45a5"}, - {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:43f7cd5754d02a56ae4ebb91b33461dc67be8e3e0153f593c509e21d219c5060"}, - {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51f4b32f793812714fd5307222a7f77e739b9bc566dc94a18126aba3b92b98a3"}, - {file = "regex-2023.12.25-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba99d8077424501b9616b43a2d208095746fb1284fc5ba490139651f971d39d9"}, - {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4bfc2b16e3ba8850e0e262467275dd4d62f0d045e0e9eda2bc65078c0110a11f"}, - {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8c2c19dae8a3eb0ea45a8448356ed561be843b13cbc34b840922ddf565498c1c"}, - {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:60080bb3d8617d96f0fb7e19796384cc2467447ef1c491694850ebd3670bc457"}, - {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b77e27b79448e34c2c51c09836033056a0547aa360c45eeeb67803da7b0eedaf"}, - {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:518440c991f514331f4850a63560321f833979d145d7d81186dbe2f19e27ae3d"}, - {file = "regex-2023.12.25-cp312-cp312-win32.whl", hash = "sha256:e2610e9406d3b0073636a3a2e80db05a02f0c3169b5632022b4e81c0364bcda5"}, - {file = "regex-2023.12.25-cp312-cp312-win_amd64.whl", hash = "sha256:cc37b9aeebab425f11f27e5e9e6cf580be7206c6582a64467a14dda211abc232"}, - {file = "regex-2023.12.25-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:da695d75ac97cb1cd725adac136d25ca687da4536154cdc2815f576e4da11c69"}, - {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d126361607b33c4eb7b36debc173bf25d7805847346dd4d99b5499e1fef52bc7"}, - {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4719bb05094d7d8563a450cf8738d2e1061420f79cfcc1fa7f0a44744c4d8f73"}, - {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dd58946bce44b53b06d94aa95560d0b243eb2fe64227cba50017a8d8b3cd3e2"}, - {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22a86d9fff2009302c440b9d799ef2fe322416d2d58fc124b926aa89365ec482"}, - {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2aae8101919e8aa05ecfe6322b278f41ce2994c4a430303c4cd163fef746e04f"}, - {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e692296c4cc2873967771345a876bcfc1c547e8dd695c6b89342488b0ea55cd8"}, - {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:263ef5cc10979837f243950637fffb06e8daed7f1ac1e39d5910fd29929e489a"}, - {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d6f7e255e5fa94642a0724e35406e6cb7001c09d476ab5fce002f652b36d0c39"}, - {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:88ad44e220e22b63b0f8f81f007e8abbb92874d8ced66f32571ef8beb0643b2b"}, - {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:3a17d3ede18f9cedcbe23d2daa8a2cd6f59fe2bf082c567e43083bba3fb00347"}, - {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d15b274f9e15b1a0b7a45d2ac86d1f634d983ca40d6b886721626c47a400bf39"}, - {file = "regex-2023.12.25-cp37-cp37m-win32.whl", hash = "sha256:ed19b3a05ae0c97dd8f75a5d8f21f7723a8c33bbc555da6bbe1f96c470139d3c"}, - {file = "regex-2023.12.25-cp37-cp37m-win_amd64.whl", hash = "sha256:a6d1047952c0b8104a1d371f88f4ab62e6275567d4458c1e26e9627ad489b445"}, - {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b43523d7bc2abd757119dbfb38af91b5735eea45537ec6ec3a5ec3f9562a1c53"}, - {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:efb2d82f33b2212898f1659fb1c2e9ac30493ac41e4d53123da374c3b5541e64"}, - {file = "regex-2023.12.25-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b7fca9205b59c1a3d5031f7e64ed627a1074730a51c2a80e97653e3e9fa0d415"}, - {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086dd15e9435b393ae06f96ab69ab2d333f5d65cbe65ca5a3ef0ec9564dfe770"}, - {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e81469f7d01efed9b53740aedd26085f20d49da65f9c1f41e822a33992cb1590"}, - {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:34e4af5b27232f68042aa40a91c3b9bb4da0eeb31b7632e0091afc4310afe6cb"}, - {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9852b76ab558e45b20bf1893b59af64a28bd3820b0c2efc80e0a70a4a3ea51c1"}, - {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff100b203092af77d1a5a7abe085b3506b7eaaf9abf65b73b7d6905b6cb76988"}, - {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cc038b2d8b1470364b1888a98fd22d616fba2b6309c5b5f181ad4483e0017861"}, - {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:094ba386bb5c01e54e14434d4caabf6583334090865b23ef58e0424a6286d3dc"}, - {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5cd05d0f57846d8ba4b71d9c00f6f37d6b97d5e5ef8b3c3840426a475c8f70f4"}, - {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:9aa1a67bbf0f957bbe096375887b2505f5d8ae16bf04488e8b0f334c36e31360"}, - {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:98a2636994f943b871786c9e82bfe7883ecdaba2ef5df54e1450fa9869d1f756"}, - {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:37f8e93a81fc5e5bd8db7e10e62dc64261bcd88f8d7e6640aaebe9bc180d9ce2"}, - {file = "regex-2023.12.25-cp38-cp38-win32.whl", hash = "sha256:d78bd484930c1da2b9679290a41cdb25cc127d783768a0369d6b449e72f88beb"}, - {file = "regex-2023.12.25-cp38-cp38-win_amd64.whl", hash = "sha256:b521dcecebc5b978b447f0f69b5b7f3840eac454862270406a39837ffae4e697"}, - {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f7bc09bc9c29ebead055bcba136a67378f03d66bf359e87d0f7c759d6d4ffa31"}, - {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e14b73607d6231f3cc4622809c196b540a6a44e903bcfad940779c80dffa7be7"}, - {file = "regex-2023.12.25-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9eda5f7a50141291beda3edd00abc2d4a5b16c29c92daf8d5bd76934150f3edc"}, - {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc6bb9aa69aacf0f6032c307da718f61a40cf970849e471254e0e91c56ffca95"}, - {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:298dc6354d414bc921581be85695d18912bea163a8b23cac9a2562bbcd5088b1"}, - {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f4e475a80ecbd15896a976aa0b386c5525d0ed34d5c600b6d3ebac0a67c7ddf"}, - {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:531ac6cf22b53e0696f8e1d56ce2396311254eb806111ddd3922c9d937151dae"}, - {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22f3470f7524b6da61e2020672df2f3063676aff444db1daa283c2ea4ed259d6"}, - {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:89723d2112697feaa320c9d351e5f5e7b841e83f8b143dba8e2d2b5f04e10923"}, - {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0ecf44ddf9171cd7566ef1768047f6e66975788258b1c6c6ca78098b95cf9a3d"}, - {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:905466ad1702ed4acfd67a902af50b8db1feeb9781436372261808df7a2a7bca"}, - {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:4558410b7a5607a645e9804a3e9dd509af12fb72b9825b13791a37cd417d73a5"}, - {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:7e316026cc1095f2a3e8cc012822c99f413b702eaa2ca5408a513609488cb62f"}, - {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3b1de218d5375cd6ac4b5493e0b9f3df2be331e86520f23382f216c137913d20"}, - {file = "regex-2023.12.25-cp39-cp39-win32.whl", hash = "sha256:11a963f8e25ab5c61348d090bf1b07f1953929c13bd2309a0662e9ff680763c9"}, - {file = "regex-2023.12.25-cp39-cp39-win_amd64.whl", hash = "sha256:e693e233ac92ba83a87024e1d32b5f9ab15ca55ddd916d878146f4e3406b5c91"}, - {file = "regex-2023.12.25.tar.gz", hash = "sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5"}, + {file = "regex-2024.9.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1494fa8725c285a81d01dc8c06b55287a1ee5e0e382d8413adc0a9197aac6408"}, + {file = "regex-2024.9.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0e12c481ad92d129c78f13a2a3662317e46ee7ef96c94fd332e1c29131875b7d"}, + {file = "regex-2024.9.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:16e13a7929791ac1216afde26f712802e3df7bf0360b32e4914dca3ab8baeea5"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46989629904bad940bbec2106528140a218b4a36bb3042d8406980be1941429c"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a906ed5e47a0ce5f04b2c981af1c9acf9e8696066900bf03b9d7879a6f679fc8"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9a091b0550b3b0207784a7d6d0f1a00d1d1c8a11699c1a4d93db3fbefc3ad35"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ddcd9a179c0a6fa8add279a4444015acddcd7f232a49071ae57fa6e278f1f71"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6b41e1adc61fa347662b09398e31ad446afadff932a24807d3ceb955ed865cc8"}, + {file = "regex-2024.9.11-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ced479f601cd2f8ca1fd7b23925a7e0ad512a56d6e9476f79b8f381d9d37090a"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:635a1d96665f84b292e401c3d62775851aedc31d4f8784117b3c68c4fcd4118d"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:c0256beda696edcf7d97ef16b2a33a8e5a875affd6fa6567b54f7c577b30a137"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:3ce4f1185db3fbde8ed8aa223fc9620f276c58de8b0d4f8cc86fd1360829edb6"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:09d77559e80dcc9d24570da3745ab859a9cf91953062e4ab126ba9d5993688ca"}, + {file = "regex-2024.9.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7a22ccefd4db3f12b526eccb129390942fe874a3a9fdbdd24cf55773a1faab1a"}, + {file = "regex-2024.9.11-cp310-cp310-win32.whl", hash = "sha256:f745ec09bc1b0bd15cfc73df6fa4f726dcc26bb16c23a03f9e3367d357eeedd0"}, + {file = "regex-2024.9.11-cp310-cp310-win_amd64.whl", hash = "sha256:01c2acb51f8a7d6494c8c5eafe3d8e06d76563d8a8a4643b37e9b2dd8a2ff623"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2cce2449e5927a0bf084d346da6cd5eb016b2beca10d0013ab50e3c226ffc0df"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3b37fa423beefa44919e009745ccbf353d8c981516e807995b2bd11c2c77d268"}, + {file = "regex-2024.9.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:64ce2799bd75039b480cc0360907c4fb2f50022f030bf9e7a8705b636e408fad"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4cc92bb6db56ab0c1cbd17294e14f5e9224f0cc6521167ef388332604e92679"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d05ac6fa06959c4172eccd99a222e1fbf17b5670c4d596cb1e5cde99600674c4"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:040562757795eeea356394a7fb13076ad4f99d3c62ab0f8bdfb21f99a1f85664"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6113c008a7780792efc80f9dfe10ba0cd043cbf8dc9a76ef757850f51b4edc50"}, + {file = "regex-2024.9.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8e5fb5f77c8745a60105403a774fe2c1759b71d3e7b4ca237a5e67ad066c7199"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:54d9ff35d4515debf14bc27f1e3b38bfc453eff3220f5bce159642fa762fe5d4"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:df5cbb1fbc74a8305b6065d4ade43b993be03dbe0f8b30032cced0d7740994bd"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:7fb89ee5d106e4a7a51bce305ac4efb981536301895f7bdcf93ec92ae0d91c7f"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a738b937d512b30bf75995c0159c0ddf9eec0775c9d72ac0202076c72f24aa96"}, + {file = "regex-2024.9.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e28f9faeb14b6f23ac55bfbbfd3643f5c7c18ede093977f1df249f73fd22c7b1"}, + {file = "regex-2024.9.11-cp311-cp311-win32.whl", hash = "sha256:18e707ce6c92d7282dfce370cd205098384b8ee21544e7cb29b8aab955b66fa9"}, + {file = "regex-2024.9.11-cp311-cp311-win_amd64.whl", hash = "sha256:313ea15e5ff2a8cbbad96ccef6be638393041b0a7863183c2d31e0c6116688cf"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b0d0a6c64fcc4ef9c69bd5b3b3626cc3776520a1637d8abaa62b9edc147a58f7"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:49b0e06786ea663f933f3710a51e9385ce0cba0ea56b67107fd841a55d56a231"}, + {file = "regex-2024.9.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5b513b6997a0b2f10e4fd3a1313568e373926e8c252bd76c960f96fd039cd28d"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee439691d8c23e76f9802c42a95cfeebf9d47cf4ffd06f18489122dbb0a7ad64"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a8f877c89719d759e52783f7fe6e1c67121076b87b40542966c02de5503ace42"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23b30c62d0f16827f2ae9f2bb87619bc4fba2044911e2e6c2eb1af0161cdb766"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85ab7824093d8f10d44330fe1e6493f756f252d145323dd17ab6b48733ff6c0a"}, + {file = "regex-2024.9.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8dee5b4810a89447151999428fe096977346cf2f29f4d5e29609d2e19e0199c9"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:98eeee2f2e63edae2181c886d7911ce502e1292794f4c5ee71e60e23e8d26b5d"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:57fdd2e0b2694ce6fc2e5ccf189789c3e2962916fb38779d3e3521ff8fe7a822"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d552c78411f60b1fdaafd117a1fca2f02e562e309223b9d44b7de8be451ec5e0"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a0b2b80321c2ed3fcf0385ec9e51a12253c50f146fddb2abbb10f033fe3d049a"}, + {file = "regex-2024.9.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:18406efb2f5a0e57e3a5881cd9354c1512d3bb4f5c45d96d110a66114d84d23a"}, + {file = "regex-2024.9.11-cp312-cp312-win32.whl", hash = "sha256:e464b467f1588e2c42d26814231edecbcfe77f5ac414d92cbf4e7b55b2c2a776"}, + {file = "regex-2024.9.11-cp312-cp312-win_amd64.whl", hash = "sha256:9e8719792ca63c6b8340380352c24dcb8cd7ec49dae36e963742a275dfae6009"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:c157bb447303070f256e084668b702073db99bbb61d44f85d811025fcf38f784"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4db21ece84dfeefc5d8a3863f101995de646c6cb0536952c321a2650aa202c36"}, + {file = "regex-2024.9.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:220e92a30b426daf23bb67a7962900ed4613589bab80382be09b48896d211e92"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1ae19e64c14c7ec1995f40bd932448713d3c73509e82d8cd7744dc00e29e86"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f47cd43a5bfa48f86925fe26fbdd0a488ff15b62468abb5d2a1e092a4fb10e85"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9d4a76b96f398697fe01117093613166e6aa8195d63f1b4ec3f21ab637632963"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ea51dcc0835eea2ea31d66456210a4e01a076d820e9039b04ae8d17ac11dee6"}, + {file = "regex-2024.9.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7aaa315101c6567a9a45d2839322c51c8d6e81f67683d529512f5bcfb99c802"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c57d08ad67aba97af57a7263c2d9006d5c404d721c5f7542f077f109ec2a4a29"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f8404bf61298bb6f8224bb9176c1424548ee1181130818fcd2cbffddc768bed8"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:dd4490a33eb909ef5078ab20f5f000087afa2a4daa27b4c072ccb3cb3050ad84"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:eee9130eaad130649fd73e5cd92f60e55708952260ede70da64de420cdcad554"}, + {file = "regex-2024.9.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6a2644a93da36c784e546de579ec1806bfd2763ef47babc1b03d765fe560c9f8"}, + {file = "regex-2024.9.11-cp313-cp313-win32.whl", hash = "sha256:e997fd30430c57138adc06bba4c7c2968fb13d101e57dd5bb9355bf8ce3fa7e8"}, + {file = "regex-2024.9.11-cp313-cp313-win_amd64.whl", hash = "sha256:042c55879cfeb21a8adacc84ea347721d3d83a159da6acdf1116859e2427c43f"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:35f4a6f96aa6cb3f2f7247027b07b15a374f0d5b912c0001418d1d55024d5cb4"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:55b96e7ce3a69a8449a66984c268062fbaa0d8ae437b285428e12797baefce7e"}, + {file = "regex-2024.9.11-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cb130fccd1a37ed894824b8c046321540263013da72745d755f2d35114b81a60"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:323c1f04be6b2968944d730e5c2091c8c89767903ecaa135203eec4565ed2b2b"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be1c8ed48c4c4065ecb19d882a0ce1afe0745dfad8ce48c49586b90a55f02366"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b5b029322e6e7b94fff16cd120ab35a253236a5f99a79fb04fda7ae71ca20ae8"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6fff13ef6b5f29221d6904aa816c34701462956aa72a77f1f151a8ec4f56aeb"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:587d4af3979376652010e400accc30404e6c16b7df574048ab1f581af82065e4"}, + {file = "regex-2024.9.11-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:079400a8269544b955ffa9e31f186f01d96829110a3bf79dc338e9910f794fca"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:f9268774428ec173654985ce55fc6caf4c6d11ade0f6f914d48ef4719eb05ebb"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:23f9985c8784e544d53fc2930fc1ac1a7319f5d5332d228437acc9f418f2f168"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:ae2941333154baff9838e88aa71c1d84f4438189ecc6021a12c7573728b5838e"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:e93f1c331ca8e86fe877a48ad64e77882c0c4da0097f2212873a69bbfea95d0c"}, + {file = "regex-2024.9.11-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:846bc79ee753acf93aef4184c040d709940c9d001029ceb7b7a52747b80ed2dd"}, + {file = "regex-2024.9.11-cp38-cp38-win32.whl", hash = "sha256:c94bb0a9f1db10a1d16c00880bdebd5f9faf267273b8f5bd1878126e0fbde771"}, + {file = "regex-2024.9.11-cp38-cp38-win_amd64.whl", hash = "sha256:2b08fce89fbd45664d3df6ad93e554b6c16933ffa9d55cb7e01182baaf971508"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:07f45f287469039ffc2c53caf6803cd506eb5f5f637f1d4acb37a738f71dd066"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4838e24ee015101d9f901988001038f7f0d90dc0c3b115541a1365fb439add62"}, + {file = "regex-2024.9.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6edd623bae6a737f10ce853ea076f56f507fd7726bee96a41ee3d68d347e4d16"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c69ada171c2d0e97a4b5aa78fbb835e0ffbb6b13fc5da968c09811346564f0d3"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02087ea0a03b4af1ed6ebab2c54d7118127fee8d71b26398e8e4b05b78963199"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:69dee6a020693d12a3cf892aba4808fe168d2a4cef368eb9bf74f5398bfd4ee8"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:297f54910247508e6e5cae669f2bc308985c60540a4edd1c77203ef19bfa63ca"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ecea58b43a67b1b79805f1a0255730edaf5191ecef84dbc4cc85eb30bc8b63b9"}, + {file = "regex-2024.9.11-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:eab4bb380f15e189d1313195b062a6aa908f5bd687a0ceccd47c8211e9cf0d4a"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0cbff728659ce4bbf4c30b2a1be040faafaa9eca6ecde40aaff86f7889f4ab39"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:54c4a097b8bc5bb0dfc83ae498061d53ad7b5762e00f4adaa23bee22b012e6ba"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:73d6d2f64f4d894c96626a75578b0bf7d9e56dcda8c3d037a2118fdfe9b1c664"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:e53b5fbab5d675aec9f0c501274c467c0f9a5d23696cfc94247e1fb56501ed89"}, + {file = "regex-2024.9.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0ffbcf9221e04502fc35e54d1ce9567541979c3fdfb93d2c554f0ca583a19b35"}, + {file = "regex-2024.9.11-cp39-cp39-win32.whl", hash = "sha256:e4c22e1ac1f1ec1e09f72e6c44d8f2244173db7eb9629cc3a346a8d7ccc31142"}, + {file = "regex-2024.9.11-cp39-cp39-win_amd64.whl", hash = "sha256:faa3c142464efec496967359ca99696c896c591c56c53506bac1ad465f66e919"}, + {file = "regex-2024.9.11.tar.gz", hash = "sha256:6c188c307e8433bcb63dc1915022deb553b4203a70722fc542c363bf120a01fd"}, ] [[package]] name = "requests" -version = "2.31.0" +version = "2.32.3" description = "Python HTTP for Humans." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, ] [package.dependencies] @@ -1067,13 +1080,13 @@ resolved_reference = "c45842666e9c364fd713ad82d763b909e976ca23" [[package]] name = "tinycss2" -version = "1.2.1" +version = "1.3.0" description = "A tiny CSS parser" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tinycss2-1.2.1-py3-none-any.whl", hash = "sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847"}, - {file = "tinycss2-1.2.1.tar.gz", hash = "sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627"}, + {file = "tinycss2-1.3.0-py3-none-any.whl", hash = "sha256:54a8dbdffb334d536851be0226030e9505965bb2f30f21a4a82c55fb2a80fae7"}, + {file = "tinycss2-1.3.0.tar.gz", hash = "sha256:152f9acabd296a8375fbca5b84c961ff95971fcfc32e79550c8df8e29118c54d"}, ] [package.dependencies] @@ -1081,7 +1094,7 @@ webencodings = ">=0.4" [package.extras] doc = ["sphinx", "sphinx_rtd_theme"] -test = ["flake8", "isort", "pytest"] +test = ["pytest", "ruff"] [[package]] name = "trove-classifiers" @@ -1096,13 +1109,13 @@ files = [ [[package]] name = "urllib3" -version = "2.2.1" +version = "2.2.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, - {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, ] [package.extras] @@ -1113,40 +1126,41 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "watchdog" -version = "4.0.0" +version = "5.0.2" description = "Filesystem events monitoring" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "watchdog-4.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:39cb34b1f1afbf23e9562501673e7146777efe95da24fab5707b88f7fb11649b"}, - {file = "watchdog-4.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c522392acc5e962bcac3b22b9592493ffd06d1fc5d755954e6be9f4990de932b"}, - {file = "watchdog-4.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6c47bdd680009b11c9ac382163e05ca43baf4127954c5f6d0250e7d772d2b80c"}, - {file = "watchdog-4.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8350d4055505412a426b6ad8c521bc7d367d1637a762c70fdd93a3a0d595990b"}, - {file = "watchdog-4.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c17d98799f32e3f55f181f19dd2021d762eb38fdd381b4a748b9f5a36738e935"}, - {file = "watchdog-4.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4986db5e8880b0e6b7cd52ba36255d4793bf5cdc95bd6264806c233173b1ec0b"}, - {file = "watchdog-4.0.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:11e12fafb13372e18ca1bbf12d50f593e7280646687463dd47730fd4f4d5d257"}, - {file = "watchdog-4.0.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5369136a6474678e02426bd984466343924d1df8e2fd94a9b443cb7e3aa20d19"}, - {file = "watchdog-4.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:76ad8484379695f3fe46228962017a7e1337e9acadafed67eb20aabb175df98b"}, - {file = "watchdog-4.0.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:45cc09cc4c3b43fb10b59ef4d07318d9a3ecdbff03abd2e36e77b6dd9f9a5c85"}, - {file = "watchdog-4.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:eed82cdf79cd7f0232e2fdc1ad05b06a5e102a43e331f7d041e5f0e0a34a51c4"}, - {file = "watchdog-4.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ba30a896166f0fee83183cec913298151b73164160d965af2e93a20bbd2ab605"}, - {file = "watchdog-4.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d18d7f18a47de6863cd480734613502904611730f8def45fc52a5d97503e5101"}, - {file = "watchdog-4.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2895bf0518361a9728773083908801a376743bcc37dfa252b801af8fd281b1ca"}, - {file = "watchdog-4.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:87e9df830022488e235dd601478c15ad73a0389628588ba0b028cb74eb72fed8"}, - {file = "watchdog-4.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6e949a8a94186bced05b6508faa61b7adacc911115664ccb1923b9ad1f1ccf7b"}, - {file = "watchdog-4.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6a4db54edea37d1058b08947c789a2354ee02972ed5d1e0dca9b0b820f4c7f92"}, - {file = "watchdog-4.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d31481ccf4694a8416b681544c23bd271f5a123162ab603c7d7d2dd7dd901a07"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8fec441f5adcf81dd240a5fe78e3d83767999771630b5ddfc5867827a34fa3d3"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:6a9c71a0b02985b4b0b6d14b875a6c86ddea2fdbebd0c9a720a806a8bbffc69f"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:557ba04c816d23ce98a06e70af6abaa0485f6d94994ec78a42b05d1c03dcbd50"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:d0f9bd1fd919134d459d8abf954f63886745f4660ef66480b9d753a7c9d40927"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:f9b2fdca47dc855516b2d66eef3c39f2672cbf7e7a42e7e67ad2cbfcd6ba107d"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:73c7a935e62033bd5e8f0da33a4dcb763da2361921a69a5a95aaf6c93aa03a87"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:6a80d5cae8c265842c7419c560b9961561556c4361b297b4c431903f8c33b269"}, - {file = "watchdog-4.0.0-py3-none-win32.whl", hash = "sha256:8f9a542c979df62098ae9c58b19e03ad3df1c9d8c6895d96c0d51da17b243b1c"}, - {file = "watchdog-4.0.0-py3-none-win_amd64.whl", hash = "sha256:f970663fa4f7e80401a7b0cbeec00fa801bf0287d93d48368fc3e6fa32716245"}, - {file = "watchdog-4.0.0-py3-none-win_ia64.whl", hash = "sha256:9a03e16e55465177d416699331b0f3564138f1807ecc5f2de9d55d8f188d08c7"}, - {file = "watchdog-4.0.0.tar.gz", hash = "sha256:e3e7065cbdabe6183ab82199d7a4f6b3ba0a438c5a512a68559846ccb76a78ec"}, + {file = "watchdog-5.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d961f4123bb3c447d9fcdcb67e1530c366f10ab3a0c7d1c0c9943050936d4877"}, + {file = "watchdog-5.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72990192cb63872c47d5e5fefe230a401b87fd59d257ee577d61c9e5564c62e5"}, + {file = "watchdog-5.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6bec703ad90b35a848e05e1b40bf0050da7ca28ead7ac4be724ae5ac2653a1a0"}, + {file = "watchdog-5.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:dae7a1879918f6544201d33666909b040a46421054a50e0f773e0d870ed7438d"}, + {file = "watchdog-5.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c4a440f725f3b99133de610bfec93d570b13826f89616377715b9cd60424db6e"}, + {file = "watchdog-5.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f8b2918c19e0d48f5f20df458c84692e2a054f02d9df25e6c3c930063eca64c1"}, + {file = "watchdog-5.0.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:aa9cd6e24126d4afb3752a3e70fce39f92d0e1a58a236ddf6ee823ff7dba28ee"}, + {file = "watchdog-5.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f627c5bf5759fdd90195b0c0431f99cff4867d212a67b384442c51136a098ed7"}, + {file = "watchdog-5.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d7594a6d32cda2b49df3fd9abf9b37c8d2f3eab5df45c24056b4a671ac661619"}, + {file = "watchdog-5.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba32efcccfe2c58f4d01115440d1672b4eb26cdd6fc5b5818f1fb41f7c3e1889"}, + {file = "watchdog-5.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:963f7c4c91e3f51c998eeff1b3fb24a52a8a34da4f956e470f4b068bb47b78ee"}, + {file = "watchdog-5.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8c47150aa12f775e22efff1eee9f0f6beee542a7aa1a985c271b1997d340184f"}, + {file = "watchdog-5.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:14dd4ed023d79d1f670aa659f449bcd2733c33a35c8ffd88689d9d243885198b"}, + {file = "watchdog-5.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b84bff0391ad4abe25c2740c7aec0e3de316fdf7764007f41e248422a7760a7f"}, + {file = "watchdog-5.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3e8d5ff39f0a9968952cce548e8e08f849141a4fcc1290b1c17c032ba697b9d7"}, + {file = "watchdog-5.0.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fb223456db6e5f7bd9bbd5cd969f05aae82ae21acc00643b60d81c770abd402b"}, + {file = "watchdog-5.0.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9814adb768c23727a27792c77812cf4e2fd9853cd280eafa2bcfa62a99e8bd6e"}, + {file = "watchdog-5.0.2-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:901ee48c23f70193d1a7bc2d9ee297df66081dd5f46f0ca011be4f70dec80dab"}, + {file = "watchdog-5.0.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:638bcca3d5b1885c6ec47be67bf712b00a9ab3d4b22ec0881f4889ad870bc7e8"}, + {file = "watchdog-5.0.2-py3-none-manylinux2014_aarch64.whl", hash = "sha256:5597c051587f8757798216f2485e85eac583c3b343e9aa09127a3a6f82c65ee8"}, + {file = "watchdog-5.0.2-py3-none-manylinux2014_armv7l.whl", hash = "sha256:53ed1bf71fcb8475dd0ef4912ab139c294c87b903724b6f4a8bd98e026862e6d"}, + {file = "watchdog-5.0.2-py3-none-manylinux2014_i686.whl", hash = "sha256:29e4a2607bd407d9552c502d38b45a05ec26a8e40cc7e94db9bb48f861fa5abc"}, + {file = "watchdog-5.0.2-py3-none-manylinux2014_ppc64.whl", hash = "sha256:b6dc8f1d770a8280997e4beae7b9a75a33b268c59e033e72c8a10990097e5fde"}, + {file = "watchdog-5.0.2-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:d2ab34adc9bf1489452965cdb16a924e97d4452fcf88a50b21859068b50b5c3b"}, + {file = "watchdog-5.0.2-py3-none-manylinux2014_s390x.whl", hash = "sha256:7d1aa7e4bb0f0c65a1a91ba37c10e19dabf7eaaa282c5787e51371f090748f4b"}, + {file = "watchdog-5.0.2-py3-none-manylinux2014_x86_64.whl", hash = "sha256:726eef8f8c634ac6584f86c9c53353a010d9f311f6c15a034f3800a7a891d941"}, + {file = "watchdog-5.0.2-py3-none-win32.whl", hash = "sha256:bda40c57115684d0216556671875e008279dea2dc00fcd3dde126ac8e0d7a2fb"}, + {file = "watchdog-5.0.2-py3-none-win_amd64.whl", hash = "sha256:d010be060c996db725fbce7e3ef14687cdcc76f4ca0e4339a68cc4532c382a73"}, + {file = "watchdog-5.0.2-py3-none-win_ia64.whl", hash = "sha256:3960136b2b619510569b90f0cd96408591d6c251a75c97690f4553ca88889769"}, + {file = "watchdog-5.0.2.tar.gz", hash = "sha256:dcebf7e475001d2cdeb020be630dc5b687e9acdd60d16fea6bb4508e7b94cf76"}, ] [package.extras] @@ -1154,13 +1168,13 @@ watchmedo = ["PyYAML (>=3.10)"] [[package]] name = "wcmatch" -version = "8.5.1" +version = "9.0" description = "Wildcard/glob file name matcher." optional = false python-versions = ">=3.8" files = [ - {file = "wcmatch-8.5.1-py3-none-any.whl", hash = "sha256:24c19cedc92bc9c9e27f39db4e1824d72f95bd2cea32b254a47a45b1a1b227ed"}, - {file = "wcmatch-8.5.1.tar.gz", hash = "sha256:c0088c7f6426cf6bf27e530e2b7b734031905f7e490475fd83c7c5008ab581b3"}, + {file = "wcmatch-9.0-py3-none-any.whl", hash = "sha256:af25922e2b6dbd1550fa37a4c8de7dd558d6c1bb330c641de9b907b9776cb3c4"}, + {file = "wcmatch-9.0.tar.gz", hash = "sha256:567d66b11ad74384954c8af86f607857c3bdf93682349ad32066231abd556c92"}, ] [package.dependencies] @@ -1180,4 +1194,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "3.11.*" -content-hash = "490d02a731843bc838a9446846d818e99a863f35e8488d3eea3acf1d1041225b" +content-hash = "714872b051cbc60c91a2187388adb268d74fd13fe563df800f0ca482b5c91cc7" diff --git a/pyproject.toml b/pyproject.toml index 512c0e5..9a92e44 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,6 @@ cairosvg = "*" mkdocs = "*" mkdocs-awesome-pages-plugin = "*" mkdocs-glightbox = "*" -mkdocs-include-dir-to-nav = "*" mkdocs-include-markdown-plugin = "*" mkdocs-macros-plugin = "*" mkdocs-material = { path = "./mkdocs_material-9.5.10+insiders.4.52.2.tar.gz", extras = [ "images" ] } From 6d51ca3aa81442082e249c5e75fff58c4fd238bb Mon Sep 17 00:00:00 2001 From: barstoolbluz Date: Tue, 27 Aug 2024 17:38:23 -0400 Subject: [PATCH 12/12] first draft of installing flox from its repo on debian and red hat documentation Signed-off-by: barstoolbluz --- ...m-its-repository-on-debian-and-red-hat.mdx | 187 ++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 docs/tutorials/tutorial-installing-flox-from-its-repository-on-debian-and-red-hat.mdx diff --git a/docs/tutorials/tutorial-installing-flox-from-its-repository-on-debian-and-red-hat.mdx b/docs/tutorials/tutorial-installing-flox-from-its-repository-on-debian-and-red-hat.mdx new file mode 100644 index 0000000..c56de86 --- /dev/null +++ b/docs/tutorials/tutorial-installing-flox-from-its-repository-on-debian-and-red-hat.mdx @@ -0,0 +1,187 @@ +This document describes a practical method for installing Flox from its repositories. Depending on your requirements, this approach may make it easier to create and manage scripts to install Flox on local systems or build it into containers. In addition, systems configured using this method will receive Flox updates as they are released. + +When you [download and install a Flox `.deb` or `.rpm` package](https://flox.dev/docs/install-flox/), the installer performs these steps for you. But you can easily script the steps below to automate this process. + +These instructions cover the process of installing from Flox’s repository on modern Debian- and Red Hat-based Linux distributions, such as Ubuntu and Linux Mint (Debian), or Fedora, RHEL, and Rocky Linux (Red Hat). They also include an alternate method for installing Flox on Linux systems, such as older versions of CentOS, where `yum` is the default package manager. + + +## 1. Installation overview + +Adding Flox's repository to a Debian- or Red Hat-based Linux system’s sources involves the following steps: + +- Importing Flox’s GPG keys to verify authenticity; +- Configuring the system’s package manager to recognize Flox’s repository; and +- Installing Flox. + + +### Debian-based distros + +To perform these steps on a Debian-based distribution using `apt`, do the following. + +First, download and import Flox’s GPG keyring. + +``` +wget -qO - https://downloads.flox.dev/by-env/stable/deb/flox-archive-keyring.gpg | sudo tee /etc/apt/trusted.gpg.d/flox.gpg >/dev/null +``` + +Next, add the Flox repository to β€˜/etc/apt/sources.list.d/flox.list’. + +``` +sudo add-apt-repository -S "deb https://downloads.flox.dev/by-env/stable/deb/ stable/" +``` + +Finally, update[1] and install Flox. + +``` +sudo apt update && sudo apt install flox -y +``` + + +### Red Hat-based distros + +To perform these steps on modern Red Hat-based distributions that use `dnf`, do the following: + +First, download Flox’s GPG keyring. + +``` +sudo rpm --import https://downloads.flox.dev/by-env/stable/rpm/flox-archive-keyring.asc +``` + +Next, add Flox’s repository to β€˜/etc/yum.repos.d/flox.repo’. + +``` +sudo dnf config-manager --add-repo https://downloads.flox.dev/by-env/stable/rpm +``` + +Finally, install Flox. + +``` +sudo dnf install flox +``` + + +## 2. Installing from Flox's repository using β€œyum” + +In CentOS 8 and later, as with Fedora, RHEL, Rocky Linux, and other modern Red Hat-based systems, `dnf` is the default package manager. However, CentOS 7 and earlier ship with `yum` as the default, and `dnf` is not available. For obvious reasons, the method described above won’t work. + +This section describes an alternative method for installing from Flox’s repository using `rpm` and `yum`. + +Note: even though the method outlined here deals specifically with older versions of CentOS, it _should_ also work on any Red Hat-based distribution for which `yum` is the default. + +To install Flox from its repository using `yum`, do the following: + +First, download and import Flox’s GPG key. + +``` +sudo rpm --import https://downloads.flox.dev/by-env/stable/rpm/flox-archive-keyring.asc +``` + +Next, configure the Flox repository and install Flox with yum. + +``` +sudo yum --repofrompath=flox,https://downloads.flox.dev/by-env/stable/rpm install flox +``` + + +## 3. Removing the Flox repository + +To remove Flox’s repository from a Linux system’s sources, do the following. + + +### Debian-based systems + +By default, the Flox repository’s source list is in `/etc/apt/sources.list.d/flox.list`. However, you can double-check this by running the following command: + +``` +grep -r 'flox' /etc/apt/sources.list /etc/apt/sources.list.d/ +``` + +Once you’ve confirmed the existence and location of this file, delete it. + +``` +sudo rm /etc/apt/sources.list.d/flox.list +``` + +Finally, update your package list. + +``` +sudo apt update +``` + + +### Red Hat-based systems + +By default, the Flox repository’s source list is in `/etc/yum/repos.d/flox.repo`. However, you can double-check this by running the following command: + +``` +sudo dnf repolist | grep flox +``` + +Delete the `flox.repo` file from `/etc/yum/repos.d/`. + +``` +sudo rm /etc/yum/repos.d/flox.repo +``` + +Finally, clean the `dnf` cache + +``` +sudo dnf clean all +``` + + +[1] On more recent versions of Debian and Ubuntu (since at least Debian Buster and Ubuntu 20.04), it is no longer necessary to run `sudo apt update` after adding a repository via `sudo add-apt-repository`. + + +## 4. Installing from Flox's repository on SUSE/OpenSUSE + +This should work, because OpenSUSE/SUSE use yum, but doesn't. The long story is that you can use `rpm` to install the GPG key and then use `yum` to add the repo. + +``` +sudo rpm --import https://downloads.flox.dev/by-env/stable/rpm/flox-archive-keyring.asc +sudo zypper addrepo https://downloads.flox.dev/by-env/stable/rpm flox +``` + +If you then `zypper refresh`, `zypper` successfully queries the Flox repo. But when you `zypper install flox`, this happens: + +``` +daedalus@localhost:~$ sudo zypper refresh +Repository 'flox' is up to date. +Repository 'Update repository of openSUSE Backports' is up to date. +Repository 'Non-OSS Repository' is up to date. +Repository 'Open H.264 Codec (openSUSE Leap)' is up to date. +Repository 'Main Repository' is up to date. +Repository 'Update repository with updates from SUSE Linux Enterprise 15' is up to date. +Repository 'Main Update Repository' is up to date. +Repository 'Update Repository (Non-Oss)' is up to date. +All repositories have been refreshed. +daedalus@localhost:~$ sudo zypper install flox +Loading repository data... +Reading installed packages... +Resolving package dependencies... +The following NEW package is going to be installed: + flox +1 new package to install. +Overall download size: 103.1 MiB. Already cached: 0 B. After the operation, additional 103.1 MiB will be used. +Continue? [y/n/v/...? shows all options] (y): y +Retrieving: flox-1.2.3-1.x86_64 (flox) (1/1), 103.1 MiB +Retrieving: flox-1.2.3+1722959675.x86_64-linux.rpm ................................................................................................................................[not found] +File './flox-1.2.3+1722959675.x86_64-linux.rpm' not found on medium 'https://downloads.flox.dev/by-env/stable/rpm' +Abort, retry, ignore? [a/r/i/...? shows all options] (a): a +Problem occurred during or after installation or removal of packages: +Installation has been aborted as directed. +Please see the above error message for a hint. +``` + +I've tried manually creating an entry for the Flox repo in `/etc/zypp/repos.d/flox.repo`: + +``` +[flox] +name=Flox Repository +baseurl=https://downloads.flox.dev/by-env/stable/rpm +enabled=1 +gpgcheck=1 +gpgkey=https://downloads.flox.dev/by-env/stable/rpm/flox-archive-keyring.asc +``` + +That doesn't work either.