GRAYBYTE WORDPRESS FILE MANAGER4430

Server IP : 198.54.121.189 / Your IP : 216.73.216.112
System : Linux premium69.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
PHP Version : 7.4.33
Disable Function : NONE
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Directory : /opt/cloudlinux/venv/lib/python3.11/site-packages/simplejson/tests/
Upload Files :
Current_dir [ Not Writeable ] Document_root [ Writeable ]

Command :


Current File : /opt/cloudlinux/venv/lib/python3.11/site-packages/simplejson/tests//test_namedtuple.py
from __future__ import absolute_import
import unittest
import simplejson as json
from simplejson.compat import StringIO

try:
    from unittest import mock
except ImportError:
    mock = None

try:
    from collections import namedtuple
except ImportError:
    class Value(tuple):
        def __new__(cls, *args):
            return tuple.__new__(cls, args)

        def _asdict(self):
            return {'value': self[0]}
    class Point(tuple):
        def __new__(cls, *args):
            return tuple.__new__(cls, args)

        def _asdict(self):
            return {'x': self[0], 'y': self[1]}
else:
    Value = namedtuple('Value', ['value'])
    Point = namedtuple('Point', ['x', 'y'])

class DuckValue(object):
    def __init__(self, *args):
        self.value = Value(*args)

    def _asdict(self):
        return self.value._asdict()

class DuckPoint(object):
    def __init__(self, *args):
        self.point = Point(*args)

    def _asdict(self):
        return self.point._asdict()

class DeadDuck(object):
    _asdict = None

class DeadDict(dict):
    _asdict = None

CONSTRUCTORS = [
    lambda v: v,
    lambda v: [v],
    lambda v: [{'key': v}],
]

