Skip to main content

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.

PyPI: Package version PyPI: Supported Python versions PyPI: Number of monthly downloads

Documentation: Status Test suite: Status Test coverage: codecov Code style: black Type checking: mypy Code linting: ruff

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lalib-0.4.2.tar.gz (7.4 kB view details)

Uploaded Source

Built Distribution

lalib-0.4.2-py3-none-any.whl (4.8 kB view details)

Uploaded Python 3

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

Hashes for lalib-0.4.2.tar.gz
Algorithm Hash digest
SHA256 f6dda9c3f12226da3a41f345857756832141bcf4bde694161b1da61d055d2abb
MD5 cc3c6a2c83d4ea4a2bfcbf0710e6be5f
BLAKE2b-256 81ef839fcf4e0d1d51bc6c1a73e3dd38a2391a1f2bfe3432e5c7950595d71709

See more details on using hashes here.

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

Hashes for lalib-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 af27539c7593a4e52d9b555ce5a027b5378cafe92edb2257fd1da51fd4268e40
MD5 95d1ab4b207f6cff163937f887495d4e
BLAKE2b-256 05183764fe9b353f01219cc6129886c4148611a10850d2ebdd3daa4c14fcdd91

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page