anchor.diff:      semantic-version flask_principal werkzeug flaskbabel tornado
       psutil pyserial flask_login netaddr markdown sockjs-tornado
       pylru pyyaml sarge feedparser netifaces click websocket_client
  -    scandir chainmap future dateutil
  +    scandir chainmap future dateutil futures wrapt
     ];
   
     buildInputs = with pythonPackages; [ nose mock ddt ];
  
positive.code: 
  in pythonPackages.buildPythonApplication rec {
    name = "OctoPrint-${version}";
    version = "1.3.4";
  
    src = fetchFromGitHub {
      owner = "foosel";
      repo = "OctoPrint";
      rev = version;
      sha256 = "1hci8cfmbzcghla1vmrcn6zicm8nj50drm7gp2hkr0drglq5fgr2";
    };
  
    # We need old Tornado
  
negative.code:       -e 's,future>=[^"]*,future,g' \
        -e 's,pyserial>=[^"]*,pyserial,g' \
        -e 's,semantic_version>=[^"]*,semantic_version,g' \
        -e 's,wrapt>=[^"]*,wrapt,g' \
        setup.py
    '';
  
  