class TestNamedTuple(unittest.TestCase):
    def test_namedtuple_dumps(self):
        for v in [Value(1), Point(1, 2), DuckValue(1), DuckPoint(1, 2)]:
            d = v._asdict()
            self.assertEqual(d, json.loads(json.dumps(v)))
            self.assertEqual(
                d,
                json.loads(json.dumps(v, namedtuple_as_object=True)))
            self.assertEqual(d, json.loads(json.dumps(v, tuple_as_array=False)))
            self.assertEqual(
                d,
                json.loads(json.dumps(v, namedtuple_as_object=True,
                                      tuple_as_array=False)))

    def test_namedtuple_dumps_false(self):
        for v in [Value(1), Point(1, 2)]:
            l = list(v)
            self.assertEqual(
                l,
                json.loads(json.dumps(v, namedtuple_as_object=False)))
            self.assertRaises(TypeError, json.dumps, v,
                tuple_as_array=False, namedtuple_as_object=False)

    def test_namedtuple_dump(self):
        for v in [Value(1), Point(1, 2), DuckValue(1), DuckPoint(1, 2)]:
            d = v._asdict()
            sio = StringIO()
            json.dump(v, sio)
            self.assertEqual(d, json.loads(sio.getvalue()))
            sio = StringIO()
            json.dump(v, sio, namedtuple_as_object=True)
            self.assertEqual(
                d,
                json.loads(sio.getvalue()))
            sio = StringIO()
            json.dump(v, sio, tuple_as_array=False)
            self.assertEqual(d, json.loads(sio.getvalue()))
            sio = StringIO()
            json.dump(v, sio, namedtuple_as_object=True,
                      tuple_as_array=False)
            self.assertEqual(
                d,
                json.loads(sio.getvalue()))

    def test_namedtuple_dump_false(self):
        for v in [Value(1), Point(1, 2)]:
            l = list(v)
            sio = StringIO()
            json.dump(v, sio, namedtuple_as_object=False)
            self.assertEqual(
                l,
                json.loads(sio.getvalue()))
            self.assertRaises(TypeError, json.dump, v, StringIO(),
                tuple_as_array=False, namedtuple_as_object=False)

    def test_asdict_not_callable_dump(self):
        for f in CONSTRUCTORS:
            self.assertRaises(
                TypeError,
                json.dump,
                f(DeadDuck()),
                StringIO(),
                namedtuple_as_object=True
            )
            sio = StringIO()
            json.dump(f(DeadDict()), sio, namedtuple_as_object=True)
            self.assertEqual(
                json.dumps(f({})),
                sio.getvalue())
            self.assertRaises(
                TypeError,
                json.dump,
                f(Value),
                StringIO(),
                namedtuple_as_object=True
            )

    def test_asdict_not_callable_dumps(self):
        for f in CONSTRUCTORS:
            self.assertRaises(TypeError,
                json.dumps, f(DeadDuck()), namedtuple_as_object=True)
            self.assertRaises(
                TypeError,
                json.dumps,
                f(Value),
                namedtuple_as_object=True
            )
            self.assertEqual(
                json.dumps(f({})),
                json.dumps(f(DeadDict()), namedtuple_as_object=True))

    def test_asdict_unbound_method_dumps(self):
        for f in CONSTRUCTORS:
            self.assertEqual(
                json.dumps(f(Value), default=lambda v: v.__name__),
                json.dumps(f(Value.__name__))
            )

    def test_asdict_does_not_return_dict(self):
        if not mock:
            if hasattr(unittest, "SkipTest"):
                raise unittest.SkipTest("unittest.mock required")
            else:
                print("unittest.mock not available")
                return
        fake = mock.Mock()
        self.assertTrue(hasattr(fake, '_asdict'))
        self.assertTrue(callable(fake._asdict))
        self.assertFalse(isinstance(fake._asdict(), dict))
        # https://github.com/simplejson/simplejson/pull/284
        # when running under a debug build of CPython (COPTS=-UNDEBUG)
        # a C assertion could fire due to an unchecked error of an PyDict
        # API call on a non-dict internally in _speedups.c.  Without a debug
        # build of CPython this test likely passes either way despite the
        # potential for internal data corruption.  Getting it to crash in
        # a debug build is not always easy either as it requires an
        # assert(!PyErr_Occurred()) that could fire later on.
        with self.assertRaises(TypeError):
            json.dumps({23: fake}, namedtuple_as_object=True, for_json=False)

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
May 15 2025 08:30:34
root / root
0755
__pycache__
--
May 15 2025 08:30:34
root / root
0755
__init__.py
2.453 KB
April 17 2025 13:10:58
root / root
0644
_cibw_runner.py
0.169 KB
April 17 2025 13:10:58
root / root
0644
test_bigint_as_string.py
2.186 KB
April 17 2025 13:10:58
root / root
0644
test_bitsize_int_as_string.py
2.243 KB
April 17 2025 13:10:58
root / root
0644
test_check_circular.py
0.896 KB
April 17 2025 13:10:58
root / root
0644
test_decimal.py
2.484 KB
April 17 2025 13:10:58
root / root
0644
test_decode.py
5.06 KB
April 17 2025 13:10:58
root / root
0644
test_default.py
0.216 KB
April 17 2025 13:10:58
root / root
0644
test_dump.py
10.113 KB
April 17 2025 13:10:58
root / root
0644
test_encode_basestring_ascii.py
2.282 KB
April 17 2025 13:10:58
root / root
0644
test_encode_for_html.py
1.479 KB
April 17 2025 13:10:58
root / root
0644
test_errors.py
2.032 KB
April 17 2025 13:10:58
root / root
0644
test_fail.py
6.303 KB
April 17 2025 13:10:58
root / root
0644
test_float.py
1.637 KB
April 17 2025 13:10:58
root / root
0644
test_for_json.py
2.702 KB
April 17 2025 13:10:58
root / root
0644
test_indent.py
2.508 KB
April 17 2025 13:10:58
root / root
0644
test_item_sort_key.py
1.344 KB
April 17 2025 13:10:58
root / root
0644
test_iterable.py
1.357 KB
April 17 2025 13:10:58
root / root
0644
test_namedtuple.py
5.758 KB
April 17 2025 13:10:58
root / root
0644
test_pass1.py
1.705 KB
April 17 2025 13:10:58
root / root
0644
test_pass2.py
0.377 KB
April 17 2025 13:10:58
root / root
0644
test_pass3.py
0.471 KB
April 17 2025 13:10:58
root / root
0644
test_raw_json.py
1.037 KB
April 17 2025 13:10:58
root / root
0644
test_recursion.py
1.64 KB
April 17 2025 13:10:58
root / root
0644
test_scanstring.py
7.469 KB
April 17 2025 13:10:58
root / root
0644
test_separators.py
0.92 KB
April 17 2025 13:10:58
root / root
0644
test_speedups.py
4.047 KB
April 17 2025 13:10:58
root / root
0644
test_str_subclass.py
0.723 KB
April 17 2025 13:10:58
root / root
0644
test_subclass.py
1.098 KB
April 17 2025 13:10:58
root / root
0644
test_tool.py
3.227 KB
April 17 2025 13:10:58
root / root
0644
test_tuple.py
1.788 KB
April 17 2025 13:10:58
root / root
0644
test_unicode.py
6.891 KB
April 17 2025 13:10:58
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF