c2cciutils 1.7.3.dev2__tar.gz → 1.8.0.dev45__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.

Potentially problematic release.


This version of c2cciutils might be problematic. Click here for more details.

Files changed (38) hide show
  1. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/PKG-INFO +3 -3
  2. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/__init__.py +15 -10
  3. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/applications-versions.yaml +2 -2
  4. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/applications_definition.py +3 -5
  5. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/configuration.py +2 -4
  6. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/env.py +8 -24
  7. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/lib/docker.py +2 -6
  8. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/lib/oidc.py +2 -0
  9. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/package-lock.json +45 -111
  10. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/package.json +1 -1
  11. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/publish.py +17 -30
  12. c2cciutils-1.8.0.dev45/c2cciutils/scripts/__init__.py +1 -0
  13. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/scripts/clean.py +4 -10
  14. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/scripts/docker_logs.py +4 -4
  15. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/scripts/env.py +2 -6
  16. c2cciutils-1.8.0.dev45/c2cciutils/scripts/k8s/__init__.py +1 -0
  17. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/scripts/main.py +2 -6
  18. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/scripts/publish.py +19 -22
  19. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/scripts/trigger_image_update.py +3 -7
  20. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/scripts/version.py +5 -3
  21. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/pyproject.toml +11 -11
  22. c2cciutils-1.7.3.dev2/c2cciutils/scripts/__init__.py +0 -3
  23. c2cciutils-1.7.3.dev2/c2cciutils/scripts/k8s/__init__.py +0 -3
  24. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/LICENSE +0 -0
  25. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/README.md +0 -0
  26. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/applications.yaml +0 -0
  27. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/branches.graphql +0 -0
  28. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/commits.graphql +0 -0
  29. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/default_branch.graphql +0 -0
  30. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/schema-applications.json +0 -0
  31. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/schema.json +0 -0
  32. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/scripts/docker_versions_gen.py +0 -0
  33. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/scripts/download_applications.py +0 -0
  34. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/scripts/k8s/db.py +0 -0
  35. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/scripts/k8s/install.py +0 -0
  36. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/scripts/k8s/logs.py +0 -0
  37. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/scripts/k8s/wait.py +0 -0
  38. {c2cciutils-1.7.3.dev2 → c2cciutils-1.8.0.dev45}/c2cciutils/scripts/pin_pipenv.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: c2cciutils
3
- Version: 1.7.3.dev2
3
+ Version: 1.8.0.dev45
4
4
  Summary: Common utilities for Camptocamp CI
5
5
  Home-page: https://github.com/camptocamp/c2cciutils
6
6
  License: FreeBSD
@@ -38,8 +38,8 @@ Requires-Dist: id (>=1.0.0,<2.0.0) ; extra == "publish"
38
38
  Requires-Dist: multi-repo-automation (>=1.0.0,<2.0.0) ; extra == "version"
39
39
  Requires-Dist: requests (>=2.0.0,<3.0.0)
40
40
  Requires-Dist: ruamel.yaml (>=0.0.0,<1.0.0)
41
- Requires-Dist: security-md (>=0.0.0,<1.0.0)
42
- Requires-Dist: twine (>=5.0.0,<6.0.0) ; extra == "publish"
41
+ Requires-Dist: security-md (>=1.0.0,<2.0.0)
42
+ Requires-Dist: twine (>=6.0.0,<7.0.0) ; extra == "publish"
43
43
  Project-URL: Repository, https://github.com/camptocamp/c2cciutils
44
44
  Description-Content-Type: text/markdown
45
45
 
@@ -1,6 +1,4 @@
1
- """
2
- c2cciutils shared utils function.
3
- """
1
+ """c2cciutils shared utils function."""
4
2
 
5
3
  import glob
6
4
  import json
@@ -18,9 +16,7 @@ import c2cciutils.configuration
18
16
 
19
17
 
20
18
  def get_repository() -> str:
21
- """
22
- Get the current GitHub repository like `organization/project`.
23
- """
19
+ """Get the current GitHub repository like `organization/project`."""
24
20
  if "GITHUB_REPOSITORY" in os.environ:
25
21
  return os.environ["GITHUB_REPOSITORY"]
26
22
 
@@ -44,11 +40,12 @@ def merge(default_config: Any, config: Any) -> Any:
44
40
  Arguments:
45
41
  default_config: The default config that will be applied
46
42
  config: The base config, will be modified
43
+
47
44
  """
48
45
  if not isinstance(default_config, dict) or not isinstance(config, dict):
49
46
  return config
50
47
 
51
- for key in default_config.keys():
48
+ for key in default_config:
52
49
  if key not in config:
53
50
  config[key] = default_config[key]
54
51
  else:
@@ -73,9 +70,7 @@ def get_master_branch(repo: list[str]) -> tuple[str, bool]:
73
70
 
74
71
 
75
72
  def get_config() -> c2cciutils.configuration.Configuration:
76
- """
77
- Get the configuration, with project and auto detections.
78
- """
73
+ """Get the configuration, with project and auto detections."""
79
74
  config: c2cciutils.configuration.Configuration = {}
80
75
  if os.path.exists("ci/config.yaml"):
81
76
  with open("ci/config.yaml", encoding="utf-8") as open_file:
@@ -155,6 +150,7 @@ def error(
155
150
  line: The line number of the error
156
151
  col: The column number of the error
157
152
  error_type: The kind of error (error or warning)
153
+
158
154
  """
159
155
  result = ""
160
156
  on_ci = os.environ.get("CI", "false").lower() == "true"
