github.com/treeverse/lakefs@v1.24.1-0.20240520134607-95648127bfb0/clients/python-wrapper/tests/utests/test_namedtuple.py (about)

     1  from tests.utests.common import expect_exception_context
     2  from lakefs.namedtuple import LenientNamedTuple
     3  
     4  
     5  class NamedTupleTest(LenientNamedTuple):
     6      field1: str
     7      field2: int
     8      field3: bool
     9  
    10  
    11  def test_namedtuple():
    12      nt = NamedTupleTest(
    13          field1="1",
    14          field2=1,
    15          field3=True)
    16      assert nt.field1 == "1"
    17      assert nt.field2 == 1
    18      assert nt.field3
    19  
    20      # try to modify value
    21      with expect_exception_context(AttributeError):
    22          nt.field1 = "2"
    23  
    24      # Create named tuple with unknown args
    25      kwargs = {
    26          "field1": "test",
    27          "field2": 2,
    28          "field3": False,
    29          "field4": "something",
    30          "field5": None,
    31      }
    32      nt2 = NamedTupleTest(**kwargs)
    33      assert nt.field1 != nt2.field1
    34      assert nt2.field1 == "test"
    35      assert nt2.field2 == 2
    36      assert not nt2.field3
    37  
    38      with expect_exception_context(AttributeError):
    39          nt2.field4  # pylint: disable=pointless-statement
    40  
    41      with expect_exception_context(AttributeError):
    42          nt2.field5  # pylint: disable=pointless-statement
    43  
    44      # Verify extra kwargs are in 'unknown' dict
    45      assert nt2.unknown['field4'] == "something"
    46      assert nt2.unknown['field5'] is None
    47  
    48      # Missing args
    49      with expect_exception_context(TypeError):
    50          NamedTupleTest(field2=1)
    51  
    52      # Verify comparison works with different unknown fields
    53      kwargs["field5"] = "something"
    54      nt3 = NamedTupleTest(**kwargs)
    55      assert nt2 == nt3