From 59bec1b42ef6ce3e81778056f07fd53cb2ea164b Mon Sep 17 00:00:00 2001 From: Stephan Hoyer Date: Thu, 7 Feb 2019 08:27:58 -0800 Subject: [PATCH] Fix mypy errors Apparently I wasn't paying attention in my last PR :) --- ci/requirements-py36.yml | 2 +- xarray/core/alignment.py | 6 +++--- xarray/core/computation.py | 13 ++++++------- xarray/core/dataset.py | 31 +++++++++++++++++-------------- xarray/core/merge.py | 11 ++++++----- 5 files changed, 33 insertions(+), 30 deletions(-) diff --git a/ci/requirements-py36.yml b/ci/requirements-py36.yml index 311e4a275a8..7a3f0f53223 100644 --- a/ci/requirements-py36.yml +++ b/ci/requirements-py36.yml @@ -32,4 +32,4 @@ dependencies: - lxml - pip: - cfgrib>=0.9.2 - - mypy==0.650 + - mypy==0.660 diff --git a/xarray/core/alignment.py b/xarray/core/alignment.py index 7aaeff00b5e..71cdfdebb61 100644 --- a/xarray/core/alignment.py +++ b/xarray/core/alignment.py @@ -3,7 +3,7 @@ import warnings from collections import OrderedDict, defaultdict from contextlib import suppress -from typing import Any, Mapping, Optional +from typing import Any, Mapping, Optional, Tuple import numpy as np import pandas as pd @@ -317,7 +317,7 @@ def reindex_variables( # build up indexers for assignment along each dimension int_indexers = {} - targets = OrderedDict() + targets = OrderedDict() # type: OrderedDict[Any, pd.Index] masked_dims = set() unchanged_dims = set() @@ -357,7 +357,7 @@ def reindex_variables( 'the new index %r' % (dim, existing_size, new_size)) # create variables for the new dataset - reindexed = OrderedDict() + reindexed = OrderedDict() # type: OrderedDict[Any, Variable] for dim, indexer in indexers.items(): if isinstance(indexer, DataArray) and indexer.dims != (dim,): diff --git a/xarray/core/computation.py b/xarray/core/computation.py index b9303a5681d..811b216ee79 100644 --- a/xarray/core/computation.py +++ b/xarray/core/computation.py @@ -224,7 +224,7 @@ def apply_dataarray_ufunc(func, *args, **kwargs): def ordered_set_union(all_keys: List[Iterable]) -> Iterable: - result_dict = OrderedDict() + result_dict = OrderedDict() # type: OrderedDict[Any, None] for keys in all_keys: for key in keys: result_dict[key] = None @@ -284,11 +284,10 @@ def _as_variables_or_variable(arg): def _unpack_dict_tuples( - result_vars, # type: Mapping[Any, Tuple[Variable]] - num_outputs, # type: int -): - # type: (...) -> Tuple[Dict[Any, Variable], ...] - out = tuple(OrderedDict() for _ in range(num_outputs)) + result_vars: Mapping[Any, Tuple[Variable]], + num_outputs: int, +) -> 'Tuple[OrderedDict[Any, Variable], ...]': + out = tuple(OrderedDict() for _ in range(num_outputs)) # type: ignore for name, values in result_vars.items(): for value, results_dict in zip(values, out): results_dict[name] = value @@ -444,7 +443,7 @@ def unified_dim_sizes( exclude_dims: AbstractSet = frozenset(), ) -> 'OrderedDict[Any, int]': - dim_sizes = OrderedDict() + dim_sizes = OrderedDict() # type: OrderedDict[Any, int] for var in variables: if len(set(var.dims)) < len(var.dims): diff --git a/xarray/core/dataset.py b/xarray/core/dataset.py index d1323c171eb..636cff2c3ec 100644 --- a/xarray/core/dataset.py +++ b/xarray/core/dataset.py @@ -192,11 +192,11 @@ def merge_indexes( def split_indexes( - dims_or_levels, # type: Union[Any, List[Any]] - variables, # type: Dict[Any, Variable] - coord_names, # type: Set - level_coords, # type: Dict[Any, Any] - drop=False, # type: bool + dims_or_levels, # type: Union[Any, List[Any]] + variables, # type: OrderedDict[Any, Variable] + coord_names, # type: Set + level_coords, # type: Dict[Any, Any] + drop=False, # type: bool ): # type: (...) -> Tuple[OrderedDict[Any, Variable], Set] """Extract (multi-)indexes (levels) as variables. @@ -216,7 +216,7 @@ def split_indexes( dims.append(k) vars_to_replace = {} - vars_to_create = OrderedDict() + vars_to_create = OrderedDict() # type: OrderedDict[Any, Variable] vars_to_remove = [] for d in dims: @@ -696,11 +696,14 @@ def _from_vars_and_coord_names(cls, variables, coord_names, attrs=None): dims = dict(calculate_dimensions(variables)) return cls._construct_direct(variables, coord_names, dims, attrs) - def _replace( + # TODO(shoyer): renable type checking on this signature when pytype has a + # good way to handle defaulting arguments to a sentinel value: + # https://github.com/python/mypy/issues/1803 + def _replace( # type: ignore self: T, variables: 'OrderedDict[Any, Variable]' = None, coord_names: set = None, - dims: 'OrderedDict[Any, int]' = None, + dims: Dict[Any, int] = None, attrs: 'Optional[OrderedDict]' = __default, indexes: 'Optional[OrderedDict[Any, pd.Index]]' = __default, encoding: Optional[dict] = __default, @@ -745,7 +748,7 @@ def _replace( variables, coord_names, dims, attrs, indexes, encoding) return obj - def _replace_with_new_dims( + def _replace_with_new_dims( # type: ignore self: T, variables: 'OrderedDict[Any, Variable]' = None, coord_names: set = None, @@ -758,7 +761,7 @@ def _replace_with_new_dims( return self._replace( variables, coord_names, dims, attrs, indexes, inplace=inplace) - def _replace_vars_and_dims( + def _replace_vars_and_dims( # type: ignore self: T, variables: 'OrderedDict[Any, Variable]' = None, coord_names: set = None, @@ -931,7 +934,7 @@ def _copy_listed(self: T, names) -> T: """Create a new Dataset with the listed variables from this dataset and the all relevant coordinates. Skips all validation. """ - variables = OrderedDict() + variables = OrderedDict() # type: OrderedDict[Any, Variable] coord_names = set() for name in names: @@ -976,7 +979,7 @@ def _construct_dataarray(self, name) -> 'DataArray': needed_dims = set(variable.dims) - coords = OrderedDict() + coords = OrderedDict() # type: OrderedDict[Any, Variable] for k in self.coords: if set(self.variables[k].dims) <= needed_dims: coords[k] = self.variables[k] @@ -1823,12 +1826,12 @@ def relevant_keys(mapping): else: # dim is a string dim_name = dim - dim_coord = None + dim_coord = None # type: ignore reordered = self.transpose( *(list(indexer_dims) + list(non_indexed_dims))) - variables = OrderedDict() + variables = OrderedDict() # type: ignore for name, var in reordered.variables.items(): if name in indexers_dict or any( diff --git a/xarray/core/merge.py b/xarray/core/merge.py index daf400765d5..3039eecb2f8 100644 --- a/xarray/core/merge.py +++ b/xarray/core/merge.py @@ -22,13 +22,14 @@ 'no_conflicts': 4}) -def broadcast_dimension_size(variables): - # type: (List[Variable],) -> Variable +def broadcast_dimension_size( + variables: List[Variable], +) -> 'OrderedDict[Any, int]': """Extract dimension sizes from a dictionary of variables. Raises ValueError if any dimensions have different sizes. """ - dims = OrderedDict() + dims = OrderedDict() # type: OrderedDict[Any, int] for var in variables: for dim, size in zip(var.dims, var.shape): if dim in dims and size != dims[dim]: @@ -149,7 +150,7 @@ def merge_variables( # n.b. it's important to fill up merged in the original order in which # variables appear - merged = OrderedDict() + merged = OrderedDict() # type: OrderedDict[Any, Variable] for name, var_list in lookup.items(): if name in priority_vars: @@ -177,7 +178,7 @@ def merge_variables( def expand_variable_dicts( list_of_variable_dicts: 'List[Union[Dataset, OrderedDict]]', -) -> 'List[OrderedDict[Any, Variable]]': +) -> 'List[Mapping[Any, Variable]]': """Given a list of dicts with xarray object values, expand the values. Parameters