old_contents: # (c) 2012, Daniel Hokka Zakrisson <daniel@hozac.com>
  #
  # This file is part of Ansible
  #
  # Ansible is free software: you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
  # the Free Software Foundation, either version 3 of the License, or
  # (at your option) any later version.
  #
  # Ansible is distributed in the hope that it will be useful,
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  # GNU General Public License for more details.
  #
  # You should have received a copy of the GNU General Public License
  # along with Ansible.  If not, see <http://www.gnu.org/licenses/>.
  
  from __future__ import (absolute_import, division, print_function)
  __metaclass__ = type
  
  import subprocess
  from ansible.errors import AnsibleError
  from ansible.plugins.lookup import LookupBase
  
  class LookupModule(LookupBase):
  
      def run(self, terms, variables, **kwargs):
  
          ret = []
          for term in terms:
              p = subprocess.Popen(term, cwd=self._loader.get_basedir(), shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
              (stdout, stderr) = p.communicate()
              if p.returncode == 0:
                  ret.extend(stdout.splitlines())
              else:
                  raise AnsibleError("lookup_plugin.lines(%s) returned %d" % (term, p.returncode))
          return ret
  
new_contents: # (c) 2012, Daniel Hokka Zakrisson <daniel@hozac.com>
  #
  # This file is part of Ansible
  #
  # Ansible is free software: you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
  # the Free Software Foundation, either version 3 of the License, or
  # (at your option) any later version.
  #
  # Ansible is distributed in the hope that it will be useful,
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  # GNU General Public License for more details.
  #
  # You should have received a copy of the GNU General Public License
  # along with Ansible.  If not, see <http://www.gnu.org/licenses/>.
  
  from __future__ import (absolute_import, division, print_function)
  __metaclass__ = type
  
  import subprocess
  from ansible.errors import AnsibleError
  from ansible.plugins.lookup import LookupBase
  from ansible.module_utils._text import to_text
  
  class LookupModule(LookupBase):
  
      def run(self, terms, variables, **kwargs):
  
          ret = []
          for term in terms:
              p = subprocess.Popen(term, cwd=self._loader.get_basedir(), shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
              (stdout, stderr) = p.communicate()
              if p.returncode == 0:
                  ret.extend([to_text(l) for l in stdout.splitlines()])
              else:
                  raise AnsibleError("lookup_plugin.lines(%s) returned %d" % (term, p.returncode))
          return ret
  
subject: Fix the lines lookup to work on python3 (#17291)