Remove caldav stubs (#14142)

This commit is contained in:
Shamil
2025-05-25 23:17:51 +03:00
committed by GitHub
parent aae7a3aa46
commit adabd34dde
17 changed files with 0 additions and 631 deletions
-1
View File
@@ -33,7 +33,6 @@
"stubs/beautifulsoup4",
"stubs/boltons",
"stubs/braintree",
"stubs/caldav",
"stubs/cffi",
"stubs/click-web",
"stubs/corus",
@@ -1,11 +0,0 @@
# Passes its *args after a kwarg, which is a SyntaxError, so we allow kwargs only
caldav.DAVClient.principal
caldav.davclient.DAVClient.principal
# Initialized in class, but immediately overwritten in __init__
caldav.DAVClient.url
caldav.davclient.DAVClient.url
caldav.davclient.DAVResponse.headers
caldav.elements.base.BaseElement.children
.*.findprop
-9
View File
@@ -1,9 +0,0 @@
version = "1.3.*"
upstream_repository = "https://github.com/python-caldav/caldav"
# also types-lxml and types-icalendar when those stubs are added
requires = ["types-requests", "types-vobject"]
partial_stub = true
obsolete_since = "1.4.0" # Released on 2024-11-05
[tool.stubtest]
ignore_missing_stub = true
-4
View File
@@ -1,4 +0,0 @@
from .davclient import DAVClient as DAVClient
from .objects import *
__version__: str
-84
View File
@@ -1,84 +0,0 @@
from _typeshed import Incomplete
from collections.abc import Iterable, Mapping
from types import TracebackType
from typing_extensions import Self, TypeAlias
from urllib.parse import ParseResult, SplitResult
from requests.auth import AuthBase
from requests.models import Response
from requests.sessions import _Timeout
from requests.structures import CaseInsensitiveDict
from .lib.url import URL
from .objects import Calendar, DAVObject, Principal
_Element: TypeAlias = Incomplete # actually lxml.etree._Element
class DAVResponse:
reason: str
tree: _Element | None
status: int
headers: CaseInsensitiveDict[str]
objects: dict[str, dict[str, str]] # only defined after call to find_objects_and_props()
huge_tree: bool
def __init__(self, response: Response, davclient: DAVClient | None = None) -> None: ...
@property
def raw(self) -> str: ...
def validate_status(self, status: str) -> None: ...
def find_objects_and_props(self) -> None: ...
def expand_simple_props(
self, props: Iterable[Incomplete] = [], multi_value_props: Iterable[Incomplete] = [], xpath: str | None = None
) -> dict[str, dict[str, str]]: ...
class DAVClient:
proxy: str | None
url: URL
headers: dict[str, str]
username: str | None
password: str | None
auth: AuthBase | None
timeout: _Timeout | None
ssl_verify_cert: bool | str
ssl_cert: str | tuple[str, str] | None
huge_tree: bool
def __init__(
self,
url: str,
proxy: str | None = None,
username: str | None = None,
password: str | None = None,
auth: AuthBase | None = None,
timeout: _Timeout | None = None,
ssl_verify_cert: bool | str = True,
ssl_cert: str | tuple[str, str] | None = None,
headers: dict[str, str] = {},
huge_tree: bool = False,
) -> None: ...
def __enter__(self) -> Self: ...
def __exit__(
self, exc_type: type[BaseException] | None, exc_value: BaseException | None, traceback: TracebackType | None
) -> None: ...
def principal(self, *, url: str | ParseResult | SplitResult | URL | None = None) -> Principal: ...
def calendar(
self,
*,
url: str | ParseResult | SplitResult | URL | None = ...,
parent: DAVObject | None = ...,
name: str | None = ...,
id: str | None = ...,
props: Mapping[Incomplete, Incomplete] = ...,
**extra,
) -> Calendar: ...
def check_dav_support(self) -> str | None: ...
def check_cdav_support(self) -> bool: ...
def check_scheduling_support(self) -> bool: ...
def propfind(self, url: str | None = None, props: str = "", depth: int = 0) -> DAVResponse: ...
def proppatch(self, url: str, body: str, dummy: None = None) -> DAVResponse: ...
def report(self, url: str, query: str = "", depth: int = 0) -> DAVResponse: ...
def mkcol(self, url: str, body: str, dummy: None = None) -> DAVResponse: ...
def mkcalendar(self, url: str, body: str = "", dummy: None = None) -> DAVResponse: ...
def put(self, url: str, body: str, headers: Mapping[str, str] = {}) -> DAVResponse: ...
def post(self, url: str, body: str, headers: Mapping[str, str] = {}) -> DAVResponse: ...
def delete(self, url: str) -> DAVResponse: ...
def options(self, url: str) -> DAVResponse: ...
def request(self, url: str, method: str = "GET", body: str = "", headers: Mapping[str, str] = {}) -> DAVResponse: ...
-24
View File
@@ -1,24 +0,0 @@
from _typeshed import Incomplete
from collections.abc import Iterable
from typing import Any, ClassVar
from typing_extensions import Self, TypeAlias
_Element: TypeAlias = Any # actually lxml.etree._Element
class BaseElement:
tag: ClassVar[str | None]
children: list[BaseElement]
value: str | None
attributes: Incomplete | None
caldav_class: Incomplete | None
def __init__(self, name: str | None = None, value: str | bytes | None = None) -> None: ...
def __add__(self, other: BaseElement) -> Self: ...
def xmlelement(self) -> _Element: ...
def xmlchildren(self, root: _Element) -> None: ...
def append(self, element: BaseElement | Iterable[BaseElement]) -> Self: ...
class NamedBaseElement(BaseElement):
def __init__(self, name: str | None = None) -> None: ...
class ValuedBaseElement(BaseElement):
def __init__(self, value: str | bytes | None = None) -> None: ...
-100
View File
@@ -1,100 +0,0 @@
import datetime
from typing import ClassVar
from .base import BaseElement, NamedBaseElement, ValuedBaseElement
class CalendarQuery(BaseElement):
tag: ClassVar[str]
class FreeBusyQuery(BaseElement):
tag: ClassVar[str]
class Mkcalendar(BaseElement):
tag: ClassVar[str]
class CalendarMultiGet(BaseElement):
tag: ClassVar[str]
class ScheduleInboxURL(BaseElement):
tag: ClassVar[str]
class ScheduleOutboxURL(BaseElement):
tag: ClassVar[str]
class Filter(BaseElement):
tag: ClassVar[str]
class CompFilter(NamedBaseElement):
tag: ClassVar[str]
class PropFilter(NamedBaseElement):
tag: ClassVar[str]
class ParamFilter(NamedBaseElement):
tag: ClassVar[str]
class TextMatch(ValuedBaseElement):
tag: ClassVar[str]
def __init__(self, value, collation: str = "i;octet", negate: bool = False) -> None: ...
class TimeRange(BaseElement):
tag: ClassVar[str]
def __init__(self, start: datetime.datetime | None = None, end: datetime.datetime | None = None) -> None: ...
class NotDefined(BaseElement):
tag: ClassVar[str]
class CalendarData(BaseElement):
tag: ClassVar[str]
class Expand(BaseElement):
tag: ClassVar[str]
def __init__(self, start: datetime.datetime | None, end: datetime.datetime | None = None) -> None: ...
class Comp(NamedBaseElement):
tag: ClassVar[str]
class CalendarUserAddressSet(BaseElement):
tag: ClassVar[str]
class CalendarUserType(BaseElement):
tag: ClassVar[str]
class CalendarHomeSet(BaseElement):
tag: ClassVar[str]
class Calendar(BaseElement):
tag: ClassVar[str]
class CalendarDescription(ValuedBaseElement):
tag: ClassVar[str]
class CalendarTimeZone(ValuedBaseElement):
tag: ClassVar[str]
class SupportedCalendarComponentSet(ValuedBaseElement):
tag: ClassVar[str]
class SupportedCalendarData(ValuedBaseElement):
tag: ClassVar[str]
class MaxResourceSize(ValuedBaseElement):
tag: ClassVar[str]
class MinDateTime(ValuedBaseElement):
tag: ClassVar[str]
class MaxDateTime(ValuedBaseElement):
tag: ClassVar[str]
class MaxInstances(ValuedBaseElement):
tag: ClassVar[str]
class MaxAttendeesPerInstance(ValuedBaseElement):
tag: ClassVar[str]
class Allprop(BaseElement):
tag: ClassVar[str]
class ScheduleTag(BaseElement):
tag: ClassVar[str]
-63
View File
@@ -1,63 +0,0 @@
from typing import ClassVar
from .base import BaseElement, ValuedBaseElement
class Propfind(BaseElement):
tag: ClassVar[str]
class PropertyUpdate(BaseElement):
tag: ClassVar[str]
class Mkcol(BaseElement):
tag: ClassVar[str]
class SyncCollection(BaseElement):
tag: ClassVar[str]
class SyncToken(BaseElement):
tag: ClassVar[str]
class SyncLevel(BaseElement):
tag: ClassVar[str]
class Prop(BaseElement):
tag: ClassVar[str]
class Collection(BaseElement):
tag: ClassVar[str]
class Set(BaseElement):
tag: ClassVar[str]
class ResourceType(BaseElement):
tag: ClassVar[str]
class DisplayName(ValuedBaseElement):
tag: ClassVar[str]
class GetEtag(ValuedBaseElement):
tag: ClassVar[str]
class Href(BaseElement):
tag: ClassVar[str]
class Response(BaseElement):
tag: ClassVar[str]
class Status(BaseElement):
tag: ClassVar[str]
class PropStat(BaseElement):
tag: ClassVar[str]
class MultiStatus(BaseElement):
tag: ClassVar[str]
class CurrentUserPrincipal(BaseElement):
tag: ClassVar[str]
class PrincipalCollectionSet(BaseElement):
tag: ClassVar[str]
class Allprop(BaseElement):
tag: ClassVar[str]
-9
View File
@@ -1,9 +0,0 @@
from typing import ClassVar
from .base import ValuedBaseElement
class CalendarColor(ValuedBaseElement):
tag: ClassVar[str]
class CalendarOrder(ValuedBaseElement):
tag: ClassVar[str]
-23
View File
@@ -1,23 +0,0 @@
def assert_(condition: object) -> None: ...
ERR_FRAGMENT: str
class DAVError(Exception):
url: str | None
reason: str
def __init__(self, url: str | None = None, reason: str | None = None) -> None: ...
class AuthorizationError(DAVError): ...
class PropsetError(DAVError): ...
class ProppatchError(DAVError): ...
class PropfindError(DAVError): ...
class ReportError(DAVError): ...
class MkcolError(DAVError): ...
class MkcalendarError(DAVError): ...
class PutError(DAVError): ...
class DeleteError(DAVError): ...
class NotFoundError(DAVError): ...
class ConsistencyError(DAVError): ...
class ResponseError(DAVError): ...
exception_by_method: dict[str, type[DAVError]]
-4
View File
@@ -1,4 +0,0 @@
nsmap: dict[str, str]
nsmap2: dict[str, str]
def ns(prefix: str, tag: str | None = None) -> str: ...
-27
View File
@@ -1,27 +0,0 @@
from typing import overload
from urllib.parse import ParseResult, SplitResult
class URL:
def __init__(self, url: str | ParseResult | SplitResult) -> None: ...
def __bool__(self) -> bool: ...
def __ne__(self, other: object) -> bool: ...
def __eq__(self, other: object) -> bool: ...
def __hash__(self) -> int: ...
@overload
@classmethod
def objectify(cls, url: None) -> None: ...
@overload
@classmethod
def objectify(cls, url: URL | str | ParseResult | SplitResult) -> URL: ...
def __getattr__(self, attr: str): ...
def __unicode__(self) -> str: ...
def strip_trailing_slash(self) -> URL: ...
def is_auth(self) -> bool: ...
def unauth(self) -> URL: ...
def canonical(self) -> URL: ...
def join(self, path: object) -> URL: ...
@overload
def make(url: None) -> None: ...
@overload
def make(url: URL | str | ParseResult | SplitResult) -> URL: ...
-1
View File
@@ -1 +0,0 @@
def fix(event): ...
-263
View File
@@ -1,263 +0,0 @@
import datetime
from _typeshed import Incomplete
from collections import defaultdict
from collections.abc import Callable, Container, Iterable, Iterator, Mapping, Sequence
from typing import Any, Literal, TypeVar, overload
from typing_extensions import Self, TypeAlias
from urllib.parse import ParseResult, SplitResult
from vobject.base import VBase
from .davclient import DAVClient
from .elements.cdav import CalendarData, CalendarQuery, CompFilter, ScheduleInboxURL, ScheduleOutboxURL
from .lib.url import URL
_CC = TypeVar("_CC", bound=CalendarObjectResource)
# Actually "type[Todo] | type[Event] | type[Journal]", but mypy doesn't like that.
_CompClass: TypeAlias = type[CalendarObjectResource]
_VCalAddress: TypeAlias = Incomplete # actually icalendar.vCalAddress
class DAVObject:
id: str | None
url: URL | None
client: DAVClient | None
parent: DAVObject | None
name: str | None
props: Mapping[Incomplete, Incomplete]
extra_init_options: dict[str, Incomplete]
def __init__(
self,
client: DAVClient | None = None,
url: str | ParseResult | SplitResult | URL | None = None,
parent: DAVObject | None = None,
name: str | None = None,
id: str | None = None,
props: Mapping[Incomplete, Incomplete] | None = None,
**extra,
) -> None: ...
@property
def canonical_url(self) -> str: ...
def children(self, type: str | None = None) -> list[tuple[URL, Incomplete, Incomplete]]: ...
def get_property(self, prop, use_cached: bool = False, **passthrough) -> Incomplete | None: ...
def get_properties(self, props=None, depth: int = 0, parse_response_xml: bool = True, parse_props: bool = True): ...
def set_properties(self, props=None) -> Self: ...
def save(self) -> Self: ...
def delete(self) -> None: ...
class CalendarSet(DAVObject):
def calendars(self) -> list[Calendar]: ...
def make_calendar(
self, name: str | None = None, cal_id: str | None = None, supported_calendar_component_set=None
) -> Calendar: ...
def calendar(self, name: str | None = None, cal_id: str | None = None) -> Calendar: ...
class Principal(DAVObject):
def __init__(self, client: DAVClient | None = None, url: str | ParseResult | SplitResult | URL | None = None) -> None: ...
def calendars(self) -> list[Calendar]: ...
def make_calendar(
self, name: str | None = None, cal_id: str | None = None, supported_calendar_component_set=None
) -> Calendar: ...
def calendar(self, name: str | None = None, cal_id: str | None = None, cal_url: str | None = None) -> Calendar: ...
def get_vcal_address(self) -> _VCalAddress: ...
calendar_home_set: CalendarSet # can also be set to anything URL.objectify() accepts
def freebusy_request(self, dtstart, dtend, attendees): ...
def calendar_user_address_set(self) -> list[str]: ...
def schedule_inbox(self) -> ScheduleInbox: ...
def schedule_outbox(self) -> ScheduleOutbox: ...
class Calendar(DAVObject):
def get_supported_components(self) -> list[Incomplete]: ...
def save_with_invites(self, ical: str, attendees, **attendeeoptions) -> None: ...
def save_event(self, ical: str | None = None, no_overwrite: bool = False, no_create: bool = False, **ical_data) -> Event: ...
def save_todo(self, ical: str | None = None, no_overwrite: bool = False, no_create: bool = False, **ical_data) -> Todo: ...
def save_journal(
self, ical: str | None = None, no_overwrite: bool = False, no_create: bool = False, **ical_data
) -> Journal: ...
add_event = save_event
add_todo = save_todo
add_journal = save_journal
def calendar_multiget(self, event_urls: Iterable[URL]) -> list[Event]: ...
def build_date_search_query(
self,
start,
end: datetime.datetime | None = None,
compfilter: Literal["VEVENT"] | None = "VEVENT",
expand: bool | Literal["maybe"] = "maybe",
): ...
@overload
def date_search(
self,
start: datetime.datetime,
end: datetime.datetime | None = None,
compfilter: Literal["VEVENT"] = "VEVENT",
expand: bool | Literal["maybe"] = "maybe",
verify_expand: bool = False,
) -> list[Event]: ...
@overload
def date_search(
self,
start: datetime.datetime,
*,
compfilter: None,
expand: bool | Literal["maybe"] = "maybe",
verify_expand: bool = False,
) -> list[CalendarObjectResource]: ...
@overload
def date_search(
self,
start: datetime.datetime,
end: datetime.datetime | None,
compfilter: None,
expand: bool | Literal["maybe"] = "maybe",
verify_expand: bool = False,
) -> list[CalendarObjectResource]: ...
@overload
def search(
self,
xml: None = None,
comp_class: None = None,
todo: bool | None = None,
include_completed: bool = False,
sort_keys: Sequence[str] = (),
split_expanded: bool = True,
props: list[CalendarData] | None = None,
**kwargs,
) -> list[CalendarObjectResource]: ...
@overload
def search(
self,
xml,
comp_class: type[_CC],
todo: bool | None = None,
include_completed: bool = False,
sort_keys: Sequence[str] = (),
split_expanded: bool = True,
props: list[CalendarData] | None = None,
**kwargs,
) -> list[_CC]: ...
@overload
def search(
self,
*,
comp_class: type[_CC],
todo: bool | None = None,
include_completed: bool = False,
sort_keys: Sequence[str] = (),
split_expanded: bool = True,
props: list[CalendarData] | None = None,
**kwargs,
) -> list[_CC]: ...
def build_search_xml_query(
self,
comp_class: _CompClass | None = None,
todo: bool | None = None,
ignore_completed1: bool | None = None,
ignore_completed2: bool | None = None,
ignore_completed3: bool | None = None,
event: bool | None = None,
filters: list[Incomplete] | None = None,
expand: bool | None = None,
start: datetime.datetime | None = None,
end: datetime.datetime | None = None,
props: list[CalendarData] | None = None,
*,
uid=...,
summary=...,
comment=...,
description=...,
location=...,
status=...,
**kwargs: str,
) -> tuple[CalendarQuery, _CompClass]: ...
def freebusy_request(self, start: datetime.datetime, end: datetime.datetime) -> FreeBusy: ...
def todos(
self, sort_keys: Iterable[str] = ("due", "priority"), include_completed: bool = False, sort_key: str | None = None
) -> list[Todo]: ...
def event_by_url(self, href, data=None) -> Event: ...
def object_by_uid(self, uid: str, comp_filter: CompFilter | None = None, comp_class: _CompClass | None = None) -> Event: ...
def todo_by_uid(self, uid: str) -> CalendarObjectResource: ...
def event_by_uid(self, uid: str) -> CalendarObjectResource: ...
def journal_by_uid(self, uid: str) -> CalendarObjectResource: ...
event = event_by_uid
def events(self) -> list[Event]: ...
def objects_by_sync_token(self, sync_token=None, load_objects: bool = False) -> SynchronizableCalendarObjectCollection: ...
objects = objects_by_sync_token
def journals(self) -> list[Journal]: ...
class ScheduleMailbox(Calendar):
def __init__(
self,
client: DAVClient | None = None,
principal: Principal | None = None,
url: str | ParseResult | SplitResult | URL | None = None,
) -> None: ...
def get_items(self): ...
class ScheduleInbox(ScheduleMailbox):
findprop = ScheduleInboxURL
class ScheduleOutbox(ScheduleMailbox):
findprop = ScheduleOutboxURL
class SynchronizableCalendarObjectCollection:
def __init__(self, calendar, objects, sync_token) -> None: ...
def __iter__(self) -> Iterator[Incomplete]: ...
def __len__(self) -> int: ...
def objects_by_url(self): ...
def sync(self) -> tuple[Incomplete, Incomplete]: ...
class CalendarObjectResource(DAVObject):
def __init__(
self,
client: DAVClient | None = None,
url: str | ParseResult | SplitResult | URL | None = None,
data=None,
parent=None,
id=None,
props=None,
) -> None: ...
def add_organizer(self) -> None: ...
def split_expanded(self) -> list[Self]: ...
def expand_rrule(self, start: datetime.datetime, end: datetime.datetime) -> None: ...
def get_relatives(
self,
reltypes: Container[str] | None = None,
relfilter: Callable[[Any], bool] | None = None,
fetch_objects: bool = True,
ignore_missing: bool = True,
) -> defaultdict[str, set[str]]: ...
def add_attendee(self, attendee, no_default_parameters: bool = False, **parameters) -> None: ...
def is_invite_request(self) -> bool: ...
def accept_invite(self, calendar=None) -> None: ...
def decline_invite(self, calendar=None) -> None: ...
def tentatively_accept_invite(self, calendar=None) -> None: ...
def copy(self, keep_uid: bool = False, new_parent=None) -> Self: ...
def load(self, only_if_unloaded: bool = False) -> Self: ...
def change_attendee_status(self, attendee=None, **kwargs) -> None: ...
def save(
self,
no_overwrite: bool = False,
no_create: bool = False,
obj_type: str | None = None,
increase_seqno: bool = True,
if_schedule_tag_match: bool = False,
) -> Self: ...
def get_duration(self) -> datetime.timedelta: ...
data: Incomplete
vobject_instance: VBase
icalendar_instance: Incomplete
instance: VBase
class Event(CalendarObjectResource): ...
class Journal(CalendarObjectResource): ...
class FreeBusy(CalendarObjectResource):
def __init__(self, parent, data, url: str | ParseResult | SplitResult | URL | None = None, id=None) -> None: ...
class Todo(CalendarObjectResource):
def complete(
self,
completion_timestamp: datetime.datetime | None = None,
handle_rrule: bool = False,
rrule_mode: Literal["safe", "this_and_future"] = "safe",
) -> None: ...
-8
View File
@@ -1,8 +0,0 @@
from requests.auth import AuthBase
class HTTPBearerAuth(AuthBase):
password: str
def __init__(self, password: str) -> None: ...
def __eq__(self, other: object) -> bool: ...
def __ne__(self, other: object) -> bool: ...
def __call__(self, r): ...