cli2 4.1.2__tar.gz → 4.1.4__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.
Files changed (56) hide show
  1. {cli2-4.1.2/cli2.egg-info → cli2-4.1.4}/PKG-INFO +1 -1
  2. {cli2-4.1.2 → cli2-4.1.4}/cli2/cli.py +9 -2
  3. {cli2-4.1.2 → cli2-4.1.4/cli2.egg-info}/PKG-INFO +1 -1
  4. {cli2-4.1.2 → cli2-4.1.4}/setup.py +1 -1
  5. {cli2-4.1.2 → cli2-4.1.4}/tests/test_cli.py +2 -0
  6. {cli2-4.1.2 → cli2-4.1.4}/tests/test_command.py +2 -2
  7. {cli2-4.1.2 → cli2-4.1.4}/MANIFEST.in +0 -0
  8. {cli2-4.1.2 → cli2-4.1.4}/README.rst +0 -0
  9. {cli2-4.1.2 → cli2-4.1.4}/classifiers.txt +0 -0
  10. {cli2-4.1.2 → cli2-4.1.4}/cli2/__init__.py +0 -0
  11. {cli2-4.1.2 → cli2-4.1.4}/cli2/ansible/__init__.py +0 -0
  12. {cli2-4.1.2 → cli2-4.1.4}/cli2/ansible/action.py +0 -0
  13. {cli2-4.1.2 → cli2-4.1.4}/cli2/ansible/playbook.py +0 -0
  14. {cli2-4.1.2 → cli2-4.1.4}/cli2/ansible/variables.py +0 -0
  15. {cli2-4.1.2 → cli2-4.1.4}/cli2/asyncio.py +0 -0
  16. {cli2-4.1.2 → cli2-4.1.4}/cli2/cli2.py +0 -0
  17. {cli2-4.1.2 → cli2-4.1.4}/cli2/client.py +0 -0
  18. {cli2-4.1.2 → cli2-4.1.4}/cli2/colors.py +0 -0
  19. {cli2-4.1.2 → cli2-4.1.4}/cli2/configuration.py +0 -0
  20. {cli2-4.1.2 → cli2-4.1.4}/cli2/decorators.py +0 -0
  21. {cli2-4.1.2 → cli2-4.1.4}/cli2/display.py +0 -0
  22. {cli2-4.1.2 → cli2-4.1.4}/cli2/examples/__init__.py +0 -0
  23. {cli2-4.1.2 → cli2-4.1.4}/cli2/examples/client.py +0 -0
  24. {cli2-4.1.2 → cli2-4.1.4}/cli2/examples/conf.py +0 -0
  25. {cli2-4.1.2 → cli2-4.1.4}/cli2/examples/example.py +0 -0
  26. {cli2-4.1.2 → cli2-4.1.4}/cli2/examples/example_obj.py +0 -0
  27. {cli2-4.1.2 → cli2-4.1.4}/cli2/examples/nesting.py +0 -0
  28. {cli2-4.1.2 → cli2-4.1.4}/cli2/examples/obj.py +0 -0
  29. {cli2-4.1.2 → cli2-4.1.4}/cli2/examples/obj2.py +0 -0
  30. {cli2-4.1.2 → cli2-4.1.4}/cli2/examples/test.py +0 -0
  31. {cli2-4.1.2 → cli2-4.1.4}/cli2/lock.py +0 -0
  32. {cli2-4.1.2 → cli2-4.1.4}/cli2/log.py +0 -0
  33. {cli2-4.1.2 → cli2-4.1.4}/cli2/node.py +0 -0
  34. {cli2-4.1.2 → cli2-4.1.4}/cli2/sphinx.py +0 -0
  35. {cli2-4.1.2 → cli2-4.1.4}/cli2/table.py +0 -0
  36. {cli2-4.1.2 → cli2-4.1.4}/cli2/test.py +0 -0
  37. {cli2-4.1.2 → cli2-4.1.4}/cli2.egg-info/SOURCES.txt +0 -0
  38. {cli2-4.1.2 → cli2-4.1.4}/cli2.egg-info/dependency_links.txt +0 -0
  39. {cli2-4.1.2 → cli2-4.1.4}/cli2.egg-info/entry_points.txt +0 -0
  40. {cli2-4.1.2 → cli2-4.1.4}/cli2.egg-info/requires.txt +0 -0
  41. {cli2-4.1.2 → cli2-4.1.4}/cli2.egg-info/top_level.txt +0 -0
  42. {cli2-4.1.2 → cli2-4.1.4}/setup.cfg +0 -0
  43. {cli2-4.1.2 → cli2-4.1.4}/tests/test_ansible.py +0 -0
  44. {cli2-4.1.2 → cli2-4.1.4}/tests/test_ansible_variables.py +0 -0
  45. {cli2-4.1.2 → cli2-4.1.4}/tests/test_asyncio.py +0 -0
  46. {cli2-4.1.2 → cli2-4.1.4}/tests/test_client.py +0 -0
  47. {cli2-4.1.2 → cli2-4.1.4}/tests/test_configuration.py +0 -0
  48. {cli2-4.1.2 → cli2-4.1.4}/tests/test_decorators.py +0 -0
  49. {cli2-4.1.2 → cli2-4.1.4}/tests/test_display.py +0 -0
  50. {cli2-4.1.2 → cli2-4.1.4}/tests/test_entry_point.py +0 -0
  51. {cli2-4.1.2 → cli2-4.1.4}/tests/test_group.py +0 -0
  52. {cli2-4.1.2 → cli2-4.1.4}/tests/test_inject.py +0 -0
  53. {cli2-4.1.2 → cli2-4.1.4}/tests/test_lock.py +0 -0
  54. {cli2-4.1.2 → cli2-4.1.4}/tests/test_node.py +0 -0
  55. {cli2-4.1.2 → cli2-4.1.4}/tests/test_restful.py +0 -0
  56. {cli2-4.1.2 → cli2-4.1.4}/tests/test_table.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: cli2
