()
return root
Get the project root directory.

    We require that all commands are run from the project root, i.e. the
    directory that contains setup.py, setup.cfg, and versioneer.py .
Get the project root directory.
Get the project root directory .
def get_root():
    """Get the project root directory.

    We require that all commands are run from the project root, i.e. the
    directory that contains setup.py, setup.cfg, and versioneer.py .
    """
    root = os.path.realpath(os.path.abspath(os.getcwd()))
    setup_py = os.path.join(root, "setup.py")
    versioneer_py = os.path.join(root, "versioneer.py")
    if not (os.path.exists(setup_py) or os.path.exists(versioneer_py)):
        # allow 'python path/to/setup.py COMMAND'
        root = os.path.dirname(os.path.realpath(os.path.abspath(sys.argv[0])))
        setup_py = os.path.join(root, "setup.py")
        versioneer_py = os.path.join(root, "versioneer.py")
    if not (os.path.exists(setup_py) or os.path.exists(versioneer_py)):
        err = (
            "Versioneer was unable to run the project root directory. "
            "Versioneer requires setup.py to be executed from "
            "its immediate directory (like 'python setup.py COMMAND'), "
            "or in a way that lets it use sys.argv[0] to find the root "
            "(like 'python path/to/setup.py COMMAND')."
        )
        raise VersioneerBadRootError(err)
    try:
        # Certain runtime workflows (setup.py install/develop in a setuptools
        # tree) execute all dependencies in a single python process, so
        # "versioneer" may be imported multiple times, and python's shared
        # module-import table will cache the first one. So we can't use
        # os.path.dirname(__file__), as that will find whichever
        # versioneer.py was first imported, even in later projects.
        me = os.path.realpath(os.path.abspath(__file__))
        me_dir = os.path.normcase(os.path.splitext(me)[0])
        vsr_dir = os.path.normcase(os.path.splitext(versioneer_py)[0])
        if me_dir != vsr_dir:
            print(
                "Warning: build in %s is using versioneer.py from %s"
                % (os.path.dirname(me), versioneer_py)
            )
    except NameError:
        pass
    return root
def get_root ( ) : root = os . path . realpath ( os . path . abspath ( os . getcwd ( ) ) ) setup_py = os . path . join ( root , "setup.py" ) versioneer_py = os . path . join ( root , "versioneer.py" ) if not ( os . path . exists ( setup_py ) or os . path . exists ( versioneer_py ) ) : # allow 'python path/to/setup.py COMMAND' root = os . path . dirname ( os . path . realpath ( os . path . abspath ( sys . argv [ 0 ] ) ) ) setup_py = os . path . join ( root , "setup.py" ) versioneer_py = os . path . join ( root , "versioneer.py" ) if not ( os . path . exists ( setup_py ) or os . path . exists ( versioneer_py ) ) : err = ( "Versioneer was unable to run the project root directory. " "Versioneer requires setup.py to be executed from " "its immediate directory (like 'python setup.py COMMAND'), " "or in a way that lets it use sys.argv[0] to find the root " "(like 'python path/to/setup.py COMMAND')." ) raise VersioneerBadRootError ( err ) try : # Certain runtime workflows (setup.py install/develop in a setuptools # tree) execute all dependencies in a single python process, so # "versioneer" may be imported multiple times, and python's shared # module-import table will cache the first one. So we can't use # os.path.dirname(__file__), as that will find whichever # versioneer.py was first imported, even in later projects. me = os . path . realpath ( os . path . abspath ( __file__ ) ) me_dir = os . path . normcase ( os . path . splitext ( me ) [ 0 ] ) vsr_dir = os . path . normcase ( os . path . splitext ( versioneer_py ) [ 0 ] ) if me_dir != vsr_dir : print ( "Warning: build in %s is using versioneer.py from %s" % ( os . path . dirname ( me ) , versioneer_py ) ) except NameError : pass return root