anchor.diff:        --replace "cps = calibreweb:main" "calibre-web = calibreweb:main" \
         --replace "Flask>=1.0.2,<2.1.0" "Flask>=1.0.2" \
         --replace "Flask-Login>=0.3.2,<0.5.1" "Flask-Login>=0.3.2" \
  -      --replace "flask-wtf>=0.14.2,<0.16.0" "flask-wtf>=0.14.2" \
  -      --replace "lxml>=3.8.0,<4.8.0" "lxml>=3.8.0" \
  -      --replace "PyPDF3>=1.0.0,<1.0.4" "PyPDF3>=1.0.0" \
  -      --replace "requests>=2.11.1,<2.25.0" "requests" \
  -      --replace "unidecode>=0.04.19,<1.3.0" "unidecode>=0.04.19"
  +      --replace "flask-wtf>=0.14.2,<1.1.0" "flask-wtf>=0.14.2" \
  +      --replace "lxml>=3.8.0,<4.9.0" "lxml>=3.8.0" \
  +      --replace "PyPDF3>=1.0.0,<1.0.7" "PyPDF3>=1.0.0" \
  +      --replace "requests>=2.11.1,<2.28.0" "requests" \
  +      --replace "unidecode>=0.04.19,<1.4.0" "unidecode>=0.04.19" \
  +      --replace "werkzeug<2.1.0" ""
     '';
   
     # Upstream repo doesn't provide any tests.
  
positive.code: 
  python3.pkgs.buildPythonApplication rec {
    pname = "calibre-web";
    version = "0.6.17";
  
    src = fetchFromGitHub {
      owner = "janeczku";
      repo = "calibre-web";
      rev = version;
      sha256 = "sha256-K2va9as+z00txpg/0fR89+kpMzpQSiSSIV489NDs8Bs=";
    };
  
    propagatedBuildInputs = with python3Packages; [
      backports_abc
      flask-babel
      flask_login
  
negative.code:     tornado
      unidecode
      Wand
      werkzeug
    ];
  
    patches = [
  