lockss-turtles 0.6.0.dev19__tar.gz → 0.6.0.dev20__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: lockss-turtles
3
- Version: 0.6.0.dev19
3
+ Version: 0.6.0.dev20
4
4
  Summary: Library and command line tool to manage LOCKSS plugin sets and LOCKSS plugin registries
5
5
  License: BSD-3-Clause
6
6
  Author: Thib Guicherd-Callin
@@ -34,7 +34,7 @@ Description-Content-Type: text/x-rst
34
34
  Turtles
35
35
  =======
36
36
 
37
- .. |RELEASE| replace:: 0.6.0-dev19
37
+ .. |RELEASE| replace:: 0.6.0-dev20
38
38
  .. |RELEASE_DATE| replace:: ?
39
39
 
40
40
  .. |HELP| replace:: ``--help/-h``
@@ -2,7 +2,7 @@
2
2
  Turtles
3
3
  =======
4
4
 
5
- .. |RELEASE| replace:: 0.6.0-dev19
5
+ .. |RELEASE| replace:: 0.6.0-dev20
6
6
  .. |RELEASE_DATE| replace:: ?
7
7
 
8
8
  .. |HELP| replace:: ``--help/-h``
@@ -28,7 +28,7 @@
28
28
 
29
29
  [project]
30
30
  name = "lockss-turtles"
31
- version = "0.6.0-dev19" # Always change in __init__.py, and at release time in README.rst and CHANGELOG.rst
31
+ version = "0.6.0-dev20" # 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"
@@ -5,7 +5,7 @@ Library and command line tool to manage LOCKSS plugin sets and LOCKSS plugin
5
5
  registries.
