From f2984e44e1661f89686df417f22f81b4db0a2c47 Mon Sep 17 00:00:00 2001 From: "Jessica B. Hamrick" Date: Sat, 15 Dec 2018 14:51:31 +0000 Subject: [PATCH 01/18] Backport PR #973: Create a paper on nbgrader I am very excited to announce that we planning to submit a paper on nbgrader to the [Journal of Open Source Education](http://jose.theoj.org/about#author_guidelines)! This PR contains the first draft of the paper which will be submitted. For this submission we are following the [Project Jupyter guidelines for JOSS papers](https://github.com/jupyter/governance/blob/master/papers.md#process-for-journal-of-open-source-software-joss). I will be the coordinator and organize the writing and submission of the paper. I have included authors for the first draft people who were authors on the talk I gave last year at SciPy, but authorship will also be extended to everyone who has contributed to nbgrader. ## Can I be an author? ... --- codemeta.json | 125 +++++++++++++++++++++++++++++++ paper/paper.bib | 146 ++++++++++++++++++++++++++++++++++++ paper/paper.md | 195 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 466 insertions(+) create mode 100644 codemeta.json create mode 100644 paper/paper.bib create mode 100644 paper/paper.md diff --git a/codemeta.json b/codemeta.json new file mode 100644 index 000000000..cdd2a709a --- /dev/null +++ b/codemeta.json @@ -0,0 +1,125 @@ +{ + "@context": "https://raw.githubusercontent.com/codemeta/codemeta/master/codemeta.jsonld", + "@type": "Code", + "author": [ + { + "@type": "Organization", + "name": "Project Jupyter" + }, + { + "@id": "https://orcid.org/0000-0003-3538-8829", + "@type": "Person", + "email": "dblank@brynmawr.edu", + "name": "Douglas Blank", + "affiliation": "Bryn Mawr College" + }, + { + "@id": "https://orcid.org/0000-0003-1039-6195", + "@type": "Person", + "email": "ddbourgin@berkeley.edu", + "name": "David Bourgin", + "affiliation": "University of California, Berkeley" + }, + { + "@id": "https://orcid.org/0000-0002-3945-7337", + "@type": "Person", + "email": "brownaa@lafayette.edu", + "name": "Alexander Brown", + "affiliation": "Lafayette College" + }, + { + "@id": "https://orcid.org/0000-0002-7636-8632", + "@type": "Person", + "email": "bussonniermatthias@gmail.com", + "name": "Matthias Bussonnier", + "affiliation": "University of California, Berkeley" + }, + { + "@id": "https://orcid.org/0000-0003-4805-2216", + "@type": "Person", + "email": "jfrederic@google.com", + "name": "Jonathan Frederic", + "affiliation": "Google Inc." + }, + { + "@id": "https://orcid.org/0000-0002-5223-6168", + "@type": "Person", + "email": "bgranger@calpoly.edu", + "name": "Brian E. Granger", + "affiliation": "Cal Poly, San Luis Obispo" + }, + { + "@id": "https://orcid.org/0000-0002-5138-7255", + "@type": "Person", + "email": "tom_griffiths@berkeley.edu", + "name": "Thomas L. Griffiths", + "affiliation": "University of California, Berkeley" + }, + { + "@id": "https://orcid.org/0000-0002-3860-0429", + "@type": "Person", + "email": "jessica.b.hamrick@gmail.com", + "name": "Jessica B. Hamrick", + "affiliation": "DeepMind" + }, + { + "@id": "https://orcid.org/0000-0002-4281-9351", + "@type": "Person", + "email": "rgbkrk@gmail.com", + "name": "Kyle Kelley", + "affiliation": "Netflix, Inc." + }, + { + "@id": "https://orcid.org/0000-0002-6680-2941", + "@type": "Person", + "email": "mpacer.phd@gmail.com", + "name": "M Pacer", + "affiliation": "Netflix, Inc." + }, + { + "@id": "https://orcid.org/0000-0002-5799-8524", + "@type": "Person", + "email": "page.lg@gmail.com", + "name": "Logan Page", + "affiliation": "University of Pretoria" + }, + { + "@id": "http://orcid.org/0000-0002-1725-9815", + "@type": "Person", + "email": "Fernando.Perez@berkeley.edu", + "name": "Fernando Pérez", + "affiliation": "University of California, Berkeley" + }, + { + "@id": "https://orcid.org/0000-0002-1023-7082", + "@type": "Person", + "email": "benjaminrk@gmail.com", + "name": "Benjamin Ragan-Kelley", + "affiliation": "Simula Research Laboratory" + }, + { + "@id": "https://orcid.org/0000-0001-9848-4872", + "@type": "Person", + "email": "suchow@berkeley.edu", + "name": "Jordan W. Suchow", + "affiliation": "University of California, Berkeley" + }, + { + "@id": "https://orcid.org/0000-0002-9817-8485", + "@type": "Person", + "email": "willingc@gmail.com", + "name": "Carol Willing", + "affiliation": "Cal Poly, San Luis Obispo" + } + ], + "identifier": "", + "codeRepository": "https://github.com/jupyter/nbgrader", + "datePublished": "2018-06-02", + "dateModified": "2018-06-02", + "dateCreated": "2014-09-13", + "description": "A system for assigning and grading Jupyter notebooks", + "keywords": "jupyter, jupyterhub, grading, autograding", + "license": "Modified BSD", + "title": "nbgrader", + "version": "v0.6.0-dev" +} diff --git a/paper/paper.bib b/paper/paper.bib new file mode 100644 index 000000000..2b0a5a6b6 --- /dev/null +++ b/paper/paper.bib @@ -0,0 +1,146 @@ +@manual{JupyterHub, +author = {{Jupyter Development Team}}, +title = {{JupyterHub}}, +year = {2018} +} + +@inproceedings{kluyver2016jupyter, + title={Jupyter Notebooks-a publishing format for reproducible computational workflows.}, + author={Kluyver, Thomas and Ragan-Kelley, Benjamin and P{\'e}rez, Fernando and Granger, Brian E and Bussonnier, Matthias and Frederic, Jonathan and Kelley, Kyle and Hamrick, Jessica B and Grout, Jason and Corlay, Sylvain and others}, + booktitle={ELPUB}, + pages={87--90}, + year={2016} +} + +@article{Cortina2007, +author = {Cortina, Thomas J.}, +doi = {10.1145/1227504.1227387}, +isbn = {1595933611}, +issn = {00978418}, +journal = {ACM SIGCSE Bulletin}, +number = {1}, +pages = {218}, +title = {{An introduction to computer science for non-majors using principles of computation}}, +volume = {39}, +year = {2007} +} + +@article{Forte2005, +author = {Forte, Andrea and Guzdial, Mark}, +journal = {IEEE Transactions on Education}, +number = {2}, +pages = {248--253}, +title = {{Motivation and non-majors in computer science: Identifying discrete audiences for introductory courses}}, +volume = {48}, +year = {2005} +} + +@article{Guzdial2005, +author = {Guzdial, Mark and Forte, Andrea}, +doi = {10.1145/1047124.1047468}, +isbn = {1581139977}, +issn = {00978418}, +journal = {ACM SIGCSE Bulletin}, +number = {1}, +pages = {361}, +title = {{Design process for a non-majors computing course}}, +volume = {37}, +year = {2005} +} + +@manual{mathematica, + Author={{Wolfram Research, Inc.}}, + Title={Mathematica}, + Address={Champaign, IL}, + year = {2018} +} + +@manual{maple, + title = {Maple}, + author = {{Maplesoft, a division of Waterloo Maple Inc.}}, + Address = {Waterloo, Ontario} +} + +@manual{matlab, + Author={{The MathWorks, Inc.}}, + Title={{MATLAB}}, + Address={Natick, MA}, + year = {2018} +} + +@manual{sage, + Key = {Sage}, + Author = {W.\thinspace{}A. Stein and others}, + Organization = {The Sage Development Team}, + Title = {{S}age {M}athematics {S}oftware}, + Year = {2018}, +} + +@Article{PerezGranger2007, + Author = {P\'erez, Fernando and Granger, Brian E.}, + Title = {{IP}ython: a System for Interactive Scientific Computing}, + Journal = {Computing in Science and Engineering}, + Volume = {9}, + Number = {3}, + Pages = {21--29}, + month = may, + year = 2007, + url = "https://ipython.org", + ISSN = "1521-9615", + doi = {10.1109/MCSE.2007.53}, + publisher = {IEEE Computer Society}, +} + +@misc{Hamrick2016, + author = {Hamrick, Jessica B. and Jupyter Development Team}, + title = {2016 Jupyter Education Survey}, + month = may, + year = 2016, + doi = {10.5281/zenodo.51701}, + url = {https://github.com/jupyter/datasets/tree/master/surveys/2016-05-education-survey} +} + +@misc{Castano_Jupyter_Map, + author = {Castaño, Ezequiel Leonardo}, + title = {Jupyter Map}, + month = may, + year = 2018, + doi = {10.5281/zenodo.1245087}, + url = {https://elc.github.io/jupyter-map/} +} + +@misc{Castano_Jupyter_Map_Dataset, + author = {Castaño, Ezequiel Leonardo}, + title = {Jupyter Usage in Institutions with Coordinates}, + month = may, + year = 2018, + doi = {10.5281/zenodo.1244833}, + url = {https://doi.org/10.5281/zenodo.1244833} +} + +@article{Wilson2014, +archivePrefix = {arXiv}, +arxivId = {1307.5448}, +author = {Wilson, Greg}, +doi = {10.12688/f1000research.3-62.v1}, +eprint = {1307.5448}, +issn = {2046-1402}, +journal = {F1000Research}, +pages = {62}, +pmid = {24715981}, +title = {{Software Carpentry: lessons learned}}, +url = {http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=3976103\&tool=pmcentrez\&rendertype=abstract}, +volume = {3}, +year = {2014} +} + +@article{wing2008computational, + title={Computational thinking and thinking about computing}, + author={Wing, Jeannette M}, + journal={Philosophical transactions of the royal society of London A: mathematical, physical and engineering sciences}, + volume={366}, + number={1881}, + pages={3717--3725}, + year={2008}, + publisher={The Royal Society} +} diff --git a/paper/paper.md b/paper/paper.md new file mode 100644 index 000000000..53689276e --- /dev/null +++ b/paper/paper.md @@ -0,0 +1,195 @@ +--- +title: 'nbgrader: A Tool for Creating and Grading Assignments in the Jupyter Notebook' +tags: +- jupyter +- jupyterhub +- grading +- autograding +authors: +- name: Project Jupyter +- name: Douglas Blank + orcid: 0000-0003-3538-8829 + affiliation: 7 +- name: David Bourgin + orcid: 0000-0003-1039-6195 + affiliation: 1 +- name: Alexander Brown + orcid: 0000-0002-3945-7337 + affiliation: 8 +- name: Matthias Bussonnier + orcid: 0000-0002-7636-8632 + affiliation: 1 +- name: Jonathan Frederic + orcid: 0000-0003-4805-2216 + affiliation: 2 +- name: Brian Granger + orcid: 0000-0002-5223-6168 + affiliation: 3 +- name: Thomas L. Griffiths + orcid: 0000-0002-5138-7255 + affiliation: 1 +- name: Jessica Hamrick + orcid: 0000-0002-3860-0429 + affiliation: 4 +- name: Kyle Kelley + orcid: 0000-0002-4281-9351 + affiliation: 9 +- name: M Pacer + orcid: 0000-0002-6680-2941 + affiliation: 9 +- name: Logan Page + orcid: 0000-0002-5799-8524 + affiliation: 5 +- name: Fernando Pérez + orcid: 0000-0002-1725-9815 + affiliation: 1 +- name: Benjamin Ragan-Kelley + orcid: 0000-0002-1023-7082 + affiliation: 6 +- name: Jordan W. Suchow + orcid: 0000-0001-9848-4872 + affiliation: 1 +- name: Carol Willing + orcid: 0000-0002-9817-8485 + affiliation: 3 +affiliations: +- name: University of California, Berkeley + index: 1 +- name: Google Inc. + index: 2 +- name: Cal Poly, San Luis Obispo + index: 3 +- name: DeepMind + index: 4 +- name: University of Pretoria + index: 5 +- name: Simula Research Laboratory + index: 6 +- name: Bryn Mawr College + index: 7 +- name: Lafayette College + index: 8 +- name: Netflix, Inc. + index: 9 +date: 2 June 2018 +bibliography: paper.bib +--- + +*Note: Authors on this paper are listed in alphabetical order.* + +# Summary + +nbgrader is a flexible tool for creating and grading assignments in the Jupyter +notebook [@kluyver2016jupyter]. nbgrader allows instructors to create a single, +master copy of an assignment, including tests and canonical solutions. From the +master copy, a student version is generated without the solutions, thus +obviating the need to maintain two separate versions. nbgrader also +automatically grades submitted assignments by executing the notebooks and +storing the results of the tests in a database. After auto-grading, instructors +can manually grade free responses and provide partial credit using the +*formgrader* notebook extension. Finally, instructors can use nbgrader to leave +personalized feedback for each student's submission, including comments as well +as detailed error information. + +nbgrader can also be used with JupyterHub [@JupyterHub], which is a centralized, +server-based installation that manages user logins and management of Jupyter +notebooks. When used with JupyterHub, nbgrader provides additional workflow +functionality, covering the entire grading process. After creating an +assignment, instructors can distribute it to students, who can then fetch a copy +of the assignment directly through the notebook server interface. Students can +submit their completed assignment through the same interface, making it +available for instructors. After students submit their assignments, instructors +can collect the assignments with a single command and use the auto-grading +functionality in the normal way. + +Since its conception in September 2014, nbgrader has been used in a number of +educational contexts, including courses at UC Berkeley, Cal Poly, University of +Pretoria, University of Edinburgh, Northeastern University, Central Connecticut +State University, KTH Royal Institute of Technology, CU Boulder, University of +Amsterdam, George Washington University, Texas A&M, Bryn Mawr College, Lafayette +College, and University of Maryland; and, as of May 2018, over 10,000 +nbgrader-based notebooks exist on GitHub. In addition to its core functionality, +nbgrader has expanded to support a number of other features, including the +ability to handle multiple courses on the same JupyterHub instance; the option +to either include or hide automatically graded tests; customizable late +penalties; and support for importing assignment files downloaded from a Learning +Management System (LMS). + +# Statement of Need + +The use of computational methods has become increasingly widespread in fields +outside of computer science [@wing2008computational]. As these disciplines begin +to require computational tools, undergraduate curricula also begin to include +topics in programming and computer science. However, perhaps because students +are focused on the discipline that is the object of their study—and programming +is likely a secondary interest—it has been shown that teaching computer science +can be more effective when courses include interdisciplinary motivations +[@Cortina2007; @Forte2005; @Guzdial2005]. One approach for teaching programming +in a way that facilitates exploration with interdisciplinary questions is to +teach students computational concepts in an interactive environment where it is +possible to quickly write, test, and tweak small units of code. Many such +environments exist, including Mathematica [@mathematica], Maple [@maple], MATLAB +[@matlab], Sage [@sage] and IPython [@PerezGranger2007]. However, these are +often focused on programming in a single language, and lack an efficient system +for distributing, collecting, and evaluating student work. + +In recent years, the IPython project introduced the *Jupyter Notebook* +[@kluyver2016jupyter], an interface that is conducive to interactive and +literate computing, where programmers can interleave prose with code, equations, +figures, and other media. Jupyter notebooks were originally developed for +programming in the Python programming language, but multiple languages are now +supported using the same infrastructure. The Jupyter Notebook is ideal for +educators because it allows them to create assignments which include +instructions along with code or Markdown cells, in which students can provide +solutions to exercises. Students can, for example, write code both to compute +and visualize a particular result. Because the notebook is interactive, students +can iterate on a coding problem without needing to switch back and forth between +a command line and a text editor, and they can rapidly see results alongside the +code which produced them. + +Instructors in many fields have begun using the Jupyter Notebook as a teaching +platform. The notebook has appeared in over 100 classes [@Hamrick2016; +@Castano_Jupyter_Map; @Castano_Jupyter_Map_Dataset] on subjects including +geology, mathematics, mechanical engineering, data science, chemical +engineering, and bioinformatics. Software Carpentry, an organization that aims +to teach graduate students basic computational skills, has also adopted the +notebook for some of its lessons [@Wilson2014]. + +Despite its appearance in many classrooms, yet before the existence of nbgrader, +the notebook was rarely used on a large scale for *graded* assignments. Instead, +it was often used either for ungraded in-class exercises, or in classes small +enough that notebooks could be graded by hand (sometimes even by printing them +out on paper and grading them like a traditional assignment). This is because +there are several challenges to using the notebook for graded assignments at +scale. First, for large classes, it is not feasible for an instructor to +manually grade the code that students write: there must be a way to +automatically grade the assignments. However, a Jupyter Notebook is not a +typical script that can be run and may contain multiple parts of a problem +within the same notebook; thus, automatically grading a notebook is less +straightforward than it is for a traditional script. Second, for many courses, +programming is a means to an end: understanding concepts in a specific domain. +Specifically, instructors may want students to provide both code and written +free-responses interpreting the results of that code. Instructors thus need to +be able to rely on automatic grading for the coding parts of an assignment, but +also be able to manually grade the written responses in the surrounding context +of the student's code. Third, the process of distributing assignments to +students and later collecting them can be tedious, even more so with Jupyter +Notebooks because there is a separate interface for accessing them beyond the +standard system file browser. This often leads to confusion on the part of +students about how to open notebooks after downloading them, and where to find +the notebooks in order to submit them. + +nbgrader streamlines the repetitive tasks found in course management and +grading, and its flexibility allows greater communication between instructor and +student. nbgrader has moreover enabled instructors to use notebook-based +assignments in classes with hundreds of students, which was previously not +possible to do without excessive human effort. Overall, nbgrader does—and with +further development will continue to—improve the learning experience for both +instructors and students, enabling them to focus on content and building +understanding. + + +# References + +* nbgrader source code: [https://github.com/jupyter/nbgrader](https://github.com/jupyter/nbgrader) +* nbgrader documentation: [http://nbgrader.readthedocs.io/en/stable/](http://nbgrader.readthedocs.io/en/stable/) From 88c356cbd635e6381ac50a94c31ec0258ecd4fbc Mon Sep 17 00:00:00 2001 From: "Jessica B. Hamrick" Date: Sat, 15 Dec 2018 15:00:59 +0000 Subject: [PATCH 02/18] Backport PR #1049: Update test builds on Travis - remove cov-core per @jedbrown #1045 - add more recent python versions - update to newer travis build parameters --- .travis.yml | 4 ++-- dev-requirements-windows.txt | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1e3a1995c..bcccf8d5a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,10 +1,10 @@ language: python -sudo: false -dist: trusty python: - 2.7 + - 3.4 - 3.5 - 3.6 + - nightly env: matrix: - GROUP=docs diff --git a/dev-requirements-windows.txt b/dev-requirements-windows.txt index 02554fd4c..c114046ae 100644 --- a/dev-requirements-windows.txt +++ b/dev-requirements-windows.txt @@ -1,9 +1,8 @@ -pytest +pytest>=4.0 pytest-cov pytest-rerunfailures coverage selenium invoke sphinx -codecov -cov-core \ No newline at end of file +codecov \ No newline at end of file From b24f0677dda1a3c763497210d06925539b4311c2 Mon Sep 17 00:00:00 2001 From: "Jessica B. Hamrick" Date: Sat, 15 Dec 2018 15:03:56 +0000 Subject: [PATCH 03/18] Backport PR #1045: Dev requirements and spelling tests I don't know whether this PR should go to 'master' or '0.5.x'. Should Travis tests be made to regard spelling errors as errors? (It appears that you have to check the logs to see if any errors are identified.) --- nbgrader/docs/source/spelling_wordlist.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/nbgrader/docs/source/spelling_wordlist.txt b/nbgrader/docs/source/spelling_wordlist.txt index 03f318839..d520b2375 100644 --- a/nbgrader/docs/source/spelling_wordlist.txt +++ b/nbgrader/docs/source/spelling_wordlist.txt @@ -205,6 +205,7 @@ student’s subclasses subcommand subcommands +subdirectory suchow suprocesses svurens @@ -230,6 +231,7 @@ url username usernames utcnow +validator ve vinaykola webapp @@ -254,4 +256,4 @@ xsrf XSRF yml you’ll -zpincus \ No newline at end of file +zpincus From e7d4291ac17a52e8e8aa25ec2b9d4bc977834bb5 Mon Sep 17 00:00:00 2001 From: "Jessica B. Hamrick" Date: Sat, 15 Dec 2018 15:04:38 +0000 Subject: [PATCH 04/18] Backport PR #1047: JOSE paper bib updates Capitalization fixes and add missing DOI. Does the JupyterHub reference have a URL or DOI? Cc: https://github.com/openjournals/jose-reviews/issues/32 --- paper/paper.bib | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/paper/paper.bib b/paper/paper.bib index 2b0a5a6b6..8fb7effe3 100644 --- a/paper/paper.bib +++ b/paper/paper.bib @@ -5,11 +5,12 @@ @manual{JupyterHub } @inproceedings{kluyver2016jupyter, - title={Jupyter Notebooks-a publishing format for reproducible computational workflows.}, + title={Jupyter Notebooks: A publishing format for reproducible computational workflows}, author={Kluyver, Thomas and Ragan-Kelley, Benjamin and P{\'e}rez, Fernando and Granger, Brian E and Bussonnier, Matthias and Frederic, Jonathan and Kelley, Kyle and Hamrick, Jessica B and Grout, Jason and Corlay, Sylvain and others}, booktitle={ELPUB}, pages={87--90}, - year={2016} + year={2016}, + doi={10.3233/978-1-61499-649-1-87}, } @article{Cortina2007, @@ -32,7 +33,8 @@ @article{Forte2005 pages = {248--253}, title = {{Motivation and non-majors in computer science: Identifying discrete audiences for introductory courses}}, volume = {48}, -year = {2005} +year = {2005}, +doi={10.1109/TE.2004.842924}, } @article{Guzdial2005, @@ -93,7 +95,7 @@ @Article{PerezGranger2007 @misc{Hamrick2016, author = {Hamrick, Jessica B. and Jupyter Development Team}, - title = {2016 Jupyter Education Survey}, + title = {2016 {Jupyter} Education Survey}, month = may, year = 2016, doi = {10.5281/zenodo.51701}, @@ -137,10 +139,11 @@ @article{Wilson2014 @article{wing2008computational, title={Computational thinking and thinking about computing}, author={Wing, Jeannette M}, - journal={Philosophical transactions of the royal society of London A: mathematical, physical and engineering sciences}, + journal={Philosophical Transactions of the Royal Society of London A: Mathematical, Physical and Engineering Sciences}, volume={366}, number={1881}, pages={3717--3725}, year={2008}, - publisher={The Royal Society} + publisher={The Royal Society}, + doi={10.1098/rsta.2008.0118} } From 02ceedc0b524c3ce9896717fa01331669e24a77a Mon Sep 17 00:00:00 2001 From: "Jessica B. Hamrick" Date: Sat, 15 Dec 2018 15:47:07 +0000 Subject: [PATCH 05/18] Pin requirements so that tests pass --- dev-requirements-windows.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dev-requirements-windows.txt b/dev-requirements-windows.txt index c114046ae..94550d1f8 100644 --- a/dev-requirements-windows.txt +++ b/dev-requirements-windows.txt @@ -1,8 +1,8 @@ -pytest>=4.0 +pytest==3.2.1 pytest-cov -pytest-rerunfailures +pytest-rerunfailures==3.1 coverage -selenium +selenium==3.6.0 invoke sphinx codecov \ No newline at end of file From 1f712c570751d22e6be95a79af33e51120abb91d Mon Sep 17 00:00:00 2001 From: "Jessica B. Hamrick" Date: Sat, 15 Dec 2018 15:51:53 +0000 Subject: [PATCH 06/18] Backport PR #1016: Fix anaconda link Fix of #1015 I did a quick look and found only anaconda links are broken, Let me know if there are any additional links which are also broken --- nbgrader/docs/source/user_guide/installation.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nbgrader/docs/source/user_guide/installation.rst b/nbgrader/docs/source/user_guide/installation.rst index 401ca3e35..80e240398 100644 --- a/nbgrader/docs/source/user_guide/installation.rst +++ b/nbgrader/docs/source/user_guide/installation.rst @@ -9,7 +9,7 @@ system and command line tools:: pip install nbgrader -Or, if you use `Anaconda `__:: +Or, if you use `Anaconda `__:: conda install jupyter conda install -c conda-forge nbgrader @@ -18,7 +18,7 @@ nbgrader extensions ------------------- **Take note:** If you install nbgrader via `Anaconda -`__ the nbgrader extensions will be +`__ (meaning all extensions are installed +`__ (meaning all extensions are installed and enabled with the ``--sys-prefix`` flag, i.e. anyone using the particular Python installation or conda environment where nbgrader is installed). But you only want the *create assignment* extension available to a specific user and From be8b2bc9a8bb715fd90784db1b99910bbbbfb2ef Mon Sep 17 00:00:00 2001 From: "Jessica B. Hamrick" Date: Sat, 15 Dec 2018 15:58:15 +0000 Subject: [PATCH 07/18] Regenerate docs --- .../autograded/bitdiddle/ps1/problem1.ipynb | 18 +- .../autograded/bitdiddle/ps1/problem2.ipynb | 12 + .../autograded/hacker/ps1/problem1.ipynb | 12 + .../autograded/hacker/ps1/problem2.ipynb | 12 + .../creating_and_grading_assignments.ipynb | 48 +- .../feedback/bitdiddle/ps1/problem1.html | 1583 +++++++++++++++-- .../feedback/bitdiddle/ps1/problem2.html | 1558 ++++++++++++++-- .../feedback/hacker/ps1/problem1.html | 1575 ++++++++++++++-- .../feedback/hacker/ps1/problem2.html | 1558 ++++++++++++++-- nbgrader/docs/source/user_guide/grades.csv | 4 +- .../managing_assignment_files.ipynb | 56 +- .../managing_assignment_files_manually.ipynb | 68 +- .../user_guide/managing_the_database.ipynb | 16 +- 13 files changed, 5967 insertions(+), 553 deletions(-) diff --git a/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/problem1.ipynb b/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/problem1.ipynb index 7d395ddb0..26740681b 100644 --- a/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/problem1.ipynb +++ b/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/problem1.ipynb @@ -133,7 +133,7 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;34m\"\"\"Check that squares returns the correct output for several inputs\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0msquares\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0msquares\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m4\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0msquares\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m4\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m9\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m16\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m25\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m36\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m49\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m64\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m81\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m100\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0msquares\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m11\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m4\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m9\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m16\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m25\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m36\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m49\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m64\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m81\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m100\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m121\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;34m\"\"\"Check that squares returns the correct output for several inputs\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0msquares\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0msquares\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m4\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0msquares\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m4\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m9\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m16\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m25\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m36\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m49\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m64\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m81\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m100\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0msquares\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m11\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m4\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m9\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m16\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m25\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m36\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m49\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m64\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m81\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m100\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m121\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mAssertionError\u001b[0m: " ] } @@ -265,7 +265,7 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;34m\"\"\"Check that sum_of_squares returns the correct answer for various inputs.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0msum_of_squares\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0msum_of_squares\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m5\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0msum_of_squares\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m385\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0msum_of_squares\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m11\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m506\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;34m\"\"\"Check that sum_of_squares returns the correct answer for various inputs.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0msum_of_squares\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0msum_of_squares\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m5\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0msum_of_squares\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m385\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0msum_of_squares\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m11\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m506\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mAssertionError\u001b[0m: " ] } @@ -369,7 +369,7 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNotImplementedError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# YOUR CODE HERE\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mNotImplementedError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# YOUR CODE HERE\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mNotImplementedError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mNotImplementedError\u001b[0m: " ] } @@ -385,6 +385,18 @@ "display_name": "Python", "language": "python", "name": "python" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.4" } }, "nbformat": 4, diff --git a/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/problem2.ipynb b/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/problem2.ipynb index 57dcf54ee..28fc9e702 100644 --- a/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/problem2.ipynb +++ b/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/problem2.ipynb @@ -102,6 +102,18 @@ "display_name": "Python", "language": "python", "name": "python" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.4" } }, "nbformat": 4, diff --git a/nbgrader/docs/source/user_guide/autograded/hacker/ps1/problem1.ipynb b/nbgrader/docs/source/user_guide/autograded/hacker/ps1/problem1.ipynb index 014cce260..a46f458f6 100644 --- a/nbgrader/docs/source/user_guide/autograded/hacker/ps1/problem1.ipynb +++ b/nbgrader/docs/source/user_guide/autograded/hacker/ps1/problem1.ipynb @@ -393,6 +393,18 @@ "display_name": "Python", "language": "python", "name": "python" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.4" } }, "nbformat": 4, diff --git a/nbgrader/docs/source/user_guide/autograded/hacker/ps1/problem2.ipynb b/nbgrader/docs/source/user_guide/autograded/hacker/ps1/problem2.ipynb index ffd8758cd..9bd803f34 100644 --- a/nbgrader/docs/source/user_guide/autograded/hacker/ps1/problem2.ipynb +++ b/nbgrader/docs/source/user_guide/autograded/hacker/ps1/problem2.ipynb @@ -102,6 +102,18 @@ "display_name": "Python", "language": "python", "name": "python" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.4" } }, "nbformat": 4, diff --git a/nbgrader/docs/source/user_guide/creating_and_grading_assignments.ipynb b/nbgrader/docs/source/user_guide/creating_and_grading_assignments.ipynb index cfd26311c..eb6e18412 100644 --- a/nbgrader/docs/source/user_guide/creating_and_grading_assignments.ipynb +++ b/nbgrader/docs/source/user_guide/creating_and_grading_assignments.ipynb @@ -855,10 +855,12 @@ "output_type": "stream", "text": [ "[AutogradeApp | WARNING] No nbgrader_config.py file found (rerun with --debug to see where nbgrader is looking)\n", - "[AutogradeApp | INFO] Copying /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted/bitdiddle/ps1/jupyter.png -> /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/jupyter.png\n", "[AutogradeApp | INFO] Copying /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted/bitdiddle/ps1/timestamp.txt -> /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/timestamp.txt\n", + "[AutogradeApp | INFO] Copying /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted/bitdiddle/ps1/jupyter.png -> /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/jupyter.png\n", "[AutogradeApp | INFO] Creating/updating student with ID 'bitdiddle': {}\n", - "[AutogradeApp | INFO] SubmittedAssignment submitted at 2015-02-02 22:58:23.948203\n", + "/Users/jhamrick/miniconda3/envs/nbgrader/lib/python3.6/site-packages/dateutil/parser/_parser.py:1204: UnknownTimezoneWarning: tzname PST identified but not understood. Pass `tzinfos` argument in order to correctly return a timezone-aware datetime. In a future version, this will raise an exception.\n", + " category=UnknownTimezoneWarning)\n", + "[AutogradeApp | INFO] SubmittedAssignment submitted at 2015-02-02 14:58:23.948203\n", "[AutogradeApp | INFO] Overwriting files with master versions from the source directory\n", "[AutogradeApp | INFO] Copying /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/source/./ps1/jupyter.png -> /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/jupyter.png\n", "[AutogradeApp | INFO] Sanitizing /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted/bitdiddle/ps1/problem1.ipynb\n", @@ -869,19 +871,21 @@ "[AutogradeApp | INFO] Autograding /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/problem1.ipynb\n", "[AutogradeApp | INFO] Converting notebook /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/problem1.ipynb\n", "[AutogradeApp | INFO] Executing notebook with kernel: python\n", - "[AutogradeApp | INFO] Writing 13359 bytes to /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/problem1.ipynb\n", + "[AutogradeApp | INFO] Writing 13626 bytes to /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/problem1.ipynb\n", "[AutogradeApp | INFO] Sanitizing /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted/bitdiddle/ps1/problem2.ipynb\n", "[AutogradeApp | INFO] Converting notebook /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted/bitdiddle/ps1/problem2.ipynb\n", "[AutogradeApp | INFO] Writing 2299 bytes to /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/problem2.ipynb\n", "[AutogradeApp | INFO] Autograding /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/problem2.ipynb\n", "[AutogradeApp | INFO] Converting notebook /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/problem2.ipynb\n", "[AutogradeApp | INFO] Executing notebook with kernel: python\n", - "[AutogradeApp | INFO] Writing 2296 bytes to /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/problem2.ipynb\n", + "[AutogradeApp | INFO] Writing 2563 bytes to /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/problem2.ipynb\n", "[AutogradeApp | INFO] Setting destination file permissions to 444\n", - "[AutogradeApp | INFO] Copying /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted/hacker/ps1/jupyter.png -> /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/hacker/ps1/jupyter.png\n", "[AutogradeApp | INFO] Copying /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted/hacker/ps1/timestamp.txt -> /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/hacker/ps1/timestamp.txt\n", + "[AutogradeApp | INFO] Copying /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted/hacker/ps1/jupyter.png -> /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/hacker/ps1/jupyter.png\n", "[AutogradeApp | INFO] Creating/updating student with ID 'hacker': {}\n", - "[AutogradeApp | INFO] SubmittedAssignment submitted at 2015-02-01 17:28:58.749302\n", + "/Users/jhamrick/miniconda3/envs/nbgrader/lib/python3.6/site-packages/dateutil/parser/_parser.py:1204: UnknownTimezoneWarning: tzname PST identified but not understood. Pass `tzinfos` argument in order to correctly return a timezone-aware datetime. In a future version, this will raise an exception.\n", + " category=UnknownTimezoneWarning)\n", + "[AutogradeApp | INFO] SubmittedAssignment submitted at 2015-02-01 09:28:58.749302\n", "[AutogradeApp | INFO] Overwriting files with master versions from the source directory\n", "[AutogradeApp | INFO] Copying /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/source/./ps1/jupyter.png -> /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/hacker/ps1/jupyter.png\n", "[AutogradeApp | INFO] Sanitizing /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted/hacker/ps1/problem1.ipynb\n", @@ -890,14 +894,14 @@ "[AutogradeApp | INFO] Autograding /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/hacker/ps1/problem1.ipynb\n", "[AutogradeApp | INFO] Converting notebook /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/hacker/ps1/problem1.ipynb\n", "[AutogradeApp | INFO] Executing notebook with kernel: python\n", - "[AutogradeApp | INFO] Writing 9258 bytes to /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/hacker/ps1/problem1.ipynb\n", + "[AutogradeApp | INFO] Writing 9525 bytes to /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/hacker/ps1/problem1.ipynb\n", "[AutogradeApp | INFO] Sanitizing /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted/hacker/ps1/problem2.ipynb\n", "[AutogradeApp | INFO] Converting notebook /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted/hacker/ps1/problem2.ipynb\n", "[AutogradeApp | INFO] Writing 2429 bytes to /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/hacker/ps1/problem2.ipynb\n", "[AutogradeApp | INFO] Autograding /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/hacker/ps1/problem2.ipynb\n", "[AutogradeApp | INFO] Converting notebook /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/hacker/ps1/problem2.ipynb\n", "[AutogradeApp | INFO] Executing notebook with kernel: python\n", - "[AutogradeApp | INFO] Writing 2426 bytes to /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/hacker/ps1/problem2.ipynb\n", + "[AutogradeApp | INFO] Writing 2693 bytes to /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/hacker/ps1/problem2.ipynb\n", "[AutogradeApp | INFO] Setting destination file permissions to 444\n" ] } @@ -1060,19 +1064,19 @@ "output_type": "stream", "text": [ "[FeedbackApp | WARNING] No nbgrader_config.py file found (rerun with --debug to see where nbgrader is looking)\n", - "[FeedbackApp | INFO] Copying /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/jupyter.png -> /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/feedback/bitdiddle/ps1/jupyter.png\n", "[FeedbackApp | INFO] Copying /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/timestamp.txt -> /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/feedback/bitdiddle/ps1/timestamp.txt\n", + "[FeedbackApp | INFO] Copying /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/jupyter.png -> /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/feedback/bitdiddle/ps1/jupyter.png\n", "[FeedbackApp | INFO] Converting notebook /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/problem1.ipynb\n", - "[FeedbackApp | INFO] Writing 275507 bytes to /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/feedback/bitdiddle/ps1/problem1.html\n", + "[FeedbackApp | INFO] Writing 299671 bytes to /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/feedback/bitdiddle/ps1/problem1.html\n", "[FeedbackApp | INFO] Converting notebook /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/bitdiddle/ps1/problem2.ipynb\n", - "[FeedbackApp | INFO] Writing 254432 bytes to /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/feedback/bitdiddle/ps1/problem2.html\n", + "[FeedbackApp | INFO] Writing 278579 bytes to /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/feedback/bitdiddle/ps1/problem2.html\n", "[FeedbackApp | INFO] Setting destination file permissions to 644\n", - "[FeedbackApp | INFO] Copying /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/hacker/ps1/jupyter.png -> /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/feedback/hacker/ps1/jupyter.png\n", "[FeedbackApp | INFO] Copying /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/hacker/ps1/timestamp.txt -> /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/feedback/hacker/ps1/timestamp.txt\n", + "[FeedbackApp | INFO] Copying /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/hacker/ps1/jupyter.png -> /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/feedback/hacker/ps1/jupyter.png\n", "[FeedbackApp | INFO] Converting notebook /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/hacker/ps1/problem1.ipynb\n", - "[FeedbackApp | INFO] Writing 271810 bytes to /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/feedback/hacker/ps1/problem1.html\n", + "[FeedbackApp | INFO] Writing 295970 bytes to /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/feedback/hacker/ps1/problem1.html\n", "[FeedbackApp | INFO] Converting notebook /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/autograded/hacker/ps1/problem2.ipynb\n", - "[FeedbackApp | INFO] Writing 254562 bytes to /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/feedback/hacker/ps1/problem2.html\n", + "[FeedbackApp | INFO] Writing 278709 bytes to /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/feedback/hacker/ps1/problem2.html\n", "[FeedbackApp | INFO] Setting destination file permissions to 644\n" ] } @@ -1167,8 +1171,8 @@ "output_type": "stream", "text": [ "assignment,duedate,timestamp,student_id,last_name,first_name,email,raw_score,late_submission_penalty,score,max_score\n", - "ps1,,2015-02-02 22:58:23.948203,bitdiddle,,,,1.5,0.0,1.5,9.0\n", - "ps1,,2015-02-01 17:28:58.749302,hacker,,,,3.0,0.0,3.0,9.0\n" + "ps1,,2015-02-02 14:58:23.948203,bitdiddle,,,,1.5,0.0,1.5,9.0\n", + "ps1,,2015-02-01 09:28:58.749302,hacker,,,,3.0,0.0,3.0,9.0\n" ] } ], @@ -1191,6 +1195,18 @@ "display_name": "Python", "language": "python", "name": "python" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.4" } }, "nbformat": 4, diff --git a/nbgrader/docs/source/user_guide/feedback/bitdiddle/ps1/problem1.html b/nbgrader/docs/source/user_guide/feedback/bitdiddle/ps1/problem1.html index d3a94acb2..0ec3a1dec 100644 --- a/nbgrader/docs/source/user_guide/feedback/bitdiddle/ps1/problem1.html +++ b/nbgrader/docs/source/user_guide/feedback/bitdiddle/ps1/problem1.html @@ -200,7 +200,6 @@ *:before, *:after { background: transparent !important; - color: #000 !important; box-shadow: none !important; text-shadow: none !important; } @@ -6745,15 +6744,15 @@ * */ /*! - * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) */ /* FONT PATH * -------------------------- */ @font-face { font-family: 'FontAwesome'; - src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.2.0'); - src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg'); + src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.7.0'); + src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg'); font-weight: normal; font-style: normal; } @@ -6810,6 +6809,19 @@ border: solid 0.08em #eee; border-radius: .1em; } +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left { + margin-right: .3em; +} +.fa.fa-pull-right { + margin-left: .3em; +} +/* Deprecated as of 4.4.0 */ .pull-right { float: right; } @@ -6826,6 +6838,10 @@ -webkit-animation: fa-spin 2s infinite linear; animation: fa-spin 2s infinite linear; } +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} @-webkit-keyframes fa-spin { 0% { -webkit-transform: rotate(0deg); @@ -6847,31 +6863,31 @@ } } .fa-rotate-90 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; -webkit-transform: rotate(90deg); -ms-transform: rotate(90deg); transform: rotate(90deg); } .fa-rotate-180 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; -webkit-transform: rotate(180deg); -ms-transform: rotate(180deg); transform: rotate(180deg); } .fa-rotate-270 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; -webkit-transform: rotate(270deg); -ms-transform: rotate(270deg); transform: rotate(270deg); } .fa-flip-horizontal { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; -webkit-transform: scale(-1, 1); -ms-transform: scale(-1, 1); transform: scale(-1, 1); } .fa-flip-vertical { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; -webkit-transform: scale(1, -1); -ms-transform: scale(1, -1); transform: scale(1, -1); @@ -7356,6 +7372,7 @@ .fa-twitter:before { content: "\f099"; } +.fa-facebook-f:before, .fa-facebook:before { content: "\f09a"; } @@ -7368,6 +7385,7 @@ .fa-credit-card:before { content: "\f09d"; } +.fa-feed:before, .fa-rss:before { content: "\f09e"; } @@ -8005,7 +8023,8 @@ .fa-male:before { content: "\f183"; } -.fa-gittip:before { +.fa-gittip:before, +.fa-gratipay:before { content: "\f184"; } .fa-sun-o:before { @@ -8109,7 +8128,7 @@ .fa-digg:before { content: "\f1a6"; } -.fa-pied-piper:before { +.fa-pied-piper-pp:before { content: "\f1a7"; } .fa-pied-piper-alt:before { @@ -8235,6 +8254,7 @@ content: "\f1ce"; } .fa-ra:before, +.fa-resistance:before, .fa-rebel:before { content: "\f1d0"; } @@ -8248,6 +8268,8 @@ .fa-git:before { content: "\f1d3"; } +.fa-y-combinator-square:before, +.fa-yc-square:before, .fa-hacker-news:before { content: "\f1d4"; } @@ -8416,6 +8438,657 @@ .fa-meanpath:before { content: "\f20c"; } +.fa-buysellads:before { + content: "\f20d"; +} +.fa-connectdevelop:before { + content: "\f20e"; +} +.fa-dashcube:before { + content: "\f210"; +} +.fa-forumbee:before { + content: "\f211"; +} +.fa-leanpub:before { + content: "\f212"; +} +.fa-sellsy:before { + content: "\f213"; +} +.fa-shirtsinbulk:before { + content: "\f214"; +} +.fa-simplybuilt:before { + content: "\f215"; +} +.fa-skyatlas:before { + content: "\f216"; +} +.fa-cart-plus:before { + content: "\f217"; +} +.fa-cart-arrow-down:before { + content: "\f218"; +} +.fa-diamond:before { + content: "\f219"; +} +.fa-ship:before { + content: "\f21a"; +} +.fa-user-secret:before { + content: "\f21b"; +} +.fa-motorcycle:before { + content: "\f21c"; +} +.fa-street-view:before { + content: "\f21d"; +} +.fa-heartbeat:before { + content: "\f21e"; +} +.fa-venus:before { + content: "\f221"; +} +.fa-mars:before { + content: "\f222"; +} +.fa-mercury:before { + content: "\f223"; +} +.fa-intersex:before, +.fa-transgender:before { + content: "\f224"; +} +.fa-transgender-alt:before { + content: "\f225"; +} +.fa-venus-double:before { + content: "\f226"; +} +.fa-mars-double:before { + content: "\f227"; +} +.fa-venus-mars:before { + content: "\f228"; +} +.fa-mars-stroke:before { + content: "\f229"; +} +.fa-mars-stroke-v:before { + content: "\f22a"; +} +.fa-mars-stroke-h:before { + content: "\f22b"; +} +.fa-neuter:before { + content: "\f22c"; +} +.fa-genderless:before { + content: "\f22d"; +} +.fa-facebook-official:before { + content: "\f230"; +} +.fa-pinterest-p:before { + content: "\f231"; +} +.fa-whatsapp:before { + content: "\f232"; +} +.fa-server:before { + content: "\f233"; +} +.fa-user-plus:before { + content: "\f234"; +} +.fa-user-times:before { + content: "\f235"; +} +.fa-hotel:before, +.fa-bed:before { + content: "\f236"; +} +.fa-viacoin:before { + content: "\f237"; +} +.fa-train:before { + content: "\f238"; +} +.fa-subway:before { + content: "\f239"; +} +.fa-medium:before { + content: "\f23a"; +} +.fa-yc:before, +.fa-y-combinator:before { + content: "\f23b"; +} +.fa-optin-monster:before { + content: "\f23c"; +} +.fa-opencart:before { + content: "\f23d"; +} +.fa-expeditedssl:before { + content: "\f23e"; +} +.fa-battery-4:before, +.fa-battery:before, +.fa-battery-full:before { + content: "\f240"; +} +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: "\f241"; +} +.fa-battery-2:before, +.fa-battery-half:before { + content: "\f242"; +} +.fa-battery-1:before, +.fa-battery-quarter:before { + content: "\f243"; +} +.fa-battery-0:before, +.fa-battery-empty:before { + content: "\f244"; +} +.fa-mouse-pointer:before { + content: "\f245"; +} +.fa-i-cursor:before { + content: "\f246"; +} +.fa-object-group:before { + content: "\f247"; +} +.fa-object-ungroup:before { + content: "\f248"; +} +.fa-sticky-note:before { + content: "\f249"; +} +.fa-sticky-note-o:before { + content: "\f24a"; +} +.fa-cc-jcb:before { + content: "\f24b"; +} +.fa-cc-diners-club:before { + content: "\f24c"; +} +.fa-clone:before { + content: "\f24d"; +} +.fa-balance-scale:before { + content: "\f24e"; +} +.fa-hourglass-o:before { + content: "\f250"; +} +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: "\f251"; +} +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: "\f252"; +} +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: "\f253"; +} +.fa-hourglass:before { + content: "\f254"; +} +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: "\f255"; +} +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: "\f256"; +} +.fa-hand-scissors-o:before { + content: "\f257"; +} +.fa-hand-lizard-o:before { + content: "\f258"; +} +.fa-hand-spock-o:before { + content: "\f259"; +} +.fa-hand-pointer-o:before { + content: "\f25a"; +} +.fa-hand-peace-o:before { + content: "\f25b"; +} +.fa-trademark:before { + content: "\f25c"; +} +.fa-registered:before { + content: "\f25d"; +} +.fa-creative-commons:before { + content: "\f25e"; +} +.fa-gg:before { + content: "\f260"; +} +.fa-gg-circle:before { + content: "\f261"; +} +.fa-tripadvisor:before { + content: "\f262"; +} +.fa-odnoklassniki:before { + content: "\f263"; +} +.fa-odnoklassniki-square:before { + content: "\f264"; +} +.fa-get-pocket:before { + content: "\f265"; +} +.fa-wikipedia-w:before { + content: "\f266"; +} +.fa-safari:before { + content: "\f267"; +} +.fa-chrome:before { + content: "\f268"; +} +.fa-firefox:before { + content: "\f269"; +} +.fa-opera:before { + content: "\f26a"; +} +.fa-internet-explorer:before { + content: "\f26b"; +} +.fa-tv:before, +.fa-television:before { + content: "\f26c"; +} +.fa-contao:before { + content: "\f26d"; +} +.fa-500px:before { + content: "\f26e"; +} +.fa-amazon:before { + content: "\f270"; +} +.fa-calendar-plus-o:before { + content: "\f271"; +} +.fa-calendar-minus-o:before { + content: "\f272"; +} +.fa-calendar-times-o:before { + content: "\f273"; +} +.fa-calendar-check-o:before { + content: "\f274"; +} +.fa-industry:before { + content: "\f275"; +} +.fa-map-pin:before { + content: "\f276"; +} +.fa-map-signs:before { + content: "\f277"; +} +.fa-map-o:before { + content: "\f278"; +} +.fa-map:before { + content: "\f279"; +} +.fa-commenting:before { + content: "\f27a"; +} +.fa-commenting-o:before { + content: "\f27b"; +} +.fa-houzz:before { + content: "\f27c"; +} +.fa-vimeo:before { + content: "\f27d"; +} +.fa-black-tie:before { + content: "\f27e"; +} +.fa-fonticons:before { + content: "\f280"; +} +.fa-reddit-alien:before { + content: "\f281"; +} +.fa-edge:before { + content: "\f282"; +} +.fa-credit-card-alt:before { + content: "\f283"; +} +.fa-codiepie:before { + content: "\f284"; +} +.fa-modx:before { + content: "\f285"; +} +.fa-fort-awesome:before { + content: "\f286"; +} +.fa-usb:before { + content: "\f287"; +} +.fa-product-hunt:before { + content: "\f288"; +} +.fa-mixcloud:before { + content: "\f289"; +} +.fa-scribd:before { + content: "\f28a"; +} +.fa-pause-circle:before { + content: "\f28b"; +} +.fa-pause-circle-o:before { + content: "\f28c"; +} +.fa-stop-circle:before { + content: "\f28d"; +} +.fa-stop-circle-o:before { + content: "\f28e"; +} +.fa-shopping-bag:before { + content: "\f290"; +} +.fa-shopping-basket:before { + content: "\f291"; +} +.fa-hashtag:before { + content: "\f292"; +} +.fa-bluetooth:before { + content: "\f293"; +} +.fa-bluetooth-b:before { + content: "\f294"; +} +.fa-percent:before { + content: "\f295"; +} +.fa-gitlab:before { + content: "\f296"; +} +.fa-wpbeginner:before { + content: "\f297"; +} +.fa-wpforms:before { + content: "\f298"; +} +.fa-envira:before { + content: "\f299"; +} +.fa-universal-access:before { + content: "\f29a"; +} +.fa-wheelchair-alt:before { + content: "\f29b"; +} +.fa-question-circle-o:before { + content: "\f29c"; +} +.fa-blind:before { + content: "\f29d"; +} +.fa-audio-description:before { + content: "\f29e"; +} +.fa-volume-control-phone:before { + content: "\f2a0"; +} +.fa-braille:before { + content: "\f2a1"; +} +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: "\f2a4"; +} +.fa-glide:before { + content: "\f2a5"; +} +.fa-glide-g:before { + content: "\f2a6"; +} +.fa-signing:before, +.fa-sign-language:before { + content: "\f2a7"; +} +.fa-low-vision:before { + content: "\f2a8"; +} +.fa-viadeo:before { + content: "\f2a9"; +} +.fa-viadeo-square:before { + content: "\f2aa"; +} +.fa-snapchat:before { + content: "\f2ab"; +} +.fa-snapchat-ghost:before { + content: "\f2ac"; +} +.fa-snapchat-square:before { + content: "\f2ad"; +} +.fa-pied-piper:before { + content: "\f2ae"; +} +.fa-first-order:before { + content: "\f2b0"; +} +.fa-yoast:before { + content: "\f2b1"; +} +.fa-themeisle:before { + content: "\f2b2"; +} +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: "\f2b3"; +} +.fa-fa:before, +.fa-font-awesome:before { + content: "\f2b4"; +} +.fa-handshake-o:before { + content: "\f2b5"; +} +.fa-envelope-open:before { + content: "\f2b6"; +} +.fa-envelope-open-o:before { + content: "\f2b7"; +} +.fa-linode:before { + content: "\f2b8"; +} +.fa-address-book:before { + content: "\f2b9"; +} +.fa-address-book-o:before { + content: "\f2ba"; +} +.fa-vcard:before, +.fa-address-card:before { + content: "\f2bb"; +} +.fa-vcard-o:before, +.fa-address-card-o:before { + content: "\f2bc"; +} +.fa-user-circle:before { + content: "\f2bd"; +} +.fa-user-circle-o:before { + content: "\f2be"; +} +.fa-user-o:before { + content: "\f2c0"; +} +.fa-id-badge:before { + content: "\f2c1"; +} +.fa-drivers-license:before, +.fa-id-card:before { + content: "\f2c2"; +} +.fa-drivers-license-o:before, +.fa-id-card-o:before { + content: "\f2c3"; +} +.fa-quora:before { + content: "\f2c4"; +} +.fa-free-code-camp:before { + content: "\f2c5"; +} +.fa-telegram:before { + content: "\f2c6"; +} +.fa-thermometer-4:before, +.fa-thermometer:before, +.fa-thermometer-full:before { + content: "\f2c7"; +} +.fa-thermometer-3:before, +.fa-thermometer-three-quarters:before { + content: "\f2c8"; +} +.fa-thermometer-2:before, +.fa-thermometer-half:before { + content: "\f2c9"; +} +.fa-thermometer-1:before, +.fa-thermometer-quarter:before { + content: "\f2ca"; +} +.fa-thermometer-0:before, +.fa-thermometer-empty:before { + content: "\f2cb"; +} +.fa-shower:before { + content: "\f2cc"; +} +.fa-bathtub:before, +.fa-s15:before, +.fa-bath:before { + content: "\f2cd"; +} +.fa-podcast:before { + content: "\f2ce"; +} +.fa-window-maximize:before { + content: "\f2d0"; +} +.fa-window-minimize:before { + content: "\f2d1"; +} +.fa-window-restore:before { + content: "\f2d2"; +} +.fa-times-rectangle:before, +.fa-window-close:before { + content: "\f2d3"; +} +.fa-times-rectangle-o:before, +.fa-window-close-o:before { + content: "\f2d4"; +} +.fa-bandcamp:before { + content: "\f2d5"; +} +.fa-grav:before { + content: "\f2d6"; +} +.fa-etsy:before { + content: "\f2d7"; +} +.fa-imdb:before { + content: "\f2d8"; +} +.fa-ravelry:before { + content: "\f2d9"; +} +.fa-eercast:before { + content: "\f2da"; +} +.fa-microchip:before { + content: "\f2db"; +} +.fa-snowflake-o:before { + content: "\f2dc"; +} +.fa-superpowers:before { + content: "\f2dd"; +} +.fa-wpexplorer:before { + content: "\f2de"; +} +.fa-meetup:before { + content: "\f2e0"; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} /*! * * IPython base @@ -8695,6 +9368,10 @@ max-width: 800px; margin: auto; } +div.traceback-wrapper pre.traceback { + max-height: 600px; + overflow: auto; +} /** * Primary styles * @@ -8720,6 +9397,10 @@ z-index: 100; } body > #header #header-container { + display: flex; + flex-direction: row; + justify-content: space-between; + padding: 5px; padding-bottom: 5px; padding-top: 5px; box-sizing: border-box; @@ -8751,13 +9432,16 @@ padding-top: 1px; padding-bottom: 1px; } -@media (max-width: 991px) { - #ipython_notebook { - margin-left: 10px; - } -} [dir="rtl"] #ipython_notebook { + margin-right: 10px; + margin-left: 0; +} +[dir="rtl"] #ipython_notebook.pull-left { float: right !important; + float: right; +} +.flex-spacer { + flex: 1; } #noscript { width: auto; @@ -8792,9 +9476,15 @@ input.ui-button { padding: 0.3em 0.9em; } +span#kernel_logo_widget { + margin: 0 10px; +} span#login_widget { float: right; } +[dir="rtl"] span#login_widget { + float: left; +} span#login_widget > .button, #logout { color: #333; @@ -8909,6 +9599,9 @@ overflow: auto; flex: 1; } +.modal-header { + cursor: move; +} @media (min-width: 768px) { .modal .modal-dialog { width: 700px; @@ -8929,10 +9622,23 @@ display: inline-block; margin-bottom: -4px; } -/*! -* -* IPython tree view -* +[dir="rtl"] .center-nav form.pull-left { + float: right !important; + float: right; +} +[dir="rtl"] .center-nav .navbar-text { + float: right; +} +[dir="rtl"] .navbar-inner { + text-align: right; +} +[dir="rtl"] div.text-left { + text-align: right; +} +/*! +* +* IPython tree view +* */ /* We need an invisible input field on top of the sentense*/ /* "Drag file onto the list ..." */ @@ -8945,35 +9651,43 @@ margin: 0; } .alternate_upload input.fileinput { - text-align: center; - vertical-align: middle; - display: inline; + position: absolute; + display: block; + width: 100%; + height: 100%; + overflow: hidden; + cursor: pointer; opacity: 0; z-index: 2; - width: 12ex; - margin-right: -12ex; +} +.alternate_upload .btn-xs > input.fileinput { + margin: -1px -5px; } .alternate_upload .btn-upload { + position: relative; height: 22px; } +::-webkit-file-upload-button { + cursor: pointer; +} /** * Primary styles * * Author: Jupyter Development Team */ -[dir="rtl"] #tabs li { - float: right; -} ul#tabs { margin-bottom: 4px; } -[dir="rtl"] ul#tabs { - margin-right: 0px; -} ul#tabs a { padding-top: 6px; padding-bottom: 4px; } +[dir="rtl"] ul#tabs.nav-tabs > li { + float: right; +} +[dir="rtl"] ul#tabs.nav.nav-tabs { + padding-right: 0; +} ul.breadcrumb a:focus, ul.breadcrumb a:hover { text-decoration: none; @@ -8992,15 +9706,13 @@ .list_toolbar .tree-buttons { padding-top: 1px; } -[dir="rtl"] .list_toolbar .tree-buttons { - float: left !important; -} -[dir="rtl"] .list_toolbar .pull-right { - padding-top: 1px; +[dir="rtl"] .list_toolbar .tree-buttons .pull-right { float: left !important; + float: left; } -[dir="rtl"] .list_toolbar .pull-left { - float: right !important; +[dir="rtl"] .list_toolbar .col-sm-4, +[dir="rtl"] .list_toolbar .col-sm-8 { + float: right; } .dynamic-buttons { padding-top: 3px; @@ -9056,7 +9768,7 @@ .list_item > div input { margin-right: 7px; margin-left: 14px; - vertical-align: baseline; + vertical-align: text-bottom; line-height: 22px; position: relative; top: -1px; @@ -9067,6 +9779,9 @@ vertical-align: baseline; line-height: 22px; } +[dir="rtl"] .list_item > div input { + margin-right: 0; +} .new-file input[type=checkbox] { visibility: hidden; } @@ -9082,6 +9797,14 @@ line-height: 22px; vertical-align: baseline; } +.item_modified { + margin-right: 7px; + margin-left: 7px; +} +[dir="rtl"] .item_modified.pull-right { + float: left !important; + float: left; +} .item_buttons { line-height: 1em; margin-left: -5px; @@ -9109,6 +9832,14 @@ margin-right: 7px; float: left; } +[dir="rtl"] .item_buttons.pull-right { + float: left !important; + float: left; +} +[dir="rtl"] .item_buttons .kernel-name { + margin-left: 7px; + float: right; +} .toolbar_info { height: 24px; line-height: 24px; @@ -9134,18 +9865,32 @@ background-color: transparent; font-weight: bold; } +.sort_button { + display: inline-block; + padding-left: 7px; +} +[dir="rtl"] .sort_button.pull-right { + float: left !important; + float: left; +} #tree-selector { padding-right: 0px; } -[dir="rtl"] #tree-selector a { - float: right; -} #button-select-all { min-width: 50px; } +[dir="rtl"] #button-select-all.btn { + float: right ; +} #select-all { margin-left: 7px; margin-right: 2px; + margin-top: 2px; + height: 16px; +} +[dir="rtl"] #select-all.pull-left { + float: right !important; + float: right; } .menu_icon { margin-right: 2px; @@ -9163,6 +9908,12 @@ -moz-osx-font-smoothing: grayscale; content: "\f114"; } +.folder_icon:before.fa-pull-left { + margin-right: .3em; +} +.folder_icon:before.fa-pull-right { + margin-left: .3em; +} .folder_icon:before.pull-left { margin-right: .3em; } @@ -9180,6 +9931,12 @@ position: relative; top: -1px; } +.notebook_icon:before.fa-pull-left { + margin-right: .3em; +} +.notebook_icon:before.fa-pull-right { + margin-left: .3em; +} .notebook_icon:before.pull-left { margin-right: .3em; } @@ -9198,6 +9955,12 @@ top: -1px; color: #5cb85c; } +.running_notebook_icon:before.fa-pull-left { + margin-right: .3em; +} +.running_notebook_icon:before.fa-pull-right { + margin-left: .3em; +} .running_notebook_icon:before.pull-left { margin-right: .3em; } @@ -9215,6 +9978,12 @@ position: relative; top: -2px; } +.file_icon:before.fa-pull-left { + margin-right: .3em; +} +.file_icon:before.fa-pull-right { + margin-left: .3em; +} .file_icon:before.pull-left { margin-right: .3em; } @@ -9229,8 +9998,11 @@ left: auto; right: 0; } -[dir="rtl"] #new-menu { - text-align: right; +#new-menu .dropdown-header { + font-size: 10px; + border-bottom: 1px solid #e5e5e5; + padding: 0 0 3px; + margin: -3px 20px 0; } .kernel-menu-icon { padding-right: 12px; @@ -9277,9 +10049,6 @@ #running .panel-group .panel .panel-body .list_container .list_item:last-child { border-bottom: 0px; } -[dir="rtl"] #running .col-sm-8 { - float: right !important; -} .delete-button { display: none; } @@ -9289,6 +10058,12 @@ .rename-button { display: none; } +.move-button { + display: none; +} +.download-button { + display: none; +} .shutdown-button { display: none; } @@ -9329,6 +10104,12 @@ -moz-osx-font-smoothing: grayscale; width: 20px; } +.dirty-indicator.fa-pull-left { + margin-right: .3em; +} +.dirty-indicator.fa-pull-right { + margin-left: .3em; +} .dirty-indicator.pull-left { margin-right: .3em; } @@ -9344,6 +10125,12 @@ -moz-osx-font-smoothing: grayscale; width: 20px; } +.dirty-indicator-dirty.fa-pull-left { + margin-right: .3em; +} +.dirty-indicator-dirty.fa-pull-right { + margin-left: .3em; +} .dirty-indicator-dirty.pull-left { margin-right: .3em; } @@ -9359,6 +10146,12 @@ -moz-osx-font-smoothing: grayscale; width: 20px; } +.dirty-indicator-clean.fa-pull-left { + margin-right: .3em; +} +.dirty-indicator-clean.fa-pull-right { + margin-left: .3em; +} .dirty-indicator-clean.pull-left { margin-right: .3em; } @@ -9374,6 +10167,12 @@ -moz-osx-font-smoothing: grayscale; content: "\f00c"; } +.dirty-indicator-clean:before.fa-pull-left { + margin-right: .3em; +} +.dirty-indicator-clean:before.fa-pull-right { + margin-left: .3em; +} .dirty-indicator-clean:before.pull-left { margin-right: .3em; } @@ -9418,15 +10217,133 @@ box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2); } } +.CodeMirror-dialog { + background-color: #fff; +} /*! * * IPython notebook * */ -/* CSS font colors for translated ANSI colors. */ +/* CSS font colors for translated ANSI escape sequences */ +/* The color values are a mix of + http://www.xcolors.net/dl/baskerville-ivorylight and + http://www.xcolors.net/dl/euphrasia */ +.ansi-black-fg { + color: #3E424D; +} +.ansi-black-bg { + background-color: #3E424D; +} +.ansi-black-intense-fg { + color: #282C36; +} +.ansi-black-intense-bg { + background-color: #282C36; +} +.ansi-red-fg { + color: #E75C58; +} +.ansi-red-bg { + background-color: #E75C58; +} +.ansi-red-intense-fg { + color: #B22B31; +} +.ansi-red-intense-bg { + background-color: #B22B31; +} +.ansi-green-fg { + color: #00A250; +} +.ansi-green-bg { + background-color: #00A250; +} +.ansi-green-intense-fg { + color: #007427; +} +.ansi-green-intense-bg { + background-color: #007427; +} +.ansi-yellow-fg { + color: #DDB62B; +} +.ansi-yellow-bg { + background-color: #DDB62B; +} +.ansi-yellow-intense-fg { + color: #B27D12; +} +.ansi-yellow-intense-bg { + background-color: #B27D12; +} +.ansi-blue-fg { + color: #208FFB; +} +.ansi-blue-bg { + background-color: #208FFB; +} +.ansi-blue-intense-fg { + color: #0065CA; +} +.ansi-blue-intense-bg { + background-color: #0065CA; +} +.ansi-magenta-fg { + color: #D160C4; +} +.ansi-magenta-bg { + background-color: #D160C4; +} +.ansi-magenta-intense-fg { + color: #A03196; +} +.ansi-magenta-intense-bg { + background-color: #A03196; +} +.ansi-cyan-fg { + color: #60C6C8; +} +.ansi-cyan-bg { + background-color: #60C6C8; +} +.ansi-cyan-intense-fg { + color: #258F8F; +} +.ansi-cyan-intense-bg { + background-color: #258F8F; +} +.ansi-white-fg { + color: #C5C1B4; +} +.ansi-white-bg { + background-color: #C5C1B4; +} +.ansi-white-intense-fg { + color: #A1A6B2; +} +.ansi-white-intense-bg { + background-color: #A1A6B2; +} +.ansi-default-inverse-fg { + color: #FFFFFF; +} +.ansi-default-inverse-bg { + background-color: #000000; +} +.ansi-bold { + font-weight: bold; +} +.ansi-underline { + text-decoration: underline; +} +/* The following styles are deprecated an will be removed in a future version */ .ansibold { font-weight: bold; } +.ansi-inverse { + outline: 0.5px dotted; +} /* use dark versions for foreground, to improve visibility */ .ansiblack { color: black; @@ -9504,12 +10421,20 @@ /* This acts as a spacer between cells, that is outside the border */ margin: 0px; outline: none; - border-left-width: 1px; - padding-left: 5px; - background: linear-gradient(to right, transparent -40px, transparent 1px, transparent 1px, transparent 100%); + position: relative; + overflow: visible; +} +div.cell:before { + position: absolute; + display: block; + top: -1px; + left: -1px; + width: 5px; + height: calc(100% + 2px); + content: ''; + background: transparent; } div.cell.jupyter-soft-selected { - border-left-color: #90CAF9; border-left-color: #E3F2FD; border-left-width: 1px; padding-left: 5px; @@ -9522,27 +10447,39 @@ border-color: transparent; } } -div.cell.selected { +div.cell.selected, +div.cell.selected.jupyter-soft-selected { border-color: #ababab; - border-left-width: 0px; - padding-left: 6px; - background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 5px, transparent 5px, transparent 100%); +} +div.cell.selected:before, +div.cell.selected.jupyter-soft-selected:before { + position: absolute; + display: block; + top: -1px; + left: -1px; + width: 5px; + height: calc(100% + 2px); + content: ''; + background: #42A5F5; } @media print { - div.cell.selected { + div.cell.selected, + div.cell.selected.jupyter-soft-selected { border-color: transparent; } } -div.cell.selected.jupyter-soft-selected { - border-left-width: 0; - padding-left: 6px; - background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 7px, #E3F2FD 7px, #E3F2FD 100%); -} .edit_mode div.cell.selected { border-color: #66BB6A; - border-left-width: 0px; - padding-left: 6px; - background: linear-gradient(to right, #66BB6A -40px, #66BB6A 5px, transparent 5px, transparent 100%); +} +.edit_mode div.cell.selected:before { + position: absolute; + display: block; + top: -1px; + left: -1px; + width: 5px; + height: calc(100% + 2px); + content: ''; + background: #66BB6A; } @media print { .edit_mode div.cell.selected { @@ -9738,7 +10675,9 @@ .CodeMirror-lines { /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */ /* we have set a different line-height and want this to scale with that. */ - padding: 0.4em; + /* Note that this should set vertical padding only, since CodeMirror assumes + that horizontal padding will be set on CodeMirror pre */ + padding: 0.4em 0; } .CodeMirror-linenumber { padding: 0 8px 0 4px; @@ -9748,12 +10687,25 @@ border-top-left-radius: 2px; } .CodeMirror pre { - /* In CM3 this went to 4px from 0 in CM2. We need the 0 value because of how we size */ - /* .CodeMirror-lines */ - padding: 0; + /* In CM3 this went to 4px from 0 in CM2. This sets horizontal padding only, + use .CodeMirror-lines for vertical */ + padding: 0 0.4em; border: 0; border-radius: 0; } +.CodeMirror-cursor { + border-left: 1.4px solid black; +} +@media screen and (min-width: 2138px) and (max-width: 4319px) { + .CodeMirror-cursor { + border-left: 2px solid black; + } +} +@media screen and (min-width: 4320px) { + .CodeMirror-cursor { + border-left: 4px solid black; + } +} /* Original style from softwaremaniacs.org (c) Ivan Sagalaev @@ -10006,6 +10958,9 @@ div.output_area svg.unconfined { max-width: none; } +div.output_area .mglyph > img { + max-width: none; +} /* This is needed to protect the pre formating from global settings such as that of bootstrap */ .output { @@ -10044,7 +10999,7 @@ } div.output_area pre { margin: 0; - padding: 0; + padding: 1px 0 1px 0; border: 0; vertical-align: baseline; color: black; @@ -10204,39 +11159,35 @@ .rendered_html h6:first-child { margin-top: 1em; } +.rendered_html ul:not(.list-inline), +.rendered_html ol:not(.list-inline) { + padding-left: 2em; +} .rendered_html ul { list-style: disc; - margin: 0em 2em; - padding-left: 0px; } .rendered_html ul ul { list-style: square; - margin: 0em 2em; + margin-top: 0; } .rendered_html ul ul ul { list-style: circle; - margin: 0em 2em; } .rendered_html ol { list-style: decimal; - margin: 0em 2em; - padding-left: 0px; } .rendered_html ol ol { list-style: upper-alpha; - margin: 0em 2em; + margin-top: 0; } .rendered_html ol ol ol { list-style: lower-alpha; - margin: 0em 2em; } .rendered_html ol ol ol ol { list-style: lower-roman; - margin: 0em 2em; } .rendered_html ol ol ol ol ol { list-style: decimal; - margin: 0em 2em; } .rendered_html * + ul { margin-top: 1em; @@ -10250,14 +11201,23 @@ } .rendered_html pre { margin: 1em 2em; + padding: 0px; + background-color: #fff; +} +.rendered_html code { + background-color: #eff0f1; +} +.rendered_html p code { + padding: 1px 5px; +} +.rendered_html pre code { + background-color: #fff; } .rendered_html pre, .rendered_html code { border: 0; - background-color: #fff; color: #000; font-size: 100%; - padding: 0px; } .rendered_html blockquote { margin: 1em 2em; @@ -10265,25 +11225,37 @@ .rendered_html table { margin-left: auto; margin-right: auto; - border: 1px solid black; + border: none; border-collapse: collapse; + border-spacing: 0; + color: black; + font-size: 12px; + table-layout: fixed; +} +.rendered_html thead { + border-bottom: 1px solid black; + vertical-align: bottom; } .rendered_html tr, .rendered_html th, .rendered_html td { - border: 1px solid black; - border-collapse: collapse; - margin: 1em 2em; -} -.rendered_html td, -.rendered_html th { - text-align: left; + text-align: right; vertical-align: middle; - padding: 4px; + padding: 0.5em 0.5em; + line-height: normal; + white-space: normal; + max-width: none; + border: none; } .rendered_html th { font-weight: bold; } +.rendered_html tbody tr:nth-child(odd) { + background: #f5f5f5; +} +.rendered_html tbody tr:hover { + background: rgba(66, 165, 245, 0.2); +} .rendered_html * + table { margin-top: 1em; } @@ -10310,6 +11282,15 @@ .rendered_html svg.unconfined { max-width: none; } +.rendered_html .alert { + margin-bottom: initial; +} +.rendered_html * + .alert { + margin-top: 1em; +} +[dir="rtl"] .rendered_html p { + text-align: right; +} div.text_cell { /* Old browsers */ display: -webkit-box; @@ -10363,9 +11344,18 @@ overflow-x: auto; overflow-y: hidden; } +.text_cell.rendered .rendered_html tr, +.text_cell.rendered .rendered_html th, +.text_cell.rendered .rendered_html td { + max-width: none; +} .text_cell.unrendered .text_cell_render { display: none; } +.text_cell .dropzone .input_area { + border: 2px dashed #bababa; + margin: -1px; +} .cm-header-1, .cm-header-2, .cm-header-3, @@ -10501,6 +11491,28 @@ padding-top: 1px; padding-bottom: 1px; } +.jupyter-keybindings { + padding: 1px; + line-height: 24px; + border-bottom: 1px solid gray; +} +.jupyter-keybindings input { + margin: 0; + padding: 0; + border: none; +} +.jupyter-keybindings i { + padding: 6px; +} +.well code { + background-color: #ffffff; + border-color: #ababab; + border-width: 1px; + border-style: solid; + padding: 2px; + padding-top: 1px; + padding-bottom: 1px; +} /* CSS for the cell toolbar */ .celltoolbar { border: thin solid #CFCFCF; @@ -10633,6 +11645,152 @@ margin-left: 5px; margin-right: 5px; } +.tags_button_container { + width: 100%; + display: flex; +} +.tag-container { + display: flex; + flex-direction: row; + flex-grow: 1; + overflow: hidden; + position: relative; +} +.tag-container > * { + margin: 0 4px; +} +.remove-tag-btn { + margin-left: 4px; +} +.tags-input { + display: flex; +} +.cell-tag:last-child:after { + content: ""; + position: absolute; + right: 0; + width: 40px; + height: 100%; + /* Fade to background color of cell toolbar */ + background: linear-gradient(to right, rgba(0, 0, 0, 0), #EEE); +} +.tags-input > * { + margin-left: 4px; +} +.cell-tag, +.tags-input input, +.tags-input button { + display: block; + width: 100%; + height: 32px; + padding: 6px 12px; + font-size: 13px; + line-height: 1.42857143; + color: #555555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 2px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 1px; + box-shadow: none; + width: inherit; + font-size: inherit; + height: 22px; + line-height: 22px; + padding: 0px 4px; + display: inline-block; +} +.cell-tag:focus, +.tags-input input:focus, +.tags-input button:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); +} +.cell-tag::-moz-placeholder, +.tags-input input::-moz-placeholder, +.tags-input button::-moz-placeholder { + color: #999; + opacity: 1; +} +.cell-tag:-ms-input-placeholder, +.tags-input input:-ms-input-placeholder, +.tags-input button:-ms-input-placeholder { + color: #999; +} +.cell-tag::-webkit-input-placeholder, +.tags-input input::-webkit-input-placeholder, +.tags-input button::-webkit-input-placeholder { + color: #999; +} +.cell-tag::-ms-expand, +.tags-input input::-ms-expand, +.tags-input button::-ms-expand { + border: 0; + background-color: transparent; +} +.cell-tag[disabled], +.tags-input input[disabled], +.tags-input button[disabled], +.cell-tag[readonly], +.tags-input input[readonly], +.tags-input button[readonly], +fieldset[disabled] .cell-tag, +fieldset[disabled] .tags-input input, +fieldset[disabled] .tags-input button { + background-color: #eeeeee; + opacity: 1; +} +.cell-tag[disabled], +.tags-input input[disabled], +.tags-input button[disabled], +fieldset[disabled] .cell-tag, +fieldset[disabled] .tags-input input, +fieldset[disabled] .tags-input button { + cursor: not-allowed; +} +textarea.cell-tag, +textarea.tags-input input, +textarea.tags-input button { + height: auto; +} +select.cell-tag, +select.tags-input input, +select.tags-input button { + height: 30px; + line-height: 30px; +} +textarea.cell-tag, +textarea.tags-input input, +textarea.tags-input button, +select[multiple].cell-tag, +select[multiple].tags-input input, +select[multiple].tags-input button { + height: auto; +} +.cell-tag, +.tags-input button { + padding: 0px 4px; +} +.cell-tag { + background-color: #fff; + white-space: nowrap; +} +.tags-input input[type=text]:focus { + outline: none; + box-shadow: none; + border-color: #ccc; +} .completions { position: absolute; z-index: 110; @@ -10658,10 +11816,6 @@ .completions select option.context { color: #286090; } -#kernel_logo_widget { - float: right !important; - float: right; -} #kernel_logo_widget .current_kernel_logo { display: none; margin-top: -1px; @@ -10669,6 +11823,22 @@ width: 32px; height: 32px; } +[dir="rtl"] #kernel_logo_widget { + float: left !important; + float: left; +} +.modal .modal-body .move-path { + display: flex; + flex-direction: row; + justify-content: space; + align-items: center; +} +.modal .modal-body .move-path .server-root { + padding-right: 20px; +} +.modal .modal-body .move-path .path-input { + flex: 1; +} #menubar { box-sizing: border-box; -moz-box-sizing: border-box; @@ -10689,12 +11859,42 @@ #menubar .navbar-collapse { clear: left; } +[dir="rtl"] #menubar .navbar-toggle { + float: right; +} +[dir="rtl"] #menubar .navbar-collapse { + clear: right; +} +[dir="rtl"] #menubar .navbar-nav { + float: right; +} +[dir="rtl"] #menubar .nav { + padding-right: 0px; +} +[dir="rtl"] #menubar .navbar-nav > li { + float: right; +} +[dir="rtl"] #menubar .navbar-right { + float: left !important; +} +[dir="rtl"] ul.dropdown-menu { + text-align: right; + left: auto; +} +[dir="rtl"] ul#new-menu.dropdown-menu { + right: auto; + left: 0; +} .nav-wrapper { border-bottom: 1px solid #e7e7e7; } i.menu-icon { padding-top: 4px; } +[dir="rtl"] i.menu-icon.pull-right { + float: left !important; + float: left; +} ul#help_menu li a { overflow: hidden; padding-right: 2.2em; @@ -10702,6 +11902,17 @@ ul#help_menu li a i { margin-right: -1.2em; } +[dir="rtl"] ul#help_menu li a { + padding-left: 2.2em; +} +[dir="rtl"] ul#help_menu li a i { + margin-right: 0; + margin-left: -1.2em; +} +[dir="rtl"] ul#help_menu li a i.pull-right { + float: left !important; + float: left; +} .dropdown-submenu { position: relative; } @@ -10711,6 +11922,10 @@ margin-top: -6px; margin-left: -1px; } +[dir="rtl"] .dropdown-submenu > .dropdown-menu { + right: 100%; + margin-right: -1px; +} .dropdown-submenu:hover > .dropdown-menu { display: block; } @@ -10728,12 +11943,24 @@ margin-top: 2px; margin-right: -10px; } +.dropdown-submenu > a:after.fa-pull-left { + margin-right: .3em; +} +.dropdown-submenu > a:after.fa-pull-right { + margin-left: .3em; +} .dropdown-submenu > a:after.pull-left { margin-right: .3em; } .dropdown-submenu > a:after.pull-right { margin-left: .3em; } +[dir="rtl"] .dropdown-submenu > a:after { + float: left; + content: "\f0d9"; + margin-right: 0; + margin-left: -10px; +} .dropdown-submenu:hover > a:after { color: #262626; } @@ -10749,6 +11976,10 @@ float: right; z-index: 10; } +[dir="rtl"] #notification_area { + float: left !important; + float: left; +} .indicator_area { float: right !important; float: right; @@ -10760,6 +11991,10 @@ text-align: center; width: auto; } +[dir="rtl"] .indicator_area { + float: left !important; + float: left; +} #kernel_indicator { float: right !important; float: right; @@ -10776,6 +12011,12 @@ padding-left: 5px; padding-right: 5px; } +[dir="rtl"] #kernel_indicator { + float: left !important; + float: left; + border-left: 0; + border-right: 1px solid; +} #modal_indicator { float: right !important; float: right; @@ -10787,6 +12028,10 @@ text-align: center; width: auto; } +[dir="rtl"] #modal_indicator { + float: left !important; + float: left; +} #readonly-indicator { float: right !important; float: right; @@ -10816,6 +12061,12 @@ -moz-osx-font-smoothing: grayscale; content: "\f040"; } +.edit_mode .modal_indicator:before.fa-pull-left { + margin-right: .3em; +} +.edit_mode .modal_indicator:before.fa-pull-right { + margin-left: .3em; +} .edit_mode .modal_indicator:before.pull-left { margin-right: .3em; } @@ -10831,6 +12082,12 @@ -moz-osx-font-smoothing: grayscale; content: ' '; } +.command_mode .modal_indicator:before.fa-pull-left { + margin-right: .3em; +} +.command_mode .modal_indicator:before.fa-pull-right { + margin-left: .3em; +} .command_mode .modal_indicator:before.pull-left { margin-right: .3em; } @@ -10846,6 +12103,12 @@ -moz-osx-font-smoothing: grayscale; content: "\f10c"; } +.kernel_idle_icon:before.fa-pull-left { + margin-right: .3em; +} +.kernel_idle_icon:before.fa-pull-right { + margin-left: .3em; +} .kernel_idle_icon:before.pull-left { margin-right: .3em; } @@ -10861,6 +12124,12 @@ -moz-osx-font-smoothing: grayscale; content: "\f111"; } +.kernel_busy_icon:before.fa-pull-left { + margin-right: .3em; +} +.kernel_busy_icon:before.fa-pull-right { + margin-left: .3em; +} .kernel_busy_icon:before.pull-left { margin-right: .3em; } @@ -10876,6 +12145,12 @@ -moz-osx-font-smoothing: grayscale; content: "\f1e2"; } +.kernel_dead_icon:before.fa-pull-left { + margin-right: .3em; +} +.kernel_dead_icon:before.fa-pull-right { + margin-left: .3em; +} .kernel_dead_icon:before.pull-left { margin-right: .3em; } @@ -10891,6 +12166,12 @@ -moz-osx-font-smoothing: grayscale; content: "\f127"; } +.kernel_disconnected_icon:before.fa-pull-left { + margin-right: .3em; +} +.kernel_disconnected_icon:before.fa-pull-right { + margin-left: .3em; +} .kernel_disconnected_icon:before.pull-left { margin-right: .3em; } @@ -11280,27 +12561,46 @@ flex: 1; } span.save_widget { - margin-top: 6px; + height: 30px; + margin-top: 4px; + display: flex; + justify-content: flex-start; + align-items: baseline; + width: 50%; + flex: 1; } span.save_widget span.filename { - height: 1em; + height: 100%; line-height: 1em; - padding: 3px; margin-left: 16px; border: none; font-size: 146.5%; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; border-radius: 2px; } span.save_widget span.filename:hover { background-color: #e6e6e6; } +[dir="rtl"] span.save_widget.pull-left { + float: right !important; + float: right; +} +[dir="rtl"] span.save_widget span.filename { + margin-left: 0; + margin-right: 16px; +} span.checkpoint_status, span.autosave_status { font-size: small; + white-space: nowrap; + padding: 0 5px; } @media (max-width: 767px) { span.save_widget { font-size: small; + padding: 0 0 0 5px; } span.checkpoint_status, span.autosave_status { @@ -11344,6 +12644,9 @@ margin-top: 0px; margin-left: 5px; } +.toolbar-btn-label { + margin-left: 6px; +} #maintoolbar { margin-bottom: -3px; margin-top: -8px; @@ -11364,6 +12667,10 @@ .select-xs { height: 24px; } +[dir="rtl"] .btn-group > .btn, +.btn-group-vertical > .btn { + float: right; +} .pulse, .dropdown-menu > li > a.pulse, li.pulse > a.dropdown-toggle, @@ -11513,6 +12820,10 @@ margin-left: -10px; width: 18px; } +[dir="rtl"] ul.typeahead-list i { + margin-left: 0; + margin-right: -10px; +} ul.typeahead-list { max-height: 80vh; overflow: auto; @@ -11522,6 +12833,13 @@ /* see https://github.com/jupyter/notebook/issues/559 */ white-space: normal; } +ul.typeahead-list > li > a.pull-right { + float: left !important; + float: left; +} +[dir="rtl"] .typeahead-list { + text-align: right; +} .cmd-palette .modal-body { padding: 7px; } @@ -11532,10 +12850,19 @@ outline: none; } .no-shortcut { - display: none; + min-width: 20px; + color: transparent; +} +[dir="rtl"] .no-shortcut.pull-right { + float: left !important; + float: left; +} +[dir="rtl"] .command-shortcut.pull-right { + float: left !important; + float: left; } .command-shortcut:before { - content: "(command)"; + content: "(command mode)"; padding-right: 3px; color: #777777; } @@ -11544,6 +12871,10 @@ padding-right: 3px; color: #777777; } +[dir="rtl"] .edit-shortcut.pull-right { + float: left !important; + float: left; +} #find-and-replace #replace-preview .match, #find-and-replace #replace-preview .insert { background-color: #BBDEFB; @@ -11552,6 +12883,12 @@ border-width: 1px; border-radius: 0px; } +[dir="ltr"] #find-and-replace .input-group-btn + .form-control { + border-left: none; +} +[dir="rtl"] #find-and-replace .input-group-btn + .form-control { + border-right: none; +} #find-and-replace #replace-preview .replace .match { background-color: #FFCDD2; border-color: #EF9A9A; @@ -11922,8 +13259,7 @@

