Skip to content

Commit 638bed6

Browse files
committed
fix case where pandas isn't installed
1 parent 325cacd commit 638bed6

File tree

4 files changed

+17
-8
lines changed

4 files changed

+17
-8
lines changed

stringdtype/stringdtype/__init__.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,12 @@
44

55
from .missing import NA # isort: skip
66
from .scalar import StringScalar, PandasStringScalar # isort: skip
7-
from ._main import PandasStringDType, StringDType, _memory_usage
7+
from ._main import StringDType, _memory_usage
8+
9+
try:
10+
from ._main import PandasStringDType
11+
except ImportError:
12+
PandasStringDType = None
813

914
__all__ = [
1015
"NA",
@@ -14,7 +19,7 @@
1419
]
1520

1621
# this happens when pandas isn't importable
17-
if StringDType is PandasStringDType:
22+
if PandasStringDType is None:
1823
del PandasStringDType
1924
else:
2025
__all__.extend("PandasStringDType")

stringdtype/stringdtype/src/dtype.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ PyTypeObject *StringScalar_Type = NULL;
77
PyTypeObject *PandasStringScalar_Type = NULL;
88
static PyTypeObject *StringNA_Type = NULL;
99
PyObject *NA_OBJ = NULL;
10+
int PANDAS_AVAILABLE = 0;
1011

1112
/*
1213
* Internal helper to create new instances
@@ -597,9 +598,9 @@ init_string_dtype(void)
597598
}
598599

599600
PandasStringDType.base.singleton = singleton;
601+
PANDAS_AVAILABLE = 1;
600602
}
601603
else {
602-
PandasStringDType = StringDType;
603604
PyErr_Clear();
604605
}
605606

stringdtype/stringdtype/src/dtype.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ extern StringDType_type PandasStringDType;
2828
extern PyTypeObject *StringScalar_Type;
2929
extern PyTypeObject *PandasStringScalar_Type;
3030
extern PyObject *NA_OBJ;
31+
extern int PANDAS_AVAILABLE;
3132

3233
PyObject *
3334
new_stringdtype_instance(PyTypeObject *cls);

stringdtype/stringdtype/src/main.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,13 @@ PyInit__main(void)
135135
goto error;
136136
}
137137

138-
Py_INCREF((PyObject *)&PandasStringDType);
139-
if (PyModule_AddObject(m, "PandasStringDType",
140-
(PyObject *)&PandasStringDType) < 0) {
141-
Py_DECREF((PyObject *)&PandasStringDType);
142-
goto error;
138+
if (PANDAS_AVAILABLE == 1) {
139+
Py_INCREF((PyObject *)&PandasStringDType);
140+
if (PyModule_AddObject(m, "PandasStringDType",
141+
(PyObject *)&PandasStringDType) < 0) {
142+
Py_DECREF((PyObject *)&PandasStringDType);
143+
goto error;
144+
}
143145
}
144146

145147
if (init_ufuncs() < 0) {

0 commit comments

Comments
 (0)