commitizen 4.13.1__tar.gz → 4.13.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {commitizen-4.13.1 → commitizen-4.13.3}/PKG-INFO +1 -1
- commitizen-4.13.3/commitizen/__version__.py +1 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/changelog_formats/base.py +7 -9
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/commands/changelog.py +5 -6
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/commands/commit.py +1 -3
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/commands/init.py +4 -3
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/config/__init__.py +2 -4
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/config/toml_config.py +5 -6
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/config/yaml_config.py +1 -1
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/cz/conventional_commits/conventional_commits.py +3 -4
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/cz/jira/jira.py +3 -4
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/providers/cargo_provider.py +1 -1
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/providers/npm_provider.py +2 -2
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/tags.py +22 -25
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/version_schemes.py +3 -8
- {commitizen-4.13.1 → commitizen-4.13.3}/pyproject.toml +1 -1
- commitizen-4.13.1/commitizen/__version__.py +0 -1
- {commitizen-4.13.1 → commitizen-4.13.3}/LICENSE +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/__init__.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/__main__.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/bump.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/changelog.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/changelog_formats/__init__.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/changelog_formats/asciidoc.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/changelog_formats/markdown.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/changelog_formats/restructuredtext.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/changelog_formats/textile.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/cli.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/cmd.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/commands/__init__.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/commands/bump.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/commands/check.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/commands/example.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/commands/info.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/commands/list_cz.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/commands/schema.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/commands/version.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/config/base_config.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/config/factory.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/config/json_config.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/cz/__init__.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/cz/base.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/cz/conventional_commits/__init__.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/cz/conventional_commits/conventional_commits_info.txt +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/cz/customize/__init__.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/cz/customize/customize.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/cz/customize/customize_info.txt +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/cz/exceptions.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/cz/jira/__init__.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/cz/jira/jira_info.txt +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/cz/utils.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/defaults.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/exceptions.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/factory.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/git.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/hooks.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/out.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/project_info.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/providers/__init__.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/providers/base_provider.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/providers/commitizen_provider.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/providers/composer_provider.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/providers/pep621_provider.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/providers/poetry_provider.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/providers/scm_provider.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/providers/uv_provider.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/py.typed +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/question.py +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/templates/CHANGELOG.adoc.j2 +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/templates/CHANGELOG.md.j2 +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/templates/CHANGELOG.rst.j2 +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/commitizen/templates/CHANGELOG.textile.j2 +0 -0
- {commitizen-4.13.1 → commitizen-4.13.3}/docs/README.md +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "4.13.3"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
import os
|
|
4
3
|
from abc import ABCMeta
|
|
4
|
+
from pathlib import Path
|
|
5
5
|
from typing import IO, TYPE_CHECKING, Any, ClassVar
|
|
6
6
|
|
|
7
7
|
from commitizen.changelog import IncrementalMergeInfo, Metadata
|
|
@@ -36,12 +36,11 @@ class BaseFormat(ChangelogFormat, metaclass=ABCMeta):
|
|
|
36
36
|
)
|
|
37
37
|
|
|
38
38
|
def get_metadata(self, filepath: str) -> Metadata:
|
|
39
|
-
|
|
39
|
+
file = Path(filepath)
|
|
40
|
+
if not file.is_file():
|
|
40
41
|
return Metadata()
|
|
41
42
|
|
|
42
|
-
with open(
|
|
43
|
-
filepath, encoding=self.config.settings["encoding"]
|
|
44
|
-
) as changelog_file:
|
|
43
|
+
with file.open(encoding=self.config.settings["encoding"]) as changelog_file:
|
|
45
44
|
return self.get_metadata_from_file(changelog_file)
|
|
46
45
|
|
|
47
46
|
def get_metadata_from_file(self, file: IO[Any]) -> Metadata:
|
|
@@ -74,12 +73,11 @@ class BaseFormat(ChangelogFormat, metaclass=ABCMeta):
|
|
|
74
73
|
return meta
|
|
75
74
|
|
|
76
75
|
def get_latest_full_release(self, filepath: str) -> IncrementalMergeInfo:
|
|
77
|
-
|
|
76
|
+
file = Path(filepath)
|
|
77
|
+
if not file.is_file():
|
|
78
78
|
return IncrementalMergeInfo()
|
|
79
79
|
|
|
80
|
-
with open(
|
|
81
|
-
filepath, encoding=self.config.settings["encoding"]
|
|
82
|
-
) as changelog_file:
|
|
80
|
+
with file.open(encoding=self.config.settings["encoding"]) as changelog_file:
|
|
83
81
|
return self.get_latest_full_release_from_file(changelog_file)
|
|
84
82
|
|
|
85
83
|
def get_latest_full_release_from_file(self, file: IO[Any]) -> IncrementalMergeInfo:
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
import os
|
|
4
|
-
import os.path
|
|
5
3
|
from difflib import SequenceMatcher
|
|
6
4
|
from operator import itemgetter
|
|
7
5
|
from pathlib import Path
|
|
@@ -66,7 +64,7 @@ class Changelog:
|
|
|
66
64
|
f"or the setting `changelog_file` in {self.config.path}"
|
|
67
65
|
)
|
|
68
66
|
self.file_name = (
|
|
69
|
-
|
|
67
|
+
Path(self.config.path.parent, changelog_file_name).as_posix()
|
|
70
68
|
if self.config.path is not None
|
|
71
69
|
else changelog_file_name
|
|
72
70
|
)
|
|
@@ -282,9 +280,10 @@ class Changelog:
|
|
|
282
280
|
raise DryRunExit()
|
|
283
281
|
|
|
284
282
|
lines = []
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
283
|
+
changelog_path = Path(self.file_name)
|
|
284
|
+
if self.incremental and changelog_path.is_file():
|
|
285
|
+
with changelog_path.open(
|
|
286
|
+
encoding=self.config.settings["encoding"]
|
|
288
287
|
) as changelog_file:
|
|
289
288
|
lines = changelog_file.readlines()
|
|
290
289
|
|
|
@@ -61,9 +61,7 @@ class Commit:
|
|
|
61
61
|
return None
|
|
62
62
|
|
|
63
63
|
# Read commit message from backup
|
|
64
|
-
with open(
|
|
65
|
-
self.backup_file_path, encoding=self.config.settings["encoding"]
|
|
66
|
-
) as f:
|
|
64
|
+
with self.backup_file_path.open(encoding=self.config.settings["encoding"]) as f:
|
|
67
65
|
return f.read().strip()
|
|
68
66
|
|
|
69
67
|
def _get_message_by_prompt_commit_questions(self) -> str:
|
|
@@ -288,11 +288,12 @@ class Init:
|
|
|
288
288
|
],
|
|
289
289
|
}
|
|
290
290
|
|
|
291
|
-
|
|
291
|
+
pre_commit_config_path = Path(self._PRE_COMMIT_CONFIG_PATH)
|
|
292
|
+
if not pre_commit_config_path.is_file():
|
|
292
293
|
return {"repos": [CZ_HOOK_CONFIG]}
|
|
293
294
|
|
|
294
|
-
with open(
|
|
295
|
-
|
|
295
|
+
with pre_commit_config_path.open(
|
|
296
|
+
encoding=self.config.settings["encoding"]
|
|
296
297
|
) as config_file:
|
|
297
298
|
config_data: dict[str, Any] = yaml.safe_load(config_file) or {}
|
|
298
299
|
|
|
@@ -28,10 +28,8 @@ def _resolve_config_candidates() -> list[BaseConfig]:
|
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
def _create_config_from_path(path: Path) -> BaseConfig:
|
|
31
|
-
with open(
|
|
32
|
-
data
|
|
33
|
-
|
|
34
|
-
return create_config(data=data, path=path)
|
|
31
|
+
with path.open("rb") as f:
|
|
32
|
+
return create_config(data=f.read(), path=path)
|
|
35
33
|
|
|
36
34
|
|
|
37
35
|
def read_cfg(filepath: str | None = None) -> BaseConfig:
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
import os
|
|
4
3
|
from typing import TYPE_CHECKING
|
|
5
4
|
|
|
6
5
|
from tomlkit import TOMLDocument, exceptions, parse, table
|
|
@@ -33,25 +32,25 @@ class TomlConfig(BaseConfig):
|
|
|
33
32
|
|
|
34
33
|
def init_empty_config_content(self) -> None:
|
|
35
34
|
config_doc = TOMLDocument()
|
|
36
|
-
if
|
|
37
|
-
with
|
|
35
|
+
if self.path.is_file():
|
|
36
|
+
with self.path.open("rb") as input_toml_file:
|
|
38
37
|
config_doc = parse(input_toml_file.read())
|
|
39
38
|
|
|
40
39
|
if config_doc.get("tool") is None:
|
|
41
40
|
config_doc["tool"] = table()
|
|
42
41
|
config_doc["tool"]["commitizen"] = table() # type: ignore[index]
|
|
43
42
|
|
|
44
|
-
with
|
|
43
|
+
with self.path.open("wb") as output_toml_file:
|
|
45
44
|
output_toml_file.write(
|
|
46
45
|
config_doc.as_string().encode(self._settings["encoding"])
|
|
47
46
|
)
|
|
48
47
|
|
|
49
48
|
def set_key(self, key: str, value: object) -> Self:
|
|
50
|
-
with
|
|
49
|
+
with self.path.open("rb") as f:
|
|
51
50
|
config_doc = parse(f.read())
|
|
52
51
|
|
|
53
52
|
config_doc["tool"]["commitizen"][key] = value # type: ignore[index]
|
|
54
|
-
with
|
|
53
|
+
with self.path.open("wb") as f:
|
|
55
54
|
f.write(config_doc.as_string().encode(self._settings["encoding"]))
|
|
56
55
|
|
|
57
56
|
return self
|
|
@@ -56,7 +56,7 @@ class YAMLConfig(BaseConfig):
|
|
|
56
56
|
pass
|
|
57
57
|
|
|
58
58
|
def set_key(self, key: str, value: object) -> Self:
|
|
59
|
-
with
|
|
59
|
+
with self.path.open("rb") as yaml_file:
|
|
60
60
|
config_doc = yaml.load(yaml_file, Loader=yaml.FullLoader)
|
|
61
61
|
|
|
62
62
|
config_doc["commitizen"][key] = value
|
{commitizen-4.13.1 → commitizen-4.13.3}/commitizen/cz/conventional_commits/conventional_commits.py
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
from pathlib import Path
|
|
4
4
|
from typing import TYPE_CHECKING, TypedDict
|
|
5
5
|
|
|
6
6
|
from commitizen import defaults
|
|
@@ -214,7 +214,6 @@ class ConventionalCommitsCz(BaseCommitizen):
|
|
|
214
214
|
)
|
|
215
215
|
|
|
216
216
|
def info(self) -> str:
|
|
217
|
-
|
|
218
|
-
filepath
|
|
219
|
-
with open(filepath, encoding=self.config.settings["encoding"]) as f:
|
|
217
|
+
filepath = Path(__file__).parent / "conventional_commits_info.txt"
|
|
218
|
+
with filepath.open(encoding=self.config.settings["encoding"]) as f:
|
|
220
219
|
return f.read()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
from pathlib import Path
|
|
4
4
|
from typing import TYPE_CHECKING
|
|
5
5
|
|
|
6
6
|
from commitizen.cz.base import BaseCommitizen
|
|
@@ -73,7 +73,6 @@ class JiraSmartCz(BaseCommitizen):
|
|
|
73
73
|
return r".*[A-Z]{2,}\-[0-9]+( #| .* #).+( #.+)*"
|
|
74
74
|
|
|
75
75
|
def info(self) -> str:
|
|
76
|
-
|
|
77
|
-
filepath
|
|
78
|
-
with open(filepath, encoding=self.config.settings["encoding"]) as f:
|
|
76
|
+
filepath = Path(__file__).parent / "jira_info.txt"
|
|
77
|
+
with filepath.open(encoding=self.config.settings["encoding"]) as f:
|
|
79
78
|
return f.read()
|
|
@@ -39,7 +39,7 @@ class CargoProvider(TomlProvider):
|
|
|
39
39
|
|
|
40
40
|
def set_version(self, version: str) -> None:
|
|
41
41
|
super().set_version(version)
|
|
42
|
-
if self.lock_file.
|
|
42
|
+
if self.lock_file.is_file():
|
|
43
43
|
self.set_lock_version(version)
|
|
44
44
|
|
|
45
45
|
def set_lock_version(self, version: str) -> None:
|
|
@@ -46,14 +46,14 @@ class NpmProvider(VersionProvider):
|
|
|
46
46
|
self.package_file.write_text(
|
|
47
47
|
json.dumps(package_document, indent=self.indent) + "\n"
|
|
48
48
|
)
|
|
49
|
-
if self.lock_file.
|
|
49
|
+
if self.lock_file.is_file():
|
|
50
50
|
lock_document = self.set_lock_version(
|
|
51
51
|
json.loads(self.lock_file.read_text()), version
|
|
52
52
|
)
|
|
53
53
|
self.lock_file.write_text(
|
|
54
54
|
json.dumps(lock_document, indent=self.indent) + "\n"
|
|
55
55
|
)
|
|
56
|
-
if self.shrinkwrap_file.
|
|
56
|
+
if self.shrinkwrap_file.is_file():
|
|
57
57
|
shrinkwrap_document = self.set_shrinkwrap_version(
|
|
58
58
|
json.loads(self.shrinkwrap_file.read_text()), version
|
|
59
59
|
)
|
|
@@ -154,24 +154,13 @@ class TagRules:
|
|
|
154
154
|
candidates = (
|
|
155
155
|
m for regex in self.version_regexes if (m := regex.fullmatch(tag.name))
|
|
156
156
|
)
|
|
157
|
-
if not (
|
|
157
|
+
if not (match := next(candidates, None)):
|
|
158
158
|
raise InvalidVersion(self._version_tag_error(tag.name))
|
|
159
|
-
if "version" in m.groupdict():
|
|
160
|
-
return self.scheme(m.group("version"))
|
|
161
159
|
|
|
162
|
-
|
|
163
|
-
|
|
160
|
+
if version := match.groupdict().get("version"):
|
|
161
|
+
return self.scheme(version)
|
|
164
162
|
|
|
165
|
-
|
|
166
|
-
version = f"{version}.{minor}"
|
|
167
|
-
if patch := parts.get("patch"):
|
|
168
|
-
version = f"{version}.{patch}"
|
|
169
|
-
|
|
170
|
-
if parts.get("prerelease"):
|
|
171
|
-
version = f"{version}-{parts['prerelease']}"
|
|
172
|
-
if parts.get("devrelease"):
|
|
173
|
-
version = f"{version}{parts['devrelease']}"
|
|
174
|
-
return self.scheme(version)
|
|
163
|
+
return self.scheme(self._extract_version(match))
|
|
175
164
|
|
|
176
165
|
def include_in_changelog(self, tag: GitTag) -> bool:
|
|
177
166
|
"""Check if a tag should be included in the changelog"""
|
|
@@ -195,19 +184,14 @@ class TagRules:
|
|
|
195
184
|
|
|
196
185
|
match = matches[-1 if last else 0]
|
|
197
186
|
|
|
198
|
-
|
|
199
|
-
|
|
187
|
+
groups = match.groupdict()
|
|
188
|
+
if version := groups.get("version"):
|
|
189
|
+
return VersionTag(version, match.group(0))
|
|
200
190
|
|
|
201
|
-
|
|
202
|
-
try:
|
|
203
|
-
version = f"{parts['major']}.{parts['minor']}.{parts['patch']}"
|
|
204
|
-
except KeyError:
|
|
191
|
+
if not all(value in groups for value in ["major", "minor", "patch"]):
|
|
205
192
|
return None
|
|
206
193
|
|
|
207
|
-
|
|
208
|
-
version = f"{version}-{parts['prerelease']}"
|
|
209
|
-
if parts.get("devrelease"):
|
|
210
|
-
version = f"{version}{parts['devrelease']}"
|
|
194
|
+
version = self._extract_version(match)
|
|
211
195
|
return VersionTag(version, match.group(0))
|
|
212
196
|
|
|
213
197
|
def normalize_tag(
|
|
@@ -284,3 +268,16 @@ class TagRules:
|
|
|
284
268
|
ignored_tag_formats=settings["ignored_tag_formats"],
|
|
285
269
|
merge_prereleases=settings["changelog_merge_prerelease"],
|
|
286
270
|
)
|
|
271
|
+
|
|
272
|
+
def _extract_version(self, match: re.Match[str]) -> str:
|
|
273
|
+
groups = match.groupdict()
|
|
274
|
+
parts: list[str] = [groups["major"]]
|
|
275
|
+
if minor := groups.get("minor"):
|
|
276
|
+
parts.append(f".{minor}")
|
|
277
|
+
if patch := groups.get("patch"):
|
|
278
|
+
parts.append(f".{patch}")
|
|
279
|
+
if prerelease := groups.get("prerelease"):
|
|
280
|
+
parts.append(f"-{prerelease}")
|
|
281
|
+
if devrelease := groups.get("devrelease"):
|
|
282
|
+
parts.append(devrelease)
|
|
283
|
+
return "".join(parts)
|
|
@@ -185,15 +185,10 @@ class BaseVersion(_BaseVersion):
|
|
|
185
185
|
# https://semver.org/#spec-item-11
|
|
186
186
|
if self.is_prerelease and self.pre:
|
|
187
187
|
prerelease = max(prerelease, self.pre[0])
|
|
188
|
+
if prerelease.startswith(self.pre[0]):
|
|
189
|
+
offset = self.pre[1] + 1
|
|
188
190
|
|
|
189
|
-
|
|
190
|
-
if self.is_prerelease and self.pre and prerelease.startswith(self.pre[0]):
|
|
191
|
-
prev_prerelease: int = self.pre[1]
|
|
192
|
-
new_prerelease_number = prev_prerelease + 1
|
|
193
|
-
else:
|
|
194
|
-
new_prerelease_number = offset
|
|
195
|
-
pre_version = f"{prerelease}{new_prerelease_number}"
|
|
196
|
-
return pre_version
|
|
191
|
+
return f"{prerelease}{offset}"
|
|
197
192
|
|
|
198
193
|
def generate_devrelease(self, devrelease: int | None) -> str:
|
|
199
194
|
"""Generate devrelease
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "4.13.1"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|