diff --git a/changelogs/fragments/display-singleton.yaml b/changelogs/fragments/display-singleton.yaml
new file mode 100644
index 00000000000..f7612aa3a56
--- /dev/null
+++ b/changelogs/fragments/display-singleton.yaml
@@ -0,0 +1,2 @@
+minor_changes:
+- Display - Add a ``Singleton`` metaclass and apply it to ``Display`` to remove the need of using ``__main__.Display`` as a pseudo singleton
diff --git a/docs/docsite/rst/dev_guide/developing_plugins.rst b/docs/docsite/rst/dev_guide/developing_plugins.rst
index ef72fa84b91..922021e83dd 100644
--- a/docs/docsite/rst/dev_guide/developing_plugins.rst
+++ b/docs/docsite/rst/dev_guide/developing_plugins.rst
@@ -236,12 +236,9 @@ Here's a simple lookup plugin implementation --- this lookup returns the content
"""
from ansible.errors import AnsibleError, AnsibleParserError
from ansible.plugins.lookup import LookupBase
+ from ansible.utils.display import Display
- try:
- from __main__ import display
- except ImportError:
- from ansible.utils.display import Display
- display = Display()
+ display = Display()
class LookupModule(LookupBase):
diff --git a/docs/docsite/rst/dev_guide/testing/sanity/no-main-display.rst b/docs/docsite/rst/dev_guide/testing/sanity/no-main-display.rst
new file mode 100644
index 00000000000..64c4be8c37f
--- /dev/null
+++ b/docs/docsite/rst/dev_guide/testing/sanity/no-main-display.rst
@@ -0,0 +1,12 @@
+Sanity Tests ยป no-main-display
+==============================
+
+As of Ansible 2.8, ``Display`` should no longer be imported from ``__main__``.
+
+``Display`` is now a singleton and should be utilized like the following::
+
+ from ansible.utils.display import Display
+ display = Display()
+
+There is no longer a need to attempt ``from __main__ import display`` inside
+a ``try/except`` block.
diff --git a/docs/docsite/rst/porting_guides/porting_guide_2.0.rst b/docs/docsite/rst/porting_guides/porting_guide_2.0.rst
index 9a84dd8ed97..022499be2b4 100644
--- a/docs/docsite/rst/porting_guides/porting_guide_2.0.rst
+++ b/docs/docsite/rst/porting_guides/porting_guide_2.0.rst
@@ -332,8 +332,8 @@ As a simple example we are going to make a hybrid ``fileglob`` lookup plugin.
from ansible.utils import (listify_lookup_plugin_terms, path_dwim, warning)
except ImportError:
# ansible-2.0
- from __main__ import display
- warning = display.warning
+ from ansible.utils.display import Display
+ warning = Display().warning
class LookupModule(LookupBase):
diff --git a/docs/docsite/rst/porting_guides/porting_guide_2.8.rst b/docs/docsite/rst/porting_guides/porting_guide_2.8.rst
index fd56b239c97..75b51df49d8 100644
--- a/docs/docsite/rst/porting_guides/porting_guide_2.8.rst
+++ b/docs/docsite/rst/porting_guides/porting_guide_2.8.rst
@@ -124,7 +124,28 @@ Plugins
Porting custom scripts
======================
-No notable changes.
+Display class
+-------------
+
+As of Ansible 2.8, the ``Display`` class is now a "singleton". Instead of using ``__main__.display`` each file should
+import and instantiate ``ansible.utils.display.Display`` on it's own.
+
+**OLD** In Ansible 2.7 (and earlier) the following was used to access the ``display`` object:
+
+.. code-block:: python
+
+ try:
+ from __main__ import display
+ except ImportError:
+ from ansible.utils.display import Display
+ display = Display()
+
+**NEW** In Ansible 2.8 the following should be used:
+
+.. code-block:: python
+
+ from ansible.utils.display import Display
+ display = Display()
Networking
==========
diff --git a/lib/ansible/cli/__init__.py b/lib/ansible/cli/__init__.py
index c09066e2318..5ede3977110 100644
--- a/lib/ansible/cli/__init__.py
+++ b/lib/ansible/cli/__init__.py
@@ -40,16 +40,13 @@ from ansible.module_utils.six import with_metaclass, string_types
from ansible.module_utils._text import to_bytes, to_text
from ansible.parsing.dataloader import DataLoader
from ansible.release import __version__
+from ansible.utils.display import Display
from ansible.utils.path import unfrackpath
from ansible.utils.vars import load_extra_vars, load_options_vars
from ansible.vars.manager import VariableManager
from ansible.parsing.vault import PromptVaultSecret, get_file_vault_secret
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class SortedOptParser(optparse.OptionParser):
diff --git a/lib/ansible/cli/adhoc.py b/lib/ansible/cli/adhoc.py
index 18427d8caed..0185f56ece2 100644
--- a/lib/ansible/cli/adhoc.py
+++ b/lib/ansible/cli/adhoc.py
@@ -18,8 +18,6 @@
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
-########################################################
-
from ansible import constants as C
from ansible.cli import CLI
from ansible.errors import AnsibleError, AnsibleOptionsError
@@ -29,15 +27,10 @@ from ansible.parsing.splitter import parse_kv
from ansible.playbook import Playbook
from ansible.playbook.play import Play
from ansible.plugins.loader import get_all_plugin_loaders
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
-
+display = Display()
-########################################################
class AdHocCLI(CLI):
''' is an extra-simple tool/framework/API for doing 'remote things'.
diff --git a/lib/ansible/cli/config.py b/lib/ansible/cli/config.py
index f6f239845f6..31097213607 100644
--- a/lib/ansible/cli/config.py
+++ b/lib/ansible/cli/config.py
@@ -16,14 +16,10 @@ from ansible.errors import AnsibleError, AnsibleOptionsError
from ansible.module_utils._text import to_native, to_text
from ansible.parsing.yaml.dumper import AnsibleDumper
from ansible.utils.color import stringc
+from ansible.utils.display import Display
from ansible.utils.path import unfrackpath
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ConfigCLI(CLI):
diff --git a/lib/ansible/cli/console.py b/lib/ansible/cli/console.py
index f2349fc6b59..66563a55161 100644
--- a/lib/ansible/cli/console.py
+++ b/lib/ansible/cli/console.py
@@ -46,12 +46,9 @@ from ansible.playbook.play import Play
from ansible.plugins.loader import module_loader, fragment_loader
from ansible.utils import plugin_docs
from ansible.utils.color import stringc
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ConsoleCLI(CLI, cmd.Cmd):
diff --git a/lib/ansible/cli/doc.py b/lib/ansible/cli/doc.py
index df5cd33021c..b911a6a8019 100644
--- a/lib/ansible/cli/doc.py
+++ b/lib/ansible/cli/doc.py
@@ -35,13 +35,10 @@ from ansible.parsing.metadata import extract_metadata
from ansible.parsing.plugin_docs import read_docstub
from ansible.parsing.yaml.dumper import AnsibleDumper
from ansible.plugins.loader import action_loader, fragment_loader
+from ansible.utils.display import Display
from ansible.utils.plugin_docs import BLACKLIST, get_docstring
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class DocCLI(CLI):
diff --git a/lib/ansible/cli/galaxy.py b/lib/ansible/cli/galaxy.py
index a3ae8ee4bce..199e50b8425 100644
--- a/lib/ansible/cli/galaxy.py
+++ b/lib/ansible/cli/galaxy.py
@@ -41,12 +41,9 @@ from ansible.galaxy.role import GalaxyRole
from ansible.galaxy.token import GalaxyToken
from ansible.module_utils._text import to_native, to_text
from ansible.playbook.role.requirement import RoleRequirement
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class GalaxyCLI(CLI):
diff --git a/lib/ansible/cli/inventory.py b/lib/ansible/cli/inventory.py
index a39148e7076..a5dd98a4469 100644
--- a/lib/ansible/cli/inventory.py
+++ b/lib/ansible/cli/inventory.py
@@ -27,12 +27,9 @@ from ansible.inventory.host import Host
from ansible.plugins.loader import vars_loader
from ansible.parsing.dataloader import DataLoader
from ansible.utils.vars import combine_vars
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
INTERNAL_VARS = frozenset(['ansible_diff_mode',
'ansible_facts',
diff --git a/lib/ansible/cli/playbook.py b/lib/ansible/cli/playbook.py
index 1cbf3e80876..8f3b40c17da 100644
--- a/lib/ansible/cli/playbook.py
+++ b/lib/ansible/cli/playbook.py
@@ -15,8 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with Ansible. If not, see .
-########################################################
-
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
@@ -28,12 +26,9 @@ from ansible.errors import AnsibleError, AnsibleOptionsError
from ansible.executor.playbook_executor import PlaybookExecutor
from ansible.playbook.block import Block
from ansible.playbook.play_context import PlayContext
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class PlaybookCLI(CLI):
diff --git a/lib/ansible/cli/pull.py b/lib/ansible/cli/pull.py
index d6377ae9b05..44115611bc5 100644
--- a/lib/ansible/cli/pull.py
+++ b/lib/ansible/cli/pull.py
@@ -18,7 +18,6 @@
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
-########################################################
import datetime
import os
import platform
@@ -34,16 +33,11 @@ from ansible.errors import AnsibleOptionsError
from ansible.module_utils._text import to_native, to_text
from ansible.plugins.loader import module_loader
from ansible.utils.cmd_functions import run_cmd
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
-########################################################
-
class PullCLI(CLI):
''' is used to up a remote copy of ansible on each managed node,
each set to run via cron and update playbook source via a source repository.
diff --git a/lib/ansible/cli/vault.py b/lib/ansible/cli/vault.py
index dcc617765f9..a5955e71321 100644
--- a/lib/ansible/cli/vault.py
+++ b/lib/ansible/cli/vault.py
@@ -28,12 +28,9 @@ from ansible.errors import AnsibleOptionsError
from ansible.module_utils._text import to_text, to_bytes
from ansible.parsing.dataloader import DataLoader
from ansible.parsing.vault import VaultEditor, VaultLib, match_encrypt_secret
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class VaultCLI(CLI):
diff --git a/lib/ansible/constants.py b/lib/ansible/constants.py
index fbe884f2844..65892e01b97 100644
--- a/lib/ansible/constants.py
+++ b/lib/ansible/constants.py
@@ -20,8 +20,8 @@ from ansible.config.manager import ConfigManager, ensure_type, get_ini_config_va
def _warning(msg):
''' display is not guaranteed here, nor it being the full class, but try anyways, fallback to sys.stderr.write '''
try:
- from __main__ import display
- display.warning(msg)
+ from ansible.utils.display import Display
+ Display().warning(msg)
except Exception:
import sys
sys.stderr.write(' [WARNING] %s\n' % (msg))
@@ -30,8 +30,8 @@ def _warning(msg):
def _deprecated(msg, version='2.8'):
''' display is not guaranteed here, nor it being the full class, but try anyways, fallback to sys.stderr.write '''
try:
- from __main__ import display
- display.deprecated(msg, version=version)
+ from ansible.utils.display import Display
+ Display().deprecated(msg, version=version)
except Exception:
import sys
sys.stderr.write(' [DEPRECATED] %s, to be removed in %s\n' % (msg, version))
diff --git a/lib/ansible/executor/module_common.py b/lib/ansible/executor/module_common.py
index f3f3006e948..65525ae3b4d 100644
--- a/lib/ansible/executor/module_common.py
+++ b/lib/ansible/executor/module_common.py
@@ -42,12 +42,9 @@ from ansible.plugins.loader import module_utils_loader
# variable to the object and then it never gets updated.
from ansible.executor import action_write_locks
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+from ansible.utils.display import Display
+display = Display()
REPLACER = b"#<>"
REPLACER_VERSION = b"\"<>\""
diff --git a/lib/ansible/executor/play_iterator.py b/lib/ansible/executor/play_iterator.py
index 9bd78c932d9..665e3fe1810 100644
--- a/lib/ansible/executor/play_iterator.py
+++ b/lib/ansible/executor/play_iterator.py
@@ -26,13 +26,10 @@ from ansible.module_utils.six import iteritems
from ansible.module_utils.parsing.convert_bool import boolean
from ansible.playbook.block import Block
from ansible.playbook.task import Task
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
__all__ = ['PlayIterator']
diff --git a/lib/ansible/executor/playbook_executor.py b/lib/ansible/executor/playbook_executor.py
index 4ad8214a4ee..e23ad7957eb 100644
--- a/lib/ansible/executor/playbook_executor.py
+++ b/lib/ansible/executor/playbook_executor.py
@@ -30,12 +30,9 @@ from ansible.utils.helpers import pct_to_int
from ansible.module_utils.parsing.convert_bool import boolean
from ansible.utils.path import makedirs_safe
from ansible.utils.ssh_functions import check_for_controlpersist
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class PlaybookExecutor:
diff --git a/lib/ansible/executor/process/worker.py b/lib/ansible/executor/process/worker.py
index 2cf9bbb45a7..a1296d2931e 100644
--- a/lib/ansible/executor/process/worker.py
+++ b/lib/ansible/executor/process/worker.py
@@ -40,15 +40,12 @@ from ansible.errors import AnsibleConnectionFailure
from ansible.executor.task_executor import TaskExecutor
from ansible.executor.task_result import TaskResult
from ansible.module_utils._text import to_text
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+from ansible.utils.display import Display
__all__ = ['WorkerProcess']
+display = Display()
+
class WorkerProcess(multiprocessing.Process):
'''
diff --git a/lib/ansible/executor/task_executor.py b/lib/ansible/executor/task_executor.py
index 3d94531bb39..9ccb70f0f75 100644
--- a/lib/ansible/executor/task_executor.py
+++ b/lib/ansible/executor/task_executor.py
@@ -25,13 +25,10 @@ from ansible.template import Templar
from ansible.utils.listify import listify_lookup_plugin_terms
from ansible.utils.unsafe_proxy import UnsafeProxy, wrap_var
from ansible.vars.clean import namespace_facts, clean_facts
+from ansible.utils.display import Display
from ansible.utils.vars import combine_vars
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
__all__ = ['TaskExecutor']
diff --git a/lib/ansible/executor/task_queue_manager.py b/lib/ansible/executor/task_queue_manager.py
index f45c5de4b35..67a741b989a 100644
--- a/lib/ansible/executor/task_queue_manager.py
+++ b/lib/ansible/executor/task_queue_manager.py
@@ -38,16 +38,13 @@ from ansible.template import Templar
from ansible.utils.helpers import pct_to_int
from ansible.vars.hostvars import HostVars
from ansible.vars.reserved import warn_if_reserved
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+from ansible.utils.display import Display
__all__ = ['TaskQueueManager']
+display = Display()
+
class TaskQueueManager:
diff --git a/lib/ansible/galaxy/api.py b/lib/ansible/galaxy/api.py
index 18bd0310933..e11f3926abb 100644
--- a/lib/ansible/galaxy/api.py
+++ b/lib/ansible/galaxy/api.py
@@ -32,12 +32,9 @@ from ansible.module_utils.six.moves.urllib.error import HTTPError
from ansible.module_utils.six.moves.urllib.parse import quote as urlquote, urlencode
from ansible.module_utils._text import to_bytes, to_native, to_text
from ansible.module_utils.urls import open_url
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
def g_connect(method):
diff --git a/lib/ansible/galaxy/login.py b/lib/ansible/galaxy/login.py
index 3b74aaa01c5..e418a5ca602 100644
--- a/lib/ansible/galaxy/login.py
+++ b/lib/ansible/galaxy/login.py
@@ -31,12 +31,9 @@ from ansible.module_utils.six.moves.urllib.parse import quote as urlquote, urlpa
from ansible.module_utils.six.moves.urllib.error import HTTPError
from ansible.module_utils.urls import open_url
from ansible.utils.color import stringc
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class GalaxyLogin(object):
diff --git a/lib/ansible/galaxy/role.py b/lib/ansible/galaxy/role.py
index 9367486625b..e727f112b0b 100644
--- a/lib/ansible/galaxy/role.py
+++ b/lib/ansible/galaxy/role.py
@@ -36,12 +36,9 @@ from ansible.module_utils._text import to_native, to_text
from ansible.module_utils.urls import open_url
from ansible.playbook.role.requirement import RoleRequirement
from ansible.galaxy.api import GalaxyAPI
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class GalaxyRole(object):
diff --git a/lib/ansible/galaxy/token.py b/lib/ansible/galaxy/token.py
index edfeaee8dc3..4af7511b4cb 100644
--- a/lib/ansible/galaxy/token.py
+++ b/lib/ansible/galaxy/token.py
@@ -26,11 +26,9 @@ from stat import S_IRUSR, S_IWUSR
import yaml
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+from ansible.utils.display import Display
+
+display = Display()
class GalaxyToken(object):
diff --git a/lib/ansible/inventory/data.py b/lib/ansible/inventory/data.py
index 9143c22410a..e1838458910 100644
--- a/lib/ansible/inventory/data.py
+++ b/lib/ansible/inventory/data.py
@@ -26,14 +26,11 @@ from ansible.errors import AnsibleError
from ansible.inventory.group import Group
from ansible.inventory.host import Host
from ansible.module_utils.six import iteritems, string_types
+from ansible.utils.display import Display
from ansible.utils.vars import combine_vars
from ansible.utils.path import basedir
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class InventoryData(object):
diff --git a/lib/ansible/inventory/manager.py b/lib/ansible/inventory/manager.py
index 6e174a04f7d..a920a5468ac 100644
--- a/lib/ansible/inventory/manager.py
+++ b/lib/ansible/inventory/manager.py
@@ -32,12 +32,9 @@ from ansible.module_utils._text import to_bytes, to_text
from ansible.parsing.utils.addresses import parse_address
from ansible.plugins.loader import inventory_loader
from ansible.utils.path import unfrackpath
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
IGNORED_ALWAYS = [br"^\.", b"^host_vars$", b"^group_vars$", b"^vars_plugins$"]
IGNORED_PATTERNS = [to_bytes(x) for x in C.INVENTORY_IGNORE_PATTERNS]
diff --git a/lib/ansible/parsing/dataloader.py b/lib/ansible/parsing/dataloader.py
index 0b9a3ff9f27..390d0c25626 100644
--- a/lib/ansible/parsing/dataloader.py
+++ b/lib/ansible/parsing/dataloader.py
@@ -21,12 +21,9 @@ from ansible.parsing.quoting import unquote
from ansible.parsing.utils.yaml import from_yaml
from ansible.parsing.vault import VaultLib, b_HEADER, is_encrypted, is_encrypted_file, parse_vaulttext_envelope
from ansible.utils.path import unfrackpath
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
# Tries to determine if a path is inside a role, last dir must be 'tasks'
diff --git a/lib/ansible/parsing/plugin_docs.py b/lib/ansible/parsing/plugin_docs.py
index 1f0dbbac179..d589fa9770d 100644
--- a/lib/ansible/parsing/plugin_docs.py
+++ b/lib/ansible/parsing/plugin_docs.py
@@ -11,12 +11,9 @@ import yaml
from ansible.module_utils._text import to_text
from ansible.parsing.metadata import extract_metadata
from ansible.parsing.yaml.loader import AnsibleLoader
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
def read_docstring(filename, verbose=True, ignore_errors=True):
diff --git a/lib/ansible/parsing/vault/__init__.py b/lib/ansible/parsing/vault/__init__.py
index 851f509c642..b6967edde87 100644
--- a/lib/ansible/parsing/vault/__init__.py
+++ b/lib/ansible/parsing/vault/__init__.py
@@ -75,13 +75,10 @@ from ansible.module_utils.six import PY3, binary_type
# Note: on py2, this zip is izip not the list based zip() builtin
from ansible.module_utils.six.moves import zip
from ansible.module_utils._text import to_bytes, to_text, to_native
+from ansible.utils.display import Display
from ansible.utils.path import makedirs_safe
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
b_HEADER = b'$ANSIBLE_VAULT'
diff --git a/lib/ansible/parsing/yaml/constructor.py b/lib/ansible/parsing/yaml/constructor.py
index 80f660a960e..b6b4a3e7b83 100644
--- a/lib/ansible/parsing/yaml/constructor.py
+++ b/lib/ansible/parsing/yaml/constructor.py
@@ -27,12 +27,9 @@ from ansible.parsing.yaml.objects import AnsibleMapping, AnsibleSequence, Ansibl
from ansible.parsing.yaml.objects import AnsibleVaultEncryptedUnicode
from ansible.utils.unsafe_proxy import wrap_var
from ansible.parsing.vault import VaultLib
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class AnsibleConstructor(SafeConstructor):
diff --git a/lib/ansible/playbook/__init__.py b/lib/ansible/playbook/__init__.py
index 6c07250721a..9237478ddff 100644
--- a/lib/ansible/playbook/__init__.py
+++ b/lib/ansible/playbook/__init__.py
@@ -27,12 +27,9 @@ from ansible.module_utils._text import to_text, to_native
from ansible.playbook.play import Play
from ansible.playbook.playbook_include import PlaybookInclude
from ansible.plugins.loader import get_all_plugin_loaders
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
__all__ = ['Playbook']
diff --git a/lib/ansible/playbook/base.py b/lib/ansible/playbook/base.py
index 48343050dd3..e74bfbd557c 100644
--- a/lib/ansible/playbook/base.py
+++ b/lib/ansible/playbook/base.py
@@ -21,12 +21,9 @@ from ansible.module_utils._text import to_text, to_native
from ansible.playbook.attribute import Attribute, FieldAttribute
from ansible.parsing.dataloader import DataLoader
from ansible.utils.vars import combine_vars, isidentifier, get_unique_id
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
def _generic_g(prop_name, self):
diff --git a/lib/ansible/playbook/become.py b/lib/ansible/playbook/become.py
index 8f607176ad1..374411cb141 100644
--- a/lib/ansible/playbook/become.py
+++ b/lib/ansible/playbook/become.py
@@ -22,12 +22,9 @@ __metaclass__ = type
from ansible import constants as C
from ansible.errors import AnsibleParserError
from ansible.playbook.attribute import FieldAttribute
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class Become:
diff --git a/lib/ansible/playbook/conditional.py b/lib/ansible/playbook/conditional.py
index 0e846240dc7..3f86368d42a 100644
--- a/lib/ansible/playbook/conditional.py
+++ b/lib/ansible/playbook/conditional.py
@@ -29,13 +29,9 @@ from ansible.errors import AnsibleError, AnsibleUndefinedVariable
from ansible.module_utils.six import text_type
from ansible.module_utils._text import to_native
from ansible.playbook.attribute import FieldAttribute
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
-
+display = Display()
DEFINED_REGEX = re.compile(r'(hostvars\[.+\]|[\w_]+)\s+(not\s+is|is|is\s+not)\s+(defined|undefined)')
LOOKUP_REGEX = re.compile(r'lookup\s*\(')
diff --git a/lib/ansible/playbook/helpers.py b/lib/ansible/playbook/helpers.py
index 2196ff42ddf..dd49713b083 100644
--- a/lib/ansible/playbook/helpers.py
+++ b/lib/ansible/playbook/helpers.py
@@ -25,12 +25,9 @@ from ansible.errors import AnsibleParserError, AnsibleUndefinedVariable, Ansible
from ansible.module_utils._text import to_native
from ansible.module_utils.six import string_types
from ansible.parsing.mod_args import ModuleArgsParser
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
def load_list_of_blocks(ds, play, parent_block=None, role=None, task_include=None, use_handlers=False, variable_manager=None, loader=None):
diff --git a/lib/ansible/playbook/included_file.py b/lib/ansible/playbook/included_file.py
index 1a6a519fc7b..51649812dea 100644
--- a/lib/ansible/playbook/included_file.py
+++ b/lib/ansible/playbook/included_file.py
@@ -24,12 +24,9 @@ import os
from ansible.playbook.task_include import TaskInclude
from ansible.playbook.role_include import IncludeRole
from ansible.template import Templar
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class IncludedFile:
diff --git a/lib/ansible/playbook/play.py b/lib/ansible/playbook/play.py
index 2469122ca1f..6dbd384d382 100644
--- a/lib/ansible/playbook/play.py
+++ b/lib/ansible/playbook/play.py
@@ -30,12 +30,9 @@ from ansible.playbook.helpers import load_list_of_blocks, load_list_of_roles
from ansible.playbook.role import Role
from ansible.playbook.taggable import Taggable
from ansible.vars.manager import preprocess_vars
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
__all__ = ['Play']
diff --git a/lib/ansible/playbook/play_context.py b/lib/ansible/playbook/play_context.py
index d1ec159bb9c..de3a7022503 100644
--- a/lib/ansible/playbook/play_context.py
+++ b/lib/ansible/playbook/play_context.py
@@ -37,14 +37,11 @@ from ansible.module_utils.parsing.convert_bool import boolean
from ansible.playbook.attribute import FieldAttribute
from ansible.playbook.base import Base
from ansible.plugins import get_plugin_class
+from ansible.utils.display import Display
from ansible.utils.ssh_functions import check_for_controlpersist
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
__all__ = ['PlayContext']
diff --git a/lib/ansible/playbook/role/definition.py b/lib/ansible/playbook/role/definition.py
index 658749c271f..235a54490e3 100644
--- a/lib/ansible/playbook/role/definition.py
+++ b/lib/ansible/playbook/role/definition.py
@@ -32,16 +32,12 @@ from ansible.playbook.conditional import Conditional
from ansible.playbook.taggable import Taggable
from ansible.template import Templar
from ansible.utils.path import unfrackpath
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
-
+from ansible.utils.display import Display
__all__ = ['RoleDefinition']
+display = Display()
+
class RoleDefinition(Base, Become, Conditional, Taggable):
diff --git a/lib/ansible/playbook/role/requirement.py b/lib/ansible/playbook/role/requirement.py
index 764d0c591f6..d77dda69911 100644
--- a/lib/ansible/playbook/role/requirement.py
+++ b/lib/ansible/playbook/role/requirement.py
@@ -31,11 +31,10 @@ from ansible.module_utils._text import to_native
from ansible.module_utils.common.process import get_bin_path
from ansible.module_utils.six import string_types
from ansible.playbook.role.definition import RoleDefinition
-
+from ansible.utils.display import Display
__all__ = ['RoleRequirement']
-
VALID_SPEC_KEYS = [
'name',
'role',
@@ -44,11 +43,7 @@ VALID_SPEC_KEYS = [
'version',
]
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class RoleRequirement(RoleDefinition):
diff --git a/lib/ansible/playbook/role_include.py b/lib/ansible/playbook/role_include.py
index bfabca4b554..c84342a2fc6 100644
--- a/lib/ansible/playbook/role_include.py
+++ b/lib/ansible/playbook/role_include.py
@@ -1,4 +1,3 @@
-
#
# This file is part of Ansible
#
@@ -27,15 +26,12 @@ from ansible.playbook.block import Block
from ansible.playbook.task_include import TaskInclude
from ansible.playbook.role import Role
from ansible.playbook.role.include import RoleInclude
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+from ansible.utils.display import Display
__all__ = ['IncludeRole']
+display = Display()
+
class IncludeRole(TaskInclude):
diff --git a/lib/ansible/playbook/task.py b/lib/ansible/playbook/task.py
index 72ec21c25f2..34cd15568f3 100644
--- a/lib/ansible/playbook/task.py
+++ b/lib/ansible/playbook/task.py
@@ -36,16 +36,12 @@ from ansible.playbook.conditional import Conditional
from ansible.playbook.loop_control import LoopControl
from ansible.playbook.role import Role
from ansible.playbook.taggable import Taggable
-
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+from ansible.utils.display import Display
__all__ = ['Task']
+display = Display()
+
class Task(Base, Conditional, Taggable, Become):
diff --git a/lib/ansible/playbook/task_include.py b/lib/ansible/playbook/task_include.py
index 40b7861cd71..5a11f4c635d 100644
--- a/lib/ansible/playbook/task_include.py
+++ b/lib/ansible/playbook/task_include.py
@@ -24,15 +24,12 @@ from ansible.errors import AnsibleParserError
from ansible.playbook.attribute import FieldAttribute
from ansible.playbook.block import Block
from ansible.playbook.task import Task
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+from ansible.utils.display import Display
__all__ = ['TaskInclude']
+display = Display()
+
class TaskInclude(Task):
diff --git a/lib/ansible/plugins/__init__.py b/lib/ansible/plugins/__init__.py
index 87c7ba446d1..a788222936d 100644
--- a/lib/ansible/plugins/__init__.py
+++ b/lib/ansible/plugins/__init__.py
@@ -25,12 +25,9 @@ from abc import ABCMeta
from ansible import constants as C
from ansible.module_utils.six import with_metaclass, string_types
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
# Global so that all instances of a PluginLoader will share the caches
MODULE_CACHE = {}
diff --git a/lib/ansible/plugins/action/__init__.py b/lib/ansible/plugins/action/__init__.py
index ada3b6ba9f5..63ef5b906a3 100644
--- a/lib/ansible/plugins/action/__init__.py
+++ b/lib/ansible/plugins/action/__init__.py
@@ -26,15 +26,12 @@ from ansible.module_utils.six.moves import shlex_quote
from ansible.module_utils._text import to_bytes, to_native, to_text
from ansible.parsing.utils.jsonify import jsonify
from ansible.release import __version__
+from ansible.utils.display import Display
from ansible.utils.unsafe_proxy import wrap_var
from ansible.vars.clean import remove_internal_keys
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionBase(with_metaclass(ABCMeta, object)):
diff --git a/lib/ansible/plugins/action/add_host.py b/lib/ansible/plugins/action/add_host.py
index f92588fe7d4..5851994fdb6 100644
--- a/lib/ansible/plugins/action/add_host.py
+++ b/lib/ansible/plugins/action/add_host.py
@@ -24,12 +24,9 @@ from ansible.errors import AnsibleError
from ansible.module_utils.six import string_types
from ansible.plugins.action import ActionBase
from ansible.parsing.utils.addresses import parse_address
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionModule(ActionBase):
diff --git a/lib/ansible/plugins/action/aireos.py b/lib/ansible/plugins/action/aireos.py
index d9c61242a9c..18bcad695cb 100644
--- a/lib/ansible/plugins/action/aireos.py
+++ b/lib/ansible/plugins/action/aireos.py
@@ -28,13 +28,9 @@ from ansible.module_utils.connection import Connection
from ansible.plugins.action.normal import ActionModule as _ActionModule
from ansible.module_utils.network.aireos.aireos import aireos_provider_spec
from ansible.module_utils.network.common.utils import load_provider
+from ansible.utils.display import Display
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionModule(_ActionModule):
diff --git a/lib/ansible/plugins/action/aruba.py b/lib/ansible/plugins/action/aruba.py
index c573938cd2c..daf4e64efc7 100644
--- a/lib/ansible/plugins/action/aruba.py
+++ b/lib/ansible/plugins/action/aruba.py
@@ -28,12 +28,9 @@ from ansible.module_utils.connection import Connection
from ansible.plugins.action.normal import ActionModule as _ActionModule
from ansible.module_utils.network.aruba.aruba import aruba_provider_spec
from ansible.module_utils.network.common.utils import load_provider
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionModule(_ActionModule):
diff --git a/lib/ansible/plugins/action/asa.py b/lib/ansible/plugins/action/asa.py
index eec4750a29b..1406b6dc88b 100644
--- a/lib/ansible/plugins/action/asa.py
+++ b/lib/ansible/plugins/action/asa.py
@@ -27,13 +27,9 @@ from ansible import constants as C
from ansible.plugins.action.normal import ActionModule as _ActionModule
from ansible.module_utils.network.asa.asa import asa_provider_spec
from ansible.module_utils.network.common.utils import load_provider
+from ansible.utils.display import Display
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionModule(_ActionModule):
diff --git a/lib/ansible/plugins/action/bigip.py b/lib/ansible/plugins/action/bigip.py
index 967f6074b4c..9d89b4d3b85 100644
--- a/lib/ansible/plugins/action/bigip.py
+++ b/lib/ansible/plugins/action/bigip.py
@@ -28,17 +28,14 @@ from ansible.module_utils._text import to_text
from ansible.module_utils.connection import Connection
from ansible.module_utils.network.common.utils import load_provider
from ansible.plugins.action.normal import ActionModule as _ActionModule
+from ansible.utils.display import Display
try:
from library.module_utils.network.f5.common import f5_provider_spec
except:
from ansible.module_utils.network.f5.common import f5_provider_spec
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionModule(_ActionModule):
diff --git a/lib/ansible/plugins/action/bigiq.py b/lib/ansible/plugins/action/bigiq.py
index 182d917cb25..95ed9252a40 100644
--- a/lib/ansible/plugins/action/bigiq.py
+++ b/lib/ansible/plugins/action/bigiq.py
@@ -28,17 +28,14 @@ from ansible.module_utils._text import to_text
from ansible.module_utils.connection import Connection
from ansible.module_utils.network.common.utils import load_provider
from ansible.plugins.action.normal import ActionModule as _ActionModule
+from ansible.utils.display import Display
try:
from library.module_utils.network.f5.common import f5_provider_spec
except:
from ansible.module_utils.network.f5.common import f5_provider_spec
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionModule(_ActionModule):
diff --git a/lib/ansible/plugins/action/ce.py b/lib/ansible/plugins/action/ce.py
index 2211083a1a8..fa5653bc615 100644
--- a/lib/ansible/plugins/action/ce.py
+++ b/lib/ansible/plugins/action/ce.py
@@ -28,13 +28,9 @@ from ansible.module_utils.connection import Connection
from ansible.plugins.action.normal import ActionModule as _ActionModule
from ansible.module_utils.network.cloudengine.ce import ce_provider_spec
from ansible.module_utils.network.common.utils import load_provider
+from ansible.utils.display import Display
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
CLI_SUPPORTED_MODULES = ['ce_config', 'ce_command']
diff --git a/lib/ansible/plugins/action/cnos.py b/lib/ansible/plugins/action/cnos.py
index d2f6a3b0a77..0c62124082b 100644
--- a/lib/ansible/plugins/action/cnos.py
+++ b/lib/ansible/plugins/action/cnos.py
@@ -26,13 +26,9 @@ from ansible.module_utils.network.cnos.cnos import cnos_provider_spec
from ansible.module_utils.network.common.utils import load_provider
from ansible.module_utils.connection import Connection
from ansible.module_utils._text import to_text
+from ansible.utils.display import Display
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionModule(_ActionModule):
diff --git a/lib/ansible/plugins/action/dellos10.py b/lib/ansible/plugins/action/dellos10.py
index f3eab92db07..b102f884eee 100644
--- a/lib/ansible/plugins/action/dellos10.py
+++ b/lib/ansible/plugins/action/dellos10.py
@@ -30,12 +30,9 @@ from ansible.module_utils.connection import Connection
from ansible.plugins.action.normal import ActionModule as _ActionModule
from ansible.module_utils.network.common.utils import load_provider
from ansible.module_utils.network.dellos10.dellos10 import dellos10_provider_spec
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionModule(_ActionModule):
diff --git a/lib/ansible/plugins/action/dellos6.py b/lib/ansible/plugins/action/dellos6.py
index c505789456e..84049f14bce 100644
--- a/lib/ansible/plugins/action/dellos6.py
+++ b/lib/ansible/plugins/action/dellos6.py
@@ -30,12 +30,9 @@ from ansible.module_utils.connection import Connection
from ansible.plugins.action.normal import ActionModule as _ActionModule
from ansible.module_utils.network.dellos6.dellos6 import dellos6_provider_spec
from ansible.module_utils.network.common.utils import load_provider
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionModule(_ActionModule):
diff --git a/lib/ansible/plugins/action/dellos9.py b/lib/ansible/plugins/action/dellos9.py
index df13626c759..202061b1df9 100644
--- a/lib/ansible/plugins/action/dellos9.py
+++ b/lib/ansible/plugins/action/dellos9.py
@@ -30,12 +30,9 @@ from ansible.module_utils.connection import Connection
from ansible.plugins.action.normal import ActionModule as _ActionModule
from ansible.module_utils.network.common.utils import load_provider
from ansible.module_utils.network.dellos9.dellos9 import dellos9_provider_spec
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionModule(_ActionModule):
diff --git a/lib/ansible/plugins/action/enos.py b/lib/ansible/plugins/action/enos.py
index 1182f57e584..58bd4ca3907 100644
--- a/lib/ansible/plugins/action/enos.py
+++ b/lib/ansible/plugins/action/enos.py
@@ -26,13 +26,9 @@ from ansible.module_utils.network.enos.enos import enos_provider_spec
from ansible.module_utils.network.common.utils import load_provider
from ansible.module_utils.connection import Connection
from ansible.module_utils._text import to_text
+from ansible.utils.display import Display
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionModule(_ActionModule):
diff --git a/lib/ansible/plugins/action/eos.py b/lib/ansible/plugins/action/eos.py
index 0ecfcb76227..218e53d0807 100644
--- a/lib/ansible/plugins/action/eos.py
+++ b/lib/ansible/plugins/action/eos.py
@@ -28,12 +28,9 @@ from ansible.module_utils.connection import Connection
from ansible.module_utils.network.eos.eos import eos_provider_spec
from ansible.plugins.action.normal import ActionModule as _ActionModule
from ansible.module_utils.network.common.utils import load_provider
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionModule(_ActionModule):
diff --git a/lib/ansible/plugins/action/fetch.py b/lib/ansible/plugins/action/fetch.py
index 8d2c59f31ef..515dd0177a7 100644
--- a/lib/ansible/plugins/action/fetch.py
+++ b/lib/ansible/plugins/action/fetch.py
@@ -25,14 +25,11 @@ from ansible.module_utils._text import to_bytes
from ansible.module_utils.six import string_types
from ansible.module_utils.parsing.convert_bool import boolean
from ansible.plugins.action import ActionBase
+from ansible.utils.display import Display
from ansible.utils.hashing import checksum, checksum_s, md5, secure_hash
from ansible.utils.path import makedirs_safe
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionModule(ActionBase):
diff --git a/lib/ansible/plugins/action/ios.py b/lib/ansible/plugins/action/ios.py
index f2ad0de7d91..612d27189ab 100644
--- a/lib/ansible/plugins/action/ios.py
+++ b/lib/ansible/plugins/action/ios.py
@@ -28,12 +28,9 @@ from ansible.module_utils.connection import Connection, ConnectionError
from ansible.plugins.action.normal import ActionModule as _ActionModule
from ansible.module_utils.network.common.utils import load_provider
from ansible.module_utils.network.ios.ios import ios_provider_spec
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionModule(_ActionModule):
diff --git a/lib/ansible/plugins/action/iosxr.py b/lib/ansible/plugins/action/iosxr.py
index 2a7b6db3ae2..dac0168f3e1 100644
--- a/lib/ansible/plugins/action/iosxr.py
+++ b/lib/ansible/plugins/action/iosxr.py
@@ -28,12 +28,9 @@ from ansible.module_utils.connection import Connection
from ansible.module_utils.network.iosxr.iosxr import iosxr_provider_spec
from ansible.plugins.action.normal import ActionModule as _ActionModule
from ansible.module_utils.network.common.utils import load_provider
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionModule(_ActionModule):
diff --git a/lib/ansible/plugins/action/ironware.py b/lib/ansible/plugins/action/ironware.py
index b84df72ff6b..b1a77b072c3 100644
--- a/lib/ansible/plugins/action/ironware.py
+++ b/lib/ansible/plugins/action/ironware.py
@@ -28,12 +28,9 @@ from ansible.module_utils.connection import Connection, ConnectionError
from ansible.plugins.action.normal import ActionModule as _ActionModule
from ansible.module_utils.network.common.utils import load_provider
from ansible.module_utils.network.ironware.ironware import ironware_provider_spec
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionModule(_ActionModule):
diff --git a/lib/ansible/plugins/action/junos.py b/lib/ansible/plugins/action/junos.py
index 32bca0f84ca..e925c9db14f 100644
--- a/lib/ansible/plugins/action/junos.py
+++ b/lib/ansible/plugins/action/junos.py
@@ -29,13 +29,9 @@ from ansible.module_utils.network.common.utils import load_provider
from ansible.module_utils.network.junos.junos import junos_provider_spec
from ansible.plugins.loader import connection_loader, module_loader
from ansible.plugins.action.normal import ActionModule as _ActionModule
+from ansible.utils.display import Display
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
CLI_SUPPORTED_MODULES = ['junos_netconf', 'junos_command']
diff --git a/lib/ansible/plugins/action/net_base.py b/lib/ansible/plugins/action/net_base.py
index b4f75b7f429..be8f8d438e3 100644
--- a/lib/ansible/plugins/action/net_base.py
+++ b/lib/ansible/plugins/action/net_base.py
@@ -28,14 +28,11 @@ from ansible.plugins.action import ActionBase
from ansible.plugins.action.nxos import ActionModule as _NxosActionModule
from ansible.plugins.action.eos import ActionModule as _EosActionModule
from ansible.module_utils.network.common.utils import load_provider
+from ansible.utils.display import Display
from imp import find_module, load_module
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
_CLI_ONLY_MODULES = frozenset(['junos_netconf', 'iosxr_netconf', 'iosxr_config', 'iosxr_command'])
_NETCONF_SUPPORTED_PLATFORMS = frozenset(['junos', 'iosxr'])
diff --git a/lib/ansible/plugins/action/net_get.py b/lib/ansible/plugins/action/net_get.py
index 19d2da534c9..f5f4797213d 100644
--- a/lib/ansible/plugins/action/net_get.py
+++ b/lib/ansible/plugins/action/net_get.py
@@ -29,12 +29,9 @@ from ansible.module_utils.connection import Connection
from ansible.errors import AnsibleError
from ansible.plugins.action import ActionBase
from ansible.module_utils.six.moves.urllib.parse import urlsplit
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionModule(ActionBase):
diff --git a/lib/ansible/plugins/action/net_put.py b/lib/ansible/plugins/action/net_put.py
index d71bcbfd3a2..993d81270a8 100644
--- a/lib/ansible/plugins/action/net_put.py
+++ b/lib/ansible/plugins/action/net_put.py
@@ -30,12 +30,9 @@ from ansible.module_utils.connection import Connection
from ansible.errors import AnsibleError
from ansible.plugins.action import ActionBase
from ansible.module_utils.six.moves.urllib.parse import urlsplit
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionModule(ActionBase):
diff --git a/lib/ansible/plugins/action/netconf.py b/lib/ansible/plugins/action/netconf.py
index 27d2cc84c76..73b0cbf3347 100644
--- a/lib/ansible/plugins/action/netconf.py
+++ b/lib/ansible/plugins/action/netconf.py
@@ -23,12 +23,9 @@ import copy
import sys
from ansible.plugins.action.normal import ActionModule as _ActionModule
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionModule(_ActionModule):
diff --git a/lib/ansible/plugins/action/nxos.py b/lib/ansible/plugins/action/nxos.py
index 656d49178fa..d62391f80f7 100644
--- a/lib/ansible/plugins/action/nxos.py
+++ b/lib/ansible/plugins/action/nxos.py
@@ -29,12 +29,9 @@ from ansible.module_utils.connection import Connection
from ansible.plugins.action.normal import ActionModule as _ActionModule
from ansible.module_utils.network.common.utils import load_provider
from ansible.module_utils.network.nxos.nxos import nxos_provider_spec
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionModule(_ActionModule):
diff --git a/lib/ansible/plugins/action/package.py b/lib/ansible/plugins/action/package.py
index 964d077eabb..75a8dd56284 100644
--- a/lib/ansible/plugins/action/package.py
+++ b/lib/ansible/plugins/action/package.py
@@ -19,12 +19,9 @@ __metaclass__ = type
from ansible.errors import AnsibleAction, AnsibleActionFail
from ansible.plugins.action import ActionBase
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionModule(ActionBase):
diff --git a/lib/ansible/plugins/action/pause.py b/lib/ansible/plugins/action/pause.py
index a347ad9ddf4..3a965a875e6 100644
--- a/lib/ansible/plugins/action/pause.py
+++ b/lib/ansible/plugins/action/pause.py
@@ -30,12 +30,9 @@ from ansible.module_utils._text import to_text, to_native
from ansible.module_utils.parsing.convert_bool import boolean
from ansible.module_utils.six import PY3
from ansible.plugins.action import ActionBase
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
try:
import curses
diff --git a/lib/ansible/plugins/action/reboot.py b/lib/ansible/plugins/action/reboot.py
index b62e2451e16..f09d51318e8 100644
--- a/lib/ansible/plugins/action/reboot.py
+++ b/lib/ansible/plugins/action/reboot.py
@@ -13,13 +13,9 @@ from datetime import datetime, timedelta
from ansible.errors import AnsibleError, AnsibleConnectionFailure
from ansible.module_utils._text import to_native, to_text
from ansible.plugins.action import ActionBase
+from ansible.utils.display import Display
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class TimedOutException(Exception):
diff --git a/lib/ansible/plugins/action/sros.py b/lib/ansible/plugins/action/sros.py
index 5a3cb9a527a..47682eb86a8 100644
--- a/lib/ansible/plugins/action/sros.py
+++ b/lib/ansible/plugins/action/sros.py
@@ -26,12 +26,9 @@ from ansible import constants as C
from ansible.plugins.action.normal import ActionModule as _ActionModule
from ansible.module_utils.network.sros.sros import sros_provider_spec
from ansible.module_utils.network.common.utils import load_provider
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionModule(_ActionModule):
diff --git a/lib/ansible/plugins/action/telnet.py b/lib/ansible/plugins/action/telnet.py
index 63b3870c34e..785681e0a21 100644
--- a/lib/ansible/plugins/action/telnet.py
+++ b/lib/ansible/plugins/action/telnet.py
@@ -11,12 +11,9 @@ from time import sleep
from ansible.module_utils._text import to_native, to_bytes
from ansible.module_utils.six import text_type
from ansible.plugins.action import ActionBase
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionModule(ActionBase):
diff --git a/lib/ansible/plugins/action/vyos.py b/lib/ansible/plugins/action/vyos.py
index c4d8b3bbe56..624a1259dfa 100644
--- a/lib/ansible/plugins/action/vyos.py
+++ b/lib/ansible/plugins/action/vyos.py
@@ -28,12 +28,9 @@ from ansible.module_utils._text import to_text
from ansible.module_utils.connection import Connection
from ansible.module_utils.network.common.utils import load_provider
from ansible.module_utils.network.vyos.vyos import vyos_provider_spec
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionModule(_ActionModule):
diff --git a/lib/ansible/plugins/action/wait_for_connection.py b/lib/ansible/plugins/action/wait_for_connection.py
index 93643c77562..7810052cea5 100644
--- a/lib/ansible/plugins/action/wait_for_connection.py
+++ b/lib/ansible/plugins/action/wait_for_connection.py
@@ -24,12 +24,9 @@ from datetime import datetime, timedelta
from ansible.module_utils._text import to_text
from ansible.plugins.action import ActionBase
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class TimedOutException(Exception):
diff --git a/lib/ansible/plugins/action/win_reboot.py b/lib/ansible/plugins/action/win_reboot.py
index e0189849f13..1e61668a7eb 100644
--- a/lib/ansible/plugins/action/win_reboot.py
+++ b/lib/ansible/plugins/action/win_reboot.py
@@ -10,12 +10,9 @@ from ansible.errors import AnsibleError
from ansible.module_utils._text import to_native
from ansible.plugins.action import ActionBase
from ansible.plugins.action.reboot import ActionModule as RebootActionModule
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class TimedOutException(Exception):
diff --git a/lib/ansible/plugins/action/win_updates.py b/lib/ansible/plugins/action/win_updates.py
index 70f22629ccf..538af250a3b 100644
--- a/lib/ansible/plugins/action/win_updates.py
+++ b/lib/ansible/plugins/action/win_updates.py
@@ -8,12 +8,9 @@ from ansible.module_utils._text import to_text
from ansible.module_utils.parsing.convert_bool import boolean
from ansible.parsing.yaml.objects import AnsibleUnicode
from ansible.plugins.action import ActionBase
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionModule(ActionBase):
diff --git a/lib/ansible/plugins/action/yum.py b/lib/ansible/plugins/action/yum.py
index a05aa6cbd04..468321a4298 100644
--- a/lib/ansible/plugins/action/yum.py
+++ b/lib/ansible/plugins/action/yum.py
@@ -18,12 +18,9 @@ from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
from ansible.plugins.action import ActionBase
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class ActionModule(ActionBase):
diff --git a/lib/ansible/plugins/cache/__init__.py b/lib/ansible/plugins/cache/__init__.py
index ef1d9d5013e..2b1d51fb5a6 100644
--- a/lib/ansible/plugins/cache/__init__.py
+++ b/lib/ansible/plugins/cache/__init__.py
@@ -28,12 +28,9 @@ from ansible.module_utils.six import with_metaclass
from ansible.module_utils._text import to_bytes
from ansible.module_utils.common._collections_compat import MutableMapping
from ansible.plugins.loader import cache_loader
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class BaseCacheModule(with_metaclass(ABCMeta, object)):
diff --git a/lib/ansible/plugins/callback/__init__.py b/lib/ansible/plugins/callback/__init__.py
index 88c864a0aeb..42c03fda9f8 100644
--- a/lib/ansible/plugins/callback/__init__.py
+++ b/lib/ansible/plugins/callback/__init__.py
@@ -32,13 +32,10 @@ from ansible.module_utils.common._collections_compat import MutableMapping
from ansible.parsing.ajson import AnsibleJSONEncoder
from ansible.plugins import AnsiblePlugin, get_plugin_class
from ansible.utils.color import stringc
+from ansible.utils.display import Display
from ansible.vars.clean import strip_internal_keys
-try:
- from __main__ import display as global_display
-except ImportError:
- from ansible.utils.display import Display
- global_display = Display()
+global_display = Display()
try:
from __main__ import cli
diff --git a/lib/ansible/plugins/callback/dense.py b/lib/ansible/plugins/callback/dense.py
index b442cfcd0ba..86a7595b48d 100644
--- a/lib/ansible/plugins/callback/dense.py
+++ b/lib/ansible/plugins/callback/dense.py
@@ -31,15 +31,13 @@ from ansible.module_utils.six import binary_type, text_type
from ansible.module_utils.common._collections_compat import MutableMapping, MutableSequence
from ansible.plugins.callback.default import CallbackModule as CallbackModule_default
from ansible.utils.color import colorize, hostcolor
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+from ansible.utils.display import Display
import sys
+display = Display()
+
+
# Design goals:
#
# + On screen there should only be relevant stuff
diff --git a/lib/ansible/plugins/cliconf/__init__.py b/lib/ansible/plugins/cliconf/__init__.py
index acf4b26ae36..4cf823b145d 100644
--- a/lib/ansible/plugins/cliconf/__init__.py
+++ b/lib/ansible/plugins/cliconf/__init__.py
@@ -25,7 +25,7 @@ from functools import wraps
from ansible.plugins import AnsiblePlugin
from ansible.errors import AnsibleError, AnsibleConnectionFailure
from ansible.module_utils._text import to_bytes, to_text
-
+from ansible.utils.display import Display
try:
from scp import SCPClient
@@ -33,11 +33,7 @@ try:
except ImportError:
HAS_SCP = False
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
def enable_mode(func):
diff --git a/lib/ansible/plugins/cliconf/routeros.py b/lib/ansible/plugins/cliconf/routeros.py
index d0d77a31b9e..902bea1b2e9 100644
--- a/lib/ansible/plugins/cliconf/routeros.py
+++ b/lib/ansible/plugins/cliconf/routeros.py
@@ -27,12 +27,9 @@ from itertools import chain
from ansible.module_utils._text import to_bytes, to_text
from ansible.module_utils.network.common.utils import to_list
from ansible.plugins.cliconf import CliconfBase, enable_mode
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class Cliconf(CliconfBase):
diff --git a/lib/ansible/plugins/connection/__init__.py b/lib/ansible/plugins/connection/__init__.py
index 4d4e3d5eca6..43409f4b7a1 100644
--- a/lib/ansible/plugins/connection/__init__.py
+++ b/lib/ansible/plugins/connection/__init__.py
@@ -18,13 +18,10 @@ from ansible.module_utils.six import string_types
from ansible.module_utils._text import to_bytes, to_text
from ansible.plugins import AnsiblePlugin
from ansible.plugins.loader import shell_loader, connection_loader
+from ansible.utils.display import Display
from ansible.utils.path import unfrackpath
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
__all__ = ['ConnectionBase', 'ensure_connect']
diff --git a/lib/ansible/plugins/connection/buildah.py b/lib/ansible/plugins/connection/buildah.py
index 37d0326a123..c4e2c73f0f3 100644
--- a/lib/ansible/plugins/connection/buildah.py
+++ b/lib/ansible/plugins/connection/buildah.py
@@ -49,13 +49,9 @@ import subprocess
import ansible.constants as C
from ansible.module_utils._text import to_bytes, to_native
from ansible.plugins.connection import ConnectionBase, ensure_connect
+from ansible.utils.display import Display
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
# this _has to be_ named Connection
diff --git a/lib/ansible/plugins/connection/chroot.py b/lib/ansible/plugins/connection/chroot.py
index faaf6910408..78af1c59e87 100644
--- a/lib/ansible/plugins/connection/chroot.py
+++ b/lib/ansible/plugins/connection/chroot.py
@@ -46,13 +46,9 @@ from ansible.module_utils.basic import is_executable
from ansible.module_utils.six.moves import shlex_quote
from ansible.module_utils._text import to_bytes
from ansible.plugins.connection import ConnectionBase, BUFSIZE
+from ansible.utils.display import Display
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class Connection(ConnectionBase):
diff --git a/lib/ansible/plugins/connection/docker.py b/lib/ansible/plugins/connection/docker.py
index 76859a71830..68869e0ae12 100644
--- a/lib/ansible/plugins/connection/docker.py
+++ b/lib/ansible/plugins/connection/docker.py
@@ -52,13 +52,9 @@ from ansible.errors import AnsibleError, AnsibleFileNotFound
from ansible.module_utils.six.moves import shlex_quote
from ansible.module_utils._text import to_bytes, to_native, to_text
from ansible.plugins.connection import ConnectionBase, BUFSIZE
+from ansible.utils.display import Display
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class Connection(ConnectionBase):
diff --git a/lib/ansible/plugins/connection/funcd.py b/lib/ansible/plugins/connection/funcd.py
index 5401725b690..7bd957550e3 100644
--- a/lib/ansible/plugins/connection/funcd.py
+++ b/lib/ansible/plugins/connection/funcd.py
@@ -38,12 +38,9 @@ import tempfile
import shutil
from ansible.errors import AnsibleError
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class Connection(object):
diff --git a/lib/ansible/plugins/connection/httpapi.py b/lib/ansible/plugins/connection/httpapi.py
index cd5bf324dcd..e44e1608cad 100644
--- a/lib/ansible/plugins/connection/httpapi.py
+++ b/lib/ansible/plugins/connection/httpapi.py
@@ -156,12 +156,9 @@ from ansible.module_utils.urls import open_url
from ansible.playbook.play_context import PlayContext
from ansible.plugins.loader import cliconf_loader, httpapi_loader
from ansible.plugins.connection import NetworkConnectionBase
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class Connection(NetworkConnectionBase):
diff --git a/lib/ansible/plugins/connection/iocage.py b/lib/ansible/plugins/connection/iocage.py
index b1f01c44359..a7bd85d4ff4 100644
--- a/lib/ansible/plugins/connection/iocage.py
+++ b/lib/ansible/plugins/connection/iocage.py
@@ -35,12 +35,9 @@ import subprocess
from ansible.plugins.connection.jail import Connection as Jail
from ansible.errors import AnsibleError
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class Connection(Jail):
diff --git a/lib/ansible/plugins/connection/jail.py b/lib/ansible/plugins/connection/jail.py
index 8d9018ae931..f8fb5d277fb 100644
--- a/lib/ansible/plugins/connection/jail.py
+++ b/lib/ansible/plugins/connection/jail.py
@@ -42,12 +42,9 @@ from ansible.errors import AnsibleError
from ansible.module_utils.six.moves import shlex_quote
from ansible.module_utils._text import to_bytes, to_native, to_text
from ansible.plugins.connection import ConnectionBase, BUFSIZE
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class Connection(ConnectionBase):
diff --git a/lib/ansible/plugins/connection/kubectl.py b/lib/ansible/plugins/connection/kubectl.py
index 063d38d4374..6094051b6f2 100644
--- a/lib/ansible/plugins/connection/kubectl.py
+++ b/lib/ansible/plugins/connection/kubectl.py
@@ -167,13 +167,9 @@ from ansible.errors import AnsibleError, AnsibleFileNotFound
from ansible.module_utils.six.moves import shlex_quote
from ansible.module_utils._text import to_bytes
from ansible.plugins.connection import ConnectionBase, BUFSIZE
+from ansible.utils.display import Display
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
CONNECTION_TRANSPORT = 'kubectl'
diff --git a/lib/ansible/plugins/connection/libvirt_lxc.py b/lib/ansible/plugins/connection/libvirt_lxc.py
index 10057b9cec8..fe379053657 100644
--- a/lib/ansible/plugins/connection/libvirt_lxc.py
+++ b/lib/ansible/plugins/connection/libvirt_lxc.py
@@ -36,13 +36,9 @@ from ansible.errors import AnsibleError
from ansible.module_utils.six.moves import shlex_quote
from ansible.module_utils._text import to_bytes
from ansible.plugins.connection import ConnectionBase, BUFSIZE
+from ansible.utils.display import Display
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class Connection(ConnectionBase):
diff --git a/lib/ansible/plugins/connection/local.py b/lib/ansible/plugins/connection/local.py
index e4ea3f5ac0b..0ed9d820cb8 100644
--- a/lib/ansible/plugins/connection/local.py
+++ b/lib/ansible/plugins/connection/local.py
@@ -28,13 +28,9 @@ from ansible.errors import AnsibleError, AnsibleFileNotFound
from ansible.module_utils.six import text_type, binary_type
from ansible.module_utils._text import to_bytes, to_native, to_text
from ansible.plugins.connection import ConnectionBase
+from ansible.utils.display import Display
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class Connection(ConnectionBase):
diff --git a/lib/ansible/plugins/connection/napalm.py b/lib/ansible/plugins/connection/napalm.py
index 242fb00403e..e2f1a913fc9 100644
--- a/lib/ansible/plugins/connection/napalm.py
+++ b/lib/ansible/plugins/connection/napalm.py
@@ -131,6 +131,7 @@ options:
from ansible.errors import AnsibleConnectionFailure, AnsibleError
from ansible.plugins.connection import NetworkConnectionBase
+from ansible.utils.display import Display
try:
from napalm import get_network_driver
@@ -142,11 +143,7 @@ except ImportError:
'Please run pip install napalm'
)
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class Connection(NetworkConnectionBase):
diff --git a/lib/ansible/plugins/connection/netconf.py b/lib/ansible/plugins/connection/netconf.py
index 1466db905c5..8ac51a990bb 100644
--- a/lib/ansible/plugins/connection/netconf.py
+++ b/lib/ansible/plugins/connection/netconf.py
@@ -181,6 +181,7 @@ from ansible.module_utils._text import to_bytes, to_native, to_text
from ansible.module_utils.parsing.convert_bool import BOOLEANS_TRUE, BOOLEANS_FALSE
from ansible.plugins.loader import netconf_loader
from ansible.plugins.connection import NetworkConnectionBase
+from ansible.utils.display import Display
try:
from ncclient import manager
@@ -190,11 +191,7 @@ try:
except ImportError:
raise AnsibleError("ncclient is not installed")
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
logging.getLogger('ncclient').setLevel(logging.INFO)
diff --git a/lib/ansible/plugins/connection/network_cli.py b/lib/ansible/plugins/connection/network_cli.py
index 18dbd251040..63e68032c3c 100644
--- a/lib/ansible/plugins/connection/network_cli.py
+++ b/lib/ansible/plugins/connection/network_cli.py
@@ -192,12 +192,9 @@ from ansible.module_utils._text import to_bytes, to_text
from ansible.playbook.play_context import PlayContext
from ansible.plugins.connection import NetworkConnectionBase
from ansible.plugins.loader import cliconf_loader, terminal_loader, connection_loader
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class AnsibleCmdRespRecv(Exception):
diff --git a/lib/ansible/plugins/connection/paramiko_ssh.py b/lib/ansible/plugins/connection/paramiko_ssh.py
index c12b6f1025d..b15d2cf78e1 100644
--- a/lib/ansible/plugins/connection/paramiko_ssh.py
+++ b/lib/ansible/plugins/connection/paramiko_ssh.py
@@ -144,14 +144,11 @@ from ansible.errors import AnsibleError, AnsibleConnectionFailure, AnsibleFileNo
from ansible.module_utils.six import iteritems
from ansible.module_utils.six.moves import input
from ansible.plugins.connection import ConnectionBase
+from ansible.utils.display import Display
from ansible.utils.path import makedirs_safe
from ansible.module_utils._text import to_bytes, to_native, to_text
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
AUTHENTICITY_MSG = """
diff --git a/lib/ansible/plugins/connection/persistent.py b/lib/ansible/plugins/connection/persistent.py
index f77a23bf1c8..943c470003b 100644
--- a/lib/ansible/plugins/connection/persistent.py
+++ b/lib/ansible/plugins/connection/persistent.py
@@ -41,12 +41,9 @@ from ansible.plugins.connection import ConnectionBase
from ansible.module_utils._text import to_text
from ansible.module_utils.connection import Connection as SocketConnection, write_to_file_descriptor
from ansible.errors import AnsibleError
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class Connection(ConnectionBase):
diff --git a/lib/ansible/plugins/connection/podman.py b/lib/ansible/plugins/connection/podman.py
index cc342a39948..26e53c22783 100644
--- a/lib/ansible/plugins/connection/podman.py
+++ b/lib/ansible/plugins/connection/podman.py
@@ -16,13 +16,9 @@ import subprocess
from ansible.module_utils._text import to_bytes, to_native
from ansible.plugins.connection import ConnectionBase, ensure_connect
+from ansible.utils.display import Display
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
DOCUMENTATION = """
diff --git a/lib/ansible/plugins/connection/psrp.py b/lib/ansible/plugins/connection/psrp.py
index 6a36f92d766..459d45fc210 100644
--- a/lib/ansible/plugins/connection/psrp.py
+++ b/lib/ansible/plugins/connection/psrp.py
@@ -164,6 +164,7 @@ from ansible.module_utils.parsing.convert_bool import boolean
from ansible.module_utils._text import to_bytes, to_native, to_text
from ansible.plugins.connection import ConnectionBase
from ansible.plugins.shell.powershell import _common_args
+from ansible.utils.display import Display
from ansible.utils.hashing import secure_hash
from ansible.utils.path import makedirs_safe
@@ -181,11 +182,7 @@ except ImportError as err:
HAS_PYPSRP = False
PYPSRP_IMP_ERR = err
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class Connection(ConnectionBase):
diff --git a/lib/ansible/plugins/connection/qubes.py b/lib/ansible/plugins/connection/qubes.py
index 7faa9510d26..240cb1d651c 100644
--- a/lib/ansible/plugins/connection/qubes.py
+++ b/lib/ansible/plugins/connection/qubes.py
@@ -49,13 +49,9 @@ import ansible.constants as C
from ansible.module_utils._text import to_bytes, to_native
from ansible.plugins.connection import ConnectionBase, ensure_connect
from ansible.errors import AnsibleConnectionFailure
+from ansible.utils.display import Display
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
# this _has to be_ named Connection
diff --git a/lib/ansible/plugins/connection/ssh.py b/lib/ansible/plugins/connection/ssh.py
index 67187386d56..8f5f2933c7a 100644
--- a/lib/ansible/plugins/connection/ssh.py
+++ b/lib/ansible/plugins/connection/ssh.py
@@ -288,13 +288,10 @@ from ansible.module_utils.six.moves import shlex_quote
from ansible.module_utils._text import to_bytes, to_native, to_text
from ansible.module_utils.parsing.convert_bool import BOOLEANS, boolean
from ansible.plugins.connection import ConnectionBase, BUFSIZE
+from ansible.utils.display import Display
from ansible.utils.path import unfrackpath, makedirs_safe
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
b_NOT_SSH_ERRORS = (b'Traceback (most recent call last):', # Python-2.6 when there's an exception
diff --git a/lib/ansible/plugins/connection/winrm.py b/lib/ansible/plugins/connection/winrm.py
index e316f8ecb52..325665ac42b 100644
--- a/lib/ansible/plugins/connection/winrm.py
+++ b/lib/ansible/plugins/connection/winrm.py
@@ -120,6 +120,7 @@ from ansible.module_utils.six import binary_type, PY3
from ansible.plugins.connection import ConnectionBase
from ansible.utils.hashing import secure_hash
from ansible.utils.path import makedirs_safe
+from ansible.utils.display import Display
# getargspec is deprecated in favour of getfullargspec in Python 3 but
# getfullargspec is not available in Python 2
@@ -164,11 +165,7 @@ try:
except ImportError:
HAS_IPADDRESS = False
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class Connection(ConnectionBase):
diff --git a/lib/ansible/plugins/connection/zone.py b/lib/ansible/plugins/connection/zone.py
index 15ed4417a98..ce39427ed8a 100644
--- a/lib/ansible/plugins/connection/zone.py
+++ b/lib/ansible/plugins/connection/zone.py
@@ -37,13 +37,9 @@ from ansible.errors import AnsibleError
from ansible.module_utils.six.moves import shlex_quote
from ansible.module_utils._text import to_bytes
from ansible.plugins.connection import ConnectionBase, BUFSIZE
+from ansible.utils.display import Display
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class Connection(ConnectionBase):
diff --git a/lib/ansible/plugins/filter/core.py b/lib/ansible/plugins/filter/core.py
index d2ad516e259..b9072900f6f 100644
--- a/lib/ansible/plugins/filter/core.py
+++ b/lib/ansible/plugins/filter/core.py
@@ -48,16 +48,13 @@ from ansible.module_utils.common.collections import is_sequence
from ansible.module_utils.common._collections_compat import MutableMapping
from ansible.parsing.ajson import AnsibleJSONEncoder
from ansible.parsing.yaml.dumper import AnsibleDumper
+from ansible.utils.display import Display
from ansible.utils.encrypt import passlib_or_crypt
from ansible.utils.hashing import md5s, checksum_s
from ansible.utils.unicode import unicode_wrap
from ansible.utils.vars import merge_hash
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
UUID_NAMESPACE_ANSIBLE = uuid.UUID('361E6D51-FAEC-444A-9079-341386DA8E2E')
diff --git a/lib/ansible/plugins/filter/mathstuff.py b/lib/ansible/plugins/filter/mathstuff.py
index 67f628388ff..71cd85ad9c2 100644
--- a/lib/ansible/plugins/filter/mathstuff.py
+++ b/lib/ansible/plugins/filter/mathstuff.py
@@ -34,6 +34,7 @@ from ansible.module_utils.six import binary_type, text_type
from ansible.module_utils.six.moves import zip, zip_longest
from ansible.module_utils.common._collections_compat import Hashable, Mapping, Iterable
from ansible.module_utils._text import to_native, to_text
+from ansible.utils.display import Display
try:
from jinja2.filters import do_unique
@@ -41,11 +42,7 @@ try:
except ImportError:
HAS_UNIQUE = False
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
@environmentfilter
diff --git a/lib/ansible/plugins/filter/network.py b/lib/ansible/plugins/filter/network.py
index 92d0230777b..ffa8e664af7 100644
--- a/lib/ansible/plugins/filter/network.py
+++ b/lib/ansible/plugins/filter/network.py
@@ -32,9 +32,9 @@ from ansible.module_utils.network.common.utils import Template
from ansible.module_utils.six import iteritems, string_types
from ansible.module_utils.common._collections_compat import Mapping
from ansible.errors import AnsibleError, AnsibleFilterError
+from ansible.utils.display import Display
from ansible.utils.encrypt import random_password
-
try:
import yaml
HAS_YAML = True
@@ -47,19 +47,14 @@ try:
except ImportError:
HAS_TEXTFSM = False
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
-
try:
from passlib.hash import md5_crypt
HAS_PASSLIB = True
except ImportError:
HAS_PASSLIB = False
+display = Display()
+
def re_matchall(regex, value):
objects = list()
diff --git a/lib/ansible/plugins/httpapi/eos.py b/lib/ansible/plugins/httpapi/eos.py
index 8539375b93e..c9e7a114b66 100644
--- a/lib/ansible/plugins/httpapi/eos.py
+++ b/lib/ansible/plugins/httpapi/eos.py
@@ -11,12 +11,9 @@ from ansible.module_utils._text import to_text
from ansible.module_utils.connection import ConnectionError
from ansible.module_utils.network.common.utils import to_list
from ansible.plugins.httpapi import HttpApiBase
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class HttpApi(HttpApiBase):
diff --git a/lib/ansible/plugins/httpapi/ftd.py b/lib/ansible/plugins/httpapi/ftd.py
index f154b351312..4196334be74 100644
--- a/lib/ansible/plugins/httpapi/ftd.py
+++ b/lib/ansible/plugins/httpapi/ftd.py
@@ -60,6 +60,7 @@ from ansible.plugins.httpapi import HttpApiBase
from urllib3 import encode_multipart_formdata
from urllib3.fields import RequestField
from ansible.module_utils.connection import ConnectionError
+from ansible.utils.display import Display
BASE_HEADERS = {
'Content-Type': 'application/json',
@@ -69,12 +70,7 @@ BASE_HEADERS = {
TOKEN_EXPIRATION_STATUS_CODE = 408
UNAUTHORIZED_STATUS_CODE = 401
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
-
- display = Display()
+display = Display()
class HttpApi(HttpApiBase):
diff --git a/lib/ansible/plugins/httpapi/nxos.py b/lib/ansible/plugins/httpapi/nxos.py
index 3912de08f33..4d065bf4c84 100644
--- a/lib/ansible/plugins/httpapi/nxos.py
+++ b/lib/ansible/plugins/httpapi/nxos.py
@@ -10,12 +10,9 @@ from ansible.module_utils._text import to_text
from ansible.module_utils.connection import ConnectionError
from ansible.module_utils.network.common.utils import to_list
from ansible.plugins.httpapi import HttpApiBase
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class HttpApi(HttpApiBase):
diff --git a/lib/ansible/plugins/inventory/__init__.py b/lib/ansible/plugins/inventory/__init__.py
index 3cd8f43f519..a85f075b9af 100644
--- a/lib/ansible/plugins/inventory/__init__.py
+++ b/lib/ansible/plugins/inventory/__init__.py
@@ -33,12 +33,9 @@ from ansible.module_utils.common._collections_compat import Mapping
from ansible.module_utils.parsing.convert_bool import boolean
from ansible.module_utils.six import string_types
from ansible.template import Templar
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
_SAFE_GROUP = re.compile("[^A-Za-z0-9_]")
diff --git a/lib/ansible/plugins/inventory/aws_ec2.py b/lib/ansible/plugins/inventory/aws_ec2.py
index da4ad1c58a9..977d94e0444 100644
--- a/lib/ansible/plugins/inventory/aws_ec2.py
+++ b/lib/ansible/plugins/inventory/aws_ec2.py
@@ -133,12 +133,7 @@ from ansible.module_utils.six import string_types
from ansible.module_utils.ec2 import ansible_dict_to_boto3_filter_list, boto3_tag_list_to_ansible_dict
from ansible.module_utils.ec2 import camel_dict_to_snake_dict
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable, Cacheable, to_safe_group_name
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
-
+from ansible.utils.display import Display
try:
import boto3
@@ -146,6 +141,8 @@ try:
except ImportError:
raise AnsibleError('The ec2 dynamic inventory plugin requires boto3 and botocore.')
+display = Display()
+
# The mappings give an array of keys to get from the filter name to the value
# returned by boto3's EC2 describe_instances method.
diff --git a/lib/ansible/plugins/inventory/toml.py b/lib/ansible/plugins/inventory/toml.py
index ea0c19b6117..bc3105d467a 100644
--- a/lib/ansible/plugins/inventory/toml.py
+++ b/lib/ansible/plugins/inventory/toml.py
@@ -100,6 +100,7 @@ from ansible.module_utils.common._collections_compat import MutableMapping, Muta
from ansible.module_utils.six import string_types, text_type
from ansible.parsing.yaml.objects import AnsibleSequence, AnsibleUnicode
from ansible.plugins.inventory import BaseFileInventoryPlugin
+from ansible.utils.display import Display
try:
import toml
@@ -107,12 +108,7 @@ try:
except ImportError:
HAS_TOML = False
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
-
+display = Display()
WARNING_MSG = (
'The TOML inventory format is marked as preview, which means that it is not guaranteed to have a backwards '
diff --git a/lib/ansible/plugins/loader.py b/lib/ansible/plugins/loader.py
index a6927e18a39..ac94a22cc5d 100644
--- a/lib/ansible/plugins/loader.py
+++ b/lib/ansible/plugins/loader.py
@@ -21,13 +21,10 @@ from ansible.errors import AnsibleError
from ansible.module_utils._text import to_text
from ansible.parsing.utils.yaml import from_yaml
from ansible.plugins import get_plugin_class, MODULE_CACHE, PATH_CACHE, PLUGIN_PATH_CACHE
+from ansible.utils.display import Display
from ansible.utils.plugin_docs import get_docstring
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
def get_all_plugin_loaders():
diff --git a/lib/ansible/plugins/lookup/__init__.py b/lib/ansible/plugins/lookup/__init__.py
index 31038ea03ed..42f0d1cc46c 100644
--- a/lib/ansible/plugins/lookup/__init__.py
+++ b/lib/ansible/plugins/lookup/__init__.py
@@ -23,12 +23,9 @@ from abc import abstractmethod
from ansible.errors import AnsibleFileNotFound
from ansible.plugins import AnsiblePlugin
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
__all__ = ['LookupBase']
diff --git a/lib/ansible/plugins/lookup/aws_ssm.py b/lib/ansible/plugins/lookup/aws_ssm.py
index 0e85a26fc98..13fd888e451 100644
--- a/lib/ansible/plugins/lookup/aws_ssm.py
+++ b/lib/ansible/plugins/lookup/aws_ssm.py
@@ -103,12 +103,7 @@ from ansible.module_utils._text import to_native
from ansible.module_utils.ec2 import HAS_BOTO3, boto3_tag_list_to_ansible_dict
from ansible.errors import AnsibleError
from ansible.plugins.lookup import LookupBase
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+from ansible.utils.display import Display
try:
from botocore.exceptions import ClientError
@@ -117,6 +112,8 @@ try:
except ImportError:
pass # will be captured by imported HAS_BOTO3
+display = Display()
+
def _boto3_conn(region, credentials):
if 'boto_profile' in credentials:
diff --git a/lib/ansible/plugins/lookup/conjur_variable.py b/lib/ansible/plugins/lookup/conjur_variable.py
index 20e6a704249..26a488effba 100644
--- a/lib/ansible/plugins/lookup/conjur_variable.py
+++ b/lib/ansible/plugins/lookup/conjur_variable.py
@@ -64,13 +64,9 @@ from ansible.module_utils.six.moves.urllib.parse import quote_plus
import yaml
from ansible.module_utils.urls import open_url
+from ansible.utils.display import Display
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
# Load configuration and return as dictionary if file is present on file system
diff --git a/lib/ansible/plugins/lookup/cpm_metering.py b/lib/ansible/plugins/lookup/cpm_metering.py
index dbc764faaa4..34cff8ff0c0 100644
--- a/lib/ansible/plugins/lookup/cpm_metering.py
+++ b/lib/ansible/plugins/lookup/cpm_metering.py
@@ -111,12 +111,9 @@ from ansible.plugins.lookup import LookupBase
from ansible.module_utils._text import to_text, to_bytes, to_native
from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class LookupModule(LookupBase):
diff --git a/lib/ansible/plugins/lookup/cyberarkpassword.py b/lib/ansible/plugins/lookup/cyberarkpassword.py
index 9ae4cdb0569..348a66f8789 100644
--- a/lib/ansible/plugins/lookup/cyberarkpassword.py
+++ b/lib/ansible/plugins/lookup/cyberarkpassword.py
@@ -73,12 +73,9 @@ from ansible.errors import AnsibleError
from ansible.plugins.lookup import LookupBase
from ansible.parsing.splitter import parse_kv
from ansible.module_utils._text import to_text
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
CLIPASSWORDSDK_CMD = os.getenv('AIM_CLIPASSWORDSDK_CMD', '/opt/CARKaim/sdk/clipasswordsdk')
diff --git a/lib/ansible/plugins/lookup/file.py b/lib/ansible/plugins/lookup/file.py
index 4e4bdab5363..3ce41559bd6 100644
--- a/lib/ansible/plugins/lookup/file.py
+++ b/lib/ansible/plugins/lookup/file.py
@@ -50,12 +50,9 @@ RETURN = """
from ansible.errors import AnsibleError, AnsibleParserError
from ansible.plugins.lookup import LookupBase
from ansible.module_utils._text import to_text
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class LookupModule(LookupBase):
diff --git a/lib/ansible/plugins/lookup/filetree.py b/lib/ansible/plugins/lookup/filetree.py
index 003214f70da..83b52f389f6 100644
--- a/lib/ansible/plugins/lookup/filetree.py
+++ b/lib/ansible/plugins/lookup/filetree.py
@@ -99,12 +99,9 @@ except ImportError:
from ansible.plugins.lookup import LookupBase
from ansible.module_utils._text import to_native, to_text
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
# If selinux fails to find a default, return an array of None
diff --git a/lib/ansible/plugins/lookup/grafana_dashboard.py b/lib/ansible/plugins/lookup/grafana_dashboard.py
index fd7985bf673..2a9c7b498e7 100644
--- a/lib/ansible/plugins/lookup/grafana_dashboard.py
+++ b/lib/ansible/plugins/lookup/grafana_dashboard.py
@@ -67,12 +67,9 @@ from ansible.plugins.lookup import LookupBase
from ansible.module_utils.urls import open_url
from ansible.module_utils._text import to_bytes, to_native
from ansible.module_utils.six.moves.urllib.error import HTTPError
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
ANSIBLE_GRAFANA_URL = 'http://127.0.0.1:3000'
diff --git a/lib/ansible/plugins/lookup/keyring.py b/lib/ansible/plugins/lookup/keyring.py
index 578ec60784a..1fd441a3879 100644
--- a/lib/ansible/plugins/lookup/keyring.py
+++ b/lib/ansible/plugins/lookup/keyring.py
@@ -36,21 +36,17 @@ RETURN = """
HAS_KEYRING = True
from ansible.errors import AnsibleError
+from ansible.utils.display import Display
try:
import keyring
except ImportError:
HAS_KEYRING = False
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
-
from ansible.plugins.lookup import LookupBase
+display = Display()
+
class LookupModule(LookupBase):
diff --git a/lib/ansible/plugins/lookup/rabbitmq.py b/lib/ansible/plugins/lookup/rabbitmq.py
index cc4ee91b9f0..2596359c9b3 100644
--- a/lib/ansible/plugins/lookup/rabbitmq.py
+++ b/lib/ansible/plugins/lookup/rabbitmq.py
@@ -97,16 +97,12 @@ RETURN = """
"""
+import json
+
from ansible.errors import AnsibleError, AnsibleParserError
from ansible.plugins.lookup import LookupBase
from ansible.module_utils._text import to_native, to_text
-import json
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+from ansible.utils.display import Display
try:
import pika
@@ -115,6 +111,8 @@ try:
except ImportError:
HAS_PIKA = False
+display = Display()
+
class LookupModule(LookupBase):
diff --git a/lib/ansible/plugins/lookup/template.py b/lib/ansible/plugins/lookup/template.py
index 7a25a5be189..13885470908 100644
--- a/lib/ansible/plugins/lookup/template.py
+++ b/lib/ansible/plugins/lookup/template.py
@@ -38,12 +38,9 @@ from ansible.errors import AnsibleError
from ansible.plugins.lookup import LookupBase
from ansible.module_utils._text import to_bytes, to_text
from ansible.template import generate_ansible_template_vars
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class LookupModule(LookupBase):
diff --git a/lib/ansible/plugins/lookup/url.py b/lib/ansible/plugins/lookup/url.py
index 16557531e70..8de299cdbb7 100644
--- a/lib/ansible/plugins/lookup/url.py
+++ b/lib/ansible/plugins/lookup/url.py
@@ -60,12 +60,9 @@ from ansible.module_utils.six.moves.urllib.error import HTTPError, URLError
from ansible.module_utils._text import to_text, to_native
from ansible.module_utils.urls import open_url, ConnectionError, SSLValidationError
from ansible.plugins.lookup import LookupBase
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class LookupModule(LookupBase):
diff --git a/lib/ansible/plugins/netconf/ce.py b/lib/ansible/plugins/netconf/ce.py
index 7c92395e0e2..bdec1481e56 100644
--- a/lib/ansible/plugins/netconf/ce.py
+++ b/lib/ansible/plugins/netconf/ce.py
@@ -27,6 +27,7 @@ from ansible.module_utils._text import to_text, to_bytes, to_native
from ansible.errors import AnsibleConnectionFailure, AnsibleError
from ansible.plugins.netconf import NetconfBase
from ansible.plugins.netconf import ensure_connected
+from ansible.utils.display import Display
try:
from ncclient import manager
@@ -36,11 +37,7 @@ try:
except ImportError:
raise AnsibleError("ncclient is not installed")
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class Netconf(NetconfBase):
diff --git a/lib/ansible/plugins/strategy/__init__.py b/lib/ansible/plugins/strategy/__init__.py
index 26f359f0a99..41b74edabde 100644
--- a/lib/ansible/plugins/strategy/__init__.py
+++ b/lib/ansible/plugins/strategy/__init__.py
@@ -47,15 +47,11 @@ from ansible.playbook.task_include import TaskInclude
from ansible.playbook.role_include import IncludeRole
from ansible.plugins.loader import action_loader, connection_loader, filter_loader, lookup_loader, module_loader, test_loader
from ansible.template import Templar
+from ansible.utils.display import Display
from ansible.utils.vars import combine_vars
from ansible.vars.clean import strip_internal_keys
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
__all__ = ['StrategyBase']
diff --git a/lib/ansible/plugins/strategy/free.py b/lib/ansible/plugins/strategy/free.py
index 808843cb287..bd943385674 100644
--- a/lib/ansible/plugins/strategy/free.py
+++ b/lib/ansible/plugins/strategy/free.py
@@ -40,13 +40,9 @@ from ansible.plugins.loader import action_loader
from ansible.plugins.strategy import StrategyBase
from ansible.template import Templar
from ansible.module_utils._text import to_text
+from ansible.utils.display import Display
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class StrategyModule(StrategyBase):
diff --git a/lib/ansible/plugins/strategy/host_pinned.py b/lib/ansible/plugins/strategy/host_pinned.py
index 52cf4880172..ba293d36513 100644
--- a/lib/ansible/plugins/strategy/host_pinned.py
+++ b/lib/ansible/plugins/strategy/host_pinned.py
@@ -33,13 +33,9 @@ DOCUMENTATION = '''
'''
from ansible.plugins.strategy.free import StrategyModule as FreeStrategyModule
+from ansible.utils.display import Display
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class StrategyModule(FreeStrategyModule):
diff --git a/lib/ansible/plugins/strategy/linear.py b/lib/ansible/plugins/strategy/linear.py
index 6db63dc558c..0a985ad90d2 100644
--- a/lib/ansible/plugins/strategy/linear.py
+++ b/lib/ansible/plugins/strategy/linear.py
@@ -41,13 +41,9 @@ from ansible.playbook.task import Task
from ansible.plugins.loader import action_loader
from ansible.plugins.strategy import StrategyBase
from ansible.template import Templar
+from ansible.utils.display import Display
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class StrategyModule(StrategyBase):
diff --git a/lib/ansible/plugins/terminal/junos.py b/lib/ansible/plugins/terminal/junos.py
index c954ebcf407..9f4d79276df 100644
--- a/lib/ansible/plugins/terminal/junos.py
+++ b/lib/ansible/plugins/terminal/junos.py
@@ -24,13 +24,9 @@ import re
from ansible.plugins.terminal import TerminalBase
from ansible.errors import AnsibleConnectionFailure
+from ansible.utils.display import Display
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class TerminalModule(TerminalBase):
diff --git a/lib/ansible/plugins/terminal/routeros.py b/lib/ansible/plugins/terminal/routeros.py
index 11ddab8c0e5..48eb119eb6b 100644
--- a/lib/ansible/plugins/terminal/routeros.py
+++ b/lib/ansible/plugins/terminal/routeros.py
@@ -25,12 +25,9 @@ import re
from ansible.errors import AnsibleConnectionFailure
from ansible.module_utils._text import to_text, to_bytes
from ansible.plugins.terminal import TerminalBase
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class TerminalModule(TerminalBase):
diff --git a/lib/ansible/plugins/test/core.py b/lib/ansible/plugins/test/core.py
index 8ae39eec673..1c3a570ce42 100644
--- a/lib/ansible/plugins/test/core.py
+++ b/lib/ansible/plugins/test/core.py
@@ -25,12 +25,9 @@ from distutils.version import LooseVersion, StrictVersion
from ansible import errors
from ansible.module_utils.common._collections_compat import MutableMapping, MutableSequence
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
def failed(result):
diff --git a/lib/ansible/plugins/vars/__init__.py b/lib/ansible/plugins/vars/__init__.py
index 6540c47fc04..668c92f5fe3 100644
--- a/lib/ansible/plugins/vars/__init__.py
+++ b/lib/ansible/plugins/vars/__init__.py
@@ -19,12 +19,9 @@ from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
from ansible.utils.path import basedir
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class BaseVarsPlugin(object):
diff --git a/lib/ansible/template/__init__.py b/lib/ansible/template/__init__.py
index adb9618690e..e7de0f893d5 100644
--- a/lib/ansible/template/__init__.py
+++ b/lib/ansible/template/__init__.py
@@ -49,13 +49,10 @@ from ansible.plugins.loader import filter_loader, lookup_loader, test_loader
from ansible.template.safe_eval import safe_eval
from ansible.template.template import AnsibleJ2Template
from ansible.template.vars import AnsibleJ2Vars
+from ansible.utils.display import Display
from ansible.utils.unsafe_proxy import UnsafeProxy, wrap_var
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
__all__ = ['Templar', 'generate_ansible_template_vars']
diff --git a/lib/ansible/utils/display.py b/lib/ansible/utils/display.py
index 2f21646467c..51117761e1a 100644
--- a/lib/ansible/utils/display.py
+++ b/lib/ansible/utils/display.py
@@ -36,7 +36,9 @@ from termios import TIOCGWINSZ
from ansible import constants as C
from ansible.errors import AnsibleError
from ansible.module_utils._text import to_bytes, to_text
+from ansible.module_utils.six import with_metaclass
from ansible.utils.color import stringc
+from ansible.utils.singleton import Singleton
try:
@@ -77,7 +79,7 @@ b_COW_PATHS = (
)
-class Display:
+class Display(with_metaclass(Singleton, object)):
def __init__(self, verbosity=0):
diff --git a/lib/ansible/utils/encrypt.py b/lib/ansible/utils/encrypt.py
index 4445fb87c81..46029037b85 100644
--- a/lib/ansible/utils/encrypt.py
+++ b/lib/ansible/utils/encrypt.py
@@ -16,6 +16,7 @@ from ansible import constants as C
from ansible.errors import AnsibleError, AnsibleAssertionError
from ansible.module_utils.six import text_type
from ansible.module_utils._text import to_text, to_bytes
+from ansible.utils.display import Display
PASSLIB_AVAILABLE = False
try:
@@ -27,11 +28,7 @@ try:
except:
pass
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
__all__ = ['do_encrypt']
diff --git a/lib/ansible/utils/jsonrpc.py b/lib/ansible/utils/jsonrpc.py
index 794f1f4aea4..d285cef688c 100644
--- a/lib/ansible/utils/jsonrpc.py
+++ b/lib/ansible/utils/jsonrpc.py
@@ -9,13 +9,9 @@ import traceback
from ansible.module_utils._text import to_text
from ansible.module_utils.six import binary_type
+from ansible.utils.display import Display
-
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
class JsonRpcServer(object):
diff --git a/lib/ansible/utils/plugin_docs.py b/lib/ansible/utils/plugin_docs.py
index c13c6529bc5..30816462dbf 100644
--- a/lib/ansible/utils/plugin_docs.py
+++ b/lib/ansible/utils/plugin_docs.py
@@ -10,12 +10,9 @@ from ansible.module_utils._text import to_native
from ansible.module_utils.common._collections_compat import MutableMapping, MutableSet, MutableSequence
from ansible.parsing.plugin_docs import read_docstring, read_docstub
from ansible.parsing.yaml.loader import AnsibleLoader
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
# modules that are ok that they do not have documentation strings
diff --git a/lib/ansible/utils/singleton.py b/lib/ansible/utils/singleton.py
new file mode 100644
index 00000000000..4299403eae2
--- /dev/null
+++ b/lib/ansible/utils/singleton.py
@@ -0,0 +1,29 @@
+# Copyright (c) 2017 Ansible Project
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+# Make coding more python3-ish
+from __future__ import (absolute_import, division, print_function)
+__metaclass__ = type
+
+from threading import RLock
+
+
+class Singleton(type):
+ """Metaclass for classes that wish to implement Singleton
+ functionality. If an instance of the class exists, it's returned,
+ otherwise a single instance is instantiated and returned.
+ """
+ def __init__(cls, name, bases, dct):
+ super(Singleton, cls).__init__(name, bases, dct)
+ cls.__instance = None
+ cls.__rlock = RLock()
+
+ def __call__(cls, *args, **kw):
+ if cls.__instance is not None:
+ return cls.__instance
+
+ with cls.__rlock:
+ if cls.__instance is None:
+ cls.__instance = super(Singleton, cls).__call__(*args, **kw)
+
+ return cls.__instance
diff --git a/lib/ansible/vars/clean.py b/lib/ansible/vars/clean.py
index 7b29383c2e5..f98d3b77d5e 100644
--- a/lib/ansible/vars/clean.py
+++ b/lib/ansible/vars/clean.py
@@ -12,12 +12,9 @@ from ansible import constants as C
from ansible.module_utils._text import to_text
from ansible.module_utils import six
from ansible.plugins.loader import connection_loader
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
def module_response_deepcopy(v):
diff --git a/lib/ansible/vars/manager.py b/lib/ansible/vars/manager.py
index 84658e2827f..439f2d8beb7 100644
--- a/lib/ansible/vars/manager.py
+++ b/lib/ansible/vars/manager.py
@@ -41,16 +41,13 @@ from ansible.module_utils.six import iteritems, text_type, string_types
from ansible.plugins.loader import lookup_loader, vars_loader
from ansible.plugins.cache import FactCache
from ansible.template import Templar
+from ansible.utils.display import Display
from ansible.utils.listify import listify_lookup_plugin_terms
from ansible.utils.vars import combine_vars
from ansible.utils.unsafe_proxy import wrap_var
from ansible.vars.clean import namespace_facts, clean_facts
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
def preprocess_vars(a):
diff --git a/lib/ansible/vars/reserved.py b/lib/ansible/vars/reserved.py
index 16d44ef6841..d7daea07057 100644
--- a/lib/ansible/vars/reserved.py
+++ b/lib/ansible/vars/reserved.py
@@ -23,12 +23,9 @@ from ansible.playbook import Play
from ansible.playbook.block import Block
from ansible.playbook.role import Role
from ansible.playbook.task import Task
+from ansible.utils.display import Display
-try:
- from __main__ import display
-except ImportError:
- from ansible.utils.display import Display
- display = Display()
+display = Display()
def get_reserved_names(include_private=True):
diff --git a/test/sanity/code-smell/no-main-display.json b/test/sanity/code-smell/no-main-display.json
new file mode 100644
index 00000000000..779b3d07bb5
--- /dev/null
+++ b/test/sanity/code-smell/no-main-display.json
@@ -0,0 +1,10 @@
+{
+ "extensions": [
+ ".py"
+ ],
+ "prefixes": [
+ "bin/",
+ "lib/ansible/"
+ ],
+ "output": "path-line-column-message"
+}
diff --git a/test/sanity/code-smell/no-main-display.py b/test/sanity/code-smell/no-main-display.py
new file mode 100755
index 00000000000..71fbc63859f
--- /dev/null
+++ b/test/sanity/code-smell/no-main-display.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env python
+from __future__ import print_function
+
+import os
+import re
+import sys
+
+MAIN_DISPLAY_IMPORT = 'from __main__ import display'
+
+
+def main():
+ skip = set()
+
+ for path in sys.argv[1:] or sys.stdin.read().splitlines():
+ if path in skip:
+ continue
+
+ with open(path, 'r') as f:
+ for i, line in enumerate(f.readlines()):
+ if MAIN_DISPLAY_IMPORT in line:
+ lineno = i + 1
+ colno = line.index(MAIN_DISPLAY_IMPORT) + 1
+ print('%s:%d:%d: Display is a singleton, just import and instantiate' % (path, lineno, colno))
+
+
+if __name__ == '__main__':
+ main()