Add a Singleton metaclass, use it with Display (#48935)

* Add a Singleton class, use it with Display

* update six import

* Move remaining failes to display singleton

* Fix rebase issues

* Singleton improvements

* Add code-smell for 'from __main__ import display'. ci_complete

* s/self/cls/g

* Add docs for no-main-display

* Address linting issues

* Add changelog fragment. ci_complete

* Implement reentrant lock for class instantiation in Singleton

* Add Display singleton porting guide
This commit is contained in:
Matt Martz 2018-11-20 17:06:51 -06:00 committed by GitHub
commit 9773a1f289
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
149 changed files with 407 additions and 766 deletions

View file

@ -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']

View file

@ -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):

View file

@ -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:

View file

@ -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*\(')

View file

@ -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):

View file

@ -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:

View file

@ -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']

View file

@ -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']

View file

@ -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):

View file

@ -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):

View file

@ -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):

View file

@ -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):

View file

@ -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):