from pathlib import Path from typing import Optional import nbconvert import nbformat from IPython import InteractiveShell from IPython.core.magics import CodeMagics from black import format_str, FileMode from lektor import build_programs from lektor.db import Attachment from lektor.pluginsystem import Plugin from nbconvert.preprocessors import ExecutePreprocessor log = logging.getLogger(__name__) IPYTHON_SHELL = InteractiveShell() _BLACKIFY = partial(format_str, mode=FileMode(line_length=79)) _already_built = set() # hack: prevent duplicate builds after clean PLUGIN_KEY = "JUPYTER_PREPROCESS" config = { "url.source": None, "metadata.blackify": True, "metadata.execute": True, # todo figure out how jupyter does these things and play together with it "metadata.allow_errors": False, "metadata.full_traceback": True, "cell.source": "\n\n```{language}\n{cell.source}\n```", # TODO figure out, why node.data[text/plain] is correct (no quotes around key!1?!?) "node.execute_result": "```text\n[result]\n{node.data[text/plain]}\n```", "node.stream": "```text\n[{node.name}]\n{node.text}\n```",
import pandas as pd import numpy as np from IPython import InteractiveShell inter = InteractiveShell() pd.options.display.max_columns = 50 college = pd.read_csv('data/college.csv') college2 = college.set_index('STABBR') print(college2.index.is_monotonic) college3 = college2.sort_index() print(college3.index.is_monotonic) print(inter.get_ipython().run_line_magic('timeit', "college[college['STABBR'] == 'TX']")) print(inter.get_ipython().run_line_magic('timeit', "college2.loc['TX']")) print(inter.get_ipython().run_line_magic('timeit', "college3.loc['TX']")) college_unique = college.set_index('INSTNM') print(college_unique.index.is_unique) college[college['INSTNM'] == 'Stanford University'] print(college_unique.loc['Stanford University']) print(inter.get_ipython().run_line_magic( 'timeit', "college[college['INSTNM'] == 'Stanford University']")) print(inter.get_ipython().run_line_magic( 'timeit', "college_unique.loc['Stanford University']")) college.index = college['CITY'] + ', ' + college['STABBR'] college = college.sort_index() print(college.head())
def new(self): """Create a new shell.""" self._tmpdir = tempfile.TemporaryDirectory() self.tmpdir = os.path.realpath(self._tmpdir.name) self.update_user_ns(Shell=self) self.shell = InteractiveShell(user_ns=self.user_ns)