Source code for picage.helpers

# -*- coding: utf-8 -*-

"""
Utility functions.
"""

import sys
import string


[docs]def get_sp_dir(): # pragma: no cover """ Get the absolute path of the ``site-packages`` directory. """ for p in sys.path[::-1]: if p.endswith("site-packages"): return p raise Exception("'site-package' directory not found!")
SP_DIR = get_sp_dir() """Current system's site-packages directory.. """ _first_letter_for_valid_name = set(string.ascii_lowercase + "_") _char_set_for_valid_name = set(string.ascii_letters + string.digits + "_-")
[docs]def is_valid_package_module_name(name): """ Test whether it's a valid package or module name. - a-z, 0-9, and underline - starts with underline or alpha letter valid: - ``a`` - ``a.b.c`` - ``_a`` - ``_a._b._c`` invalid: - ``A`` - ``0`` - ``.a`` - ``a#b`` """ if "." in name: for part in name.split("."): if not is_valid_package_module_name(part): return False elif len(name): if name[0] not in _first_letter_for_valid_name: return False if len(set(name).difference(_char_set_for_valid_name)): return False else: return False return True
[docs]def assert_is_valid_name(name, error=None): # pragma: no cover """ Make sure the name is a valid package or module name. """ if error is None: error = ValueError("%r is not a valid package or module name!" % name) if not is_valid_package_module_name(name): raise error