Skip to main content

Click utility functions

Project description

Travis CI build status https://coveralls.io/repos/hjacobs/python-clickclick/badge.svg PyPI Downloads Latest PyPI version License

Utility functions (Python 3 only) for the wonderful Click library. Click is a Python package for creating beautiful command line interfaces in a composable way with as little code as necessary.

Usage

from clickclick import Action, OutputFormat

with Action('Performing remote call..') as act:
    do_something()
    act.progress()
    do_something_else()

output_format = 'json' # default: "text"
with OutputFormat(output_format):
    print_table(['col1', 'col2'], rows)

Working Example

See this example script and the shell script.

$ ./example.py
Usage: example.py [OPTIONS] COMMAND [ARGS]...

Options:
  -V, --version  Print the current version number and exit.
  -h, --help     Show this message and exit.

Commands:
  list              Example for Listings
  localtime         Print the localtime
  output            Example for all possible Echo Formats You see...
  work-in-progress  Work untile working is done
  work_done         Work done in ?? %
$ ./example.py l
Usage: example.py [OPTIONS] COMMAND [ARGS]...

Error: Too many matches: list, localtime
$ ./example.py lo
Localtime: 2015-08-27 15:47:46.688547
$ ./example.py li
Identifier|Name     |Status |Creation Date|Description                                       |Without Title
         0 Column #0 ERROR   -4228033s ago this is a verrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr.. column without title
         1 Column #1 FINE    -4228033s ago this is a verrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr.. column without title
         2 Column #2 WARNING -4228033s ago this is a verrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr.. column without title
$ ./example.py li -o tsv
id  name    state   creation_time   desc    without_title
0   Column #0   ERROR   -4228033s ago   this is a verrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrry long description    column without title
1   Column #1   FINE    -4228033s ago   this is a verrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrry long description    column without title
2   Column #2   WARNING -4228033s ago   this is a verrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrry long description    column without title
$ ./example.py li -o json
[{"creation_time": 1444911300, "desc": "this is a verrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrry long description", "id": 0, "name": "Column #0", "state": "ERROR", "without_title": "column without title"}, {"creation_time": 1444911300, "desc": "this is a verrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrry long description", "id": 1, "name": "Column #1", "state": "FINE", "without_title": "column without title"}, {"creation_time": 1444911300, "desc": "this is a verrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrry long description", "id": 2, "name": "Column #2", "state": "WARNING", "without_title": "column without title"}]
$ ./example.py li -o yaml
creation_time: 1444911300
desc: this is a verrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrry long description
id: 0
name: 'Column #0'
state: ERROR
without_title: column without title
---
creation_time: 1444911300
desc: this is a verrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrry long description
id: 1
name: 'Column #1'
state: FINE
without_title: column without title
---
creation_time: 1444911300
desc: this is a verrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrry long description
id: 2
name: 'Column #2'
state: WARNING
without_title: column without title
$ ./example.py work-
do anything.. OK
create an excption.. EXCEPTION OCCURRED: No active exception to reraise
Start with working.. . . . . OK
Calc 1 + 1.. 2
Oh, I make an error.. work not complete done
Oh, I make a warning.. work is complicated
Start an exception.. EXCEPTION OCCURRED: name 'function_not_found' is not defined
Make a final error.. this is the end..
$ ./example.py work_ 15.4
Please select the state of your work
1) Done
2) In Progress
3) unknown
4) lost
Please select (1-4) [4]: 2
Your work is 15.4% In Progress
$ ./example.py work_ 15.4
Please select the state of your work
1) Done
2) In Progress
3) unknown
4) lost
Please select (1-4) [4]: 3
Your work is 15.4% unknown
$ ./example.py work_ 15.4
Please select the state of your work
1) Done
2) In Progress
3) unknown
4) lost
Please select (1-4) [4]:
Your work is 15.4% lost
$ ./example.py output
This is a ok: OK
This is a ok with message:all is fine
This is a warning: please check this
Start with working.. . . . . OK
Id|Name
 1 Test #1
 2 Test #2
Only FYI
This is a error: this is wrong, please fix
This is a fatal error: this is a fuckup
$ ./example.py output -o tsv
id  name
1   Test #1
2   Test #2
$ ./example.py output -o json
[{"id": 1, "name": "Test #1"}, {"id": 2, "name": "Test #2"}]
$ ./example.py output -o yaml
id: 1
name: 'Test #1'
---
id: 2
name: 'Test #2'

License

Copyright (c) 2015-2019 Zalando SE

Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

clickclick-20.10.1.tar.gz (9.9 kB view details)

Uploaded Source

Built Distribution

clickclick-20.10.1-py2.py3-none-any.whl (7.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file clickclick-20.10.1.tar.gz.

File metadata

  • Download URL: clickclick-20.10.1.tar.gz
  • Upload date:
  • Size: 9.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.8

File hashes

Hashes for clickclick-20.10.1.tar.gz
Algorithm Hash digest
SHA256 6b0012552f60da64bcf8ee78eaf1d53ef5ba10dc1726b9cb541a219ae0c8bd3e
MD5 f7c365ac9934b5ecb17640decf8afb40
BLAKE2b-256 c8f255b3b8b233229770308a7c5464542e5db5969d89258585415557e90aba9d

See more details on using hashes here.

Provenance

File details

Details for the file clickclick-20.10.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for clickclick-20.10.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 f03c680d4ac6c93df85baee5b9142ce94b3e917ac0be3b342d35fa410c9f111e
MD5 7dc827df97d4a2a20952ec7d77971db7
BLAKE2b-256 b386028de7a5c994b016a9329cef7d9face2f1e149bc68d343726ef5484b06eb

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page