<commit_before>{ lib
, fetchFromGitHub
, python
, transmission
, deluge
, config
}:

with python.pkgs;

buildPythonApplication rec {
  version = "2.10.82";
  name = "FlexGet-${version}";

  src = fetchFromGitHub {
    owner = "Flexget";
    repo = "Flexget";
    rev = version;
    sha256 = "15508ihswfjbkzhf1f0qhn2ar1aiibz2ggp5d6r33icy8xwhpv09";
  };

  doCheck = true;
  # test_regexp requires that HOME exist, test_filesystem requires a
  # unicode-capable filesystem (and setting LC_ALL doesn't work).
  # setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
  postPatch = ''
    substituteInPlace requirements.txt \
      --replace "chardet==3.0.3" "chardet" \
      --replace "rebulk==0.8.2" "rebulk" \
      --replace "cherrypy==10.2.2" "cherrypy" \
      --replace "portend==1.8" "portend" \
      --replace "sqlalchemy==1.1.10" "sqlalchemy" \
      --replace "zxcvbn-python==4.4.15" "zxcvbn-python" \
      --replace "flask-cors==3.0.2" "flask-cors" \
      --replace "certifi==2017.4.17" "certifi" \
      --replace "apscheduler==3.3.1" "apscheduler" \
      --replace "path.py==10.3.1" "path.py" \
      --replace "tempora==1.8" "tempora" \
      --replace "cheroot==5.5.0" "cheroot" \
      --replace "six==1.10.0" "six" \
      --replace "aniso8601==1.2.1" "aniso8601"
  '';

  checkPhase = ''
    export HOME=.
    py.test --disable-pytest-warnings -k "not test_quality_failures \
                                          and not test_group_quality \
                                          and not crash_report \
                                          and not test_multi_episode \
                                          and not test_double_episodes \
                                          and not test_inject_force \
                                          and not test_double_prefered \
                                          and not test_double \
                                          and not test_non_ascii"
  '';

  buildInputs = [ pytest mock vcrpy pytest-catchlog boto3 ];
  propagatedBuildInputs = [
    feedparser sqlalchemy pyyaml chardet
    beautifulsoup4 html5lib PyRSS2Gen pynzb
    rpyc jinja2 jsonschema requests dateutil jsonschema
    pathpy guessit_2_0 APScheduler
    terminaltables colorclass
    cherrypy flask flask-restful flask-restplus
    flask-compress flask_login flask-cors
    pyparsing safe future zxcvbn-python
    werkzeug tempora cheroot rebulk portend
  ] ++ lib.optional (pythonOlder "3.4") pathlib
    # enable deluge and transmission plugin support, if they're installed
    ++ lib.optional (config.deluge or false) deluge
    ++ lib.optional (transmission != null) transmissionrpc;

  meta = {
    homepage = https://flexget.com/;
    description = "Multipurpose automation tool for content like torrents";
    license = lib.licenses.mit;
    maintainers = with lib.maintainers; [ <NAME> ];
    broken = true; # as of 2018-02-09
  };
}<commit_msg>flexget: 2.10.82 -> 2.13.5<commit_after>{ lib, python
, delugeSupport ? true, deluge ? null
}:

assert delugeSupport -> deluge != null;

let
  python' = python.override { inherit packageOverrides; };

  packageOverrides = self: super: {
    sqlalchemy = super.sqlalchemy.overridePythonAttrs (old: rec {
      version = "1.1.10";
      src = old.src.override {
        inherit version;
        sha256 = "1lvb14qclrx0qf6qqx8a8hkx5akk5lk3dvcqz8760v9hya52pnfv";
      };
    });
  };

in

with python'.pkgs;

buildPythonApplication rec {
  pname = "FlexGet";
  version = "2.13.5";

  src = fetchPypi {
    inherit pname version;
    sha256 = "1lkmxwy7k4zlcqpigwk8skc2zi8a70vrw21pz80wvmf9yg0wc9z9";
  };

  postPatch = ''
    # remove dependency constraints
    sed 's/==\([0-9]\.\?\)\+//' -i requirements.txt
  '';

  # ~400 failures
  doCheck = false;

  propagatedBuildInputs = [
    feedparser sqlalchemy pyyaml
    chardet beautifulsoup4 html5lib
    PyRSS2Gen pynzb rpyc jinja2
    jsonschema requests dateutil
    pathpy guessit_2_0 APScheduler
    terminaltables colorclass
    cherrypy flask flask-restful
    flask-restplus flask-compress
    flask_login flask-cors safe
    pyparsing future zxcvbn-python
    werkzeug tempora cheroot rebulk
    portend transmissionrpc aniso8601
    babelfish certifi click futures
    idna itsdangerous markupsafe
    plumbum pytz six tzlocal urllib3
    webencodings werkzeug zxcvbn-python
  ] ++ lib.optional (pythonOlder "3.4") pathlib
    ++ lib.optional delugeSupport deluge;

  meta = with lib; {
    homepage    = https://flexget.com/;
    description = "Multipurpose automation tool for content like torrents";
    license     = licenses.mit;
    maintainers = with maintainers; [ domenkozar tari ];
  };
}
{'fraction_non_alphanumeric': 0.10410431808465156, 'fraction_numerical': 0.037195382642154766, 'mean_word_length': 2.3979665940450254, 'pattern_counts': {'":': 0, '<': 4, '<?xml version=': 0, '>': 6, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 16, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5823962', 'n_tokens_mistral': 1652, 'n_tokens_neox': 1551, 'n_words': 352}