anchor.diff:  , jinja2
   , configargparse
   , appdirs
  +, decorator
  +, pycairo
  +, pytestCheckHook
  +, python-fontconfig
   }:
   
   buildPythonPackage rec {
     pname = "xml2rfc";
  -  version = "3.12.3";
  +  version = "3.12.4";
   
     disabled = pythonOlder "3.6";
   
  -  src = fetchPypi {
  -    inherit pname version;
  -    sha256 = "sha256-YUrcD3Q1fkDW+nwf6k2T/aBL8+W9iWkPYW/TqdTiuA0=";
  +  src = fetchFromGitHub {
  +    owner = "ietf-tools";
  +    repo = "xml2rfc";
  +    rev = "v${version}";
  +    sha256 = "sha256-TAu2Ls553t7wJ/Jhgu+Ff+H4P6az0Du8OL00JjZyCDs=";
     };
  +
  +  postPatch = ''
  +    substituteInPlace Makefile \
  +      --replace "SHELL := /bin/bash" "SHELL := bash" \
  +      --replace "test flaketest" "test" \
  +      --replace "python setup.py --quiet install" ""
  +    substituteInPlace setup.py \
  +      --replace "'tox'," ""
  +    substituteInPlace requirements.txt \
  +      --replace "jinja2>=2.11,<3.0" "jinja2" \
  +      --replace "markupsafe==2.0.1" "markupsafe"
  +  '';
   
     propagatedBuildInputs = [
       intervaltree
  
positive.code:     appdirs
    ];
  
    postPatch = ''
      substituteInPlace requirements.txt \
        --replace "jinja2>=2.11,<3.0" "jinja2>=2.11"
    '';
  
    preCheck = ''
      export HOME=$(mktemp -d)
    '';
  
    # lxml tries to fetch from the internet
    doCheck = false;
  
    pythonImportsCheck = [ "xml2rfc" ];
  
    meta = with lib; {
      description = "Tool generating IETF RFCs and drafts from XML sources";
      homepage = "https://tools.ietf.org/tools/xml2rfc/trac/";
      # Well, parts might be considered unfree, if being strict; see:
      # http://metadata.ftp-master.debian.org/changelogs/non-free/x/xml2rfc/xml2rfc_2.9.6-1_copyright
      license = licenses.bsd3;
  
negative.code: { lib
  , buildPythonPackage
  , fetchFromGitHub
  , pythonOlder
  , intervaltree
  , pyflakes
  