code: def get_next_version(self):
      def increment(part):
          if isinstance(part, int):
              return part + 1
          type_ = type(part)
          part = list(part)
          if isinstance(part[-1], int):
              part[-1] += 1
          return type_(part)
  
      next_version = deepcopy(self)
      if next_version._version.dev:
          next_version._version.dev = increment(
              next_version._version.dev
          )
      elif next_version._version.post:
          next_version._version.post = increment(
              next_version._version.post
          )
      elif next_version._version.pre:
          next_version._version.pre = increment(
              next_version._version.pre
          )
      elif next_version._version.release:
          next_version._version.release = increment(
              next_version._version.release
          )
      elif next_version._version.epoch:
          next_version._version.epoch = increment(
              next_version._version.epoch
          )
      return next_version
  
imports: from __future__ import absolute_import, division, print_function
  from copy import deepcopy
  from attr import attrs, attrib
  import re
  import six
label_desc: Use image node_id 4 for calling the Version obj's underlying member method code with example usage: obj.get_next_version() and returns: next_version, type_, unknown