pyats.utils.import_utils package

Submodules

class pyats.utils.import_utils.flex.FlexImporter(module_prefix='')

Bases: object

Flexible module loader, overloading the load() api to be able to load from:
  • arbitrary file directly

  • absolute module name (imported or not)

  • module object

Parameters

(str) (module_prefix) – only used when the loading is done arbitrarily from file outside of PYTHONPATH.

load(obj)

Load object into module

API to load user supplied object to a python module.

Parameters

(obj) (job) – Could be a file, a ModuleType, name of a loaded module, or an absolute module path

Returns

Return type

types.ModuleType()

load_module_from_file(target)

load module from file

Loads a target file outside of PYTHONPATH into a python module object. This api allows the loading of arbitrary python files and update the sys.path list with the given module location.

Parameters

(str) (target) –

Returns

Return type

python module

class pyats.utils.import_utils.legacy.LegacyImporter

Bases: importlib.abc.MetaPathFinder

Python import hook, enabling users with legacy imports in their code to continue leveraging legacy imports (eg, translate old import calls into newer import calls)

Example

# translate from legacy.package.path import X

# into from new_package.path import X

Warning

  • black magic -

  • do not tamper with -

classmethod find_spec(name, path=None, target=None)

undocumented, do not use

classmethod install()

undocumented, do not use

classmethod invalidate_caches()

undocumented, do not use

classmethod register(*args, **kwargs)

registers a new import mapping. Accepts a legacy name in string or regex, and maps to a new string/repl (in the case of regex)

Parameters
  • (str/regex) (legacy) –

  • (str) (current) – name is provided as a regex object)

Examples

LegacyImporter.register(old = ‘new’)

# assuming old_to_new translates old name to new name # and new_to_old translates from new name to old name LegacyImporter.register(old_to_new, new_to_old)

classmethod reverse_translate(name)

translates a new import string to an old import string

classmethod translate(name)

translates an old import string to a new import string

class pyats.utils.import_utils.legacy.LegacyLoader(module_name)

Bases: importlib._abc.Loader

Import Loader, ditches the old module creation process and replaces it with actual new module

create_module(spec)

undocumented, do not use

exec_module(legacy_module)

undocumented, do not use

pyats.utils.import_utils.misc.import_from_name(name)

Translate a ‘x.y.z’ style string into ‘from x.y import z’, and return z. Allows users to import using string names instead of calling importer.

Example

>>> obj = import_from_name('imporlib.reload')
Parameters

(str) (name) –

Returns

Return type

Object imported

Raises

ImportError

pyats.utils.import_utils.misc.on_import(f)

decorator, invokes given function when it is imported

Example

@on_import def print_msg():

print(‘message to print’)

pyats.utils.import_utils.misc.str_or_list(value)

check_file

translates str/list into list.

pyats.utils.import_utils.misc.translate_host(hostname)

translates a host name or address to a string representation of an IPv4/IPv6 address.

Example

>>> host = translate_host('asg-lnx-1')
Parameters

(str) (hostname) – representation of an IPv4/v6 address

Returns

Return type

Returns an IPv4/v6 address as a string, such as ‘10.85.87.95’

Raises

socket.gaierror (getaddrerror – given host name is invalid):