common-python-tasks 0.12.1__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.
- common_python_tasks/docker.py +12 -12
- common_python_tasks/env.py +19 -16
- common_python_tasks/tasks.py +23 -23
- {common_python_tasks-0.12.1.dist-info → common_python_tasks-0.13.0.dist-info}/METADATA +7 -7
- {common_python_tasks-0.12.1.dist-info → common_python_tasks-0.13.0.dist-info}/RECORD +7 -7
- {common_python_tasks-0.12.1.dist-info → common_python_tasks-0.13.0.dist-info}/WHEEL +1 -1
- {common_python_tasks-0.12.1.dist-info → common_python_tasks-0.13.0.dist-info}/licenses/LICENSE +0 -0
common_python_tasks/docker.py
CHANGED
|
@@ -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
|
-
|
|
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
|
|
127
|
-
build_cmd += [str(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
639
|
+
docker_build_options=docker_build_options,
|
|
640
640
|
dockerfile_hook_path=dockerfile_hook_path,
|
|
641
641
|
keep_generated_files=True,
|
|
642
642
|
)
|
common_python_tasks/env.py
CHANGED
|
@@ -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
|
|
85
|
-
|
|
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`
|
|
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
|
|
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
|
|
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
|
|
341
|
-
|
|
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
|
|
346
|
+
"""Resolve options passed directly to `docker build`.
|
|
344
347
|
|
|
345
348
|
Args:
|
|
346
|
-
|
|
349
|
+
cli_docker_build_options: Free options provided after the task's `--`
|
|
347
350
|
separator.
|
|
348
|
-
|
|
351
|
+
env_docker_build_options: Shell-tokenized options from the environment.
|
|
349
352
|
|
|
350
353
|
Returns:
|
|
351
|
-
The CLI
|
|
354
|
+
The CLI options when provided, otherwise the environment options.
|
|
352
355
|
"""
|
|
353
|
-
if
|
|
354
|
-
return list(
|
|
355
|
-
if not
|
|
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(
|
|
362
|
+
return shlex.split(env_docker_build_options)
|
|
360
363
|
except ValueError as error:
|
|
361
|
-
utils.fatal(f"Invalid
|
|
364
|
+
utils.fatal(f"Invalid CONTAINER_DOCKER_BUILD_OPTIONS: {error}")
|
|
362
365
|
|
|
363
366
|
|
|
364
367
|
def _resolve_optional_file_path(
|
common_python_tasks/tasks.py
CHANGED
|
@@ -490,7 +490,7 @@ def docs_serve(
|
|
|
490
490
|
|
|
491
491
|
@tasks.script(tags=["containers", "build"])
|
|
492
492
|
def build_image(
|
|
493
|
-
*
|
|
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
|
-
*
|
|
506
|
+
*docker_build_options: Additional options passed directly to `docker build`.
|
|
507
507
|
Provide them after the task's `--` separator. Overrides
|
|
508
|
-
`
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
582
|
-
|
|
583
|
-
os.getenv("
|
|
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
|
-
|
|
592
|
-
|
|
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
|
-
|
|
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
|
-
*
|
|
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
|
-
|
|
750
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
779
|
+
*docker_build_options: Additional options passed directly to `docker build`.
|
|
780
780
|
Provide them after the task's `--` separator. Overrides
|
|
781
|
-
`
|
|
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
|
-
|
|
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
|
-
|
|
805
|
-
|
|
806
|
-
os.getenv("
|
|
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
|
-
|
|
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.
|
|
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://
|
|
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.
|
|
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://
|
|
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://
|
|
91
|
-
- [Task reference](https://
|
|
92
|
-
- [Configuration reference](https://
|
|
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,12 +1,12 @@
|
|
|
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=
|
|
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=
|
|
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=
|
|
9
|
+
common_python_tasks/tasks.py,sha256=7Y_MdlaQ5MePWqyx8g33kB6lgyj5_-YGkiHZkYgVx9Q,64276
|
|
10
10
|
common_python_tasks/utils.py,sha256=hR7w0Cb7uQ7ILyIegTQ4znWHVoWANlCgxrOnO-Rh5oE,20798
|
|
11
11
|
common_python_tasks/data/dockerfile_extensions/docker-in-docker/Dockerfile,sha256=m7jeQyFe6mAv8AVGpM89NHljzG21ctcSyllbvoEL0Do,1021
|
|
12
12
|
common_python_tasks/data/dockerfile_extensions/docker-in-docker/install.sh,sha256=F87oojGFYT5F1mdcMchRNlUeI_viAO4ip04UHBC_8bQ,1224
|
|
@@ -23,7 +23,7 @@ common_python_tasks/data/generic/Dockerfile.j2,sha256=UrR9T794V2ESNIkSVE7K5vEbx4
|
|
|
23
23
|
common_python_tasks/data/generic/cliff.toml,sha256=po1MnEGEEgrpyBz3XLWr0h7emXb6ASX63lrU2r6o240,77
|
|
24
24
|
common_python_tasks/data/generic/pytest.ini,sha256=RHak5QrLzKHvUBjFmaaiOYFrd_8YBRQubXEOT0NJfco,134
|
|
25
25
|
common_python_tasks/data/generic/ruff.toml,sha256=njvd-5inSGmgY865SWCT4SR9IrKlzS7JQFZmAG2UT_E,53
|
|
26
|
-
common_python_tasks-0.
|
|
27
|
-
common_python_tasks-0.
|
|
28
|
-
common_python_tasks-0.
|
|
29
|
-
common_python_tasks-0.
|
|
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,,
|
{common_python_tasks-0.12.1.dist-info → common_python_tasks-0.13.0.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|