6
6
  """
7
7
 
8
- __version__ = '0.6.0-dev19'
8
+ __version__ = '0.6.0-dev20'
9
9
 
10
10
  __copyright__ = '''
11
11
  Copyright (c) 2000-2025, Board of Trustees of Leland Stanford Jr. University
@@ -74,7 +74,7 @@ class TurtlesApp(object):
74
74
 
75
75
  ETC_CONFIG_DIR: ClassVar[Path] = Path('/etc', CONFIG_DIR_NAME)
76
76
 
77
- CONFIG_DIRS: ClassVar[tuple[Path, ...]] = (XDG_CONFIG_DIR, USR_CONFIG_DIR, ETC_CONFIG_DIR)
77
+ CONFIG_DIRS: ClassVar[tuple[Path, ...]] = (XDG_CONFIG_DIR, ETC_CONFIG_DIR, USR_CONFIG_DIR)
78
78
 
79
79
  PLUGIN_REGISTRY_CATALOG: ClassVar[str] = 'plugin-registry-catalog.yaml'
80
80
 
@@ -52,10 +52,10 @@ from .util import file_or
52
52
 
53
53
 
54
54
  class PluginBuildingOptions(BaseModel):
55
- plugin_set: Optional[list[FilePath]] = Field(aliases=['-s'], description=f'(plugin sets) add one or more plugin set definition files to the loaded plugin sets')
56
- plugin_set_catalog: Optional[list[FilePath]] = Field(aliases=['-S'], description=f'(plugin sets) add one or more plugin set catalogs to the loaded plugin set catalogs; if no plugin set catalogs or plugin sets are specified, load {file_or(TurtlesApp.default_plugin_set_catalog_choices())}')
57
- plugin_signing_credentials: Optional[FilePath] = Field(aliases=['-c'], description=f'(plugin signing credentials) load the plugin signing credentials from the given file, or if none, from {file_or(TurtlesApp.default_plugin_signing_credentials_choices())}')
58
- plugin_signing_password: Optional[str] = Field(description='(plugin signing credentials) set the plugin signing password, or if none, prompt interactively')
55
+ plugin_set: Optional[list[FilePath]] = Field(aliases=['-s'], title='Plugin Sets', description=f'(plugin sets) add one or more plugin set definition files to the loaded plugin sets')
56
+ plugin_set_catalog: Optional[list[FilePath]] = Field(aliases=['-S'], title='Plugin Set Catalogs', description=f'(plugin sets) add one or more plugin set catalogs to the loaded plugin set catalogs; if no plugin set catalogs or plugin sets are specified, load {file_or(TurtlesApp.default_plugin_set_catalog_choices())}')
57
+ plugin_signing_credentials: Optional[FilePath] = Field(aliases=['-c'], title='Plugin Signing Credentials', description=f'(plugin signing credentials) load the plugin signing credentials from the given file, or if none, from {file_or(TurtlesApp.default_plugin_signing_credentials_choices())}')
58
+ plugin_signing_password: Optional[str] = Field(title='Plugin Signing Password', description='(plugin signing credentials) set the plugin signing password, or if none, prompt interactively')
59
59
 
60
60
  def get_plugin_sets(self) -> list[Path]:
61
61
  return [path(p) for p in self.plugin_set or []]
@@ -119,7 +119,7 @@ class PluginIdentifierOptions(BaseModel):
119
119
  return path(v)
120
120
 
121
121
  def get_plugin_identifiers(self) -> list[str]:
122
- ret = [*(self.plugin_identifier or []), *[file_lines(file_path) for file_path in self.plugin_identifiers or []]]
122
+ ret = [*(self.plugin_identifier or []), *chain.from_iterable(file_lines(file_path) for file_path in self.plugin_identifiers or [])]
123
123
  if ret:
124
124
  return ret
125
125
  raise ValueError('Empty list of plugin identifiers')
@@ -137,7 +137,7 @@ class PluginJarOptions(BaseModel):
137
137
  return path(v)
138
138
 
139
139
  def get_plugin_jars(self):
140
- ret = [*(self.plugin_jar or []), *[file_lines(file_path) for file_path in self.plugin_jars or []]]
140
+ ret = [*(self.plugin_jar or []), *chain.from_iterable(file_lines(file_path) for file_path in self.plugin_jars or [])]
141
141
  if len(ret):
142
142
  return ret
143
143
  raise ValueError('Empty list of plugin JARs')
@@ -161,7 +161,7 @@ class ReleasePluginCommand(OutputFormatOptions, NonInteractiveOptions, PluginDep
161
161
 
162
162
  class TurtlesCommand(BaseModel):
163
163
  bp: Optional[BuildPluginCommand] = Field(description='synonym for: build-plugin')
164
- build_plugin: Optional[BuildPluginCommand] = Field(description='build (package and sign) plugins', alias='build-plugin')
164
+ build_plugin: Optional[BuildPluginCommand] = Field(description='build plugins', alias='build-plugin')
165
165
  copyright: Optional[StringCommand.type(__copyright__)] = Field(description=COPYRIGHT_DESCRIPTION)
166
166
  deploy_plugin: Optional[DeployPluginCommand] = Field(description='deploy plugins', alias='deploy-plugin')
167
167
  dp: Optional[DeployPluginCommand] = Field(description='synonym for: deploy-plugin')
@@ -66,7 +66,7 @@ PluginRegistryLayoutFileNamingConvention = Literal['abbreviated', 'identifier',
66
66
  class BasePluginRegistryLayout(BaseModel, ABC):
67
67
  TYPE_FIELD: ClassVar[dict[str, str]] = dict(title='Plugin Registry Layout Type', description='A plugin registry layout type')
68
68
  FILE_NAMING_CONVENTION_DEFAULT: ClassVar[PluginRegistryLayoutFileNamingConvention] = 'identifier'
69
- FILE_NAMING_CONVENTION_FIELD: ClassVar[dict[str, str]] = dict(title='Plugin Registry Layout File Naming Convention', description='A file naming convention for the plugin registry layout', alias='file-naming-convention')
69
+ FILE_NAMING_CONVENTION_FIELD: ClassVar[dict[str, str]] = dict(alias='file-naming-convention', title='Plugin Registry Layout File Naming Convention', description='A file naming convention for the plugin registry layout')
70
70
 
71
71
  _plugin_registry: Optional[PluginRegistry]
72
72
 
@@ -213,13 +213,13 @@ PluginRegistryIdentifier = str
213
213
 
214
214
 
215
215
  class PluginRegistry(BaseModelWithRoot):
216
- kind: PluginRegistryKind = Field(description="This object's kind")
216
+ kind: PluginRegistryKind = Field(title='Kind', description="This object's kind")
217
217
  id: PluginRegistryIdentifier = Field(title='Plugin Registry Identifier', description='An identifier for the plugin set')
218
218
  name: str = Field(title='Plugin Registry Name', description='A name for the plugin set')
219
219
  layout: PluginRegistryLayout = Field(title='Plugin Registry Layout', description='A layout for the plugin registry')
220
220
  layers: list[PluginRegistryLayer] = Field(min_length=1, title='Plugin Registry Layers', description="A non-empty list of plugin registry layers")
221
- plugin_identifiers: list[PluginIdentifier] = Field(min_length=1, title='Plugin Identifiers', description="A non-empty list of plugin identifiers", alias='plugin-identifiers')
222
- suppressed_plugin_identifiers: list[PluginIdentifier] = Field([], title='Suppressed Plugin Identifiers', description="A list of suppressed plugin identifiers", alias='suppressed-plugin-identifiers')
221
+ plugin_identifiers: list[PluginIdentifier] = Field(alias='plugin-identifiers', min_length=1, title='Plugin Identifiers', description="A non-empty list of plugin identifiers")
222
+ suppressed_plugin_identifiers: list[PluginIdentifier] = Field([], alias='suppressed-plugin-identifiers', title='Suppressed Plugin Identifiers', description="A list of suppressed plugin identifiers")
223
223
 
224
224
  def get_id(self) -> PluginRegistryIdentifier:
225
225
  return self.id
@@ -59,9 +59,9 @@ class PluginSetCatalog(BaseModelWithRoot):
59
59
  plugin set catalog.
60
60
  """
61
61
  #: This object's kind.
62
- kind: PluginSetCatalogKind = Field(description="This object's kind")
62
+ kind: PluginSetCatalogKind = Field(title='Kind', description="This object's kind")
63
63
  #: A non-empty list of plugin set files.
64
- plugin_set_files: list[str] = Field(min_length=1, description="A non-empty list of plugin set files", title='Plugin Set Files', alias='plugin-set-files')
64
+ plugin_set_files: list[str] = Field(alias='plugin-set-files', min_length=1, title='Plugin Set Files', description="A non-empty list of plugin set files")
65
65
 
66
66
  def get_plugin_set_files(self) -> list[Path]:
67
67
  """