3
- Version: 4.1.2
3
+ Version: 4.1.4
4
4
  Summary: image:: https://yourlabs.io/oss/cli2/badges/master/pipeline.svg
5
5
  Home-page: https://yourlabs.io/oss/cli2
6
6
  Author: James Pic
@@ -1129,7 +1129,7 @@ class Argument:
1129
1129
  # priority to varkwargs for word= and **{}
1130
1130
  last = self.cmd[[*self.cmd.keys()][-1]]
1131
1131
  if last is not self and last.param.kind == self.param.VAR_KEYWORD:
1132
- if re.match('^-?-?[^=]+=', arg):
1132
+ if re.match('^-?-?[\\w]+=', arg):
1133
1133
  return
1134
1134
  elif arg.startswith('**{') and arg.endswith('}'):
1135
1135
  return
@@ -1163,7 +1163,7 @@ class Argument:
1163
1163
  If the factory function takes an `arg` argument, it will pass self.
1164
1164
 
1165
1165
  It will forward any argument to the factory function if detected in
1166
- it's signature.
1166
+ it's signature, except for ``*args`` and ``**kwargs``.
1167
1167
  """
1168
1168
  kwargs = dict()
1169
1169
  sig = inspect.signature(self.factory)
@@ -1171,7 +1171,14 @@ class Argument:
1171
1171
  kwargs['cmd'] = self.cmd
1172
1172
  if 'arg' in sig.parameters:
1173
1173
  kwargs['arg'] = self
1174
+
1175
+ excluded = (
1176
+ inspect.Parameter.VAR_KEYWORD,
1177
+ inspect.Parameter.VAR_POSITIONAL,
1178
+ )
1174
1179
  for key, arg in self.cmd.items():
1180
+ if arg.param.kind in excluded:
1181
+ continue
1175
1182
  if key in sig.parameters:
1176
1183
  kwargs[key] = arg.value
1177
1184
  return self.factory(**kwargs)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: cli2
3
- Version: 4.1.2
3
+ Version: 4.1.4
4
4
  Summary: image:: https://yourlabs.io/oss/cli2/badges/master/pipeline.svg
5
5
  Home-page: https://yourlabs.io/oss/cli2
6
6
  Author: James Pic
@@ -44,7 +44,7 @@ from setuptools import setup
44
44
 
45
45
  setup(
46
46
  name='cli2',
47
- version='4.1.2',
47
+ version='4.1.4',
48
48
  setup_requires='setupmeta',
49
49
  packages=['cli2'],
50
50
  install_requires=[
@@ -9,6 +9,8 @@ def test_call():
9
9
  result = main('cli2.examples.test.example_function', 'x', 'y=z')
10
10
  assert "args=('x',)" in result
11
11
  assert "kwargs={'y': 'z'}" in result
12
+ result = main('cli2.examples.test.example_function', 'http://?x=bar')
13
+ assert "args=('http://?x=bar',)" in result
12
14
 
13
15
 
14
16
  def test_doc_by_default(mocker):
@@ -108,12 +108,12 @@ def test_positional_only_looksahead():
108
108
  return (one, two)
109
109
  cmd = cli2.Command(foo)
110
110
 
111
- cmd.parse('y.-7=e', 'three=z', 'x', 'y')
111
+ cmd.parse('z=w', 'three=z', 'x', 'y')
112
112
  assert cmd['one'].value == 'x'
113
113
  assert cmd['two'].value == ['y']
114
114
  assert cmd['three'].value == 'z'
115
115
  # make sure it takes weird keywords too
116
- assert cmd['kwargs'].value['y.-7'] == 'e'
116
+ assert cmd['kwargs'].value['z'] == 'w'
117
117
 
118
118
 
119
119
  def test_keyword_only():
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes