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

@ -0,0 +1,10 @@
{
"extensions": [
".py"
],
"prefixes": [
"bin/",
"lib/ansible/"
],
"output": "path-line-column-message"
}

View file

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