1
0
mirror of https://github.com/kellyjonbrazil/jc.git synced 2025-06-17 00:07:37 +02:00
Files
jc/docs/utils.md

258 lines
5.5 KiB
Markdown
Raw Normal View History

# Table of Contents
* [jc.utils](#jc.utils)
* [warning\_message](#jc.utils.warning_message)
* [error\_message](#jc.utils.error_message)
* [compatibility](#jc.utils.compatibility)
* [has\_data](#jc.utils.has_data)
* [convert\_to\_int](#jc.utils.convert_to_int)
* [convert\_to\_float](#jc.utils.convert_to_float)
* [convert\_to\_bool](#jc.utils.convert_to_bool)
* [stream\_success](#jc.utils.stream_success)
* [stream\_error](#jc.utils.stream_error)
* [input\_type\_check](#jc.utils.input_type_check)
* [streaming\_input\_type\_check](#jc.utils.streaming_input_type_check)
* [streaming\_line\_input\_type\_check](#jc.utils.streaming_line_input_type_check)
* [timestamp](#jc.utils.timestamp)
2022-01-26 14:21:06 -08:00
* [\_\_init\_\_](#jc.utils.timestamp.__init__)
2022-01-25 17:07:47 -08:00
<a id="jc.utils"></a>
# jc.utils
2020-07-30 16:20:24 -07:00
2019-11-11 18:30:46 -08:00
jc - JSON CLI output utility utils
2020-07-30 16:20:24 -07:00
2022-01-25 17:07:47 -08:00
<a id="jc.utils.warning_message"></a>
2022-01-25 19:28:04 -08:00
### warning\_message
2022-01-25 17:07:47 -08:00
2019-11-11 18:30:46 -08:00
```python
2022-01-25 17:07:47 -08:00
def warning_message(message_lines)
2019-11-11 18:30:46 -08:00
```
2019-11-12 14:19:40 -08:00
2022-01-19 11:08:59 -08:00
Prints warning message for non-fatal issues. The first line is
prepended with 'jc: Warning - ' and subsequent lines are indented.
Wraps text as needed based on the terminal width.
2019-11-12 14:19:40 -08:00
2022-01-25 18:03:34 -08:00
Parameters:
2022-01-25 17:07:47 -08:00
2022-01-25 18:03:34 -08:00
message: (list) list of string lines
2019-11-12 14:19:40 -08:00
2022-01-25 18:03:34 -08:00
Returns:
2019-11-12 14:19:40 -08:00
2022-01-25 18:03:34 -08:00
None - just prints output to STDERR
2019-11-12 14:19:40 -08:00
2022-01-25 17:07:47 -08:00
<a id="jc.utils.error_message"></a>
2019-11-12 14:19:40 -08:00
2022-01-25 19:28:04 -08:00
### error\_message
2020-07-30 16:20:24 -07:00
2019-11-11 18:30:46 -08:00
```python
2022-01-25 17:07:47 -08:00
def error_message(message_lines)
2019-11-11 18:30:46 -08:00
```
2019-11-12 14:19:40 -08:00
2022-01-19 11:08:59 -08:00
Prints an error message for fatal issues. The first line is
prepended with 'jc: Error - ' and subsequent lines are indented.
Wraps text as needed based on the terminal width.
2019-11-12 14:19:40 -08:00
2022-01-25 18:03:34 -08:00
Parameters:
2019-11-12 14:19:40 -08:00
2022-01-25 18:03:34 -08:00
message: (list) list of string lines
2019-11-12 14:19:40 -08:00
2022-01-25 18:03:34 -08:00
Returns:
2019-11-12 14:19:40 -08:00
2022-01-25 18:03:34 -08:00
None - just prints output to STDERR
2019-11-12 14:19:40 -08:00
2022-01-25 17:07:47 -08:00
<a id="jc.utils.compatibility"></a>
2022-01-25 19:28:04 -08:00
### compatibility
2020-07-30 16:20:24 -07:00
2019-11-11 18:30:46 -08:00
```python
2022-01-25 17:07:47 -08:00
def compatibility(mod_name, compatible, quiet=False)
2019-11-11 18:30:46 -08:00
```
2022-01-19 11:08:59 -08:00
Checks for the parser's compatibility with the running OS
platform.
2019-11-11 18:30:46 -08:00
2022-01-25 18:03:34 -08:00
Parameters:
2019-11-12 07:08:35 -08:00
2022-01-25 18:03:34 -08:00
mod_name: (string) __name__ of the calling module
2019-11-11 18:30:46 -08:00
2022-01-25 18:03:34 -08:00
compatible: (list) sys.platform name(s) compatible with
the parser. compatible options:
linux, darwin, cygwin, win32, aix, freebsd
2021-12-01 16:12:51 -08:00
2022-01-25 18:03:34 -08:00
quiet: (bool) supress compatibility message if True
Returns:
None - just prints output to STDERR
2019-11-12 14:20:59 -08:00
2022-01-25 17:07:47 -08:00
<a id="jc.utils.has_data"></a>
2019-11-12 14:20:59 -08:00
2022-01-25 19:28:04 -08:00
### has\_data
2020-07-30 16:20:24 -07:00
2020-06-14 17:23:10 -07:00
```python
2022-01-25 17:07:47 -08:00
def has_data(data)
2020-06-14 17:23:10 -07:00
```
2022-01-19 11:08:59 -08:00
Checks if the input contains data. If there are any non-whitespace
characters then return True, else return False.
2020-06-14 17:23:10 -07:00
2022-01-25 18:03:34 -08:00
Parameters:
2020-06-14 17:23:10 -07:00
2022-01-25 18:03:34 -08:00
data: (string) input to check whether it contains data
2020-06-14 17:23:10 -07:00
2022-01-25 18:03:34 -08:00
Returns:
2020-06-14 17:23:10 -07:00
2022-01-25 18:03:34 -08:00
Boolean True if input string (data) contains non-whitespace
characters, otherwise False
2020-06-14 17:23:10 -07:00
2022-01-25 17:07:47 -08:00
<a id="jc.utils.convert_to_int"></a>
2022-01-25 19:28:04 -08:00
### convert\_to\_int
2021-03-24 12:47:57 -07:00
2021-04-18 11:46:42 -07:00
```python
2022-01-25 17:07:47 -08:00
def convert_to_int(value)
2021-04-18 11:46:42 -07:00
```
2022-01-19 11:08:59 -08:00
Converts string and float input to int. Strips all non-numeric
characters from strings.
2021-04-18 11:46:42 -07:00
2022-01-25 18:03:34 -08:00
Parameters:
2022-01-25 17:07:47 -08:00
2022-01-25 18:03:34 -08:00
value: (string/integer/float) Input value
2021-04-18 11:46:42 -07:00
2022-01-25 18:03:34 -08:00
Returns:
2021-04-18 11:46:42 -07:00
2022-01-25 18:03:34 -08:00
integer/None Integer if successful conversion, otherwise None
2021-04-18 11:46:42 -07:00
2022-01-25 17:07:47 -08:00
<a id="jc.utils.convert_to_float"></a>
2021-04-18 11:46:42 -07:00
2022-01-25 19:28:04 -08:00
### convert\_to\_float
2021-04-18 11:46:42 -07:00
```python
2022-01-25 17:07:47 -08:00
def convert_to_float(value)
2021-04-18 11:46:42 -07:00
```
2022-01-19 11:08:59 -08:00
Converts string and int input to float. Strips all non-numeric
characters from strings.
2021-04-18 11:46:42 -07:00
2022-01-25 18:03:34 -08:00
Parameters:
2021-04-18 11:46:42 -07:00
2022-01-25 18:03:34 -08:00
value: (string) Input value
2021-04-18 11:46:42 -07:00
2022-01-25 18:03:34 -08:00
Returns:
2021-04-18 11:46:42 -07:00
2022-01-25 18:03:34 -08:00
float/None Float if successful conversion, otherwise None
2021-04-18 11:46:42 -07:00
2022-01-25 17:07:47 -08:00
<a id="jc.utils.convert_to_bool"></a>
2022-01-25 19:28:04 -08:00
### convert\_to\_bool
2021-04-18 11:46:42 -07:00
```python
2022-01-25 17:07:47 -08:00
def convert_to_bool(value)
2021-04-18 11:46:42 -07:00
```
2022-01-19 11:08:59 -08:00
Converts string, integer, or float input to boolean by checking
for 'truthy' values.
2021-04-18 11:46:42 -07:00
2022-01-25 18:03:34 -08:00
Parameters:
2022-01-25 17:07:47 -08:00
2022-01-25 18:03:34 -08:00
value: (string/integer/float) Input value
2021-04-18 11:46:42 -07:00
2022-01-25 18:03:34 -08:00
Returns:
2021-04-18 11:46:42 -07:00
2022-01-25 18:03:34 -08:00
True/False False unless a 'truthy' number or string is found
('y', 'yes', 'true', '1', 1, -1, etc.)
2021-04-18 11:46:42 -07:00
2022-01-25 17:07:47 -08:00
<a id="jc.utils.stream_success"></a>
2021-04-18 11:46:42 -07:00
2022-01-25 19:28:04 -08:00
### stream\_success
2021-04-18 11:46:42 -07:00
```python
2022-01-25 17:07:47 -08:00
def stream_success(output_line, ignore_exceptions)
```
2022-01-25 17:07:47 -08:00
2021-09-25 08:23:46 -07:00
Add `_jc_meta` object to output line if `ignore_exceptions=True`
2022-01-25 17:07:47 -08:00
<a id="jc.utils.stream_error"></a>
2022-01-25 19:28:04 -08:00
### stream\_error
2022-01-25 17:07:47 -08:00
2021-09-13 21:14:56 -07:00
```python
2022-01-25 17:07:47 -08:00
def stream_error(e, ignore_exceptions, line)
2021-09-13 21:14:56 -07:00
```
2022-01-19 11:08:59 -08:00
Reraise the stream exception with annotation or print an error
`_jc_meta` field if `ignore_exceptions=True`.
2021-09-23 13:08:31 -07:00
2022-01-25 17:07:47 -08:00
<a id="jc.utils.input_type_check"></a>
2022-01-25 19:28:04 -08:00
### input\_type\_check
2021-09-13 21:14:56 -07:00
2021-12-01 16:12:51 -08:00
```python
2022-01-25 17:07:47 -08:00
def input_type_check(data)
2021-12-01 16:12:51 -08:00
```
2022-01-25 17:07:47 -08:00
2021-12-01 16:12:51 -08:00
Ensure input data is a string
2022-01-25 17:07:47 -08:00
<a id="jc.utils.streaming_input_type_check"></a>
2022-01-25 19:28:04 -08:00
### streaming\_input\_type\_check
2022-01-25 17:07:47 -08:00
2021-12-01 16:12:51 -08:00
```python
2022-01-25 17:07:47 -08:00
def streaming_input_type_check(data)
2021-12-01 16:12:51 -08:00
```
2022-01-25 17:07:47 -08:00
2021-12-01 16:12:51 -08:00
Ensure input data is an iterable, but not a string or bytes
2022-01-25 17:07:47 -08:00
<a id="jc.utils.streaming_line_input_type_check"></a>
2022-01-25 19:28:04 -08:00
### streaming\_line\_input\_type\_check
2022-01-25 17:07:47 -08:00
2021-12-01 16:12:51 -08:00
```python
2022-01-25 17:07:47 -08:00
def streaming_line_input_type_check(line)
2021-12-01 16:12:51 -08:00
```
2022-01-25 17:07:47 -08:00
2021-12-01 16:12:51 -08:00
Ensure each line is a string
2022-01-25 17:07:47 -08:00
<a id="jc.utils.timestamp"></a>
2022-01-26 14:16:04 -08:00
### timestamp Objects
2022-01-25 17:07:47 -08:00
2021-03-24 12:47:57 -07:00
```python
2022-01-25 17:07:47 -08:00
class timestamp()
2021-03-24 12:47:57 -07:00
```
2022-01-26 14:21:06 -08:00
<a id="jc.utils.timestamp.__init__"></a>
### \_\_init\_\_
```python
def __init__(datetime_string)
```
2022-01-19 11:08:59 -08:00
Input a date-time text string of several formats and convert to a
naive or timezone-aware epoch timestamp in UTC.
2021-03-24 12:47:57 -07:00
2022-01-25 18:03:34 -08:00
Parameters:
datetime_string: (str) a string representation of a
2022-01-26 14:21:06 -08:00
date-time in several supported formats
2022-01-25 18:03:34 -08:00
Attributes:
string (str) the input datetime string
format (int) the format rule that was used to
2022-01-26 14:21:06 -08:00
decode the datetime string. None if
conversion fails
2022-01-25 18:03:34 -08:00
naive (int) timestamp based on locally configured
2022-01-26 14:21:06 -08:00
timezone. None if conversion fails
2022-01-25 18:03:34 -08:00
utc (int) aware timestamp only if UTC timezone
2022-01-26 14:21:06 -08:00
detected in datetime string. None if
conversion fails
2021-03-24 12:47:57 -07:00