Added missing typing

This commit is contained in:
Jaime van Kessel 2018-12-05 11:29:44 +01:00
parent d9135ac72f
commit abcc621cc6
2 changed files with 23 additions and 22 deletions

View file

@ -2,18 +2,19 @@
# Cura is released under the terms of the LGPLv3 or higher. # Cura is released under the terms of the LGPLv3 or higher.
import re import re
from typing import Dict from typing import Dict, List, Optional, Union
from PyQt5.QtCore import Qt, pyqtProperty, pyqtSignal from PyQt5.QtCore import Qt, pyqtProperty, pyqtSignal
from UM.Qt.ListModel import ListModel from UM.Qt.ListModel import ListModel
## Model that holds cura packages. By setting the filter property the instances held by this model can be changed. ## Model that holds cura packages. By setting the filter property the instances held by this model can be changed.
class AuthorsModel(ListModel): class AuthorsModel(ListModel):
def __init__(self, parent = None): def __init__(self, parent = None) -> None:
super().__init__(parent) super().__init__(parent)
self._metadata = None self._metadata = None # type: Optional[List[Dict[str, Union[str, List[str], int]]]]
self.addRoleName(Qt.UserRole + 1, "id") self.addRoleName(Qt.UserRole + 1, "id")
self.addRoleName(Qt.UserRole + 2, "name") self.addRoleName(Qt.UserRole + 2, "name")
@ -27,37 +28,37 @@ class AuthorsModel(ListModel):
# List of filters for queries. The result is the union of the each list of results. # List of filters for queries. The result is the union of the each list of results.
self._filter = {} # type: Dict[str, str] self._filter = {} # type: Dict[str, str]
def setMetadata(self, data): def setMetadata(self, data: List[Dict[str, Union[str, List[str], int]]]):
self._metadata = data self._metadata = data
self._update() self._update()
def _update(self): def _update(self) -> None:
items = [] items = [] # type: List[Dict[str, Union[str, List[str], int, None]]]
if not self._metadata: if not self._metadata:
self.setItems([]) self.setItems(items)
return return
for author in self._metadata: for author in self._metadata:
items.append({ items.append({
"id": author["author_id"], "id": author.get("author_id"),
"name": author["display_name"], "name": author.get("display_name"),
"email": author["email"] if "email" in author else None, "email": author.get("email"),
"website": author["website"], "website": author.get("website"),
"package_count": author["package_count"] if "package_count" in author else 0, "package_count": author.get("package_count", 0),
"package_types": author["package_types"] if "package_types" in author else [], "package_types": author.get("package_types", []),
"icon_url": author["icon_url"] if "icon_url" in author else None, "icon_url": author.get("icon_url"),
"description": "Material and quality profiles from {author_name}".format(author_name = author["display_name"]) "description": "Material and quality profiles from {author_name}".format(author_name = author.get("display_name", ""))
}) })
# Filter on all the key-word arguments. # Filter on all the key-word arguments.
for key, value in self._filter.items(): for key, value in self._filter.items():
if key is "package_types": if key is "package_types":
key_filter = lambda item, value = value: value in item["package_types"] key_filter = lambda item, value = value: value in item["package_types"] # type: ignore
elif "*" in value: elif "*" in value:
key_filter = lambda item, key = key, value = value: self._matchRegExp(item, key, value) key_filter = lambda item, key = key, value = value: self._matchRegExp(item, key, value) # type: ignore
else: else:
key_filter = lambda item, key = key, value = value: self._matchString(item, key, value) key_filter = lambda item, key = key, value = value: self._matchString(item, key, value) # type: ignore
items = filter(key_filter, items) items = filter(key_filter, items) # type: ignore
# Execute all filters. # Execute all filters.
filtered_items = list(items) filtered_items = list(items)
@ -72,7 +73,7 @@ class AuthorsModel(ListModel):
self._filter = filter_dict self._filter = filter_dict
self._update() self._update()
@pyqtProperty("QVariantMap", fset = setFilter, constant = True) @pyqtProperty("QStringMap", fset = setFilter, constant = True)
def filter(self) -> Dict[str, str]: def filter(self) -> Dict[str, str]:
return self._filter return self._filter