lockss-turtles 0.6.0.dev21__tar.gz → 0.6.0.dev23__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.
- {lockss_turtles-0.6.0.dev21 → lockss_turtles-0.6.0.dev23}/CHANGELOG.rst +67 -18
- lockss_turtles-0.6.0.dev23/PKG-INFO +64 -0
- lockss_turtles-0.6.0.dev23/README.rst +31 -0
- {lockss_turtles-0.6.0.dev21 → lockss_turtles-0.6.0.dev23}/pyproject.toml +1 -1
- {lockss_turtles-0.6.0.dev21 → lockss_turtles-0.6.0.dev23}/src/lockss/turtles/__init__.py +1 -1
- {lockss_turtles-0.6.0.dev21 → lockss_turtles-0.6.0.dev23}/src/lockss/turtles/cli.py +12 -16
- lockss_turtles-0.6.0.dev23/src/lockss/turtles/plugin_registry.py +681 -0
- {lockss_turtles-0.6.0.dev21 → lockss_turtles-0.6.0.dev23}/src/lockss/turtles/plugin_set.py +325 -79
- {lockss_turtles-0.6.0.dev21 → lockss_turtles-0.6.0.dev23}/src/lockss/turtles/util.py +44 -3
- lockss_turtles-0.6.0.dev21/PKG-INFO +0 -1042
- lockss_turtles-0.6.0.dev21/README.rst +0 -1009
- lockss_turtles-0.6.0.dev21/src/lockss/turtles/plugin_registry.py +0 -257
- {lockss_turtles-0.6.0.dev21 → lockss_turtles-0.6.0.dev23}/LICENSE +0 -0
- {lockss_turtles-0.6.0.dev21 → lockss_turtles-0.6.0.dev23}/src/lockss/turtles/__main__.py +0 -0
- {lockss_turtles-0.6.0.dev21 → lockss_turtles-0.6.0.dev23}/src/lockss/turtles/app.py +0 -0
- {lockss_turtles-0.6.0.dev21 → lockss_turtles-0.6.0.dev23}/src/lockss/turtles/plugin.py +0 -0
- {lockss_turtles-0.6.0.dev21 → lockss_turtles-0.6.0.dev23}/tests/unittest/lockss/turtles/__init__.py +0 -0
- {lockss_turtles-0.6.0.dev21 → lockss_turtles-0.6.0.dev23}/tests/unittest/lockss/turtles/test_plugin_set.py +0 -0
|
@@ -8,33 +8,82 @@ Release Notes
|
|
|
8
8
|
|
|
9
9
|
Released: ?
|
|
10
10
|
|
|
11
|
+
* **Changes**
|
|
12
|
+
|
|
13
|
+
* The configuration directory for Turtles in ``$XDG_CONFIG_HOME`` (by default ``$HOME/.config`` which is typically ``/home/$USER/.config``), ``/usr/local/share``, and ``/etc`` is now called ``lockss-turtles`` instead of ``lockss.turtles``.
|
|
14
|
+
|
|
15
|
+
* Some long options have been renamed (the corresponding short options remain unchanged):
|
|
16
|
+
|
|
17
|
+
.. list-table::
|
|
18
|
+
:header-rows: 1
|
|
19
|
+
|
|
20
|
+
* * Short option
|
|
21
|
+
* Long option, version 0.5.0
|
|
22
|
+
* Long option, version 0.6.0
|
|
23
|
+
* * ``-i``
|
|
24
|
+
* ``--identifier``
|
|
25
|
+
* ``--plugin-identifier``
|
|
26
|
+
* * ``-I``
|
|
27
|
+
* ``--identifiers``
|
|
28
|
+
* ``--plugin-identifiers``
|
|
29
|
+
* * ``-j``
|
|
30
|
+
* ``--jar``
|
|
31
|
+
* ``--plugin-jar``
|
|
32
|
+
* * ``-J``
|
|
33
|
+
* ``--jars``
|
|
34
|
+
* ``--plugin-jars``
|
|
35
|
+
* * ``-l``
|
|
36
|
+
* ``--layer``
|
|
37
|
+
* ``--plugin-registry-layer``
|
|
38
|
+
* * ``-L``
|
|
39
|
+
* ``--layers``
|
|
40
|
+
* ``--plugin-registry-layers``
|
|
41
|
+
* * n/a
|
|
42
|
+
* ``--password``
|
|
43
|
+
* ``--plugin-signing-password``
|
|
44
|
+
|
|
45
|
+
* Some short options have been renamed (the corresponding long options remain unchanged):
|
|
46
|
+
|
|
47
|
+
.. list-table::
|
|
48
|
+
:header-rows: 1
|
|
49
|
+
|
|
50
|
+
* * Long option
|
|
51
|
+
* Short option, version 0.5.0
|
|
52
|
+
* Short option, version 0.6.0
|
|
53
|
+
* * ``--plugin-registry-catalog``
|
|
54
|
+
* ``-r``
|
|
55
|
+
* ``-R``
|
|
56
|
+
* * ``--plugin-set-catalog``
|
|
57
|
+
* ``-s``
|
|
58
|
+
* ``-S``
|
|
59
|
+
|
|
60
|
+
* Bare arguments are no longer allowed and treated as plugin identifiers or plugin JARs; all plugin identifiers must be specified via ``--plugin-identifier/-i`` or ``--plugin-identifiers/-I`` options and all plugin JARS via ``--plugin-jar/-j`` or ``--plugin-jars/-J`` options.
|
|
61
|
+
|
|
62
|
+
* The ``usage`` command has been removed.
|
|
63
|
+
|
|
11
64
|
* **Features**
|
|
12
65
|
|
|
13
|
-
*
|
|
66
|
+
* New options have been added:
|
|
14
67
|
|
|
15
|
-
|
|
68
|
+
.. list-table::
|
|
69
|
+
:header-rows: 1
|
|
16
70
|
|
|
17
|
-
*
|
|
71
|
+
* * Long option
|
|
72
|
+
* Short option
|
|
73
|
+
* * ``--plugin-registry``
|
|
74
|
+
* ``-r``
|
|
75
|
+
* * ``--plugin-set``
|
|
76
|
+
* ``-s``
|
|
18
77
|
|
|
19
|
-
*
|
|
78
|
+
* Options that read YAML files no longer expect each file to contain a single YAML configuration object, which must be of the kind they target; they now read all YAML configuration objects in each file, loading all the ones with the right kind and ignoring all the others with the other kinds. This applies to existing options ``--plugin-registry-catalog``/``-R`` and ``--plugin-set-catalog``/``-S``, and new options ``--plugin-registry``/``-r`` and ``--plugin-set``/``-s``.
|
|
20
79
|
|
|
21
|
-
*
|
|
80
|
+
* Now using Pydantic for configuration objects instead of maintaining JSON Schema instances.
|
|
22
81
|
|
|
23
|
-
|
|
24
|
-
Short option Version 0.5.0 Version 0.6.0
|
|
25
|
-
============ ================= =============
|
|
26
|
-
``-i`` ``--identifier`` ``--plugin-identifier``
|
|
27
|
-
``-I`` ``--identifiers`` ``--plugin-identifiers``
|
|
28
|
-
``-j`` ``--jar`` ``--plugin-jar``
|
|
29
|
-
``-J`` ``--jars`` ``--plugin-jars``
|
|
30
|
-
``-l`` ``--layer`` ``--plugin-registry-layer``
|
|
31
|
-
``-L`` ``--layers`` ``--plugin-registry-layers``
|
|
32
|
-
n/a ``--password`` ``--plugin-signing-password``
|
|
33
|
-
============ ================= =============
|
|
82
|
+
* Now using type hinting throughout.
|
|
34
83
|
|
|
35
|
-
*
|
|
84
|
+
* Now using *lockss-pybasic* and *pydantic-argparse* internally.
|
|
36
85
|
|
|
37
|
-
*
|
|
86
|
+
* `Turtles documentation <https://docs.lockss.org/en/latest/software/turtles>`_ is now on the `LOCKSS Documentation Portal <https://docs.lockss.org/>`_.
|
|
38
87
|
|
|
39
88
|
-----
|
|
40
89
|
0.5.0
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
|
+
Name: lockss-turtles
|
|
3
|
+
Version: 0.6.0.dev23
|
|
4
|
+
Summary: Library and command line tool to manage LOCKSS plugin sets and LOCKSS plugin registries
|
|
5
|
+
License: BSD-3-Clause
|
|
6
|
+
Author: Thib Guicherd-Callin
|
|
7
|
+
Author-email: thib@cs.stanford.edu
|
|
8
|
+
Maintainer: Thib Guicherd-Callin
|
|
9
|
+
Maintainer-email: thib@cs.stanford.edu
|
|
10
|
+
Requires-Python: >=3.9,<4.0
|
|
11
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Framework :: Pydantic :: 2
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Intended Audience :: System Administrators
|
|
16
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
17
|
+
Classifier: Programming Language :: Python
|
|
18
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
19
|
+
Classifier: Topic :: System :: Archiving
|
|
20
|
+
Classifier: Topic :: Utilities
|
|
21
|
+
Requires-Dist: exceptiongroup (>=1.3.0,<1.4.0)
|
|
22
|
+
Requires-Dist: java-manifest (>=1.1.0,<1.2.0)
|
|
23
|
+
Requires-Dist: lockss-pybasic (>=0.1.0,<0.2.0)
|
|
24
|
+
Requires-Dist: pydantic (>=2.11.0,<2.12.0)
|
|
25
|
+
Requires-Dist: pyyaml (>=6.0.0,<6.1.0)
|
|
26
|
+
Requires-Dist: xdg (>=6.0.0,<6.1.0)
|
|
27
|
+
Project-URL: Documentation, https://docs.lockss.org/en/latest/software/turtles
|
|
28
|
+
Project-URL: Repository, https://github.com/lockss/lockss-turtles
|
|
29
|
+
Project-URL: changelog, https://github.com/lockss/lockss-turtles/blob/main/CHANGELOG.rst
|
|
30
|
+
Project-URL: issues, https://github.com/lockss/lockss-turtles/issues
|
|
31
|
+
Description-Content-Type: text/x-rst
|
|
32
|
+
|
|
33
|
+
=======
|
|
34
|
+
Turtles
|
|
35
|
+
=======
|
|
36
|
+
|
|
37
|
+
.. |RELEASE| replace:: 0.6.0-dev23 NOT YET RELEASED
|
|
38
|
+
.. |RELEASE_DATE| replace:: NOT YET RELEASED
|
|
39
|
+
.. |TURTLES| replace:: **Turtles**
|
|
40
|
+
|
|
41
|
+
.. image:: https://assets.lockss.org/images/logos/turtles/turtles_128x128.png
|
|
42
|
+
:alt: Turtles logo
|
|
43
|
+
:align: right
|
|
44
|
+
|
|
45
|
+
|TURTLES| is a command line tool and Python library to manage LOCKSS plugin sets and LOCKSS plugin registries.
|
|
46
|
+
|
|
47
|
+
:Latest release: |RELEASE| (|RELEASE_DATE|)
|
|
48
|
+
:Documentation: https://docs.lockss.org/en/latest/software/turtles
|
|
49
|
+
:Release notes: `CHANGELOG.rst <https://github.com/lockss/lockss-turtles/blob/main/CHANGELOG.rst>`_
|
|
50
|
+
:License: `LICENSE <https://github.com/lockss/lockss-turtles/blob/main/LICENSE>`_
|
|
51
|
+
:Repository: https://github.com/lockss/lockss-turtles
|
|
52
|
+
:Issues: https://github.com/lockss/lockss-turtles/issues
|
|
53
|
+
|
|
54
|
+
----
|
|
55
|
+
|
|
56
|
+
Quick Start::
|
|
57
|
+
|
|
58
|
+
# Install with pipx
|
|
59
|
+
pipx install lockss-turtles
|
|
60
|
+
|
|
61
|
+
# Verify installation and discover all the commands
|
|
62
|
+
turtles --help
|
|
63
|
+
|
|
64
|
+
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
=======
|
|
2
|
+
Turtles
|
|
3
|
+
=======
|
|
4
|
+
|
|
5
|
+
.. |RELEASE| replace:: 0.6.0-dev23 NOT YET RELEASED
|
|
6
|
+
.. |RELEASE_DATE| replace:: NOT YET RELEASED
|
|
7
|
+
.. |TURTLES| replace:: **Turtles**
|
|
8
|
+
|
|
9
|
+
.. image:: https://assets.lockss.org/images/logos/turtles/turtles_128x128.png
|
|
10
|
+
:alt: Turtles logo
|
|
11
|
+
:align: right
|
|
12
|
+
|
|
13
|
+
|TURTLES| is a command line tool and Python library to manage LOCKSS plugin sets and LOCKSS plugin registries.
|
|
14
|
+
|
|
15
|
+
:Latest release: |RELEASE| (|RELEASE_DATE|)
|
|
16
|
+
:Documentation: https://docs.lockss.org/en/latest/software/turtles
|
|
17
|
+
:Release notes: `CHANGELOG.rst <https://github.com/lockss/lockss-turtles/blob/main/CHANGELOG.rst>`_
|
|
18
|
+
:License: `LICENSE <https://github.com/lockss/lockss-turtles/blob/main/LICENSE>`_
|
|
19
|
+
:Repository: https://github.com/lockss/lockss-turtles
|
|
20
|
+
:Issues: https://github.com/lockss/lockss-turtles/issues
|
|
21
|
+
|
|
22
|
+
----
|
|
23
|
+
|
|
24
|
+
Quick Start::
|
|
25
|
+
|
|
26
|
+
# Install with pipx
|
|
27
|
+
pipx install lockss-turtles
|
|
28
|
+
|
|
29
|
+
# Verify installation and discover all the commands
|
|
30
|
+
turtles --help
|
|
31
|
+
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
|
|
29
29
|
[project]
|
|
30
30
|
name = "lockss-turtles"
|
|
31
|
-
version = "0.6.0-
|
|
31
|
+
version = "0.6.0-dev23" # Always change in __init__.py, and at release time in README.rst and CHANGELOG.rst
|
|
32
32
|
description = "Library and command line tool to manage LOCKSS plugin sets and LOCKSS plugin registries"
|
|
33
33
|
license = { text = "BSD-3-Clause" }
|
|
34
34
|
readme = "README.rst"
|
|
@@ -144,22 +144,18 @@ class PluginJarOptions(BaseModel):
|
|
|
144
144
|
|
|
145
145
|
|
|
146
146
|
class NonInteractiveOptions(BaseModel):
|
|
147
|
-
non_interactive: Optional[bool] = Field(False,
|
|
147
|
+
non_interactive: Optional[bool] = Field(False,
|
|
148
|
+
description='(plugin signing credentials) disallow interactive prompts')
|
|
148
149
|
|
|
149
150
|
|
|
150
|
-
class
|
|
151
|
-
pass
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
class DeployPluginCommand(OutputFormatOptions, NonInteractiveOptions, PluginDeploymentOptions, PluginJarOptions):
|
|
155
|
-
pass
|
|
151
|
+
class TurtlesCommand(BaseModel):
|
|
156
152
|
|
|
153
|
+
class BuildPluginCommand(OutputFormatOptions, NonInteractiveOptions, PluginBuildingOptions, PluginIdentifierOptions): pass
|
|
157
154
|
|
|
158
|
-
class
|
|
159
|
-
pass
|
|
155
|
+
class DeployPluginCommand(OutputFormatOptions, NonInteractiveOptions, PluginDeploymentOptions, PluginJarOptions): pass
|
|
160
156
|
|
|
157
|
+
class ReleasePluginCommand(OutputFormatOptions, NonInteractiveOptions, PluginDeploymentOptions, PluginBuildingOptions, PluginIdentifierOptions): pass
|
|
161
158
|
|
|
162
|
-
class TurtlesCommand(BaseModel):
|
|
163
159
|
bp: Optional[BuildPluginCommand] = Field(description='synonym for: build-plugin')
|
|
164
160
|
build_plugin: Optional[BuildPluginCommand] = Field(description='build plugins', alias='build-plugin')
|
|
165
161
|
copyright: Optional[StringCommand.type(__copyright__)] = Field(description=COPYRIGHT_DESCRIPTION)
|
|
@@ -237,10 +233,10 @@ class TurtlesCli(BaseCli[TurtlesCommand]):
|
|
|
237
233
|
# if len(result) > 0:
|
|
238
234
|
# self._tabulate(title, result, headers)
|
|
239
235
|
|
|
240
|
-
def _bp(self, build_plugin_command: BuildPluginCommand) -> None:
|
|
236
|
+
def _bp(self, build_plugin_command: TurtlesCommand.BuildPluginCommand) -> None:
|
|
241
237
|
return self._build_plugin(build_plugin_command)
|
|
242
238
|
|
|
243
|
-
def _build_plugin(self, build_plugin_command: BuildPluginCommand) -> None:
|
|
239
|
+
def _build_plugin(self, build_plugin_command: TurtlesCommand.BuildPluginCommand) -> None:
|
|
244
240
|
errs = []
|
|
245
241
|
for psc in build_plugin_command.get_plugin_set_catalogs():
|
|
246
242
|
try:
|
|
@@ -276,7 +272,7 @@ class TurtlesCli(BaseCli[TurtlesCommand]):
|
|
|
276
272
|
def _copyright(self, string_command: StringCommand) -> None:
|
|
277
273
|
self._do_string_command(string_command)
|
|
278
274
|
|
|
279
|
-
def _deploy_plugin(self, deploy_plugin_command: DeployPluginCommand) -> None:
|
|
275
|
+
def _deploy_plugin(self, deploy_plugin_command: TurtlesCommand.DeployPluginCommand) -> None:
|
|
280
276
|
errs = []
|
|
281
277
|
for prc in deploy_plugin_command.get_plugin_registry_catalogs():
|
|
282
278
|
try:
|
|
@@ -307,7 +303,7 @@ class TurtlesCli(BaseCli[TurtlesCommand]):
|
|
|
307
303
|
def _do_string_command(self, string_command: StringCommand) -> None:
|
|
308
304
|
string_command()
|
|
309
305
|
|
|
310
|
-
def _dp(self, deploy_plugin_command: DeployPluginCommand) -> None:
|
|
306
|
+
def _dp(self, deploy_plugin_command: TurtlesCommand.DeployPluginCommand) -> None:
|
|
311
307
|
return self._deploy_plugin(deploy_plugin_command)
|
|
312
308
|
|
|
313
309
|
def _license(self, string_command: StringCommand) -> None:
|
|
@@ -322,7 +318,7 @@ class TurtlesCli(BaseCli[TurtlesCommand]):
|
|
|
322
318
|
self._parser.error('no plugin signing password specified while in non-interactive mode')
|
|
323
319
|
self._app.set_password(lambda: _p)
|
|
324
320
|
|
|
325
|
-
def _release_plugin(self, release_plugin_command: ReleasePluginCommand) -> None:
|
|
321
|
+
def _release_plugin(self, release_plugin_command: TurtlesCommand.ReleasePluginCommand) -> None:
|
|
326
322
|
errs = []
|
|
327
323
|
for psc in release_plugin_command.get_plugin_set_catalogs():
|
|
328
324
|
try:
|
|
@@ -371,7 +367,7 @@ class TurtlesCli(BaseCli[TurtlesCommand]):
|
|
|
371
367
|
headers=['Plugin identifier', 'Plugin version', 'Plugin registry', 'Plugin registry layer', 'Deployed JAR'],
|
|
372
368
|
tablefmt=release_plugin_command.output_format))
|
|
373
369
|
|
|
374
|
-
def _rp(self, release_plugin_command: ReleasePluginCommand) -> None:
|
|
370
|
+
def _rp(self, release_plugin_command: TurtlesCommand.ReleasePluginCommand) -> None:
|
|
375
371
|
self._release_plugin(release_plugin_command)
|
|
376
372
|
|
|
377
373
|
def _version(self, string_command: StringCommand) -> None:
|