common-python-tasks 0.12.0__py3-none-any.whl → 0.13.0__py3-none-any.whl

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.
@@ -87,6 +87,7 @@ _main() {
87
87
  return 1
88
88
  fi
89
89
  export DIND_STARTUP_TIMEOUT=${DIND_STARTUP_TIMEOUT:-60}
90
+ export DIND_DOCKER_LOG_PATH=${DIND_DOCKER_LOG_PATH:-/var/log/docker.log}
90
91
  export DOCKER_HOST=unix:///var/run/docker.sock
91
92
  export container=docker
92
93
  unset DOCKER_CONTEXT DOCKER_TLS_VERIFY DOCKER_CERT_PATH
@@ -96,8 +97,8 @@ _main() {
96
97
  trap _shutdown EXIT
97
98
  trap 'exit 143' TERM
98
99
  trap 'exit 130' INT
99
- # Keep daemon logs on stderr and expose only the local Unix socket.
100
- setsid dockerd --host "$DOCKER_HOST" --group docker >&2 &
100
+ setsid dockerd --host "$DOCKER_HOST" --group docker \
101
+ >>"$DIND_DOCKER_LOG_PATH" 2>&1 &
101
102
  daemon_pid=$!
102
103
  _wait_for_docker
103
104
  setsid setpriv --reuid py --regid py --init-groups \
@@ -100,7 +100,7 @@ def _build_docker_build_command(
100
100
  plain: bool,
101
101
  target: BuildStage | None = None,
102
102
  tags: Sequence[str] | None = None,
103
- docker_build_args: Sequence[str] | None = None,
103
+ docker_build_options: Sequence[str] | None = None,
104
104
  ) -> list[str]:
105
105
  build_cmd = [
106
106
  "docker",
@@ -123,8 +123,8 @@ def _build_docker_build_command(
123
123
  build_cmd += ["-t", tag]
124
124
  if plain:
125
125
  build_cmd += ["--progress", "plain"]
126
- if docker_build_args:
127
- build_cmd += [str(arg) for arg in docker_build_args]
126
+ if docker_build_options:
127
+ build_cmd += [str(option) for option in docker_build_options]
128
128
  build_cmd.append(str(context_path))
129
129
 
130
130
  return build_cmd
@@ -180,7 +180,7 @@ def render_build_image(
180
180
  omit_target: bool = False,
181
181
  image_name: str | None = None,
182
182
  extra_build_args: dict[str, str] | None = None,
183
- docker_build_args: Sequence[str] | None = None,
183
+ docker_build_options: Sequence[str] | None = None,
184
184
  dockerfile_hook_path: Path | None = None,
185
185
  keep_generated_files: bool = True,
186
186
  ) -> RenderedBuildPlan:
@@ -197,7 +197,7 @@ def render_build_image(
197
197
  omit_target: Whether to omit the target stage from the command.
198
198
  image_name: Optional image name override.
199
199
  extra_build_args: Extra build-time arguments.
200
- docker_build_args: Additional arguments passed directly to `docker build`.
200
+ docker_build_options: Additional options passed directly to `docker build`.
201
201
  dockerfile_hook_path: Optional executable script path that can mutate
202
202
  the generated Dockerfile in-place before build.
203
203
  keep_generated_files: Whether to leave the generated Dockerfile in place.
@@ -338,7 +338,7 @@ def render_build_image(
338
338
  plain,
339
339
  target=None if omit_target else target,
340
340
  tags=all_tags,
341
- docker_build_args=docker_build_args,
341
+ docker_build_options=docker_build_options,
342
342
  )
343
343
  command_display = " ".join(quote(str(arg)) for arg in build_cmd)
344
344
  return RenderedBuildPlan(
@@ -473,7 +473,7 @@ def build_deps_image(
473
473
  plain: bool = False,
474
474
  single_arch: bool = False,
475
475
  extra_build_args: dict[str, str] | None = None,
476
- docker_build_args: Sequence[str] | None = None,
476
+ docker_build_options: Sequence[str] | None = None,
477
477
  cache_id_suffix: str = "",
478
478
  ) -> str:
479
479
  """Build the dependency collector image and return its full tag.
@@ -486,7 +486,7 @@ def build_deps_image(
486
486
  plain: If `True`, use plain output mode for the Docker build.
487
487
  single_arch: If `True`, build the image for the current host architecture only.
488
488
  extra_build_args: Additional build arguments for the Docker build as a dictionary of `KEY: VALUE` pairs.
489
- docker_build_args: Additional arguments passed directly to `docker build`.
489
+ docker_build_options: Additional options passed directly to `docker build`.
490
490
  cache_id_suffix: A suffix to append to the cache ID.
491
491
 
492
492
  Returns:
@@ -574,7 +574,7 @@ def build_deps_image(
574
574
  no_cache,
575
575
  plain,
576
576
  tags=[full_tag],
577
- docker_build_args=docker_build_args,
577
+ docker_build_options=docker_build_options,
578
578
  )
579
579
 
580
580
  LOGGER.info("Building deps image: %s", full_tag)
@@ -597,7 +597,7 @@ def build_image(
597
597
  omit_target: bool = False,
598
598
  image_name: str | None = None,
599
599
  extra_build_args: dict[str, str] | None = None,
600
- docker_build_args: Sequence[str] | None = None,
600
+ docker_build_options: Sequence[str] | None = None,
601
601
  dockerfile_hook_path: Path | None = None,
602
602
  ) -> tuple[str, str]:
603
603
  """Build the primary image and return its version and commit tags.
@@ -613,7 +613,7 @@ def build_image(
613
613
  omit_target: If `True`, omit the target stage.
614
614
  image_name: Name of the image to build.
615
615
  extra_build_args: Additional build arguments for the Docker build as a dictionary of `KEY: VALUE` pairs.
616
- docker_build_args: Additional arguments passed directly to `docker build`.
616
+ docker_build_options: Additional options passed directly to `docker build`.
617
617
  dockerfile_hook_path: Optional executable script path that can mutate
618
618
  the generated Dockerfile in-place before build.
619
619
 
@@ -636,7 +636,7 @@ def build_image(
636
636
  omit_target=omit_target,
637
637
  image_name=image_name,
638
638
  extra_build_args=extra_build_args,
639
- docker_build_args=docker_build_args,
639
+ docker_build_options=docker_build_options,
640
640
  dockerfile_hook_path=dockerfile_hook_path,
641
641
  keep_generated_files=True,
642
642
  )
@@ -81,14 +81,16 @@ def uv_index_secret_mounts(credentials: list[dict[str, str | None]]) -> list[str
81
81
  ]
82
82
 
83
83
 
84
- def uv_index_secret_build_args(credentials: list[dict[str, str | None]]) -> list[str]:
85
- """Return `docker build --secret` arg pairs for UV index credentials.
84
+ def uv_index_secret_build_options(
85
+ credentials: list[dict[str, str | None]],
86
+ ) -> list[str]:
87
+ """Return `docker build --secret` option pairs for UV index credentials.
86
88
 
87
89
  Args:
88
90
  credentials: Output of `collect_uv_index_credentials`.
89
91
 
90
92
  Returns:
91
- A flat list of `--secret` flag-value pairs for the docker build command.
93
+ A flat list of `--secret` option-value pairs for the Docker build command.
92
94
  """
93
95
  return [
94
96
  item
@@ -131,13 +133,13 @@ def get_python_variant() -> str:
131
133
  def inject_auto_build_args_from_env(
132
134
  build_args: dict[str, str] | None,
133
135
  ) -> dict[str, str]:
134
- """Inject configured environment variables into managed Docker build args.
136
+ """Inject configured environment variables into managed Dockerfile build arguments.
135
137
 
136
138
  Environment-driven build args are only injected if they are set, and never
137
139
  override arguments already managed by the image builder.
138
140
 
139
141
  Args:
140
- build_args: Existing managed Docker build arguments.
142
+ build_args: Existing managed Dockerfile build arguments.
141
143
 
142
144
  Returns:
143
145
  A build-arg dictionary with auto-injected env values merged in.
@@ -337,28 +339,29 @@ def split_colon_delimited_values(value: str) -> list[str]:
337
339
  return split_delimited_values(value, separators=":", allow_whitespace=True)
338
340
 
339
341
 
340
- def resolve_container_docker_build_args(
341
- cli_docker_build_args: tuple[str, ...], env_docker_build_args: str | None
342
+ def resolve_container_docker_build_options(
343
+ cli_docker_build_options: tuple[str, ...],
344
+ env_docker_build_options: str | None,
342
345
  ) -> list[str]:
343
- """Resolve arguments passed directly to `docker build`.
346
+ """Resolve options passed directly to `docker build`.
344
347
 
345
348
  Args:
346
- cli_docker_build_args: Free arguments provided after the task's `--`
349
+ cli_docker_build_options: Free options provided after the task's `--`
347
350
  separator.
348
- env_docker_build_args: Shell-tokenized arguments from the environment.
351
+ env_docker_build_options: Shell-tokenized options from the environment.
349
352
 
350
353
  Returns:
351
- The CLI arguments when provided, otherwise the environment arguments.
354
+ The CLI options when provided, otherwise the environment options.
352
355
  """
353
- if cli_docker_build_args:
354
- return list(cli_docker_build_args)
355
- if not env_docker_build_args:
356
+ if cli_docker_build_options:
357
+ return list(cli_docker_build_options)
358
+ if not env_docker_build_options:
356
359
  return []
357
360
 
358
361
  try:
359
- return shlex.split(env_docker_build_args)
362
+ return shlex.split(env_docker_build_options)
360
363
  except ValueError as error:
361
- utils.fatal(f"Invalid CONTAINER_DOCKER_BUILD_ARGS: {error}")
364
+ utils.fatal(f"Invalid CONTAINER_DOCKER_BUILD_OPTIONS: {error}")
362
365
 
363
366
 
364
367
  def _resolve_optional_file_path(
@@ -490,7 +490,7 @@ def docs_serve(
490
490
 
491
491
  @tasks.script(tags=["containers", "build"])
492
492
  def build_image(
493
- *docker_build_args: str,
493
+ *docker_build_options: str,
494
494
  debug: bool = False,
495
495
  no_cache: bool = False,
496
496
  plain: bool = False,
@@ -503,9 +503,9 @@ def build_image(
503
503
  """Build the container image using a project-owned or bundled Dockerfile.
504
504
 
505
505
  Args:
506
- *docker_build_args: Additional arguments passed directly to `docker build`.
506
+ *docker_build_options: Additional options passed directly to `docker build`.
507
507
  Provide them after the task's `--` separator. Overrides
508
- `CONTAINER_DOCKER_BUILD_ARGS` when provided.
508
+ `CONTAINER_DOCKER_BUILD_OPTIONS` when provided.
509
509
  debug: Build the debug image.
510
510
  no_cache: Do not use cache when building the image.
511
511
  plain: Do not pretty-print output.
@@ -538,12 +538,12 @@ def build_image(
538
538
  parse_container_deps_source,
539
539
  parse_container_extensions,
540
540
  render_container_deps_move_script,
541
- resolve_container_docker_build_args,
541
+ resolve_container_docker_build_options,
542
542
  resolve_container_dockerfile_hook_path,
543
543
  resolve_container_dockerfile_path,
544
544
  resolve_extension_build_context,
545
545
  resolve_extension_content,
546
- uv_index_secret_build_args,
546
+ uv_index_secret_build_options,
547
547
  uv_index_secret_mounts,
548
548
  )
549
549
  from .project import (
@@ -578,9 +578,9 @@ def build_image(
578
578
  if (context := resolve_extension_build_context(desc)) is not None
579
579
  ]
580
580
 
581
- resolved_docker_build_args = resolve_container_docker_build_args(
582
- docker_build_args,
583
- os.getenv("CONTAINER_DOCKER_BUILD_ARGS"),
581
+ resolved_docker_build_options = resolve_container_docker_build_options(
582
+ docker_build_options,
583
+ os.getenv("CONTAINER_DOCKER_BUILD_OPTIONS"),
584
584
  )
585
585
  uv_credentials = collect_uv_index_credentials()
586
586
  if uv_credentials:
@@ -588,9 +588,9 @@ def build_image(
588
588
  "Passing UV index credentials for: %s",
589
589
  ", ".join(c["index_name"] for c in uv_credentials),
590
590
  )
591
- resolved_docker_build_args = uv_index_secret_build_args(uv_credentials) + list(
592
- resolved_docker_build_args
593
- )
591
+ resolved_docker_build_options = uv_index_secret_build_options(
592
+ uv_credentials
593
+ ) + list(resolved_docker_build_options)
594
594
  resolved_dockerfile_hook_path = resolve_container_dockerfile_hook_path(
595
595
  dockerfile_hook_path,
596
596
  os.getenv("CONTAINER_DOCKERFILE_HOOK_PATH"),
@@ -609,7 +609,7 @@ def build_image(
609
609
  single_arch=single_arch,
610
610
  omit_target=not debug,
611
611
  extra_build_args=top_level_build_args or None,
612
- docker_build_args=resolved_docker_build_args,
612
+ docker_build_options=resolved_docker_build_options,
613
613
  dockerfile_hook_path=resolved_dockerfile_hook_path,
614
614
  )
615
615
  _prune_container_images(version_tag, commit_tag)
@@ -713,7 +713,7 @@ def build_image(
713
713
 
714
714
  if deps_content or deps_dockerfile_path:
715
715
  deps_image_tag = build_deps_image_task(
716
- *resolved_docker_build_args,
716
+ *resolved_docker_build_options,
717
717
  no_cache=no_cache,
718
718
  plain=plain,
719
719
  single_arch=single_arch,
@@ -746,8 +746,8 @@ def build_image(
746
746
  plain=plain,
747
747
  single_arch=single_arch,
748
748
  extra_build_args=merged_build_args or None,
749
- docker_build_args=[
750
- *resolved_docker_build_args,
749
+ docker_build_options=[
750
+ *resolved_docker_build_options,
751
751
  *(
752
752
  item
753
753
  for name, path in extension_build_contexts
@@ -768,7 +768,7 @@ def build_image(
768
768
 
769
769
  @tasks.script(task_name="build-deps-image", tags=["containers", "build"])
770
770
  def build_deps_image_task(
771
- *docker_build_args: str,
771
+ *docker_build_options: str,
772
772
  no_cache: bool = False,
773
773
  plain: bool = False,
774
774
  single_arch: bool = False,
@@ -776,9 +776,9 @@ def build_deps_image_task(
776
776
  """Build only the container dependency collector image for this project.
777
777
 
778
778
  Args:
779
- *docker_build_args: Additional arguments passed directly to `docker build`.
779
+ *docker_build_options: Additional options passed directly to `docker build`.
780
780
  Provide them after the task's `--` separator. Overrides
781
- `CONTAINER_DOCKER_BUILD_ARGS` when provided.
781
+ `CONTAINER_DOCKER_BUILD_OPTIONS` when provided.
782
782
  no_cache: Do not use cache when building the deps image.
783
783
  plain: Do not pretty-print output.
784
784
  single_arch: Build images for a single architecture.
@@ -791,7 +791,7 @@ def build_deps_image_task(
791
791
  get_cache_id_suffix,
792
792
  inject_auto_build_args_from_env,
793
793
  parse_container_deps_source,
794
- resolve_container_docker_build_args,
794
+ resolve_container_docker_build_options,
795
795
  )
796
796
  from .utils import fatal
797
797
 
@@ -801,9 +801,9 @@ def build_deps_image_task(
801
801
  "No container dependency source found. Set CONTAINER_DEPS_CONTENT or CONTAINER_DEPS_FILE."
802
802
  )
803
803
 
804
- resolved_docker_build_args = resolve_container_docker_build_args(
805
- docker_build_args,
806
- os.getenv("CONTAINER_DOCKER_BUILD_ARGS"),
804
+ resolved_docker_build_options = resolve_container_docker_build_options(
805
+ docker_build_options,
806
+ os.getenv("CONTAINER_DOCKER_BUILD_OPTIONS"),
807
807
  )
808
808
  extra_build_args = inject_auto_build_args_from_env({})
809
809
  cache_id_suffix = get_cache_id_suffix(no_cache)
@@ -817,7 +817,7 @@ def build_deps_image_task(
817
817
  plain=plain,
818
818
  single_arch=single_arch,
819
819
  extra_build_args=extra_build_args or None,
820
- docker_build_args=resolved_docker_build_args,
820
+ docker_build_options=resolved_docker_build_options,
821
821
  cache_id_suffix=cache_id_suffix,
822
822
  )
823
823
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: common-python-tasks
3
- Version: 0.12.0
3
+ Version: 0.13.0
4
4
  Summary: Opinionated Poe the Poet tasks for Python package development.
5
5
  Project-URL: Homepage, http://github.com/ci-sourcerer/common-python-tasks
6
6
  Project-URL: Source, http://github.com/ci-sourcerer/common-python-tasks.git
@@ -35,14 +35,14 @@ Description-Content-Type: text/markdown
35
35
 
36
36
  `common-python-tasks` provides reusable, opinionated [Poe the Poet](https://poethepoet.natn.io/guides/packaged_tasks.html) tasks for Python development, packaging, releases, containers, and documentation.
37
37
 
38
- Read the [complete documentation](https://ci-sourcerer.github.io/common-python-tasks/) for the task reference, configuration options, and deployment guidance.
38
+ Read the [complete documentation](https://common-python-tasks.ci-sourcerer.com/) for the task reference, configuration options, and deployment guidance.
39
39
 
40
40
  ## Quick start
41
41
 
42
42
  Add the package as a development dependency.
43
43
 
44
44
  ```shell
45
- uv add --dev common-python-tasks==0.12.0
45
+ uv add --dev common-python-tasks==0.13.0
46
46
  ```
47
47
 
48
48
  Expose the default task set in `pyproject.toml`.
@@ -83,12 +83,12 @@ poe docs-build
83
83
  poe docs-serve
84
84
  ```
85
85
 
86
- The [documentation workflow guide](https://ci-sourcerer.github.io/common-python-tasks/documentation-workflows/) covers GitHub Actions artifacts, optional Cloudflare Pages previews, and GitHub Pages deployment.
86
+ The [documentation workflow guide](https://common-python-tasks.ci-sourcerer.com/documentation-workflows/) covers GitHub Actions artifacts, optional Cloudflare Pages previews, and GitHub Pages deployment.
87
87
 
88
88
  ## Learn more
89
89
 
90
- - [Getting started](https://ci-sourcerer.github.io/common-python-tasks/getting-started/)
91
- - [Task reference](https://ci-sourcerer.github.io/common-python-tasks/tasks/)
92
- - [Configuration reference](https://ci-sourcerer.github.io/common-python-tasks/configuration/)
90
+ - [Getting started](https://common-python-tasks.ci-sourcerer.com/getting-started/)
91
+ - [Task reference](https://common-python-tasks.ci-sourcerer.com/tasks/)
92
+ - [Configuration reference](https://common-python-tasks.ci-sourcerer.com/configuration/)
93
93
 
94
94
  The project is in alpha, so minor releases may contain breaking changes. It is distributed under the [MIT license](LICENSE).
@@ -1,17 +1,16 @@
1
1
  common_python_tasks/__init__.py,sha256=tqRLgOwmMQHDb1A84XbML9sWfzMymkSPhJjoF6aCHgA,916
2
2
  common_python_tasks/__main__.py,sha256=GpgSd_toMbEaWA_cZvgsZE7jo4XpzuI-awBVm2uhVyw,3512
3
- common_python_tasks/docker.py,sha256=_YW-hyHWlUK-kMCvI6QTgxSfmXQQKhYLOKRBPfUmtHA,24176
3
+ common_python_tasks/docker.py,sha256=1vmuDfxmdKkqOATpJfERkILAykpQp-vNxuWYjH6GQi4,24221
4
4
  common_python_tasks/docker_compose.py,sha256=NGgMei3oCYS0RbNaQXE-2veXFylO3XtZ7lU-PTtocik,21338
5
- common_python_tasks/env.py,sha256=hSjWe8L1RXguLqIMh1IsgbkHa_64b1U8lBHqDIS3zko,21779
5
+ common_python_tasks/env.py,sha256=3Ehrqte8xaVp2Xn7limHMb75hQdvfc74KIpDnnobnd8,21832
6
6
  common_python_tasks/git.py,sha256=0X472w_vHdtbrHHxCmJ85NoQjjogEEDs_0SRXfxbWi0,11719
7
7
  common_python_tasks/github.py,sha256=_LVanl-z4PsdLM94L8y7tkX-AZO2n3Qy39FRY7reDhA,21589
8
8
  common_python_tasks/project.py,sha256=PQ_GQicTrSQgVDB9cJ9E6pU0UhLPom2xou1sGFscr3E,17377
9
- common_python_tasks/tasks.py,sha256=vMCFXZKo-0Dj1TLmZ3lo6oFCAhJSEp637qZWhaWOmpA,64199
9
+ common_python_tasks/tasks.py,sha256=7Y_MdlaQ5MePWqyx8g33kB6lgyj5_-YGkiHZkYgVx9Q,64276
10
10
  common_python_tasks/utils.py,sha256=hR7w0Cb7uQ7ILyIegTQ4znWHVoWANlCgxrOnO-Rh5oE,20798
11
- common_python_tasks/data/dockerfile_extensions/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
11
  common_python_tasks/data/dockerfile_extensions/docker-in-docker/Dockerfile,sha256=m7jeQyFe6mAv8AVGpM89NHljzG21ctcSyllbvoEL0Do,1021
13
12
  common_python_tasks/data/dockerfile_extensions/docker-in-docker/install.sh,sha256=F87oojGFYT5F1mdcMchRNlUeI_viAO4ip04UHBC_8bQ,1224
14
- common_python_tasks/data/dockerfile_extensions/docker-in-docker/supervisor.sh,sha256=cqslPv9QPU4vtClvNSl2wyhEL0HubxO5YqAhwNfTEXA,3726
13
+ common_python_tasks/data/dockerfile_extensions/docker-in-docker/supervisor.sh,sha256=l1R_ZzkcR0PhL21zgXZSV-tqTjV3KeG9i371Ux_1-ms,3768
15
14
  common_python_tasks/data/fastapi/alembic.ini.j2,sha256=dOiAmZngzX6eyVXeM6BhzgQmes2zwUEdKwOgm8mxjMs,985
16
15
  common_python_tasks/data/fastapi/compose-base.yml.j2,sha256=vDLPAdRJ66lsWZdsKbYqEvY_liXaHZ0ly4ljzqmJsyY,910
17
16
  common_python_tasks/data/fastapi/compose-db-debug.yml.j2,sha256=iREdSy4F8tJ5m9rlB6CROBkj9OtDFVuGphqIuDvHhww,1193
@@ -24,7 +23,7 @@ common_python_tasks/data/generic/Dockerfile.j2,sha256=UrR9T794V2ESNIkSVE7K5vEbx4
24
23
  common_python_tasks/data/generic/cliff.toml,sha256=po1MnEGEEgrpyBz3XLWr0h7emXb6ASX63lrU2r6o240,77
25
24
  common_python_tasks/data/generic/pytest.ini,sha256=RHak5QrLzKHvUBjFmaaiOYFrd_8YBRQubXEOT0NJfco,134
26
25
  common_python_tasks/data/generic/ruff.toml,sha256=njvd-5inSGmgY865SWCT4SR9IrKlzS7JQFZmAG2UT_E,53
27
- common_python_tasks-0.12.0.dist-info/METADATA,sha256=iAVWGja53RQz1tWWMtn5szBCGveET5EDvwI_ltczz2A,3307
28
- common_python_tasks-0.12.0.dist-info/WHEEL,sha256=THafob7ofN-NsuMN7Mg4qZyHaQI7KkD-QlcQatYhXPo,87
29
- common_python_tasks-0.12.0.dist-info/licenses/LICENSE,sha256=RsSweM-DyzxFPx38fQOJqHrKyeT9Fiz8rO7yox-fOsw,1070
30
- common_python_tasks-0.12.0.dist-info/RECORD,,
26
+ common_python_tasks-0.13.0.dist-info/METADATA,sha256=aTcg2agqAGku-6bCQvMPq1U1Fpql4U7e42bYIQuLDyM,3277
27
+ common_python_tasks-0.13.0.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
28
+ common_python_tasks-0.13.0.dist-info/licenses/LICENSE,sha256=RsSweM-DyzxFPx38fQOJqHrKyeT9Fiz8rO7yox-fOsw,1070
29
+ common_python_tasks-0.13.0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.32.3
2
+ Generator: hatchling 1.32.4
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
File without changes