|
1 | 1 | """A simple class to load and manage the vcard files from disk.""" |
2 | 2 |
|
| 3 | +from __future__ import annotations |
| 4 | + |
3 | 5 | import abc |
4 | 6 | import binascii |
5 | 7 | from collections.abc import Mapping, Sequence |
6 | 8 | import glob |
7 | 9 | import logging |
8 | 10 | import os |
9 | | -from typing import Dict, Generator, Iterator, List, Optional, Union, overload |
| 11 | +from typing import Generator, Iterator, overload |
10 | 12 |
|
11 | 13 | import vobject.base |
12 | 14 |
|
@@ -42,9 +44,8 @@ class AddressBook(metaclass=abc.ABCMeta): |
42 | 44 | def __init__(self, name: str) -> None: |
43 | 45 | """:param name: the name to identify the address book""" |
44 | 46 | self._loaded = False |
45 | | - self.contacts: Dict[str, "carddav_object.CarddavObject"] = {} |
46 | | - self._short_uids: Optional[Dict[str, |
47 | | - "carddav_object.CarddavObject"]] = None |
| 47 | + self.contacts: dict[str, "carddav_object.CarddavObject"] = {} |
| 48 | + self._short_uids: None | dict[str, "carddav_object.CarddavObject"] = None |
48 | 49 | self.name = name |
49 | 50 |
|
50 | 51 | def __str__(self) -> str: |
@@ -83,7 +84,7 @@ def search(self, query: Query) -> Generator["carddav_object.CarddavObject", |
83 | 84 | if query.match(contact): |
84 | 85 | yield contact |
85 | 86 |
|
86 | | - def get_short_uid_dict(self, query: Query = AnyQuery()) -> Dict[ |
| 87 | + def get_short_uid_dict(self, query: Query = AnyQuery()) -> dict[ |
87 | 88 | str, "carddav_object.CarddavObject"]: |
88 | 89 | """Create a dictionary of shortened UIDs for all contacts. |
89 | 90 |
|
@@ -154,7 +155,7 @@ class VdirAddressBook(AddressBook): |
154 | 155 | """ |
155 | 156 |
|
156 | 157 | def __init__(self, name: str, path: str, |
157 | | - private_objects: Optional[List[str]] = None, |
| 158 | + private_objects: None | list[str] = None, |
158 | 159 | localize_dates: bool = True, skip: bool = False) -> None: |
159 | 160 | """ |
160 | 161 | :param name: the name to identify the address book |
@@ -236,7 +237,7 @@ class AddressBookCollection(AddressBook, Mapping, Sequence): |
236 | 237 | this class to use all other methods from the parent AddressBook class. |
237 | 238 | """ |
238 | 239 |
|
239 | | - def __init__(self, name: str, abooks: List[VdirAddressBook]) -> None: |
| 240 | + def __init__(self, name: str, abooks: list[VdirAddressBook]) -> None: |
240 | 241 | """ |
241 | 242 | :param name: the name to identify the address book |
242 | 243 | :param abooks: a list of address books to combine in this collection |
@@ -270,11 +271,11 @@ def load(self, query: Query = AnyQuery()) -> None: |
270 | 271 | len(self.contacts), self.name) |
271 | 272 |
|
272 | 273 | @overload |
273 | | - def __getitem__(self, key: Union[int, str]) -> VdirAddressBook: ... |
| 274 | + def __getitem__(self, key: int | str) -> VdirAddressBook: ... |
274 | 275 | @overload |
275 | | - def __getitem__(self, key: slice) -> List[VdirAddressBook]: ... |
276 | | - def __getitem__(self, key: Union[int, str, slice] |
277 | | - ) -> Union[VdirAddressBook, List[VdirAddressBook]]: |
| 276 | + def __getitem__(self, key: slice) -> list[VdirAddressBook]: ... |
| 277 | + def __getitem__(self, key: int | str | slice |
| 278 | + ) -> VdirAddressBook | list[VdirAddressBook]: |
278 | 279 | """Get one or more of the backing address books by name or index |
279 | 280 |
|
280 | 281 | :param key: the name of the address book to get or its index |
|
0 commit comments