@@ -197,6 +193,7 @@ def compile_re(config: c2cciutils.configuration.VersionTransform, prefix: str =
197
193
  prefix: The version prefix
198
194
 
199
195
  Return the compiled transform config.
196
+
200
197
  """
201
198
  result = []
202
199
  for conf in config:
@@ -226,6 +223,7 @@ def match(
226
223
 
227
224
  Returns the re match object, the matched config and the value as a tuple
228
225
  On no match it returns None, value
226
+
229
227
  """
230
228
  for conf in config:
231
229
  matched = conf["from"].match(value)
@@ -243,6 +241,7 @@ def does_match(value: str, config: list[VersionTransform]) -> bool:
243
241
  config: The result of `compile`
244
242
 
245
243
  Returns True it it does match else False
244
+
246
245
  """
247
246
  matched, _, _ = match(value, config)
248
247
  return matched is not None
@@ -262,6 +261,7 @@ def get_value(matched: Optional[Match[str]], config: Optional[VersionTransform],
262
261
  value: The default value on returned no match
263
262
 
264
263
  Return the value
264
+
265
265
  """
266
266
  return matched.expand(config.get("to", r"\1")) if matched is not None and config is not None else value
267
267
 
@@ -272,6 +272,7 @@ def print_versions(config: c2cciutils.configuration.PrintVersions) -> bool:
272
272
 
273
273
  Arguments:
274
274
  config: The print configuration
275
+
275
276
  """
276
277
  for version in config.get("versions", c2cciutils.configuration.PRINT_VERSIONS_VERSIONS_DEFAULT):
277
278
  try:
@@ -310,6 +311,7 @@ def gopass(key: str, default: Optional[str] = None) -> Optional[str]:
310
311
  default: the value to return if gopass is not found
311
312
 
312
313
  Return the value
314
+
313
315
  """
314
316
  try:
315
317
  return subprocess.check_output(["gopass", "show", key]).strip().decode()
@@ -326,6 +328,7 @@ def gopass_put(secret: str, key: str) -> None:
326
328
  Arguments:
327
329
  secret: The secret value
328
330
  key: The key
331
+
329
332
  """
330
333
  subprocess.check_output(["gopass", "insert", "--force", key], input=secret.encode())
331
334
 
@@ -338,6 +341,7 @@ def add_authorization_header(headers: dict[str, str]) -> dict[str, str]:
338
341
  headers: The headers
339
342
 
340
343
  Return the headers (to be chained)
344
+
341
345
  """
342
346
  try:
343
347
  token = (
@@ -375,6 +379,7 @@ def graphql(query_file: str, variables: dict[str, Any], default: Any = None) ->
375
379
 
376
380
  Return the data result
377
381
  In case of error it throw an exception
382
+
378
383
  """
379
384
  with open(os.path.join(os.path.dirname(__file__), query_file), encoding="utf-8") as query_open:
380
385
  query = query_open.read()
@@ -1,4 +1,4 @@
1
1
  # https://docs.renovatebot.com/modules/datasource/#github-releases-datasource
2
2
  k3d-io/k3d: v5.7.5 # github-releases
3
- postgresql: 16.0.6 # helm - https://charts.bitnami.com/bitnami
4
- helm/chart-releaser: v1.6.1 # github-releases
3
+ postgresql: 16.3.5 # helm - https://charts.bitnami.com/bitnami
4
+ helm/chart-releaser: v1.7.0 # github-releases
@@ -1,8 +1,6 @@
1
- """
2
- Automatically generated file from a JSON schema.
3
- """
1
+ """Automatically generated file from a JSON schema."""
4
2
 
5
- from typing import Literal, TypedDict, Union
3
+ from typing import Literal, TypedDict
6
4
 
7
5
  # | Application configuration.
8
6
  # |
@@ -43,7 +41,7 @@ All the applications configuration
43
41
  """
44
42
 
45
43
 
46
- TheTypeOfFile = Union[Literal["tar"]]
44
+ TheTypeOfFile = Literal["tar"]
47
45
  """
48
46
  The type of file.
49
47
 
@@ -1,6 +1,4 @@
1
- """
2
- Automatically generated file from a JSON schema.
3
- """
1
+ """Automatically generated file from a JSON schema."""
4
2
 
5
3
  from typing import Any, Literal, TypedDict, Union
6
4
 
@@ -721,7 +719,7 @@ default:
721
719
 
722
720
 
723
721
  class _PublishDockerConfigSnyk(TypedDict, total=False):
724
- """Checks the published images with Snyk"""
722
+ """Checks the published images with Snyk."""
725
723
 
726
724
  monitor_args: Union["_PublishDockerSnykMonitorArgsOneof0", "_PublishDockerSnykMonitorArgsOneof1"]
727
725
  """
@@ -10,9 +10,7 @@ import c2cciutils.configuration
10
10
 
11
11
 
12
12
  class PrintVersions:
13
- """
14
- Print some tools versions.
15
- """
13
+ """Print some tools versions."""
16
14
 
17
15
  def __init__(self, config: c2cciutils.configuration.PrintVersions) -> None:
18
16
  """Construct."""
@@ -24,9 +22,7 @@ class PrintVersions:
24
22
 
25
23
 
26
24
  class PrintConfig:
27
- """
28
- Print the configuration.
29
- """
25
+ """Print the configuration."""
30
26
 
31
27
  def __init__(self, config: c2cciutils.configuration.Configuration) -> None:
32
28
  """Construct."""
@@ -40,49 +36,37 @@ class PrintConfig:
40
36
 
41
37
 
42
38
  def print_environment_variables() -> None:
43
- """
44
- Print the environment variables.
45
- """
39
+ """Print the environment variables."""
46
40
  for name, value in sorted(os.environ.items()):
47
41
  if name != "GITHUB_EVENT":
48
42
  print(f"{name}: {value}")
49
43
 
50
44
 
51
45
  def print_github_event_file() -> None:
52
- """
53
- Print the GitHub event file.
54
- """
46
+ """Print the GitHub event file."""
55
47
  if "GITHUB_EVENT_PATH" in os.environ:
56
48
  with open(os.environ["GITHUB_EVENT_PATH"], encoding="utf-8") as event:
57
49
  print(event.read())
58
50
 
59
51
 
60
52
  def print_github_event_object() -> None:
61
- """
62
- Print the GitHub event object.
63
- """
53
+ """Print the GitHub event object."""
64
54
  github_event = json.loads(os.environ["GITHUB_EVENT"])
65
55
  print(yaml.dump(github_event, indent=2))
66
56
 
67
57
 
68
58
  def print_python_package_version() -> None:
69
- """
70
- Print the version of the Python packages.
71
- """
59
+ """Print the version of the Python packages."""
72
60
  subprocess.run(["python3", "-m", "pip", "freeze", "--all"]) # pylint: disable=subprocess-run-check
73
61
 
74
62
 
75
63
  def print_node_package_version() -> None:
76
- """
77
- Print the version of the Python packages.
78
- """
64
+ """Print the version of the Python packages."""
79
65
  subprocess.run(["npm", "list", "--global"]) # pylint: disable=subprocess-run-check
80
66
 
81
67
 
82
68
  def print_debian_package_version() -> None:
83
- """
84
- Print the version of the Python packages.
85
- """
69
+ """Print the version of the Python packages."""
86
70
  subprocess.run(["dpkg", "--list"]) # pylint: disable=subprocess-run-check
87
71
 
88
72
 
@@ -1,6 +1,4 @@
1
- """
2
- Some utility functions for Docker images.
3
- """
1
+ """Some utility functions for Docker images."""
4
2
 
5
3
  import os
6
4
  import subprocess # nosec: B404
@@ -102,9 +100,7 @@ def get_dpkg_packages_versions(
102
100
 
103
101
 
104
102
  def get_versions_config() -> tuple[dict[str, dict[str, str]], bool]:
105
- """
106
- Get the versions from the config file.
107
- """
103
+ """Get the versions from the config file."""
108
104
  if os.path.exists("ci/dpkg-versions.yaml"):
109
105
  with open("ci/dpkg-versions.yaml", encoding="utf-8") as versions_file:
110
106
  return (
@@ -154,8 +154,10 @@ def pypi_login() -> None:
154
154
  Connect to PyPI using OpenID Connect and mint a token for the user.
155
155
 
156
156
  See Also
157
+ --------
157
158
  - https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/about-security-hardening-with-openid-connect
158
159
  - https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-pypi
160
+
159
161
  """
160
162
  pypirc_filename = os.path.expanduser("~/.pypirc")
161
163
 
@@ -8,45 +8,45 @@
8
8
  "name": "c2ccicheck",
9
9
  "version": "1.0.0",
10
10
  "dependencies": {
11
- "snyk": "1.1293.1"
11
+ "snyk": "1.1294.3"
12
12
  }
13
13
  },
14
14
  "node_modules/@sentry-internal/tracing": {
15
- "version": "7.119.0",
16
- "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.119.0.tgz",
17
- "integrity": "sha512-oKdFJnn+56f0DHUADlL8o9l8jTib3VDLbWQBVkjD9EprxfaCwt2m8L5ACRBdQ8hmpxCEo4I8/6traZ7qAdBUqA==",
15
+ "version": "7.120.2",
16
+ "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.120.2.tgz",
17
+ "integrity": "sha512-eo2F8cP6X+vr54Mp6vu+NoQEDz0M5O24Tz8jPY0T1CpiWdwCmHb7Sln+oLXeQ3/LlWdVQihBfKDBZfBdUfsBTg==",
18
18
  "license": "MIT",
19
19
  "dependencies": {
20
- "@sentry/core": "7.119.0",
21
- "@sentry/types": "7.119.0",
22
- "@sentry/utils": "7.119.0"
20
+ "@sentry/core": "7.120.2",
21
+ "@sentry/types": "7.120.2",
22
+ "@sentry/utils": "7.120.2"
23
23
  },
24
24
  "engines": {
25
25
  "node": ">=8"
26
26
  }
27
27
  },
28
28
  "node_modules/@sentry/core": {
29
- "version": "7.119.0",
30
- "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.119.0.tgz",
31
- "integrity": "sha512-CS2kUv9rAJJEjiRat6wle3JATHypB0SyD7pt4cpX5y0dN5dZ1JrF57oLHRMnga9fxRivydHz7tMTuBhSSwhzjw==",
29
+ "version": "7.120.2",
30
+ "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.2.tgz",
31
+ "integrity": "sha512-eurLBFQJC7WWWYoEna25Z9I/GJjqAmH339tv52XP8sqXV7B5hRcHDcfrsT/UGHpU316M24p3lWhj0eimtCZ0SQ==",
32
32
  "license": "MIT",
33
33
  "dependencies": {
34
- "@sentry/types": "7.119.0",
35
- "@sentry/utils": "7.119.0"
34
+ "@sentry/types": "7.120.2",
35
+ "@sentry/utils": "7.120.2"
36
36
  },
37
37
  "engines": {
38
38
  "node": ">=8"
39
39
  }
40
40
  },
41
41
  "node_modules/@sentry/integrations": {
42
- "version": "7.119.0",
43
- "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.119.0.tgz",
44
- "integrity": "sha512-OHShvtsRW0A+ZL/ZbMnMqDEtJddPasndjq+1aQXw40mN+zeP7At/V1yPZyFaURy86iX7Ucxw5BtmzuNy7hLyTA==",
42
+ "version": "7.120.2",
43
+ "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.120.2.tgz",
44
+ "integrity": "sha512-bMvL2fD3TGLM5YAUoQ2Qz6bYeVU8f7YRFNSjKNxK4EbvFgAU9j1FD6EKg0V0RNOJYnJjGIZYMmcWTXBbVTJL6w==",
45
45
  "license": "MIT",
46
46
  "dependencies": {
47
- "@sentry/core": "7.119.0",
48
- "@sentry/types": "7.119.0",
49
- "@sentry/utils": "7.119.0",
47
+ "@sentry/core": "7.120.2",
48
+ "@sentry/types": "7.120.2",
49
+ "@sentry/utils": "7.120.2",
50
50
  "localforage": "^1.8.1"
51
51
  },
52
52
  "engines": {
@@ -54,37 +54,37 @@
54
54
  }
55
55
  },
56
56
  "node_modules/@sentry/node": {
57
- "version": "7.119.0",
58
- "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.119.0.tgz",
59
- "integrity": "sha512-9PFzN8xS6U0oZCflpVxS2SSIsHkCaj7qYBlsvHj4CTGWfao9ImwrU6+smy4qoG6oxwPfoVb5pOOMb4WpWOvXcQ==",
57
+ "version": "7.120.2",
58
+ "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.120.2.tgz",
59
+ "integrity": "sha512-ZnW9gpIGaoU+vYZyVZca9dObfmWYiXEWIMUM/JXaFb8AhP1OXvYweNiU0Pe/gNrz4oGAogU8scJc70ar7Vj0ww==",
60
60
  "license": "MIT",
61
61
  "dependencies": {
62
- "@sentry-internal/tracing": "7.119.0",
63
- "@sentry/core": "7.119.0",
64
- "@sentry/integrations": "7.119.0",
65
- "@sentry/types": "7.119.0",
66
- "@sentry/utils": "7.119.0"
62
+ "@sentry-internal/tracing": "7.120.2",
63
+ "@sentry/core": "7.120.2",
64
+ "@sentry/integrations": "7.120.2",
65
+ "@sentry/types": "7.120.2",
66
+ "@sentry/utils": "7.120.2"
67
67
  },
68
68
  "engines": {
69
69
  "node": ">=8"
70
70
  }
71
71
  },
72
72
  "node_modules/@sentry/types": {
73
- "version": "7.119.0",
74
- "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.119.0.tgz",
75
- "integrity": "sha512-27qQbutDBPKGbuJHROxhIWc1i0HJaGLA90tjMu11wt0E4UNxXRX+UQl4Twu68v4EV3CPvQcEpQfgsViYcXmq+w==",
73
+ "version": "7.120.2",
74
+ "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.120.2.tgz",
75
+ "integrity": "sha512-FWVoiblHQJ892GaOqdXx/5/n5XDLF28z81vJ0lCY49PMh8waz8LJ0b9RSmt9tasSDl0OQ7eUlPl1xu1jTrv1NA==",
76
76
  "license": "MIT",
77
77
  "engines": {
78
78
  "node": ">=8"
79
79
  }
80
80
  },
81
81
  "node_modules/@sentry/utils": {
82
- "version": "7.119.0",
83
- "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.119.0.tgz",
84
- "integrity": "sha512-ZwyXexWn2ZIe2bBoYnXJVPc2esCSbKpdc6+0WJa8eutXfHq3FRKg4ohkfCBpfxljQGEfP1+kfin945lA21Ka+A==",
82
+ "version": "7.120.2",
83
+ "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.120.2.tgz",
84
+ "integrity": "sha512-jgnQlw11mRfQrQRAXbq4zEd+tbYwHel5eqeS/oU6EImXRjmHNtS79nB8MHvJeQu1FMCpFs1Ymrrs5FICwS6VeQ==",
85
85
  "license": "MIT",
86
86
  "dependencies": {
87
- "@sentry/types": "7.119.0"
87
+ "@sentry/types": "7.120.2"
88
88
  },
89
89
  "engines": {
90
90
  "node": ">=8"
@@ -94,6 +94,7 @@
94
94
  "version": "3.2.0",
95
95
  "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz",
96
96
  "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==",
97
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
97
98
  "license": "MIT"
98
99
  },
99
100
  "node_modules/define-data-property": {
@@ -137,13 +138,10 @@
137
138
  "license": "MIT"
138
139
  },
139
140
  "node_modules/es-define-property": {
140
- "version": "1.0.0",
141
- "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
142
- "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
141
+ "version": "1.0.1",
142
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
143
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
143
144
  "license": "MIT",
144
- "dependencies": {
145
- "get-intrinsic": "^1.2.4"
146
- },
147
145
  "engines": {
148
146
  "node": ">= 0.4"
149
147
  }
@@ -175,34 +173,6 @@
175
173
  "url": "https://github.com/sponsors/sindresorhus"
176
174
  }
177
175
  },
178
- "node_modules/function-bind": {
179
- "version": "1.1.2",
180
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
181
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
182
- "license": "MIT",
183
- "funding": {
184
- "url": "https://github.com/sponsors/ljharb"
185
- }
186
- },
187
- "node_modules/get-intrinsic": {
188
- "version": "1.2.4",
189
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
190
- "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
191
- "license": "MIT",
192
- "dependencies": {
193
- "es-errors": "^1.3.0",
194
- "function-bind": "^1.1.2",
195
- "has-proto": "^1.0.1",
196
- "has-symbols": "^1.0.3",
197
- "hasown": "^2.0.0"
198
- },
199
- "engines": {
200
- "node": ">= 0.4"
201
- },
202
- "funding": {
203
- "url": "https://github.com/sponsors/ljharb"
204
- }
205
- },
206
176
  "node_modules/global-agent": {
207
177
  "version": "3.0.0",
208
178
  "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz",
@@ -237,12 +207,12 @@
237
207
  }
238
208
  },
239
209
  "node_modules/gopd": {
240
- "version": "1.0.1",
241
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
242
- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
210
+ "version": "1.2.0",
211
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
212
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
243
213
  "license": "MIT",
244
- "dependencies": {
245
- "get-intrinsic": "^1.1.3"
214
+ "engines": {
215
+ "node": ">= 0.4"
246
216
  },
247
217
  "funding": {
248
218
  "url": "https://github.com/sponsors/ljharb"
@@ -260,42 +230,6 @@
260
230
  "url": "https://github.com/sponsors/ljharb"
261
231
  }
262
232
  },
263
- "node_modules/has-proto": {
264
- "version": "1.0.3",
265
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
266
- "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
267
- "license": "MIT",
268
- "engines": {
269
- "node": ">= 0.4"
270
- },
271
- "funding": {
272
- "url": "https://github.com/sponsors/ljharb"
273
- }
274
- },
275
- "node_modules/has-symbols": {
276
- "version": "1.0.3",
277
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
278
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
279
- "license": "MIT",
280
- "engines": {
281
- "node": ">= 0.4"
282
- },
283
- "funding": {
284
- "url": "https://github.com/sponsors/ljharb"
285
- }
286
- },
287
- "node_modules/hasown": {
288
- "version": "2.0.2",
289
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
290
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
291
- "license": "MIT",
292
- "dependencies": {
293
- "function-bind": "^1.1.2"
294
- },
295
- "engines": {
296
- "node": ">= 0.4"
297
- }
298
- },
299
233
  "node_modules/immediate": {
300
234
  "version": "3.0.6",
301
235
  "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
@@ -398,9 +332,9 @@
398
332
  }
399
333
  },
400
334
  "node_modules/snyk": {
401
- "version": "1.1293.1",
402
- "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.1293.1.tgz",
403
- "integrity": "sha512-CnbNrsEUMGfajfJ5/03BIgx1ixWKr9Kk+9xDw6sZqKy4K5K01DkyUp/V+WjbCfjr0li9+aE7u70s276KEOuiNA==",
335
+ "version": "1.1294.3",
336
+ "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.1294.3.tgz",
337
+ "integrity": "sha512-ZF+F2bv293HmpFxZCV0x8hT3rQGOl6rPDoJq/TqBT1i5/nZypfn8v4A1Q4m6zUSUs1g6WJsS8QR5wTlR/eSvMQ==",
404
338
  "hasInstallScript": true,
405
339
  "license": "Apache-2.0",
406
340
  "dependencies": {
@@ -4,6 +4,6 @@
4
4
  "description": "",
5
5
  "author": "",
6
6
  "dependencies": {
7
- "snyk": "1.1293.1"
7
+ "snyk": "1.1294.3"
8
8
  }
9
9
  }
@@ -1,6 +1,4 @@
1
- """
2
- The publishing functions.
3
- """
1
+ """The publishing functions."""
4
2
 
5
3
  import argparse
6
4
  import datetime
@@ -10,11 +8,11 @@ import pickle # nosec
10
8
  import re
11
9
  import subprocess # nosec
12
10
  import sys
13
- import tomllib
14
11
  import uuid
15
12
  from typing import Optional
16
13
 
17
14
  import ruamel.yaml
15
+ import tomllib
18
16
  from google.auth.transport.requests import Request
19
17
  from google.oauth2.credentials import Credentials
20
18
  from google_auth_oauthlib.flow import InstalledAppFlow
@@ -24,17 +22,13 @@ import c2cciutils.configuration
24
22
 
25
23
 
26
24
  class GoogleCalendar:
27
- """
28
- Interact with the Google Calendar API.
29
- """
25
+ """Interact with the Google Calendar API."""
30
26
 
31
27
  # pylint: disable=too-many-instance-attributes
32
28
  def __init__(self) -> None:
33
- """
34
- Initialize.
35
- """
29
+ """Initialize."""
36
30
  self.scopes = ["https://www.googleapis.com/auth/calendar"] # in fact it is better to hard-code this
37
- self.credentials_pickle_file = os.environ.get("TMP_CREDS_FILE", f"/tmp/{uuid.uuid4()}.pickle")
31
+ self.credentials_pickle_file = os.environ.get("TMP_CREDS_FILE", f"/tmp/{uuid.uuid4()}.pickle") # noqa: S108
38
32
  self.credentials_json_file = os.environ.get(
39
33
  "GOOGLE_CREDS_JSON_FILE", "~/google-credentials-c2cibot.json"
40
34
  ) # used to refresh the refresh_token or to initialize the credentials the first time
@@ -62,15 +56,13 @@ class GoogleCalendar:
62
56
  self.service = build("calendar", "v3", credentials=self.creds)
63
57
 
64
58
  def init_calendar_service(self) -> Credentials: # type: ignore
65
- """
66
- Initialize the calendar service.
67
- """
59
+ """Initialize the calendar service."""
68
60
  # The file token pickle stores the user's access and refresh tokens, and is
69
61
  # created automatically when the authorization flow completes for the first
70
62
  # time.
71
63
  if os.path.exists(self.credentials_pickle_file):
72
64
  with open(self.credentials_pickle_file, "rb") as token:
73
- creds = pickle.load(token) # nosec
65
+ creds = pickle.load(token) # noqa: S301
74
66
  # If there are no (valid) credentials available, let the user log in.
75
67
  if not creds or not creds.valid: # pylint: disable=possibly-used-before-assignment
76
68
  if creds and creds.expired and creds.refresh_token:
@@ -95,9 +87,7 @@ class GoogleCalendar:
95
87
  pickle.dump(creds, token)
96
88
 
97
89
  def _update_creds(self) -> None:
98
- """
99
- Update the credentials.
100
- """
90
+ """Update the credentials."""
101
91
  self.client_id = self.creds.client_id
102
92
  self.client_secret = self.creds.client_secret
103
93
  self.token = self.creds.token
@@ -105,9 +95,7 @@ class GoogleCalendar:
105
95
  self.refresh_token = self.creds.refresh_token
106
96
 
107
97
  def print_all_calendars(self) -> None:
108
- """
109
- Print all calendar events.
110
- """
98
+ """Print all calendar events."""
111
99
  # list all the calendars that the user has access to.
112
100
  # used to debug credentials
113
101
  print("Getting list of calendars")
@@ -129,6 +117,7 @@ class GoogleCalendar:
129
117
 
130
118
  Arguments:
131
119
  time_min: The time to be considered.
120
+
132
121
  """
133
122
  now = datetime.datetime.utcnow()
134
123
  if not time_min:
@@ -163,6 +152,7 @@ class GoogleCalendar:
163
152
  Arguments:
164
153
  summary: The event summary
165
154
  description: The event description
155
+
166
156
  """
167
157
  now = datetime.datetime.now()
168
158
  start = now.isoformat()
@@ -178,9 +168,7 @@ class GoogleCalendar:
178
168
  print(f"Created event with id: {event_result['id']}")
179
169
 
180
170
  def save_credentials_to_gopass(self) -> None:
181
- """
182
- Save the calendar credentials to gopass.
183
- """
171
+ """Save the calendar credentials to gopass."""
184
172
  objects_to_save = {
185
173
  "gs/ci/google_calendar/calendarId": self.calendar_id,
186
174
  "gs/ci/google_calendar/token": self.token,
@@ -194,17 +182,13 @@ class GoogleCalendar:
194
182
  c2cciutils.gopass_put(secret, key)
195
183
 
196
184
  def __del__(self) -> None:
197
- """
198
- Delete the credentials file.
199
- """
185
+ """Delete the credentials file."""
200
186
  if os.path.exists(self.credentials_pickle_file):
201
187
  os.remove(self.credentials_pickle_file)
202
188
 
203
189
 
204
190
  def main_calendar() -> None:
205
- """
206
- Run the calendar main function.
207
- """
191
+ """Run the calendar main function."""
208
192
  parser = argparse.ArgumentParser(
209
193
  description="Interact with google API for the Docker publishing calendar"
210
194
  )
@@ -254,6 +238,7 @@ def pip(
254
238
  version_branch, feature_branch, feature_tag (for pull request)
255
239
  publish: If False only check the package
256
240
  package: The package configuration
241
+
257
242
  """
258
243
  print(f"::group::{'Publishing' if publish else 'Checking'} '{package.get('path')}' to pypi")
259
244
  sys.stdout.flush()
@@ -352,6 +337,7 @@ def docker(
352
337
  tag_src: The source tag (usually latest)
353
338
  dst_tags: Publish using the provided tags
354
339
  images_full: The list of published images (with tag), used to build the dispatch event
340
+
355
341
  """
356
342
  print(
357
343
  f"::group::Publishing {image_config['name']} to the server {name} using the tags {', '.join(dst_tags)}"
@@ -411,6 +397,7 @@ def helm(folder: str, version: str, owner: str, repo: str, commit_sha: str, toke
411
397
  repo: The GitHub repository name
412
398
  commit_sha: The sha of the current commit
413
399
  token: The GitHub token
400
+
414
401
  """
415
402
  print(f"::group::Publishing Helm chart from '{folder}' to GitHub release")
416
403
  sys.stdout.flush()
@@ -0,0 +1 @@
1
+ """The scripts main functions."""
@@ -1,8 +1,6 @@
1
1
  #!/usr/bin/env python3
2
2
 
3
- """
4
- The clean main function.
5
- """
3
+ """The clean main function."""
6
4
 
7
5
  import argparse
8
6
  import json
@@ -24,6 +22,7 @@ def clean(image: str, tag: str, token: str) -> None:
24
22
  image: The image name that should be deleted (<organization>/<name>)
25
23
  tag: The tag that should be deleted
26
24
  token: The token used to be authenticated on Docker hub
25
+
27
26
  """
28
27
  print(f"Delete image '{image}:{tag}'.")
29
28
 
@@ -51,9 +50,7 @@ def clean(image: str, tag: str, token: str) -> None:
51
50
 
52
51
 
53
52
  def main() -> None:
54
- """
55
- Run the main function.
56
- """
53
+ """Run the main function."""
57
54
  parser = argparse.ArgumentParser(
58
55
  description=(
59
56
  "Clean the Docker images on Docker Hub for the branch we delete "
@@ -87,10 +84,7 @@ def main() -> None:
87
84
  with open(os.environ["GITHUB_EVENT_PATH"], encoding="utf-8") as event_file:
88
85
  event = json.loads(event_file.read())
89
86
  print(yaml.dump(event))
90
- if "pull_request" in event:
91
- ref = str(event["number"])
92
- else:
93
- ref = event["ref"]
87
+ ref = str(event["number"]) if "pull_request" in event else event["ref"]
94
88
 
95
89
  ref = ref.replace("/", "_")
96
90
 
@@ -21,7 +21,7 @@ def main() -> None:
21
21
 
22
22
  if os.path.exists("docker-compose.yaml"):
23
23
  _print("::group::Docker Compose ps")
24
- subprocess.run(["docker", "compose", "ps"], check=False)
24
+ subprocess.run(["docker", "compose", "ps", "--all"], check=False)
25
25
  _print("::endgroup::")
26
26
 
27
27
  _print("::group::Docker ps")
@@ -30,11 +30,11 @@ def main() -> None:
30
30
 
31
31
  # Store in /tmp/docker-logs-timestamp the current timestamp to avoid printing same logs multiple times.
32
32
  timestamp_args = []
33
- if os.path.exists("/tmp/docker-logs-timestamp"):
34
- with open("/tmp/docker-logs-timestamp", encoding="utf-8") as timestamp_file:
33
+ if os.path.exists("/tmp/docker-logs-timestamp"): # noqa: S108
34
+ with open("/tmp/docker-logs-timestamp", encoding="utf-8") as timestamp_file: # noqa: S108
35
35
  timestamp_args = [f"--since={timestamp_file.read().strip()}Z"]
36
36
 
37
- with open("/tmp/docker-logs-timestamp", "w", encoding="utf-8") as timestamp_file:
37
+ with open("/tmp/docker-logs-timestamp", "w", encoding="utf-8") as timestamp_file: # noqa: S108
38
38
  timestamp_file.write(datetime.utcnow().isoformat())
39
39
 
40
40
  for name in (
@@ -1,8 +1,6 @@
1
1
  #!/usr/bin/env python3
2
2
 
3
- """
4
- The checker main function.
5
- """
3
+ """The checker main function."""
6
4
 
7
5
  import argparse
8
6
 
@@ -10,9 +8,7 @@ import c2cciutils.env
10
8
 
11
9
 
12
10
  def main() -> None:
13
- """
14
- Run the checks.
15
- """
11
+ """Run the checks."""
16
12
  parser = argparse.ArgumentParser(description="Print the environment information.")
17
13
  parser.parse_args()
18
14
 
@@ -0,0 +1 @@
1
+ """The commands that can be used to test a chart on Kubernetes."""
@@ -1,8 +1,6 @@
1
1
  #!/usr/bin/env python3
2
2
 
3
- """
4
- The main function of some utilities.
5
- """
3
+ """The main function of some utilities."""
6
4
 
7
5
  import argparse
8
6
 
@@ -13,9 +11,7 @@ import c2cciutils
13
11
 
14
12
 
15
13
  def main() -> None:
16
- """
17
- Run the utilities.
18
- """
14
+ """Run the utilities."""
19
15
  parser = argparse.ArgumentParser(description="Some utils of c2cciutils.")
20
16
  parser.add_argument("--get-config", action="store_true", help="display the current config")
21
17
  parser.add_argument("--version", action="store_true", help="display the current version")
@@ -1,8 +1,6 @@
1
1
  #!/usr/bin/env python3
2
2
 
3
- """
4
- The publish script.
5
- """
3
+ """The publish script."""
6
4
 
7
5
  import argparse
8
6
  import os
@@ -34,6 +32,7 @@ def match(tpe: str, base_re: str) -> Optional[Match[str]]:
34
32
  Arguments:
35
33
  tpe: The type of ref we want to match (heads, tag, ...)
36
34
  base_re: The regular expression to match the value
35
+
37
36
  """
38
37
  if base_re[0] == "^":
39
38
  base_re = base_re[1:]
@@ -50,6 +49,7 @@ def to_version(full_config: c2cciutils.configuration.Configuration, value: str,
50
49
  full_config: The full configuration
51
50
  value: The value to be transformed
52
51
  kind: The name of the transformer in the configuration
52
+
53
53
  """
54
54
  item_re = c2cciutils.compile_re(
55
55
  cast(
@@ -63,9 +63,7 @@ def to_version(full_config: c2cciutils.configuration.Configuration, value: str,
63
63
 
64
64
 
65
65
  def main() -> None:
66
- """
67
- Run the publish.
68
- """
66
+ """Run the publish."""
69
67
  parser = argparse.ArgumentParser(description="Publish the project.")
70
68
  parser.add_argument("--group", default="default", help="The publishing group")
71
69
  parser.add_argument("--version", help="The version to publish to")
@@ -311,23 +309,22 @@ def main() -> None:
311
309
  conf, name, image_conf, tag_src, tags, images_full
312
310
  )
313
311
 
314
- if google_calendar_publish:
315
- if version_type in google_calendar_config.get(
316
- "on", c2cciutils.configuration.PUBLISH_GOOGLE_CALENDAR_ON_DEFAULT
317
- ):
318
- if not google_calendar:
319
- google_calendar = GoogleCalendar()
320
- summary = f"{image_conf['name']}:{', '.join(tags_calendar)}"
321
- description = "\n".join(
322
- [
323
- f"Published the image {image_conf['name']}",
324
- f"Published on: {', '.join(docker_config['repository'].keys())}",
325
- f"With tags: {', '.join(tags_calendar)}",
326
- f"For version type: {version_type}",
327
- ]
328
- )
312
+ if google_calendar_publish and version_type in google_calendar_config.get(
313
+ "on", c2cciutils.configuration.PUBLISH_GOOGLE_CALENDAR_ON_DEFAULT
314
+ ):
315
+ if not google_calendar:
316
+ google_calendar = GoogleCalendar()
317
+ summary = f"{image_conf['name']}:{', '.join(tags_calendar)}"
318
+ description = "\n".join(
319
+ [
320
+ f"Published the image {image_conf['name']}",
321
+ f"Published on: {', '.join(docker_config['repository'].keys())}",
322
+ f"With tags: {', '.join(tags_calendar)}",
323
+ f"For version type: {version_type}",
324
+ ]
325
+ )
329
326
 
330
- google_calendar.create_event(summary, description)
327
+ google_calendar.create_event(summary, description)
331
328
 
332
329
  if args.dry_run:
333
330
  sys.exit(0)
@@ -1,8 +1,6 @@
1
1
  #!/usr/bin/env python3
2
2
 
3
- """
4
- Trigger an image update on the argocd repository.
5
- """
3
+ """Trigger an image update on the argocd repository."""
6
4
 
7
5
  import argparse
8
6
  import os.path
@@ -60,10 +58,8 @@ def main() -> None:
60
58
 
61
59
 
62
60
  def dispatch(repository: str, event_type: str, images_full: list[str]) -> None:
63
- """
64
- Trigger an image update on the argocd repository.
65
- """
66
- id_ = random.randint(1, 100000) # nosec
61
+ """Trigger an image update on the argocd repository."""
62
+ id_ = random.randint(1, 100000) # noqa: S311
67
63
  print(f"Triggering {event_type}:{id_} on {repository} with {','.join(images_full)}")
68
64
 
69
65
  response = requests.post(
@@ -149,9 +149,11 @@ If you run the tool without any version it will check that everything is OK rega
149
149
  stabilization_branches_with_master = [*stabilization_branches, repo.get("master_branch", "master")]
150
150
 
151
151
  for labels in mra.gh_json("label", ["name"], "list"):
152
- if labels["name"].startswith("backport "):
153
- if labels["name"].replace("backport ", "") not in stabilization_branches_with_master:
154
- mra.gh("label", "delete", labels["name"], "--yes")
152
+ if (
153
+ labels["name"].startswith("backport ")
154
+ and labels["name"].replace("backport ", "") not in stabilization_branches_with_master
155
+ ):
156
+ mra.gh("label", "delete", labels["name"], "--yes")
155
157
 
156
158
  for branch in stabilization_branches_with_master:
157
159
  mra.gh(
@@ -19,7 +19,7 @@ strict = true
19
19
 
20
20
  [tool.poetry]
21
21
  name = "c2cciutils"
22
- version = "1.7.3.dev2"
22
+ version = "1.8.0.dev45"
23
23
  description = "Common utilities for Camptocamp CI"
24
24
  readme = "README.md"
25
25
  authors = ["Camptocamp <info@camptocamp.com>"]
@@ -65,17 +65,17 @@ c2cciutils-docker-versions-gen = "c2cciutils.scripts.docker_versions_gen:main"
65
65
  [tool.poetry.dependencies]
66
66
  python = ">=3.9,<4.0"
67
67
  requests = "2.32.3"
68
- google-api-python-client = { version = "2.148.0", optional = true }
68
+ google-api-python-client = { version = "2.157.0", optional = true }
69
69
  google-auth-httplib2 = { version = "0.2.0", optional = true }
70
70
  google-auth-oauthlib = { version = "1.2.1", optional = true }
71
- "ruamel.yaml" = "0.18.6"
71
+ "ruamel.yaml" = "0.18.9"
72
72
  defusedxml = "0.7.1"
73
- twine = { version = "5.1.1", optional = true }
73
+ twine = { version = "6.0.1", optional = true }
74
74
  debian-inspector = "31.1.0"
75
75
  PyYAML = "6.0.2"
76
- multi-repo-automation = { version="1.3.0", optional = true }
77
- security-md = "0.2.3"
78
- id = { version="1.4.0", optional = true }
76
+ multi-repo-automation = { version="1.5.0", optional = true }
77
+ security-md = "1.0.0"
78
+ id = { version="1.5.0", optional = true }
79
79
 
80
80
  [tool.poetry.extras]
81
81
  audit = []
@@ -86,11 +86,11 @@ pr_checks = []
86
86
  version = ["multi-repo-automation"]
87
87
 
88
88
  [tool.poetry.group.dev.dependencies]
89
- prospector = { version = "1.12.1", extras = ["with-bandit", "with-mypy", "with-pyroma"] }
90
- prospector-profile-duplicated = "1.6.0"
91
- prospector-profile-utils = "1.9.1"
89
+ prospector = { version = "1.13.3", extras = ["with-bandit", "with-mypy", "with-pyroma", "with-ruff"] }
90
+ prospector-profile-duplicated = "1.10.4"
91
+ prospector-profile-utils = "1.15.1"
92
92
  types-requests = "2.32.0.20241016"
93
- types-pyyaml = "6.0.12.20241221"
93
+ types-pyyaml = "6.0.12.20241230"
94
94
  types-markdown = "3.7.0.20241204"
95
95
 
96
96
  [build-system]
@@ -1,3 +0,0 @@
1
- """
2
- The scripts main functions.
3
- """
@@ -1,3 +0,0 @@
1
- """
2
- The commands that can be used to test a chart on Kubernetes.
3
- """