Skip to content
This repository was archived by the owner on Feb 18, 2025. It is now read-only.

Commit 98d9019

Browse files
authored
Merge pull request neptyneco#6 from neptyneco/sync-with-upstream-10-10
Sync with upstream
2 parents d52fffb + 364db72 commit 98d9019

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+422
-403
lines changed

neptyne_kernel/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
def init_notebook(api_key: str = "", api_host="https://app.neptyne.com") -> None:
1+
def init_notebook(api_key: str = "", api_host: str = "https://app.neptyne.com") -> None:
22
import os
33

44
from IPython import get_ipython

neptyne_kernel/cell_execution_graph.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from collections import defaultdict
22
from typing import TYPE_CHECKING, Any, Sequence
33

4-
54
from .cell_address import Address
65
from .ops import ClearOp, ExecOp
76

@@ -16,8 +15,8 @@ def __init__(
1615
cell_ids: set[Address],
1716
pre_clear: Sequence[Address] | None,
1817
) -> None:
19-
from graphlib import CycleError, TopologicalSorter
2018
import networkx as nx
19+
from graphlib import CycleError, TopologicalSorter
2120

2221
self.dash = dash
2322
self.cell_ids = cell_ids

neptyne_kernel/cell_range.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,12 @@
4242
from .transformation import Transformation, is_insert_delete_unbounded
4343

4444
if TYPE_CHECKING:
45+
from geopandas import GeoDataFrame
46+
4547
from .dash import Dash
4648
from .dash_ref import DashRef
4749
from .formulas.helpers import SimpleCellValue
4850
from .gsheets_api import GSheetRef
49-
from geopandas import GeoDataFrame
5051

5152

5253
T = TypeVar("T")
@@ -850,9 +851,15 @@ def __setitem__(
850851
self.ref.setitem(key, value)
851852

852853
def __iter__(self) -> Iterator:
853-
from .dash_ref import DashRef
854+
from .gsheets_api import GSheetRef
855+
856+
if isinstance(self.ref, GSheetRef):
857+
# self.ref can be a GSheetRef in case of sheets. That's broken there but hard to fix.
858+
# We can however cheaply create the right cell range here and let that do the work.
859+
gsheet_range = CellRangeGSheet(self.ref)
860+
yield from gsheet_range
861+
return
854862

855-
assert isinstance(self.ref, DashRef)
856863
# if we have -1 in the range, loop through it even if it is one dimensional:
857864
max_col, max_row = self.ref.current_max_col_row()
858865
if max_row == -1 or max_col == -1:

neptyne_kernel/dash.py

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939

4040
import dateutil.parser
4141
import dateutil.tz
42+
import ipykernel
4243
import numpy as np
4344
import pandas as pd
4445
import plotly.io as pio
@@ -84,12 +85,6 @@
8485
tokenize_with_ranges,
8586
try_parse_capitalized_range,
8687
)
87-
from .spreadsheet_datetime import SpreadsheetDateTimeBase
88-
from .spreadsheet_error import (
89-
PYTHON_ERROR,
90-
SheetDoesNotExist,
91-
SpreadsheetError,
92-
)
9388
from .get_ipython_mockable import get_ipython_mockable
9489
from .gsheets_api import (
9590
GSheetNamedRanges,
@@ -99,6 +94,7 @@
9994
replace_refs,
10095
)
10196
from .insert_delete_helper import add_delete_cells_helper
97+
from .json_tools import json_clean
10298
from .kernel_runtime import get_kernel, send_sync_request
10399
from .linter import TyneCachingCompiler
104100
from .mime_handling import (
@@ -157,6 +153,12 @@
157153
from .renderers import InlineWrapper, WithSourceMixin
158154
from .session_info import NeptyneSessionInfo
159155
from .sheet_api import NeptyneSheetCollection
156+
from .spreadsheet_datetime import SpreadsheetDateTimeBase
157+
from .spreadsheet_error import (
158+
PYTHON_ERROR,
159+
SheetDoesNotExist,
160+
SpreadsheetError,
161+
)
160162
from .transformation import (
161163
Transformation,
162164
insert_delete_content_to_sheet_transform,
@@ -196,16 +198,13 @@
196198
widget_name_from_code,
197199
widget_registry,
198200
)
199-
from .json_tools import json_clean
200-
201-
import ipykernel
202201

203202
IPYKERNEL_MAJOR_VERSION = int(ipykernel.__version__.split(".")[0])
204203

205204
try:
206205
from .formulas.sheets import SvgImage
207206
except ImportError:
208-
SvgImage = None
207+
SvgImage = None # type: ignore
209208

210209
try:
211210
from shapely.geometry.base import BaseGeometry as ShapelyBaseGeometry
@@ -249,7 +248,7 @@
249248
pio.templates.default = "plotly"
250249

251250

252-
def get_parent_shim(self: Kernel, channel: str | None = None):
251+
def get_parent_shim(self: Kernel, channel: str | None = None) -> dict:
253252
return self._parent_header
254253

255254

@@ -531,7 +530,7 @@ def __init__(self, silent: bool = False) -> None:
531530
ip.SyntaxTB = DashSyntaxTB(color_scheme="LightBG", parent=parent)
532531

533532
try:
534-
import matplotlib
533+
import matplotlib # noqa: F401
535534

536535
ip.run_line_magic("matplotlib", "inline")
537536
except ImportError:
@@ -876,6 +875,8 @@ def add_delete_cells_internal(
876875
)
877876

878877
def undo_msg(self, msg_type: MessageTypes, payload: dict) -> dict[str, Any]:
878+
if not self.kernel.session:
879+
return {}
879880
msg = self.kernel.session.msg(msg_type.value, payload)
880881
parent_header = self.shell.parent_header["header"]
881882
msg["header"]["msg_id"] = parent_header["msg_id"]
@@ -959,13 +960,14 @@ def load_values(self, sheets: TyneSheets) -> None:
959960
def broadcast_init_stage(self, state: KernelInitState) -> None:
960961
parent = self.kernel.get_parent("shell")
961962
parent["header"]["init_phase"] = state.value
962-
self.kernel.session.send(
963-
self.kernel.iopub_socket,
964-
"status",
965-
{"execution_state": "busy"},
966-
parent=parent,
967-
ident=f"kernel.{self.kernel.ident}.status".encode(),
968-
)
963+
if self.kernel.session:
964+
self.kernel.session.send(
965+
self.kernel.iopub_socket,
966+
"status",
967+
{"execution_state": "busy"},
968+
parent=parent,
969+
ident=f"kernel.{self.kernel.ident}.status".encode(),
970+
)
969971

970972
def pip_install(self, requirements_txt: str, silent: bool = False) -> None:
971973
neptyne_pip_install(requirements_txt, silent=silent)

neptyne_kernel/expression_compiler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@
2929
replace_negative_bounds_with_grid_size,
3030
)
3131
from .formula_names import FORMULA_NAMES
32-
from .spreadsheet_error import SheetDoesNotExist
3332
from .neptyne_protocol import Dimension, WidgetRegistry
33+
from .spreadsheet_error import SheetDoesNotExist
3434
from .transformation import Transformation
3535

