Skip to content

Commit ae5c846

Browse files
authored
Merge pull request #18 from Casyfill/black
Black
2 parents 2361d5f + 78057aa commit ae5c846

File tree

8 files changed

+168
-138
lines changed

8 files changed

+168
-138
lines changed

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,3 +102,10 @@ venv.bak/
102102

103103
# mypy
104104
.mypy_cache/
105+
106+
107+
# vscode
108+
.vscode/
109+
110+
#examples
111+
examples/*.ipynb

.pre-commit-config.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
repos:
2+
- repo: https://github.com/psf/black
3+
rev: stable
4+
hooks:
5+
- id: black
6+
language_version: python3.6

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# altair_pandas
22

33
[![build status](http://img.shields.io/travis/altair-viz/altair_pandas/master.svg?style=flat)](https://travis-ci.org/altair-viz/altair_pandas)
4+
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
45

56
Altair backend for pandas plotting functions.
67

altair_pandas/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
"""Altair plotting extension for pandas."""
22
__version__ = "0.1.0dev0"
3-
__all__ = ['plot']
3+
__all__ = ["plot"]
44

55
from ._core import plot

altair_pandas/_core.py

Lines changed: 68 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ def _valid_column(column_name):
88

99
class _PandasPlotter:
1010
"""Base class for pandas plotting."""
11+
1112
@classmethod
1213
def create(cls, data):
1314
if isinstance(data, pd.Series):
@@ -20,6 +21,7 @@ def create(cls, data):
2021

2122
class _SeriesPlotter(_PandasPlotter):
2223
"""Functionality for plotting of pandas Series."""
24+
2325
def __init__(self, data):
2426
if not isinstance(data, pd.Series):
2527
raise ValueError(f"data: expected pd.Series; got {type(data)}")
@@ -32,7 +34,8 @@ def _preprocess_data(self, with_index=True):
3234
if isinstance(data.index, pd.MultiIndex):
3335
data = data.copy()
3436
data.index = pd.Index(
35-
[str(i) for i in data.index], name=data.index.name)
37+
[str(i) for i in data.index], name=data.index.name
38+
)
3639
data = data.reset_index()
3740
else:
3841
data = data.to_frame()
@@ -41,25 +44,29 @@ def _preprocess_data(self, with_index=True):
4144

4245
def _xy(self, mark, **kwargs):
4346
data = self._preprocess_data(with_index=True)
44-
return alt.Chart(data, mark=mark).encode(
45-
x=alt.X(data.columns[0], title=None),
46-
y=alt.Y(data.columns[1], title=None),
47-
tooltip=list(data.columns)
48-
).interactive()
47+
return (
48+
alt.Chart(data, mark=mark)
49+
.encode(
50+
x=alt.X(data.columns[0], title=None),
51+
y=alt.Y(data.columns[1], title=None),
52+
tooltip=list(data.columns),
53+
)
54+
.interactive()
55+
)
4956

5057
def line(self, **kwargs):
51-
return self._xy('line', **kwargs)
58+
return self._xy("line", **kwargs)
5259

5360
def bar(self, **kwargs):
54-
return self._xy({'type': 'bar', 'orient': 'vertical'}, **kwargs)
61+
return self._xy({"type": "bar", "orient": "vertical"}, **kwargs)
5562

5663
def barh(self, **kwargs):
57-
chart = self._xy({'type': 'bar', 'orient': 'horizontal'}, **kwargs)
64+
chart = self._xy({"type": "bar", "orient": "horizontal"}, **kwargs)
5865
chart.encoding.x, chart.encoding.y = chart.encoding.y, chart.encoding.x
5966
return chart
6067

6168
def area(self, **kwargs):
62-
return self._xy(mark='area', **kwargs)
69+
return self._xy(mark="area", **kwargs)
6370

6471
def scatter(self, **kwargs):
6572
raise ValueError("kind='scatter' can only be used for DataFrames.")
@@ -71,23 +78,28 @@ def hist(self, bins=None, **kwargs):
7178
bins = alt.Bin(maxbins=bins)
7279
elif bins is None:
7380
bins = True
74-
return alt.Chart(data).mark_bar().encode(
75-
x=alt.X(column, title=None, bin=bins),
76-
y=alt.Y('count()', title='Frequency'),
81+
return (
82+
alt.Chart(data)
83+
.mark_bar()
84+
.encode(
85+
x=alt.X(column, title=None, bin=bins),
86+
y=alt.Y("count()", title="Frequency"),
87+
)
7788
)
7889

7990
def box(self, **kwargs):
8091
data = self._preprocess_data(with_index=False)
81-
return alt.Chart(data).transform_fold(
82-
list(data.columns), as_=['column', 'value']
83-
).mark_boxplot().encode(
84-
x=alt.X('column:N', title=None),
85-
y='value:Q',
92+
return (
93+
alt.Chart(data)
94+
.transform_fold(list(data.columns), as_=["column", "value"])
95+
.mark_boxplot()
96+
.encode(x=alt.X("column:N", title=None), y="value:Q")
8697
)
8798

8899

89100
class _DataFramePlotter(_PandasPlotter):
90101
"""Functionality for plotting of pandas DataFrames."""
102+
91103
def __init__(self, data):
92104
if not isinstance(data, pd.DataFrame):
93105
raise ValueError(f"data: expected pd.DataFrame; got {type(data)}")
@@ -100,7 +112,8 @@ def _preprocess_data(self, with_index=True, usecols=None):
100112
if with_index:
101113
if isinstance(data.index, pd.MultiIndex):
102114
data.index = pd.Index(
103-
[str(i) for i in data.index], name=data.index.name)
115+
[str(i) for i in data.index], name=data.index.name
116+
)
104117
return data.reset_index()
105118
return data
106119

@@ -120,82 +133,80 @@ def _xy(self, mark, x=None, y=None, **kwargs):
120133
assert y in data.columns
121134
y_values = [y]
122135

123-
return alt.Chart(
124-
data,
125-
mark=mark
126-
).transform_fold(
127-
y_values, as_=['column', 'value']
128-
).encode(
129-
x=x,
130-
y=alt.Y('value:Q', title=None),
131-
color=alt.Color('column:N', title=None),
132-
tooltip=[x] + y_values,
133-
).interactive()
136+
return (
137+
alt.Chart(data, mark=mark)
138+
.transform_fold(y_values, as_=["column", "value"])
139+
.encode(
140+
x=x,
141+
y=alt.Y("value:Q", title=None),
142+
color=alt.Color("column:N", title=None),
143+
tooltip=[x] + y_values,
144+
)
145+
.interactive()
146+
)
134147

135148
def line(self, x=None, y=None, **kwargs):
136-
return self._xy('line', x, y, **kwargs)
149+
return self._xy("line", x, y, **kwargs)
137150

138151
def area(self, x=None, y=None, **kwargs):
139-
return self._xy('area', x, y, **kwargs)
152+
return self._xy("area", x, y, **kwargs)
140153

141154
# TODO: bars should be grouped, not stacked.
142155
def bar(self, x=None, y=None, **kwargs):
143-
return self._xy(
144-
{'type': 'bar', 'orient': 'vertical'}, x, y, **kwargs)
156+
return self._xy({"type": "bar", "orient": "vertical"}, x, y, **kwargs)
145157

146158
def barh(self, x=None, y=None, **kwargs):
147-
chart = self._xy(
148-
{'type': 'bar', 'orient': 'horizontal'}, x, y, **kwargs)
159+
chart = self._xy({"type": "bar", "orient": "horizontal"}, x, y, **kwargs)
149160
chart.encoding.x, chart.encoding.y = chart.encoding.y, chart.encoding.x
150161
return chart
151162

152163
def scatter(self, x, y, c=None, s=None, **kwargs):
153164
if x is None or y is None:
154165
raise ValueError("kind='scatter' requires 'x' and 'y' arguments.")
155-
encodings = {'x': _valid_column(x), 'y': _valid_column(y)}
166+
encodings = {"x": _valid_column(x), "y": _valid_column(y)}
156167
if c is not None:
157-
encodings['color'] = _valid_column(c)
168+
encodings["color"] = _valid_column(c)
158169
if s is not None:
159-
encodings['size'] = _valid_column(s)
170+
encodings["size"] = _valid_column(s)
160171
columns = list(set(encodings.values()))
161172
data = self._preprocess_data(with_index=False, usecols=columns)
162-
encodings['tooltip'] = columns
163-
return alt.Chart(data).mark_point().encode(
164-
**encodings
165-
).interactive()
173+
encodings["tooltip"] = columns
174+
return alt.Chart(data).mark_point().encode(**encodings).interactive()
166175

167176
def hist(self, bins=None, stacked=None, **kwargs):
168177
data = self._preprocess_data(with_index=False)
169178
if isinstance(bins, int):
170179
bins = alt.Bin(maxbins=bins)
171180
elif bins is None:
172181
bins = True
173-
return alt.Chart(data).transform_fold(
174-
list(data.columns), as_=['column', 'value']
175-
).mark_bar().encode(
176-
x=alt.X('value:Q', title=None, bin=bins),
177-
y=alt.Y('count()', title='Frequency', stack=stacked),
178-
color=alt.Color('column:N')
182+
return (
183+
alt.Chart(data)
184+
.transform_fold(list(data.columns), as_=["column", "value"])
185+
.mark_bar()
186+
.encode(
187+
x=alt.X("value:Q", title=None, bin=bins),
188+
y=alt.Y("count()", title="Frequency", stack=stacked),
189+
color=alt.Color("column:N"),
190+
)
179191
)
180192

181193
def box(self, **kwargs):
182194
data = self._preprocess_data(with_index=False)
183-
return alt.Chart(data).transform_fold(
184-
list(data.columns), as_=['column', 'value']
185-
).mark_boxplot().encode(
186-
x=alt.X('column:N', title=None),
187-
y='value:Q',
195+
return (
196+
alt.Chart(data)
197+
.transform_fold(list(data.columns), as_=["column", "value"])
198+
.mark_boxplot()
199+
.encode(x=alt.X("column:N", title=None), y="value:Q")
188200
)
189201

190202

191-
def plot(data, kind='line', **kwargs):
203+
def plot(data, kind="line", **kwargs):
192204
"""Pandas plotting interface for Altair."""
193205
plotter = _PandasPlotter.create(data)
194206

195207
if hasattr(plotter, kind):
196208
plotfunc = getattr(plotter, kind)
197209
else:
198-
raise NotImplementedError(
199-
f"kind='{kind}' for data of type {type(data)}")
210+
raise NotImplementedError(f"kind='{kind}' for data of type {type(data)}")
200211

201212
return plotfunc(**kwargs)

altair_pandas/conftest.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,16 @@ def pytest_addoption(parser):
77
"--backend_name",
88
action="store",
99
default="altair_pandas",
10-
help="Plotting backend to use."
10+
help="Plotting backend to use.",
1111
)
1212

1313

14-
@pytest.fixture(scope='session')
14+
@pytest.fixture(scope="session")
1515
def with_plotting_backend(request):
16-
default = pd.get_option('plotting.backend')
17-
pd.set_option('plotting.backend', request.config.getoption("backend_name"))
16+
default = pd.get_option("plotting.backend")
17+
pd.set_option("plotting.backend", request.config.getoption("backend_name"))
1818
yield
1919
try:
20-
pd.set_option('plotting.backend', default)
20+
pd.set_option("plotting.backend", default)
2121
except ImportError:
2222
pass # matplotlib is not installed.

0 commit comments

Comments
 (0)