Alexander Hess
ceabb00bab
- base configuration for all nox sessions to come - add infos about nox in the README file - ignore [py]cache folders in git |
||
---|---|---|
src/lalib | ||
.gitignore | ||
LICENSE.txt | ||
noxfile.py | ||
poetry.lock | ||
pyproject.toml | ||
README.md |
A Python library to study linear algebra
The goal of the lalib
project is to create
a library written in pure Python
(incl. the standard library)
and thereby learn about
linear algebra
by reading and writing code.
Contributing & Development
This project is open for any kind of contribution, be it by writing code for new features or bugfixes, or by raising issues. All contributions become open-source themselves, under the MIT license.
Local Develop Environment
In order to play with the lalib
codebase,
you need to set up a develop environment on your own computer.
First, get your own copy of this repository:
git clone git@github.com:webartifex/lalib.git
While lalib
comes without any dependencies
except core Python and the standard library for the user,
we assume a couple of packages and tools be installed
to ensure code quality during development.
These can be viewed in the
pyproject.toml file
and are managed with poetry
which needs to be installed as well.
poetry
also creates and manages a
virtual environment
with the develop tools,
and pins their exact installation versions in the
poetry.lock file.
To replicate the project maintainer's develop environment, run:
poetry install
Maintenance Tasks
We use nox to run
the test suite and other maintenance tasks during development
in isolated environments.
nox
is similar to the popular tox.
It is configured in the
noxfile.py file.
nox
is assumed to be installed as well
and is therefore not a project dependency.
To list all available tasks, called sessions in nox
, simply run:
nox --list
or nox -l
for short
To execute all default tasks, simply invoke:
nox
Branching Strategy
The branches in this repository follow the
GitFlow model.
Feature branches are rebased onto
the develop branch
before being merged.
Whereas a rebase makes a simple fast-forward merge possible,
all merges are made with explicit and empty merge commits.
This ensures that past branches remain visible in the logs,
for example, with git log --graph
.