lockss-pybasic 0.2.0.dev11__tar.gz → 0.2.0.dev13__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.4
2
2
  Name: lockss-pybasic
3
- Version: 0.2.0.dev11
3
+ Version: 0.2.0.dev13
4
4
  Summary: Basic Python utilities
5
5
  License: BSD-3-Clause
6
6
  License-File: LICENSE
@@ -24,7 +24,7 @@ Description-Content-Type: text/x-rst
24
24
  lockss-pybasic
25
25
  ==============
26
26
 
27
- .. |RELEASE| replace:: 0.2.0-dev11
27
+ .. |RELEASE| replace:: 0.2.0-dev13
28
28
  .. |RELEASE_DATE| replace:: NOT YET RELEASED
29
29
 
30
30
  **Latest release:** |RELEASE| (|RELEASE_DATE|)
@@ -2,7 +2,7 @@
2
2
  lockss-pybasic
3
3
  ==============
4
4
 
5
- .. |RELEASE| replace:: 0.2.0-dev11
5
+ .. |RELEASE| replace:: 0.2.0-dev13
6
6
  .. |RELEASE_DATE| replace:: NOT YET RELEASED
7
7
 
8
8
  **Latest release:** |RELEASE| (|RELEASE_DATE|)
@@ -28,7 +28,7 @@
28
28
 
29
29
  [project]
30
30
  name = "lockss-pybasic"
31
- version = "0.2.0-dev11" # Always change in __init__.py, and at release time in README.rst and CHANGELOG.rst
31
+ version = "0.2.0-dev13" # Always change in __init__.py, and at release time in README.rst and CHANGELOG.rst
32
32
  description = "Basic Python utilities"
33
33
  license = { text = "BSD-3-Clause" }
34
34
  readme = "README.rst"
@@ -36,4 +36,4 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36
36
  POSSIBILITY OF SUCH DAMAGE.
37
37
  '''.strip()
38
38
 
39
- __version__ = '0.2.0-dev11'
39
+ __version__ = '0.2.0-dev13'
@@ -32,9 +32,12 @@
32
32
  Command line utilities.
33
33
  """
34
34
 
35
- from typing import Optional
35
+ from pathlib import Path
36
+ from typing import Any, Optional
36
37
 
37
38
  import click
39
+ from click_extra import ExtraContext, HelpExtraFormatter, Style
40
+ from click_extra.colorize import default_theme
38
41
 
39
42
 
40
43
  def click_path(spec: Optional[str]) -> click.Path:
@@ -45,7 +48,7 @@ def click_path(spec: Optional[str]) -> click.Path:
45
48
  executable = False
46
49
  exists = False
47
50
  file_okay = True
48
- path_type = pathlib.Path
51
+ path_type = Path
49
52
  readable = True
50
53
  resolve_path = False
51
54
  writable = False
@@ -71,7 +74,7 @@ def click_path(spec: Optional[str]) -> click.Path:
71
74
  elif char == 'p':
72
75
  if 's' in spec:
73
76
  raise ValueError(f'"p" and "s" are mutually exclusive: {spec}')
74
- path_type = pathlib.Path
77
+ path_type = Path
75
78
  elif char == 'r':
76
79
  readable = True
77
80
  elif char == 's':
@@ -97,3 +100,21 @@ def click_path(spec: Optional[str]) -> click.Path:
97
100
  readable=readable,
98
101
  resolve_path=resolve_path,
99
102
  writable=writable)
103
+
104
+
105
+ def compose_decorators(*decorators):
106
+ def wrapped(decorated):
107
+ for dec in reversed(decorators):
108
+ decorated = dec(decorated)
109
+ return decorated
110
+ return wrapped
111
+
112
+
113
+ def make_extra_context_settings() -> dict[str, Any]:
114
+ return ExtraContext.settings(
115
+ formatter_settings=HelpExtraFormatter.settings(
116
+ theme=default_theme.with_(
117
+ invoked_command=Style(bold=True)
118
+ )
119
+ )
120
+ )