2022-01-26 11:50:25 -08:00
|
|
|
# Table of Contents
|
|
|
|
|
|
|
|
* [jc.utils](#jc.utils)
|
|
|
|
* [warning\_message](#jc.utils.warning_message)
|
|
|
|
* [error\_message](#jc.utils.error_message)
|
2022-05-23 13:58:24 -07:00
|
|
|
* [is\_compatible](#jc.utils.is_compatible)
|
2022-01-26 11:50:25 -08:00
|
|
|
* [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)
|
2023-12-09 11:41:06 -08:00
|
|
|
* [convert\_size\_to\_int](#jc.utils.convert_size_to_int)
|
2022-01-26 11:50:25 -08:00
|
|
|
* [input\_type\_check](#jc.utils.input_type_check)
|
|
|
|
* [timestamp](#jc.utils.timestamp)
|
2022-01-26 14:21:06 -08:00
|
|
|
* [\_\_init\_\_](#jc.utils.timestamp.__init__)
|
2022-01-26 11:50:25 -08:00
|
|
|
|
2022-01-25 17:07:47 -08:00
|
|
|
<a id="jc.utils"></a>
|
|
|
|
|
|
|
|
# jc.utils
|
2020-07-30 16:20:24 -07:00
|
|
|
|
2022-03-04 13:27:39 -08:00
|
|
|
jc - JSON Convert 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-03-05 12:15:14 -08:00
|
|
|
### warning\_message
|
2022-01-25 17:07:47 -08:00
|
|
|
|
2019-11-11 18:30:46 -08:00
|
|
|
```python
|
2022-01-26 15:54:36 -08:00
|
|
|
def warning_message(message_lines: List[str]) -> None
|
2019-11-11 18:30:46 -08:00
|
|
|
```
|
2019-11-12 14:19:40 -08:00
|
|
|
|
2022-05-26 16:03:30 -07:00
|
|
|
Prints warning message to `STDERR` for non-fatal issues. The first line
|
2022-05-23 13:58:24 -07:00
|
|
|
is prepended with 'jc: Warning - ' and subsequent lines are indented.
|
2022-01-19 11:08:59 -08:00
|
|
|
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-03-05 12:15:14 -08:00
|
|
|
### error\_message
|
2020-07-30 16:20:24 -07:00
|
|
|
|
2019-11-11 18:30:46 -08:00
|
|
|
```python
|
2022-01-26 15:54:36 -08:00
|
|
|
def error_message(message_lines: List[str]) -> None
|
2019-11-11 18:30:46 -08:00
|
|
|
```
|
2019-11-12 14:19:40 -08:00
|
|
|
|
2022-05-26 16:03:30 -07:00
|
|
|
Prints an error message to `STDERR` for fatal issues. The first line is
|
2022-01-19 11:08:59 -08:00
|
|
|
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-05-23 13:58:24 -07:00
|
|
|
<a id="jc.utils.is_compatible"></a>
|
|
|
|
|
|
|
|
### is\_compatible
|
|
|
|
|
|
|
|
```python
|
2022-10-15 14:36:35 -07:00
|
|
|
def is_compatible(compatible: List[str]) -> bool
|
2022-05-23 13:58:24 -07:00
|
|
|
```
|
|
|
|
|
|
|
|
Returns True if the parser is compatible with the running OS platform.
|
|
|
|
|
2022-01-25 17:07:47 -08:00
|
|
|
<a id="jc.utils.compatibility"></a>
|
|
|
|
|
2022-03-05 12:15:14 -08:00
|
|
|
### compatibility
|
2020-07-30 16:20:24 -07:00
|
|
|
|
2019-11-11 18:30:46 -08:00
|
|
|
```python
|
2022-03-04 13:27:39 -08:00
|
|
|
def compatibility(mod_name: str,
|
2022-10-15 14:36:35 -07:00
|
|
|
compatible: List[str],
|
2022-03-04 13:27:39 -08:00
|
|
|
quiet: bool = False) -> None
|
2019-11-11 18:30:46 -08:00
|
|
|
```
|
2022-01-19 11:08:59 -08:00
|
|
|
|
2022-05-23 13:58:24 -07:00
|
|
|
Checks for the parser's compatibility with the running OS platform and
|
2022-06-16 18:00:40 -07:00
|
|
|
prints a warning message to `STDERR` if not compatible and
|
|
|
|
`quiet=False.`
|
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-11-16 10:01:58 +08:00
|
|
|
quiet: (bool) suppress compatibility message if True
|
2022-01-25 18:03:34 -08:00
|
|
|
|
|
|
|
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-03-05 12:15:14 -08:00
|
|
|
### has\_data
|
2020-07-30 16:20:24 -07:00
|
|
|
|
2020-06-14 17:23:10 -07:00
|
|
|
```python
|
2022-07-05 13:33:57 -07:00
|
|
|
def has_data(data: Union[str, bytes]) -> bool
|
2020-06-14 17:23:10 -07:00
|
|
|
```
|
|
|
|
|
2022-07-05 13:33:57 -07:00
|
|
|
Checks if the string input contains data. If there are any
|
|
|
|
non-whitespace characters then return `True`, else return `False`.
|
|
|
|
|
|
|
|
For bytes, returns True if there is any data.
|
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-07-05 13:33:57 -07:00
|
|
|
data: (string, bytes) 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
|
2022-07-05 13:33:57 -07:00
|
|
|
characters, otherwise False. For bytes data, returns
|
|
|
|
True if there is any data, 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-03-05 12:15:14 -08:00
|
|
|
### convert\_to\_int
|
2021-03-24 12:47:57 -07:00
|
|
|
|
2021-04-18 11:46:42 -07:00
|
|
|
```python
|
2022-10-19 08:33:09 -07:00
|
|
|
def convert_to_int(value: object) -> Optional[int]
|
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-26 16:55:39 -08:00
|
|
|
value: (string/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-03-05 12:15:14 -08:00
|
|
|
### convert\_to\_float
|
2021-04-18 11:46:42 -07:00
|
|
|
|
|
|
|
```python
|
2022-10-19 08:33:09 -07:00
|
|
|
def convert_to_float(value: object) -> Optional[float]
|
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-26 16:55:39 -08:00
|
|
|
value: (string/integer) 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-03-05 12:15:14 -08:00
|
|
|
### convert\_to\_bool
|
2021-04-18 11:46:42 -07:00
|
|
|
|
|
|
|
```python
|
2022-10-19 08:33:09 -07:00
|
|
|
def convert_to_bool(value: object) -> bool
|
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
|
|
|
|
2023-12-09 11:41:06 -08:00
|
|
|
<a id="jc.utils.convert_size_to_int"></a>
|
|
|
|
|
|
|
|
### convert\_size\_to\_int
|
|
|
|
|
|
|
|
```python
|
|
|
|
def convert_size_to_int(size: str, binary: bool = False) -> Optional[int]
|
|
|
|
```
|
|
|
|
|
|
|
|
Parse a human readable data size and return the number of bytes.
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
|
|
|
size: (string) The human readable file size to parse.
|
|
|
|
binary: (boolean) `True` to use binary multiples of bytes
|
|
|
|
(base-2) for ambiguous unit symbols and names,
|
|
|
|
`False` to use decimal multiples of bytes (base-10).
|
|
|
|
Returns:
|
2023-12-10 10:41:09 -08:00
|
|
|
|
2023-12-09 11:41:06 -08:00
|
|
|
integer/None Integer if successful conversion, otherwise None
|
|
|
|
|
|
|
|
This function knows how to parse sizes in bytes, kilobytes, megabytes,
|
|
|
|
gigabytes, terabytes and petabytes. Some examples:
|
|
|
|
|
2023-12-10 10:41:09 -08:00
|
|
|
>>> convert_size_to_int('42')
|
|
|
|
42
|
|
|
|
>>> convert_size_to_int('13b')
|
|
|
|
13
|
|
|
|
>>> convert_size_to_int('5 bytes')
|
|
|
|
5
|
|
|
|
>>> convert_size_to_int('1 KB')
|
|
|
|
1000
|
|
|
|
>>> convert_size_to_int('1 kilobyte')
|
|
|
|
1000
|
|
|
|
>>> convert_size_to_int('1 KiB')
|
|
|
|
1024
|
|
|
|
>>> convert_size_to_int('1 KB', binary=True)
|
|
|
|
1024
|
|
|
|
>>> convert_size_to_int('1.5 GB')
|
|
|
|
1500000000
|
|
|
|
>>> convert_size_to_int('1.5 GB', binary=True)
|
|
|
|
1610612736
|
2023-12-09 11:41:06 -08:00
|
|
|
|
2022-01-25 17:07:47 -08:00
|
|
|
<a id="jc.utils.input_type_check"></a>
|
|
|
|
|
2022-03-05 12:15:14 -08:00
|
|
|
### input\_type\_check
|
2021-09-13 21:14:56 -07:00
|
|
|
|
2021-12-01 16:12:51 -08:00
|
|
|
```python
|
2022-10-25 15:50:45 -07:00
|
|
|
def input_type_check(data: object) -> None
|
2021-12-01 16:12:51 -08:00
|
|
|
```
|
2022-01-25 17:07:47 -08:00
|
|
|
|
2022-01-26 16:58:48 -08:00
|
|
|
Ensure input data is a string. Raises `TypeError` if not.
|
2021-12-01 16:12:51 -08:00
|
|
|
|
2022-01-25 17:07:47 -08:00
|
|
|
<a id="jc.utils.timestamp"></a>
|
|
|
|
|
2022-03-05 12:15:14 -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>
|
|
|
|
|
2022-03-05 12:15:14 -08:00
|
|
|
### \_\_init\_\_
|
2022-01-26 14:21:06 -08:00
|
|
|
|
|
|
|
```python
|
2022-10-19 08:33:09 -07:00
|
|
|
def __init__(datetime_string: Optional[str],
|
2022-10-15 14:36:35 -07:00
|
|
|
format_hint: Optional[Iterable[int]] = None) -> None
|
2022-01-26 14:21:06 -08:00
|
|
|
```
|
|
|
|
|
2022-02-07 15:44:54 -08:00
|
|
|
Input a datetime text string of several formats and convert to a
|
2022-01-19 11:08:59 -08:00
|
|
|
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:
|
|
|
|
|
2022-02-01 17:57:12 -08:00
|
|
|
datetime_string (str): a string representation of a
|
|
|
|
datetime in several supported formats
|
2022-01-25 18:03:34 -08:00
|
|
|
|
2022-04-20 09:44:42 -04:00
|
|
|
format_hint (iterable): an optional iterable of format ID
|
2022-02-07 15:44:54 -08:00
|
|
|
integers to instruct the timestamp object to try those
|
|
|
|
formats first in the order given. Other formats will be
|
|
|
|
tried after the format hint list is exhausted. This can
|
|
|
|
speed up timestamp conversion so several different formats
|
|
|
|
don't have to be tried in brute-force fashion.
|
|
|
|
|
2022-02-01 17:57:12 -08:00
|
|
|
Returns a timestamp object with the following attributes:
|
2022-01-25 18:03:34 -08:00
|
|
|
|
2022-02-01 17:57:12 -08:00
|
|
|
string (str): the input datetime string
|
2022-01-25 18:03:34 -08:00
|
|
|
|
2022-02-01 17:57:12 -08:00
|
|
|
format (int | None): the format rule that was used to decode
|
|
|
|
the datetime string. None if conversion fails.
|
2022-01-25 18:03:34 -08:00
|
|
|
|
2022-02-01 17:57:12 -08:00
|
|
|
naive (int | None): timestamp based on locally configured
|
|
|
|
timezone. None if conversion fails.
|
2022-01-25 18:03:34 -08:00
|
|
|
|
2022-02-01 19:20:19 -08:00
|
|
|
utc (int | None): aware timestamp only if UTC timezone
|
2022-02-01 17:57:12 -08:00
|
|
|
detected in datetime string. None if conversion fails.
|
2021-03-24 12:47:57 -07:00
|
|
|
|
2022-12-13 13:30:50 -08:00
|
|
|
iso (str | None): ISO string - timezone information is output
|
|
|
|
only if UTC timezone is detected in the datetime string.
|
|
|
|
|