anchor.diff:    ];
   
     postPatch = ''
  +    substituteInPlace setup.cfg \
  +      --replace "grandalf==0.6" "grandalf" \
  +      --replace "scmrepo==0.0.25" "scmrepo" \
  +      --replace "dvc-data==0.0.16" "dvc-data" \
  +      --replace "dvc-render==0.0.6" "dvc-render"
       substituteInPlace dvc/daemon.py \
         --subst-var-by dvc "$out/bin/dcv"
     '';
  
positive.code: , enableSSH ? false
  }:
  
  let
    py = python3.override {
      packageOverrides = self: super: {
  
        grandalf = super.grandalf.overridePythonAttrs (oldAttrs: rec {
          version = "0.6";
          src = fetchFromGitHub {
            owner = "bdcht";
            repo = "grandalf";
            rev = "v${version}";
            hash = "sha256-T4pVzjz1WbfBA2ybN4IRK73PD/eb83YUW0BZrBESNLg=";
          };
          postPatch = ''
            substituteInPlace setup.py \
              --replace "setup_requires=['pytest-runner',]," ""
          '';
        });
  
        scmrepo = super.scmrepo.overridePythonAttrs (oldAttrs: rec {
          version = "0.0.19";
          src = fetchFromGitHub {
            owner = "iterative";
            repo = "scmrepo";
            rev = "refs/tags/${version}";
            hash = "sha256-f/KV3NfIumkZcg9r421QhdyPU/274aAU4b78myi+fFY=";
          };
        });
  
      };
    };
  in
  with py.pkgs;
  
  buildPythonApplication rec {
    pname = "dvc";
    version = "2.10.2";
    format = "setuptools";
  
    src = fetchFromGitHub {
      owner = "iterative";
      repo = pname;
      rev = version;
      hash = "sha256-boaQSg0jajWQZKB5wvcP2musVR2/pifT4pU64Y5hiQ0=";
    };
  
    nativeBuildInputs = with py.pkgs; [
      setuptools-scm
      setuptools-scm-git-archive
    ];
  
    propagatedBuildInputs = with py.pkgs; [
      aiohttp-retry
      appdirs
      colorama
  
negative.code:     distro
      dpath
      dvclive
      dvc-data
      dvc-render
      flatten-dict
      flufl_lock
  