problem1 (Score: 1.5 / 6.0)

-
-
+

Before you turn this problem in, make sure everything runs as expected. First, restart the kernel (in the menubar, select Kernel$\rightarrow$Restart) and then run all cells (in the menubar, select Cell$\rightarrow$Run All).

Make sure you fill in any place that says YOUR CODE HERE or "YOUR ANSWER HERE", as well as your name and collaborators below:

@@ -11946,8 +13282,7 @@

problem1 (Score: 1.5 / 6.0)

-
-
+

@@ -11956,8 +13291,7 @@

problem1 (Score: 1.5 / 6.0)

-
-
+

For this problem set, we'll be using the Jupyter notebook:

@@ -11967,8 +13301,7 @@

problem1 (Score: 1.5 / 6.0)

-
-
+

Part A (2 points)

Write a function that returns a list of numbers, such that $x_i=i^2$, for $1\leq i \leq n$. Make sure it handles the case where $n<1$ by raising a ValueError.

@@ -12004,8 +13337,7 @@

Part A (2 points)
-
-
+

Your function should print [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] for $n=10$. Check that it does:

@@ -12029,7 +13361,7 @@

Part A (2 points) -
Out[3]:
+
Out[3]:
@@ -12072,14 +13404,14 @@

Part A (2 points) -
+
 ---------------------------------------------------------------------------
 AssertionError                            Traceback (most recent call last)
