Package: cd2root
cd2root: Change Working Directory to the Project Rootcd2rootallows you to elegantly change the working directory of the current file to the project root directory with only 1 line of code.
It is useful when you have a project with a deep directory structure and you want to import modules relative to the project root directory.Getting StartedInstall cd2rootpipinstallcd2rootUsageThe easiest way to usecd2rootis to add the following line to the top of your python file:# normally import packages before custom modulesimport...############################################################################# cd2root: change working directory to project rootfromcd2rootimportcd2rootcd2root()############################################################################# Then import custom modules that are relative to the project rootfromsrc.utilsimport...If you just want to get the project root directory without changing the working directoryfromcd2rootimportget_project_rootproject_root=get_project_root()# type: pathlib.Pathdata_file=project_root/"data"/"data.csv"...Documentationcd2root.cd2rootis the grab-and-go function for most use cases.
It has the following signature:defcd2root(path_name:str=None,dotfile_name:str=None,load_dotenv:bool=True,use_cwd:bool=False,verbose:bool=False,)->Path:"""
    Change working directory to project root directory.

    The rules to find the project root directory:
    1. If path_name is not None, find the directory containing path_name
    2. If dotfile_name is not None, find the directory containing dotfile_name
    3. If PROJECT_ROOT is set in .env, use it
    4. If any of the following files is found, use the directory containing it:
        .idea, .vscode, .editorconfig, .env, pyproject.toml, LICENSE

    :param path_name: the name of the path to find as the project root directory
    :param dotfile_name: the name of the dotfile to find as the project root directory
    :param load_dotenv: whether to load .env file
    :param use_cwd: whether to use current working directory as the starting point
    :param verbose: whether to output verbose messages
    :return: project root directory
    """...cd2root.get_project_rootshares the same signature ascd2root.cd2rootexcept that it does not change the working directory.defget_project_root(path_name:str=None,dotfile_name:str=None,load_dotenv:bool=True,use_cwd:bool=False,verbose:bool=False,)->Path:"""
    Get the project root directory. Raise FileNotFoundError if the project root
    directory is not found.

    ...
    """...There are also other helper functions available withcd2root.cd2root.cd2pathchange the working directory to given path.defcd2path(path:Union[Path,str],verbose:bool=False)->Path:"""
    Change working directory to path.

    :param path: the path to change working directory to
    :param verbose: whether to output verbose messages
    :return: path
    """...deffind_path(path_name:str,use_cwd:bool=False)->Path:"""
    Find the path of the given path_name.

    raise FileNotFoundError if the path is not found.

    :param path_name: the name of the path to find
    :param use_cwd: whether to use current working directory as the starting point
    :return: the path of the given path_name
    """...History0.1.0 (2023-10-17)First release on PyPI.