cmd2 2.5.7__py3-none-any.whl → 2.5.8__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.
cmd2/ansi.py CHANGED
@@ -1042,9 +1042,6 @@ def style(
1042
1042
  # Default styles for printing strings of various types.
1043
1043
  # These can be altered to suit an application's needs and only need to be a
1044
1044
  # function with the following structure: func(str) -> str
1045
- style_output = functools.partial(style)
1046
- """Partial function supplying arguments to :meth:`cmd2.ansi.style()` which colors text for normal output"""
1047
-
1048
1045
  style_success = functools.partial(style, fg=Fg.GREEN)
1049
1046
  """Partial function supplying arguments to :meth:`cmd2.ansi.style()` which colors text to signify success"""
1050
1047
 
cmd2/cmd2.py CHANGED
@@ -1212,123 +1212,67 @@ class Cmd(cmd.Cmd):
1212
1212
 
1213
1213
  def print_to(
1214
1214
  self,
1215
- dest: Union[TextIO, IO[str]],
1215
+ dest: IO[str],
1216
1216
  msg: Any,
1217
1217
  *,
1218
1218
  end: str = '\n',
1219
1219
  style: Optional[Callable[[str], str]] = None,
1220
- paged: bool = False,
1221
- chop: bool = False,
1222
1220
  ) -> None:
1223
- final_msg = style(msg) if style is not None else msg
1224
- if paged:
1225
- self.ppaged(final_msg, end=end, chop=chop, dest=dest)
1226
- else:
1227
- try:
1228
- ansi.style_aware_write(dest, f'{final_msg}{end}')
1229
- except BrokenPipeError:
1230
- # This occurs if a command's output is being piped to another
1231
- # process and that process closes before the command is
1232
- # finished. If you would like your application to print a
1233
- # warning message, then set the broken_pipe_warning attribute
1234
- # to the message you want printed.
1235
- if self.broken_pipe_warning:
1236
- sys.stderr.write(self.broken_pipe_warning)
1221
+ """
1222
+ Print message to a given file object.
1237
1223
 
1238
- def poutput(
1239
- self,
1240
- msg: Any = '',
1241
- *,
1242
- end: str = '\n',
1243
- apply_style: bool = True,
1244
- paged: bool = False,
1245
- chop: bool = False,
1246
- ) -> None:
1224
+ :param dest: the file object being written to
1225
+ :param msg: object to print
1226
+ :param end: string appended after the end of the message, default a newline
1227
+ :param style: optional style function to format msg with (e.g. ansi.style_success)
1228
+ """
1229
+ final_msg = style(msg) if style is not None else msg
1230
+ try:
1231
+ ansi.style_aware_write(dest, f'{final_msg}{end}')
1232
+ except BrokenPipeError:
1233
+ # This occurs if a command's output is being piped to another
1234
+ # process and that process closes before the command is
1235
+ # finished. If you would like your application to print a
1236
+ # warning message, then set the broken_pipe_warning attribute
1237
+ # to the message you want printed.
1238
+ if self.broken_pipe_warning:
1239
+ sys.stderr.write(self.broken_pipe_warning)
1240
+
1241
+ def poutput(self, msg: Any = '', *, end: str = '\n') -> None:
1247
1242
  """Print message to self.stdout and appends a newline by default
1248
1243
 
1249
- Also handles BrokenPipeError exceptions for when a command's output has
1250
- been piped to another process and that process terminates before the
1251
- cmd2 command is finished executing.
1252
-
1253
1244
  :param msg: object to print
1254
1245
  :param end: string appended after the end of the message, default a newline
1255
- :param apply_style: If True, then ansi.style_output will be applied to the message text. Set to False in cases
1256
- where the message text already has the desired style. Defaults to True.
1257
- :param paged: If True, pass the output through the configured pager.
1258
- :param chop: If paged is True, True to truncate long lines or False to wrap long lines.
1259
1246
  """
1260
- self.print_to(self.stdout, msg, end=end, style=ansi.style_output if apply_style else None, paged=paged, chop=chop)
1247
+ self.print_to(self.stdout, msg, end=end)
1261
1248
 
1262
- def perror(
1263
- self,
1264
- msg: Any = '',
1265
- *,
1266
- end: str = '\n',
1267
- apply_style: bool = True,
1268
- paged: bool = False,
1269
- chop: bool = False,
1270
- ) -> None:
1249
+ def perror(self, msg: Any = '', *, end: str = '\n', apply_style: bool = True) -> None:
1271
1250
  """Print message to sys.stderr
1272
1251
 
1273
1252
  :param msg: object to print
1274
1253
  :param end: string appended after the end of the message, default a newline
1275
1254
  :param apply_style: If True, then ansi.style_error will be applied to the message text. Set to False in cases
1276
1255
  where the message text already has the desired style. Defaults to True.
1277
- :param paged: If True, pass the output through the configured pager.
1278
- :param chop: If paged is True, True to truncate long lines or False to wrap long lines.
1279
1256
  """
1280
- self.print_to(sys.stderr, msg, end=end, style=ansi.style_error if apply_style else None, paged=paged, chop=chop)
1257
+ self.print_to(sys.stderr, msg, end=end, style=ansi.style_error if apply_style else None)
1281
1258
 
1282
- def psuccess(
1283
- self,
1284
- msg: Any = '',
1285
- *,
1286
- end: str = '\n',
1287
- paged: bool = False,
1288
- chop: bool = False,
1289
- ) -> None:
1290
- """Writes to stdout applying ansi.style_success by default
1259
+ def psuccess(self, msg: Any = '', *, end: str = '\n') -> None:
1260
+ """Wraps poutput, but applies ansi.style_success by default
1291
1261
 
1292
1262
  :param msg: object to print
1293
1263
  :param end: string appended after the end of the message, default a newline
1294
- :param paged: If True, pass the output through the configured pager.
1295
- :param chop: If paged is True, True to truncate long lines or False to wrap long lines.
1296
1264
  """
1297
- self.print_to(self.stdout, msg, end=end, style=ansi.style_success, paged=paged, chop=chop)
1265
+ msg = ansi.style_success(msg)
1266
+ self.poutput(msg, end=end)
1298
1267
 
1299
- def pwarning(
1300
- self,
1301
- msg: Any = '',
1302
- *,
1303
- end: str = '\n',
1304
- paged: bool = False,
1305
- chop: bool = False,
1306
- ) -> None:
1268
+ def pwarning(self, msg: Any = '', *, end: str = '\n') -> None:
1307
1269
  """Wraps perror, but applies ansi.style_warning by default
1308
1270
 
1309
1271
  :param msg: object to print
1310
1272
  :param end: string appended after the end of the message, default a newline
1311
- :param paged: If True, pass the output through the configured pager.
1312
- :param chop: If paged is True, True to truncate long lines or False to wrap long lines.
1313
- """
1314
- self.print_to(sys.stderr, msg, end=end, style=ansi.style_warning, paged=paged, chop=chop)
1315
-
1316
- def pfailure(
1317
- self,
1318
- msg: Any = '',
1319
- *,
1320
- end: str = '\n',
1321
- paged: bool = False,
1322
- chop: bool = False,
1323
- ) -> None:
1324
- """Writes to stderr applying ansi.style_error by default
1325
-
1326
- :param msg: object to print
1327
- :param end: string appended after the end of the message, default a newline
1328
- :param paged: If True, pass the output through the configured pager.
1329
- :param chop: If paged is True, True to truncate long lines or False to wrap long lines.
1330
1273
  """
1331
- self.print_to(sys.stderr, msg, end=end, style=ansi.style_error, paged=paged, chop=chop)
1274
+ msg = ansi.style_warning(msg)
1275
+ self.perror(msg, end=end, apply_style=False)
1332
1276
 
1333
1277
  def pexcept(self, msg: Any, *, end: str = '\n', apply_style: bool = True) -> None:
1334
1278
  """Print Exception message to sys.stderr. If debug is true, print exception traceback if one exists.
@@ -1357,36 +1301,20 @@ class Cmd(cmd.Cmd):
1357
1301
 
1358
1302
  self.perror(final_msg, end=end, apply_style=False)
1359
1303
 
1360
- def pfeedback(
1361
- self,
1362
- msg: Any,
1363
- *,
1364
- end: str = '\n',
1365
- apply_style: bool = True,
1366
- paged: bool = False,
1367
- chop: bool = False,
1368
- ) -> None:
1304
+ def pfeedback(self, msg: Any, *, end: str = '\n') -> None:
1369
1305
  """For printing nonessential feedback. Can be silenced with `quiet`.
1370
1306
  Inclusion in redirected output is controlled by `feedback_to_output`.
1371
1307
 
1372
1308
  :param msg: object to print
1373
1309
  :param end: string appended after the end of the message, default a newline
1374
- :param apply_style: If True, then ansi.style_output will be applied to the message text. Set to False in cases
1375
- where the message text already has the desired style. Defaults to True.
1376
- :param paged: If True, pass the output through the configured pager.
1377
- :param chop: If paged is True, True to truncate long lines or False to wrap long lines.
1378
1310
  """
1379
1311
  if not self.quiet:
1380
- self.print_to(
1381
- self.stdout if self.feedback_to_output else sys.stderr,
1382
- msg,
1383
- end=end,
1384
- style=ansi.style_output if apply_style else None,
1385
- paged=paged,
1386
- chop=chop,
1387
- )
1312
+ if self.feedback_to_output:
1313
+ self.poutput(msg, end=end)
1314
+ else:
1315
+ self.perror(msg, end=end, apply_style=False)
1388
1316
 
1389
- def ppaged(self, msg: Any, *, end: str = '\n', chop: bool = False, dest: Optional[Union[TextIO, IO[str]]] = None) -> None:
1317
+ def ppaged(self, msg: Any, *, end: str = '\n', chop: bool = False) -> None:
1390
1318
  """Print output using a pager if it would go off screen and stdout isn't currently being redirected.
1391
1319
 
1392
1320
  Never uses a pager inside a script (Python or text) or when output is being redirected or piped or when
@@ -1399,17 +1327,14 @@ class Cmd(cmd.Cmd):
1399
1327
  - chopping is ideal for displaying wide tabular data as is done in utilities like pgcli
1400
1328
  False -> causes lines longer than the screen width to wrap to the next line
1401
1329
  - wrapping is ideal when you want to keep users from having to use horizontal scrolling
1402
- :param dest: Optionally specify the destination stream to write to. If unspecified, defaults to self.stdout
1403
1330
 
1404
1331
  WARNING: On Windows, the text always wraps regardless of what the chop argument is set to
1405
1332
  """
1406
- dest = self.stdout if dest is None else dest
1407
-
1408
1333
  # Attempt to detect if we are not running within a fully functional terminal.
1409
1334
  # Don't try to use the pager when being run by a continuous integration system like Jenkins + pexpect.
1410
1335
  functional_terminal = False
1411
1336
 
1412
- if self.stdin.isatty() and dest.isatty():
1337
+ if self.stdin.isatty() and self.stdout.isatty():
1413
1338
  if sys.platform.startswith('win') or os.environ.get('TERM') is not None:
1414
1339
  functional_terminal = True
1415
1340
 
@@ -1430,7 +1355,7 @@ class Cmd(cmd.Cmd):
1430
1355
  with self.sigint_protection:
1431
1356
  import subprocess
1432
1357
 
1433
- pipe_proc = subprocess.Popen(pager, shell=True, stdin=subprocess.PIPE, stdout=dest)
1358
+ pipe_proc = subprocess.Popen(pager, shell=True, stdin=subprocess.PIPE, stdout=self.stdout)
1434
1359
  pipe_proc.communicate(final_msg.encode('utf-8', 'replace'))
1435
1360
  except BrokenPipeError:
1436
1361
  # This occurs if a command's output is being piped to another process and that process closes before the
@@ -1439,7 +1364,7 @@ class Cmd(cmd.Cmd):
1439
1364
  if self.broken_pipe_warning:
1440
1365
  sys.stderr.write(self.broken_pipe_warning)
1441
1366
  else:
1442
- self.print_to(dest, msg, end=end, paged=False)
1367
+ self.poutput(msg, end=end)
1443
1368
 
1444
1369
  # ----- Methods related to tab completion -----
1445
1370
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cmd2
3
- Version: 2.5.7
3
+ Version: 2.5.8
4
4
  Summary: cmd2 - quickly build feature-rich and user-friendly interactive command line applications in Python
5
5
  Author: cmd2 Contributors
6
6
  License: The MIT License (MIT)
@@ -89,7 +89,6 @@ Requires-Dist: types-setuptools; extra == "validate"
89
89
  [![Documentation Status](https://readthedocs.org/projects/cmd2/badge/?version=latest)](http://cmd2.readthedocs.io/en/latest/?badge=latest)
90
90
  <a href="https://discord.gg/RpVG6tk"><img src="https://img.shields.io/badge/chat-on%20discord-7289da.svg" alt="Chat"></a>
91
91
 
92
-
93
92
  <p align="center">
94
93
  <a href="#the-developers-toolbox">Developer's Toolbox</a> •
95
94
  <a href="#philosophy">Philosophy</a> •
@@ -104,17 +103,15 @@ Requires-Dist: types-setuptools; extra == "validate"
104
103
 
105
104
  cmd2 is a tool for building interactive command line applications in Python. Its goal is to make it
106
105
  quick and easy for developers to build feature-rich and user-friendly interactive command line
107
- applications. It provides a simple API which is an extension of Python's built-in
108
- [cmd](https://docs.python.org/3/library/cmd.html) module. cmd2 provides a wealth of features on top
106
+ applications. It provides a simple API which is an extension of Python's built-in
107
+ [cmd](https://docs.python.org/3/library/cmd.html) module. cmd2 provides a wealth of features on top
109
108
  of cmd to make your life easier and eliminates much of the boilerplate code which would be necessary
110
109
  when using cmd.
111
110
 
112
- The developers toolbox
113
- ----------------------
111
+ ## The developers toolbox
114
112
 
115
113
  ![system schema](https://raw.githubusercontent.com/python-cmd2/cmd2/master/.github/images/graph.drawio.png)
116
114
 
117
-
118
115
  When creating solutions developers have no shortage of tools to create rich and smart user interfaces.
119
116
  System administrators have long been duct taping together brittle workflows based on a menagerie of simple command line tools created by strangers on github and the guy down the hall.
120
117
  Unfortunately, when CLIs become significantly complex the ease of command discoverability tends to fade quickly.
@@ -125,15 +122,13 @@ The price we pay for beautifully colored displays is complexity required to aggr
125
122
  The `cmd2` framework provides a great mixture of both worlds. Application designers can easily create complex applications and rely on the cmd2 library to offer effortless user facing help and extensive tab completion.
126
123
  When users become comfortable with functionality, cmd2 turns into a feature rich library enabling a smooth transition to full automation. If designed with enough forethought, a well implemented cmd2 application can serve as a boutique workflow tool. `cmd2` pulls off this flexibility based on two pillars of philosophy:
127
124
 
128
- * Tab Completion
129
- * Automation Transition
125
+ - Tab Completion
126
+ - Automation Transition
130
127
 
131
- Philosophy
132
- -------------
128
+ ## Philosophy
133
129
 
134
130
  <a href="https://imgflip.com/i/63h03x"><img src="https://i.imgflip.com/63h03x.jpg" title="made at imgflip.com" width="70%" height="%70"/></a>
135
131
 
136
-
137
132
  Deep extensive tab completion and help text generation based on the argparse library create the first pillar of 'ease of command discovery'. The following is a list of features in this category.
138
133
 
139
134
  - Great tab completion of commands, subcommands, file system paths, and shell commands.
@@ -152,9 +147,8 @@ cmd2 creates the second pillar of 'ease of transition to automation' through ali
152
147
  - Powerful and flexible built-in Python scripting of your application using the `run_pyscript` command
153
148
  - Transcripts for use with built-in regression can be automatically generated from `history -t` or `run_script -t`
154
149
 
150
+ ## Installation
155
151
 
156
- Installation
157
- ------------
158
152
  On all operating systems, the latest stable version of `cmd2` can be installed using pip:
159
153
 
160
154
  ```bash
@@ -167,31 +161,26 @@ For information on other installation options, see
167
161
  [Installation Instructions](https://cmd2.readthedocs.io/en/latest/overview/installation.html) in the cmd2
168
162
  documentation.
169
163
 
164
+ ## Documentation
170
165
 
171
- Documentation
172
- -------------
173
166
  The latest documentation for cmd2 can be read online here: https://cmd2.readthedocs.io/en/latest/
174
167
 
175
168
  It is available in HTML, PDF, and ePub formats.
176
169
 
177
-
178
170
  The best way to learn the cmd2 api is to delve into the example applications located in source under examples.
179
171
 
180
- Tutorials
181
- ---------
182
-
183
- * PyOhio 2019 presentation:
184
- * [video](https://www.youtube.com/watch?v=pebeWrTqIIw)
185
- * [slides](https://github.com/python-cmd2/talks/blob/master/PyOhio_2019/cmd2-PyOhio_2019.pdf)
186
- * [example code](https://github.com/python-cmd2/talks/tree/master/PyOhio_2019/examples)
187
- * [Cookiecutter](https://github.com/cookiecutter/cookiecutter) Templates from community
188
- * Basic cookiecutter template for cmd2 application : https://github.com/jayrod/cookiecutter-python-cmd2
189
- * Advanced cookiecutter template with external plugin support : https://github.com/jayrod/cookiecutter-python-cmd2-ext-plug
190
- * [Example Applications](https://github.com/jayrod/cmd2-example-apps)
172
+ ## Tutorials
191
173
 
174
+ - PyOhio 2019 presentation:
175
+ - [video](https://www.youtube.com/watch?v=pebeWrTqIIw)
176
+ - [slides](https://github.com/python-cmd2/talks/blob/master/PyOhio_2019/cmd2-PyOhio_2019.pdf)
177
+ - [example code](https://github.com/python-cmd2/talks/tree/master/PyOhio_2019/examples)
178
+ - [Cookiecutter](https://github.com/cookiecutter/cookiecutter) Templates from community
179
+ - Basic cookiecutter template for cmd2 application : https://github.com/jayrod/cookiecutter-python-cmd2
180
+ - Advanced cookiecutter template with external plugin support : https://github.com/jayrod/cookiecutter-python-cmd2-ext-plug
181
+ - [Example Applications](https://github.com/jayrod/cmd2-example-apps)
192
182
 
193
- Hello World
194
- -----------
183
+ ## Hello World
195
184
 
196
185
  ```python
197
186
  #!/usr/bin/env python
@@ -212,36 +201,48 @@ if __name__ == '__main__':
212
201
 
213
202
  ```
214
203
 
215
-
216
- Found a bug?
217
- ------------
218
-
219
- If you think you've found a bug, please first read through the open [Issues](https://github.com/python-cmd2/cmd2/issues). If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so we can reproduce the bug. At a minimum, please state the following:
220
-
221
- * ``cmd2`` version
222
- * Python version
223
- * OS name and version
224
- * What you did to cause the bug to occur
225
- * Include any traceback or error message associated with the bug
226
-
227
-
228
- Projects using cmd2
229
- -------------------------------
230
-
231
- | Application Name | Description | |
232
- |-----------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------|---|
233
- | [Jok3r](http://www.jok3r-framework.com) | Network & Web Pentest Automation Framework | |
234
- | [CephFS Shell](https://github.com/ceph/ceph) | [Ceph](https://ceph.com/) is a distributed object, block, and file storage platform | |
235
- | [psiTurk](https://psiturk.org) | An open platform for science on Amazon Mechanical Turk | |
236
- | [Poseidon](https://github.com/CyberReboot/poseidon) | Leverages software-defined networks (SDNs) to acquire and then feed network traffic to a number of machine learning techniques. | |
237
- | [Unipacker](https://github.com/unipacker/unipacker) | Automatic and platform-independent unpacker for Windows binaries based on emulation | |
238
- | [tomcatmanager](https://github.com/tomcatmanager/tomcatmanager) | A command line tool and python library for managing a tomcat server | |
239
- | [Expliot](https://gitlab.com/expliot_framework/expliot) | Internet of Things (IoT) exploitation framework | |
240
- | [mptcpanalyzer]() | Tool to help analyze mptcp pcaps | |
241
- | [clanvas](https://github.com/marklalor/clanvas) | Command-line client for Canvas by Instructure | |
242
-
204
+ ## Found a bug?
205
+
206
+ If you think you've found a bug, please first read through the open [Issues](https://github.com/python-cmd2/cmd2/issues). If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so we can reproduce the bug. At a minimum, please state the following:
207
+
208
+ - `cmd2` version
209
+ - Python version
210
+ - OS name and version
211
+ - What you did to cause the bug to occur
212
+ - Include any traceback or error message associated with the bug
213
+
214
+ ## Projects using cmd2
215
+
216
+ | Application Name | Description | Organization or Author |
217
+ | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
218
+ | [CephFS Shell](https://github.com/ceph/ceph) | The Ceph File System, or CephFS, is a POSIX-compliant file system built on top of Ceph’s distributed object store | [ceph](https://ceph.com/) |
219
+ | [garak](https://github.com/NVIDIA/garak) | LLM vulnerability scanner that checks if an LLM can be made to fail in a way we don't want | [NVIDIA](https://github.com/NVIDIA) |
220
+ | [medusa](https://github.com/Ch0pin/medusa) | Binary instrumentation framework that that automates processes for the dynamic analysis of Android and iOS Applications | [Ch0pin](https://github.com/Ch0pin) |
221
+ | [InternalBlue](https://github.com/seemoo-lab/internalblue) | Bluetooth experimentation framework for Broadcom and Cypress chips | [Secure Mobile Networking Lab](https://github.com/seemoo-lab) |
222
+ | [SCCMHunter](https://github.com/garrettfoster13/sccmhunter) | A post-ex tool built to streamline identifying, profiling, and attacking SCCM related assets in an Active Directory domain | [Garret Foster](https://github.com/garrettfoster13) |
223
+ | [Unipacker](https://github.com/unipacker/unipacker) | Automatic and platform-independent unpacker for Windows binaries based on emulation | [unipacker](https://github.com/unipacker) |
224
+ | [Frankenstein](https://github.com/seemoo-lab/frankenstein) | Broadcom and Cypress firmware emulation for fuzzing and further full-stack debugging | [Secure Mobile Networking Lab](https://github.com/seemoo-lab) |
225
+ | [Poseidon](https://github.com/faucetsdn/poseidon) | Leverages software-defined networks (SDNs) to acquire and then feed network traffic to a number of machine learning techniques. | [Faucet SDN](https://github.com/faucetsdn) |
226
+ | [DFTimewolf](https://github.com/log2timeline/dftimewolf) | A framework for orchestrating forensic collection, processing and data export | [log2timeline](https://github.com/log2timeline) |
227
+ | [GAP SDK](https://github.com/GreenWaves-Technologies/gap_sdk) | SDK for Greenwaves Technologies' GAP8 IoT Application Processor | [GreenWaves Technologies](https://github.com/GreenWaves-Technologies) |
228
+ | [REW Sploit](https://github.com/REW-sploit/REW-sploit) | Emulate and Dissect Metasploit Framework (MSF) and other attacks | [REW-sploit](https://github.com/REW-sploit) |
229
+ | [tomcatmanager](https://github.com/tomcatmanager/tomcatmanager) | A command line tool and python library for managing a tomcat server | [tomcatmanager](https://github.com/tomcatmanager) |
230
+ | [Falcon Toolkit](https://github.com/CrowdStrike/Falcon-Toolkit) | Unleash the power of the CrowdStrike Falcon Platform at the CLI | [CrowdStrike](https://github.com/CrowdStrike) |
231
+ | [EXPLIoT](https://gitlab.com/expliot_framework/expliot) | Internet of Things Security Testing and Exploitation framework | [expliot_framework](https://gitlab.com/expliot_framework/) |
243
232
 
244
233
  Possibly defunct but still good examples
245
234
 
246
- * [JSShell](https://github.com/Den1al/JSShell)
247
- * [FLASHMINGO](https://github.com/fireeye/flashmingo)
235
+ | Application Name | Description | Organization or Author |
236
+ | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
237
+ | [Katana](https://github.com/JohnHammond/katana) | Automatic CTF Challenge Solver | [John Hammond](https://github.com/JohnHammond) |
238
+ | [SatanSword](https://github.com/Lucifer1993/SatanSword) (in Chinese) | Comprehensive Penetration Framework for Red Teaming | [Lucifer1993](https://github.com/Lucifer1993) |
239
+ | [Jok3r](http://www.jok3r-framework.com) | Network & Web Pentest Automation Framework | [Koutto](https://github.com/koutto) |
240
+ | [Counterfit](https://github.com/Azure/counterfit) | a CLI that provides a generic automation layer for assessing the security of ML models | [Microsoft Azure](https://github.com/Azure) |
241
+ | [Overlord](https://github.com/qsecure-labs/overlord) | Red Teaming Infrastructure Automation | [QSecure Labs](https://github.com/qsecure-labs) |
242
+ | [Automated Reconnaissance Pipeline](https://github.com/epi052/recon-pipeline) | An automated target reconnaissance pipeline | [epi052](https://github.com/epi052) |
243
+ | [JSShell](https://github.com/Den1al/JSShell) | An interactive multi-user web JavaScript (JS) shell | [Den1al](https://github.com/Den1al) |
244
+ | [RedShell](https://github.com/Verizon/redshell) | An interactive command prompt for red teaming and pentesting | [Verizon](https://github.com/Verizon) |
245
+ | [FLASHMINGO](https://github.com/mandiant/flashmingo) | Automatic analysis of SWF files based on some heuristics. Extensible via plugins. | [Mandiant](https://github.com/mandiant) |
246
+ | [psiTurk](https://github.com/NYUCCL/psiTurk) | An open platform for science on Amazon Mechanical Turk | [NYU Computation and Cognition Lab](https://github.com/NYUCCL) |
247
+
248
+ Note: If you have created an application based on `cmd2` that you would like us to mention here, please get in touch.
@@ -1,9 +1,9 @@
1
1
  cmd2/__init__.py,sha256=C6IHJ_uHgkqejuRwA10IK0-OzPxHKyZbPn82nMUwn-A,2602
2
- cmd2/ansi.py,sha256=BasPj_Wla0cEyjpe_zu-cn24CgVdSXK3sfxknLM1WcY,32203
2
+ cmd2/ansi.py,sha256=DD1yVk4EnbKSmGM9Tj8jxWv23UZBVjbhdf0oOVhhl_c,32054
3
3
  cmd2/argparse_completer.py,sha256=6z0zmODqM7vhQhI0c6JUvCmR2V4qfdWQEyTZeNIea8c,36505
4
4
  cmd2/argparse_custom.py,sha256=bbAYRr79ZSJWGchd7trmRQDHWAsSJaW0dTQMp65Mrv4,57806
5
5
  cmd2/clipboard.py,sha256=7EISono76d7djj17hbvR9cCTB7jVGSBkUjgVQiMyUjE,549
6
- cmd2/cmd2.py,sha256=5hIjeGoWE-56qZxXpFNL5KNQBDFNA7337RZBuV2o2_k,264393
6
+ cmd2/cmd2.py,sha256=--45LzbUB5vLrrHYPV_pSQK3H9ePAacb4lBlXBQfB1A,261355
7
7
  cmd2/command_definition.py,sha256=OscFEk-O2N20fb8_fhkczqclaCxOwYyxNTnXWXOlngg,7655
8
8
  cmd2/constants.py,sha256=DioxETv-_HzcMUnjuPyz7Cqw4YEt_MTrzOMotiHj-Jo,1981
9
9
  cmd2/decorators.py,sha256=XXQKqei5CVM6k5zt8CdBmIDan-QwuN3YgJiaIsabbuA,19820
@@ -17,8 +17,8 @@ cmd2/rl_utils.py,sha256=HVPdNjuYyU67-XerPUJArmzhohzI1ABrZhU9cLc-EIs,11538
17
17
  cmd2/table_creator.py,sha256=qoxt9s3MxQkfSkp4cIPFMlVzC7kRjUU55p0ow7pFQus,47544
18
18
  cmd2/transcript.py,sha256=I0sD38RbG79Qz9GXIlfh1pHSNmWBTY2SLZAKEdSLWI4,9182
19
19
  cmd2/utils.py,sha256=4eBvbG6yqe3wg9wwi2jdng2iy5gghueNQjuF2afSyuI,49385
20
- cmd2-2.5.7.dist-info/LICENSE,sha256=QXrW0Z0merk9mncyUkn-sgRxhT8_o1dL5HEaBNH47Q4,1099
21
- cmd2-2.5.7.dist-info/METADATA,sha256=KYPEREhxzAnfwxBhwbGC-ury6RiBU4izCwJa4F___uM,13278
22
- cmd2-2.5.7.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
23
- cmd2-2.5.7.dist-info/top_level.txt,sha256=gJbOJmyrARwLhm5diXAtzlNQdxbDZ8iRJ8HJi65_5hg,5
24
- cmd2-2.5.7.dist-info/RECORD,,
20
+ cmd2-2.5.8.dist-info/LICENSE,sha256=QXrW0Z0merk9mncyUkn-sgRxhT8_o1dL5HEaBNH47Q4,1099
21
+ cmd2-2.5.8.dist-info/METADATA,sha256=-y-uEodZc06B7Akuvlb5oRWVfaTmuUqjwJZ4kGuvR_I,18098
22
+ cmd2-2.5.8.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
23
+ cmd2-2.5.8.dist-info/top_level.txt,sha256=gJbOJmyrARwLhm5diXAtzlNQdxbDZ8iRJ8HJi65_5hg,5
24
+ cmd2-2.5.8.dist-info/RECORD,,
File without changes
File without changes