Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: expand developer documentation #1956

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 59 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Installation

The easiest way to install conda-smithy is to use conda and conda-forge:

```
```sh
conda install -n root -c conda-forge conda-smithy
```

Expand Down Expand Up @@ -108,15 +108,70 @@ Running a build

When everything is configured you can trigger a build with a push to the feedstock repo on github.

Developing conda-smithy
Developing `conda-smithy`
-----------------------

To develop conda smithy, use your favortite conda-based environment manager and create an environment based on the `environment.yml`.
If you don’t already have a conda-based environment manager, install one. For example [Miniforge](https://github.com/conda-forge/miniforge).

To develop `conda-smithy`, use said environment manager and create an environment based on the included `environment.yml` file.

```sh
$ conda env create -f environment.yml
```

Then activate the environment, check that it works and install the dependencies:

```sh
$ conda activate conda-smithy
$ which python
# ☝️ should now point to an environment-specific python
$ python -m pip install -e . --no-deps
```

You might want to switch Python versions, for example if you wish to exactly replicate a CI issue locally. To do that:

```sh
conda install -n conda-smithy python=x.y
```

### Testing

Run all tests with `pytest`.

Run specific test file:
```sh
pytest tests/test_configure_feedstock.py
```

Run specific test within a file:
```sh
pytest tests/test_configure_feedstock.py::test_cuda_enabled_render
```
$ conda env create

Run with coverage (this is how the tests are run in CI):

```sh
pytest tests --cov conda_smithy --cov-report lcov --cov-report term-missing
```

#### Troubleshooting Tests

If test coverage is reported as 0%, your `pytest` and `pytest-cov` plugin might be from different environments/Python instances. You can force the use the of the environment versions by prefixing the commands with `python -m`, so to run the tests with coverage:

```sh
python -m pytest tests --cov conda_smithy --cov-report lcov --cov-report term-missing
```

### Linting and Formatting

This repo currently uses `flake8` for linting (but doesn’t enforce it) and `black` for auto-formatting. `black` is already configured in the pre-commit hook, but you can run it manually whenever you like with:

```sh
pre-commit run --all-files
```

To run flake, just type `flake8`. Note that `black` doesn’t auto-fix all errors found by `flake8`.

Releasing conda-smithy
----------------------

Expand Down