1from datetime import datetime
2from typing import Any, Dict, List, Optional, Union, Protocol
3
4from django.contrib.sites.models import Site
5from django.contrib.sites.requests import RequestSite
6from django.core.paginator import Paginator
7from django.db.models.base import Model
8from django.db.models.query import QuerySet
9
10PING_URL: str
11
12class SitemapNotFound(Exception): ...
13
14def ping_google(sitemap_url: Optional[str] = ..., ping_url: str = ...) -> None: ...
15
16class _SupportsLen(Protocol):
17    def __len__(self) -> int: ...
18
19class _SupportsCount(Protocol):
20    def count(self) -> int: ...
21
22class _SupportsOrdered(Protocol):
23    ordered: bool = ...
24
25class Sitemap:
26    limit: int = ...
27    protocol: Optional[str] = ...
28    def items(self) -> Union[_SupportsLen, _SupportsCount, _SupportsOrdered]: ...
29    def location(self, obj: Model) -> str: ...
30    @property
31    def paginator(self) -> Paginator: ...
32    def get_urls(
33        self, page: Union[int, str] = ..., site: Optional[Union[Site, RequestSite]] = ..., protocol: Optional[str] = ...
34    ) -> List[Dict[str, Any]]: ...
35
36class GenericSitemap(Sitemap):
37    priority: Optional[float] = ...
38    changefreq: Optional[str] = ...
39    queryset: QuerySet = ...
40    date_field: None = ...
41    def __init__(
42        self,
43        info_dict: Dict[str, Union[datetime, QuerySet, str]],
44        priority: Optional[float] = ...,
45        changefreq: Optional[str] = ...,
46        protocol: Optional[str] = ...,
47    ) -> None: ...
48    def lastmod(self, item: Model) -> Optional[datetime]: ...
49
50default_app_config: str
51