-<ipython-input-4-c7326d393566> in <module>()
+<ipython-input-4-f3fef5b9ed4e> in <module>()
       1 """Check that squares returns the correct output for several inputs"""
 ----> 2 assert squares(1) == [1]
       3 assert squares(2) == [1, 4]
@@ -12128,8 +13460,7 @@ 

Part A (2 points)
-
-
+

Part B (1 point)

Using your squares function, write a function that computes the sum of the squares of the numbers from 1 to $n$. Your function should call the squares function -- it should NOT reimplement its functionality.

@@ -12161,8 +13492,7 @@

Part B (1 point)
-
-
+

The sum of squares from 1 to 10 should be 385. Verify that this is the answer you get:

@@ -12186,7 +13516,7 @@

Part B (1 point) -
Out[7]:
+
Out[7]:
@@ -12229,14 +13559,14 @@

Part B (1 point) -
+
 ---------------------------------------------------------------------------
 AssertionError                            Traceback (most recent call last)
-<ipython-input-8-3982d45be654> in <module>()
+<ipython-input-8-1a00eaa7c988> in <module>()
       1 """Check that sum_of_squares returns the correct answer for various inputs."""
 ----> 2 assert sum_of_squares(1) == 1
       3 assert sum_of_squares(2) == 5
@@ -12282,8 +13612,7 @@ 

Part B (1 point)
-
-
+

Part C (1 point)

Using LaTeX math notation, write out the equation that is implemented by your sum_of_squares function.

@@ -12293,8 +13622,7 @@

Part C (1 point)
-
-
+
Student's answer Score: 0.0 / 1.0 (Top)
@@ -12309,8 +13637,7 @@

Part C (1 point)
-
-
+

Part D (2 points)

Find a usecase for your sum_of_squares function and implement that usecase in the cell below.

@@ -12347,14 +13674,14 @@

Part D (2 points) -
+
 ---------------------------------------------------------------------------
 NotImplementedError                       Traceback (most recent call last)
-<ipython-input-10-a3eb14613b08> in <module>()
+<ipython-input-10-15b94d1fa268> in <module>()
       1 # YOUR CODE HERE
 ----> 2 raise NotImplementedError()
 
diff --git a/nbgrader/docs/source/user_guide/feedback/bitdiddle/ps1/problem2.html b/nbgrader/docs/source/user_guide/feedback/bitdiddle/ps1/problem2.html
index 0d5d58849..cea08535c 100644
--- a/nbgrader/docs/source/user_guide/feedback/bitdiddle/ps1/problem2.html
+++ b/nbgrader/docs/source/user_guide/feedback/bitdiddle/ps1/problem2.html
@@ -200,7 +200,6 @@
   *:before,
   *:after {
     background: transparent !important;
-    color: #000 !important;
     box-shadow: none !important;
     text-shadow: none !important;
   }
@@ -6745,15 +6744,15 @@
 *
 */
 /*!
- *  Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
+ *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
  *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
  */
 /* FONT PATH
  * -------------------------- */
 @font-face {
   font-family: 'FontAwesome';
-  src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.2.0');
-  src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');
+  src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.7.0');
+  src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');
   font-weight: normal;
   font-style: normal;
 }
@@ -6810,6 +6809,19 @@
   border: solid 0.08em #eee;
   border-radius: .1em;
 }
+.fa-pull-left {
+  float: left;
+}
+.fa-pull-right {
+  float: right;
+}
+.fa.fa-pull-left {
+  margin-right: .3em;
+}
+.fa.fa-pull-right {
+  margin-left: .3em;
+}
+/* Deprecated as of 4.4.0 */
 .pull-right {
   float: right;
 }
@@ -6826,6 +6838,10 @@
   -webkit-animation: fa-spin 2s infinite linear;
   animation: fa-spin 2s infinite linear;
 }
+.fa-pulse {
+  -webkit-animation: fa-spin 1s infinite steps(8);
+  animation: fa-spin 1s infinite steps(8);
+}
 @-webkit-keyframes fa-spin {
   0% {
     -webkit-transform: rotate(0deg);
@@ -6847,31 +6863,31 @@
   }
 }
 .fa-rotate-90 {
-  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
   -webkit-transform: rotate(90deg);
   -ms-transform: rotate(90deg);
   transform: rotate(90deg);
 }
 .fa-rotate-180 {
-  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
+  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
   -webkit-transform: rotate(180deg);
   -ms-transform: rotate(180deg);
   transform: rotate(180deg);
 }
 .fa-rotate-270 {
-  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
   -webkit-transform: rotate(270deg);
   -ms-transform: rotate(270deg);
   transform: rotate(270deg);
 }
 .fa-flip-horizontal {
-  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
+  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
   -webkit-transform: scale(-1, 1);
   -ms-transform: scale(-1, 1);
   transform: scale(-1, 1);
 }
 .fa-flip-vertical {
-  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
+  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
   -webkit-transform: scale(1, -1);
   -ms-transform: scale(1, -1);
   transform: scale(1, -1);
@@ -7356,6 +7372,7 @@
 .fa-twitter:before {
   content: "\f099";
 }
+.fa-facebook-f:before,
 .fa-facebook:before {
   content: "\f09a";
 }
@@ -7368,6 +7385,7 @@
 .fa-credit-card:before {
   content: "\f09d";
 }
+.fa-feed:before,
 .fa-rss:before {
   content: "\f09e";
 }
@@ -8005,7 +8023,8 @@
 .fa-male:before {
   content: "\f183";
 }
-.fa-gittip:before {
+.fa-gittip:before,
+.fa-gratipay:before {
   content: "\f184";
 }
 .fa-sun-o:before {
@@ -8109,7 +8128,7 @@
 .fa-digg:before {
   content: "\f1a6";
 }
-.fa-pied-piper:before {
+.fa-pied-piper-pp:before {
   content: "\f1a7";
 }
 .fa-pied-piper-alt:before {
@@ -8235,6 +8254,7 @@
   content: "\f1ce";
 }
 .fa-ra:before,
+.fa-resistance:before,
 .fa-rebel:before {
   content: "\f1d0";
 }
@@ -8248,6 +8268,8 @@
 .fa-git:before {
   content: "\f1d3";
 }
+.fa-y-combinator-square:before,
+.fa-yc-square:before,
 .fa-hacker-news:before {
   content: "\f1d4";
 }
@@ -8416,6 +8438,657 @@
 .fa-meanpath:before {
   content: "\f20c";
 }
+.fa-buysellads:before {
+  content: "\f20d";
+}
+.fa-connectdevelop:before {
+  content: "\f20e";
+}
+.fa-dashcube:before {
+  content: "\f210";
+}
+.fa-forumbee:before {
+  content: "\f211";
+}
+.fa-leanpub:before {
+  content: "\f212";
+}
+.fa-sellsy:before {
+  content: "\f213";
+}
+.fa-shirtsinbulk:before {
+  content: "\f214";
+}
+.fa-simplybuilt:before {
+  content: "\f215";
+}
+.fa-skyatlas:before {
+  content: "\f216";
+}
+.fa-cart-plus:before {
+  content: "\f217";
+}
+.fa-cart-arrow-down:before {
+  content: "\f218";
+}
+.fa-diamond:before {
+  content: "\f219";
+}
+.fa-ship:before {
+  content: "\f21a";
+}
+.fa-user-secret:before {
+  content: "\f21b";
+}
+.fa-motorcycle:before {
+  content: "\f21c";
+}
+.fa-street-view:before {
+  content: "\f21d";
+}
+.fa-heartbeat:before {
+  content: "\f21e";
+}
+.fa-venus:before {
+  content: "\f221";
+}
+.fa-mars:before {
+  content: "\f222";
+}
+.fa-mercury:before {
+  content: "\f223";
+}
+.fa-intersex:before,
+.fa-transgender:before {
+  content: "\f224";
+}
+.fa-transgender-alt:before {
+  content: "\f225";
+}
+.fa-venus-double:before {
+  content: "\f226";
+}
+.fa-mars-double:before {
+  content: "\f227";
+}
+.fa-venus-mars:before {
+  content: "\f228";
+}
+.fa-mars-stroke:before {
+  content: "\f229";
+}
+.fa-mars-stroke-v:before {
+  content: "\f22a";
+}
+.fa-mars-stroke-h:before {
+  content: "\f22b";
+}
+.fa-neuter:before {
+  content: "\f22c";
+}
+.fa-genderless:before {
+  content: "\f22d";
+}
+.fa-facebook-official:before {
+  content: "\f230";
+}
+.fa-pinterest-p:before {
+  content: "\f231";
+}
+.fa-whatsapp:before {
+  content: "\f232";
+}
+.fa-server:before {
+  content: "\f233";
+}
+.fa-user-plus:before {
+  content: "\f234";
+}
+.fa-user-times:before {
+  content: "\f235";
+}
+.fa-hotel:before,
+.fa-bed:before {
+  content: "\f236";
+}
+.fa-viacoin:before {
+  content: "\f237";
+}
+.fa-train:before {
+  content: "\f238";
+}
+.fa-subway:before {
+  content: "\f239";
+}
+.fa-medium:before {
+  content: "\f23a";
+}
+.fa-yc:before,
+.fa-y-combinator:before {
+  content: "\f23b";
+}
+.fa-optin-monster:before {
+  content: "\f23c";
+}
+.fa-opencart:before {
+  content: "\f23d";
+}
+.fa-expeditedssl:before {
+  content: "\f23e";
+}
+.fa-battery-4:before,
+.fa-battery:before,
+.fa-battery-full:before {
+  content: "\f240";
+}
+.fa-battery-3:before,
+.fa-battery-three-quarters:before {
+  content: "\f241";
+}
+.fa-battery-2:before,
+.fa-battery-half:before {
+  content: "\f242";
+}
+.fa-battery-1:before,
+.fa-battery-quarter:before {
+  content: "\f243";
+}
+.fa-battery-0:before,
+.fa-battery-empty:before {
+  content: "\f244";
+}
+.fa-mouse-pointer:before {
+  content: "\f245";
+}
+.fa-i-cursor:before {
+  content: "\f246";
+}
+.fa-object-group:before {
+  content: "\f247";
+}
+.fa-object-ungroup:before {
+  content: "\f248";
+}
+.fa-sticky-note:before {
+  content: "\f249";
+}
+.fa-sticky-note-o:before {
+  content: "\f24a";
+}
+.fa-cc-jcb:before {
+  content: "\f24b";
+}
+.fa-cc-diners-club:before {
+  content: "\f24c";
+}
+.fa-clone:before {
+  content: "\f24d";
+}
+.fa-balance-scale:before {
+  content: "\f24e";
+}
+.fa-hourglass-o:before {
+  content: "\f250";
+}
+.fa-hourglass-1:before,
+.fa-hourglass-start:before {
+  content: "\f251";
+}
+.fa-hourglass-2:before,
+.fa-hourglass-half:before {
+  content: "\f252";
+}
+.fa-hourglass-3:before,
+.fa-hourglass-end:before {
+  content: "\f253";
+}
+.fa-hourglass:before {
+  content: "\f254";
+}
+.fa-hand-grab-o:before,
+.fa-hand-rock-o:before {
+  content: "\f255";
+}
+.fa-hand-stop-o:before,
+.fa-hand-paper-o:before {
+  content: "\f256";
+}
+.fa-hand-scissors-o:before {
+  content: "\f257";
+}
+.fa-hand-lizard-o:before {
+  content: "\f258";
+}
+.fa-hand-spock-o:before {
+  content: "\f259";
+}
+.fa-hand-pointer-o:before {
+  content: "\f25a";
+}
+.fa-hand-peace-o:before {
+  content: "\f25b";
+}
+.fa-trademark:before {
+  content: "\f25c";
+}
+.fa-registered:before {
+  content: "\f25d";
+}
+.fa-creative-commons:before {
+  content: "\f25e";
+}
+.fa-gg:before {
+  content: "\f260";
+}
+.fa-gg-circle:before {
+  content: "\f261";
+}
+.fa-tripadvisor:before {
+  content: "\f262";
+}
+.fa-odnoklassniki:before {
+  content: "\f263";
+}
+.fa-odnoklassniki-square:before {
+  content: "\f264";
+}
+.fa-get-pocket:before {
+  content: "\f265";
+}
+.fa-wikipedia-w:before {
+  content: "\f266";
+}
+.fa-safari:before {
+  content: "\f267";
+}
+.fa-chrome:before {
+  content: "\f268";
+}
+.fa-firefox:before {
+  content: "\f269";
+}
+.fa-opera:before {
+  content: "\f26a";
+}
+.fa-internet-explorer:before {
+  content: "\f26b";
+}
+.fa-tv:before,
+.fa-television:before {
+  content: "\f26c";
+}
+.fa-contao:before {
+  content: "\f26d";
+}
+.fa-500px:before {
+  content: "\f26e";
+}
+.fa-amazon:before {
+  content: "\f270";
+}
+.fa-calendar-plus-o:before {
+  content: "\f271";
+}
+.fa-calendar-minus-o:before {
+  content: "\f272";
+}
+.fa-calendar-times-o:before {
+  content: "\f273";
+}
+.fa-calendar-check-o:before {
+  content: "\f274";
+}
+.fa-industry:before {
+  content: "\f275";
+}
+.fa-map-pin:before {
+  content: "\f276";
+}
+.fa-map-signs:before {
+  content: "\f277";
+}
+.fa-map-o:before {
+  content: "\f278";
+}
+.fa-map:before {
+  content: "\f279";
+}
+.fa-commenting:before {
+  content: "\f27a";
+}
+.fa-commenting-o:before {
+  content: "\f27b";
+}
+.fa-houzz:before {
+  content: "\f27c";
+}
+.fa-vimeo:before {
+  content: "\f27d";
+}
+.fa-black-tie:before {
+  content: "\f27e";
+}
+.fa-fonticons:before {
+  content: "\f280";
+}
+.fa-reddit-alien:before {
+  content: "\f281";
+}
+.fa-edge:before {
+  content: "\f282";
+}
+.fa-credit-card-alt:before {
+  content: "\f283";
+}
+.fa-codiepie:before {
+  content: "\f284";
+}
+.fa-modx:before {
+  content: "\f285";
+}
+.fa-fort-awesome:before {
+  content: "\f286";
+}
+.fa-usb:before {
+  content: "\f287";
+}
+.fa-product-hunt:before {
+  content: "\f288";
+}
+.fa-mixcloud:before {
+  content: "\f289";
+}
+.fa-scribd:before {
+  content: "\f28a";
+}
+.fa-pause-circle:before {
+  content: "\f28b";
+}
+.fa-pause-circle-o:before {
+  content: "\f28c";
+}
+.fa-stop-circle:before {
+  content: "\f28d";
+}
+.fa-stop-circle-o:before {
+  content: "\f28e";
+}
+.fa-shopping-bag:before {
+  content: "\f290";
+}
+.fa-shopping-basket:before {
+  content: "\f291";
+}
+.fa-hashtag:before {
+  content: "\f292";
+}
+.fa-bluetooth:before {
+  content: "\f293";
+}
+.fa-bluetooth-b:before {
+  content: "\f294";
+}
+.fa-percent:before {
+  content: "\f295";
+}
+.fa-gitlab:before {
+  content: "\f296";
+}
+.fa-wpbeginner:before {
+  content: "\f297";
+}
+.fa-wpforms:before {
+  content: "\f298";
+}
+.fa-envira:before {
+  content: "\f299";
+}
+.fa-universal-access:before {
+  content: "\f29a";
+}
+.fa-wheelchair-alt:before {
+  content: "\f29b";
+}
+.fa-question-circle-o:before {
+  content: "\f29c";
+}
+.fa-blind:before {
+  content: "\f29d";
+}
+.fa-audio-description:before {
+  content: "\f29e";
+}
+.fa-volume-control-phone:before {
+  content: "\f2a0";
+}
+.fa-braille:before {
+  content: "\f2a1";
+}
+.fa-assistive-listening-systems:before {
+  content: "\f2a2";
+}
+.fa-asl-interpreting:before,
+.fa-american-sign-language-interpreting:before {
+  content: "\f2a3";
+}
+.fa-deafness:before,
+.fa-hard-of-hearing:before,
+.fa-deaf:before {
+  content: "\f2a4";
+}
+.fa-glide:before {
+  content: "\f2a5";
+}
+.fa-glide-g:before {
+  content: "\f2a6";
+}
+.fa-signing:before,
+.fa-sign-language:before {
+  content: "\f2a7";
+}
+.fa-low-vision:before {
+  content: "\f2a8";
+}
+.fa-viadeo:before {
+  content: "\f2a9";
+}
+.fa-viadeo-square:before {
+  content: "\f2aa";
+}
+.fa-snapchat:before {
+  content: "\f2ab";
+}
+.fa-snapchat-ghost:before {
+  content: "\f2ac";
+}
+.fa-snapchat-square:before {
+  content: "\f2ad";
+}
+.fa-pied-piper:before {
+  content: "\f2ae";
+}
+.fa-first-order:before {
+  content: "\f2b0";
+}
+.fa-yoast:before {
+  content: "\f2b1";
+}
+.fa-themeisle:before {
+  content: "\f2b2";
+}
+.fa-google-plus-circle:before,
+.fa-google-plus-official:before {
+  content: "\f2b3";
+}
+.fa-fa:before,
+.fa-font-awesome:before {
+  content: "\f2b4";
+}
+.fa-handshake-o:before {
+  content: "\f2b5";
+}
+.fa-envelope-open:before {
+  content: "\f2b6";
+}
+.fa-envelope-open-o:before {
+  content: "\f2b7";
+}
+.fa-linode:before {
+  content: "\f2b8";
+}
+.fa-address-book:before {
+  content: "\f2b9";
+}
+.fa-address-book-o:before {
+  content: "\f2ba";
+}
+.fa-vcard:before,
+.fa-address-card:before {
+  content: "\f2bb";
+}
+.fa-vcard-o:before,
+.fa-address-card-o:before {
+  content: "\f2bc";
+}
+.fa-user-circle:before {
+  content: "\f2bd";
+}
+.fa-user-circle-o:before {
+  content: "\f2be";
+}
+.fa-user-o:before {
+  content: "\f2c0";
+}
+.fa-id-badge:before {
+  content: "\f2c1";
+}
+.fa-drivers-license:before,
+.fa-id-card:before {
+  content: "\f2c2";
+}
+.fa-drivers-license-o:before,
+.fa-id-card-o:before {
+  content: "\f2c3";
+}
+.fa-quora:before {
+  content: "\f2c4";
+}
+.fa-free-code-camp:before {
+  content: "\f2c5";
+}
+.fa-telegram:before {
+  content: "\f2c6";
+}
+.fa-thermometer-4:before,
+.fa-thermometer:before,
+.fa-thermometer-full:before {
+  content: "\f2c7";
+}
+.fa-thermometer-3:before,
+.fa-thermometer-three-quarters:before {
+  content: "\f2c8";
+}
+.fa-thermometer-2:before,
+.fa-thermometer-half:before {
+  content: "\f2c9";
+}
+.fa-thermometer-1:before,
+.fa-thermometer-quarter:before {
+  content: "\f2ca";
+}
+.fa-thermometer-0:before,
+.fa-thermometer-empty:before {
+  content: "\f2cb";
+}
+.fa-shower:before {
+  content: "\f2cc";
+}
+.fa-bathtub:before,
+.fa-s15:before,
+.fa-bath:before {
+  content: "\f2cd";
+}
+.fa-podcast:before {
+  content: "\f2ce";
+}
+.fa-window-maximize:before {
+  content: "\f2d0";
+}
+.fa-window-minimize:before {
+  content: "\f2d1";
+}
+.fa-window-restore:before {
+  content: "\f2d2";
+}
+.fa-times-rectangle:before,
+.fa-window-close:before {
+  content: "\f2d3";
+}
+.fa-times-rectangle-o:before,
+.fa-window-close-o:before {
+  content: "\f2d4";
+}
+.fa-bandcamp:before {
+  content: "\f2d5";
+}
+.fa-grav:before {
+  content: "\f2d6";
+}
+.fa-etsy:before {
+  content: "\f2d7";
+}
+.fa-imdb:before {
+  content: "\f2d8";
+}
+.fa-ravelry:before {
+  content: "\f2d9";
+}
+.fa-eercast:before {
+  content: "\f2da";
+}
+.fa-microchip:before {
+  content: "\f2db";
+}
+.fa-snowflake-o:before {
+  content: "\f2dc";
+}
+.fa-superpowers:before {
+  content: "\f2dd";
+}
+.fa-wpexplorer:before {
+  content: "\f2de";
+}
+.fa-meetup:before {
+  content: "\f2e0";
+}
+.sr-only {
+  position: absolute;
+  width: 1px;
+  height: 1px;
+  padding: 0;
+  margin: -1px;
+  overflow: hidden;
+  clip: rect(0, 0, 0, 0);
+  border: 0;
+}
+.sr-only-focusable:active,
+.sr-only-focusable:focus {
+  position: static;
+  width: auto;
+  height: auto;
+  margin: 0;
+  overflow: visible;
+  clip: auto;
+}
+.sr-only-focusable:active,
+.sr-only-focusable:focus {
+  position: static;
+  width: auto;
+  height: auto;
+  margin: 0;
+  overflow: visible;
+  clip: auto;
+}
 /*!
 *
 * IPython base
@@ -8695,6 +9368,10 @@
   max-width: 800px;
   margin: auto;
 }
+div.traceback-wrapper pre.traceback {
+  max-height: 600px;
+  overflow: auto;
+}
 /**
  * Primary styles
  *
@@ -8720,6 +9397,10 @@
   z-index: 100;
 }
 body > #header #header-container {
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+  padding: 5px;
   padding-bottom: 5px;
   padding-top: 5px;
   box-sizing: border-box;
@@ -8751,13 +9432,16 @@
   padding-top: 1px;
   padding-bottom: 1px;
 }
-@media (max-width: 991px) {
-  #ipython_notebook {
-    margin-left: 10px;
-  }
-}
 [dir="rtl"] #ipython_notebook {
+  margin-right: 10px;
+  margin-left: 0;
+}
+[dir="rtl"] #ipython_notebook.pull-left {
   float: right !important;
+  float: right;
+}
+.flex-spacer {
+  flex: 1;
 }
 #noscript {
   width: auto;
@@ -8792,9 +9476,15 @@
 input.ui-button {
   padding: 0.3em 0.9em;
 }
+span#kernel_logo_widget {
+  margin: 0 10px;
+}
 span#login_widget {
   float: right;
 }
+[dir="rtl"] span#login_widget {
+  float: left;
+}
 span#login_widget > .button,
 #logout {
   color: #333;
@@ -8909,6 +9599,9 @@
   overflow: auto;
   flex: 1;
 }
+.modal-header {
+  cursor: move;
+}
 @media (min-width: 768px) {
   .modal .modal-dialog {
     width: 700px;
@@ -8929,10 +9622,23 @@
   display: inline-block;
   margin-bottom: -4px;
 }
-/*!
-*
-* IPython tree view
-*
+[dir="rtl"] .center-nav form.pull-left {
+  float: right !important;
+  float: right;
+}
+[dir="rtl"] .center-nav .navbar-text {
+  float: right;
+}
+[dir="rtl"] .navbar-inner {
+  text-align: right;
+}
+[dir="rtl"] div.text-left {
+  text-align: right;
+}
+/*!
+*
+* IPython tree view
+*
 */
 /* We need an invisible input field on top of the sentense*/
 /* "Drag file onto the list ..." */
@@ -8945,35 +9651,43 @@
   margin: 0;
 }
 .alternate_upload input.fileinput {
-  text-align: center;
-  vertical-align: middle;
-  display: inline;
+  position: absolute;
+  display: block;
+  width: 100%;
+  height: 100%;
+  overflow: hidden;
+  cursor: pointer;
   opacity: 0;
   z-index: 2;
-  width: 12ex;
-  margin-right: -12ex;
+}
+.alternate_upload .btn-xs > input.fileinput {
+  margin: -1px -5px;
 }
 .alternate_upload .btn-upload {
+  position: relative;
   height: 22px;
 }
+::-webkit-file-upload-button {
+  cursor: pointer;
+}
 /**
  * Primary styles
  *
  * Author: Jupyter Development Team
  */
-[dir="rtl"] #tabs li {
-  float: right;
-}
 ul#tabs {
   margin-bottom: 4px;
 }
-[dir="rtl"] ul#tabs {
-  margin-right: 0px;
-}
 ul#tabs a {
   padding-top: 6px;
   padding-bottom: 4px;
 }
