textdistance 1.1.1

Lots of algorithms to compare how similar two sequences are
Documentation
# https://taskfile.dev
version: "3"

vars:
  CARGO_BIN: ~/.cargo/bin/

tasks:
  install-nextest:
    status:
      - test -f {{.CARGO_BIN}}/cargo-nextest
    cmds:
      - curl -LsSf https://get.nexte.st/latest/linux | tar zxf - -C {{.CARGO_BIN}}

  install-pytest:
    status:
      - which pytest
    cmds:
      - python3 -m pip install pytest

  clone-licenses:
    status:
      - test -d choosealicense.com
    cmds:
      - git clone --depth 1 https://github.com/github/choosealicense.com.git

  check:
    cmds:
      - cargo check --all {{.CLI_ARGS}}

  format:
    cmds:
      - cargo fmt --all {{.CLI_ARGS}}

  lint:
    cmds:
      - >
        cargo clippy
        --examples --tests --benches --bins --lib --workspace
        -- -D clippy::pedantic -D clippy::dbg-macro -D warnings

  doc:
    env:
      RUSTDOCFLAGS: "-Dwarnings"
    cmds:
      - cargo doc {{.CLI_ARGS}}

  pytest:
    deps:
      - install-pytest
    cmds:
      - pytest {{.CLI_ARGS}} tests/

  nextest:
    deps:
      - install-nextest
    env:
      CLICOLOR_FORCE: "yes"
    cmds:
      - cargo nextest run --no-fail-fast {{.CLI_ARGS}}
      - cargo build --no-default-features

  doctest:
    cmds:
      - cargo test --doc

  bench:
    desc: "run benchmarks"
    deps:
      - clone-licenses
    cmds:
      - cargo bench {{.CLI_ARGS}}

  release:
    desc: "build and upload a new release"
    cmds:
      - which gh
      - test {{.CLI_ARGS}}
      - cat Cargo.toml | grep -F 'version = "{{.CLI_ARGS}}"'
      - cargo publish
      - git tag {{.CLI_ARGS}}
      - git push
      - git push --tags
      - gh release create --generate-notes {{.CLI_ARGS}}

  test:
    desc: "run all tests"
    cmds:
      - task: pytest
      - task: nextest
      - task: doctest

  all:
    desc: "run all code formatters, linters, and tests"
    cmds:
      - task: format
      - task: check
      - task: lint
      - task: doc
      - task: test