From 12d2de22821fd8f57f4d412e62f53db3d89d5e30 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Tue, 30 Nov 2021 11:43:06 -0800 Subject: [PATCH] use jc.utils.input_type_check() and simplify compatibility check --- jc/parsers/acpi.py | 4 ++-- jc/parsers/airport.py | 4 ++-- jc/parsers/airport_s.py | 4 ++-- jc/parsers/arp.py | 4 ++-- jc/parsers/blkid.py | 4 ++-- jc/parsers/cksum.py | 4 ++-- jc/parsers/crontab.py | 4 ++-- jc/parsers/crontab_u.py | 4 ++-- jc/parsers/csv.py | 4 ++-- jc/parsers/date.py | 4 ++-- jc/parsers/df.py | 5 ++--- jc/parsers/dig.py | 5 ++--- jc/parsers/dir.py | 4 ++-- jc/parsers/dmidecode.py | 4 ++-- jc/parsers/dpkg_l.py | 4 ++-- jc/parsers/du.py | 4 ++-- jc/parsers/env.py | 4 ++-- jc/parsers/file.py | 4 ++-- jc/parsers/finger.py | 4 ++-- jc/parsers/foo.py | 4 ++-- jc/parsers/free.py | 4 ++-- jc/parsers/fstab.py | 4 ++-- jc/parsers/group.py | 4 ++-- jc/parsers/gshadow.py | 4 ++-- jc/parsers/hash.py | 4 ++-- jc/parsers/hashsum.py | 4 ++-- jc/parsers/hciconfig.py | 4 ++-- jc/parsers/history.py | 4 ++-- jc/parsers/hosts.py | 4 ++-- jc/parsers/id.py | 4 ++-- jc/parsers/ifconfig.py | 4 ++-- jc/parsers/ini.py | 4 ++-- jc/parsers/iptables.py | 4 ++-- jc/parsers/iw_scan.py | 4 ++-- jc/parsers/jobs.py | 4 ++-- jc/parsers/last.py | 4 ++-- jc/parsers/ls.py | 4 ++-- jc/parsers/lsblk.py | 4 ++-- jc/parsers/lsmod.py | 4 ++-- jc/parsers/lsof.py | 4 ++-- jc/parsers/lsusb.py | 4 ++-- jc/parsers/mount.py | 4 ++-- jc/parsers/netstat.py | 4 ++-- jc/parsers/ntpq.py | 4 ++-- jc/parsers/passwd.py | 4 ++-- jc/parsers/ping.py | 4 ++-- jc/parsers/pip_list.py | 4 ++-- jc/parsers/pip_show.py | 4 ++-- jc/parsers/ps.py | 4 ++-- jc/parsers/route.py | 4 ++-- jc/parsers/rpm_qi.py | 4 ++-- jc/parsers/sfdisk.py | 4 ++-- jc/parsers/shadow.py | 4 ++-- jc/parsers/ss.py | 4 ++-- jc/parsers/stat.py | 4 ++-- jc/parsers/sysctl.py | 4 ++-- jc/parsers/systemctl.py | 4 ++-- jc/parsers/systemctl_lj.py | 4 ++-- jc/parsers/systemctl_ls.py | 4 ++-- jc/parsers/systemctl_luf.py | 4 ++-- jc/parsers/systeminfo.py | 4 ++-- jc/parsers/time.py | 4 ++-- jc/parsers/timedatectl.py | 4 ++-- jc/parsers/tracepath.py | 4 ++-- jc/parsers/traceroute.py | 4 ++-- jc/parsers/ufw.py | 4 ++-- jc/parsers/ufw_appinfo.py | 4 ++-- jc/parsers/uname.py | 4 ++-- jc/parsers/upower.py | 4 ++-- jc/parsers/uptime.py | 4 ++-- jc/parsers/vmstat.py | 4 ++-- jc/parsers/w.py | 4 ++-- jc/parsers/wc.py | 4 ++-- jc/parsers/who.py | 4 ++-- jc/parsers/xml.py | 4 ++-- jc/parsers/yaml.py | 4 ++-- jc/utils.py | 40 +++++++++++++++++++++++++++---------- 77 files changed, 181 insertions(+), 165 deletions(-) diff --git a/jc/parsers/acpi.py b/jc/parsers/acpi.py index 76e1e620..24225a55 100644 --- a/jc/parsers/acpi.py +++ b/jc/parsers/acpi.py @@ -302,8 +302,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] output_line = {} diff --git a/jc/parsers/airport.py b/jc/parsers/airport.py index c4830d07..174ae851 100644 --- a/jc/parsers/airport.py +++ b/jc/parsers/airport.py @@ -130,8 +130,8 @@ def parse(data, raw=False, quiet=False): Dictionary. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = {} diff --git a/jc/parsers/airport_s.py b/jc/parsers/airport_s.py index 5c9cb96b..cbf5203c 100644 --- a/jc/parsers/airport_s.py +++ b/jc/parsers/airport_s.py @@ -166,8 +166,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] cleandata = list(filter(None, data.splitlines())) diff --git a/jc/parsers/arp.py b/jc/parsers/arp.py index 1327fdde..664ec6e0 100644 --- a/jc/parsers/arp.py +++ b/jc/parsers/arp.py @@ -171,8 +171,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] cleandata = list(filter(None, data.splitlines())) diff --git a/jc/parsers/blkid.py b/jc/parsers/blkid.py index ab148137..0a4af511 100644 --- a/jc/parsers/blkid.py +++ b/jc/parsers/blkid.py @@ -176,8 +176,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] diff --git a/jc/parsers/cksum.py b/jc/parsers/cksum.py index 66bc65e4..d1004fdc 100644 --- a/jc/parsers/cksum.py +++ b/jc/parsers/cksum.py @@ -103,8 +103,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] diff --git a/jc/parsers/crontab.py b/jc/parsers/crontab.py index f8276c9b..0c0476eb 100644 --- a/jc/parsers/crontab.py +++ b/jc/parsers/crontab.py @@ -225,8 +225,8 @@ def parse(data, raw=False, quiet=False): Dictionary. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = {} cleandata = data.splitlines() diff --git a/jc/parsers/crontab_u.py b/jc/parsers/crontab_u.py index 097f2cb2..a67b9b29 100644 --- a/jc/parsers/crontab_u.py +++ b/jc/parsers/crontab_u.py @@ -220,8 +220,8 @@ def parse(data, raw=False, quiet=False): Dictionary. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = {} cleandata = data.splitlines() diff --git a/jc/parsers/csv.py b/jc/parsers/csv.py index 68ecdcbe..924d731c 100644 --- a/jc/parsers/csv.py +++ b/jc/parsers/csv.py @@ -119,8 +119,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] cleandata = data.splitlines() diff --git a/jc/parsers/date.py b/jc/parsers/date.py index 0db77cdc..1e6671c2 100644 --- a/jc/parsers/date.py +++ b/jc/parsers/date.py @@ -115,8 +115,8 @@ def parse(data, raw=False, quiet=False): Dictionary. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = {} diff --git a/jc/parsers/df.py b/jc/parsers/df.py index 64972527..edc2bfae 100644 --- a/jc/parsers/df.py +++ b/jc/parsers/df.py @@ -203,9 +203,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) cleandata = data.splitlines() fix_data = [] diff --git a/jc/parsers/dig.py b/jc/parsers/dig.py index 3d7120bc..b09dccca 100644 --- a/jc/parsers/dig.py +++ b/jc/parsers/dig.py @@ -528,9 +528,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] cleandata = data.splitlines() diff --git a/jc/parsers/dir.py b/jc/parsers/dir.py index a433ae84..9d5045e5 100644 --- a/jc/parsers/dir.py +++ b/jc/parsers/dir.py @@ -173,8 +173,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] diff --git a/jc/parsers/dmidecode.py b/jc/parsers/dmidecode.py index 453a0edf..e3e8ca39 100644 --- a/jc/parsers/dmidecode.py +++ b/jc/parsers/dmidecode.py @@ -177,8 +177,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) item_header = False item_values = False diff --git a/jc/parsers/dpkg_l.py b/jc/parsers/dpkg_l.py index 37b2f6d6..3fb26974 100644 --- a/jc/parsers/dpkg_l.py +++ b/jc/parsers/dpkg_l.py @@ -217,8 +217,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) working_list = [] raw_output = [] diff --git a/jc/parsers/du.py b/jc/parsers/du.py index fac3b902..37d4bb11 100644 --- a/jc/parsers/du.py +++ b/jc/parsers/du.py @@ -137,8 +137,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] diff --git a/jc/parsers/env.py b/jc/parsers/env.py index bdf62e97..ff56cc5e 100644 --- a/jc/parsers/env.py +++ b/jc/parsers/env.py @@ -121,8 +121,8 @@ def parse(data, raw=False, quiet=False): Dictionary of raw structured data or List of Dictionaries of processed structured data """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = {} diff --git a/jc/parsers/file.py b/jc/parsers/file.py index 4a7f782e..aeb844c7 100644 --- a/jc/parsers/file.py +++ b/jc/parsers/file.py @@ -106,8 +106,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] diff --git a/jc/parsers/finger.py b/jc/parsers/finger.py index 66b5fccc..b7721677 100644 --- a/jc/parsers/finger.py +++ b/jc/parsers/finger.py @@ -168,8 +168,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] diff --git a/jc/parsers/foo.py b/jc/parsers/foo.py index 3520c74e..c97ac772 100644 --- a/jc/parsers/foo.py +++ b/jc/parsers/foo.py @@ -86,8 +86,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] diff --git a/jc/parsers/free.py b/jc/parsers/free.py index 6e1ab404..84474f67 100644 --- a/jc/parsers/free.py +++ b/jc/parsers/free.py @@ -122,8 +122,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) cleandata = data.splitlines() raw_output = [] diff --git a/jc/parsers/fstab.py b/jc/parsers/fstab.py index f1ce977b..91e5df34 100644 --- a/jc/parsers/fstab.py +++ b/jc/parsers/fstab.py @@ -132,8 +132,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] cleandata = data.splitlines() diff --git a/jc/parsers/group.py b/jc/parsers/group.py index b38360ea..01cadbe1 100644 --- a/jc/parsers/group.py +++ b/jc/parsers/group.py @@ -160,8 +160,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] cleandata = data.splitlines() diff --git a/jc/parsers/gshadow.py b/jc/parsers/gshadow.py index a4eeff68..b260fcb2 100644 --- a/jc/parsers/gshadow.py +++ b/jc/parsers/gshadow.py @@ -126,8 +126,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] cleandata = data.splitlines() diff --git a/jc/parsers/hash.py b/jc/parsers/hash.py index a753776a..275d8495 100644 --- a/jc/parsers/hash.py +++ b/jc/parsers/hash.py @@ -85,8 +85,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) cleandata = data.splitlines() raw_output = [] diff --git a/jc/parsers/hashsum.py b/jc/parsers/hashsum.py index ac29d8da..1582a794 100644 --- a/jc/parsers/hashsum.py +++ b/jc/parsers/hashsum.py @@ -113,8 +113,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] diff --git a/jc/parsers/hciconfig.py b/jc/parsers/hciconfig.py index c48806fe..77e5cc3b 100644 --- a/jc/parsers/hciconfig.py +++ b/jc/parsers/hciconfig.py @@ -372,8 +372,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] device_object = {} diff --git a/jc/parsers/history.py b/jc/parsers/history.py index 7401e188..43431cfe 100644 --- a/jc/parsers/history.py +++ b/jc/parsers/history.py @@ -109,8 +109,8 @@ def parse(data, raw=False, quiet=False): Dictionary of raw structured data or List of Dictionaries of processed structured data """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = {} diff --git a/jc/parsers/hosts.py b/jc/parsers/hosts.py index f64ed7e8..b0a0b10f 100644 --- a/jc/parsers/hosts.py +++ b/jc/parsers/hosts.py @@ -117,8 +117,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] diff --git a/jc/parsers/id.py b/jc/parsers/id.py index 4a16ad41..d824053b 100644 --- a/jc/parsers/id.py +++ b/jc/parsers/id.py @@ -161,8 +161,8 @@ def parse(data, raw=False, quiet=False): Dictionary. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = {} diff --git a/jc/parsers/ifconfig.py b/jc/parsers/ifconfig.py index d3b37384..15b8006d 100644 --- a/jc/parsers/ifconfig.py +++ b/jc/parsers/ifconfig.py @@ -474,8 +474,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] diff --git a/jc/parsers/ini.py b/jc/parsers/ini.py index 0f9a4a0a..ac1c681d 100644 --- a/jc/parsers/ini.py +++ b/jc/parsers/ini.py @@ -125,8 +125,8 @@ def parse(data, raw=False, quiet=False): Dictionary representing the ini file """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = {} diff --git a/jc/parsers/iptables.py b/jc/parsers/iptables.py index 9575ed41..ce217c10 100644 --- a/jc/parsers/iptables.py +++ b/jc/parsers/iptables.py @@ -240,8 +240,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] chain = {} diff --git a/jc/parsers/iw_scan.py b/jc/parsers/iw_scan.py index a0d20f9a..ede62aca 100644 --- a/jc/parsers/iw_scan.py +++ b/jc/parsers/iw_scan.py @@ -293,8 +293,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] section = {} diff --git a/jc/parsers/jobs.py b/jc/parsers/jobs.py index 1410a7c4..ad7bbd0a 100644 --- a/jc/parsers/jobs.py +++ b/jc/parsers/jobs.py @@ -141,8 +141,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] diff --git a/jc/parsers/last.py b/jc/parsers/last.py index f54cbf18..fb497bc3 100644 --- a/jc/parsers/last.py +++ b/jc/parsers/last.py @@ -185,8 +185,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] diff --git a/jc/parsers/ls.py b/jc/parsers/ls.py index 17b7a1bb..1ce7529b 100644 --- a/jc/parsers/ls.py +++ b/jc/parsers/ls.py @@ -162,8 +162,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] warned = False diff --git a/jc/parsers/lsblk.py b/jc/parsers/lsblk.py index 39d12efe..ca4f7184 100644 --- a/jc/parsers/lsblk.py +++ b/jc/parsers/lsblk.py @@ -321,8 +321,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) # Clear any blank lines cleandata = list(filter(None, data.splitlines())) diff --git a/jc/parsers/lsmod.py b/jc/parsers/lsmod.py index 7d89cc5e..cf20f683 100644 --- a/jc/parsers/lsmod.py +++ b/jc/parsers/lsmod.py @@ -174,8 +174,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) cleandata = data.splitlines() raw_output = [] diff --git a/jc/parsers/lsof.py b/jc/parsers/lsof.py index 02a3fdca..15bf2a5e 100644 --- a/jc/parsers/lsof.py +++ b/jc/parsers/lsof.py @@ -168,8 +168,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] diff --git a/jc/parsers/lsusb.py b/jc/parsers/lsusb.py index a71caab6..966ab00d 100644 --- a/jc/parsers/lsusb.py +++ b/jc/parsers/lsusb.py @@ -815,8 +815,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) lsusb = _LsUsb() diff --git a/jc/parsers/mount.py b/jc/parsers/mount.py index 7f26082a..85f427c3 100644 --- a/jc/parsers/mount.py +++ b/jc/parsers/mount.py @@ -163,8 +163,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) # Clear any blank lines cleandata = list(filter(None, data.splitlines())) diff --git a/jc/parsers/netstat.py b/jc/parsers/netstat.py index 5267ddd8..7a2e81c8 100644 --- a/jc/parsers/netstat.py +++ b/jc/parsers/netstat.py @@ -424,8 +424,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ import jc.utils - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) cleandata = list(filter(None, data.splitlines())) raw_output = [] diff --git a/jc/parsers/ntpq.py b/jc/parsers/ntpq.py index 82ed9797..06e7ddf9 100644 --- a/jc/parsers/ntpq.py +++ b/jc/parsers/ntpq.py @@ -264,8 +264,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) cleandata = data.splitlines() raw_output = [] diff --git a/jc/parsers/passwd.py b/jc/parsers/passwd.py index fa04c456..a6d42605 100644 --- a/jc/parsers/passwd.py +++ b/jc/parsers/passwd.py @@ -142,8 +142,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] diff --git a/jc/parsers/ping.py b/jc/parsers/ping.py index 06129d8a..10fcb54e 100644 --- a/jc/parsers/ping.py +++ b/jc/parsers/ping.py @@ -616,8 +616,8 @@ def parse(data, raw=False, quiet=False): Dictionary. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = {} diff --git a/jc/parsers/pip_list.py b/jc/parsers/pip_list.py index 80d76f8a..c50b08e3 100644 --- a/jc/parsers/pip_list.py +++ b/jc/parsers/pip_list.py @@ -91,8 +91,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] diff --git a/jc/parsers/pip_show.py b/jc/parsers/pip_show.py index 14c5ec16..926a4b2c 100644 --- a/jc/parsers/pip_show.py +++ b/jc/parsers/pip_show.py @@ -108,8 +108,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] package = {} diff --git a/jc/parsers/ps.py b/jc/parsers/ps.py index 7fc067ad..655c7ed3 100644 --- a/jc/parsers/ps.py +++ b/jc/parsers/ps.py @@ -276,8 +276,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) cleandata = data.splitlines() raw_output = [] diff --git a/jc/parsers/route.py b/jc/parsers/route.py index 118e1fb0..0ad83826 100644 --- a/jc/parsers/route.py +++ b/jc/parsers/route.py @@ -180,8 +180,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) cleandata = data.splitlines()[1:] diff --git a/jc/parsers/rpm_qi.py b/jc/parsers/rpm_qi.py index 49729c8e..b5d526dd 100644 --- a/jc/parsers/rpm_qi.py +++ b/jc/parsers/rpm_qi.py @@ -216,8 +216,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] entry_obj = {} diff --git a/jc/parsers/sfdisk.py b/jc/parsers/sfdisk.py index 28b9f512..c368a9d4 100644 --- a/jc/parsers/sfdisk.py +++ b/jc/parsers/sfdisk.py @@ -265,8 +265,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] item = {} diff --git a/jc/parsers/shadow.py b/jc/parsers/shadow.py index 9bd4fdf4..db51455c 100644 --- a/jc/parsers/shadow.py +++ b/jc/parsers/shadow.py @@ -149,8 +149,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] diff --git a/jc/parsers/ss.py b/jc/parsers/ss.py index 730f3b30..5a4e2c72 100644 --- a/jc/parsers/ss.py +++ b/jc/parsers/ss.py @@ -337,8 +337,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) contains_colon = ['nl', 'p_raw', 'raw', 'udp', 'tcp', 'v_str', 'icmp6'] raw_output = [] diff --git a/jc/parsers/stat.py b/jc/parsers/stat.py index 6837f79b..4fd69050 100644 --- a/jc/parsers/stat.py +++ b/jc/parsers/stat.py @@ -229,8 +229,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] diff --git a/jc/parsers/sysctl.py b/jc/parsers/sysctl.py index 73352d27..0c3f63bd 100644 --- a/jc/parsers/sysctl.py +++ b/jc/parsers/sysctl.py @@ -105,8 +105,8 @@ def parse(data, raw=False, quiet=False): Dictionary. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = {} diff --git a/jc/parsers/systemctl.py b/jc/parsers/systemctl.py index 613f2a43..8a9956ad 100644 --- a/jc/parsers/systemctl.py +++ b/jc/parsers/systemctl.py @@ -101,8 +101,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) # Clear any blank lines linedata = list(filter(None, data.splitlines())) diff --git a/jc/parsers/systemctl_lj.py b/jc/parsers/systemctl_lj.py index 73bc0959..98cbda5d 100644 --- a/jc/parsers/systemctl_lj.py +++ b/jc/parsers/systemctl_lj.py @@ -123,8 +123,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) # Clear any blank lines linedata = list(filter(None, data.splitlines())) diff --git a/jc/parsers/systemctl_ls.py b/jc/parsers/systemctl_ls.py index 18a52ee1..42fbc1aa 100644 --- a/jc/parsers/systemctl_ls.py +++ b/jc/parsers/systemctl_ls.py @@ -93,8 +93,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) # Clear any blank lines linedata = list(filter(None, data.splitlines())) diff --git a/jc/parsers/systemctl_luf.py b/jc/parsers/systemctl_luf.py index 6556a178..69d34e55 100644 --- a/jc/parsers/systemctl_luf.py +++ b/jc/parsers/systemctl_luf.py @@ -89,8 +89,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) # Clear any blank lines linedata = list(filter(None, data.splitlines())) diff --git a/jc/parsers/systeminfo.py b/jc/parsers/systeminfo.py index ca95c0c2..f6bc2b3c 100644 --- a/jc/parsers/systeminfo.py +++ b/jc/parsers/systeminfo.py @@ -303,8 +303,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) delim = ":" # k/v delimiter raw_data = {} # intermediary output diff --git a/jc/parsers/time.py b/jc/parsers/time.py index 05d1f835..f5e594e1 100644 --- a/jc/parsers/time.py +++ b/jc/parsers/time.py @@ -198,8 +198,8 @@ def parse(data, raw=False, quiet=False): Dictionary. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = {} diff --git a/jc/parsers/timedatectl.py b/jc/parsers/timedatectl.py index b585e855..92f0d068 100644 --- a/jc/parsers/timedatectl.py +++ b/jc/parsers/timedatectl.py @@ -116,8 +116,8 @@ def parse(data, raw=False, quiet=False): Dictionary. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = {} diff --git a/jc/parsers/tracepath.py b/jc/parsers/tracepath.py index 748cf9ce..c600e68a 100644 --- a/jc/parsers/tracepath.py +++ b/jc/parsers/tracepath.py @@ -192,8 +192,8 @@ def parse(data, raw=False, quiet=False): Dictionary. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) RE_TTL_HOST = re.compile(r'^\s?(?P\d+)(?P\??):\s+(?P(?:no reply|\S+))') # groups: ttl, ttl_guess, host RE_PMTU = re.compile(r'\spmtu\s(?P[\d]+)') # group: pmtu diff --git a/jc/parsers/traceroute.py b/jc/parsers/traceroute.py index 3094dce9..e78a066b 100644 --- a/jc/parsers/traceroute.py +++ b/jc/parsers/traceroute.py @@ -368,8 +368,8 @@ def parse(data, raw=False, quiet=False): Dictionary. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = {} diff --git a/jc/parsers/ufw.py b/jc/parsers/ufw.py index 5965c433..7e9b4f97 100644 --- a/jc/parsers/ufw.py +++ b/jc/parsers/ufw.py @@ -394,8 +394,8 @@ def parse(data, raw=False, quiet=False): Dictionary. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = {} rules_list = [] diff --git a/jc/parsers/ufw_appinfo.py b/jc/parsers/ufw_appinfo.py index 4885dc14..522a53ca 100644 --- a/jc/parsers/ufw_appinfo.py +++ b/jc/parsers/ufw_appinfo.py @@ -265,8 +265,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] item_obj = {} diff --git a/jc/parsers/uname.py b/jc/parsers/uname.py index 1c89c4a8..96ae4ba7 100644 --- a/jc/parsers/uname.py +++ b/jc/parsers/uname.py @@ -91,8 +91,8 @@ def parse(data, raw=False, quiet=False): Dictionary. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = {} diff --git a/jc/parsers/upower.py b/jc/parsers/upower.py index aa55f12e..400443ec 100644 --- a/jc/parsers/upower.py +++ b/jc/parsers/upower.py @@ -323,8 +323,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] device_obj = {} diff --git a/jc/parsers/uptime.py b/jc/parsers/uptime.py index f7ae11de..810815a2 100644 --- a/jc/parsers/uptime.py +++ b/jc/parsers/uptime.py @@ -155,8 +155,8 @@ def parse(data, raw=False, quiet=False): Dictionary. Raw or processed structured data """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = {} cleandata = data.splitlines() diff --git a/jc/parsers/vmstat.py b/jc/parsers/vmstat.py index 6a261d4b..c05caa27 100644 --- a/jc/parsers/vmstat.py +++ b/jc/parsers/vmstat.py @@ -181,8 +181,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] output_line = {} diff --git a/jc/parsers/w.py b/jc/parsers/w.py index 4fcd93c3..e0ff5ec5 100644 --- a/jc/parsers/w.py +++ b/jc/parsers/w.py @@ -153,8 +153,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) cleandata = data.splitlines()[1:] raw_output = [] diff --git a/jc/parsers/wc.py b/jc/parsers/wc.py index 7eddfc15..5f672ff7 100644 --- a/jc/parsers/wc.py +++ b/jc/parsers/wc.py @@ -103,8 +103,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] diff --git a/jc/parsers/who.py b/jc/parsers/who.py index e0be6286..3df28d9f 100644 --- a/jc/parsers/who.py +++ b/jc/parsers/who.py @@ -186,8 +186,8 @@ def parse(data, raw=False, quiet=False): List of Dictionaries. Raw or processed structured data. """ - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] diff --git a/jc/parsers/xml.py b/jc/parsers/xml.py index 1ac5971a..544d4d80 100644 --- a/jc/parsers/xml.py +++ b/jc/parsers/xml.py @@ -121,8 +121,8 @@ def parse(data, raw=False, quiet=False): except Exception: raise LibraryNotInstalled('The xmltodict library is not installed.') - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] diff --git a/jc/parsers/yaml.py b/jc/parsers/yaml.py index 89a1d374..ba0b7a59 100644 --- a/jc/parsers/yaml.py +++ b/jc/parsers/yaml.py @@ -135,8 +135,8 @@ def parse(data, raw=False, quiet=False): except Exception: raise LibraryNotInstalled('The ruamel.yaml library is not installed.') - if not quiet: jc.utils.compatibility(__name__, info.compatible) - if not isinstance(data, str): raise TypeError("Input data must be a 'str' object.") + jc.utils.compatibility(__name__, info.compatible, quiet) + jc.utils.input_type_check(data) raw_output = [] diff --git a/jc/utils.py b/jc/utils.py index a1d7e81b..e8c4531c 100644 --- a/jc/utils.py +++ b/jc/utils.py @@ -75,7 +75,7 @@ def error_message(message_lines): print(message, file=sys.stderr) -def compatibility(mod_name, compatible): +def compatibility(mod_name, compatible, quiet=False): """Checks for the parser's compatibility with the running OS platform. Parameters: @@ -86,22 +86,25 @@ def compatibility(mod_name, compatible): compatible options: linux, darwin, cygwin, win32, aix, freebsd + quiet: (bool) supress compatibility message if True + Returns: None - just prints output to STDERR """ - platform_found = False + if not quiet: + platform_found = False - for platform in compatible: - if sys.platform.startswith(platform): - platform_found = True - break + for platform in compatible: + if sys.platform.startswith(platform): + platform_found = True + break - if not platform_found: - mod = mod_name.split('.')[-1] - compat_list = ', '.join(compatible) - warning_message([f'{mod} parser not compatible with your OS ({sys.platform}).', - f'Compatible platforms: {compat_list}']) + if not platform_found: + mod = mod_name.split('.')[-1] + compat_list = ', '.join(compatible) + warning_message([f'{mod} parser not compatible with your OS ({sys.platform}).', + f'Compatible platforms: {compat_list}']) def has_data(data): @@ -235,6 +238,21 @@ def stream_error(e, ignore_exceptions, line): } +def input_type_check(data): + if not isinstance(data, str): + raise TypeError("Input data must be a 'str' object.") + + +def streaming_input_type_check(data): + if not hasattr(data, '__iter__') or isinstance(data, (str, bytes)): + raise TypeError("Input data must be a non-string iterable object.") + + +def streaming_line_input_type_check(line): + if not isinstance(line, str): + raise TypeError("Input line must be a 'str' object.") + + class timestamp: """ Input a date-time text string of several formats and convert to a naive or timezone-aware epoch timestamp in UTC