A Python library to study linear algebra
Project description
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.
Installation
This project is published on PyPI. To install it, open any Python prompt and type:
pip install lalib
You may want to do so within a virtual environment or a Jupyter notebook.
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
This includes running the test suite for the project's main Python version (i.e., 3.12).
Code Formatting & Linting
We follow Google's Python style guide and include type hints where possible.
During development,
nox -s format
and nox -s lint
may be helpful.
Both can be speed up by re-using a previously created environment
with the -R
flag.
The first task formats all source code files with autoflake, black, and isort.
The second task lints all source code files with
flake8,
mypy, and
ruff.
flake8
is configured with a couple of plug-ins.
You may want to install the pre-commit hooks that come with the project:
nox -s pre-commit-install
Then, the linting and testing occurs automatically before every commit.
Test Suite
We use pytest
to obtain confidence in the correctness of lalib
.
To run the tests
for all supported Python versions
in isolated (and perfectly reproducable) environments,
invoke:
nox -s test
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
.
Versioning
The version identifiers adhere to a subset of the rules in
PEP440 and
follow Semantic Versioning.
So, releases to PyPI
come in the popular major.minor.patch
format.
The specific rules for this project are explained
here.
Releases
v0.4.2, 2024-09-10
- This release provides no functionality
- Its purpose is to (re-)claim the lalib name on PyPI
- We can not start with v0.1.0 because we already used this when learning to use PyPI years back
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file lalib-0.4.2.tar.gz
.
File metadata
- Download URL: lalib-0.4.2.tar.gz
- Upload date:
- Size: 7.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.5 Linux/6.5.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f6dda9c3f12226da3a41f345857756832141bcf4bde694161b1da61d055d2abb |
|
MD5 | cc3c6a2c83d4ea4a2bfcbf0710e6be5f |
|
BLAKE2b-256 | 81ef839fcf4e0d1d51bc6c1a73e3dd38a2391a1f2bfe3432e5c7950595d71709 |
File details
Details for the file lalib-0.4.2-py3-none-any.whl
.
File metadata
- Download URL: lalib-0.4.2-py3-none-any.whl
- Upload date:
- Size: 4.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.5 Linux/6.5.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | af27539c7593a4e52d9b555ce5a027b5378cafe92edb2257fd1da51fd4268e40 |
|
MD5 | 95d1ab4b207f6cff163937f887495d4e |
|
BLAKE2b-256 | 05183764fe9b353f01219cc6129886c4148611a10850d2ebdd3daa4c14fcdd91 |