Git Product home page Git Product logo

cobra's Introduction

Cobra

PyPI version

Cobra is a project creation and management tool for python and git. It creates a conda environment and a github repository based on your requirements.

Requirements

You can use the base conda to install cobra.

conda config --set auto_activate_base true

Installation

You have three different options to install cobra. Just always keep in mind that the python version need to be > 3.5.

pip

If your pip path is pointing to the pip3 you can also you just pip.

pip3 install cobra-projects

Then execute the command

cobra --install

and follow the instructions.

github

  1. Download the sourcecode from github.
  2. Move into the cobra root directory (folder which contains the setup.py file) cd cobra
  3. Install it pip install .

Then execute the command

cobra --install

and follow the instructions.

Uninstallation

If you have to re-install or uninstall cobra:

  1. Delete the access token from your github page (Settings -> Developer settings -> Personal access tokens -> delete (cobra)
  2. rm -rf ~/.cobra
  3. pip3/pip uninstall cobra-projects

Usage

usage: cobra [-h] [--install] [--test] [--clear] {create,list,remove} ...

Project creation (cobra) command line tool

positional arguments:
  {create,list,remove}  The different functions of cobra
    create              Create a new cobra project
    list                Lists all existing cobra projects
    remove              Remove a cobra project

optional arguments:
  -h, --help            show this help message and exit
  --install             Start the installation wizard.
  --test                Puts cobra into testing mode
  --clear               Clears all user files

Create

To create a new project you can use the create command. The minimum requirements is the -n parameter to give the project a name. You can also lik the project with already existing conda environments or github repos.

CARE: The -gh, --git-hook command is in beta. This command exports before each git commit the conda environment.

usage: cobra create [-h] -n PROJECT_NAME [-p PYTHON_VERSION] [-r REPO_NAME]
                   [-c CONDA_NAME] [-gh]

optional arguments:
  -h, --help            show this help message and exit
  -n PROJECT_NAME, --project-name PROJECT_NAME
                        Name of the project
  -p PYTHON_VERSION, --python-version PYTHON_VERSION
                        Python version for the project. Default: 3.5
  -r REPO_NAME, --repo-name REPO_NAME
                        If you already have a github repo for the project.
                        Enter the repo name.
  -c CONDA_NAME, --conda-name CONDA_NAME
                        If you already have a conda environment for the
                        project. Enter the name.
  -gh, --git-hook       Install a pre-commit git hook which updates the conda
                        environment file before you commit. This is just
                        working, if the current environment is the 
                        environment of the project!

List

This command lists all the cobra project with some additional information.

usage: cobra list [-h]

optional arguments:
  -h, --help  show this help message and exit

Remove

After some time you want to remove a project from your system. This you can do with the remove command. The remove command with out additional options will just delete the cobra project from the system but not the files, environment or the repository. If you want to remove the the files, environment or repository use the below shown parameters.

usage: cobra remove [-h] -n NAME [-r] [-c] [-f] [-a]

optional arguments:
  -h, --help            show this help message and exit
  -n NAME, --name NAME  Name of the cobra project to remove
  -r, --repo            Also removes the remote repository
  -c, --conda           Also removes the conda environment from the system
  -f, --folder          Also removes the local folder
  -a, --remove-all      Remove everything (repo, folder, conda)

Testing

To do testing you have to create the conda environment test_environment.yml and activate it:

conda env create -f test_environment.yml
conda activate cobra_dev

Then you can test the whole program including test coverage (htmlcov/index.html) with:

tox

Cite us

@inproceedings{voegtlin2020cobra,
    address = {Online},
    author = {Voegtlin, Lars and  Pondenkandath, Vinaychandran and Ingold, Rolf},
    title = {{Cobra: A CLI Tool To Create And Share Reproducible Projects}},
    booktitle = {2020 7th Swiss Conference on Data Science (SDS)},
    year = {2020},
    month = {jun},
}

TODO

  • Create repo with template
  • Create conda Dockerfile
  • Automatically build docker container and push it to dockerhub

cobra's People

Contributors

dependabot[bot] avatar lvoegtlin avatar novacuum avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

cobra's Issues

pre commit file is missing (on windows)

File "\apps\python\3.8.0\lib\site-packages\pocr\controller.py", line 117, in create
shutil.copy(pkg_resources.resource_stream(name, Paths.PACKAGE_GIT_HOOK_PATH)
...
No such file or directory: '\apps\python\3.8.0\lib\site-packages\pocr\utils\pre-commit

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.