def search_quick(self, area, *, strict=False, zoom=None): """Return a generator of caches in some area. Area is converted to map tiles, each tile is then loaded and :class:`.Cache` objects are then created from its blocks. :param bool strict: Whether to return caches strictly in the `area` and discard others. :param int zoom: Zoom level of tiles. You can also specify it manually, otherwise it is automatically determined for whole :class:`.Area` to fit into one :class:`.Tile`. Higher zoom level is more precise, but requires more tiles to be loaded. """ logging.info("Searching quick in {}".format(area)) tiles = area.to_tiles(self, zoom) # TODO process tiles by multiple workers for tile in tiles: for block in tile.blocks: cache = Cache.from_block(block) if strict and cache.location not in area: # if strict mode is on and cache is not in area continue else: # can yield more caches (which are not exactly in desired area) yield cache