I'm trying to package your module as an rpm package. So I'm using the typical PEP517 based build, install and test cycle used on building packages from non-root account.
python3 -sBm build -w --no-isolation
because I'm calling build with --no-isolation I'm using during all processes only locally installed modules
install .whl file in </install/prefix>
run pytest with PYTHONPATH pointing to sitearch and sitelib inside </install/prefix>
Here is pytest output:
```console
+ PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-commentjson-0.9.0-2.fc35.x86_64/usr/lib64/python3.8/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-commentjson-0.9.0-2.fc35.x86_64/usr/lib/python3.8/site-packages
+ /usr/bin/pytest -ra
=========================================================================== test session starts ============================================================================
platform linux -- Python 3.8.15, pytest-7.2.0, pluggy-1.0.0
rootdir: /home/tkloczko/rpmbuild/BUILD/commentjson-0.9.0
collected 112 items
commentjson/tests/test_commentjson.py ............. [ 11%]
commentjson/tests/test_json/test_decode.py FFFFFFFFFFFF............ [ 33%]
commentjson/tests/test_json/test_dump.py FFFFFF...... [ 43%]
commentjson/tests/test_json/test_encode_basestring_ascii.py FFFs.. [ 49%]
commentjson/tests/test_json/test_float.py FFFFs... [ 56%]
commentjson/tests/test_json/test_indent.py FF.. [ 59%]
commentjson/tests/test_json/test_pass1.py F. [ 61%]
commentjson/tests/test_json/test_pass2.py F. [ 63%]
commentjson/tests/test_json/test_pass3.py F. [ 65%]
commentjson/tests/test_json/test_recursion.py FFFFFFs.s... [ 75%]
commentjson/tests/test_json/test_separators.py FF.. [ 79%]
commentjson/tests/test_json/test_unicode.py FFFFFFFFFFF............ [100%]
================================================================================= FAILURES =================================================================================
_________________________________________________________________________ TestDecode.test_decimal __________________________________________________________________________
self =
def test_decimal(self):
> rval = self.loads('1.1', parse_float=decimal.Decimal)
E AttributeError: 'TestDecode' object has no attribute 'loads'
/usr/lib64/python3.8/test/test_json/test_decode.py:10: AttributeError
__________________________________________________________________________ TestDecode.test_float ___________________________________________________________________________
self =
def test_float(self):
> rval = self.loads('1', parse_int=float)
E AttributeError: 'TestDecode' object has no attribute 'loads'
/usr/lib64/python3.8/test/test_json/test_decode.py:15: AttributeError
______________________________________________________________________ TestDecode.test_empty_objects _______________________________________________________________________
self =
def test_empty_objects(self):
> self.assertEqual(self.loads('{}'), {})
E AttributeError: 'TestDecode' object has no attribute 'assertEqual'
/usr/lib64/python3.8/test/test_json/test_decode.py:20: AttributeError
____________________________________________________________________ TestDecode.test_object_pairs_hook _____________________________________________________________________
self =
def test_object_pairs_hook(self):
s = '{"xkd":1, "kcw":2, "art":3, "hxm":4, "qrt":5, "pad":6, "hoy":7}'
p = [("xkd", 1), ("kcw", 2), ("art", 3), ("hxm", 4),
("qrt", 5), ("pad", 6), ("hoy", 7)]
> self.assertEqual(self.loads(s), eval(s))
E AttributeError: 'TestDecode' object has no attribute 'assertEqual'
/usr/lib64/python3.8/test/test_json/test_decode.py:28: AttributeError
__________________________________________________________________ TestDecode.test_decoder_optimizations ___________________________________________________________________
self =
def test_decoder_optimizations(self):
# Several optimizations were made that skip over calls to
# the whitespace regex, so this test is designed to try and
# exercise the uncommon cases. The array cases are already covered.
> rval = self.loads('{ "key" : "value" , "k":"v" }')
E AttributeError: 'TestDecode' object has no attribute 'loads'
/usr/lib64/python3.8/test/test_json/test_decode.py:50: AttributeError
________________________________________________________________________ TestDecode.test_keys_reuse ________________________________________________________________________
self =
def test_keys_reuse(self):
s = '[{"a_key": 1, "b_\xe9": 2}, {"a_key": 3, "b_\xe9": 4}]'
> self.check_keys_reuse(s, self.loads)
E AttributeError: 'TestDecode' object has no attribute 'loads'
/usr/lib64/python3.8/test/test_json/test_decode.py:61: AttributeError
________________________________________________________________________ TestDecode.test_extra_data ________________________________________________________________________
self =
def test_extra_data(self):
s = '[1, 2, 3]5'
msg = 'Extra data'
> self.assertRaisesRegex(self.JSONDecodeError, msg, self.loads, s)
E AttributeError: 'TestDecode' object has no attribute 'assertRaisesRegex'
/usr/lib64/python3.8/test/test_json/test_decode.py:69: AttributeError
______________________________________________________________________ TestDecode.test_invalid_escape ______________________________________________________________________
self =
def test_invalid_escape(self):
s = '["abc\\y"]'
msg = 'escape'
> self.assertRaisesRegex(self.JSONDecodeError, msg, self.loads, s)
E AttributeError: 'TestDecode' object has no attribute 'assertRaisesRegex'
/usr/lib64/python3.8/test/test_json/test_decode.py:74: AttributeError
____________________________________________________________________ TestDecode.test_invalid_input_type ____________________________________________________________________
self =
def test_invalid_input_type(self):
msg = 'the JSON object must be str'
for value in [1, 3.14, [], {}, None]:
> self.assertRaisesRegex(TypeError, msg, self.loads, value)
E AttributeError: 'TestDecode' object has no attribute 'assertRaisesRegex'
/usr/lib64/python3.8/test/test_json/test_decode.py:79: AttributeError
___________________________________________________________________ TestDecode.test_string_with_utf8_bom ___________________________________________________________________
self =
def test_string_with_utf8_bom(self):
# see #18958
bom_json = "[1,2,3]".encode('utf-8-sig').decode('utf-8')
> with self.assertRaises(self.JSONDecodeError) as cm:
E AttributeError: 'TestDecode' object has no attribute 'assertRaises'
/usr/lib64/python3.8/test/test_json/test_decode.py:84: AttributeError
______________________________________________________________________ TestDecode.test_negative_index ______________________________________________________________________
self =
def test_negative_index(self):
> d = self.json.JSONDecoder()
E AttributeError: 'TestDecode' object has no attribute 'json'
/usr/lib64/python3.8/test/test_json/test_decode.py:96: AttributeError
________________________________________________________________________ TestDecode.test_limit_int _________________________________________________________________________
self =
def test_limit_int(self):
maxdigits = 5000
with support.adjust_int_max_str_digits(maxdigits):
> self.loads('1' * maxdigits)
E AttributeError: 'TestDecode' object has no attribute 'loads'
/usr/lib64/python3.8/test/test_json/test_decode.py:102: AttributeError
____________________________________________________________________________ TestDump.test_dump ____________________________________________________________________________
self =
def test_dump(self):
sio = StringIO()
> self.json.dump({}, sio)
E AttributeError: 'TestDump' object has no attribute 'json'
/usr/lib64/python3.8/test/test_json/test_dump.py:9: AttributeError
___________________________________________________________________________ TestDump.test_dumps ____________________________________________________________________________
self =
def test_dumps(self):
> self.assertEqual(self.dumps({}), '{}')
E AttributeError: 'TestDump' object has no attribute 'assertEqual'
/usr/lib64/python3.8/test/test_json/test_dump.py:13: AttributeError
_______________________________________________________________________ TestDump.test_dump_skipkeys ________________________________________________________________________
self =
def test_dump_skipkeys(self):
v = {b'invalid_key': False, 'valid_key': True}
> with self.assertRaises(TypeError):
E AttributeError: 'TestDump' object has no attribute 'assertRaises'
/usr/lib64/python3.8/test/test_json/test_dump.py:17: AttributeError
______________________________________________________________________ TestDump.test_encode_truefalse ______________________________________________________________________
self =
def test_encode_truefalse(self):
> self.assertEqual(self.dumps(
{True: False, False: True}, sort_keys=True),
'{"false": true, "true": false}')
E AttributeError: 'TestDump' object has no attribute 'assertEqual'
/usr/lib64/python3.8/test/test_json/test_dump.py:26: AttributeError
_______________________________________________________________________ TestDump.test_encode_mutated _______________________________________________________________________
self =
def test_encode_mutated(self):
a = [object()] * 10
def crasher(obj):
del a[-1]
> self.assertEqual(self.dumps(a, default=crasher),
'[null, null, null, null, null]')
E AttributeError: 'TestDump' object has no attribute 'assertEqual'
/usr/lib64/python3.8/test/test_json/test_dump.py:38: AttributeError
______________________________________________________________________ TestDump.test_encode_evil_dict ______________________________________________________________________
self =
def test_encode_evil_dict(self):
class D(dict):
def keys(self):
return L
class X:
def __hash__(self):
del L[0]
return 1337
def __lt__(self, o):
return 0
L = [X() for i in range(1122)]
d = D()
d[1337] = "true.dat"
> self.assertEqual(self.dumps(d, sort_keys=True), '{"1337": "true.dat"}')
E AttributeError: 'TestDump' object has no attribute 'assertEqual'
/usr/lib64/python3.8/test/test_json/test_dump.py:58: AttributeError
__________________________________________________________ TestEncodeBasestringAscii.test_encode_basestring_ascii __________________________________________________________
self =
def test_encode_basestring_ascii(self):
> fname = self.json.encoder.encode_basestring_ascii.__name__
E AttributeError: 'TestEncodeBasestringAscii' object has no attribute 'json'
/usr/lib64/python3.8/test/test_json/test_encode_basestring_ascii.py:22: AttributeError
_______________________________________________________________ TestEncodeBasestringAscii.test_ordered_dict ________________________________________________________________
self =
def test_ordered_dict(self):
# See issue 6105
items = [('one', 1), ('two', 2), ('three', 3), ('four', 4), ('five', 5)]
> s = self.dumps(OrderedDict(items))
E AttributeError: 'TestEncodeBasestringAscii' object has no attribute 'dumps'
/usr/lib64/python3.8/test/test_json/test_encode_basestring_ascii.py:32: AttributeError
________________________________________________________________ TestEncodeBasestringAscii.test_sorted_dict ________________________________________________________________
self =
def test_sorted_dict(self):
items = [('one', 1), ('two', 2), ('three', 3), ('four', 4), ('five', 5)]
> s = self.dumps(dict(items), sort_keys=True)
E AttributeError: 'TestEncodeBasestringAscii' object has no attribute 'dumps'
/usr/lib64/python3.8/test/test_json/test_encode_basestring_ascii.py:37: AttributeError
__________________________________________________________________________ TestFloat.test_floats ___________________________________________________________________________
self =
def test_floats(self):
for num in [1617161771.7650001, math.pi, math.pi**100, math.pi**-100, 3.1]:
> self.assertEqual(float(self.dumps(num)), num)
E AttributeError: 'TestFloat' object has no attribute 'assertEqual'
/usr/lib64/python3.8/test/test_json/test_float.py:8: AttributeError
___________________________________________________________________________ TestFloat.test_ints ____________________________________________________________________________
self =
def test_ints(self):
for num in [1, 1<<32, 1<<64]:
> self.assertEqual(self.dumps(num), str(num))
E AttributeError: 'TestFloat' object has no attribute 'assertEqual'
/usr/lib64/python3.8/test/test_json/test_float.py:13: AttributeError
_______________________________________________________________________ TestFloat.test_out_of_range ________________________________________________________________________
self =
def test_out_of_range(self):
> self.assertEqual(self.loads('[23456789012E666]'), [float('inf')])
E AttributeError: 'TestFloat' object has no attribute 'assertEqual'
/usr/lib64/python3.8/test/test_json/test_float.py:17: AttributeError
_________________________________________________________________________ TestFloat.test_allow_nan _________________________________________________________________________
self =
def test_allow_nan(self):
for val in (float('inf'), float('-inf'), float('nan')):
> out = self.dumps([val])
E AttributeError: 'TestFloat' object has no attribute 'dumps'
/usr/lib64/python3.8/test/test_json/test_float.py:22: AttributeError
__________________________________________________________________________ TestIndent.test_indent __________________________________________________________________________
self =
def test_indent(self):
h = [['blorpie'], ['whoops'], [], 'd-shtaeou', 'd-nthiouh', 'i-vhbjkhnth',
{'nifty': 87}, {'field': 'yes', 'morefield': False} ]
expect = textwrap.dedent("""\
[
\t[
\t\t"blorpie"
\t],
\t[
\t\t"whoops"
\t],
\t[],
\t"d-shtaeou",
\t"d-nthiouh",
\t"i-vhbjkhnth",
\t{
\t\t"nifty": 87
\t},
\t{
\t\t"field": "yes",
\t\t"morefield": false
\t}
]""")
> d1 = self.dumps(h)
E AttributeError: 'TestIndent' object has no attribute 'dumps'
/usr/lib64/python3.8/test/test_json/test_indent.py:32: AttributeError
_________________________________________________________________________ TestIndent.test_indent0 __________________________________________________________________________
self =
def test_indent0(self):
h = {3: 1}
def check(indent, expected):
d1 = self.dumps(h, indent=indent)
self.assertEqual(d1, expected)
sio = StringIO()
self.json.dump(h, sio, indent=indent)
self.assertEqual(sio.getvalue(), expected)
# indent=0 should emit newlines
> check(0, '{\n"3": 1\n}')
/usr/lib64/python3.8/test/test_json/test_indent.py:61:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
indent = 0, expected = '{\n"3": 1\n}'
def check(indent, expected):
> d1 = self.dumps(h, indent=indent)
E AttributeError: 'TestIndent' object has no attribute 'dumps'
/usr/lib64/python3.8/test/test_json/test_indent.py:53: AttributeError
___________________________________________________________________________ TestPass1.test_parse ___________________________________________________________________________
self =
def test_parse(self):
# test in/out equivalence and parsing
> res = self.loads(JSON)
E AttributeError: 'TestPass1' object has no attribute 'loads'
/usr/lib64/python3.8/test/test_json/test_pass1.py:69: AttributeError
___________________________________________________________________________ TestPass2.test_parse ___________________________________________________________________________
self =
def test_parse(self):
# test in/out equivalence and parsing
> res = self.loads(JSON)
E AttributeError: 'TestPass2' object has no attribute 'loads'
/usr/lib64/python3.8/test/test_json/test_pass2.py:12: AttributeError
___________________________________________________________________________ TestPass3.test_parse ___________________________________________________________________________
self =
def test_parse(self):
# test in/out equivalence and parsing
> res = self.loads(JSON)
E AttributeError: 'TestPass3' object has no attribute 'loads'
/usr/lib64/python3.8/test/test_json/test_pass3.py:18: AttributeError
_____________________________________________________________________ TestRecursion.test_listrecursion _____________________________________________________________________
self =
def test_listrecursion(self):
x = []
x.append(x)
try:
> self.dumps(x)
E AttributeError: 'TestRecursion' object has no attribute 'dumps'
/usr/lib64/python3.8/test/test_json/test_recursion.py:13: AttributeError
_____________________________________________________________________ TestRecursion.test_dictrecursion _____________________________________________________________________
self =
def test_dictrecursion(self):
x = {}
x["test"] = x
try:
> self.dumps(x)
E AttributeError: 'TestRecursion' object has no attribute 'dumps'
/usr/lib64/python3.8/test/test_json/test_recursion.py:36: AttributeError
___________________________________________________________________ TestRecursion.test_defaultrecursion ____________________________________________________________________
self =
def test_defaultrecursion(self):
> class RecursiveJSONEncoder(self.json.JSONEncoder):
E AttributeError: 'TestRecursion' object has no attribute 'json'
/usr/lib64/python3.8/test/test_json/test_recursion.py:47: AttributeError
____________________________________________________________ TestRecursion.test_highly_nested_objects_decoding _____________________________________________________________
self =
def test_highly_nested_objects_decoding(self):
# test that loading highly-nested objects doesn't segfault when C
# accelerations are used. See #12017
> with self.assertRaises(RecursionError):
E AttributeError: 'TestRecursion' object has no attribute 'assertRaises'
/usr/lib64/python3.8/test/test_json/test_recursion.py:71: AttributeError
____________________________________________________________ TestRecursion.test_highly_nested_objects_encoding _____________________________________________________________
self =
def test_highly_nested_objects_encoding(self):
# See #12051
l, d = [], {}
for x in range(100000):
l, d = [l], {'k':d}
> with self.assertRaises(RecursionError):
E AttributeError: 'TestRecursion' object has no attribute 'assertRaises'
/usr/lib64/python3.8/test/test_json/test_recursion.py:83: AttributeError
___________________________________________________________________ TestRecursion.test_endless_recursion ___________________________________________________________________
self =
def test_endless_recursion(self):
# See #12051
> class EndlessJSONEncoder(self.json.JSONEncoder):
E AttributeError: 'TestRecursion' object has no attribute 'json'
/usr/lib64/python3.8/test/test_json/test_recursion.py:90: AttributeError
______________________________________________________________________ TestSeparators.test_separators ______________________________________________________________________
self =
def test_separators(self):
h = [['blorpie'], ['whoops'], [], 'd-shtaeou', 'd-nthiouh', 'i-vhbjkhnth',
{'nifty': 87}, {'field': 'yes', 'morefield': False} ]
expect = textwrap.dedent("""\
[
[
"blorpie"
] ,
[
"whoops"
] ,
[] ,
"d-shtaeou" ,
"d-nthiouh" ,
"i-vhbjkhnth" ,
{
"nifty" : 87
} ,
{
"field" : "yes" ,
"morefield" : false
}
]""")
> d1 = self.dumps(h)
E AttributeError: 'TestSeparators' object has no attribute 'dumps'
/usr/lib64/python3.8/test/test_json/test_separators.py:32: AttributeError
__________________________________________________________________ TestSeparators.test_illegal_separators __________________________________________________________________
self =
def test_illegal_separators(self):
h = {1: 2, 3: 4}
> self.assertRaises(TypeError, self.dumps, h, separators=(b', ', ': '))
E AttributeError: 'TestSeparators' object has no attribute 'assertRaises'
/usr/lib64/python3.8/test/test_json/test_separators.py:44: AttributeError
________________________________________________________________________ TestUnicode.test_encoding3 ________________________________________________________________________
self =
def test_encoding3(self):
u = '\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}'
> j = self.dumps(u)
E AttributeError: 'TestUnicode' object has no attribute 'dumps'
/usr/lib64/python3.8/test/test_json/test_unicode.py:12: AttributeError
________________________________________________________________________ TestUnicode.test_encoding4 ________________________________________________________________________
self =
def test_encoding4(self):
u = '\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}'
> j = self.dumps([u])
E AttributeError: 'TestUnicode' object has no attribute 'dumps'
/usr/lib64/python3.8/test/test_json/test_unicode.py:17: AttributeError
________________________________________________________________________ TestUnicode.test_encoding5 ________________________________________________________________________
self =
def test_encoding5(self):
u = '\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}'
> j = self.dumps(u, ensure_ascii=False)
E AttributeError: 'TestUnicode' object has no attribute 'dumps'
/usr/lib64/python3.8/test/test_json/test_unicode.py:22: AttributeError
________________________________________________________________________ TestUnicode.test_encoding6 ________________________________________________________________________
self =
def test_encoding6(self):
u = '\N{GREEK SMALL LETTER ALPHA}\N{GREEK CAPITAL LETTER OMEGA}'
> j = self.dumps([u], ensure_ascii=False)
E AttributeError: 'TestUnicode' object has no attribute 'dumps'
/usr/lib64/python3.8/test/test_json/test_unicode.py:27: AttributeError
___________________________________________________________________ TestUnicode.test_big_unicode_encode ____________________________________________________________________
self =
def test_big_unicode_encode(self):
u = '\U0001d120'
> self.assertEqual(self.dumps(u), '"\\ud834\\udd20"')
E AttributeError: 'TestUnicode' object has no attribute 'assertEqual'
/usr/lib64/python3.8/test/test_json/test_unicode.py:32: AttributeError
___________________________________________________________________ TestUnicode.test_big_unicode_decode ____________________________________________________________________
self =
def test_big_unicode_decode(self):
u = 'z\U0001d120x'
> self.assertEqual(self.loads('"' + u + '"'), u)
E AttributeError: 'TestUnicode' object has no attribute 'assertEqual'
/usr/lib64/python3.8/test/test_json/test_unicode.py:37: AttributeError
_____________________________________________________________________ TestUnicode.test_unicode_decode ______________________________________________________________________
self =
def test_unicode_decode(self):
for i in range(0, 0xd7ff):
u = chr(i)
s = '"\\u{0:04x}"'.format(i)
> self.assertEqual(self.loads(s), u)
E AttributeError: 'TestUnicode' object has no attribute 'assertEqual'
/usr/lib64/python3.8/test/test_json/test_unicode.py:44: AttributeError
__________________________________________________________________ TestUnicode.test_unicode_preservation ___________________________________________________________________
self =
def test_unicode_preservation(self):
> self.assertEqual(type(self.loads('""')), str)
E AttributeError: 'TestUnicode' object has no attribute 'assertEqual'
/usr/lib64/python3.8/test/test_json/test_unicode.py:47: AttributeError
______________________________________________________________________ TestUnicode.test_bytes_encode _______________________________________________________________________
self =
def test_bytes_encode(self):
> self.assertRaises(TypeError, self.dumps, b"hi")
E AttributeError: 'TestUnicode' object has no attribute 'assertRaises'
/usr/lib64/python3.8/test/test_json/test_unicode.py:52: AttributeError
______________________________________________________________________ TestUnicode.test_bytes_decode _______________________________________________________________________
self =
def test_bytes_decode(self):
for encoding, bom in [
('utf-8', codecs.BOM_UTF8),
('utf-16be', codecs.BOM_UTF16_BE),
('utf-16le', codecs.BOM_UTF16_LE),
('utf-32be', codecs.BOM_UTF32_BE),
('utf-32le', codecs.BOM_UTF32_LE),
]:
data = ["a\xb5\u20ac\U0001d120"]
> encoded = self.dumps(data).encode(encoding)
E AttributeError: 'TestUnicode' object has no attribute 'dumps'
/usr/lib64/python3.8/test/test_json/test_unicode.py:64: AttributeError
_____________________________________________________________ TestUnicode.test_object_pairs_hook_with_unicode ______________________________________________________________
self =
def test_object_pairs_hook_with_unicode(self):
s = '{"xkd":1, "kcw":2, "art":3, "hxm":4, "qrt":5, "pad":6, "hoy":7}'
p = [("xkd", 1), ("kcw", 2), ("art", 3), ("hxm", 4),
("qrt", 5), ("pad", 6), ("hoy", 7)]
> self.assertEqual(self.loads(s), eval(s))
E AttributeError: 'TestUnicode' object has no attribute 'assertEqual'
/usr/lib64/python3.8/test/test_json/test_unicode.py:86: AttributeError
========================================================================= short test summary info ==========================================================================
SKIPPED [1] commentjson/tests/test_json/test_encode_basestring_ascii.py:17: Skip this test since commentjson does not support the API used in the test case.
SKIPPED [1] commentjson/tests/test_json/test_float.py:17: Infinity as a value is not supported yet
SKIPPED [1] commentjson/tests/test_json/test_recursion.py:17: Invalid test case since the API used in the actual test case is not supported by commentjson.
SKIPPED [1] commentjson/tests/test_json/test_recursion.py:23: Invalid test case since the API used in the actual test case is not supported by commentjson.
FAILED commentjson/tests/test_json/test_decode.py::TestDecode::test_decimal - AttributeError: 'TestDecode' object has no attribute 'loads'
FAILED commentjson/tests/test_json/test_decode.py::TestDecode::test_float - AttributeError: 'TestDecode' object has no attribute 'loads'
FAILED commentjson/tests/test_json/test_decode.py::TestDecode::test_empty_objects - AttributeError: 'TestDecode' object has no attribute 'assertEqual'
FAILED commentjson/tests/test_json/test_decode.py::TestDecode::test_object_pairs_hook - AttributeError: 'TestDecode' object has no attribute 'assertEqual'
FAILED commentjson/tests/test_json/test_decode.py::TestDecode::test_decoder_optimizations - AttributeError: 'TestDecode' object has no attribute 'loads'
FAILED commentjson/tests/test_json/test_decode.py::TestDecode::test_keys_reuse - AttributeError: 'TestDecode' object has no attribute 'loads'
FAILED commentjson/tests/test_json/test_decode.py::TestDecode::test_extra_data - AttributeError: 'TestDecode' object has no attribute 'assertRaisesRegex'
FAILED commentjson/tests/test_json/test_decode.py::TestDecode::test_invalid_escape - AttributeError: 'TestDecode' object has no attribute 'assertRaisesRegex'
FAILED commentjson/tests/test_json/test_decode.py::TestDecode::test_invalid_input_type - AttributeError: 'TestDecode' object has no attribute 'assertRaisesRegex'
FAILED commentjson/tests/test_json/test_decode.py::TestDecode::test_string_with_utf8_bom - AttributeError: 'TestDecode' object has no attribute 'assertRaises'
FAILED commentjson/tests/test_json/test_decode.py::TestDecode::test_negative_index - AttributeError: 'TestDecode' object has no attribute 'json'
FAILED commentjson/tests/test_json/test_decode.py::TestDecode::test_limit_int - AttributeError: 'TestDecode' object has no attribute 'loads'
FAILED commentjson/tests/test_json/test_dump.py::TestDump::test_dump - AttributeError: 'TestDump' object has no attribute 'json'
FAILED commentjson/tests/test_json/test_dump.py::TestDump::test_dumps - AttributeError: 'TestDump' object has no attribute 'assertEqual'
FAILED commentjson/tests/test_json/test_dump.py::TestDump::test_dump_skipkeys - AttributeError: 'TestDump' object has no attribute 'assertRaises'
FAILED commentjson/tests/test_json/test_dump.py::TestDump::test_encode_truefalse - AttributeError: 'TestDump' object has no attribute 'assertEqual'
FAILED commentjson/tests/test_json/test_dump.py::TestDump::test_encode_mutated - AttributeError: 'TestDump' object has no attribute 'assertEqual'
FAILED commentjson/tests/test_json/test_dump.py::TestDump::test_encode_evil_dict - AttributeError: 'TestDump' object has no attribute 'assertEqual'
FAILED commentjson/tests/test_json/test_encode_basestring_ascii.py::TestEncodeBasestringAscii::test_encode_basestring_ascii - AttributeError: 'TestEncodeBasestringAscii' object has no attribute 'json'
FAILED commentjson/tests/test_json/test_encode_basestring_ascii.py::TestEncodeBasestringAscii::test_ordered_dict - AttributeError: 'TestEncodeBasestringAscii' object has no attribute 'dumps'
FAILED commentjson/tests/test_json/test_encode_basestring_ascii.py::TestEncodeBasestringAscii::test_sorted_dict - AttributeError: 'TestEncodeBasestringAscii' object has no attribute 'dumps'
FAILED commentjson/tests/test_json/test_float.py::TestFloat::test_floats - AttributeError: 'TestFloat' object has no attribute 'assertEqual'
FAILED commentjson/tests/test_json/test_float.py::TestFloat::test_ints - AttributeError: 'TestFloat' object has no attribute 'assertEqual'
FAILED commentjson/tests/test_json/test_float.py::TestFloat::test_out_of_range - AttributeError: 'TestFloat' object has no attribute 'assertEqual'
FAILED commentjson/tests/test_json/test_float.py::TestFloat::test_allow_nan - AttributeError: 'TestFloat' object has no attribute 'dumps'
FAILED commentjson/tests/test_json/test_indent.py::TestIndent::test_indent - AttributeError: 'TestIndent' object has no attribute 'dumps'
FAILED commentjson/tests/test_json/test_indent.py::TestIndent::test_indent0 - AttributeError: 'TestIndent' object has no attribute 'dumps'
FAILED commentjson/tests/test_json/test_pass1.py::TestPass1::test_parse - AttributeError: 'TestPass1' object has no attribute 'loads'
FAILED commentjson/tests/test_json/test_pass2.py::TestPass2::test_parse - AttributeError: 'TestPass2' object has no attribute 'loads'
FAILED commentjson/tests/test_json/test_pass3.py::TestPass3::test_parse - AttributeError: 'TestPass3' object has no attribute 'loads'
FAILED commentjson/tests/test_json/test_recursion.py::TestRecursion::test_listrecursion - AttributeError: 'TestRecursion' object has no attribute 'dumps'
FAILED commentjson/tests/test_json/test_recursion.py::TestRecursion::test_dictrecursion - AttributeError: 'TestRecursion' object has no attribute 'dumps'
FAILED commentjson/tests/test_json/test_recursion.py::TestRecursion::test_defaultrecursion - AttributeError: 'TestRecursion' object has no attribute 'json'
FAILED commentjson/tests/test_json/test_recursion.py::TestRecursion::test_highly_nested_objects_decoding - AttributeError: 'TestRecursion' object has no attribute 'assertRaises'
FAILED commentjson/tests/test_json/test_recursion.py::TestRecursion::test_highly_nested_objects_encoding - AttributeError: 'TestRecursion' object has no attribute 'assertRaises'
FAILED commentjson/tests/test_json/test_recursion.py::TestRecursion::test_endless_recursion - AttributeError: 'TestRecursion' object has no attribute 'json'
FAILED commentjson/tests/test_json/test_separators.py::TestSeparators::test_separators - AttributeError: 'TestSeparators' object has no attribute 'dumps'
FAILED commentjson/tests/test_json/test_separators.py::TestSeparators::test_illegal_separators - AttributeError: 'TestSeparators' object has no attribute 'assertRaises'
FAILED commentjson/tests/test_json/test_unicode.py::TestUnicode::test_encoding3 - AttributeError: 'TestUnicode' object has no attribute 'dumps'
FAILED commentjson/tests/test_json/test_unicode.py::TestUnicode::test_encoding4 - AttributeError: 'TestUnicode' object has no attribute 'dumps'
FAILED commentjson/tests/test_json/test_unicode.py::TestUnicode::test_encoding5 - AttributeError: 'TestUnicode' object has no attribute 'dumps'
FAILED commentjson/tests/test_json/test_unicode.py::TestUnicode::test_encoding6 - AttributeError: 'TestUnicode' object has no attribute 'dumps'
FAILED commentjson/tests/test_json/test_unicode.py::TestUnicode::test_big_unicode_encode - AttributeError: 'TestUnicode' object has no attribute 'assertEqual'
FAILED commentjson/tests/test_json/test_unicode.py::TestUnicode::test_big_unicode_decode - AttributeError: 'TestUnicode' object has no attribute 'assertEqual'
FAILED commentjson/tests/test_json/test_unicode.py::TestUnicode::test_unicode_decode - AttributeError: 'TestUnicode' object has no attribute 'assertEqual'
FAILED commentjson/tests/test_json/test_unicode.py::TestUnicode::test_unicode_preservation - AttributeError: 'TestUnicode' object has no attribute 'assertEqual'
FAILED commentjson/tests/test_json/test_unicode.py::TestUnicode::test_bytes_encode - AttributeError: 'TestUnicode' object has no attribute 'assertRaises'
FAILED commentjson/tests/test_json/test_unicode.py::TestUnicode::test_bytes_decode - AttributeError: 'TestUnicode' object has no attribute 'dumps'
FAILED commentjson/tests/test_json/test_unicode.py::TestUnicode::test_object_pairs_hook_with_unicode - AttributeError: 'TestUnicode' object has no attribute 'assertEqual'
================================================================ 49 failed, 59 passed, 4 skipped in 19.65s =================================================================
```
I'm trying to package your module as an rpm package. So I'm using the typical PEP517 based build, install and test cycle used on building packages from non-root account.
python3 -sBm build -w --no-isolation
build
with--no-isolation
I'm using during all processes only locally installed modulesHere is pytest output: