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

236 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)
2022-05-23 13:58:24 -07:00
* [is\_compatible](#jc.utils.is_compatible)
* [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)
* [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-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
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
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