Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

kaggle: init at 1.5.6 #92147

Merged
merged 2 commits into from
Jul 5, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
53 changes: 53 additions & 0 deletions pkgs/development/python-modules/kaggle/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
{ buildPythonPackage
, certifi
, fetchPypi
, lib
, python-dateutil
, python-slugify
, six
, requests
, tqdm
, urllib3
}:

buildPythonPackage rec {
pname = "kaggle";
version = "1.5.6";

src = fetchPypi {
inherit pname version;
sha256 = "0f5qrkgklcpgbwncrif7aw4f86dychqplh7k3f4rljwnr9yhjb1w";
};

# The version bounds in the setup.py file are unnecessarily restrictive.
patchPhase = ''
substituteInPlace setup.py \
--replace 'urllib3 >= 1.21.1, < 1.25' 'urllib3'
'';

propagatedBuildInputs = [
certifi
python-dateutil
python-slugify
requests
six
tqdm
urllib3
];

# Tests try to access the network.
checkPhase = ''
export HOME="$TMP"
mkdir -p "$HOME/.kaggle/"
echo '{"username":"foobar","key":"00000000000000000000000000000000"}' > "$HOME/.kaggle/kaggle.json"
$out/bin/kaggle --help > /dev/null
'';
pythonImportsCheck = [ "kaggle" ];
Comment on lines +39 to +45
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jonringer Thanks for the tip!

Unfortunately, kaggle requires the file ~/.kaggle/kaggle.json to exist, otherwise the CLI throws an exception and ends the process with an error code.

In order to make kaggle --help not end with an error code, I had to create fake api credentials. This is somewhat hacky, but still appears to work for simple things that don't involve actually hitting the API (like just calling --help).

I've confirmed this builds, so if this looks alright, I'd be happy to go ahead and merge this in.


@GrahamcOfBorg build kaggle

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the warning if fine, the $out/bin/kaggle --help still returns 0, even with the warnings.

My main concern is just that a dependency bump map break it, and we won't know about it until runtime (after someone does an update and the package then fails)


meta = with lib; {
description = "Official API for https://www.kaggle.com, accessible using a command line tool implemented in Python 3";
homepage = "https://github.com/Kaggle/kaggle-api";
license = licenses.asl20;
maintainers = with maintainers; [ cdepillabout ];
};
}
2 changes: 2 additions & 0 deletions pkgs/top-level/all-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -2036,6 +2036,8 @@ in

ir-standard-fonts = callPackage ../data/fonts/ir-standard-fonts { };

kaggle = with python3Packages; toPythonApplication kaggle;

lynis = callPackage ../tools/security/lynis { };

mapproxy = callPackage ../applications/misc/mapproxy { };
Expand Down
2 changes: 2 additions & 0 deletions pkgs/top-level/python-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -4330,6 +4330,8 @@ in {

jupyterhub-ldapauthenticator = callPackage ../development/python-modules/jupyterhub-ldapauthenticator { };

kaggle = callPackage ../development/python-modules/kaggle { };

keyring = if isPy3k then
callPackage ../development/python-modules/keyring { }
else
Expand Down