click-extended 0.4.0__py3-none-any.whl → 1.0.1__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.
- click_extended/__init__.py +10 -6
- click_extended/classes.py +12 -8
- click_extended/core/__init__.py +10 -0
- click_extended/core/decorators/__init__.py +21 -0
- click_extended/core/decorators/argument.py +227 -0
- click_extended/core/decorators/command.py +93 -0
- click_extended/core/decorators/env.py +155 -0
- click_extended/core/decorators/group.py +96 -0
- click_extended/core/decorators/option.py +347 -0
- click_extended/core/decorators/prompt.py +69 -0
- click_extended/core/decorators/selection.py +155 -0
- click_extended/core/decorators/tag.py +109 -0
- click_extended/core/nodes/__init__.py +21 -0
- click_extended/core/nodes/_root_node.py +1012 -0
- click_extended/core/nodes/argument_node.py +165 -0
- click_extended/core/nodes/child_node.py +555 -0
- click_extended/core/nodes/child_validation_node.py +100 -0
- click_extended/core/nodes/node.py +55 -0
- click_extended/core/nodes/option_node.py +205 -0
- click_extended/core/nodes/parent_node.py +220 -0
- click_extended/core/nodes/validation_node.py +124 -0
- click_extended/core/other/__init__.py +7 -0
- click_extended/core/other/_click_command.py +60 -0
- click_extended/core/other/_click_group.py +246 -0
- click_extended/core/other/_tree.py +491 -0
- click_extended/core/other/context.py +496 -0
- click_extended/decorators/__init__.py +29 -0
- click_extended/decorators/check/__init__.py +57 -0
- click_extended/decorators/check/conflicts.py +149 -0
- click_extended/decorators/check/contains.py +69 -0
- click_extended/decorators/check/dependencies.py +115 -0
- click_extended/decorators/check/divisible_by.py +48 -0
- click_extended/decorators/check/ends_with.py +85 -0
- click_extended/decorators/check/exclusive.py +75 -0
- click_extended/decorators/check/falsy.py +37 -0
- click_extended/decorators/check/is_email.py +43 -0
- click_extended/decorators/check/is_hex_color.py +41 -0
- click_extended/decorators/check/is_hostname.py +47 -0
- click_extended/decorators/check/is_ipv4.py +46 -0
- click_extended/decorators/check/is_ipv6.py +46 -0
- click_extended/decorators/check/is_json.py +40 -0
- click_extended/decorators/check/is_mac_address.py +40 -0
- click_extended/decorators/check/is_negative.py +37 -0
- click_extended/decorators/check/is_non_zero.py +37 -0
- click_extended/decorators/check/is_port.py +39 -0
- click_extended/decorators/check/is_positive.py +37 -0
- click_extended/decorators/check/is_url.py +75 -0
- click_extended/decorators/check/is_uuid.py +40 -0
- click_extended/decorators/check/length.py +68 -0
- click_extended/decorators/check/not_empty.py +49 -0
- click_extended/decorators/check/regex.py +47 -0
- click_extended/decorators/check/requires.py +190 -0
- click_extended/decorators/check/starts_with.py +87 -0
- click_extended/decorators/check/truthy.py +37 -0
- click_extended/decorators/compare/__init__.py +15 -0
- click_extended/decorators/compare/at_least.py +57 -0
- click_extended/decorators/compare/at_most.py +57 -0
- click_extended/decorators/compare/between.py +119 -0
- click_extended/decorators/compare/greater_than.py +183 -0
- click_extended/decorators/compare/less_than.py +183 -0
- click_extended/decorators/convert/__init__.py +31 -0
- click_extended/decorators/convert/convert_angle.py +94 -0
- click_extended/decorators/convert/convert_area.py +123 -0
- click_extended/decorators/convert/convert_bits.py +211 -0
- click_extended/decorators/convert/convert_distance.py +154 -0
- click_extended/decorators/convert/convert_energy.py +155 -0
- click_extended/decorators/convert/convert_power.py +128 -0
- click_extended/decorators/convert/convert_pressure.py +131 -0
- click_extended/decorators/convert/convert_speed.py +122 -0
- click_extended/decorators/convert/convert_temperature.py +89 -0
- click_extended/decorators/convert/convert_time.py +108 -0
- click_extended/decorators/convert/convert_volume.py +218 -0
- click_extended/decorators/convert/convert_weight.py +158 -0
- click_extended/decorators/load/__init__.py +13 -0
- click_extended/decorators/load/load_csv.py +117 -0
- click_extended/decorators/load/load_json.py +61 -0
- click_extended/decorators/load/load_toml.py +47 -0
- click_extended/decorators/load/load_yaml.py +72 -0
- click_extended/decorators/math/__init__.py +37 -0
- click_extended/decorators/math/absolute.py +35 -0
- click_extended/decorators/math/add.py +48 -0
- click_extended/decorators/math/ceil.py +36 -0
- click_extended/decorators/math/clamp.py +51 -0
- click_extended/decorators/math/divide.py +42 -0
- click_extended/decorators/math/floor.py +36 -0
- click_extended/decorators/math/maximum.py +39 -0
- click_extended/decorators/math/minimum.py +39 -0
- click_extended/decorators/math/modulo.py +39 -0
- click_extended/decorators/math/multiply.py +51 -0
- click_extended/decorators/math/normalize.py +76 -0
- click_extended/decorators/math/power.py +39 -0
- click_extended/decorators/math/rounded.py +39 -0
- click_extended/decorators/math/sqrt.py +39 -0
- click_extended/decorators/math/subtract.py +39 -0
- click_extended/decorators/math/to_percent.py +63 -0
- click_extended/decorators/misc/__init__.py +17 -0
- click_extended/decorators/misc/choice.py +139 -0
- click_extended/decorators/misc/confirm_if.py +147 -0
- click_extended/decorators/misc/default.py +95 -0
- click_extended/decorators/misc/deprecated.py +131 -0
- click_extended/decorators/misc/experimental.py +79 -0
- click_extended/decorators/misc/now.py +42 -0
- click_extended/decorators/random/__init__.py +21 -0
- click_extended/decorators/random/random_bool.py +49 -0
- click_extended/decorators/random/random_choice.py +63 -0
- click_extended/decorators/random/random_datetime.py +140 -0
- click_extended/decorators/random/random_float.py +62 -0
- click_extended/decorators/random/random_integer.py +56 -0
- click_extended/decorators/random/random_prime.py +196 -0
- click_extended/decorators/random/random_string.py +77 -0
- click_extended/decorators/random/random_uuid.py +119 -0
- click_extended/decorators/transform/__init__.py +71 -0
- click_extended/decorators/transform/add_prefix.py +58 -0
- click_extended/decorators/transform/add_suffix.py +58 -0
- click_extended/decorators/transform/apply.py +35 -0
- click_extended/decorators/transform/basename.py +44 -0
- click_extended/decorators/transform/dirname.py +44 -0
- click_extended/decorators/transform/expand_vars.py +36 -0
- click_extended/decorators/transform/remove_prefix.py +57 -0
- click_extended/decorators/transform/remove_suffix.py +57 -0
- click_extended/decorators/transform/replace.py +46 -0
- click_extended/decorators/transform/slugify.py +45 -0
- click_extended/decorators/transform/split.py +43 -0
- click_extended/decorators/transform/strip.py +148 -0
- click_extended/decorators/transform/to_case.py +216 -0
- click_extended/decorators/transform/to_date.py +75 -0
- click_extended/decorators/transform/to_datetime.py +83 -0
- click_extended/decorators/transform/to_path.py +274 -0
- click_extended/decorators/transform/to_time.py +77 -0
- click_extended/decorators/transform/to_timestamp.py +114 -0
- click_extended/decorators/transform/truncate.py +47 -0
- click_extended/types.py +1 -1
- click_extended/utils/__init__.py +13 -0
- click_extended/utils/casing.py +169 -0
- click_extended/utils/checks.py +48 -0
- click_extended/utils/dispatch.py +1016 -0
- click_extended/utils/format.py +101 -0
- click_extended/utils/humanize.py +209 -0
- click_extended/utils/naming.py +238 -0
- click_extended/utils/process.py +294 -0
- click_extended/utils/selection.py +267 -0
- click_extended/utils/time.py +46 -0
- {click_extended-0.4.0.dist-info → click_extended-1.0.1.dist-info}/METADATA +100 -29
- click_extended-1.0.1.dist-info/RECORD +149 -0
- click_extended-0.4.0.dist-info/RECORD +0 -10
- {click_extended-0.4.0.dist-info → click_extended-1.0.1.dist-info}/WHEEL +0 -0
- {click_extended-0.4.0.dist-info → click_extended-1.0.1.dist-info}/licenses/AUTHORS.md +0 -0
- {click_extended-0.4.0.dist-info → click_extended-1.0.1.dist-info}/licenses/LICENSE +0 -0
- {click_extended-0.4.0.dist-info → click_extended-1.0.1.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: click_extended
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 1.0.1
|
|
4
4
|
Summary: An extension to Click with additional features like automatic async support, aliasing and a modular decorator system.
|
|
5
5
|
Author-email: Marcus Fredriksson <marcus@marcusfredriksson.com>
|
|
6
6
|
License: MIT License
|
|
@@ -37,6 +37,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
37
37
|
Classifier: Programming Language :: Python :: 3.11
|
|
38
38
|
Classifier: Programming Language :: Python :: 3.12
|
|
39
39
|
Classifier: Programming Language :: Python :: 3.13
|
|
40
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
40
41
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
41
42
|
Classifier: Topic :: System :: Shells
|
|
42
43
|
Classifier: Topic :: Utilities
|
|
@@ -47,6 +48,10 @@ License-File: LICENSE
|
|
|
47
48
|
License-File: AUTHORS.md
|
|
48
49
|
Requires-Dist: click>=8.3.0
|
|
49
50
|
Requires-Dist: python-dotenv>=1.2.1
|
|
51
|
+
Requires-Dist: pyyaml>=6.0.3
|
|
52
|
+
Requires-Dist: email-validator>=2.3.0
|
|
53
|
+
Requires-Dist: python-slugify>=8.0.4
|
|
54
|
+
Requires-Dist: tomli>=2.0.0; python_version < "3.11"
|
|
50
55
|
Provides-Extra: build
|
|
51
56
|
Requires-Dist: build; extra == "build"
|
|
52
57
|
Requires-Dist: twine; extra == "build"
|
|
@@ -59,6 +64,8 @@ Requires-Dist: pylint>=3.0.0; extra == "dev"
|
|
|
59
64
|
Requires-Dist: isort>=5.12.0; extra == "dev"
|
|
60
65
|
Requires-Dist: black>=25.9.0; extra == "dev"
|
|
61
66
|
Requires-Dist: pre-commit>=4.3.0; extra == "dev"
|
|
67
|
+
Requires-Dist: types-PyYAML>=6.0.12.20250915; extra == "dev"
|
|
68
|
+
Requires-Dist: tomli>=2.0.0; extra == "dev"
|
|
62
69
|
Dynamic: license-file
|
|
63
70
|
|
|
64
71
|

|
|
@@ -88,6 +95,7 @@ An extension of the [Click](https://github.com/pallets/click) library with addit
|
|
|
88
95
|
- **Environment Variables**: Built-in support for loading and using environment variables as a data source.
|
|
89
96
|
- **Full Type Support**: Built with type-hinting from the ground up, meaning everything is fully typed.
|
|
90
97
|
- **Improved Errors**: Improved error output like tips, debugging, and more.
|
|
98
|
+
- **Short Flag Concatenation**: Automatically support concatenating short hand flags where `-r -f` is the same as `-rf`.
|
|
91
99
|
|
|
92
100
|
## Installation
|
|
93
101
|
|
|
@@ -116,14 +124,18 @@ def my_function(value: str, count: int):
|
|
|
116
124
|
|
|
117
125
|
if __name__ == "__main__":
|
|
118
126
|
my_function()
|
|
127
|
+
```
|
|
119
128
|
|
|
120
|
-
|
|
121
|
-
|
|
129
|
+
```bash
|
|
130
|
+
$ python cli.py "Hello world"
|
|
131
|
+
Hello world
|
|
132
|
+
```
|
|
122
133
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
134
|
+
```bash
|
|
135
|
+
$ python cli.py "Hello world" --count 3
|
|
136
|
+
Hello world
|
|
137
|
+
Hello world
|
|
138
|
+
Hello world
|
|
127
139
|
```
|
|
128
140
|
|
|
129
141
|
### Basic Command Line Interface
|
|
@@ -146,16 +158,20 @@ def my_function(value: str, count: int):
|
|
|
146
158
|
|
|
147
159
|
if __name__ == "__main__":
|
|
148
160
|
my_group()
|
|
161
|
+
```
|
|
149
162
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
163
|
+
```bash
|
|
164
|
+
$ python cli.py my_function "Hello world"
|
|
165
|
+
Running initialization code...
|
|
166
|
+
Hello world
|
|
167
|
+
```
|
|
153
168
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
169
|
+
```bash
|
|
170
|
+
$ python cli.py my_function "Hello world" --count 3
|
|
171
|
+
Running initialization code...
|
|
172
|
+
Hello world
|
|
173
|
+
Hello world
|
|
174
|
+
Hello world
|
|
159
175
|
```
|
|
160
176
|
|
|
161
177
|
### Using Environment Variables
|
|
@@ -181,21 +197,72 @@ def my_function_2(api_key: str):
|
|
|
181
197
|
|
|
182
198
|
if __name__ == "__main__":
|
|
183
199
|
my_group()
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
$ python cli.py my_function_1
|
|
204
|
+
The API key is: None
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
$ API_KEY=api-key python cli.py my_function_1
|
|
209
|
+
The API key is: api-key
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
$ python cli.py my_function_2
|
|
214
|
+
ProcessError (my_function_2): Required environment variable 'API_KEY' is not set.
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
$ API_KEY=api-key python cli.py my_function_2
|
|
219
|
+
The API key is: api-key
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### Load CSV Data
|
|
223
|
+
|
|
224
|
+
```python
|
|
225
|
+
import pandas as pd
|
|
226
|
+
from click_extended import command, argument
|
|
227
|
+
from click_extended.decorators import to_path, load_csv
|
|
228
|
+
|
|
229
|
+
@command()
|
|
230
|
+
@argument("file", param="data")
|
|
231
|
+
@to_path(extensions=["csv"], exists=True)
|
|
232
|
+
@load_csv()
|
|
233
|
+
def my_command(data: dict[str, Any], *args: Any, **kwargs: Any) -> None:
|
|
234
|
+
df = pd.DataFrame(data)
|
|
235
|
+
print(df.head())
|
|
236
|
+
```
|
|
184
237
|
|
|
185
|
-
|
|
186
|
-
# The API key is: None
|
|
238
|
+
_Note: `pandas` is not installed in this library and must be installed manually due to size._
|
|
187
239
|
|
|
188
|
-
|
|
189
|
-
# The API key is: api-key
|
|
240
|
+
### Pre-Built Children
|
|
190
241
|
|
|
191
|
-
|
|
192
|
-
# ProcessError (my_function_2): Required environment variable 'API_KEY' is not set.
|
|
242
|
+
This library includes a vast number of pre-built children, everything from checking values to transforming values.
|
|
193
243
|
|
|
194
|
-
|
|
195
|
-
|
|
244
|
+
```python
|
|
245
|
+
from click_extended import command, argument, option
|
|
246
|
+
from click_extended.decorators import to_snake_case, strip, is_email, minimum, dependencies
|
|
247
|
+
|
|
248
|
+
@command()
|
|
249
|
+
@dependencies("username", "email", "password")
|
|
250
|
+
@argument("username")
|
|
251
|
+
@to_snake_case()
|
|
252
|
+
@strip()
|
|
253
|
+
@option("email")
|
|
254
|
+
@is_email()
|
|
255
|
+
@option("password")
|
|
256
|
+
@minimum(8)
|
|
257
|
+
def create_account(username: str, email: str, password: str) -> None:
|
|
258
|
+
print("Username:", username)
|
|
259
|
+
print("Email:", email)
|
|
260
|
+
print("Password:", password)
|
|
196
261
|
```
|
|
197
262
|
|
|
198
|
-
### Custom
|
|
263
|
+
### Custom Nodes
|
|
264
|
+
|
|
265
|
+
If the library does not include a decorator you need, you can easily create your own. Read more about creating your own [children](./docs/core/CHILD_NODE.md), [validators](./docs/core/VALIDATION_NODE.md), [child validators](./docs/core/CHILD_VALIDATION_NODE.md) or [parents](./docs/core/PARENT_NODE.md).
|
|
199
266
|
|
|
200
267
|
```python
|
|
201
268
|
from typing import Any
|
|
@@ -205,7 +272,7 @@ from click_extended.classes import ChildNode
|
|
|
205
272
|
from click_extended.types import Context, Decorator
|
|
206
273
|
|
|
207
274
|
class MyCustomChild(ChildNode):
|
|
208
|
-
def
|
|
275
|
+
def handle_string(
|
|
209
276
|
self,
|
|
210
277
|
value: str,
|
|
211
278
|
context: Context,
|
|
@@ -236,12 +303,16 @@ def my_function(value: str):
|
|
|
236
303
|
|
|
237
304
|
if __name__ == "__main__":
|
|
238
305
|
my_group()
|
|
306
|
+
```
|
|
239
307
|
|
|
240
|
-
|
|
241
|
-
|
|
308
|
+
```bash
|
|
309
|
+
$ python cli.py my_function valid
|
|
310
|
+
The value 'VALID' should be uppercase.
|
|
311
|
+
```
|
|
242
312
|
|
|
243
|
-
|
|
244
|
-
|
|
313
|
+
```bash
|
|
314
|
+
$ python cli.py my_function invalid
|
|
315
|
+
ValueError (my_function): "The value 'invalid' is not valid"
|
|
245
316
|
```
|
|
246
317
|
|
|
247
318
|
## Documentation
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
click_extended/__init__.py,sha256=wTarCHBxMz59fe0vCTyq8RiN0COooJ892C0N2OuPLLQ,640
|
|
2
|
+
click_extended/classes.py,sha256=SdwglQ7O5ahjYeVnaM9_hCU14BYZBv8C0ZjWQIo7A_I,837
|
|
3
|
+
click_extended/errors.py,sha256=tkvAXs4oUZ8SFgX37KhYrHAlsxmOGrSFLIezCH9NDQI,13897
|
|
4
|
+
click_extended/types.py,sha256=0YT4QN269H-01RVxDGSpMT_hJm8cTcONonpX4_YxJlg,238
|
|
5
|
+
click_extended/core/__init__.py,sha256=oTJS5M1OAwRQ57aMcWV7v2D2kHjCn8zTOpPEIRpTLKM,446
|
|
6
|
+
click_extended/core/decorators/__init__.py,sha256=AxqTVsGJcCG5d60RzffSh4cqA4U_okaMl3hlObqMOy4,656
|
|
7
|
+
click_extended/core/decorators/argument.py,sha256=MzkMkkayR7XeNNtbHstj1PpFnrCD-VCFAE3SnpO7OMY,7201
|
|
8
|
+
click_extended/core/decorators/command.py,sha256=82rwi8PIMGgOagFoNISOQkdEebKxvS9A_RHV80shUzI,2803
|
|
9
|
+
click_extended/core/decorators/env.py,sha256=DgbQsOZ2De-Ur5hxR8hzN3-3T16K3FLsoZHS2EsKK6c,4777
|
|
10
|
+
click_extended/core/decorators/group.py,sha256=_bammCVi_7vsw7YgSUTQuQp6XFUHy7knNcOmyg6DiPc,2859
|
|
11
|
+
click_extended/core/decorators/option.py,sha256=E7NzM7dNtICh9YcAvYPvJkdvuxKDNjCIFl9a8ZyhXWQ,11810
|
|
12
|
+
click_extended/core/decorators/prompt.py,sha256=QwySQ6ZK0j0iL_jlwH3AU0U4G1X3MKAJ8_TysEXxFX8,1735
|
|
13
|
+
click_extended/core/decorators/selection.py,sha256=5cjWpAwReu8EY0mkziwpqhi_T5ucIlAPx1p-t3MkGJQ,5589
|
|
14
|
+
click_extended/core/decorators/tag.py,sha256=395e6GN59QBj-L0NSBPynQOX3_2LAOIXkj8XKNXrRPs,3055
|
|
15
|
+
click_extended/core/nodes/__init__.py,sha256=jSsKTiHPUpqXdk54cRXDotT0YMmVGezIIb3nQ0rcWko,737
|
|
16
|
+
click_extended/core/nodes/_root_node.py,sha256=PitK6GT7LPYugxPFdVO6blG0-mZV9S2apUupgWCsYI0,43060
|
|
17
|
+
click_extended/core/nodes/argument_node.py,sha256=gqG4HTDR40Xru_U_beKsbjVtLtwmPKfwwAUmcf5-1iQ,5284
|
|
18
|
+
click_extended/core/nodes/child_node.py,sha256=yIuXmUzdXN0EToR9ohBRvHFBriSZ-xaLkv7P27PbTrA,17095
|
|
19
|
+
click_extended/core/nodes/child_validation_node.py,sha256=p4ODRpW-Q-aQB0zlbNAeLahFAcuAaMLPtZl4r0ywmk0,3301
|
|
20
|
+
click_extended/core/nodes/node.py,sha256=Q5OgaSNhz1dAIcYNDQOaAS2eCdu9XMMyDA5lXfZbY4E,1602
|
|
21
|
+
click_extended/core/nodes/option_node.py,sha256=fCYrnW846mz1aDyf9sTQAnuIYUGd5g6XyUN6aBMIWgE,7055
|
|
22
|
+
click_extended/core/nodes/parent_node.py,sha256=x526r7XjfsUypsB1N-5aXjEbP2d06eLF30G6IszxV3w,7352
|
|
23
|
+
click_extended/core/nodes/validation_node.py,sha256=9X_dBbr1BB-OYRxnGsM8CoKRbKT1MuQ29Injtf_Iu_E,4020
|
|
24
|
+
click_extended/core/other/__init__.py,sha256=xZl7jM1Wud-g2c0l-CQYSMNwsJqwNwFDLE8FGL57XjA,155
|
|
25
|
+
click_extended/core/other/_click_command.py,sha256=NR7e-GyKiqyVJC8X5NjRXz5ehsYl9axVIxZCSejzUg4,1738
|
|
26
|
+
click_extended/core/other/_click_group.py,sha256=BoEQoyx13n27Qy1-h_Dkaie68MlyPClIVB8cNtfPGdY,7714
|
|
27
|
+
click_extended/core/other/_tree.py,sha256=3tRivUtKbMst_oF1uICvl7ufRotSVtISGXkBIui09l8,16081
|
|
28
|
+
click_extended/core/other/context.py,sha256=KrXfDGoVV_xuIv6fFskF0hHtWDyRDETWoSXw24GxYs8,14619
|
|
29
|
+
click_extended/decorators/__init__.py,sha256=BzOreglycbxGITsWLSB3VkN8e37F-ADYlGOWoO1aO7A,1142
|
|
30
|
+
click_extended/decorators/check/__init__.py,sha256=WKwRFBWFQHxA69DcHgO23fBZfLRzM8N9uUlkrl7UCS4,2180
|
|
31
|
+
click_extended/decorators/check/conflicts.py,sha256=qnu4k9uAWWFkzuOUXWtDS6M8VlIjzfEAH3m4qLUdwH8,4557
|
|
32
|
+
click_extended/decorators/check/contains.py,sha256=I5W3qhxq7LAMbJbgQcGuwjys1EojP_xgIw9lLwmGnlU,2066
|
|
33
|
+
click_extended/decorators/check/dependencies.py,sha256=nasNew46E0qZPW2w4T7pOP3XzmGFWVhaJvanWV82ykE,3783
|
|
34
|
+
click_extended/decorators/check/divisible_by.py,sha256=8Y2uom03nfCTXPhKbta5cSrXuyh_hSRqsY--VPqlA1o,1104
|
|
35
|
+
click_extended/decorators/check/ends_with.py,sha256=O3b0ybcQcWEE4SqXis8J4GQfEOBkfXj0KF1yj1Q-Xhk,2529
|
|
36
|
+
click_extended/decorators/check/exclusive.py,sha256=LxhL8NwYWH1U2BGlUBwYKVpkSj7OLE9wX7-8gXgPIIc,2276
|
|
37
|
+
click_extended/decorators/check/falsy.py,sha256=kI_Ycg0Lwsg7nlGCnCvF2BHMFypHf8_AAeLDIzkUvyY,737
|
|
38
|
+
click_extended/decorators/check/is_email.py,sha256=Rp5DT-JDhdo_pCdwtGfVs6NOC_d-LcCgo4o2wf9UbAw,1012
|
|
39
|
+
click_extended/decorators/check/is_hex_color.py,sha256=XM-Ajvojh4YL6rMpWEh_WRUE7bjfbNxf1hNl2IZ2nSE,940
|
|
40
|
+
click_extended/decorators/check/is_hostname.py,sha256=yEHEx1dMRuYdClmBy8jdz-a1TICJfPY3hXYDym9B6c0,1110
|
|
41
|
+
click_extended/decorators/check/is_ipv4.py,sha256=Gk5Gf08i-RIQrpkvFtI9bHX5MVgxA30pEO3EJxjf-6g,1105
|
|
42
|
+
click_extended/decorators/check/is_ipv6.py,sha256=8TRHsHu5p6K-G-v5rWAQTH_H9ChCU6vFzFMZr3sq_IE,1105
|
|
43
|
+
click_extended/decorators/check/is_json.py,sha256=5GEYzvXnO5pVc_zbbHVEW3l-EFeVAlXvg6WTCIyL_hk,847
|
|
44
|
+
click_extended/decorators/check/is_mac_address.py,sha256=s-bvJ1uNmMwsNS4EuRFCsFwZ00TFnJ-1dEcsdHwPH8o,999
|
|
45
|
+
click_extended/decorators/check/is_negative.py,sha256=UYLNUOmIqkXnL6wmxQUyGnFXv8cUn0CuJ5fkdm4kpWs,791
|
|
46
|
+
click_extended/decorators/check/is_non_zero.py,sha256=_p2pZu4p_S61GtxeIjrLXjB_8jqEzOAuXatWJ0lUAjg,781
|
|
47
|
+
click_extended/decorators/check/is_port.py,sha256=KYRF5GKLlsMcBDwMryO3aDyz4w6B_fCHphbJ8PQ8pUg,858
|
|
48
|
+
click_extended/decorators/check/is_positive.py,sha256=pLqW1evzX0p8rJSeNKpK7F6EBBsqG8omMRA9kQjAjpo,791
|
|
49
|
+
click_extended/decorators/check/is_url.py,sha256=SLFO4v70CbuxOLr2zPMwH-CU8XqS1fa_XQLjlvTinME,2201
|
|
50
|
+
click_extended/decorators/check/is_uuid.py,sha256=QmCpQ6k7Z6zX0cICySqhKFr5wv0jkbGL7e1AA_jeFLw,844
|
|
51
|
+
click_extended/decorators/check/length.py,sha256=guenyyVsoXHQcj0iZqqLcPxhujYTL6XKgBmgBmoG_Ls,1930
|
|
52
|
+
click_extended/decorators/check/not_empty.py,sha256=TdznbvzhYJlWm2SoSxTTcpLT0SGLQMkXx8TTUhIqM5w,1125
|
|
53
|
+
click_extended/decorators/check/regex.py,sha256=Vf6Tgx1gzmjKgWIT0nPtaFNv2taTdvVDXOWqmZg4Pm0,1066
|
|
54
|
+
click_extended/decorators/check/requires.py,sha256=t_K4MIuli3oNkeHaNjIIEvwnwDop7bCrtKovL0HHz2c,5644
|
|
55
|
+
click_extended/decorators/check/starts_with.py,sha256=0XDhJC9_2-BgDeb2ASnHWPhkXYFizHy47ns0M6dRjKg,2561
|
|
56
|
+
click_extended/decorators/check/truthy.py,sha256=rfmQvHn-AN-y6knopta5PnYYvzgFVOkM1TqxDUI-nfw,748
|
|
57
|
+
click_extended/decorators/compare/__init__.py,sha256=Tteuvg7jh_kgrGtk8WgxvzVec4HctoJkYxHvrdCwxIw,503
|
|
58
|
+
click_extended/decorators/compare/at_least.py,sha256=88swu0FOEMeeOZSpjRwrrDCEmG7I6ob1eOKHk1DWxu0,1508
|
|
59
|
+
click_extended/decorators/compare/at_most.py,sha256=chucAAnqIpaeRtAe26LJuFqu8XD1DAcdlMnuuaZm67k,1499
|
|
60
|
+
click_extended/decorators/compare/between.py,sha256=gXV3SXhgoKQqPQl7JvxM4SIUxPzYQmQGowg6iMXvllw,2916
|
|
61
|
+
click_extended/decorators/compare/greater_than.py,sha256=O-oL8pjX7ZG7nAXqCE4wGpmWQ_i7FuX2Rf5KkXRNluw,5072
|
|
62
|
+
click_extended/decorators/compare/less_than.py,sha256=wW3NT9IeeR_Z-kqYBCaZmWLBKbGptQZGjpla4yoaTqg,5103
|
|
63
|
+
click_extended/decorators/convert/__init__.py,sha256=nhZUTy1-5XGVea3JrHxavKNNErr-a_wfgV4lP-PRMQ4,1279
|
|
64
|
+
click_extended/decorators/convert/convert_angle.py,sha256=yy8SBhEuhnr0zp_Aq0wyBcKpLi-nB0geiUvC-RBNNjU,2090
|
|
65
|
+
click_extended/decorators/convert/convert_area.py,sha256=s9K2PnovkN67ucBUiHn2ifu8FqhgRWRitrWp4EJBdts,2874
|
|
66
|
+
click_extended/decorators/convert/convert_bits.py,sha256=PBbmuz4fPHE-dGjZimmtuw2nwvBhqJn2b7hb0FDatv8,5016
|
|
67
|
+
click_extended/decorators/convert/convert_distance.py,sha256=nO0wHe8TzDaqBDfG0_1A3TjcgYXt51at11OEOs2opY0,3368
|
|
68
|
+
click_extended/decorators/convert/convert_energy.py,sha256=xSviI-pA3DB4AX3qk3uHUD6e_O6BO6TnWEWok2SGEvU,3638
|
|
69
|
+
click_extended/decorators/convert/convert_power.py,sha256=2piQOu7aoMdR4yrJs0strV0FYu7FrzdCthmg0nsww3M,3164
|
|
70
|
+
click_extended/decorators/convert/convert_pressure.py,sha256=79as0rHoH-9chsDS-rsPE6vuawmRv_JDFrzXS2zRm2A,3064
|
|
71
|
+
click_extended/decorators/convert/convert_speed.py,sha256=JMIqN5VOeH3nR_1KdPiwLYcarjOvivM6QswAGoGI6xg,3051
|
|
72
|
+
click_extended/decorators/convert/convert_temperature.py,sha256=X9E3rmbm_La6c34k_gu0F0TDXJYLzGzeuVZxNVkd3WE,2701
|
|
73
|
+
click_extended/decorators/convert/convert_time.py,sha256=CroNWzUszlL_GRnvPRZgeX0DNKZx3ozIKn-TaVegr0g,3053
|
|
74
|
+
click_extended/decorators/convert/convert_volume.py,sha256=wEqzlrt0BVIwmX3YxsW2cVHNoPZzpI9TcuiZhAxHqYI,5195
|
|
75
|
+
click_extended/decorators/convert/convert_weight.py,sha256=Qw_UKcRe2nwKpfcox7Hyu3A4x0cMnxiNZkpZEeSsOxU,3809
|
|
76
|
+
click_extended/decorators/load/__init__.py,sha256=FEv9z-MAF39GfFgrgSHXpXnmnNn6Bl4g3odmnelAwEk,408
|
|
77
|
+
click_extended/decorators/load/load_csv.py,sha256=3tO7Pl_cDKA1jO8o9Xnh0-kmGAFmA4NpAPS_8LCIW0c,4007
|
|
78
|
+
click_extended/decorators/load/load_json.py,sha256=e4P9aa9w1Z1FVrTDdZf9dIJI99hmL2HV89y7u7A_als,1672
|
|
79
|
+
click_extended/decorators/load/load_toml.py,sha256=6rksM5jbKJcqLshLNX7zZ2vPTgemPdbA0fLK1BXCru0,1194
|
|
80
|
+
click_extended/decorators/load/load_yaml.py,sha256=yST4rurmUgVq_BfUg7Gt6bBljp1dNBVYcI6qhlNN0KE,2230
|
|
81
|
+
click_extended/decorators/math/__init__.py,sha256=lt5B4rGexQzJ8u3XM2u6yDRxN5k23WqsRQrilqXoyrM,1245
|
|
82
|
+
click_extended/decorators/math/absolute.py,sha256=S5IB6b9iyEfTkFpvePhDietzr4b238Eishg4vi3hdFQ,730
|
|
83
|
+
click_extended/decorators/math/add.py,sha256=vbIAd6FMXGEJdkXdUzObSAKOlzm0jF2vfe8AwGBcGJE,962
|
|
84
|
+
click_extended/decorators/math/ceil.py,sha256=2Jkl4sdoQlepa9p9v5OyRvK2ZPPQk-MpYgEqGuyjWQ8,724
|
|
85
|
+
click_extended/decorators/math/clamp.py,sha256=xImm-OtQcUiojieLWNokDIcqzZtyM9zzKevzlbcIHwY,1262
|
|
86
|
+
click_extended/decorators/math/divide.py,sha256=8nqQ0cfk-zR7TmLRr-akT4Y1m5-o_uT1XjnpG0tIWRQ,878
|
|
87
|
+
click_extended/decorators/math/floor.py,sha256=LxnAjDnS2EXOMJ7TELdxtuTan1sJaChzoeYEtOzrTZY,722
|
|
88
|
+
click_extended/decorators/math/maximum.py,sha256=3HTUctf1-jkBxZfLNTcci-vZaLizxGi8ttrBSENDbho,864
|
|
89
|
+
click_extended/decorators/math/minimum.py,sha256=IogP3MyEltbbzMJrBCuqmYJsmDCdHGB8uG_L6mJ7IR4,854
|
|
90
|
+
click_extended/decorators/math/modulo.py,sha256=Tolxf3G1x7vfyUpL0ouPzIzkSc_KmfqR879apAQvBdA,796
|
|
91
|
+
click_extended/decorators/math/multiply.py,sha256=hur7kZUgoHUt_DG_GHLu3KQUSzUJZK2q7kngS_75xvY,1113
|
|
92
|
+
click_extended/decorators/math/normalize.py,sha256=DiCZe60rGoPK3uut_9l1Z_B4fSUTdb9VKaV-klONtSg,1941
|
|
93
|
+
click_extended/decorators/math/power.py,sha256=YtlC3fSvGi97fGj0yZ9pWEuAg6-2S9jqlBBI3eVU7QY,774
|
|
94
|
+
click_extended/decorators/math/rounded.py,sha256=bHYZQbtd5zRCd3BOEnjxTGdFAmQAL5l8dynS39-OlBs,865
|
|
95
|
+
click_extended/decorators/math/sqrt.py,sha256=CWZoQpVw2lbP_LNeg-tWW8fz9VEHTX8eQNPNuDVoTcg,834
|
|
96
|
+
click_extended/decorators/math/subtract.py,sha256=A7TMByTUH3coSEe7iRN9NkHW2mv47kufb1H1adomG4A,806
|
|
97
|
+
click_extended/decorators/math/to_percent.py,sha256=39vY13u7Z-pyob1vCoPBDy10FqJasJTVzHcrpTH6ERQ,1374
|
|
98
|
+
click_extended/decorators/misc/__init__.py,sha256=TDLrR2mZj_oqAcWEqB_C19Hxn8ClrZW2CbuTmJNRblU,553
|
|
99
|
+
click_extended/decorators/misc/choice.py,sha256=RTVVjl0YUZ2Ti4j6yoHkUpJ0aqNwcnc3rTfmCVr0y0U,4354
|
|
100
|
+
click_extended/decorators/misc/confirm_if.py,sha256=Rf3HcVVTRqz3sGSiPT02yz65_L351Fzkuw2V6pljlmY,4786
|
|
101
|
+
click_extended/decorators/misc/default.py,sha256=TjZJKmHEqNThzyD6hOjQy2_QgHRenKILnAwfV1V5KAw,2473
|
|
102
|
+
click_extended/decorators/misc/deprecated.py,sha256=Scz4Vh5aHv2NlU5n2muEQfeYOJMuN5aYt_oa3e-iNWE,3924
|
|
103
|
+
click_extended/decorators/misc/experimental.py,sha256=wD6Jrdm-tJ6_O1kXcQg5s4cU6QH9jvyOyQnJCYBZ2Gs,2046
|
|
104
|
+
click_extended/decorators/misc/now.py,sha256=R-oAOQ8Sr_483ddNTzlVJV4XLYlrYHLG-KhiIZSZtTU,1084
|
|
105
|
+
click_extended/decorators/random/__init__.py,sha256=KH5itAOoTWzHajxxx0M_Gc2bH7f2vIQnt7dVCS0POyg,836
|
|
106
|
+
click_extended/decorators/random/random_bool.py,sha256=ah9hFJg3Bp1HnAwJ442yv5U2WaK8ZBsUhWr4s9jQf9M,1275
|
|
107
|
+
click_extended/decorators/random/random_choice.py,sha256=R4NU50VsHJBLHHJrdu341yAt9Olfh1sUXashkuMedDs,1884
|
|
108
|
+
click_extended/decorators/random/random_datetime.py,sha256=0IwieYAEqv351I_J2VV0ymh-v4wyGQOsahwEtRGAN-Q,4411
|
|
109
|
+
click_extended/decorators/random/random_float.py,sha256=qd8xuzGaYc9hXRxs_gZ0uc2Kax17ZyAIKJZgl85LUuk,1763
|
|
110
|
+
click_extended/decorators/random/random_integer.py,sha256=3CvBxumTI_jq5dHyYDXaAtmAosZ_RjoSlaQo8UbRidY,1516
|
|
111
|
+
click_extended/decorators/random/random_prime.py,sha256=uborCrRP30kO72Qup0l3gsjgLnqGFeIGIEaca1Rffh4,3948
|
|
112
|
+
click_extended/decorators/random/random_string.py,sha256=GIXbsr-L3ePx9MofnrbSjAW88dMNPP5YRuVsbAc5OrM,2081
|
|
113
|
+
click_extended/decorators/random/random_uuid.py,sha256=NUioLG0NjBLkFUWHHeddkewS4AuaRFPRzMLb236_w_I,4434
|
|
114
|
+
click_extended/decorators/transform/__init__.py,sha256=YP8GxEvf7ZYv6qW4YsAR3t_YSif2QGxNSgpGZnucpDE,2235
|
|
115
|
+
click_extended/decorators/transform/add_prefix.py,sha256=rWnwigb_HnwR0X-i3ybBprxFNGCTuUSNyouP5aOI50k,1467
|
|
116
|
+
click_extended/decorators/transform/add_suffix.py,sha256=ji83-yC-aALV-m80AhHqgtxoUuTdIm2_iXhBT03fpB0,1463
|
|
117
|
+
click_extended/decorators/transform/apply.py,sha256=cZSlErFH5BkFqlEA7r9rhq563nj65vA96mGL50wSRoE,855
|
|
118
|
+
click_extended/decorators/transform/basename.py,sha256=9ZpsLkMMUlJxIVqmif6cMbWvME-CctSR84A8PWeYxEk,1043
|
|
119
|
+
click_extended/decorators/transform/dirname.py,sha256=84krZ6GqZOuXlmCn4xpeGBTw20wVrR22smQO6I5Cn3U,1057
|
|
120
|
+
click_extended/decorators/transform/expand_vars.py,sha256=5RTP_DJpGi1ioQVG2PEjys1OMNyJKeDpHzhQZXLgF24,753
|
|
121
|
+
click_extended/decorators/transform/remove_prefix.py,sha256=WUPFnm3KvqAcJCCF2lR_4o6JiyBPWnpM_9Oz2AJyCzY,1433
|
|
122
|
+
click_extended/decorators/transform/remove_suffix.py,sha256=koS0wVCj6_ekWmsvaNn3igIsUTRoP1Hwz7cu_x8RI-A,1426
|
|
123
|
+
click_extended/decorators/transform/replace.py,sha256=X-QU8rWf7VCY5mbgrQ4wYjs5RlO9cgUJzPSbAmn-5eg,1138
|
|
124
|
+
click_extended/decorators/transform/slugify.py,sha256=RNU-eGViePyFVYWfBEfBHd5gvFSE75NZ-189Dy40XSs,1008
|
|
125
|
+
click_extended/decorators/transform/split.py,sha256=iKG29M-azZ01NyCnpXm6T1cd2Elot3Q3lzEBFdPV1Ro,1039
|
|
126
|
+
click_extended/decorators/transform/strip.py,sha256=2yzL_JP3hG9e_IJ2AhQ6VErJ6jkphtjz9V7pTzhfZCM,3863
|
|
127
|
+
click_extended/decorators/transform/to_case.py,sha256=8rmmrybk3iJ8DI-WJZLyIqc6QzKPVjaehUfbuDdrOrM,3966
|
|
128
|
+
click_extended/decorators/transform/to_date.py,sha256=tFyWpJxqUbKlJjnWvo36_CuXjTGEkWagYlh8qXNzAhM,2140
|
|
129
|
+
click_extended/decorators/transform/to_datetime.py,sha256=4sWZxK5AdkbdazcC8nwVtxHEGHhnPXaeHYSUxfpmbn4,2626
|
|
130
|
+
click_extended/decorators/transform/to_path.py,sha256=zfC3scNbZJng6XVrnT-j0iZRoawgh4Ahd0qQ8xCz_rE,9525
|
|
131
|
+
click_extended/decorators/transform/to_time.py,sha256=fVUBU6d_D0wU-lkZ-PWW1qzLzEpi4kV7pOOSV8qS39I,2162
|
|
132
|
+
click_extended/decorators/transform/to_timestamp.py,sha256=k16cpcsOYRww1CEV0TF8l2EGM2_gZdQkXayPL-Qkc6w,3320
|
|
133
|
+
click_extended/decorators/transform/truncate.py,sha256=nUEsmgKIUcWaMArnLNTlUQb1te9ERQPylE9rvWHZ_i0,1100
|
|
134
|
+
click_extended/utils/__init__.py,sha256=Pqd6eGsDTbQ2PNR8nZlsI1KbgrU59u74vdPPmDY4FVA,348
|
|
135
|
+
click_extended/utils/casing.py,sha256=akduSkqOl02VLea-sEXgkH-KItpGlQYrpghGVyJDMn0,5608
|
|
136
|
+
click_extended/utils/checks.py,sha256=bdCqnCpWcThOJPaSeZXYQoZFSGUXVaYyLOWjJvW0BNA,1293
|
|
137
|
+
click_extended/utils/dispatch.py,sha256=LXMnbOaX96rgKdxM3yheZmRhI3zMwKdUKzDV3HVzw5U,32777
|
|
138
|
+
click_extended/utils/format.py,sha256=z20xAaiIgMbjIIxfMJpC2_aOC02nhxwHGynFJ8M9EDA,3480
|
|
139
|
+
click_extended/utils/humanize.py,sha256=8x6BqSqWdQLPQSI1SAvFv-_vxBw3wVFH9qpcw2C87tc,7193
|
|
140
|
+
click_extended/utils/naming.py,sha256=kNmzOqidgZZ1dE5aMYrxpWt4VwcLuEiFunpumpfHuZU,7171
|
|
141
|
+
click_extended/utils/process.py,sha256=sU3ZCMjBgjKcDnTRLKPdQ_TAjk0AT7Q8SatagD0JyHA,9729
|
|
142
|
+
click_extended/utils/selection.py,sha256=_OQC88pGPUh29boxmS5ugXEi9jZGqAG180S27PeQaj0,9875
|
|
143
|
+
click_extended/utils/time.py,sha256=H5m5caIEau_1GHkiYgKL_LcTtVdw2TkFVbkqJu7A9rQ,1067
|
|
144
|
+
click_extended-1.0.1.dist-info/licenses/AUTHORS.md,sha256=NkShPinjqtnRDQVRyVnfJuOGM56sejauE3WRoYCcbtw,132
|
|
145
|
+
click_extended-1.0.1.dist-info/licenses/LICENSE,sha256=gjO8hzM4mFSBXFikktaXVSgmXGcre91_GPJ-E_yP56E,1075
|
|
146
|
+
click_extended-1.0.1.dist-info/METADATA,sha256=2afilQ2XKHdUMPsZR6_-7Cv1mJW7o8UvKyeYvVS8BbY,10762
|
|
147
|
+
click_extended-1.0.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
148
|
+
click_extended-1.0.1.dist-info/top_level.txt,sha256=2G3bm6tCNv80okRm773jKTk-_z1ElY-seaozZrn_TxA,15
|
|
149
|
+
click_extended-1.0.1.dist-info/RECORD,,
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
click_extended/__init__.py,sha256=WC8SbG5_xnIKiEgdnTNWBR03hbXlJNF0FEz5gZyNfag,423
|
|
2
|
-
click_extended/classes.py,sha256=6qc3cY0iS4WS5jQkKwcQCOYn_jl7t4j8DzykqzRCURw,576
|
|
3
|
-
click_extended/errors.py,sha256=tkvAXs4oUZ8SFgX37KhYrHAlsxmOGrSFLIezCH9NDQI,13897
|
|
4
|
-
click_extended/types.py,sha256=ZYRHjA_wWiLcZ80AYwiVw-kEaHTKSWHKozfPEVay_WE,232
|
|
5
|
-
click_extended-0.4.0.dist-info/licenses/AUTHORS.md,sha256=NkShPinjqtnRDQVRyVnfJuOGM56sejauE3WRoYCcbtw,132
|
|
6
|
-
click_extended-0.4.0.dist-info/licenses/LICENSE,sha256=gjO8hzM4mFSBXFikktaXVSgmXGcre91_GPJ-E_yP56E,1075
|
|
7
|
-
click_extended-0.4.0.dist-info/METADATA,sha256=ffz3zK1urIlLLYS10HMgXAy4_-kkqOLPWXmwmu-roIU,8860
|
|
8
|
-
click_extended-0.4.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
9
|
-
click_extended-0.4.0.dist-info/top_level.txt,sha256=2G3bm6tCNv80okRm773jKTk-_z1ElY-seaozZrn_TxA,15
|
|
10
|
-
click_extended-0.4.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|