+[dir="rtl"] ul#tabs.nav-tabs > li {
+  float: right;
+}
+[dir="rtl"] ul#tabs.nav.nav-tabs {
+  padding-right: 0;
+}
 ul.breadcrumb a:focus,
 ul.breadcrumb a:hover {
   text-decoration: none;
@@ -8992,15 +9706,13 @@
 .list_toolbar .tree-buttons {
   padding-top: 1px;
 }
-[dir="rtl"] .list_toolbar .tree-buttons {
-  float: left !important;
-}
-[dir="rtl"] .list_toolbar .pull-right {
-  padding-top: 1px;
+[dir="rtl"] .list_toolbar .tree-buttons .pull-right {
   float: left !important;
+  float: left;
 }
-[dir="rtl"] .list_toolbar .pull-left {
-  float: right !important;
+[dir="rtl"] .list_toolbar .col-sm-4,
+[dir="rtl"] .list_toolbar .col-sm-8 {
+  float: right;
 }
 .dynamic-buttons {
   padding-top: 3px;
@@ -9056,7 +9768,7 @@
 .list_item > div input {
   margin-right: 7px;
   margin-left: 14px;
-  vertical-align: baseline;
+  vertical-align: text-bottom;
   line-height: 22px;
   position: relative;
   top: -1px;
@@ -9067,6 +9779,9 @@
   vertical-align: baseline;
   line-height: 22px;
 }
+[dir="rtl"] .list_item > div input {
+  margin-right: 0;
+}
 .new-file input[type=checkbox] {
   visibility: hidden;
 }
@@ -9082,6 +9797,14 @@
   line-height: 22px;
   vertical-align: baseline;
 }
+.item_modified {
+  margin-right: 7px;
+  margin-left: 7px;
+}
+[dir="rtl"] .item_modified.pull-right {
+  float: left !important;
+  float: left;
+}
 .item_buttons {
   line-height: 1em;
   margin-left: -5px;
@@ -9109,6 +9832,14 @@
   margin-right: 7px;
   float: left;
 }
+[dir="rtl"] .item_buttons.pull-right {
+  float: left !important;
+  float: left;
+}
+[dir="rtl"] .item_buttons .kernel-name {
+  margin-left: 7px;
+  float: right;
+}
 .toolbar_info {
   height: 24px;
   line-height: 24px;
@@ -9134,18 +9865,32 @@
   background-color: transparent;
   font-weight: bold;
 }
+.sort_button {
+  display: inline-block;
+  padding-left: 7px;
+}
+[dir="rtl"] .sort_button.pull-right {
+  float: left !important;
+  float: left;
+}
 #tree-selector {
   padding-right: 0px;
 }
-[dir="rtl"] #tree-selector a {
-  float: right;
-}
 #button-select-all {
   min-width: 50px;
 }
+[dir="rtl"] #button-select-all.btn {
+  float: right ;
+}
 #select-all {
   margin-left: 7px;
   margin-right: 2px;
+  margin-top: 2px;
+  height: 16px;
+}
+[dir="rtl"] #select-all.pull-left {
+  float: right !important;
+  float: right;
 }
 .menu_icon {
   margin-right: 2px;
@@ -9163,6 +9908,12 @@
   -moz-osx-font-smoothing: grayscale;
   content: "\f114";
 }
+.folder_icon:before.fa-pull-left {
+  margin-right: .3em;
+}
+.folder_icon:before.fa-pull-right {
+  margin-left: .3em;
+}
 .folder_icon:before.pull-left {
   margin-right: .3em;
 }
@@ -9180,6 +9931,12 @@
   position: relative;
   top: -1px;
 }
+.notebook_icon:before.fa-pull-left {
+  margin-right: .3em;
+}
+.notebook_icon:before.fa-pull-right {
+  margin-left: .3em;
+}
 .notebook_icon:before.pull-left {
   margin-right: .3em;
 }
@@ -9198,6 +9955,12 @@
   top: -1px;
   color: #5cb85c;
 }
+.running_notebook_icon:before.fa-pull-left {
+  margin-right: .3em;
+}
+.running_notebook_icon:before.fa-pull-right {
+  margin-left: .3em;
+}
 .running_notebook_icon:before.pull-left {
   margin-right: .3em;
 }
@@ -9215,6 +9978,12 @@
   position: relative;
   top: -2px;
 }
+.file_icon:before.fa-pull-left {
+  margin-right: .3em;
+}
+.file_icon:before.fa-pull-right {
+  margin-left: .3em;
+}
 .file_icon:before.pull-left {
   margin-right: .3em;
 }
@@ -9229,8 +9998,11 @@
   left: auto;
   right: 0;
 }
-[dir="rtl"] #new-menu {
-  text-align: right;
+#new-menu .dropdown-header {
+  font-size: 10px;
+  border-bottom: 1px solid #e5e5e5;
+  padding: 0 0 3px;
+  margin: -3px 20px 0;
 }
 .kernel-menu-icon {
   padding-right: 12px;
@@ -9277,9 +10049,6 @@
 #running .panel-group .panel .panel-body .list_container .list_item:last-child {
   border-bottom: 0px;
 }
-[dir="rtl"] #running .col-sm-8 {
-  float: right !important;
-}
 .delete-button {
   display: none;
 }
@@ -9289,6 +10058,12 @@
 .rename-button {
   display: none;
 }
+.move-button {
+  display: none;
+}
+.download-button {
+  display: none;
+}
 .shutdown-button {
   display: none;
 }
@@ -9329,6 +10104,12 @@
   -moz-osx-font-smoothing: grayscale;
   width: 20px;
 }
+.dirty-indicator.fa-pull-left {
+  margin-right: .3em;
+}
+.dirty-indicator.fa-pull-right {
+  margin-left: .3em;
+}
 .dirty-indicator.pull-left {
   margin-right: .3em;
 }
@@ -9344,6 +10125,12 @@
   -moz-osx-font-smoothing: grayscale;
   width: 20px;
 }
+.dirty-indicator-dirty.fa-pull-left {
+  margin-right: .3em;
+}
+.dirty-indicator-dirty.fa-pull-right {
+  margin-left: .3em;
+}
 .dirty-indicator-dirty.pull-left {
   margin-right: .3em;
 }
@@ -9359,6 +10146,12 @@
   -moz-osx-font-smoothing: grayscale;
   width: 20px;
 }
+.dirty-indicator-clean.fa-pull-left {
+  margin-right: .3em;
+}
+.dirty-indicator-clean.fa-pull-right {
+  margin-left: .3em;
+}
 .dirty-indicator-clean.pull-left {
   margin-right: .3em;
 }
@@ -9374,6 +10167,12 @@
   -moz-osx-font-smoothing: grayscale;
   content: "\f00c";
 }
+.dirty-indicator-clean:before.fa-pull-left {
+  margin-right: .3em;
+}
+.dirty-indicator-clean:before.fa-pull-right {
+  margin-left: .3em;
+}
 .dirty-indicator-clean:before.pull-left {
   margin-right: .3em;
 }
@@ -9418,15 +10217,133 @@
     box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
   }
 }
+.CodeMirror-dialog {
+  background-color: #fff;
+}
 /*!
 *
 * IPython notebook
 *
 */
-/* CSS font colors for translated ANSI colors. */
+/* CSS font colors for translated ANSI escape sequences */
+/* The color values are a mix of
+   http://www.xcolors.net/dl/baskerville-ivorylight and
+   http://www.xcolors.net/dl/euphrasia */
+.ansi-black-fg {
+  color: #3E424D;
+}
+.ansi-black-bg {
+  background-color: #3E424D;
+}
+.ansi-black-intense-fg {
+  color: #282C36;
+}
+.ansi-black-intense-bg {
+  background-color: #282C36;
+}
+.ansi-red-fg {
+  color: #E75C58;
+}
+.ansi-red-bg {
+  background-color: #E75C58;
+}
+.ansi-red-intense-fg {
+  color: #B22B31;
+}
+.ansi-red-intense-bg {
+  background-color: #B22B31;
+}
+.ansi-green-fg {
+  color: #00A250;
+}
+.ansi-green-bg {
+  background-color: #00A250;
+}
+.ansi-green-intense-fg {
+  color: #007427;
+}
+.ansi-green-intense-bg {
+  background-color: #007427;
+}
+.ansi-yellow-fg {
+  color: #DDB62B;
+}
+.ansi-yellow-bg {
+  background-color: #DDB62B;
+}
+.ansi-yellow-intense-fg {
+  color: #B27D12;
+}
+.ansi-yellow-intense-bg {
+  background-color: #B27D12;
+}
+.ansi-blue-fg {
+  color: #208FFB;
+}
+.ansi-blue-bg {
+  background-color: #208FFB;
+}
+.ansi-blue-intense-fg {
+  color: #0065CA;
+}
+.ansi-blue-intense-bg {
+  background-color: #0065CA;
+}
+.ansi-magenta-fg {
+  color: #D160C4;
+}
+.ansi-magenta-bg {
+  background-color: #D160C4;
+}
+.ansi-magenta-intense-fg {
+  color: #A03196;
+}
+.ansi-magenta-intense-bg {
+  background-color: #A03196;
+}
+.ansi-cyan-fg {
+  color: #60C6C8;
+}
+.ansi-cyan-bg {
+  background-color: #60C6C8;
+}
+.ansi-cyan-intense-fg {
+  color: #258F8F;
+}
+.ansi-cyan-intense-bg {
+  background-color: #258F8F;
+}
+.ansi-white-fg {
+  color: #C5C1B4;
+}
+.ansi-white-bg {
+  background-color: #C5C1B4;
+}
+.ansi-white-intense-fg {
+  color: #A1A6B2;
+}
+.ansi-white-intense-bg {
+  background-color: #A1A6B2;
+}
+.ansi-default-inverse-fg {
+  color: #FFFFFF;
+}
+.ansi-default-inverse-bg {
+  background-color: #000000;
+}
+.ansi-bold {
+  font-weight: bold;
+}
+.ansi-underline {
+  text-decoration: underline;
+}
+/* The following styles are deprecated an will be removed in a future version */
 .ansibold {
   font-weight: bold;
 }
+.ansi-inverse {
+  outline: 0.5px dotted;
+}
 /* use dark versions for foreground, to improve visibility */
 .ansiblack {
   color: black;
@@ -9504,12 +10421,20 @@
   /* This acts as a spacer between cells, that is outside the border */
   margin: 0px;
   outline: none;
-  border-left-width: 1px;
-  padding-left: 5px;
-  background: linear-gradient(to right, transparent -40px, transparent 1px, transparent 1px, transparent 100%);
+  position: relative;
+  overflow: visible;
+}
+div.cell:before {
+  position: absolute;
+  display: block;
+  top: -1px;
+  left: -1px;
+  width: 5px;
+  height: calc(100% +  2px);
+  content: '';
+  background: transparent;
 }
 div.cell.jupyter-soft-selected {
-  border-left-color: #90CAF9;
   border-left-color: #E3F2FD;
   border-left-width: 1px;
   padding-left: 5px;
@@ -9522,27 +10447,39 @@
     border-color: transparent;
   }
 }
-div.cell.selected {
+div.cell.selected,
+div.cell.selected.jupyter-soft-selected {
   border-color: #ababab;
-  border-left-width: 0px;
-  padding-left: 6px;
-  background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 5px, transparent 5px, transparent 100%);
+}
+div.cell.selected:before,
+div.cell.selected.jupyter-soft-selected:before {
+  position: absolute;
+  display: block;
+  top: -1px;
+  left: -1px;
+  width: 5px;
+  height: calc(100% +  2px);
+  content: '';
+  background: #42A5F5;
 }
 @media print {
-  div.cell.selected {
+  div.cell.selected,
+  div.cell.selected.jupyter-soft-selected {
     border-color: transparent;
   }
 }
-div.cell.selected.jupyter-soft-selected {
-  border-left-width: 0;
-  padding-left: 6px;
-  background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 7px, #E3F2FD 7px, #E3F2FD 100%);
-}
 .edit_mode div.cell.selected {
   border-color: #66BB6A;
-  border-left-width: 0px;
-  padding-left: 6px;
-  background: linear-gradient(to right, #66BB6A -40px, #66BB6A 5px, transparent 5px, transparent 100%);
+}
+.edit_mode div.cell.selected:before {
+  position: absolute;
+  display: block;
+  top: -1px;
+  left: -1px;
+  width: 5px;
+  height: calc(100% +  2px);
+  content: '';
+  background: #66BB6A;
 }
 @media print {
   .edit_mode div.cell.selected {
@@ -9738,7 +10675,9 @@
 .CodeMirror-lines {
   /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
   /* we have set a different line-height and want this to scale with that. */
-  padding: 0.4em;
+  /* Note that this should set vertical padding only, since CodeMirror assumes
+       that horizontal padding will be set on CodeMirror pre */
+  padding: 0.4em 0;
 }
 .CodeMirror-linenumber {
   padding: 0 8px 0 4px;
@@ -9748,12 +10687,25 @@
   border-top-left-radius: 2px;
 }
 .CodeMirror pre {
-  /* In CM3 this went to 4px from 0 in CM2. We need the 0 value because of how we size */
-  /* .CodeMirror-lines */
-  padding: 0;
+  /* In CM3 this went to 4px from 0 in CM2. This sets horizontal padding only,
+    use .CodeMirror-lines for vertical */
+  padding: 0 0.4em;
   border: 0;
   border-radius: 0;
 }
+.CodeMirror-cursor {
+  border-left: 1.4px solid black;
+}
+@media screen and (min-width: 2138px) and (max-width: 4319px) {
+  .CodeMirror-cursor {
+    border-left: 2px solid black;
+  }
+}
+@media screen and (min-width: 4320px) {
+  .CodeMirror-cursor {
+    border-left: 4px solid black;
+  }
+}
 /*
 
 Original style from softwaremaniacs.org (c) Ivan Sagalaev 
@@ -10006,6 +10958,9 @@
 div.output_area svg.unconfined {
   max-width: none;
 }
+div.output_area .mglyph > img {
+  max-width: none;
+}
 /* This is needed to protect the pre formating from global settings such
    as that of bootstrap */
 .output {
@@ -10044,7 +10999,7 @@
 }
 div.output_area pre {
   margin: 0;
-  padding: 0;
+  padding: 1px 0 1px 0;
   border: 0;
   vertical-align: baseline;
   color: black;
@@ -10204,39 +11159,35 @@
 .rendered_html h6:first-child {
   margin-top: 1em;
 }
+.rendered_html ul:not(.list-inline),
+.rendered_html ol:not(.list-inline) {
+  padding-left: 2em;
+}
 .rendered_html ul {
   list-style: disc;
-  margin: 0em 2em;
-  padding-left: 0px;
 }
 .rendered_html ul ul {
   list-style: square;
-  margin: 0em 2em;
+  margin-top: 0;
 }
 .rendered_html ul ul ul {
   list-style: circle;
-  margin: 0em 2em;
 }
 .rendered_html ol {
   list-style: decimal;
-  margin: 0em 2em;
-  padding-left: 0px;
 }
 .rendered_html ol ol {
   list-style: upper-alpha;
-  margin: 0em 2em;
+  margin-top: 0;
 }
 .rendered_html ol ol ol {
   list-style: lower-alpha;
-  margin: 0em 2em;
 }
 .rendered_html ol ol ol ol {
   list-style: lower-roman;
-  margin: 0em 2em;
 }
 .rendered_html ol ol ol ol ol {
   list-style: decimal;
-  margin: 0em 2em;
 }
 .rendered_html * + ul {
   margin-top: 1em;
@@ -10250,14 +11201,23 @@
 }
 .rendered_html pre {
   margin: 1em 2em;
+  padding: 0px;
+  background-color: #fff;
+}
+.rendered_html code {
+  background-color: #eff0f1;
+}
+.rendered_html p code {
+  padding: 1px 5px;
+}
+.rendered_html pre code {
+  background-color: #fff;
 }
 .rendered_html pre,
 .rendered_html code {
   border: 0;
-  background-color: #fff;
   color: #000;
   font-size: 100%;
-  padding: 0px;
 }
 .rendered_html blockquote {
   margin: 1em 2em;
@@ -10265,25 +11225,37 @@
 .rendered_html table {
   margin-left: auto;
   margin-right: auto;
-  border: 1px solid black;
+  border: none;
   border-collapse: collapse;
+  border-spacing: 0;
+  color: black;
+  font-size: 12px;
+  table-layout: fixed;
+}
+.rendered_html thead {
+  border-bottom: 1px solid black;
+  vertical-align: bottom;
 }
 .rendered_html tr,
 .rendered_html th,
 .rendered_html td {
-  border: 1px solid black;
-  border-collapse: collapse;
-  margin: 1em 2em;
-}
-.rendered_html td,
-.rendered_html th {
-  text-align: left;
+  text-align: right;
   vertical-align: middle;
-  padding: 4px;
+  padding: 0.5em 0.5em;
+  line-height: normal;
+  white-space: normal;
+  max-width: none;
+  border: none;
 }
 .rendered_html th {
   font-weight: bold;
 }
+.rendered_html tbody tr:nth-child(odd) {
+  background: #f5f5f5;
+}
+.rendered_html tbody tr:hover {
+  background: rgba(66, 165, 245, 0.2);
+}
 .rendered_html * + table {
   margin-top: 1em;
 }
@@ -10310,6 +11282,15 @@
 .rendered_html svg.unconfined {
   max-width: none;
 }
+.rendered_html .alert {
+  margin-bottom: initial;
+}
+.rendered_html * + .alert {
+  margin-top: 1em;
+}
+[dir="rtl"] .rendered_html p {
+  text-align: right;
+}
 div.text_cell {
   /* Old browsers */
   display: -webkit-box;
@@ -10363,9 +11344,18 @@
   overflow-x: auto;
   overflow-y: hidden;
 }
+.text_cell.rendered .rendered_html tr,
+.text_cell.rendered .rendered_html th,
+.text_cell.rendered .rendered_html td {
+  max-width: none;
+}
 .text_cell.unrendered .text_cell_render {
   display: none;
 }
+.text_cell .dropzone .input_area {
+  border: 2px dashed #bababa;
+  margin: -1px;
+}
 .cm-header-1,
 .cm-header-2,
 .cm-header-3,
@@ -10501,6 +11491,28 @@
   padding-top: 1px;
   padding-bottom: 1px;
 }
+.jupyter-keybindings {
+  padding: 1px;
+  line-height: 24px;
+  border-bottom: 1px solid gray;
+}
+.jupyter-keybindings input {
+  margin: 0;
+  padding: 0;
+  border: none;
+}
+.jupyter-keybindings i {
+  padding: 6px;
+}
+.well code {
+  background-color: #ffffff;
+  border-color: #ababab;
+  border-width: 1px;
+  border-style: solid;
+  padding: 2px;
+  padding-top: 1px;
+  padding-bottom: 1px;
+}
 /* CSS for the cell toolbar */
 .celltoolbar {
   border: thin solid #CFCFCF;
@@ -10633,6 +11645,152 @@
   margin-left: 5px;
   margin-right: 5px;
 }
+.tags_button_container {
+  width: 100%;
+  display: flex;
+}
+.tag-container {
+  display: flex;
+  flex-direction: row;
+  flex-grow: 1;
+  overflow: hidden;
+  position: relative;
+}
+.tag-container > * {
+  margin: 0 4px;
+}
+.remove-tag-btn {
+  margin-left: 4px;
+}
+.tags-input {
+  display: flex;
+}
+.cell-tag:last-child:after {
+  content: "";
+  position: absolute;
+  right: 0;
+  width: 40px;
+  height: 100%;
+  /* Fade to background color of cell toolbar */
+  background: linear-gradient(to right, rgba(0, 0, 0, 0), #EEE);
+}
+.tags-input > * {
+  margin-left: 4px;
+}
+.cell-tag,
+.tags-input input,
+.tags-input button {
+  display: block;
+  width: 100%;
+  height: 32px;
+  padding: 6px 12px;
+  font-size: 13px;
+  line-height: 1.42857143;
+  color: #555555;
+  background-color: #fff;
+  background-image: none;
+  border: 1px solid #ccc;
+  border-radius: 2px;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+  height: 30px;
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 1px;
+  box-shadow: none;
+  width: inherit;
+  font-size: inherit;
+  height: 22px;
+  line-height: 22px;
+  padding: 0px 4px;
+  display: inline-block;
+}
+.cell-tag:focus,
+.tags-input input:focus,
+.tags-input button:focus {
+  border-color: #66afe9;
+  outline: 0;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
+  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
+}
+.cell-tag::-moz-placeholder,
+.tags-input input::-moz-placeholder,
+.tags-input button::-moz-placeholder {
+  color: #999;
+  opacity: 1;
+}
+.cell-tag:-ms-input-placeholder,
+.tags-input input:-ms-input-placeholder,
+.tags-input button:-ms-input-placeholder {
+  color: #999;
+}
+.cell-tag::-webkit-input-placeholder,
+.tags-input input::-webkit-input-placeholder,
+.tags-input button::-webkit-input-placeholder {
+  color: #999;
+}
+.cell-tag::-ms-expand,
+.tags-input input::-ms-expand,
+.tags-input button::-ms-expand {
+  border: 0;
+  background-color: transparent;
+}
+.cell-tag[disabled],
+.tags-input input[disabled],
+.tags-input button[disabled],
+.cell-tag[readonly],
+.tags-input input[readonly],
+.tags-input button[readonly],
+fieldset[disabled] .cell-tag,
+fieldset[disabled] .tags-input input,
+fieldset[disabled] .tags-input button {
+  background-color: #eeeeee;
+  opacity: 1;
+}
+.cell-tag[disabled],
+.tags-input input[disabled],
+.tags-input button[disabled],
+fieldset[disabled] .cell-tag,
+fieldset[disabled] .tags-input input,
+fieldset[disabled] .tags-input button {
+  cursor: not-allowed;
+}
+textarea.cell-tag,
+textarea.tags-input input,
+textarea.tags-input button {
+  height: auto;
+}
+select.cell-tag,
+select.tags-input input,
+select.tags-input button {
+  height: 30px;
+  line-height: 30px;
+}
+textarea.cell-tag,
+textarea.tags-input input,
+textarea.tags-input button,
+select[multiple].cell-tag,
+select[multiple].tags-input input,
+select[multiple].tags-input button {
+  height: auto;
+}
+.cell-tag,
+.tags-input button {
+  padding: 0px 4px;
+}
+.cell-tag {
+  background-color: #fff;
+  white-space: nowrap;
+}
+.tags-input input[type=text]:focus {
+  outline: none;
+  box-shadow: none;
+  border-color: #ccc;
+}
 .completions {
   position: absolute;
   z-index: 110;
@@ -10658,10 +11816,6 @@
 .completions select option.context {
   color: #286090;
 }
-#kernel_logo_widget {
-  float: right !important;
-  float: right;
-}
 #kernel_logo_widget .current_kernel_logo {
   display: none;
   margin-top: -1px;
@@ -10669,6 +11823,22 @@
   width: 32px;
   height: 32px;
 }
+[dir="rtl"] #kernel_logo_widget {
+  float: left !important;
+  float: left;
+}
+.modal .modal-body .move-path {
+  display: flex;
+  flex-direction: row;
+  justify-content: space;
+  align-items: center;
+}
+.modal .modal-body .move-path .server-root {
+  padding-right: 20px;
+}
+.modal .modal-body .move-path .path-input {
+  flex: 1;
+}
 #menubar {
   box-sizing: border-box;
   -moz-box-sizing: border-box;
@@ -10689,12 +11859,42 @@
 #menubar .navbar-collapse {
   clear: left;
 }
+[dir="rtl"] #menubar .navbar-toggle {
+  float: right;
+}
+[dir="rtl"] #menubar .navbar-collapse {
+  clear: right;
+}
+[dir="rtl"] #menubar .navbar-nav {
+  float: right;
+}
+[dir="rtl"] #menubar .nav {
+  padding-right: 0px;
+}
+[dir="rtl"] #menubar .navbar-nav > li {
+  float: right;
+}
+[dir="rtl"] #menubar .navbar-right {
+  float: left !important;
+}
+[dir="rtl"] ul.dropdown-menu {
+  text-align: right;
+  left: auto;
+}
+[dir="rtl"] ul#new-menu.dropdown-menu {
+  right: auto;
+  left: 0;
+}
 .nav-wrapper {
   border-bottom: 1px solid #e7e7e7;
 }
 i.menu-icon {
   padding-top: 4px;
 }
+[dir="rtl"] i.menu-icon.pull-right {
+  float: left !important;
+  float: left;
+}
 ul#help_menu li a {
   overflow: hidden;
   padding-right: 2.2em;
@@ -10702,6 +11902,17 @@
 ul#help_menu li a i {
   margin-right: -1.2em;
 }
+[dir="rtl"] ul#help_menu li a {
+  padding-left: 2.2em;
+}
+[dir="rtl"] ul#help_menu li a i {
+  margin-right: 0;
+  margin-left: -1.2em;
+}
+[dir="rtl"] ul#help_menu li a i.pull-right {
+  float: left !important;
+  float: left;
+}
 .dropdown-submenu {
   position: relative;
 }
@@ -10711,6 +11922,10 @@
   margin-top: -6px;
   margin-left: -1px;
 }
+[dir="rtl"] .dropdown-submenu > .dropdown-menu {
+  right: 100%;
+  margin-right: -1px;
+}
 .dropdown-submenu:hover > .dropdown-menu {
   display: block;
 }
@@ -10728,12 +11943,24 @@
   margin-top: 2px;
   margin-right: -10px;
 }
+.dropdown-submenu > a:after.fa-pull-left {
+  margin-right: .3em;
+}
+.dropdown-submenu > a:after.fa-pull-right {
+  margin-left: .3em;
+}
 .dropdown-submenu > a:after.pull-left {
   margin-right: .3em;
 }
 .dropdown-submenu > a:after.pull-right {
   margin-left: .3em;
 }
+[dir="rtl"] .dropdown-submenu > a:after {
+  float: left;
+  content: "\f0d9";
+  margin-right: 0;
+  margin-left: -10px;
+}
 .dropdown-submenu:hover > a:after {
   color: #262626;
 }
@@ -10749,6 +11976,10 @@
   float: right;
   z-index: 10;
 }
+[dir="rtl"] #notification_area {
+  float: left !important;
+  float: left;
+}
 .indicator_area {
   float: right !important;
   float: right;
@@ -10760,6 +11991,10 @@
   text-align: center;
   width: auto;
 }
+[dir="rtl"] .indicator_area {
+  float: left !important;
+  float: left;
+}
 #kernel_indicator {
   float: right !important;
   float: right;
@@ -10776,6 +12011,12 @@
   padding-left: 5px;
   padding-right: 5px;
 }
+[dir="rtl"] #kernel_indicator {
+  float: left !important;
+  float: left;
+  border-left: 0;
+  border-right: 1px solid;
+}
 #modal_indicator {
   float: right !important;
   float: right;
@@ -10787,6 +12028,10 @@
   text-align: center;
   width: auto;
 }
+[dir="rtl"] #modal_indicator {
+  float: left !important;
+  float: left;
+}
 #readonly-indicator {
   float: right !important;
   float: right;
@@ -10816,6 +12061,12 @@
   -moz-osx-font-smoothing: grayscale;
   content: "\f040";
 }
+.edit_mode .modal_indicator:before.fa-pull-left {
+  margin-right: .3em;
+}
+.edit_mode .modal_indicator:before.fa-pull-right {
+  margin-left: .3em;
+}
 .edit_mode .modal_indicator:before.pull-left {
   margin-right: .3em;
 }
@@ -10831,6 +12082,12 @@
   -moz-osx-font-smoothing: grayscale;
   content: ' ';
 }
+.command_mode .modal_indicator:before.fa-pull-left {
+  margin-right: .3em;
+}
+.command_mode .modal_indicator:before.fa-pull-right {
+  margin-left: .3em;
+}
 .command_mode .modal_indicator:before.pull-left {
   margin-right: .3em;
 }
@@ -10846,6 +12103,12 @@
   -moz-osx-font-smoothing: grayscale;
   content: "\f10c";
 }
+.kernel_idle_icon:before.fa-pull-left {
+  margin-right: .3em;
+}
+.kernel_idle_icon:before.fa-pull-right {
+  margin-left: .3em;
+}
 .kernel_idle_icon:before.pull-left {
   margin-right: .3em;
 }
@@ -10861,6 +12124,12 @@
   -moz-osx-font-smoothing: grayscale;
   content: "\f111";
 }
+.kernel_busy_icon:before.fa-pull-left {
+  margin-right: .3em;
+}
+.kernel_busy_icon:before.fa-pull-right {
+  margin-left: .3em;
+}
 .kernel_busy_icon:before.pull-left {
   margin-right: .3em;
 }
@@ -10876,6 +12145,12 @@
   -moz-osx-font-smoothing: grayscale;
   content: "\f1e2";
 }
+.kernel_dead_icon:before.fa-pull-left {
+  margin-right: .3em;
+}
+.kernel_dead_icon:before.fa-pull-right {
+  margin-left: .3em;
+}
 .kernel_dead_icon:before.pull-left {
   margin-right: .3em;
 }
@@ -10891,6 +12166,12 @@
   -moz-osx-font-smoothing: grayscale;
   content: "\f127";
 }
+.kernel_disconnected_icon:before.fa-pull-left {
+  margin-right: .3em;
+}
+.kernel_disconnected_icon:before.fa-pull-right {
+  margin-left: .3em;
+}
 .kernel_disconnected_icon:before.pull-left {
   margin-right: .3em;
 }
@@ -11280,27 +12561,46 @@
   flex: 1;
 }
 span.save_widget {
-  margin-top: 6px;
+  height: 30px;
+  margin-top: 4px;
+  display: flex;
+  justify-content: flex-start;
+  align-items: baseline;
+  width: 50%;
+  flex: 1;
 }
 span.save_widget span.filename {
-  height: 1em;
+  height: 100%;
   line-height: 1em;
-  padding: 3px;
   margin-left: 16px;
   border: none;
   font-size: 146.5%;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  white-space: nowrap;
   border-radius: 2px;
 }
 span.save_widget span.filename:hover {
   background-color: #e6e6e6;
 }
+[dir="rtl"] span.save_widget.pull-left {
+  float: right !important;
+  float: right;
+}
+[dir="rtl"] span.save_widget span.filename {
+  margin-left: 0;
+  margin-right: 16px;
+}
 span.checkpoint_status,
 span.autosave_status {
   font-size: small;
+  white-space: nowrap;
+  padding: 0 5px;
 }
 @media (max-width: 767px) {
   span.save_widget {
     font-size: small;
+    padding: 0 0 0 5px;
   }
   span.checkpoint_status,
   span.autosave_status {
@@ -11344,6 +12644,9 @@
   margin-top: 0px;
   margin-left: 5px;
 }
+.toolbar-btn-label {
+  margin-left: 6px;
+}
 #maintoolbar {
   margin-bottom: -3px;
   margin-top: -8px;
@@ -11364,6 +12667,10 @@
 .select-xs {
   height: 24px;
 }
+[dir="rtl"] .btn-group > .btn,
+.btn-group-vertical > .btn {
+  float: right;
+}
 .pulse,
 .dropdown-menu > li > a.pulse,
 li.pulse > a.dropdown-toggle,
@@ -11513,6 +12820,10 @@
   margin-left: -10px;
   width: 18px;
 }
+[dir="rtl"] ul.typeahead-list i {
+  margin-left: 0;
+  margin-right: -10px;
+}
 ul.typeahead-list {
   max-height: 80vh;
   overflow: auto;
@@ -11522,6 +12833,13 @@
   /* see https://github.com/jupyter/notebook/issues/559 */
   white-space: normal;
 }
