Last active
November 19, 2018 16:39
-
-
Save datakurre/681bd6ca3e7baaff96104e90e84702df to your computer and use it in GitHub Desktop.
RobotKernel Jupyter notebook
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ pkgs ? import <nixpkgs> {} | |
, pythonPackages ? pkgs.python36Packages | |
}: | |
with pkgs; | |
let self = rec { | |
# patches | |
robot_mode = ./robotframework.js; | |
notebook = pythonPackages.notebook.overridePythonAttrs(old: { | |
postInstall = '' | |
ls $out/${pythonPackages.python.sitePackages}/notebook/static/components/codemirror/mode/ | |
mkdir $out/${pythonPackages.python.sitePackages}/notebook/static/components/codemirror/mode/robotframework | |
cp ${robot_mode} $out/${pythonPackages.python.sitePackages}/notebook/static/components/codemirror/mode/robotframework/robotframework.js | |
''; | |
doCheck = false; | |
}); | |
# kernels | |
python36_with_packages = python36.buildEnv.override { | |
extraLibs = with python36Packages; [ | |
iplantuml | |
ipykernel | |
ipywidgets | |
lti | |
magic | |
requests | |
]; | |
}; | |
python36_kernel = stdenv.mkDerivation rec { | |
name = "python36"; | |
buildInputs = [ python36_with_packages ]; | |
json = builtins.toJSON { | |
argv = [ "${python36_with_packages}/bin/python3.6" | |
"-m" "ipykernel" "-f" "{connection_file}" ]; | |
display_name = "Python 3.6"; | |
language = "python"; | |
env = { PYTHONPATH = ""; }; | |
}; | |
builder = builtins.toFile "builder.sh" '' | |
source $stdenv/setup | |
mkdir -p $out | |
cat > $out/kernel.json << EOF | |
$json | |
EOF | |
''; | |
}; | |
lti = pythonPackages.buildPythonPackage rec { | |
pname = "lti"; | |
version = "0.9.2"; | |
name = "${pname}-${version}"; | |
src = pkgs.fetchurl { | |
url = "mirror://pypi/${builtins.substring 0 1 pname}/${pname}/${name}.tar.gz"; | |
sha256 = "0k9d6ii7wf0iym0jspw0bpc4vvkk7xz7wibvmbzjjzn5rrnb3ak4"; | |
}; | |
propagatedBuildInputs = with pythonPackages; [ | |
lxml | |
requests_oauthlib | |
]; | |
doCheck = false; | |
}; | |
iplantuml = pythonPackages.buildPythonPackage rec { | |
pname = "IPlantUML"; | |
version = "0.1.1"; | |
name = "${pname}-${version}"; | |
src = pkgs.fetchurl { | |
url = "mirror://pypi/${builtins.substring 0 1 pname}/${pname}/${name}.tar.gz"; | |
sha256 = "0p1w48iik5cl137b4xy3g5x52wl5b9fayxlr97bzd5v65dqxz1hg"; | |
}; | |
buildInputs = with pythonPackages; [ notebook ]; | |
propagatedBuildInputs = [ | |
plantweb | |
plantuml | |
]; | |
doCheck = false; | |
}; | |
plantweb = pythonPackages.buildPythonPackage rec { | |
pname = "plantweb"; | |
version = "1.1.0"; | |
name = "${pname}-${version}"; | |
src = pkgs.fetchurl { | |
url = "mirror://pypi/${builtins.substring 0 1 pname}/${pname}/${name}.tar.gz"; | |
sha256 = "1974022rpmwjg1amc7k8n3274bfj0vychd5c81r6q4mm02kysksz"; | |
}; | |
propagatedBuildInputs = with pythonPackages; [ | |
docutils | |
requests | |
]; | |
}; | |
robot_with_packages = buildEnv { | |
name = "robotkernel"; | |
paths = [ | |
pkgs.geckodriver | |
(import ./setup.nix { | |
inherit pkgs pythonPackages; | |
}).env | |
]; | |
}; | |
robot_kernel = stdenv.mkDerivation rec { | |
name = "robot"; | |
buildInputs = [ robot_with_packages ]; | |
json = builtins.toJSON { | |
argv = [ "${robot_with_packages}/bin/python3.6" | |
"-m" "robotkernel" "-f" "{connection_file}" ]; | |
display_name = "Robot Framework"; | |
language = "robotframework"; | |
env = { PYTHONPATH = ""; }; | |
}; | |
builder = builtins.toFile "builder.sh" '' | |
source $stdenv/setup | |
mkdir -p $out | |
cat > $out/kernel.json << EOF | |
$json | |
EOF | |
''; | |
}; | |
# extensions | |
rise = pythonPackages.buildPythonPackage rec { | |
pname = "rise"; | |
version = "5.1.0"; | |
name = "${pname}-${version}"; | |
src = pkgs.fetchurl { | |
url = "mirror://pypi/${builtins.substring 0 1 pname}/${pname}/${name}.tar.gz"; | |
sha256 = "0b5rimnzd6zkgs7f286vr58a5rlzv275zd49xw48mn4dc06wfpz9"; | |
}; | |
buildInputs = [ notebook ]; | |
postPatch = '' | |
sed -i "s|README.md'|README.md', encoding='utf-8'|" setup.py | |
''; | |
}; | |
jupyter_nbextensions_configurator = pythonPackages.buildPythonPackage rec { | |
pname = "jupyter_nbextensions_configurator"; | |
version = "0.3.0"; | |
name = "${pname}-${version}"; | |
src = pkgs.fetchurl { | |
url = "mirror://pypi/${builtins.substring 0 1 pname}/${pname}/${name}.tar.gz"; | |
sha256 = "11qq1di2gas8r302xpa0h2xndd5qgrz4a77myd2bd43c0grffa6b"; | |
}; | |
doCheck = false; | |
installFlags = [ "--no-dependencies" ]; | |
propagatedBuildInputs = with pythonPackages; [ pyyaml ]; | |
}; | |
jupyter_contrib_nbextensions = pythonPackages.buildPythonPackage rec { | |
pname = "jupyter_contrib_nbextensions"; | |
version = "0.3.3"; | |
name = "${pname}-${version}"; | |
src = pkgs.fetchurl { | |
url = "mirror://pypi/${builtins.substring 0 1 pname}/${pname}/${name}.tar.gz"; | |
sha256 = "0v730d5sqx6g106ii5r08mghbmbqi12pm6mpvjc0vsx703syd83f"; | |
}; | |
doCheck = false; | |
installFlags = [ "--no-dependencies" ]; | |
propagatedBuildInputs = with pythonPackages; [ lxml ]; | |
}; | |
vim_binding = fetchFromGitHub { | |
owner = "lambdalisue"; | |
repo = "jupyter-vim-binding"; | |
rev = "c9822c753b6acad8b1084086d218eb4ce69950e9"; | |
sha256 = "1951wnf0k91h07nfsz8rr0c9nw68dbyflkjvw5pbx9dmmzsa065j"; | |
}; | |
# notebook | |
jupyter = pythonPackages.jupyter.overridePythonAttrs (old: { | |
propagatedBuildInputs = old.propagatedBuildInputs ++ [ | |
jupyter_contrib_nbextensions | |
jupyter_nbextensions_configurator | |
rise | |
]; | |
postInstall = with pythonPackages; '' | |
mkdir -p $out/bin | |
ln -s ${jupyter_core}/bin/jupyter $out/bin | |
wrapProgram $out/bin/jupyter \ | |
--prefix PYTHONPATH : "${notebook}/${python.sitePackages}:$PYTHONPATH" \ | |
--prefix PATH : "${notebook}/bin:$PATH" | |
''; | |
}); | |
jupyter_nbconfig = stdenv.mkDerivation rec { | |
name = "jupyter"; | |
json = builtins.toJSON { | |
load_extensions = { | |
"rise/main" = true; | |
"python-markdown/main" = true; | |
"vim_binding/vim_binding" = true; | |
}; | |
keys = { | |
command = { | |
bind = { | |
"Ctrl-7" = "RISE:toggle-slide"; | |
"Ctrl-8" = "RISE:toggle-subslide"; | |
"Ctrl-9" = "RISE:toggle-fragment"; | |
}; | |
}; | |
}; | |
}; | |
builder = builtins.toFile "builder.sh" '' | |
source $stdenv/setup | |
mkdir -p $out | |
cat > $out/notebook.json << EOF | |
$json | |
EOF | |
''; | |
}; | |
jupyter_config_dir = stdenv.mkDerivation { | |
name = "jupyter"; | |
buildInputs = [ | |
python36_kernel | |
robot_kernel | |
rise | |
vim_binding | |
]; | |
builder = writeText "builder.sh" '' | |
source $stdenv/setup | |
mkdir -p $out/etc/jupyter/nbextensions | |
mkdir -p $out/etc/jupyter/kernels | |
mkdir -p $out/etc/jupyter/migrated | |
ln -s ${python36_kernel} $out/etc/jupyter/kernels/${python36_kernel.name} | |
ln -s ${robot_kernel} $out/etc/jupyter/kernels/${robot_kernel.name} | |
ln -s ${jupyter_nbconfig} $out/etc/jupyter/nbconfig | |
ln -s ${jupyter_contrib_nbextensions}/${pythonPackages.python.sitePackages}/jupyter_contrib_nbextensions/nbextensions/* $out/etc/jupyter/nbextensions | |
ln -s ${rise}/${pythonPackages.python.sitePackages}/rise/static $out/etc/jupyter/nbextensions/rise | |
ln -s ${vim_binding} $out/etc/jupyter/nbextensions/vim_binding | |
cat > $out/etc/jupyter/jupyter_notebook_config.py << EOF | |
import os | |
import rise | |
c.KernelSpecManager.whitelist = { | |
'${python36_kernel.name}', | |
'${robot_kernel.name}' | |
} | |
c.NotebookApp.ip = os.environ.get('JUPYTER_NOTEBOOK_IP', 'localhost') | |
EOF | |
cat > $out/etc/jupyter/jupyter_nbconvert_config.py << EOF | |
c = get_config() | |
c.Exporter.preprocessors = ['jupyter_contrib_nbextensions.nbconvert_support.pre_pymarkdown.PyMarkdownPreprocessor'] | |
EOF | |
''; | |
}; | |
}; | |
in with self; | |
stdenv.mkDerivation rec { | |
name = "jupyter"; | |
env = buildEnv { name = name; paths = buildInputs; }; | |
builder = builtins.toFile "builder.sh" '' | |
source $stdenv/setup; ln -s $env $out | |
''; | |
buildInputs = [ | |
jupyter | |
jupyter_config_dir | |
geckodriver | |
plantweb | |
plantuml | |
pandoc | |
inkscape | |
(texlive.combine { | |
inherit (texlive) | |
adjustbox | |
collectbox | |
enumitem | |
mathpazo | |
palatino | |
scheme-small | |
ucs; | |
}) | |
] ++ stdenv.lib.optionals stdenv.isLinux [ bash fontconfig tini ]; | |
shellHook = '' | |
mkdir -p $PWD/.jupyter | |
export JUPYTER_CONFIG_DIR=${jupyter_config_dir}/etc/jupyter | |
export JUPYTER_PATH=${jupyter_config_dir}/etc/jupyter | |
export JUPYTER_DATA_DIR=$PWD/.jupyter | |
export JUPYTER_RUNTIME_DIR=$PWD/.jupyter | |
''; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Generated by pip2nix 0.7.0.dev1 | |
# See https://github.com/johbo/pip2nix | |
{ pkgs, fetchurl, fetchgit, fetchhg }: | |
self: super: { | |
"robotkernel" = super.buildPythonPackage { | |
name = "robotkernel-unreleased"; | |
doCheck = false; | |
src = pkgs.fetchFromGitHub { | |
owner = "datakurre"; | |
repo = "robotkernel"; | |
rev = "0a9113b91c6b01fb68b5d0762199a9e4d99994f6"; | |
sha256 = "05q6rsxkxlxkx42bjpgz6xyf67kqr79xdjyy5afislsp7p7wxwii"; | |
}; | |
propagatedBuildInputs = [ | |
self."ipykernel" | |
self."pillow" | |
self."pygments" | |
self."robotframework" | |
self."robotframework-selenium2library" | |
]; | |
}; | |
"GenSON" = super.buildPythonPackage { | |
name = "GenSON-0.2.3"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/2b/70/4eea716b647e7b11bf029d05d72eb3b783f20a39ef3a58ed82df8a6bde6b/genson-0.2.3.tar.gz"; | |
sha256 = "1nnq4hhd2yni807c0c26axcgb31w3z15rbxil13fcp83zw678mhp"; | |
}; | |
}; | |
"PyYAML" = super.buildPythonPackage { | |
name = "PyYAML-3.12"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/4a/85/db5a2df477072b2902b0eb892feb37d88ac635d36245a72a6a69b23b383a/PyYAML-3.12.tar.gz"; | |
sha256 = "1aqjl8dk9amd4zr99n8v2qxzgmr2hdvqfma4zh7a41rj6336c9sr"; | |
}; | |
}; | |
"RESTinstance" = super.buildPythonPackage { | |
name = "RESTinstance-1.0.0b4"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."robotframework" | |
self."flex" | |
self."GenSON" | |
self."jsonschema" | |
self."pygments" | |
self."requests" | |
self."rfc3987" | |
self."strict-rfc3339" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/08/56/80f5ad168b1c322d38563aa08b02b9b813160343a59f84a1526fa4c17975/RESTinstance-1.0.0b4.tar.gz"; | |
sha256 = "0ngq9iqjd0a5wdz4syd12k9ykgavalkbycxshwnr7pyq1j1ff06l"; | |
}; | |
}; | |
"attrs" = super.buildPythonPackage { | |
name = "attrs-17.4.0"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/8b/0b/a06cfcb69d0cb004fde8bc6f0fd192d96d565d1b8aa2829f0f20adb796e5/attrs-17.4.0.tar.gz"; | |
sha256 = "1jafnn1kzd6qhxgprhx6y6ik1r5m2rilx25syzcmq03azp660y8w"; | |
}; | |
}; | |
"bleach" = super.buildPythonPackage { | |
name = "bleach-2.1.2"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."six" | |
self."html5lib" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/b3/5f/0da670d30d3ffbc57cc97fa82947f81bbe3eab8d441e2d42e661f215baf2/bleach-2.1.2.tar.gz"; | |
sha256 = "068s5m2j0ydcq5193nvh5cv78zqch8jg7mjmvgc8grx4psz8rz1q"; | |
}; | |
}; | |
"certifi" = super.buildPythonPackage { | |
name = "certifi-2018.1.18"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/15/d4/2f888fc463d516ff7bf2379a4e9a552fef7f22a94147655d9b1097108248/certifi-2018.1.18.tar.gz"; | |
sha256 = "0z9zyry30znikglm66d3r9y0yaqa2sxr4xlsyxqzbvi76hh3zg7d"; | |
}; | |
}; | |
"chardet" = super.buildPythonPackage { | |
name = "chardet-3.0.4"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/fc/bb/a5768c230f9ddb03acc9ef3f0d4a3cf93462473795d18e9535498c8f929d/chardet-3.0.4.tar.gz"; | |
sha256 = "1bpalpia6r5x1kknbk11p1fzph56fmmnp405ds8icksd3knr5aw4"; | |
}; | |
}; | |
"check-manifest" = super.buildPythonPackage { | |
name = "check-manifest-0.36"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/6f/6f/38f3ad250b69a174e8c054572f29450959d4e3cab94645f5b1835ee9af58/check-manifest-0.36.tar.gz"; | |
sha256 = "111dynjqs8vfr9n10w3xg8yknyc1ljsxmh6nbz62dw506skhdf9b"; | |
}; | |
}; | |
"click" = super.buildPythonPackage { | |
name = "click-6.7"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/95/d9/c3336b6b5711c3ab9d1d3a80f1a3e2afeb9d8c02a7166462f6cc96570897/click-6.7.tar.gz"; | |
sha256 = "02qkfpykbq35id8glfgwc38yc430427yd05z1wc5cnld8zgicmgi"; | |
}; | |
}; | |
"colorama" = super.buildPythonPackage { | |
name = "colorama-0.3.9"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/e6/76/257b53926889e2835355d74fec73d82662100135293e17d382e2b74d1669/colorama-0.3.9.tar.gz"; | |
sha256 = "1wd1szk0z3073ghx26ynw43gnc140ibln1safgsis6s6z3s25ss8"; | |
}; | |
}; | |
"coverage" = super.buildPythonPackage { | |
name = "coverage-4.4.2"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/0b/e1/190ef1a264144c9b073b7353c259ca5431b5ddc8861b452e858fcbd0e9de/coverage-4.4.2.tar.gz"; | |
sha256 = "1k1l1xdpzni35xrffwv3nvqb7ylb912mdmz4l33kw1imgayr379h"; | |
}; | |
}; | |
"decorator" = super.buildPythonPackage { | |
name = "decorator-4.2.1"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/70/f1/cb9373195639db13063f55eb06116310ad691e1fd125e6af057734dc44ea/decorator-4.2.1.tar.gz"; | |
sha256 = "03iaf116rm3w8b4agb8hzf6z9331mrvi4khfxq35zkx17sgxsikx"; | |
}; | |
}; | |
"docutils" = super.buildPythonPackage { | |
name = "docutils-0.14"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/84/f4/5771e41fdf52aabebbadecc9381d11dea0fa34e4759b4071244fa094804c/docutils-0.14.tar.gz"; | |
sha256 = "0x22fs3pdmr42kvz6c654756wja305qv6cx1zbhwlagvxgr4xrji"; | |
}; | |
}; | |
"flake8" = super.buildPythonPackage { | |
name = "flake8-3.5.0"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."pyflakes" | |
self."pycodestyle" | |
self."mccabe" | |
self."setuptools" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/1e/ab/7730f6d6cdf73a3b7f98a2fe3b2cdf68e9e760a4a133e083607497d4c3a6/flake8-3.5.0.tar.gz"; | |
sha256 = "184b33grvvjmiwlv9kyd7yng9qv5ld24154j70z332xxg9gjclvj"; | |
}; | |
}; | |
"flake8-blind-except" = super.buildPythonPackage { | |
name = "flake8-blind-except-0.1.1"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."setuptools" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/ff/f2/ab635e6e420e78c94eab50cd3f53abd3ec27e411793e50b14f29edbb9f0b/flake8-blind-except-0.1.1.tar.gz"; | |
sha256 = "16g58mkr3fcn2vlfhp3rlahj93qswc7jd5qrqp748mc26dk3b8xc"; | |
}; | |
}; | |
"flake8-coding" = super.buildPythonPackage { | |
name = "flake8-coding-1.3.0"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."flake8" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/ae/26/3c6304d646f8ee27d6c40bfcd9874fea870098c3ef3cf60e284ea9db29ef/flake8-coding-1.3.0.tar.gz"; | |
sha256 = "1gjhzv85gaviwszp04l3win3h69bhfd4kwvi7mm7cxwkhxpyj0ds"; | |
}; | |
}; | |
"flake8-debugger" = super.buildPythonPackage { | |
name = "flake8-debugger-3.0.0"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."flake8" | |
self."pycodestyle" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/2c/a7/45823a26ef0c5fa7a0c099b772a5b6aa2d8e686284490ef738fc8691ffc0/flake8-debugger-3.0.0.tar.gz"; | |
sha256 = "1m6jqgdbpq7plf24kknnxlkw3rig7bjf17xqzgrv57c11ncarj75"; | |
}; | |
}; | |
"flake8-polyfill" = super.buildPythonPackage { | |
name = "flake8-polyfill-1.0.2"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."flake8" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/e6/67/1c26634a770db5c442e361311bee73cb3a177adb2eb3f7af8953cfd9f553/flake8-polyfill-1.0.2.tar.gz"; | |
sha256 = "1nlf1mkqw856vi6782qcglqhaacb23khk9wkcgn55npnjxshhjz4"; | |
}; | |
}; | |
"flake8-quotes" = super.buildPythonPackage { | |
name = "flake8-quotes-0.13.0"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."flake8" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/46/c7/43f042f47b65bf1006fee98fb21938d55cee720d43c7373e063c3664fae2/flake8-quotes-0.13.0.tar.gz"; | |
sha256 = "0js5ckpgphri088h5i3v2qd7g32j8nyvc1agna9jg5kadihrh69a"; | |
}; | |
}; | |
"flex" = super.buildPythonPackage { | |
name = "flex-6.11.1"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."six" | |
self."PyYAML" | |
self."validate-email" | |
self."rfc3987" | |
self."requests" | |
self."strict-rfc3339" | |
self."click" | |
self."jsonpointer" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/47/3b/f4d851e11a5462b433c9dfd4dc0c0ac95ac85630247d8e29d1baf46a438f/flex-6.11.1.tar.gz"; | |
sha256 = "0s4d0n4jbyz9dpfja22vaazj26x0icghhhjv9l62cv96nz88vbdj"; | |
}; | |
}; | |
"html5lib" = super.buildPythonPackage { | |
name = "html5lib-1.0.1"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."six" | |
self."webencodings" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/85/3e/cf449cf1b5004e87510b9368e7a5f1acd8831c2d6691edd3c62a0823f98f/html5lib-1.0.1.tar.gz"; | |
sha256 = "0dipzfrycv6j1jw82v9b7d8lzggx3x8xngx6l4xrqkxwvg7hvjv6"; | |
}; | |
}; | |
"idna" = super.buildPythonPackage { | |
name = "idna-2.6"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/f4/bd/0467d62790828c23c47fc1dfa1b1f052b24efdf5290f071c7a91d0d82fd3/idna-2.6.tar.gz"; | |
sha256 = "13qaab6d0s15gknz8v3zbcfmbj6v86hn9pjxgkdf62ch13imssic"; | |
}; | |
}; | |
"ipykernel" = super.buildPythonPackage { | |
name = "ipykernel-4.8.0"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."ipython" | |
self."traitlets" | |
self."jupyter-client" | |
self."tornado" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/74/54/0fdcd1db1e02b02022b6aa96826973645c60ef7e152c5b57f3db0bf5e74f/ipykernel-4.8.0.tar.gz"; | |
sha256 = "0x371kc76nrh1hxb76g91zzbhpr4dihglvcq6b3jb1x3ysfikp6y"; | |
}; | |
}; | |
"ipython" = super.buildPythonPackage { | |
name = "ipython-6.2.1"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."setuptools" | |
self."jedi" | |
self."decorator" | |
self."pickleshare" | |
self."simplegeneric" | |
self."traitlets" | |
self."prompt-toolkit" | |
self."pygments" | |
self."pexpect" | |
self."pexpect" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/fa/50/974211502bd72873728d44c3013fe79875c819c8fb69f778bcfd67bc7d38/ipython-6.2.1.tar.gz"; | |
sha256 = "022n6lcqx1x51yzgj1f9bj0rc08i6hdbbili3j6qk6dqr2k5ihai"; | |
}; | |
}; | |
"ipython-genutils" = super.buildPythonPackage { | |
name = "ipython-genutils-0.2.0"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/e8/69/fbeffffc05236398ebfcfb512b6d2511c622871dca1746361006da310399/ipython_genutils-0.2.0.tar.gz"; | |
sha256 = "1a4bc9y8hnvq6cp08qs4mckgm6i6ajpndp4g496rvvzcfmp12bpb"; | |
}; | |
}; | |
"isort" = super.buildPythonPackage { | |
name = "isort-4.2.15"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/4d/d5/7c8657126a43bcd3b0173e880407f48be4ac91b4957b51303eab744824cf/isort-4.2.15.tar.gz"; | |
sha256 = "10rr1grpsxnjrxgnfdjwabn8nlwbgb667rhnf0zfbqm4sdr63x3r"; | |
}; | |
}; | |
"jedi" = super.buildPythonPackage { | |
name = "jedi-0.11.1"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."parso" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/d2/41/430b325e411d564b1afc37bc7286c3549f4c415ada750a617fb1943c593d/jedi-0.11.1.tar.gz"; | |
sha256 = "15zsb7pqvjfkhg87g9jni51qa8igqd3xw80gxmcr9phs9p89kryn"; | |
}; | |
}; | |
"jsonpointer" = super.buildPythonPackage { | |
name = "jsonpointer-2.0"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/52/e7/246d9ef2366d430f0ce7bdc494ea2df8b49d7a2a41ba51f5655f68cfe85f/jsonpointer-2.0.tar.gz"; | |
sha256 = "0qjkjy1qlyc1nl3k95wd03ssxac0a717x8889ypgs1cfcj3bm4n1"; | |
}; | |
}; | |
"jsonschema" = super.buildPythonPackage { | |
name = "jsonschema-2.6.0"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/58/b9/171dbb07e18c6346090a37f03c7e74410a1a56123f847efed59af260a298/jsonschema-2.6.0.tar.gz"; | |
sha256 = "00kf3zmpp9ya4sydffpifn0j0mzm342a2vzh82p6r0vh10cg7xbg"; | |
}; | |
}; | |
"jupyter-client" = super.buildPythonPackage { | |
name = "jupyter-client-5.2.2"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."traitlets" | |
self."jupyter-core" | |
self."pyzmq" | |
self."python-dateutil" | |
self."tornado" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/bf/0b/7e1725b5ef8925867a604ab74e0618e84fbe4b171996631996b02b99a752/jupyter_client-5.2.2.tar.gz"; | |
sha256 = "1i06kf88c3ldqi6i31bai65gi5zsp4zzaf9rrnfggn7h68qy5mc3"; | |
}; | |
}; | |
"jupyter-core" = super.buildPythonPackage { | |
name = "jupyter-core-4.4.0"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."traitlets" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/b6/2d/2804f4de3a95583f65e5dcb4d7c8c7183124882323758996e867f47e72af/jupyter_core-4.4.0.tar.gz"; | |
sha256 = "1dy083rarba8prn9f9srxq3c7n7vyql02ycrqq306c40lr57aw5s"; | |
}; | |
}; | |
"mccabe" = super.buildPythonPackage { | |
name = "mccabe-0.6.1"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/06/18/fa675aa501e11d6d6ca0ae73a101b2f3571a565e0f7d38e062eec18a91ee/mccabe-0.6.1.tar.gz"; | |
sha256 = "07w3p1qm44hgxf3vvwz84kswpsx6s7kvaibzrsx5dzm0hli1i3fx"; | |
}; | |
}; | |
"metakernel" = super.buildPythonPackage { | |
name = "metakernel-0.20.14"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."ipykernel" | |
self."pexpect" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/f0/62/4db0c6b78cebf9b6ac40ebd688abc0aaa5c5cb92ab53270b3bb79f7fe024/metakernel-0.20.14.tar.gz"; | |
sha256 = "0b5dl86470s57qsznp7ldv9fz81nshadak19rvjrzwgx96x05zvv"; | |
}; | |
}; | |
"parso" = super.buildPythonPackage { | |
name = "parso-0.1.1"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/14/3b/15cfd9c7a8bd9e3a2fe956e20fbc4e7c5768e06aea347d8eb68a05a71653/parso-0.1.1.tar.gz"; | |
sha256 = "1yyg0d15cnhvb50i7a9inrf060i5dh44zxfnqprnamjf4pzg65aq"; | |
}; | |
}; | |
"pep8-naming" = super.buildPythonPackage { | |
name = "pep8-naming-0.5.0"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."flake8-polyfill" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/ce/19/53001b4f04ca7044da07dddafb891db159fb4702522cdadd86f98b75e5c8/pep8-naming-0.5.0.tar.gz"; | |
sha256 = "17dyzvbczkdskmwwxsjq9i847gikcj0rcjkzb9h31mdi819hhajs"; | |
}; | |
}; | |
"pexpect" = super.buildPythonPackage { | |
name = "pexpect-4.3.1"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."ptyprocess" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/14/05/47c8bca66390c9b18c91f6152db4b74eb850382e8e13aa2f06dfb3036466/pexpect-4.3.1.tar.gz"; | |
sha256 = "0xamqp9p0cdqridw3f6hs98lcsbyrf42wpvbn384kwms3lbpna4f"; | |
}; | |
}; | |
"pickleshare" = super.buildPythonPackage { | |
name = "pickleshare-0.7.4"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/69/fe/dd137d84daa0fd13a709e448138e310d9ea93070620c9db5454e234af525/pickleshare-0.7.4.tar.gz"; | |
sha256 = "0yvk14dzxk7g6qpr7iw23vzqbsr0dh4ij4xynkhnzpfz4xr2bac4"; | |
}; | |
}; | |
"pillow" = super.buildPythonPackage { | |
name = "pillow-5.0.0"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/0f/57/25be1a4c2d487942c3ed360f6eee7f41c5b9196a09ca71c54d1a33c968d9/Pillow-5.0.0.tar.gz"; | |
sha256 = "1fz1n1cq65dqdbiwy1cn8l21amqbzq18rdmmcr670ks24dn9vwhj"; | |
}; | |
}; | |
"pkginfo" = super.buildPythonPackage { | |
name = "pkginfo-1.4.1"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/58/54/57f7c5638fecdf232a5b6b767da467b0ff31467d7f86a7364c252acf2321/pkginfo-1.4.1.tar.gz"; | |
sha256 = "17pqjfpq3c6xzdmk8pski6jcjgjv78q00zjf2bgzb668pzm6l6mv"; | |
}; | |
}; | |
"pluggy" = super.buildPythonPackage { | |
name = "pluggy-0.6.0"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/11/bf/cbeb8cdfaffa9f2ea154a30ae31a9d04a1209312e2919138b4171a1f8199/pluggy-0.6.0.tar.gz"; | |
sha256 = "1zqckndfn85l1cd8pndw212zg1bq9fkg1nnj32kp2mppppsyg2kz"; | |
}; | |
}; | |
"prompt-toolkit" = super.buildPythonPackage { | |
name = "prompt-toolkit-1.0.15"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."six" | |
self."wcwidth" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/8a/ad/cf6b128866e78ad6d7f1dc5b7f99885fb813393d9860778b2984582e81b5/prompt_toolkit-1.0.15.tar.gz"; | |
sha256 = "05v9h5nydljwpj5nm8n804ms0glajwfy1zagrzqrg91wk3qqi1c5"; | |
}; | |
}; | |
"ptyprocess" = super.buildPythonPackage { | |
name = "ptyprocess-0.5.2"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/51/83/5d07dc35534640b06f9d9f1a1d2bc2513fb9cc7595a1b0e28ae5477056ce/ptyprocess-0.5.2.tar.gz"; | |
sha256 = "0ra31k10v3629xq0kdn8lwmfbi97anmk48r03yvh7mks0kq96hg6"; | |
}; | |
}; | |
"py" = super.buildPythonPackage { | |
name = "py-1.5.2"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/90/e3/e075127d39d35f09a500ebb4a90afd10f9ef0a1d28a6d09abeec0e444fdd/py-1.5.2.tar.gz"; | |
sha256 = "0vd7i2lspzfwj0k68cnm1pk3rclnrnkavgqncdsifm1350z9866a"; | |
}; | |
}; | |
"pycodestyle" = super.buildPythonPackage { | |
name = "pycodestyle-2.3.1"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/e1/88/0e2cbf412bd849ea6f1af1f97882add46a374f4ba1d2aea39353609150ad/pycodestyle-2.3.1.tar.gz"; | |
sha256 = "0rk78b66p57ala26mdldl9lafr48blv5s659sah9q50qnfjmc8k8"; | |
}; | |
}; | |
"pyflakes" = super.buildPythonPackage { | |
name = "pyflakes-1.6.0"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/26/85/f6a315cd3c1aa597fb3a04cc7d7dbea5b3cc66ea6bd13dfa0478bf4876e6/pyflakes-1.6.0.tar.gz"; | |
sha256 = "01c87qiadz71sbqrclrsr85vx601p20g4hs7nlcvyg945ww6lqcd"; | |
}; | |
}; | |
"pygments" = super.buildPythonPackage { | |
name = "pygments-2.2.0"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/71/2a/2e4e77803a8bd6408a2903340ac498cb0a2181811af7c9ec92cb70b0308a/Pygments-2.2.0.tar.gz"; | |
sha256 = "1k78qdvir1yb1c634nkv6rbga8wv4289xarghmsbbvzhvr311bnv"; | |
}; | |
}; | |
"pyroma" = super.buildPythonPackage { | |
name = "pyroma-2.2"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."setuptools" | |
self."docutils" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/de/f3/104ae27624982cd4b6de786d9afe23a2dc0b8c0999443ba370b3755848c7/pyroma-2.2.tar.gz"; | |
sha256 = "0l5ab84plqf6gy2xphm92dazpa6c5r1xcj20f35zhlbwd1aq1zfk"; | |
}; | |
}; | |
"pytest" = super.buildPythonPackage { | |
name = "pytest-3.3.2"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."py" | |
self."six" | |
self."setuptools" | |
self."attrs" | |
self."pluggy" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/d0/00/2546e70b2cc1d3df4e736a43871dfde54855277446cec376f871e36f7e03/pytest-3.3.2.tar.gz"; | |
sha256 = "1i2vya1kazprnv7g4x1qrb12rbh8ky5n15mdq96qz0g7xn084m2k"; | |
}; | |
}; | |
"pytest-cov" = super.buildPythonPackage { | |
name = "pytest-cov-2.5.1"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."pytest" | |
self."coverage" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/24/b4/7290d65b2f3633db51393bdf8ae66309b37620bc3ec116c5e357e3e37238/pytest-cov-2.5.1.tar.gz"; | |
sha256 = "0bbfpwdh9k3636bxc88vz9fa7vf4akchgn513ql1vd0xy4n7bah3"; | |
}; | |
}; | |
"pytest-runner" = super.buildPythonPackage { | |
name = "pytest-runner-3.0"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/65/b4/ae89338cd2d81e2cc54bd6db2e962bfe948f612303610d68ab24539ac2d1/pytest-runner-3.0.tar.gz"; | |
sha256 = "00v7pi09q60yx0l1kzyklnmr5bp597mir85a9gsi7bdfyly3lz0g"; | |
}; | |
}; | |
"python-dateutil" = super.buildPythonPackage { | |
name = "python-dateutil-2.6.1"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."six" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/54/bb/f1db86504f7a49e1d9b9301531181b00a1c7325dc85a29160ee3eaa73a54/python-dateutil-2.6.1.tar.gz"; | |
sha256 = "1jkahssf0ir5ssxc3ydbp8cpv77limn8d4s77szb2nrgl2r3h749"; | |
}; | |
}; | |
"pyzmq" = super.buildPythonPackage { | |
name = "pyzmq-16.0.4"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/52/ab/aad6fda6fb247893613629920472770da19bf94af5617852fd49d3047c4b/pyzmq-16.0.4.tar.gz"; | |
sha256 = "1cl60244sjwfy8bdp3n5qk8ydvxnlxab584yx20j1a3dbp8zl8xw"; | |
}; | |
}; | |
"readme-renderer" = super.buildPythonPackage { | |
name = "readme-renderer-17.2"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."bleach" | |
self."docutils" | |
self."pygments" | |
self."six" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/b6/a8/f27c15837fcbcb6110bd0f1dfa04b5fae658a1da3c07f186dba89818a613/readme_renderer-17.2.tar.gz"; | |
sha256 = "1nm8rg4g27ca4arz8mr3bacp6i443hdmigwlnhdafqrsjr1b9slx"; | |
}; | |
}; | |
"requests" = super.buildPythonPackage { | |
name = "requests-2.18.4"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."chardet" | |
self."idna" | |
self."urllib3" | |
self."certifi" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/b0/e1/eab4fc3752e3d240468a8c0b284607899d2fbfb236a56b7377a329aa8d09/requests-2.18.4.tar.gz"; | |
sha256 = "0zi3v9nsmv9j27d0c0m1dvqyvaxz53g8m0aa1h3qanxs4irkwi4w"; | |
}; | |
}; | |
"requests-toolbelt" = super.buildPythonPackage { | |
name = "requests-toolbelt-0.8.0"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."requests" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/86/f9/e80fa23edca6c554f1994040064760c12b51daff54b55f9e379e899cd3d4/requests-toolbelt-0.8.0.tar.gz"; | |
sha256 = "1dc7l42i4080r8i4m9fj51jx367lqkai170vrv7wd93gdj9k39gn"; | |
}; | |
}; | |
"rfc3987" = super.buildPythonPackage { | |
name = "rfc3987-1.3.7"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/b1/fb/4c6eb50dcca68e8b1cbe2a550946a21223c10a8080e13f6580be5f6b5596/rfc3987-1.3.7.tar.gz"; | |
sha256 = "192pclzs2y0yaywqkrlvd0x73740q310kvqvm6jldhi619mq59wi"; | |
}; | |
}; | |
"robotframework" = super.buildPythonPackage { | |
name = "robotframework-3.0.2"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/3e/79/d8b9a7ea833cf4f33d51c0d5f24b825ac72105bf30c147b472da10895143/robotframework-3.0.2.tar.gz"; | |
sha256 = "1xqzxv00lxf9xi4vdxdsyd1bfmx18gi96vrnijpzj9w2aqrz4610"; | |
}; | |
}; | |
"robotframework-selenium2library" = super.buildPythonPackage { | |
name = "robotframework-selenium2library-3.0.0"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."robotframework-seleniumlibrary" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/c4/7d/3c07081e7f0f1844aa21fd239a0139db4da5a8dc219d1e81cb004ba1f4e2/robotframework-selenium2library-3.0.0.tar.gz"; | |
sha256 = "19zxf2f5f6ply2ab4q9l52cn3d6j6j5h0f9h4pnnvcc80wmr93ia"; | |
}; | |
}; | |
"robotframework-selenium2screenshots" = super.buildPythonPackage { | |
name = "robotframework-selenium2screenshots-0.8.0"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."setuptools" | |
self."robotframework" | |
self."robotframework-selenium2library" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/de/57/62c447ad1313b8e4192cae37da47cad3add3667bc859ee1c3b336a09f632/robotframework-selenium2screenshots-0.8.0.tar.gz"; | |
sha256 = "1r7isxgm3pibnzrg0pvw9h70zdpzmly7v6wh0rbyg0lxfdg31dbz"; | |
}; | |
}; | |
"robotframework-seleniumlibrary" = super.buildPythonPackage { | |
name = "robotframework-seleniumlibrary-3.0.1"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."selenium" | |
self."robotframework" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/19/24/8c2259193aa8a6ca919623e2313ac5ae8d85152795c6772c1d303cd13768/robotframework-seleniumlibrary-3.0.1.tar.gz"; | |
sha256 = "0bkan2j39784cifgfxjl2m1zcqn4x2ygqay5plkk2icpxv0f9p8p"; | |
}; | |
}; | |
"selenium" = super.buildPythonPackage { | |
name = "selenium-3.8.1"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/59/2e/43cc1233703228e6752dc5ddfa59a254c430312c96ea6817419239fac137/selenium-3.8.1.tar.gz"; | |
sha256 = "1lqm2md84g11g7lqi94xqb5lydm93vgmlznfhf27g6sy9ayjvgcs"; | |
}; | |
}; | |
"setuptools" = super.buildPythonPackage { | |
name = "setuptools-38.4.0"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/41/5f/6da80400340fd48ba4ae1c673be4dc3821ac06cd9821ea60f9c7d32a009f/setuptools-38.4.0.zip"; | |
sha256 = "0x9gs4zmh21snz3h389frx95z5qviyj5pikfscz5pv05ylrgq0b5"; | |
}; | |
}; | |
"setuptools-scm" = super.buildPythonPackage { | |
name = "setuptools-scm-1.15.6"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/03/6d/aafdd01edd227ee879b691455bf19895091872af7e48192bea1758c82032/setuptools_scm-1.15.6.tar.gz"; | |
sha256 = "0pzvfmx8s20yrgkgwfbxaspz2x1g38qv61jpm0ns91lrb22ldas9"; | |
}; | |
}; | |
"simplegeneric" = super.buildPythonPackage { | |
name = "simplegeneric-0.8.1"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/3d/57/4d9c9e3ae9a255cd4e1106bb57e24056d3d0709fc01b2e3e345898e49d5b/simplegeneric-0.8.1.zip"; | |
sha256 = "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw"; | |
}; | |
}; | |
"six" = super.buildPythonPackage { | |
name = "six-1.11.0"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/16/d8/bc6316cf98419719bd59c91742194c111b6f2e85abac88e496adefaf7afe/six-1.11.0.tar.gz"; | |
sha256 = "1scqzwc51c875z23phj48gircqjgnn3af8zy2izjwmnlxrxsgs3h"; | |
}; | |
}; | |
"strict-rfc3339" = super.buildPythonPackage { | |
name = "strict-rfc3339-0.7"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/56/e4/879ef1dbd6ddea1c77c0078cd59b503368b0456bcca7d063a870ca2119d3/strict-rfc3339-0.7.tar.gz"; | |
sha256 = "0xqjbsn0g1h88rayh5yrpdagq60zfwrfs3yvk6rmgby3vyz1gbaw"; | |
}; | |
}; | |
"tornado" = super.buildPythonPackage { | |
name = "tornado-4.5.3"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/e3/7b/e29ab3d51c8df66922fea216e2bddfcb6430fb29620e5165b16a216e0d3c/tornado-4.5.3.tar.gz"; | |
sha256 = "02jzd23l4r6fswmwxaica9ldlyc2p6q8dk6dyff7j58fmdzf853d"; | |
}; | |
}; | |
"tqdm" = super.buildPythonPackage { | |
name = "tqdm-4.19.5"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/19/c6/4d74a16323f5045e6d4444bd1e3104b8ba52507700bc152a9c6bd88d1cfb/tqdm-4.19.5.tar.gz"; | |
sha256 = "0xvkffm77nqckk29xjy5fkqvig5b97vk7nzafp3cn36w4zqyccnz"; | |
}; | |
}; | |
"traitlets" = super.buildPythonPackage { | |
name = "traitlets-4.3.2"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."ipython-genutils" | |
self."six" | |
self."decorator" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/a5/98/7f5ef2fe9e9e071813aaf9cb91d1a732e0a68b6c44a32b38cb8e14c3f069/traitlets-4.3.2.tar.gz"; | |
sha256 = "0dbq7sx26xqz5ixs711k5nc88p8a0nqyz6162pwks5dpcz9d4jww"; | |
}; | |
}; | |
"twine" = super.buildPythonPackage { | |
name = "twine-1.9.1"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."tqdm" | |
self."pkginfo" | |
self."requests" | |
self."requests-toolbelt" | |
self."setuptools" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/7e/b4/ecc6aaf0eb287c6577e796bcc3089ce6286d273d5caa70655050cc3462f9/twine-1.9.1.tar.gz"; | |
sha256 = "1ay1b6kdq6k4bfbjsvf6ymj41wrgpvinhxndb09355pwhxwmp96a"; | |
}; | |
}; | |
"urllib3" = super.buildPythonPackage { | |
name = "urllib3-1.22"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/ee/11/7c59620aceedcc1ef65e156cc5ce5a24ef87be4107c2b74458464e437a5d/urllib3-1.22.tar.gz"; | |
sha256 = "0kyvc9zdlxr5r96bng5rhm9a6sfqidrbvvkz64s76qs5267dli6c"; | |
}; | |
}; | |
"validate-email" = super.buildPythonPackage { | |
name = "validate-email-1.3"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/84/a0/cb53fb64b52123513d04f9b913b905f3eb6fda7264e639b4573cc715c29f/validate_email-1.3.tar.gz"; | |
sha256 = "1bxffaf5yz2cph8ki55vdvdypbwkvn2xr1firlcy62vqbzf1jivq"; | |
}; | |
}; | |
"vcversioner" = super.buildPythonPackage { | |
name = "vcversioner-2.16.0.0"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/c5/cc/33162c0a7b28a4d8c83da07bc2b12cee58c120b4a9e8bba31c41c8d35a16/vcversioner-2.16.0.0.tar.gz"; | |
sha256 = "16z10sm78jd7ca3jbkgc3q5i8a8q7y1h21q1li21yy3rlhbhrrns"; | |
}; | |
}; | |
"wcwidth" = super.buildPythonPackage { | |
name = "wcwidth-0.1.7"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/55/11/e4a2bb08bb450fdbd42cc709dd40de4ed2c472cf0ccb9e64af22279c5495/wcwidth-0.1.7.tar.gz"; | |
sha256 = "0pn6dflzm609m4r3i8ik5ni9ijjbb5fa3vg1n7hn6vkd49r77wrx"; | |
}; | |
}; | |
"webencodings" = super.buildPythonPackage { | |
name = "webencodings-0.5.1"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz"; | |
sha256 = "08qrgrc4hrximb2gqnl69g01s93rhf2842jfxdjljc1dbwj1qsmk"; | |
}; | |
}; | |
"wheel" = super.buildPythonPackage { | |
name = "wheel-0.30.0"; | |
doCheck = false; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/fa/b4/f9886517624a4dcb81a1d766f68034344b7565db69f13d52697222daeb72/wheel-0.30.0.tar.gz"; | |
sha256 = "1j2knvhzgv71yli5nw6fxn87rrdxsx2xw8ldn28gs8z8jh5gw5cm"; | |
}; | |
}; | |
"zest.releaser" = super.buildPythonPackage { | |
name = "zest.releaser-6.13.3"; | |
doCheck = false; | |
propagatedBuildInputs = [ | |
self."setuptools" | |
self."colorama" | |
self."six" | |
self."twine" | |
self."chardet" | |
self."check-manifest" | |
self."pyroma" | |
self."readme-renderer" | |
self."wheel" | |
]; | |
src = fetchurl { | |
url = "https://pypi.python.org/packages/0e/ed/5a27b8732f739feaf2789f846c5e81045b022b4f0a2cc1f261158d849401/zest.releaser-6.13.3.tar.gz"; | |
sha256 = "0gqxr73himv61hszywpsg6mix3m062jh38mvkr9fcmzapiaq3mms"; | |
}; | |
}; | |
### Test requirements | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// CodeMirror, copyright (c) by Marijn Haverbeke and others | |
// Distributed under an MIT license: http://codemirror.net/LICENSE | |
(function(mod) { | |
if (typeof exports == "object" && typeof module == "object") // CommonJS | |
mod(require("../../lib/codemirror")); | |
else if (typeof define == "function" && define.amd) // AMD | |
define(["../../lib/codemirror"], mod); | |
else // Plain browser env | |
mod(CodeMirror); | |
})(function(CodeMirror) { | |
"use strict"; | |
// https://github.com/boakley/brackets-robotframework/blob/master/main.js | |
CodeMirror.defineMode("robotframework", function() { | |
function canonicalTableName(name) { | |
// This returns the canonical (internal) name for a table, | |
// which will be one of "settings", "test_cases", | |
// "keywords", or "variables" | |
// | |
// This function will return null if name isn't one of the | |
// strings supported by robot | |
name = name.trim().toLowerCase(); | |
if (name.match("settings?|metadata")) {return "settings"; } | |
if (name.match("test ?cases?")) {return "test_cases"; } | |
if (name.match("(user )?keywords?")) {return "keywords"; } | |
if (name.match("variables?")) {return "variables"; } | |
return null; | |
} | |
function isHeading(stream, state) { | |
// this matches things like "*** Test Cases ***", "*** Keywors ***", etc | |
// It tries to strictly follow the robot specification, which implies you | |
// can have more than one asterisk, and trailing asterisks are optional, | |
// and the table names must be one of the recognized table names | |
if (stream.sol()) { | |
var match = stream.match(/^\s*\*+\s*(settings?|metadata|variables?|test ?cases?|(user )?keywords?)[ *]*$/i); | |
if (match !== null) { | |
state.table_name = canonicalTableName(match[1]); | |
state.tc_or_kw_name = null; | |
stream.skipToEnd(); | |
return true; | |
} | |
} | |
return false; | |
} | |
function isSpecial(stream, state) { | |
var cell = stream.current().trim() | |
// this isn't 100% precise, but it's good enough for now. | |
if ([":FOR", "IN", "IN RANGE", "WITH NAME", "AND"].indexOf(cell) >= 0) { | |
return true; | |
} | |
} | |
function isContinuation(stream, state) { | |
// Return true if the stream is currently in a | |
// continuation cell. This will catch random data | |
// that is not the first non-empty cell on a line, | |
// but that's such a rare thing that it's not a | |
// big deal. | |
return (stream.current().trim() === "..."); | |
} | |
function isSetting(stream, state) { | |
// Return true if the stream is in a settings table and the | |
// token is a valid setting | |
if (state.isSettingsTable() && state.column === 0) { | |
var s = stream.current().trim().toLowerCase(); | |
if (s.match("^(library|resource|variables|documentation|metadata|" + | |
"suite setup|suite teardown|suite precondition|" + | |
"suite postcondition|force tags|default tags|test setup|" + | |
"test teardown|test precondition|test postcondition|" + | |
"test template|test timeout)$")) { | |
return true; | |
} | |
} | |
return false; | |
} | |
function isLocalSetting(stream, state) { | |
var s = stream.current().trim().toLowerCase(); | |
if (state.isTestCasesTable()) { | |
if (s.match("\\[(documentation|tags|setup|teardown|precondition|postcondition|template|timeout)\\]")) { | |
return true; | |
} | |
} else if (state.isKeywordsTable()) { | |
if (s.match("\\[(documentation|arguments|return|timeout)\\]")) { | |
return true; | |
} | |
} | |
return false; | |
} | |
function isName(stream, state) { | |
// Return true if this is the first column in a test case or keyword table | |
if (state.column === 0 && (state.isTestCasesTable() || state.isKeywordsTable())) { | |
state.tc_or_kw_name = stream.current(); | |
return true; | |
} | |
return false; | |
} | |
function isSubheading(stream, state) { | |
// Return true if a cell begins with two or more colons | |
// (eg: ":: Log in") Admittedly, this is a non-standard | |
// feature, but it should be pretty harmless (or useful!) | |
// for others. My team defines a keyword named ":: {$text}" | |
// which we use to organize our code in a long test case | |
// or keyword. | |
if (stream.match(/^\s*:::? \S.*$/)) { | |
return true; | |
} | |
return false; | |
} | |
function isComment(stream, state) { | |
// Return true if a cell begins with a hash (and optional leading whitesp | |
if (stream.match(/^\s*#/)) { | |
return true; | |
} | |
return false; | |
} | |
function isSeparator(stream) { | |
// Return true if the stream is currently in a separator | |
// (read: tab, or two or more whitespace characters | |
var match = stream.match(/(\t|\s{2,})/); | |
return match; | |
} | |
function eatCellContents(stream, state) { | |
// gobble up characters until the end of the line or we find a separator | |
var ch; | |
while ((ch = stream.next()) != null) { | |
if (ch === "\\") { | |
// escaped character; gobble up the following character | |
stream.next(); | |
} else if (ch === "\t") { | |
stream.backUp(1); | |
break; | |
} else if (ch === " ") { | |
if (stream.match(/\s/, false)) { | |
stream.backUp(1); | |
break; | |
} | |
} | |
} | |
return (stream.current().length > 0); | |
} | |
return { | |
startState: function () { | |
return { | |
table_name: null, | |
tc_or_kw_name: null, | |
column: -1, | |
separator: "pipes", // maybe we should get this from preferences? | |
isSettingsTable: function () {return (this.table_name === "settings"); }, | |
isVariablesTable: function () {return (this.table_name === "variables"); }, | |
isTestCasesTable: function () {return (this.table_name === "test_cases"); }, | |
isKeywordsTable: function () {return (this.table_name === "keywords"); }, | |
pipeSeparated: function () {return (this.separator == "pipes"); }, | |
spaceSeparated: function () {return (this.separator == "spaces"); }, | |
tabSeparated: function () {return (this.separator == "tabs"); } | |
}; | |
}, | |
token: function (stream, state) { | |
// determine separator mode for this line -- pipes or spaces | |
if (stream.sol()) { | |
state.column = 0; | |
state.separator = "spaces"; | |
} | |
// comments | |
if (isComment(stream, state)) { | |
stream.skipToEnd(); | |
return "comment"; | |
} | |
// table headings (eg: *** Test Cases ***) | |
if (isHeading(stream, state)) { | |
return "header"; | |
} | |
// subheadings | |
// A subheading is a nonstandard thing my team uses. See | |
// the definition of isSubheading for more information... | |
if (isSubheading(stream, state)) { | |
// It makes sense to use "header" here, but we're already | |
// using "header", and it has behavior assocated with it. | |
// | |
// "def" isn't pendantically correct, but this extension | |
// doesn't use "def" for anything else, so we might as well | |
// use it for this. Pretend "def" means "defines a section" | |
return "def" | |
} | |
// N.B. Don't ever use "cell-separator" for anything | |
// but cell separators. We use this for parsing tokens | |
// in other places in the code. | |
if (isSeparator(stream, state)) { | |
state.column += 1; | |
// this is a custom class (cm-cell-separator) | |
// defined in main.js | |
return "cell-separator"; | |
} | |
var c; | |
if ((c = eatCellContents(stream, state))) { | |
// a table cell; it may be one of several flavors | |
if (isContinuation(stream, state)) {return "meta"; } | |
if (isLocalSetting(stream, state)) {return "builtin"; } | |
if (isSetting(stream, state)) {return "attribute"; } | |
if (isName(stream, state)) {return "keyword"; } | |
} | |
// special constructs, like :FOR | |
if (isSpecial(stream, state)) { | |
return "builtin" | |
} | |
return null; | |
} | |
}; | |
}); | |
}); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ pkgs ? import <nixpkgs> {} | |
, pythonPackages ? pkgs.python3Packages | |
, setup ? import (pkgs.fetchFromGitHub { | |
owner = "datakurre"; | |
repo = "setup.nix"; | |
rev = "3660563b961d2cfb81e197288ae9df2d0d9dc648"; | |
sha256 = "173r6800bds7ignmcai1a5v264awl7y5smy0a3ccip6g4myb1759"; | |
}) | |
}: | |
let overrides = self: super: { | |
"robotframework-seleniumlibrary" = super."robotframework-seleniumlibrary".overridePythonAttrs(old: { | |
src = pkgs.fetchFromGitHub { | |
owner = "robotframework"; | |
repo = "seleniumlibrary"; | |
rev = "34cea295575c5f69e3325ec12b295a6167092acd"; | |
sha256 = "07x6krwzvlba3087v38q53ww3spn1lmzva5kn9163l1m6kafpvii"; | |
}; | |
}); | |
}; | |
in setup { | |
inherit pkgs pythonPackages overrides; | |
# "backports.shutil-get-terminal-size" = pythonPackages.backports_shutil_get_terminal_size; | |
# certifi = pythonPackages.certifi; | |
# decorator = pythonPackages.decorator; | |
# docutils = pythonPackages.docutils; | |
# enum34 = pythonPackages.enum34; | |
# idna = pythonPackages.idna; | |
# ipykernel = pythonPackages.ipykernel; | |
# ipython-genutils = pythonPackages.ipython_genutils; | |
# ipython = pythonPackages.ipython; | |
# jedi = pythonPackages.jedi; | |
# jupyter-client = pythonPackages.jupyter_client; | |
# jupyter-core = pythonPackages.jupyter_core; | |
# jsonschema = pythonPackages.jsonschema; | |
# parso = pythonPackages.parso; | |
# pexpect = pythonPackages.pexpect; | |
# pillow = pythonPackages.pillow; | |
# prompt-toolkit = pythonPackages.prompt_toolkit; | |
# ptyprocess = pythonPackages.ptyprocess; | |
# pygments = pythonPackages.pygments; | |
# py = pythonPackages.py; | |
# python-dateutil = pythonPackages.dateutil; | |
# pyzmq = pythonPackages.pyzmq; | |
# requests = pythonPackages.requests; | |
# singledispatch = pythonPackages.singledispatch; | |
# six = pythonPackages.six; | |
# tornado = pythonPackages.tornado; | |
# traitlets = pythonPackages.traitlets; | |
# urllib3 = pythonPackages.urllib3; | |
# wcwidth = pythonPackages.wcwidth; | |
# chardet = pythonPackages.chardet; | |
src = ./requirements.nix; | |
propagatedBuildInputs = with pkgs; [ geckodriver pythonPackages.opencv3 ]; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment