commitizen 4.13.0__tar.gz → 4.13.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. {commitizen-4.13.0 → commitizen-4.13.1}/PKG-INFO +1 -1
  2. commitizen-4.13.1/commitizen/__version__.py +1 -0
  3. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/config/__init__.py +8 -14
  4. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/config/base_config.py +7 -1
  5. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/config/json_config.py +7 -2
  6. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/config/toml_config.py +6 -1
  7. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/config/yaml_config.py +6 -3
  8. {commitizen-4.13.0 → commitizen-4.13.1}/pyproject.toml +1 -1
  9. commitizen-4.13.0/commitizen/__version__.py +0 -1
  10. {commitizen-4.13.0 → commitizen-4.13.1}/LICENSE +0 -0
  11. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/__init__.py +0 -0
  12. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/__main__.py +0 -0
  13. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/bump.py +0 -0
  14. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/changelog.py +0 -0
  15. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/changelog_formats/__init__.py +0 -0
  16. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/changelog_formats/asciidoc.py +0 -0
  17. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/changelog_formats/base.py +0 -0
  18. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/changelog_formats/markdown.py +0 -0
  19. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/changelog_formats/restructuredtext.py +0 -0
  20. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/changelog_formats/textile.py +0 -0
  21. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/cli.py +0 -0
  22. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/cmd.py +0 -0
  23. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/commands/__init__.py +0 -0
  24. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/commands/bump.py +0 -0
  25. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/commands/changelog.py +0 -0
  26. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/commands/check.py +0 -0
  27. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/commands/commit.py +0 -0
  28. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/commands/example.py +0 -0
  29. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/commands/info.py +0 -0
  30. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/commands/init.py +0 -0
  31. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/commands/list_cz.py +0 -0
  32. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/commands/schema.py +0 -0
  33. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/commands/version.py +0 -0
  34. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/config/factory.py +0 -0
  35. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/cz/__init__.py +0 -0
  36. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/cz/base.py +0 -0
  37. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/cz/conventional_commits/__init__.py +0 -0
  38. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/cz/conventional_commits/conventional_commits.py +0 -0
  39. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/cz/conventional_commits/conventional_commits_info.txt +0 -0
  40. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/cz/customize/__init__.py +0 -0
  41. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/cz/customize/customize.py +0 -0
  42. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/cz/customize/customize_info.txt +0 -0
  43. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/cz/exceptions.py +0 -0
  44. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/cz/jira/__init__.py +0 -0
  45. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/cz/jira/jira.py +0 -0
  46. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/cz/jira/jira_info.txt +0 -0
  47. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/cz/utils.py +0 -0
  48. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/defaults.py +0 -0
  49. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/exceptions.py +0 -0
  50. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/factory.py +0 -0
  51. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/git.py +0 -0
  52. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/hooks.py +0 -0
  53. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/out.py +0 -0
  54. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/project_info.py +0 -0
  55. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/providers/__init__.py +0 -0
  56. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/providers/base_provider.py +0 -0
  57. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/providers/cargo_provider.py +0 -0
  58. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/providers/commitizen_provider.py +0 -0
  59. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/providers/composer_provider.py +0 -0
  60. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/providers/npm_provider.py +0 -0
  61. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/providers/pep621_provider.py +0 -0
  62. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/providers/poetry_provider.py +0 -0
  63. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/providers/scm_provider.py +0 -0
  64. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/providers/uv_provider.py +0 -0
  65. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/py.typed +0 -0
  66. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/question.py +0 -0
  67. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/tags.py +0 -0
  68. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/templates/CHANGELOG.adoc.j2 +0 -0
  69. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/templates/CHANGELOG.md.j2 +0 -0
  70. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/templates/CHANGELOG.rst.j2 +0 -0
  71. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/templates/CHANGELOG.textile.j2 +0 -0
  72. {commitizen-4.13.0 → commitizen-4.13.1}/commitizen/version_schemes.py +0 -0
  73. {commitizen-4.13.0 → commitizen-4.13.1}/docs/README.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: commitizen
3
- Version: 4.13.0
3
+ Version: 4.13.1
4
4
  Summary: Python commitizen client tool
5
5
  Keywords: commitizen,conventional,commits,git
6
6
  Author: Santiago Fraire
@@ -0,0 +1 @@
1
+ __version__ = "4.13.1"
@@ -13,23 +13,17 @@ def _resolve_config_candidates() -> list[BaseConfig]:
13
13
  git_project_root = git.find_git_project_root()
14
14
  cfg_search_paths = [Path(".")]
15
15
 
16
- if git_project_root and not cfg_search_paths[0].samefile(git_project_root):
16
+ if git_project_root and cfg_search_paths[0].resolve() != git_project_root.resolve():
17
17
  cfg_search_paths.append(git_project_root)
18
18
 
19
- # The following algorithm is ugly, but we need to ensure that the order of the candidates are preserved before v5.
20
- # Also, the number of possible config files is limited, so the complexity is not a problem.
21
19
  candidates: list[BaseConfig] = []
22
20
  for dir in cfg_search_paths:
23
21
  for filename in defaults.CONFIG_FILES:
24
- out_path = dir / Path(filename)
25
- if (
26
- out_path.exists()
27
- and not any(
28
- out_path.samefile(candidate.path) for candidate in candidates
29
- )
30
- and not (conf := _create_config_from_path(out_path)).is_empty_config
31
- ):
32
- candidates.append(conf)
22
+ out_path = dir / filename
23
+ if out_path.is_file():
24
+ conf = _create_config_from_path(out_path)
25
+ if conf.contains_commitizen_section():
26
+ candidates.append(conf)
33
27
  return candidates
34
28
 
35
29
 
@@ -43,10 +37,10 @@ def _create_config_from_path(path: Path) -> BaseConfig:
43
37
  def read_cfg(filepath: str | None = None) -> BaseConfig:
44
38
  if filepath is not None:
45
39
  conf_path = Path(filepath)
46
- if not conf_path.exists():
40
+ if not conf_path.is_file():
47
41
  raise ConfigFileNotFound()
48
42
  conf = _create_config_from_path(conf_path)
49
- if conf.is_empty_config:
43
+ if not conf.contains_commitizen_section():
50
44
  raise ConfigFileIsEmpty()
51
45
  return conf
52
46
 
@@ -17,10 +17,16 @@ if TYPE_CHECKING:
17
17
 
18
18
  class BaseConfig:
19
19
  def __init__(self) -> None:
20
- self.is_empty_config = False
21
20
  self._settings: Settings = DEFAULT_SETTINGS.copy()
22
21
  self._path: Path | None = None
23
22
 
23
+ def contains_commitizen_section(self) -> bool:
24
+ """Check if the config file contains a commitizen section.
25
+
26
+ The implementation is different for each config file type.
27
+ """
28
+ raise NotImplementedError()
29
+
24
30
  @property
25
31
  def settings(self) -> Settings:
26
32
  return self._settings
@@ -25,6 +25,11 @@ class JsonConfig(BaseConfig):
25
25
  self.path = path
26
26
  self._parse_setting(data)
27
27
 
28
+ def contains_commitizen_section(self) -> bool:
29
+ with self.path.open("rb") as json_file:
30
+ config_doc = json.load(json_file)
31
+ return config_doc.get("commitizen") is not None
32
+
28
33
  def init_empty_config_content(self) -> None:
29
34
  with smart_open(
30
35
  self.path, "a", encoding=self._settings["encoding"]
@@ -32,7 +37,7 @@ class JsonConfig(BaseConfig):
32
37
  json.dump({"commitizen": {}}, json_file)
33
38
 
34
39
  def set_key(self, key: str, value: object) -> Self:
35
- with open(self.path, "rb") as f:
40
+ with self.path.open("rb") as f:
36
41
  config_doc = json.load(f)
37
42
 
38
43
  config_doc["commitizen"][key] = value
@@ -59,4 +64,4 @@ class JsonConfig(BaseConfig):
59
64
  try:
60
65
  self.settings.update(doc["commitizen"])
61
66
  except KeyError:
62
- self.is_empty_config = True
67
+ pass
@@ -26,6 +26,11 @@ class TomlConfig(BaseConfig):
26
26
  self.path = path
27
27
  self._parse_setting(data)
28
28
 
29
+ def contains_commitizen_section(self) -> bool:
30
+ with self.path.open("rb") as f:
31
+ config_doc = parse(f.read())
32
+ return config_doc.get("tool", {}).get("commitizen") is not None
33
+
29
34
  def init_empty_config_content(self) -> None:
30
35
  config_doc = TOMLDocument()
31
36
  if os.path.isfile(self.path):
@@ -67,4 +72,4 @@ class TomlConfig(BaseConfig):
67
72
  try:
68
73
  self.settings.update(doc["tool"]["commitizen"]) # type: ignore[index,typeddict-item] # TODO: fix this
69
74
  except exceptions.NonExistentKey:
70
- self.is_empty_config = True
75
+ pass
@@ -32,6 +32,11 @@ class YAMLConfig(BaseConfig):
32
32
  ) as json_file:
33
33
  yaml.dump({"commitizen": {}}, json_file, explicit_start=True)
34
34
 
35
+ def contains_commitizen_section(self) -> bool:
36
+ with self.path.open("rb") as yaml_file:
37
+ config_doc = yaml.load(yaml_file, Loader=yaml.FullLoader)
38
+ return config_doc.get("commitizen") is not None
39
+
35
40
  def _parse_setting(self, data: bytes | str) -> None:
36
41
  """We expect to have a section in cz.yaml looking like
37
42
 
@@ -40,8 +45,6 @@ class YAMLConfig(BaseConfig):
40
45
  name: cz_conventional_commits
41
46
  ```
42
47
  """
43
- import yaml.scanner
44
-
45
48
  try:
46
49
  doc = yaml.safe_load(data)
47
50
  except yaml.YAMLError as e:
@@ -50,7 +53,7 @@ class YAMLConfig(BaseConfig):
50
53
  try:
51
54
  self.settings.update(doc["commitizen"])
52
55
  except (KeyError, TypeError):
53
- self.is_empty_config = True
56
+ pass
54
57
 
55
58
  def set_key(self, key: str, value: object) -> Self:
56
59
  with open(self.path, "rb") as yaml_file:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "commitizen"
3
- version = "4.13.0"
3
+ version = "4.13.1"
4
4
  description = "Python commitizen client tool"
5
5
  authors = [{ name = "Santiago Fraire", email = "santiwilly@gmail.com" }]
6
6
  maintainers = [
@@ -1 +0,0 @@
1
- __version__ = "4.13.0"
File without changes
File without changes