+ul.typeahead-list  > li > a.pull-right {
+  float: left !important;
+  float: left;
+}
+[dir="rtl"] .typeahead-list {
+  text-align: right;
+}
 .cmd-palette .modal-body {
   padding: 7px;
 }
@@ -11532,10 +12850,19 @@
   outline: none;
 }
 .no-shortcut {
-  display: none;
+  min-width: 20px;
+  color: transparent;
+}
+[dir="rtl"] .no-shortcut.pull-right {
+  float: left !important;
+  float: left;
+}
+[dir="rtl"] .command-shortcut.pull-right {
+  float: left !important;
+  float: left;
 }
 .command-shortcut:before {
-  content: "(command)";
+  content: "(command mode)";
   padding-right: 3px;
   color: #777777;
 }
@@ -11544,6 +12871,10 @@
   padding-right: 3px;
   color: #777777;
 }
+[dir="rtl"] .edit-shortcut.pull-right {
+  float: left !important;
+  float: left;
+}
 #find-and-replace #replace-preview .match,
 #find-and-replace #replace-preview .insert {
   background-color: #BBDEFB;
@@ -11552,6 +12883,12 @@
   border-width: 1px;
   border-radius: 0px;
 }
+[dir="ltr"] #find-and-replace .input-group-btn + .form-control {
+  border-left: none;
+}
+[dir="rtl"] #find-and-replace .input-group-btn + .form-control {
+  border-right: none;
+}
 #find-and-replace #replace-preview .replace .match {
   background-color: #FFCDD2;
   border-color: #EF9A9A;
@@ -11876,8 +13213,7 @@ 

problem2 (Score: 0.0 / 3.0)

-
-
+

Before you turn this problem in, make sure everything runs as expected. First, restart the kernel (in the menubar, select Kernel$\rightarrow$Restart) and then run all cells (in the menubar, select Cell$\rightarrow$Run All).

Make sure you fill in any place that says YOUR CODE HERE or "YOUR ANSWER HERE", as well as your name and collaborators below:

@@ -11900,8 +13236,7 @@

problem2 (Score: 0.0 / 3.0)

-
-
+

@@ -11910,8 +13245,7 @@

problem2 (Score: 0.0 / 3.0)

-
-
+

Consider the following piece of code:

def f(x):
@@ -11925,8 +13259,7 @@ 

problem2 (Score: 0.0 / 3.0)

-
-
+

Part A (1 point)

Describe, in words, what this code does, and how it does it.

@@ -11936,8 +13269,7 @@

Part A (1 point)
-
-
+
Student's answer Score: 0.0 / 1.0 (Top)
@@ -11952,8 +13284,7 @@

Part A (1 point)
-
-
+

Part B (2 points)

For what inputs will this function not behave as expected? What will happen?

@@ -11963,8 +13294,7 @@

