Enhance empty __init__ code-smell to check module_utils (#33438)

Empty __init__ will allow us to use python namespaces with all of these
files.  That may be something we want to take advantage of for allowign
them to be expanded by user dirs.  Also might be needed for AnsiballZ or
other wrapper enhancements in the future.
This commit is contained in:
Toshio Kuratomi 2017-11-30 15:47:38 -08:00 committed by GitHub
parent 8e6ebae8bd
commit 7bd0af15d2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 23 deletions

View file

@ -1,7 +1,10 @@
Sanity Tests » empty-init Sanity Tests » empty-init
========================= =========================
The ``__init__.py`` files under the following directories must be empty: The ``__init__.py`` files under the following directories must be empty. For some of these (modules
and tests), ``__init__.py`` files with code won't be used. For others (module_utils), we want the
possibility of using Python namespaces which an empty ``__init__.py`` will allow for.
- ``lib/ansible/modules/`` - ``lib/ansible/modules/``
- ``lib/ansible/module_utils/``
- ``test/units/`` - ``test/units/``

View file

@ -1,20 +0,0 @@
# 2013, Michael DeHaan <michael.dehaan@gmail.com>
#
# This file is part of Ansible
#
# Ansible is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Ansible is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
# Note: Do not add any code to this file. module_utils may be a namespace
# package when using Ansible-2.1+ Anything in this file may not be available
# if one of the other packages in the namespace is loaded first.

View file

@ -2,8 +2,11 @@
found='' found=''
for path in lib/ansible/modules/ test/units/; do for path in lib/ansible/modules/ lib/ansible/module_utils test/units/; do
files=$(find "${path}" -name __init__.py -size '+0') # facts is grandfathered in but will break namespacing. Only way to fix it
# is to deprecate and eventually remove.
# six will break namespacing but because it is bundled we should not be overriding it
files=$(find "${path}" -name __init__.py -size '+0' | sed '\!lib/ansible/module_utils/\(six\|facts\)/__init__.py!d')
if [ "${files}" ]; then if [ "${files}" ]; then
echo "${files}" echo "${files}"