Skip to content

Latest commit

 

History

History
114 lines (84 loc) · 3.35 KB

pr_tutorial.md

File metadata and controls

114 lines (84 loc) · 3.35 KB

(pr_tutorial)=

Pull request step-by-step

The preferred workflow for contributing to PyMC is to fork the GitHub repository, clone it to your local machine, and develop on a feature branch.

Steps

  1. Read the {ref}pr_etiquette.

  2. Fork the project repository by clicking on the 'Fork' button near the top right of the main repository page. This creates a copy of the code under your GitHub user account.

  3. Clone your fork of the PyMC repo from your GitHub account to your local disk, and add the base repository as a remote:

    git clone git@github.com:<your GitHub handle>/pymc.git
    cd pymc
    git remote add upstream git@github.com:pymc-devs/pymc.git
  4. Create a feature branch to hold your development changes:

    git checkout -b my-feature

    :::{attention} Always use a feature branch. It's good practice to never routinely work on the main branch of any repository. :::

  5. Project requirements are in requirements.txt, and libraries used for development are in requirements-dev.txt. The easiest (and recommended) way to set up a development environment is via miniconda:

    ::::{tab-set} :::{tab-item} Linux/MacOS

    conda env create -f conda-envs/environment-dev.yml

    ::: :::{tab-item} Windows

    conda env create -f .\conda-envs\windows-environment-dev.yml

    ::: :::{tab-item} Windows (Git Bash)

    conda env create -f conda-envs/windows-environment-dev.yml

    ::: ::::

    conda activate pymc-dev
    pip install -e .

    Alternatively you may (probably in a virtual environment) run:

    pip install -e .
    pip install -r requirements-dev.txt
  1. Develop the feature on your feature branch.

    git checkout my-feature   # no -b flag because the branch is already created
  2. Before committing, run pre-commit checks.

    pip install pre-commit
    pre-commit run --all      # 👈 to run it manually
    pre-commit install        # 👈 to run it automatically before each commit
  3. Add changed files using git add and then git commit files:

    $ git add modified_files
    $ git commit

    to record your changes locally.

  4. After committing, it is a good idea to sync with the base repository in case there have been any changes:

    git fetch upstream
    git rebase upstream/main

    Then push the changes to the fork in your GitHub account with:

    git push -u origin my-feature

    :::{sidebar} If this is your first contribution, the start of some CI jobs will have to be approved by a maintainer. :::

  5. Go to the GitHub web page of your fork of the PyMC repo. Click the 'Pull request' button to send your changes to the project's maintainers for review. This will send a notification to the committers.

    :::{tip} Now that your PR is ready, read the {ref}pr_checklist to make sure it follows best practices. :::