3636
N_RE = re.compile(r"N_[ \t]*\[(?P<addr>\-?\d+(?:[ \t]*,[ \t]*((\-?\d+)|\'\w+\'))+)\]")

neptyne_kernel/formulas/database.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
from statistics import StatisticsError, mean, pstdev, pvariance, stdev, variance
55

66
from ..cell_range import CellRange
7-
from .helpers import Numeric, SimpleCellValue, criteria_func, parse_criteria
87
from ..spreadsheet_error import NUM_ERROR, VALUE_ERROR
8+
from .helpers import Numeric, SimpleCellValue, criteria_func, parse_criteria
99

1010
DBField = int | str
1111

neptyne_kernel/formulas/database_test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import pytest
22

33
from ..cell_range import CellRange
4+
from ..spreadsheet_error import NUM_ERROR, VALUE_ERROR
45
from .database import (
56
DAVERAGE,
67
DCOUNT,
@@ -15,7 +16,6 @@
1516
DVAR,
1617
DVARP,
1718
)
18-
from ..spreadsheet_error import NUM_ERROR, VALUE_ERROR
1919
from .test_helpers import approx_or_error
2020

2121
DAVERAGE_RANGE = CellRange(

neptyne_kernel/formulas/date_time.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,15 @@
66
from numpy import busday_count, busday_offset
77

88
from ..cell_range import CellRange
9+
from ..spreadsheet_datetime import (
10+
EPOCH_FIRST_YEAR,
11+
SEC_IN_HOUR,
12+
SpreadsheetDate,
13+
SpreadsheetDateTime,
14+
SpreadsheetTime,
15+
timedelta,
16+
)
17+
from ..spreadsheet_error import NUM_ERROR, VALUE_ERROR, SpreadsheetError
918
from .boolean import FALSE, BooleanValue
1019
from .date_time_helpers import (
1120
_DAY_COUNT,
@@ -18,15 +27,6 @@
1827
date_diff360eu,
1928
date_diff360us,
2029
)
21-
from ..spreadsheet_datetime import (
22-
EPOCH_FIRST_YEAR,
23-
SEC_IN_HOUR,
24-
SpreadsheetDate,
25-
SpreadsheetDateTime,
26-
SpreadsheetTime,
27-
timedelta,
28-
)
29-
from ..spreadsheet_error import NUM_ERROR, VALUE_ERROR, SpreadsheetError
3030

3131
__all__ = [
3232
"DATE",

neptyne_kernel/formulas/date_time_helpers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@
77
from dateutil.parser import ParserError
88
from dateutil.relativedelta import relativedelta
99

10-
from .helpers import Numeric, _flatten_range
1110
from ..spreadsheet_datetime import (
1211
SpreadsheetDate,
1312
SpreadsheetDateTime,
1413
excel2date,
1514
excel2datetime,
1615
)
1716
from ..spreadsheet_error import VALUE_ERROR, SpreadsheetError
17+
from .helpers import Numeric, _flatten_range
1818

1919
BaseType = int | float | str
2020
DateTimeValue = BaseType | SpreadsheetDateTime

neptyne_kernel/formulas/datetime_test.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,16 @@
33
import pytest
44

55
from ..cell_range import CellRange
6+
from ..spreadsheet_datetime import (
7+
SpreadsheetDate,
8+
SpreadsheetDateTime,
9+
SpreadsheetTime,
10+
datetime,
11+
excel2date,
12+
excel2datetime,
13+
timedelta,
14+
)
15+
from ..spreadsheet_error import NUM_ERROR, VALUE_ERROR
616
from .boolean import FALSE, TRUE
717
from .date_time import (
818
DATE,
@@ -29,16 +39,6 @@
2939
YEAR,
3040
YEARFRAC,
3141
)
32-
from ..spreadsheet_datetime import (
33-
SpreadsheetDate,
34-
SpreadsheetDateTime,
35-
SpreadsheetTime,
36-
datetime,
37-
excel2date,
38-
excel2datetime,
39-
timedelta,
40-
)
41-
from ..spreadsheet_error import NUM_ERROR, VALUE_ERROR
4242

4343
WORKDAY_INTL_RANGE = CellRange(
4444
[

0 commit comments

Comments
 (0)