Part B (2 points)
-
-
+
Student's answer Score: 0.0 / 2.0 (Top)
diff --git a/nbgrader/docs/source/user_guide/feedback/hacker/ps1/problem1.html b/nbgrader/docs/source/user_guide/feedback/hacker/ps1/problem1.html index a5f004c39..ef3cbe6c5 100644 --- a/nbgrader/docs/source/user_guide/feedback/hacker/ps1/problem1.html +++ b/nbgrader/docs/source/user_guide/feedback/hacker/ps1/problem1.html @@ -200,7 +200,6 @@ *:before, *:after { background: transparent !important; - color: #000 !important; box-shadow: none !important; text-shadow: none !important; } @@ -6745,15 +6744,15 @@ * */ /*! - * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) */ /* FONT PATH * -------------------------- */ @font-face { font-family: 'FontAwesome'; - src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.2.0'); - src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg'); + src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.7.0'); + src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg'); font-weight: normal; font-style: normal; } @@ -6810,6 +6809,19 @@ border: solid 0.08em #eee; border-radius: .1em; } +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left { + margin-right: .3em; +} +.fa.fa-pull-right { + margin-left: .3em; +} +/* Deprecated as of 4.4.0 */ .pull-right { float: right; } @@ -6826,6 +6838,10 @@ -webkit-animation: fa-spin 2s infinite linear; animation: fa-spin 2s infinite linear; } +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} @-webkit-keyframes fa-spin { 0% { -webkit-transform: rotate(0deg); @@ -6847,31 +6863,31 @@ } } .fa-rotate-90 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; -webkit-transform: rotate(90deg); -ms-transform: rotate(90deg); transform: rotate(90deg); } .fa-rotate-180 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; -webkit-transform: rotate(180deg); -ms-transform: rotate(180deg); transform: rotate(180deg); } .fa-rotate-270 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; -webkit-transform: rotate(270deg); -ms-transform: rotate(270deg); transform: rotate(270deg); } .fa-flip-horizontal { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; -webkit-transform: scale(-1, 1); -ms-transform: scale(-1, 1); transform: scale(-1, 1); } .fa-flip-vertical { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; -webkit-transform: scale(1, -1); -ms-transform: scale(1, -1); transform: scale(1, -1); @@ -7356,6 +7372,7 @@ .fa-twitter:before { content: "\f099"; } +.fa-facebook-f:before, .fa-facebook:before { content: "\f09a"; } @@ -7368,6 +7385,7 @@ .fa-credit-card:before { content: "\f09d"; } +.fa-feed:before, .fa-rss:before { content: "\f09e"; } @@ -8005,7 +8023,8 @@ .fa-male:before { content: "\f183"; } -.fa-gittip:before { +.fa-gittip:before, +.fa-gratipay:before { content: "\f184"; } .fa-sun-o:before { @@ -8109,7 +8128,7 @@ .fa-digg:before { content: "\f1a6"; } -.fa-pied-piper:before { +.fa-pied-piper-pp:before { content: "\f1a7"; } .fa-pied-piper-alt:before { @@ -8235,6 +8254,7 @@ content: "\f1ce"; } .fa-ra:before, +.fa-resistance:before, .fa-rebel:before { content: "\f1d0"; } @@ -8248,6 +8268,8 @@ .fa-git:before { content: "\f1d3"; } +.fa-y-combinator-square:before, +.fa-yc-square:before, .fa-hacker-news:before { content: "\f1d4"; } @@ -8416,6 +8438,657 @@ .fa-meanpath:before { content: "\f20c"; } +.fa-buysellads:before { + content: "\f20d"; +} +.fa-connectdevelop:before { + content: "\f20e"; +} +.fa-dashcube:before { + content: "\f210"; +} +.fa-forumbee:before { + content: "\f211"; +} +.fa-leanpub:before { + content: "\f212"; +} +.fa-sellsy:before { + content: "\f213"; +} +.fa-shirtsinbulk:before { + content: "\f214"; +} +.fa-simplybuilt:before { + content: "\f215"; +} +.fa-skyatlas:before { + content: "\f216"; +} +.fa-cart-plus:before { + content: "\f217"; +} +.fa-cart-arrow-down:before { + content: "\f218"; +} +.fa-diamond:before { + content: "\f219"; +} +.fa-ship:before { + content: "\f21a"; +} +.fa-user-secret:before { + content: "\f21b"; +} +.fa-motorcycle:before { + content: "\f21c"; +} +.fa-street-view:before { + content: "\f21d"; +} +.fa-heartbeat:before { + content: "\f21e"; +} +.fa-venus:before { + content: "\f221"; +} +.fa-mars:before { + content: "\f222"; +} +.fa-mercury:before { + content: "\f223"; +} +.fa-intersex:before, +.fa-transgender:before { + content: "\f224"; +} +.fa-transgender-alt:before { + content: "\f225"; +} +.fa-venus-double:before { + content: "\f226"; +} +.fa-mars-double:before { + content: "\f227"; +} +.fa-venus-mars:before { + content: "\f228"; +} +.fa-mars-stroke:before { + content: "\f229"; +} +.fa-mars-stroke-v:before { + content: "\f22a"; +} +.fa-mars-stroke-h:before { + content: "\f22b"; +} +.fa-neuter:before { + content: "\f22c"; +} +.fa-genderless:before { + content: "\f22d"; +} +.fa-facebook-official:before { + content: "\f230"; +} +.fa-pinterest-p:before { + content: "\f231"; +} +.fa-whatsapp:before { + content: "\f232"; +} +.fa-server:before { + content: "\f233"; +} +.fa-user-plus:before { + content: "\f234"; +} +.fa-user-times:before { + content: "\f235"; +} +.fa-hotel:before, +.fa-bed:before { + content: "\f236"; +} +.fa-viacoin:before { + content: "\f237"; +} +.fa-train:before { + content: "\f238"; +} +.fa-subway:before { + content: "\f239"; +} +.fa-medium:before { + content: "\f23a"; +} +.fa-yc:before, +.fa-y-combinator:before { + content: "\f23b"; +} +.fa-optin-monster:before { + content: "\f23c"; +} +.fa-opencart:before { + content: "\f23d"; +} +.fa-expeditedssl:before { + content: "\f23e"; +} +.fa-battery-4:before, +.fa-battery:before, +.fa-battery-full:before { + content: "\f240"; +} +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: "\f241"; +} +.fa-battery-2:before, +.fa-battery-half:before { + content: "\f242"; +} +.fa-battery-1:before, +.fa-battery-quarter:before { + content: "\f243"; +} +.fa-battery-0:before, +.fa-battery-empty:before { + content: "\f244"; +} +.fa-mouse-pointer:before { + content: "\f245"; +} +.fa-i-cursor:before { + content: "\f246"; +} +.fa-object-group:before { + content: "\f247"; +} +.fa-object-ungroup:before { + content: "\f248"; +} +.fa-sticky-note:before { + content: "\f249"; +} +.fa-sticky-note-o:before { + content: "\f24a"; +} +.fa-cc-jcb:before { + content: "\f24b"; +} +.fa-cc-diners-club:before { + content: "\f24c"; +} +.fa-clone:before { + content: "\f24d"; +} +.fa-balance-scale:before { + content: "\f24e"; +} +.fa-hourglass-o:before { + content: "\f250"; +} +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: "\f251"; +} +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: "\f252"; +} +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: "\f253"; +} +.fa-hourglass:before { + content: "\f254"; +} +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: "\f255"; +} +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: "\f256"; +} +.fa-hand-scissors-o:before { + content: "\f257"; +} +.fa-hand-lizard-o:before { + content: "\f258"; +} +.fa-hand-spock-o:before { + content: "\f259"; +} +.fa-hand-pointer-o:before { + content: "\f25a"; +} +.fa-hand-peace-o:before { + content: "\f25b"; +} +.fa-trademark:before { + content: "\f25c"; +} +.fa-registered:before { + content: "\f25d"; +} +.fa-creative-commons:before { + content: "\f25e"; +} +.fa-gg:before { + content: "\f260"; +} +.fa-gg-circle:before { + content: "\f261"; +} +.fa-tripadvisor:before { + content: "\f262"; +} +.fa-odnoklassniki:before { + content: "\f263"; +} +.fa-odnoklassniki-square:before { + content: "\f264"; +} +.fa-get-pocket:before { + content: "\f265"; +} +.fa-wikipedia-w:before { + content: "\f266"; +} +.fa-safari:before { + content: "\f267"; +} +.fa-chrome:before { + content: "\f268"; +} +.fa-firefox:before { + content: "\f269"; +} +.fa-opera:before { + content: "\f26a"; +} +.fa-internet-explorer:before { + content: "\f26b"; +} +.fa-tv:before, +.fa-television:before { + content: "\f26c"; +} +.fa-contao:before { + content: "\f26d"; +} +.fa-500px:before { + content: "\f26e"; +} +.fa-amazon:before { + content: "\f270"; +} +.fa-calendar-plus-o:before { + content: "\f271"; +} +.fa-calendar-minus-o:before { + content: "\f272"; +} +.fa-calendar-times-o:before { + content: "\f273"; +} +.fa-calendar-check-o:before { + content: "\f274"; +} +.fa-industry:before { + content: "\f275"; +} +.fa-map-pin:before { + content: "\f276"; +} +.fa-map-signs:before { + content: "\f277"; +} +.fa-map-o:before { + content: "\f278"; +} +.fa-map:before { + content: "\f279"; +} +.fa-commenting:before { + content: "\f27a"; +} +.fa-commenting-o:before { + content: "\f27b"; +} +.fa-houzz:before { + content: "\f27c"; +} +.fa-vimeo:before { + content: "\f27d"; +} +.fa-black-tie:before { + content: "\f27e"; +} +.fa-fonticons:before { + content: "\f280"; +} +.fa-reddit-alien:before { + content: "\f281"; +} +.fa-edge:before { + content: "\f282"; +} +.fa-credit-card-alt:before { + content: "\f283"; +} +.fa-codiepie:before { + content: "\f284"; +} +.fa-modx:before { + content: "\f285"; +} +.fa-fort-awesome:before { + content: "\f286"; +} +.fa-usb:before { + content: "\f287"; +} +.fa-product-hunt:before { + content: "\f288"; +} +.fa-mixcloud:before { + content: "\f289"; +} +.fa-scribd:before { + content: "\f28a"; +} +.fa-pause-circle:before { + content: "\f28b"; +} +.fa-pause-circle-o:before { + content: "\f28c"; +} +.fa-stop-circle:before { + content: "\f28d"; +} +.fa-stop-circle-o:before { + content: "\f28e"; +} +.fa-shopping-bag:before { + content: "\f290"; +} +.fa-shopping-basket:before { + content: "\f291"; +} +.fa-hashtag:before { + content: "\f292"; +} +.fa-bluetooth:before { + content: "\f293"; +} +.fa-bluetooth-b:before { + content: "\f294"; +} +.fa-percent:before { + content: "\f295"; +} +.fa-gitlab:before { + content: "\f296"; +} +.fa-wpbeginner:before { + content: "\f297"; +} +.fa-wpforms:before { + content: "\f298"; +} +.fa-envira:before { + content: "\f299"; +} +.fa-universal-access:before { + content: "\f29a"; +} +.fa-wheelchair-alt:before { + content: "\f29b"; +} +.fa-question-circle-o:before { + content: "\f29c"; +} +.fa-blind:before { + content: "\f29d"; +} +.fa-audio-description:before { + content: "\f29e"; +} +.fa-volume-control-phone:before { + content: "\f2a0"; +} +.fa-braille:before { + content: "\f2a1"; +} +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: "\f2a4"; +} +.fa-glide:before { + content: "\f2a5"; +} +.fa-glide-g:before { + content: "\f2a6"; +} +.fa-signing:before, +.fa-sign-language:before { + content: "\f2a7"; +} +.fa-low-vision:before { + content: "\f2a8"; +} +.fa-viadeo:before { + content: "\f2a9"; +} +.fa-viadeo-square:before { + content: "\f2aa"; +} +.fa-snapchat:before { + content: "\f2ab"; +} +.fa-snapchat-ghost:before { + content: "\f2ac"; +} +.fa-snapchat-square:before { + content: "\f2ad"; +} +.fa-pied-piper:before { + content: "\f2ae"; +} +.fa-first-order:before { + content: "\f2b0"; +} +.fa-yoast:before { + content: "\f2b1"; +} +.fa-themeisle:before { + content: "\f2b2"; +} +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: "\f2b3"; +} +.fa-fa:before, +.fa-font-awesome:before { + content: "\f2b4"; +} +.fa-handshake-o:before { + content: "\f2b5"; +} +.fa-envelope-open:before { + content: "\f2b6"; +} +.fa-envelope-open-o:before { + content: "\f2b7"; +} +.fa-linode:before { + content: "\f2b8"; +} +.fa-address-book:before { + content: "\f2b9"; +} +.fa-address-book-o:before { + content: "\f2ba"; +} +.fa-vcard:before, +.fa-address-card:before { + content: "\f2bb"; +} +.fa-vcard-o:before, +.fa-address-card-o:before { + content: "\f2bc"; +} +.fa-user-circle:before { + content: "\f2bd"; +} +.fa-user-circle-o:before { + content: "\f2be"; +} +.fa-user-o:before { + content: "\f2c0"; +} +.fa-id-badge:before { + content: "\f2c1"; +} +.fa-drivers-license:before, +.fa-id-card:before { + content: "\f2c2"; +} +.fa-drivers-license-o:before, +.fa-id-card-o:before { + content: "\f2c3"; +} +.fa-quora:before { + content: "\f2c4"; +} +.fa-free-code-camp:before { + content: "\f2c5"; +} +.fa-telegram:before { + content: "\f2c6"; +} +.fa-thermometer-4:before, +.fa-thermometer:before, +.fa-thermometer-full:before { + content: "\f2c7"; +} +.fa-thermometer-3:before, +.fa-thermometer-three-quarters:before { + content: "\f2c8"; +} +.fa-thermometer-2:before, +.fa-thermometer-half:before { + content: "\f2c9"; +} +.fa-thermometer-1:before, +.fa-thermometer-quarter:before { + content: "\f2ca"; +} +.fa-thermometer-0:before, +.fa-thermometer-empty:before { + content: "\f2cb"; +} +.fa-shower:before { + content: "\f2cc"; +} +.fa-bathtub:before, +.fa-s15:before, +.fa-bath:before { + content: "\f2cd"; +} +.fa-podcast:before { + content: "\f2ce"; +} +.fa-window-maximize:before { + content: "\f2d0"; +} +.fa-window-minimize:before { + content: "\f2d1"; +} +.fa-window-restore:before { + content: "\f2d2"; +} +.fa-times-rectangle:before, +.fa-window-close:before { + content: "\f2d3"; +} +.fa-times-rectangle-o:before, +.fa-window-close-o:before { + content: "\f2d4"; +} +.fa-bandcamp:before { + content: "\f2d5"; +} +.fa-grav:before { + content: "\f2d6"; +} +.fa-etsy:before { + content: "\f2d7"; +} +.fa-imdb:before { + content: "\f2d8"; +} +.fa-ravelry:before { + content: "\f2d9"; +} +.fa-eercast:before { + content: "\f2da"; +} +.fa-microchip:before { + content: "\f2db"; +} +.fa-snowflake-o:before { + content: "\f2dc"; +} +.fa-superpowers:before { + content: "\f2dd"; +} +.fa-wpexplorer:before { + content: "\f2de"; +} +.fa-meetup:before { + content: "\f2e0"; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} /*! * * IPython base @@ -8695,6 +9368,10 @@ max-width: 800px; margin: auto; } +div.traceback-wrapper pre.traceback { + max-height: 600px; + overflow: auto; +} /** * Primary styles * @@ -8720,6 +9397,10 @@ z-index: 100; } body > #header #header-container { + display: flex; + flex-direction: row; + justify-content: space-between; + padding: 5px; padding-bottom: 5px; padding-top: 5px; box-sizing: border-box; @@ -8751,13 +9432,16 @@ padding-top: 1px; padding-bottom: 1px; } -@media (max-width: 991px) { - #ipython_notebook { - margin-left: 10px; - } -} [dir="rtl"] #ipython_notebook { + margin-right: 10px; + margin-left: 0; +} +[dir="rtl"] #ipython_notebook.pull-left { float: right !important; + float: right; +} +.flex-spacer { + flex: 1; } #noscript { width: auto; @@ -8792,9 +9476,15 @@ input.ui-button { padding: 0.3em 0.9em; } +span#kernel_logo_widget { + margin: 0 10px; +} span#login_widget { float: right; } +[dir="rtl"] span#login_widget { + float: left; +} span#login_widget > .button, #logout { color: #333; @@ -8909,6 +9599,9 @@ overflow: auto; flex: 1; } +.modal-header { + cursor: move; +} @media (min-width: 768px) { .modal .modal-dialog { width: 700px; @@ -8929,10 +9622,23 @@ display: inline-block; margin-bottom: -4px; } -/*! -* -* IPython tree view -* +[dir="rtl"] .center-nav form.pull-left { + float: right !important; + float: right; +} +[dir="rtl"] .center-nav .navbar-text { + float: right; +} +[dir="rtl"] .navbar-inner { + text-align: right; +} +[dir="rtl"] div.text-left { + text-align: right; +} +/*! +* +* IPython tree view +* */ /* We need an invisible input field on top of the sentense*/ /* "Drag file onto the list ..." */ @@ -8945,35 +9651,43 @@ margin: 0; } .alternate_upload input.fileinput { - text-align: center; - vertical-align: middle; - display: inline; + position: absolute; + display: block; + width: 100%; + height: 100%; + overflow: hidden; + cursor: pointer; opacity: 0; z-index: 2; - width: 12ex; - margin-right: -12ex; +} +.alternate_upload .btn-xs > input.fileinput { + margin: -1px -5px; } .alternate_upload .btn-upload { + position: relative; height: 22px; } +::-webkit-file-upload-button { + cursor: pointer; +} /** * Primary styles * * Author: Jupyter Development Team */ -[dir="rtl"] #tabs li { - float: right; -} ul#tabs { margin-bottom: 4px; } -[dir="rtl"] ul#tabs { - margin-right: 0px; -} ul#tabs a { padding-top: 6px; padding-bottom: 4px; } +[dir="rtl"] ul#tabs.nav-tabs > li { + float: right; +} +[dir="rtl"] ul#tabs.nav.nav-tabs { + padding-right: 0; +} ul.breadcrumb a:focus, ul.breadcrumb a:hover { text-decoration: none; @@ -8992,15 +9706,13 @@ .list_toolbar .tree-buttons { padding-top: 1px; } -[dir="rtl"] .list_toolbar .tree-buttons { - float: left !important; -} -[dir="rtl"] .list_toolbar .pull-right { - padding-top: 1px; +[dir="rtl"] .list_toolbar .tree-buttons .pull-right { float: left !important; + float: left; } -[dir="rtl"] .list_toolbar .pull-left { - float: right !important; +[dir="rtl"] .list_toolbar .col-sm-4, +[dir="rtl"] .list_toolbar .col-sm-8 { + float: right; } .dynamic-buttons { padding-top: 3px; @@ -9056,7 +9768,7 @@ .list_item > div input { margin-right: 7px; margin-left: 14px; - vertical-align: baseline; + vertical-align: text-bottom; line-height: 22px; position: relative; top: -1px; @@ -9067,6 +9779,9 @@ vertical-align: baseline; line-height: 22px; } +[dir="rtl"] .list_item > div input { + margin-right: 0; +} .new-file input[type=checkbox] { visibility: hidden; } @@ -9082,6 +9797,14 @@ line-height: 22px; vertical-align: baseline; } +.item_modified { + margin-right: 7px; + margin-left: 7px; +} +[dir="rtl"] .item_modified.pull-right { + float: left !important; + float: left; +} .item_buttons { line-height: 1em; margin-left: -5px; @@ -9109,6 +9832,14 @@ margin-right: 7px; float: left; } +[dir="rtl"] .item_buttons.pull-right { + float: left !important; + float: left; +} +[dir="rtl"] .item_buttons .kernel-name { + margin-left: 7px; + float: right; +} .toolbar_info { height: 24px; line-height: 24px; @@ -9134,18 +9865,32 @@ background-color: transparent; font-weight: bold; } +.sort_button { + display: inline-block; + padding-left: 7px; +} +[dir="rtl"] .sort_button.pull-right { + float: left !important; + float: left; +} #tree-selector { padding-right: 0px; } -[dir="rtl"] #tree-selector a { - float: right; -} #button-select-all { min-width: 50px; } +[dir="rtl"] #button-select-all.btn { + float: right ; +} #select-all { margin-left: 7px; margin-right: 2px; + margin-top: 2px; + height: 16px; +} +[dir="rtl"] #select-all.pull-left { + float: right !important; + float: right; } .menu_icon { margin-right: 2px; @@ -9163,6 +9908,12 @@ -moz-osx-font-smoothing: grayscale; content: "\f114"; } +.folder_icon:before.fa-pull-left { + margin-right: .3em; +} +.folder_icon:before.fa-pull-right { + margin-left: .3em; +} .folder_icon:before.pull-left { margin-right: .3em; } @@ -9180,6 +9931,12 @@ position: relative; top: -1px; } +.notebook_icon:before.fa-pull-left { + margin-right: .3em; +} +.notebook_icon:before.fa-pull-right { + margin-left: .3em; +} .notebook_icon:before.pull-left { margin-right: .3em; } @@ -9198,6 +9955,12 @@ top: -1px; color: #5cb85c; } +.running_notebook_icon:before.fa-pull-left { + margin-right: .3em; +} +.running_notebook_icon:before.fa-pull-right { + margin-left: .3em; +} .running_notebook_icon:before.pull-left { margin-right: .3em; } @@ -9215,6 +9978,12 @@ position: relative; top: -2px; } +.file_icon:before.fa-pull-left { + margin-right: .3em; +} +.file_icon:before.fa-pull-right { + margin-left: .3em; +} .file_icon:before.pull-left { margin-right: .3em; } @@ -9229,8 +9998,11 @@ left: auto; right: 0; } -[dir="rtl"] #new-menu { - text-align: right; +#new-menu .dropdown-header { + font-size: 10px; + border-bottom: 1px solid #e5e5e5; + padding: 0 0 3px; + margin: -3px 20px 0; } .kernel-menu-icon { padding-right: 12px; @@ -9277,9 +10049,6 @@ #running .panel-group .panel .panel-body .list_container .list_item:last-child { border-bottom: 0px; } -[dir="rtl"] #running .col-sm-8 { - float: right !important; -} .delete-button { display: none; } @@ -9289,6 +10058,12 @@ .rename-button { display: none; } +.move-button { + display: none; +} +.download-button { + display: none; +} .shutdown-button { display: none; } @@ -9329,6 +10104,12 @@ -moz-osx-font-smoothing: grayscale; width: 20px; } +.dirty-indicator.fa-pull-left { + margin-right: .3em; +} +.dirty-indicator.fa-pull-right { + margin-left: .3em; +} .dirty-indicator.pull-left { margin-right: .3em; } @@ -9344,6 +10125,12 @@ -moz-osx-font-smoothing: grayscale; width: 20px; } +.dirty-indicator-dirty.fa-pull-left { + margin-right: .3em; +} +.dirty-indicator-dirty.fa-pull-right { + margin-left: .3em; +} .dirty-indicator-dirty.pull-left { margin-right: .3em; } @@ -9359,6 +10146,12 @@ -moz-osx-font-smoothing: grayscale; width: 20px; } +.dirty-indicator-clean.fa-pull-left { + margin-right: .3em; +} +.dirty-indicator-clean.fa-pull-right { + margin-left: .3em; +} .dirty-indicator-clean.pull-left { margin-right: .3em; } @@ -9374,6 +10167,12 @@ -moz-osx-font-smoothing: grayscale; content: "\f00c"; } +.dirty-indicator-clean:before.fa-pull-left { + margin-right: .3em; +} +.dirty-indicator-clean:before.fa-pull-right { + margin-left: .3em; +} .dirty-indicator-clean:before.pull-left { margin-right: .3em; } @@ -9418,15 +10217,133 @@ box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2); } } +.CodeMirror-dialog { + background-color: #fff; +} /*! * * IPython notebook * */ -/* CSS font colors for translated ANSI colors. */ +/* CSS font colors for translated ANSI escape sequences */ +/* The color values are a mix of + http://www.xcolors.net/dl/baskerville-ivorylight and + http://www.xcolors.net/dl/euphrasia */ +.ansi-black-fg { + color: #3E424D; +} +.ansi-black-bg { + background-color: #3E424D; +} +.ansi-black-intense-fg { + color: #282C36; +} +.ansi-black-intense-bg { + background-color: #282C36; +} +.ansi-red-fg { + color: #E75C58; +} +.ansi-red-bg { + background-color: #E75C58; +} +.ansi-red-intense-fg { + color: #B22B31; +} +.ansi-red-intense-bg { + background-color: #B22B31; +} +.ansi-green-fg { + color: #00A250; +} +.ansi-green-bg { + background-color: #00A250; +} +.ansi-green-intense-fg { + color: #007427; +} +.ansi-green-intense-bg { + background-color: #007427; +} +.ansi-yellow-fg { + color: #DDB62B; +} +.ansi-yellow-bg { + background-color: #DDB62B; +} +.ansi-yellow-intense-fg { + color: #B27D12; +} +.ansi-yellow-intense-bg { + background-color: #B27D12; +} +.ansi-blue-fg { + color: #208FFB; +} +.ansi-blue-bg { + background-color: #208FFB; +} +.ansi-blue-intense-fg { + color: #0065CA; +} +.ansi-blue-intense-bg { + background-color: #0065CA; +} +.ansi-magenta-fg { + color: #D160C4; +} +.ansi-magenta-bg { + background-color: #D160C4; +} +.ansi-magenta-intense-fg { + color: #A03196; +} +.ansi-magenta-intense-bg { + background-color: #A03196; +} +.ansi-cyan-fg { + color: #60C6C8; +} +.ansi-cyan-bg { + background-color: #60C6C8; +} +.ansi-cyan-intense-fg { + color: #258F8F; +} +.ansi-cyan-intense-bg { + background-color: #258F8F; +} +.ansi-white-fg { + color: #C5C1B4; +} +.ansi-white-bg { + background-color: #C5C1B4; +} +.ansi-white-intense-fg { + color: #A1A6B2; +} +.ansi-white-intense-bg { + background-color: #A1A6B2; +} +.ansi-default-inverse-fg { + color: #FFFFFF; +} +.ansi-default-inverse-bg { + background-color: #000000; +} +.ansi-bold { + font-weight: bold; +} +.ansi-underline { + text-decoration: underline; +} +/* The following styles are deprecated an will be removed in a future version */ .ansibold { font-weight: bold; } +.ansi-inverse { + outline: 0.5px dotted; +} /* use dark versions for foreground, to improve visibility */ .ansiblack { color: black; @@ -9504,12 +10421,20 @@ /* This acts as a spacer between cells, that is outside the border */ margin: 0px; outline: none; - border-left-width: 1px; - padding-left: 5px; - background: linear-gradient(to right, transparent -40px, transparent 1px, transparent 1px, transparent 100%); + position: relative; + overflow: visible; +} +div.cell:before { + position: absolute; + display: block; + top: -1px; + left: -1px; + width: 5px; + height: calc(100% + 2px); + content: ''; + background: transparent; } div.cell.jupyter-soft-selected { - border-left-color: #90CAF9; border-left-color: #E3F2FD; border-left-width: 1px; padding-left: 5px; @@ -9522,27 +10447,39 @@ border-color: transparent; } } -div.cell.selected { +div.cell.selected, +div.cell.selected.jupyter-soft-selected { border-color: #ababab; - border-left-width: 0px; - padding-left: 6px; - background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 5px, transparent 5px, transparent 100%); +} +div.cell.selected:before, +div.cell.selected.jupyter-soft-selected:before { + position: absolute; + display: block; + top: -1px; + left: -1px; + width: 5px; + height: calc(100% + 2px); + content: ''; + background: #42A5F5; } @media print { - div.cell.selected { + div.cell.selected, + div.cell.selected.jupyter-soft-selected { border-color: transparent; } } -div.cell.selected.jupyter-soft-selected { - border-left-width: 0; - padding-left: 6px; - background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 7px, #E3F2FD 7px, #E3F2FD 100%); -} .edit_mode div.cell.selected { border-color: #66BB6A; - border-left-width: 0px; - padding-left: 6px; - background: linear-gradient(to right, #66BB6A -40px, #66BB6A 5px, transparent 5px, transparent 100%); +} +.edit_mode div.cell.selected:before { + position: absolute; + display: block; + top: -1px; + left: -1px; + width: 5px; + height: calc(100% + 2px); + content: ''; + background: #66BB6A; } @media print { .edit_mode div.cell.selected { @@ -9738,7 +10675,9 @@ .CodeMirror-lines { /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */ /* we have set a different line-height and want this to scale with that. */ - padding: 0.4em; + /* Note that this should set vertical padding only, since CodeMirror assumes + that horizontal padding will be set on CodeMirror pre */ + padding: 0.4em 0; } .CodeMirror-linenumber { padding: 0 8px 0 4px; @@ -9748,12 +10687,25 @@ border-top-left-radius: 2px; } .CodeMirror pre { - /* In CM3 this went to 4px from 0 in CM2. We need the 0 value because of how we size */ - /* .CodeMirror-lines */ - padding: 0; + /* In CM3 this went to 4px from 0 in CM2. This sets horizontal padding only, + use .CodeMirror-lines for vertical */ + padding: 0 0.4em; border: 0; border-radius: 0; } +.CodeMirror-cursor { + border-left: 1.4px solid black; +} +@media screen and (min-width: 2138px) and (max-width: 4319px) { + .CodeMirror-cursor { + border-left: 2px solid black; + } +} +@media screen and (min-width: 4320px) { + .CodeMirror-cursor { + border-left: 4px solid black; + } +} /* Original style from softwaremaniacs.org (c) Ivan Sagalaev @@ -10006,6 +10958,9 @@ div.output_area svg.unconfined { max-width: none; } +div.output_area .mglyph > img { + max-width: none; +} /* This is needed to protect the pre formating from global settings such as that of bootstrap */ .output { @@ -10044,7 +10999,7 @@ } div.output_area pre { margin: 0; - padding: 0; + padding: 1px 0 1px 0; border: 0; vertical-align: baseline; color: black; @@ -10204,39 +11159,35 @@ .rendered_html h6:first-child { margin-top: 1em; } +.rendered_html ul:not(.list-inline), +.rendered_html ol:not(.list-inline) { + padding-left: 2em; +} .rendered_html ul { list-style: disc; - margin: 0em 2em; - padding-left: 0px; } .rendered_html ul ul { list-style: square; - margin: 0em 2em; + margin-top: 0; } .rendered_html ul ul ul { list-style: circle; - margin: 0em 2em; } .rendered_html ol { list-style: decimal; - margin: 0em 2em; - padding-left: 0px; } .rendered_html ol ol { list-style: upper-alpha; - margin: 0em 2em; + margin-top: 0; } .rendered_html ol ol ol { list-style: lower-alpha; - margin: 0em 2em; } .rendered_html ol ol ol ol { list-style: lower-roman; - margin: 0em 2em; } .rendered_html ol ol ol ol ol { list-style: decimal; - margin: 0em 2em; } .rendered_html * + ul { margin-top: 1em; @@ -10250,14 +11201,23 @@ } .rendered_html pre { margin: 1em 2em; + padding: 0px; + background-color: #fff; +} +.rendered_html code { + background-color: #eff0f1; +} +.rendered_html p code { + padding: 1px 5px; +} +.rendered_html pre code { + background-color: #fff; } .rendered_html pre, .rendered_html code { border: 0; - background-color: #fff; color: #000; font-size: 100%; - padding: 0px; } .rendered_html blockquote { margin: 1em 2em; @@ -10265,25 +11225,37 @@ .rendered_html table { margin-left: auto; margin-right: auto; - border: 1px solid black; + border: none; border-collapse: collapse; + border-spacing: 0; + color: black; + font-size: 12px; + table-layout: fixed; +} +.rendered_html thead { + border-bottom: 1px solid black; + vertical-align: bottom; } .rendered_html tr, .rendered_html th, .rendered_html td { - border: 1px solid black; - border-collapse: collapse; - margin: 1em 2em; -} -.rendered_html td, -.rendered_html th { - text-align: left; + text-align: right; vertical-align: middle; - padding: 4px; + padding: 0.5em 0.5em; + line-height: normal; + white-space: normal; + max-width: none; + border: none; } .rendered_html th { font-weight: bold; } +.rendered_html tbody tr:nth-child(odd) { + background: #f5f5f5; +} +.rendered_html tbody tr:hover { + background: rgba(66, 165, 245, 0.2); +} .rendered_html * + table { margin-top: 1em; } @@ -10310,6 +11282,15 @@ .rendered_html svg.unconfined { max-width: none; } +.rendered_html .alert { + margin-bottom: initial; +} +.rendered_html * + .alert { + margin-top: 1em; +} +[dir="rtl"] .rendered_html p { + text-align: right; +} div.text_cell { /* Old browsers */ display: -webkit-box; @@ -10363,9 +11344,18 @@ overflow-x: auto; overflow-y: hidden; } +.text_cell.rendered .rendered_html tr, +.text_cell.rendered .rendered_html th, +.text_cell.rendered .rendered_html td { + max-width: none; +} .text_cell.unrendered .text_cell_render { display: none; } +.text_cell .dropzone .input_area { + border: 2px dashed #bababa; + margin: -1px; +} .cm-header-1, .cm-header-2, .cm-header-3, @@ -10501,6 +11491,28 @@ padding-top: 1px; padding-bottom: 1px; } +.jupyter-keybindings { + padding: 1px; + line-height: 24px; + border-bottom: 1px solid gray; +} +.jupyter-keybindings input { + margin: 0; + padding: 0; + border: none; +} +.jupyter-keybindings i { + padding: 6px; +} +.well code { + background-color: #ffffff; + border-color: #ababab; + border-width: 1px; + border-style: solid; + padding: 2px; + padding-top: 1px; + padding-bottom: 1px; +} /* CSS for the cell toolbar */ .celltoolbar { border: thin solid #CFCFCF; @@ -10633,6 +11645,152 @@ margin-left: 5px; margin-right: 5px; } +.tags_button_container { + width: 100%; + display: flex; +} +.tag-container { + display: flex; + flex-direction: row; + flex-grow: 1; + overflow: hidden; + position: relative; +} +.tag-container > * { + margin: 0 4px; +} +.remove-tag-btn { + margin-left: 4px; +} +.tags-input { + display: flex; +} +.cell-tag:last-child:after { + content: ""; + position: absolute; + right: 0; + width: 40px; + height: 100%; + /* Fade to background color of cell toolbar */ + background: linear-gradient(to right, rgba(0, 0, 0, 0), #EEE); +} +.tags-input > * { + margin-left: 4px; +} +.cell-tag, +.tags-input input, +.tags-input button { + display: block; + width: 100%; + height: 32px; + padding: 6px 12px; + font-size: 13px; + line-height: 1.42857143; + color: #555555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 2px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 1px; + box-shadow: none; + width: inherit; + font-size: inherit; + height: 22px; + line-height: 22px; + padding: 0px 4px; + display: inline-block; +} +.cell-tag:focus, +.tags-input input:focus, +.tags-input button:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); +} +.cell-tag::-moz-placeholder, +.tags-input input::-moz-placeholder, +.tags-input button::-moz-placeholder { + color: #999; + opacity: 1; +} +.cell-tag:-ms-input-placeholder, +.tags-input input:-ms-input-placeholder, +.tags-input button:-ms-input-placeholder { + color: #999; +} +.cell-tag::-webkit-input-placeholder, +.tags-input input::-webkit-input-placeholder, +.tags-input button::-webkit-input-placeholder { + color: #999; +} +.cell-tag::-ms-expand, +.tags-input input::-ms-expand, +.tags-input button::-ms-expand { + border: 0; + background-color: transparent; +} +.cell-tag[disabled], +.tags-input input[disabled], +.tags-input button[disabled], +.cell-tag[readonly], +.tags-input input[readonly], +.tags-input button[readonly], +fieldset[disabled] .cell-tag, +fieldset[disabled] .tags-input input, +fieldset[disabled] .tags-input button { + background-color: #eeeeee; + opacity: 1; +} +.cell-tag[disabled], +.tags-input input[disabled], +.tags-input button[disabled], +fieldset[disabled] .cell-tag, +fieldset[disabled] .tags-input input, +fieldset[disabled] .tags-input button { + cursor: not-allowed; +} +textarea.cell-tag, +textarea.tags-input input, +textarea.tags-input button { + height: auto; +} +select.cell-tag, +select.tags-input input, +select.tags-input button { + height: 30px; + line-height: 30px; +} +textarea.cell-tag, +textarea.tags-input input, +textarea.tags-input button, +select[multiple].cell-tag, +select[multiple].tags-input input, +select[multiple].tags-input button { + height: auto; +} +.cell-tag, +.tags-input button { + padding: 0px 4px; +} +.cell-tag { + background-color: #fff; + white-space: nowrap; +} +.tags-input input[type=text]:focus { + outline: none; + box-shadow: none; + border-color: #ccc; +} .completions { position: absolute; z-index: 110; @@ -10658,10 +11816,6 @@ .completions select option.context { color: #286090; } -#kernel_logo_widget { - float: right !important; - float: right; -} #kernel_logo_widget .current_kernel_logo { display: none; margin-top: -1px; @@ -10669,6 +11823,22 @@ width: 32px; height: 32px; } +[dir="rtl"] #kernel_logo_widget { + float: left !important; + float: left; +} +.modal .modal-body .move-path { + display: flex; + flex-direction: row; + justify-content: space; + align-items: center; +} +.modal .modal-body .move-path .server-root { + padding-right: 20px; +} +.modal .modal-body .move-path .path-input { + flex: 1; +} #menubar { box-sizing: border-box; -moz-box-sizing: border-box; @@ -10689,12 +11859,42 @@ #menubar .navbar-collapse { clear: left; } +[dir="rtl"] #menubar .navbar-toggle { + float: right; +} +[dir="rtl"] #menubar .navbar-collapse { + clear: right; +} +[dir="rtl"] #menubar .navbar-nav { + float: right; +} +[dir="rtl"] #menubar .nav { + padding-right: 0px; +} +[dir="rtl"] #menubar .navbar-nav > li { + float: right; +} +[dir="rtl"] #menubar .navbar-right { + float: left !important; +} +[dir="rtl"] ul.dropdown-menu { + text-align: right; + left: auto; +} +[dir="rtl"] ul#new-menu.dropdown-menu { + right: auto; + left: 0; +} .nav-wrapper { border-bottom: 1px solid #e7e7e7; } i.menu-icon { padding-top: 4px; } +[dir="rtl"] i.menu-icon.pull-right { + float: left !important; + float: left; +} ul#help_menu li a { overflow: hidden; padding-right: 2.2em; @@ -10702,6 +11902,17 @@ ul#help_menu li a i { margin-right: -1.2em; } +[dir="rtl"] ul#help_menu li a { + padding-left: 2.2em; +} +[dir="rtl"] ul#help_menu li a i { + margin-right: 0; + margin-left: -1.2em; +} +[dir="rtl"] ul#help_menu li a i.pull-right { + float: left !important; + float: left; +} .dropdown-submenu { position: relative; } @@ -10711,6 +11922,10 @@ margin-top: -6px; margin-left: -1px; } +[dir="rtl"] .dropdown-submenu > .dropdown-menu { + right: 100%; + margin-right: -1px; +} .dropdown-submenu:hover > .dropdown-menu { display: block; } @@ -10728,12 +11943,24 @@ margin-top: 2px; margin-right: -10px; } +.dropdown-submenu > a:after.fa-pull-left { + margin-right: .3em; +} +.dropdown-submenu > a:after.fa-pull-right { + margin-left: .3em; +} .dropdown-submenu > a:after.pull-left { margin-right: .3em; } .dropdown-submenu > a:after.pull-right { margin-left: .3em; } +[dir="rtl"] .dropdown-submenu > a:after { + float: left; + content: "\f0d9"; + margin-right: 0; + margin-left: -10px; +} .dropdown-submenu:hover > a:after { color: #262626; } @@ -10749,6 +11976,10 @@ float: right; z-index: 10; } +[dir="rtl"] #notification_area { + float: left !important; + float: left; +} .indicator_area { float: right !important; float: right; @@ -10760,6 +11991,10 @@ text-align: center; width: auto; } +[dir="rtl"] .indicator_area { + float: left !important; + float: left; +} #kernel_indicator { float: right !important; float: right; @@ -10776,6 +12011,12 @@ padding-left: 5px; padding-right: 5px; } +[dir="rtl"] #kernel_indicator { + float: left !important; + float: left; + border-left: 0; + border-right: 1px solid; +} #modal_indicator { float: right !important; float: right; @@ -10787,6 +12028,10 @@ text-align: center; width: auto; } +[dir="rtl"] #modal_indicator { + float: left !important; + float: left; +} #readonly-indicator { float: right !important; float: right; @@ -10816,6 +12061,12 @@ -moz-osx-font-smoothing: grayscale; content: "\f040"; } +.edit_mode .modal_indicator:before.fa-pull-left { + margin-right: .3em; +} +.edit_mode .modal_indicator:before.fa-pull-right { + margin-left: .3em; +} .edit_mode .modal_indicator:before.pull-left { margin-right: .3em; } @@ -10831,6 +12082,12 @@ -moz-osx-font-smoothing: grayscale; content: ' '; } +.command_mode .modal_indicator:before.fa-pull-left { + margin-right: .3em; +} +.command_mode .modal_indicator:before.fa-pull-right { + margin-left: .3em; +} .command_mode .modal_indicator:before.pull-left { margin-right: .3em; } @@ -10846,6 +12103,12 @@ -moz-osx-font-smoothing: grayscale; content: "\f10c"; } +.kernel_idle_icon:before.fa-pull-left { + margin-right: .3em; +} +.kernel_idle_icon:before.fa-pull-right { + margin-left: .3em; +} .kernel_idle_icon:before.pull-left { margin-right: .3em; } @@ -10861,6 +12124,12 @@ -moz-osx-font-smoothing: grayscale; content: "\f111"; } +.kernel_busy_icon:before.fa-pull-left { + margin-right: .3em; +} +.kernel_busy_icon:before.fa-pull-right { + margin-left: .3em; +} .kernel_busy_icon:before.pull-left { margin-right: .3em; } @@ -10876,6 +12145,12 @@ -moz-osx-font-smoothing: grayscale; content: "\f1e2"; } +.kernel_dead_icon:before.fa-pull-left { + margin-right: .3em; +} +.kernel_dead_icon:before.fa-pull-right { + margin-left: .3em; +} .kernel_dead_icon:before.pull-left { margin-right: .3em; } @@ -10891,6 +12166,12 @@ -moz-osx-font-smoothing: grayscale; content: "\f127"; } +.kernel_disconnected_icon:before.fa-pull-left { + margin-right: .3em; +} +.kernel_disconnected_icon:before.fa-pull-right { + margin-left: .3em; +} .kernel_disconnected_icon:before.pull-left { margin-right: .3em; } @@ -11280,27 +12561,46 @@ flex: 1; } span.save_widget { - margin-top: 6px; + height: 30px; + margin-top: 4px; + display: flex; + justify-content: flex-start; + align-items: baseline; + width: 50%; + flex: 1; } span.save_widget span.filename { - height: 1em; + height: 100%; line-height: 1em; - padding: 3px; margin-left: 16px; border: none; font-size: 146.5%; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; border-radius: 2px; } span.save_widget span.filename:hover { background-color: #e6e6e6; } +[dir="rtl"] span.save_widget.pull-left { + float: right !important; + float: right; +} +[dir="rtl"] span.save_widget span.filename { + margin-left: 0; + margin-right: 16px; +} span.checkpoint_status, span.autosave_status { font-size: small; + white-space: nowrap; + padding: 0 5px; } @media (max-width: 767px) { span.save_widget { font-size: small; + padding: 0 0 0 5px; } span.checkpoint_status, span.autosave_status { @@ -11344,6 +12644,9 @@ margin-top: 0px; margin-left: 5px; } +.toolbar-btn-label { + margin-left: 6px; +} #maintoolbar { margin-bottom: -3px; margin-top: -8px; @@ -11364,6 +12667,10 @@ .select-xs { height: 24px; } +[dir="rtl"] .btn-group > .btn, +.btn-group-vertical > .btn { + float: right; +} .pulse, .dropdown-menu > li > a.pulse, li.pulse > a.dropdown-toggle, @@ -11513,6 +12820,10 @@ margin-left: -10px; width: 18px; } +[dir="rtl"] ul.typeahead-list i { + margin-left: 0; + margin-right: -10px; +} ul.typeahead-list { max-height: 80vh; overflow: auto; @@ -11522,6 +12833,13 @@ /* see https://github.com/jupyter/notebook/issues/559 */ white-space: normal; } +ul.typeahead-list > li > a.pull-right { + float: left !important; + float: left; +} +[dir="rtl"] .typeahead-list { + text-align: right; +} .cmd-palette .modal-body { padding: 7px; } @@ -11532,10 +12850,19 @@ outline: none; } .no-shortcut { - display: none; + min-width: 20px; + color: transparent; +} +[dir="rtl"] .no-shortcut.pull-right { + float: left !important; + float: left; +} +[dir="rtl"] .command-shortcut.pull-right { + float: left !important; + float: left; } .command-shortcut:before { - content: "(command)"; + content: "(command mode)"; padding-right: 3px; color: #777777; } @@ -11544,6 +12871,10 @@ padding-right: 3px; color: #777777; } +[dir="rtl"] .edit-shortcut.pull-right { + float: left !important; + float: left; +} #find-and-replace #replace-preview .match, #find-and-replace #replace-preview .insert { background-color: #BBDEFB; @@ -11552,6 +12883,12 @@ border-width: 1px; border-radius: 0px; } +[dir="ltr"] #find-and-replace .input-group-btn + .form-control { + border-left: none; +} +[dir="rtl"] #find-and-replace .input-group-btn + .form-control { + border-right: none; +} #find-and-replace #replace-preview .replace .match { background-color: #FFCDD2; border-color: #EF9A9A; @@ -11926,8 +13263,7 @@

problem1 (Score: 3.0 / 6.0)

-
-
+

Before you turn this problem in, make sure everything runs as expected. First, restart the kernel (in the menubar, select Kernel$\rightarrow$Restart) and then run all cells (in the menubar, select Cell$\rightarrow$Run All).

Make sure you fill in any place that says YOUR CODE HERE or "YOUR ANSWER HERE", as well as your name and collaborators below:

@@ -11950,8 +13286,7 @@

problem1 (Score: 3.0 / 6.0)

-
-
+

@@ -11960,8 +13295,7 @@

problem1 (Score: 3.0 / 6.0)

-
-
+

For this problem set, we'll be using the Jupyter notebook:

@@ -11971,8 +13305,7 @@

problem1 (Score: 3.0 / 6.0)

-
-
+

Part A (2 points)

Write a function that returns a list of numbers, such that $x_i=i^2$, for $1\leq i \leq n$. Make sure it handles the case where $n<1$ by raising a ValueError.

@@ -12005,8 +13338,7 @@

Part A (2 points)
-
-
+

Your function should print [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] for $n=10$. Check that it does:

@@ -12030,7 +13362,7 @@

Part A (2 points) -
Out[3]:
+
Out[3]:
@@ -12102,8 +13434,7 @@

Part A (2 points)
-
-
+

Part B (1 point)

Using your squares function, write a function that computes the sum of the squares of the numbers from 1 to $n$. Your function should call the squares function -- it should NOT reimplement its functionality.

@@ -12131,8 +13462,7 @@

Part B (1 point)
-
-
+

The sum of squares from 1 to 10 should be 385. Verify that this is the answer you get:

@@ -12156,7 +13486,7 @@

Part B (1 point) -
Out[7]:
+
Out[7]:
@@ -12225,8 +13555,7 @@

Part B (1 point)
-
-
+

Part C (1 point)

Using LaTeX math notation, write out the equation that is implemented by your sum_of_squares function.

@@ -12236,8 +13565,7 @@

Part C (1 point)
-
-
+
Student's answer Score: 0.0 / 1.0 (Top)
@@ -12252,8 +13580,7 @@

Part C (1 point)
-
-
+

Part D (2 points)

Find a usecase for your sum_of_squares function and implement that usecase in the cell below.

@@ -12311,7 +13638,7 @@

Part D (2 points) -
+
@@ -12343,7 +13670,7 @@

Part D (2 points) -
+
diff --git a/nbgrader/docs/source/user_guide/feedback/hacker/ps1/problem2.html b/nbgrader/docs/source/user_guide/feedback/hacker/ps1/problem2.html index 6d65cfc01..1a04c734c 100644 --- a/nbgrader/docs/source/user_guide/feedback/hacker/ps1/problem2.html +++ b/nbgrader/docs/source/user_guide/feedback/hacker/ps1/problem2.html @@ -200,7 +200,6 @@ *:before, *:after { background: transparent !important; - color: #000 !important; box-shadow: none !important; text-shadow: none !important; } @@ -6745,15 +6744,15 @@ * */ /*! - * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) */ /* FONT PATH * -------------------------- */ @font-face { font-family: 'FontAwesome'; - src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.2.0'); - src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg'); + src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.7.0'); + src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg'); font-weight: normal; font-style: normal; } @@ -6810,6 +6809,19 @@ border: solid 0.08em #eee; border-radius: .1em; } +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left { + margin-right: .3em; +} +.fa.fa-pull-right { + margin-left: .3em; +} +/* Deprecated as of 4.4.0 */ .pull-right { float: right; } @@ -6826,6 +6838,10 @@ -webkit-animation: fa-spin 2s infinite linear; animation: fa-spin 2s infinite linear; } +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} @-webkit-keyframes fa-spin { 0% { -webkit-transform: rotate(0deg); @@ -6847,31 +6863,31 @@ } } .fa-rotate-90 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; -webkit-transform: rotate(90deg); -ms-transform: rotate(90deg); transform: rotate(90deg); } .fa-rotate-180 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; -webkit-transform: rotate(180deg); -ms-transform: rotate(180deg); transform: rotate(180deg); } .fa-rotate-270 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; -webkit-transform: rotate(270deg); -ms-transform: rotate(270deg); transform: rotate(270deg); } .fa-flip-horizontal { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; -webkit-transform: scale(-1, 1); -ms-transform: scale(-1, 1); transform: scale(-1, 1); } .fa-flip-vertical { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; -webkit-transform: scale(1, -1); -ms-transform: scale(1, -1); transform: scale(1, -1); @@ -7356,6 +7372,7 @@ .fa-twitter:before { content: "\f099"; } +.fa-facebook-f:before, .fa-facebook:before { content: "\f09a"; } @@ -7368,6 +7385,7 @@ .fa-credit-card:before { content: "\f09d"; } +.fa-feed:before, .fa-rss:before { content: "\f09e"; } @@ -8005,7 +8023,8 @@ .fa-male:before { content: "\f183"; } -.fa-gittip:before { +.fa-gittip:before, +.fa-gratipay:before { content: "\f184"; } .fa-sun-o:before { @@ -8109,7 +8128,7 @@ .fa-digg:before { content: "\f1a6"; } -.fa-pied-piper:before { +.fa-pied-piper-pp:before { content: "\f1a7"; } .fa-pied-piper-alt:before { @@ -8235,6 +8254,7 @@ content: "\f1ce"; } .fa-ra:before, +.fa-resistance:before, .fa-rebel:before { content: "\f1d0"; } @@ -8248,6 +8268,8 @@ .fa-git:before { content: "\f1d3"; } +.fa-y-combinator-square:before, +.fa-yc-square:before, .fa-hacker-news:before { content: "\f1d4"; } @@ -8416,6 +8438,657 @@ .fa-meanpath:before { content: "\f20c"; } +.fa-buysellads:before { + content: "\f20d"; +} +.fa-connectdevelop:before { + content: "\f20e"; +} +.fa-dashcube:before { + content: "\f210"; +} +.fa-forumbee:before { + content: "\f211"; +} +.fa-leanpub:before { + content: "\f212"; +} +.fa-sellsy:before { + content: "\f213"; +} +.fa-shirtsinbulk:before { + content: "\f214"; +} +.fa-simplybuilt:before { + content: "\f215"; +} +.fa-skyatlas:before { + content: "\f216"; +} +.fa-cart-plus:before { + content: "\f217"; +} +.fa-cart-arrow-down:before { + content: "\f218"; +} +.fa-diamond:before { + content: "\f219"; +} +.fa-ship:before { + content: "\f21a"; +} +.fa-user-secret:before { + content: "\f21b"; +} +.fa-motorcycle:before { + content: "\f21c"; +} +.fa-street-view:before { + content: "\f21d"; +} +.fa-heartbeat:before { + content: "\f21e"; +} +.fa-venus:before { + content: "\f221"; +} +.fa-mars:before { + content: "\f222"; +} +.fa-mercury:before { + content: "\f223"; +} +.fa-intersex:before, +.fa-transgender:before { + content: "\f224"; +} +.fa-transgender-alt:before { + content: "\f225"; +} +.fa-venus-double:before { + content: "\f226"; +} +.fa-mars-double:before { + content: "\f227"; +} +.fa-venus-mars:before { + content: "\f228"; +} +.fa-mars-stroke:before { + content: "\f229"; +} +.fa-mars-stroke-v:before { + content: "\f22a"; +} +.fa-mars-stroke-h:before { + content: "\f22b"; +} +.fa-neuter:before { + content: "\f22c"; +} +.fa-genderless:before { + content: "\f22d"; +} +.fa-facebook-official:before { + content: "\f230"; +} +.fa-pinterest-p:before { + content: "\f231"; +} +.fa-whatsapp:before { + content: "\f232"; +} +.fa-server:before { + content: "\f233"; +} +.fa-user-plus:before { + content: "\f234"; +} +.fa-user-times:before { + content: "\f235"; +} +.fa-hotel:before, +.fa-bed:before { + content: "\f236"; +} +.fa-viacoin:before { + content: "\f237"; +} +.fa-train:before { + content: "\f238"; +} +.fa-subway:before { + content: "\f239"; +} +.fa-medium:before { + content: "\f23a"; +} +.fa-yc:before, +.fa-y-combinator:before { + content: "\f23b"; +} +.fa-optin-monster:before { + content: "\f23c"; +} +.fa-opencart:before { + content: "\f23d"; +} +.fa-expeditedssl:before { + content: "\f23e"; +} +.fa-battery-4:before, +.fa-battery:before, +.fa-battery-full:before { + content: "\f240"; +} +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: "\f241"; +} +.fa-battery-2:before, +.fa-battery-half:before { + content: "\f242"; +} +.fa-battery-1:before, +.fa-battery-quarter:before { + content: "\f243"; +} +.fa-battery-0:before, +.fa-battery-empty:before { + content: "\f244"; +} +.fa-mouse-pointer:before { + content: "\f245"; +} +.fa-i-cursor:before { + content: "\f246"; +} +.fa-object-group:before { + content: "\f247"; +} +.fa-object-ungroup:before { + content: "\f248"; +} +.fa-sticky-note:before { + content: "\f249"; +} +.fa-sticky-note-o:before { + content: "\f24a"; +} +.fa-cc-jcb:before { + content: "\f24b"; +} +.fa-cc-diners-club:before { + content: "\f24c"; +} +.fa-clone:before { + content: "\f24d"; +} +.fa-balance-scale:before { + content: "\f24e"; +} +.fa-hourglass-o:before { + content: "\f250"; +} +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: "\f251"; +} +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: "\f252"; +} +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: "\f253"; +} +.fa-hourglass:before { + content: "\f254"; +} +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: "\f255"; +} +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: "\f256"; +} +.fa-hand-scissors-o:before { + content: "\f257"; +} +.fa-hand-lizard-o:before { + content: "\f258"; +} +.fa-hand-spock-o:before { + content: "\f259"; +} +.fa-hand-pointer-o:before { + content: "\f25a"; +} +.fa-hand-peace-o:before { + content: "\f25b"; +} +.fa-trademark:before { + content: "\f25c"; +} +.fa-registered:before { + content: "\f25d"; +} +.fa-creative-commons:before { + content: "\f25e"; +} +.fa-gg:before { + content: "\f260"; +} +.fa-gg-circle:before { + content: "\f261"; +} +.fa-tripadvisor:before { + content: "\f262"; +} +.fa-odnoklassniki:before { + content: "\f263"; +} +.fa-odnoklassniki-square:before { + content: "\f264"; +} +.fa-get-pocket:before { + content: "\f265"; +} +.fa-wikipedia-w:before { + content: "\f266"; +} +.fa-safari:before { + content: "\f267"; +} +.fa-chrome:before { + content: "\f268"; +} +.fa-firefox:before { + content: "\f269"; +} +.fa-opera:before { + content: "\f26a"; +} +.fa-internet-explorer:before { + content: "\f26b"; +} +.fa-tv:before, +.fa-television:before { + content: "\f26c"; +} +.fa-contao:before { + content: "\f26d"; +} +.fa-500px:before { + content: "\f26e"; +} +.fa-amazon:before { + content: "\f270"; +} +.fa-calendar-plus-o:before { + content: "\f271"; +} +.fa-calendar-minus-o:before { + content: "\f272"; +} +.fa-calendar-times-o:before { + content: "\f273"; +} +.fa-calendar-check-o:before { + content: "\f274"; +} +.fa-industry:before { + content: "\f275"; +} +.fa-map-pin:before { + content: "\f276"; +} +.fa-map-signs:before { + content: "\f277"; +} +.fa-map-o:before { + content: "\f278"; +} +.fa-map:before { + content: "\f279"; +} +.fa-commenting:before { + content: "\f27a"; +} +.fa-commenting-o:before { + content: "\f27b"; +} +.fa-houzz:before { + content: "\f27c"; +} +.fa-vimeo:before { + content: "\f27d"; +} +.fa-black-tie:before { + content: "\f27e"; +} +.fa-fonticons:before { + content: "\f280"; +} +.fa-reddit-alien:before { + content: "\f281"; +} +.fa-edge:before { + content: "\f282"; +} +.fa-credit-card-alt:before { + content: "\f283"; +} +.fa-codiepie:before { + content: "\f284"; +} +.fa-modx:before { + content: "\f285"; +} +.fa-fort-awesome:before { + content: "\f286"; +} +.fa-usb:before { + content: "\f287"; +} +.fa-product-hunt:before { + content: "\f288"; +} +.fa-mixcloud:before { + content: "\f289"; +} +.fa-scribd:before { + content: "\f28a"; +} +.fa-pause-circle:before { + content: "\f28b"; +} +.fa-pause-circle-o:before { + content: "\f28c"; +} +.fa-stop-circle:before { + content: "\f28d"; +} +.fa-stop-circle-o:before { + content: "\f28e"; +} +.fa-shopping-bag:before { + content: "\f290"; +} +.fa-shopping-basket:before { + content: "\f291"; +} +.fa-hashtag:before { + content: "\f292"; +} +.fa-bluetooth:before { + content: "\f293"; +} +.fa-bluetooth-b:before { + content: "\f294"; +} +.fa-percent:before { + content: "\f295"; +} +.fa-gitlab:before { + content: "\f296"; +} +.fa-wpbeginner:before { + content: "\f297"; +} +.fa-wpforms:before { + content: "\f298"; +} +.fa-envira:before { + content: "\f299"; +} +.fa-universal-access:before { + content: "\f29a"; +} +.fa-wheelchair-alt:before { + content: "\f29b"; +} +.fa-question-circle-o:before { + content: "\f29c"; +} +.fa-blind:before { + content: "\f29d"; +} +.fa-audio-description:before { + content: "\f29e"; +} +.fa-volume-control-phone:before { + content: "\f2a0"; +} +.fa-braille:before { + content: "\f2a1"; +} +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: "\f2a4"; +} +.fa-glide:before { + content: "\f2a5"; +} +.fa-glide-g:before { + content: "\f2a6"; +} +.fa-signing:before, +.fa-sign-language:before { + content: "\f2a7"; +} +.fa-low-vision:before { + content: "\f2a8"; +} +.fa-viadeo:before { + content: "\f2a9"; +} +.fa-viadeo-square:before { + content: "\f2aa"; +} +.fa-snapchat:before { + content: "\f2ab"; +} +.fa-snapchat-ghost:before { + content: "\f2ac"; +} +.fa-snapchat-square:before { + content: "\f2ad"; +} +.fa-pied-piper:before { + content: "\f2ae"; +} +.fa-first-order:before { + content: "\f2b0"; +} +.fa-yoast:before { + content: "\f2b1"; +} +.fa-themeisle:before { + content: "\f2b2"; +} +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: "\f2b3"; +} +.fa-fa:before, +.fa-font-awesome:before { + content: "\f2b4"; +} +.fa-handshake-o:before { + content: "\f2b5"; +} +.fa-envelope-open:before { + content: "\f2b6"; +} +.fa-envelope-open-o:before { + content: "\f2b7"; +} +.fa-linode:before { + content: "\f2b8"; +} +.fa-address-book:before { + content: "\f2b9"; +} +.fa-address-book-o:before { + content: "\f2ba"; +} +.fa-vcard:before, +.fa-address-card:before { + content: "\f2bb"; +} +.fa-vcard-o:before, +.fa-address-card-o:before { + content: "\f2bc"; +} +.fa-user-circle:before { + content: "\f2bd"; +} +.fa-user-circle-o:before { + content: "\f2be"; +} +.fa-user-o:before { + content: "\f2c0"; +} +.fa-id-badge:before { + content: "\f2c1"; +} +.fa-drivers-license:before, +.fa-id-card:before { + content: "\f2c2"; +} +.fa-drivers-license-o:before, +.fa-id-card-o:before { + content: "\f2c3"; +} +.fa-quora:before { + content: "\f2c4"; +} +.fa-free-code-camp:before { + content: "\f2c5"; +} +.fa-telegram:before { + content: "\f2c6"; +} +.fa-thermometer-4:before, +.fa-thermometer:before, +.fa-thermometer-full:before { + content: "\f2c7"; +} +.fa-thermometer-3:before, +.fa-thermometer-three-quarters:before { + content: "\f2c8"; +} +.fa-thermometer-2:before, +.fa-thermometer-half:before { + content: "\f2c9"; +} +.fa-thermometer-1:before, +.fa-thermometer-quarter:before { + content: "\f2ca"; +} +.fa-thermometer-0:before, +.fa-thermometer-empty:before { + content: "\f2cb"; +} +.fa-shower:before { + content: "\f2cc"; +} +.fa-bathtub:before, +.fa-s15:before, +.fa-bath:before { + content: "\f2cd"; +} +.fa-podcast:before { + content: "\f2ce"; +} +.fa-window-maximize:before { + content: "\f2d0"; +} +.fa-window-minimize:before { + content: "\f2d1"; +} +.fa-window-restore:before { + content: "\f2d2"; +} +.fa-times-rectangle:before, +.fa-window-close:before { + content: "\f2d3"; +} +.fa-times-rectangle-o:before, +.fa-window-close-o:before { + content: "\f2d4"; +} +.fa-bandcamp:before { + content: "\f2d5"; +} +.fa-grav:before { + content: "\f2d6"; +} +.fa-etsy:before { + content: "\f2d7"; +} +.fa-imdb:before { + content: "\f2d8"; +} +.fa-ravelry:before { + content: "\f2d9"; +} +.fa-eercast:before { + content: "\f2da"; +} +.fa-microchip:before { + content: "\f2db"; +} +.fa-snowflake-o:before { + content: "\f2dc"; +} +.fa-superpowers:before { + content: "\f2dd"; +} +.fa-wpexplorer:before { + content: "\f2de"; +} +.fa-meetup:before { + content: "\f2e0"; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} /*! * * IPython base @@ -8695,6 +9368,10 @@ max-width: 800px; margin: auto; } +div.traceback-wrapper pre.traceback { + max-height: 600px; + overflow: auto; +} /** * Primary styles * @@ -8720,6 +9397,10 @@ z-index: 100; } body > #header #header-container { + display: flex; + flex-direction: row; + justify-content: space-between; + padding: 5px; padding-bottom: 5px; padding-top: 5px; box-sizing: border-box; @@ -8751,13 +9432,16 @@ padding-top: 1px; padding-bottom: 1px; } -@media (max-width: 991px) { - #ipython_notebook { - margin-left: 10px; - } -} [dir="rtl"] #ipython_notebook { + margin-right: 10px; + margin-left: 0; +} +[dir="rtl"] #ipython_notebook.pull-left { float: right !important; + float: right; +} +.flex-spacer { + flex: 1; } #noscript { width: auto; @@ -8792,9 +9476,15 @@ input.ui-button { padding: 0.3em 0.9em; } +span#kernel_logo_widget { + margin: 0 10px; +} span#login_widget { float: right; } +[dir="rtl"] span#login_widget { + float: left; +} span#login_widget > .button, #logout { color: #333; @@ -8909,6 +9599,9 @@ overflow: auto; flex: 1; } +.modal-header { + cursor: move; +} @media (min-width: 768px) { .modal .modal-dialog { width: 700px; @@ -8929,10 +9622,23 @@ display: inline-block; margin-bottom: -4px; } -/*! -* -* IPython tree view -* +[dir="rtl"] .center-nav form.pull-left { + float: right !important; + float: right; +} +[dir="rtl"] .center-nav .navbar-text { + float: right; +} +[dir="rtl"] .navbar-inner { + text-align: right; +} +[dir="rtl"] div.text-left { + text-align: right; +} +/*! +* +* IPython tree view +* */ /* We need an invisible input field on top of the sentense*/ /* "Drag file onto the list ..." */ @@ -8945,35 +9651,43 @@ margin: 0; } .alternate_upload input.fileinput { - text-align: center; - vertical-align: middle; - display: inline; + position: absolute; + display: block; + width: 100%; + height: 100%; + overflow: hidden; + cursor: pointer; opacity: 0; z-index: 2; - width: 12ex; - margin-right: -12ex; +} +.alternate_upload .btn-xs > input.fileinput { + margin: -1px -5px; } .alternate_upload .btn-upload { + position: relative; height: 22px; } +::-webkit-file-upload-button { + cursor: pointer; +} /** * Primary styles * * Author: Jupyter Development Team */ -[dir="rtl"] #tabs li { - float: right; -} ul#tabs { margin-bottom: 4px; } -[dir="rtl"] ul#tabs { - margin-right: 0px; -} ul#tabs a { padding-top: 6px; padding-bottom: 4px; } +[dir="rtl"] ul#tabs.nav-tabs > li { + float: right; +} +[dir="rtl"] ul#tabs.nav.nav-tabs { + padding-right: 0; +} ul.breadcrumb a:focus, ul.breadcrumb a:hover { text-decoration: none; @@ -8992,15 +9706,13 @@ .list_toolbar .tree-buttons { padding-top: 1px; } -[dir="rtl"] .list_toolbar .tree-buttons { - float: left !important; -} -[dir="rtl"] .list_toolbar .pull-right { - padding-top: 1px; +[dir="rtl"] .list_toolbar .tree-buttons .pull-right { float: left !important; + float: left; } -[dir="rtl"] .list_toolbar .pull-left { - float: right !important; +[dir="rtl"] .list_toolbar .col-sm-4, +[dir="rtl"] .list_toolbar .col-sm-8 { + float: right; } .dynamic-buttons { padding-top: 3px; @@ -9056,7 +9768,7 @@ .list_item > div input { margin-right: 7px; margin-left: 14px; - vertical-align: baseline; + vertical-align: text-bottom; line-height: 22px; position: relative; top: -1px; @@ -9067,6 +9779,9 @@ vertical-align: baseline; line-height: 22px; } +[dir="rtl"] .list_item > div input { + margin-right: 0; +} .new-file input[type=checkbox] { visibility: hidden; } @@ -9082,6 +9797,14 @@ line-height: 22px; vertical-align: baseline; } +.item_modified { + margin-right: 7px; + margin-left: 7px; +} +[dir="rtl"] .item_modified.pull-right { + float: left !important; + float: left; +} .item_buttons { line-height: 1em; margin-left: -5px; @@ -9109,6 +9832,14 @@ margin-right: 7px; float: left; } +[dir="rtl"] .item_buttons.pull-right { + float: left !important; + float: left; +} +[dir="rtl"] .item_buttons .kernel-name { + margin-left: 7px; + float: right; +} .toolbar_info { height: 24px; line-height: 24px; @@ -9134,18 +9865,32 @@ background-color: transparent; font-weight: bold; } +.sort_button { + display: inline-block; + padding-left: 7px; +} +[dir="rtl"] .sort_button.pull-right { + float: left !important; + float: left; +} #tree-selector { padding-right: 0px; } -[dir="rtl"] #tree-selector a { - float: right; -} #button-select-all { min-width: 50px; } +[dir="rtl"] #button-select-all.btn { + float: right ; +} #select-all { margin-left: 7px; margin-right: 2px; + margin-top: 2px; + height: 16px; +} +[dir="rtl"] #select-all.pull-left { + float: right !important; + float: right; } .menu_icon { margin-right: 2px; @@ -9163,6 +9908,12 @@ -moz-osx-font-smoothing: grayscale; content: "\f114"; } +.folder_icon:before.fa-pull-left { + margin-right: .3em; +} +.folder_icon:before.fa-pull-right { + margin-left: .3em; +} .folder_icon:before.pull-left { margin-right: .3em; } @@ -9180,6 +9931,12 @@ position: relative; top: -1px; } +.notebook_icon:before.fa-pull-left { + margin-right: .3em; +} +.notebook_icon:before.fa-pull-right { + margin-left: .3em; +} .notebook_icon:before.pull-left { margin-right: .3em; } @@ -9198,6 +9955,12 @@ top: -1px; color: #5cb85c; } +.running_notebook_icon:before.fa-pull-left { + margin-right: .3em; +} +.running_notebook_icon:before.fa-pull-right { + margin-left: .3em; +} .running_notebook_icon:before.pull-left { margin-right: .3em; } @@ -9215,6 +9978,12 @@ position: relative; top: -2px; } +.file_icon:before.fa-pull-left { + margin-right: .3em; +} +.file_icon:before.fa-pull-right { + margin-left: .3em; +} .file_icon:before.pull-left { margin-right: .3em; } @@ -9229,8 +9998,11 @@ left: auto; right: 0; } -[dir="rtl"] #new-menu { - text-align: right; +#new-menu .dropdown-header { + font-size: 10px; + border-bottom: 1px solid #e5e5e5; + padding: 0 0 3px; + margin: -3px 20px 0; } .kernel-menu-icon { padding-right: 12px; @@ -9277,9 +10049,6 @@ #running .panel-group .panel .panel-body .list_container .list_item:last-child { border-bottom: 0px; } -[dir="rtl"] #running .col-sm-8 { - float: right !important; -} .delete-button { display: none; } @@ -9289,6 +10058,12 @@ .rename-button { display: none; } +.move-button { + display: none; +} +.download-button { + display: none; +} .shutdown-button { display: none; } @@ -9329,6 +10104,12 @@ -moz-osx-font-smoothing: grayscale; width: 20px; } +.dirty-indicator.fa-pull-left { + margin-right: .3em; +} +.dirty-indicator.fa-pull-right { + margin-left: .3em; +} .dirty-indicator.pull-left { margin-right: .3em; } @@ -9344,6 +10125,12 @@ -moz-osx-font-smoothing: grayscale; width: 20px; } +.dirty-indicator-dirty.fa-pull-left { + margin-right: .3em; +} +.dirty-indicator-dirty.fa-pull-right { + margin-left: .3em; +} .dirty-indicator-dirty.pull-left { margin-right: .3em; } @@ -9359,6 +10146,12 @@ -moz-osx-font-smoothing: grayscale; width: 20px; } +.dirty-indicator-clean.fa-pull-left { + margin-right: .3em; +} +.dirty-indicator-clean.fa-pull-right { + margin-left: .3em; +} .dirty-indicator-clean.pull-left { margin-right: .3em; } @@ -9374,6 +10167,12 @@ -moz-osx-font-smoothing: grayscale; content: "\f00c"; } +.dirty-indicator-clean:before.fa-pull-left { + margin-right: .3em; +} +.dirty-indicator-clean:before.fa-pull-right { + margin-left: .3em; +} .dirty-indicator-clean:before.pull-left { margin-right: .3em; } @@ -9418,15 +10217,133 @@ box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2); } } +.CodeMirror-dialog { + background-color: #fff; +} /*! * * IPython notebook * */ -/* CSS font colors for translated ANSI colors. */ +/* CSS font colors for translated ANSI escape sequences */ +/* The color values are a mix of + http://www.xcolors.net/dl/baskerville-ivorylight and + http://www.xcolors.net/dl/euphrasia */ +.ansi-black-fg { + color: #3E424D; +} +.ansi-black-bg { + background-color: #3E424D; +} +.ansi-black-intense-fg { + color: #282C36; +} +.ansi-black-intense-bg { + background-color: #282C36; +} +.ansi-red-fg { + color: #E75C58; +} +.ansi-red-bg { + background-color: #E75C58; +} +.ansi-red-intense-fg { + color: #B22B31; +} +.ansi-red-intense-bg { + background-color: #B22B31; +} +.ansi-green-fg { + color: #00A250; +} +.ansi-green-bg { + background-color: #00A250; +} +.ansi-green-intense-fg { + color: #007427; +} +.ansi-green-intense-bg { + background-color: #007427; +} +.ansi-yellow-fg { + color: #DDB62B; +} +.ansi-yellow-bg { + background-color: #DDB62B; +} +.ansi-yellow-intense-fg { + color: #B27D12; +} +.ansi-yellow-intense-bg { + background-color: #B27D12; +} +.ansi-blue-fg { + color: #208FFB; +} +.ansi-blue-bg { + background-color: #208FFB; +} +.ansi-blue-intense-fg { + color: #0065CA; +} +.ansi-blue-intense-bg { + background-color: #0065CA; +} +.ansi-magenta-fg { + color: #D160C4; +} +.ansi-magenta-bg { + background-color: #D160C4; +} +.ansi-magenta-intense-fg { + color: #A03196; +} +.ansi-magenta-intense-bg { + background-color: #A03196; +} +.ansi-cyan-fg { + color: #60C6C8; +} +.ansi-cyan-bg { + background-color: #60C6C8; +} +.ansi-cyan-intense-fg { + color: #258F8F; +} +.ansi-cyan-intense-bg { + background-color: #258F8F; +} +.ansi-white-fg { + color: #C5C1B4; +} +.ansi-white-bg { + background-color: #C5C1B4; +} +.ansi-white-intense-fg { + color: #A1A6B2; +} +.ansi-white-intense-bg { + background-color: #A1A6B2; +} +.ansi-default-inverse-fg { + color: #FFFFFF; +} +.ansi-default-inverse-bg { + background-color: #000000; +} +.ansi-bold { + font-weight: bold; +} +.ansi-underline { + text-decoration: underline; +} +/* The following styles are deprecated an will be removed in a future version */ .ansibold { font-weight: bold; } +.ansi-inverse { + outline: 0.5px dotted; +} /* use dark versions for foreground, to improve visibility */ .ansiblack { color: black; @@ -9504,12 +10421,20 @@ /* This acts as a spacer between cells, that is outside the border */ margin: 0px; outline: none; - border-left-width: 1px; - padding-left: 5px; - background: linear-gradient(to right, transparent -40px, transparent 1px, transparent 1px, transparent 100%); + position: relative; + overflow: visible; +} +div.cell:before { + position: absolute; + display: block; + top: -1px; + left: -1px; + width: 5px; + height: calc(100% + 2px); + content: ''; + background: transparent; } div.cell.jupyter-soft-selected { - border-left-color: #90CAF9; border-left-color: #E3F2FD; border-left-width: 1px; padding-left: 5px; @@ -9522,27 +10447,39 @@ border-color: transparent; } } -div.cell.selected { +div.cell.selected, +div.cell.selected.jupyter-soft-selected { border-color: #ababab; - border-left-width: 0px; - padding-left: 6px; - background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 5px, transparent 5px, transparent 100%); +} +div.cell.selected:before, +div.cell.selected.jupyter-soft-selected:before { + position: absolute; + display: block; + top: -1px; + left: -1px; + width: 5px; + height: calc(100% + 2px); + content: ''; + background: #42A5F5; } @media print { - div.cell.selected { + div.cell.selected, + div.cell.selected.jupyter-soft-selected { border-color: transparent; } } -div.cell.selected.jupyter-soft-selected { - border-left-width: 0; - padding-left: 6px; - background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 7px, #E3F2FD 7px, #E3F2FD 100%); -} .edit_mode div.cell.selected { border-color: #66BB6A; - border-left-width: 0px; - padding-left: 6px; - background: linear-gradient(to right, #66BB6A -40px, #66BB6A 5px, transparent 5px, transparent 100%); +} +.edit_mode div.cell.selected:before { + position: absolute; + display: block; + top: -1px; + left: -1px; + width: 5px; + height: calc(100% + 2px); + content: ''; + background: #66BB6A; } @media print { .edit_mode div.cell.selected { @@ -9738,7 +10675,9 @@ .CodeMirror-lines { /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */ /* we have set a different line-height and want this to scale with that. */ - padding: 0.4em; + /* Note that this should set vertical padding only, since CodeMirror assumes + that horizontal padding will be set on CodeMirror pre */ + padding: 0.4em 0; } .CodeMirror-linenumber { padding: 0 8px 0 4px; @@ -9748,12 +10687,25 @@ border-top-left-radius: 2px; } .CodeMirror pre { - /* In CM3 this went to 4px from 0 in CM2. We need the 0 value because of how we size */ - /* .CodeMirror-lines */ - padding: 0; + /* In CM3 this went to 4px from 0 in CM2. This sets horizontal padding only, + use .CodeMirror-lines for vertical */ + padding: 0 0.4em; border: 0; border-radius: 0; } +.CodeMirror-cursor { + border-left: 1.4px solid black; +} +@media screen and (min-width: 2138px) and (max-width: 4319px) { + .CodeMirror-cursor { + border-left: 2px solid black; + } +} +@media screen and (min-width: 4320px) { + .CodeMirror-cursor { + border-left: 4px solid black; + } +} /* Original style from softwaremaniacs.org (c) Ivan Sagalaev @@ -10006,6 +10958,9 @@ div.output_area svg.unconfined { max-width: none; } +div.output_area .mglyph > img { + max-width: none; +} /* This is needed to protect the pre formating from global settings such as that of bootstrap */ .output { @@ -10044,7 +10999,7 @@ } div.output_area pre { margin: 0; - padding: 0; + padding: 1px 0 1px 0; border: 0; vertical-align: baseline; color: black; @@ -10204,39 +11159,35 @@ .rendered_html h6:first-child { margin-top: 1em; } +.rendered_html ul:not(.list-inline), +.rendered_html ol:not(.list-inline) { + padding-left: 2em; +} .rendered_html ul { list-style: disc; - margin: 0em 2em; - padding-left: 0px; } .rendered_html ul ul { list-style: square; - margin: 0em 2em; + margin-top: 0; } .rendered_html ul ul ul { list-style: circle; - margin: 0em 2em; } .rendered_html ol { list-style: decimal; - margin: 0em 2em; - padding-left: 0px; } .rendered_html ol ol { list-style: upper-alpha; - margin: 0em 2em; + margin-top: 0; } .rendered_html ol ol ol { list-style: lower-alpha; - margin: 0em 2em; } .rendered_html ol ol ol ol { list-style: lower-roman; - margin: 0em 2em; } .rendered_html ol ol ol ol ol { list-style: decimal; - margin: 0em 2em; } .rendered_html * + ul { margin-top: 1em; @@ -10250,14 +11201,23 @@ } .rendered_html pre { margin: 1em 2em; + padding: 0px; + background-color: #fff; +} +.rendered_html code { + background-color: #eff0f1; +} +.rendered_html p code { + padding: 1px 5px; +} +.rendered_html pre code { + background-color: #fff; } .rendered_html pre, .rendered_html code { border: 0; - background-color: #fff; color: #000; font-size: 100%; - padding: 0px; } .rendered_html blockquote { margin: 1em 2em; @@ -10265,25 +11225,37 @@ .rendered_html table { margin-left: auto; margin-right: auto; - border: 1px solid black; + border: none; border-collapse: collapse; + border-spacing: 0; + color: black; + font-size: 12px; + table-layout: fixed; +} +.rendered_html thead { + border-bottom: 1px solid black; + vertical-align: bottom; } .rendered_html tr, .rendered_html th, .rendered_html td { - border: 1px solid black; - border-collapse: collapse; - margin: 1em 2em; -} -.rendered_html td, -.rendered_html th { - text-align: left; + text-align: right; vertical-align: middle; - padding: 4px; + padding: 0.5em 0.5em; + line-height: normal; + white-space: normal; + max-width: none; + border: none; } .rendered_html th { font-weight: bold; } +.rendered_html tbody tr:nth-child(odd) { + background: #f5f5f5; +} +.rendered_html tbody tr:hover { + background: rgba(66, 165, 245, 0.2); +} .rendered_html * + table { margin-top: 1em; } @@ -10310,6 +11282,15 @@ .rendered_html svg.unconfined { max-width: none; } +.rendered_html .alert { + margin-bottom: initial; +} +.rendered_html * + .alert { + margin-top: 1em; +} +[dir="rtl"] .rendered_html p { + text-align: right; +} div.text_cell { /* Old browsers */ display: -webkit-box; @@ -10363,9 +11344,18 @@ overflow-x: auto; overflow-y: hidden; } +.text_cell.rendered .rendered_html tr, +.text_cell.rendered .rendered_html th, +.text_cell.rendered .rendered_html td { + max-width: none; +} .text_cell.unrendered .text_cell_render { display: none; } +.text_cell .dropzone .input_area { + border: 2px dashed #bababa; + margin: -1px; +} .cm-header-1, .cm-header-2, .cm-header-3, @@ -10501,6 +11491,28 @@ padding-top: 1px; padding-bottom: 1px; } +.jupyter-keybindings { + padding: 1px; + line-height: 24px; + border-bottom: 1px solid gray; +} +.jupyter-keybindings input { + margin: 0; + padding: 0; + border: none; +} +.jupyter-keybindings i { + padding: 6px; +} +.well code { + background-color: #ffffff; + border-color: #ababab; + border-width: 1px; + border-style: solid; + padding: 2px; + padding-top: 1px; + padding-bottom: 1px; +} /* CSS for the cell toolbar */ .celltoolbar { border: thin solid #CFCFCF; @@ -10633,6 +11645,152 @@ margin-left: 5px; margin-right: 5px; } +.tags_button_container { + width: 100%; + display: flex; +} +.tag-container { + display: flex; + flex-direction: row; + flex-grow: 1; + overflow: hidden; + position: relative; +} +.tag-container > * { + margin: 0 4px; +} +.remove-tag-btn { + margin-left: 4px; +} +.tags-input { + display: flex; +} +.cell-tag:last-child:after { + content: ""; + position: absolute; + right: 0; + width: 40px; + height: 100%; + /* Fade to background color of cell toolbar */ + background: linear-gradient(to right, rgba(0, 0, 0, 0), #EEE); +} +.tags-input > * { + margin-left: 4px; +} +.cell-tag, +.tags-input input, +.tags-input button { + display: block; + width: 100%; + height: 32px; + padding: 6px 12px; + font-size: 13px; + line-height: 1.42857143; + color: #555555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 2px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 1px; + box-shadow: none; + width: inherit; + font-size: inherit; + height: 22px; + line-height: 22px; + padding: 0px 4px; + display: inline-block; +} +.cell-tag:focus, +.tags-input input:focus, +.tags-input button:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); +} +.cell-tag::-moz-placeholder, +.tags-input input::-moz-placeholder, +.tags-input button::-moz-placeholder { + color: #999; + opacity: 1; +} +.cell-tag:-ms-input-placeholder, +.tags-input input:-ms-input-placeholder, +.tags-input button:-ms-input-placeholder { + color: #999; +} +.cell-tag::-webkit-input-placeholder, +.tags-input input::-webkit-input-placeholder, +.tags-input button::-webkit-input-placeholder { + color: #999; +} +.cell-tag::-ms-expand, +.tags-input input::-ms-expand, +.tags-input button::-ms-expand { + border: 0; + background-color: transparent; +} +.cell-tag[disabled], +.tags-input input[disabled], +.tags-input button[disabled], +.cell-tag[readonly], +.tags-input input[readonly], +.tags-input button[readonly], +fieldset[disabled] .cell-tag, +fieldset[disabled] .tags-input input, +fieldset[disabled] .tags-input button { + background-color: #eeeeee; + opacity: 1; +} +.cell-tag[disabled], +.tags-input input[disabled], +.tags-input button[disabled], +fieldset[disabled] .cell-tag, +fieldset[disabled] .tags-input input, +fieldset[disabled] .tags-input button { + cursor: not-allowed; +} +textarea.cell-tag, +textarea.tags-input input, +textarea.tags-input button { + height: auto; +} +select.cell-tag, +select.tags-input input, +select.tags-input button { + height: 30px; + line-height: 30px; +} +textarea.cell-tag, +textarea.tags-input input, +textarea.tags-input button, +select[multiple].cell-tag, +select[multiple].tags-input input, +select[multiple].tags-input button { + height: auto; +} +.cell-tag, +.tags-input button { + padding: 0px 4px; +} +.cell-tag { + background-color: #fff; + white-space: nowrap; +} +.tags-input input[type=text]:focus { + outline: none; + box-shadow: none; + border-color: #ccc; +} .completions { position: absolute; z-index: 110; @@ -10658,10 +11816,6 @@ .completions select option.context { color: #286090; } -#kernel_logo_widget { - float: right !important; - float: right; -} #kernel_logo_widget .current_kernel_logo { display: none; margin-top: -1px; @@ -10669,6 +11823,22 @@ width: 32px; height: 32px; } +[dir="rtl"] #kernel_logo_widget { + float: left !important; + float: left; +} +.modal .modal-body .move-path { + display: flex; + flex-direction: row; + justify-content: space; + align-items: center; +} +.modal .modal-body .move-path .server-root { + padding-right: 20px; +} +.modal .modal-body .move-path .path-input { + flex: 1; +} #menubar { box-sizing: border-box; -moz-box-sizing: border-box; @@ -10689,12 +11859,42 @@ #menubar .navbar-collapse { clear: left; } +[dir="rtl"] #menubar .navbar-toggle { + float: right; +} +[dir="rtl"] #menubar .navbar-collapse { + clear: right; +} +[dir="rtl"] #menubar .navbar-nav { + float: right; +} +[dir="rtl"] #menubar .nav { + padding-right: 0px; +} +[dir="rtl"] #menubar .navbar-nav > li { + float: right; +} +[dir="rtl"] #menubar .navbar-right { + float: left !important; +} +[dir="rtl"] ul.dropdown-menu { + text-align: right; + left: auto; +} +[dir="rtl"] ul#new-menu.dropdown-menu { + right: auto; + left: 0; +} .nav-wrapper { border-bottom: 1px solid #e7e7e7; } i.menu-icon { padding-top: 4px; } +[dir="rtl"] i.menu-icon.pull-right { + float: left !important; + float: left; +} ul#help_menu li a { overflow: hidden; padding-right: 2.2em; @@ -10702,6 +11902,17 @@ ul#help_menu li a i { margin-right: -1.2em; } +[dir="rtl"] ul#help_menu li a { + padding-left: 2.2em; +} +[dir="rtl"] ul#help_menu li a i { + margin-right: 0; + margin-left: -1.2em; +} +[dir="rtl"] ul#help_menu li a i.pull-right { + float: left !important; + float: left; +} .dropdown-submenu { position: relative; } @@ -10711,6 +11922,10 @@ margin-top: -6px; margin-left: -1px; } +[dir="rtl"] .dropdown-submenu > .dropdown-menu { + right: 100%; + margin-right: -1px; +} .dropdown-submenu:hover > .dropdown-menu { display: block; } @@ -10728,12 +11943,24 @@ margin-top: 2px; margin-right: -10px; } +.dropdown-submenu > a:after.fa-pull-left { + margin-right: .3em; +} +.dropdown-submenu > a:after.fa-pull-right { + margin-left: .3em; +} .dropdown-submenu > a:after.pull-left { margin-right: .3em; } .dropdown-submenu > a:after.pull-right { margin-left: .3em; } +[dir="rtl"] .dropdown-submenu > a:after { + float: left; + content: "\f0d9"; + margin-right: 0; + margin-left: -10px; +} .dropdown-submenu:hover > a:after { color: #262626; } @@ -10749,6 +11976,10 @@ float: right; z-index: 10; } +[dir="rtl"] #notification_area { + float: left !important; + float: left; +} .indicator_area { float: right !important; float: right; @@ -10760,6 +11991,10 @@ text-align: center; width: auto; } +[dir="rtl"] .indicator_area { + float: left !important; + float: left; +} #kernel_indicator { float: right !important; float: right; @@ -10776,6 +12011,12 @@ padding-left: 5px; padding-right: 5px; } +[dir="rtl"] #kernel_indicator { + float: left !important; + float: left; + border-left: 0; + border-right: 1px solid; +} #modal_indicator { float: right !important; float: right; @@ -10787,6 +12028,10 @@ text-align: center; width: auto; } +[dir="rtl"] #modal_indicator { + float: left !important; + float: left; +} #readonly-indicator { float: right !important; float: right; @@ -10816,6 +12061,12 @@ -moz-osx-font-smoothing: grayscale; content: "\f040"; } +.edit_mode .modal_indicator:before.fa-pull-left { + margin-right: .3em; +} +.edit_mode .modal_indicator:before.fa-pull-right { + margin-left: .3em; +} .edit_mode .modal_indicator:before.pull-left { margin-right: .3em; } @@ -10831,6 +12082,12 @@ -moz-osx-font-smoothing: grayscale; content: ' '; } +.command_mode .modal_indicator:before.fa-pull-left { + margin-right: .3em; +} +.command_mode .modal_indicator:before.fa-pull-right { + margin-left: .3em; +} .command_mode .modal_indicator:before.pull-left { margin-right: .3em; } @@ -10846,6 +12103,12 @@ -moz-osx-font-smoothing: grayscale; content: "\f10c"; } +.kernel_idle_icon:before.fa-pull-left { + margin-right: .3em; +} +.kernel_idle_icon:before.fa-pull-right { + margin-left: .3em; +} .kernel_idle_icon:before.pull-left { margin-right: .3em; } @@ -10861,6 +12124,12 @@ -moz-osx-font-smoothing: grayscale; content: "\f111"; } +.kernel_busy_icon:before.fa-pull-left { + margin-right: .3em; +} +.kernel_busy_icon:before.fa-pull-right { + margin-left: .3em; +} .kernel_busy_icon:before.pull-left { margin-right: .3em; } @@ -10876,6 +12145,12 @@ -moz-osx-font-smoothing: grayscale; content: "\f1e2"; } +.kernel_dead_icon:before.fa-pull-left { + margin-right: .3em; +} +.kernel_dead_icon:before.fa-pull-right { + margin-left: .3em; +} .kernel_dead_icon:before.pull-left { margin-right: .3em; } @@ -10891,6 +12166,12 @@ -moz-osx-font-smoothing: grayscale; content: "\f127"; } +.kernel_disconnected_icon:before.fa-pull-left { + margin-right: .3em; +} +.kernel_disconnected_icon:before.fa-pull-right { + margin-left: .3em; +} .kernel_disconnected_icon:before.pull-left { margin-right: .3em; } @@ -11280,27 +12561,46 @@ flex: 1; } span.save_widget { - margin-top: 6px; + height: 30px; + margin-top: 4px; + display: flex; + justify-content: flex-start; + align-items: baseline; + width: 50%; + flex: 1; } span.save_widget span.filename { - height: 1em; + height: 100%; line-height: 1em; - padding: 3px; margin-left: 16px; border: none; font-size: 146.5%; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; border-radius: 2px; } span.save_widget span.filename:hover { background-color: #e6e6e6; } +[dir="rtl"] span.save_widget.pull-left { + float: right !important; + float: right; +} +[dir="rtl"] span.save_widget span.filename { + margin-left: 0; + margin-right: 16px; +} span.checkpoint_status, span.autosave_status { font-size: small; + white-space: nowrap; + padding: 0 5px; } @media (max-width: 767px) { span.save_widget { font-size: small; + padding: 0 0 0 5px; } span.checkpoint_status, span.autosave_status { @@ -11344,6 +12644,9 @@ margin-top: 0px; margin-left: 5px; } +.toolbar-btn-label { + margin-left: 6px; +} #maintoolbar { margin-bottom: -3px; margin-top: -8px; @@ -11364,6 +12667,10 @@ .select-xs { height: 24px; } +[dir="rtl"] .btn-group > .btn, +.btn-group-vertical > .btn { + float: right; +} .pulse, .dropdown-menu > li > a.pulse, li.pulse > a.dropdown-toggle, @@ -11513,6 +12820,10 @@ margin-left: -10px; width: 18px; } +[dir="rtl"] ul.typeahead-list i { + margin-left: 0; + margin-right: -10px; +} ul.typeahead-list { max-height: 80vh; overflow: auto; @@ -11522,6 +12833,13 @@ /* see https://github.com/jupyter/notebook/issues/559 */ white-space: normal; } +ul.typeahead-list > li > a.pull-right { + float: left !important; + float: left; +} +[dir="rtl"] .typeahead-list { + text-align: right; +} .cmd-palette .modal-body { padding: 7px; } @@ -11532,10 +12850,19 @@ outline: none; } .no-shortcut { - display: none; + min-width: 20px; + color: transparent; +} +[dir="rtl"] .no-shortcut.pull-right { + float: left !important; + float: left; +} +[dir="rtl"] .command-shortcut.pull-right { + float: left !important; + float: left; } .command-shortcut:before { - content: "(command)"; + content: "(command mode)"; padding-right: 3px; color: #777777; } @@ -11544,6 +12871,10 @@ padding-right: 3px; color: #777777; } +[dir="rtl"] .edit-shortcut.pull-right { + float: left !important; + float: left; +} #find-and-replace #replace-preview .match, #find-and-replace #replace-preview .insert { background-color: #BBDEFB; @@ -11552,6 +12883,12 @@ border-width: 1px; border-radius: 0px; } +[dir="ltr"] #find-and-replace .input-group-btn + .form-control { + border-left: none; +} +[dir="rtl"] #find-and-replace .input-group-btn + .form-control { + border-right: none; +} #find-and-replace #replace-preview .replace .match { background-color: #FFCDD2; border-color: #EF9A9A; @@ -11876,8 +13213,7 @@

problem2 (Score: 0.0 / 3.0)

-
-
+

Before you turn this problem in, make sure everything runs as expected. First, restart the kernel (in the menubar, select Kernel$\rightarrow$Restart) and then run all cells (in the menubar, select Cell$\rightarrow$Run All).

Make sure you fill in any place that says YOUR CODE HERE or "YOUR ANSWER HERE", as well as your name and collaborators below:

@@ -11900,8 +13236,7 @@

problem2 (Score: 0.0 / 3.0)

-
-
+

@@ -11910,8 +13245,7 @@

problem2 (Score: 0.0 / 3.0)

-
-
+

Consider the following piece of code:

def f(x):
@@ -11925,8 +13259,7 @@ 

problem2 (Score: 0.0 / 3.0)

-
-
+

Part A (1 point)

Describe, in words, what this code does, and how it does it.

@@ -11936,8 +13269,7 @@

Part A (1 point)
-
-
+
Student's answer Score: 0.0 / 1.0 (Top)
@@ -11952,8 +13284,7 @@

Part A (1 point)
-
-
+

Part B (2 points)

For what inputs will this function not behave as expected? What will happen?

@@ -11963,8 +13294,7 @@

Part B (2 points)
-
-
+
Student's answer Score: 0.0 / 2.0 (Top)
diff --git a/nbgrader/docs/source/user_guide/grades.csv b/nbgrader/docs/source/user_guide/grades.csv index 39830a95b..aef3cf12c 100644 --- a/nbgrader/docs/source/user_guide/grades.csv +++ b/nbgrader/docs/source/user_guide/grades.csv @@ -1,3 +1,3 @@ assignment,duedate,timestamp,student_id,last_name,first_name,email,raw_score,late_submission_penalty,score,max_score -ps1,,2015-02-02 22:58:23.948203,bitdiddle,,,,1.5,0.0,1.5,9.0 -ps1,,2015-02-01 17:28:58.749302,hacker,,,,3.0,0.0,3.0,9.0 +ps1,,2015-02-02 14:58:23.948203,bitdiddle,,,,1.5,0.0,1.5,9.0 +ps1,,2015-02-01 09:28:58.749302,hacker,,,,3.0,0.0,3.0,9.0 diff --git a/nbgrader/docs/source/user_guide/managing_assignment_files.ipynb b/nbgrader/docs/source/user_guide/managing_assignment_files.ipynb index ef3135f16..a7630ff09 100644 --- a/nbgrader/docs/source/user_guide/managing_assignment_files.ipynb +++ b/nbgrader/docs/source/user_guide/managing_assignment_files.ipynb @@ -415,9 +415,9 @@ "output_type": "stream", "text": [ "total 40\n", - "-rw-r--r-- 1 jhamrick wheel 5733 Oct 20 16:27 jupyter.png\n", - "-rw-r--r-- 1 jhamrick wheel 7884 Oct 20 16:27 problem1.ipynb\n", - "-rw-r--r-- 1 jhamrick wheel 2258 Oct 20 16:27 problem2.ipynb\n" + "-rw-r--r-- 1 jhamrick wheel 5733 Dec 15 15:53 jupyter.png\n", + "-rw-r--r-- 1 jhamrick wheel 7884 Dec 15 15:53 problem1.ipynb\n", + "-rw-r--r-- 1 jhamrick wheel 2258 Dec 15 15:53 problem2.ipynb\n" ] } ], @@ -585,8 +585,8 @@ "output_type": "stream", "text": [ "[SubmitApp | INFO] Source: /private/tmp/student_home/ps1\n", - "[SubmitApp | INFO] Destination: /tmp/exchange/example_course/inbound/jhamrick+ps1+2017-10-20 23:27:56.608573 UTC\n", - "[SubmitApp | INFO] Submitted as: example_course ps1 2017-10-20 23:27:56.608573 UTC\n" + "[SubmitApp | INFO] Destination: /tmp/exchange/example_course/inbound/jhamrick+ps1+2018-12-15 15:54:06.466332 UTC\n", + "[SubmitApp | INFO] Submitted as: example_course ps1 2018-12-15 15:54:06.466332 UTC\n" ] } ], @@ -614,9 +614,9 @@ "output_type": "stream", "text": [ "total 8\n", - "drwxr-xr-x 3 jhamrick wheel 102 Oct 20 16:27 Library\n", - "-rw-r--r-- 1 jhamrick wheel 91 Oct 20 16:27 nbgrader_config.py\n", - "drwxr-xr-x 5 jhamrick wheel 170 Oct 20 16:27 ps1\n" + "drwxr-xr-x 3 jhamrick wheel 96 Dec 15 15:54 Library\n", + "-rw-r--r-- 1 jhamrick wheel 91 Dec 15 15:54 nbgrader_config.py\n", + "drwxr-xr-x 5 jhamrick wheel 160 Dec 15 15:53 ps1\n" ] } ], @@ -644,7 +644,7 @@ "output_type": "stream", "text": [ "[ListApp | INFO] Submitted assignments:\n", - "[ListApp | INFO] example_course jhamrick ps1 2017-10-20 23:27:56.608573 UTC\n" + "[ListApp | INFO] example_course jhamrick ps1 2018-12-15 15:54:06.466332 UTC\n" ] } ], @@ -672,8 +672,8 @@ "output_type": "stream", "text": [ "[SubmitApp | INFO] Source: /private/tmp/student_home/ps1\n", - "[SubmitApp | INFO] Destination: /tmp/exchange/example_course/inbound/jhamrick+ps1+2017-10-20 23:27:59.884785 UTC\n", - "[SubmitApp | INFO] Submitted as: example_course ps1 2017-10-20 23:27:59.884785 UTC\n" + "[SubmitApp | INFO] Destination: /tmp/exchange/example_course/inbound/jhamrick+ps1+2018-12-15 15:54:08.604090 UTC\n", + "[SubmitApp | INFO] Submitted as: example_course ps1 2018-12-15 15:54:08.604090 UTC\n" ] } ], @@ -701,8 +701,8 @@ "output_type": "stream", "text": [ "[ListApp | INFO] Submitted assignments:\n", - "[ListApp | INFO] example_course jhamrick ps1 2017-10-20 23:27:56.608573 UTC\n", - "[ListApp | INFO] example_course jhamrick ps1 2017-10-20 23:27:59.884785 UTC\n" + "[ListApp | INFO] example_course jhamrick ps1 2018-12-15 15:54:06.466332 UTC\n", + "[ListApp | INFO] example_course jhamrick ps1 2018-12-15 15:54:08.604090 UTC\n" ] } ], @@ -737,7 +737,7 @@ "output_type": "stream", "text": [ "[SubmitApp | INFO] Source: /private/tmp/student_home/ps1\n", - "[SubmitApp | INFO] Destination: /tmp/exchange/example_course/inbound/jhamrick+ps1+2017-10-20 23:28:02.912676 UTC\n", + "[SubmitApp | INFO] Destination: /tmp/exchange/example_course/inbound/jhamrick+ps1+2018-12-15 15:54:10.708204 UTC\n", "[SubmitApp | WARNING] Possible missing notebooks and/or extra notebooks submitted for assignment ps1:\n", " Expected:\n", " \tproblem1.ipynb: MISSING\n", @@ -745,7 +745,7 @@ " Submitted:\n", " \tmyproblem1.ipynb: EXTRA\n", " \tproblem2.ipynb: OK\n", - "[SubmitApp | INFO] Submitted as: example_course ps1 2017-10-20 23:28:02.912676 UTC\n" + "[SubmitApp | INFO] Submitted as: example_course ps1 2018-12-15 15:54:10.708204 UTC\n" ] } ], @@ -805,7 +805,7 @@ "output_type": "stream", "text": [ "[SubmitApp | INFO] Source: /private/tmp/student_home/ps1\n", - "[SubmitApp | INFO] Destination: /tmp/exchange/example_course/inbound/jhamrick+ps1+2017-10-20 23:28:04.439223 UTC\n", + "[SubmitApp | INFO] Destination: /tmp/exchange/example_course/inbound/jhamrick+ps1+2018-12-15 15:54:11.902396 UTC\n", "[SubmitApp | CRITICAL] Assignment ps1 not submitted. There are missing notebooks for the submission:\n", " Expected:\n", " \tproblem1.ipynb: MISSING\n", @@ -931,9 +931,9 @@ "output_type": "stream", "text": [ "[ListApp | INFO] Submitted assignments:\n", - "[ListApp | INFO] example_course jhamrick ps1 2017-10-20 23:27:56.608573 UTC\n", - "[ListApp | INFO] example_course jhamrick ps1 2017-10-20 23:27:59.884785 UTC\n", - "[ListApp | INFO] example_course jhamrick ps1 2017-10-20 23:28:02.912676 UTC\n" + "[ListApp | INFO] example_course jhamrick ps1 2018-12-15 15:54:06.466332 UTC\n", + "[ListApp | INFO] example_course jhamrick ps1 2018-12-15 15:54:08.604090 UTC\n", + "[ListApp | INFO] example_course jhamrick ps1 2018-12-15 15:54:10.708204 UTC\n" ] } ], @@ -987,9 +987,9 @@ "output_type": "stream", "text": [ "total 0\n", - "drwxr-xr-x 3 jhamrick staff 102 May 31 11:10 bitdiddle\n", - "drwxr-xr-x 3 jhamrick staff 102 May 31 11:10 hacker\n", - "drwxr-xr-x 3 jhamrick staff 102 Oct 20 16:28 jhamrick\n" + "drwxr-xr-x 3 jhamrick staff 96 May 31 2017 bitdiddle\n", + "drwxr-xr-x 3 jhamrick staff 96 May 31 2017 hacker\n", + "drwxr-xr-x 3 jhamrick staff 96 Dec 15 15:54 jhamrick\n" ] } ], @@ -1012,6 +1012,18 @@ "display_name": "Python", "language": "python", "name": "python" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.4" } }, "nbformat": 4, diff --git a/nbgrader/docs/source/user_guide/managing_assignment_files_manually.ipynb b/nbgrader/docs/source/user_guide/managing_assignment_files_manually.ipynb index 49a27f39f..5acd58bea 100644 --- a/nbgrader/docs/source/user_guide/managing_assignment_files_manually.ipynb +++ b/nbgrader/docs/source/user_guide/managing_assignment_files_manually.ipynb @@ -180,8 +180,8 @@ "output_type": "stream", "text": [ "total 64\n", - "-rw-r--r-- 1 jhamrick staff 18022 May 31 11:30 notebooks.zip\n", - "-rw-r--r-- 1 jhamrick staff 8628 Oct 20 16:27 ps1_hacker_attempt_2016-01-30-20-30-10_problem1.ipynb\n" + "-rw-r--r-- 1 jhamrick staff 18022 Dec 15 14:51 notebooks.zip\n", + "-rw-r--r-- 1 jhamrick staff 8628 Dec 15 15:53 ps1_hacker_attempt_2016-01-30-20-30-10_problem1.ipynb\n" ] } ], @@ -259,8 +259,8 @@ "output_type": "stream", "text": [ "total 64\n", - "-rw-r--r-- 1 jhamrick staff 18022 May 31 11:30 notebooks.zip\n", - "-rw-r--r-- 1 jhamrick staff 8628 Oct 20 16:27 ps1_hacker_attempt_2016-01-30-20-30-10_problem1.ipynb\n" + "-rw-r--r-- 1 jhamrick staff 18022 Dec 15 14:51 notebooks.zip\n", + "-rw-r--r-- 1 jhamrick staff 8628 Dec 15 15:53 ps1_hacker_attempt_2016-01-30-20-30-10_problem1.ipynb\n" ] } ], @@ -355,10 +355,10 @@ "[ZipCollectApp | INFO] Using file extractor: ExtractorPlugin\n", "[ZipCollectApp | INFO] Using file collector: FileNameCollectorPlugin\n", "[ZipCollectApp | WARNING] Directory not found. Creating: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/downloaded/ps1/extracted\n", - "[ZipCollectApp | INFO] Extracting from: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/downloaded/ps1/archive/notebooks.zip\n", - "[ZipCollectApp | INFO] Extracting to: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/downloaded/ps1/extracted/notebooks\n", "[ZipCollectApp | INFO] Copying from: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/downloaded/ps1/archive/ps1_hacker_attempt_2016-01-30-20-30-10_problem1.ipynb\n", "[ZipCollectApp | INFO] Copying to: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/downloaded/ps1/extracted/ps1_hacker_attempt_2016-01-30-20-30-10_problem1.ipynb\n", + "[ZipCollectApp | INFO] Extracting from: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/downloaded/ps1/archive/notebooks.zip\n", + "[ZipCollectApp | INFO] Extracting to: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/downloaded/ps1/extracted/notebooks\n", "[ZipCollectApp | INFO] Start collecting files...\n", "[ZipCollectApp | INFO] Parsing file: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/downloaded/ps1/extracted/notebooks/ps1_bitdiddle_attempt_2016-01-30-15-30-10_jupyter.png\n", "[ZipCollectApp | WARNING] Skipped submission with no match information provided: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/downloaded/ps1/extracted/notebooks/ps1_bitdiddle_attempt_2016-01-30-15-30-10_jupyter.png\n", @@ -372,18 +372,18 @@ "[ZipCollectApp | INFO] Parsing file: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/downloaded/ps1/extracted/ps1_hacker_attempt_2016-01-30-20-30-10_problem1.ipynb\n", "[ZipCollectApp | WARNING] 4 files collected, 3 files skipped\n", "[ZipCollectApp | INFO] Start transfering files...\n", - "[ZipCollectApp | WARNING] Directory not found. Creating: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted_zip/hacker/ps1\n", - "[ZipCollectApp | INFO] Copying from: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/downloaded/ps1/extracted/notebooks/ps1_hacker_attempt_2016-01-30-16-30-10_problem2.ipynb\n", - "[ZipCollectApp | INFO] Copying to: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted_zip/hacker/ps1/problem2.ipynb\n", - "[ZipCollectApp | INFO] Copying from: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/downloaded/ps1/extracted/ps1_hacker_attempt_2016-01-30-20-30-10_problem1.ipynb\n", - "[ZipCollectApp | INFO] Copying to: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted_zip/hacker/ps1/problem1.ipynb\n", - "[ZipCollectApp | INFO] Creating timestamp: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted_zip/hacker/ps1/timestamp.txt\n", "[ZipCollectApp | WARNING] Directory not found. Creating: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted_zip/bitdiddle/ps1\n", "[ZipCollectApp | INFO] Copying from: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/downloaded/ps1/extracted/notebooks/ps1_bitdiddle_attempt_2016-01-30-15-30-10_problem1.ipynb\n", "[ZipCollectApp | INFO] Copying to: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted_zip/bitdiddle/ps1/problem1.ipynb\n", "[ZipCollectApp | INFO] Copying from: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/downloaded/ps1/extracted/notebooks/ps1_bitdiddle_attempt_2016-01-30-15-30-10_problem2.ipynb\n", "[ZipCollectApp | INFO] Copying to: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted_zip/bitdiddle/ps1/problem2.ipynb\n", - "[ZipCollectApp | INFO] Creating timestamp: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted_zip/bitdiddle/ps1/timestamp.txt\n" + "[ZipCollectApp | INFO] Creating timestamp: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted_zip/bitdiddle/ps1/timestamp.txt\n", + "[ZipCollectApp | WARNING] Directory not found. Creating: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted_zip/hacker/ps1\n", + "[ZipCollectApp | INFO] Copying from: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/downloaded/ps1/extracted/notebooks/ps1_hacker_attempt_2016-01-30-16-30-10_problem2.ipynb\n", + "[ZipCollectApp | INFO] Copying to: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted_zip/hacker/ps1/problem2.ipynb\n", + "[ZipCollectApp | INFO] Copying from: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/downloaded/ps1/extracted/ps1_hacker_attempt_2016-01-30-20-30-10_problem1.ipynb\n", + "[ZipCollectApp | INFO] Copying to: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted_zip/hacker/ps1/problem1.ipynb\n", + "[ZipCollectApp | INFO] Creating timestamp: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/submitted_zip/hacker/ps1/timestamp.txt\n" ] } ], @@ -410,15 +410,15 @@ "output_type": "stream", "text": [ "total 24\n", - "drwxr-xr-x 8 jhamrick staff 272 Oct 20 16:28 notebooks\n", - "-rw-r--r-- 1 jhamrick staff 8628 Oct 20 16:28 ps1_hacker_attempt_2016-01-30-20-30-10_problem1.ipynb\n", + "drwxr-xr-x 8 jhamrick staff 256 Dec 15 15:54 notebooks\n", + "-rw-r--r-- 1 jhamrick staff 8628 Dec 15 15:54 ps1_hacker_attempt_2016-01-30-20-30-10_problem1.ipynb\n", "total 88\n", - "-rw-rw-r-- 1 jhamrick staff 5733 Oct 20 16:28 ps1_bitdiddle_attempt_2016-01-30-15-30-10_jupyter.png\n", - "-rw-rw-r-- 1 jhamrick staff 7712 Oct 20 16:28 ps1_bitdiddle_attempt_2016-01-30-15-30-10_problem1.ipynb\n", - "-rw-rw-r-- 1 jhamrick staff 2228 Oct 20 16:28 ps1_bitdiddle_attempt_2016-01-30-15-30-10_problem2.ipynb\n", - "-rw-rw-r-- 1 jhamrick staff 5733 Oct 20 16:28 ps1_hacker_attempt_2016-01-30-16-30-10_jupyter.png\n", - "-rw-rw-r-- 1 jhamrick staff 8830 Oct 20 16:28 ps1_hacker_attempt_2016-01-30-16-30-10_myproblem1.ipynb\n", - "-rw-rw-r-- 1 jhamrick staff 2358 Oct 20 16:28 ps1_hacker_attempt_2016-01-30-16-30-10_problem2.ipynb\n" + "-rw-rw-r-- 1 jhamrick staff 5733 Dec 15 15:54 ps1_bitdiddle_attempt_2016-01-30-15-30-10_jupyter.png\n", + "-rw-rw-r-- 1 jhamrick staff 7712 Dec 15 15:54 ps1_bitdiddle_attempt_2016-01-30-15-30-10_problem1.ipynb\n", + "-rw-rw-r-- 1 jhamrick staff 2228 Dec 15 15:54 ps1_bitdiddle_attempt_2016-01-30-15-30-10_problem2.ipynb\n", + "-rw-rw-r-- 1 jhamrick staff 5733 Dec 15 15:54 ps1_hacker_attempt_2016-01-30-16-30-10_jupyter.png\n", + "-rw-rw-r-- 1 jhamrick staff 8830 Dec 15 15:54 ps1_hacker_attempt_2016-01-30-16-30-10_myproblem1.ipynb\n", + "-rw-rw-r-- 1 jhamrick staff 2358 Dec 15 15:54 ps1_hacker_attempt_2016-01-30-16-30-10_problem2.ipynb\n" ] } ], @@ -448,8 +448,8 @@ "output_type": "stream", "text": [ "total 0\n", - "drwxr-xr-x 3 jhamrick staff 102 Oct 20 16:28 bitdiddle\n", - "drwxr-xr-x 3 jhamrick staff 102 Oct 20 16:28 hacker\n" + "drwxr-xr-x 3 jhamrick staff 96 Dec 15 15:54 bitdiddle\n", + "drwxr-xr-x 3 jhamrick staff 96 Dec 15 15:54 hacker\n" ] } ], @@ -469,9 +469,9 @@ "output_type": "stream", "text": [ "total 40\n", - "-rw-r--r-- 1 jhamrick staff 8628 Oct 20 16:28 problem1.ipynb\n", - "-rw-rw-r-- 1 jhamrick staff 2358 Oct 20 16:28 problem2.ipynb\n", - "-rw-r--r-- 1 jhamrick staff 19 Oct 20 16:28 timestamp.txt\n" + "-rw-r--r-- 1 jhamrick staff 8628 Dec 15 15:54 problem1.ipynb\n", + "-rw-rw-r-- 1 jhamrick staff 2358 Dec 15 15:54 problem2.ipynb\n", + "-rw-r--r-- 1 jhamrick staff 19 Dec 15 15:54 timestamp.txt\n" ] } ], @@ -567,10 +567,10 @@ "[ZipCollectApp | INFO] Using file extractor: ExtractorPlugin\n", "[ZipCollectApp | INFO] Using file collector: CustomPlugin\n", "[ZipCollectApp | WARNING] Clearing existing files in /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/downloaded/ps1/extracted\n", - "[ZipCollectApp | INFO] Extracting from: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/downloaded/ps1/archive/notebooks.zip\n", - "[ZipCollectApp | INFO] Extracting to: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/downloaded/ps1/extracted/notebooks\n", "[ZipCollectApp | INFO] Copying from: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/downloaded/ps1/archive/ps1_hacker_attempt_2016-01-30-20-30-10_problem1.ipynb\n", "[ZipCollectApp | INFO] Copying to: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/downloaded/ps1/extracted/ps1_hacker_attempt_2016-01-30-20-30-10_problem1.ipynb\n", + "[ZipCollectApp | INFO] Extracting from: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/downloaded/ps1/archive/notebooks.zip\n", + "[ZipCollectApp | INFO] Extracting to: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/downloaded/ps1/extracted/notebooks\n", "[ZipCollectApp | INFO] Start collecting files...\n", "[ZipCollectApp | INFO] Parsing file: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/downloaded/ps1/extracted/notebooks/ps1_bitdiddle_attempt_2016-01-30-15-30-10_jupyter.png\n", "[ZipCollectApp | WARNING] Skipped submission with no match information provided: /Users/jhamrick/project/tools/nbgrader/nbgrader/docs/source/user_guide/downloaded/ps1/extracted/notebooks/ps1_bitdiddle_attempt_2016-01-30-15-30-10_jupyter.png\n", @@ -645,6 +645,18 @@ "display_name": "Python", "language": "python", "name": "python" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.4" } }, "nbformat": 4, diff --git a/nbgrader/docs/source/user_guide/managing_the_database.ipynb b/nbgrader/docs/source/user_guide/managing_the_database.ipynb index 2b3895053..357055381 100644 --- a/nbgrader/docs/source/user_guide/managing_the_database.ipynb +++ b/nbgrader/docs/source/user_guide/managing_the_database.ipynb @@ -245,8 +245,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "[DbStudentAddApp | INFO] Creating/updating student with ID 'bitdiddle': {'email': None, 'last_name': 'Bitdiddle', 'first_name': 'Ben'}\n", - "[DbStudentAddApp | INFO] Creating/updating student with ID 'hacker': {'last_name': 'Hacker', 'email': None, 'first_name': 'Alyssa'}\n" + "[DbStudentAddApp | INFO] Creating/updating student with ID 'bitdiddle': {'last_name': 'Bitdiddle', 'first_name': 'Ben', 'email': None}\n", + "[DbStudentAddApp | INFO] Creating/updating student with ID 'hacker': {'last_name': 'Hacker', 'first_name': 'Alyssa', 'email': None}\n" ] } ], @@ -365,6 +365,18 @@ "display_name": "Python", "language": "python", "name": "python" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.4" } }, "nbformat": 4, From 730652df4d50adcd0e82a91903e9dbfcccb5a6a7 Mon Sep 17 00:00:00 2001 From: "Jessica B. Hamrick" Date: Sat, 15 Dec 2018 16:00:52 +0000 Subject: [PATCH 08/18] Update changelog --- nbgrader/docs/source/changelog.rst | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/nbgrader/docs/source/changelog.rst b/nbgrader/docs/source/changelog.rst index c10c94e13..e3da73b29 100644 --- a/nbgrader/docs/source/changelog.rst +++ b/nbgrader/docs/source/changelog.rst @@ -8,10 +8,29 @@ A summary of changes to nbgrader. 0.5.x ----- +0.5.5 +~~~~~ + +nbgrader version 0.5.5 is a release for the Journal of Open Source education, +with the following PRs merged: + +- PR #1049: Update test builds on Travis +- PR #1047: JOSE paper bib updates +- PR #1045: Dev requirements and spelling tests +- PR #1016: Fix anaconda link +- PR #973: Create a paper on nbgrader + +Thanks to the following users who submitted PRs or reported issues that were fixed for the 0.5.5 release: + +- jedbrown +- jhamrick +- swarnava +- willingc + 0.5.4 ~~~~~ -nbgrader version 0.5.3 is a bugfix release, with the following PRs merged: +nbgrader version 0.5.4 is a bugfix release, with the following PRs merged: - PR #898: Make sure validation is run in the correct directory - PR #895: Add test and fix for parsing csv key names with spaces From 8d541809feda2fd66c63c6125f2aa3538ea089ae Mon Sep 17 00:00:00 2001 From: "Jessica B. Hamrick" Date: Sat, 15 Dec 2018 16:01:33 +0000 Subject: [PATCH 09/18] Bump version --- nbgrader/_version.py | 2 +- nbgrader/nbextensions/assignment_list/main.js | 2 +- nbgrader/nbextensions/validate_assignment/main.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/nbgrader/_version.py b/nbgrader/_version.py index 1c2f676d0..407b14ae2 100644 --- a/nbgrader/_version.py +++ b/nbgrader/_version.py @@ -1,2 +1,2 @@ -version_info = (0, 5, 5, 'dev') +version_info = (0, 5, 5) __version__ = '.'.join(map(str, version_info)) \ No newline at end of file diff --git a/nbgrader/nbextensions/assignment_list/main.js b/nbgrader/nbextensions/assignment_list/main.js index d9079ce1f..7c2843102 100644 --- a/nbgrader/nbextensions/assignment_list/main.js +++ b/nbgrader/nbextensions/assignment_list/main.js @@ -6,7 +6,7 @@ define([ ], function(Jupyter, $, utils, AssignmentList) { "use strict"; - var nbgrader_version = "0.5.5.dev"; + var nbgrader_version = "0.5.5"; var ajax = utils.ajax || $.ajax; // Notebook v4.3.1 enabled xsrf so use notebooks ajax that includes the diff --git a/nbgrader/nbextensions/validate_assignment/main.js b/nbgrader/nbextensions/validate_assignment/main.js index eccaecf21..7556b6f3c 100644 --- a/nbgrader/nbextensions/validate_assignment/main.js +++ b/nbgrader/nbextensions/validate_assignment/main.js @@ -7,7 +7,7 @@ define([ ], function ($, Jupyter, dialog, utils) { "use strict"; - var nbgrader_version = "0.5.5.dev"; + var nbgrader_version = "0.5.5"; var ajax = utils.ajax || $.ajax; // Notebook v4.3.1 enabled xsrf so use notebooks ajax that includes the From 8e76fc894e18171939d6318158fe5ca7822f99f1 Mon Sep 17 00:00:00 2001 From: "Jessica B. Hamrick" Date: Sat, 15 Dec 2018 16:06:33 +0000 Subject: [PATCH 10/18] Update spelling wordlist --- nbgrader/docs/source/spelling_wordlist.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nbgrader/docs/source/spelling_wordlist.txt b/nbgrader/docs/source/spelling_wordlist.txt index d520b2375..dca02b5b1 100644 --- a/nbgrader/docs/source/spelling_wordlist.txt +++ b/nbgrader/docs/source/spelling_wordlist.txt @@ -114,6 +114,7 @@ I’m I’ve jcsutherland jdfreder +jedbrown jhamrick jilljenn jklymak @@ -209,6 +210,7 @@ subdirectory suchow suprocesses svurens +swarnava sys systemwide Szepi From c3550345c674ebf9e395b62927e0100694d1f780 Mon Sep 17 00:00:00 2001 From: "Jessica B. Hamrick" Date: Sat, 15 Dec 2018 16:07:53 +0000 Subject: [PATCH 11/18] Final docs regeneration --- .../managing_assignment_files.ipynb | 40 +++++++++---------- .../managing_assignment_files_manually.ipynb | 30 +++++++------- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/nbgrader/docs/source/user_guide/managing_assignment_files.ipynb b/nbgrader/docs/source/user_guide/managing_assignment_files.ipynb index a7630ff09..60e77ddf5 100644 --- a/nbgrader/docs/source/user_guide/managing_assignment_files.ipynb +++ b/nbgrader/docs/source/user_guide/managing_assignment_files.ipynb @@ -415,9 +415,9 @@ "output_type": "stream", "text": [ "total 40\n", - "-rw-r--r-- 1 jhamrick wheel 5733 Dec 15 15:53 jupyter.png\n", - "-rw-r--r-- 1 jhamrick wheel 7884 Dec 15 15:53 problem1.ipynb\n", - "-rw-r--r-- 1 jhamrick wheel 2258 Dec 15 15:53 problem2.ipynb\n" + "-rw-r--r-- 1 jhamrick wheel 5733 Dec 15 16:02 jupyter.png\n", + "-rw-r--r-- 1 jhamrick wheel 7884 Dec 15 16:02 problem1.ipynb\n", + "-rw-r--r-- 1 jhamrick wheel 2258 Dec 15 16:02 problem2.ipynb\n" ] } ], @@ -585,8 +585,8 @@ "output_type": "stream", "text": [ "[SubmitApp | INFO] Source: /private/tmp/student_home/ps1\n", - "[SubmitApp | INFO] Destination: /tmp/exchange/example_course/inbound/jhamrick+ps1+2018-12-15 15:54:06.466332 UTC\n", - "[SubmitApp | INFO] Submitted as: example_course ps1 2018-12-15 15:54:06.466332 UTC\n" + "[SubmitApp | INFO] Destination: /tmp/exchange/example_course/inbound/jhamrick+ps1+2018-12-15 16:02:34.862655 UTC\n", + "[SubmitApp | INFO] Submitted as: example_course ps1 2018-12-15 16:02:34.862655 UTC\n" ] } ], @@ -614,9 +614,9 @@ "output_type": "stream", "text": [ "total 8\n", - "drwxr-xr-x 3 jhamrick wheel 96 Dec 15 15:54 Library\n", - "-rw-r--r-- 1 jhamrick wheel 91 Dec 15 15:54 nbgrader_config.py\n", - "drwxr-xr-x 5 jhamrick wheel 160 Dec 15 15:53 ps1\n" + "drwxr-xr-x 3 jhamrick wheel 96 Dec 15 16:02 Library\n", + "-rw-r--r-- 1 jhamrick wheel 91 Dec 15 16:02 nbgrader_config.py\n", + "drwxr-xr-x 5 jhamrick wheel 160 Dec 15 16:02 ps1\n" ] } ], @@ -644,7 +644,7 @@ "output_type": "stream", "text": [ "[ListApp | INFO] Submitted assignments:\n", - "[ListApp | INFO] example_course jhamrick ps1 2018-12-15 15:54:06.466332 UTC\n" + "[ListApp | INFO] example_course jhamrick ps1 2018-12-15 16:02:34.862655 UTC\n" ] } ], @@ -672,8 +672,8 @@ "output_type": "stream", "text": [ "[SubmitApp | INFO] Source: /private/tmp/student_home/ps1\n", - "[SubmitApp | INFO] Destination: /tmp/exchange/example_course/inbound/jhamrick+ps1+2018-12-15 15:54:08.604090 UTC\n", - "[SubmitApp | INFO] Submitted as: example_course ps1 2018-12-15 15:54:08.604090 UTC\n" + "[SubmitApp | INFO] Destination: /tmp/exchange/example_course/inbound/jhamrick+ps1+2018-12-15 16:02:37.143863 UTC\n", + "[SubmitApp | INFO] Submitted as: example_course ps1 2018-12-15 16:02:37.143863 UTC\n" ] } ], @@ -701,8 +701,8 @@ "output_type": "stream", "text": [ "[ListApp | INFO] Submitted assignments:\n", - "[ListApp | INFO] example_course jhamrick ps1 2018-12-15 15:54:06.466332 UTC\n", - "[ListApp | INFO] example_course jhamrick ps1 2018-12-15 15:54:08.604090 UTC\n" + "[ListApp | INFO] example_course jhamrick ps1 2018-12-15 16:02:34.862655 UTC\n", + "[ListApp | INFO] example_course jhamrick ps1 2018-12-15 16:02:37.143863 UTC\n" ] } ], @@ -737,7 +737,7 @@ "output_type": "stream", "text": [ "[SubmitApp | INFO] Source: /private/tmp/student_home/ps1\n", - "[SubmitApp | INFO] Destination: /tmp/exchange/example_course/inbound/jhamrick+ps1+2018-12-15 15:54:10.708204 UTC\n", + "[SubmitApp | INFO] Destination: /tmp/exchange/example_course/inbound/jhamrick+ps1+2018-12-15 16:02:39.434528 UTC\n", "[SubmitApp | WARNING] Possible missing notebooks and/or extra notebooks submitted for assignment ps1:\n", " Expected:\n", " \tproblem1.ipynb: MISSING\n", @@ -745,7 +745,7 @@ " Submitted:\n", " \tmyproblem1.ipynb: EXTRA\n", " \tproblem2.ipynb: OK\n", - "[SubmitApp | INFO] Submitted as: example_course ps1 2018-12-15 15:54:10.708204 UTC\n" + "[SubmitApp | INFO] Submitted as: example_course ps1 2018-12-15 16:02:39.434528 UTC\n" ] } ], @@ -805,7 +805,7 @@ "output_type": "stream", "text": [ "[SubmitApp | INFO] Source: /private/tmp/student_home/ps1\n", - "[SubmitApp | INFO] Destination: /tmp/exchange/example_course/inbound/jhamrick+ps1+2018-12-15 15:54:11.902396 UTC\n", + "[SubmitApp | INFO] Destination: /tmp/exchange/example_course/inbound/jhamrick+ps1+2018-12-15 16:02:40.722143 UTC\n", "[SubmitApp | CRITICAL] Assignment ps1 not submitted. There are missing notebooks for the submission:\n", " Expected:\n", " \tproblem1.ipynb: MISSING\n", @@ -931,9 +931,9 @@ "output_type": "stream", "text": [ "[ListApp | INFO] Submitted assignments:\n", - "[ListApp | INFO] example_course jhamrick ps1 2018-12-15 15:54:06.466332 UTC\n", - "[ListApp | INFO] example_course jhamrick ps1 2018-12-15 15:54:08.604090 UTC\n", - "[ListApp | INFO] example_course jhamrick ps1 2018-12-15 15:54:10.708204 UTC\n" + "[ListApp | INFO] example_course jhamrick ps1 2018-12-15 16:02:34.862655 UTC\n", + "[ListApp | INFO] example_course jhamrick ps1 2018-12-15 16:02:37.143863 UTC\n", + "[ListApp | INFO] example_course jhamrick ps1 2018-12-15 16:02:39.434528 UTC\n" ] } ], @@ -989,7 +989,7 @@ "total 0\n", "drwxr-xr-x 3 jhamrick staff 96 May 31 2017 bitdiddle\n", "drwxr-xr-x 3 jhamrick staff 96 May 31 2017 hacker\n", - "drwxr-xr-x 3 jhamrick staff 96 Dec 15 15:54 jhamrick\n" + "drwxr-xr-x 3 jhamrick staff 96 Dec 15 16:02 jhamrick\n" ] } ], diff --git a/nbgrader/docs/source/user_guide/managing_assignment_files_manually.ipynb b/nbgrader/docs/source/user_guide/managing_assignment_files_manually.ipynb index 5acd58bea..73a2fbbd3 100644 --- a/nbgrader/docs/source/user_guide/managing_assignment_files_manually.ipynb +++ b/nbgrader/docs/source/user_guide/managing_assignment_files_manually.ipynb @@ -181,7 +181,7 @@ "text": [ "total 64\n", "-rw-r--r-- 1 jhamrick staff 18022 Dec 15 14:51 notebooks.zip\n", - "-rw-r--r-- 1 jhamrick staff 8628 Dec 15 15:53 ps1_hacker_attempt_2016-01-30-20-30-10_problem1.ipynb\n" + "-rw-r--r-- 1 jhamrick staff 8628 Dec 15 16:01 ps1_hacker_attempt_2016-01-30-20-30-10_problem1.ipynb\n" ] } ], @@ -260,7 +260,7 @@ "text": [ "total 64\n", "-rw-r--r-- 1 jhamrick staff 18022 Dec 15 14:51 notebooks.zip\n", - "-rw-r--r-- 1 jhamrick staff 8628 Dec 15 15:53 ps1_hacker_attempt_2016-01-30-20-30-10_problem1.ipynb\n" + "-rw-r--r-- 1 jhamrick staff 8628 Dec 15 16:01 ps1_hacker_attempt_2016-01-30-20-30-10_problem1.ipynb\n" ] } ], @@ -410,15 +410,15 @@ "output_type": "stream", "text": [ "total 24\n", - "drwxr-xr-x 8 jhamrick staff 256 Dec 15 15:54 notebooks\n", - "-rw-r--r-- 1 jhamrick staff 8628 Dec 15 15:54 ps1_hacker_attempt_2016-01-30-20-30-10_problem1.ipynb\n", + "drwxr-xr-x 8 jhamrick staff 256 Dec 15 16:02 notebooks\n", + "-rw-r--r-- 1 jhamrick staff 8628 Dec 15 16:02 ps1_hacker_attempt_2016-01-30-20-30-10_problem1.ipynb\n", "total 88\n", - "-rw-rw-r-- 1 jhamrick staff 5733 Dec 15 15:54 ps1_bitdiddle_attempt_2016-01-30-15-30-10_jupyter.png\n", - "-rw-rw-r-- 1 jhamrick staff 7712 Dec 15 15:54 ps1_bitdiddle_attempt_2016-01-30-15-30-10_problem1.ipynb\n", - "-rw-rw-r-- 1 jhamrick staff 2228 Dec 15 15:54 ps1_bitdiddle_attempt_2016-01-30-15-30-10_problem2.ipynb\n", - "-rw-rw-r-- 1 jhamrick staff 5733 Dec 15 15:54 ps1_hacker_attempt_2016-01-30-16-30-10_jupyter.png\n", - "-rw-rw-r-- 1 jhamrick staff 8830 Dec 15 15:54 ps1_hacker_attempt_2016-01-30-16-30-10_myproblem1.ipynb\n", - "-rw-rw-r-- 1 jhamrick staff 2358 Dec 15 15:54 ps1_hacker_attempt_2016-01-30-16-30-10_problem2.ipynb\n" + "-rw-rw-r-- 1 jhamrick staff 5733 Dec 15 16:02 ps1_bitdiddle_attempt_2016-01-30-15-30-10_jupyter.png\n", + "-rw-rw-r-- 1 jhamrick staff 7712 Dec 15 16:02 ps1_bitdiddle_attempt_2016-01-30-15-30-10_problem1.ipynb\n", + "-rw-rw-r-- 1 jhamrick staff 2228 Dec 15 16:02 ps1_bitdiddle_attempt_2016-01-30-15-30-10_problem2.ipynb\n", + "-rw-rw-r-- 1 jhamrick staff 5733 Dec 15 16:02 ps1_hacker_attempt_2016-01-30-16-30-10_jupyter.png\n", + "-rw-rw-r-- 1 jhamrick staff 8830 Dec 15 16:02 ps1_hacker_attempt_2016-01-30-16-30-10_myproblem1.ipynb\n", + "-rw-rw-r-- 1 jhamrick staff 2358 Dec 15 16:02 ps1_hacker_attempt_2016-01-30-16-30-10_problem2.ipynb\n" ] } ], @@ -448,8 +448,8 @@ "output_type": "stream", "text": [ "total 0\n", - "drwxr-xr-x 3 jhamrick staff 96 Dec 15 15:54 bitdiddle\n", - "drwxr-xr-x 3 jhamrick staff 96 Dec 15 15:54 hacker\n" + "drwxr-xr-x 3 jhamrick staff 96 Dec 15 16:02 bitdiddle\n", + "drwxr-xr-x 3 jhamrick staff 96 Dec 15 16:02 hacker\n" ] } ], @@ -469,9 +469,9 @@ "output_type": "stream", "text": [ "total 40\n", - "-rw-r--r-- 1 jhamrick staff 8628 Dec 15 15:54 problem1.ipynb\n", - "-rw-rw-r-- 1 jhamrick staff 2358 Dec 15 15:54 problem2.ipynb\n", - "-rw-r--r-- 1 jhamrick staff 19 Dec 15 15:54 timestamp.txt\n" + "-rw-r--r-- 1 jhamrick staff 8628 Dec 15 16:02 problem1.ipynb\n", + "-rw-rw-r-- 1 jhamrick staff 2358 Dec 15 16:02 problem2.ipynb\n", + "-rw-r--r-- 1 jhamrick staff 19 Dec 15 16:02 timestamp.txt\n" ] } ], From 9495471964c15906be3ea8b4c7ea11a2e85fd7e4 Mon Sep 17 00:00:00 2001 From: "Jessica B. Hamrick" Date: Sat, 15 Dec 2018 17:43:24 +0000 Subject: [PATCH 12/18] Add cov-core back to dependencies --- dev-requirements-windows.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dev-requirements-windows.txt b/dev-requirements-windows.txt index 94550d1f8..06ac8432e 100644 --- a/dev-requirements-windows.txt +++ b/dev-requirements-windows.txt @@ -5,4 +5,5 @@ coverage selenium==3.6.0 invoke sphinx -codecov \ No newline at end of file +codecov +cov-core From 2dec533bd913920b0d36a991dcae199dc9387974 Mon Sep 17 00:00:00 2001 From: "Jessica B. Hamrick" Date: Sat, 15 Dec 2018 19:21:04 +0000 Subject: [PATCH 13/18] Don't fail on coverage combine --- tasks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks.py b/tasks.py index cb9e74790..9ac081a92 100644 --- a/tasks.py +++ b/tasks.py @@ -99,7 +99,7 @@ def _run_tests(ctx, mark=None, skip=None, junitxml=None): if not WINDOWS: run(ctx, "ls -a .coverage*") - run(ctx, "coverage combine") + run(ctx, "coverage combine || true") @task From 8a14462657bdcbf44b815afb70a1c15ce957c036 Mon Sep 17 00:00:00 2001 From: "Jessica B. Hamrick" Date: Sat, 15 Dec 2018 19:39:14 +0000 Subject: [PATCH 14/18] Don't rely on https://github.com/minrk/travis-wheels, which is now deprecated --- tasks.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/tasks.py b/tasks.py index 9ac081a92..17d0d2e00 100644 --- a/tasks.py +++ b/tasks.py @@ -143,10 +143,7 @@ def install(ctx, group): cmd = 'pip install -r dev-requirements.txt .' else: cmd = 'pip install -r dev-requirements.txt -e .' - - # clone travis wheels repo to make installing requirements easier - run(ctx, 'git clone --quiet --depth 1 https://github.com/minrk/travis-wheels ~/travis-wheels') - run(ctx, 'PIP_FIND_LINKS=~/travis-wheels/wheelhouse {}'.format(cmd)) + run(ctx, cmd) ns = collection.Collection( From 8e0e6b84168a53987bd1fee772f823b1727c7ce3 Mon Sep 17 00:00:00 2001 From: "Jessica B. Hamrick" Date: Sat, 15 Dec 2018 19:57:08 +0000 Subject: [PATCH 15/18] Pin ipython to version 6.2.1 --- setup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 0f16efb00..1265f9345 100644 --- a/setup.py +++ b/setup.py @@ -102,7 +102,8 @@ "six>=1.9", "requests", "jsonschema", - "alembic" + "alembic", + "ipython==6.2.1" ] ) From 9fdc758b694eb0ebbd18c3dde16e39062a2bc441 Mon Sep 17 00:00:00 2001 From: "Jessica B. Hamrick" Date: Sat, 15 Dec 2018 20:02:14 +0000 Subject: [PATCH 16/18] Don't upgrade pip --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 86965ec95..3a0fea84b 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -33,7 +33,7 @@ install: - cmd: python --version - cmd: python -c "import struct; print(struct.calcsize('P') * 8)" - - cmd: pip install -U pip wheel + - cmd: pip install -U wheel - cmd: pip install -r dev-requirements-windows.txt . # Install and early check enable extensions before the actual tests From a0bce89a1aaeebd7cf6e6379b81598675c17a694 Mon Sep 17 00:00:00 2001 From: "Jessica B. Hamrick" Date: Sat, 15 Dec 2018 20:51:14 +0000 Subject: [PATCH 17/18] Require at most ipython 6.2.1 rather than being strict --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 1265f9345..a9686a2c6 100644 --- a/setup.py +++ b/setup.py @@ -103,7 +103,7 @@ "requests", "jsonschema", "alembic", - "ipython==6.2.1" + "ipython<=6.2.1" ] ) From faed0e4c0bf3bbe6dce22a9e9f3b5fdc8c23d46b Mon Sep 17 00:00:00 2001 From: "Jessica B. Hamrick" Date: Sat, 15 Dec 2018 20:53:57 +0000 Subject: [PATCH 18/18] Also pin version of jupyter-console --- setup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index a9686a2c6..d9b2a1fb1 100644 --- a/setup.py +++ b/setup.py @@ -103,7 +103,8 @@ "requests", "jsonschema", "alembic", - "ipython<=6.2.1" + "ipython<=6.2.1", + "jupyter-console<=5.2.0" ] )