From d7bb09a71b119ff8279a9c8ab2e2a56674eb763c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E9=94=AE=E5=86=AC?= Date: Mon, 13 May 2019 13:43:50 +0800 Subject: [PATCH] Add: mypy checker (#1106) --- .gitignore | 3 +++ pyecharts/charts/base.py | 2 +- pyecharts/charts/basic_charts/bar.py | 2 +- pyecharts/charts/basic_charts/bmap.py | 2 +- pyecharts/charts/basic_charts/boxplot.py | 2 +- pyecharts/charts/basic_charts/calendar.py | 2 +- pyecharts/charts/basic_charts/effectscatter.py | 2 +- pyecharts/charts/basic_charts/funnel.py | 2 +- pyecharts/charts/basic_charts/gauge.py | 2 +- pyecharts/charts/basic_charts/geo.py | 6 +++--- pyecharts/charts/basic_charts/graph.py | 2 +- pyecharts/charts/basic_charts/heatmap.py | 2 +- pyecharts/charts/basic_charts/line.py | 2 +- pyecharts/charts/basic_charts/liquid.py | 2 +- pyecharts/charts/basic_charts/map.py | 2 +- pyecharts/charts/basic_charts/parallel.py | 2 +- pyecharts/charts/basic_charts/pie.py | 2 +- pyecharts/charts/basic_charts/polar.py | 2 +- pyecharts/charts/basic_charts/radar.py | 11 +---------- pyecharts/charts/basic_charts/sankey.py | 2 +- pyecharts/charts/basic_charts/scatter.py | 2 +- pyecharts/charts/basic_charts/sunburst.py | 2 +- pyecharts/charts/basic_charts/themeriver.py | 2 +- pyecharts/charts/basic_charts/tree.py | 2 +- pyecharts/charts/basic_charts/treemap.py | 2 +- pyecharts/charts/basic_charts/wordcloud.py | 2 +- pyecharts/charts/chart.py | 6 +++--- pyecharts/charts/composite_charts/grid.py | 2 +- pyecharts/charts/composite_charts/timeline.py | 6 +++--- pyecharts/components/table.py | 2 +- pyecharts/render/snapshot.py | 2 +- 31 files changed, 39 insertions(+), 45 deletions(-) diff --git a/.gitignore b/.gitignore index bd27b2c3..0ef128ad 100644 --- a/.gitignore +++ b/.gitignore @@ -99,3 +99,6 @@ ENV/ # example example/*.png example/*.html + +# mypy +.mypy_cache/ diff --git a/pyecharts/charts/base.py b/pyecharts/charts/base.py index e87212a8..eca9e6e8 100644 --- a/pyecharts/charts/base.py +++ b/pyecharts/charts/base.py @@ -21,7 +21,7 @@ class Base: `Base`类是所有图形类的基类,提供部分初始化参数和基本的方法 """ - def __init__(self, init_opts: Union[InitOpts, dict] = InitOpts()): + def __init__(self, init_opts: InitOpts = InitOpts()): self.width = init_opts.width self.height = init_opts.height self.renderer = init_opts.renderer diff --git a/pyecharts/charts/basic_charts/bar.py b/pyecharts/charts/basic_charts/bar.py index a5743d83..8b7c8f45 100644 --- a/pyecharts/charts/basic_charts/bar.py +++ b/pyecharts/charts/basic_charts/bar.py @@ -12,7 +12,7 @@ class Bar(RectChart): with heights or lengths proportional to the values that they represent. """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) self.options.update(yAxis=[opts.AxisOpts().opts]) diff --git a/pyecharts/charts/basic_charts/bmap.py b/pyecharts/charts/basic_charts/bmap.py index 185b6cc9..5d8e6100 100644 --- a/pyecharts/charts/basic_charts/bmap.py +++ b/pyecharts/charts/basic_charts/bmap.py @@ -14,7 +14,7 @@ class BMap(GeoChartBase): Support scatter plot, line """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) self.js_dependencies.add("bmap") self._is_geo_chart = True diff --git a/pyecharts/charts/basic_charts/boxplot.py b/pyecharts/charts/basic_charts/boxplot.py index 5d7e85ec..4ad57d23 100644 --- a/pyecharts/charts/basic_charts/boxplot.py +++ b/pyecharts/charts/basic_charts/boxplot.py @@ -13,7 +13,7 @@ class Boxplot(RectChart): of a set of data. """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) self.options.update(yAxis=[opts.AxisOpts().opts]) diff --git a/pyecharts/charts/basic_charts/calendar.py b/pyecharts/charts/basic_charts/calendar.py index 486baf36..978fb72b 100644 --- a/pyecharts/charts/basic_charts/calendar.py +++ b/pyecharts/charts/basic_charts/calendar.py @@ -12,7 +12,7 @@ class Calendar(Chart): Two categories of axes must be used in rectangular coordinates. """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) self.options.update(calendar=opts.CalendarOpts().opts) diff --git a/pyecharts/charts/basic_charts/effectscatter.py b/pyecharts/charts/basic_charts/effectscatter.py index f2c4e02d..09217277 100644 --- a/pyecharts/charts/basic_charts/effectscatter.py +++ b/pyecharts/charts/basic_charts/effectscatter.py @@ -11,7 +11,7 @@ class EffectScatter(RectChart): Use animation effects to visually highlight designated data set. """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) self.options.update(yAxis=[opts.AxisOpts().opts]) diff --git a/pyecharts/charts/basic_charts/funnel.py b/pyecharts/charts/basic_charts/funnel.py index f3b16652..e1b95542 100644 --- a/pyecharts/charts/basic_charts/funnel.py +++ b/pyecharts/charts/basic_charts/funnel.py @@ -15,7 +15,7 @@ class Funnel(Chart): and then decisions can be made. """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) def add( diff --git a/pyecharts/charts/basic_charts/gauge.py b/pyecharts/charts/basic_charts/gauge.py index 21e1094e..a3ae14ec 100644 --- a/pyecharts/charts/basic_charts/gauge.py +++ b/pyecharts/charts/basic_charts/gauge.py @@ -11,7 +11,7 @@ class Gauge(Chart): The gauge displays a single key business measure. """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) def add( diff --git a/pyecharts/charts/basic_charts/geo.py b/pyecharts/charts/basic_charts/geo.py index 8a7e5163..f03b6921 100644 --- a/pyecharts/charts/basic_charts/geo.py +++ b/pyecharts/charts/basic_charts/geo.py @@ -9,7 +9,7 @@ from ...globals import ChartType, TooltipFormatterType class GeoChartBase(Chart): - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) self.set_global_opts() self._coordinates = COORDINATES @@ -27,7 +27,7 @@ class GeoChartBase(Chart): self.add_coordinate(k, v[0], v[1]) return self - def get_coordinate(self, name: str) -> Sequence: + def get_coordinate(self, name: str) -> Optional[Sequence]: if name in self._coordinates: return self._coordinates[name] @@ -165,7 +165,7 @@ class Geo(GeoChartBase): support scatter plot and line """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) self._coordinate_system: Optional[str] = "geo" diff --git a/pyecharts/charts/basic_charts/graph.py b/pyecharts/charts/basic_charts/graph.py index c9c923c8..03490030 100644 --- a/pyecharts/charts/basic_charts/graph.py +++ b/pyecharts/charts/basic_charts/graph.py @@ -11,7 +11,7 @@ class Graph(Chart): The graph is used to represent the relational data. """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) def add( diff --git a/pyecharts/charts/basic_charts/heatmap.py b/pyecharts/charts/basic_charts/heatmap.py index 3367b0b4..128cbee9 100644 --- a/pyecharts/charts/basic_charts/heatmap.py +++ b/pyecharts/charts/basic_charts/heatmap.py @@ -13,7 +13,7 @@ class HeatMap(RectChart): Two categories of axes must be used in rectangular coordinates. """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) self.options.update(yAxis=[opts.AxisOpts().opts]) self.set_global_opts(visualmap_opts=opts.VisualMapOpts(orient="horizontal")) diff --git a/pyecharts/charts/basic_charts/line.py b/pyecharts/charts/basic_charts/line.py index 6c4f180a..9f2df706 100644 --- a/pyecharts/charts/basic_charts/line.py +++ b/pyecharts/charts/basic_charts/line.py @@ -12,7 +12,7 @@ class Line(RectChart): with single line to show the change trend of data. """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) self.options.update(yAxis=[opts.AxisOpts().opts]) diff --git a/pyecharts/charts/basic_charts/liquid.py b/pyecharts/charts/basic_charts/liquid.py index e40e43d5..c4818b7f 100644 --- a/pyecharts/charts/basic_charts/liquid.py +++ b/pyecharts/charts/basic_charts/liquid.py @@ -11,7 +11,7 @@ class Liquid(Chart): The liquid chart is mainly used to highlight the percentage of data. """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) self.js_dependencies.add("echarts-liquidfill") diff --git a/pyecharts/charts/basic_charts/map.py b/pyecharts/charts/basic_charts/map.py index 7b9f6e59..f750c14e 100644 --- a/pyecharts/charts/basic_charts/map.py +++ b/pyecharts/charts/basic_charts/map.py @@ -11,7 +11,7 @@ class Map(Chart): Map are mainly used for visualization of geographic area data. """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) def add( diff --git a/pyecharts/charts/basic_charts/parallel.py b/pyecharts/charts/basic_charts/parallel.py index a0c19515..47795dda 100644 --- a/pyecharts/charts/basic_charts/parallel.py +++ b/pyecharts/charts/basic_charts/parallel.py @@ -12,7 +12,7 @@ class Parallel(Chart): high dimensional data. """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) self.options.update(parallel=opts.ParallelOpts().opts) diff --git a/pyecharts/charts/basic_charts/pie.py b/pyecharts/charts/basic_charts/pie.py index 61332a1a..1844d9ee 100644 --- a/pyecharts/charts/basic_charts/pie.py +++ b/pyecharts/charts/basic_charts/pie.py @@ -13,7 +13,7 @@ class Pie(Chart): the number of data points. """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) def add( diff --git a/pyecharts/charts/basic_charts/polar.py b/pyecharts/charts/basic_charts/polar.py index 2ba9aa86..670be013 100644 --- a/pyecharts/charts/basic_charts/polar.py +++ b/pyecharts/charts/basic_charts/polar.py @@ -11,7 +11,7 @@ class Polar(Chart): Polar coordinates can be used for scatter and polyline graphs. """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) self.add_schema() diff --git a/pyecharts/charts/basic_charts/radar.py b/pyecharts/charts/basic_charts/radar.py index 5eb7b7ef..ee021a4e 100644 --- a/pyecharts/charts/basic_charts/radar.py +++ b/pyecharts/charts/basic_charts/radar.py @@ -11,7 +11,7 @@ class Radar(Chart): Radar maps are mainly used to represent multivariable data. """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) def add_schema( @@ -56,15 +56,6 @@ class Radar(Chart): areastyle_opts: opts.AreaStyleOpts = opts.AreaStyleOpts(), tooltip_opts: Union[opts.TooltipOpts, dict, None] = None, ): - if isinstance(label_opts, opts.LabelOpts): - label_opts = label_opts.opts - if isinstance(linestyle_opts, opts.LineStyleOpts): - linestyle_opts = linestyle_opts.opts - if isinstance(areastyle_opts, opts.AreaStyleOpts): - areastyle_opts = areastyle_opts.opts - if isinstance(tooltip_opts, opts.TooltipOpts): - tooltip_opts = tooltip_opts.opts - self._append_legend(series_name, is_selected) self.options.get("series").append( { diff --git a/pyecharts/charts/basic_charts/sankey.py b/pyecharts/charts/basic_charts/sankey.py index 59d98071..3344814b 100644 --- a/pyecharts/charts/basic_charts/sankey.py +++ b/pyecharts/charts/basic_charts/sankey.py @@ -13,7 +13,7 @@ class Sankey(Chart): the intermediate process of processing, transformation to the final form. """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) def add( diff --git a/pyecharts/charts/basic_charts/scatter.py b/pyecharts/charts/basic_charts/scatter.py index e09d4772..3eb90aa1 100644 --- a/pyecharts/charts/basic_charts/scatter.py +++ b/pyecharts/charts/basic_charts/scatter.py @@ -14,7 +14,7 @@ class Scatter(RectChart): visualmap component can be used. """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) self.options.update(yAxis=[opts.AxisOpts().opts]) diff --git a/pyecharts/charts/basic_charts/sunburst.py b/pyecharts/charts/basic_charts/sunburst.py index a18162db..45b54369 100644 --- a/pyecharts/charts/basic_charts/sunburst.py +++ b/pyecharts/charts/basic_charts/sunburst.py @@ -14,7 +14,7 @@ class Sunburst(Chart): hierarchical relationships like rectangle tree graphs. """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) def add( diff --git a/pyecharts/charts/basic_charts/themeriver.py b/pyecharts/charts/basic_charts/themeriver.py index 799b66ba..066a252d 100644 --- a/pyecharts/charts/basic_charts/themeriver.py +++ b/pyecharts/charts/basic_charts/themeriver.py @@ -13,7 +13,7 @@ class ThemeRiver(Chart): over a period of time. """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) def add( diff --git a/pyecharts/charts/basic_charts/tree.py b/pyecharts/charts/basic_charts/tree.py index 22354593..f65717f8 100644 --- a/pyecharts/charts/basic_charts/tree.py +++ b/pyecharts/charts/basic_charts/tree.py @@ -13,7 +13,7 @@ class Tree(Chart): and right subtrees. """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) @staticmethod diff --git a/pyecharts/charts/basic_charts/treemap.py b/pyecharts/charts/basic_charts/treemap.py index 5e14d746..cc25bcb8 100644 --- a/pyecharts/charts/basic_charts/treemap.py +++ b/pyecharts/charts/basic_charts/treemap.py @@ -12,7 +12,7 @@ class TreeMap(Chart): It mainly uses area to highlight the important nodes in the hierarchy of "tree". """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) def add( diff --git a/pyecharts/charts/basic_charts/wordcloud.py b/pyecharts/charts/basic_charts/wordcloud.py index f423a718..400656f9 100644 --- a/pyecharts/charts/basic_charts/wordcloud.py +++ b/pyecharts/charts/basic_charts/wordcloud.py @@ -27,7 +27,7 @@ class WordCloud(Chart): appear frequently in the text. """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) self.js_dependencies.add("echarts-wordcloud") diff --git a/pyecharts/charts/chart.py b/pyecharts/charts/chart.py index b86f5bb1..ab7e736b 100644 --- a/pyecharts/charts/chart.py +++ b/pyecharts/charts/chart.py @@ -9,7 +9,7 @@ class Chart(Base): `Chart`类是所有非自定义类的基类,继承自 `Base` 类 """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) self.colors = ( "#c23531 #2f4554 #61a0a8 #d48265 #749f83 #ca8622 #bda29a #6e7074 " @@ -198,12 +198,12 @@ class Chart3D(Chart): `Chart3D`类是所有 3D 类图表的基类,继承自 `Chart` 类 """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): init_opts.renderer = RenderType.CANVAS super().__init__(init_opts) self.js_dependencies.add("echarts-gl") self.options.update(visualMap=opts.VisualMapOpts().opts) - self._3d_chart_type = None # 3d chart type, don't use it directly + self._3d_chart_type: Optional[str] = None # 3d chart type,don't use it directly def add( self, diff --git a/pyecharts/charts/composite_charts/grid.py b/pyecharts/charts/composite_charts/grid.py index ee77c9d2..6d3119a7 100644 --- a/pyecharts/charts/composite_charts/grid.py +++ b/pyecharts/charts/composite_charts/grid.py @@ -13,7 +13,7 @@ class Grid(Base): and scatter chart (bubble chart) can be drawn in grid. """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) self.options: Optional[dict] = None self._axis_index: int = 0 diff --git a/pyecharts/charts/composite_charts/timeline.py b/pyecharts/charts/composite_charts/timeline.py index 51b78e7f..3f842269 100644 --- a/pyecharts/charts/composite_charts/timeline.py +++ b/pyecharts/charts/composite_charts/timeline.py @@ -1,6 +1,6 @@ from ... import options as opts from ...charts.chart import Base -from ...commons.types import Numeric, Optional, Union +from ...commons.types import Numeric, Optional, Union, Sequence class Timeline(Base): @@ -8,11 +8,11 @@ class Timeline(Base): `Timeline` provides functions like switching and playing between multiple charts. """ - def __init__(self, init_opts: Union[opts.InitOpts, dict] = opts.InitOpts()): + def __init__(self, init_opts: opts.InitOpts = opts.InitOpts()): super().__init__(init_opts=init_opts) self.options = {"baseOption": {"series": [], "timeline": {}}, "options": []} self.add_schema() - self._time_points = [] + self._time_points: Sequence = [] def add_schema( self, diff --git a/pyecharts/components/table.py b/pyecharts/components/table.py index 26e3c420..781293a4 100644 --- a/pyecharts/components/table.py +++ b/pyecharts/components/table.py @@ -19,7 +19,7 @@ class Table: self.page_title = page_title self.js_host = js_host self.js_dependencies: OrderedSet = OrderedSet("bulma") - self._charts = [] + self._charts: Sequence = [] def add(self, headers: Sequence, rows: Sequence, attributes: Optional[dict] = None): diff --git a/pyecharts/render/snapshot.py b/pyecharts/render/snapshot.py index 3ef50695..dab466c4 100644 --- a/pyecharts/render/snapshot.py +++ b/pyecharts/render/snapshot.py @@ -88,4 +88,4 @@ def save_as(image_data: bytes, output_name: str, file_type: str): b.paste(m, mask=m.split()[3]) b.save(output_name, file_type, quality=100) except ModuleNotFoundError: - raise Exception("Please install PIL for % image type" % file_type) + raise Exception("Please install PIL for {} image type".format(file_type))