neutron/tools/list_moved_globals.py
Henry Gessau 99cfd671be debtcollector for globals
The deprecation shim created by Doug turns out to be rather useful.
It emits a warning when an global (attribute of a module) is
referenced but that global has been moved to another module.

This update makes the following changes to the shim:

 - Rename it to _MovedGlobals to better describe what it is a
   debtcollector for.

 - Use inspect to get the original reference and to check that
   _MovedGlobals is called from the last line of a module.

 - Save the old reference automatically in the instance to prevent it
   from getting garbage collected.

 - Beef up the _moved_global() method for moving/renaming individual
   globals, allowing it to move and rename or rename in place.

Change-Id: I868aa4a3129dd05467a103364088efbb86bc5d0f
2016-08-30 10:18:19 -04:00

50 lines
1.5 KiB
Python
Executable File

#!/usr/bin/env python
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
"""
Check for globals that are now available in neutron-lib
"""
from __future__ import print_function
from neutron_lib import constants as lconst
from neutron_lib import exceptions as lexc
from neutron.common import constants as nconst
from neutron.common import exceptions as nexc
def check_globals(things, nmod, lmod):
core = vars(nmod)['_mg__my_globals']
lib = vars(lmod)
moved_things = []
for thing in core:
if thing.startswith('__') or thing == '_':
continue
if thing in lib:
moved_things.append(thing)
if moved_things:
print("\nThese %s have moved to neutron-lib:" % things)
for moved_thing in sorted(moved_things):
print(" %s" % moved_thing)
def main():
check_globals('constants', nconst, lconst)
check_globals('exceptions', nexc, lexc)
if __name__ == '__main__':
main()