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

Add DEVELOP.md dev environment setup instructions #87

Merged
merged 2 commits into from
Apr 26, 2024
Merged
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
103 changes: 103 additions & 0 deletions DEVELOP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
pySMART
===========

Copyright (C) 2021-2023 [Rafael Leira](https://github.com/ralequi)\
Copyright (C) 2021 [Truenas team](https://www.truenas.com/)\
Copyright (C) 2015 Marc Herndon

Development
-----------

To run the tests, or to contribute to pySMART, you will have to set up a
development environment.

Our development environment will consist of a virtual environment, with the
installation and development dependencies installed.

See the [Python documentation] for more on creating and using virtual
environment.

This document will assume a Linux environment.

The steps are:

1. Clone this repository, go there
1. Create a virtualenv and activate it
1. Install the dependencies
1. Run the tests

- Go where you want to clone the repository, clone it, go there:

```bash
$ cd <wherever you want to clone the repository>
$ git clone https://github.com/truenas/py-SMART

Cloning into 'py-SMART'...
remote: Enumerating objects: 2243, done.
remote: Counting objects: 100% (839/839), done.
remote: Compressing objects: 100% (362/362), done.
remote: Total 2243 (delta 544), reused 743 (delta 463), pack-reused 1404
Receiving objects: 100% (2243/2243), 674.95 KiB | 2.38 MiB/s, done.
Resolving deltas: 100% (1518/1518), done.

$ cd py-SMART
```

- Create a virtualenv and activate it

```bash
$ python -m venv .venv
$ source .venv/bin/activate
(.venv) $
```

We use `.venv` for the directory name of the virtualenv by convention.
Any other legal directory name is fine; we'll assume `.venv`.

- Update pip and setuptools

```bash
$(.venv) $ python -m pip install --upgrade pip setuptools

Requirement already satisfied: pip in <...>/.venv/lib/python3.12/site-packages (23.1)
Collecting pip
Using cached pip-24.0-py3-none-any.whl (2.1 MB)
Requirement already satisfied: setuptools in <...>/.venv/lib/python3.12/site-packages (68.0.0)
Collecting setuptools
Downloading setuptools-69.5.1-py3-none-any.whl (894 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 894.6/894.6 kB 6.1 MB/s eta 0:00:00
Installing collected packages: setuptools, pip
Attempting uninstall: setuptools
Found existing installation: setuptools 68.0.0
Uninstalling setuptools-68.0.0:
Successfully uninstalled setuptools-68.0.0
Attempting uninstall: pip
Found existing installation: pip 23.1
Uninstalling pip-23.1:
Successfully uninstalled pip-23.1
Successfully installed pip-24.0 setuptools-69.5.1
```

- Install the package including development dependencies

```bash
$(.venv) $ python -m pip install --editable .[dev]
```

- Run the tests

```bash
$(.venv) $ pytest
=============== test session starts =====================================
platform linux -- Python 3.12.2, pytest-8.1.1, pluggy-1.5.0
rootdir: <...>/py-SMART
configfile: pyproject.toml
plugins: cov-5.0.0
collected 184 items
< test file names, lots and lots of dots>
=============== 184 passed in 0.99s =====================================
```

**That's it -- you're ready to start developing on pySMART!**

[Python documentation]: https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/#create-and-use-virtual-environments
Loading