dependence 1.0.2__py3-none-any.whl → 1.2.5__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.
- dependence/__main__.py +13 -6
- dependence/_utilities.py +352 -163
- dependence/freeze.py +111 -53
- dependence/update.py +75 -57
- dependence/upgrade.py +223 -0
- {dependence-1.0.2.dist-info → dependence-1.2.5.dist-info}/METADATA +84 -18
- dependence-1.2.5.dist-info/RECORD +11 -0
- {dependence-1.0.2.dist-info → dependence-1.2.5.dist-info}/WHEEL +1 -1
- dependence-1.0.2.dist-info/RECORD +0 -10
- {dependence-1.0.2.dist-info → dependence-1.2.5.dist-info}/entry_points.txt +0 -0
dependence/upgrade.py
ADDED
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import argparse
|
|
4
|
+
import sys
|
|
5
|
+
from itertools import chain
|
|
6
|
+
from typing import TYPE_CHECKING
|
|
7
|
+
|
|
8
|
+
from dependence._utilities import (
|
|
9
|
+
check_output,
|
|
10
|
+
iter_configuration_files,
|
|
11
|
+
iter_parse_delimited_values,
|
|
12
|
+
)
|
|
13
|
+
from dependence.freeze import get_frozen_requirements
|
|
14
|
+
from dependence.update import update
|
|
15
|
+
|
|
16
|
+
if TYPE_CHECKING:
|
|
17
|
+
from collections.abc import Iterable
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def upgrade(
|
|
21
|
+
requirements: Iterable[str],
|
|
22
|
+
*,
|
|
23
|
+
ignore_update: Iterable[str] = (),
|
|
24
|
+
all_extra_name: str = "",
|
|
25
|
+
include_pointers: tuple[str, ...] = (),
|
|
26
|
+
exclude_pointers: tuple[str, ...] = (),
|
|
27
|
+
exclude: Iterable[str] = (),
|
|
28
|
+
exclude_recursive: Iterable[str] = (),
|
|
29
|
+
depth: int | None = None,
|
|
30
|
+
echo: bool = False,
|
|
31
|
+
) -> None:
|
|
32
|
+
"""
|
|
33
|
+
This function obtains a list of dependencies for the specified
|
|
34
|
+
`requirements` using `dependence.update.get_frozen_requirements()`,
|
|
35
|
+
upgrades all of these dependencies in the current environment,
|
|
36
|
+
then updates version specifiers for all requirements/dependencies
|
|
37
|
+
in any or the `requirements` which are project config files
|
|
38
|
+
to align with the newly installed package versions (using
|
|
39
|
+
`dependence.update.update()`).
|
|
40
|
+
|
|
41
|
+
Parameters:
|
|
42
|
+
requirements: One or more requirement specifiers (for example:
|
|
43
|
+
"requirement-name[extra-a,extra-b]" or ".[extra-a, extra-b]) and/or
|
|
44
|
+
paths to a setup.py, setup.cfg, pyproject.toml, tox.ini or
|
|
45
|
+
requirements.txt file.
|
|
46
|
+
ignore_update: One or more project names to ignore (leave as-is)
|
|
47
|
+
when updating a dependency's requirement specifier in the
|
|
48
|
+
provided pyproject.toml/setup.cfg/requirements.txt/tox.ini
|
|
49
|
+
file(s). Note that this does not prevent the package from being
|
|
50
|
+
upgraded—for that you need to pass the package name in
|
|
51
|
+
`exclude` or `exclude_recursive`.
|
|
52
|
+
all_extra_name: If provided, an extra which consolidates
|
|
53
|
+
the requirements for all other extras will be added/updated to
|
|
54
|
+
pyproject.toml or setup.cfg (this argument is ignored for
|
|
55
|
+
requirements.txt and tox.ini files).
|
|
56
|
+
include_pointers: A tuple of JSON pointers indicating elements to
|
|
57
|
+
include (defaults to all elements). This applies only to TOML
|
|
58
|
+
files (including pyproject.toml), and is ignored for all other
|
|
59
|
+
file types.
|
|
60
|
+
exclude_pointers: A tuple of JSON pointers indicating elements to
|
|
61
|
+
exclude (defaults to no exclusions). This applies only to TOML
|
|
62
|
+
files (including pyproject.toml), and is ignored for all other
|
|
63
|
+
file types.
|
|
64
|
+
exclude: One or more distributions to exclude when upgrading packages.
|
|
65
|
+
exclude_recursive: One or more distributions to exclude when
|
|
66
|
+
upgrading packages. Recursive dependency discovery is also
|
|
67
|
+
halted for these distributions, unlike those passed to `exclude`.
|
|
68
|
+
depth: The maximum recursion depth to traverse when discovering
|
|
69
|
+
dependencies. If `None` (the default), all dependencies are
|
|
70
|
+
discovered.
|
|
71
|
+
"""
|
|
72
|
+
frozen_requirements: tuple[str, ...] = get_frozen_requirements(
|
|
73
|
+
requirements,
|
|
74
|
+
exclude=exclude,
|
|
75
|
+
exclude_recursive=exclude_recursive,
|
|
76
|
+
keep_version_specifier="*",
|
|
77
|
+
no_version="*",
|
|
78
|
+
depth=depth,
|
|
79
|
+
include_pointers=include_pointers,
|
|
80
|
+
exclude_pointers=exclude_pointers,
|
|
81
|
+
)
|
|
82
|
+
if frozen_requirements:
|
|
83
|
+
command: tuple[str, ...] = (
|
|
84
|
+
sys.executable,
|
|
85
|
+
"-m",
|
|
86
|
+
"pip",
|
|
87
|
+
"install",
|
|
88
|
+
"--upgrade",
|
|
89
|
+
*frozen_requirements,
|
|
90
|
+
)
|
|
91
|
+
check_output(command, echo=echo)
|
|
92
|
+
configuration_files: tuple[str, ...] = tuple(
|
|
93
|
+
chain(
|
|
94
|
+
*map(iter_configuration_files, requirements) # type: ignore
|
|
95
|
+
)
|
|
96
|
+
)
|
|
97
|
+
if configuration_files:
|
|
98
|
+
update(
|
|
99
|
+
configuration_files,
|
|
100
|
+
ignore=ignore_update,
|
|
101
|
+
all_extra_name=all_extra_name,
|
|
102
|
+
include_pointers=include_pointers,
|
|
103
|
+
exclude_pointers=exclude_pointers,
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def main() -> None:
|
|
108
|
+
parser: argparse.ArgumentParser = argparse.ArgumentParser(
|
|
109
|
+
prog="dependence upgrade",
|
|
110
|
+
description=(
|
|
111
|
+
"Upgrade all dependencies for specified packages/projects, "
|
|
112
|
+
"then upgrade version specifiers in the project files "
|
|
113
|
+
"to align with newly installed versions of each distribution."
|
|
114
|
+
),
|
|
115
|
+
)
|
|
116
|
+
parser.add_argument(
|
|
117
|
+
"-iu",
|
|
118
|
+
"--ignore-update",
|
|
119
|
+
default=[],
|
|
120
|
+
type=str,
|
|
121
|
+
action="append",
|
|
122
|
+
help=(
|
|
123
|
+
"A comma-separated list of distributions to ignore (leave "
|
|
124
|
+
"any requirements pertaining to the package as-is) when "
|
|
125
|
+
"updating project files"
|
|
126
|
+
),
|
|
127
|
+
)
|
|
128
|
+
parser.add_argument(
|
|
129
|
+
"-aen",
|
|
130
|
+
"--all-extra-name",
|
|
131
|
+
default="",
|
|
132
|
+
type=str,
|
|
133
|
+
help=(
|
|
134
|
+
"If provided, an extra which consolidates the requirements "
|
|
135
|
+
"for all other extras will be added/updated to pyproject.toml "
|
|
136
|
+
"or setup.cfg (this argument is ignored for "
|
|
137
|
+
"requirements.txt files and other TOML files)"
|
|
138
|
+
),
|
|
139
|
+
)
|
|
140
|
+
parser.add_argument(
|
|
141
|
+
"--include-pointer",
|
|
142
|
+
default=[],
|
|
143
|
+
type=str,
|
|
144
|
+
action="append",
|
|
145
|
+
help=(
|
|
146
|
+
"One or more JSON pointers of elements to *include* "
|
|
147
|
+
"(applies to TOML files only)"
|
|
148
|
+
),
|
|
149
|
+
)
|
|
150
|
+
parser.add_argument(
|
|
151
|
+
"--exclude-pointer",
|
|
152
|
+
default=[],
|
|
153
|
+
type=str,
|
|
154
|
+
action="append",
|
|
155
|
+
help=(
|
|
156
|
+
"One or more JSON pointers of elements to *exclude* "
|
|
157
|
+
"(applies to TOML files only)"
|
|
158
|
+
),
|
|
159
|
+
)
|
|
160
|
+
parser.add_argument(
|
|
161
|
+
"-e",
|
|
162
|
+
"--exclude",
|
|
163
|
+
default=[],
|
|
164
|
+
type=str,
|
|
165
|
+
action="append",
|
|
166
|
+
help=(
|
|
167
|
+
"A distribution (or comma-separated list of distributions) to "
|
|
168
|
+
"exclude when performing upgrades"
|
|
169
|
+
),
|
|
170
|
+
)
|
|
171
|
+
parser.add_argument(
|
|
172
|
+
"-er",
|
|
173
|
+
"--exclude-recursive",
|
|
174
|
+
default=[],
|
|
175
|
+
type=str,
|
|
176
|
+
action="append",
|
|
177
|
+
help=(
|
|
178
|
+
"A distribution (or comma-separated list of distributions) to "
|
|
179
|
+
"exclude when performing upgrades. Unlike -e / --exclude, "
|
|
180
|
+
"this argument also precludes recursive requirement discovery "
|
|
181
|
+
"for the specified packages, thereby excluding all of the "
|
|
182
|
+
"excluded package's requirements which are not required by "
|
|
183
|
+
"another (non-excluded) distribution from the upgrade."
|
|
184
|
+
),
|
|
185
|
+
)
|
|
186
|
+
parser.add_argument(
|
|
187
|
+
"-d",
|
|
188
|
+
"--depth",
|
|
189
|
+
default=None,
|
|
190
|
+
type=int,
|
|
191
|
+
help="Depth of recursive requirement discovery",
|
|
192
|
+
)
|
|
193
|
+
parser.add_argument(
|
|
194
|
+
"requirement",
|
|
195
|
+
nargs="+",
|
|
196
|
+
type=str,
|
|
197
|
+
help=(
|
|
198
|
+
"One or more requirement specifiers (for example: "
|
|
199
|
+
'"requirement-name", "requirement-name[extra-a,extra-b]", '
|
|
200
|
+
'".[extra-a, extra-b]" or '
|
|
201
|
+
'"../other-editable-package-directory[extra-a, extra-b]) '
|
|
202
|
+
"and/or paths to a setup.py, setup.cfg, pyproject.toml, "
|
|
203
|
+
"tox.ini or requirements.txt file"
|
|
204
|
+
),
|
|
205
|
+
)
|
|
206
|
+
namespace: argparse.Namespace = parser.parse_args()
|
|
207
|
+
upgrade(
|
|
208
|
+
requirements=namespace.requirement,
|
|
209
|
+
exclude=tuple(iter_parse_delimited_values(namespace.exclude)),
|
|
210
|
+
exclude_recursive=tuple(
|
|
211
|
+
iter_parse_delimited_values(namespace.exclude_recursive)
|
|
212
|
+
),
|
|
213
|
+
ignore_update=tuple(
|
|
214
|
+
iter_parse_delimited_values(namespace.ignore_update)
|
|
215
|
+
),
|
|
216
|
+
all_extra_name=namespace.all_extra_name,
|
|
217
|
+
include_pointers=tuple(namespace.include_pointer),
|
|
218
|
+
exclude_pointers=tuple(namespace.exclude_pointer),
|
|
219
|
+
)
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
if __name__ == "__main__":
|
|
223
|
+
main()
|
|
@@ -1,18 +1,19 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: dependence
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2.5
|
|
4
4
|
Summary: A dependency management tool for python projects
|
|
5
|
-
Project-URL:
|
|
5
|
+
Project-URL: Documentation, https://dependence.enorganic.org
|
|
6
|
+
Project-URL: Repository, https://github.com/enorganic/dependence
|
|
6
7
|
Author-email: david@belais.me
|
|
7
|
-
License: MIT
|
|
8
|
+
License-Expression: MIT
|
|
8
9
|
Keywords: dependencies,requirements
|
|
9
|
-
Requires-Python: ~=3.
|
|
10
|
+
Requires-Python: ~=3.10
|
|
10
11
|
Requires-Dist: jsonpointer
|
|
11
12
|
Requires-Dist: packaging
|
|
12
13
|
Requires-Dist: pip
|
|
13
14
|
Requires-Dist: setuptools>63
|
|
14
|
-
Requires-Dist: tomli-w~=1.
|
|
15
|
-
Requires-Dist: tomli~=2.
|
|
15
|
+
Requires-Dist: tomli-w~=1.2
|
|
16
|
+
Requires-Dist: tomli~=2.3
|
|
16
17
|
Description-Content-Type: text/markdown
|
|
17
18
|
|
|
18
19
|
# dependence
|
|
@@ -20,11 +21,11 @@ Description-Content-Type: text/markdown
|
|
|
20
21
|
[](https://github.com/enorganic/dependence/actions/workflows/test.yml)
|
|
21
22
|
[](https://badge.fury.io/py/dependence)
|
|
22
23
|
|
|
23
|
-
Dependence provides a Command Line Interface and library for
|
|
24
|
-
a python
|
|
25
|
-
installed in the environment in which `dependence` is
|
|
26
|
-
"freezing" recursively resolved package dependencies
|
|
27
|
-
for a package, instead of the entire environment).
|
|
24
|
+
Dependence provides a Command Line Interface and library for performing
|
|
25
|
+
dependency upgrades on a python project, aligning declared dependencies with
|
|
26
|
+
the package versions installed in the environment in which `dependence` is
|
|
27
|
+
executed, and for "freezing" recursively resolved package dependencies
|
|
28
|
+
(like `pip freeze`, but for a package, instead of the entire environment).
|
|
28
29
|
|
|
29
30
|
- [Documentation](https://enorganic.github.io/dependence/)
|
|
30
31
|
- [Contributing](https://enorganic.github.io/dependence/contributing)
|
|
@@ -37,7 +38,72 @@ You can install `dependence` with pip:
|
|
|
37
38
|
pip3 install dependence
|
|
38
39
|
```
|
|
39
40
|
|
|
40
|
-
##
|
|
41
|
+
## Usage
|
|
42
|
+
|
|
43
|
+
### Upgrading Dependencies
|
|
44
|
+
|
|
45
|
+
The `dependence upgrade` command, and the `dependence.upgrade.upgrade`
|
|
46
|
+
function, discover and upgrade project and environment dependencies in the
|
|
47
|
+
environment in which dependence is installed to their latest version
|
|
48
|
+
aligned with project and dependency requirements, then selectively update
|
|
49
|
+
requirement specifiers in any specified TOML files (such as pyproject.toml),
|
|
50
|
+
setup.cfg file, requirements.txt files, or tox.ini files. Because
|
|
51
|
+
pyproject.toml files may contain dependencies for more than one environment,
|
|
52
|
+
such as when using [hatch](https://hatch.pypa.io/) environments,
|
|
53
|
+
[JSON-style pointers](https://datatracker.ietf.org/doc/html/rfc6901) are used
|
|
54
|
+
to include or exclude specific parts of TOML files.
|
|
55
|
+
|
|
56
|
+
For example, in [this project's Makefile
|
|
57
|
+
](https://github.com/enorganic/dependence/blob/main/Makefile#L27), we define a
|
|
58
|
+
`make upgrade` target as follows:
|
|
59
|
+
|
|
60
|
+
```Makefile
|
|
61
|
+
SHELL := bash
|
|
62
|
+
PYTHON_VERSION := 3.10
|
|
63
|
+
|
|
64
|
+
upgrade:
|
|
65
|
+
hatch run dependence upgrade\
|
|
66
|
+
--include-pointer /tool/hatch/envs/default\
|
|
67
|
+
--include-pointer /project\
|
|
68
|
+
pyproject.toml && \
|
|
69
|
+
hatch run docs:dependence upgrade\
|
|
70
|
+
--include-pointer /tool/hatch/envs/docs\
|
|
71
|
+
--include-pointer /project\
|
|
72
|
+
pyproject.toml && \
|
|
73
|
+
hatch run hatch-static-analysis:dependence upgrade\
|
|
74
|
+
--include-pointer /tool/hatch/envs/docs\
|
|
75
|
+
--include-pointer /project\
|
|
76
|
+
pyproject.toml && \
|
|
77
|
+
hatch run hatch-test.py$(PYTHON_VERSION):dependence upgrade\
|
|
78
|
+
--include-pointer /tool/hatch/envs/hatch-test\
|
|
79
|
+
--include-pointer /project\
|
|
80
|
+
pyproject.toml && \
|
|
81
|
+
make requirements
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
You can reference the [associated pyproject.toml file for this project
|
|
85
|
+
](https://github.com/enorganic/dependence/blob/main/pyproject.toml#L21)
|
|
86
|
+
for reference concerning the implications of `--include-pointer`, which
|
|
87
|
+
uses identical syntax to [JSON pointers
|
|
88
|
+
](https://datatracker.ietf.org/doc/html/rfc6901). The `--exclude-pointer`
|
|
89
|
+
parameter works identically, but in reverse. If both `--include-pointer`
|
|
90
|
+
and `--exclude-pointer` are used, only sections which match both conditions
|
|
91
|
+
will be updated.
|
|
92
|
+
|
|
93
|
+
You may refer to the [`dependence upgrade` CLI reference](./cli.md#dependence-upgrade)
|
|
94
|
+
and/or [`dependence.upgrade` API reference](./api/upgrade.md) for details
|
|
95
|
+
concerning this command/module, related options, and more complex use case
|
|
96
|
+
examples.
|
|
97
|
+
|
|
98
|
+
The `dependence upgrade` command, and the `dependence.upgrade.upgrade`
|
|
99
|
+
function, are simply a composite of the dependency listing and update
|
|
100
|
+
functionalities covered below, but which a `pip install --upgrade`
|
|
101
|
+
command executed in between—so please read further for additional details.
|
|
102
|
+
All parameters are directly passed, with the exception of
|
|
103
|
+
`--ignore-update`/`ignore_update`, which is translated to the
|
|
104
|
+
`--ignore`/`ignore` parameter for
|
|
105
|
+
`dependence update`/`dependence.update.update` (renamed in this operation
|
|
106
|
+
for clarity of purpose).
|
|
41
107
|
|
|
42
108
|
### Listing Dependencies
|
|
43
109
|
|
|
@@ -47,8 +113,8 @@ requirements.txt, pyproject.toml, setup.cfg, or tox.ini files. The output
|
|
|
47
113
|
format matches that of `pip freeze`, but only lists dependencies of indicated
|
|
48
114
|
packages and/or editable project locations.
|
|
49
115
|
|
|
50
|
-
You may refer to the [`dependence freeze` CLI reference](
|
|
51
|
-
and/or [`dependence.freeze` API reference](
|
|
116
|
+
You may refer to the [`dependence freeze` CLI reference](./cli.md#dependence-freeze)
|
|
117
|
+
and/or [`dependence.freeze` API reference](./api/freeze.md) for details
|
|
52
118
|
concerning this command/module, related options, and more complex use case
|
|
53
119
|
examples.
|
|
54
120
|
|
|
@@ -156,7 +222,7 @@ $ diff pyproject_before.toml pyproject_after.toml
|
|
|
156
222
|
```
|
|
157
223
|
|
|
158
224
|
As you can see, only the version specifier for tomli changed. We know that
|
|
159
|
-
every dependency was upgraded,
|
|
225
|
+
every dependency was upgraded, so why was only the `tomli` version specifier
|
|
160
226
|
updated? By design. Here are the rules `dependence update` adheres to:
|
|
161
227
|
|
|
162
228
|
- We only update requirements versions when they have *inclusive* specifiers.
|
|
@@ -173,7 +239,7 @@ updated? By design. Here are the rules `dependence update` adheres to:
|
|
|
173
239
|
- If your requirement is unversioned, we don't touch it, of course. This is
|
|
174
240
|
why you didn't see any change for "pip".
|
|
175
241
|
|
|
176
|
-
You may refer to the [`dependence update` CLI reference](
|
|
177
|
-
and/or [`dependence.update` API reference](
|
|
242
|
+
You may refer to the [`dependence update` CLI reference](./cli.md#dependence-update)
|
|
243
|
+
and/or [`dependence.update` API reference](./api/update.md) for details
|
|
178
244
|
concerning this command/module, related options, and more complex use
|
|
179
245
|
cases/examples.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
dependence/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
+
dependence/__main__.py,sha256=gsluad-hgMvktrflSNLEMB3F-G_BKvlIGTHL0c1aQd8,1822
|
|
3
|
+
dependence/_utilities.py,sha256=tcDRdDNdxeZHmqqHD7tynNSQYfZ9RWp0b7JiKfw88jE,39070
|
|
4
|
+
dependence/freeze.py,sha256=ybjHOQOzxtuVjJQOUr1077CoMGSGdho3iKj8waygwuQ,17516
|
|
5
|
+
dependence/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
+
dependence/update.py,sha256=KGNj-COhRnbxGVAUikBKdUgJCz0xZ741Z6HEBny7diQ,20852
|
|
7
|
+
dependence/upgrade.py,sha256=nyOahgBJayeVeicM4AJ72lp2uDMvJOcCNUZIhVKk1do,7882
|
|
8
|
+
dependence-1.2.5.dist-info/METADATA,sha256=app1ZrC3g853fvygMzm15hHB4CaCpfMnxnuHS8TZ6kg,8366
|
|
9
|
+
dependence-1.2.5.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
10
|
+
dependence-1.2.5.dist-info/entry_points.txt,sha256=NStO_B0D81ObVYr9zDs6LCy0whm0a8KCiiFHMmTwOVE,56
|
|
11
|
+
dependence-1.2.5.dist-info/RECORD,,
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
dependence/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
dependence/__main__.py,sha256=myBIBZdez2jC3_dkVSE-mOLo39yKi2cF_0NuVXcXF1E,1528
|
|
3
|
-
dependence/_utilities.py,sha256=gUFC6lzd3T60_-3kqzqTJRmmilzM64HRHz6rxjhJd9c,33697
|
|
4
|
-
dependence/freeze.py,sha256=t9yoavc8h5OWA5za_tNrEQIGThFHy679O-6MnXUBZmQ,14855
|
|
5
|
-
dependence/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
-
dependence/update.py,sha256=ymncDTVh9UxECQwOIcU3OWIfhvCP3kdQlyKfJH34CoU,19978
|
|
7
|
-
dependence-1.0.2.dist-info/METADATA,sha256=F7JokQ115-l5hbG96SziL7I9BHTtgO-QAg5i9ZgPy4M,5508
|
|
8
|
-
dependence-1.0.2.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
|
|
9
|
-
dependence-1.0.2.dist-info/entry_points.txt,sha256=NStO_B0D81ObVYr9zDs6LCy0whm0a8KCiiFHMmTwOVE,56
|
|
10
|
-
dependence-1.0.2.dist-info/RECORD,,
|
|
File without changes
|