diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index b55eccfcc1..82fb674f7f 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -9,7 +9,7 @@ updates:
labels:
- dependencies
commit-message:
- prefix: "ci(actions)"
+ prefix: "ci"
include: "scope"
-
# Maintain python dependencies
@@ -20,6 +20,5 @@ updates:
labels:
- dependencies
commit-message:
- prefix: "build(poetry)"
- prefix-development:: "build(poetry-dev)"
+ prefix: "build"
include: "scope"
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index b32b189b29..ecd51a19a1 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -8,8 +8,13 @@ default_stages:
- push
repos:
+ - repo: meta
+ hooks:
+ - id: check-hooks-apply
+ - id: check-useless-excludes
+
- repo: https://github.com/pre-commit/pre-commit-hooks
- rev: v4.1.0
+ rev: v4.4.0
hooks:
- id: check-vcs-permalinks
- id: end-of-file-fixer
@@ -18,9 +23,28 @@ repos:
args: [--markdown-linebreak-ext=md]
- id: debug-statements
- id: no-commit-to-branch
+ - id: check-merge-conflict
+ - id: check-toml
+ - id: check-yaml
+ - id: detect-private-key
+
+ - repo: https://github.com/asottile/blacken-docs
+ rev: 1.13.0
+ hooks:
+ - id: blacken-docs
+ additional_dependencies: [black==22.10]
+
+ - repo: https://github.com/codespell-project/codespell
+ rev: v2.2.4
+ hooks:
+ - id: codespell
+ name: Run codespell to check for common misspellings in files
+ language: python
+ types: [text]
+ args: ["--write-changes", "--ignore-words-list", "asend"]
- repo: https://github.com/commitizen-tools/commitizen
- rev: v3.2.2 # automatically updated by Commitizen
+ rev: v3.3.0 # automatically updated by Commitizen
hooks:
- id: commitizen
- id: commitizen-branch
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 18238e6ca9..c34c0ab661 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,10 @@
+## v3.3.0 (2023-06-13)
+
+### Feat
+
+- add support for cargo workspaces
+
## v3.2.2 (2023-05-11)
### Fix
@@ -181,7 +187,7 @@
### Fix
-- **bump.py**: `CHANGELOG.md` gets git added and commited correctly
+- **bump.py**: `CHANGELOG.md` gets git added and committed correctly
## v2.33.0 (2022-09-15)
@@ -420,8 +426,8 @@
### Fix
-- **bump**: raise non zero error code when there's no elegible commit to bump
-- **bump**: raise non zero error code when there's no elegible commit to bump
+- **bump**: raise non zero error code when there's no eligible commit to bump
+- **bump**: raise non zero error code when there's no eligible commit to bump
## v2.20.3 (2021-12-20)
@@ -471,7 +477,7 @@
### Fix
-- **commit**: correct the stage checker before commiting
+- **commit**: correct the stage checker before committing
## v2.18.0 (2021-08-13)
@@ -546,7 +552,7 @@
### Fix
-- **bump**: replace all occurances that match regex
+- **bump**: replace all occurrences that match regex
- **wip**: add test for current breaking change
## v2.17.1 (2021-04-08)
@@ -792,7 +798,7 @@
### BREAKING CHANGE
- setup.cfg, .cz and .cz.cfg are no longer supported
-- Use "cz verion" instead
+- Use "cz version" instead
- "cz --debug" will no longer work
## v1.25.0 (2020-07-26)
@@ -961,7 +967,7 @@
- **commands/changelog**: make changelog_file an option in config
- **commands/changelog**: exit when there is no commit exists
-- **commands/changlog**: add --start-rev argument to `cz changelog`
+- **commands/changelog**: add --start-rev argument to `cz changelog`
- **changelog**: generate changelog based on git log
- **commands/changelog**: generate changelog_tree from all past commits
- **cz/conventinal_commits**: add changelog_map, changelog_pattern and implement process_commit
@@ -1062,7 +1068,7 @@
- **cmd**: reimplement how cmd is run
- **git**: Use GitCommit, GitTag object to store commit and git information
- **git**: make arguments other then start and end in get_commit keyword arguments
-- **git**: Change get_commits into returning commits instead of lines of messsages
+- **git**: Change get_commits into returning commits instead of lines of messages
### Feat
@@ -1162,7 +1168,7 @@
- **config**: handle empty config file
- **config**: fix load global_conf even if it doesn't exist
-- **config/ini_config**: replase outdated _parse_ini_settings with _parse_settings
+- **config/ini_config**: replace outdated _parse_ini_settings with _parse_settings
## v1.10.1 (2019-12-10)
@@ -1207,16 +1213,16 @@
### Refactor
- **config**: remove has_pyproject which is no longer used
-- **cz/customize**: make jinja2 a custom requirement. if not installed use string.Tempalte instead
+- **cz/customize**: make jinja2 a custom requirement. if not installed use string.Template instead
- **cz/utils**: rename filters as utils
- **cli**: add back --version and remove subcommand required constraint
### Fix
-- commit dry-run doesnt require staging to be clean
+- commit dry-run doesn't require staging to be clean
- correct typo to spell "convention"
- removing folder in windows throwing a PermissionError
-- **scripts**: add back the delelte poetry prefix
+- **scripts**: add back the delete poetry prefix
- **test_cli**: testing the version command
## v1.8.0 (2019-11-12)
@@ -1327,7 +1333,7 @@
- update given files with new version
- **config**: new set key, used to set version to cfg
- support for pyproject.toml
-- first semantic version bump implementaiton
+- first semantic version bump implementation
### Fix
@@ -1386,11 +1392,11 @@
### Refactor
-- **conventionalCommit**: moved fitlers to questions instead of message
+- **conventionalCommit**: moved filters to questions instead of message
### Fix
-- **manifest**: inluded missing files
+- **manifest**: included missing files
## v0.9.5 (2018-08-24)
@@ -1408,7 +1414,7 @@
### Feat
-- **commiter**: conventional commit is a bit more intelligent now
+- **committer**: conventional commit is a bit more intelligent now
## v0.9.2 (2017-11-11)
diff --git a/commitizen/__version__.py b/commitizen/__version__.py
index 1e3bed4cd5..88c513ea36 100644
--- a/commitizen/__version__.py
+++ b/commitizen/__version__.py
@@ -1 +1 @@
-__version__ = "3.2.2"
+__version__ = "3.3.0"
diff --git a/commitizen/bump.py b/commitizen/bump.py
index ed410bbcc1..e8e9dcedc3 100644
--- a/commitizen/bump.py
+++ b/commitizen/bump.py
@@ -1,3 +1,5 @@
+from __future__ import annotations
+
import os
import re
import sys
@@ -5,7 +7,6 @@
from collections import OrderedDict
from itertools import zip_longest
from string import Template
-from typing import List, Optional, Tuple, Type, Union
from packaging.version import Version
@@ -21,15 +22,15 @@
def find_increment(
- commits: List[GitCommit], regex: str, increments_map: Union[dict, OrderedDict]
-) -> Optional[str]:
+ commits: list[GitCommit], regex: str, increments_map: dict | OrderedDict
+) -> str | None:
if isinstance(increments_map, dict):
increments_map = OrderedDict(increments_map)
# Most important cases are major and minor.
# Everything else will be considered patch.
select_pattern = re.compile(regex)
- increment: Optional[str] = None
+ increment: str | None = None
for commit in commits:
for message in commit.message.split("\n"):
@@ -54,7 +55,7 @@ def find_increment(
def prerelease_generator(
- current_version: str, prerelease: Optional[str] = None, offset: int = 0
+ current_version: str, prerelease: str | None = None, offset: int = 0
) -> str:
"""Generate prerelease
@@ -123,11 +124,11 @@ def semver_generator(current_version: str, increment: str = None) -> str:
def generate_version(
current_version: str,
increment: str,
- prerelease: Optional[str] = None,
+ prerelease: str | None = None,
prerelease_offset: int = 0,
- devrelease: Optional[int] = None,
+ devrelease: int | None = None,
is_local_version: bool = False,
- version_type_cls: Optional[Type[VersionProtocol]] = None,
+ version_type_cls: type[VersionProtocol] | None = None,
) -> VersionProtocol:
"""Based on the given increment a proper semver will be generated.
@@ -163,7 +164,7 @@ def generate_version(
def update_version_in_files(
- current_version: str, new_version: str, files: List[str], *, check_consistency=False
+ current_version: str, new_version: str, files: list[str], *, check_consistency=False
) -> None:
"""Change old version to the new one in every file given.
@@ -197,7 +198,7 @@ def update_version_in_files(
def _bump_with_regex(
version_filepath: str, current_version: str, new_version: str, regex: str
-) -> Tuple[bool, str]:
+) -> tuple[bool, str]:
current_version_found = False
lines = []
pattern = re.compile(regex)
@@ -218,9 +219,9 @@ def _version_to_regex(version: str) -> str:
def normalize_tag(
- version: Union[VersionProtocol, str],
- tag_format: Optional[str] = None,
- version_type_cls: Optional[Type[VersionProtocol]] = None,
+ version: VersionProtocol | str,
+ tag_format: str | None = None,
+ version_type_cls: type[VersionProtocol] | None = None,
) -> str:
"""The tag and the software version might be different.
@@ -254,8 +255,8 @@ def normalize_tag(
def create_commit_message(
- current_version: Union[Version, str],
- new_version: Union[Version, str],
+ current_version: Version | str,
+ new_version: Version | str,
message_template: str = None,
) -> str:
if message_template is None:
diff --git a/commitizen/changelog.py b/commitizen/changelog.py
index 74cee3260a..91b605b5ad 100644
--- a/commitizen/changelog.py
+++ b/commitizen/changelog.py
@@ -25,13 +25,15 @@
- [x] add support for change_type maps
"""
+from __future__ import annotations
+
import os
import re
import sys
import typing
from collections import OrderedDict, defaultdict
from datetime import date
-from typing import Callable, Dict, Iterable, List, Optional, Tuple, Type
+from typing import Callable, Iterable
from jinja2 import Environment, PackageLoader
from packaging.version import InvalidVersion, Version
@@ -48,11 +50,11 @@
VersionProtocol = typing.Any
-def get_commit_tag(commit: GitCommit, tags: List[GitTag]) -> Optional[GitTag]:
+def get_commit_tag(commit: GitCommit, tags: list[GitTag]) -> GitTag | None:
return next((tag for tag in tags if tag.rev == commit.rev), None)
-def get_version(tag: GitTag) -> Optional[Version]:
+def get_version(tag: GitTag) -> Version | None:
version = None
try:
version = Version(tag.name)
@@ -62,7 +64,7 @@ def get_version(tag: GitTag) -> Optional[Version]:
def tag_included_in_changelog(
- tag: GitTag, used_tags: List, merge_prerelease: bool
+ tag: GitTag, used_tags: list, merge_prerelease: bool
) -> bool:
if tag in used_tags:
return False
@@ -78,19 +80,19 @@ def tag_included_in_changelog(
def generate_tree_from_commits(
- commits: List[GitCommit],
- tags: List[GitTag],
+ commits: list[GitCommit],
+ tags: list[GitTag],
commit_parser: str,
changelog_pattern: str,
- unreleased_version: Optional[str] = None,
- change_type_map: Optional[Dict[str, str]] = None,
- changelog_message_builder_hook: Optional[Callable] = None,
+ unreleased_version: str | None = None,
+ change_type_map: dict[str, str] | None = None,
+ changelog_message_builder_hook: Callable | None = None,
merge_prerelease: bool = False,
-) -> Iterable[Dict]:
+) -> Iterable[dict]:
pat = re.compile(changelog_pattern)
map_pat = re.compile(commit_parser, re.MULTILINE)
body_map_pat = re.compile(commit_parser, re.MULTILINE | re.DOTALL)
- current_tag: Optional[GitTag] = None
+ current_tag: GitTag | None = None
# Check if the latest commit is not tagged
if commits:
@@ -105,8 +107,8 @@ def generate_tree_from_commits(
current_tag_name = current_tag.name
current_tag_date = current_tag.date
- changes: Dict = defaultdict(list)
- used_tags: List = [current_tag]
+ changes: dict = defaultdict(list)
+ used_tags: list = [current_tag]
for commit in commits:
commit_tag = get_commit_tag(commit, tags)
@@ -130,7 +132,7 @@ def generate_tree_from_commits(
# Process subject from commit message
message = map_pat.match(commit.message)
if message:
- parsed_message: Dict = message.groupdict()
+ parsed_message: dict = message.groupdict()
# change_type becomes optional by providing None
change_type = parsed_message.pop("change_type", None)
@@ -146,7 +148,7 @@ def generate_tree_from_commits(
message_body = body_map_pat.match(body_part)
if not message_body:
continue
- parsed_message_body: Dict = message_body.groupdict()
+ parsed_message_body: dict = message_body.groupdict()
change_type = parsed_message_body.pop("change_type", None)
if change_type_map:
@@ -156,7 +158,7 @@ def generate_tree_from_commits(
yield {"version": current_tag_name, "date": current_tag_date, "changes": changes}
-def order_changelog_tree(tree: Iterable, change_type_order: List[str]) -> Iterable:
+def order_changelog_tree(tree: Iterable, change_type_order: list[str]) -> Iterable:
if len(set(change_type_order)) != len(change_type_order):
raise InvalidConfigurationError(
f"Change types contain duplicates types ({change_type_order})"
@@ -184,7 +186,7 @@ def render_changelog(tree: Iterable) -> str:
return changelog
-def parse_version_from_markdown(value: str) -> Optional[str]:
+def parse_version_from_markdown(value: str) -> str | None:
if not value.startswith("#"):
return None
m = re.search(defaults.version_parser, value)
@@ -193,7 +195,7 @@ def parse_version_from_markdown(value: str) -> Optional[str]:
return m.groupdict().get("version")
-def parse_title_type_of_line(value: str) -> Optional[str]:
+def parse_title_type_of_line(value: str) -> str | None:
md_title_parser = r"^(?P
#+)"
m = re.search(md_title_parser, value)
if not m:
@@ -201,12 +203,12 @@ def parse_title_type_of_line(value: str) -> Optional[str]:
return m.groupdict().get("title")
-def get_metadata(filepath: str) -> Dict:
- unreleased_start: Optional[int] = None
- unreleased_end: Optional[int] = None
- unreleased_title: Optional[str] = None
- latest_version: Optional[str] = None
- latest_version_position: Optional[int] = None
+def get_metadata(filepath: str) -> dict:
+ unreleased_start: int | None = None
+ unreleased_end: int | None = None
+ unreleased_title: str | None = None
+ latest_version: str | None = None
+ latest_version_position: int | None = None
if not os.path.isfile(filepath):
return {
"unreleased_start": None,
@@ -219,7 +221,7 @@ def get_metadata(filepath: str) -> Dict:
for index, line in enumerate(changelog_file):
line = line.strip().lower()
- unreleased: Optional[str] = None
+ unreleased: str | None = None
if "unreleased" in line:
unreleased = parse_title_type_of_line(line)
# Try to find beginning and end lines of the unreleased block
@@ -249,7 +251,7 @@ def get_metadata(filepath: str) -> Dict:
}
-def incremental_build(new_content: str, lines: List[str], metadata: Dict) -> List[str]:
+def incremental_build(new_content: str, lines: list[str], metadata: dict) -> list[str]:
"""Takes the original lines and updates with new_content.
The metadata governs how to remove the old unreleased section and where to place the
@@ -267,7 +269,7 @@ def incremental_build(new_content: str, lines: List[str], metadata: Dict) -> Lis
unreleased_end = metadata.get("unreleased_end")
latest_version_position = metadata.get("latest_version_position")
skip = False
- output_lines: List[str] = []
+ output_lines: list[str] = []
for index, line in enumerate(lines):
if index == unreleased_start:
skip = True
@@ -297,8 +299,8 @@ def incremental_build(new_content: str, lines: List[str], metadata: Dict) -> Lis
def get_smart_tag_range(
- tags: List[GitTag], newest: str, oldest: Optional[str] = None
-) -> List[GitTag]:
+ tags: list[GitTag], newest: str, oldest: str | None = None
+) -> list[GitTag]:
"""Smart because it finds the N+1 tag.
This is because we need to find until the next tag
@@ -323,19 +325,19 @@ def get_smart_tag_range(
def get_oldest_and_newest_rev(
- tags: List[GitTag],
+ tags: list[GitTag],
version: str,
tag_format: str,
- version_type_cls: Optional[Type[VersionProtocol]] = None,
-) -> Tuple[Optional[str], Optional[str]]:
+ version_type_cls: type[VersionProtocol] | None = None,
+) -> tuple[str | None, str | None]:
"""Find the tags for the given version.
`version` may come in different formats:
- `0.1.0..0.4.0`: as a range
- `0.3.0`: as a single version
"""
- oldest: Optional[str] = None
- newest: Optional[str] = None
+ oldest: str | None = None
+ newest: str | None = None
try:
oldest, newest = version.split("..")
except ValueError:
@@ -355,7 +357,7 @@ def get_oldest_and_newest_rev(
if not tags_range:
raise NoCommitsFoundError("Could not find a valid revision range.")
- oldest_rev: Optional[str] = tags_range[-1].name
+ oldest_rev: str | None = tags_range[-1].name
newest_rev = newest_tag
# check if it's the first tag created
diff --git a/commitizen/changelog_parser.py b/commitizen/changelog_parser.py
index e53c52893a..eb1b264d36 100644
--- a/commitizen/changelog_parser.py
+++ b/commitizen/changelog_parser.py
@@ -7,9 +7,11 @@
2. Build a dict (tree) of that particular version
3. Transform tree into markdown again
"""
+from __future__ import annotations
+
import re
from collections import defaultdict
-from typing import Dict, Generator, Iterable, List
+from typing import Generator, Iterable
MD_VERSION_RE = r"^##\s(?P[a-zA-Z0-9.+]+)\s?\(?(?P[0-9-]+)?\)?"
MD_CHANGE_TYPE_RE = r"^###\s(?P[a-zA-Z0-9.+\s]+)"
@@ -67,21 +69,21 @@ def find_version_blocks(filepath: str) -> Generator:
yield block
-def parse_md_version(md_version: str) -> Dict:
+def parse_md_version(md_version: str) -> dict:
m = md_version_c.match(md_version)
if not m:
return {}
return m.groupdict()
-def parse_md_change_type(md_change_type: str) -> Dict:
+def parse_md_change_type(md_change_type: str) -> dict:
m = md_change_type_c.match(md_change_type)
if not m:
return {}
return m.groupdict()
-def parse_md_message(md_message: str) -> Dict:
+def parse_md_message(md_message: str) -> dict:
m = md_message_c.match(md_message)
if not m:
return {}
@@ -99,10 +101,10 @@ def transform_change_type(change_type: str) -> str:
raise ValueError(f"Could not match a change_type with {change_type}")
-def generate_block_tree(block: List[str]) -> Dict:
+def generate_block_tree(block: list[str]) -> dict:
# tree: Dict = {"commits": []}
- changes: Dict = defaultdict(list)
- tree: Dict = {"changes": changes}
+ changes: dict = defaultdict(list)
+ tree: dict = {"changes": changes}
change_type = None
for line in block:
@@ -126,6 +128,6 @@ def generate_block_tree(block: List[str]) -> Dict:
return tree
-def generate_full_tree(blocks: Iterable) -> Iterable[Dict]:
+def generate_full_tree(blocks: Iterable) -> Iterable[dict]:
for block in blocks:
yield generate_block_tree(block)
diff --git a/commitizen/cli.py b/commitizen/cli.py
index ed89b5675a..e6d96b656b 100644
--- a/commitizen/cli.py
+++ b/commitizen/cli.py
@@ -1,10 +1,11 @@
+from __future__ import annotations
+
import argparse
import logging
import sys
from pathlib import Path
from functools import partial
from types import TracebackType
-from typing import List
import argcomplete
from decli import cli
@@ -67,7 +68,7 @@
"name": "--write-message-to-file",
"type": Path,
"metavar": "FILE_PATH",
- "help": "write message to file before commiting (can be combined with --dry-run)",
+ "help": "write message to file before committing (can be combined with --dry-run)",
},
{
"name": ["-s", "--signoff"],
@@ -353,7 +354,7 @@
def commitizen_excepthook(
- type, value, traceback, debug=False, no_raise: List[int] = None
+ type, value, traceback, debug=False, no_raise: list[int] = None
):
traceback = traceback if isinstance(traceback, TracebackType) else None
if not no_raise:
@@ -376,13 +377,13 @@ def commitizen_excepthook(
sys.excepthook = commitizen_excepthook
-def parse_no_raise(comma_separated_no_raise: str) -> List[int]:
+def parse_no_raise(comma_separated_no_raise: str) -> list[int]:
"""Convert the given string to exit codes.
Receives digits and strings and outputs the parsed integer which
represents the exit code found in exceptions.
"""
- no_raise_items: List[str] = comma_separated_no_raise.split(",")
+ no_raise_items: list[str] = comma_separated_no_raise.split(",")
no_raise_codes = []
for item in no_raise_items:
if item.isdecimal():
diff --git a/commitizen/commands/bump.py b/commitizen/commands/bump.py
index 53e194bc6f..3d6679a518 100644
--- a/commitizen/commands/bump.py
+++ b/commitizen/commands/bump.py
@@ -1,10 +1,9 @@
+from __future__ import annotations
+
import os
from logging import getLogger
-from typing import List, Optional
import questionary
-from packaging.version import InvalidVersion, Version
-
from commitizen import bump, cmd, factory, git, hooks, out, version_types
from commitizen.commands.changelog import Changelog
from commitizen.config import BaseConfig
@@ -22,6 +21,7 @@
NoVersionSpecifiedError,
)
from commitizen.providers import get_provider
+from packaging.version import InvalidVersion, Version
logger = getLogger("commitizen")
@@ -85,7 +85,7 @@ def is_initial_tag(self, current_tag_version: str, is_yes: bool = False) -> bool
is_initial = questionary.confirm("Is this the first tag created?").ask()
return is_initial
- def find_increment(self, commits: List[git.GitCommit]) -> Optional[str]:
+ def find_increment(self, commits: list[git.GitCommit]) -> str | None:
# Update the bump map to ensure major version doesn't increment.
is_major_version_zero: bool = self.bump_settings["major_version_zero"]
# self.cz.bump_map = defaults.bump_map_major_version_zero
@@ -117,17 +117,17 @@ def __call__(self): # noqa: C901
tag_format: str = self.bump_settings["tag_format"]
bump_commit_message: str = self.bump_settings["bump_message"]
- version_files: List[str] = self.bump_settings["version_files"]
+ version_files: list[str] = self.bump_settings["version_files"]
major_version_zero: bool = self.bump_settings["major_version_zero"]
prerelease_offset: int = self.bump_settings["prerelease_offset"]
dry_run: bool = self.arguments["dry_run"]
is_yes: bool = self.arguments["yes"]
- increment: Optional[str] = self.arguments["increment"]
- prerelease: Optional[str] = self.arguments["prerelease"]
- devrelease: Optional[int] = self.arguments["devrelease"]
- is_files_only: Optional[bool] = self.arguments["files_only"]
- is_local_version: Optional[bool] = self.arguments["local_version"]
+ increment: str | None = self.arguments["increment"]
+ prerelease: str | None = self.arguments["prerelease"]
+ devrelease: int | None = self.arguments["devrelease"]
+ is_files_only: bool | None = self.arguments["files_only"]
+ is_local_version: bool | None = self.arguments["local_version"]
manual_version = self.arguments["manual_version"]
if manual_version:
diff --git a/commitizen/commands/changelog.py b/commitizen/commands/changelog.py
index 69d223ed49..d4b577846e 100644
--- a/commitizen/commands/changelog.py
+++ b/commitizen/commands/changelog.py
@@ -1,9 +1,9 @@
+from __future__ import annotations
+
import os.path
from difflib import SequenceMatcher
from operator import itemgetter
-from typing import Callable, Dict, List, Optional
-
-from packaging.version import parse
+from typing import Callable
from commitizen import bump, changelog, defaults, factory, git, out, version_types
from commitizen.config import BaseConfig
@@ -16,6 +16,7 @@
NotAllowed,
)
from commitizen.git import GitTag, smart_open
+from packaging.version import parse
class Changelog:
@@ -65,7 +66,7 @@ def __init__(self, config: BaseConfig, args):
version_type = self.config.settings.get("version_type")
self.version_type = version_type and version_types.VERSION_TYPES[version_type]
- def _find_incremental_rev(self, latest_version: str, tags: List[GitTag]) -> str:
+ def _find_incremental_rev(self, latest_version: str, tags: list[GitTag]) -> str:
"""Try to find the 'start_rev'.
We use a similarity approach. We know how to parse the version from the markdown
@@ -92,7 +93,7 @@ def _find_incremental_rev(self, latest_version: str, tags: List[GitTag]) -> str:
return start_rev
def write_changelog(
- self, changelog_out: str, lines: List[str], changelog_meta: Dict
+ self, changelog_out: str, lines: list[str], changelog_meta: dict
):
if not isinstance(self.file_name, str):
raise NotAllowed(
@@ -101,9 +102,9 @@ def write_changelog(
f"or the setting `changelog_file` in {self.config.path}"
)
- changelog_hook: Optional[Callable] = self.cz.changelog_hook
+ changelog_hook: Callable | None = self.cz.changelog_hook
with smart_open(self.file_name, "w") as changelog_file:
- partial_changelog: Optional[str] = None
+ partial_changelog: str | None = None
if self.incremental:
new_lines = changelog.incremental_build(
changelog_out, lines, changelog_meta
@@ -120,11 +121,11 @@ def __call__(self):
changelog_pattern = self.cz.changelog_pattern
start_rev = self.start_rev
unreleased_version = self.unreleased_version
- changelog_meta: Dict = {}
- change_type_map: Optional[Dict] = self.change_type_map
- changelog_message_builder_hook: Optional[
+ changelog_meta: dict = {}
+ change_type_map: dict | None = self.change_type_map
+ changelog_message_builder_hook: None | (
Callable
- ] = self.cz.changelog_message_builder_hook
+ ) = self.cz.changelog_message_builder_hook
merge_prerelease = self.merge_prerelease
if not changelog_pattern or not commit_parser:
diff --git a/commitizen/commands/check.py b/commitizen/commands/check.py
index e42dbf7f49..401cc9cec0 100644
--- a/commitizen/commands/check.py
+++ b/commitizen/commands/check.py
@@ -1,7 +1,9 @@
+from __future__ import annotations
+
import os
import re
import sys
-from typing import Any, Dict, Optional
+from typing import Any
from commitizen import factory, git, out
from commitizen.config import BaseConfig
@@ -15,7 +17,7 @@
class Check:
"""Check if the current commit msg matches the commitizen format."""
- def __init__(self, config: BaseConfig, arguments: Dict[str, Any], cwd=os.getcwd()):
+ def __init__(self, config: BaseConfig, arguments: dict[str, Any], cwd=os.getcwd()):
"""Initial check command.
Args:
@@ -23,9 +25,9 @@ def __init__(self, config: BaseConfig, arguments: Dict[str, Any], cwd=os.getcwd(
arguments: All the flags provided by the user
cwd: Current work directory
"""
- self.commit_msg_file: Optional[str] = arguments.get("commit_msg_file")
- self.commit_msg: Optional[str] = arguments.get("message")
- self.rev_range: Optional[str] = arguments.get("rev_range")
+ self.commit_msg_file: str | None = arguments.get("commit_msg_file")
+ self.commit_msg: str | None = arguments.get("message")
+ self.rev_range: str | None = arguments.get("rev_range")
self.allow_abort: bool = bool(
arguments.get("allow_abort", config.settings["allow_abort"])
)
@@ -41,7 +43,7 @@ def _valid_command_argument(self):
for arg in (self.commit_msg_file, self.commit_msg, self.rev_range)
)
if num_exclusive_args_provided == 0 and not sys.stdin.isatty():
- self.commit_msg: Optional[str] = sys.stdin.read()
+ self.commit_msg: str | None = sys.stdin.read()
elif num_exclusive_args_provided != 1:
raise InvalidCommandArgumentError(
(
diff --git a/commitizen/commands/init.py b/commitizen/commands/init.py
index 351b91007d..52ca081423 100644
--- a/commitizen/commands/init.py
+++ b/commitizen/commands/init.py
@@ -1,6 +1,8 @@
+from __future__ import annotations
+
import os
import shutil
-from typing import Any, Dict, List, Optional
+from typing import Any
import questionary
import yaml
@@ -54,10 +56,10 @@ def is_php_composer(self) -> bool:
return os.path.isfile("composer.json")
@property
- def latest_tag(self) -> Optional[str]:
+ def latest_tag(self) -> str | None:
return get_latest_tag_name()
- def tags(self) -> Optional[List]:
+ def tags(self) -> list | None:
"""Not a property, only use if necessary"""
if self.latest_tag is None:
return None
@@ -285,7 +287,7 @@ def _ask_update_changelog_on_bump(self) -> bool:
).unsafe_ask()
return update_changelog_on_bump
- def _exec_install_pre_commit_hook(self, hook_types: List[str]):
+ def _exec_install_pre_commit_hook(self, hook_types: list[str]):
cmd_str = self._gen_pre_commit_cmd(hook_types)
c = cmd.run(cmd_str)
if c.return_code != 0:
@@ -297,7 +299,7 @@ def _exec_install_pre_commit_hook(self, hook_types: List[str]):
)
raise InitFailedError(err_msg)
- def _gen_pre_commit_cmd(self, hook_types: List[str]) -> str:
+ def _gen_pre_commit_cmd(self, hook_types: list[str]) -> str:
"""Generate pre-commit command according to given hook types"""
if not hook_types:
raise ValueError("At least 1 hook type should be provided.")
@@ -306,7 +308,7 @@ def _gen_pre_commit_cmd(self, hook_types: List[str]) -> str:
)
return cmd_str
- def _install_pre_commit_hook(self, hook_types: Optional[List[str]] = None):
+ def _install_pre_commit_hook(self, hook_types: list[str] | None = None):
pre_commit_config_filename = ".pre-commit-config.yaml"
cz_hook_config = {
"repo": "https://github.com/commitizen-tools/commitizen",
@@ -348,6 +350,6 @@ def _install_pre_commit_hook(self, hook_types: Optional[List[str]] = None):
self._exec_install_pre_commit_hook(hook_types)
out.write("commitizen pre-commit hook is now installed in your '.git'\n")
- def _update_config_file(self, values: Dict[str, Any]):
+ def _update_config_file(self, values: dict[str, Any]):
for key, value in values.items():
self.config.set_key(key, value)
diff --git a/commitizen/config/__init__.py b/commitizen/config/__init__.py
index e4e414437c..09e38ca96e 100644
--- a/commitizen/config/__init__.py
+++ b/commitizen/config/__init__.py
@@ -1,5 +1,6 @@
+from __future__ import annotations
+
from pathlib import Path
-from typing import Union
from commitizen import defaults, git
@@ -26,7 +27,7 @@ def read_cfg() -> BaseConfig:
if not filename.exists():
continue
- _conf: Union[TomlConfig, JsonConfig, YAMLConfig]
+ _conf: TomlConfig | JsonConfig | YAMLConfig
with open(filename, "rb") as f:
data: bytes = f.read()
diff --git a/commitizen/config/base_config.py b/commitizen/config/base_config.py
index 8935c4875d..3762b30589 100644
--- a/commitizen/config/base_config.py
+++ b/commitizen/config/base_config.py
@@ -1,5 +1,6 @@
+from __future__ import annotations
+
from pathlib import Path
-from typing import Optional, Union
from commitizen.defaults import DEFAULT_SETTINGS, Settings
@@ -7,14 +8,14 @@
class BaseConfig:
def __init__(self):
self._settings: Settings = DEFAULT_SETTINGS.copy()
- self._path: Optional[Path] = None
+ self._path: Path | None = None
@property
def settings(self) -> Settings:
return self._settings
@property
- def path(self) -> Optional[Path]:
+ def path(self) -> Path | None:
return self._path
def set_key(self, key, value):
@@ -28,8 +29,8 @@ def set_key(self, key, value):
def update(self, data: Settings) -> None:
self._settings.update(data)
- def add_path(self, path: Union[str, Path]) -> None:
+ def add_path(self, path: str | Path) -> None:
self._path = Path(path)
- def _parse_setting(self, data: Union[bytes, str]) -> None:
+ def _parse_setting(self, data: bytes | str) -> None:
raise NotImplementedError()
diff --git a/commitizen/config/json_config.py b/commitizen/config/json_config.py
index 29d76040f1..10d60de880 100644
--- a/commitizen/config/json_config.py
+++ b/commitizen/config/json_config.py
@@ -1,6 +1,7 @@
+from __future__ import annotations
+
import json
from pathlib import Path
-from typing import Union
from commitizen.exceptions import InvalidConfigurationError
from commitizen.git import smart_open
@@ -9,7 +10,7 @@
class JsonConfig(BaseConfig):
- def __init__(self, *, data: Union[bytes, str], path: Union[Path, str]):
+ def __init__(self, *, data: bytes | str, path: Path | str):
super(JsonConfig, self).__init__()
self.is_empty_config = False
self.add_path(path)
@@ -33,7 +34,7 @@ def set_key(self, key, value):
json.dump(parser, f, indent=2)
return self
- def _parse_setting(self, data: Union[bytes, str]) -> None:
+ def _parse_setting(self, data: bytes | str) -> None:
"""We expect to have a section in .cz.json looking like
```
diff --git a/commitizen/config/toml_config.py b/commitizen/config/toml_config.py
index 0d09c90796..ee379aab77 100644
--- a/commitizen/config/toml_config.py
+++ b/commitizen/config/toml_config.py
@@ -1,6 +1,7 @@
+from __future__ import annotations
+
import os
from pathlib import Path
-from typing import Union
from tomlkit import exceptions, parse, table
@@ -8,7 +9,7 @@
class TomlConfig(BaseConfig):
- def __init__(self, *, data: Union[bytes, str], path: Union[Path, str]):
+ def __init__(self, *, data: bytes | str, path: Path | str):
super(TomlConfig, self).__init__()
self.is_empty_config = False
self._parse_setting(data)
@@ -41,7 +42,7 @@ def set_key(self, key, value):
f.write(parser.as_string().encode("utf-8"))
return self
- def _parse_setting(self, data: Union[bytes, str]) -> None:
+ def _parse_setting(self, data: bytes | str) -> None:
"""We expect to have a section in pyproject looking like
```
diff --git a/commitizen/config/yaml_config.py b/commitizen/config/yaml_config.py
index 12c3238465..d67d7fb253 100644
--- a/commitizen/config/yaml_config.py
+++ b/commitizen/config/yaml_config.py
@@ -1,5 +1,6 @@
+from __future__ import annotations
+
from pathlib import Path
-from typing import Union
import yaml
@@ -9,7 +10,7 @@
class YAMLConfig(BaseConfig):
- def __init__(self, *, data: Union[bytes, str], path: Union[Path, str]):
+ def __init__(self, *, data: bytes | str, path: Path | str):
super(YAMLConfig, self).__init__()
self.is_empty_config = False
self._parse_setting(data)
@@ -19,7 +20,7 @@ def init_empty_config_content(self):
with smart_open(self.path, "a") as json_file:
yaml.dump({"commitizen": {}}, json_file, explicit_start=True)
- def _parse_setting(self, data: Union[bytes, str]) -> None:
+ def _parse_setting(self, data: bytes | str) -> None:
"""We expect to have a section in cz.yaml looking like
```
diff --git a/commitizen/cz/__init__.py b/commitizen/cz/__init__.py
index 5b974a99f2..f889dbd842 100644
--- a/commitizen/cz/__init__.py
+++ b/commitizen/cz/__init__.py
@@ -3,7 +3,7 @@
import importlib
import pkgutil
import warnings
-from typing import Iterable, Optional
+from typing import Iterable
import importlib_metadata as metadata
@@ -11,7 +11,7 @@
def discover_plugins(
- path: Optional[Iterable[str]] = None,
+ path: Iterable[str] | None = None,
) -> dict[str, type[BaseCommitizen]]:
"""Discover commitizen plugins on the path
diff --git a/commitizen/cz/base.py b/commitizen/cz/base.py
index d24a2254f8..900e62d6b8 100644
--- a/commitizen/cz/base.py
+++ b/commitizen/cz/base.py
@@ -1,5 +1,7 @@
+from __future__ import annotations
+
from abc import ABCMeta, abstractmethod
-from typing import Callable, Dict, List, Optional, Tuple
+from typing import Callable
from prompt_toolkit.styles import Style, merge_styles
@@ -9,10 +11,10 @@
class BaseCommitizen(metaclass=ABCMeta):
- bump_pattern: Optional[str] = None
- bump_map: Optional[Dict[str, str]] = None
- bump_map_major_version_zero: Optional[Dict[str, str]] = None
- default_style_config: List[Tuple[str, str]] = [
+ bump_pattern: str | None = None
+ bump_map: dict[str, str] | None = None
+ bump_map_major_version_zero: dict[str, str] | None = None
+ default_style_config: list[tuple[str, str]] = [
("qmark", "fg:#ff9d00 bold"),
("question", "bold"),
("answer", "fg:#ff9d00 bold"),
@@ -28,18 +30,18 @@ class BaseCommitizen(metaclass=ABCMeta):
# The whole subject will be parsed as message by default
# This allows supporting changelog for any rule system.
# It can be modified per rule
- commit_parser: Optional[str] = r"(?P.*)"
- changelog_pattern: Optional[str] = r".*"
- change_type_map: Optional[Dict[str, str]] = None
- change_type_order: Optional[List[str]] = None
+ commit_parser: str | None = r"(?P.*)"
+ changelog_pattern: str | None = r".*"
+ change_type_map: dict[str, str] | None = None
+ change_type_order: list[str] | None = None
# Executed per message parsed by the commitizen
- changelog_message_builder_hook: Optional[
- Callable[[Dict, git.GitCommit], Dict]
- ] = None
+ changelog_message_builder_hook: None | (
+ Callable[[dict, git.GitCommit], dict]
+ ) = None
# Executed only at the end of the changelog generation
- changelog_hook: Optional[Callable[[str, Optional[str]], str]] = None
+ changelog_hook: Callable[[str, str | None], str] | None = None
def __init__(self, config: BaseConfig):
self.config = config
@@ -63,19 +65,19 @@ def style(self):
]
)
- def example(self) -> Optional[str]:
+ def example(self) -> str | None:
"""Example of the commit message."""
raise NotImplementedError("Not Implemented yet")
- def schema(self) -> Optional[str]:
+ def schema(self) -> str | None:
"""Schema definition of the commit message."""
raise NotImplementedError("Not Implemented yet")
- def schema_pattern(self) -> Optional[str]:
+ def schema_pattern(self) -> str | None:
"""Regex matching the schema used for message validation."""
raise NotImplementedError("Not Implemented yet")
- def info(self) -> Optional[str]:
+ def info(self) -> str | None:
"""Information about the standardized commit message."""
raise NotImplementedError("Not Implemented yet")
diff --git a/commitizen/cz/conventional_commits/conventional_commits.py b/commitizen/cz/conventional_commits/conventional_commits.py
index 58026a72f3..cd26e4c44f 100644
--- a/commitizen/cz/conventional_commits/conventional_commits.py
+++ b/commitizen/cz/conventional_commits/conventional_commits.py
@@ -192,7 +192,7 @@ def schema(self) -> str:
def schema_pattern(self) -> str:
PATTERN = (
- r"(?s)" # To explictly make . match new line
+ r"(?s)" # To explicitly make . match new line
r"(build|ci|docs|feat|fix|perf|refactor|style|test|chore|revert|bump)" # type
r"(\(\S+\))?!?:" # scope
r"( [^\n\r]+)" # subject
diff --git a/commitizen/cz/customize/customize.py b/commitizen/cz/customize/customize.py
index 3eac0a1df5..28ea5047bc 100644
--- a/commitizen/cz/customize/customize.py
+++ b/commitizen/cz/customize/customize.py
@@ -1,9 +1,10 @@
+from __future__ import annotations
+
try:
from jinja2 import Template
except ImportError:
from string import Template # type: ignore
-from typing import Optional
from commitizen import defaults
from commitizen.config import BaseConfig
@@ -67,16 +68,16 @@ def message(self, answers: dict) -> str:
else:
return message_template.render(**answers)
- def example(self) -> Optional[str]:
+ def example(self) -> str | None:
return self.custom_settings.get("example")
- def schema_pattern(self) -> Optional[str]:
+ def schema_pattern(self) -> str | None:
return self.custom_settings.get("schema_pattern")
- def schema(self) -> Optional[str]:
+ def schema(self) -> str | None:
return self.custom_settings.get("schema")
- def info(self) -> Optional[str]:
+ def info(self) -> str | None:
info_path = self.custom_settings.get("info_path")
info = self.custom_settings.get("info")
if info_path:
diff --git a/commitizen/cz/utils.py b/commitizen/cz/utils.py
index 0c5aedadaa..ea13be22c5 100644
--- a/commitizen/cz/utils.py
+++ b/commitizen/cz/utils.py
@@ -1,11 +1,11 @@
from commitizen.cz import exceptions
-def required_validator(ans, msg=None):
- if not ans:
+def required_validator(answer, msg=None):
+ if not answer:
raise exceptions.AnswerRequiredError(msg)
- return ans
+ return answer
-def multiple_line_breaker(ans, sep="|"):
- return "\n".join(line.strip() for line in ans.split(sep) if line)
+def multiple_line_breaker(answer, sep="|"):
+ return "\n".join(line.strip() for line in answer.split(sep) if line)
diff --git a/commitizen/defaults.py b/commitizen/defaults.py
index a7c285edba..bc0b558148 100644
--- a/commitizen/defaults.py
+++ b/commitizen/defaults.py
@@ -1,7 +1,9 @@
+from __future__ import annotations
+
import pathlib
import sys
from collections import OrderedDict
-from typing import Any, Dict, Iterable, List, MutableMapping, Optional, Tuple, Union
+from typing import Any, Iterable, MutableMapping
if sys.version_info < (3, 8):
from typing_extensions import TypedDict
@@ -14,47 +16,47 @@
class CzSettings(TypedDict, total=False):
bump_pattern: str
- bump_map: "OrderedDict[str, str]"
- bump_map_major_version_zero: "OrderedDict[str, str]"
- change_type_order: List[str]
+ bump_map: OrderedDict[str, str]
+ bump_map_major_version_zero: OrderedDict[str, str]
+ change_type_order: list[str]
questions: Questions
- example: Optional[str]
- schema_pattern: Optional[str]
- schema: Optional[str]
- info_path: Union[str, pathlib.Path]
+ example: str | None
+ schema_pattern: str | None
+ schema: str | None
+ info_path: str | pathlib.Path
info: str
message_template: str
- commit_parser: Optional[str]
- changelog_pattern: Optional[str]
- change_type_map: Optional[Dict[str, str]]
+ commit_parser: str | None
+ changelog_pattern: str | None
+ change_type_map: dict[str, str] | None
class Settings(TypedDict, total=False):
name: str
- version: Optional[str]
- version_files: List[str]
- version_provider: Optional[str]
- tag_format: Optional[str]
- bump_message: Optional[str]
+ version: str | None
+ version_files: list[str]
+ version_provider: str | None
+ tag_format: str | None
+ bump_message: str | None
allow_abort: bool
changelog_file: str
changelog_incremental: bool
- changelog_start_rev: Optional[str]
+ changelog_start_rev: str | None
changelog_merge_prerelease: bool
update_changelog_on_bump: bool
use_shortcuts: bool
- style: Optional[List[Tuple[str, str]]]
+ style: list[tuple[str, str]] | None
customize: CzSettings
major_version_zero: bool
- pre_bump_hooks: Optional[List[str]]
- post_bump_hooks: Optional[List[str]]
+ pre_bump_hooks: list[str] | None
+ post_bump_hooks: list[str] | None
prerelease_offset: int
- version_type: Optional[str]
+ version_type: str | None
name: str = "cz_conventional_commits"
-config_files: List[str] = [
+config_files: list[str] = [
"pyproject.toml",
".cz.toml",
".cz.json",
diff --git a/commitizen/git.py b/commitizen/git.py
index 2c2cb5b368..1c9c86dfc1 100644
--- a/commitizen/git.py
+++ b/commitizen/git.py
@@ -1,9 +1,10 @@
+from __future__ import annotations
+
import os
from enum import Enum
from os import linesep
from pathlib import Path
from tempfile import NamedTemporaryFile
-from typing import List, Optional
from commitizen import cmd, out
from commitizen.exceptions import GitCommandError
@@ -73,8 +74,7 @@ def date(self):
return self._date
@classmethod
- def from_line(cls, line: str, inner_delimiter: str) -> "GitTag":
-
+ def from_line(cls, line: str, inner_delimiter: str) -> GitTag:
name, objectname, date, obj = line.split(inner_delimiter)
if not obj:
obj = objectname
@@ -102,11 +102,11 @@ def commit(message: str, args: str = "") -> cmd.Command:
def get_commits(
- start: Optional[str] = None,
+ start: str | None = None,
end: str = "HEAD",
*,
args: str = "",
-) -> List[GitCommit]:
+) -> list[GitCommit]:
"""Get the commits between start and end."""
git_log_entries = _get_log_as_str_list(start, end, args)
git_commits = []
@@ -140,7 +140,7 @@ def get_filenames_in_commit(git_reference: str = ""):
raise GitCommandError(c.err)
-def get_tags(dateformat: str = "%Y-%m-%d") -> List[GitTag]:
+def get_tags(dateformat: str = "%Y-%m-%d") -> list[GitTag]:
inner_delimiter = "---inner_delimiter---"
formatter = (
f'"%(refname:lstrip=2){inner_delimiter}'
@@ -175,21 +175,21 @@ def is_signed_tag(tag: str) -> bool:
return cmd.run(f"git tag -v {tag}").return_code == 0
-def get_latest_tag_name() -> Optional[str]:
+def get_latest_tag_name() -> str | None:
c = cmd.run("git describe --abbrev=0 --tags")
if c.err:
return None
return c.out.strip()
-def get_tag_names() -> List[Optional[str]]:
+def get_tag_names() -> list[str | None]:
c = cmd.run("git tag --list")
if c.err:
return []
return [tag.strip() for tag in c.out.split("\n") if tag.strip()]
-def find_git_project_root() -> Optional[Path]:
+def find_git_project_root() -> Path | None:
c = cmd.run("git rev-parse --show-toplevel")
if not c.err:
return Path(c.out.strip())
@@ -216,7 +216,7 @@ def get_eol_style() -> EOLTypes:
# We enumerate the EOL types of the response of
# `git config core.eol`, and map it to our enumration EOLTypes.
#
- # It is just like the varient of the "match" syntax.
+ # It is just like the variant of the "match" syntax.
map = {
"lf": EOLTypes.LF,
"crlf": EOLTypes.CRLF,
@@ -237,7 +237,7 @@ def smart_open(*args, **kargs):
return open(*args, newline=get_eol_style().get_eol_for_open(), **kargs)
-def _get_log_as_str_list(start: Optional[str], end: str, args: str) -> List[str]:
+def _get_log_as_str_list(start: str | None, end: str, args: str) -> list[str]:
"""Get string representation of each log entry"""
delimiter = "----------commit-delimiter----------"
log_format: str = "%H%n%s%n%an%n%ae%n%b"
diff --git a/commitizen/providers.py b/commitizen/providers.py
index 17b99e7b23..5e8b67bb69 100644
--- a/commitizen/providers.py
+++ b/commitizen/providers.py
@@ -4,7 +4,7 @@
import re
from abc import ABC, abstractmethod
from pathlib import Path
-from typing import Any, Callable, ClassVar, Optional, cast
+from typing import Any, Callable, ClassVar, cast
import importlib_metadata as metadata
import tomlkit
@@ -115,14 +115,25 @@ def set(self, pyproject: tomlkit.TOMLDocument, version: str):
class CargoProvider(TomlProvider):
"""
Cargo version management
+
+ With support for `workspaces`
"""
filename = "Cargo.toml"
def get(self, document: tomlkit.TOMLDocument) -> str:
- return document["package"]["version"] # type: ignore
+ try:
+ return document["package"]["version"] # type: ignore
+ except tomlkit.exceptions.NonExistentKey:
+ ...
+ return document["workspace"]["package"]["version"] # type: ignore
def set(self, document: tomlkit.TOMLDocument, version: str):
+ try:
+ document["workspace"]["package"]["version"] = version # type: ignore
+ return
+ except tomlkit.exceptions.NonExistentKey:
+ ...
document["package"]["version"] = version # type: ignore
@@ -184,14 +195,14 @@ class ScmProvider(VersionProvider):
"$devrelease": r"(?P\.dev\d+)?",
}
- def _tag_format_matcher(self) -> Callable[[str], Optional[str]]:
+ def _tag_format_matcher(self) -> Callable[[str], str | None]:
pattern = self.config.settings.get("tag_format") or VERSION_PATTERN
for var, tag_pattern in self.TAG_FORMAT_REGEXS.items():
pattern = pattern.replace(var, tag_pattern)
regex = re.compile(f"^{pattern}$", re.VERBOSE)
- def matcher(tag: str) -> Optional[str]:
+ def matcher(tag: str) -> str | None:
match = regex.match(tag)
if not match:
return None
diff --git a/commitizen/version_types.py b/commitizen/version_types.py
index 39a965e0c3..4eaa0f3519 100644
--- a/commitizen/version_types.py
+++ b/commitizen/version_types.py
@@ -1,5 +1,6 @@
+from __future__ import annotations
+
import sys
-from typing import Optional, Tuple, Union
if sys.version_info >= (3, 8):
from typing import Protocol as _Protocol
@@ -10,14 +11,14 @@
class VersionProtocol(_Protocol):
- def __init__(self, _version: Union[Version, str]):
+ def __init__(self, _version: Version | str):
raise NotImplementedError("must be implemented")
def __str__(self) -> str:
raise NotImplementedError("must be implemented")
@property
- def release(self) -> Tuple[int, ...]:
+ def release(self) -> tuple[int, ...]:
raise NotImplementedError("must be implemented")
@property
@@ -25,11 +26,11 @@ def is_prerelease(self) -> bool:
raise NotImplementedError("must be implemented")
@property
- def pre(self) -> Optional[Tuple[str, int]]:
+ def pre(self) -> tuple[str, int] | None:
raise NotImplementedError("must be implemented")
@property
- def local(self) -> Optional[str]:
+ def local(self) -> str | None:
raise NotImplementedError("must be implemented")
@property
@@ -42,7 +43,7 @@ def __init__(self, version: str):
self._version = Version(version)
@property
- def release(self) -> Tuple[int, ...]:
+ def release(self) -> tuple[int, ...]:
return self._version.release
@property
@@ -50,11 +51,11 @@ def is_prerelease(self) -> bool:
return self._version.is_prerelease
@property
- def pre(self) -> Optional[Tuple[str, int]]:
+ def pre(self) -> tuple[str, int] | None:
return self._version.pre
@property
- def local(self) -> Optional[str]:
+ def local(self) -> str | None:
return self._version.local
@property
diff --git a/docs/README.md b/docs/README.md
index 75f46c7b7c..2e14a37b1e 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -19,14 +19,14 @@
Commitizen is release management tool designed for teams.
-Commitizen assumes your team uses a standard way of commiting rules
+Commitizen assumes your team uses a standard way of committing rules
and from that foundation, it can bump your project's version, create
the changelog, and update files.
By default, commitizen uses [conventional commits][conventional_commits], but you
can build your own set of rules, and publish them.
-Using a standarized set of rules to write commits, makes commits easier to read, and enforces writing
+Using a standardized set of rules to write commits, makes commits easier to read, and enforces writing
descriptive commits.
### Features
diff --git a/docs/bump.md b/docs/bump.md
index 1c96fb43aa..35c7daab12 100644
--- a/docs/bump.md
+++ b/docs/bump.md
@@ -144,9 +144,9 @@ __version__ = "1.21.0"
and `setup.py`.
```python
-...
- version="1.0.5"
-...
+from setuptools import setup
+
+setup(..., version="1.0.5", ...)
```
If `--check-consistency` is used, commitizen will check whether the current version in `pyproject.toml`
@@ -184,7 +184,7 @@ will be sent to the stdout, and any other message generated by the bump will be
sent to stderr.
If `--changelog` is not used with this command, it is still smart enough to
-understand that the user wants to create a changelog. It is recommened to be
+understand that the user wants to create a changelog. It is recommended to be
explicit and use `--changelog` (or the setting `update_changelog_on_bump`).
This command is useful to "transport" the newly created changelog.
@@ -484,7 +484,7 @@ release. During execution of the script, some environment variables are availabl
| `CZ_POST_CURRENT_VERSION` | Current version, after the bump |
| `CZ_POST_CURRENT_TAG_VERSION` | Current version tag, after the bump |
| `CZ_POST_MESSAGE` | Commit message of the bump |
-| `CZ_POST_INCREMENT` | Whether this wass a `MAJOR`, `MINOR` or `PATH` release |
+| `CZ_POST_INCREMENT` | Whether this was a `MAJOR`, `MINOR` or `PATH` release |
| `CZ_POST_CHANGELOG_FILE_NAME` | Path to the changelog file, if available |
```toml
diff --git a/docs/contributing.md b/docs/contributing.md
index 21a7ffb39d..266a087a77 100644
--- a/docs/contributing.md
+++ b/docs/contributing.md
@@ -20,7 +20,7 @@ If you're a first-time contributor, you can check the issues with [good first is
5. Check out a new branch and add your modification.
6. Add test cases for all your changes.
(We use [CodeCov](https://codecov.io/) to ensure our test coverage does not drop.)
-7. Use [commitizen](https://github.com/commitizen-tools/commitizen) to do git commit. We follow [conventional commmits][conventional-commmits]
+7. Use [commitizen](https://github.com/commitizen-tools/commitizen) to do git commit. We follow [conventional commits][conventional-commits]
8. Run `./scripts/format` and `./scripts/test` to ensure you follow the coding style and the tests pass.
9. Optionally, update the `README.md`.
9. **Do not** update the `CHANGELOG.md`, it will be automatically created after merging to `master`.
diff --git a/docs/customization.md b/docs/customization.md
index 3ed8bd30ba..610d1f0452 100644
--- a/docs/customization.md
+++ b/docs/customization.md
@@ -149,7 +149,7 @@ commitizen:
| Parameter | Type | Default | Description |
| ------------------- | ------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `questions` | `Questions` | `None` | Questions regarding the commit message. Detailed below. The type `Questions` is an alias to `Iterable[MutableMapping[str, Any]]` which is definied in `commitizen.defaults`. It expects a list of dictionaries. |
+| `questions` | `Questions` | `None` | Questions regarding the commit message. Detailed below. The type `Questions` is an alias to `Iterable[MutableMapping[str, Any]]` which is defined in `commitizen.defaults`. It expects a list of dictionaries. |
| `message_template` | `str` | `None` | The template for generating message from the given answers. `message_template` should either follow [Jinja2][jinja2] formatting specification, and all the variables in this template should be defined in `name` in `questions` |
| `example` | `str` | `None` | (OPTIONAL) Provide an example to help understand the style. Used by `cz example`. |
| `schema` | `str` | `None` | (OPTIONAL) Show the schema used. Used by `cz schema`. |
@@ -215,50 +215,42 @@ Inherit from `BaseCommitizen`, and you must define `questions` and `message`. Th
from commitizen.cz.base import BaseCommitizen
from commitizen.defaults import Questions
+
class JiraCz(BaseCommitizen):
# Questions = Iterable[MutableMapping[str, Any]]
# It expects a list with dictionaries.
def questions(self) -> Questions:
"""Questions regarding the commit message."""
questions = [
- {
- 'type': 'input',
- 'name': 'title',
- 'message': 'Commit title'
- },
- {
- 'type': 'input',
- 'name': 'issue',
- 'message': 'Jira Issue number:'
- },
+ {"type": "input", "name": "title", "message": "Commit title"},
+ {"type": "input", "name": "issue", "message": "Jira Issue number:"},
]
return questions
def message(self, answers: dict) -> str:
"""Generate the message with the given answers."""
- return '{0} (#{1})'.format(answers['title'], answers['issue'])
+ return "{0} (#{1})".format(answers["title"], answers["issue"])
def example(self) -> str:
"""Provide an example to help understand the style (OPTIONAL)
Used by `cz example`.
"""
- return 'Problem with user (#321)'
+ return "Problem with user (#321)"
def schema(self) -> str:
"""Show the schema used (OPTIONAL)
Used by `cz schema`.
"""
- return ' ()'
+ return " ()"
def info(self) -> str:
"""Explanation of the commit rules. (OPTIONAL)
Used by `cz info`.
"""
- return 'We use this because is useful'
-
+ return "We use this because is useful"
```
The next file required is `setup.py` modified from flask version.
@@ -267,17 +259,13 @@ The next file required is `setup.py` modified from flask version.
from setuptools import setup
setup(
- name='JiraCommitizen',
- version='0.1.0',
- py_modules=['cz_jira'],
- license='MIT',
- long_description='this is a long description',
- install_requires=['commitizen'],
- entry_points = {
- 'commitizen.plugin': [
- 'cz_jira = cz_jira:JiraCz'
- ]
- }
+ name="JiraCommitizen",
+ version="0.1.0",
+ py_modules=["cz_jira"],
+ license="MIT",
+ long_description="this is a long description",
+ install_requires=["commitizen"],
+ entry_points={"commitizen.plugin": ["cz_jira = cz_jira:JiraCz"]},
)
```
@@ -338,6 +326,7 @@ from commitizen.cz.base import BaseCommitizen
import chat
import compliance
+
class StrangeCommitizen(BaseCommitizen):
changelog_pattern = r"^(break|new|fix|hotfix)"
commit_parser = r"^(?Pfeat|fix|refactor|perf|BREAKING CHANGE)(?:\((?P[^()\r\n]*)\)|\()?(?P!)?:\s(?P.*)?"
@@ -345,16 +334,22 @@ class StrangeCommitizen(BaseCommitizen):
"feat": "Features",
"fix": "Bug Fixes",
"refactor": "Code Refactor",
- "perf": "Performance improvements"
+ "perf": "Performance improvements",
}
- def changelog_message_builder_hook(self, parsed_message: dict, commit: git.GitCommit) -> dict:
+ def changelog_message_builder_hook(
+ self, parsed_message: dict, commit: git.GitCommit
+ ) -> dict:
rev = commit.rev
m = parsed_message["message"]
- parsed_message["message"] = f"{m} {rev} [{commit.author}]({commit.author_email})"
+ parsed_message[
+ "message"
+ ] = f"{m} {rev} [{commit.author}]({commit.author_email})"
return parsed_message
- def changelog_hook(self, full_changelog: str, partial_changelog: Optional[str]) -> str:
+ def changelog_hook(
+ self, full_changelog: str, partial_changelog: Optional[str]
+ ) -> str:
"""Executed at the end of the changelog generation
full_changelog: it's the output about to being written into the file
@@ -368,7 +363,7 @@ class StrangeCommitizen(BaseCommitizen):
chat.room("#committers").notify(partial_changelog)
if full_changelog:
compliance.send(full_changelog)
- full_changelog.replace(' fix ', ' **fix** ')
+ full_changelog.replace(" fix ", " **fix** ")
return full_changelog
```
@@ -381,6 +376,7 @@ If you want `commitizen` to catch your exception and print the message, you'll h
```python
from commitizen.cz.exception import CzException
+
class NoSubjectProvidedException(CzException):
...
```
@@ -402,9 +398,11 @@ If you were having a `CzPlugin` class in a `cz_plugin.py` module like this:
```python
from commitizen.cz.base import BaseCommitizen
+
class PluginCz(BaseCommitizen):
...
+
discover_this = PluginCz
```
@@ -413,6 +411,7 @@ Then remove the `discover_this` line:
```python
from commitizen.cz.base import BaseCommitizen
+
class PluginCz(BaseCommitizen):
...
```
@@ -423,16 +422,11 @@ and expose the class as entrypoint in you setuptools:
from setuptools import setup
setup(
- name='MyPlugin',
- version='0.1.0',
- py_modules=['cz_plugin'],
- ...
- entry_points = {
- 'commitizen.plugin': [
- 'plugin = cz_plugin:PluginCz'
- ]
- }
- ...
+ name="MyPlugin",
+ version="0.1.0",
+ py_modules=["cz_plugin"],
+ entry_points={"commitizen.plugin": ["plugin = cz_plugin:PluginCz"]},
+ ...,
)
```
diff --git a/docs/exit_codes.md b/docs/exit_codes.md
index e7c7454478..c7b510ea3a 100644
--- a/docs/exit_codes.md
+++ b/docs/exit_codes.md
@@ -33,4 +33,4 @@ These exit codes can be found in `commitizen/exceptions.py::ExitCode`.
| GitCommandError | 23 | Unexpected failure while calling a git command |
| InvalidManualVersion | 24 | Manually provided version is invalid |
| InitFailedError | 25 | Failed to initialize pre-commit |
-| VersionProviderUnknown | 26 | `version_provider` setting is set to an unknown version provider indentifier |
+| VersionProviderUnknown | 26 | `version_provider` setting is set to an unknown version provider identifier |
diff --git a/docs/tutorials/auto_prepare_commit_message.md b/docs/tutorials/auto_prepare_commit_message.md
index 8def5f2e28..46c807d3d4 100644
--- a/docs/tutorials/auto_prepare_commit_message.md
+++ b/docs/tutorials/auto_prepare_commit_message.md
@@ -12,7 +12,7 @@ use a [prepare-commit-msg Git hook](prepare-commit-msg-docs):
> This hook is invoked by git-commit right after preparing the
> default log message, and before the editor is started.
-To automatically perform arbitrary cleanup steps after a succesful commit you can use a
+To automatically perform arbitrary cleanup steps after a successful commit you can use a
[post-commit Git hook][post-commit-docs]:
> This hook is invoked by git-commit. It takes no parameters, and is invoked after a
diff --git a/poetry.lock b/poetry.lock
index c96bb184ea..a1b7804d3d 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,4 +1,4 @@
-# This file is automatically @generated by Poetry 1.4.0 and should not be changed by hand.
+# This file is automatically @generated by Poetry and should not be changed by hand.
[[package]]
name = "appnope"
@@ -14,14 +14,14 @@ files = [
[[package]]
name = "argcomplete"
-version = "3.0.6"
+version = "3.0.8"
description = "Bash tab completion for argparse"
category = "main"
optional = false
python-versions = ">=3.6"
files = [
- {file = "argcomplete-3.0.6-py3-none-any.whl", hash = "sha256:798f28e11dc141f415879497599316a8a9126672a883064b851597a0d94be8a9"},
- {file = "argcomplete-3.0.6.tar.gz", hash = "sha256:9fe49c66ba963b81b64025f74bfbd0275619a6bde1c7370654dc365d4ecc9a0b"},
+ {file = "argcomplete-3.0.8-py3-none-any.whl", hash = "sha256:e36fd646839933cbec7941c662ecb65338248667358dd3d968405a4506a60d9b"},
+ {file = "argcomplete-3.0.8.tar.gz", hash = "sha256:b9ca96448e14fa459d7450a4ab5a22bbf9cee4ba7adddf03e65c398b5daeea28"},
]
[package.dependencies]
@@ -81,14 +81,14 @@ uvloop = ["uvloop (>=0.15.2)"]
[[package]]
name = "certifi"
-version = "2022.12.7"
+version = "2023.5.7"
description = "Python package for providing Mozilla's CA Bundle."
category = "dev"
optional = false
python-versions = ">=3.6"
files = [
- {file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"},
- {file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"},
+ {file = "certifi-2023.5.7-py3-none-any.whl", hash = "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716"},
+ {file = "certifi-2023.5.7.tar.gz", hash = "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7"},
]
[[package]]
@@ -218,63 +218,72 @@ files = [
[[package]]
name = "coverage"
-version = "7.2.3"
+version = "7.2.7"
description = "Code coverage measurement for Python"
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "coverage-7.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e58c0d41d336569d63d1b113bd573db8363bc4146f39444125b7f8060e4e04f5"},
- {file = "coverage-7.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:344e714bd0fe921fc72d97404ebbdbf9127bac0ca1ff66d7b79efc143cf7c0c4"},
- {file = "coverage-7.2.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:974bc90d6f6c1e59ceb1516ab00cf1cdfbb2e555795d49fa9571d611f449bcb2"},
- {file = "coverage-7.2.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0743b0035d4b0e32bc1df5de70fba3059662ace5b9a2a86a9f894cfe66569013"},
- {file = "coverage-7.2.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d0391fb4cfc171ce40437f67eb050a340fdbd0f9f49d6353a387f1b7f9dd4fa"},
- {file = "coverage-7.2.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4a42e1eff0ca9a7cb7dc9ecda41dfc7cbc17cb1d02117214be0561bd1134772b"},
- {file = "coverage-7.2.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:be19931a8dcbe6ab464f3339966856996b12a00f9fe53f346ab3be872d03e257"},
- {file = "coverage-7.2.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:72fcae5bcac3333a4cf3b8f34eec99cea1187acd55af723bcbd559adfdcb5535"},
- {file = "coverage-7.2.3-cp310-cp310-win32.whl", hash = "sha256:aeae2aa38395b18106e552833f2a50c27ea0000122bde421c31d11ed7e6f9c91"},
- {file = "coverage-7.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:83957d349838a636e768251c7e9979e899a569794b44c3728eaebd11d848e58e"},
- {file = "coverage-7.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dfd393094cd82ceb9b40df4c77976015a314b267d498268a076e940fe7be6b79"},
- {file = "coverage-7.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:182eb9ac3f2b4874a1f41b78b87db20b66da6b9cdc32737fbbf4fea0c35b23fc"},
- {file = "coverage-7.2.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bb1e77a9a311346294621be905ea8a2c30d3ad371fc15bb72e98bfcfae532df"},
- {file = "coverage-7.2.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca0f34363e2634deffd390a0fef1aa99168ae9ed2af01af4a1f5865e362f8623"},
- {file = "coverage-7.2.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55416d7385774285b6e2a5feca0af9652f7f444a4fa3d29d8ab052fafef9d00d"},
- {file = "coverage-7.2.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:06ddd9c0249a0546997fdda5a30fbcb40f23926df0a874a60a8a185bc3a87d93"},
- {file = "coverage-7.2.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:fff5aaa6becf2c6a1699ae6a39e2e6fb0672c2d42eca8eb0cafa91cf2e9bd312"},
- {file = "coverage-7.2.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ea53151d87c52e98133eb8ac78f1206498c015849662ca8dc246255265d9c3c4"},
- {file = "coverage-7.2.3-cp311-cp311-win32.whl", hash = "sha256:8f6c930fd70d91ddee53194e93029e3ef2aabe26725aa3c2753df057e296b925"},
- {file = "coverage-7.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:fa546d66639d69aa967bf08156eb8c9d0cd6f6de84be9e8c9819f52ad499c910"},
- {file = "coverage-7.2.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b2317d5ed777bf5a033e83d4f1389fd4ef045763141d8f10eb09a7035cee774c"},
- {file = "coverage-7.2.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be9824c1c874b73b96288c6d3de793bf7f3a597770205068c6163ea1f326e8b9"},
- {file = "coverage-7.2.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2c3b2803e730dc2797a017335827e9da6da0e84c745ce0f552e66400abdfb9a1"},
- {file = "coverage-7.2.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f69770f5ca1994cb32c38965e95f57504d3aea96b6c024624fdd5bb1aa494a1"},
- {file = "coverage-7.2.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1127b16220f7bfb3f1049ed4a62d26d81970a723544e8252db0efde853268e21"},
- {file = "coverage-7.2.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:aa784405f0c640940595fa0f14064d8e84aff0b0f762fa18393e2760a2cf5841"},
- {file = "coverage-7.2.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3146b8e16fa60427e03884301bf8209221f5761ac754ee6b267642a2fd354c48"},
- {file = "coverage-7.2.3-cp37-cp37m-win32.whl", hash = "sha256:1fd78b911aea9cec3b7e1e2622c8018d51c0d2bbcf8faaf53c2497eb114911c1"},
- {file = "coverage-7.2.3-cp37-cp37m-win_amd64.whl", hash = "sha256:0f3736a5d34e091b0a611964c6262fd68ca4363df56185902528f0b75dbb9c1f"},
- {file = "coverage-7.2.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:981b4df72c93e3bc04478153df516d385317628bd9c10be699c93c26ddcca8ab"},
- {file = "coverage-7.2.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c0045f8f23a5fb30b2eb3b8a83664d8dc4fb58faddf8155d7109166adb9f2040"},
- {file = "coverage-7.2.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f760073fcf8f3d6933178d67754f4f2d4e924e321f4bb0dcef0424ca0215eba1"},
- {file = "coverage-7.2.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c86bd45d1659b1ae3d0ba1909326b03598affbc9ed71520e0ff8c31a993ad911"},
- {file = "coverage-7.2.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:172db976ae6327ed4728e2507daf8a4de73c7cc89796483e0a9198fd2e47b462"},
- {file = "coverage-7.2.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d2a3a6146fe9319926e1d477842ca2a63fe99af5ae690b1f5c11e6af074a6b5c"},
- {file = "coverage-7.2.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:f649dd53833b495c3ebd04d6eec58479454a1784987af8afb77540d6c1767abd"},
- {file = "coverage-7.2.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7c4ed4e9f3b123aa403ab424430b426a1992e6f4c8fd3cb56ea520446e04d152"},
- {file = "coverage-7.2.3-cp38-cp38-win32.whl", hash = "sha256:eb0edc3ce9760d2f21637766c3aa04822030e7451981ce569a1b3456b7053f22"},
- {file = "coverage-7.2.3-cp38-cp38-win_amd64.whl", hash = "sha256:63cdeaac4ae85a179a8d6bc09b77b564c096250d759eed343a89d91bce8b6367"},
- {file = "coverage-7.2.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:20d1a2a76bb4eb00e4d36b9699f9b7aba93271c9c29220ad4c6a9581a0320235"},
- {file = "coverage-7.2.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ea748802cc0de4de92ef8244dd84ffd793bd2e7be784cd8394d557a3c751e21"},
- {file = "coverage-7.2.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21b154aba06df42e4b96fc915512ab39595105f6c483991287021ed95776d934"},
- {file = "coverage-7.2.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd214917cabdd6f673a29d708574e9fbdb892cb77eb426d0eae3490d95ca7859"},
- {file = "coverage-7.2.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c2e58e45fe53fab81f85474e5d4d226eeab0f27b45aa062856c89389da2f0d9"},
- {file = "coverage-7.2.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:87ecc7c9a1a9f912e306997ffee020297ccb5ea388421fe62a2a02747e4d5539"},
- {file = "coverage-7.2.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:387065e420aed3c71b61af7e82c7b6bc1c592f7e3c7a66e9f78dd178699da4fe"},
- {file = "coverage-7.2.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ea3f5bc91d7d457da7d48c7a732beaf79d0c8131df3ab278e6bba6297e23c6c4"},
- {file = "coverage-7.2.3-cp39-cp39-win32.whl", hash = "sha256:ae7863a1d8db6a014b6f2ff9c1582ab1aad55a6d25bac19710a8df68921b6e30"},
- {file = "coverage-7.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:3f04becd4fcda03c0160d0da9c8f0c246bc78f2f7af0feea1ec0930e7c93fa4a"},
- {file = "coverage-7.2.3-pp37.pp38.pp39-none-any.whl", hash = "sha256:965ee3e782c7892befc25575fa171b521d33798132692df428a09efacaffe8d0"},
- {file = "coverage-7.2.3.tar.gz", hash = "sha256:d298c2815fa4891edd9abe5ad6e6cb4207104c7dd9fd13aea3fdebf6f9b91259"},
+ {file = "coverage-7.2.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d39b5b4f2a66ccae8b7263ac3c8170994b65266797fb96cbbfd3fb5b23921db8"},
+ {file = "coverage-7.2.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6d040ef7c9859bb11dfeb056ff5b3872436e3b5e401817d87a31e1750b9ae2fb"},
+ {file = "coverage-7.2.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba90a9563ba44a72fda2e85302c3abc71c5589cea608ca16c22b9804262aaeb6"},
+ {file = "coverage-7.2.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7d9405291c6928619403db1d10bd07888888ec1abcbd9748fdaa971d7d661b2"},
+ {file = "coverage-7.2.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31563e97dae5598556600466ad9beea39fb04e0229e61c12eaa206e0aa202063"},
+ {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ebba1cd308ef115925421d3e6a586e655ca5a77b5bf41e02eb0e4562a111f2d1"},
+ {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cb017fd1b2603ef59e374ba2063f593abe0fc45f2ad9abdde5b4d83bd922a353"},
+ {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62a5c7dad11015c66fbb9d881bc4caa5b12f16292f857842d9d1871595f4495"},
+ {file = "coverage-7.2.7-cp310-cp310-win32.whl", hash = "sha256:ee57190f24fba796e36bb6d3aa8a8783c643d8fa9760c89f7a98ab5455fbf818"},
+ {file = "coverage-7.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:f75f7168ab25dd93110c8a8117a22450c19976afbc44234cbf71481094c1b850"},
+ {file = "coverage-7.2.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:06a9a2be0b5b576c3f18f1a241f0473575c4a26021b52b2a85263a00f034d51f"},
+ {file = "coverage-7.2.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5baa06420f837184130752b7c5ea0808762083bf3487b5038d68b012e5937dbe"},
+ {file = "coverage-7.2.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdec9e8cbf13a5bf63290fc6013d216a4c7232efb51548594ca3631a7f13c3a3"},
+ {file = "coverage-7.2.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:52edc1a60c0d34afa421c9c37078817b2e67a392cab17d97283b64c5833f427f"},
+ {file = "coverage-7.2.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63426706118b7f5cf6bb6c895dc215d8a418d5952544042c8a2d9fe87fcf09cb"},
+ {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:afb17f84d56068a7c29f5fa37bfd38d5aba69e3304af08ee94da8ed5b0865833"},
+ {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:48c19d2159d433ccc99e729ceae7d5293fbffa0bdb94952d3579983d1c8c9d97"},
+ {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0e1f928eaf5469c11e886fe0885ad2bf1ec606434e79842a879277895a50942a"},
+ {file = "coverage-7.2.7-cp311-cp311-win32.whl", hash = "sha256:33d6d3ea29d5b3a1a632b3c4e4f4ecae24ef170b0b9ee493883f2df10039959a"},
+ {file = "coverage-7.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:5b7540161790b2f28143191f5f8ec02fb132660ff175b7747b95dcb77ac26562"},
+ {file = "coverage-7.2.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f2f67fe12b22cd130d34d0ef79206061bfb5eda52feb6ce0dba0644e20a03cf4"},
+ {file = "coverage-7.2.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a342242fe22407f3c17f4b499276a02b01e80f861f1682ad1d95b04018e0c0d4"},
+ {file = "coverage-7.2.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:171717c7cb6b453aebac9a2ef603699da237f341b38eebfee9be75d27dc38e01"},
+ {file = "coverage-7.2.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49969a9f7ffa086d973d91cec8d2e31080436ef0fb4a359cae927e742abfaaa6"},
+ {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b46517c02ccd08092f4fa99f24c3b83d8f92f739b4657b0f146246a0ca6a831d"},
+ {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a3d33a6b3eae87ceaefa91ffdc130b5e8536182cd6dfdbfc1aa56b46ff8c86de"},
+ {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:976b9c42fb2a43ebf304fa7d4a310e5f16cc99992f33eced91ef6f908bd8f33d"},
+ {file = "coverage-7.2.7-cp312-cp312-win32.whl", hash = "sha256:8de8bb0e5ad103888d65abef8bca41ab93721647590a3f740100cd65c3b00511"},
+ {file = "coverage-7.2.7-cp312-cp312-win_amd64.whl", hash = "sha256:9e31cb64d7de6b6f09702bb27c02d1904b3aebfca610c12772452c4e6c21a0d3"},
+ {file = "coverage-7.2.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:58c2ccc2f00ecb51253cbe5d8d7122a34590fac9646a960d1430d5b15321d95f"},
+ {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d22656368f0e6189e24722214ed8d66b8022db19d182927b9a248a2a8a2f67eb"},
+ {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a895fcc7b15c3fc72beb43cdcbdf0ddb7d2ebc959edac9cef390b0d14f39f8a9"},
+ {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84606b74eb7de6ff581a7915e2dab7a28a0517fbe1c9239eb227e1354064dcd"},
+ {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0a5f9e1dbd7fbe30196578ca36f3fba75376fb99888c395c5880b355e2875f8a"},
+ {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:419bfd2caae268623dd469eff96d510a920c90928b60f2073d79f8fe2bbc5959"},
+ {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2aee274c46590717f38ae5e4650988d1af340fe06167546cc32fe2f58ed05b02"},
+ {file = "coverage-7.2.7-cp37-cp37m-win32.whl", hash = "sha256:61b9a528fb348373c433e8966535074b802c7a5d7f23c4f421e6c6e2f1697a6f"},
+ {file = "coverage-7.2.7-cp37-cp37m-win_amd64.whl", hash = "sha256:b1c546aca0ca4d028901d825015dc8e4d56aac4b541877690eb76490f1dc8ed0"},
+ {file = "coverage-7.2.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:54b896376ab563bd38453cecb813c295cf347cf5906e8b41d340b0321a5433e5"},
+ {file = "coverage-7.2.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3d376df58cc111dc8e21e3b6e24606b5bb5dee6024f46a5abca99124b2229ef5"},
+ {file = "coverage-7.2.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e330fc79bd7207e46c7d7fd2bb4af2963f5f635703925543a70b99574b0fea9"},
+ {file = "coverage-7.2.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e9d683426464e4a252bf70c3498756055016f99ddaec3774bf368e76bbe02b6"},
+ {file = "coverage-7.2.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d13c64ee2d33eccf7437961b6ea7ad8673e2be040b4f7fd4fd4d4d28d9ccb1e"},
+ {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b7aa5f8a41217360e600da646004f878250a0d6738bcdc11a0a39928d7dc2050"},
+ {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8fa03bce9bfbeeef9f3b160a8bed39a221d82308b4152b27d82d8daa7041fee5"},
+ {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:245167dd26180ab4c91d5e1496a30be4cd721a5cf2abf52974f965f10f11419f"},
+ {file = "coverage-7.2.7-cp38-cp38-win32.whl", hash = "sha256:d2c2db7fd82e9b72937969bceac4d6ca89660db0a0967614ce2481e81a0b771e"},
+ {file = "coverage-7.2.7-cp38-cp38-win_amd64.whl", hash = "sha256:2e07b54284e381531c87f785f613b833569c14ecacdcb85d56b25c4622c16c3c"},
+ {file = "coverage-7.2.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:537891ae8ce59ef63d0123f7ac9e2ae0fc8b72c7ccbe5296fec45fd68967b6c9"},
+ {file = "coverage-7.2.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:06fb182e69f33f6cd1d39a6c597294cff3143554b64b9825d1dc69d18cc2fff2"},
+ {file = "coverage-7.2.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:201e7389591af40950a6480bd9edfa8ed04346ff80002cec1a66cac4549c1ad7"},
+ {file = "coverage-7.2.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f6951407391b639504e3b3be51b7ba5f3528adbf1a8ac3302b687ecababf929e"},
+ {file = "coverage-7.2.7-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f48351d66575f535669306aa7d6d6f71bc43372473b54a832222803eb956fd1"},
+ {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b29019c76039dc3c0fd815c41392a044ce555d9bcdd38b0fb60fb4cd8e475ba9"},
+ {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:81c13a1fc7468c40f13420732805a4c38a105d89848b7c10af65a90beff25250"},
+ {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:975d70ab7e3c80a3fe86001d8751f6778905ec723f5b110aed1e450da9d4b7f2"},
+ {file = "coverage-7.2.7-cp39-cp39-win32.whl", hash = "sha256:7ee7d9d4822c8acc74a5e26c50604dff824710bc8de424904c0982e25c39c6cb"},
+ {file = "coverage-7.2.7-cp39-cp39-win_amd64.whl", hash = "sha256:eb393e5ebc85245347950143969b241d08b52b88a3dc39479822e073a1a8eb27"},
+ {file = "coverage-7.2.7-pp37.pp38.pp39-none-any.whl", hash = "sha256:b7b4c971f05e6ae490fef852c218b0e79d4e52f79ef0c8475566584a8fb3e01d"},
+ {file = "coverage-7.2.7.tar.gz", hash = "sha256:924d94291ca674905fe9481f12294eb11f2d3d3fd1adb20314ba89e94f44ed59"},
]
[package.dependencies]
@@ -400,14 +409,14 @@ dev = ["flake8", "markdown", "twine", "wheel"]
[[package]]
name = "identify"
-version = "2.5.22"
+version = "2.5.24"
description = "File identification library for Python"
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "identify-2.5.22-py2.py3-none-any.whl", hash = "sha256:f0faad595a4687053669c112004178149f6c326db71ee999ae4636685753ad2f"},
- {file = "identify-2.5.22.tar.gz", hash = "sha256:f7a93d6cf98e29bd07663c60728e7a4057615068d7a639d132dc883b2d54d31e"},
+ {file = "identify-2.5.24-py2.py3-none-any.whl", hash = "sha256:986dbfb38b1140e763e413e6feb44cd731faf72d1909543178aa79b0e258265d"},
+ {file = "identify-2.5.24.tar.gz", hash = "sha256:0aac67d5b4812498056d28a9a512a483f5085cc28640b02b258a59dac34301d4"},
]
[package.extras]
@@ -553,62 +562,62 @@ testing = ["coverage", "pyyaml"]
[[package]]
name = "markupsafe"
-version = "2.1.2"
+version = "2.1.3"
description = "Safely add untrusted strings to HTML/XML markup."
category = "main"
optional = false
python-versions = ">=3.7"
files = [
- {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7"},
- {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036"},
- {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1"},
- {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323"},
- {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601"},
- {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1"},
- {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff"},
- {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65"},
- {file = "MarkupSafe-2.1.2-cp310-cp310-win32.whl", hash = "sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603"},
- {file = "MarkupSafe-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156"},
- {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013"},
- {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a"},
- {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd"},
- {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6"},
- {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d"},
- {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1"},
- {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc"},
- {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0"},
- {file = "MarkupSafe-2.1.2-cp311-cp311-win32.whl", hash = "sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625"},
- {file = "MarkupSafe-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3"},
- {file = "MarkupSafe-2.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a"},
- {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a"},
- {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a"},
- {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2"},
- {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619"},
- {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513"},
- {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460"},
- {file = "MarkupSafe-2.1.2-cp37-cp37m-win32.whl", hash = "sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859"},
- {file = "MarkupSafe-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666"},
- {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed"},
- {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094"},
- {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54"},
- {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419"},
- {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa"},
- {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58"},
- {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba"},
- {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03"},
- {file = "MarkupSafe-2.1.2-cp38-cp38-win32.whl", hash = "sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2"},
- {file = "MarkupSafe-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147"},
- {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f"},
- {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd"},
- {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f"},
- {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4"},
- {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2"},
- {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65"},
- {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c"},
- {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3"},
- {file = "MarkupSafe-2.1.2-cp39-cp39-win32.whl", hash = "sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7"},
- {file = "MarkupSafe-2.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed"},
- {file = "MarkupSafe-2.1.2.tar.gz", hash = "sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"},
+ {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"},
]
[[package]]
@@ -640,14 +649,14 @@ files = [
[[package]]
name = "mkdocs"
-version = "1.4.2"
+version = "1.4.3"
description = "Project documentation with Markdown."
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "mkdocs-1.4.2-py3-none-any.whl", hash = "sha256:c8856a832c1e56702577023cd64cc5f84948280c1c0fcc6af4cd39006ea6aa8c"},
- {file = "mkdocs-1.4.2.tar.gz", hash = "sha256:8947af423a6d0facf41ea1195b8e1e8c85ad94ac95ae307fe11232e0424b11c5"},
+ {file = "mkdocs-1.4.3-py3-none-any.whl", hash = "sha256:6ee46d309bda331aac915cd24aab882c179a933bd9e77b80ce7d2eaaa3f689dd"},
+ {file = "mkdocs-1.4.3.tar.gz", hash = "sha256:5955093bbd4dd2e9403c5afaf57324ad8b04f16886512a3ee6ef828956481c57"},
]
[package.dependencies]
@@ -670,14 +679,14 @@ min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-imp
[[package]]
name = "mkdocs-material"
-version = "9.1.7"
+version = "9.1.15"
description = "Documentation that simply works"
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "mkdocs_material-9.1.7-py3-none-any.whl", hash = "sha256:4ab0e2f378bb811ca44a001a63d687403a2725f0485c41d6a2a7aed3aa34cd31"},
- {file = "mkdocs_material-9.1.7.tar.gz", hash = "sha256:244f85d13e3aa773aaa66c74b95bb4b00d89a3a917f6f9d33704a5655bf0c423"},
+ {file = "mkdocs_material-9.1.15-py3-none-any.whl", hash = "sha256:b49e12869ab464558e2dd3c5792da5b748a7e0c48ee83b4d05715f98125a7a39"},
+ {file = "mkdocs_material-9.1.15.tar.gz", hash = "sha256:8513ab847c9a541ed3d11a3a7eed556caf72991ee786c31c5aac6691a121088a"},
]
[package.dependencies]
@@ -757,14 +766,14 @@ files = [
[[package]]
name = "nodeenv"
-version = "1.7.0"
+version = "1.8.0"
description = "Node.js virtual environment builder"
category = "dev"
optional = false
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*"
files = [
- {file = "nodeenv-1.7.0-py2.py3-none-any.whl", hash = "sha256:27083a7b96a25f2f5e1d8cb4b6317ee8aeda3bdd121394e5ac54e498028a042e"},
- {file = "nodeenv-1.7.0.tar.gz", hash = "sha256:e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b"},
+ {file = "nodeenv-1.8.0-py2.py3-none-any.whl", hash = "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec"},
+ {file = "nodeenv-1.8.0.tar.gz", hash = "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2"},
]
[package.dependencies]
@@ -839,22 +848,22 @@ files = [
[[package]]
name = "platformdirs"
-version = "3.2.0"
+version = "3.5.1"
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "platformdirs-3.2.0-py3-none-any.whl", hash = "sha256:ebe11c0d7a805086e99506aa331612429a72ca7cd52a1f0d277dc4adc20cb10e"},
- {file = "platformdirs-3.2.0.tar.gz", hash = "sha256:d5b638ca397f25f979350ff789db335903d7ea010ab28903f57b27e1b16c2b08"},
+ {file = "platformdirs-3.5.1-py3-none-any.whl", hash = "sha256:e2378146f1964972c03c085bb5662ae80b2b8c06226c54b2ff4aa9483e8a13a5"},
+ {file = "platformdirs-3.5.1.tar.gz", hash = "sha256:412dae91f52a6f84830f39a8078cecd0e866cb72294a5c66808e74d5e88d251f"},
]
[package.dependencies]
typing-extensions = {version = ">=4.5", markers = "python_version < \"3.8\""}
[package.extras]
-docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.22,!=1.23.4)"]
-test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.2.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"]
+docs = ["furo (>=2023.3.27)", "proselint (>=0.13)", "sphinx (>=6.2.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"]
+test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"]
[[package]]
name = "pluggy"
@@ -939,14 +948,14 @@ plugins = ["importlib-metadata"]
[[package]]
name = "pymdown-extensions"
-version = "9.11"
+version = "10.0.1"
description = "Extension pack for Python Markdown."
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "pymdown_extensions-9.11-py3-none-any.whl", hash = "sha256:a499191d8d869f30339de86fcf072a787e86c42b6f16f280f5c2cf174182b7f3"},
- {file = "pymdown_extensions-9.11.tar.gz", hash = "sha256:f7e86c1d3981f23d9dc43294488ecb54abadd05b0be4bf8f0e15efc90f7853ff"},
+ {file = "pymdown_extensions-10.0.1-py3-none-any.whl", hash = "sha256:ae66d84013c5d027ce055693e09a4628b67e9dec5bce05727e45b0918e36f274"},
+ {file = "pymdown_extensions-10.0.1.tar.gz", hash = "sha256:b44e1093a43b8a975eae17b03c3a77aad4681b3b56fce60ce746dbef1944c8cb"},
]
[package.dependencies]
@@ -979,14 +988,14 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no
[[package]]
name = "pytest-cov"
-version = "4.0.0"
+version = "4.1.0"
description = "Pytest plugin for measuring coverage."
category = "dev"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.7"
files = [
- {file = "pytest-cov-4.0.0.tar.gz", hash = "sha256:996b79efde6433cdbd0088872dbc5fb3ed7fe1578b68cdbba634f14bb8dd0470"},
- {file = "pytest_cov-4.0.0-py3-none-any.whl", hash = "sha256:2feb1b751d66a8bd934e5edfa2e961d11309dc37b73b0eabe73b5945fee20f6b"},
+ {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"},
+ {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"},
]
[package.dependencies]
@@ -1070,14 +1079,14 @@ num = ["numpy", "pandas"]
[[package]]
name = "pytest-xdist"
-version = "3.2.1"
+version = "3.3.1"
description = "pytest xdist plugin for distributed testing, most importantly across multiple CPUs"
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "pytest-xdist-3.2.1.tar.gz", hash = "sha256:1849bd98d8b242b948e472db7478e090bf3361912a8fed87992ed94085f54727"},
- {file = "pytest_xdist-3.2.1-py3-none-any.whl", hash = "sha256:37290d161638a20b672401deef1cba812d110ac27e35d213f091d15b8beb40c9"},
+ {file = "pytest-xdist-3.3.1.tar.gz", hash = "sha256:d5ee0520eb1b7bcca50a60a518ab7a7707992812c578198f8b44fdfac78e8c93"},
+ {file = "pytest_xdist-3.3.1-py3-none-any.whl", hash = "sha256:ff9daa7793569e6a68544850fd3927cd257cc03a7ef76c95e86915355e82b5f2"},
]
[package.dependencies]
@@ -1189,119 +1198,119 @@ docs = ["Sphinx (>=3.3,<4.0)", "sphinx-autobuild (>=2020.9.1,<2021.0.0)", "sphin
[[package]]
name = "regex"
-version = "2022.10.31"
+version = "2023.5.5"
description = "Alternative regular expression module, to replace re."
category = "dev"
optional = false
python-versions = ">=3.6"
files = [
- {file = "regex-2022.10.31-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a8ff454ef0bb061e37df03557afda9d785c905dab15584860f982e88be73015f"},
- {file = "regex-2022.10.31-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1eba476b1b242620c266edf6325b443a2e22b633217a9835a52d8da2b5c051f9"},
- {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0e5af9a9effb88535a472e19169e09ce750c3d442fb222254a276d77808620b"},
- {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d03fe67b2325cb3f09be029fd5da8df9e6974f0cde2c2ac6a79d2634e791dd57"},
- {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9d0b68ac1743964755ae2d89772c7e6fb0118acd4d0b7464eaf3921c6b49dd4"},
- {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a45b6514861916c429e6059a55cf7db74670eaed2052a648e3e4d04f070e001"},
- {file = "regex-2022.10.31-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8b0886885f7323beea6f552c28bff62cbe0983b9fbb94126531693ea6c5ebb90"},
- {file = "regex-2022.10.31-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5aefb84a301327ad115e9d346c8e2760009131d9d4b4c6b213648d02e2abe144"},
- {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:702d8fc6f25bbf412ee706bd73019da5e44a8400861dfff7ff31eb5b4a1276dc"},
- {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a3c1ebd4ed8e76e886507c9eddb1a891673686c813adf889b864a17fafcf6d66"},
- {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:50921c140561d3db2ab9f5b11c5184846cde686bb5a9dc64cae442926e86f3af"},
- {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:7db345956ecce0c99b97b042b4ca7326feeec6b75facd8390af73b18e2650ffc"},
- {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:763b64853b0a8f4f9cfb41a76a4a85a9bcda7fdda5cb057016e7706fde928e66"},
- {file = "regex-2022.10.31-cp310-cp310-win32.whl", hash = "sha256:44136355e2f5e06bf6b23d337a75386371ba742ffa771440b85bed367c1318d1"},
- {file = "regex-2022.10.31-cp310-cp310-win_amd64.whl", hash = "sha256:bfff48c7bd23c6e2aec6454aaf6edc44444b229e94743b34bdcdda2e35126cf5"},
- {file = "regex-2022.10.31-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4b4b1fe58cd102d75ef0552cf17242705ce0759f9695334a56644ad2d83903fe"},
- {file = "regex-2022.10.31-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:542e3e306d1669b25936b64917285cdffcd4f5c6f0247636fec037187bd93542"},
- {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c27cc1e4b197092e50ddbf0118c788d9977f3f8f35bfbbd3e76c1846a3443df7"},
- {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8e38472739028e5f2c3a4aded0ab7eadc447f0d84f310c7a8bb697ec417229e"},
- {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:76c598ca73ec73a2f568e2a72ba46c3b6c8690ad9a07092b18e48ceb936e9f0c"},
- {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c28d3309ebd6d6b2cf82969b5179bed5fefe6142c70f354ece94324fa11bf6a1"},
- {file = "regex-2022.10.31-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9af69f6746120998cd9c355e9c3c6aec7dff70d47247188feb4f829502be8ab4"},
- {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a5f9505efd574d1e5b4a76ac9dd92a12acb2b309551e9aa874c13c11caefbe4f"},
- {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5ff525698de226c0ca743bfa71fc6b378cda2ddcf0d22d7c37b1cc925c9650a5"},
- {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:4fe7fda2fe7c8890d454f2cbc91d6c01baf206fbc96d89a80241a02985118c0c"},
- {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:2cdc55ca07b4e70dda898d2ab7150ecf17c990076d3acd7a5f3b25cb23a69f1c"},
- {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:44a6c2f6374e0033873e9ed577a54a3602b4f609867794c1a3ebba65e4c93ee7"},
- {file = "regex-2022.10.31-cp311-cp311-win32.whl", hash = "sha256:d8716f82502997b3d0895d1c64c3b834181b1eaca28f3f6336a71777e437c2af"},
- {file = "regex-2022.10.31-cp311-cp311-win_amd64.whl", hash = "sha256:61edbca89aa3f5ef7ecac8c23d975fe7261c12665f1d90a6b1af527bba86ce61"},
- {file = "regex-2022.10.31-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0a069c8483466806ab94ea9068c34b200b8bfc66b6762f45a831c4baaa9e8cdd"},
- {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d26166acf62f731f50bdd885b04b38828436d74e8e362bfcb8df221d868b5d9b"},
- {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac741bf78b9bb432e2d314439275235f41656e189856b11fb4e774d9f7246d81"},
- {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75f591b2055523fc02a4bbe598aa867df9e953255f0b7f7715d2a36a9c30065c"},
- {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b30bddd61d2a3261f025ad0f9ee2586988c6a00c780a2fb0a92cea2aa702c54"},
- {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef4163770525257876f10e8ece1cf25b71468316f61451ded1a6f44273eedeb5"},
- {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7b280948d00bd3973c1998f92e22aa3ecb76682e3a4255f33e1020bd32adf443"},
- {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:d0213671691e341f6849bf33cd9fad21f7b1cb88b89e024f33370733fec58742"},
- {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:22e7ebc231d28393dfdc19b185d97e14a0f178bedd78e85aad660e93b646604e"},
- {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:8ad241da7fac963d7573cc67a064c57c58766b62a9a20c452ca1f21050868dfa"},
- {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:586b36ebda81e6c1a9c5a5d0bfdc236399ba6595e1397842fd4a45648c30f35e"},
- {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:0653d012b3bf45f194e5e6a41df9258811ac8fc395579fa82958a8b76286bea4"},
- {file = "regex-2022.10.31-cp36-cp36m-win32.whl", hash = "sha256:144486e029793a733e43b2e37df16a16df4ceb62102636ff3db6033994711066"},
- {file = "regex-2022.10.31-cp36-cp36m-win_amd64.whl", hash = "sha256:c14b63c9d7bab795d17392c7c1f9aaabbffd4cf4387725a0ac69109fb3b550c6"},
- {file = "regex-2022.10.31-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4cac3405d8dda8bc6ed499557625585544dd5cbf32072dcc72b5a176cb1271c8"},
- {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23cbb932cc53a86ebde0fb72e7e645f9a5eec1a5af7aa9ce333e46286caef783"},
- {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:74bcab50a13960f2a610cdcd066e25f1fd59e23b69637c92ad470784a51b1347"},
- {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78d680ef3e4d405f36f0d6d1ea54e740366f061645930072d39bca16a10d8c93"},
- {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce6910b56b700bea7be82c54ddf2e0ed792a577dfaa4a76b9af07d550af435c6"},
- {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:659175b2144d199560d99a8d13b2228b85e6019b6e09e556209dfb8c37b78a11"},
- {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1ddf14031a3882f684b8642cb74eea3af93a2be68893901b2b387c5fd92a03ec"},
- {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b683e5fd7f74fb66e89a1ed16076dbab3f8e9f34c18b1979ded614fe10cdc4d9"},
- {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2bde29cc44fa81c0a0c8686992c3080b37c488df167a371500b2a43ce9f026d1"},
- {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:4919899577ba37f505aaebdf6e7dc812d55e8f097331312db7f1aab18767cce8"},
- {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:9c94f7cc91ab16b36ba5ce476f1904c91d6c92441f01cd61a8e2729442d6fcf5"},
- {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ae1e96785696b543394a4e3f15f3f225d44f3c55dafe3f206493031419fedf95"},
- {file = "regex-2022.10.31-cp37-cp37m-win32.whl", hash = "sha256:c670f4773f2f6f1957ff8a3962c7dd12e4be54d05839b216cb7fd70b5a1df394"},
- {file = "regex-2022.10.31-cp37-cp37m-win_amd64.whl", hash = "sha256:8e0caeff18b96ea90fc0eb6e3bdb2b10ab5b01a95128dfeccb64a7238decf5f0"},
- {file = "regex-2022.10.31-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:131d4be09bea7ce2577f9623e415cab287a3c8e0624f778c1d955ec7c281bd4d"},
- {file = "regex-2022.10.31-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e613a98ead2005c4ce037c7b061f2409a1a4e45099edb0ef3200ee26ed2a69a8"},
- {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:052b670fafbe30966bbe5d025e90b2a491f85dfe5b2583a163b5e60a85a321ad"},
- {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa62a07ac93b7cb6b7d0389d8ef57ffc321d78f60c037b19dfa78d6b17c928ee"},
- {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5352bea8a8f84b89d45ccc503f390a6be77917932b1c98c4cdc3565137acc714"},
- {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20f61c9944f0be2dc2b75689ba409938c14876c19d02f7585af4460b6a21403e"},
- {file = "regex-2022.10.31-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:29c04741b9ae13d1e94cf93fca257730b97ce6ea64cfe1eba11cf9ac4e85afb6"},
- {file = "regex-2022.10.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:543883e3496c8b6d58bd036c99486c3c8387c2fc01f7a342b760c1ea3158a318"},
- {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b7a8b43ee64ca8f4befa2bea4083f7c52c92864d8518244bfa6e88c751fa8fff"},
- {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6a9a19bea8495bb419dc5d38c4519567781cd8d571c72efc6aa959473d10221a"},
- {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6ffd55b5aedc6f25fd8d9f905c9376ca44fcf768673ffb9d160dd6f409bfda73"},
- {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4bdd56ee719a8f751cf5a593476a441c4e56c9b64dc1f0f30902858c4ef8771d"},
- {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8ca88da1bd78990b536c4a7765f719803eb4f8f9971cc22d6ca965c10a7f2c4c"},
- {file = "regex-2022.10.31-cp38-cp38-win32.whl", hash = "sha256:5a260758454580f11dd8743fa98319bb046037dfab4f7828008909d0aa5292bc"},
- {file = "regex-2022.10.31-cp38-cp38-win_amd64.whl", hash = "sha256:5e6a5567078b3eaed93558842346c9d678e116ab0135e22eb72db8325e90b453"},
- {file = "regex-2022.10.31-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5217c25229b6a85049416a5c1e6451e9060a1edcf988641e309dbe3ab26d3e49"},
- {file = "regex-2022.10.31-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4bf41b8b0a80708f7e0384519795e80dcb44d7199a35d52c15cc674d10b3081b"},
- {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cf0da36a212978be2c2e2e2d04bdff46f850108fccc1851332bcae51c8907cc"},
- {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d403d781b0e06d2922435ce3b8d2376579f0c217ae491e273bab8d092727d244"},
- {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a37d51fa9a00d265cf73f3de3930fa9c41548177ba4f0faf76e61d512c774690"},
- {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4f781ffedd17b0b834c8731b75cce2639d5a8afe961c1e58ee7f1f20b3af185"},
- {file = "regex-2022.10.31-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d243b36fbf3d73c25e48014961e83c19c9cc92530516ce3c43050ea6276a2ab7"},
- {file = "regex-2022.10.31-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:370f6e97d02bf2dd20d7468ce4f38e173a124e769762d00beadec3bc2f4b3bc4"},
- {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:597f899f4ed42a38df7b0e46714880fb4e19a25c2f66e5c908805466721760f5"},
- {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7dbdce0c534bbf52274b94768b3498abdf675a691fec5f751b6057b3030f34c1"},
- {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:22960019a842777a9fa5134c2364efaed5fbf9610ddc5c904bd3a400973b0eb8"},
- {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:7f5a3ffc731494f1a57bd91c47dc483a1e10048131ffb52d901bfe2beb6102e8"},
- {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7ef6b5942e6bfc5706301a18a62300c60db9af7f6368042227ccb7eeb22d0892"},
- {file = "regex-2022.10.31-cp39-cp39-win32.whl", hash = "sha256:395161bbdbd04a8333b9ff9763a05e9ceb4fe210e3c7690f5e68cedd3d65d8e1"},
- {file = "regex-2022.10.31-cp39-cp39-win_amd64.whl", hash = "sha256:957403a978e10fb3ca42572a23e6f7badff39aa1ce2f4ade68ee452dc6807692"},
- {file = "regex-2022.10.31.tar.gz", hash = "sha256:a3a98921da9a1bf8457aeee6a551948a83601689e5ecdd736894ea9bbec77e83"},
+ {file = "regex-2023.5.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:48c9ec56579d4ba1c88f42302194b8ae2350265cb60c64b7b9a88dcb7fbde309"},
+ {file = "regex-2023.5.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02f4541550459c08fdd6f97aa4e24c6f1932eec780d58a2faa2068253df7d6ff"},
+ {file = "regex-2023.5.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53e22e4460f0245b468ee645156a4f84d0fc35a12d9ba79bd7d79bdcd2f9629d"},
+ {file = "regex-2023.5.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b870b6f632fc74941cadc2a0f3064ed8409e6f8ee226cdfd2a85ae50473aa94"},
+ {file = "regex-2023.5.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:171c52e320fe29260da550d81c6b99f6f8402450dc7777ef5ced2e848f3b6f8f"},
+ {file = "regex-2023.5.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aad5524c2aedaf9aa14ef1bc9327f8abd915699dea457d339bebbe2f0d218f86"},
+ {file = "regex-2023.5.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a0f874ee8c0bc820e649c900243c6d1e6dc435b81da1492046716f14f1a2a96"},
+ {file = "regex-2023.5.5-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e645c757183ee0e13f0bbe56508598e2d9cd42b8abc6c0599d53b0d0b8dd1479"},
+ {file = "regex-2023.5.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a4c5da39bca4f7979eefcbb36efea04471cd68db2d38fcbb4ee2c6d440699833"},
+ {file = "regex-2023.5.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5e3f4468b8c6fd2fd33c218bbd0a1559e6a6fcf185af8bb0cc43f3b5bfb7d636"},
+ {file = "regex-2023.5.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:59e4b729eae1a0919f9e4c0fc635fbcc9db59c74ad98d684f4877be3d2607dd6"},
+ {file = "regex-2023.5.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ba73a14e9c8f9ac409863543cde3290dba39098fc261f717dc337ea72d3ebad2"},
+ {file = "regex-2023.5.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0bbd5dcb19603ab8d2781fac60114fb89aee8494f4505ae7ad141a3314abb1f9"},
+ {file = "regex-2023.5.5-cp310-cp310-win32.whl", hash = "sha256:40005cbd383438aecf715a7b47fe1e3dcbc889a36461ed416bdec07e0ef1db66"},
+ {file = "regex-2023.5.5-cp310-cp310-win_amd64.whl", hash = "sha256:59597cd6315d3439ed4b074febe84a439c33928dd34396941b4d377692eca810"},
+ {file = "regex-2023.5.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8f08276466fedb9e36e5193a96cb944928301152879ec20c2d723d1031cd4ddd"},
+ {file = "regex-2023.5.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cd46f30e758629c3ee91713529cfbe107ac50d27110fdcc326a42ce2acf4dafc"},
+ {file = "regex-2023.5.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2910502f718828cecc8beff004917dcf577fc5f8f5dd40ffb1ea7612124547b"},
+ {file = "regex-2023.5.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:445d6f4fc3bd9fc2bf0416164454f90acab8858cd5a041403d7a11e3356980e8"},
+ {file = "regex-2023.5.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18196c16a584619c7c1d843497c069955d7629ad4a3fdee240eb347f4a2c9dbe"},
+ {file = "regex-2023.5.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33d430a23b661629661f1fe8395be2004006bc792bb9fc7c53911d661b69dd7e"},
+ {file = "regex-2023.5.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72a28979cc667e5f82ef433db009184e7ac277844eea0f7f4d254b789517941d"},
+ {file = "regex-2023.5.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f764e4dfafa288e2eba21231f455d209f4709436baeebb05bdecfb5d8ddc3d35"},
+ {file = "regex-2023.5.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:23d86ad2121b3c4fc78c58f95e19173790e22ac05996df69b84e12da5816cb17"},
+ {file = "regex-2023.5.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:690a17db524ee6ac4a27efc5406530dd90e7a7a69d8360235323d0e5dafb8f5b"},
+ {file = "regex-2023.5.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:1ecf3dcff71f0c0fe3e555201cbe749fa66aae8d18f80d2cc4de8e66df37390a"},
+ {file = "regex-2023.5.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:811040d7f3dd9c55eb0d8b00b5dcb7fd9ae1761c454f444fd9f37fe5ec57143a"},
+ {file = "regex-2023.5.5-cp311-cp311-win32.whl", hash = "sha256:c8c143a65ce3ca42e54d8e6fcaf465b6b672ed1c6c90022794a802fb93105d22"},
+ {file = "regex-2023.5.5-cp311-cp311-win_amd64.whl", hash = "sha256:586a011f77f8a2da4b888774174cd266e69e917a67ba072c7fc0e91878178a80"},
+ {file = "regex-2023.5.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b6365703e8cf1644b82104cdd05270d1a9f043119a168d66c55684b1b557d008"},
+ {file = "regex-2023.5.5-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a56c18f21ac98209da9c54ae3ebb3b6f6e772038681d6cb43b8d53da3b09ee81"},
+ {file = "regex-2023.5.5-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8b942d8b3ce765dbc3b1dad0a944712a89b5de290ce8f72681e22b3c55f3cc8"},
+ {file = "regex-2023.5.5-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:844671c9c1150fcdac46d43198364034b961bd520f2c4fdaabfc7c7d7138a2dd"},
+ {file = "regex-2023.5.5-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2ce65bdeaf0a386bb3b533a28de3994e8e13b464ac15e1e67e4603dd88787fa"},
+ {file = "regex-2023.5.5-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fee0016cc35a8a91e8cc9312ab26a6fe638d484131a7afa79e1ce6165328a135"},
+ {file = "regex-2023.5.5-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:18f05d14f14a812fe9723f13afafefe6b74ca042d99f8884e62dbd34dcccf3e2"},
+ {file = "regex-2023.5.5-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:941b3f1b2392f0bcd6abf1bc7a322787d6db4e7457be6d1ffd3a693426a755f2"},
+ {file = "regex-2023.5.5-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:921473a93bcea4d00295799ab929522fc650e85c6b9f27ae1e6bb32a790ea7d3"},
+ {file = "regex-2023.5.5-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:e2205a81f815b5bb17e46e74cc946c575b484e5f0acfcb805fb252d67e22938d"},
+ {file = "regex-2023.5.5-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:385992d5ecf1a93cb85adff2f73e0402dd9ac29b71b7006d342cc920816e6f32"},
+ {file = "regex-2023.5.5-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:890a09cb0a62198bff92eda98b2b507305dd3abf974778bae3287f98b48907d3"},
+ {file = "regex-2023.5.5-cp36-cp36m-win32.whl", hash = "sha256:821a88b878b6589c5068f4cc2cfeb2c64e343a196bc9d7ac68ea8c2a776acd46"},
+ {file = "regex-2023.5.5-cp36-cp36m-win_amd64.whl", hash = "sha256:7918a1b83dd70dc04ab5ed24c78ae833ae8ea228cef84e08597c408286edc926"},
+ {file = "regex-2023.5.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:338994d3d4ca4cf12f09822e025731a5bdd3a37aaa571fa52659e85ca793fb67"},
+ {file = "regex-2023.5.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a69cf0c00c4d4a929c6c7717fd918414cab0d6132a49a6d8fc3ded1988ed2ea"},
+ {file = "regex-2023.5.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f5e06df94fff8c4c85f98c6487f6636848e1dc85ce17ab7d1931df4a081f657"},
+ {file = "regex-2023.5.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8906669b03c63266b6a7693d1f487b02647beb12adea20f8840c1a087e2dfb5"},
+ {file = "regex-2023.5.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fda3e50abad8d0f48df621cf75adc73c63f7243cbe0e3b2171392b445401550"},
+ {file = "regex-2023.5.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ac2b7d341dc1bd102be849d6dd33b09701223a851105b2754339e390be0627a"},
+ {file = "regex-2023.5.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fb2b495dd94b02de8215625948132cc2ea360ae84fe6634cd19b6567709c8ae2"},
+ {file = "regex-2023.5.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:aa7d032c1d84726aa9edeb6accf079b4caa87151ca9fabacef31fa028186c66d"},
+ {file = "regex-2023.5.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:3d45864693351c15531f7e76f545ec35000d50848daa833cead96edae1665559"},
+ {file = "regex-2023.5.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:21e90a288e6ba4bf44c25c6a946cb9b0f00b73044d74308b5e0afd190338297c"},
+ {file = "regex-2023.5.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:10250a093741ec7bf74bcd2039e697f519b028518f605ff2aa7ac1e9c9f97423"},
+ {file = "regex-2023.5.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6b8d0c153f07a953636b9cdb3011b733cadd4178123ef728ccc4d5969e67f3c2"},
+ {file = "regex-2023.5.5-cp37-cp37m-win32.whl", hash = "sha256:10374c84ee58c44575b667310d5bbfa89fb2e64e52349720a0182c0017512f6c"},
+ {file = "regex-2023.5.5-cp37-cp37m-win_amd64.whl", hash = "sha256:9b320677521aabf666cdd6e99baee4fb5ac3996349c3b7f8e7c4eee1c00dfe3a"},
+ {file = "regex-2023.5.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:afb1c70ec1e594a547f38ad6bf5e3d60304ce7539e677c1429eebab115bce56e"},
+ {file = "regex-2023.5.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cf123225945aa58b3057d0fba67e8061c62d14cc8a4202630f8057df70189051"},
+ {file = "regex-2023.5.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a99757ad7fe5c8a2bb44829fc57ced11253e10f462233c1255fe03888e06bc19"},
+ {file = "regex-2023.5.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a623564d810e7a953ff1357f7799c14bc9beeab699aacc8b7ab7822da1e952b8"},
+ {file = "regex-2023.5.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ced02e3bd55e16e89c08bbc8128cff0884d96e7f7a5633d3dc366b6d95fcd1d6"},
+ {file = "regex-2023.5.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1cbe6b5be3b9b698d8cc4ee4dee7e017ad655e83361cd0ea8e653d65e469468"},
+ {file = "regex-2023.5.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a6e4b0e0531223f53bad07ddf733af490ba2b8367f62342b92b39b29f72735a"},
+ {file = "regex-2023.5.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2e9c4f778514a560a9c9aa8e5538bee759b55f6c1dcd35613ad72523fd9175b8"},
+ {file = "regex-2023.5.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:256f7f4c6ba145f62f7a441a003c94b8b1af78cee2cccacfc1e835f93bc09426"},
+ {file = "regex-2023.5.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:bd7b68fd2e79d59d86dcbc1ccd6e2ca09c505343445daaa4e07f43c8a9cc34da"},
+ {file = "regex-2023.5.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4a5059bd585e9e9504ef9c07e4bc15b0a621ba20504388875d66b8b30a5c4d18"},
+ {file = "regex-2023.5.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:6893544e06bae009916a5658ce7207e26ed17385149f35a3125f5259951f1bbe"},
+ {file = "regex-2023.5.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c64d5abe91a3dfe5ff250c6bb267ef00dbc01501518225b45a5f9def458f31fb"},
+ {file = "regex-2023.5.5-cp38-cp38-win32.whl", hash = "sha256:7923470d6056a9590247ff729c05e8e0f06bbd4efa6569c916943cb2d9b68b91"},
+ {file = "regex-2023.5.5-cp38-cp38-win_amd64.whl", hash = "sha256:4035d6945cb961c90c3e1c1ca2feb526175bcfed44dfb1cc77db4fdced060d3e"},
+ {file = "regex-2023.5.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:50fd2d9b36938d4dcecbd684777dd12a407add4f9f934f235c66372e630772b0"},
+ {file = "regex-2023.5.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d19e57f888b00cd04fc38f5e18d0efbd91ccba2d45039453ab2236e6eec48d4d"},
+ {file = "regex-2023.5.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd966475e963122ee0a7118ec9024388c602d12ac72860f6eea119a3928be053"},
+ {file = "regex-2023.5.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db09e6c18977a33fea26fe67b7a842f706c67cf8bda1450974d0ae0dd63570df"},
+ {file = "regex-2023.5.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6164d4e2a82f9ebd7752a06bd6c504791bedc6418c0196cd0a23afb7f3e12b2d"},
+ {file = "regex-2023.5.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84397d3f750d153ebd7f958efaa92b45fea170200e2df5e0e1fd4d85b7e3f58a"},
+ {file = "regex-2023.5.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c3efee9bb53cbe7b285760c81f28ac80dc15fa48b5fe7e58b52752e642553f1"},
+ {file = "regex-2023.5.5-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:144b5b017646b5a9392a5554a1e5db0000ae637be4971c9747566775fc96e1b2"},
+ {file = "regex-2023.5.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1189fbbb21e2c117fda5303653b61905aeeeea23de4a94d400b0487eb16d2d60"},
+ {file = "regex-2023.5.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f83fe9e10f9d0b6cf580564d4d23845b9d692e4c91bd8be57733958e4c602956"},
+ {file = "regex-2023.5.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:72aa4746993a28c841e05889f3f1b1e5d14df8d3daa157d6001a34c98102b393"},
+ {file = "regex-2023.5.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:de2f780c3242ea114dd01f84848655356af4dd561501896c751d7b885ea6d3a1"},
+ {file = "regex-2023.5.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:290fd35219486dfbc00b0de72f455ecdd63e59b528991a6aec9fdfc0ce85672e"},
+ {file = "regex-2023.5.5-cp39-cp39-win32.whl", hash = "sha256:732176f5427e72fa2325b05c58ad0b45af341c459910d766f814b0584ac1f9ac"},
+ {file = "regex-2023.5.5-cp39-cp39-win_amd64.whl", hash = "sha256:1307aa4daa1cbb23823d8238e1f61292fd07e4e5d8d38a6efff00b67a7cdb764"},
+ {file = "regex-2023.5.5.tar.gz", hash = "sha256:7d76a8a1fc9da08296462a18f16620ba73bcbf5909e42383b253ef34d9d5141e"},
]
[[package]]
name = "requests"
-version = "2.28.2"
+version = "2.31.0"
description = "Python HTTP for Humans."
category = "dev"
optional = false
-python-versions = ">=3.7, <4"
+python-versions = ">=3.7"
files = [
- {file = "requests-2.28.2-py3-none-any.whl", hash = "sha256:64299f4909223da747622c030b781c0d7811e359c37124b4bd368fb8c6518baa"},
- {file = "requests-2.28.2.tar.gz", hash = "sha256:98b1b2782e3c6c4904938b84c0eb932721069dfdb9134313beff7c83c2df24bf"},
+ {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"},
+ {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"},
]
[package.dependencies]
certifi = ">=2017.4.17"
charset-normalizer = ">=2,<4"
idna = ">=2.5,<4"
-urllib3 = ">=1.21.1,<1.27"
+urllib3 = ">=1.21.1,<3"
[package.extras]
socks = ["PySocks (>=1.5.6,!=1.5.7)"]
@@ -1336,19 +1345,19 @@ files = [
[[package]]
name = "setuptools"
-version = "67.7.1"
+version = "67.8.0"
description = "Easily download, build, install, upgrade, and uninstall Python packages"
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "setuptools-67.7.1-py3-none-any.whl", hash = "sha256:6f0839fbdb7e3cfef1fc38d7954f5c1c26bf4eebb155a55c9bf8faf997b9fb67"},
- {file = "setuptools-67.7.1.tar.gz", hash = "sha256:bb16732e8eb928922eabaa022f881ae2b7cdcfaf9993ef1f5e841a96d32b8e0c"},
+ {file = "setuptools-67.8.0-py3-none-any.whl", hash = "sha256:5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f"},
+ {file = "setuptools-67.8.0.tar.gz", hash = "sha256:62642358adc77ffa87233bc4d2354c4b2682d214048f500964dbe760ccedf102"},
]
[package.extras]
docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
-testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
+testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"]
[[package]]
@@ -1365,14 +1374,14 @@ files = [
[[package]]
name = "termcolor"
-version = "2.2.0"
+version = "2.3.0"
description = "ANSI color formatting for output in terminal"
category = "main"
optional = false
python-versions = ">=3.7"
files = [
- {file = "termcolor-2.2.0-py3-none-any.whl", hash = "sha256:91ddd848e7251200eac969846cbae2dacd7d71c2871e92733289e7e3666f48e7"},
- {file = "termcolor-2.2.0.tar.gz", hash = "sha256:dfc8ac3f350788f23b2947b3e6cfa5a53b630b612e6cd8965a015a776020b99a"},
+ {file = "termcolor-2.3.0-py3-none-any.whl", hash = "sha256:3afb05607b89aed0ffe25202399ee0867ad4d3cb4180d98aaf8eefa6a5f7d475"},
+ {file = "termcolor-2.3.0.tar.gz", hash = "sha256:b5b08f68937f138fe92f6c089b99f1e2da0ae56c52b78bf7075fd95420fd9a5a"},
]
[package.extras]
@@ -1392,14 +1401,14 @@ files = [
[[package]]
name = "tomlkit"
-version = "0.11.7"
+version = "0.11.8"
description = "Style preserving TOML library"
category = "main"
optional = false
python-versions = ">=3.7"
files = [
- {file = "tomlkit-0.11.7-py3-none-any.whl", hash = "sha256:5325463a7da2ef0c6bbfefb62a3dc883aebe679984709aee32a317907d0a8d3c"},
- {file = "tomlkit-0.11.7.tar.gz", hash = "sha256:f392ef70ad87a672f02519f99967d28a4d3047133e2d1df936511465fbb3791d"},
+ {file = "tomlkit-0.11.8-py3-none-any.whl", hash = "sha256:8c726c4c202bdb148667835f68d68780b9a003a9ec34167b6c673b38eff2a171"},
+ {file = "tomlkit-0.11.8.tar.gz", hash = "sha256:9330fc7faa1db67b541b28e62018c17d20be733177d290a13b24c62d1614e0c3"},
]
[[package]]
@@ -1478,54 +1487,55 @@ files = [
[[package]]
name = "typing-extensions"
-version = "4.5.0"
+version = "4.6.3"
description = "Backported and Experimental Type Hints for Python 3.7+"
category = "main"
optional = false
python-versions = ">=3.7"
files = [
- {file = "typing_extensions-4.5.0-py3-none-any.whl", hash = "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4"},
- {file = "typing_extensions-4.5.0.tar.gz", hash = "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb"},
+ {file = "typing_extensions-4.6.3-py3-none-any.whl", hash = "sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26"},
+ {file = "typing_extensions-4.6.3.tar.gz", hash = "sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5"},
]
[[package]]
name = "urllib3"
-version = "1.26.15"
+version = "2.0.2"
description = "HTTP library with thread-safe connection pooling, file post, and more."
category = "dev"
optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
+python-versions = ">=3.7"
files = [
- {file = "urllib3-1.26.15-py2.py3-none-any.whl", hash = "sha256:aa751d169e23c7479ce47a0cb0da579e3ede798f994f5816a74e4f4500dcea42"},
- {file = "urllib3-1.26.15.tar.gz", hash = "sha256:8a388717b9476f934a21484e8c8e61875ab60644d29b9b39e11e4b9dc1c6b305"},
+ {file = "urllib3-2.0.2-py3-none-any.whl", hash = "sha256:d055c2f9d38dc53c808f6fdc8eab7360b6fdbbde02340ed25cfbcd817c62469e"},
+ {file = "urllib3-2.0.2.tar.gz", hash = "sha256:61717a1095d7e155cdb737ac7bb2f4324a858a1e2e6466f6d03ff630ca68d3cc"},
]
[package.extras]
-brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"]
-secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"]
-socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
+brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
+secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"]
+socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
+zstd = ["zstandard (>=0.18.0)"]
[[package]]
name = "virtualenv"
-version = "20.21.1"
+version = "20.23.0"
description = "Virtual Python Environment builder"
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
- {file = "virtualenv-20.21.1-py3-none-any.whl", hash = "sha256:09ddbe1af0c8ed2bb4d6ed226b9e6415718ad18aef9fa0ba023d96b7a8356049"},
- {file = "virtualenv-20.21.1.tar.gz", hash = "sha256:4c104ccde994f8b108163cf9ba58f3d11511d9403de87fb9b4f52bf33dbc8668"},
+ {file = "virtualenv-20.23.0-py3-none-any.whl", hash = "sha256:6abec7670e5802a528357fdc75b26b9f57d5d92f29c5462ba0fbe45feacc685e"},
+ {file = "virtualenv-20.23.0.tar.gz", hash = "sha256:a85caa554ced0c0afbd0d638e7e2d7b5f92d23478d05d17a76daeac8f279f924"},
]
[package.dependencies]
distlib = ">=0.3.6,<1"
-filelock = ">=3.4.1,<4"
-importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.8\""}
-platformdirs = ">=2.4,<4"
+filelock = ">=3.11,<4"
+importlib-metadata = {version = ">=6.4.1", markers = "python_version < \"3.8\""}
+platformdirs = ">=3.2,<4"
[package.extras]
docs = ["furo (>=2023.3.27)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=22.12)"]
-test = ["covdefaults (>=2.3)", "coverage (>=7.2.3)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.3.1)", "pytest-env (>=0.8.1)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.10)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)"]
+test = ["covdefaults (>=2.3)", "coverage (>=7.2.3)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.3.1)", "pytest-env (>=0.8.1)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.10)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=67.7.1)", "time-machine (>=2.9)"]
[[package]]
name = "watchdog"
@@ -1598,4 +1608,4 @@ testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more
[metadata]
lock-version = "2.0"
python-versions = "^3.7"
-content-hash = "3786ee4cd2228f286a572eae8989bb6fb97cfb8441725a4c232c1aa0b36d6e7e"
+content-hash = "8d518516e2278d5a633eb7361c57745112bcf620fb4b4ea01f5b5d2411f1569b"
diff --git a/pyproject.toml b/pyproject.toml
index c0d6311bf7..6e12d9775b 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,5 +1,5 @@
[tool.commitizen]
-version = "3.2.2"
+version = "3.3.0"
tag_format = "v$version"
version_files = [
"pyproject.toml:version",
@@ -9,7 +9,7 @@ version_files = [
[tool.poetry]
name = "commitizen"
-version = "3.2.2"
+version = "3.3.0"
description = "Python commitizen client tool"
authors = ["Santiago Fraire "]
license = "MIT"
diff --git a/tests/commands/test_bump_command.py b/tests/commands/test_bump_command.py
index f11a485db4..c6d41da97e 100644
--- a/tests/commands/test_bump_command.py
+++ b/tests/commands/test_bump_command.py
@@ -1,6 +1,7 @@
+from __future__ import annotations
+
import inspect
import sys
-from typing import Tuple
from unittest.mock import MagicMock, call
import pytest
@@ -649,7 +650,7 @@ def test_bump_with_changelog_to_stdout_dry_run_arg(
def test_bump_changelog_command_commits_untracked_changelog_and_version_files(
tmp_commitizen_project,
mocker,
- cli_bump_changelog_args: Tuple[str, ...],
+ cli_bump_changelog_args: tuple[str, ...],
version_filepath: str,
version_regex: str,
version_file_content: str,
diff --git a/tests/commands/test_changelog_command.py b/tests/commands/test_changelog_command.py
index 30033d9c7d..cb7298c0e6 100644
--- a/tests/commands/test_changelog_command.py
+++ b/tests/commands/test_changelog_command.py
@@ -116,7 +116,6 @@ def test_changelog_replacing_unreleased_using_incremental(
def test_changelog_is_persisted_using_incremental(
mocker: MockFixture, capsys, changelog_path, file_regression
):
-
create_file_and_commit("feat: add new output")
create_file_and_commit("fix: output glitch")
create_file_and_commit("Merge into master")
@@ -550,7 +549,6 @@ def test_breaking_change_content_v1_with_exclamation_mark_feat(
def test_changelog_config_flag_increment(
mocker: MockFixture, changelog_path, config_path, file_regression
):
-
with open(config_path, "a") as f:
f.write("changelog_incremental = true\n")
with open(changelog_path, "a") as f:
@@ -607,7 +605,6 @@ def test_changelog_config_flag_merge_prerelease(
def test_changelog_config_start_rev_option(
mocker: MockFixture, capsys, config_path, file_regression
):
-
# create commit and tag
create_file_and_commit("feat: new file")
testargs = ["cz", "bump", "--yes"]
@@ -799,7 +796,6 @@ def test_changelog_incremental_with_merge_prerelease(
def test_changelog_with_filename_as_empty_string(
mocker: MockFixture, changelog_path, config_path
):
-
with open(config_path, "a") as f:
f.write("changelog_file = true\n")
diff --git a/tests/commands/test_check_command.py b/tests/commands/test_check_command.py
index 9e9182e6f2..69fa33df20 100644
--- a/tests/commands/test_check_command.py
+++ b/tests/commands/test_check_command.py
@@ -1,6 +1,7 @@
+from __future__ import annotations
+
import sys
from io import StringIO
-from typing import List
import pytest
from pytest_mock import MockFixture
@@ -41,7 +42,7 @@
"docs(check): fix pre-commit setup",
"bump: version 1.16.1 → 1.16.2",
"Merge pull request #135 from Lee-W/fix-pre-commit-hook\n\nFix pre commit hook",
- "docs(check): enforce cz check only whem committing",
+ "docs(check): enforce cz check only when committing",
(
'Revert "fix(pre-commit): set pre-commit check stage to commit-msg"\n\n'
"This reverts commit afc70133e4a81344928561fbf3bb20738dfc8a0b."
@@ -52,7 +53,7 @@
]
-def _build_fake_git_commits(commit_msgs: List[str]) -> List[git.GitCommit]:
+def _build_fake_git_commits(commit_msgs: list[str]) -> list[git.GitCommit]:
return [git.GitCommit("test_rev", commit_msg) for commit_msg in commit_msgs]
@@ -223,7 +224,6 @@ def test_check_command_with_invalid_argument(config):
@pytest.mark.usefixtures("tmp_commitizen_project")
def test_check_command_with_empty_range(config, mocker: MockFixture):
-
# must initialize git with a commit
create_file_and_commit("feat: initial")
diff --git a/tests/commands/test_init_command.py b/tests/commands/test_init_command.py
index 8f9bb6b238..812accb69f 100644
--- a/tests/commands/test_init_command.py
+++ b/tests/commands/test_init_command.py
@@ -1,6 +1,8 @@
+from __future__ import annotations
+
import json
import os
-from typing import Any, Dict, List
+from typing import Any
import pytest
import yaml
@@ -153,7 +155,7 @@ def default_choice(request, mocker: MockFixture):
def check_cz_config(config: str):
"""
- Cehck the content of commitizen config is as expected
+ Check the content of commitizen config is as expected
Args:
config: The config path
@@ -168,7 +170,7 @@ def check_cz_config(config: str):
assert config_data == expected_config
-def check_pre_commit_config(expected: List[Dict[str, Any]]):
+def check_pre_commit_config(expected: list[dict[str, Any]]):
"""
Check the content of pre-commit config is as expected
"""
diff --git a/tests/conftest.py b/tests/conftest.py
index e2177472db..98b56df158 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -1,8 +1,9 @@
+from __future__ import annotations
+
import os
import re
import tempfile
from pathlib import Path
-from typing import Optional
import pytest
@@ -55,7 +56,7 @@ def tmp_commitizen_project(tmp_git_project):
@pytest.fixture(scope="function")
def tmp_commitizen_project_initial(tmp_git_project):
def _initial(
- config_extra: Optional[str] = None,
+ config_extra: str | None = None,
version="0.1.0",
initial_commit="feat: new user interface",
):
diff --git a/tests/test_git.py b/tests/test_git.py
index 81089f6759..79cd76fca6 100644
--- a/tests/test_git.py
+++ b/tests/test_git.py
@@ -1,12 +1,13 @@
+from __future__ import annotations
+
import inspect
import os
import shutil
-from typing import List, Optional
import pytest
+from commitizen import cmd, exceptions, git
from pytest_mock import MockFixture
-from commitizen import cmd, exceptions, git
from tests.utils import FakeCommand, create_file_and_commit
@@ -174,7 +175,7 @@ def test_get_commits_with_signature():
def test_get_tag_names_has_correct_arrow_annotation():
arrow_annotation = inspect.getfullargspec(git.get_tag_names).annotations["return"]
- assert arrow_annotation == List[Optional[str]]
+ assert arrow_annotation == "list[str | None]"
def test_get_latest_tag_name(tmp_commitizen_project):
diff --git a/tests/test_version_providers.py b/tests/test_version_providers.py
index 1c48fc3603..edf6e2f1cb 100644
--- a/tests/test_version_providers.py
+++ b/tests/test_version_providers.py
@@ -3,7 +3,7 @@
import os
from pathlib import Path
from textwrap import dedent
-from typing import TYPE_CHECKING, Iterator, Optional, Type
+from typing import TYPE_CHECKING, Iterator
import pytest
@@ -57,8 +57,9 @@ def test_commitizen_provider(config: BaseConfig, mocker: MockerFixture):
mock.assert_called_once_with("version", "43.1")
-FILE_PROVIDERS = dict(
- pep621=(
+FILE_PROVIDERS = [
+ (
+ "pep621",
"pyproject.toml",
Pep621Provider,
"""\
@@ -70,7 +71,8 @@ def test_commitizen_provider(config: BaseConfig, mocker: MockerFixture):
version = "42.1"
""",
),
- poetry=(
+ (
+ "poetry",
"pyproject.toml",
PoetryProvider,
"""\
@@ -82,7 +84,21 @@ def test_commitizen_provider(config: BaseConfig, mocker: MockerFixture):
version = "42.1"
""",
),
- cargo=(
+ (
+ "cargo",
+ "Cargo.toml",
+ CargoProvider,
+ """\
+ [workspace.package]
+ version = "0.1.0"
+ """,
+ """\
+ [workspace.package]
+ version = "42.1"
+ """,
+ ),
+ (
+ "cargo",
"Cargo.toml",
CargoProvider,
"""\
@@ -94,7 +110,8 @@ def test_commitizen_provider(config: BaseConfig, mocker: MockerFixture):
version = "42.1"
""",
),
- npm=(
+ (
+ "npm",
"package.json",
NpmProvider,
"""\
@@ -110,7 +127,8 @@ def test_commitizen_provider(config: BaseConfig, mocker: MockerFixture):
}
""",
),
- composer=(
+ (
+ "composer",
"composer.json",
ComposerProvider,
"""\
@@ -126,19 +144,19 @@ def test_commitizen_provider(config: BaseConfig, mocker: MockerFixture):
}
""",
),
-)
+]
@pytest.mark.parametrize(
"id,filename,cls,content,expected",
- (pytest.param(id, *FILE_PROVIDERS[id], id=id) for id in FILE_PROVIDERS),
+ FILE_PROVIDERS,
)
def test_file_providers(
config: BaseConfig,
chdir: Path,
id: str,
filename: str,
- cls: Type[VersionProvider],
+ cls: type[VersionProvider],
content: str,
expected: str,
):
@@ -173,7 +191,7 @@ def test_file_providers(
)
@pytest.mark.usefixtures("tmp_git_project")
def test_scm_provider(
- config: BaseConfig, tag_format: Optional[str], tag: str, version: str
+ config: BaseConfig, tag_format: str | None, tag: str, version: str
):
create_file_and_commit("test: fake commit")
create_tag(tag)
diff --git a/tests/utils.py b/tests/utils.py
index 2efe13fa9e..88498e1af0 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -1,7 +1,8 @@
+from __future__ import annotations
+
import time
import uuid
from pathlib import Path
-from typing import Optional
from commitizen import cmd, exceptions, git
@@ -13,7 +14,7 @@ def __init__(self, out=None, err=None, return_code=0):
self.return_code = return_code
-def create_file_and_commit(message: str, filename: Optional[str] = None):
+def create_file_and_commit(message: str, filename: str | None = None):
if not filename:
filename = str(uuid.uuid4())