Python Forum
Slice qualified names.
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Slice qualified names.
#1
A helper function to slice a qualified name such as a python module name
_sentinel = object() # helps for qslice()

def qslice(qname, start, stop=_sentinel, step=None):
    """Slice a qualified name. Returns a qualified name.
    
    >>> qslice('foo.bar.baz', -2)
    bar
    >>> qslice('foo.bar.baz', -2, None)
    bar.baz
    """
    if stop is _sentinel:
        return qname.split('.')[start]
    else:
        return '.'.join(qname.split('.')[start:stop:step])


if __name__ == '__main__':
    import unittest
    
    class TestQslice(unittest.TestCase):
        
        def test_integer_argument(self):
            result = qslice('foo.bar.baz.qux', 1)
            self.assertEqual(result, 'bar')

        def test_middle_slice(self):
            result = qslice('foo.bar.baz.qux', 1, 3)
            self.assertEqual(result, 'bar.baz')

        def test_step_slice(self):
            result = qslice('foo.bar.baz.qux', 1, None, 2)
            self.assertEqual(result, 'bar.qux')

        def test_starting_slice(self):
            result = qslice('foo.bar.baz.qux', None, -1)
            self.assertEqual(result, 'foo.bar.baz')

        def test_ending_slice(self):
            result = qslice('foo.bar.baz.qux', 2, None)
            self.assertEqual(result, 'baz.qux')
            
    unittest.main()
Reply


Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020