GithubHelp home page GithubHelp logo

groo's Introduction

This package simply finds the root of a project based on a filename.

Usage

  1. Create a hidden file in the root directory of your project.
vim .my_hidden_root_file

Tip: Use project-specific name not a generic .root or even rely on .git. Get creative.

  1. Install groo
pip install groo-ozika

Tip: use conda and make sure to activate the right environment to install into.

  1. Import to your code and use
from groo.groo import get_root
root_folder = get_root(".my_hidden_root_file")

Tip: Always use os.path.join() to declare paths. It will make your code run across platforms and you won't get any strange erorrs (e.g., extra /).

Optional If you want to provide a time limit to the search for the root you can do so by using the timelim flag (in seconds).

root_folder = get_root(".my_hidden_root_file", timelim=10)

Example usage

Let's say that wee want to keep all project-related files in a specific folder (which can be anywhere on your computer). Let's call this project_folder.

Then, within it we want to have some data mydata.csv in a data folder and some scripts in a scripts folder runscript.py.

To let groo identify the root folder we need to create a file there. I usually prefer to use a dot file because it will remain hidden, however, it can be anything. In this example we will create .my_hidden_root_file in the project_folder.

Once the hidden file is created, one might want to load it in their python script (or a jupyter ntbk). Here we want to load data/mydata.csv within the scripts/runscript.py.

To do that, we can use this example:

from groo.groo import get_root
root_folder = get_root(".my_hidden_root_file")

import pandas as pd
df = pd.read_csv(os.path.join(root_folder, "data", "mydata.csv"))

Note that the same code will work for any script that is anywhere whithin the project_folder.

Enjoy!

Release Notes

New in version 0.1.0
1/ Fixed bug from 0.0.9
2/ Added verbose option, if verbose=True groo will print out the directories that it's searching

Added "quick search" which scans directories above in the hierarchy before performing a more comprehensive search.

New in version 0.0.9

Added "quick search" which scans directories above in the hierarchy before performing a more comprehensive search.

New in version 0.0.8

Removed bug which was displaying path.

New in version 0.0.7

  1. Previous versions of groo could only search for the root flag above in the directory hierarchy. Starting 0.0.7, the flag can be in theory anywhere on the computer. The search algorithm starts from the location of the file and on each iteration moves a level up, performs a full search.
  2. Since full search can sometimes be unpractical, groo now allows users to specify maximum time limit using the timelim flag get_root(".my_hidden_root_file", timelim=10).


Logo by AbtoCreative ❤️

groo's People

Contributors

ozika avatar

Stargazers

Neele Elbersgerd avatar  avatar

Watchers

 avatar

groo's Issues

Add "global" groo

Groo only works if you are within the folder that you are looking for

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.