Skip to content

Commit 89a22f9

Browse files
authored
Add stubs for inifile (#10270)
1 parent e347af1 commit 89a22f9

File tree

4 files changed

+124
-0
lines changed

4 files changed

+124
-0
lines changed

pyrightconfig.stricter.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
"stubs/protobuf",
5353
"stubs/google-cloud-ndb",
5454
"stubs/influxdb-client",
55+
"stubs/inifile",
5556
"stubs/passlib",
5657
"stubs/peewee",
5758
"stubs/pika",
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# These are internal use and python 2 compatibility variables and functions
2+
inifile.PY2
3+
inifile.WIN
4+
inifile.integer_types
5+
inifile.iter_from_file
6+
inifile.iteritems
7+
inifile.reraise
8+
inifile.string_types

stubs/inifile/METADATA.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
version = "0.4.*"

stubs/inifile/inifile.pyi

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
from _typeshed import StrOrBytesPath, StrPath, SupportsKeysAndGetItem
2+
from collections.abc import Container, Iterable, Iterator, Mapping, MutableMapping, Sequence
3+
from typing import TypeVar, overload
4+
from typing_extensions import Literal, TypeAlias
5+
from uuid import UUID
6+
7+
_T = TypeVar("_T")
8+
9+
_Token: TypeAlias = (
10+
tuple[Literal["EMPTY"], str, None]
11+
| tuple[Literal["COMMENT"], str, None]
12+
| tuple[Literal["SECTION"], str, tuple[str, ...]]
13+
| tuple[Literal["KV"], str, tuple[str, str, str]]
14+
)
15+
16+
def get_app_dir(app_name: str, roaming: bool = ..., force_posix: bool = ...) -> str: ...
17+
18+
class Dialect:
19+
ns_sep: str
20+
kv_sep: str
21+
quotes: Sequence[str]
22+
true: Sequence[str]
23+
false: Sequence[str]
24+
comments: Container[str]
25+
allow_escaping: bool
26+
linesep: str | None
27+
def __init__(
28+
self,
29+
ns_sep: str = ...,
30+
kv_sep: str = ...,
31+
quotes: Sequence[str] = ...,
32+
true: Sequence[str] = ...,
33+
false: Sequence[str] = ...,
34+
comments: Container[str] = ...,
35+
allow_escaping: bool = ...,
36+
linesep: str | None = ...,
37+
) -> None: ...
38+
def get_actual_linesep(self) -> str: ...
39+
def get_strippable_lineseps(self) -> str: ...
40+
def kv_serialize(self, key, val: str | None) -> str | None: ...
41+
def escape(self, value: str, quote: str | None = ...) -> str: ...
42+
def unescape(self, value: str) -> str: ...
43+
def to_string(self, value: bool | float | str) -> str: ...
44+
def dict_from_iterable(self, iterable: Iterable[str]) -> MutableMapping[str, str]: ...
45+
def tokenize(self, iterable: Iterable[str]) -> Iterator[_Token]: ...
46+
def update_tokens(
47+
self, old_tokens: Iterable[_Token], changes: SupportsKeysAndGetItem[str, str] | Iterable[tuple[str, str]]
48+
) -> list[_Token]: ...
49+
50+
default_dialect: Dialect
51+
52+
class IniData(MutableMapping[str, str]):
53+
def __init__(self, mapping: Mapping[str, str] | None = ..., dialect: Dialect | None = ...) -> None: ...
54+
@property
55+
def is_dirty(self) -> bool: ...
56+
def get_updated_lines(self, line_iter: Iterable[_Token] | None = ...) -> list[_Token]: ...
57+
def discard(self) -> None: ...
58+
def rollover(self) -> None: ...
59+
def to_dict(self) -> dict[str, str]: ...
60+
def __len__(self) -> int: ...
61+
@overload
62+
def get(self, name: str) -> str | None: ...
63+
@overload
64+
def get(self, name: str, default: _T) -> str | _T: ...
65+
@overload
66+
def get_ascii(self, name: str) -> str | None: ...
67+
@overload
68+
def get_ascii(self, name: str, default: _T) -> str | _T: ...
69+
@overload
70+
def get_bool(self, name: str) -> bool: ...
71+
@overload
72+
def get_bool(self, name: str, default: _T) -> bool | _T: ...
73+
@overload
74+
def get_int(self, name: str) -> int | None: ...
75+
@overload
76+
def get_int(self, name: str, default: _T = ...) -> int | _T: ...
77+
@overload
78+
def get_float(self, name: str) -> float | None: ...
79+
@overload
80+
def get_float(self, name: str, default: _T) -> float | _T: ...
81+
@overload
82+
def get_uuid(self, name: str) -> UUID | None: ...
83+
@overload
84+
def get_uuid(self, name: str, default: _T) -> UUID | _T: ...
85+
def itersections(self) -> Iterator[str]: ...
86+
def sections(self) -> Iterator[str]: ...
87+
def iteritems(self) -> Iterator[tuple[str, str]]: ...
88+
def iterkeys(self) -> Iterator[str]: ...
89+
def itervalues(self) -> Iterator[str]: ...
90+
# NB: keys, items, values currently return a generator, which is
91+
# incompatible with the views returned by Mappings
92+
def items(self) -> Iterator[tuple[str, str]]: ... # type: ignore[override]
93+
def keys(self) -> Iterator[str]: ... # type: ignore[override]
94+
def __iter__(self) -> Iterator[str]: ...
95+
def values(self) -> Iterator[str]: ... # type: ignore[override]
96+
def section_as_dict(self, section: str) -> dict[str, str]: ...
97+
def __getitem__(self, name: str) -> str: ...
98+
def __setitem__(self, name: str, value: str) -> None: ...
99+
def __delitem__(self, name: str) -> None: ...
100+
101+
class IniFile(IniData):
102+
def __init__(self, filename: StrOrBytesPath | int, encoding: str | None = ..., dialect: Dialect | None = ...) -> None: ...
103+
def save(self, create_folder: bool = ...) -> None: ...
104+
105+
class AppIniFile(IniFile):
106+
def __init__(
107+
self,
108+
app_name: str,
109+
filename: StrPath,
110+
roaming: bool = ...,
111+
force_posix: bool = ...,
112+
encoding: str | None = ...,
113+
dialect: Dialect | None = ...,
114+
) -> None: ...

0 commit comments

Comments
 (0)