Philipp Hörist pushed to branch master at gajim / python-nbxmpp


Commits:
d0ecc851 by Philipp Hörist at 2025-10-22T09:13:56+02:00
feat: VCard4: Add get_parameter() method for easier access

- - - - -


2 changed files:

- nbxmpp/modules/vcard4.py
- test/unit/test_vcard4.py


Changes:

=====================================
nbxmpp/modules/vcard4.py
=====================================
@@ -309,6 +309,9 @@ class Parameters:
     def values(self) -> ValuesView[Parameter | MultiParameter | TzParameter]:
         return self._parameters.values()
 
+    def get_parameter(self, name: str) -> Parameter | MultiParameter | 
TzParameter:
+        return self._parameters[name]
+
     def get_types(self) -> set[str]:
         parameter = self._parameters.get("type")
         if parameter is None:


=====================================
test/unit/test_vcard4.py
=====================================
@@ -1,5 +1,6 @@
 import unittest
 
+from nbxmpp.modules.vcard4 import LanguageParameter
 from nbxmpp.modules.vcard4 import VCard
 from nbxmpp.simplexml import Node
 
@@ -11,7 +12,14 @@ class TestVCard4(unittest.TestCase):
             node="""
             <vcard xmlns="urn:ietf:params:xml:ns:vcard-4.0">
                 <fn><text>Peter Saint-Andre</text></fn>
-                
<n><surname>Saint-Andre</surname><given>Peter</given><additional></additional></n>
+                <n>
+                  <parameters>
+                    <language><language-tag>fr</language-tag></language>
+                  </parameters>
+                  <surname>Saint-Andre</surname>
+                  <given>Peter</given>
+                  <additional></additional>
+                </n>
                 <nickname><text>stpeter</text></nickname>
                 <nickname><text>psa</text></nickname>
                 
<photo><uri>https://stpeter.im/images/stpeter_oscon.jpg</uri></photo>
@@ -110,6 +118,13 @@ class TestVCard4(unittest.TestCase):
         nickname_props = list(filter(lambda p: p.name == "nickname", props))
         self.assertEqual(len(nickname_props), 2)
 
+        n_props = list(filter(lambda p: p.name == "n", props))
+        self.assertEqual(len(n_props), 1)
+        n_prop = n_props[0]
+        lang_param = n_prop.parameters.get_parameter("language")
+        assert isinstance(lang_param, LanguageParameter)
+        self.assertEqual(lang_param.value, "fr")
+
         # Preserve unsupported elements
         node = vcard.to_node()
         self.assertEqual(node.getTagData("unsupported-element"), "unsupported")



View it on GitLab: 
https://dev.gajim.org/gajim/python-nbxmpp/-/commit/d0ecc8514a28b6164d9aa36d5200a3fe4e7f983b

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/python-nbxmpp/-/commit/d0ecc8514a28b6164d9aa36d5200a3fe4e7f983b
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to