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.
Files changed (149) hide show
  1. click_extended/__init__.py +10 -6
  2. click_extended/classes.py +12 -8
  3. click_extended/core/__init__.py +10 -0
  4. click_extended/core/decorators/__init__.py +21 -0
  5. click_extended/core/decorators/argument.py +227 -0
  6. click_extended/core/decorators/command.py +93 -0
  7. click_extended/core/decorators/env.py +155 -0
  8. click_extended/core/decorators/group.py +96 -0
  9. click_extended/core/decorators/option.py +347 -0
  10. click_extended/core/decorators/prompt.py +69 -0
  11. click_extended/core/decorators/selection.py +155 -0
  12. click_extended/core/decorators/tag.py +109 -0
  13. click_extended/core/nodes/__init__.py +21 -0
  14. click_extended/core/nodes/_root_node.py +1012 -0
  15. click_extended/core/nodes/argument_node.py +165 -0
  16. click_extended/core/nodes/child_node.py +555 -0
  17. click_extended/core/nodes/child_validation_node.py +100 -0
  18. click_extended/core/nodes/node.py +55 -0
  19. click_extended/core/nodes/option_node.py +205 -0
  20. click_extended/core/nodes/parent_node.py +220 -0
  21. click_extended/core/nodes/validation_node.py +124 -0
  22. click_extended/core/other/__init__.py +7 -0
  23. click_extended/core/other/_click_command.py +60 -0
  24. click_extended/core/other/_click_group.py +246 -0
  25. click_extended/core/other/_tree.py +491 -0
  26. click_extended/core/other/context.py +496 -0
  27. click_extended/decorators/__init__.py +29 -0
  28. click_extended/decorators/check/__init__.py +57 -0
  29. click_extended/decorators/check/conflicts.py +149 -0
  30. click_extended/decorators/check/contains.py +69 -0
  31. click_extended/decorators/check/dependencies.py +115 -0
  32. click_extended/decorators/check/divisible_by.py +48 -0
  33. click_extended/decorators/check/ends_with.py +85 -0
  34. click_extended/decorators/check/exclusive.py +75 -0
  35. click_extended/decorators/check/falsy.py +37 -0
  36. click_extended/decorators/check/is_email.py +43 -0
  37. click_extended/decorators/check/is_hex_color.py +41 -0
  38. click_extended/decorators/check/is_hostname.py +47 -0
  39. click_extended/decorators/check/is_ipv4.py +46 -0
  40. click_extended/decorators/check/is_ipv6.py +46 -0
  41. click_extended/decorators/check/is_json.py +40 -0
  42. click_extended/decorators/check/is_mac_address.py +40 -0
  43. click_extended/decorators/check/is_negative.py +37 -0
  44. click_extended/decorators/check/is_non_zero.py +37 -0
  45. click_extended/decorators/check/is_port.py +39 -0
  46. click_extended/decorators/check/is_positive.py +37 -0
  47. click_extended/decorators/check/is_url.py +75 -0
  48. click_extended/decorators/check/is_uuid.py +40 -0
  49. click_extended/decorators/check/length.py +68 -0
  50. click_extended/decorators/check/not_empty.py +49 -0
  51. click_extended/decorators/check/regex.py +47 -0
  52. click_extended/decorators/check/requires.py +190 -0
  53. click_extended/decorators/check/starts_with.py +87 -0
  54. click_extended/decorators/check/truthy.py +37 -0
  55. click_extended/decorators/compare/__init__.py +15 -0
  56. click_extended/decorators/compare/at_least.py +57 -0
  57. click_extended/decorators/compare/at_most.py +57 -0
  58. click_extended/decorators/compare/between.py +119 -0
  59. click_extended/decorators/compare/greater_than.py +183 -0
  60. click_extended/decorators/compare/less_than.py +183 -0
  61. click_extended/decorators/convert/__init__.py +31 -0
  62. click_extended/decorators/convert/convert_angle.py +94 -0
  63. click_extended/decorators/convert/convert_area.py +123 -0
  64. click_extended/decorators/convert/convert_bits.py +211 -0
  65. click_extended/decorators/convert/convert_distance.py +154 -0
  66. click_extended/decorators/convert/convert_energy.py +155 -0
  67. click_extended/decorators/convert/convert_power.py +128 -0
  68. click_extended/decorators/convert/convert_pressure.py +131 -0
  69. click_extended/decorators/convert/convert_speed.py +122 -0
  70. click_extended/decorators/convert/convert_temperature.py +89 -0
  71. click_extended/decorators/convert/convert_time.py +108 -0
  72. click_extended/decorators/convert/convert_volume.py +218 -0
  73. click_extended/decorators/convert/convert_weight.py +158 -0
  74. click_extended/decorators/load/__init__.py +13 -0
  75. click_extended/decorators/load/load_csv.py +117 -0
  76. click_extended/decorators/load/load_json.py +61 -0
  77. click_extended/decorators/load/load_toml.py +47 -0
  78. click_extended/decorators/load/load_yaml.py +72 -0
  79. click_extended/decorators/math/__init__.py +37 -0
  80. click_extended/decorators/math/absolute.py +35 -0
  81. click_extended/decorators/math/add.py +48 -0
  82. click_extended/decorators/math/ceil.py +36 -0
  83. click_extended/decorators/math/clamp.py +51 -0
  84. click_extended/decorators/math/divide.py +42 -0
  85. click_extended/decorators/math/floor.py +36 -0
  86. click_extended/decorators/math/maximum.py +39 -0
  87. click_extended/decorators/math/minimum.py +39 -0
  88. click_extended/decorators/math/modulo.py +39 -0
  89. click_extended/decorators/math/multiply.py +51 -0
  90. click_extended/decorators/math/normalize.py +76 -0
  91. click_extended/decorators/math/power.py +39 -0
  92. click_extended/decorators/math/rounded.py +39 -0
  93. click_extended/decorators/math/sqrt.py +39 -0
  94. click_extended/decorators/math/subtract.py +39 -0
  95. click_extended/decorators/math/to_percent.py +63 -0
  96. click_extended/decorators/misc/__init__.py +17 -0
  97. click_extended/decorators/misc/choice.py +139 -0
  98. click_extended/decorators/misc/confirm_if.py +147 -0
  99. click_extended/decorators/misc/default.py +95 -0
  100. click_extended/decorators/misc/deprecated.py +131 -0
  101. click_extended/decorators/misc/experimental.py +79 -0
  102. click_extended/decorators/misc/now.py +42 -0
  103. click_extended/decorators/random/__init__.py +21 -0
  104. click_extended/decorators/random/random_bool.py +49 -0
  105. click_extended/decorators/random/random_choice.py +63 -0
  106. click_extended/decorators/random/random_datetime.py +140 -0
  107. click_extended/decorators/random/random_float.py +62 -0
  108. click_extended/decorators/random/random_integer.py +56 -0
  109. click_extended/decorators/random/random_prime.py +196 -0
  110. click_extended/decorators/random/random_string.py +77 -0
  111. click_extended/decorators/random/random_uuid.py +119 -0
  112. click_extended/decorators/transform/__init__.py +71 -0
  113. click_extended/decorators/transform/add_prefix.py +58 -0
  114. click_extended/decorators/transform/add_suffix.py +58 -0
  115. click_extended/decorators/transform/apply.py +35 -0
  116. click_extended/decorators/transform/basename.py +44 -0
  117. click_extended/decorators/transform/dirname.py +44 -0
  118. click_extended/decorators/transform/expand_vars.py +36 -0
  119. click_extended/decorators/transform/remove_prefix.py +57 -0
  120. click_extended/decorators/transform/remove_suffix.py +57 -0
  121. click_extended/decorators/transform/replace.py +46 -0
  122. click_extended/decorators/transform/slugify.py +45 -0
  123. click_extended/decorators/transform/split.py +43 -0
  124. click_extended/decorators/transform/strip.py +148 -0
  125. click_extended/decorators/transform/to_case.py +216 -0
  126. click_extended/decorators/transform/to_date.py +75 -0
  127. click_extended/decorators/transform/to_datetime.py +83 -0
  128. click_extended/decorators/transform/to_path.py +274 -0
  129. click_extended/decorators/transform/to_time.py +77 -0
  130. click_extended/decorators/transform/to_timestamp.py +114 -0
  131. click_extended/decorators/transform/truncate.py +47 -0
  132. click_extended/types.py +1 -1
  133. click_extended/utils/__init__.py +13 -0
  134. click_extended/utils/casing.py +169 -0
  135. click_extended/utils/checks.py +48 -0
  136. click_extended/utils/dispatch.py +1016 -0
  137. click_extended/utils/format.py +101 -0
  138. click_extended/utils/humanize.py +209 -0
  139. click_extended/utils/naming.py +238 -0
  140. click_extended/utils/process.py +294 -0
  141. click_extended/utils/selection.py +267 -0
  142. click_extended/utils/time.py +46 -0
  143. {click_extended-0.4.0.dist-info → click_extended-1.0.1.dist-info}/METADATA +100 -29
  144. click_extended-1.0.1.dist-info/RECORD +149 -0
  145. click_extended-0.4.0.dist-info/RECORD +0 -10
  146. {click_extended-0.4.0.dist-info → click_extended-1.0.1.dist-info}/WHEEL +0 -0
  147. {click_extended-0.4.0.dist-info → click_extended-1.0.1.dist-info}/licenses/AUTHORS.md +0 -0
  148. {click_extended-0.4.0.dist-info → click_extended-1.0.1.dist-info}/licenses/LICENSE +0 -0
  149. {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.4.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
  ![Banner](./assets/click-extended-banner.png)
@@ -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
- # $ python cli.py "Hello world"
121
- # Hello world
129
+ ```bash
130
+ $ python cli.py "Hello world"
131
+ Hello world
132
+ ```
122
133
 
123
- # $ python cli.py "Hello world" --count 3
124
- # Hello world
125
- # Hello world
126
- # Hello world
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
- # $ python cli.py my_function "Hello world"
151
- # Running initialization code...
152
- # Hello world
163
+ ```bash
164
+ $ python cli.py my_function "Hello world"
165
+ Running initialization code...
166
+ Hello world
167
+ ```
153
168
 
154
- # $ python cli.py my_function "Hello world" --count 3
155
- # Running initialization code...
156
- # Hello world
157
- # Hello world
158
- # Hello world
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
- # $ python cli.py my_function_1
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
- # $ API_KEY=api-key python cli.py my_function_1
189
- # The API key is: api-key
240
+ ### Pre-Built Children
190
241
 
191
- # $ python cli.py my_function_2
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
- # $ API_KEY=api-key python cli.py my_function_2
195
- # The API key is: api-key
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 Children
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 handle_primitive(
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
- # $ python cli.py my_function valid
241
- # The value 'VALID' should be uppercase.
308
+ ```bash
309
+ $ python cli.py my_function valid
310
+ The value 'VALID' should be uppercase.
311
+ ```
242
312
 
243
- # $ python cli.py my_function invalid
244
- # ValueError (my_function): "The value 'invalid' is not valid"
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,,