docs: def generate_sphinx_all():
          """Generate sphinx documentation.
  
          This generates a .rst file for all auto-generated image methods. Use it
          to regenerate the docs with something like::
  
              $ python -c \
  "import pyvips; pyvips.Operation.generate_sphinx_all()" > x
  
          And copy-paste the file contents into doc/vimage.rst in the appropriate
          place.
  
          """
  
          # generate list of all nicknames we can generate docstrings for
  
          all_nicknames = []
  
          def add_nickname(gtype, a, b):
              nickname = nickname_find(gtype)
              try:
                  Operation.generate_sphinx(nickname)
                  all_nicknames.append(nickname)
              except Error:
                  pass
  
              type_map(gtype, add_nickname)
  
              return ffi.NULL
  
          type_map(type_from_name('VipsOperation'), add_nickname)
  
          all_nicknames.sort()
  
          # remove operations we have to wrap by hand
  
          exclude = ['scale', 'ifthenelse', 'bandjoin', 'bandrank']
          all_nicknames = [x for x in all_nicknames if x not in exclude]
  
          # Output summary table
          print('.. class:: pyvips.Image\n')
          print('   .. rubric:: Methods\n')
          print('   .. autosummary::')
          print('      :nosignatures:\n')
          for nickname in all_nicknames:
              print('      ~{0}'.format(nickname))
          print()
  
          # Output docs
          print()
          for nickname in all_nicknames:
              docstr = Operation.generate_sphinx(nickname)
              docstr = docstr.replace('\n', '\n      ')
              print('   ' + docstr)