anchor.diff: -{ lib, buildPythonPackage, fetchFromGitHub
  -, pytestCheckHook, pyhamcrest, pytestrunner
  -, six, isodate, tornado, aenum, radish-bdd, mock
  +{ lib
  +, buildPythonPackage
  +, fetchFromGitHub
  +, aenum
  +, importlib-metadata
  +, isodate
  +, six
  +, tornado
  +, pytestCheckHook
  +, mock
  +, pyhamcrest
  +, radish-bdd
   }:
   
   buildPythonPackage rec {
  
positive.code:       --replace 'PyHamcrest>=1.9.0,<2.0.0' 'PyHamcrest' \
        --replace 'radish-bdd==0.8.6' 'radish-bdd' \
        --replace 'mock>=3.0.5,<4.0.0' 'mock' \
        --replace 'pytest>=4.6.4,<5.0.0' 'pytest'
    '';
  
    nativeBuildInputs = [ pytestrunner ];  # simply to placate requirements
    propagatedBuildInputs = [ six isodate tornado aenum ];
  
    checkInputs = [ pytestCheckHook pyhamcrest radish-bdd mock ];
  
    # disable custom pytest report generation
    preCheck = ''
  
negative.code:   '';
  
    # many tests expect a running tinkerpop server
    disabledTestPaths = [
      "tests/driver/test_client.py"
      "tests/driver/test_driver_remote_connection.py"
      "tests/driver/test_driver_remote_connection_threaded.py"
      "tests/process/test_dsl.py"
      "tests/structure/io/test_functionalityio.py"
    ];
    pytestFlagsArray = [
      # disabledTests doesn't quite allow us to be precise enough for this
      "-k 'not (TestFunctionalGraphSONIO and (test_timestamp or test_datetime or test_uuid))'"
    ];
  